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 01/12] 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 } -- 2.49.1 From a4108a71689e252102791791c019df6eb2febf58 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Julien=20Valverd=C3=A9?= Date: Wed, 1 May 2024 01:09:56 +0200 Subject: [PATCH 02/12] Fix --- src/TraitExpression.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/TraitExpression.ts b/src/TraitExpression.ts index 26a7ab1..4d7a6d1 100644 --- a/src/TraitExpression.ts +++ b/src/TraitExpression.ts @@ -72,7 +72,7 @@ export class TraitExpression< } - staticImplements(target: StaticImplements, context: any) {} + staticImplements(_target: StaticImplements, _context: any) {} subtrait< -- 2.49.1 From 521c265995f3de9db0def6ed275ba2a0c73499f0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Julien=20Valverd=C3=A9?= Date: Wed, 1 May 2024 01:29:19 +0200 Subject: [PATCH 03/12] staticImplementsStage2 --- src/TraitExpression.ts | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/TraitExpression.ts b/src/TraitExpression.ts index 4d7a6d1..7353931 100644 --- a/src/TraitExpression.ts +++ b/src/TraitExpression.ts @@ -74,6 +74,10 @@ export class TraitExpression< staticImplements(_target: StaticImplements, _context: any) {} + get staticImplementsStage2() { + return (_target: StaticImplements) => {} + } + subtrait< This extends TraitExpression -- 2.49.1 From 2294fccc8092d8a835603bb72dd514cb4331f2fc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Julien=20Valverd=C3=A9?= Date: Wed, 1 May 2024 01:35:03 +0200 Subject: [PATCH 04/12] Cleanup --- bun.lockb | Bin 152605 -> 151871 bytes package.json | 1 - 2 files changed, 1 deletion(-) diff --git a/bun.lockb b/bun.lockb index d14c997238eb21b0b8c533cefc8d757f7cce92b8..cae4041c9f80f849eb51d54648713cb77556cae3 100755 GIT binary patch delta 21408 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 delta 21633 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 diff --git a/package.json b/package.json index 53eb38b..4f6fc15 100644 --- a/package.json +++ b/package.json @@ -33,7 +33,6 @@ "type-fest": "^4.18.0" }, "devDependencies": { - "@types/lodash-es": "^4.17.12", "bun-types": "latest", "npm-check-updates": "^16.14.20", "npm-sort": "^0.0.4", -- 2.49.1 From ffeca9565fb7309c48cc73c60d72d8a43c8c1529 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Julien=20Valverd=C3=A9?= Date: Wed, 1 May 2024 01:40:59 +0200 Subject: [PATCH 05/12] Cleanup --- src/TraitExpressionBuilder.ts | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/src/TraitExpressionBuilder.ts b/src/TraitExpressionBuilder.ts index 8e28338..c563268 100644 --- a/src/TraitExpressionBuilder.ts +++ b/src/TraitExpressionBuilder.ts @@ -36,7 +36,7 @@ export class TraitExpressionBuilder< ]) as readonly Trait[] as TraitExpressionBuilder.SpreadSupertraits } - static traitsUniq< + static traitsUnique< const T extends readonly Trait< TraitExpression< typeof TraitExpression.NullSuperclass, @@ -49,7 +49,7 @@ export class TraitExpressionBuilder< >( traits: T ) { - return unique(traits) as readonly Trait[] as TraitExpressionBuilder.TraitsUniq + return unique(traits) as readonly Trait[] as TraitExpressionBuilder.TraitsUnique } @@ -83,7 +83,7 @@ export class TraitExpressionBuilder< return new this.constructor( this.expressionSuperclass, - this.constructor.traitsUniq([ + this.constructor.traitsUnique([ ...this.expressionTraits, ...this.constructor.spreadSupertraits(traits), ]), @@ -109,7 +109,7 @@ export class TraitExpressionBuilder< return new this.constructor( this.expressionSuperclass, - this.constructor.traitsUniq([ + this.constructor.traitsUnique([ ...this.constructor.spreadSupertraits(traits), ...this.expressionTraits, ]), @@ -154,14 +154,14 @@ export namespace TraitExpressionBuilder { : readonly [] ) - export type TraitsUniq = ( + export type TraitsUnique = ( Traits extends readonly [ ...infer Rest, infer El extends Trait, ] ? IsTraitInTupleFromRight extends true - ? TraitsUniq - : readonly [...TraitsUniq, El] + ? TraitsUnique + : readonly [...TraitsUnique, El] : readonly [] ) type IsTraitInTupleFromRight = ( @@ -176,7 +176,7 @@ export namespace TraitExpressionBuilder { Traits extends readonly Trait[], T extends readonly Trait[], > = ( - TraitExpressionBuilder.TraitsUniq, ]> @@ -186,7 +186,7 @@ export namespace TraitExpressionBuilder { Traits extends readonly Trait[], T extends readonly Trait[], > = ( - TraitExpressionBuilder.TraitsUniq, ...Traits, ]> -- 2.49.1 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 06/12] 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, -- 2.49.1 From 9bab4f434401f03a28a3920bb7218fe0c51ef4e1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Julien=20Valverd=C3=A9?= Date: Wed, 1 May 2024 02:03:11 +0200 Subject: [PATCH 07/12] extendsSchemaExpression --- ...endsEffectSchemaExpression.ts => extendsSchemaExpression.ts} | 2 +- src/effect/lib.ts | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) rename src/effect/{extendsEffectSchemaExpression.ts => extendsSchemaExpression.ts} (95%) diff --git a/src/effect/extendsEffectSchemaExpression.ts b/src/effect/extendsSchemaExpression.ts similarity index 95% rename from src/effect/extendsEffectSchemaExpression.ts rename to src/effect/extendsSchemaExpression.ts index 1505b72..331623c 100644 --- a/src/effect/extendsEffectSchemaExpression.ts +++ b/src/effect/extendsSchemaExpression.ts @@ -5,7 +5,7 @@ import { TraitExpression } from "../TraitExpression" import { Extend, StaticMembers } from "../util" -export function extendsEffectSchemaExpression< +export function extendsSchemaExpression< Fields extends S.Struct.Fields, A, I, R, C, Inherited, diff --git a/src/effect/lib.ts b/src/effect/lib.ts index 815ad9a..75c8452 100644 --- a/src/effect/lib.ts +++ b/src/effect/lib.ts @@ -1 +1 @@ -export * from "./extendsEffectSchemaExpression" +export * from "./extendsSchemaExpression" -- 2.49.1 From 98b375b3dfb0770ff3dac88dd97bb167aa268a24 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Julien=20Valverd=C3=A9?= Date: Wed, 1 May 2024 02:25:50 +0200 Subject: [PATCH 08/12] extendsEffectSchemaExpression --- src/{effect/extendsSchemaExpression.ts => effect.ts} | 8 ++++---- src/effect/lib.ts | 1 - src/lib.ts | 1 + tsup.config.ts | 2 +- 4 files changed, 6 insertions(+), 6 deletions(-) rename src/{effect/extendsSchemaExpression.ts => effect.ts} (83%) delete mode 100644 src/effect/lib.ts diff --git a/src/effect/extendsSchemaExpression.ts b/src/effect.ts similarity index 83% rename from src/effect/extendsSchemaExpression.ts rename to src/effect.ts index 331623c..2602d5b 100644 --- a/src/effect/extendsSchemaExpression.ts +++ b/src/effect.ts @@ -1,11 +1,11 @@ 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" +import { Trait, TraitTuple } from "./Trait" +import { TraitExpression } from "./TraitExpression" +import { Extend, StaticMembers } from "./util" -export function extendsSchemaExpression< +export function extendsEffectSchemaExpression< Fields extends S.Struct.Fields, A, I, R, C, Inherited, diff --git a/src/effect/lib.ts b/src/effect/lib.ts deleted file mode 100644 index 75c8452..0000000 --- a/src/effect/lib.ts +++ /dev/null @@ -1 +0,0 @@ -export * from "./extendsSchemaExpression" diff --git a/src/lib.ts b/src/lib.ts index a96aa6a..32077ec 100644 --- a/src/lib.ts +++ b/src/lib.ts @@ -2,3 +2,4 @@ export { Trait, TraitClass, TraitConcreteClass, TraitInstance, TraitStaticMember export { ImplStatic, TraitBuilder, implStaticInstantiableThis, implStaticThis, trait } from "./TraitBuilder" export { Implements, StaticImplements, TraitExpression, TraitExpressionClass, TraitExpressionConcreteClass, TraitExpressionInstance, TraitExpressionStaticMembers } from "./TraitExpression" export { TraitExpressionBuilder, expression } from "./TraitExpressionBuilder" +export { extendsEffectSchemaExpression } from "./effect" diff --git a/tsup.config.ts b/tsup.config.ts index a9d7d69..3f59156 100644 --- a/tsup.config.ts +++ b/tsup.config.ts @@ -2,7 +2,7 @@ import { defineConfig } from "tsup" export default defineConfig({ - entry: ["src/lib.ts", "src/effect/lib.ts"], + entry: ["./src/lib.ts"], format: ["esm", "cjs"], dts: true, splitting: false, -- 2.49.1 From a833a96e1a476daf8b9ed722942dca814d7f1d1e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Julien=20Valverd=C3=A9?= Date: Wed, 1 May 2024 02:37:27 +0200 Subject: [PATCH 09/12] extendsEffectSchemaExpression --- src/effect.ts | 25 ++++++++++++------------- 1 file changed, 12 insertions(+), 13 deletions(-) diff --git a/src/effect.ts b/src/effect.ts index 2602d5b..4ef1242 100644 --- a/src/effect.ts +++ b/src/effect.ts @@ -1,14 +1,14 @@ import { Schema as S } from "@effect/schema" -import { AbstractClass, Simplify } from "type-fest" +import { Simplify } from "type-fest" import { Trait, TraitTuple } from "./Trait" import { TraitExpression } from "./TraitExpression" -import { Extend, StaticMembers } from "./util" +import { Extend } from "./util" export function extendsEffectSchemaExpression< Fields extends S.Struct.Fields, A, I, R, C, - Inherited, + Inherited extends object, Proto, const Traits extends readonly Trait[], @@ -19,20 +19,19 @@ export function extendsEffectSchemaExpression< > ) { return (): ( - AbstractClass< - InstanceType< - S.Class - > & + S.Class< + Self, + Fields, + A, I, R, C, Simplify< - Extend> + Extend<[ + Inherited, + ...TraitTuple.MapImplInstance + ]> >, - - ConstructorParameters> + Proto > & - StaticMembers< - S.Class - > & Simplify< Extend> > -- 2.49.1 From bb9f1c1421be5b91dc9c1f641e39169a4e33f402 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Julien=20Valverd=C3=A9?= Date: Wed, 1 May 2024 02:40:23 +0200 Subject: [PATCH 10/12] void -> unknown --- src/effect.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/effect.ts b/src/effect.ts index 4ef1242..53736ea 100644 --- a/src/effect.ts +++ b/src/effect.ts @@ -14,7 +14,7 @@ export function extendsEffectSchemaExpression< const Traits extends readonly Trait[], >( expression: TraitExpression< - S.Class, + S.Class, Traits > ) { -- 2.49.1 From 85299098ccea3557fc7afb7f65b5c561ab5db326 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Julien=20Valverd=C3=A9?= Date: Wed, 1 May 2024 02:46:20 +0200 Subject: [PATCH 11/12] Version bump --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 3755ab3..91dce8b 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@thilawyn/traitify-ts", - "version": "0.1.19", + "version": "0.1.20", "type": "module", "publishConfig": { "registry": "https://git.jvalver.de/api/packages/thilawyn/npm/" -- 2.49.1 From ee82c07a9eca222923da99729491691cf25bdb54 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Julien=20Valverd=C3=A9?= Date: Wed, 1 May 2024 02:48:48 +0200 Subject: [PATCH 12/12] Cleanup --- package.json | 10 ---------- 1 file changed, 10 deletions(-) diff --git a/package.json b/package.json index 91dce8b..2e38b31 100644 --- a/package.json +++ b/package.json @@ -19,16 +19,6 @@ "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": { -- 2.49.1