openapi-metadata
Version:
Auto-Generate OpenAPI specifications from Typescript decorators
43 lines (37 loc) • 1.33 kB
JavaScript
;
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
};
}
exports.createMetadataStorage = createMetadataStorage;
//# sourceMappingURL=factory.cjs.map