UNPKG

@typespec/openapi3

Version:

TypeSpec library for emitting OpenAPI 3.0 and OpenAPI 3.1 from the TypeSpec REST protocol binding and converting OpenAPI3 to TypeSpec

81 lines 5.71 kB
import { ArrayBuilder, AssetEmitter, Context, Declaration, EmitEntity, EmitterOutput, ObjectBuilder, Placeholder, ReferenceCycle, Scope, TypeEmitter } from "@typespec/asset-emitter"; import { BooleanLiteral, DiscriminatedUnion, Enum, EnumMember, IntrinsicScalarName, Model, ModelProperty, NumericLiteral, Program, Scalar, StringLiteral, StringTemplate, Tuple, Type, Union, UnionVariant } from "@typespec/compiler"; import { MetadataInfo } from "@typespec/http"; import { JsonSchemaModule } from "./json-schema.js"; import { OpenAPI3EmitterOptions } from "./lib.js"; import { ResolvedOpenAPI3EmitterOptions } from "./openapi.js"; import { SSEModule } from "./sse-module.js"; import { OpenAPI3Schema, OpenAPISchema3_1, Refable } from "./types.js"; import { VisibilityUsageTracker } from "./visibility-usage.js"; import { XmlModule } from "./xml-module.js"; /** * Base OpenAPI3 schema emitter. Deals with emitting content of `components/schemas` section. */ export declare class OpenAPI3SchemaEmitterBase<Schema extends OpenAPI3Schema | OpenAPISchema3_1> extends TypeEmitter<Record<string, any>, OpenAPI3EmitterOptions> { #private; protected _metadataInfo: MetadataInfo; protected _visibilityUsage: VisibilityUsageTracker; protected _options: ResolvedOpenAPI3EmitterOptions; protected _jsonSchemaModule: JsonSchemaModule | undefined; protected _xmlModule: XmlModule | undefined; protected _sseModule: SSEModule | undefined; constructor(emitter: AssetEmitter<Record<string, any>, OpenAPI3EmitterOptions>, metadataInfo: MetadataInfo, visibilityUsage: VisibilityUsageTracker, options: ResolvedOpenAPI3EmitterOptions, optionalDependencies: { jsonSchemaModule?: JsonSchemaModule; xmlModule?: XmlModule; sseModule?: SSEModule; }); modelDeclarationReferenceContext(model: Model, name: string): Context; modelLiteralReferenceContext(model: Model): Context; scalarDeclarationReferenceContext(scalar: Scalar, name: string): Context; enumDeclarationReferenceContext(en: Enum, name: string): Context; unionDeclarationReferenceContext(union: Union): Context; reduceContext(type: Type): Context; applyDiscriminator(type: Model, schema: Schema): void; shouldSealSchema(model: Model): boolean; applyModelIndexer(schema: ObjectBuilder<any>, model: Model): void; modelDeclaration(model: Model, _: string): EmitterOutput<object>; getContentType(): string; modelLiteral(model: Model): EmitterOutput<object>; modelInstantiation(model: Model, name: string | undefined): EmitterOutput<Record<string, any>>; unionInstantiation(union: Union, name: string): EmitterOutput<Record<string, any>>; arrayDeclaration(array: Model, _: string, elementType: Type): EmitterOutput<object>; arrayLiteral(array: Model, elementType: Type): EmitterOutput<object>; arrayLiteralReferenceContext(array: Model, elementType: Type): Context; modelProperties(model: Model): EmitterOutput<Record<string, Refable<OpenAPI3Schema>>>; getRawBinarySchema(): Schema; modelPropertyLiteral(prop: ModelProperty): EmitterOutput<object>; booleanLiteral(boolean: BooleanLiteral): EmitterOutput<object>; stringLiteral(string: StringLiteral): EmitterOutput<object>; stringTemplate(string: StringTemplate): EmitterOutput<object>; numericLiteral(number: NumericLiteral): EmitterOutput<object>; enumDeclaration(en: Enum, name: string): EmitterOutput<object>; enumSchema(en: Enum): Schema; enumMember(member: EnumMember): EmitterOutput<Record<string, any>>; enumMemberReference(member: EnumMember): EmitterOutput<Record<string, any>>; unionDeclaration(union: Union, name: string): EmitterOutput<object>; unionSchema(union: Union): ObjectBuilder<Schema>; discriminatedUnion(union: DiscriminatedUnion): ObjectBuilder<Schema>; getDiscriminatorMapping(variants: Map<string, Type>): Record<string, string>; unionLiteral(union: Union): EmitterOutput<object>; unionVariants(union: Union): EmitterOutput<object>; unionVariant(variant: UnionVariant): EmitterOutput<object>; modelPropertyReference(prop: ModelProperty): EmitterOutput<object>; reference(targetDeclaration: Declaration<Record<string, unknown>>, pathUp: Scope<Record<string, unknown>>[], pathDown: Scope<Record<string, unknown>>[], commonScope: Scope<Record<string, unknown>> | null): object | EmitEntity<Record<string, unknown>>; circularReference(target: EmitEntity<Record<string, any>>, scope: Scope<Record<string, any>> | undefined, cycle: ReferenceCycle): Record<string, any> | EmitEntity<Record<string, any>>; scalarDeclaration(scalar: Scalar, name: string): EmitterOutput<Schema>; scalarInstantiation(scalar: Scalar, name: string | undefined): EmitterOutput<Record<string, any>>; tupleLiteral(tuple: Tuple): EmitterOutput<Record<string, any>>; getSchemaForStdScalars(scalar: Scalar & { name: IntrinsicScalarName; }): Schema; applyCustomConstraints(type: Scalar | Model | ModelProperty | Union | Enum, target: Schema, refSchema?: Schema): void; applyConstraints(type: Scalar | Model | ModelProperty | Union | Enum, original: Schema, refSchema?: Schema): ObjectBuilder<Schema>; applyXml(type: Scalar | Model | ModelProperty | Union | Enum, schema: Schema, refSchema?: Schema): void; applyEncoding(typespecType: Scalar | ModelProperty, target: Schema | Placeholder<Schema>): Schema; programContext(program: Program): Context; } export declare const Builders: { readonly array: <T>(items: T[]) => ArrayBuilder<T>; readonly object: <T extends Record<string, unknown>>(obj: T) => ObjectBuilder<T[string]>; }; //# sourceMappingURL=schema-emitter.d.ts.map