UNPKG

@foal/core

Version:

Full-featured Node.js framework, with no complexity

118 lines (117 loc) 4.64 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.ApiInfo = ApiInfo; exports.ApiOperationDescription = ApiOperationDescription; exports.ApiOperationId = ApiOperationId; exports.ApiOperationSummary = ApiOperationSummary; exports.ApiServer = ApiServer; exports.ApiSecurityRequirement = ApiSecurityRequirement; exports.ApiDefineTag = ApiDefineTag; exports.ApiExternalDoc = ApiExternalDoc; exports.ApiOperation = ApiOperation; exports.ApiUseTag = ApiUseTag; exports.ApiParameter = ApiParameter; exports.ApiRequestBody = ApiRequestBody; exports.ApiResponse = ApiResponse; exports.ApiCallback = ApiCallback; exports.ApiDeprecated = ApiDeprecated; exports.ApiDefineSchema = ApiDefineSchema; exports.ApiDefineResponse = ApiDefineResponse; exports.ApiDefineParameter = ApiDefineParameter; exports.ApiDefineExample = ApiDefineExample; exports.ApiDefineRequestBody = ApiDefineRequestBody; exports.ApiDefineHeader = ApiDefineHeader; exports.ApiDefineSecurityScheme = ApiDefineSecurityScheme; exports.ApiDefineLink = ApiDefineLink; exports.ApiDefineCallback = ApiDefineCallback; // 3p require("reflect-metadata"); function AddMetadataItem(metadataKey, item) { return (target, propertyKey) => { // Note that propertyKey can be undefined as it's an optional parameter in getMetadata. let items = Reflect.getMetadata(metadataKey, target, propertyKey) || []; items = [item, ...items]; Reflect.defineMetadata(metadataKey, items, target, propertyKey); }; } function AddMetadataProperty(metadataKey, key, property) { return (target, propertyKey) => { // Note that propertyKey can be undefined as it's an optional parameter in getMetadata. let o = Reflect.getMetadata(metadataKey, target, propertyKey) || {}; o = Object.assign({}, o); o[key] = property; Reflect.defineMetadata(metadataKey, o, target, propertyKey); }; } function ApiInfo(info) { return Reflect.metadata('api:document:info', info); } function ApiOperationDescription(description) { return Reflect.metadata('api:operation:description', description); } function ApiOperationId(operationId) { return Reflect.metadata('api:operation:operationId', operationId); } function ApiOperationSummary(summary) { return Reflect.metadata('api:operation:summary', summary); } function ApiServer(server) { return AddMetadataItem('api:documentOrOperation:servers', server); } function ApiSecurityRequirement(securityRequirement) { return AddMetadataItem('api:documentOrOperation:security', securityRequirement); } function ApiDefineTag(tag) { return AddMetadataItem('api:document:tags', tag); } function ApiExternalDoc(externalDoc) { return Reflect.metadata('api:documentOrOperation:externalDocs', externalDoc); } function ApiOperation(operation) { return Reflect.metadata('api:operation', operation); } function ApiUseTag(tag) { return AddMetadataItem('api:operation:tags', tag); } function ApiParameter(parameter) { return AddMetadataItem('api:operation:parameters', parameter); } function ApiRequestBody(requestBody) { return Reflect.metadata('api:operation:requestBody', requestBody); } function ApiResponse(key, response) { return AddMetadataProperty('api:operation:responses', key.toString(), response); } function ApiCallback(key, callback) { return AddMetadataProperty('api:operation:callbacks', key, callback); } function ApiDeprecated(deprecated = true) { return Reflect.metadata('api:operation:deprecated', deprecated); } function ApiDefineSchema(key, schema) { return AddMetadataProperty('api:components:schemas', key, schema); } function ApiDefineResponse(key, response) { return AddMetadataProperty('api:components:responses', key, response); } function ApiDefineParameter(key, parameter) { return AddMetadataProperty('api:components:parameters', key, parameter); } function ApiDefineExample(key, example) { return AddMetadataProperty('api:components:examples', key, example); } function ApiDefineRequestBody(key, requestBody) { return AddMetadataProperty('api:components:requestBodies', key, requestBody); } function ApiDefineHeader(key, header) { return AddMetadataProperty('api:components:headers', key, header); } function ApiDefineSecurityScheme(key, securityScheme) { return AddMetadataProperty('api:components:securitySchemes', key, securityScheme); } function ApiDefineLink(key, link) { return AddMetadataProperty('api:components:links', key, link); } function ApiDefineCallback(key, callback) { return AddMetadataProperty('api:components:callbacks', key, callback); }