{"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;AACpD,WAAO,MAAM,KAAKA,CAAa;AAAA,EAAA;AAAA,EAGnC,aAAaA,GAA4B;AACrC,QAAI,CAACD,EAAuB,iBAAiBC,CAAa;AACtD,YAAM,IAAI;AAAA,QACN,qCAAqCA,CAAa;AAAA,MAAA;AAG1D,WAAI,KAAKA,CAA+B,IAC7B,KAAKA,CAA+B,IAExC;AAAA,EAAA;AAAA,EAEX,aAAaA,GAAuBC,GAAoB;AACpD,QAAI,CAACF,EAAuB,iBAAiBC,CAAa;AACtD,YAAM,IAAI;AAAA,QACN,qCAAqCA,CAAa;AAAA,MAAA;AAG1D,SAAKA,CAA+B,IAAIC;AAAA,EAAA;AAAA,EAE5C,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;AAI7B,WAAOD;AAAA,EAAA;AAEf;AChCO,SAASE,EAAaC,GAA0CL,GAA4B;AAC/F,MAAKK,KAGDN,EAAuB,iBAAiBC,CAAa;AACrD,WAAOK,EAAIL,CAA+B;AAGlD;AACO,SAASM,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,CAAA;AAAA,EAAC;AAAA,EAEtB,YAAYC,GAAcC,GAAgC;AACtD,SAAK,UAAUD,CAAI,IAAIC;AAAA,EAAA;AAE/B;AAEO,MAAMC,EAA+C;AAAA,EAMxD,YACIC,GACAC,GACAC,GACF;AACE,SAAK,UAAUF,GACf,KAAK,OAAOC,GACZ,KAAK,cAAcC;AAAA,EAAA;AAE3B;"}