From 94f9a872b17519925e1701d1f2bb870e1a9e9b9d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Julien=20Valverd=C3=A9?= Date: Sat, 11 May 2024 01:08:56 +0200 Subject: [PATCH] Fixed --- src/effect/EffectSchemaTraitExpression.ts | 8 +- .../EffectSchemaTraitExpressionBuilder.ts | 73 +++++++++---------- src/effect/tests.ts | 9 +-- 3 files changed, 42 insertions(+), 48 deletions(-) diff --git a/src/effect/EffectSchemaTraitExpression.ts b/src/effect/EffectSchemaTraitExpression.ts index 7707758..a791036 100644 --- a/src/effect/EffectSchemaTraitExpression.ts +++ b/src/effect/EffectSchemaTraitExpression.ts @@ -7,7 +7,7 @@ import { Extend } from "../util" export class EffectSchemaTraitExpression< Fields extends S.Struct.Fields, - A, I, R, C, + I, R, C, Inherited extends object, Proto, Static extends object, @@ -15,11 +15,11 @@ export class EffectSchemaTraitExpression< const Traits extends readonly Trait[], > implements TraitExpressionLike< - S.Class, + S.Class, Traits > { constructor( - readonly superclass: S.Class, + readonly superclass: S.Class, readonly superclassStatic: Static, readonly traits: Traits, ) {} @@ -29,7 +29,7 @@ implements TraitExpressionLike< S.Class< Self, Fields, - A, I, R, C, + I, R, C, Simplify< Extend<[ Inherited, diff --git a/src/effect/EffectSchemaTraitExpressionBuilder.ts b/src/effect/EffectSchemaTraitExpressionBuilder.ts index 126404c..f4b121a 100644 --- a/src/effect/EffectSchemaTraitExpressionBuilder.ts +++ b/src/effect/EffectSchemaTraitExpressionBuilder.ts @@ -1,6 +1,5 @@ import { Schema as S } from "@effect/schema" import * as Types from "effect/Types" -import { Simplify } from "type-fest" import { Trait, TraitTuple } from "../Trait" import { TraitExpression } from "../TraitExpression" import { TraitExpressionBuilder } from "../TraitExpressionBuilder" @@ -41,36 +40,32 @@ export class EffectSchemaInitialTraitExpressionBuilder { } extends< - Super extends S.Class, - + Super extends S.Class, + Self, Fields extends S.Struct.Fields, - A, I, R, C, + I, R, C, Inherited extends object, Proto, NewFields extends S.Struct.Fields, >( - superclass: Super | S.Class, + superclass: Super | S.Class, identifier: string, fields: NewFields, annotations?: S.Annotations.Schema, ) { return new EffectSchemaTraitExpressionBuilder( - superclass.extend(identifier)(fields, annotations) as S.Class< - unknown, - Fields & NewFields, - Types.Simplify>, - Types.Simplify>, - R | S.Struct.Context, - Types.Simplify>, - InstanceType, - Proto - >, - - {} as Simplify< - Omit, keyof S.Class> - >, - + // superclass.extend(identifier)(fields, annotations) as S.Class< + // unknown, + // Fields & NewFields, + // I & S.Struct.Encoded, + // R | S.Struct.Context, + // C & S.Struct.Constructor, + // InstanceType, + // Proto + // >, + superclass.extend(identifier)(fields, annotations), + {} as Omit, keyof S.Class>, [], ) } @@ -79,7 +74,7 @@ export class EffectSchemaInitialTraitExpressionBuilder { export class EffectSchemaTraitExpressionBuilder< Fields extends S.Struct.Fields, - A, I, R, C, + I, R, C, Inherited extends object, Proto, Static extends object, @@ -87,31 +82,31 @@ export class EffectSchemaTraitExpressionBuilder< const Traits extends readonly Trait[], > { constructor( - readonly expressionSuperclass: S.Class, + readonly expressionSuperclass: S.Class, readonly expressionSuperclassStatic: Static, readonly expressionTraits: Traits, ) {} - mutable() { - return new EffectSchemaTraitExpressionBuilder( - this.expressionSuperclass as S.Class, I, R, C, Inherited, Proto>, - this.expressionSuperclassStatic, - this.expressionTraits, - ) - } + // mutable() { + // return new EffectSchemaTraitExpressionBuilder( + // this.expressionSuperclass as S.Class, I, R, C, Inherited, Proto>, + // this.expressionSuperclassStatic, + // this.expressionTraits, + // ) + // } - immutable() { - return new EffectSchemaTraitExpressionBuilder( - this.expressionSuperclass as S.Class, I, R, C, Inherited, Proto>, - this.expressionSuperclassStatic, - this.expressionTraits, - ) - } + // immutable() { + // return new EffectSchemaTraitExpressionBuilder( + // this.expressionSuperclass as S.Class, I, R, C, Inherited, Proto>, + // this.expressionSuperclassStatic, + // this.expressionTraits, + // ) + // } mutableEncoded() { return new EffectSchemaTraitExpressionBuilder( - this.expressionSuperclass as S.Class, R, C, Inherited, Proto>, + this.expressionSuperclass as S.Class, R, C, Inherited, Proto>, this.expressionSuperclassStatic, this.expressionTraits, ) @@ -119,7 +114,7 @@ export class EffectSchemaTraitExpressionBuilder< immutableEncoded() { return new EffectSchemaTraitExpressionBuilder( - this.expressionSuperclass as S.Class, R, C, Inherited, Proto>, + this.expressionSuperclass as S.Class, R, C, Inherited, Proto>, this.expressionSuperclassStatic, this.expressionTraits, ) @@ -168,7 +163,7 @@ export class EffectSchemaTraitExpressionBuilder< ? "Type conflict between the traits implementation static members and/or the superclass static members." : EffectSchemaTraitExpression< Fields, - A, I, R, C, + I, R, C, Inherited, Proto, Static, diff --git a/src/effect/tests.ts b/src/effect/tests.ts index bfbdaad..70a786c 100644 --- a/src/effect/tests.ts +++ b/src/effect/tests.ts @@ -7,7 +7,6 @@ import { effectSchemaExpression } from "./EffectSchemaTraitExpressionBuilder" type Extr = T extends EffectSchemaTraitExpression< infer Fields, - infer A, infer I, infer R, infer C, @@ -26,8 +25,8 @@ const userExp = effectSchemaExpression id: S.BigIntFromSelf, role: S.Union(S.Literal("User"), S.Literal("Admin")), }) - .mutable() - .mutableEncoded() + // .mutable() + // .mutableEncoded() .build() @userExp.staticImplements @@ -37,7 +36,7 @@ class User extends userExp.extends() implements Implements } const user = new User({ id: 0n, role: "User" }) -user.id = 0n +// user.id = 0n type UserEncoded = S.Schema.Encoded @@ -45,7 +44,7 @@ const adminExp = effectSchemaExpression .extends(User, "User", { role: S.Literal("Admin") }) - .immutable() + // .immutable() .build() adminExp.superclass