From 504737dba9d1554bcf2684f077578616075a9d26 Mon Sep 17 00:00:00 2001 From: Kostiantyn Dvornik Date: Tue, 24 Jun 2025 14:03:12 +0300 Subject: [PATCH 1/6] chore: cleanup mixins --- dist/js/entity/index.d.ts | 4 +- dist/js/entity/index.js | 6 +- dist/js/entity/mixins/DefaultableMixin.d.ts | 17 ++---- dist/js/entity/mixins/DefaultableMixin.js | 36 +++++------- .../mixins/HasConsistencyChecksMixin.d.ts | 9 ++- .../mixins/HasConsistencyChecksMixin.js | 34 ++--------- dist/js/entity/mixins/HasMetadataMixin.d.ts | 9 ++- dist/js/entity/mixins/HasMetadataMixin.js | 34 ++--------- dist/js/entity/mixins/NamedEntityMixin.d.ts | 9 ++- dist/js/entity/mixins/NamedEntityMixin.js | 34 ++--------- dist/js/entity/mixins/props.d.ts | 6 +- dist/js/entity/mixins/props.js | 10 +--- dist/js/entity/other.d.ts | 50 ++++------------- dist/js/entity/other.js | 35 +++++++++--- src/js/entity/index.ts | 14 +---- src/js/entity/mixins/DefaultableMixin.ts | 56 +++++++++---------- .../mixins/HasConsistencyChecksMixin.ts | 49 ++++------------ src/js/entity/mixins/HasMetadataMixin.ts | 47 ++++------------ src/js/entity/mixins/NamedEntityMixin.ts | 47 ++++------------ src/js/entity/mixins/props.ts | 14 +---- src/js/entity/other.ts | 39 ++++++------- tests/js/utils/class.tests.ts | 15 ++++- 22 files changed, 185 insertions(+), 389 deletions(-) diff --git a/dist/js/entity/index.d.ts b/dist/js/entity/index.d.ts index 95852dd5..0c72538c 100644 --- a/dist/js/entity/index.d.ts +++ b/dist/js/entity/index.d.ts @@ -3,7 +3,7 @@ import { ContextAndRenderFieldsMixin } from "./mixins/context"; import { RuntimeContextFieldMixin } from "./mixins/context_runtime"; import { FlowchartEntityMixin, FlowchartItemMixin } from "./mixins/flowchart"; import { HashedInputArrayMixin } from "./mixins/hash"; -import { DefaultableMixin, HasConsistencyChecksMixin, HasDescriptionMixin, HasMetadataMixin, HasScopeTrackMixin, NamedEntityMixin, TaggableMixin } from "./mixins/props"; +import { HasDescriptionMixin, HasScopeTrackMixin, TaggableMixin } from "./mixins/props"; import { RuntimeItemsMixin } from "./mixins/runtime_items"; import { DefaultableInMemoryEntity, HasConsistencyChecksHasMetadataNamedDefaultableInMemoryEntity, HasMetadataNamedDefaultableInMemoryEntity, NamedDefaultableInMemoryEntity, NamedDefaultableRepetitionContextAndRenderInMemoryEntity, NamedDefaultableRepetitionImportantSettingsInMemoryEntity, NamedDefaultableRepetitionRuntimeItemsImportantSettingsContextAndRenderHashedInMemoryEntity, NamedInMemoryEntity } from "./other"; import { InMemoryEntitySet } from "./set"; @@ -12,4 +12,4 @@ import { constructEntitySetFactoryByConfig } from "./set/factory"; import { InMemoryEntityInSetMixin, InMemoryEntitySetMixin } from "./set/mixins"; import { OrderedInMemoryEntityInSetMixin, OrderedInMemoryEntitySetMixin } from "./set/ordered/mixins"; import * as selectorsForEntitySet from "./set/selectors"; -export { InMemoryEntity, NamedInMemoryEntity, DefaultableInMemoryEntity, NamedDefaultableInMemoryEntity, HasMetadataNamedDefaultableInMemoryEntity, NamedDefaultableRepetitionContextAndRenderInMemoryEntity, NamedDefaultableRepetitionImportantSettingsInMemoryEntity, NamedDefaultableRepetitionRuntimeItemsImportantSettingsContextAndRenderHashedInMemoryEntity, HasConsistencyChecksHasMetadataNamedDefaultableInMemoryEntity, HasConsistencyChecksMixin, DefaultableMixin, HasDescriptionMixin, HasMetadataMixin, TaggableMixin, HasScopeTrackMixin, NamedEntityMixin, RuntimeItemsMixin, RuntimeContextFieldMixin, HashedInputArrayMixin, InMemoryEntitySet, ENTITY_SET_TYPES, constructEntitySetFactoryByConfig, selectorsForEntitySet, InMemoryEntitySetMixin, InMemoryEntityInSetMixin, OrderedInMemoryEntitySetMixin, OrderedInMemoryEntityInSetMixin, ContextAndRenderFieldsMixin, FlowchartEntityMixin, FlowchartItemMixin, }; +export { InMemoryEntity, NamedInMemoryEntity, DefaultableInMemoryEntity, NamedDefaultableInMemoryEntity, HasMetadataNamedDefaultableInMemoryEntity, NamedDefaultableRepetitionContextAndRenderInMemoryEntity, NamedDefaultableRepetitionImportantSettingsInMemoryEntity, NamedDefaultableRepetitionRuntimeItemsImportantSettingsContextAndRenderHashedInMemoryEntity, HasConsistencyChecksHasMetadataNamedDefaultableInMemoryEntity, HasDescriptionMixin, TaggableMixin, HasScopeTrackMixin, RuntimeItemsMixin, RuntimeContextFieldMixin, HashedInputArrayMixin, InMemoryEntitySet, ENTITY_SET_TYPES, constructEntitySetFactoryByConfig, selectorsForEntitySet, InMemoryEntitySetMixin, InMemoryEntityInSetMixin, OrderedInMemoryEntitySetMixin, OrderedInMemoryEntityInSetMixin, ContextAndRenderFieldsMixin, FlowchartEntityMixin, FlowchartItemMixin, }; diff --git a/dist/js/entity/index.js b/dist/js/entity/index.js index 62d26bb4..ddc02162 100644 --- a/dist/js/entity/index.js +++ b/dist/js/entity/index.js @@ -33,7 +33,7 @@ var __importStar = (this && this.__importStar) || (function () { }; })(); Object.defineProperty(exports, "__esModule", { value: true }); -exports.FlowchartItemMixin = exports.FlowchartEntityMixin = exports.ContextAndRenderFieldsMixin = exports.OrderedInMemoryEntityInSetMixin = exports.OrderedInMemoryEntitySetMixin = exports.InMemoryEntityInSetMixin = exports.InMemoryEntitySetMixin = exports.selectorsForEntitySet = exports.constructEntitySetFactoryByConfig = exports.ENTITY_SET_TYPES = exports.InMemoryEntitySet = exports.HashedInputArrayMixin = exports.RuntimeContextFieldMixin = exports.RuntimeItemsMixin = exports.NamedEntityMixin = exports.HasScopeTrackMixin = exports.TaggableMixin = exports.HasMetadataMixin = exports.HasDescriptionMixin = exports.DefaultableMixin = exports.HasConsistencyChecksMixin = exports.HasConsistencyChecksHasMetadataNamedDefaultableInMemoryEntity = exports.NamedDefaultableRepetitionRuntimeItemsImportantSettingsContextAndRenderHashedInMemoryEntity = exports.NamedDefaultableRepetitionImportantSettingsInMemoryEntity = exports.NamedDefaultableRepetitionContextAndRenderInMemoryEntity = exports.HasMetadataNamedDefaultableInMemoryEntity = exports.NamedDefaultableInMemoryEntity = exports.DefaultableInMemoryEntity = exports.NamedInMemoryEntity = exports.InMemoryEntity = void 0; +exports.FlowchartItemMixin = exports.FlowchartEntityMixin = exports.ContextAndRenderFieldsMixin = exports.OrderedInMemoryEntityInSetMixin = exports.OrderedInMemoryEntitySetMixin = exports.InMemoryEntityInSetMixin = exports.InMemoryEntitySetMixin = exports.selectorsForEntitySet = exports.constructEntitySetFactoryByConfig = exports.ENTITY_SET_TYPES = exports.InMemoryEntitySet = exports.HashedInputArrayMixin = exports.RuntimeContextFieldMixin = exports.RuntimeItemsMixin = exports.HasScopeTrackMixin = exports.TaggableMixin = exports.HasDescriptionMixin = exports.HasConsistencyChecksHasMetadataNamedDefaultableInMemoryEntity = exports.NamedDefaultableRepetitionRuntimeItemsImportantSettingsContextAndRenderHashedInMemoryEntity = exports.NamedDefaultableRepetitionImportantSettingsInMemoryEntity = exports.NamedDefaultableRepetitionContextAndRenderInMemoryEntity = exports.HasMetadataNamedDefaultableInMemoryEntity = exports.NamedDefaultableInMemoryEntity = exports.DefaultableInMemoryEntity = exports.NamedInMemoryEntity = exports.InMemoryEntity = void 0; const in_memory_1 = require("./in_memory"); Object.defineProperty(exports, "InMemoryEntity", { enumerable: true, get: function () { return in_memory_1.InMemoryEntity; } }); const context_1 = require("./mixins/context"); @@ -46,12 +46,8 @@ Object.defineProperty(exports, "FlowchartItemMixin", { enumerable: true, get: fu const hash_1 = require("./mixins/hash"); Object.defineProperty(exports, "HashedInputArrayMixin", { enumerable: true, get: function () { return hash_1.HashedInputArrayMixin; } }); const props_1 = require("./mixins/props"); -Object.defineProperty(exports, "DefaultableMixin", { enumerable: true, get: function () { return props_1.DefaultableMixin; } }); -Object.defineProperty(exports, "HasConsistencyChecksMixin", { enumerable: true, get: function () { return props_1.HasConsistencyChecksMixin; } }); Object.defineProperty(exports, "HasDescriptionMixin", { enumerable: true, get: function () { return props_1.HasDescriptionMixin; } }); -Object.defineProperty(exports, "HasMetadataMixin", { enumerable: true, get: function () { return props_1.HasMetadataMixin; } }); Object.defineProperty(exports, "HasScopeTrackMixin", { enumerable: true, get: function () { return props_1.HasScopeTrackMixin; } }); -Object.defineProperty(exports, "NamedEntityMixin", { enumerable: true, get: function () { return props_1.NamedEntityMixin; } }); Object.defineProperty(exports, "TaggableMixin", { enumerable: true, get: function () { return props_1.TaggableMixin; } }); const runtime_items_1 = require("./mixins/runtime_items"); Object.defineProperty(exports, "RuntimeItemsMixin", { enumerable: true, get: function () { return runtime_items_1.RuntimeItemsMixin; } }); diff --git a/dist/js/entity/mixins/DefaultableMixin.d.ts b/dist/js/entity/mixins/DefaultableMixin.d.ts index 63a5c8cf..f4fe1ec5 100644 --- a/dist/js/entity/mixins/DefaultableMixin.d.ts +++ b/dist/js/entity/mixins/DefaultableMixin.d.ts @@ -1,19 +1,14 @@ import type { Constructor } from "../../utils/types"; import { InMemoryEntity } from "../in_memory"; -type ClassBase = Constructor & { +export declare function defaultableEntityMixin(item: T): InMemoryEntity & DefaultableInMemoryEntity; +export declare function defaultableEntityStaticMixin(Item: Constructor): DefaultableInMemoryStaticEntity & Constructor & Constructor & { defaultConfig?: object | null; }; -export declare function defaultableMixinProps(item: T): { +export type DefaultableInMemoryEntity = { isDefault: boolean; }; -declare const staticProperties: { - createDefault(this: T): InstanceType & DefaultableInMemoryEntity; +export type DefaultableInMemoryStaticEntity = { + createDefault: () => InMemoryEntity & DefaultableInMemoryEntity; }; -export declare function defaultableMixinStaticProps(Item: T): { - createDefault(this: T_1): InstanceType & DefaultableInMemoryEntity; -}; -export type DefaultableInMemoryEntity = ReturnType; export type DefaultableInMemoryEntityConstructor = Constructor; -export type DefaultableConstructor = DefaultableInMemoryEntityConstructor & typeof staticProperties; -export default function DefaultableMixin(superclass: S): S & DefaultableConstructor; -export {}; +export type DefaultableConstructor = DefaultableInMemoryEntityConstructor & DefaultableInMemoryStaticEntity; diff --git a/dist/js/entity/mixins/DefaultableMixin.js b/dist/js/entity/mixins/DefaultableMixin.js index e01d62ae..afd926e4 100644 --- a/dist/js/entity/mixins/DefaultableMixin.js +++ b/dist/js/entity/mixins/DefaultableMixin.js @@ -1,36 +1,28 @@ "use strict"; +/* eslint-disable @typescript-eslint/no-explicit-any */ Object.defineProperty(exports, "__esModule", { value: true }); -exports.defaultableMixinProps = defaultableMixinProps; -exports.defaultableMixinStaticProps = defaultableMixinStaticProps; -exports.default = DefaultableMixin; -function defaultableMixinProps(item) { +exports.defaultableEntityMixin = defaultableEntityMixin; +exports.defaultableEntityStaticMixin = defaultableEntityStaticMixin; +function defaultableEntityMixin(item) { + // @ts-expect-error const properties = { get isDefault() { - return item.prop("isDefault", false); + return this.prop("isDefault", false); }, set isDefault(isDefault) { - item.setProp("isDefault", isDefault); + this.setProp("isDefault", isDefault); }, }; Object.defineProperties(item, Object.getOwnPropertyDescriptors(properties)); return properties; } -const staticProperties = { - createDefault() { - return new this(this.defaultConfig); - }, -}; -function defaultableMixinStaticProps(Item) { +function defaultableEntityStaticMixin(Item) { + // @ts-expect-error + const staticProperties = { + createDefault() { + return new this(this.defaultConfig); + }, + }; Object.defineProperties(Item, Object.getOwnPropertyDescriptors(staticProperties)); return staticProperties; } -function DefaultableMixin(superclass) { - class DefaultableMixin extends superclass { - constructor(...args) { - super(...args); - defaultableMixinProps(this); - } - } - defaultableMixinStaticProps(DefaultableMixin); - return DefaultableMixin; -} diff --git a/dist/js/entity/mixins/HasConsistencyChecksMixin.d.ts b/dist/js/entity/mixins/HasConsistencyChecksMixin.d.ts index 3f507252..be7326c1 100644 --- a/dist/js/entity/mixins/HasConsistencyChecksMixin.d.ts +++ b/dist/js/entity/mixins/HasConsistencyChecksMixin.d.ts @@ -1,10 +1,9 @@ import type { ConsistencyCheck } from "@mat3ra/esse/dist/js/types"; import type { Constructor } from "../../utils/types"; -import { InMemoryEntity, InMemoryEntityConstructor } from "../in_memory"; -export declare function hasConsistencyChecksMixin(item: InMemoryEntity): { - addConsistencyChecks(array: ConsistencyCheck[]): void; +import { InMemoryEntity } from "../in_memory"; +export declare function hasConsistencyChecksMixin(item: T): InMemoryEntity & HasConsistencyChecksInMemoryEntity; +export type HasConsistencyChecksInMemoryEntity = { consistencyChecks: ConsistencyCheck[]; + addConsistencyChecks: (array: ConsistencyCheck[]) => void; }; -export type HasConsistencyChecksInMemoryEntity = ReturnType; export type HasConsistencyChecksInMemoryEntityConstructor = Constructor; -export default function HasConsistencyChecksMixin(superclass: S): S & HasConsistencyChecksInMemoryEntityConstructor; diff --git a/dist/js/entity/mixins/HasConsistencyChecksMixin.js b/dist/js/entity/mixins/HasConsistencyChecksMixin.js index f0c739da..f71cb3e9 100644 --- a/dist/js/entity/mixins/HasConsistencyChecksMixin.js +++ b/dist/js/entity/mixins/HasConsistencyChecksMixin.js @@ -1,41 +1,19 @@ "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.hasConsistencyChecksMixin = hasConsistencyChecksMixin; -exports.default = HasConsistencyChecksMixin; -function schemaMixin(item) { - const schema = { +function hasConsistencyChecksMixin(item) { + // @ts-expect-error + const properties = { get consistencyChecks() { - return item.prop("consistencyChecks", []); + return this.prop("consistencyChecks", []); }, set consistencyChecks(array) { - item.setProp("consistencyChecks", array); + this.setProp("consistencyChecks", array); }, - }; - Object.defineProperties(item, Object.getOwnPropertyDescriptors(schema)); - return schema; -} -function propertiesMixin(item) { - const properties = { addConsistencyChecks(array) { - item.consistencyChecks = [...(item.consistencyChecks || []), ...array]; + this.consistencyChecks = [...(this.consistencyChecks || []), ...array]; }, }; Object.defineProperties(item, Object.getOwnPropertyDescriptors(properties)); return properties; } -function hasConsistencyChecksMixin(item) { - return { - ...schemaMixin(item), - ...propertiesMixin(item), - }; -} -function HasConsistencyChecksMixin(superclass) { - class HasConsistencyChecksMixin extends superclass { - // eslint-disable-next-line @typescript-eslint/no-explicit-any - constructor(...args) { - super(...args); - hasConsistencyChecksMixin(this); - } - } - return HasConsistencyChecksMixin; -} diff --git a/dist/js/entity/mixins/HasMetadataMixin.d.ts b/dist/js/entity/mixins/HasMetadataMixin.d.ts index 9aab3839..097d45aa 100644 --- a/dist/js/entity/mixins/HasMetadataMixin.d.ts +++ b/dist/js/entity/mixins/HasMetadataMixin.d.ts @@ -1,9 +1,8 @@ import type { Constructor } from "../../utils/types"; -import { InMemoryEntity, InMemoryEntityConstructor } from "../in_memory"; -export declare function hasMetadataMixin(item: InMemoryEntity): { - updateMetadata(object: object): void; +import { InMemoryEntity } from "../in_memory"; +export declare function hasMetadataMixin(item: T): InMemoryEntity & HasMetadataInMemoryEntity; +export type HasMetadataInMemoryEntity = { metadata: object; + updateMetadata: (object: object) => void; }; -export type HasMetadataInMemoryEntity = ReturnType; export type HasMetadataInMemoryEntityConstructor = Constructor; -export default function HasMetadataMixin(superclass: S): S & HasMetadataInMemoryEntityConstructor; diff --git a/dist/js/entity/mixins/HasMetadataMixin.js b/dist/js/entity/mixins/HasMetadataMixin.js index d69b028e..a513f28c 100644 --- a/dist/js/entity/mixins/HasMetadataMixin.js +++ b/dist/js/entity/mixins/HasMetadataMixin.js @@ -1,41 +1,19 @@ "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.hasMetadataMixin = hasMetadataMixin; -exports.default = HasMetadataMixin; -function schemaMixin(item) { - const schema = { +function hasMetadataMixin(item) { + // @ts-expect-error + const properties = { get metadata() { - return item.prop("metadata", {}); + return this.prop("metadata", {}); }, set metadata(object) { - item.setProp("metadata", object); + this.setProp("metadata", object); }, - }; - Object.defineProperties(item, Object.getOwnPropertyDescriptors(schema)); - return schema; -} -function propertiesMixin(item) { - const properties = { updateMetadata(object) { - item.metadata = { ...item.metadata, ...object }; + this.metadata = { ...this.metadata, ...object }; }, }; Object.defineProperties(item, Object.getOwnPropertyDescriptors(properties)); return properties; } -function hasMetadataMixin(item) { - return { - ...schemaMixin(item), - ...propertiesMixin(item), - }; -} -function HasMetadataMixin(superclass) { - class HasMetadataMixin extends superclass { - // eslint-disable-next-line @typescript-eslint/no-explicit-any - constructor(...args) { - super(...args); - hasMetadataMixin(this); - } - } - return HasMetadataMixin; -} diff --git a/dist/js/entity/mixins/NamedEntityMixin.d.ts b/dist/js/entity/mixins/NamedEntityMixin.d.ts index fc983d91..4ffdc6b8 100644 --- a/dist/js/entity/mixins/NamedEntityMixin.d.ts +++ b/dist/js/entity/mixins/NamedEntityMixin.d.ts @@ -1,9 +1,8 @@ import type { Constructor } from "../../utils/types"; -import { InMemoryEntity, InMemoryEntityConstructor } from "../in_memory"; -export declare function namedEntityMixin(item: InMemoryEntity): { - setName(name: string): void; +import { InMemoryEntity } from "../in_memory"; +export declare function namedEntityMixin(item: T): InMemoryEntity & NamedInMemoryEntity; +export type NamedInMemoryEntity = { name: string; + setName: (name: string) => void; }; -export type NamedInMemoryEntity = ReturnType; export type NamedInMemoryEntityConstructor = Constructor; -export default function NamedEntityMixin(superclass: S): S & NamedInMemoryEntityConstructor; diff --git a/dist/js/entity/mixins/NamedEntityMixin.js b/dist/js/entity/mixins/NamedEntityMixin.js index ad68cc39..1b153663 100644 --- a/dist/js/entity/mixins/NamedEntityMixin.js +++ b/dist/js/entity/mixins/NamedEntityMixin.js @@ -1,41 +1,19 @@ "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.namedEntityMixin = namedEntityMixin; -exports.default = NamedEntityMixin; -function schemaMixin(item) { - const schema = { +function namedEntityMixin(item) { + // @ts-expect-error + const properties = { get name() { - return item.prop("name", ""); + return this.prop("name", ""); }, set name(name) { - item.setProp("name", name); + this.setProp("name", name); }, - }; - Object.defineProperties(item, Object.getOwnPropertyDescriptors(schema)); - return schema; -} -function propertiesMixin(item) { - const properties = { setName(name) { - item.setProp("name", name); + this.setProp("name", name); }, }; Object.defineProperties(item, Object.getOwnPropertyDescriptors(properties)); return properties; } -function namedEntityMixin(item) { - return { - ...schemaMixin(item), - ...propertiesMixin(item), - }; -} -function NamedEntityMixin(superclass) { - class NamedEntityMixin extends superclass { - // eslint-disable-next-line @typescript-eslint/no-explicit-any - constructor(...args) { - super(...args); - namedEntityMixin(this); - } - } - return NamedEntityMixin; -} diff --git a/dist/js/entity/mixins/props.d.ts b/dist/js/entity/mixins/props.d.ts index 1ca01102..ff114f96 100644 --- a/dist/js/entity/mixins/props.d.ts +++ b/dist/js/entity/mixins/props.d.ts @@ -1,8 +1,4 @@ -import DefaultableMixin from "./DefaultableMixin"; -import HasConsistencyChecksMixin from "./HasConsistencyChecksMixin"; import HasDescriptionMixin from "./HasDescriptionMixin"; -import HasMetadataMixin from "./HasMetadataMixin"; import HasScopeTrackMixin from "./HasScopeTrackMixin"; -import NamedEntityMixin from "./NamedEntityMixin"; import TaggableMixin from "./TaggableMixin"; -export { DefaultableMixin, HasConsistencyChecksMixin, HasDescriptionMixin, HasMetadataMixin, HasScopeTrackMixin, NamedEntityMixin, TaggableMixin, }; +export { HasDescriptionMixin, HasScopeTrackMixin, TaggableMixin }; diff --git a/dist/js/entity/mixins/props.js b/dist/js/entity/mixins/props.js index 93d0b520..f9ec5e52 100644 --- a/dist/js/entity/mixins/props.js +++ b/dist/js/entity/mixins/props.js @@ -3,18 +3,10 @@ var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); -exports.TaggableMixin = exports.NamedEntityMixin = exports.HasScopeTrackMixin = exports.HasMetadataMixin = exports.HasDescriptionMixin = exports.HasConsistencyChecksMixin = exports.DefaultableMixin = void 0; -const DefaultableMixin_1 = __importDefault(require("./DefaultableMixin")); -exports.DefaultableMixin = DefaultableMixin_1.default; -const HasConsistencyChecksMixin_1 = __importDefault(require("./HasConsistencyChecksMixin")); -exports.HasConsistencyChecksMixin = HasConsistencyChecksMixin_1.default; +exports.TaggableMixin = exports.HasScopeTrackMixin = exports.HasDescriptionMixin = void 0; const HasDescriptionMixin_1 = __importDefault(require("./HasDescriptionMixin")); exports.HasDescriptionMixin = HasDescriptionMixin_1.default; -const HasMetadataMixin_1 = __importDefault(require("./HasMetadataMixin")); -exports.HasMetadataMixin = HasMetadataMixin_1.default; const HasScopeTrackMixin_1 = __importDefault(require("./HasScopeTrackMixin")); exports.HasScopeTrackMixin = HasScopeTrackMixin_1.default; -const NamedEntityMixin_1 = __importDefault(require("./NamedEntityMixin")); -exports.NamedEntityMixin = NamedEntityMixin_1.default; const TaggableMixin_1 = __importDefault(require("./TaggableMixin")); exports.TaggableMixin = TaggableMixin_1.default; diff --git a/dist/js/entity/other.d.ts b/dist/js/entity/other.d.ts index b2e97b20..e59e09be 100644 --- a/dist/js/entity/other.d.ts +++ b/dist/js/entity/other.d.ts @@ -1,27 +1,14 @@ import { InMemoryEntity } from "./in_memory"; -declare const DefaultableInMemoryEntity_base: typeof InMemoryEntity & import("./mixins/DefaultableMixin").DefaultableInMemoryEntityConstructor & { - createDefault & { - defaultConfig?: object | null; - }>(this: T): InstanceType & import("./mixins/DefaultableMixin").DefaultableInMemoryEntity; -}; -export declare class DefaultableInMemoryEntity extends DefaultableInMemoryEntity_base { +export declare class DefaultableInMemoryEntity extends InMemoryEntity { +} +export declare class NamedInMemoryEntity extends InMemoryEntity { +} +export declare class NamedDefaultableInMemoryEntity extends DefaultableInMemoryEntity { +} +export declare class HasMetadataNamedDefaultableInMemoryEntity extends NamedDefaultableInMemoryEntity { +} +export declare class HasConsistencyChecksHasMetadataNamedDefaultableInMemoryEntity extends HasMetadataNamedDefaultableInMemoryEntity { } -export declare const NamedInMemoryEntity: typeof InMemoryEntity & import("./mixins/NamedEntityMixin").NamedInMemoryEntityConstructor; -export declare const NamedDefaultableInMemoryEntity: typeof InMemoryEntity & import("./mixins/DefaultableMixin").DefaultableInMemoryEntityConstructor & { - createDefault & { - defaultConfig?: object | null; - }>(this: T): InstanceType & import("./mixins/DefaultableMixin").DefaultableInMemoryEntity; -} & import("./mixins/NamedEntityMixin").NamedInMemoryEntityConstructor; -export declare const HasMetadataNamedDefaultableInMemoryEntity: typeof InMemoryEntity & import("./mixins/DefaultableMixin").DefaultableInMemoryEntityConstructor & { - createDefault & { - defaultConfig?: object | null; - }>(this: T): InstanceType & import("./mixins/DefaultableMixin").DefaultableInMemoryEntity; -} & import("./mixins/NamedEntityMixin").NamedInMemoryEntityConstructor & import("./mixins/HasMetadataMixin").HasMetadataInMemoryEntityConstructor; -export declare const HasConsistencyChecksHasMetadataNamedDefaultableInMemoryEntity: typeof InMemoryEntity & import("./mixins/DefaultableMixin").DefaultableInMemoryEntityConstructor & { - createDefault & { - defaultConfig?: object | null; - }>(this: T): InstanceType & import("./mixins/DefaultableMixin").DefaultableInMemoryEntity; -} & import("./mixins/NamedEntityMixin").NamedInMemoryEntityConstructor & import("./mixins/HasMetadataMixin").HasMetadataInMemoryEntityConstructor & import("./mixins/HasConsistencyChecksMixin").HasConsistencyChecksInMemoryEntityConstructor; export declare const NamedDefaultableRepetitionImportantSettingsInMemoryEntity: { new (...args: any[]): { readonly important: any; @@ -95,11 +82,7 @@ export declare const NamedDefaultableRepetitionImportantSettingsInMemoryEntity: readonly slug: string; readonly isSystemEntity: boolean; }; -} & typeof InMemoryEntity & import("./mixins/DefaultableMixin").DefaultableInMemoryEntityConstructor & { - createDefault & { - defaultConfig?: object | null; - }>(this: T): InstanceType & import("./mixins/DefaultableMixin").DefaultableInMemoryEntity; -} & import("./mixins/NamedEntityMixin").NamedInMemoryEntityConstructor; +} & typeof NamedDefaultableInMemoryEntity; export declare const NamedDefaultableRepetitionContextAndRenderInMemoryEntity: { new (...params: any[]): { _context: import("./mixins/context").Context; @@ -176,11 +159,7 @@ export declare const NamedDefaultableRepetitionContextAndRenderInMemoryEntity: { readonly slug: string; readonly isSystemEntity: boolean; }; -} & typeof InMemoryEntity & import("./mixins/DefaultableMixin").DefaultableInMemoryEntityConstructor & { - createDefault & { - defaultConfig?: object | null; - }>(this: T): InstanceType & import("./mixins/DefaultableMixin").DefaultableInMemoryEntity; -} & import("./mixins/NamedEntityMixin").NamedInMemoryEntityConstructor; +} & typeof NamedDefaultableInMemoryEntity; export declare const NamedDefaultableRepetitionRuntimeItemsImportantSettingsContextAndRenderHashedInMemoryEntity: { new (...args: any[]): { getHashObject(): {}; @@ -413,9 +392,4 @@ export declare const NamedDefaultableRepetitionRuntimeItemsImportantSettingsCont readonly slug: string; readonly isSystemEntity: boolean; }; -} & typeof InMemoryEntity & import("./mixins/DefaultableMixin").DefaultableInMemoryEntityConstructor & { - createDefault & { - defaultConfig?: object | null; - }>(this: T): InstanceType & import("./mixins/DefaultableMixin").DefaultableInMemoryEntity; -} & import("./mixins/NamedEntityMixin").NamedInMemoryEntityConstructor; -export {}; +} & typeof NamedDefaultableInMemoryEntity; diff --git a/dist/js/entity/other.js b/dist/js/entity/other.js index a5fb1dd6..7ef78a29 100644 --- a/dist/js/entity/other.js +++ b/dist/js/entity/other.js @@ -3,17 +3,34 @@ Object.defineProperty(exports, "__esModule", { value: true }); exports.NamedDefaultableRepetitionRuntimeItemsImportantSettingsContextAndRenderHashedInMemoryEntity = exports.NamedDefaultableRepetitionContextAndRenderInMemoryEntity = exports.NamedDefaultableRepetitionImportantSettingsInMemoryEntity = exports.HasConsistencyChecksHasMetadataNamedDefaultableInMemoryEntity = exports.HasMetadataNamedDefaultableInMemoryEntity = exports.NamedDefaultableInMemoryEntity = exports.NamedInMemoryEntity = exports.DefaultableInMemoryEntity = void 0; const in_memory_1 = require("./in_memory"); const context_1 = require("./mixins/context"); +const DefaultableMixin_1 = require("./mixins/DefaultableMixin"); +const HasConsistencyChecksMixin_1 = require("./mixins/HasConsistencyChecksMixin"); const hash_1 = require("./mixins/hash"); -const props_1 = require("./mixins/props"); +const HasMetadataMixin_1 = require("./mixins/HasMetadataMixin"); +const NamedEntityMixin_1 = require("./mixins/NamedEntityMixin"); const repetition_1 = require("./mixins/repetition"); const runtime_items_1 = require("./mixins/runtime_items"); -class DefaultableInMemoryEntity extends (0, props_1.DefaultableMixin)(in_memory_1.InMemoryEntity) { +class DefaultableInMemoryEntity extends in_memory_1.InMemoryEntity { } exports.DefaultableInMemoryEntity = DefaultableInMemoryEntity; -exports.NamedInMemoryEntity = (0, props_1.NamedEntityMixin)(in_memory_1.InMemoryEntity); -exports.NamedDefaultableInMemoryEntity = (0, props_1.NamedEntityMixin)((0, props_1.DefaultableMixin)(in_memory_1.InMemoryEntity)); -exports.HasMetadataNamedDefaultableInMemoryEntity = (0, props_1.HasMetadataMixin)((0, props_1.NamedEntityMixin)((0, props_1.DefaultableMixin)(in_memory_1.InMemoryEntity))); -exports.HasConsistencyChecksHasMetadataNamedDefaultableInMemoryEntity = (0, props_1.HasConsistencyChecksMixin)(exports.HasMetadataNamedDefaultableInMemoryEntity); -exports.NamedDefaultableRepetitionImportantSettingsInMemoryEntity = (0, context_1.ImportantSettingsProviderMixin)((0, repetition_1.HasRepetitionMixin)((0, props_1.NamedEntityMixin)((0, props_1.DefaultableMixin)(in_memory_1.InMemoryEntity)))); -exports.NamedDefaultableRepetitionContextAndRenderInMemoryEntity = (0, context_1.ContextAndRenderFieldsMixin)((0, repetition_1.HasRepetitionMixin)((0, props_1.NamedEntityMixin)((0, props_1.DefaultableMixin)(in_memory_1.InMemoryEntity)))); -exports.NamedDefaultableRepetitionRuntimeItemsImportantSettingsContextAndRenderHashedInMemoryEntity = (0, hash_1.HashedEntityMixin)((0, context_1.ContextAndRenderFieldsMixin)((0, context_1.ImportantSettingsProviderMixin)((0, runtime_items_1.RuntimeItemsUIAllowedMixin)((0, runtime_items_1.RuntimeItemsUILogicMixin)((0, repetition_1.HasRepetitionMixin)((0, props_1.NamedEntityMixin)((0, props_1.DefaultableMixin)(in_memory_1.InMemoryEntity)))))))); +(0, DefaultableMixin_1.defaultableEntityMixin)(DefaultableInMemoryEntity.prototype); +(0, DefaultableMixin_1.defaultableEntityStaticMixin)(DefaultableInMemoryEntity); +class NamedInMemoryEntity extends in_memory_1.InMemoryEntity { +} +exports.NamedInMemoryEntity = NamedInMemoryEntity; +(0, NamedEntityMixin_1.namedEntityMixin)(NamedInMemoryEntity.prototype); +class NamedDefaultableInMemoryEntity extends DefaultableInMemoryEntity { +} +exports.NamedDefaultableInMemoryEntity = NamedDefaultableInMemoryEntity; +(0, NamedEntityMixin_1.namedEntityMixin)(NamedDefaultableInMemoryEntity.prototype); +class HasMetadataNamedDefaultableInMemoryEntity extends NamedDefaultableInMemoryEntity { +} +exports.HasMetadataNamedDefaultableInMemoryEntity = HasMetadataNamedDefaultableInMemoryEntity; +(0, HasMetadataMixin_1.hasMetadataMixin)(HasMetadataNamedDefaultableInMemoryEntity.prototype); +class HasConsistencyChecksHasMetadataNamedDefaultableInMemoryEntity extends HasMetadataNamedDefaultableInMemoryEntity { +} +exports.HasConsistencyChecksHasMetadataNamedDefaultableInMemoryEntity = HasConsistencyChecksHasMetadataNamedDefaultableInMemoryEntity; +(0, HasConsistencyChecksMixin_1.hasConsistencyChecksMixin)(HasConsistencyChecksHasMetadataNamedDefaultableInMemoryEntity.prototype); +exports.NamedDefaultableRepetitionImportantSettingsInMemoryEntity = (0, context_1.ImportantSettingsProviderMixin)((0, repetition_1.HasRepetitionMixin)(NamedDefaultableInMemoryEntity)); +exports.NamedDefaultableRepetitionContextAndRenderInMemoryEntity = (0, context_1.ContextAndRenderFieldsMixin)((0, repetition_1.HasRepetitionMixin)(NamedDefaultableInMemoryEntity)); +exports.NamedDefaultableRepetitionRuntimeItemsImportantSettingsContextAndRenderHashedInMemoryEntity = (0, hash_1.HashedEntityMixin)((0, context_1.ContextAndRenderFieldsMixin)((0, context_1.ImportantSettingsProviderMixin)((0, runtime_items_1.RuntimeItemsUIAllowedMixin)((0, runtime_items_1.RuntimeItemsUILogicMixin)((0, repetition_1.HasRepetitionMixin)(NamedDefaultableInMemoryEntity)))))); diff --git a/src/js/entity/index.ts b/src/js/entity/index.ts index 5cadaf7a..3176b30c 100644 --- a/src/js/entity/index.ts +++ b/src/js/entity/index.ts @@ -3,15 +3,7 @@ import { ContextAndRenderFieldsMixin } from "./mixins/context"; import { RuntimeContextFieldMixin } from "./mixins/context_runtime"; import { FlowchartEntityMixin, FlowchartItemMixin } from "./mixins/flowchart"; import { HashedInputArrayMixin } from "./mixins/hash"; -import { - DefaultableMixin, - HasConsistencyChecksMixin, - HasDescriptionMixin, - HasMetadataMixin, - HasScopeTrackMixin, - NamedEntityMixin, - TaggableMixin, -} from "./mixins/props"; +import { HasDescriptionMixin, HasScopeTrackMixin, TaggableMixin } from "./mixins/props"; import { RuntimeItemsMixin } from "./mixins/runtime_items"; import { DefaultableInMemoryEntity, @@ -43,13 +35,9 @@ export { NamedDefaultableRepetitionImportantSettingsInMemoryEntity, NamedDefaultableRepetitionRuntimeItemsImportantSettingsContextAndRenderHashedInMemoryEntity, HasConsistencyChecksHasMetadataNamedDefaultableInMemoryEntity, - HasConsistencyChecksMixin, - DefaultableMixin, HasDescriptionMixin, - HasMetadataMixin, TaggableMixin, HasScopeTrackMixin, - NamedEntityMixin, RuntimeItemsMixin, RuntimeContextFieldMixin, HashedInputArrayMixin, diff --git a/src/js/entity/mixins/DefaultableMixin.ts b/src/js/entity/mixins/DefaultableMixin.ts index ba6a69dc..bdf41f65 100644 --- a/src/js/entity/mixins/DefaultableMixin.ts +++ b/src/js/entity/mixins/DefaultableMixin.ts @@ -1,53 +1,49 @@ /* eslint-disable @typescript-eslint/no-explicit-any */ -import type { DefaultableEntitySchema } from "@mat3ra/esse/dist/js/types"; import type { Constructor } from "../../utils/types"; import { InMemoryEntity } from "../in_memory"; -type ClassBase = Constructor & { - defaultConfig?: object | null; -}; - -export function defaultableMixinProps(item: T) { - const properties = { +export function defaultableEntityMixin(item: T) { + // @ts-expect-error + const properties: InMemoryEntity & DefaultableInMemoryEntity = { get isDefault() { - return item.prop("isDefault", false); + return this.prop("isDefault", false); }, set isDefault(isDefault: boolean) { - item.setProp("isDefault", isDefault); + this.setProp("isDefault", isDefault); }, - } satisfies DefaultableEntitySchema; + }; Object.defineProperties(item, Object.getOwnPropertyDescriptors(properties)); return properties; } -const staticProperties = { - createDefault(this: T) { - return new this(this.defaultConfig) as InstanceType & DefaultableInMemoryEntity; - }, -}; +export function defaultableEntityStaticMixin(Item: Constructor) { + // @ts-expect-error + const staticProperties: DefaultableInMemoryStaticEntity & + Constructor & + Constructor & { + defaultConfig?: object | null; + } = { + createDefault() { + return new this(this.defaultConfig); + }, + }; -export function defaultableMixinStaticProps(Item: T) { Object.defineProperties(Item, Object.getOwnPropertyDescriptors(staticProperties)); return staticProperties; } -export type DefaultableInMemoryEntity = ReturnType; -export type DefaultableInMemoryEntityConstructor = Constructor; -export type DefaultableConstructor = DefaultableInMemoryEntityConstructor & typeof staticProperties; - -export default function DefaultableMixin(superclass: S) { - class DefaultableMixin extends superclass { - constructor(...args: any[]) { - super(...args); - defaultableMixinProps(this); - } - } +export type DefaultableInMemoryEntity = { + isDefault: boolean; +}; - defaultableMixinStaticProps(DefaultableMixin); +export type DefaultableInMemoryStaticEntity = { + createDefault: () => InMemoryEntity & DefaultableInMemoryEntity; +}; - return DefaultableMixin as S & DefaultableConstructor; -} +export type DefaultableInMemoryEntityConstructor = Constructor; +export type DefaultableConstructor = DefaultableInMemoryEntityConstructor & + DefaultableInMemoryStaticEntity; diff --git a/src/js/entity/mixins/HasConsistencyChecksMixin.ts b/src/js/entity/mixins/HasConsistencyChecksMixin.ts index 5893ba18..9dd09960 100644 --- a/src/js/entity/mixins/HasConsistencyChecksMixin.ts +++ b/src/js/entity/mixins/HasConsistencyChecksMixin.ts @@ -1,27 +1,19 @@ -import type { ConsistencyCheck, HasConsistencyCheckSchema } from "@mat3ra/esse/dist/js/types"; +import type { ConsistencyCheck } from "@mat3ra/esse/dist/js/types"; import type { Constructor } from "../../utils/types"; -import { InMemoryEntity, InMemoryEntityConstructor } from "../in_memory"; +import { InMemoryEntity } from "../in_memory"; -function schemaMixin(item: InMemoryEntity) { - const schema = { +export function hasConsistencyChecksMixin(item: T) { + // @ts-expect-error + const properties: InMemoryEntity & HasConsistencyChecksInMemoryEntity = { get consistencyChecks(): ConsistencyCheck[] { - return item.prop("consistencyChecks", []); + return this.prop("consistencyChecks", []); }, set consistencyChecks(array: ConsistencyCheck[]) { - item.setProp("consistencyChecks", array); + this.setProp("consistencyChecks", array); }, - } satisfies HasConsistencyCheckSchema; - - Object.defineProperties(item, Object.getOwnPropertyDescriptors(schema)); - - return schema; -} - -function propertiesMixin(item: InMemoryEntity & HasConsistencyCheckSchema) { - const properties = { addConsistencyChecks(array: ConsistencyCheck[]) { - item.consistencyChecks = [...(item.consistencyChecks || []), ...array]; + this.consistencyChecks = [...(this.consistencyChecks || []), ...array]; }, }; @@ -30,27 +22,10 @@ function propertiesMixin(item: InMemoryEntity & HasConsistencyCheckSchema) { return properties; } -export function hasConsistencyChecksMixin(item: InMemoryEntity) { - return { - ...schemaMixin(item), - ...propertiesMixin(item), - }; -} +export type HasConsistencyChecksInMemoryEntity = { + consistencyChecks: ConsistencyCheck[]; + addConsistencyChecks: (array: ConsistencyCheck[]) => void; +}; -export type HasConsistencyChecksInMemoryEntity = ReturnType; export type HasConsistencyChecksInMemoryEntityConstructor = Constructor; - -export default function HasConsistencyChecksMixin( - superclass: S, -) { - class HasConsistencyChecksMixin extends superclass { - // eslint-disable-next-line @typescript-eslint/no-explicit-any - constructor(...args: any[]) { - super(...args); - hasConsistencyChecksMixin(this); - } - } - - return HasConsistencyChecksMixin as S & HasConsistencyChecksInMemoryEntityConstructor; -} diff --git a/src/js/entity/mixins/HasMetadataMixin.ts b/src/js/entity/mixins/HasMetadataMixin.ts index 1511ced9..359efb80 100644 --- a/src/js/entity/mixins/HasMetadataMixin.ts +++ b/src/js/entity/mixins/HasMetadataMixin.ts @@ -1,27 +1,17 @@ -import type { MetadataSchema } from "@mat3ra/esse/dist/js/types"; - import type { Constructor } from "../../utils/types"; -import { InMemoryEntity, InMemoryEntityConstructor } from "../in_memory"; +import { InMemoryEntity } from "../in_memory"; -function schemaMixin(item: InMemoryEntity) { - const schema = { +export function hasMetadataMixin(item: T) { + // @ts-expect-error + const properties: InMemoryEntity & HasMetadataInMemoryEntity = { get metadata(): object { - return item.prop("metadata", {}); + return this.prop("metadata", {}); }, set metadata(object: object) { - item.setProp("metadata", object); + this.setProp("metadata", object); }, - } satisfies MetadataSchema; - - Object.defineProperties(item, Object.getOwnPropertyDescriptors(schema)); - - return schema; -} - -function propertiesMixin(item: InMemoryEntity & MetadataSchema) { - const properties = { updateMetadata(object: object) { - item.metadata = { ...item.metadata, ...object }; + this.metadata = { ...this.metadata, ...object }; }, }; @@ -30,24 +20,9 @@ function propertiesMixin(item: InMemoryEntity & MetadataSchema) { return properties; } -export function hasMetadataMixin(item: InMemoryEntity) { - return { - ...schemaMixin(item), - ...propertiesMixin(item), - }; -} +export type HasMetadataInMemoryEntity = { + metadata: object; + updateMetadata: (object: object) => void; +}; -export type HasMetadataInMemoryEntity = ReturnType; export type HasMetadataInMemoryEntityConstructor = Constructor; - -export default function HasMetadataMixin(superclass: S) { - class HasMetadataMixin extends superclass { - // eslint-disable-next-line @typescript-eslint/no-explicit-any - constructor(...args: any[]) { - super(...args); - hasMetadataMixin(this); - } - } - - return HasMetadataMixin as S & HasMetadataInMemoryEntityConstructor; -} diff --git a/src/js/entity/mixins/NamedEntityMixin.ts b/src/js/entity/mixins/NamedEntityMixin.ts index 4765101a..1410281e 100644 --- a/src/js/entity/mixins/NamedEntityMixin.ts +++ b/src/js/entity/mixins/NamedEntityMixin.ts @@ -1,27 +1,17 @@ -import type { NameEntitySchema } from "@mat3ra/esse/dist/js/types"; - import type { Constructor } from "../../utils/types"; -import { InMemoryEntity, InMemoryEntityConstructor } from "../in_memory"; +import { InMemoryEntity } from "../in_memory"; -function schemaMixin(item: InMemoryEntity) { - const schema = { +export function namedEntityMixin(item: T) { + // @ts-expect-error + const properties: InMemoryEntity & NamedInMemoryEntity = { get name(): string { - return item.prop("name", ""); + return this.prop("name", ""); }, set name(name: string) { - item.setProp("name", name); + this.setProp("name", name); }, - } satisfies NameEntitySchema; - - Object.defineProperties(item, Object.getOwnPropertyDescriptors(schema)); - - return schema; -} - -function propertiesMixin(item: InMemoryEntity) { - const properties = { setName(name: string) { - item.setProp("name", name); + this.setProp("name", name); }, }; @@ -30,24 +20,9 @@ function propertiesMixin(item: InMemoryEntity) { return properties; } -export function namedEntityMixin(item: InMemoryEntity) { - return { - ...schemaMixin(item), - ...propertiesMixin(item), - }; -} +export type NamedInMemoryEntity = { + name: string; + setName: (name: string) => void; +}; -export type NamedInMemoryEntity = ReturnType; export type NamedInMemoryEntityConstructor = Constructor; - -export default function NamedEntityMixin(superclass: S) { - class NamedEntityMixin extends superclass { - // eslint-disable-next-line @typescript-eslint/no-explicit-any - constructor(...args: any[]) { - super(...args); - namedEntityMixin(this); - } - } - - return NamedEntityMixin as S & NamedInMemoryEntityConstructor; -} diff --git a/src/js/entity/mixins/props.ts b/src/js/entity/mixins/props.ts index 11813fa5..60a97019 100644 --- a/src/js/entity/mixins/props.ts +++ b/src/js/entity/mixins/props.ts @@ -1,17 +1,5 @@ -import DefaultableMixin from "./DefaultableMixin"; -import HasConsistencyChecksMixin from "./HasConsistencyChecksMixin"; import HasDescriptionMixin from "./HasDescriptionMixin"; -import HasMetadataMixin from "./HasMetadataMixin"; import HasScopeTrackMixin from "./HasScopeTrackMixin"; -import NamedEntityMixin from "./NamedEntityMixin"; import TaggableMixin from "./TaggableMixin"; -export { - DefaultableMixin, - HasConsistencyChecksMixin, - HasDescriptionMixin, - HasMetadataMixin, - HasScopeTrackMixin, - NamedEntityMixin, - TaggableMixin, -}; +export { HasDescriptionMixin, HasScopeTrackMixin, TaggableMixin }; diff --git a/src/js/entity/other.ts b/src/js/entity/other.ts index 9e4e2f95..9bb6b715 100644 --- a/src/js/entity/other.ts +++ b/src/js/entity/other.ts @@ -1,35 +1,34 @@ import { InMemoryEntity } from "./in_memory"; import { ContextAndRenderFieldsMixin, ImportantSettingsProviderMixin } from "./mixins/context"; +import { defaultableEntityMixin, defaultableEntityStaticMixin } from "./mixins/DefaultableMixin"; +import { hasConsistencyChecksMixin } from "./mixins/HasConsistencyChecksMixin"; import { HashedEntityMixin } from "./mixins/hash"; -import { - DefaultableMixin, - HasConsistencyChecksMixin, - HasMetadataMixin, - NamedEntityMixin, -} from "./mixins/props"; +import { hasMetadataMixin } from "./mixins/HasMetadataMixin"; +import { namedEntityMixin } from "./mixins/NamedEntityMixin"; import { HasRepetitionMixin } from "./mixins/repetition"; import { RuntimeItemsUIAllowedMixin, RuntimeItemsUILogicMixin } from "./mixins/runtime_items"; -export class DefaultableInMemoryEntity extends DefaultableMixin(InMemoryEntity) {} +export class DefaultableInMemoryEntity extends InMemoryEntity {} +defaultableEntityMixin(DefaultableInMemoryEntity.prototype); +defaultableEntityStaticMixin(DefaultableInMemoryEntity); -export const NamedInMemoryEntity = NamedEntityMixin(InMemoryEntity); +export class NamedInMemoryEntity extends InMemoryEntity {} +namedEntityMixin(NamedInMemoryEntity.prototype); -export const NamedDefaultableInMemoryEntity = NamedEntityMixin(DefaultableMixin(InMemoryEntity)); +export class NamedDefaultableInMemoryEntity extends DefaultableInMemoryEntity {} +namedEntityMixin(NamedDefaultableInMemoryEntity.prototype); -export const HasMetadataNamedDefaultableInMemoryEntity = HasMetadataMixin( - NamedEntityMixin(DefaultableMixin(InMemoryEntity)), -); +export class HasMetadataNamedDefaultableInMemoryEntity extends NamedDefaultableInMemoryEntity {} +hasMetadataMixin(HasMetadataNamedDefaultableInMemoryEntity.prototype); -export const HasConsistencyChecksHasMetadataNamedDefaultableInMemoryEntity = - HasConsistencyChecksMixin(HasMetadataNamedDefaultableInMemoryEntity); +export class HasConsistencyChecksHasMetadataNamedDefaultableInMemoryEntity extends HasMetadataNamedDefaultableInMemoryEntity {} +hasConsistencyChecksMixin(HasConsistencyChecksHasMetadataNamedDefaultableInMemoryEntity.prototype); export const NamedDefaultableRepetitionImportantSettingsInMemoryEntity = - ImportantSettingsProviderMixin( - HasRepetitionMixin(NamedEntityMixin(DefaultableMixin(InMemoryEntity))), - ); + ImportantSettingsProviderMixin(HasRepetitionMixin(NamedDefaultableInMemoryEntity)); export const NamedDefaultableRepetitionContextAndRenderInMemoryEntity = ContextAndRenderFieldsMixin( - HasRepetitionMixin(NamedEntityMixin(DefaultableMixin(InMemoryEntity))), + HasRepetitionMixin(NamedDefaultableInMemoryEntity), ); export const NamedDefaultableRepetitionRuntimeItemsImportantSettingsContextAndRenderHashedInMemoryEntity = @@ -37,9 +36,7 @@ export const NamedDefaultableRepetitionRuntimeItemsImportantSettingsContextAndRe ContextAndRenderFieldsMixin( ImportantSettingsProviderMixin( RuntimeItemsUIAllowedMixin( - RuntimeItemsUILogicMixin( - HasRepetitionMixin(NamedEntityMixin(DefaultableMixin(InMemoryEntity))), - ), + RuntimeItemsUILogicMixin(HasRepetitionMixin(NamedDefaultableInMemoryEntity)), ), ), ), diff --git a/tests/js/utils/class.tests.ts b/tests/js/utils/class.tests.ts index 27f41fa0..a4ee4afd 100644 --- a/tests/js/utils/class.tests.ts +++ b/tests/js/utils/class.tests.ts @@ -2,11 +2,14 @@ import { expect } from "chai"; import { - DefaultableMixin, InMemoryEntity, NamedInMemoryEntity, RuntimeItemsMixin, } from "../../../src/js/entity/index"; +import { + defaultableEntityMixin, + defaultableEntityStaticMixin, +} from "../../../src/js/entity/mixins/DefaultableMixin"; import { extendClass, extendThis } from "../../../src/js/utils/class"; class BaseEntity extends RuntimeItemsMixin(InMemoryEntity) { @@ -15,7 +18,7 @@ class BaseEntity extends RuntimeItemsMixin(InMemoryEntity) { } } -class ExtendClassEntity extends DefaultableMixin(NamedInMemoryEntity) { +class ExtendClassEntity extends NamedInMemoryEntity { declare results: unknown; constructor(config: object, excluded = []) { @@ -28,6 +31,9 @@ class ExtendClassEntity extends DefaultableMixin(NamedInMemoryEntity) { } } +defaultableEntityStaticMixin(ExtendClassEntity); +defaultableEntityMixin(ExtendClassEntity.prototype); + class BaseBetweenEntity extends NamedInMemoryEntity { static staticAttr = "base"; @@ -56,7 +62,7 @@ class BetweenEntity extends BaseBetweenEntity { } } -class ExtendThisEntity extends DefaultableMixin(BetweenEntity) { +class ExtendThisEntity extends BetweenEntity { declare results: unknown; constructor(config: object) { @@ -69,6 +75,9 @@ class ExtendThisEntity extends DefaultableMixin(BetweenEntity) { } } +defaultableEntityStaticMixin(ExtendThisEntity); +defaultableEntityMixin(ExtendThisEntity.prototype); + describe("extendClass", () => { it("extends classes no excluded props", () => { const obj = new ExtendClassEntity({}); From 79e2e789fcae83e919199733b22c55bfbe342b0e Mon Sep 17 00:00:00 2001 From: Kostiantyn Dvornik Date: Tue, 24 Jun 2025 14:36:48 +0300 Subject: [PATCH 2/6] chore: cleanup mixins --- dist/js/entity/index.d.ts | 4 +- dist/js/entity/index.js | 4 +- .../js/entity/mixins/HasDescriptionMixin.d.ts | 7 ++- dist/js/entity/mixins/HasDescriptionMixin.js | 31 ++++-------- dist/js/entity/mixins/TaggableMixin.d.ts | 9 ++-- dist/js/entity/mixins/TaggableMixin.js | 34 +++----------- dist/js/entity/mixins/props.d.ts | 4 +- dist/js/entity/mixins/props.js | 6 +-- src/js/entity/index.ts | 4 +- src/js/entity/mixins/HasDescriptionMixin.ts | 41 ++++++---------- src/js/entity/mixins/TaggableMixin.ts | 47 +++++-------------- src/js/entity/mixins/props.ts | 4 +- 12 files changed, 55 insertions(+), 140 deletions(-) diff --git a/dist/js/entity/index.d.ts b/dist/js/entity/index.d.ts index 0c72538c..f63311c8 100644 --- a/dist/js/entity/index.d.ts +++ b/dist/js/entity/index.d.ts @@ -3,7 +3,7 @@ import { ContextAndRenderFieldsMixin } from "./mixins/context"; import { RuntimeContextFieldMixin } from "./mixins/context_runtime"; import { FlowchartEntityMixin, FlowchartItemMixin } from "./mixins/flowchart"; import { HashedInputArrayMixin } from "./mixins/hash"; -import { HasDescriptionMixin, HasScopeTrackMixin, TaggableMixin } from "./mixins/props"; +import { HasScopeTrackMixin } from "./mixins/props"; import { RuntimeItemsMixin } from "./mixins/runtime_items"; import { DefaultableInMemoryEntity, HasConsistencyChecksHasMetadataNamedDefaultableInMemoryEntity, HasMetadataNamedDefaultableInMemoryEntity, NamedDefaultableInMemoryEntity, NamedDefaultableRepetitionContextAndRenderInMemoryEntity, NamedDefaultableRepetitionImportantSettingsInMemoryEntity, NamedDefaultableRepetitionRuntimeItemsImportantSettingsContextAndRenderHashedInMemoryEntity, NamedInMemoryEntity } from "./other"; import { InMemoryEntitySet } from "./set"; @@ -12,4 +12,4 @@ import { constructEntitySetFactoryByConfig } from "./set/factory"; import { InMemoryEntityInSetMixin, InMemoryEntitySetMixin } from "./set/mixins"; import { OrderedInMemoryEntityInSetMixin, OrderedInMemoryEntitySetMixin } from "./set/ordered/mixins"; import * as selectorsForEntitySet from "./set/selectors"; -export { InMemoryEntity, NamedInMemoryEntity, DefaultableInMemoryEntity, NamedDefaultableInMemoryEntity, HasMetadataNamedDefaultableInMemoryEntity, NamedDefaultableRepetitionContextAndRenderInMemoryEntity, NamedDefaultableRepetitionImportantSettingsInMemoryEntity, NamedDefaultableRepetitionRuntimeItemsImportantSettingsContextAndRenderHashedInMemoryEntity, HasConsistencyChecksHasMetadataNamedDefaultableInMemoryEntity, HasDescriptionMixin, TaggableMixin, HasScopeTrackMixin, RuntimeItemsMixin, RuntimeContextFieldMixin, HashedInputArrayMixin, InMemoryEntitySet, ENTITY_SET_TYPES, constructEntitySetFactoryByConfig, selectorsForEntitySet, InMemoryEntitySetMixin, InMemoryEntityInSetMixin, OrderedInMemoryEntitySetMixin, OrderedInMemoryEntityInSetMixin, ContextAndRenderFieldsMixin, FlowchartEntityMixin, FlowchartItemMixin, }; +export { InMemoryEntity, NamedInMemoryEntity, DefaultableInMemoryEntity, NamedDefaultableInMemoryEntity, HasMetadataNamedDefaultableInMemoryEntity, NamedDefaultableRepetitionContextAndRenderInMemoryEntity, NamedDefaultableRepetitionImportantSettingsInMemoryEntity, NamedDefaultableRepetitionRuntimeItemsImportantSettingsContextAndRenderHashedInMemoryEntity, HasConsistencyChecksHasMetadataNamedDefaultableInMemoryEntity, HasScopeTrackMixin, RuntimeItemsMixin, RuntimeContextFieldMixin, HashedInputArrayMixin, InMemoryEntitySet, ENTITY_SET_TYPES, constructEntitySetFactoryByConfig, selectorsForEntitySet, InMemoryEntitySetMixin, InMemoryEntityInSetMixin, OrderedInMemoryEntitySetMixin, OrderedInMemoryEntityInSetMixin, ContextAndRenderFieldsMixin, FlowchartEntityMixin, FlowchartItemMixin, }; diff --git a/dist/js/entity/index.js b/dist/js/entity/index.js index ddc02162..2574ada4 100644 --- a/dist/js/entity/index.js +++ b/dist/js/entity/index.js @@ -33,7 +33,7 @@ var __importStar = (this && this.__importStar) || (function () { }; })(); Object.defineProperty(exports, "__esModule", { value: true }); -exports.FlowchartItemMixin = exports.FlowchartEntityMixin = exports.ContextAndRenderFieldsMixin = exports.OrderedInMemoryEntityInSetMixin = exports.OrderedInMemoryEntitySetMixin = exports.InMemoryEntityInSetMixin = exports.InMemoryEntitySetMixin = exports.selectorsForEntitySet = exports.constructEntitySetFactoryByConfig = exports.ENTITY_SET_TYPES = exports.InMemoryEntitySet = exports.HashedInputArrayMixin = exports.RuntimeContextFieldMixin = exports.RuntimeItemsMixin = exports.HasScopeTrackMixin = exports.TaggableMixin = exports.HasDescriptionMixin = exports.HasConsistencyChecksHasMetadataNamedDefaultableInMemoryEntity = exports.NamedDefaultableRepetitionRuntimeItemsImportantSettingsContextAndRenderHashedInMemoryEntity = exports.NamedDefaultableRepetitionImportantSettingsInMemoryEntity = exports.NamedDefaultableRepetitionContextAndRenderInMemoryEntity = exports.HasMetadataNamedDefaultableInMemoryEntity = exports.NamedDefaultableInMemoryEntity = exports.DefaultableInMemoryEntity = exports.NamedInMemoryEntity = exports.InMemoryEntity = void 0; +exports.FlowchartItemMixin = exports.FlowchartEntityMixin = exports.ContextAndRenderFieldsMixin = exports.OrderedInMemoryEntityInSetMixin = exports.OrderedInMemoryEntitySetMixin = exports.InMemoryEntityInSetMixin = exports.InMemoryEntitySetMixin = exports.selectorsForEntitySet = exports.constructEntitySetFactoryByConfig = exports.ENTITY_SET_TYPES = exports.InMemoryEntitySet = exports.HashedInputArrayMixin = exports.RuntimeContextFieldMixin = exports.RuntimeItemsMixin = exports.HasScopeTrackMixin = exports.HasConsistencyChecksHasMetadataNamedDefaultableInMemoryEntity = exports.NamedDefaultableRepetitionRuntimeItemsImportantSettingsContextAndRenderHashedInMemoryEntity = exports.NamedDefaultableRepetitionImportantSettingsInMemoryEntity = exports.NamedDefaultableRepetitionContextAndRenderInMemoryEntity = exports.HasMetadataNamedDefaultableInMemoryEntity = exports.NamedDefaultableInMemoryEntity = exports.DefaultableInMemoryEntity = exports.NamedInMemoryEntity = exports.InMemoryEntity = void 0; const in_memory_1 = require("./in_memory"); Object.defineProperty(exports, "InMemoryEntity", { enumerable: true, get: function () { return in_memory_1.InMemoryEntity; } }); const context_1 = require("./mixins/context"); @@ -46,9 +46,7 @@ Object.defineProperty(exports, "FlowchartItemMixin", { enumerable: true, get: fu const hash_1 = require("./mixins/hash"); Object.defineProperty(exports, "HashedInputArrayMixin", { enumerable: true, get: function () { return hash_1.HashedInputArrayMixin; } }); const props_1 = require("./mixins/props"); -Object.defineProperty(exports, "HasDescriptionMixin", { enumerable: true, get: function () { return props_1.HasDescriptionMixin; } }); Object.defineProperty(exports, "HasScopeTrackMixin", { enumerable: true, get: function () { return props_1.HasScopeTrackMixin; } }); -Object.defineProperty(exports, "TaggableMixin", { enumerable: true, get: function () { return props_1.TaggableMixin; } }); const runtime_items_1 = require("./mixins/runtime_items"); Object.defineProperty(exports, "RuntimeItemsMixin", { enumerable: true, get: function () { return runtime_items_1.RuntimeItemsMixin; } }); const other_1 = require("./other"); diff --git a/dist/js/entity/mixins/HasDescriptionMixin.d.ts b/dist/js/entity/mixins/HasDescriptionMixin.d.ts index 94c9e38a..520fe15a 100644 --- a/dist/js/entity/mixins/HasDescriptionMixin.d.ts +++ b/dist/js/entity/mixins/HasDescriptionMixin.d.ts @@ -1,10 +1,9 @@ import type { DescriptionSchema } from "@mat3ra/esse/dist/js/types"; import type { Constructor } from "../../utils/types"; -import { InMemoryEntity, InMemoryEntityConstructor } from "../in_memory"; -export declare function hasDescriptionMixin(item: InMemoryEntity): { +import { InMemoryEntity } from "../in_memory"; +export declare function hasDescriptionMixin(item: T): InMemoryEntity & HasDescriptionInMemoryEntity; +export type HasDescriptionInMemoryEntity = { description: string; descriptionObject: DescriptionSchema["descriptionObject"]; }; -export type HasDescriptionInMemoryEntity = ReturnType; export type HasDescriptionInMemoryEntityConstructor = Constructor; -export default function HasDescriptionMixin(superclass: S): S & HasDescriptionInMemoryEntityConstructor; diff --git a/dist/js/entity/mixins/HasDescriptionMixin.js b/dist/js/entity/mixins/HasDescriptionMixin.js index 359f2f87..ce240947 100644 --- a/dist/js/entity/mixins/HasDescriptionMixin.js +++ b/dist/js/entity/mixins/HasDescriptionMixin.js @@ -1,35 +1,22 @@ "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.hasDescriptionMixin = hasDescriptionMixin; -exports.default = HasDescriptionMixin; -function schemaMixin(item) { - const schema = { +function hasDescriptionMixin(item) { + // @ts-expect-error + const properties = { get description() { - return item.prop("description", ""); + return this.prop("description", ""); }, set description(string) { - item.setProp("description", string); + this.setProp("description", string); }, get descriptionObject() { - return item.prop("descriptionObject"); + return this.prop("descriptionObject"); }, set descriptionObject(obj) { - item.setProp("descriptionObject", obj); + this.setProp("descriptionObject", obj); }, }; - Object.defineProperties(item, Object.getOwnPropertyDescriptors(schema)); - return schema; -} -function hasDescriptionMixin(item) { - return schemaMixin(item); -} -function HasDescriptionMixin(superclass) { - class HasDescriptionMixin extends superclass { - // eslint-disable-next-line @typescript-eslint/no-explicit-any - constructor(...args) { - super(...args); - hasDescriptionMixin(this); - } - } - return HasDescriptionMixin; + Object.defineProperties(item, Object.getOwnPropertyDescriptors(properties)); + return properties; } diff --git a/dist/js/entity/mixins/TaggableMixin.d.ts b/dist/js/entity/mixins/TaggableMixin.d.ts index 6c19e922..55e7b0aa 100644 --- a/dist/js/entity/mixins/TaggableMixin.d.ts +++ b/dist/js/entity/mixins/TaggableMixin.d.ts @@ -1,9 +1,8 @@ import type { Constructor } from "../../utils/types"; -import type { InMemoryEntity, InMemoryEntityConstructor } from "../in_memory"; -export declare function taggableMixin(item: InMemoryEntity): { - setTags(array: string[]): void; +import { InMemoryEntity } from "../in_memory"; +export declare function taggableMixin(item: T): InMemoryEntity & TaggableInMemoryEntity; +export type TaggableInMemoryEntity = { tags: string[]; + setTags: (array: string[]) => void; }; -export type TaggableInMemoryEntity = ReturnType; export type TaggableInMemoryEntityConstructor = Constructor; -export default function TaggableMixin(superclass: S): S & TaggableInMemoryEntityConstructor; diff --git a/dist/js/entity/mixins/TaggableMixin.js b/dist/js/entity/mixins/TaggableMixin.js index 45135b49..eb3df3e6 100644 --- a/dist/js/entity/mixins/TaggableMixin.js +++ b/dist/js/entity/mixins/TaggableMixin.js @@ -1,41 +1,19 @@ "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.taggableMixin = taggableMixin; -exports.default = TaggableMixin; -function schemaMixin(item) { - const schema = { +function taggableMixin(item) { + // @ts-expect-error + const properties = { get tags() { - return item.prop("tags", []); + return this.prop("tags", []); }, set tags(array) { - item.setProp("tags", array); + this.setProp("tags", array); }, - }; - Object.defineProperties(item, Object.getOwnPropertyDescriptors(schema)); - return schema; -} -function propertiesMixin(item) { - const properties = { setTags(array) { - item.tags = array.filter((value, index, self) => self.indexOf(value) === index); + this.tags = array.filter((value, index, self) => self.indexOf(value) === index); }, }; Object.defineProperties(item, Object.getOwnPropertyDescriptors(properties)); return properties; } -function taggableMixin(item) { - return { - ...schemaMixin(item), - ...propertiesMixin(item), - }; -} -function TaggableMixin(superclass) { - class TaggableMixin extends superclass { - // eslint-disable-next-line @typescript-eslint/no-explicit-any - constructor(...args) { - super(...args); - taggableMixin(this); - } - } - return TaggableMixin; -} diff --git a/dist/js/entity/mixins/props.d.ts b/dist/js/entity/mixins/props.d.ts index ff114f96..5cea781e 100644 --- a/dist/js/entity/mixins/props.d.ts +++ b/dist/js/entity/mixins/props.d.ts @@ -1,4 +1,2 @@ -import HasDescriptionMixin from "./HasDescriptionMixin"; import HasScopeTrackMixin from "./HasScopeTrackMixin"; -import TaggableMixin from "./TaggableMixin"; -export { HasDescriptionMixin, HasScopeTrackMixin, TaggableMixin }; +export { HasScopeTrackMixin }; diff --git a/dist/js/entity/mixins/props.js b/dist/js/entity/mixins/props.js index f9ec5e52..d8e7ae1c 100644 --- a/dist/js/entity/mixins/props.js +++ b/dist/js/entity/mixins/props.js @@ -3,10 +3,6 @@ var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); -exports.TaggableMixin = exports.HasScopeTrackMixin = exports.HasDescriptionMixin = void 0; -const HasDescriptionMixin_1 = __importDefault(require("./HasDescriptionMixin")); -exports.HasDescriptionMixin = HasDescriptionMixin_1.default; +exports.HasScopeTrackMixin = void 0; const HasScopeTrackMixin_1 = __importDefault(require("./HasScopeTrackMixin")); exports.HasScopeTrackMixin = HasScopeTrackMixin_1.default; -const TaggableMixin_1 = __importDefault(require("./TaggableMixin")); -exports.TaggableMixin = TaggableMixin_1.default; diff --git a/src/js/entity/index.ts b/src/js/entity/index.ts index 3176b30c..00f98e76 100644 --- a/src/js/entity/index.ts +++ b/src/js/entity/index.ts @@ -3,7 +3,7 @@ import { ContextAndRenderFieldsMixin } from "./mixins/context"; import { RuntimeContextFieldMixin } from "./mixins/context_runtime"; import { FlowchartEntityMixin, FlowchartItemMixin } from "./mixins/flowchart"; import { HashedInputArrayMixin } from "./mixins/hash"; -import { HasDescriptionMixin, HasScopeTrackMixin, TaggableMixin } from "./mixins/props"; +import { HasScopeTrackMixin } from "./mixins/props"; import { RuntimeItemsMixin } from "./mixins/runtime_items"; import { DefaultableInMemoryEntity, @@ -35,8 +35,6 @@ export { NamedDefaultableRepetitionImportantSettingsInMemoryEntity, NamedDefaultableRepetitionRuntimeItemsImportantSettingsContextAndRenderHashedInMemoryEntity, HasConsistencyChecksHasMetadataNamedDefaultableInMemoryEntity, - HasDescriptionMixin, - TaggableMixin, HasScopeTrackMixin, RuntimeItemsMixin, RuntimeContextFieldMixin, diff --git a/src/js/entity/mixins/HasDescriptionMixin.ts b/src/js/entity/mixins/HasDescriptionMixin.ts index edc7a893..cb6768f3 100644 --- a/src/js/entity/mixins/HasDescriptionMixin.ts +++ b/src/js/entity/mixins/HasDescriptionMixin.ts @@ -1,44 +1,33 @@ import type { DescriptionSchema } from "@mat3ra/esse/dist/js/types"; import type { Constructor } from "../../utils/types"; -import { InMemoryEntity, InMemoryEntityConstructor } from "../in_memory"; +import { InMemoryEntity } from "../in_memory"; -function schemaMixin(item: InMemoryEntity) { - const schema = { +export function hasDescriptionMixin(item: T) { + // @ts-expect-error + const properties: InMemoryEntity & HasDescriptionInMemoryEntity = { get description(): string { - return item.prop("description", ""); + return this.prop("description", ""); }, set description(string: string) { - item.setProp("description", string); + this.setProp("description", string); }, get descriptionObject() { - return item.prop("descriptionObject"); + return this.prop("descriptionObject"); }, set descriptionObject(obj: DescriptionSchema["descriptionObject"]) { - item.setProp("descriptionObject", obj); + this.setProp("descriptionObject", obj); }, - } satisfies DescriptionSchema; + }; - Object.defineProperties(item, Object.getOwnPropertyDescriptors(schema)); + Object.defineProperties(item, Object.getOwnPropertyDescriptors(properties)); - return schema; + return properties; } -export function hasDescriptionMixin(item: InMemoryEntity) { - return schemaMixin(item); -} +export type HasDescriptionInMemoryEntity = { + description: string; + descriptionObject: DescriptionSchema["descriptionObject"]; +}; -export type HasDescriptionInMemoryEntity = ReturnType; export type HasDescriptionInMemoryEntityConstructor = Constructor; - -export default function HasDescriptionMixin(superclass: S) { - class HasDescriptionMixin extends superclass { - // eslint-disable-next-line @typescript-eslint/no-explicit-any - constructor(...args: any[]) { - super(...args); - hasDescriptionMixin(this); - } - } - - return HasDescriptionMixin as S & HasDescriptionInMemoryEntityConstructor; -} diff --git a/src/js/entity/mixins/TaggableMixin.ts b/src/js/entity/mixins/TaggableMixin.ts index c7af659b..76375f0e 100644 --- a/src/js/entity/mixins/TaggableMixin.ts +++ b/src/js/entity/mixins/TaggableMixin.ts @@ -1,27 +1,17 @@ -import type { EntityTagsSchema } from "@mat3ra/esse/dist/js/types"; - import type { Constructor } from "../../utils/types"; -import type { InMemoryEntity, InMemoryEntityConstructor } from "../in_memory"; +import { InMemoryEntity } from "../in_memory"; -function schemaMixin(item: InMemoryEntity) { - const schema = { +export function taggableMixin(item: T) { + // @ts-expect-error + const properties: InMemoryEntity & TaggableInMemoryEntity = { get tags(): string[] { - return item.prop("tags", []); + return this.prop("tags", []); }, set tags(array: string[]) { - item.setProp("tags", array); + this.setProp("tags", array); }, - } satisfies EntityTagsSchema; - - Object.defineProperties(item, Object.getOwnPropertyDescriptors(schema)); - - return schema; -} - -function propertiesMixin(item: InMemoryEntity & EntityTagsSchema) { - const properties = { setTags(array: string[]) { - item.tags = array.filter((value, index, self) => self.indexOf(value) === index); + this.tags = array.filter((value, index, self) => self.indexOf(value) === index); }, }; @@ -30,24 +20,9 @@ function propertiesMixin(item: InMemoryEntity & EntityTagsSchema) { return properties; } -export function taggableMixin(item: InMemoryEntity) { - return { - ...schemaMixin(item), - ...propertiesMixin(item), - }; -} +export type TaggableInMemoryEntity = { + tags: string[]; + setTags: (array: string[]) => void; +}; -export type TaggableInMemoryEntity = ReturnType; export type TaggableInMemoryEntityConstructor = Constructor; - -export default function TaggableMixin(superclass: S) { - class TaggableMixin extends superclass { - // eslint-disable-next-line @typescript-eslint/no-explicit-any - constructor(...args: any[]) { - super(...args); - taggableMixin(this); - } - } - - return TaggableMixin as S & TaggableInMemoryEntityConstructor; -} diff --git a/src/js/entity/mixins/props.ts b/src/js/entity/mixins/props.ts index 60a97019..cc83669e 100644 --- a/src/js/entity/mixins/props.ts +++ b/src/js/entity/mixins/props.ts @@ -1,5 +1,3 @@ -import HasDescriptionMixin from "./HasDescriptionMixin"; import HasScopeTrackMixin from "./HasScopeTrackMixin"; -import TaggableMixin from "./TaggableMixin"; -export { HasDescriptionMixin, HasScopeTrackMixin, TaggableMixin }; +export { HasScopeTrackMixin }; From 68745769efcaca01e1f1e22bdcbac56d17a26fe5 Mon Sep 17 00:00:00 2001 From: Kostiantyn Dvornik Date: Tue, 24 Jun 2025 14:49:51 +0300 Subject: [PATCH 3/6] chore: types --- dist/js/entity/other.d.ts | 25 +++++++++++++++++----- dist/js/entity/other.js | 4 ++-- src/js/entity/other.ts | 45 +++++++++++++++++++++++++++++++-------- 3 files changed, 58 insertions(+), 16 deletions(-) diff --git a/dist/js/entity/other.d.ts b/dist/js/entity/other.d.ts index e59e09be..437afe6a 100644 --- a/dist/js/entity/other.d.ts +++ b/dist/js/entity/other.d.ts @@ -1,13 +1,27 @@ import { InMemoryEntity } from "./in_memory"; -export declare class DefaultableInMemoryEntity extends InMemoryEntity { +import { type DefaultableInMemoryEntityConstructor } from "./mixins/DefaultableMixin"; +import { type HasConsistencyChecksInMemoryEntityConstructor } from "./mixins/HasConsistencyChecksMixin"; +import { type HasMetadataInMemoryEntityConstructor } from "./mixins/HasMetadataMixin"; +import { type NamedInMemoryEntityConstructor } from "./mixins/NamedEntityMixin"; +type DefaultableBase = typeof InMemoryEntity & DefaultableInMemoryEntityConstructor; +type NamedBase = typeof InMemoryEntity & NamedInMemoryEntityConstructor; +type NamedDefaultableBase = typeof InMemoryEntity & DefaultableInMemoryEntityConstructor & NamedInMemoryEntityConstructor; +type HasMetadataNamedDefaultableBase = typeof InMemoryEntity & DefaultableInMemoryEntityConstructor & NamedInMemoryEntityConstructor & HasMetadataInMemoryEntityConstructor; +type HasConsistencyChecksHasMetadataNamedDefaultableInMemoryEntityBase = typeof HasMetadataNamedDefaultableInMemoryEntity & HasConsistencyChecksInMemoryEntityConstructor; +declare const DefaultableInMemoryEntity_base: DefaultableBase; +export declare class DefaultableInMemoryEntity extends DefaultableInMemoryEntity_base { } -export declare class NamedInMemoryEntity extends InMemoryEntity { +declare const NamedInMemoryEntity_base: NamedBase; +export declare class NamedInMemoryEntity extends NamedInMemoryEntity_base { } -export declare class NamedDefaultableInMemoryEntity extends DefaultableInMemoryEntity { +declare const NamedDefaultableInMemoryEntity_base: NamedDefaultableBase; +export declare class NamedDefaultableInMemoryEntity extends NamedDefaultableInMemoryEntity_base { } -export declare class HasMetadataNamedDefaultableInMemoryEntity extends NamedDefaultableInMemoryEntity { +declare const HasMetadataNamedDefaultableInMemoryEntity_base: HasMetadataNamedDefaultableBase; +export declare class HasMetadataNamedDefaultableInMemoryEntity extends HasMetadataNamedDefaultableInMemoryEntity_base { } -export declare class HasConsistencyChecksHasMetadataNamedDefaultableInMemoryEntity extends HasMetadataNamedDefaultableInMemoryEntity { +declare const HasConsistencyChecksHasMetadataNamedDefaultableInMemoryEntity_base: HasConsistencyChecksHasMetadataNamedDefaultableInMemoryEntityBase; +export declare class HasConsistencyChecksHasMetadataNamedDefaultableInMemoryEntity extends HasConsistencyChecksHasMetadataNamedDefaultableInMemoryEntity_base { } export declare const NamedDefaultableRepetitionImportantSettingsInMemoryEntity: { new (...args: any[]): { @@ -393,3 +407,4 @@ export declare const NamedDefaultableRepetitionRuntimeItemsImportantSettingsCont readonly isSystemEntity: boolean; }; } & typeof NamedDefaultableInMemoryEntity; +export {}; diff --git a/dist/js/entity/other.js b/dist/js/entity/other.js index 7ef78a29..950b921f 100644 --- a/dist/js/entity/other.js +++ b/dist/js/entity/other.js @@ -19,11 +19,11 @@ class NamedInMemoryEntity extends in_memory_1.InMemoryEntity { } exports.NamedInMemoryEntity = NamedInMemoryEntity; (0, NamedEntityMixin_1.namedEntityMixin)(NamedInMemoryEntity.prototype); -class NamedDefaultableInMemoryEntity extends DefaultableInMemoryEntity { +class NamedDefaultableInMemoryEntity extends in_memory_1.InMemoryEntity { } exports.NamedDefaultableInMemoryEntity = NamedDefaultableInMemoryEntity; (0, NamedEntityMixin_1.namedEntityMixin)(NamedDefaultableInMemoryEntity.prototype); -class HasMetadataNamedDefaultableInMemoryEntity extends NamedDefaultableInMemoryEntity { +class HasMetadataNamedDefaultableInMemoryEntity extends in_memory_1.InMemoryEntity { } exports.HasMetadataNamedDefaultableInMemoryEntity = HasMetadataNamedDefaultableInMemoryEntity; (0, HasMetadataMixin_1.hasMetadataMixin)(HasMetadataNamedDefaultableInMemoryEntity.prototype); diff --git a/src/js/entity/other.ts b/src/js/entity/other.ts index 9bb6b715..3033bde5 100644 --- a/src/js/entity/other.ts +++ b/src/js/entity/other.ts @@ -1,27 +1,54 @@ import { InMemoryEntity } from "./in_memory"; import { ContextAndRenderFieldsMixin, ImportantSettingsProviderMixin } from "./mixins/context"; -import { defaultableEntityMixin, defaultableEntityStaticMixin } from "./mixins/DefaultableMixin"; -import { hasConsistencyChecksMixin } from "./mixins/HasConsistencyChecksMixin"; +import { + type DefaultableInMemoryEntityConstructor, + defaultableEntityMixin, + defaultableEntityStaticMixin, +} from "./mixins/DefaultableMixin"; +import { + type HasConsistencyChecksInMemoryEntityConstructor, + hasConsistencyChecksMixin, +} from "./mixins/HasConsistencyChecksMixin"; import { HashedEntityMixin } from "./mixins/hash"; -import { hasMetadataMixin } from "./mixins/HasMetadataMixin"; -import { namedEntityMixin } from "./mixins/NamedEntityMixin"; +import { + type HasMetadataInMemoryEntityConstructor, + hasMetadataMixin, +} from "./mixins/HasMetadataMixin"; +import { type NamedInMemoryEntityConstructor, namedEntityMixin } from "./mixins/NamedEntityMixin"; import { HasRepetitionMixin } from "./mixins/repetition"; import { RuntimeItemsUIAllowedMixin, RuntimeItemsUILogicMixin } from "./mixins/runtime_items"; -export class DefaultableInMemoryEntity extends InMemoryEntity {} +type DefaultableBase = typeof InMemoryEntity & DefaultableInMemoryEntityConstructor; + +type NamedBase = typeof InMemoryEntity & NamedInMemoryEntityConstructor; + +type NamedDefaultableBase = typeof InMemoryEntity & + DefaultableInMemoryEntityConstructor & + NamedInMemoryEntityConstructor; + +type HasMetadataNamedDefaultableBase = typeof InMemoryEntity & + DefaultableInMemoryEntityConstructor & + NamedInMemoryEntityConstructor & + HasMetadataInMemoryEntityConstructor; + +type HasConsistencyChecksHasMetadataNamedDefaultableInMemoryEntityBase = + typeof HasMetadataNamedDefaultableInMemoryEntity & + HasConsistencyChecksInMemoryEntityConstructor; + +export class DefaultableInMemoryEntity extends (InMemoryEntity as DefaultableBase) {} defaultableEntityMixin(DefaultableInMemoryEntity.prototype); defaultableEntityStaticMixin(DefaultableInMemoryEntity); -export class NamedInMemoryEntity extends InMemoryEntity {} +export class NamedInMemoryEntity extends (InMemoryEntity as NamedBase) {} namedEntityMixin(NamedInMemoryEntity.prototype); -export class NamedDefaultableInMemoryEntity extends DefaultableInMemoryEntity {} +export class NamedDefaultableInMemoryEntity extends (InMemoryEntity as NamedDefaultableBase) {} namedEntityMixin(NamedDefaultableInMemoryEntity.prototype); -export class HasMetadataNamedDefaultableInMemoryEntity extends NamedDefaultableInMemoryEntity {} +export class HasMetadataNamedDefaultableInMemoryEntity extends (InMemoryEntity as HasMetadataNamedDefaultableBase) {} hasMetadataMixin(HasMetadataNamedDefaultableInMemoryEntity.prototype); -export class HasConsistencyChecksHasMetadataNamedDefaultableInMemoryEntity extends HasMetadataNamedDefaultableInMemoryEntity {} +export class HasConsistencyChecksHasMetadataNamedDefaultableInMemoryEntity extends (HasMetadataNamedDefaultableInMemoryEntity as HasConsistencyChecksHasMetadataNamedDefaultableInMemoryEntityBase) {} hasConsistencyChecksMixin(HasConsistencyChecksHasMetadataNamedDefaultableInMemoryEntity.prototype); export const NamedDefaultableRepetitionImportantSettingsInMemoryEntity = From 52390b1e8ec4cedb980237c7b97f8035936bf58a Mon Sep 17 00:00:00 2001 From: Kostiantyn Dvornik Date: Tue, 24 Jun 2025 15:04:39 +0300 Subject: [PATCH 4/6] chore: types --- dist/js/entity/mixins/DefaultableMixin.d.ts | 3 +-- src/js/entity/mixins/DefaultableMixin.ts | 3 +-- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/dist/js/entity/mixins/DefaultableMixin.d.ts b/dist/js/entity/mixins/DefaultableMixin.d.ts index f4fe1ec5..17976383 100644 --- a/dist/js/entity/mixins/DefaultableMixin.d.ts +++ b/dist/js/entity/mixins/DefaultableMixin.d.ts @@ -10,5 +10,4 @@ export type DefaultableInMemoryEntity = { export type DefaultableInMemoryStaticEntity = { createDefault: () => InMemoryEntity & DefaultableInMemoryEntity; }; -export type DefaultableInMemoryEntityConstructor = Constructor; -export type DefaultableConstructor = DefaultableInMemoryEntityConstructor & DefaultableInMemoryStaticEntity; +export type DefaultableInMemoryEntityConstructor = Constructor & DefaultableInMemoryStaticEntity; diff --git a/src/js/entity/mixins/DefaultableMixin.ts b/src/js/entity/mixins/DefaultableMixin.ts index bdf41f65..50e7cd9c 100644 --- a/src/js/entity/mixins/DefaultableMixin.ts +++ b/src/js/entity/mixins/DefaultableMixin.ts @@ -44,6 +44,5 @@ export type DefaultableInMemoryStaticEntity = { createDefault: () => InMemoryEntity & DefaultableInMemoryEntity; }; -export type DefaultableInMemoryEntityConstructor = Constructor; -export type DefaultableConstructor = DefaultableInMemoryEntityConstructor & +export type DefaultableInMemoryEntityConstructor = Constructor & DefaultableInMemoryStaticEntity; From 556631e195b0b863c301f4c3d0af2723d354ebc1 Mon Sep 17 00:00:00 2001 From: Kostiantyn Dvornik Date: Tue, 24 Jun 2025 15:09:27 +0300 Subject: [PATCH 5/6] chore: types --- dist/js/entity/other.js | 4 ++-- src/js/entity/other.ts | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/dist/js/entity/other.js b/dist/js/entity/other.js index 950b921f..7ef78a29 100644 --- a/dist/js/entity/other.js +++ b/dist/js/entity/other.js @@ -19,11 +19,11 @@ class NamedInMemoryEntity extends in_memory_1.InMemoryEntity { } exports.NamedInMemoryEntity = NamedInMemoryEntity; (0, NamedEntityMixin_1.namedEntityMixin)(NamedInMemoryEntity.prototype); -class NamedDefaultableInMemoryEntity extends in_memory_1.InMemoryEntity { +class NamedDefaultableInMemoryEntity extends DefaultableInMemoryEntity { } exports.NamedDefaultableInMemoryEntity = NamedDefaultableInMemoryEntity; (0, NamedEntityMixin_1.namedEntityMixin)(NamedDefaultableInMemoryEntity.prototype); -class HasMetadataNamedDefaultableInMemoryEntity extends in_memory_1.InMemoryEntity { +class HasMetadataNamedDefaultableInMemoryEntity extends NamedDefaultableInMemoryEntity { } exports.HasMetadataNamedDefaultableInMemoryEntity = HasMetadataNamedDefaultableInMemoryEntity; (0, HasMetadataMixin_1.hasMetadataMixin)(HasMetadataNamedDefaultableInMemoryEntity.prototype); diff --git a/src/js/entity/other.ts b/src/js/entity/other.ts index 3033bde5..a15e8dac 100644 --- a/src/js/entity/other.ts +++ b/src/js/entity/other.ts @@ -42,10 +42,10 @@ defaultableEntityStaticMixin(DefaultableInMemoryEntity); export class NamedInMemoryEntity extends (InMemoryEntity as NamedBase) {} namedEntityMixin(NamedInMemoryEntity.prototype); -export class NamedDefaultableInMemoryEntity extends (InMemoryEntity as NamedDefaultableBase) {} +export class NamedDefaultableInMemoryEntity extends (DefaultableInMemoryEntity as NamedDefaultableBase) {} namedEntityMixin(NamedDefaultableInMemoryEntity.prototype); -export class HasMetadataNamedDefaultableInMemoryEntity extends (InMemoryEntity as HasMetadataNamedDefaultableBase) {} +export class HasMetadataNamedDefaultableInMemoryEntity extends (NamedDefaultableInMemoryEntity as HasMetadataNamedDefaultableBase) {} hasMetadataMixin(HasMetadataNamedDefaultableInMemoryEntity.prototype); export class HasConsistencyChecksHasMetadataNamedDefaultableInMemoryEntity extends (HasMetadataNamedDefaultableInMemoryEntity as HasConsistencyChecksHasMetadataNamedDefaultableInMemoryEntityBase) {} From 72a4dd05240da180f09fcb04db9f469aea4077af Mon Sep 17 00:00:00 2001 From: Kostiantyn Dvornik Date: Wed, 2 Jul 2025 15:51:05 +0300 Subject: [PATCH 6/6] chore: remove HashedInputArrayMixin --- dist/js/entity/index.d.ts | 3 +-- dist/js/entity/index.js | 4 +--- dist/js/entity/mixins/hash.d.ts | 33 --------------------------------- dist/js/entity/mixins/hash.js | 15 --------------- src/js/entity/index.ts | 2 -- src/js/entity/mixins/hash.ts | 19 ------------------- 6 files changed, 2 insertions(+), 74 deletions(-) diff --git a/dist/js/entity/index.d.ts b/dist/js/entity/index.d.ts index f63311c8..2f14d49d 100644 --- a/dist/js/entity/index.d.ts +++ b/dist/js/entity/index.d.ts @@ -2,7 +2,6 @@ import { InMemoryEntity } from "./in_memory"; import { ContextAndRenderFieldsMixin } from "./mixins/context"; import { RuntimeContextFieldMixin } from "./mixins/context_runtime"; import { FlowchartEntityMixin, FlowchartItemMixin } from "./mixins/flowchart"; -import { HashedInputArrayMixin } from "./mixins/hash"; import { HasScopeTrackMixin } from "./mixins/props"; import { RuntimeItemsMixin } from "./mixins/runtime_items"; import { DefaultableInMemoryEntity, HasConsistencyChecksHasMetadataNamedDefaultableInMemoryEntity, HasMetadataNamedDefaultableInMemoryEntity, NamedDefaultableInMemoryEntity, NamedDefaultableRepetitionContextAndRenderInMemoryEntity, NamedDefaultableRepetitionImportantSettingsInMemoryEntity, NamedDefaultableRepetitionRuntimeItemsImportantSettingsContextAndRenderHashedInMemoryEntity, NamedInMemoryEntity } from "./other"; @@ -12,4 +11,4 @@ import { constructEntitySetFactoryByConfig } from "./set/factory"; import { InMemoryEntityInSetMixin, InMemoryEntitySetMixin } from "./set/mixins"; import { OrderedInMemoryEntityInSetMixin, OrderedInMemoryEntitySetMixin } from "./set/ordered/mixins"; import * as selectorsForEntitySet from "./set/selectors"; -export { InMemoryEntity, NamedInMemoryEntity, DefaultableInMemoryEntity, NamedDefaultableInMemoryEntity, HasMetadataNamedDefaultableInMemoryEntity, NamedDefaultableRepetitionContextAndRenderInMemoryEntity, NamedDefaultableRepetitionImportantSettingsInMemoryEntity, NamedDefaultableRepetitionRuntimeItemsImportantSettingsContextAndRenderHashedInMemoryEntity, HasConsistencyChecksHasMetadataNamedDefaultableInMemoryEntity, HasScopeTrackMixin, RuntimeItemsMixin, RuntimeContextFieldMixin, HashedInputArrayMixin, InMemoryEntitySet, ENTITY_SET_TYPES, constructEntitySetFactoryByConfig, selectorsForEntitySet, InMemoryEntitySetMixin, InMemoryEntityInSetMixin, OrderedInMemoryEntitySetMixin, OrderedInMemoryEntityInSetMixin, ContextAndRenderFieldsMixin, FlowchartEntityMixin, FlowchartItemMixin, }; +export { InMemoryEntity, NamedInMemoryEntity, DefaultableInMemoryEntity, NamedDefaultableInMemoryEntity, HasMetadataNamedDefaultableInMemoryEntity, NamedDefaultableRepetitionContextAndRenderInMemoryEntity, NamedDefaultableRepetitionImportantSettingsInMemoryEntity, NamedDefaultableRepetitionRuntimeItemsImportantSettingsContextAndRenderHashedInMemoryEntity, HasConsistencyChecksHasMetadataNamedDefaultableInMemoryEntity, HasScopeTrackMixin, RuntimeItemsMixin, RuntimeContextFieldMixin, InMemoryEntitySet, ENTITY_SET_TYPES, constructEntitySetFactoryByConfig, selectorsForEntitySet, InMemoryEntitySetMixin, InMemoryEntityInSetMixin, OrderedInMemoryEntitySetMixin, OrderedInMemoryEntityInSetMixin, ContextAndRenderFieldsMixin, FlowchartEntityMixin, FlowchartItemMixin, }; diff --git a/dist/js/entity/index.js b/dist/js/entity/index.js index 2574ada4..3cc2997e 100644 --- a/dist/js/entity/index.js +++ b/dist/js/entity/index.js @@ -33,7 +33,7 @@ var __importStar = (this && this.__importStar) || (function () { }; })(); Object.defineProperty(exports, "__esModule", { value: true }); -exports.FlowchartItemMixin = exports.FlowchartEntityMixin = exports.ContextAndRenderFieldsMixin = exports.OrderedInMemoryEntityInSetMixin = exports.OrderedInMemoryEntitySetMixin = exports.InMemoryEntityInSetMixin = exports.InMemoryEntitySetMixin = exports.selectorsForEntitySet = exports.constructEntitySetFactoryByConfig = exports.ENTITY_SET_TYPES = exports.InMemoryEntitySet = exports.HashedInputArrayMixin = exports.RuntimeContextFieldMixin = exports.RuntimeItemsMixin = exports.HasScopeTrackMixin = exports.HasConsistencyChecksHasMetadataNamedDefaultableInMemoryEntity = exports.NamedDefaultableRepetitionRuntimeItemsImportantSettingsContextAndRenderHashedInMemoryEntity = exports.NamedDefaultableRepetitionImportantSettingsInMemoryEntity = exports.NamedDefaultableRepetitionContextAndRenderInMemoryEntity = exports.HasMetadataNamedDefaultableInMemoryEntity = exports.NamedDefaultableInMemoryEntity = exports.DefaultableInMemoryEntity = exports.NamedInMemoryEntity = exports.InMemoryEntity = void 0; +exports.FlowchartItemMixin = exports.FlowchartEntityMixin = exports.ContextAndRenderFieldsMixin = exports.OrderedInMemoryEntityInSetMixin = exports.OrderedInMemoryEntitySetMixin = exports.InMemoryEntityInSetMixin = exports.InMemoryEntitySetMixin = exports.selectorsForEntitySet = exports.constructEntitySetFactoryByConfig = exports.ENTITY_SET_TYPES = exports.InMemoryEntitySet = exports.RuntimeContextFieldMixin = exports.RuntimeItemsMixin = exports.HasScopeTrackMixin = exports.HasConsistencyChecksHasMetadataNamedDefaultableInMemoryEntity = exports.NamedDefaultableRepetitionRuntimeItemsImportantSettingsContextAndRenderHashedInMemoryEntity = exports.NamedDefaultableRepetitionImportantSettingsInMemoryEntity = exports.NamedDefaultableRepetitionContextAndRenderInMemoryEntity = exports.HasMetadataNamedDefaultableInMemoryEntity = exports.NamedDefaultableInMemoryEntity = exports.DefaultableInMemoryEntity = exports.NamedInMemoryEntity = exports.InMemoryEntity = void 0; const in_memory_1 = require("./in_memory"); Object.defineProperty(exports, "InMemoryEntity", { enumerable: true, get: function () { return in_memory_1.InMemoryEntity; } }); const context_1 = require("./mixins/context"); @@ -43,8 +43,6 @@ Object.defineProperty(exports, "RuntimeContextFieldMixin", { enumerable: true, g const flowchart_1 = require("./mixins/flowchart"); Object.defineProperty(exports, "FlowchartEntityMixin", { enumerable: true, get: function () { return flowchart_1.FlowchartEntityMixin; } }); Object.defineProperty(exports, "FlowchartItemMixin", { enumerable: true, get: function () { return flowchart_1.FlowchartItemMixin; } }); -const hash_1 = require("./mixins/hash"); -Object.defineProperty(exports, "HashedInputArrayMixin", { enumerable: true, get: function () { return hash_1.HashedInputArrayMixin; } }); const props_1 = require("./mixins/props"); Object.defineProperty(exports, "HasScopeTrackMixin", { enumerable: true, get: function () { return props_1.HasScopeTrackMixin; } }); const runtime_items_1 = require("./mixins/runtime_items"); diff --git a/dist/js/entity/mixins/hash.d.ts b/dist/js/entity/mixins/hash.d.ts index cb1b61ce..f5f79739 100644 --- a/dist/js/entity/mixins/hash.d.ts +++ b/dist/js/entity/mixins/hash.d.ts @@ -1,4 +1,3 @@ -import { ExecutionUnitInputItemSchemaForPhysicsBasedSimulationEngines } from "@mat3ra/esse/dist/js/types"; import { InMemoryEntityConstructor } from "../in_memory"; export declare function HashedEntityMixin(superclass: T): { new (...args: any[]): { @@ -37,35 +36,3 @@ export declare function HashedEntityMixin(s readonly isSystemEntity: boolean; }; } & T; -export declare function HashedInputArrayMixin(superclass: T): { - new (...args: any[]): { - input: ExecutionUnitInputItemSchemaForPhysicsBasedSimulationEngines[]; - readonly hashFromArrayInputContent: string; - _json: import("@mat3ra/esse/dist/js/esse/types").AnyObject; - prop(name: string, defaultValue: T_1): T_1; - prop(name: string): T_1 | undefined; - setProp(name: string, value: unknown): void; - unsetProp(name: string): void; - setProps(json?: import("@mat3ra/esse/dist/js/esse/types").AnyObject): /*elided*/ any; - toJSON(exclude?: string[]): import("@mat3ra/esse/dist/js/esse/types").AnyObject; - toJSONSafe(exclude?: string[]): import("@mat3ra/esse/dist/js/esse/types").AnyObject; - toJSONQuick(exclude?: string[]): import("@mat3ra/esse/dist/js/esse/types").AnyObject; - clone(extraContext?: object): /*elided*/ any; - validate(): void; - clean(config: import("@mat3ra/esse/dist/js/esse/types").AnyObject): import("@mat3ra/esse/dist/js/esse/types").AnyObject; - isValid(): boolean; - readonly cls: string; - getClsName(): string; - getAsEntityReference(byIdOnly: true): { - _id: string; - }; - getAsEntityReference(byIdOnly?: false): Required; - getEntityByName(entities: import("../in_memory").InMemoryEntity[], entity: string, name: string): import("../in_memory").InMemoryEntity; - id: string; - _id: string; - schemaVersion: string; - systemName: string; - readonly slug: string; - readonly isSystemEntity: boolean; - }; -} & T; diff --git a/dist/js/entity/mixins/hash.js b/dist/js/entity/mixins/hash.js index 3d8b7b0b..2963706e 100644 --- a/dist/js/entity/mixins/hash.js +++ b/dist/js/entity/mixins/hash.js @@ -1,9 +1,7 @@ "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.HashedEntityMixin = HashedEntityMixin; -exports.HashedInputArrayMixin = HashedInputArrayMixin; const hash_1 = require("../../utils/hash"); -const str_1 = require("../../utils/str"); function HashedEntityMixin(superclass) { return class extends superclass { /* @@ -24,16 +22,3 @@ function HashedEntityMixin(superclass) { } }; } -function HashedInputArrayMixin(superclass) { - return class extends superclass { - /* - * @summary expects an array with elements containing field [{content: "..."}] - */ - get hashFromArrayInputContent() { - const objectForHashing = this.input.map((i) => { - return (0, str_1.removeEmptyLinesFromString)((0, str_1.removeCommentsFromSourceCode)(i.content)); - }); - return (0, hash_1.calculateHashFromObject)(objectForHashing); - } - }; -} diff --git a/src/js/entity/index.ts b/src/js/entity/index.ts index 00f98e76..f2185839 100644 --- a/src/js/entity/index.ts +++ b/src/js/entity/index.ts @@ -2,7 +2,6 @@ import { InMemoryEntity } from "./in_memory"; import { ContextAndRenderFieldsMixin } from "./mixins/context"; import { RuntimeContextFieldMixin } from "./mixins/context_runtime"; import { FlowchartEntityMixin, FlowchartItemMixin } from "./mixins/flowchart"; -import { HashedInputArrayMixin } from "./mixins/hash"; import { HasScopeTrackMixin } from "./mixins/props"; import { RuntimeItemsMixin } from "./mixins/runtime_items"; import { @@ -38,7 +37,6 @@ export { HasScopeTrackMixin, RuntimeItemsMixin, RuntimeContextFieldMixin, - HashedInputArrayMixin, InMemoryEntitySet, ENTITY_SET_TYPES, constructEntitySetFactoryByConfig, diff --git a/src/js/entity/mixins/hash.ts b/src/js/entity/mixins/hash.ts index ba90cff2..6a62b741 100644 --- a/src/js/entity/mixins/hash.ts +++ b/src/js/entity/mixins/hash.ts @@ -1,7 +1,4 @@ -import { ExecutionUnitInputItemSchemaForPhysicsBasedSimulationEngines } from "@mat3ra/esse/dist/js/types"; - import { calculateHashFromObject } from "../../utils/hash"; -import { removeCommentsFromSourceCode, removeEmptyLinesFromString } from "../../utils/str"; import { InMemoryEntityConstructor } from "../in_memory"; export function HashedEntityMixin(superclass: T) { @@ -25,19 +22,3 @@ export function HashedEntityMixin(superclas } }; } - -export function HashedInputArrayMixin(superclass: T) { - return class extends superclass { - declare input: ExecutionUnitInputItemSchemaForPhysicsBasedSimulationEngines[]; - - /* - * @summary expects an array with elements containing field [{content: "..."}] - */ - get hashFromArrayInputContent() { - const objectForHashing = this.input.map((i) => { - return removeEmptyLinesFromString(removeCommentsFromSourceCode(i.content)); - }); - return calculateHashFromObject(objectForHashing); - } - }; -}