openapi-metadata
Version:
Auto-Generate OpenAPI specifications from Typescript decorators
37 lines (34 loc) • 1.09 kB
JavaScript
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