@foal/core
Version:
Full-featured Node.js framework, with no complexity
118 lines (117 loc) • 4.64 kB
JavaScript
;
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);
}