oas
Version:
Comprehensive tooling for working with OpenAPI definitions
1 lines • 49.5 kB
Source Map (JSON)
{"version":3,"sources":["/Users/erunion/code/readme/oas/packages/oas/dist/index.cjs","../src/lib/get-auth.ts","../src/index.ts"],"names":[],"mappings":"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","file":"/Users/erunion/code/readme/oas/packages/oas/dist/index.cjs","sourcesContent":[null,"import type {\n AuthForHAR,\n KeyedSecuritySchemeObject,\n OASDocument,\n SecuritySchemeDefaultAuthPrimitive,\n User,\n} from '../types.js';\n\nimport { isRef } from '../types.js';\n\nimport { dereferenceRef } from './refs.js';\n\ntype authKey = unknown | { password: number | string; user: number | string } | null;\n\nfunction getPrimitiveDefaultAuth(scheme: KeyedSecuritySchemeObject): SecuritySchemeDefaultAuthPrimitive | null {\n // For OAuth, primitive `x-default` values are token defaults. Object-shaped defaults\n // are reserved for API Explorer client credentials and should not be sent as auth.\n return typeof scheme['x-default'] === 'number' || typeof scheme['x-default'] === 'string'\n ? scheme['x-default']\n : null;\n}\n\n/**\n * @param user User to retrieve retrieve an auth key for.\n * @param scheme The type of security scheme that we want a key for.\n */\nfunction getKey(user: User, scheme: KeyedSecuritySchemeObject): authKey {\n switch (scheme.type) {\n case 'oauth2':\n return user[scheme._key] || user.apiKey || getPrimitiveDefaultAuth(scheme) || null;\n\n case 'apiKey':\n return user[scheme._key] || user.apiKey || scheme['x-default'] || null;\n\n case 'http':\n if (scheme.scheme === 'basic') {\n return (\n user[scheme._key] ||\n (user.user || user.pass ? { user: user.user || null, pass: user.pass || null } : scheme['x-default']) || {\n user: null,\n pass: null,\n }\n );\n }\n\n if (scheme.scheme === 'bearer') {\n return user[scheme._key] || user.apiKey || scheme['x-default'] || null;\n }\n return null;\n\n default:\n return null;\n }\n}\n\n/**\n * Retrieve auth keys for a specific security scheme for a given user for a specific \"app\" that\n * they have configured.\n *\n * For `scheme` we're typing it to a union of `SecurityScheme` and `any` because we have handling\n * and tests for an unknown or unrecognized `type` and though it's not possible with the\n * `SecurityScheme.type` to be unrecognized it may still be possible to get an unrecognized scheme\n * with this method in the wild as we have API definitions in our database that were ingested\n * before we had good validation in place.\n *\n * @param user User\n * @param scheme Security scheme to get auth keys for.\n * @param selectedApp The user app to retrieve an auth key for.\n */\nexport function getByScheme(\n user: User,\n scheme = {} as KeyedSecuritySchemeObject,\n selectedApp?: number | string,\n): authKey {\n if (user?.keys?.length) {\n if (selectedApp) {\n const userKey = user.keys.find(k => k.name === selectedApp);\n if (!userKey) {\n return null;\n }\n\n return getKey(userKey, scheme);\n }\n\n return getKey(user.keys[0], scheme);\n }\n\n return getKey(user, scheme);\n}\n\n/**\n * Retrieve auth keys for an API definition from a given user for a specific \"app\" that they have\n * configured.\n *\n * @param api API definition\n * @param user User\n * @param selectedApp The user app to retrieve an auth key for.\n */\nexport function getAuth(api: OASDocument, user: User, selectedApp?: number | string): AuthForHAR {\n return Object.keys(api?.components?.securitySchemes || {})\n .map(scheme => {\n const securityScheme = dereferenceRef(api.components?.securitySchemes?.[scheme], api);\n if (!securityScheme || isRef(securityScheme)) {\n // If this security scheme is invalid or an unresolvable `$ref` pointer then we should skip\n // it.\n return false;\n }\n\n return {\n [scheme]: getByScheme(\n user,\n {\n ...securityScheme,\n _key: scheme,\n },\n selectedApp,\n ),\n };\n })\n .filter((item): item is AuthForHAR => item !== undefined)\n .reduce((prev, next) => Object.assign(prev, next), {});\n}\n","import type { Extensions } from './extensions.js';\nimport type { PathMatch, PathMatches, SplitUrlResult } from './lib/urls.js';\nimport type {\n AuthForHAR,\n HttpMethods,\n OASDocument,\n OperationObject,\n SecuritySchemeObject,\n ServerObject,\n Servers,\n ServerVariable,\n ServerVariablesObject,\n User,\n} from './types.js';\nimport type { OpenAPIV3_1 } from 'openapi-types';\n\nimport {\n CODE_SAMPLES,\n extensionDefaults,\n getExtension,\n HEADERS,\n hasRootExtension,\n OAUTH_OPTIONS,\n PARAMETER_ORDERING,\n SAMPLES_LANGUAGES,\n STATUS_URL,\n validateParameterOrdering,\n} from './extensions.js';\nimport { getAuth } from './lib/get-auth.js';\nimport getUserVariable from './lib/get-user-variable.js';\nimport { dereferenceRef } from './lib/refs.js';\nimport {\n defaultVariablesFromServers,\n filterPathMethods,\n findTargetPath,\n generatePathMatches,\n normalizedURLFromServers,\n splitUrlFromServers,\n stripTrailingSlash,\n transformURLIntoRegex,\n variablesFromServers,\n} from './lib/urls.js';\nimport { Operation, Webhook } from './operation/index.js';\nimport { isOpenAPI31, isRef } from './types.js';\nimport { SERVER_VARIABLE_REGEX, supportedMethods } from './utils.js';\n\nexport default class Oas {\n /**\n * The current OpenAPI definition.\n */\n api: OASDocument;\n\n /**\n * The current user that we should use when pulling auth tokens from security schemes.\n */\n user: User;\n\n /**\n * @param oas An OpenAPI definition.\n * @param user The information about a user that we should use when pulling auth tokens from\n * security schemes.\n */\n constructor(oas: OASDocument | string, user?: User) {\n if (typeof oas === 'string') {\n // oxlint-disable-next-line readme/json-parse-try-catch -- If this fails we should fail.\n this.api = (JSON.parse(oas) || {}) as OASDocument;\n } else {\n this.api = oas || ({} as OASDocument);\n }\n\n this.user = user || {};\n }\n\n /**\n * This will initialize a new instance of the `Oas` class. This method is useful if you're using\n * Typescript and are attempting to supply an untyped JSON object into `Oas` as it will force-type\n * that object to an `OASDocument` for you.\n *\n * @param oas An OpenAPI definition.\n * @param user The information about a user that we should use when pulling auth tokens from\n * security schemes.\n */\n static init(oas: OASDocument | Record<string, unknown>, user?: User): Oas {\n return new Oas(oas as OASDocument, user);\n }\n\n /**\n * Retrieve the OpenAPI version that this API definition is targeted for.\n */\n getVersion(): string {\n if (this.api.openapi) {\n return this.api.openapi;\n }\n\n throw new Error('Unable to recognize what specification version this API definition conforms to.');\n }\n\n /**\n * Retrieve the current OpenAPI API Definition.\n *\n */\n getDefinition(): OASDocument {\n return this.api;\n }\n\n url(selected = 0, variables?: ServerVariable): string {\n const url = normalizedURLFromServers(this.api.servers, selected);\n return this.replaceUrl(url, variables || this.defaultVariables(selected)).trim();\n }\n\n variables(selected = 0): ServerVariablesObject {\n return variablesFromServers(this.api.servers, selected);\n }\n\n defaultVariables(selected = 0): ServerVariable {\n return defaultVariablesFromServers(this.api.servers, selected, this.user);\n }\n\n splitUrl(selected = 0): SplitUrlResult {\n return splitUrlFromServers(this.api.servers, selected);\n }\n\n /**\n * With a fully composed server URL, run through our list of known OAS servers and return back\n * which server URL was selected along with any contained server variables split out.\n *\n * For example, if you have an OAS server URL of `https://{name}.example.com:{port}/{basePath}`,\n * and pass in `https://buster.example.com:3000/pet` to this function, you'll get back the\n * following:\n *\n * { selected: 0, variables: { name: 'buster', port: 3000, basePath: 'pet' } }\n *\n * Re-supplying this data to `oas.url()` should return the same URL you passed into this method.\n *\n * @param baseUrl A given URL to extract server variables out of.\n */\n splitVariables(baseUrl: string): Servers | false {\n const matchedServer = (this.api.servers || [])\n .map((server, i) => {\n const rgx = transformURLIntoRegex(server.url);\n const found = new RegExp(rgx).exec(baseUrl);\n if (!found) {\n return false;\n }\n\n // While it'd be nice to use named regex groups to extract path parameters from the URL and\n // match them up with the variables that we have present in it, JS unfortunately doesn't\n // support having the groups duplicated. So instead of doing that we need to re-regex the\n // server URL, this time splitting on the path parameters -- this way we'll be able to\n // extract the parameter names and match them up with the matched server that we obtained\n // above.\n const variables: Record<string, number | string> = {};\n Array.from(server.url.matchAll(SERVER_VARIABLE_REGEX)).forEach((variable, y) => {\n variables[variable[1]] = found[y + 1];\n });\n\n return {\n selected: i,\n variables,\n };\n })\n .filter(item => item !== false);\n\n return matchedServer.length ? matchedServer[0] : false;\n }\n\n /**\n * Replace templated variables with supplied data in a given URL.\n *\n * There are a couple ways that this will utilize variable data:\n *\n * - Supplying a `variables` object. If this is supplied, this data will always take priority.\n * This incoming `variables` object can be two formats:\n * `{ variableName: { default: 'value' } }` and `{ variableName: 'value' }`. If the former is\n * present, that will take precedence over the latter.\n * - If the supplied `variables` object is empty or does not match the current template name,\n * we fallback to the data stored in `this.user` and attempt to match against that.\n * See `getUserVariable` for some more information on how this data is pulled from `this.user`.\n *\n * If no variables supplied match up with the template name, the template name will instead be\n * used as the variable data.\n *\n * @param url A URL to swap variables into.\n * @param variables An object containing variables to swap into the URL.\n */\n replaceUrl(url: string, variables: ServerVariable = {}): string {\n // When we're constructing URLs, server URLs with trailing slashes cause problems with doing\n // lookups, so if we have one here on, slice it off.\n return stripTrailingSlash(\n url.replace(SERVER_VARIABLE_REGEX, (original: string, key: string) => {\n if (key in variables) {\n const data = variables[key];\n if (typeof data === 'object') {\n if (!Array.isArray(data) && data !== null && 'default' in data) {\n return String(data.default);\n }\n } else {\n return String(data);\n }\n }\n\n const userVariable = getUserVariable(this.user, key);\n if (userVariable) {\n return String(userVariable);\n }\n\n return original;\n }),\n );\n }\n\n /**\n * Retrieve an Operation of Webhook class instance for a given path and method.\n *\n * @param path Path to lookup and retrieve.\n * @param method HTTP Method to retrieve on the path.\n */\n operation(\n path: string,\n method: HttpMethods,\n opts: {\n /**\n * If you prefer to first look for a webhook with this path and method.\n */\n isWebhook?: boolean;\n } = {},\n ): Operation {\n // If we're unable to locate an operation for this path+method combination within the API\n // definition, we should still set an empty schema on the operation in the `Operation` class\n // because if we don't trying to use any of the accessors on that class are going to fail as\n // `schema` will be `undefined`.\n let operation: OperationObject = {\n parameters: [],\n };\n\n if (opts.isWebhook) {\n if (isOpenAPI31(this.api)) {\n const webhookPath = dereferenceRef(this.api?.webhooks?.[path], this.api);\n if (webhookPath && !isRef(webhookPath)) {\n if (webhookPath?.[method]) {\n operation = webhookPath[method];\n return new Webhook(this, path, method, operation);\n }\n }\n }\n }\n\n if (this?.api?.paths?.[path]) {\n const pathItem = dereferenceRef(this.api.paths[path], this.api);\n if (pathItem?.[method]) {\n operation = dereferenceRef(pathItem[method], this.api);\n }\n }\n\n return new Operation(this, path, method, operation);\n }\n\n findOperationMatches(url: string): PathMatches | undefined {\n const { origin, hostname } = new URL(url);\n const originRegExp = new RegExp(origin, 'i');\n const { servers, paths } = this.api;\n\n let pathName: string | undefined;\n let targetServer: ServerObject | undefined;\n let matchedServer: ServerObject | undefined;\n\n if (!servers || !servers.length) {\n // If this API definition doesn't have any servers set up let's treat it as if it were\n // https://example.com because that's the default origin we add in `normalizedUrl` under the\n // same circumstances. Without this we won't be able to match paths within what is otherwise\n // a valid OpenAPI definition.\n matchedServer = {\n url: 'https://example.com',\n };\n } else {\n matchedServer = servers.find(s => originRegExp.exec(this.replaceUrl(s.url, s.variables || {})));\n if (!matchedServer) {\n const hostnameRegExp = new RegExp(hostname);\n matchedServer = servers.find(s => hostnameRegExp.exec(this.replaceUrl(s.url, s.variables || {})));\n }\n }\n\n if (matchedServer) {\n // Instead of setting `url` directly against `matchedServer` we need to set it to an\n // intermediary object as directly modifying `matchedServer.url` will in turn update\n // `this.servers[idx].url` which we absolutely do not want to happen.\n targetServer = {\n ...matchedServer,\n url: this.replaceUrl(matchedServer.url, matchedServer.variables || {}),\n };\n\n [, pathName] = url.split(new RegExp(targetServer.url, 'i'));\n }\n\n // If we **still** haven't found a matching server, then the OAS server URL might have server\n // variables and we should loosen it up with regex to try to discover a matching path.\n //\n // For example if an OAS has `https://{region}.node.example.com/v14` set as its server URL, and\n // the `this.user` object has a `region` value of `us`, if we're trying to locate an operation\n // for https://eu.node.example.com/v14/api/esm we won't be able to because normally the users\n // `region` of `us` will be transposed in and we'll be trying to locate `eu.node.example.com`\n // in `us.node.example.com` -- which won't work.\n //\n // So what this does is transform `https://{region}.node.example.com/v14` into\n // `https://([-_a-zA-Z0-9[\\\\]]+).node.example.com/v14`, and from there we'll be able to match\n // https://eu.node.example.com/v14/api/esm and ultimately find the operation matches for\n // `/api/esm`.\n if (!matchedServer || !pathName) {\n const matchedServerAndPath = (servers || [])\n .map(server => {\n const rgx = transformURLIntoRegex(server.url);\n const found = new RegExp(rgx).exec(url);\n if (!found) {\n return;\n }\n\n return {\n matchedServer: server,\n pathName: url.split(new RegExp(rgx)).slice(-1).pop(),\n };\n })\n .filter((item): item is { matchedServer: ServerObject; pathName: string | undefined } => item !== undefined);\n\n if (!matchedServerAndPath.length) {\n return undefined;\n }\n\n pathName = matchedServerAndPath[0].pathName;\n targetServer = {\n ...matchedServerAndPath[0].matchedServer,\n };\n }\n\n if (pathName === undefined) return undefined;\n if (pathName === '') pathName = '/';\n if (!paths || !targetServer) return undefined;\n const annotatedPaths = generatePathMatches(paths, pathName, targetServer.url);\n if (!annotatedPaths.length) return undefined;\n\n return annotatedPaths;\n }\n\n /**\n * Discover an operation in an OAS from a fully-formed URL and HTTP method. Will return an object\n * containing a `url` object and another one for `operation`. This differs from `getOperation()`\n * in that it does not return an instance of the `Operation` class.\n *\n * @param url A full URL to look up.\n * @param method The cooresponding HTTP method to look up.\n */\n findOperation(url: string, method: HttpMethods): PathMatch | undefined {\n const annotatedPaths = this.findOperationMatches(url);\n if (!annotatedPaths) {\n return undefined;\n }\n\n const matches = filterPathMethods(annotatedPaths, method);\n if (!matches.length) return undefined;\n return findTargetPath(matches);\n }\n\n /**\n * Discover an operation in an OAS from a fully-formed URL without an HTTP method. Will return an\n * object containing a `url` object and another one for `operation`.\n *\n * @param url A full URL to look up.\n */\n findOperationWithoutMethod(url: string): PathMatch | undefined {\n const annotatedPaths = this.findOperationMatches(url);\n if (!annotatedPaths) {\n return undefined;\n }\n\n return findTargetPath(annotatedPaths);\n }\n\n /**\n * Retrieve an operation in an OAS from a fully-formed URL and HTTP method. Differs from\n * `findOperation` in that while this method will return an `Operation` instance,\n * `findOperation()` does not.\n *\n * @param url A full URL to look up.\n * @param method The cooresponding HTTP method to look up.\n */\n getOperation(url: string, method: HttpMethods): Operation | undefined {\n const op = this.findOperation(url, method);\n if (op === undefined) {\n return undefined;\n }\n\n return this.operation(op.url.nonNormalizedPath, method);\n }\n\n /**\n * Retrieve an operation in an OAS by an `operationId`.\n *\n * If an operation does not have an `operationId` one will be generated in place, using the\n * default behavior of `Operation.getOperationId()`, and then asserted against your query.\n *\n * Note that because `operationId`s are unique that uniqueness does include casing so the ID\n * you are looking for will be asserted as an exact match.\n *\n * @see {Operation.getOperationId()}\n * @param id The `operationId` to look up.\n */\n getOperationById(id: string): Operation | Webhook | undefined {\n let found: Operation | Webhook | undefined;\n\n Object.values(this.getPaths()).forEach(operations => {\n if (found) return;\n found = Object.values(operations).find(operation => operation.getOperationId() === id);\n });\n\n if (found) {\n return found;\n }\n\n Object.entries(this.getWebhooks()).forEach(([, webhooks]) => {\n if (found) return;\n found = Object.values(webhooks).find(webhook => webhook.getOperationId() === id);\n });\n\n return found;\n }\n\n /**\n * With an object of user information, retrieve the appropriate API auth keys from the current\n * OAS definition.\n *\n * @see {@link https://docs.readme.com/docs/passing-data-to-jwt}\n * @param user User\n * @param selectedApp The user app to retrieve an auth key for.\n */\n getAuth(user: User, selectedApp?: number | string): AuthForHAR {\n if (!this.api?.components?.securitySchemes) {\n return {};\n }\n\n return getAuth(this.api, user, selectedApp);\n }\n\n /**\n * Determine if a security scheme exists within the API definition.\n *\n * @see {@link https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.0.0.md#security-scheme-object}\n * @see {@link https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.1.0.md#security-scheme-object}\n * @param name The name of the security scheme to check for.\n */\n hasSecurityScheme(name: string): boolean {\n return Boolean(this.api?.components?.securitySchemes?.[name]);\n }\n\n /**\n * Retrieve a security scheme from the API definition.\n *\n * If the found security scheme is a `$ref` pointer it will be lazily dereferenced; if the scheme\n * cannot be resolved after that process (eg. it's circular or is an invalid `$ref`) then\n * `undefined` will be returned.\n *\n * @see {@link https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.0.0.md#security-scheme-object}\n * @see {@link https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.1.0.md#security-scheme-object}\n * @param name The name of the security scheme to retrieve.\n */\n getSecurityScheme(name: string): SecuritySchemeObject | undefined {\n if (!this.hasSecurityScheme(name)) {\n return undefined;\n }\n\n let scheme = this.api?.components?.securitySchemes?.[name];\n if (!scheme) return undefined;\n if (isRef(scheme)) {\n scheme = dereferenceRef(scheme, this.api);\n if (!scheme || isRef(scheme)) return undefined;\n }\n\n return scheme;\n }\n\n /**\n * Returns the `paths` object that exists in this API definition but with every `method` mapped\n * to an instance of the `Operation` class.\n *\n * @see {@link https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.0.0.md#openapi-object}\n * @see {@link https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.1.0.md#openapi-object}\n */\n getPaths(): Record<string, Record<HttpMethods, Operation | Webhook>> {\n const paths: Record<string, Record<HttpMethods, Operation | Webhook>> = {};\n if (!this.api.paths) {\n return paths;\n }\n\n Object.keys(this.api.paths).forEach(path => {\n // If this is a specification extension then we should ignore it.\n if (path.startsWith('x-')) {\n return;\n }\n\n paths[path] = {} as Record<HttpMethods, Operation | Webhook>;\n\n let pathItem = this.api.paths![path];\n if (!pathItem) {\n return;\n } else if (isRef(pathItem)) {\n // Though this library is generally unaware of `$ref` pointers we're making a singular\n // exception with this accessor out of convenience.\n this.api.paths![path] = dereferenceRef(pathItem, this.api);\n pathItem = this.api.paths![path];\n if (!pathItem || isRef(pathItem)) {\n return;\n }\n }\n\n Object.keys(pathItem).forEach(method => {\n /**\n * Because a path doesn't need to contain a keyed-object of HTTP methods, we should exclude\n * anything from within the paths object that isn't a known HTTP method.\n *\n * @see {@link https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.0.0.md#fixed-fields-7}\n * @see {@link https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.1.0.md#fixed-fields-7}\n */\n if (!supportedMethods.includes(method as HttpMethods)) {\n return;\n }\n\n paths[path][method as HttpMethods] = this.operation(path, method as HttpMethods);\n });\n });\n\n return paths;\n }\n\n /**\n * Returns the `webhooks` object that exists in this API definition but with every `method`\n * mapped to an instance of the `Webhook` class.\n *\n * @see {@link https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.0.0.md#openapi-object}\n * @see {@link https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.1.0.md#openapi-object}\n */\n getWebhooks(): Record<string, Record<HttpMethods, Webhook>> {\n const webhooks: Record<string, Record<HttpMethods, Webhook>> = {};\n if (!isOpenAPI31(this.api) || !this.api.webhooks) {\n return webhooks;\n }\n\n Object.keys(this.api.webhooks).forEach(id => {\n webhooks[id] = {} as Record<HttpMethods, Webhook>;\n\n const webhookPath = dereferenceRef((this.api as OpenAPIV3_1.Document).webhooks?.[id], this.api);\n if (webhookPath) {\n Object.keys(webhookPath).forEach(method => {\n if (!supportedMethods.includes(method as HttpMethods)) {\n return;\n }\n\n webhooks[id][method as HttpMethods] = this.operation(id, method as HttpMethods, {\n isWebhook: true,\n }) as Webhook;\n });\n }\n });\n\n return webhooks;\n }\n\n /**\n * Return an array of all tag names that exist on this API definition.\n *\n * If the API definition uses the `x-disable-tag-sorting` extension then tags will be returned in\n * the order they're defined.\n *\n * @see {@link https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.0.0.md#openapi-object}\n * @see {@link https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.1.0.md#openapi-object}\n * @param setIfMissing If a tag is not present on an operation that operations path will be added\n * into the list of tags returned.\n */\n getTags(setIfMissing = false): string[] {\n const allTags = new Set<string>();\n\n const oasTags = this.api.tags?.map(tag => tag.name) || [];\n\n const disableTagSorting = getExtension('disable-tag-sorting', this.api);\n\n Object.entries(this.getPaths()).forEach(([path, operations]) => {\n Object.values(operations).forEach(operation => {\n const tags = operation.getTags();\n if (setIfMissing && !tags.length) {\n allTags.add(path);\n return;\n }\n\n tags.forEach(tag => {\n allTags.add(tag.name);\n });\n });\n });\n\n Object.entries(this.getWebhooks()).forEach(([path, webhooks]) => {\n Object.values(webhooks).forEach(webhook => {\n const tags = webhook.getTags();\n if (setIfMissing && !tags.length) {\n allTags.add(path);\n return;\n }\n\n tags.forEach(tag => {\n allTags.add(tag.name);\n });\n });\n });\n\n // Tags that exist only on the endpoint\n const endpointTags: string[] = [];\n // Tags that the user has defined in the `tags` array\n const tagsArray: string[] = [];\n\n // Distinguish between which tags exist in the `tags` array and which tags\n // exist only at the endpoint level. For tags that exist only at the\n // endpoint level, we'll just tack that on to the end of the sorted tags.\n if (disableTagSorting) {\n return Array.from(allTags);\n }\n\n Array.from(allTags).forEach(tag => {\n if (oasTags.includes(tag)) {\n tagsArray.push(tag);\n } else {\n endpointTags.push(tag);\n }\n });\n\n let sortedTags = tagsArray.toSorted((a, b) => {\n return oasTags.indexOf(a) - oasTags.indexOf(b);\n });\n\n sortedTags = sortedTags.concat(endpointTags);\n\n return sortedTags;\n }\n\n /**\n * Determine if a given a custom specification extension exists within the API definition.\n *\n * @see {@link https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.0.3.md#specification-extensions}\n * @see {@link https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.1.0.md#specification-extensions}\n * @param extension Specification extension to lookup.\n */\n hasExtension(extension: string): boolean {\n return hasRootExtension(extension, this.api);\n }\n\n /**\n * Retrieve a custom specification extension off of the API definition.\n *\n * @see {@link https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.0.3.md#specification-extensions}\n * @see {@link https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.1.0.md#specification-extensions}\n * @param extension Specification extension to lookup.\n */\n getExtension(extension: string | keyof Extensions, operation?: Operation): any {\n return getExtension(extension, this.api, operation);\n }\n\n /**\n * Determine if a given OpenAPI custom extension is valid or not.\n *\n * @see {@link https://docs.readme.com/docs/openapi-extensions}\n * @see {@link https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.0.3.md#specification-extensions}\n * @see {@link https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.1.0.md#specification-extensions}\n * @param extension Specification extension to validate.\n * @throws\n */\n validateExtension(extension: keyof Extensions): void {\n if (this.hasExtension('x-readme')) {\n const data = this.getExtension('x-readme') satisfies Extensions;\n if (typeof data !== 'object' || Array.isArray(data) || data === null) {\n throw new TypeError('\"x-readme\" must be of type \"Object\"');\n }\n\n if (extension in data) {\n if ([CODE_SAMPLES, HEADERS, PARAMETER_ORDERING, SAMPLES_LANGUAGES].includes(extension)) {\n if (data[extension] !== undefined) {\n if (!Array.isArray(data[extension])) {\n throw new TypeError(`\"x-readme.${extension}\" must be of type \"Array\"`);\n }\n\n if (extension === PARAMETER_ORDERING) {\n validateParameterOrdering(data[extension], `x-readme.${extension}`);\n }\n }\n } else if (extension === OAUTH_OPTIONS) {\n if (typeof data[extension] !== 'object') {\n throw new TypeError(`\"x-readme.${extension}\" must be of type \"Object\"`);\n }\n } else if (extension === STATUS_URL) {\n if (typeof data[extension] !== 'string') {\n throw new TypeError(`\"x-readme.${extension}\" must be of type \"String\"`);\n }\n } else if (typeof data[extension] !== 'boolean') {\n throw new TypeError(`\"x-readme.${extension}\" must be of type \"Boolean\"`);\n }\n }\n }\n\n // If the extension isn't grouped under `x-readme`, we need to look for them with `x-` prefixes.\n if (this.hasExtension(`x-${extension}`)) {\n const data = this.getExtension(`x-${extension}`);\n if ([CODE_SAMPLES, HEADERS, PARAMETER_ORDERING, SAMPLES_LANGUAGES].includes(extension)) {\n if (!Array.isArray(data)) {\n throw new TypeError(`\"x-${extension}\" must be of type \"Array\"`);\n }\n\n if (extension === PARAMETER_ORDERING) {\n validateParameterOrdering(data, `x-${extension}`);\n }\n } else if (extension === OAUTH_OPTIONS) {\n if (typeof data !== 'object') {\n throw new TypeError(`\"x-${extension}\" must be of type \"Object\"`);\n }\n } else if (extension === STATUS_URL) {\n if (typeof data !== 'string') {\n throw new TypeError(`\"x-${extension}\" must be of type \"String\"`);\n }\n } else if (typeof data !== 'boolean') {\n throw new TypeError(`\"x-${extension}\" must be of type \"Boolean\"`);\n }\n }\n }\n\n /**\n * Validate all of our custom or known OpenAPI extensions, throwing exceptions when necessary.\n *\n * @see {@link https://docs.readme.com/docs/openapi-extensions}\n * @see {@link https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.0.3.md#specification-extensions}\n * @see {@link https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.1.0.md#specification-extensions}\n */\n validateExtensions(): void {\n Object.keys(extensionDefaults).forEach(extension => {\n this.validateExtension(extension as keyof Extensions);\n });\n }\n}\n"]}