From f9274280714a6ba59cffa70254efa473a818d725 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Julien=20Valverd=C3=A9?= Date: Wed, 1 May 2024 01:07:58 +0200 Subject: [PATCH] extendsEffectSchema --- bun.lockb | Bin 150793 -> 152605 bytes package.json | 14 +++++++---- src/TraitExpression.ts | 44 +++++++++++++++++++++++++++++----- src/TraitExpressionBuilder.ts | 4 ++-- 4 files changed, 49 insertions(+), 13 deletions(-) diff --git a/bun.lockb b/bun.lockb index 7e6b681fe18818e27ace99d19db34a53d73b23dd..d14c997238eb21b0b8c533cefc8d757f7cce92b8 100755 GIT binary patch delta 25644 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 AApigX delta 25080 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 YFH51!c~I6xc9iFOyKI!N^mSSAUpS*N9smFU diff --git a/package.json b/package.json index 946a334..53eb38b 100644 --- a/package.json +++ b/package.json @@ -29,16 +29,20 @@ "clean:node": "rm -rf node_modules" }, "dependencies": { - "lodash-es": "^4.17.21", - "type-fest": "^4.14.0" + "remeda": "^1.61.0", + "type-fest": "^4.18.0" }, "devDependencies": { "@types/lodash-es": "^4.17.12", "bun-types": "latest", - "npm-check-updates": "^16.14.17", + "npm-check-updates": "^16.14.20", "npm-sort": "^0.0.4", "tsup": "^8.0.2", - "tsx": "^4.7.1", - "typescript": "^5.4.3" + "tsx": "^4.7.3", + "typescript": "^5.4.5" + }, + "optionalDependencies": { + "@effect/schema": "^0.66.12", + "effect": "^3.1.0" } } diff --git a/src/TraitExpression.ts b/src/TraitExpression.ts index 44367d0..26a7ab1 100644 --- a/src/TraitExpression.ts +++ b/src/TraitExpression.ts @@ -1,3 +1,4 @@ +import { Schema as S } from "@effect/schema" import { AbstractClass, Class, Simplify } from "type-fest" import { Trait, TraitTuple } from "./Trait" import { TraitBuilder } from "./TraitBuilder" @@ -13,14 +14,13 @@ export class TraitExpression< readonly traits: Traits, ) {} + get extends(): ( AbstractClass< InstanceType & // Keep the instance of the superclass outside of any kind of type manipulation // as it can accidentely remove abstract properties Simplify< - Extend< - TraitTuple.MapImplInstance - > + Extend> >, ConstructorParameters @@ -39,16 +39,48 @@ export class TraitExpression< ) as any } + extendsEffectSchema< + Fields extends S.Struct.Fields, + A, I, R, C, + Inherited, + Proto, + >( + this: TraitExpression< + S.Class, + Traits + > + ) { + return (): ( + AbstractClass< + InstanceType< + S.Class + > & + Simplify< + Extend> + >, + + ConstructorParameters> + > & + + StaticMembers< + S.Class + > & + Simplify< + Extend> + > + ) => this.extends as any + } + + staticImplements(target: StaticImplements, context: any) {} + subtrait< This extends TraitExpression >( this: This ) { - return new TraitBuilder< - This, - + return new TraitBuilder> >, diff --git a/src/TraitExpressionBuilder.ts b/src/TraitExpressionBuilder.ts index 60335c9..8e28338 100644 --- a/src/TraitExpressionBuilder.ts +++ b/src/TraitExpressionBuilder.ts @@ -1,4 +1,4 @@ -import { uniq } from "lodash-es" +import { unique } from "remeda" import { AbstractClass, IsEqual } from "type-fest" import { Trait, TraitTuple } from "./Trait" import { TraitExpression } from "./TraitExpression" @@ -49,7 +49,7 @@ export class TraitExpressionBuilder< >( traits: T ) { - return uniq(traits) as readonly Trait[] as TraitExpressionBuilder.TraitsUniq + return unique(traits) as readonly Trait[] as TraitExpressionBuilder.TraitsUniq }