@foal/core
Version:
Full-featured Node.js framework, with no complexity
119 lines (118 loc) • 5.26 kB
JavaScript
Object.defineProperty(exports, "__esModule", { value: true });
exports.ApiDefineCallback = exports.ApiDefineLink = exports.ApiDefineSecurityScheme = exports.ApiDefineHeader = exports.ApiDefineRequestBody = exports.ApiDefineExample = exports.ApiDefineParameter = exports.ApiDefineResponse = exports.ApiDefineSchema = exports.ApiDeprecated = exports.ApiCallback = exports.ApiResponse = exports.ApiRequestBody = exports.ApiParameter = exports.ApiUseTag = exports.ApiOperation = exports.ApiExternalDoc = exports.ApiDefineTag = exports.ApiSecurityRequirement = exports.ApiServer = exports.ApiOperationSummary = exports.ApiOperationId = exports.ApiOperationDescription = exports.ApiInfo = void 0;
// 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);
}
exports.ApiInfo = ApiInfo;
function ApiOperationDescription(description) {
return Reflect.metadata('api:operation:description', description);
}
exports.ApiOperationDescription = ApiOperationDescription;
function ApiOperationId(operationId) {
return Reflect.metadata('api:operation:operationId', operationId);
}
exports.ApiOperationId = ApiOperationId;
function ApiOperationSummary(summary) {
return Reflect.metadata('api:operation:summary', summary);
}
exports.ApiOperationSummary = ApiOperationSummary;
function ApiServer(server) {
return AddMetadataItem('api:documentOrOperation:servers', server);
}
exports.ApiServer = ApiServer;
function ApiSecurityRequirement(securityRequirement) {
return AddMetadataItem('api:documentOrOperation:security', securityRequirement);
}
exports.ApiSecurityRequirement = ApiSecurityRequirement;
function ApiDefineTag(tag) {
return AddMetadataItem('api:document:tags', tag);
}
exports.ApiDefineTag = ApiDefineTag;
function ApiExternalDoc(externalDoc) {
return Reflect.metadata('api:documentOrOperation:externalDocs', externalDoc);
}
exports.ApiExternalDoc = ApiExternalDoc;
function ApiOperation(operation) {
return Reflect.metadata('api:operation', operation);
}
exports.ApiOperation = ApiOperation;
function ApiUseTag(tag) {
return AddMetadataItem('api:operation:tags', tag);
}
exports.ApiUseTag = ApiUseTag;
function ApiParameter(parameter) {
return AddMetadataItem('api:operation:parameters', parameter);
}
exports.ApiParameter = ApiParameter;
function ApiRequestBody(requestBody) {
return Reflect.metadata('api:operation:requestBody', requestBody);
}
exports.ApiRequestBody = ApiRequestBody;
function ApiResponse(key, response) {
return AddMetadataProperty('api:operation:responses', key.toString(), response);
}
exports.ApiResponse = ApiResponse;
function ApiCallback(key, callback) {
return AddMetadataProperty('api:operation:callbacks', key, callback);
}
exports.ApiCallback = ApiCallback;
function ApiDeprecated(deprecated = true) {
return Reflect.metadata('api:operation:deprecated', deprecated);
}
exports.ApiDeprecated = ApiDeprecated;
function ApiDefineSchema(key, schema) {
return AddMetadataProperty('api:components:schemas', key, schema);
}
exports.ApiDefineSchema = ApiDefineSchema;
function ApiDefineResponse(key, response) {
return AddMetadataProperty('api:components:responses', key, response);
}
exports.ApiDefineResponse = ApiDefineResponse;
function ApiDefineParameter(key, parameter) {
return AddMetadataProperty('api:components:parameters', key, parameter);
}
exports.ApiDefineParameter = ApiDefineParameter;
function ApiDefineExample(key, example) {
return AddMetadataProperty('api:components:examples', key, example);
}
exports.ApiDefineExample = ApiDefineExample;
function ApiDefineRequestBody(key, requestBody) {
return AddMetadataProperty('api:components:requestBodies', key, requestBody);
}
exports.ApiDefineRequestBody = ApiDefineRequestBody;
function ApiDefineHeader(key, header) {
return AddMetadataProperty('api:components:headers', key, header);
}
exports.ApiDefineHeader = ApiDefineHeader;
function ApiDefineSecurityScheme(key, securityScheme) {
return AddMetadataProperty('api:components:securitySchemes', key, securityScheme);
}
exports.ApiDefineSecurityScheme = ApiDefineSecurityScheme;
function ApiDefineLink(key, link) {
return AddMetadataProperty('api:components:links', key, link);
}
exports.ApiDefineLink = ApiDefineLink;
function ApiDefineCallback(key, callback) {
return AddMetadataProperty('api:components:callbacks', key, callback);
}
exports.ApiDefineCallback = ApiDefineCallback;
;