UNPKG

@nestjs/swagger

Version:

Nest - modern, fast, powerful node.js web framework (@swagger)

88 lines (87 loc) 2.78 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const lodash_1 = require("lodash"); const document_base_1 = require("./fixtures/document.base"); class DocumentBuilder { constructor() { this.document = document_base_1.buildDocumentBase(); } setTitle(title) { this.document.info.title = title; return this; } setDescription(description) { this.document.info.description = description; return this; } setVersion(version) { this.document.info.version = version; return this; } setTermsOfService(termsOfService) { this.document.info.termsOfService = termsOfService; return this; } setContact(name, url, email) { this.document.info.contact = { name, url, email }; return this; } setLicense(name, url) { this.document.info.license = { name, url }; return this; } addServer(url, description, variables) { this.document.servers.push({ url, description, variables }); return this; } setExternalDoc(description, url) { this.document.externalDocs = { description, url }; return this; } addTag(name, description = '', externalDocs) { this.document.tags = this.document.tags.concat(lodash_1.pickBy({ name, description, externalDocs }, lodash_1.negate(lodash_1.isUndefined))); return this; } addSecurity(name, options) { this.document.components.securitySchemes = Object.assign(Object.assign({}, (this.document.components.securitySchemes || {})), { [name]: options }); return this; } addSecurityRequirements(name, requirements = []) { this.document.security = (this.document.security || []).concat({ [name]: requirements }); return this; } addBearerAuth(options = { type: 'http' }, name = 'bearer') { this.addSecurity(name, Object.assign({ scheme: 'bearer', bearerFormat: 'JWT' }, options)); return this; } addOAuth2(options = { type: 'oauth2' }, name = 'oauth2') { this.addSecurity(name, Object.assign({ type: 'oauth2', flows: {} }, options)); return this; } addApiKey(options = { type: 'apiKey' }, name = 'api_key') { this.addSecurity(name, Object.assign({ type: 'apiKey', in: 'header', name }, options)); return this; } addBasicAuth(options = { type: 'http' }, name = 'basic') { this.addSecurity(name, Object.assign({ type: 'http', scheme: 'basic' }, options)); return this; } build() { return this.document; } } exports.DocumentBuilder = DocumentBuilder;