Press n or j to go to the next uncovered block, b, p or k for the previous block.
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | 3x | import { Mixin, type Instansiate } from "./base/mixin";
import { Array } from "./mixin/array";
import { AsyncMixin as Async } from "./mixin/awaited";
import { Base } from "./mixin/base";
import { Math } from "./mixin/math";
import { Optional } from "./mixin/optional";
export type Registry = readonly Mixin[];
export const DEFAULT_REGISTRY = [
Async,
Array,
Base,
Optional,
Math,
] as const satisfies Registry;
export type DefaultRegistry = typeof DEFAULT_REGISTRY;
export type Methods<
T,
Reg extends Registry,
TReg extends Registry = Reg,
TOut extends Record<PropertyKey, unknown> = Record<never, never>,
> = TReg extends readonly [
infer M extends Mixin,
...infer Rest extends Registry,
]
? Methods<T, Reg, Rest, TOut & Instansiate<M, T, Reg>>
: TOut;
|