From 30a3d8b5a211a02915f512fdffe30fad86ec7b8c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Julien=20Valverd=C3=A9?= Date: Wed, 1 May 2024 01:59:30 +0200 Subject: [PATCH] Cleanup --- package.json | 10 ++++++ src/TraitExpression.ts | 35 +----------------- src/effect/extendsEffectSchemaExpression.ts | 40 +++++++++++++++++++++ src/effect/lib.ts | 1 + tsup.config.ts | 2 +- 5 files changed, 53 insertions(+), 35 deletions(-) create mode 100644 src/effect/extendsEffectSchemaExpression.ts create mode 100644 src/effect/lib.ts diff --git a/package.json b/package.json index 4f6fc15..3755ab3 100644 --- a/package.json +++ b/package.json @@ -19,6 +19,16 @@ "types": "./dist/lib.d.cts", "default": "./dist/lib.cjs" } + }, + "./effect": { + "import": { + "types": "./dist/effect/lib.d.ts", + "default": "./dist/effect/lib.js" + }, + "require": { + "types": "./dist/effect/lib.d.cts", + "default": "./dist/effect/lib.cjs" + } } }, "scripts": { diff --git a/src/TraitExpression.ts b/src/TraitExpression.ts index 7353931..b7a8f80 100644 --- a/src/TraitExpression.ts +++ b/src/TraitExpression.ts @@ -1,4 +1,3 @@ -import { Schema as S } from "@effect/schema" import { AbstractClass, Class, Simplify } from "type-fest" import { Trait, TraitTuple } from "./Trait" import { TraitBuilder } from "./TraitBuilder" @@ -39,38 +38,6 @@ 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) {} @@ -113,7 +80,7 @@ export namespace TraitExpression { const nullSuperclassSymbol = Symbol() export class NullSuperclass { static readonly [nullSuperclassSymbol]: true - constructor(...args: any[]) {} + constructor(..._args: any[]) {} } export type Superclass = ( diff --git a/src/effect/extendsEffectSchemaExpression.ts b/src/effect/extendsEffectSchemaExpression.ts new file mode 100644 index 0000000..1505b72 --- /dev/null +++ b/src/effect/extendsEffectSchemaExpression.ts @@ -0,0 +1,40 @@ +import { Schema as S } from "@effect/schema" +import { AbstractClass, Simplify } from "type-fest" +import { Trait, TraitTuple } from "../Trait" +import { TraitExpression } from "../TraitExpression" +import { Extend, StaticMembers } from "../util" + + +export function extendsEffectSchemaExpression< + Fields extends S.Struct.Fields, + A, I, R, C, + Inherited, + Proto, + + const Traits extends readonly Trait[], +>( + expression: TraitExpression< + S.Class, + Traits + > +) { + return (): ( + AbstractClass< + InstanceType< + S.Class + > & + Simplify< + Extend> + >, + + ConstructorParameters> + > & + + StaticMembers< + S.Class + > & + Simplify< + Extend> + > + ) => expression.extends as any +} diff --git a/src/effect/lib.ts b/src/effect/lib.ts new file mode 100644 index 0000000..815ad9a --- /dev/null +++ b/src/effect/lib.ts @@ -0,0 +1 @@ +export * from "./extendsEffectSchemaExpression" diff --git a/tsup.config.ts b/tsup.config.ts index 2f051ef..a9d7d69 100644 --- a/tsup.config.ts +++ b/tsup.config.ts @@ -2,7 +2,7 @@ import { defineConfig } from "tsup" export default defineConfig({ - entry: ["src/lib.ts"], + entry: ["src/lib.ts", "src/effect/lib.ts"], format: ["esm", "cjs"], dts: true, splitting: false,