Compare commits

..

1 Commits

Author SHA1 Message Date
Julien Valverdé
b2eae567c4 0.1.24 (#24)
All checks were successful
continuous-integration/drone/push Build is passing
Co-authored-by: Julien Valverdé <julien.valverde@mailo.com>
Reviewed-on: https://git.jvalver.de/Thilawyn/traitify-ts/pulls/24
2024-05-13 01:25:25 +02:00
7 changed files with 23 additions and 40 deletions

BIN
bun.lockb

Binary file not shown.

View File

@@ -1,6 +1,6 @@
{ {
"name": "@thilawyn/traitify-ts", "name": "@thilawyn/traitify-ts",
"version": "0.1.23", "version": "0.1.24",
"type": "module", "type": "module",
"publishConfig": { "publishConfig": {
"registry": "https://git.jvalver.de/api/packages/thilawyn/npm/" "registry": "https://git.jvalver.de/api/packages/thilawyn/npm/"
@@ -30,12 +30,12 @@
"default": "./dist/effect/lib.cjs" "default": "./dist/effect/lib.cjs"
} }
}, },
"./traitsUnique-h-N6REho": { "./traitsUnique-DCJN7XEW": {
"import": { "import": {
"types": "./dist/traitsUnique-h-N6REho.d.ts" "types": "./dist/traitsUnique-DCJN7XEW.d.ts"
}, },
"require": { "require": {
"types": "./dist/traitsUnique-h-N6REho.d.ts" "types": "./dist/traitsUnique-DCJN7XEW.d.ts"
} }
} }
}, },
@@ -55,7 +55,7 @@
"npm-check-updates": "^16.14.20", "npm-check-updates": "^16.14.20",
"npm-sort": "^0.0.4", "npm-sort": "^0.0.4",
"tsup": "^8.0.2", "tsup": "^8.0.2",
"tsx": "^4.10.0", "tsx": "^4.10.1",
"typescript": "^5.4.5" "typescript": "^5.4.5"
}, },
"optionalDependencies": { "optionalDependencies": {

View File

@@ -24,13 +24,13 @@ export class TraitBuilder<
) {} ) {}
abstract<A extends Abstract>( abstract<A extends AbstractConstructor<Abstract> & StaticAbstract>(
_: (Super: AbstractConstructor<Abstract>) => AbstractConstructor<A, []> _: (Super: AbstractConstructor<Abstract> & StaticAbstract) => A
) { ) {
return new TraitBuilder( return new TraitBuilder(
this.traitSuperExpression, this.traitSuperExpression,
{} as Simplify<A>, {} as Simplify<InstanceType<A>>,
this.traitStaticAbstract, {} as Simplify<StaticMembers<A>>,
this.traitApply, this.traitApply,
) )
} }
@@ -46,17 +46,6 @@ export class TraitBuilder<
) )
} }
staticAbstract<A extends StaticAbstract>(
_: (Super: AbstractConstructor<StaticAbstract>) => AbstractConstructor<A, []>
) {
return new TraitBuilder(
this.traitSuperExpression,
this.traitAbstract,
{} as Simplify<A>,
this.traitApply,
)
}
staticAbstractType<A extends StaticAbstract>( staticAbstractType<A extends StaticAbstract>(
_: (Super: StaticAbstract) => typeof type<A> _: (Super: StaticAbstract) => typeof type<A>
) { ) {
@@ -185,7 +174,7 @@ export function implStaticInstantiableThis<
export const trait = new TraitBuilder( export const trait = new TraitBuilder(
new TraitExpression(TraitExpression.NullSuperclass, []), new TraitExpression(TraitExpression.NullSuperclass, []),
{} as object, {} as {},
{} as object, {} as {},
Super => class extends Super {} as AbstractConstructor<object>, Super => class extends Super {} as AbstractConstructor<{}>,
) )

View File

@@ -142,7 +142,7 @@ export type TraitExpressionClass<
TraitExpressionStaticMembers<Exp> TraitExpressionStaticMembers<Exp>
) )
export type TraitExpressionConcreteClass< export type TraitExpressionInstantiableClass<
Exp extends TraitExpressionLike<any, readonly Trait<any, any, any, any>[]> Exp extends TraitExpressionLike<any, readonly Trait<any, any, any, any>[]>
> = ( > = (
Constructor< Constructor<

View File

@@ -32,17 +32,14 @@ implements TraitExpressionLike<
extends<Self>(): ( extends<Self>(): (
AbstractConstructor< AbstractConstructor<
ApplyMutability<S.Struct.Type<Fields>, Mutability> & Simplify<
Omit< ApplyMutability<S.Struct.Type<Fields>, Mutability> &
Simplify< Extend<[
Extend<[ Omit<Inherited, keyof Fields>,
Inherited, ...TraitTuple.MapImplInstance<Traits>
...TraitTuple.MapImplInstance<Traits> ]> &
]> Proto
>, >,
keyof Fields
> &
Proto,
ConstructorParameters<S.Class<unknown, Fields, I, R, C, Inherited, Proto>> ConstructorParameters<S.Class<unknown, Fields, I, R, C, Inherited, Proto>>
> & > &
@@ -57,7 +54,6 @@ implements TraitExpressionLike<
Proto Proto
> >
> & > &
Simplify< Simplify<
Extend<[ Extend<[
Static, Static,

View File

@@ -1,5 +1,5 @@
export { Trait, TraitClass, TraitConcreteClass, TraitInstance, TraitStaticMembers, TraitTuple } from "./Trait" export { Trait, TraitClass, TraitConcreteClass, TraitInstance, TraitStaticMembers, TraitTuple } from "./Trait"
export { ImplStatic, TraitBuilder, implStaticInstantiableThis, implStaticThis, trait } from "./TraitBuilder" export { ImplStatic, TraitBuilder, implStaticInstantiableThis, implStaticThis, trait } from "./TraitBuilder"
export { Implements, StaticImplements, TraitExpression, TraitExpressionClass, TraitExpressionConcreteClass, TraitExpressionInstance, TraitExpressionStaticMembers } from "./TraitExpression" export { Implements, StaticImplements, TraitExpression, TraitExpressionClass, TraitExpressionInstance, TraitExpressionInstantiableClass, TraitExpressionStaticMembers } from "./TraitExpression"
export { TraitExpressionBuilder, expression } from "./TraitExpressionBuilder" export { TraitExpressionBuilder, expression } from "./TraitExpressionBuilder"
export { type } from "./util" export { type } from "./util"

View File

@@ -12,8 +12,6 @@ export type CommonKeys<A, B> = Extract<keyof A, keyof B>
* Represents the static members of a class. * Represents the static members of a class.
* @template Class - A class. * @template Class - A class.
*/ */
export type StaticMembers<Class extends AbstractConstructor<any>> = ( export type StaticMembers<Class extends AbstractConstructor<any>> = Omit<Class, "prototype">
Omit<Class, "prototype">
)
export function type<T>() { return {} as T } export function type<T>() { return {} as T }