//·························································· // Copyright (c) 2023-2026. Jonathan Bédard ~ JóôòKiwi // // This project is free to use. // All the right is reserved to the author of this project. // My projects: // - https://github.com/joooKiwi/type // - https://github.com/joooKiwi/lazy // - https://github.com/joooKiwi/collection // - https://github.com/joooKiwi/enumeration //·························································· import type {BigIntOrObject, Nullable, NumberOrObject, StringOrObject} from "@joookiwi/type" import type {EnumConstants} from "./EnumConstants" import type {Enumerable} from "./Enumerable" import type {EnumerableConstructor} from "./EnumerableConstructor" import type {EnumerableWithNullableGrandParent} from "./EnumerableWithNullableGrandParent" import type {EnumerableWithNullableGreatGrandParent} from "./EnumerableWithNullableGreatGrandParent" import type {EnumerableWithNullableParent} from "./EnumerableWithNullableParent" import type {EnumerableWithGrandParent} from "./EnumerableWithGrandParent" import type {EnumerableWithGreatGrandParent} from "./EnumerableWithGreatGrandParent" import type {EnumerableWithParent} from "./EnumerableWithParent" import type {EnumWithNullableGrandParent} from "./EnumWithNullableGrandParent" import type {EnumWithNullableGreatGrandParent} from "./EnumWithNullableGreatGrandParent" import type {EnumWithNullableParent} from "./EnumWithNullableParent" import type {EnumWithGrandParent} from "./EnumWithGrandParent" import type {EnumWithGreatGrandParent} from "./EnumWithGreatGrandParent" import type {EnumWithParent} from "./EnumWithParent" /** * The {@link Enumerable} name in a {@link Object.toString toString()} method * * @deprecated Replace with the same type in @joookiwi/enumerable/type/toStringTag" instead. This will be removed in version 3.14. */ export type EnumerableName = typeof EnumConstants["ENUM_TO_STRING_TAG"] /** * A conversion from an {@link Enumerable} to a primitive value ({@link String} or {@link Number}) * * @deprecated Replace with the same type in @joookiwi/enumerable/type/toPrimitive" instead. This will be removed in version 3.14. */ export type EnumerableToPrimitive = | (Lowercase extends "number" ? ENUM["ordinal"] : never) | (Lowercase extends ("string" | "default") ? ENUM["name"] : never) //#region -------------------- Name / ordinal of -------------------- /** * A {@link String} or {@link Enumerable.name} value * * @deprecated Replace with the same type in @joookiwi/enumerable/type/nameOf" instead. This will be removed in version 3.14. */ export type PossibleNameOf = | NAME | NameOf /** * A {@link String} or {@link Enumerable.ordinal} value * * @deprecated Replace with the same type in @joookiwi/enumerable/type/ordinalOf" instead. This will be removed in version 3.14. */ export type PossibleOrdinalOf = | ORDINAL | OrdinalOf /** * A join of both {@link String} and {@link Enumerable.name} * * @deprecated Replace with the same type in @joookiwi/enumerable/type/nameOf" instead. This will be removed in version 3.14. */ export type SpecificNameOf = & NAME & NameOf /** * A join of both {@link Number} and {@link Enumerable.ordinal} * * @deprecated Replace with the same type in @joookiwi/enumerable/type/ordinalOf" instead. This will be removed in version 3.14. */ export type SpecificOrdinalOf = & ORDINAL & OrdinalOf /** * A type to retrieve the {@link Enumerable.name name} of an {@link Enumerable} * with the combinaison of an {@link EnumerableConstructor} keys * and a {@link CompanionEnum} {@link CompanionEnum.instance instance} keys * * @see Enumerable.name * @deprecated Replace with the same type in @joookiwi/enumerable/type/nameOf" instead. This will be removed in version 3.14. */ export type NameOf = ENUM["name"] /** * A type to retrieve the {@link Enumerable.ordinal ordinal} of an {@link Enumerable} * with the combinaison of an {@link EnumerableConstructor} keys * and a {@link CompanionEnum} {@link CompanionEnum.instance instance} keys * * @see Enumerable.ordinal * @deprecated Replace with the same type in @joookiwi/enumerable/type/ordinalOf" instead. This will be removed in version 3.14. */ export type OrdinalOf = ENUM["ordinal"] //#endregion -------------------- Name / ordinal of -------------------- /** * The {@link CompanionEnumDeclaration Companion enum} reference of an {@link EnumerableConstructor} * * @deprecated Replace with the same type in @joookiwi/enumerable/type/companionOf" instead. This will be removed in version 3.14. */ export type CompanionOf, > = ENUM_CONSTRUCTOR["CompanionEnum"]["get"] /** * The possible {@link Enumerable} members by itself * or by an inheritors (in the project) * * @see EnumConstants.EVERY_ENUMERABLE_MEMBERS * * @deprecated Replace with the same type in {@link KeyOfEnumerableWithGreatGrandParent} instead. This will be removed in version 3.14. */ export type PossibleEnumerableMembers = | keyof Enumerable | keyof EnumerableWithNullableParent | keyof EnumerableWithParent | keyof EnumerableWithNullableGrandParent | keyof EnumerableWithGrandParent | keyof EnumerableWithNullableGreatGrandParent | keyof EnumerableWithGreatGrandParent /** * A general {@link Enumerable} type possibility * * @deprecated Replace with the same type in {@link EnumerableOrStringOrNumericOrObject} instead. This will be removed in version 3.14. */ export type PossibleEnumerableValue = | StringOrObject | NumberOrObject | BigIntOrObject | ENUM /** * A strict {@link Enumerable} type possibility * * @deprecated Replace with the same type in {@link StrictEnumerableOrStringOrNumericOrObject} instead. This will be removed in version 3.14. */ export type PossibleEnumerableValueBy = | StringOrObject | NumberOrObject | BigIntOrObject | ENUM /** * Every possible {@link Symbol} passed to a {@link Enum} child * to create a {@link import('@joookiwi/lazy').Lazy Lazy} * * @deprecated Replace with the same type in @joookiwi/enumerable/type/symbol" instead. This will be removed in version 3.14. */ export type PossibleEnumSymbol = typeof EnumConstants[| "ENUM_REFERENCE_BY_ITS_NAME_SYMBOL" | "NULL_ENUM_REFERENCE_SYMBOL"] /** * A type of {@link Enumerable} by its value or its {@link Enumerable.name name} (object or primitive) * via the {@link Nullable} value itself or a callback returning the {@link Nullable} value * * @deprecated Replace with the same type in @joookiwi/enumerable/type/possibleInstance" instead. This will be removed in version 3.14. */ export type PossibleEnumerableValueOrNameByValueOrCallback = Nullable<| T | StringOrObject> | PossibleEnumSymbol | (() => Nullable> | PossibleEnumSymbol>)> //#region -------------------- Enumerable by Enumerable & EnumerableConstructor -------------------- /** @deprecated Replace with {@link ValueBySpecificOrdinal} instead. This will be removed in version 3.14 */ export type ValueByEnumerableConstructorAndEnumerableOrdinalAndOrdinal, ENUM extends Enumerable, ORDINAL extends number, > = ENUM_CONSTRUCTOR[& SpecificOrdinalOf & keyof ENUM_CONSTRUCTOR] /** @deprecated Replace with {@link ValueBySpecificName} instead. This will be removed in version 3.14 */ export type ValueByEnumerableConstructorAndEnumerableNameAndName, ENUM extends Enumerable, NAME extends string, > = ENUM_CONSTRUCTOR[& SpecificNameOf & keyof ENUM_CONSTRUCTOR] /** @deprecated Replace with {@link ValueByOrdinal} instead. This will be removed in version 3.14 */ export type ValueByEnumerableConstructorAndEnumerableOrdinal, ENUM extends Enumerable, > = ENUM_CONSTRUCTOR[& OrdinalOf & keyof ENUM_CONSTRUCTOR] /** @deprecated Replace with {@link ValueByName} instead. This will be removed in version 3.14 */ export type ValueByEnumerableConstructorAndEnumerableName, ENUM extends Enumerable, > = ENUM_CONSTRUCTOR[& NameOf & keyof ENUM_CONSTRUCTOR] /** @deprecated Replace with {@link OrdinalByName} instead. This will be removed in version 3.14 */ export type EnumerableOrdinalByEnumerableConstructorAndEnumerableNameAndName, ENUM extends Enumerable, NAME extends string, > = OrdinalOf<& ENUM_CONSTRUCTOR[& NAME & keyof ENUM_CONSTRUCTOR] & ENUM> /** @deprecated Replace with {@link NameByOrdinal} instead. This will be removed in version 3.14 */ export type EnumerableNameByEnumerableConstructorAndEnumerableOrdinalAndOrdinal, ENUM extends Enumerable, ORDINAL extends number, > = NameOf<& ENUM_CONSTRUCTOR[& ORDINAL & keyof ENUM_CONSTRUCTOR] & ENUM> //#endregion -------------------- Enumerable by Enumerable & EnumerableConstructor -------------------- //#region -------------------- General types -------------------- /** * The generic value of an {@link EnumWithNullableParent} with its default values * * @deprecated Replace with the same type in @joookiwi/enumerable/type/general" instead. This will be removed in version 3.14. */ export type EnumWithNullableParentGeneralType = EnumWithNullableParent /** * The generic value of an {@link EnumWithParent} with its default values * * @deprecated Replace with the same type in @joookiwi/enumerable/type/general" instead. This will be removed in version 3.14. */ export type EnumWithParentGeneralType = EnumWithParent /** * The generic value of an {@link EnumWithNullableGrandParent} with its default values * * @deprecated Replace with the same type in @joookiwi/enumerable/type/general" instead. This will be removed in version 3.14. */ export type EnumWithNullableGrandParentGeneralType = EnumWithNullableGrandParent, Enumerable> /** * The generic value of an {@link EnumWithGrandParent} with its default values * * @deprecated Replace with the same type in @joookiwi/enumerable/type/general" instead. This will be removed in version 3.14. */ export type EnumWithGrandParentGeneralType = EnumWithGrandParent, Enumerable> /** * The generic value of an {@link EnumWithNullableGreatGrandParent} with its default values * * @deprecated Replace with the same type in @joookiwi/enumerable/type/general" instead. This will be removed in version 3.14. */ export type EnumWithNullableGreatGrandParentGeneralType = EnumWithNullableGreatGrandParent, Enumerable>, EnumerableWithNullableParent, Enumerable> /** * The generic value of an {@link EnumWithGreatGrandParent} with its default values * * @deprecated Replace with the same type in @joookiwi/enumerable/type/general" instead. This will be removed in version 3.14. */ export type EnumWithGreatGrandParentGeneralType = EnumWithGreatGrandParent, Enumerable>, EnumerableWithParent, Enumerable> /** * The generic value of an {@link EnumerableWithNullableParent} with its default values * * @deprecated Replace with the same type in @joookiwi/enumerable/type/general" instead. This will be removed in version 3.14. */ export type EnumerableWithNullableParentGeneralType = EnumerableWithNullableParent /** * The generic value of an {@link EnumerableWithParent} with its default values * * @deprecated Replace with the same type in @joookiwi/enumerable/type/general" instead. This will be removed in version 3.14. */ export type EnumerableWithParentGeneralType = EnumerableWithParent /** * The generic value of an {@link EnumerableWithNullableGrandParent} with its default values * * @deprecated Replace with the same type in @joookiwi/enumerable/type/general" instead. This will be removed in version 3.14. */ export type EnumerableWithNullableGrandParentGeneralType = EnumerableWithNullableGrandParent, Enumerable> /** * The generic value of an {@link EnumerableWithGrandParent} with its default values * * @deprecated Replace with the same type in @joookiwi/enumerable/type/general" instead. This will be removed in version 3.14. */ export type EnumerableWithGrandParentGeneralType = EnumerableWithGrandParent, Enumerable> /** The generic value of an {@link EnumerableWithNullableGreatGrandParent} with its default values * * @deprecated Replace with the same type in @joookiwi/enumerable/type/general" instead. This will be removed in version 3.14. */ export type EnumerableWithNullableGreatGrandParentGeneralType = EnumerableWithNullableGreatGrandParent, Enumerable>, EnumerableWithNullableParent, Enumerable> /** * The generic value of an {@link EnumerableWithGreatGrandParent} with its default values * * @deprecated Replace with the same type in @joookiwi/enumerable/type/general" instead. This will be removed in version 3.14. */ export type EnumerableWithGreatGrandParentGeneralType = EnumerableWithGreatGrandParent, Enumerable>, EnumerableWithParent, Enumerable> //#endregion -------------------- General types --------------------