From 8de5750d2e3bb4113d2895e702d66a1828f5838c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Julien=20Valverd=C3=A9?= Date: Mon, 19 Feb 2024 17:50:34 +0100 Subject: [PATCH] ExtendPlain -> Extend --- src/Trait.ts | 6 +++--- src/TraitBuilder.ts | 6 +++--- src/TraitExpression.ts | 22 +++++++++++----------- src/lib.ts | 6 +++--- src/util/extend.ts | 40 ++++++++++++++++++---------------------- 5 files changed, 38 insertions(+), 42 deletions(-) diff --git a/src/Trait.ts b/src/Trait.ts index 4bff053..c98c2c6 100644 --- a/src/Trait.ts +++ b/src/Trait.ts @@ -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> = ( export type TraitInstance> = ( Simplify< - ExtendPlain<[ + Extend<[ Trait.Abstract, Trait.ImplInstance, ]> @@ -112,7 +112,7 @@ export type TraitInstance> = ( export type TraitStaticMembers> = ( Simplify< - ExtendPlain<[ + Extend<[ Trait.StaticAbstract, Trait.ImplStaticMembers, ]> diff --git a/src/TraitBuilder.ts b/src/TraitBuilder.ts index 305e0ef..856d63c 100644 --- a/src/TraitBuilder.ts +++ b/src/TraitBuilder.ts @@ -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 = ( @@ -14,7 +14,7 @@ type ImplSuper = ( ? ( AbstractClass< Simplify< - ExtendPlain<[ + Extend<[ Abstract, InstanceType, ]> @@ -22,7 +22,7 @@ type ImplSuper = ( > & Simplify< - ExtendPlain<[ + Extend<[ StaticAbstract, StaticMembers, ]> diff --git a/src/TraitExpression.ts b/src/TraitExpression.ts index 36101fa..733fdc9 100644 --- a/src/TraitExpression.ts +++ b/src/TraitExpression.ts @@ -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, ...TraitTuple.MapImplInstance, ]> @@ -26,7 +26,7 @@ export class TraitExpression< > & Simplify< - ExtendPlain<[ + Extend<[ StaticMembers, ...TraitTuple.MapImplStaticMembers, ]> @@ -49,19 +49,19 @@ export class TraitExpression< This, Simplify< - ExtendPlain> + Extend> >, Simplify< - ExtendPlain> + Extend> >, AbstractClass< Simplify< - ExtendPlain> + Extend> > > & Simplify< - ExtendPlain> + Extend> > >( this, @@ -96,7 +96,7 @@ export type Implements< Exp extends TraitExpression[]> > = ( Simplify< - ExtendPlain< + Extend< TraitTuple.MapAbstract< TraitExpression.Traits > @@ -108,7 +108,7 @@ export type ImplementsStatic< Exp extends TraitExpression[]> > = ( Simplify< - ExtendPlain< + Extend< TraitTuple.MapStaticAbstract< TraitExpression.Traits > @@ -141,7 +141,7 @@ export type TraitExpressionInstance< Exp extends TraitExpression[]> > = ( Simplify< - ExtendPlain<[ + Extend<[ InstanceType>, ...MapTraitsInstance>, ]> @@ -159,7 +159,7 @@ export type TraitExpressionStaticMembers< Exp extends TraitExpression[]> > = ( Simplify< - ExtendPlain<[ + Extend<[ StaticMembers>, ...MapTraitsStaticMembers>, ]> diff --git a/src/lib.ts b/src/lib.ts index f268d87..9426d7e 100644 --- a/src/lib.ts +++ b/src/lib.ts @@ -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" diff --git a/src/util/extend.ts b/src/util/extend.ts index 2592f09..3269bab 100644 --- a/src/util/extend.ts +++ b/src/util/extend.ts @@ -1,25 +1,22 @@ -import { Call, ComposeLeft, Fn, Match, Tuples } from "hotscript" import { CommonKeys } from "." -type ExtendReducer = ( - Pick> extends Pick> - ? Omit> & Self - : never -) -interface ExtendReducerFn extends Fn { - return: ExtendReducer -} - -export type ExtendFn = Tuples.Reduce -export type Extend = Call +// type ExtendReducer = ( +// Pick> extends Pick> +// ? Omit> & Self +// : never +// ) +// interface ExtendReducerFn extends Fn { +// return: ExtendReducer +// } +// export type ExtendFn = Tuples.Reduce -export type ExtendPlain = ( +export type Extend = ( T extends [infer Super, infer Self, ...infer Rest] ? Rest extends object[] ? Pick> extends Pick> - ? ExtendPlain<[ + ? Extend<[ Omit> & Self, ...Rest, ]> @@ -33,11 +30,10 @@ export type ExtendPlain = ( ) -export type ExtendableFn = ComposeLeft<[ - ExtendFn, - Match<[ - Match.With, - Match.With, - ]> -]> -export type Extendable = Call +// export type ExtendableFn = ComposeLeft<[ +// ExtendFn, +// Match<[ +// Match.With, +// Match.With, +// ]> +// ]>