@multiplatform.one/typegraphql
Version:
typegraphql for multiplatform.one
36 lines (33 loc) • 1.15 kB
JavaScript
import {
__name
} from "./chunk-SHUYVCID.js";
// src/decorators/decorateAll.ts
function DecorateAll(decorator, options = {}) {
return (target, propertyKey, descriptor) => {
if (propertyKey && descriptor) return decorator(target, propertyKey, descriptor);
let descriptors = Object.getOwnPropertyDescriptors(target.prototype);
if (options.deep) {
let base = Object.getPrototypeOf(target);
while (base.prototype) {
const baseDescriptors = Object.getOwnPropertyDescriptors(base.prototype);
descriptors = {
...baseDescriptors,
...descriptors
};
base = Object.getPrototypeOf(base);
}
}
for (const [propName, descriptor2] of Object.entries(descriptors)) {
const isMethod = typeof descriptor2.value === "function" && propName !== "constructor";
if (options.exclude?.includes(propName)) continue;
if (!isMethod) continue;
decorator(target.prototype, propName, descriptor2);
Object.defineProperty(target.prototype, propName, descriptor2);
}
return target;
};
}
__name(DecorateAll, "DecorateAll");
export {
DecorateAll
};