{"version":3,"sources":["../src/types.ts","../src/Oas.ts","../src/utils.ts"],"names":["BaseOas","jsonpointer","schema","matchesMimeType","OASNormalize","isPlainObject","isRef","loadConfig","bundle","swagger2openapi","mergeDeep"],"mappings":"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","file":"index.cjs","sourcesContent":["import type * as OasTypes from 'oas/types'\n\n// external packages\nexport type { Operation } from 'oas/operation'\nexport type { HttpMethods as HttpMethod } from 'oas/types'\nexport type * as OasTypes from 'oas/types'\nexport type { OpenAPIV3, OpenAPIV3_1 } from 'openapi-types'\n\nexport type contentType = 'application/json' | (string & {})\n\nexport type SchemaObject = OasTypes.SchemaObject & {\n  'x-nullable'?: boolean\n  $ref?: string\n}\n\nexport const HttpMethods = {\n  GET: 'get',\n  POST: 'post',\n  PUT: 'put',\n  PATCH: 'patch',\n  DELETE: 'delete',\n  HEAD: 'head',\n  OPTIONS: 'options',\n  TRACE: 'trace',\n} satisfies Record<Uppercase<OasTypes.HttpMethods>, OasTypes.HttpMethods>\n","import jsonpointer from 'jsonpointer'\nimport BaseOas from 'oas'\nimport type { Operation } from 'oas/operation'\nimport type { MediaTypeObject, OASDocument, ResponseObject, SchemaObject, User } from 'oas/types'\nimport { matchesMimeType } from 'oas/utils'\nimport OASNormalize from 'oas-normalize'\nimport type { OpenAPIV3 } from 'openapi-types'\nimport type { OasTypes } from './index.ts'\nimport type { contentType } from './types.ts'\nimport { isDiscriminator, isReference } from './utils.ts'\n\ntype Options = {\n  contentType?: contentType\n  discriminator?: 'strict' | 'inherit'\n}\n\nexport class Oas<const TOAS = unknown> extends BaseOas {\n  #options: Options = {\n    discriminator: 'strict',\n  }\n  document: TOAS = undefined as unknown as TOAS\n\n  constructor({ oas, user }: { oas: TOAS | OASDocument | string; user?: User }) {\n    if (typeof oas === 'string') {\n      oas = JSON.parse(oas)\n    }\n\n    super(oas as OASDocument, user)\n\n    this.document = oas as TOAS\n  }\n\n  setOptions(options: Options) {\n    this.#options = options\n  }\n\n  get options(): Options {\n    return this.#options\n  }\n\n  get($ref: string) {\n    const origRef = $ref\n    $ref = $ref.trim()\n    if ($ref === '') {\n      return false\n    }\n    if ($ref.startsWith('#')) {\n      $ref = globalThis.decodeURIComponent($ref.substring(1))\n    } else {\n      return null\n    }\n    const current = jsonpointer.get(this.api, $ref)\n\n    if (!current) {\n      throw new Error(`Could not find a definition for ${origRef}.`)\n    }\n    return current\n  }\n\n  getKey($ref: string) {\n    const key = $ref.split('/').pop()\n    return key === '' ? undefined : key\n  }\n  set($ref: string, value: unknown) {\n    $ref = $ref.trim()\n    if ($ref === '') {\n      return false\n    }\n    if ($ref.startsWith('#')) {\n      $ref = globalThis.decodeURIComponent($ref.substring(1))\n\n      jsonpointer.set(this.api, $ref, value)\n    }\n  }\n\n  getDiscriminator(schema: OasTypes.SchemaObject): OpenAPIV3.DiscriminatorObject | undefined {\n    if (!isDiscriminator(schema)) {\n      return undefined\n    }\n\n    const { mapping = {}, propertyName } = schema.discriminator\n\n    if (this.#options.discriminator === 'inherit') {\n      Object.entries(mapping).forEach(([mappingKey, mappingValue]) => {\n        if (mappingValue) {\n          const childSchema = this.get(mappingValue)\n          if (!childSchema.properties) {\n            childSchema.properties = {}\n          }\n\n          const property = childSchema.properties[propertyName] as SchemaObject\n\n          if (childSchema.properties) {\n            childSchema.properties[propertyName] = {\n              ...(childSchema.properties ? childSchema.properties[propertyName] : {}),\n              enum: [...(property?.enum?.filter((value) => value !== mappingKey) ?? []), mappingKey],\n            }\n\n            childSchema.required = [...(childSchema.required ?? []), propertyName]\n\n            this.set(mappingValue, childSchema)\n          }\n        }\n      })\n    }\n\n    // loop over oneOf and add default mapping when none is defined\n    if (schema.oneOf) {\n      schema.oneOf.forEach((schema) => {\n        if (isReference(schema)) {\n          const key = this.getKey(schema.$ref)\n          const refSchema: OpenAPIV3.SchemaObject = this.get(schema.$ref)\n          // special case where enum in the schema is set without mapping being defined, see https://github.com/kubb-labs/kubb/issues/1669\n          const propertySchema = refSchema.properties?.[propertyName] as OpenAPIV3.SchemaObject\n          const canAdd = key && !Object.values(mapping).includes(schema.$ref)\n\n          if (canAdd && propertySchema?.enum?.length === 1) {\n            mapping[propertySchema.enum[0]] = schema.$ref\n          } else if (canAdd) {\n            mapping[key] = schema.$ref\n          }\n        }\n      })\n    }\n\n    if (schema.anyOf) {\n      schema.anyOf.forEach((schema) => {\n        if (isReference(schema)) {\n          const key = this.getKey(schema.$ref)\n          const refSchema: OpenAPIV3.SchemaObject = this.get(schema.$ref)\n          // special case where enum in the schema is set without mapping being defined, see https://github.com/kubb-labs/kubb/issues/1669\n          const propertySchema = refSchema.properties?.[propertyName] as OpenAPIV3.SchemaObject\n          const canAdd = key && !Object.values(mapping).includes(schema.$ref)\n\n          if (canAdd && propertySchema?.enum?.length === 1) {\n            mapping[propertySchema.enum[0]] = schema.$ref\n          } else if (canAdd) {\n            mapping[key] = schema.$ref\n          }\n        }\n      })\n    }\n\n    return {\n      ...schema.discriminator,\n      mapping,\n    }\n  }\n\n  // TODO add better typing\n  dereferenceWithRef(schema?: unknown) {\n    if (isReference(schema)) {\n      return {\n        ...schema,\n        ...this.get(schema.$ref),\n        $ref: schema.$ref,\n      }\n    }\n\n    return schema\n  }\n\n  /**\n   * Oas does not have a getResponseBody(contentType)\n   */\n  #getResponseBodyFactory(responseBody: boolean | ResponseObject): (contentType?: string) => MediaTypeObject | false | [string, MediaTypeObject, ...string[]] {\n    function hasResponseBody(res = responseBody): res is ResponseObject {\n      return !!res\n    }\n\n    return (contentType) => {\n      if (!hasResponseBody(responseBody)) {\n        return false\n      }\n\n      if (isReference(responseBody)) {\n        // If the request body is still a `$ref` pointer we should return false because this library\n        // assumes that you've run dereferencing beforehand.\n        return false\n      }\n\n      if (!responseBody.content) {\n        return false\n      }\n\n      if (contentType) {\n        if (!(contentType in responseBody.content)) {\n          return false\n        }\n\n        return responseBody.content[contentType]!\n      }\n\n      // Since no media type was supplied we need to find either the first JSON-like media type that\n      // we've got, or the first available of anything else if no JSON-like media types are present.\n      let availablecontentType: string | undefined\n      const contentTypes = Object.keys(responseBody.content)\n      contentTypes.forEach((mt: string) => {\n        if (!availablecontentType && matchesMimeType.json(mt)) {\n          availablecontentType = mt\n        }\n      })\n\n      if (!availablecontentType) {\n        contentTypes.forEach((mt: string) => {\n          if (!availablecontentType) {\n            availablecontentType = mt\n          }\n        })\n      }\n\n      if (availablecontentType) {\n        return [availablecontentType, responseBody.content[availablecontentType]!, ...(responseBody.description ? [responseBody.description] : [])]\n      }\n\n      return false\n    }\n  }\n\n  getResponseSchema(operation: Operation, statusCode: string | number): SchemaObject {\n    if (operation.schema.responses) {\n      Object.keys(operation.schema.responses).forEach((key) => {\n        const schema = operation.schema.responses![key]\n        const $ref = isReference(schema) ? schema.$ref : undefined\n\n        if (schema && $ref) {\n          operation.schema.responses![key] = this.get($ref)\n        }\n      })\n    }\n\n    const getResponseBody = this.#getResponseBodyFactory(operation.getResponseByStatusCode(statusCode))\n\n    const { contentType } = this.#options\n    const responseBody = getResponseBody(contentType)\n\n    if (responseBody === false) {\n      // return empty object because response will always be defined(request does not need a body)\n      return {}\n    }\n\n    const schema = Array.isArray(responseBody) ? responseBody[1].schema : responseBody.schema\n\n    if (!schema) {\n      // return empty object because response will always be defined(request does not need a body)\n\n      return {}\n    }\n\n    return this.dereferenceWithRef(schema)\n  }\n\n  getRequestSchema(operation: Operation): SchemaObject | undefined {\n    const { contentType } = this.#options\n\n    if (operation.schema.requestBody) {\n      operation.schema.requestBody = this.dereferenceWithRef(operation.schema.requestBody)\n    }\n\n    const requestBody = operation.getRequestBody(contentType)\n\n    if (requestBody === false) {\n      return undefined\n    }\n\n    const schema = Array.isArray(requestBody) ? requestBody[1].schema : requestBody.schema\n\n    if (!schema) {\n      return undefined\n    }\n\n    return this.dereferenceWithRef(schema)\n  }\n\n  getParametersSchema(operation: Operation, inKey: 'path' | 'query' | 'header'): SchemaObject | null {\n    const { contentType = operation.getContentType() } = this.#options\n    const params = operation\n      .getParameters()\n      .map((schema) => {\n        return this.dereferenceWithRef(schema)\n      })\n      .filter((v) => v.in === inKey)\n\n    if (!params.length) {\n      return null\n    }\n\n    return params.reduce(\n      (schema, pathParameters) => {\n        const property = pathParameters.content?.[contentType]?.schema ?? (pathParameters.schema as SchemaObject)\n        const required = [...(schema.required || ([] as any)), pathParameters.required ? pathParameters.name : undefined].filter(Boolean)\n\n        return {\n          ...schema,\n          description: schema.description,\n          deprecated: schema.deprecated,\n          example: schema.example,\n          required,\n          properties: {\n            ...schema.properties,\n            [pathParameters.name]: {\n              description: pathParameters.description,\n              ...property,\n            },\n          },\n        }\n      },\n      { type: 'object', required: [], properties: {} } as SchemaObject,\n    )\n  }\n\n  async valdiate() {\n    const oasNormalize = new OASNormalize(this.api, {\n      enablePaths: true,\n      colorizeErrors: true,\n    })\n\n    return oasNormalize.validate({\n      parser: {\n        validate: {\n          errors: {\n            colorize: true,\n          },\n        },\n      },\n    })\n  }\n}\n","import { isRef, isSchema } from 'oas/types'\nimport { isPlainObject, mergeDeep } from 'remeda'\n\nimport { bundle, loadConfig } from '@redocly/openapi-core'\nimport OASNormalize from 'oas-normalize'\nimport type { OASDocument } from 'oas/types'\nimport type { ParameterObject, SchemaObject } from 'oas/types'\nimport type { OpenAPI, OpenAPIV2, OpenAPIV3, OpenAPIV3_1 } from 'openapi-types'\nimport swagger2openapi from 'swagger2openapi'\nimport { Oas } from './Oas.ts'\n\nexport function isOpenApiV2Document(doc: any): doc is OpenAPIV2.Document {\n  return doc && isPlainObject(doc) && !('openapi' in doc)\n}\nexport function isOpenApiV3Document(doc: any): doc is OpenAPIV3.Document {\n  return doc && isPlainObject(doc) && 'openapi' in doc\n}\n\nexport function isOpenApiV3_1Document(doc: any): doc is OpenAPIV3_1.Document {\n  return doc && isPlainObject<OpenAPIV3_1.Document>(doc) && 'openapi' in doc && doc.openapi.startsWith('3.1')\n}\n\nexport function isJSONSchema(obj?: unknown): obj is SchemaObject {\n  return !!obj && isSchema(obj)\n}\n\nexport function isParameterObject(obj: ParameterObject | SchemaObject): obj is ParameterObject {\n  return obj && 'in' in obj\n}\n\n/**\n * Determines if a schema is nullable, considering both the standard `nullable` property and the legacy `x-nullable` extension.\n *\n * @param schema - The schema object to check.\n * @returns `true` if the schema is marked as nullable; otherwise, `false`.\n */\nexport function isNullable(schema?: SchemaObject & { 'x-nullable'?: boolean }): boolean {\n  return schema?.nullable ?? schema?.['x-nullable'] ?? false\n}\n\n/**\n * Determines if the given object is an OpenAPI ReferenceObject.\n *\n * @returns True if {@link obj} is a ReferenceObject; otherwise, false.\n */\nexport function isReference(obj?: any): obj is OpenAPIV3.ReferenceObject | OpenAPIV3_1.ReferenceObject {\n  return !!obj && isRef(obj)\n}\n\n/**\n * Determines if the given object is a SchemaObject with a discriminator property of type DiscriminatorObject.\n *\n * @returns True if {@link obj} is a SchemaObject containing a non-string {@link discriminator} property.\n */\nexport function isDiscriminator(obj?: any): obj is SchemaObject & { discriminator: OpenAPIV3.DiscriminatorObject } {\n  return !!obj && obj?.['discriminator'] && typeof obj.discriminator !== 'string'\n}\n\n/**\n * Determines whether a schema is required.\n *\n * Returns true if the schema has a non-empty {@link SchemaObject.required} array or a truthy {@link SchemaObject.required} property.\n *\n * @param schema - The schema object to check.\n * @returns True if the schema is required; otherwise, false.\n */\nexport function isRequired(schema?: SchemaObject): boolean {\n  if (!schema) {\n    return false\n  }\n\n  return Array.isArray(schema.required) ? !!schema.required?.length : !!schema.required\n}\n\nexport function isOptional(schema?: SchemaObject): boolean {\n  return !isRequired(schema)\n}\n\nexport async function parse(\n  pathOrApi: string | OASDocument,\n  { oasClass = Oas, canBundle = true, enablePaths = true }: { oasClass?: typeof Oas; canBundle?: boolean; enablePaths?: boolean } = {},\n): Promise<Oas> {\n  if (typeof pathOrApi === 'string' && canBundle) {\n    // resolve external refs\n    const config = await loadConfig()\n    const bundleResults = await bundle({ ref: pathOrApi, config, base: pathOrApi })\n\n    return parse(bundleResults.bundle.parsed)\n  }\n\n  const oasNormalize = new OASNormalize(pathOrApi, {\n    enablePaths,\n    colorizeErrors: true,\n  })\n  const document = (await oasNormalize.load()) as OpenAPI.Document\n\n  if (isOpenApiV2Document(document)) {\n    const { openapi } = await swagger2openapi.convertObj(document, {\n      anchors: true,\n    })\n\n    return new oasClass({ oas: openapi as OASDocument })\n  }\n\n  return new oasClass({ oas: document })\n}\n\nexport async function merge(pathOrApi: Array<string | OASDocument>, { oasClass = Oas }: { oasClass?: typeof Oas } = {}): Promise<Oas> {\n  const instances = await Promise.all(pathOrApi.map((p) => parse(p, { oasClass, enablePaths: false, canBundle: false })))\n\n  if (instances.length === 0) {\n    throw new Error('No OAS instances provided for merging.')\n  }\n\n  const merged = instances.reduce(\n    (acc, current) => {\n      return mergeDeep(acc, current.document as OASDocument)\n    },\n    {\n      openapi: '3.0.0',\n      info: {\n        title: 'Merged API',\n        version: '1.0.0',\n      },\n      paths: {},\n      components: {\n        schemas: {},\n      },\n    } as any,\n  )\n\n  return parse(merged, { oasClass })\n}\n"]}