UNPKG

openapi-metadata

Version:

Auto-Generate OpenAPI specifications from Typescript decorators

37 lines (34 loc) 1.09 kB
import deepmerge from '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(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(existing, metadata); defineMetadata(object, merged, propertyKey); return merged; } return { defineMetadata, getMetadata, mergeMetadata }; } export { createMetadataStorage }; //# sourceMappingURL=factory.mjs.map