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",
"version": "0.1.23",
"version": "0.1.24",
"type": "module",
"publishConfig": {
"registry": "https://git.jvalver.de/api/packages/thilawyn/npm/"
@@ -30,12 +30,12 @@
"default": "./dist/effect/lib.cjs"
}
},
"./traitsUnique-h-N6REho": {
"./traitsUnique-DCJN7XEW": {
"import": {
"types": "./dist/traitsUnique-h-N6REho.d.ts"
"types": "./dist/traitsUnique-DCJN7XEW.d.ts"
},
"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-sort": "^0.0.4",
"tsup": "^8.0.2",
"tsx": "^4.10.0",
"tsx": "^4.10.1",
"typescript": "^5.4.5"
},
"optionalDependencies": {

View File

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

View File

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

View File

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

View File

@@ -1,5 +1,5 @@
export { Trait, TraitClass, TraitConcreteClass, TraitInstance, TraitStaticMembers, TraitTuple } from "./Trait"
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 { 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.
* @template Class - A class.
*/
export type StaticMembers<Class extends AbstractConstructor<any>> = (
Omit<Class, "prototype">
)
export type StaticMembers<Class extends AbstractConstructor<any>> = Omit<Class, "prototype">
export function type<T>() { return {} as T }