Skip to content

Commit c2f2b08

Browse files
committed
chore: mixins cleanups
1 parent b241d72 commit c2f2b08

File tree

4 files changed

+42
-40
lines changed

4 files changed

+42
-40
lines changed
Lines changed: 4 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,9 @@
11
import type { Constructor } from "../../utils/types";
22
import { InMemoryEntity, InMemoryEntityConstructor } from "../in_memory";
33
export declare function namedEntityMixin(item: InMemoryEntity): {
4-
name: string;
5-
};
6-
export declare function namedEntityMethodsMixin(item: InMemoryEntity): {
74
setName(name: string): void;
5+
name: string;
86
};
9-
type NamedEntityProps = ReturnType<typeof namedEntityMixin>;
10-
type NamedEntityMethods = ReturnType<typeof namedEntityMethodsMixin>;
11-
export type NamedEntity = NamedEntityProps & NamedEntityMethods;
12-
export type NamedEntityConstructor = Constructor<NamedEntity>;
13-
export default function NamedEntityMixin<S extends InMemoryEntityConstructor>(superclass: S): S & NamedEntityConstructor;
14-
export {};
7+
export type NamedInMemoryEntity = ReturnType<typeof namedEntityMixin>;
8+
export type NamedInMemoryEntityConstructor = Constructor<NamedInMemoryEntity>;
9+
export default function NamedEntityMixin<S extends InMemoryEntityConstructor>(superclass: S): S & NamedInMemoryEntityConstructor;

dist/js/entity/mixins/NamedEntityMixin.js

Lines changed: 14 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,35 +1,39 @@
11
"use strict";
22
Object.defineProperty(exports, "__esModule", { value: true });
33
exports.namedEntityMixin = namedEntityMixin;
4-
exports.namedEntityMethodsMixin = namedEntityMethodsMixin;
54
exports.default = NamedEntityMixin;
6-
function namedEntityMixin(item) {
7-
const properties = {
5+
function schemaMixin(item) {
6+
const schema = {
87
get name() {
98
return item.prop("name", "");
109
},
1110
set name(name) {
1211
item.setProp("name", name);
1312
},
1413
};
15-
Object.defineProperties(item, Object.getOwnPropertyDescriptors(properties));
16-
return properties;
14+
Object.defineProperties(item, Object.getOwnPropertyDescriptors(schema));
15+
return schema;
1716
}
18-
function namedEntityMethodsMixin(item) {
19-
const methods = {
17+
function propertiesMixin(item) {
18+
const properties = {
2019
setName(name) {
2120
item.setProp("name", name);
2221
},
2322
};
24-
Object.defineProperties(item, Object.getOwnPropertyDescriptors(methods));
25-
return methods;
23+
Object.defineProperties(item, Object.getOwnPropertyDescriptors(properties));
24+
return properties;
25+
}
26+
function namedEntityMixin(item) {
27+
return {
28+
...schemaMixin(item),
29+
...propertiesMixin(item),
30+
};
2631
}
2732
function NamedEntityMixin(superclass) {
2833
class NamedEntityMixin extends superclass {
2934
constructor(...args) {
3035
super(...args);
3136
namedEntityMixin(this);
32-
namedEntityMethodsMixin(this);
3337
}
3438
}
3539
return NamedEntityMixin;

dist/js/entity/other.d.ts

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ declare const DefaultableInMemoryEntity_base: typeof InMemoryEntity & import("..
1010
};
1111
export declare class DefaultableInMemoryEntity extends DefaultableInMemoryEntity_base {
1212
}
13-
export declare const NamedInMemoryEntity: typeof InMemoryEntity & import("./mixins/NamedEntityMixin").NamedEntityConstructor;
13+
export declare const NamedInMemoryEntity: typeof InMemoryEntity & import("./mixins/NamedEntityMixin").NamedInMemoryEntityConstructor;
1414
export declare const NamedDefaultableInMemoryEntity: typeof InMemoryEntity & import("../utils/types").Constructor<{
1515
isDefault: boolean;
1616
}> & {
@@ -19,7 +19,7 @@ export declare const NamedDefaultableInMemoryEntity: typeof InMemoryEntity & imp
1919
}>(this: T): InstanceType<T> & {
2020
isDefault: boolean;
2121
};
22-
} & import("./mixins/NamedEntityMixin").NamedEntityConstructor;
22+
} & import("./mixins/NamedEntityMixin").NamedInMemoryEntityConstructor;
2323
export declare const HasMetadataNamedDefaultableInMemoryEntity: {
2424
new (...args: any[]): {
2525
metadata: object;
@@ -59,7 +59,7 @@ export declare const HasMetadataNamedDefaultableInMemoryEntity: {
5959
}>(this: T): InstanceType<T> & {
6060
isDefault: boolean;
6161
};
62-
} & import("./mixins/NamedEntityMixin").NamedEntityConstructor;
62+
} & import("./mixins/NamedEntityMixin").NamedInMemoryEntityConstructor;
6363
export declare const HasConsistencyChecksHasMetadataNamedDefaultableInMemoryEntity: {
6464
new (...args: any[]): {
6565
consistencyChecks: import("@mat3ra/esse/dist/js/types").ConsistencyCheck[];
@@ -130,7 +130,7 @@ export declare const HasConsistencyChecksHasMetadataNamedDefaultableInMemoryEnti
130130
}>(this: T): InstanceType<T> & {
131131
isDefault: boolean;
132132
};
133-
} & import("./mixins/NamedEntityMixin").NamedEntityConstructor;
133+
} & import("./mixins/NamedEntityMixin").NamedInMemoryEntityConstructor;
134134
export declare const NamedDefaultableRepetitionImportantSettingsInMemoryEntity: {
135135
new (...args: any[]): {
136136
readonly important: any;
@@ -212,7 +212,7 @@ export declare const NamedDefaultableRepetitionImportantSettingsInMemoryEntity:
212212
}>(this: T): InstanceType<T> & {
213213
isDefault: boolean;
214214
};
215-
} & import("./mixins/NamedEntityMixin").NamedEntityConstructor;
215+
} & import("./mixins/NamedEntityMixin").NamedInMemoryEntityConstructor;
216216
export declare const NamedDefaultableRepetitionContextAndRenderInMemoryEntity: {
217217
new (...params: any[]): {
218218
_context: import("./mixins/context").Context;
@@ -297,7 +297,7 @@ export declare const NamedDefaultableRepetitionContextAndRenderInMemoryEntity: {
297297
}>(this: T): InstanceType<T> & {
298298
isDefault: boolean;
299299
};
300-
} & import("./mixins/NamedEntityMixin").NamedEntityConstructor;
300+
} & import("./mixins/NamedEntityMixin").NamedInMemoryEntityConstructor;
301301
export declare const NamedDefaultableRepetitionRuntimeItemsImportantSettingsContextAndRenderHashedInMemoryEntity: {
302302
new (...args: any[]): {
303303
getHashObject(): {};
@@ -538,5 +538,5 @@ export declare const NamedDefaultableRepetitionRuntimeItemsImportantSettingsCont
538538
}>(this: T): InstanceType<T> & {
539539
isDefault: boolean;
540540
};
541-
} & import("./mixins/NamedEntityMixin").NamedEntityConstructor;
541+
} & import("./mixins/NamedEntityMixin").NamedInMemoryEntityConstructor;
542542
export {};

