@halospv3/hce.shared-config
Version:
Automate commit message quality, changelogs, and CI/CD releases. Exports a semantic-release shareable configuration deserialized from this package's '.releaserc.yml'. Shared resources for .NET projects are also distributed with this package.
21 lines (19 loc) • 1.08 kB
TypeScript
import type { BaseClassProto, ConstructorLike, InstanceTypeOrSelf, ProtoOrSuperClass, SuperClassLike, WithProto } from './inheritance.ts';
import type { InstancePropertyDescriptorMap } from './InstancePropertyDescriptorMap.ts';
import type { PropertyDescriptorMap } from './PropertyDescriptorMap.ts';
/**
* Variant of {@link InstancePropertyDescriptorMap} with a lesser constraint on {@link T}.
* If {@link T} and/or {@link __proto__} are instantiable, the resulting
* property descriptor maps will be of the instances' types.
* @template T `null` or an `object`-like type.
* @template __proto__ The `[[Prototype]]` of {@link T}.
* @since 3.0.0
*/
export type InstanceTypeOrSelfPropertyDescriptorMap<
T extends object | null,
__proto__ extends ProtoOrSuperClass,
> = T extends ConstructorLike<T>
? __proto__ extends SuperClassLike | BaseClassProto
? InstancePropertyDescriptorMap<T & WithProto<__proto__>>
: PropertyDescriptorMap<InstanceType<T>, InstanceTypeOrSelf<__proto__>>
: PropertyDescriptorMap<InstanceTypeOrSelf<T>, InstanceTypeOrSelf<__proto__>>;