feat: progress

This commit is contained in:
2026-06-26 04:21:49 +02:00
parent d1a1fbf85a
commit a9925ac2ec
33 changed files with 4608 additions and 811 deletions
+15 -2
View File
@@ -10,14 +10,27 @@ export type Base<T> = T extends { [shim]: { value: infer U } }
export type Fluent<
T,
Reg extends Registry = DefaultRegistry,
> = Base<T> & Methods<T, Reg>;
> = Base<T> & Methods<T, Reg> extends infer U
? U &
Pick<
{
/**
* Immediate casts and conversions to other types.
*/
to: unknown;
[K: PropertyKey]: unknown;
},
keyof U
>
: never;
export function makeFluent<const Reg extends Registry>(
registry: Reg,
) {
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>;
const f = { value } as unknown as Fluent<T, Reg>;
for (const mixin of registry) {
// eslint-disable-next-line @typescript-eslint/no-unsafe-type-assertion