{"version":3,"file":"OpenApiV3_1Emender.mjs","sources":["../../src/converters/OpenApiV3_1Emender.ts"],"sourcesContent":["import { OpenApi } from \"../OpenApi\";\nimport { OpenApiV3_1 } from \"../OpenApiV3_1\";\nimport { IJsonSchemaAttribute } from \"../structures/IJsonSchemaAttribute\";\nimport { OpenApiExclusiveEmender } from \"../utils/OpenApiExclusiveEmender\";\n\nexport namespace OpenApiV3_1Emender {\n  export const convert = (input: OpenApiV3_1.IDocument): OpenApi.IDocument => {\n    if ((input as OpenApi.IDocument)[\"x-samchon-emended-v4\"] === true)\n      return input as OpenApi.IDocument;\n    return {\n      ...input,\n      components: convertComponents(input.components ?? {}),\n      paths: input.paths\n        ? Object.fromEntries(\n            Object.entries(input.paths)\n              .filter(([_, v]) => v !== undefined)\n              .map(\n                ([key, value]) => [key, convertPathItem(input)(value)] as const,\n              ),\n          )\n        : undefined,\n      webhooks: input.webhooks\n        ? Object.fromEntries(\n            Object.entries(input.webhooks)\n              .filter(([_, v]) => v !== undefined)\n              .map(\n                ([key, value]) =>\n                  [key, convertWebhooks(input)(value)!] as const,\n              )\n              .filter(([_, value]) => value !== undefined),\n          )\n        : undefined,\n      \"x-samchon-emended-v4\": true,\n    };\n  };\n\n  /* -----------------------------------------------------------\n    OPERATORS\n  ----------------------------------------------------------- */\n  const convertWebhooks =\n    (doc: OpenApiV3_1.IDocument) =>\n    (\n      webhook:\n        | OpenApiV3_1.IPath\n        | OpenApiV3_1.IJsonSchema.IReference<`#/components/pathItems/${string}`>,\n    ): OpenApi.IPath | undefined => {\n      if (!TypeChecker.isReference(webhook))\n        return convertPathItem(doc)(webhook);\n      const found: OpenApiV3_1.IPath | undefined =\n        doc.components?.pathItems?.[webhook.$ref.split(\"/\").pop() ?? \"\"];\n      return found ? convertPathItem(doc)(found) : undefined;\n    };\n\n  const convertPathItem =\n    (doc: OpenApiV3_1.IDocument) =>\n    (pathItem: OpenApiV3_1.IPath): OpenApi.IPath => ({\n      ...(pathItem as any),\n      ...(pathItem.get\n        ? { get: convertOperation(doc)(pathItem)(pathItem.get) }\n        : undefined),\n      ...(pathItem.put\n        ? { put: convertOperation(doc)(pathItem)(pathItem.put) }\n        : undefined),\n      ...(pathItem.post\n        ? { post: convertOperation(doc)(pathItem)(pathItem.post) }\n        : undefined),\n      ...(pathItem.delete\n        ? { delete: convertOperation(doc)(pathItem)(pathItem.delete) }\n        : undefined),\n      ...(pathItem.options\n        ? { options: convertOperation(doc)(pathItem)(pathItem.options) }\n        : undefined),\n      ...(pathItem.head\n        ? { head: convertOperation(doc)(pathItem)(pathItem.head) }\n        : undefined),\n      ...(pathItem.patch\n        ? { patch: convertOperation(doc)(pathItem)(pathItem.patch) }\n        : undefined),\n      ...(pathItem.trace\n        ? { trace: convertOperation(doc)(pathItem)(pathItem.trace) }\n        : undefined),\n    });\n\n  const convertOperation =\n    (doc: OpenApiV3_1.IDocument) =>\n    (pathItem: OpenApiV3_1.IPath) =>\n    (input: OpenApiV3_1.IOperation): OpenApi.IOperation => ({\n      ...input,\n      parameters:\n        pathItem.parameters !== undefined || input.parameters !== undefined\n          ? [...(pathItem.parameters ?? []), ...(input.parameters ?? [])]\n              .map((p) => {\n                if (!TypeChecker.isReference(p))\n                  return convertParameter(doc.components ?? {})(p);\n                const found:\n                  | Omit<OpenApiV3_1.IOperation.IParameter, \"in\">\n                  | undefined = p.$ref.startsWith(\"#/components/headers/\")\n                  ? doc.components?.headers?.[p.$ref.split(\"/\").pop() ?? \"\"]\n                  : doc.components?.parameters?.[p.$ref.split(\"/\").pop() ?? \"\"];\n                return found !== undefined\n                  ? convertParameter(doc.components ?? {})({\n                      ...found,\n                      in: \"header\",\n                    })\n                  : undefined!;\n              })\n              .filter((_, v) => v !== undefined)\n          : undefined,\n      requestBody: input.requestBody\n        ? convertRequestBody(doc)(input.requestBody)\n        : undefined,\n      responses: input.responses\n        ? Object.fromEntries(\n            Object.entries(input.responses)\n              .filter(([_, v]) => v !== undefined)\n              .map(\n                ([key, value]) => [key, convertResponse(doc)(value)!] as const,\n              )\n              .filter(([_, value]) => value !== undefined),\n          )\n        : undefined,\n    });\n\n  const convertParameter =\n    (components: OpenApiV3_1.IComponents) =>\n    (\n      input: OpenApiV3_1.IOperation.IParameter,\n    ): OpenApi.IOperation.IParameter => ({\n      ...input,\n      schema: convertSchema(components)(input.schema),\n      examples: input.examples\n        ? Object.fromEntries(\n            Object.entries(input.examples)\n              .map(([key, value]) => [\n                key,\n                TypeChecker.isReference(value)\n                  ? components.examples?.[value.$ref.split(\"/\").pop() ?? \"\"]\n                  : value,\n              ])\n              .filter(([_, v]) => v !== undefined),\n          )\n        : undefined,\n    });\n\n  const convertRequestBody =\n    (doc: OpenApiV3_1.IDocument) =>\n    (\n      input:\n        | OpenApiV3_1.IOperation.IRequestBody\n        | OpenApiV3_1.IJsonSchema.IReference<`#/components/requestBodies/${string}`>,\n    ): OpenApi.IOperation.IRequestBody | undefined => {\n      if (TypeChecker.isReference(input)) {\n        const found: OpenApiV3_1.IOperation.IRequestBody | undefined =\n          doc.components?.requestBodies?.[input.$ref.split(\"/\").pop() ?? \"\"];\n        if (found === undefined) return undefined;\n        input = found;\n      }\n      return {\n        ...input,\n        content: input.content\n          ? convertContent(doc.components ?? {})(input.content)\n          : undefined,\n      };\n    };\n\n  const convertResponse =\n    (doc: OpenApiV3_1.IDocument) =>\n    (\n      input:\n        | OpenApiV3_1.IOperation.IResponse\n        | OpenApiV3_1.IJsonSchema.IReference<`#/components/responses/${string}`>,\n    ): OpenApi.IOperation.IResponse | undefined => {\n      if (TypeChecker.isReference(input)) {\n        const found: OpenApiV3_1.IOperation.IResponse | undefined =\n          doc.components?.responses?.[input.$ref.split(\"/\").pop() ?? \"\"];\n        if (found === undefined) return undefined;\n        input = found;\n      }\n      return {\n        ...input,\n        content: input.content\n          ? convertContent(doc.components ?? {})(input.content)\n          : undefined,\n        headers: input.headers\n          ? Object.fromEntries(\n              Object.entries(input.headers)\n                .filter(([_, v]) => v !== undefined)\n                .map(\n                  ([key, value]) =>\n                    [\n                      key,\n                      (() => {\n                        if (TypeChecker.isReference(value) === false)\n                          return convertParameter(doc.components ?? {})({\n                            ...value,\n                            in: \"header\",\n                          });\n                        const found:\n                          | Omit<OpenApiV3_1.IOperation.IParameter, \"in\">\n                          | undefined = value.$ref.startsWith(\n                          \"#/components/headers/\",\n                        )\n                          ? doc.components?.headers?.[\n                              value.$ref.split(\"/\").pop() ?? \"\"\n                            ]\n                          : undefined;\n                        return found !== undefined\n                          ? convertParameter(doc.components ?? {})({\n                              ...found,\n                              in: \"header\",\n                            })\n                          : undefined!;\n                      })(),\n                    ] as const,\n                )\n                .filter(([_, v]) => v !== undefined),\n            )\n          : undefined,\n      };\n    };\n\n  const convertContent =\n    (components: OpenApiV3_1.IComponents) =>\n    (\n      record: Record<string, OpenApiV3_1.IOperation.IMediaType>,\n    ): Record<string, OpenApi.IOperation.IMediaType> =>\n      Object.fromEntries(\n        Object.entries(record)\n          .filter(([_, v]) => v !== undefined)\n          .map(\n            ([key, value]) =>\n              [\n                key,\n                {\n                  ...value,\n                  schema: value.schema\n                    ? convertSchema(components)(value.schema)\n                    : undefined,\n                  examples: value.examples\n                    ? Object.fromEntries(\n                        Object.entries(value.examples)\n                          .map(([key, value]) => [\n                            key,\n                            TypeChecker.isReference(value)\n                              ? components.examples?.[\n                                  value.$ref.split(\"/\").pop() ?? \"\"\n                                ]\n                              : value,\n                          ])\n                          .filter(([_, v]) => v !== undefined),\n                      )\n                    : undefined,\n                },\n              ] as const,\n          ),\n      );\n\n  /* -----------------------------------------------------------\n    DEFINITIONS\n  ----------------------------------------------------------- */\n  export const convertComponents = (\n    input: OpenApiV3_1.IComponents,\n  ): OpenApi.IComponents => ({\n    schemas: Object.fromEntries(\n      Object.entries(input.schemas ?? {})\n        .filter(([_, v]) => v !== undefined)\n        .map(([key, value]) => [key, convertSchema(input)(value)] as const),\n    ),\n    securitySchemes: input.securitySchemes,\n  });\n\n  export const convertSchema =\n    (components: OpenApiV3_1.IComponents) =>\n    (input: OpenApiV3_1.IJsonSchema): OpenApi.IJsonSchema => {\n      const union: OpenApi.IJsonSchema[] = [];\n      const attribute: IJsonSchemaAttribute = {\n        title: input.title,\n        description: input.description,\n        deprecated: input.deprecated,\n        readOnly: input.readOnly,\n        writeOnly: input.writeOnly,\n        example: input.example,\n        examples: Array.isArray(input.examples)\n          ? Object.fromEntries(input.examples.map((v, i) => [`v${i}`, v]))\n          : input.examples,\n        ...Object.fromEntries(\n          Object.entries(input).filter(\n            ([key, value]) => key.startsWith(\"x-\") && value !== undefined,\n          ),\n        ),\n      };\n      const nullable: { value: boolean; default?: null } = {\n        value: false,\n        default: undefined,\n      };\n\n      const visit = (schema: OpenApiV3_1.IJsonSchema): void => {\n        // NULLABLE PROPERTY\n        if ((schema as OpenApiV3_1.IJsonSchema.INumber).nullable === true) {\n          nullable.value ||= true;\n          if ((schema as OpenApiV3_1.IJsonSchema.INumber).default === null)\n            nullable.default = null;\n        }\n        if (\n          Array.isArray((schema as OpenApiV3_1.IJsonSchema.INumber).enum) &&\n          (schema as OpenApiV3_1.IJsonSchema.INumber).enum?.length &&\n          (schema as OpenApiV3_1.IJsonSchema.INumber).enum?.some(\n            (e) => e === null,\n          )\n        )\n          nullable.value ||= true;\n\n        // MIXED TYPE CASE\n        if (TypeChecker.isMixed(schema)) {\n          if (schema.const !== undefined)\n            visit({\n              ...schema,\n              ...{\n                type: undefined,\n                oneOf: undefined,\n                anyOf: undefined,\n                allOf: undefined,\n                $ref: undefined,\n              },\n            });\n          if (schema.oneOf !== undefined)\n            visit({\n              ...schema,\n              ...{\n                type: undefined,\n                anyOf: undefined,\n                allOf: undefined,\n                $ref: undefined,\n              },\n            });\n          if (schema.anyOf !== undefined)\n            visit({\n              ...schema,\n              ...{\n                type: undefined,\n                oneOf: undefined,\n                allOf: undefined,\n                $ref: undefined,\n              },\n            });\n          if (schema.allOf !== undefined)\n            visit({\n              ...schema,\n              ...{\n                type: undefined,\n                oneOf: undefined,\n                anyOf: undefined,\n                $ref: undefined,\n              },\n            });\n          for (const type of schema.type)\n            if (type === \"boolean\" || type === \"number\" || type === \"string\")\n              visit({\n                ...schema,\n                ...{\n                  enum:\n                    schema.enum?.length && schema.enum.filter((e) => e !== null)\n                      ? schema.enum.filter((x) => typeof x === type)\n                      : undefined,\n                },\n                type: type as any,\n              });\n            else if (type === \"integer\")\n              visit({\n                ...schema,\n                ...{\n                  enum:\n                    schema.enum?.length && schema.enum.filter((e) => e !== null)\n                      ? schema.enum.filter(\n                          (x) =>\n                            x !== null &&\n                            typeof x === \"number\" &&\n                            Number.isInteger(x),\n                        )\n                      : undefined,\n                },\n                type: type as any,\n              });\n            else visit({ ...schema, type: type as any });\n        }\n        // UNION TYPE CASE\n        else if (TypeChecker.isOneOf(schema)) schema.oneOf.forEach(visit);\n        else if (TypeChecker.isAnyOf(schema)) schema.anyOf.forEach(visit);\n        else if (TypeChecker.isAllOf(schema))\n          if (schema.allOf.length === 1) visit(schema.allOf[0]);\n          else union.push(convertAllOfSchema(components)(schema));\n        // ATOMIC TYPE CASE (CONSIDER ENUM VALUES)\n        else if (TypeChecker.isBoolean(schema))\n          if (\n            schema.enum?.length &&\n            schema.enum.filter((e) => e !== null).length\n          )\n            for (const value of schema.enum.filter((e) => e !== null))\n              union.push({\n                const: value,\n                ...({\n                  ...schema,\n                  type: undefined as any,\n                  enum: undefined,\n                  default: undefined,\n                } satisfies OpenApiV3_1.IJsonSchema.IBoolean as any),\n              } satisfies OpenApi.IJsonSchema.IConstant);\n          else\n            union.push({\n              ...schema,\n              default: schema.default ?? undefined,\n              ...{\n                enum: undefined,\n              },\n            });\n        else if (TypeChecker.isInteger(schema) || TypeChecker.isNumber(schema))\n          if (schema.enum?.length && schema.enum.filter((e) => e !== null))\n            for (const value of schema.enum.filter((e) => e !== null))\n              union.push({\n                const: value,\n                ...({\n                  ...schema,\n                  type: undefined as any,\n                  enum: undefined,\n                  default: undefined,\n                  minimum: undefined,\n                  maximum: undefined,\n                  exclusiveMinimum: undefined,\n                  exclusiveMaximum: undefined,\n                  multipleOf: undefined,\n                } satisfies OpenApiV3_1.IJsonSchema.IInteger as any),\n              } satisfies OpenApi.IJsonSchema.IConstant);\n          else\n            union.push(\n              OpenApiExclusiveEmender.emend({\n                ...schema,\n                default: schema.default ?? undefined,\n                ...{\n                  enum: undefined,\n                },\n                exclusiveMinimum:\n                  typeof schema.exclusiveMinimum === \"boolean\"\n                    ? schema.exclusiveMinimum === true\n                      ? schema.minimum\n                      : undefined\n                    : schema.exclusiveMinimum,\n                exclusiveMaximum:\n                  typeof schema.exclusiveMaximum === \"boolean\"\n                    ? schema.exclusiveMaximum === true\n                      ? schema.maximum\n                      : undefined\n                    : schema.exclusiveMaximum,\n                minimum:\n                  schema.exclusiveMinimum === true ? undefined : schema.minimum,\n                maximum:\n                  schema.exclusiveMaximum === true ? undefined : schema.maximum,\n              }),\n            );\n        else if (TypeChecker.isString(schema))\n          if (\n            schema.enum?.length &&\n            schema.enum.filter((e) => e !== null).length\n          )\n            for (const value of schema.enum.filter((e) => e !== null))\n              union.push({\n                const: value,\n                ...({\n                  ...schema,\n                  type: undefined as any,\n                  enum: undefined,\n                  default: undefined,\n                } satisfies OpenApiV3_1.IJsonSchema.IString as any),\n              } satisfies OpenApi.IJsonSchema.IConstant);\n          else\n            union.push({\n              ...schema,\n              default: schema.default ?? undefined,\n              ...{\n                enum: undefined,\n              },\n            });\n        // ARRAY TYPE CASE (CONSIDER TUPLE)\n        else if (TypeChecker.isArray(schema)) {\n          if (Array.isArray(schema.items))\n            union.push({\n              ...schema,\n              ...{\n                items: undefined!,\n                prefixItems: schema.items.map(convertSchema(components)),\n                additionalItems:\n                  typeof schema.additionalItems === \"object\" &&\n                  schema.additionalItems !== null\n                    ? convertSchema(components)(schema.additionalItems)\n                    : schema.additionalItems,\n              },\n            } satisfies OpenApi.IJsonSchema.ITuple);\n          else if (Array.isArray(schema.prefixItems))\n            union.push({\n              ...schema,\n              ...{\n                items: undefined!,\n                prefixItems: schema.prefixItems.map(convertSchema(components)),\n                additionalItems:\n                  typeof schema.additionalItems === \"object\" &&\n                  schema.additionalItems !== null\n                    ? convertSchema(components)(schema.additionalItems)\n                    : schema.additionalItems,\n              },\n            });\n          else if (schema.items === undefined)\n            union.push({\n              ...schema,\n              ...{\n                items: undefined!,\n                prefixItems: [],\n              },\n            });\n          else\n            union.push({\n              ...schema,\n              ...{\n                items: convertSchema(components)(schema.items),\n                prefixItems: undefined,\n                additionalItems: undefined,\n              },\n            });\n        }\n        // OBJECT TYPE CASE\n        else if (TypeChecker.isObject(schema))\n          union.push({\n            ...schema,\n            ...{\n              properties: schema.properties\n                ? Object.fromEntries(\n                    Object.entries(schema.properties)\n                      .filter(([_, v]) => v !== undefined)\n                      .map(\n                        ([key, value]) =>\n                          [key, convertSchema(components)(value)] as const,\n                      ),\n                  )\n                : {},\n              additionalProperties: schema.additionalProperties\n                ? typeof schema.additionalProperties === \"object\" &&\n                  schema.additionalProperties !== null\n                  ? convertSchema(components)(schema.additionalProperties)\n                  : schema.additionalProperties\n                : undefined,\n              required: schema.required ?? [],\n            },\n          });\n        else if (TypeChecker.isReference(schema))\n          union.push({\n            ...schema,\n            ...{\n              $ref: `#/components/schemas/${schema.$ref.split(\"/\").pop()}`,\n            },\n          });\n        else if (TypeChecker.isRecursiveReference(schema))\n          union.push({\n            ...schema,\n            ...{\n              $ref: `#/components/schemas/${schema.$recursiveRef.split(\"/\").pop()}`,\n              $recursiveRef: undefined,\n            },\n          });\n        // THE OTHERS\n        else union.push(schema);\n      };\n\n      visit(input);\n      if (\n        nullable.value === true &&\n        !union.some((e) => (e as OpenApi.IJsonSchema.INull).type === \"null\")\n      )\n        union.push({\n          type: \"null\",\n          default: nullable.default,\n        });\n      return {\n        ...(union.length === 0\n          ? {\n              type: undefined,\n            }\n          : union.length === 1\n            ? {\n                ...union[0],\n              }\n            : {\n                oneOf: union.map((u) => ({\n                  ...u,\n                  nullable: undefined,\n                  $defs: undefined,\n                })),\n              }),\n        ...attribute,\n        ...{\n          nullable: undefined,\n          $defs: undefined,\n        },\n      };\n    };\n\n  const convertAllOfSchema =\n    (components: OpenApiV3_1.IComponents) =>\n    (input: OpenApiV3_1.IJsonSchema.IAllOf): OpenApi.IJsonSchema => {\n      const objects: Array<OpenApiV3_1.IJsonSchema.IObject | null> =\n        input.allOf.map((schema) => retrieveObject(components)(schema));\n      if (objects.some((obj) => obj === null))\n        return {\n          type: undefined,\n          ...{\n            allOf: undefined,\n          },\n        };\n      return {\n        ...input,\n        type: \"object\",\n        properties: Object.fromEntries(\n          objects\n            .map((o) => Object.entries(o?.properties ?? {}))\n            .flat()\n            .map(\n              ([key, value]) =>\n                [key, convertSchema(components)(value)] as const,\n            ),\n        ),\n        ...{\n          allOf: undefined,\n          required: [...new Set(objects.map((o) => o?.required ?? []).flat())],\n        },\n      };\n    };\n\n  const retrieveObject =\n    (components: OpenApiV3_1.IComponents) =>\n    (\n      input: OpenApiV3_1.IJsonSchema,\n      visited: Set<OpenApiV3_1.IJsonSchema> = new Set(),\n    ): OpenApiV3_1.IJsonSchema.IObject | null => {\n      if (TypeChecker.isObject(input))\n        return input.properties !== undefined && !input.additionalProperties\n          ? input\n          : null;\n      else if (visited.has(input)) return null;\n      else visited.add(input);\n\n      if (TypeChecker.isReference(input))\n        return retrieveObject(components)(\n          components.schemas?.[input.$ref.split(\"/\").pop() ?? \"\"] ?? {},\n          visited,\n        );\n      else if (TypeChecker.isRecursiveReference(input))\n        return retrieveObject(components)(\n          components.schemas?.[input.$recursiveRef.split(\"/\").pop() ?? \"\"] ??\n            {},\n          visited,\n        );\n      return null;\n    };\n\n  namespace TypeChecker {\n    export const isConstant = (\n      schema: OpenApiV3_1.IJsonSchema,\n    ): schema is OpenApiV3_1.IJsonSchema.IConstant =>\n      (schema as OpenApiV3_1.IJsonSchema.IConstant).const !== undefined;\n    export const isBoolean = (\n      schema: OpenApiV3_1.IJsonSchema,\n    ): schema is OpenApiV3_1.IJsonSchema.IBoolean =>\n      (schema as OpenApiV3_1.IJsonSchema.IBoolean).type === \"boolean\";\n    export const isInteger = (\n      schema: OpenApiV3_1.IJsonSchema,\n    ): schema is OpenApiV3_1.IJsonSchema.IInteger =>\n      (schema as OpenApiV3_1.IJsonSchema.IInteger).type === \"integer\";\n    export const isNumber = (\n      schema: OpenApiV3_1.IJsonSchema,\n    ): schema is OpenApiV3_1.IJsonSchema.INumber =>\n      (schema as OpenApiV3_1.IJsonSchema.INumber).type === \"number\";\n    export const isString = (\n      schema: OpenApiV3_1.IJsonSchema,\n    ): schema is OpenApiV3_1.IJsonSchema.IString =>\n      (schema as OpenApiV3_1.IJsonSchema.IString).type === \"string\";\n    export const isArray = (\n      schema: OpenApiV3_1.IJsonSchema,\n    ): schema is OpenApiV3_1.IJsonSchema.IArray =>\n      (schema as OpenApiV3_1.IJsonSchema.IArray).type === \"array\";\n    export const isObject = (\n      schema: OpenApiV3_1.IJsonSchema,\n    ): schema is OpenApiV3_1.IJsonSchema.IObject =>\n      (schema as OpenApiV3_1.IJsonSchema.IObject).type === \"object\";\n    export const isReference = (\n      schema: OpenApiV3_1.IJsonSchema,\n    ): schema is OpenApiV3_1.IJsonSchema.IReference =>\n      (schema as OpenApiV3_1.IJsonSchema.IReference).$ref !== undefined;\n    export const isRecursiveReference = (\n      schema: OpenApiV3_1.IJsonSchema,\n    ): schema is OpenApiV3_1.IJsonSchema.IRecursiveReference =>\n      (schema as OpenApiV3_1.IJsonSchema.IRecursiveReference).$recursiveRef !==\n      undefined;\n    export const isAllOf = (\n      schema: OpenApiV3_1.IJsonSchema,\n    ): schema is OpenApiV3_1.IJsonSchema.IAllOf =>\n      (schema as OpenApiV3_1.IJsonSchema.IAllOf).allOf !== undefined;\n    export const isAnyOf = (\n      schema: OpenApiV3_1.IJsonSchema,\n    ): schema is OpenApiV3_1.IJsonSchema.IAnyOf =>\n      (schema as OpenApiV3_1.IJsonSchema.IAnyOf).anyOf !== undefined;\n    export const isOneOf = (\n      schema: OpenApiV3_1.IJsonSchema,\n    ): schema is OpenApiV3_1.IJsonSchema.IOneOf =>\n      (schema as OpenApiV3_1.IJsonSchema.IOneOf).oneOf !== undefined;\n    export const isNullOnly = (\n      schema: OpenApiV3_1.IJsonSchema,\n    ): schema is OpenApiV3_1.IJsonSchema.INull =>\n      (schema as OpenApiV3_1.IJsonSchema.INull).type === \"null\";\n    export const isMixed = (\n      schema: OpenApiV3_1.IJsonSchema,\n    ): schema is OpenApiV3_1.IJsonSchema.IMixed =>\n      Array.isArray((schema as OpenApiV3_1.IJsonSchema.IMixed).type);\n  }\n}\n"],"names":["OpenApiV3_1Emender","convert","input","components","convertComponents","paths","Object","fromEntries","entries","filter","_","v","undefined","map","key","value","convertPathItem","webhooks","convertWebhooks","doc","webhook","TypeChecker","isReference","found","pathItems","$ref","split","pop","pathItem","get","convertOperation","put","post","delete","options","head","patch","trace","parameters","p","convertParameter","startsWith","headers","in","requestBody","convertRequestBody","responses","convertResponse","schema","convertSchema","examples","requestBodies","content","convertContent","record","schemas","securitySchemes","union","attribute","title","description","deprecated","readOnly","writeOnly","example","Array","isArray","i","nullable","default","visit","enum","length","some","e","isMixed","const","type","oneOf","anyOf","allOf","x","Number","isInteger","isOneOf","forEach","isAnyOf","isAllOf","push","convertAllOfSchema","isBoolean","isNumber","minimum","maximum","exclusiveMinimum","exclusiveMaximum","multipleOf","OpenApiExclusiveEmender","emend","isString","items","prefixItems","additionalItems","isObject","properties","additionalProperties","required","isRecursiveReference","$recursiveRef","u","$defs","objects","retrieveObject","obj","o","flat","Set","visited","has","add","isConstant","isNullOnly"],"mappings":"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"}