Fix
All checks were successful
continuous-integration/drone/push Build is passing

This commit is contained in:
Julien Valverdé
2024-02-15 18:11:40 +01:00
parent bc4b1b6492
commit ceba99326d
3 changed files with 24 additions and 12 deletions

View File

@@ -1,7 +1,8 @@
import { Pipe, Tuples } from "hotscript"
import { AbstractClass, Class } from "type-fest" import { AbstractClass, Class } from "type-fest"
import { Trait } from "./Trait" import { Trait } from "./Trait"
import { Implements, ImplementsStatic, TraitExpression } from "./TraitExpression" import { TraitExpression } from "./TraitExpression"
import { StaticMembers } from "./util" import { ExtendFn, SimplifyFn, StaticMembers } from "./util"
export type TraitApplierSuperTag = "@thilawyn/traitify-ts/Super" export type TraitApplierSuperTag = "@thilawyn/traitify-ts/Super"
@@ -49,7 +50,17 @@ export class TraitBuilder<
} }
extendAbstract<A extends Abstract>( extendAbstract<A extends Abstract>(
_: (Super: AbstractClass<Implements<SuperExpression> & Abstract>) => AbstractClass<A, []> _: (
Super: AbstractClass<
Pipe<SuperExpression, [
TraitExpression.TraitsFn,
Tuples.Map<Trait.OwnAbstractFn>,
Tuples.Append<Abstract>,
ExtendFn,
SimplifyFn,
]>
>
) => AbstractClass<A, []>
) { ) {
return new TraitBuilder( return new TraitBuilder(
this.traitSuperExpression, this.traitSuperExpression,
@@ -69,7 +80,15 @@ export class TraitBuilder<
} }
extendStaticAbstract<A extends StaticAbstract>( extendStaticAbstract<A extends StaticAbstract>(
_: (Super: AbstractClass<ImplementsStatic<SuperExpression> & StaticAbstract>) => AbstractClass<A, []> _: (Super: AbstractClass<
Pipe<SuperExpression, [
TraitExpression.TraitsFn,
Tuples.Map<Trait.OwnStaticAbstractFn>,
Tuples.Append<StaticAbstract>,
ExtendFn,
SimplifyFn,
]>
>) => AbstractClass<A, []>
) { ) {
return new TraitBuilder( return new TraitBuilder(
this.traitSuperExpression, this.traitSuperExpression,

View File

@@ -5,13 +5,6 @@ import { TraitBuilder } from "./TraitBuilder"
import { ExtendFn, SimplifyFn, StaticMembersFn } from "./util" import { ExtendFn, SimplifyFn, StaticMembersFn } from "./util"
// type RemoveSupertraitsAbstractFromAbstract<Left, Right> = {
// [Key in Extract<keyof Left, keyof Right>]: Left[Key]
// } & {
// [Key in Exclude<keyof Left, keyof Right>]: Left[Key]
// }
export class TraitExpression< export class TraitExpression<
Superclass extends AbstractClass<object>, Superclass extends AbstractClass<object>,
const Traits extends Trait<any, any, any, any>[], const Traits extends Trait<any, any, any, any>[],

View File

@@ -62,7 +62,7 @@ type ActiveStatefulSubscriptionClass = Trait.Class<typeof ActiveStatefulSubscrip
class TestSuperclass { class TestSuperclass {
// id: number = 69 // id: number = 69
// static test = 69 static test = 69
} }
const exp = expression const exp = expression