{"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"]}