0.1.0 #1

Merged
Thilawyn merged 65 commits from next into master 2024-02-06 03:15:40 +01:00
Showing only changes of commit c6b9bbe9cb - Show all commits

View File

@@ -1,7 +1,7 @@
import { Fn } from "hotscript" import { Fn } from "hotscript"
import { AbstractClass, Class, Opaque } from "type-fest" import { AbstractClass, Class, Opaque } from "type-fest"
import { StaticMembers } from "./util"
import { AbstractTag } from "." import { AbstractTag } from "."
import { StaticMembers } from "./util"
type AddAbstractToImpl< type AddAbstractToImpl<
@@ -97,7 +97,7 @@ export interface TraitInstanceFn extends Fn {
export type TraitApplierSuperTag = "@thilawyn/traitify-ts/TraitApplierSuper" export type TraitApplierSuperTag = "@thilawyn/traitify-ts/TraitApplierSuper"
export type TraitApplier< export type TraitApplier<
Abstract extends object, Abstract extends {},
ImplWithAbstract extends Class<Abstract, []>, ImplWithAbstract extends Class<Abstract, []>,
> = ( > = (
(Super: Opaque<AbstractClass<Abstract>, TraitApplierSuperTag>) => ( (Super: Opaque<AbstractClass<Abstract>, TraitApplierSuperTag>) => (
@@ -109,10 +109,8 @@ export function trait<
Abstract extends {}, Abstract extends {},
ImplWithAbstract extends Class<Abstract, []>, ImplWithAbstract extends Class<Abstract, []>,
>( >(
abstract: Opaque<Abstract, AbstractTag>, abstract: Opaque<Abstract, AbstractTag>,
apply: (Super: Opaque<AbstractClass<Abstract>, TraitApplierSuperTag>) => ( apply: TraitApplier<Abstract, ImplWithAbstract>,
Opaque<ImplWithAbstract, TraitApplierSuperTag>
),
): Trait< ): Trait<
Abstract, Abstract,
RemoveAbstractFromImpl<ImplWithAbstract, Abstract> RemoveAbstractFromImpl<ImplWithAbstract, Abstract>