feat: more mixins

This commit is contained in:
2026-06-23 17:04:03 +02:00
parent 3dc22e3f62
commit edd6a68d9d
10 changed files with 771 additions and 62 deletions
+8 -5
View File
@@ -1,18 +1,21 @@
import type { DefaultRegistry, Methods, Registry } from "../registry";
import type { shim } from "./mixin";
export interface Base<T> {
readonly value: T;
}
export type Base<T> = T extends { [shim]: { value: infer U } }
? { readonly value: U }
: {
readonly value: T;
};
export type Fluent<
T,
Reg extends Registry = DefaultRegistry,
> = Base<T> & Methods<T, Reg> & { readonly __registry: Reg };
> = Base<T> & Methods<T, Reg>;
export function makeFluent<const Reg extends Registry>(
registry: Reg,
) {
const fluent = <T>(value: T) => {
const fluent = <const T>(value: T) => {
// eslint-disable-next-line @typescript-eslint/no-unsafe-type-assertion
const f = { value } as never as Fluent<T, Reg>;