openapi-typescript
Version:
Convert OpenAPI 3.0 & 3.1 schemas to TypeScript
1 lines • 7.02 kB
Source Map (JSON)
{"version":3,"file":"index.cjs","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":["redoc","createConfig","validateAndBundle","scanDiscriminators","resolveRef","performance","transformSchema","debug"],"mappings":"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"}