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