{"version":3,"file":"index.mjs","sources":["../src/index.ts"],"sourcesContent":["import { createConfig } from \"@redocly/openapi-core\";\nimport type { Readable } from \"node:stream\";\nimport { performance } from \"node:perf_hooks\";\nimport type ts from \"typescript\";\nimport { validateAndBundle } from \"./lib/redoc.js\";\nimport { debug, resolveRef, scanDiscriminators } from \"./lib/utils.js\";\nimport transformSchema from \"./transform/index.js\";\nimport type { GlobalContext, OpenAPI3, OpenAPITSOptions } from \"./types.js\";\n\nexport * from \"./lib/ts.js\";\nexport * from \"./lib/utils.js\";\nexport { default as transformSchema } from \"./transform/index.js\";\nexport { default as transformComponentsObject } from \"./transform/components-object.js\";\nexport { default as transformHeaderObject } from \"./transform/header-object.js\";\nexport { default as transformMediaTypeObject } from \"./transform/media-type-object.js\";\nexport * from \"./transform/operation-object.js\";\nexport { default as transformOperationObject } from \"./transform/operation-object.js\";\nexport { default as transformParameterObject } from \"./transform/parameter-object.js\";\nexport * from \"./transform/path-item-object.js\";\nexport { default as transformPathItemObject } from \"./transform/path-item-object.js\";\nexport { default as transformPathsObject } from \"./transform/paths-object.js\";\nexport { default as transformRequestBodyObject } from \"./transform/request-body-object.js\";\nexport { default as transformResponseObject } from \"./transform/response-object.js\";\nexport { default as transformResponsesObject } from \"./transform/responses-object.js\";\nexport * from \"./transform/schema-object.js\";\nexport { default as transformSchemaObject } from \"./transform/schema-object.js\";\nexport * from \"./types.js\";\n\nexport const COMMENT_HEADER = `/**\n * This file was auto-generated by openapi-typescript.\n * Do not make direct changes to the file.\n */\n\n`;\n\n/**\n * Convert an OpenAPI schema to TypesScript AST\n * @param {string|URL|object|Readable} source OpenAPI schema source:\n *   - YAML: string\n *   - JSON: parsed object\n *   - URL: URL to a YAML or JSON file (local or remote)\n *   - Readable: Readable stream of YAML or JSON\n */\nexport default async function openapiTS(\n  source: string | URL | OpenAPI3 | Buffer | Readable,\n  options: OpenAPITSOptions = {} as Partial<OpenAPITSOptions>,\n): Promise<ts.Node[]> {\n  if (!source) {\n    throw new Error(\"Empty schema. Please specify a URL, file path, or Redocly Config\");\n  }\n\n  const redoc =\n    options.redocly ??\n    (await createConfig(\n      {\n        rules: {\n          \"operation-operationId-unique\": { severity: \"error\" }, // throw error on duplicate operationIDs\n        },\n      },\n      { extends: [\"minimal\"] },\n    ));\n\n  const schema = await validateAndBundle(source, {\n    redoc,\n    cwd: options.cwd instanceof URL ? options.cwd : new URL(`file://${options.cwd ?? process.cwd()}/`),\n    silent: options.silent ?? false,\n  });\n\n  const ctx: GlobalContext = {\n    additionalProperties: options.additionalProperties ?? false,\n    alphabetize: options.alphabetize ?? false,\n    arrayLength: options.arrayLength ?? false,\n    defaultNonNullable: options.defaultNonNullable ?? true,\n    discriminators: scanDiscriminators(schema, options),\n    emptyObjectsUnknown: options.emptyObjectsUnknown ?? false,\n    enum: options.enum ?? false,\n    enumValues: options.enumValues ?? false,\n    dedupeEnums: options.dedupeEnums ?? false,\n    excludeDeprecated: options.excludeDeprecated ?? false,\n    exportType: options.exportType ?? false,\n    immutable: options.immutable ?? false,\n    rootTypes: options.rootTypes ?? false,\n    rootTypesNoSchemaPrefix: options.rootTypesNoSchemaPrefix ?? false,\n    injectFooter: [],\n    pathParamsAsTypes: options.pathParamsAsTypes ?? false,\n    postTransform: typeof options.postTransform === \"function\" ? options.postTransform : undefined,\n    propertiesRequiredByDefault: options.propertiesRequiredByDefault ?? false,\n    redoc,\n    silent: options.silent ?? false,\n    inject: options.inject ?? undefined,\n    transform: typeof options.transform === \"function\" ? options.transform : undefined,\n    makePathsEnum: options.makePathsEnum ?? false,\n    generatePathParams: options.generatePathParams ?? false,\n    resolve($ref) {\n      return resolveRef(schema, $ref, { silent: options.silent ?? false });\n    },\n  };\n\n  const transformT = performance.now();\n  const result = transformSchema(schema, ctx);\n  debug(\"Completed AST transformation for entire document\", \"ts\", performance.now() - transformT);\n\n  return result;\n}\n"],"names":[],"mappings":"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"}