ExtendPlain -> Extend
Some checks failed
continuous-integration/drone/push Build is failing

This commit is contained in:
Julien Valverdé
2024-02-19 17:50:34 +01:00
parent 49f0f7b987
commit 8de5750d2e
5 changed files with 38 additions and 42 deletions

View File

@@ -1,6 +1,6 @@
import { AbstractClass, Class, Simplify } from "type-fest"
import { TraitExpression } from "./TraitExpression"
import { ExtendPlain, StaticMembers } from "./util"
import { Extend, StaticMembers } from "./util"
export class Trait<
@@ -103,7 +103,7 @@ export type TraitConcreteClass<T extends Trait<any, any, any, any>> = (
export type TraitInstance<T extends Trait<any, any, any, any>> = (
Simplify<
ExtendPlain<[
Extend<[
Trait.Abstract<T>,
Trait.ImplInstance<T>,
]>
@@ -112,7 +112,7 @@ export type TraitInstance<T extends Trait<any, any, any, any>> = (
export type TraitStaticMembers<T extends Trait<any, any, any, any>> = (
Simplify<
ExtendPlain<[
Extend<[
Trait.StaticAbstract<T>,
Trait.ImplStaticMembers<T>,
]>

View File

@@ -1,7 +1,7 @@
import { AbstractClass, Simplify } from "type-fest"
import { Trait } from "./Trait"
import { TraitExpression } from "./TraitExpression"
import { ExtendPlain, StaticMembers } from "./util"
import { Extend, StaticMembers } from "./util"
type ImplSuper<This> = (
@@ -14,7 +14,7 @@ type ImplSuper<This> = (
? (
AbstractClass<
Simplify<
ExtendPlain<[
Extend<[
Abstract,
InstanceType<ImplClass>,
]>
@@ -22,7 +22,7 @@ type ImplSuper<This> = (
> &
Simplify<
ExtendPlain<[
Extend<[
StaticAbstract,
StaticMembers<ImplClass>,
]>

View File

@@ -1,7 +1,7 @@
import { AbstractClass, Class, Simplify } from "type-fest"
import { Trait, TraitInstance, TraitStaticMembers, TraitTuple } from "./Trait"
import { TraitBuilder } from "./TraitBuilder"
import { ExtendPlain, StaticMembers } from "./util"
import { Extend, StaticMembers } from "./util"
export class TraitExpression<
@@ -16,7 +16,7 @@ export class TraitExpression<
get extends(): (
AbstractClass<
Simplify<
ExtendPlain<[
Extend<[
InstanceType<Superclass>,
...TraitTuple.MapImplInstance<Traits>,
]>
@@ -26,7 +26,7 @@ export class TraitExpression<
> &
Simplify<
ExtendPlain<[
Extend<[
StaticMembers<Superclass>,
...TraitTuple.MapImplStaticMembers<Traits>,
]>
@@ -49,19 +49,19 @@ export class TraitExpression<
This,
Simplify<
ExtendPlain<TraitTuple.MapAbstract<Traits>>
Extend<TraitTuple.MapAbstract<Traits>>
>,
Simplify<
ExtendPlain<TraitTuple.MapStaticAbstract<Traits>>
Extend<TraitTuple.MapStaticAbstract<Traits>>
>,
AbstractClass<
Simplify<
ExtendPlain<TraitTuple.MapImplInstance<Traits>>
Extend<TraitTuple.MapImplInstance<Traits>>
>
> &
Simplify<
ExtendPlain<TraitTuple.MapImplStaticMembers<Traits>>
Extend<TraitTuple.MapImplStaticMembers<Traits>>
>
>(
this,
@@ -96,7 +96,7 @@ export type Implements<
Exp extends TraitExpression<any, Trait<any, any, any, any>[]>
> = (
Simplify<
ExtendPlain<
Extend<
TraitTuple.MapAbstract<
TraitExpression.Traits<Exp>
>
@@ -108,7 +108,7 @@ export type ImplementsStatic<
Exp extends TraitExpression<any, Trait<any, any, any, any>[]>
> = (
Simplify<
ExtendPlain<
Extend<
TraitTuple.MapStaticAbstract<
TraitExpression.Traits<Exp>
>
@@ -141,7 +141,7 @@ export type TraitExpressionInstance<
Exp extends TraitExpression<any, Trait<any, any, any, any>[]>
> = (
Simplify<
ExtendPlain<[
Extend<[
InstanceType<TraitExpression.Superclass<Exp>>,
...MapTraitsInstance<TraitExpression.Traits<Exp>>,
]>
@@ -159,7 +159,7 @@ export type TraitExpressionStaticMembers<
Exp extends TraitExpression<any, Trait<any, any, any, any>[]>
> = (
Simplify<
ExtendPlain<[
Extend<[
StaticMembers<TraitExpression.Superclass<Exp>>,
...MapTraitsStaticMembers<TraitExpression.Traits<Exp>>,
]>

View File

@@ -1,4 +1,4 @@
export { type Trait } from "./Trait"
export { trait } from "./TraitBuilder"
export { Implements, ImplementsStatic, type TraitExpression } from "./TraitExpression"
export { Trait, TraitClass, TraitConcreteClass, TraitInstance, TraitStaticMembers, TraitTuple } from "./Trait"
export { TraitBuilder, trait } from "./TraitBuilder"
export { Implements, ImplementsStatic, TraitExpression, TraitExpressionClass, TraitExpressionConcreteClass, TraitExpressionInstance, TraitExpressionStaticMembers } from "./TraitExpression"
export { expression } from "./TraitExpressionBuilder"

View File

@@ -1,25 +1,22 @@
import { Call, ComposeLeft, Fn, Match, Tuples } from "hotscript"
import { CommonKeys } from "."
type ExtendReducer<Super, Self> = (
Pick<Self, CommonKeys<Self, Super>> extends Pick<Super, CommonKeys<Self, Super>>
? Omit<Super, CommonKeys<Self, Super>> & Self
: never
)
interface ExtendReducerFn extends Fn {
return: ExtendReducer<this["arg0"], this["arg1"]>
}
export type ExtendFn = Tuples.Reduce<ExtendReducerFn, {}>
export type Extend<T extends readonly object[]> = Call<ExtendFn, T>
// type ExtendReducer<Super, Self> = (
// Pick<Self, CommonKeys<Self, Super>> extends Pick<Super, CommonKeys<Self, Super>>
// ? Omit<Super, CommonKeys<Self, Super>> & Self
// : never
// )
// interface ExtendReducerFn extends Fn {
// return: ExtendReducer<this["arg0"], this["arg1"]>
// }
// export type ExtendFn = Tuples.Reduce<ExtendReducerFn, {}>
export type ExtendPlain<T extends readonly object[]> = (
export type Extend<T extends readonly object[]> = (
T extends [infer Super, infer Self, ...infer Rest]
? Rest extends object[]
? Pick<Self, CommonKeys<Self, Super>> extends Pick<Super, CommonKeys<Self, Super>>
? ExtendPlain<[
? Extend<[
Omit<Super, CommonKeys<Self, Super>> & Self,
...Rest,
]>
@@ -33,11 +30,10 @@ export type ExtendPlain<T extends readonly object[]> = (
)
export type ExtendableFn = ComposeLeft<[
ExtendFn,
Match<[
Match.With<never, false>,
Match.With<any, true>,
]>
]>
export type Extendable<T extends object[]> = Call<ExtendableFn, T>
// export type ExtendableFn = ComposeLeft<[
// ExtendFn,
// Match<[
// Match.With<never, false>,
// Match.With<any, true>,
// ]>
// ]>