Skip to content

Commit f907d42

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

21 files changed

+513
-424
lines changed
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
import type { ConsistencyCheck } from "@mat3ra/esse/dist/js/types";
2+
import type { Constructor } from "../../utils/types";
3+
import { InMemoryEntity, InMemoryEntityConstructor } from "../in_memory";
4+
export declare function hasConsistencyChecksMixin(item: InMemoryEntity): {
5+
addConsistencyChecks(array: ConsistencyCheck[]): void;
6+
consistencyChecks: ConsistencyCheck[];
7+
};
8+
export type HasConsistencyChecksInMemoryEntity = ReturnType<typeof hasConsistencyChecksMixin>;
9+
export type HasConsistencyChecksInMemoryEntityConstructor = Constructor<HasConsistencyChecksInMemoryEntity>;
10+
export default function HasConsistencyChecksMixin<S extends InMemoryEntityConstructor>(superclass: S): S & HasConsistencyChecksInMemoryEntityConstructor;
Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
"use strict";
2+
Object.defineProperty(exports, "__esModule", { value: true });
3+
exports.hasConsistencyChecksMixin = hasConsistencyChecksMixin;
4+
exports.default = HasConsistencyChecksMixin;
5+
function schemaMixin(item) {
6+
const schema = {
7+
get consistencyChecks() {
8+
return item.prop("consistencyChecks", []);
9+
},
10+
set consistencyChecks(array) {
11+
item.setProp("consistencyChecks", array);
12+
},
13+
};
14+
Object.defineProperties(item, Object.getOwnPropertyDescriptors(schema));
15+
return schema;
16+
}
17+
function propertiesMixin(item) {
18+
const properties = {
19+
addConsistencyChecks(array) {
20+
item.consistencyChecks = [...(item.consistencyChecks || []), ...array];
21+
},
22+
};
23+
Object.defineProperties(item, Object.getOwnPropertyDescriptors(properties));
24+
return properties;
25+
}
26+
function hasConsistencyChecksMixin(item) {
27+
return {
28+
...schemaMixin(item),
29+
...propertiesMixin(item),
30+
};
31+
}
32+
function HasConsistencyChecksMixin(superclass) {
33+
class HasConsistencyChecksMixin extends superclass {
34+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
35+
constructor(...args) {
36+
super(...args);
37+
hasConsistencyChecksMixin(this);
38+
}
39+
}
40+
return HasConsistencyChecksMixin;
41+
}
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
import type { DescriptionSchema } from "@mat3ra/esse/dist/js/types";
2+
import type { Constructor } from "../../utils/types";
3+
import { InMemoryEntity, InMemoryEntityConstructor } from "../in_memory";
4+
export declare function hasDescriptionMixin(item: InMemoryEntity): {
5+
description: string;
6+
descriptionObject: DescriptionSchema["descriptionObject"];
7+
};
8+
export type HasDescriptionInMemoryEntity = ReturnType<typeof hasDescriptionMixin>;
9+
export type HasDescriptionInMemoryEntityConstructor = Constructor<HasDescriptionInMemoryEntity>;
10+
export default function HasDescriptionMixin<S extends InMemoryEntityConstructor>(superclass: S): S & HasDescriptionInMemoryEntityConstructor;
Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
"use strict";
2+
Object.defineProperty(exports, "__esModule", { value: true });
3+
exports.hasDescriptionMixin = hasDescriptionMixin;
4+
exports.default = HasDescriptionMixin;
5+
function schemaMixin(item) {
6+
const schema = {
7+
get description() {
8+
return item.prop("description", "");
9+
},
10+
set description(string) {
11+
item.setProp("description", string);
12+
},
13+
get descriptionObject() {
14+
return item.prop("descriptionObject");
15+
},
16+
set descriptionObject(obj) {
17+
item.setProp("descriptionObject", obj);
18+
},
19+
};
20+
Object.defineProperties(item, Object.getOwnPropertyDescriptors(schema));
21+
return schema;
22+
}
23+
function hasDescriptionMixin(item) {
24+
return schemaMixin(item);
25+
}
26+
function HasDescriptionMixin(superclass) {
27+
class HasDescriptionMixin extends superclass {
28+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
29+
constructor(...args) {
30+
super(...args);
31+
hasDescriptionMixin(this);
32+
}
33+
}
34+
return HasDescriptionMixin;
35+
}
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
import type { Constructor } from "../../utils/types";
2+
import { InMemoryEntity, InMemoryEntityConstructor } from "../in_memory";
3+
export declare function hasMetadataMixin(item: InMemoryEntity): {
4+
updateMetadata(object: object): void;
5+
metadata: object;
6+
};
7+
export type HasMetadataInMemoryEntity = ReturnType<typeof hasMetadataMixin>;
8+
export type HasMetadataInMemoryEntityConstructor = Constructor<HasMetadataInMemoryEntity>;
9+
export default function HasMetadataMixin<S extends InMemoryEntityConstructor>(superclass: S): S & HasMetadataInMemoryEntityConstructor;
Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
"use strict";
2+
Object.defineProperty(exports, "__esModule", { value: true });
3+
exports.hasMetadataMixin = hasMetadataMixin;
4+
exports.default = HasMetadataMixin;
5+
function schemaMixin(item) {
6+
const schema = {
7+
get metadata() {
8+
return item.prop("metadata", {});
9+
},
10+
set metadata(object) {
11+
item.setProp("metadata", object);
12+
},
13+
};
14+
Object.defineProperties(item, Object.getOwnPropertyDescriptors(schema));
15+
return schema;
16+
}
17+
function propertiesMixin(item) {
18+
const properties = {
19+
updateMetadata(object) {
20+
item.metadata = { ...item.metadata, ...object };
21+
},
22+
};
23+
Object.defineProperties(item, Object.getOwnPropertyDescriptors(properties));
24+
return properties;
25+
}
26+
function hasMetadataMixin(item) {
27+
return {
28+
...schemaMixin(item),
29+
...propertiesMixin(item),
30+
};
31+
}
32+
function HasMetadataMixin(superclass) {
33+
class HasMetadataMixin extends superclass {
34+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
35+
constructor(...args) {
36+
super(...args);
37+
hasMetadataMixin(this);
38+
}
39+
}
40+
return HasMetadataMixin;
41+
}
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
import type { Constructor } from "../../utils/types";
2+
import { InMemoryEntity, InMemoryEntityConstructor } from "../in_memory";
3+
export declare function hasScopeTrackMixin(item: InMemoryEntity): {
4+
scopeTrack: unknown[];
5+
};
6+
export type HasScopeTrackInMemoryEntity = ReturnType<typeof hasScopeTrackMixin>;
7+
export type HasScopeTrackInMemoryEntityConstructor = Constructor<HasScopeTrackInMemoryEntity>;
8+
export default function HasScopeTrackMixin<S extends InMemoryEntityConstructor>(superclass: S): S & HasScopeTrackInMemoryEntityConstructor;
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
"use strict";
2+
Object.defineProperty(exports, "__esModule", { value: true });
3+
exports.hasScopeTrackMixin = hasScopeTrackMixin;
4+
exports.default = HasScopeTrackMixin;
5+
function schemaMixin(item) {
6+
const schema = {
7+
get scopeTrack() {
8+
return item.prop("scopeTrack", []);
9+
},
10+
set scopeTrack(array) {
11+
item.setProp("scopeTrack", array);
12+
},
13+
};
14+
Object.defineProperties(item, Object.getOwnPropertyDescriptors(schema));
15+
return schema;
16+
}
17+
function hasScopeTrackMixin(item) {
18+
return schemaMixin(item);
19+
}
20+
function HasScopeTrackMixin(superclass) {
21+
class HasScopeTrackMixin extends superclass {
22+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
23+
constructor(...args) {
24+
super(...args);
25+
hasScopeTrackMixin(this);
26+
}
27+
}
28+
return HasScopeTrackMixin;
29+
}

dist/js/entity/mixins/NamedEntityMixin.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@ function namedEntityMixin(item) {
3131
}
3232
function NamedEntityMixin(superclass) {
3333
class NamedEntityMixin extends superclass {
34+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
3435
constructor(...args) {
3536
super(...args);
3637
namedEntityMixin(this);
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
import type { Constructor } from "src/js/utils/types";
2+
import type { InMemoryEntity, InMemoryEntityConstructor } from "../in_memory";
3+
export declare function taggableMixin(item: InMemoryEntity): {
4+
setTags(array: string[]): void;
5+
tags: string[];
6+
};
7+
export type TaggableInMemoryEntity = ReturnType<typeof taggableMixin>;
8+
export type TaggableInMemoryEntityConstructor = Constructor<TaggableInMemoryEntity>;
9+
export default function TaggableMixin<S extends InMemoryEntityConstructor>(superclass: S): S & TaggableInMemoryEntityConstructor;

0 commit comments

Comments
 (0)