UNPKG

openapi-metadata

Version:

Auto-Generate OpenAPI specifications from Typescript decorators

94 lines (80 loc) 3.51 kB
'use strict'; const deepmerge = require('deepmerge'); function _interopDefaultCompat (e) { return e && typeof e === 'object' && 'default' in e ? e.default : e; } const deepmerge__default = /*#__PURE__*/_interopDefaultCompat(deepmerge); function createMetadataStorage(key, defaultMetadata) { function defineMetadata(object, metadata, propertyKey) { if (propertyKey) { Reflect.defineMetadata(key, metadata, object, propertyKey); } else { Reflect.defineMetadata(key, metadata, object); } } function getMetadata(object, propertyKey, withParent = false) { if (propertyKey) { let metadata = Reflect.getMetadata(key, object, propertyKey) ?? defaultMetadata; if (withParent) { metadata = deepmerge__default(getMetadata(object.constructor), metadata); } return metadata; } else { return Reflect.getMetadata(key, object) ?? defaultMetadata; } } function mergeMetadata(object, metadata, propertyKey) { const existing = getMetadata(object, propertyKey); const merged = deepmerge__default(existing, metadata); defineMetadata(object, merged, propertyKey); return merged; } return { defineMetadata, getMetadata, mergeMetadata }; } const OperationBodyMetadataKey = Symbol("OperationBody"); const OperationBodyMetadataStorage = createMetadataStorage(OperationBodyMetadataKey); const PropertyMetadataKey = Symbol("Property"); const PropertyMetadataStorage = createMetadataStorage(PropertyMetadataKey); const OperationParameterMetadataKey = Symbol("OperationParameter"); const OperationParameterMetadataStorage = createMetadataStorage( OperationParameterMetadataKey, [] ); const OperationResponseMetadataKey = Symbol("OperationResponse"); const OperationResponseMetadataStorage = createMetadataStorage( OperationResponseMetadataKey, {} ); const OperationSecurityMetadataKey = Symbol("OperationSecurity"); const OperationSecurityMetadataStorage = createMetadataStorage( OperationSecurityMetadataKey, {} ); const OperationMetadataKey = Symbol("Operation"); const OperationMetadataStorage = createMetadataStorage(OperationMetadataKey, {}); const ExcludeMetadataKey = Symbol("Exclude"); const ExcludeMetadataStorage = createMetadataStorage(ExcludeMetadataKey, false); const ExtraModelsMetadataKey = Symbol("ExtraModels"); const ExtraModelsMetadataStorage = createMetadataStorage( ExtraModelsMetadataKey, [] ); exports.ExcludeMetadataKey = ExcludeMetadataKey; exports.ExcludeMetadataStorage = ExcludeMetadataStorage; exports.ExtraModelsMetadataKey = ExtraModelsMetadataKey; exports.ExtraModelsMetadataStorage = ExtraModelsMetadataStorage; exports.OperationBodyMetadataKey = OperationBodyMetadataKey; exports.OperationBodyMetadataStorage = OperationBodyMetadataStorage; exports.OperationMetadataKey = OperationMetadataKey; exports.OperationMetadataStorage = OperationMetadataStorage; exports.OperationParameterMetadataKey = OperationParameterMetadataKey; exports.OperationParameterMetadataStorage = OperationParameterMetadataStorage; exports.OperationResponseMetadataKey = OperationResponseMetadataKey; exports.OperationResponseMetadataStorage = OperationResponseMetadataStorage; exports.OperationSecurityMetadataKey = OperationSecurityMetadataKey; exports.OperationSecurityMetadataStorage = OperationSecurityMetadataStorage; exports.PropertyMetadataKey = PropertyMetadataKey; exports.PropertyMetadataStorage = PropertyMetadataStorage; exports.createMetadataStorage = createMetadataStorage;