{"version":3,"file":"server-qOUqr--r.mjs","names":[],"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"],"mappings":";;;;;;;;GAca,IAAb,MAAa,EAA0D;CAGnE,OAAO,iBAAiB,GAAgC;EACpD,OAAO,MAAM,KAAK,CAAa;CACnC;CAEA,aAAa,GAA4B;EACrC,IAAI,CAAC,EAAuB,iBAAiB,CAAa,GACtD,MAAU,MACN,qCAAqC,EAAc,yCACvD;EAKJ,OAHI,KAAK,KACE,KAAK,KAET;CACX;CACA,aAAa,GAAuB,GAAoB;EACpD,IAAI,CAAC,EAAuB,iBAAiB,CAAa,GACtD,MAAU,MACN,qCAAqC,EAAc,yCACvD;EAEJ,KAAK,KAAmC;CAC5C;CACA,iBAA2B;EACvB,IAAM,IAAgB,CAAC;EACvB,KAAK,IAAM,KAAY,MACnB,AAAI,OAAO,UAAU,eAAe,KAAK,MAAM,CAAQ,KAC/C,EAAuB,iBAAiB,CAAQ,KAChD,EAAI,KAAK,CAAQ;EAI7B,OAAO;CACX;AACJ;;;AChCA,SAAgB,EAAa,GAA0C,GAA4B;CAC1F,SAGD,EAAuB,iBAAiB,CAAa,GACrD,OAAO,EAAI;AAGnB;AACA,SAAgB,EACZ,GACA,GACA,GACI;CACJ,AAAI,KAAO,EAAuB,iBAAiB,CAAa,MAC5D,EAAI,KAAmC;AAE/C;;;AChCA,IAAa,IAAb,MAA4C;CAMxC,YAAY,GAAa,GAAe;EAGpC,AAFA,KAAK,MAAM,GACX,KAAK,cAAc,GACnB,KAAK,YAAY,CAAC;CACtB;CACA,YAAY,GAAc,GAAgC;EACtD,KAAK,UAAU,KAAQ;CAC3B;AACJ,GAEa,IAAb,MAA4D;CAMxD,YACI,GACA,GACA,GACF;EAGE,AAFA,KAAK,UAAU,GACf,KAAK,OAAO,GACZ,KAAK,cAAc;CACvB;AACJ"}