src/js/entity/mixins/NamedEntityMixin.ts

Lines changed: 17 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,8 @@ import type { NameEntitySchema } from "@mat3ra/esse/dist/js/types";
44
import type { Constructor } from "../../utils/types";
55
import { InMemoryEntity, InMemoryEntityConstructor } from "../in_memory";
66

7-
export function namedEntityMixin(item: InMemoryEntity) {
8-
const properties = {
7+
function schemaMixin(item: InMemoryEntity) {
8+
const schema = {
99
get name(): string {
1010
return item.prop("name", "");
1111
},
@@ -14,37 +14,40 @@ export function namedEntityMixin(item: InMemoryEntity) {
1414
},
1515
} satisfies NameEntitySchema;
1616

17-
Object.defineProperties(item, Object.getOwnPropertyDescriptors(properties));
17+
Object.defineProperties(item, Object.getOwnPropertyDescriptors(schema));
1818

19-
return properties;
19+
return schema;
2020
}
2121

22-
export function namedEntityMethodsMixin(item: InMemoryEntity) {
23-
const methods = {
22+
function propertiesMixin(item: InMemoryEntity) {
23+
const properties = {
2424
setName(name: string) {
2525
item.setProp("name", name);
2626
},
2727
};
2828

29-
Object.defineProperties(item, Object.getOwnPropertyDescriptors(methods));
29+
Object.defineProperties(item, Object.getOwnPropertyDescriptors(properties));
3030

31-
return methods;
31+
return properties;
3232
}
3333

34-
type NamedEntityProps = ReturnType<typeof namedEntityMixin>;
35-
type NamedEntityMethods = ReturnType<typeof namedEntityMethodsMixin>;
34+
export function namedEntityMixin(item: InMemoryEntity) {
35+
return {
36+
...schemaMixin(item),
37+
...propertiesMixin(item),
38+
};
39+
}
3640

37-
export type NamedEntity = NamedEntityProps & NamedEntityMethods;
38-
export type NamedEntityConstructor = Constructor<NamedEntity>;
41+
export type NamedInMemoryEntity = ReturnType<typeof namedEntityMixin>;
42+
export type NamedInMemoryEntityConstructor = Constructor<NamedInMemoryEntity>;
3943

4044
export default function NamedEntityMixin<S extends InMemoryEntityConstructor>(superclass: S) {
4145
class NamedEntityMixin extends superclass {
4246
constructor(...args: any[]) {
4347
super(...args);
4448
namedEntityMixin(this);
45-
namedEntityMethodsMixin(this);
4649
}
4750
}
4851

49-
return NamedEntityMixin as S & NamedEntityConstructor;
52+
return NamedEntityMixin as S & NamedInMemoryEntityConstructor;
5053
}

0 commit comments

Comments
 (0)