From 14b39cde630ea85b718029ea62919b5a8abaa7ce Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Julien=20Valverd=C3=A9?= Date: Sun, 25 Feb 2024 02:01:54 +0100 Subject: [PATCH 1/5] Extend fixes --- src/util/extend.ts | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/util/extend.ts b/src/util/extend.ts index 1618656..ce86873 100644 --- a/src/util/extend.ts +++ b/src/util/extend.ts @@ -25,7 +25,7 @@ export type Extend = ( T extends [ infer Super, infer Self, - ...infer Rest extends object[], + ...infer Rest extends readonly object[], ] ? Pick> extends Pick> ? Extend<[ @@ -42,7 +42,7 @@ export type Extendable = ( T extends [ infer Super, infer Self, - ...infer Rest extends object[], + ...infer Rest extends readonly object[], ] ? Pick> extends Pick> ? Extendable<[ @@ -57,7 +57,7 @@ export type NonExtendableKeys = ( T extends [ infer Super extends object, infer Self extends object, - ...infer Rest extends object[], + ...infer Rest extends readonly object[], ] ? {[K in keyof Super & keyof Self]: Self[K] extends Super[K] ? never -- 2.49.1 From e72c1a59b0432b4a614e20752eab3a30ec108133 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Julien=20Valverd=C3=A9?= Date: Sun, 25 Feb 2024 02:20:57 +0100 Subject: [PATCH 2/5] TraitExpressionBuilder bugfix --- src/TraitExpressionBuilder.ts | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/src/TraitExpressionBuilder.ts b/src/TraitExpressionBuilder.ts index 2885fe6..3591c74 100644 --- a/src/TraitExpressionBuilder.ts +++ b/src/TraitExpressionBuilder.ts @@ -33,7 +33,7 @@ export class TraitExpressionBuilder< return traits.flatMap(trait => [ ...trait.superExpression.traits, trait, - ]) as TraitExpressionBuilder.SpreadSupertraits + ]) as readonly Trait[] as TraitExpressionBuilder.SpreadSupertraits } static traitsUniq< @@ -49,7 +49,7 @@ export class TraitExpressionBuilder< >( traits: T ) { - return uniq(traits) as TraitExpressionBuilder.TraitsUniq + return uniq(traits) as readonly Trait[] as TraitExpressionBuilder.TraitsUniq } @@ -142,30 +142,30 @@ export class TraitExpressionBuilder< export namespace TraitExpressionBuilder { export type SpreadSupertraits = ( - Traits extends [ + Traits extends readonly [ infer El extends Trait, ...infer Rest, ] - ? [ + ? readonly [ ...Trait.Supertraits, El, ...SpreadSupertraits, ] - : [] + : readonly [] ) export type TraitsUniq = ( - Traits extends [ + Traits extends readonly [ ...infer Rest, infer El extends Trait, ] ? IsTraitInTupleFromRight extends true ? TraitsUniq - : [...TraitsUniq, El] - : [] + : readonly [...TraitsUniq, El] + : readonly [] ) type IsTraitInTupleFromRight = ( - Traits extends [...infer Rest, infer El] + Traits extends readonly [...infer Rest, infer El] ? IsEqual extends true ? true : IsTraitInTupleFromRight -- 2.49.1 From a84f42ee914d248b2afca6671fd0350678cdb13f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Julien=20Valverd=C3=A9?= Date: Sun, 25 Feb 2024 02:41:42 +0100 Subject: [PATCH 3/5] Extend fix --- src/util/extend.ts | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/src/util/extend.ts b/src/util/extend.ts index ce86873..9df1ca1 100644 --- a/src/util/extend.ts +++ b/src/util/extend.ts @@ -22,30 +22,30 @@ import { CommonKeys } from "." // TODO: use OverrideProperties from type-fest? export type Extend = ( - T extends [ + T extends readonly [ infer Super, infer Self, ...infer Rest extends readonly object[], ] ? Pick> extends Pick> - ? Extend<[ + ? Extend> & Self, ...Rest, ]> : never - : T extends [infer Self] + : T extends readonly [infer Self] ? Self : {} ) export type Extendable = ( - T extends [ + T extends readonly [ infer Super, infer Self, ...infer Rest extends readonly object[], ] ? Pick> extends Pick> - ? Extendable<[ + ? Extendable> & Self, ...Rest, ]> @@ -54,7 +54,7 @@ export type Extendable = ( ) export type NonExtendableKeys = ( - T extends [ + T extends readonly [ infer Super extends object, infer Self extends object, ...infer Rest extends readonly object[], @@ -63,7 +63,7 @@ export type NonExtendableKeys = ( ? never : K }[keyof Super & keyof Self] - | NonExtendableKeys<[ + | NonExtendableKeys -- 2.49.1 From 4b2f269c1387736f5603384d28a34c748ad68a70 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Julien=20Valverd=C3=A9?= Date: Sun, 25 Feb 2024 03:16:56 +0100 Subject: [PATCH 4/5] Version bump --- src/Trait.ts | 14 +++++++------- src/TraitExpressionBuilder.ts | 4 ++-- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/src/Trait.ts b/src/Trait.ts index 63109a6..d2f1f2e 100644 --- a/src/Trait.ts +++ b/src/Trait.ts @@ -74,43 +74,43 @@ export namespace Trait { export namespace TraitTuple { export type MapAbstract = { - [K in keyof T]: K extends keyof [] + [K in keyof T]: K extends keyof readonly [] ? T[K] : Trait.Abstract } export type MapStaticAbstract = { - [K in keyof T]: K extends keyof [] + [K in keyof T]: K extends keyof readonly [] ? T[K] : Trait.StaticAbstract } export type MapImplClass = { - [K in keyof T]: K extends keyof [] + [K in keyof T]: K extends keyof readonly [] ? T[K] : Trait.ImplClass } export type MapImplInstance = { - [K in keyof T]: K extends keyof [] + [K in keyof T]: K extends keyof readonly [] ? T[K] : Trait.ImplInstance } export type MapImplStaticMembers = { - [K in keyof T]: K extends keyof [] + [K in keyof T]: K extends keyof readonly [] ? T[K] : Trait.ImplStaticMembers } export type MapInstance = { - [K in keyof T]: K extends keyof [] + [K in keyof T]: K extends keyof readonly [] ? T[K] : Trait.Instance } export type MapStaticMembers = { - [K in keyof T]: K extends keyof [] + [K in keyof T]: K extends keyof readonly [] ? T[K] : Trait.Static } diff --git a/src/TraitExpressionBuilder.ts b/src/TraitExpressionBuilder.ts index 3591c74..60335c9 100644 --- a/src/TraitExpressionBuilder.ts +++ b/src/TraitExpressionBuilder.ts @@ -176,7 +176,7 @@ export namespace TraitExpressionBuilder { Traits extends readonly Trait[], T extends readonly Trait[], > = ( - TraitExpressionBuilder.TraitsUniq<[ + TraitExpressionBuilder.TraitsUniq, ]> @@ -186,7 +186,7 @@ export namespace TraitExpressionBuilder { Traits extends readonly Trait[], T extends readonly Trait[], > = ( - TraitExpressionBuilder.TraitsUniq<[ + TraitExpressionBuilder.TraitsUniq, ...Traits, ]> -- 2.49.1 From 72523bb57ff605c216e2927cf969eed9e47b4b43 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Julien=20Valverd=C3=A9?= Date: Sun, 25 Feb 2024 03:17:50 +0100 Subject: [PATCH 5/5] Version bump --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index bafe7b4..37bfd3b 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@thilawyn/traitify-ts", - "version": "0.1.11", + "version": "0.1.12", "type": "module", "publishConfig": { "registry": "https://git.jvalver.de/api/packages/thilawyn/npm/" -- 2.49.1