UNPKG

openapi3-ts

Version:

TS Model & utils for OpenAPI 3.x specification.

1 lines 5.59 kB
{"version":3,"file":"server-0nRY9GCE.mjs","sources":["../src/model/specification-extension.ts","../src/model/oas-common.ts","../src/model/server.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-explicit-any */\n\n// Support for Specification Extensions\n// as described in\n// https://github.com/OAI/OpenAPI-Specification/blob/3.0.0-rc0/versions/3.0.md#specificationExtensions\n\n// Specification Extensions\n// ^x-\nexport type IExtensionName = `x-${string}`;\nexport type IExtensionType = any;\nexport type ISpecificationExtension = {\n [extensionName: IExtensionName]: IExtensionType;\n};\n\nexport class SpecificationExtension implements ISpecificationExtension {\n [extensionName: IExtensionName]: any;\n\n static isValidExtension(extensionName: string): boolean {\n return /^x-/.test(extensionName);\n }\n\n getExtension(extensionName: string): any {\n if (!SpecificationExtension.isValidExtension(extensionName)) {\n throw new Error(\n `Invalid specification extension: '${extensionName}'. Extensions must start with prefix 'x-`\n );\n }\n if (this[extensionName as IExtensionName]) {\n return this[extensionName as IExtensionName];\n }\n return null;\n }\n addExtension(extensionName: string, payload: any): void {\n if (!SpecificationExtension.isValidExtension(extensionName)) {\n throw new Error(\n `Invalid specification extension: '${extensionName}'. Extensions must start with prefix 'x-`\n );\n }\n this[extensionName as IExtensionName] = payload;\n }\n listExtensions(): string[] {\n const res: string[] = [];\n for (const propName in this) {\n if (Object.prototype.hasOwnProperty.call(this, propName)) {\n if (SpecificationExtension.isValidExtension(propName)) {\n res.push(propName);\n }\n }\n }\n return res;\n }\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\n\nimport {\n IExtensionName,\n ISpecificationExtension,\n SpecificationExtension\n} from './specification-extension';\n\nexport interface ServerObject extends ISpecificationExtension {\n url: string;\n description?: string;\n variables?: { [v: string]: ServerVariableObject };\n}\nexport interface ServerVariableObject extends ISpecificationExtension {\n enum?: string[] | boolean[] | number[];\n default: string | boolean | number;\n description?: string;\n}\n\nexport function getExtension(obj: ISpecificationExtension | undefined, extensionName: string): any {\n if (!obj) {\n return undefined;\n }\n if (SpecificationExtension.isValidExtension(extensionName)) {\n return obj[extensionName as IExtensionName];\n }\n return undefined;\n}\nexport function addExtension(\n obj: ISpecificationExtension | undefined,\n extensionName: string,\n extension: any\n): void {\n if (obj && SpecificationExtension.isValidExtension(extensionName)) {\n obj[extensionName as IExtensionName] = extension;\n }\n}\n","import { ServerObject, ServerVariableObject } from './oas-common';\nimport { IExtensionName, IExtensionType } from './specification-extension';\n\n// Server & Server Variable\nexport class Server implements ServerObject {\n url: string;\n description?: string;\n variables: { [v: string]: ServerVariable };\n [k: IExtensionName]: IExtensionType;\n\n constructor(url: string, desc?: string) {\n this.url = url;\n this.description = desc;\n this.variables = {};\n }\n addVariable(name: string, variable: ServerVariable): void {\n this.variables[name] = variable;\n }\n}\n\nexport class ServerVariable implements ServerVariableObject {\n enum?: string[] | boolean[] | number[];\n default: string | boolean | number;\n description?: string;\n [k: IExtensionName]: IExtensionType;\n\n constructor(\n defaultValue: string | boolean | number,\n enums?: string[] | boolean[] | number[],\n description?: string\n ) {\n this.default = defaultValue;\n this.enum = enums;\n this.description = description;\n }\n}\n"],"names":["SpecificationExtension","extensionName","payload","res","propName","getExtension","obj","addExtension","extension","Server","url","desc","name","variable","ServerVariable","defaultValue","enums","description"],"mappings":"AAcO,MAAMA,EAA0D;AAAA,EAGnE,OAAO,iBAAiBC,GAAgC;AAC7C,WAAA,MAAM,KAAKA,CAAa;AAAA,EACnC;AAAA,EAEA,aAAaA,GAA4B;AACrC,QAAI,CAACD,EAAuB,iBAAiBC,CAAa;AACtD,YAAM,IAAI;AAAA,QACN,qCAAqCA,CAAa;AAAA,MAAA;AAGtD,WAAA,KAAKA,CAA+B,IAC7B,KAAKA,CAA+B,IAExC;AAAA,EACX;AAAA,EACA,aAAaA,GAAuBC,GAAoB;AACpD,QAAI,CAACF,EAAuB,iBAAiBC,CAAa;AACtD,YAAM,IAAI;AAAA,QACN,qCAAqCA,CAAa;AAAA,MAAA;AAG1D,SAAKA,CAA+B,IAAIC;AAAA,EAC5C;AAAA,EACA,iBAA2B;AACvB,UAAMC,IAAgB,CAAA;AACtB,eAAWC,KAAY;AACnB,MAAI,OAAO,UAAU,eAAe,KAAK,MAAMA,CAAQ,KAC/CJ,EAAuB,iBAAiBI,CAAQ,KAChDD,EAAI,KAAKC,CAAQ;AAItB,WAAAD;AAAA,EACX;AACJ;AChCgB,SAAAE,EAAaC,GAA0CL,GAA4B;AAC/F,MAAKK,KAGDN,EAAuB,iBAAiBC,CAAa;AACrD,WAAOK,EAAIL,CAA+B;AAGlD;AACgB,SAAAM,EACZD,GACAL,GACAO,GACI;AACJ,EAAIF,KAAON,EAAuB,iBAAiBC,CAAa,MAC5DK,EAAIL,CAA+B,IAAIO;AAE/C;AChCO,MAAMC,EAA+B;AAAA,EAMxC,YAAYC,GAAaC,GAAe;AACpC,SAAK,MAAMD,GACX,KAAK,cAAcC,GACnB,KAAK,YAAY;EACrB;AAAA,EACA,YAAYC,GAAcC,GAAgC;AACjD,SAAA,UAAUD,CAAI,IAAIC;AAAA,EAC3B;AACJ;AAEO,MAAMC,EAA+C;AAAA,EAMxD,YACIC,GACAC,GACAC,GACF;AACE,SAAK,UAAUF,GACf,KAAK,OAAOC,GACZ,KAAK,cAAcC;AAAA,EACvB;AACJ;"}