@halospv3/hce.shared-config
Version:
Automate commit message quality, changelogs, and CI/CD releases. Its `main` entry point is a Semantic Release config. Functions and classes are exposed for customization. An ESLint config, a Commitlint config, and addl. resources for .NET projects are als
28 lines (27 loc) • 1.51 kB
JavaScript
//#region src/utils/reflection/getOwnPropertyDescriptors.ts
/**
* Get the property descriptors of the class or constructor similar to {@link Object.getOwnPropertyDescriptors}, but with more options--including recursion.
* @template {InstanceOrStatic} _InstanceOrStatic 'Instance' or 'Static'. Determines the return type.
* @param classDefinition A class or constructor, cast to {@link ClassLike}.
* @param instanceOrStatic 'Instance' or 'Static'. Determines the return type.
* @template {ClassLike<ConstructorConstraint<Class> & WithProto<SuperClassLike | BaseClassProto>>} Class
* The typeof {@link classDefinition}.
* {@link WithProto}<{@link SuperClassLike}> is necessary for walking the
* prototype chain for both Instance and Static properties.
* If unspecified, the return type may be incorrect.
* @returns ({@link instanceOrStatic} === 'Instance') ? {@link InstancePropertyDescriptorMap<Class>}\
* : ({@link instanceOrStatic} === 'Static') ? {@link OwnPropertyDescriptorMap<Class>}\
* : never
* @throws {TypeError}
* @since 3.0.0
*/
function getOwnPropertyDescriptors(classDefinition, instanceOrStatic) {
switch (instanceOrStatic) {
case "Instance": return Object.getOwnPropertyDescriptors(classDefinition.prototype);
case "Static": return Object.getOwnPropertyDescriptors(classDefinition);
default: throw new TypeError("Argument `instanceOrStatic` must be \"Instance\" or \"Static\".");
}
}
//#endregion
export { getOwnPropertyDescriptors };
//# sourceMappingURL=getOwnPropertyDescriptors.mjs.map