UNPKG

1.49 kBJavaScriptView Raw
1"use strict";
2Object.defineProperty(exports, "__esModule", { value: true });
3exports.ApiHeaders = exports.ApiHeader = void 0;
4const lodash_1 = require("lodash");
5const constants_1 = require("../constants");
6const enum_utils_1 = require("../utils/enum.utils");
7const helpers_1 = require("./helpers");
8const defaultHeaderOptions = {
9 name: ''
10};
11function ApiHeader(options) {
12 const param = lodash_1.pickBy({
13 name: lodash_1.isNil(options.name) ? defaultHeaderOptions.name : options.name,
14 in: 'header',
15 description: options.description,
16 required: options.required,
17 schema: Object.assign(Object.assign({}, (options.schema || {})), { type: 'string' })
18 }, lodash_1.negate(lodash_1.isUndefined));
19 if (options.enum) {
20 const enumValues = enum_utils_1.getEnumValues(options.enum);
21 param.schema = {
22 enum: enumValues,
23 type: enum_utils_1.getEnumType(enumValues)
24 };
25 }
26 return (target, key, descriptor) => {
27 if (descriptor) {
28 return helpers_1.createParamDecorator(param, defaultHeaderOptions)(target, key, descriptor);
29 }
30 return helpers_1.createClassDecorator(constants_1.DECORATORS.API_HEADERS, [param])(target);
31 };
32}
33exports.ApiHeader = ApiHeader;
34const ApiHeaders = (headers) => {
35 return (target, key, descriptor) => {
36 headers.forEach((options) => ApiHeader(options)(target, key, descriptor));
37 };
38};
39exports.ApiHeaders = ApiHeaders;