UNPKG

@himenon/openapi-typescript-code-generator

Version:
1 lines 12.5 kB
{"version":3,"sources":["../src/types.ts","../src/typedef/CodeGenerator.ts","../src/typedef/OpenApi.ts","../src/typedef/OpenApiSchemaParser.ts","../src/typedef/Validator.ts"],"sourcesContent":["export * as CodeGenerator from \"./typedef/CodeGenerator\";\nexport * as OpenApi from \"./typedef/OpenApi\";\nexport * as OpenApiSchemaParser from \"./typedef/OpenApiSchemaParser\";\nexport * as Validator from \"./typedef/Validator\";\n","import type ts from \"typescript\";\n\nimport type * as OpenApi from \"./OpenApi\";\n\nexport type PickedParameter = Pick<OpenApi.Parameter, \"name\" | \"in\" | \"required\" | \"style\" | \"explode\">;\n\nexport interface OpenApiResponses {\n [statusCode: string]: OpenApi.Response;\n}\n\nexport interface OpenApiOperation {\n httpMethod: string;\n requestUri: string;\n comment: string | undefined;\n deprecated: boolean;\n requestBody?: OpenApi.RequestBody;\n parameters?: OpenApi.Parameter[];\n responses: OpenApiResponses;\n}\n\nexport interface ConvertedParams {\n escapedOperationId: string;\n argumentParamsTypeDeclaration: string;\n functionName: string;\n requestContentTypeName: string;\n responseContentTypeName: string;\n parameterName: string;\n pickedParameters: PickedParameter[];\n requestBodyName: string; // `RequestBody$${operationId}`\n // Request Content Types\n requestContentTypes: string[];\n requestFirstContentType: string | undefined; // requestContentTypes.length === 1 only\n has2OrMoreRequestContentTypes: boolean; // requestContentTypes.length > 1\n // Response Error Response Name\n responseErrorNames: string[];\n // Response Success Name\n responseSuccessNames: string[]; // `Response$${operationId}$Status$${statusCode}`[]\n responseFirstSuccessName: string | undefined; // responseSuccessNames.length === 1 only\n has2OrMoreSuccessNames: boolean; // responseSuccessNames.length > 1\n successResponseContentTypes: string[]; // response.content[statusCode][contentType] ( 200 <= statusCode < 300 )\n successResponseFirstContentType: string | undefined; // successResponseContentTypes.length === 1\n has2OrMoreSuccessResponseContentTypes: boolean; // successResponseContentTypes.length > 1\n hasAdditionalHeaders: boolean; // has2OrMoreRequestContentTypes || has2OrMoreSuccessResponseContentTypes\n hasQueryParameters: boolean; // parameters.in === \"query\" && parameters.length > 0\n // Arguments\n hasParameter: boolean;\n hasRequestBody: boolean;\n}\n\nexport interface Params {\n operationId: string;\n convertedParams: ConvertedParams;\n operationParams: OpenApiOperation;\n}\n\n/**\n * Used to further transform the code created by the specified Generator Template.\n */\nexport type IntermediateCode = string | ts.Statement;\n\nexport type GenerateFunction<Option = {}> = (payload: Params[], option?: Option) => IntermediateCode[];\n\nexport interface OutputConfiguration {\n /**\n *\n */\n transform?: (params: IntermediateCode) => IntermediateCode[];\n}\n\nexport interface CustomGenerator<T> {\n generator: GenerateFunction<T>;\n option?: T;\n}\n","import type { JSONSchema7, JSONSchema7Type as JSONSchemaType, JSONSchema7TypeName } from \"json-schema\";\n\nexport type JSONSchemaTypeName = JSONSchema7TypeName;\n\nexport interface JSONSchema extends JSONSchema7 {\n nullable?: boolean;\n}\n\nexport type JSONSchemaDefinition = JSONSchema | boolean; // JSONSchema7Definition\n\nexport { JSONSchemaType };\n\n/**\n * @see https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.1.0.md#serverVariableObject\n */\nexport interface ServerVariable {\n enum: string[];\n default?: string; // TODO change enum\n description?: string;\n}\n\n/**\n * @see https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.1.0.md#serverObject\n */\nexport interface Server {\n url: string;\n description?: string;\n variables?: Record<string, ServerVariable>;\n}\n\n/**\n * @see https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.1.0.md#referenceObject\n */\nexport interface Reference {\n $ref: string;\n summary?: string;\n description?: string;\n}\n\n/**\n * @see https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.1.0.md#licenseObject\n */\nexport interface License {\n name: string;\n identifier?: string;\n url?: string;\n}\n\n/**\n * @see https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.1.0.md#contactObject\n */\nexport interface Contact {\n name?: string;\n url?: string;\n email?: string;\n}\n\n/**\n * @see https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.1.0.md#externalDocumentationObject\n */\nexport interface ExternalDocumentation {\n url: string;\n description?: string;\n}\n\n/**\n * @see https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.1.0.md#exampleObject\n */\nexport interface Example {\n summary?: string;\n description?: string;\n value?: any;\n externalValue?: string;\n}\n\n/**\n * @see https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.1.0.md#parameterObject\n */\nexport interface Parameter {\n // Fixed Fields\n name: string;\n in: \"path\" | \"query\" | \"header\" | \"cookie\";\n description?: string;\n required: boolean;\n deprecated?: boolean;\n allowEmptyValue?: boolean;\n\n style?: \"matrix\" | \"label\" | \"form\" | \"simple\" | \"spaceDelimited\" | \"pipeDelimited\" | \"deepObject\";\n explode?: boolean;\n allowReserved?: boolean;\n schema?: Schema;\n example?: any;\n examples?: Record<string, Example | Reference>;\n\n content?: Record<string, MediaType>;\n}\n\n/**\n * @see https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.1.0.md#headerObject\n */\nexport type Header = Omit<Parameter, \"name\" | \"in\">;\n\n/**\n * @see https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.1.0.md#encodingObject\n */\nexport interface Encoding {\n contentType?: string;\n headers?: Record<string, Header | Reference>;\n style?: string;\n explode?: boolean;\n allowReserved?: boolean;\n}\n\n/**\n * @see https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.1.0.md#mediaTypeObject\n */\nexport interface MediaType {\n schema?: Schema;\n example?: any;\n examples?: Record<string, Example | Reference>;\n encoding?: Record<string, Encoding>;\n}\n\n/**\n * @see https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.1.0.md#requestBodyObject\n */\nexport interface RequestBody {\n description?: string;\n content: Record<string, MediaType>;\n required: boolean; // default: false\n}\n\n/**\n * @see https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.1.0.md#responseObject\n */\nexport interface Response {\n description: string;\n headers?: Record<string, Header | Reference>;\n content?: Record<string, MediaType>;\n links?: Record<string, Link | Reference>;\n}\n\n/**\n * @see https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.1.0.md#responsesObject\n */\nexport interface Responses {\n default: Response | Reference;\n [statusCode: string]: Response | Reference;\n}\n\n/**\n * @see https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.1.0.md#callbackObject\n */\nexport interface Callback {\n [expression: string]: PathItem | Reference;\n}\n\n/**\n * @see https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.1.0.md#oauthFlowObject\n */\nexport interface OauthFlow {\n authorizationUrl: string;\n tokenUrl: string;\n refreshUrl?: string;\n scopes: Record<string, string>;\n}\n\n/**\n * @see https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.1.0.md#oauthFlowsObject\n */\nexport interface OAuthFlows {\n implicit?: OauthFlow;\n password?: OauthFlow;\n clientCredentials?: OauthFlow;\n authorizationCode?: OauthFlow;\n}\n\n/**\n * @see https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.1.0.md#securitySchemeObject\n */\nexport interface SecuritySchema {\n type: \"apiKey\" | \"http\" | \"mutualTLS\" | \"oauth2\" | \"openIdConnect\";\n description?: string;\n name: string;\n in: \"query\" | \"header\" | \"cookie\";\n scheme: string;\n bearerFormat?: string;\n flows: OAuthFlows;\n openIdConnectUrl: string;\n}\n\n/**\n * @see https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.1.0.md#securityRequirementObject\n */\nexport interface SecurityRequirement {\n [name: string]: string[];\n}\n\n/**\n * @see https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.1.0.md#discriminatorObject\n */\nexport interface Discriminator {\n propertyName: string;\n mapping: Record<string, string>;\n}\n\n/**\n * @see https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.1.0.md#discriminatorObject\n */\nexport interface XML {\n name?: string;\n namespace?: string;\n prefix?: string;\n attribute?: boolean;\n wrapped?: boolean;\n}\n\n/**\n * @see https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.1.0.md#schemaObject\n */\nexport interface Schema extends JSONSchema {\n discriminator?: Discriminator;\n xml?: XML;\n externalDocs?: ExternalDocumentation;\n example?: any;\n}\n\n/**\n * @see https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.1.0.md#linkObject\n */\nexport interface Link {\n operationRef?: string;\n operationId?: string;\n parameters?: Record<string, any | string>;\n requestBody?: Record<string, any | string>;\n description: string;\n server?: Server;\n}\n\n/**\n * @see https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.1.0.md#operationObject\n */\nexport interface Operation {\n tags?: string[];\n summary?: string;\n description?: string;\n externalDocs?: ExternalDocumentation;\n operationId?: string;\n parameters?: (Parameter | Reference)[];\n requestBody?: RequestBody | Reference;\n responses?: Responses;\n callbacks?: Record<string, Callback | Reference>;\n deprecated?: boolean;\n security?: SecurityRequirement[];\n servers?: Server[];\n}\n\n/**\n * @see https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.1.0.md#pathItemObject\n */\nexport interface PathItem {\n $ref?: string;\n summary?: string;\n description?: string;\n get?: Operation;\n put?: Operation;\n post?: Operation;\n delete?: Operation;\n options?: Operation;\n head?: Operation;\n patch?: Operation;\n trace?: Operation;\n servers?: Server[];\n parameters?: (Parameter | Reference)[];\n}\n\n/**\n * @see https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.1.0.md#infoObject\n */\nexport interface Info {\n title: string;\n summary: string;\n description: string;\n termsOfService: string;\n contact?: Contact;\n license?: License;\n version: string;\n}\n\n/**\n * @see https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.1.0.md#pathsObject\n */\nexport interface Paths {\n [path: string]: PathItem;\n}\n\n/**\n * @see https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.1.0.md#componentsObject\n */\nexport interface Components {\n schemas?: Record<string, Schema | Reference>;\n responses?: Record<string, Response | Reference>;\n parameters?: Record<string, Parameter | Reference>;\n examples?: Record<string, Example | Reference>;\n requestBodies?: Record<string, RequestBody | Reference>;\n headers?: Record<string, Header | Reference>;\n securitySchemes?: Record<string, SecuritySchema | Reference>;\n links?: Record<string, Link | Reference>;\n callbacks?: Record<string, Callback>;\n pathItems?: Record<string, PathItem>;\n}\n\n/**\n * @see https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.1.0.md#tagObject\n */\nexport interface Tag {\n name: string;\n description?: string;\n externalDocs?: ExternalDocumentation;\n}\n\n/**\n * @see https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.1.0.md#openapi-object\n */\nexport interface Document {\n openapi: string;\n info: Info;\n servers?: Server[];\n paths?: Paths;\n webhooks?: Record<string, PathItem | Reference>;\n components?: Components;\n security?: SecurityRequirement;\n tags?: Tag[];\n externalDocs?: ExternalDocumentation;\n}\n","export interface Configuration {\n allowOperationIds?: string[];\n}\n","export interface Logger {\n /**\n * default: undefined (all logs)\n * Number of lines displayed in the latest log\n */\n displayLogLines?: number;\n}\nexport interface Option {\n logger?: Logger;\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACAA;;;ACAA;;;ACAA;;;ACAA;","names":[]}