From d3b88b59374d6e6efb680a73f232d6706579581b Mon Sep 17 00:00:00 2001 From: Kostiantyn Dvornik Date: Tue, 13 Jan 2026 23:07:03 +0200 Subject: [PATCH 1/7] chore: update dist files --- dist/js/constants.d.ts | 27 +- dist/js/constants.js | 37 +- dist/js/entity/index.d.ts | 8 +- dist/js/entity/index.js | 15 +- .../mixins/ContextAndRenderFieldsMixin.d.ts | 15 + .../mixins/ContextAndRenderFieldsMixin.js | 21 + dist/js/entity/mixins/DefaultableMixin.d.ts | 16 +- dist/js/entity/mixins/DefaultableMixin.js | 19 +- .../mixins/HasConsistencyChecksMixin.d.ts | 10 +- .../mixins/HasConsistencyChecksMixin.js | 9 +- .../js/entity/mixins/HasDescriptionMixin.d.ts | 12 +- dist/js/entity/mixins/HasDescriptionMixin.js | 23 +- dist/js/entity/mixins/HasMetadataMixin.d.ts | 13 +- dist/js/entity/mixins/HasMetadataMixin.js | 14 +- dist/js/entity/mixins/HasRepetitionMixin.d.ts | 10 + dist/js/entity/mixins/HasRepetitionMixin.js | 33 ++ dist/js/entity/mixins/HashedEntityMixin.d.ts | 8 + dist/js/entity/mixins/HashedEntityMixin.js | 19 + .../ImportantSettingsProviderMixin.d.ts | 17 + .../mixins/ImportantSettingsProviderMixin.js | 25 ++ dist/js/entity/mixins/NamedEntityMixin.d.ts | 10 +- dist/js/entity/mixins/NamedEntityMixin.js | 14 +- dist/js/entity/mixins/RuntimeItemsMixin.d.ts | 39 +- dist/js/entity/mixins/RuntimeItemsMixin.js | 45 +- dist/js/entity/mixins/TaggableMixin.d.ts | 10 +- dist/js/entity/mixins/TaggableMixin.js | 14 +- dist/js/entity/other.d.ts | 396 +----------------- dist/js/entity/other.js | 39 +- dist/js/generateSchemaMixin.d.ts | 3 +- dist/js/generateSchemaMixin.js | 33 +- dist/js/generated/DefaultableSchemaMixin.d.ts | 5 + dist/js/generated/DefaultableSchemaMixin.js | 15 + .../HasConsistencyChecksSchemaMixin.d.ts | 5 + .../HasConsistencyChecksSchemaMixin.js | 15 + .../generated/HasDescriptionSchemaMixin.d.ts | 5 + .../js/generated/HasDescriptionSchemaMixin.js | 21 + dist/js/generated/NamedEntitySchemaMixin.d.ts | 5 + dist/js/generated/NamedEntitySchemaMixin.js | 15 + .../js/generated/RuntimeItemsSchemaMixin.d.ts | 5 + dist/js/generated/RuntimeItemsSchemaMixin.js | 33 ++ dist/js/generated/TaggableSchemaMixin.d.ts | 5 + dist/js/generated/TaggableSchemaMixin.js | 15 + dist/js/utils/object.d.ts | 4 +- 43 files changed, 491 insertions(+), 611 deletions(-) create mode 100644 dist/js/entity/mixins/ContextAndRenderFieldsMixin.d.ts create mode 100644 dist/js/entity/mixins/ContextAndRenderFieldsMixin.js create mode 100644 dist/js/entity/mixins/HasRepetitionMixin.d.ts create mode 100644 dist/js/entity/mixins/HasRepetitionMixin.js create mode 100644 dist/js/entity/mixins/HashedEntityMixin.d.ts create mode 100644 dist/js/entity/mixins/HashedEntityMixin.js create mode 100644 dist/js/entity/mixins/ImportantSettingsProviderMixin.d.ts create mode 100644 dist/js/entity/mixins/ImportantSettingsProviderMixin.js create mode 100644 dist/js/generated/DefaultableSchemaMixin.d.ts create mode 100644 dist/js/generated/DefaultableSchemaMixin.js create mode 100644 dist/js/generated/HasConsistencyChecksSchemaMixin.d.ts create mode 100644 dist/js/generated/HasConsistencyChecksSchemaMixin.js create mode 100644 dist/js/generated/HasDescriptionSchemaMixin.d.ts create mode 100644 dist/js/generated/HasDescriptionSchemaMixin.js create mode 100644 dist/js/generated/NamedEntitySchemaMixin.d.ts create mode 100644 dist/js/generated/NamedEntitySchemaMixin.js create mode 100644 dist/js/generated/RuntimeItemsSchemaMixin.d.ts create mode 100644 dist/js/generated/RuntimeItemsSchemaMixin.js create mode 100644 dist/js/generated/TaggableSchemaMixin.d.ts create mode 100644 dist/js/generated/TaggableSchemaMixin.js diff --git a/dist/js/constants.d.ts b/dist/js/constants.d.ts index a2041a4d..eb129258 100644 --- a/dist/js/constants.d.ts +++ b/dist/js/constants.d.ts @@ -1,3 +1,29 @@ +export declare enum Units { + bohr = "bohr", + angstrom = "angstrom", + degree = "degree", + radian = "radian", + alat = "alat" +} +/** + * @summary Coordinates units for a material's basis. + */ +export declare enum AtomicCoordinateUnits { + crystal = "crystal", + cartesian = "cartesian" +} +export declare enum Tolerance { + length = 0.01, + lengthAngstrom = 0.001, + pointsDistance = 0.001 +} +export declare enum Coefficients { + EV_TO_RY = 0.0734986176, + BOHR_TO_ANGSTROM = 0.52917721092, + ANGSTROM_TO_BOHR = 1.8897261245650618, + EV_A_TO_RY_BOHR = 0.03889379346800142 +} +export declare const HASH_TOLERANCE: 3; export declare const coefficients: { EV_TO_RY: number; BOHR_TO_ANGSTROM: number; @@ -23,7 +49,6 @@ export declare const ATOMIC_COORD_UNITS: { crystal: string; cartesian: string; }; -export declare const HASH_TOLERANCE = 3; declare const _default: { coefficients: { EV_TO_RY: number; diff --git a/dist/js/constants.js b/dist/js/constants.js index fe53999a..faf3bc3d 100644 --- a/dist/js/constants.js +++ b/dist/js/constants.js @@ -1,6 +1,39 @@ "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); -exports.HASH_TOLERANCE = exports.ATOMIC_COORD_UNITS = exports.units = exports.tolerance = exports.coefficients = void 0; +exports.ATOMIC_COORD_UNITS = exports.units = exports.tolerance = exports.coefficients = exports.HASH_TOLERANCE = exports.Coefficients = exports.Tolerance = exports.AtomicCoordinateUnits = exports.Units = void 0; +var Units; +(function (Units) { + Units["bohr"] = "bohr"; + Units["angstrom"] = "angstrom"; + Units["degree"] = "degree"; + Units["radian"] = "radian"; + Units["alat"] = "alat"; +})(Units || (exports.Units = Units = {})); +/** + * @summary Coordinates units for a material's basis. + */ +var AtomicCoordinateUnits; +(function (AtomicCoordinateUnits) { + AtomicCoordinateUnits["crystal"] = "crystal"; + AtomicCoordinateUnits["cartesian"] = "cartesian"; +})(AtomicCoordinateUnits || (exports.AtomicCoordinateUnits = AtomicCoordinateUnits = {})); +// in crystal coordinates +var Tolerance; +(function (Tolerance) { + Tolerance[Tolerance["length"] = 0.01] = "length"; + Tolerance[Tolerance["lengthAngstrom"] = 0.001] = "lengthAngstrom"; + Tolerance[Tolerance["pointsDistance"] = 0.001] = "pointsDistance"; +})(Tolerance || (exports.Tolerance = Tolerance = {})); +var Coefficients; +(function (Coefficients) { + Coefficients[Coefficients["EV_TO_RY"] = 0.0734986176] = "EV_TO_RY"; + Coefficients[Coefficients["BOHR_TO_ANGSTROM"] = 0.52917721092] = "BOHR_TO_ANGSTROM"; + Coefficients[Coefficients["ANGSTROM_TO_BOHR"] = 1.8897261245650618] = "ANGSTROM_TO_BOHR"; + Coefficients[Coefficients["EV_A_TO_RY_BOHR"] = 0.03889379346800142] = "EV_A_TO_RY_BOHR"; +})(Coefficients || (exports.Coefficients = Coefficients = {})); +// Only 3 digits will be considered for lattice and basis params on hashing +exports.HASH_TOLERANCE = 3; +// TODO: remove everything below this line exports.coefficients = { EV_TO_RY: 0.0734986176, BOHR_TO_ANGSTROM: 0.52917721092, @@ -27,8 +60,6 @@ exports.ATOMIC_COORD_UNITS = { crystal: "crystal", cartesian: "cartesian", }; -// Only 3 digits will be considered for lattice and basis params on hashing -exports.HASH_TOLERANCE = 3; exports.default = { coefficients: exports.coefficients, tolerance: exports.tolerance, diff --git a/dist/js/entity/index.d.ts b/dist/js/entity/index.d.ts index 2f14d49d..dd92a8de 100644 --- a/dist/js/entity/index.d.ts +++ b/dist/js/entity/index.d.ts @@ -1,14 +1,10 @@ import { InMemoryEntity } from "./in_memory"; -import { ContextAndRenderFieldsMixin } from "./mixins/context"; import { RuntimeContextFieldMixin } from "./mixins/context_runtime"; -import { FlowchartEntityMixin, FlowchartItemMixin } from "./mixins/flowchart"; -import { HasScopeTrackMixin } from "./mixins/props"; -import { RuntimeItemsMixin } from "./mixins/runtime_items"; -import { DefaultableInMemoryEntity, HasConsistencyChecksHasMetadataNamedDefaultableInMemoryEntity, HasMetadataNamedDefaultableInMemoryEntity, NamedDefaultableInMemoryEntity, NamedDefaultableRepetitionContextAndRenderInMemoryEntity, NamedDefaultableRepetitionImportantSettingsInMemoryEntity, NamedDefaultableRepetitionRuntimeItemsImportantSettingsContextAndRenderHashedInMemoryEntity, NamedInMemoryEntity } from "./other"; +import { DefaultableInMemoryEntity, HasConsistencyChecksHasMetadataNamedDefaultableInMemoryEntity, HasMetadataNamedDefaultableInMemoryEntity, NamedDefaultableInMemoryEntity, NamedInMemoryEntity } from "./other"; import { InMemoryEntitySet } from "./set"; import { ENTITY_SET_TYPES } from "./set/enums"; 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, InMemoryEntitySet, ENTITY_SET_TYPES, constructEntitySetFactoryByConfig, selectorsForEntitySet, InMemoryEntitySetMixin, InMemoryEntityInSetMixin, OrderedInMemoryEntitySetMixin, OrderedInMemoryEntityInSetMixin, ContextAndRenderFieldsMixin, FlowchartEntityMixin, FlowchartItemMixin, }; +export { InMemoryEntity, NamedInMemoryEntity, DefaultableInMemoryEntity, NamedDefaultableInMemoryEntity, HasMetadataNamedDefaultableInMemoryEntity, HasConsistencyChecksHasMetadataNamedDefaultableInMemoryEntity, RuntimeContextFieldMixin, InMemoryEntitySet, ENTITY_SET_TYPES, constructEntitySetFactoryByConfig, selectorsForEntitySet, InMemoryEntitySetMixin, InMemoryEntityInSetMixin, OrderedInMemoryEntitySetMixin, OrderedInMemoryEntityInSetMixin, }; diff --git a/dist/js/entity/index.js b/dist/js/entity/index.js index 3cc2997e..3ff147b3 100644 --- a/dist/js/entity/index.js +++ b/dist/js/entity/index.js @@ -33,28 +33,17 @@ 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.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.OrderedInMemoryEntityInSetMixin = exports.OrderedInMemoryEntitySetMixin = exports.InMemoryEntityInSetMixin = exports.InMemoryEntitySetMixin = exports.selectorsForEntitySet = exports.constructEntitySetFactoryByConfig = exports.ENTITY_SET_TYPES = exports.InMemoryEntitySet = exports.RuntimeContextFieldMixin = exports.HasConsistencyChecksHasMetadataNamedDefaultableInMemoryEntity = 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"); -Object.defineProperty(exports, "ContextAndRenderFieldsMixin", { enumerable: true, get: function () { return context_1.ContextAndRenderFieldsMixin; } }); const context_runtime_1 = require("./mixins/context_runtime"); Object.defineProperty(exports, "RuntimeContextFieldMixin", { enumerable: true, get: function () { return context_runtime_1.RuntimeContextFieldMixin; } }); -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 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"); -Object.defineProperty(exports, "RuntimeItemsMixin", { enumerable: true, get: function () { return runtime_items_1.RuntimeItemsMixin; } }); +// import { RuntimeItemsMixin } from "./mixins/runtime_items"; const other_1 = require("./other"); Object.defineProperty(exports, "DefaultableInMemoryEntity", { enumerable: true, get: function () { return other_1.DefaultableInMemoryEntity; } }); Object.defineProperty(exports, "HasConsistencyChecksHasMetadataNamedDefaultableInMemoryEntity", { enumerable: true, get: function () { return other_1.HasConsistencyChecksHasMetadataNamedDefaultableInMemoryEntity; } }); Object.defineProperty(exports, "HasMetadataNamedDefaultableInMemoryEntity", { enumerable: true, get: function () { return other_1.HasMetadataNamedDefaultableInMemoryEntity; } }); Object.defineProperty(exports, "NamedDefaultableInMemoryEntity", { enumerable: true, get: function () { return other_1.NamedDefaultableInMemoryEntity; } }); -Object.defineProperty(exports, "NamedDefaultableRepetitionContextAndRenderInMemoryEntity", { enumerable: true, get: function () { return other_1.NamedDefaultableRepetitionContextAndRenderInMemoryEntity; } }); -Object.defineProperty(exports, "NamedDefaultableRepetitionImportantSettingsInMemoryEntity", { enumerable: true, get: function () { return other_1.NamedDefaultableRepetitionImportantSettingsInMemoryEntity; } }); -Object.defineProperty(exports, "NamedDefaultableRepetitionRuntimeItemsImportantSettingsContextAndRenderHashedInMemoryEntity", { enumerable: true, get: function () { return other_1.NamedDefaultableRepetitionRuntimeItemsImportantSettingsContextAndRenderHashedInMemoryEntity; } }); Object.defineProperty(exports, "NamedInMemoryEntity", { enumerable: true, get: function () { return other_1.NamedInMemoryEntity; } }); const set_1 = require("./set"); Object.defineProperty(exports, "InMemoryEntitySet", { enumerable: true, get: function () { return set_1.InMemoryEntitySet; } }); diff --git a/dist/js/entity/mixins/ContextAndRenderFieldsMixin.d.ts b/dist/js/entity/mixins/ContextAndRenderFieldsMixin.d.ts new file mode 100644 index 00000000..2e41bca9 --- /dev/null +++ b/dist/js/entity/mixins/ContextAndRenderFieldsMixin.d.ts @@ -0,0 +1,15 @@ +import type { AnyObject } from "@mat3ra/esse/dist/js/esse/types"; +import type { InMemoryEntity } from "../in_memory"; +export type Context = AnyObject; +export type ContextAndRenderFields = { + context?: Context; + updateContext(ctx: Context): void; + getPersistentContext(): Context | undefined; + updatePersistentContext(ctx: Context): void; + getCombinedContext(): Context; +}; +type AbstractBase = { + render(ctx: Context): void; +}; +export declare function contextAndRenderFieldsMixin(item: T): asserts item is T & ContextAndRenderFields; +export {}; diff --git a/dist/js/entity/mixins/ContextAndRenderFieldsMixin.js b/dist/js/entity/mixins/ContextAndRenderFieldsMixin.js new file mode 100644 index 00000000..7fe3a434 --- /dev/null +++ b/dist/js/entity/mixins/ContextAndRenderFieldsMixin.js @@ -0,0 +1,21 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.contextAndRenderFieldsMixin = contextAndRenderFieldsMixin; +function contextAndRenderFieldsMixin(item) { + // @ts-expect-error + const properties = { + updateContext(ctx) { + this.context = { ...this.context, ...ctx }; + }, + getPersistentContext() { + return this.prop("context"); + }, + updatePersistentContext(ctx) { + this.setProp("context", { ...ctx }); + }, + getCombinedContext() { + return { ...this.getPersistentContext(), ...this.context }; + }, + }; + Object.defineProperties(item, Object.getOwnPropertyDescriptors(properties)); +} diff --git a/dist/js/entity/mixins/DefaultableMixin.d.ts b/dist/js/entity/mixins/DefaultableMixin.d.ts index 17976383..ccc28681 100644 --- a/dist/js/entity/mixins/DefaultableMixin.d.ts +++ b/dist/js/entity/mixins/DefaultableMixin.d.ts @@ -1,13 +1,9 @@ -import type { Constructor } from "../../utils/types"; +import { type DefaultableSchemaMixin } from "../../generated/DefaultableSchemaMixin"; +import type { AbstractConstructor, Constructor } from "../../utils/types"; import { InMemoryEntity } from "../in_memory"; -export declare function defaultableEntityMixin(item: T): InMemoryEntity & DefaultableInMemoryEntity; -export declare function defaultableEntityStaticMixin(Item: Constructor): DefaultableInMemoryStaticEntity & Constructor & Constructor & { - defaultConfig?: object | null; -}; -export type DefaultableInMemoryEntity = { - isDefault: boolean; -}; +export type Defaultable = DefaultableSchemaMixin; export type DefaultableInMemoryStaticEntity = { - createDefault: () => InMemoryEntity & DefaultableInMemoryEntity; + createDefault: () => InMemoryEntity & Defaultable; }; -export type DefaultableInMemoryEntityConstructor = Constructor & DefaultableInMemoryStaticEntity; +export type DefaultableInMemoryEntityConstructor = Constructor & DefaultableInMemoryStaticEntity; +export declare function defaultableEntityMixin(Item: AbstractConstructor): void; diff --git a/dist/js/entity/mixins/DefaultableMixin.js b/dist/js/entity/mixins/DefaultableMixin.js index afd926e4..af808ac6 100644 --- a/dist/js/entity/mixins/DefaultableMixin.js +++ b/dist/js/entity/mixins/DefaultableMixin.js @@ -2,20 +2,7 @@ /* eslint-disable @typescript-eslint/no-explicit-any */ Object.defineProperty(exports, "__esModule", { value: true }); exports.defaultableEntityMixin = defaultableEntityMixin; -exports.defaultableEntityStaticMixin = defaultableEntityStaticMixin; -function defaultableEntityMixin(item) { - // @ts-expect-error - const properties = { - get isDefault() { - return this.prop("isDefault", false); - }, - set isDefault(isDefault) { - this.setProp("isDefault", isDefault); - }, - }; - Object.defineProperties(item, Object.getOwnPropertyDescriptors(properties)); - return properties; -} +const DefaultableSchemaMixin_1 = require("../../generated/DefaultableSchemaMixin"); function defaultableEntityStaticMixin(Item) { // @ts-expect-error const staticProperties = { @@ -26,3 +13,7 @@ function defaultableEntityStaticMixin(Item) { Object.defineProperties(Item, Object.getOwnPropertyDescriptors(staticProperties)); return staticProperties; } +function defaultableEntityMixin(Item) { + (0, DefaultableSchemaMixin_1.defaultableSchemaMixin)(Item.prototype); + defaultableEntityStaticMixin(Item); +} diff --git a/dist/js/entity/mixins/HasConsistencyChecksMixin.d.ts b/dist/js/entity/mixins/HasConsistencyChecksMixin.d.ts index be7326c1..2aa7725a 100644 --- a/dist/js/entity/mixins/HasConsistencyChecksMixin.d.ts +++ b/dist/js/entity/mixins/HasConsistencyChecksMixin.d.ts @@ -1,9 +1,11 @@ import type { ConsistencyCheck } from "@mat3ra/esse/dist/js/types"; +import { type HasConsistencyChecksSchemaMixin } from "../../generated/HasConsistencyChecksSchemaMixin"; import type { Constructor } from "../../utils/types"; import { InMemoryEntity } from "../in_memory"; -export declare function hasConsistencyChecksMixin(item: T): InMemoryEntity & HasConsistencyChecksInMemoryEntity; -export type HasConsistencyChecksInMemoryEntity = { - consistencyChecks: ConsistencyCheck[]; +type HasConsistencyChecksProperties = { addConsistencyChecks: (array: ConsistencyCheck[]) => void; }; -export type HasConsistencyChecksInMemoryEntityConstructor = Constructor; +export type HasConsistencyChecks = HasConsistencyChecksSchemaMixin & HasConsistencyChecksProperties; +export type HasConsistencyChecksInMemoryEntityConstructor = Constructor; +export declare function hasConsistencyChecksMixin(item: T): asserts item is T & HasConsistencyChecks; +export {}; diff --git a/dist/js/entity/mixins/HasConsistencyChecksMixin.js b/dist/js/entity/mixins/HasConsistencyChecksMixin.js index f71cb3e9..1e4d7889 100644 --- a/dist/js/entity/mixins/HasConsistencyChecksMixin.js +++ b/dist/js/entity/mixins/HasConsistencyChecksMixin.js @@ -1,19 +1,14 @@ "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.hasConsistencyChecksMixin = hasConsistencyChecksMixin; +const HasConsistencyChecksSchemaMixin_1 = require("../../generated/HasConsistencyChecksSchemaMixin"); function hasConsistencyChecksMixin(item) { + (0, HasConsistencyChecksSchemaMixin_1.hasConsistencyChecksSchemaMixin)(item); // @ts-expect-error const properties = { - get consistencyChecks() { - return this.prop("consistencyChecks", []); - }, - set consistencyChecks(array) { - this.setProp("consistencyChecks", array); - }, addConsistencyChecks(array) { this.consistencyChecks = [...(this.consistencyChecks || []), ...array]; }, }; Object.defineProperties(item, Object.getOwnPropertyDescriptors(properties)); - return properties; } diff --git a/dist/js/entity/mixins/HasDescriptionMixin.d.ts b/dist/js/entity/mixins/HasDescriptionMixin.d.ts index 520fe15a..4744e53a 100644 --- a/dist/js/entity/mixins/HasDescriptionMixin.d.ts +++ b/dist/js/entity/mixins/HasDescriptionMixin.d.ts @@ -1,9 +1,3 @@ -import type { DescriptionSchema } from "@mat3ra/esse/dist/js/types"; -import type { Constructor } from "../../utils/types"; -import { InMemoryEntity } from "../in_memory"; -export declare function hasDescriptionMixin(item: T): InMemoryEntity & HasDescriptionInMemoryEntity; -export type HasDescriptionInMemoryEntity = { - description: string; - descriptionObject: DescriptionSchema["descriptionObject"]; -}; -export type HasDescriptionInMemoryEntityConstructor = Constructor; +import { type HasDescriptionSchemaMixin, hasDescriptionSchemaMixin } from "../../generated/HasDescriptionSchemaMixin"; +export type HasDescription = HasDescriptionSchemaMixin; +export declare const hasDescriptionPropertiesMixin: typeof hasDescriptionSchemaMixin; diff --git a/dist/js/entity/mixins/HasDescriptionMixin.js b/dist/js/entity/mixins/HasDescriptionMixin.js index ce240947..926b8fd5 100644 --- a/dist/js/entity/mixins/HasDescriptionMixin.js +++ b/dist/js/entity/mixins/HasDescriptionMixin.js @@ -1,22 +1,5 @@ "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); -exports.hasDescriptionMixin = hasDescriptionMixin; -function hasDescriptionMixin(item) { - // @ts-expect-error - const properties = { - get description() { - return this.prop("description", ""); - }, - set description(string) { - this.setProp("description", string); - }, - get descriptionObject() { - return this.prop("descriptionObject"); - }, - set descriptionObject(obj) { - this.setProp("descriptionObject", obj); - }, - }; - Object.defineProperties(item, Object.getOwnPropertyDescriptors(properties)); - return properties; -} +exports.hasDescriptionPropertiesMixin = void 0; +const HasDescriptionSchemaMixin_1 = require("../../generated/HasDescriptionSchemaMixin"); +exports.hasDescriptionPropertiesMixin = HasDescriptionSchemaMixin_1.hasDescriptionSchemaMixin; diff --git a/dist/js/entity/mixins/HasMetadataMixin.d.ts b/dist/js/entity/mixins/HasMetadataMixin.d.ts index 097d45aa..49273f34 100644 --- a/dist/js/entity/mixins/HasMetadataMixin.d.ts +++ b/dist/js/entity/mixins/HasMetadataMixin.d.ts @@ -1,8 +1,11 @@ +import type { MetadataSchema } from "@mat3ra/esse/dist/js/types"; import type { Constructor } from "../../utils/types"; import { InMemoryEntity } from "../in_memory"; -export declare function hasMetadataMixin(item: T): InMemoryEntity & HasMetadataInMemoryEntity; -export type HasMetadataInMemoryEntity = { - metadata: object; - updateMetadata: (object: object) => void; +type Metadata = MetadataSchema["metadata"]; +export type HasMetadata = { + metadata?: T; + updateMetadata: (object: Partial) => void; }; -export type HasMetadataInMemoryEntityConstructor = Constructor; +export type HasMetadataInMemoryEntityConstructor = Constructor>; +export declare function hasMetadataMixin(item: T): asserts item is T & HasMetadata; +export {}; diff --git a/dist/js/entity/mixins/HasMetadataMixin.js b/dist/js/entity/mixins/HasMetadataMixin.js index a513f28c..cb9338b4 100644 --- a/dist/js/entity/mixins/HasMetadataMixin.js +++ b/dist/js/entity/mixins/HasMetadataMixin.js @@ -1,19 +1,21 @@ "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.hasMetadataMixin = hasMetadataMixin; -function hasMetadataMixin(item) { +function hasMetadataPropertiesMixin(item) { // @ts-expect-error const properties = { get metadata() { - return this.prop("metadata", {}); + return this.prop("metadata"); }, - set metadata(object) { - this.setProp("metadata", object); + set metadata(value) { + this.setProp("metadata", value); }, updateMetadata(object) { - this.metadata = { ...this.metadata, ...object }; + this.setProp("metadata", { ...this.metadata, ...object }); }, }; Object.defineProperties(item, Object.getOwnPropertyDescriptors(properties)); - return properties; +} +function hasMetadataMixin(item) { + hasMetadataPropertiesMixin(item); } diff --git a/dist/js/entity/mixins/HasRepetitionMixin.d.ts b/dist/js/entity/mixins/HasRepetitionMixin.d.ts new file mode 100644 index 00000000..671178a0 --- /dev/null +++ b/dist/js/entity/mixins/HasRepetitionMixin.d.ts @@ -0,0 +1,10 @@ +import type { InMemoryEntity } from "../in_memory"; +export interface HasRepetition { + _repetition: number; + _totalRepetitions: number; + repetition: number; + totalRepetitions: number; + setRepetition: (repetition: number) => void; + setTotalRepetitions: (totalRepetition: number) => void; +} +export declare function hasRepetitionMixin(item: T): asserts item is T & HasRepetition; diff --git a/dist/js/entity/mixins/HasRepetitionMixin.js b/dist/js/entity/mixins/HasRepetitionMixin.js new file mode 100644 index 00000000..5d13ab78 --- /dev/null +++ b/dist/js/entity/mixins/HasRepetitionMixin.js @@ -0,0 +1,33 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.hasRepetitionMixin = hasRepetitionMixin; +function hasRepetitionMixin(item) { + // @ts-expect-error + const properties = { + _repetition: 0, + _totalRepetitions: 0, + get repetition() { + return this._repetition; + }, + set repetition(repetition) { + this._repetition = repetition; + }, + get totalRepetitions() { + return this._totalRepetitions || 1; + }, + setRepetition(repetition) { + this.repetition = repetition; + // if (["Subworkflow", "Workflow"].find((n) => this.constructor.name === n)) { + // this.units.forEach((u) => u.setRepetition(repetition)); + // } + // if (this.constructor.name === "Workflow") { + // this.subworkflows.forEach((sw) => sw.setRepetition(repetition)); + // this.workflows.forEach((wf) => wf.setRepetition(repetition)); + // } + }, + setTotalRepetitions(totalRepetition) { + this._totalRepetitions = totalRepetition; + }, + }; + Object.defineProperties(item, Object.getOwnPropertyDescriptors(properties)); +} diff --git a/dist/js/entity/mixins/HashedEntityMixin.d.ts b/dist/js/entity/mixins/HashedEntityMixin.d.ts new file mode 100644 index 00000000..178b857b --- /dev/null +++ b/dist/js/entity/mixins/HashedEntityMixin.d.ts @@ -0,0 +1,8 @@ +import type { Constructor } from "../../utils/types"; +import { InMemoryEntity } from "../in_memory"; +export type HashedEntity = { + calculateHash(): string; + getHashObject?(): object; +}; +export type HashedInMemoryEntityConstructor = Constructor; +export declare function hashedEntityMixin(item: T): asserts item is T & HashedEntity; diff --git a/dist/js/entity/mixins/HashedEntityMixin.js b/dist/js/entity/mixins/HashedEntityMixin.js new file mode 100644 index 00000000..d365abc1 --- /dev/null +++ b/dist/js/entity/mixins/HashedEntityMixin.js @@ -0,0 +1,19 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.hashedEntityMixin = hashedEntityMixin; +const hash_1 = require("../../utils/hash"); +function hashedEntityMixin(item) { + // @ts-expect-error + const properties = { + /** + * @summary Calculates hash based on meaningful fields and unit-specific fields. Unit-specific fields are + * separated into _typeSpecificHash function which can be overwritten by child classes. + * head and next are also important but not considered since they are included in subworkflow hash. + */ + calculateHash() { + var _a, _b; + return (0, hash_1.calculateHashFromObject)((_b = (_a = this.getHashObject) === null || _a === void 0 ? void 0 : _a.call(this)) !== null && _b !== void 0 ? _b : {}); + }, + }; + Object.defineProperties(item, Object.getOwnPropertyDescriptors(properties)); +} diff --git a/dist/js/entity/mixins/ImportantSettingsProviderMixin.d.ts b/dist/js/entity/mixins/ImportantSettingsProviderMixin.d.ts new file mode 100644 index 00000000..9cb5ce49 --- /dev/null +++ b/dist/js/entity/mixins/ImportantSettingsProviderMixin.d.ts @@ -0,0 +1,17 @@ +import type { Constructor } from "../../utils/types"; +import type { InMemoryEntity } from "../in_memory"; +export interface ContextProvider { + domain?: string; +} +export type ImportantSettingsProvider = { + important: object; + setImportant(key: string, value: unknown): void; + importantSettingsProviders: ContextProvider[]; + isImportantEdited: boolean | undefined; +}; +type AbstractBase = { + contextProviders: ContextProvider[]; +}; +export type ImportantSettingsProviderInMemoryEntityConstructor = Constructor; +export declare function importantSettingsProviderMixin(item: T): asserts item is T & ImportantSettingsProvider; +export {}; diff --git a/dist/js/entity/mixins/ImportantSettingsProviderMixin.js b/dist/js/entity/mixins/ImportantSettingsProviderMixin.js new file mode 100644 index 00000000..b4477d54 --- /dev/null +++ b/dist/js/entity/mixins/ImportantSettingsProviderMixin.js @@ -0,0 +1,25 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.importantSettingsProviderMixin = importantSettingsProviderMixin; +const clone_1 = require("../../utils/clone"); +function importantSettingsProviderMixin(item) { + // @ts-expect-error + const properties = { + get important() { + return (0, clone_1.deepClone)(this._json.important || {}); + }, + setImportant(key, value) { + this.setProp("important", { [key]: value }); + }, + get importantSettingsProviders() { + return this.contextProviders.filter((p) => p.domain === "important"); + }, + get isImportantEdited() { + return this.prop("important.isEdited"); + }, + set isImportantEdited(bool) { + this.setProp("important", Object.assign(this.important, { isEdited: bool })); + }, + }; + Object.defineProperties(item, Object.getOwnPropertyDescriptors(properties)); +} diff --git a/dist/js/entity/mixins/NamedEntityMixin.d.ts b/dist/js/entity/mixins/NamedEntityMixin.d.ts index 4ffdc6b8..e11a74f2 100644 --- a/dist/js/entity/mixins/NamedEntityMixin.d.ts +++ b/dist/js/entity/mixins/NamedEntityMixin.d.ts @@ -1,8 +1,10 @@ +import { type NamedEntitySchemaMixin } from "../../generated/NamedEntitySchemaMixin"; import type { Constructor } from "../../utils/types"; import { InMemoryEntity } from "../in_memory"; -export declare function namedEntityMixin(item: T): InMemoryEntity & NamedInMemoryEntity; -export type NamedInMemoryEntity = { - name: string; +type NamedEntityProperties = { setName: (name: string) => void; }; -export type NamedInMemoryEntityConstructor = Constructor; +export type NamedEntity = NamedEntitySchemaMixin & NamedEntityProperties; +export type NamedInMemoryEntityConstructor = Constructor; +export declare function namedEntityMixin(item: T): asserts item is T & NamedEntity; +export {}; diff --git a/dist/js/entity/mixins/NamedEntityMixin.js b/dist/js/entity/mixins/NamedEntityMixin.js index 1b153663..8884807d 100644 --- a/dist/js/entity/mixins/NamedEntityMixin.js +++ b/dist/js/entity/mixins/NamedEntityMixin.js @@ -1,19 +1,17 @@ "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.namedEntityMixin = namedEntityMixin; -function namedEntityMixin(item) { +const NamedEntitySchemaMixin_1 = require("../../generated/NamedEntitySchemaMixin"); +function namedEntityPropertiesMixin(item) { // @ts-expect-error const properties = { - get name() { - return this.prop("name", ""); - }, - set name(name) { - this.setProp("name", name); - }, setName(name) { this.setProp("name", name); }, }; Object.defineProperties(item, Object.getOwnPropertyDescriptors(properties)); - return properties; +} +function namedEntityMixin(item) { + (0, NamedEntitySchemaMixin_1.namedEntitySchemaMixin)(item); + namedEntityPropertiesMixin(item); } diff --git a/dist/js/entity/mixins/RuntimeItemsMixin.d.ts b/dist/js/entity/mixins/RuntimeItemsMixin.d.ts index 91521250..9bf97071 100644 --- a/dist/js/entity/mixins/RuntimeItemsMixin.d.ts +++ b/dist/js/entity/mixins/RuntimeItemsMixin.d.ts @@ -1,35 +1,14 @@ -import type { NameResultSchema } from "@mat3ra/esse/dist/js/types"; +import { type RuntimeItemsSchemaMixin } from "../../generated/RuntimeItemsSchemaMixin"; import type { Constructor } from "../../utils/types"; import { InMemoryEntity } from "../in_memory"; -export declare enum ItemKey { - results = "results", - monitors = "monitors", - preProcessors = "preProcessors", - postProcessors = "postProcessors" -} -export type BaseRuntimeItemsInMemoryEntity = InMemoryEntity & { - _json: { - results?: NameResultSchema[]; - monitors?: NameResultSchema[]; - preProcessors?: NameResultSchema[]; - postProcessors?: NameResultSchema[]; - }; - defaultResults?: NameResultSchema[]; - defaultMonitors?: NameResultSchema[]; - defaultPreProcessors?: NameResultSchema[]; - defaultPostProcessors?: NameResultSchema[]; -}; -export declare function runtimeItemsMixin(item: BaseRuntimeItemsInMemoryEntity): void; -export type RuntimeItemsInMemoryEntity = { - results: NameResultSchema[]; - monitors: NameResultSchema[]; - preProcessors: NameResultSchema[]; - postProcessors: NameResultSchema[]; +type RuntimeItemsProperties = { hashObjectFromRuntimeItems: { - results: NameResultSchema[]; - preProcessors: NameResultSchema[]; - postProcessors: NameResultSchema[]; + results: RuntimeItemsSchemaMixin["results"]; + preProcessors: RuntimeItemsSchemaMixin["preProcessors"]; + postProcessors: RuntimeItemsSchemaMixin["postProcessors"]; }; }; -export type RuntimeItemsInMemoryEntityConstructor = Constructor; -export default function RuntimeItemsMixin>(superclass: S): S & RuntimeItemsInMemoryEntityConstructor; +export type RuntimeItems = RuntimeItemsSchemaMixin & RuntimeItemsProperties; +export type RuntimeItemsInMemoryEntityConstructor = Constructor; +export declare function runtimeItemsMixin(item: T): asserts item is T & RuntimeItems; +export {}; diff --git a/dist/js/entity/mixins/RuntimeItemsMixin.js b/dist/js/entity/mixins/RuntimeItemsMixin.js index 1634358b..28ebc9cf 100644 --- a/dist/js/entity/mixins/RuntimeItemsMixin.js +++ b/dist/js/entity/mixins/RuntimeItemsMixin.js @@ -1,41 +1,10 @@ "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); -exports.ItemKey = void 0; exports.runtimeItemsMixin = runtimeItemsMixin; -exports.default = RuntimeItemsMixin; -const object_1 = require("../../utils/object"); -var ItemKey; -(function (ItemKey) { - ItemKey["results"] = "results"; - ItemKey["monitors"] = "monitors"; - ItemKey["preProcessors"] = "preProcessors"; - ItemKey["postProcessors"] = "postProcessors"; -})(ItemKey || (exports.ItemKey = ItemKey = {})); -/* - * @summary Contains runtime items: results, monitors, pre/postProcessors - * Is meant to work with Entity, InMemoryEntity b/c of `prop` extraction from `_json`. - */ -function runtimeItemsMixin(item) { - // @ts-expect-error - this is a hack to get the properties of the item +const RuntimeItemsSchemaMixin_1 = require("../../generated/RuntimeItemsSchemaMixin"); +function runtimeItemsPropertiesMixin(item) { + // @ts-expect-error const properties = { - get results() { - var _a; - return this.prop("results", (_a = this.defaultResults) !== null && _a !== void 0 ? _a : []).map(object_1.safeMakeObject); - }, - get monitors() { - var _a; - return this.prop("monitors", (_a = this.defaultMonitors) !== null && _a !== void 0 ? _a : []).map(object_1.safeMakeObject); - }, - get preProcessors() { - var _a; - // TODO: safeMakeObject could return null. Should we throw an error here? - return this.prop("preProcessors", (_a = this.defaultPreProcessors) !== null && _a !== void 0 ? _a : []).map(object_1.safeMakeObject); - }, - get postProcessors() { - var _a; - // TODO: safeMakeObject could return null. Should we throw an error here? - return this.prop("postProcessors", (_a = this.defaultPostProcessors) !== null && _a !== void 0 ? _a : []).map(object_1.safeMakeObject); - }, get hashObjectFromRuntimeItems() { return { results: this.results, @@ -46,9 +15,7 @@ function runtimeItemsMixin(item) { }; Object.defineProperties(item, Object.getOwnPropertyDescriptors(properties)); } -function RuntimeItemsMixin(superclass) { - class RuntimeItemsMixin extends superclass { - } - runtimeItemsMixin(RuntimeItemsMixin.prototype); - return RuntimeItemsMixin; +function runtimeItemsMixin(item) { + (0, RuntimeItemsSchemaMixin_1.runtimeItemsSchemaMixin)(item); + runtimeItemsPropertiesMixin(item); } diff --git a/dist/js/entity/mixins/TaggableMixin.d.ts b/dist/js/entity/mixins/TaggableMixin.d.ts index 55e7b0aa..a8b7cff5 100644 --- a/dist/js/entity/mixins/TaggableMixin.d.ts +++ b/dist/js/entity/mixins/TaggableMixin.d.ts @@ -1,8 +1,10 @@ +import { type TaggableSchemaMixin } from "../../generated/TaggableSchemaMixin"; import type { Constructor } from "../../utils/types"; import { InMemoryEntity } from "../in_memory"; -export declare function taggableMixin(item: T): InMemoryEntity & TaggableInMemoryEntity; -export type TaggableInMemoryEntity = { - tags: string[]; +type TaggableProperties = { setTags: (array: string[]) => void; }; -export type TaggableInMemoryEntityConstructor = Constructor; +export type Taggable = TaggableSchemaMixin & TaggableProperties; +export type TaggableInMemoryEntityConstructor = Constructor; +export declare function taggableMixin(item: T): asserts item is T & Taggable; +export {}; diff --git a/dist/js/entity/mixins/TaggableMixin.js b/dist/js/entity/mixins/TaggableMixin.js index eb3df3e6..a8bf3ab3 100644 --- a/dist/js/entity/mixins/TaggableMixin.js +++ b/dist/js/entity/mixins/TaggableMixin.js @@ -1,19 +1,17 @@ "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.taggableMixin = taggableMixin; -function taggableMixin(item) { +const TaggableSchemaMixin_1 = require("../../generated/TaggableSchemaMixin"); +function taggablePropertiesMixin(item) { // @ts-expect-error const properties = { - get tags() { - return this.prop("tags", []); - }, - set tags(array) { - this.setProp("tags", array); - }, setTags(array) { this.tags = array.filter((value, index, self) => self.indexOf(value) === index); }, }; Object.defineProperties(item, Object.getOwnPropertyDescriptors(properties)); - return properties; +} +function taggableMixin(item) { + (0, TaggableSchemaMixin_1.taggableSchemaMixin)(item); + taggablePropertiesMixin(item); } diff --git a/dist/js/entity/other.d.ts b/dist/js/entity/other.d.ts index 2632604d..73c0ac32 100644 --- a/dist/js/entity/other.d.ts +++ b/dist/js/entity/other.d.ts @@ -7,7 +7,7 @@ type DefaultableBase = typeof InMemoryEntity & DefaultableInMemoryEntityConstruc type NamedBase = typeof InMemoryEntity & NamedInMemoryEntityConstructor; type NamedDefaultableBase = typeof InMemoryEntity & DefaultableInMemoryEntityConstructor & NamedInMemoryEntityConstructor; type HasMetadataNamedDefaultableBase = typeof InMemoryEntity & DefaultableInMemoryEntityConstructor & NamedInMemoryEntityConstructor & HasMetadataInMemoryEntityConstructor; -type HasConsistencyChecksHasMetadataNamedDefaultableInMemoryEntityBase = typeof HasMetadataNamedDefaultableInMemoryEntity & HasConsistencyChecksInMemoryEntityConstructor; +type HasConsistencyChecksHasMetadataNamedDefaultableInMemoryEntityBase = typeof InMemoryEntity & DefaultableInMemoryEntityConstructor & NamedInMemoryEntityConstructor & HasConsistencyChecksInMemoryEntityConstructor; declare const DefaultableInMemoryEntity_base: DefaultableBase; export declare class DefaultableInMemoryEntity extends DefaultableInMemoryEntity_base { } @@ -23,398 +23,4 @@ export declare class HasMetadataNamedDefaultableInMemoryEntity extends HasMetada declare const HasConsistencyChecksHasMetadataNamedDefaultableInMemoryEntity_base: HasConsistencyChecksHasMetadataNamedDefaultableInMemoryEntityBase; export declare class HasConsistencyChecksHasMetadataNamedDefaultableInMemoryEntity extends HasConsistencyChecksHasMetadataNamedDefaultableInMemoryEntity_base { } -export declare const NamedDefaultableRepetitionImportantSettingsInMemoryEntity: { - new (...args: any[]): { - readonly important: any; - setImportant(key: string, value: unknown): void; - readonly importantSettingsProviders: import("./mixins/context").ContextProvider[]; - isImportantEdited: boolean | undefined; - _contextProviders: import("./mixins/context").ContextProvider[]; - readonly contextProviders: import("./mixins/context").ContextProvider[]; - _json: import("@mat3ra/esse/dist/js/esse/types").AnyObject; - prop(name: string, defaultValue: T): T; - prop(name: string): T | undefined; - requiredProp(name: string): T; - 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: InMemoryEntity[], entity: string, name: string): InMemoryEntity; - id: string; - _id: string; - schemaVersion: string; - systemName: string; - readonly slug: string; - readonly isSystemEntity: boolean; - }; -} & { - new (...args: any[]): { - _repetition: number; - _totalRepetitions: number; - units: import("./mixins/repetition").HasRepetition[]; - workflows: import("./mixins/repetition").HasRepetition[]; - subworkflows: import("./mixins/repetition").HasRepetition[]; - readonly repetition: number; - setRepetition(repetition: number): void; - readonly totalRepetitions: number; - setTotalRepetitions(totalRepetition: number): void; - _json: import("@mat3ra/esse/dist/js/esse/types").AnyObject; - prop(name: string, defaultValue: T): T; - prop(name: string): T | undefined; - requiredProp(name: string): T; - 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: InMemoryEntity[], entity: string, name: string): InMemoryEntity; - id: string; - _id: string; - schemaVersion: string; - systemName: string; - readonly slug: string; - readonly isSystemEntity: boolean; - }; -} & typeof NamedDefaultableInMemoryEntity; -export declare const NamedDefaultableRepetitionContextAndRenderInMemoryEntity: { - new (...params: any[]): { - _context: import("./mixins/context").Context; - context: import("@mat3ra/esse/dist/js/esse/types").AnyObject; - updateContext(ctx?: {}, executeRender?: boolean): void; - getPersistentContext(): object | undefined; - updatePersistentContext(ctx?: object): void; - getCombinedContext(): { - [x: string]: unknown; - }; - render(_context?: import("@mat3ra/esse/dist/js/esse/types").AnyObject): void; - _json: import("@mat3ra/esse/dist/js/esse/types").AnyObject; - prop(name: string, defaultValue: T): T; - prop(name: string): T | undefined; - requiredProp(name: string): T; - 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: InMemoryEntity[], entity: string, name: string): InMemoryEntity; - id: string; - _id: string; - schemaVersion: string; - systemName: string; - readonly slug: string; - readonly isSystemEntity: boolean; - }; -} & { - new (...args: any[]): { - _repetition: number; - _totalRepetitions: number; - units: import("./mixins/repetition").HasRepetition[]; - workflows: import("./mixins/repetition").HasRepetition[]; - subworkflows: import("./mixins/repetition").HasRepetition[]; - readonly repetition: number; - setRepetition(repetition: number): void; - readonly totalRepetitions: number; - setTotalRepetitions(totalRepetition: number): void; - _json: import("@mat3ra/esse/dist/js/esse/types").AnyObject; - prop(name: string, defaultValue: T): T; - prop(name: string): T | undefined; - requiredProp(name: string): T; - 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: InMemoryEntity[], entity: string, name: string): InMemoryEntity; - id: string; - _id: string; - schemaVersion: string; - systemName: string; - readonly slug: string; - readonly isSystemEntity: boolean; - }; -} & typeof NamedDefaultableInMemoryEntity; -export declare const NamedDefaultableRepetitionRuntimeItemsImportantSettingsContextAndRenderHashedInMemoryEntity: { - new (...args: any[]): { - getHashObject(): {}; - calculateHash(): string; - _json: import("@mat3ra/esse/dist/js/esse/types").AnyObject; - prop(name: string, defaultValue: T): T; - prop(name: string): T | undefined; - requiredProp(name: string): T; - 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: InMemoryEntity[], entity: string, name: string): InMemoryEntity; - id: string; - _id: string; - schemaVersion: string; - systemName: string; - readonly slug: string; - readonly isSystemEntity: boolean; - }; -} & { - new (...params: any[]): { - _context: import("./mixins/context").Context; - context: import("@mat3ra/esse/dist/js/esse/types").AnyObject; - updateContext(ctx?: {}, executeRender?: boolean): void; - getPersistentContext(): object | undefined; - updatePersistentContext(ctx?: object): void; - getCombinedContext(): { - [x: string]: unknown; - }; - render(_context?: import("@mat3ra/esse/dist/js/esse/types").AnyObject): void; - _json: import("@mat3ra/esse/dist/js/esse/types").AnyObject; - prop(name: string, defaultValue: T): T; - prop(name: string): T | undefined; - requiredProp(name: string): T; - 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: InMemoryEntity[], entity: string, name: string): InMemoryEntity; - id: string; - _id: string; - schemaVersion: string; - systemName: string; - readonly slug: string; - readonly isSystemEntity: boolean; - }; -} & { - new (...args: any[]): { - readonly important: any; - setImportant(key: string, value: unknown): void; - readonly importantSettingsProviders: import("./mixins/context").ContextProvider[]; - isImportantEdited: boolean | undefined; - _contextProviders: import("./mixins/context").ContextProvider[]; - readonly contextProviders: import("./mixins/context").ContextProvider[]; - _json: import("@mat3ra/esse/dist/js/esse/types").AnyObject; - prop(name: string, defaultValue: T): T; - prop(name: string): T | undefined; - requiredProp(name: string): T; - 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: InMemoryEntity[], entity: string, name: string): InMemoryEntity; - id: string; - _id: string; - schemaVersion: string; - systemName: string; - readonly slug: string; - readonly isSystemEntity: boolean; - }; -} & { - new (...args: any[]): { - readonly allowedResults: never[]; - readonly allowedMonitors: never[]; - readonly allowedPostProcessors: never[]; - _json: import("@mat3ra/esse/dist/js/esse/types").AnyObject; - prop(name: string, defaultValue: T): T; - prop(name: string): T | undefined; - requiredProp(name: string): T; - 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: InMemoryEntity[], entity: string, name: string): InMemoryEntity; - id: string; - _id: string; - schemaVersion: string; - systemName: string; - readonly slug: string; - readonly isSystemEntity: boolean; - }; -} & { - new (...params: any): { - _json: import("./mixins/runtime_items").RuntimeItemsUILogicJSON; - getDefaultsByKey(key: import("./mixins/RuntimeItemsMixin").ItemKey): import("@mat3ra/esse/dist/js/types").NameResultSchema[] | undefined; - setRuntimeItemsToDefaultValues(): void; - _initRuntimeItems(keys: import("./mixins/RuntimeItemsMixin").ItemKey[], _config: object): void; - _addRuntimeItem(key: import("./mixins/RuntimeItemsMixin").ItemKey | undefined, config: import("@mat3ra/esse/dist/js/types").RuntimeItemSchema): void; - _removeRuntimeItem(key: import("./mixins/RuntimeItemsMixin").ItemKey | undefined, config: import("@mat3ra/esse/dist/js/types").RuntimeItemSchema): void; - _removeRuntimeItemByName(key: import("./mixins/RuntimeItemsMixin").ItemKey, name: string): void; - _toggleRuntimeItem(key: import("./mixins/RuntimeItemsMixin").ItemKey | undefined, data: import("@mat3ra/esse/dist/js/types").RuntimeItemSchema, isAdding: boolean): void; - toggleResult(data: import("@mat3ra/esse/dist/js/types").RuntimeItemSchema, isAdding: boolean): void; - toggleMonitor(data: import("@mat3ra/esse/dist/js/types").RuntimeItemSchema, isAdding: boolean): void; - togglePreProcessor(data: import("@mat3ra/esse/dist/js/types").RuntimeItemSchema, isAdding: boolean): void; - togglePostProcessor(data: import("@mat3ra/esse/dist/js/types").RuntimeItemSchema, isAdding: boolean): void; - readonly resultNames: string[]; - readonly monitorNames: string[]; - readonly postProcessorNames: string[]; - readonly preProcessorNames: string[]; - getResultByName(name: string): import("@mat3ra/esse/dist/js/types").NameResultSchema | undefined; - prop(name: string, defaultValue: T): T; - prop(name: string): T | undefined; - requiredProp(name: string): T; - 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: InMemoryEntity[], entity: string, name: string): InMemoryEntity; - id: string; - _id: string; - schemaVersion: string; - systemName: string; - readonly slug: string; - readonly isSystemEntity: boolean; - defaultResults?: import("@mat3ra/esse/dist/js/types").NameResultSchema[]; - defaultMonitors?: import("@mat3ra/esse/dist/js/types").NameResultSchema[]; - defaultPreProcessors?: import("@mat3ra/esse/dist/js/types").NameResultSchema[]; - defaultPostProcessors?: import("@mat3ra/esse/dist/js/types").NameResultSchema[]; - results: import("@mat3ra/esse/dist/js/types").NameResultSchema[]; - monitors: import("@mat3ra/esse/dist/js/types").NameResultSchema[]; - preProcessors: import("@mat3ra/esse/dist/js/types").NameResultSchema[]; - postProcessors: import("@mat3ra/esse/dist/js/types").NameResultSchema[]; - hashObjectFromRuntimeItems: { - results: import("@mat3ra/esse/dist/js/types").NameResultSchema[]; - preProcessors: import("@mat3ra/esse/dist/js/types").NameResultSchema[]; - postProcessors: import("@mat3ra/esse/dist/js/types").NameResultSchema[]; - }; - }; -} & { - new (...args: any[]): { - _repetition: number; - _totalRepetitions: number; - units: import("./mixins/repetition").HasRepetition[]; - workflows: import("./mixins/repetition").HasRepetition[]; - subworkflows: import("./mixins/repetition").HasRepetition[]; - readonly repetition: number; - setRepetition(repetition: number): void; - readonly totalRepetitions: number; - setTotalRepetitions(totalRepetition: number): void; - _json: import("@mat3ra/esse/dist/js/esse/types").AnyObject; - prop(name: string, defaultValue: T): T; - prop(name: string): T | undefined; - requiredProp(name: string): T; - 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: InMemoryEntity[], entity: string, name: string): InMemoryEntity; - id: string; - _id: string; - schemaVersion: string; - systemName: string; - readonly slug: string; - readonly isSystemEntity: boolean; - }; -} & typeof NamedDefaultableInMemoryEntity; export {}; diff --git a/dist/js/entity/other.js b/dist/js/entity/other.js index 7ef78a29..c37b2165 100644 --- a/dist/js/entity/other.js +++ b/dist/js/entity/other.js @@ -1,36 +1,49 @@ "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); -exports.NamedDefaultableRepetitionRuntimeItemsImportantSettingsContextAndRenderHashedInMemoryEntity = exports.NamedDefaultableRepetitionContextAndRenderInMemoryEntity = exports.NamedDefaultableRepetitionImportantSettingsInMemoryEntity = exports.HasConsistencyChecksHasMetadataNamedDefaultableInMemoryEntity = exports.HasMetadataNamedDefaultableInMemoryEntity = exports.NamedDefaultableInMemoryEntity = exports.NamedInMemoryEntity = exports.DefaultableInMemoryEntity = void 0; +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 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 in_memory_1.InMemoryEntity { } exports.DefaultableInMemoryEntity = DefaultableInMemoryEntity; -(0, DefaultableMixin_1.defaultableEntityMixin)(DefaultableInMemoryEntity.prototype); -(0, DefaultableMixin_1.defaultableEntityStaticMixin)(DefaultableInMemoryEntity); +(0, DefaultableMixin_1.defaultableEntityMixin)(DefaultableInMemoryEntity); 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 { +(0, DefaultableMixin_1.defaultableEntityMixin)(NamedDefaultableInMemoryEntity); +class HasMetadataNamedDefaultableInMemoryEntity extends in_memory_1.InMemoryEntity { } exports.HasMetadataNamedDefaultableInMemoryEntity = HasMetadataNamedDefaultableInMemoryEntity; +(0, NamedEntityMixin_1.namedEntityMixin)(HasMetadataNamedDefaultableInMemoryEntity.prototype); +(0, DefaultableMixin_1.defaultableEntityMixin)(HasMetadataNamedDefaultableInMemoryEntity); (0, HasMetadataMixin_1.hasMetadataMixin)(HasMetadataNamedDefaultableInMemoryEntity.prototype); -class HasConsistencyChecksHasMetadataNamedDefaultableInMemoryEntity extends HasMetadataNamedDefaultableInMemoryEntity { +class HasConsistencyChecksHasMetadataNamedDefaultableInMemoryEntity extends in_memory_1.InMemoryEntity { } exports.HasConsistencyChecksHasMetadataNamedDefaultableInMemoryEntity = HasConsistencyChecksHasMetadataNamedDefaultableInMemoryEntity; +(0, NamedEntityMixin_1.namedEntityMixin)(HasConsistencyChecksHasMetadataNamedDefaultableInMemoryEntity.prototype); +(0, DefaultableMixin_1.defaultableEntityMixin)(HasConsistencyChecksHasMetadataNamedDefaultableInMemoryEntity); +(0, HasMetadataMixin_1.hasMetadataMixin)(HasConsistencyChecksHasMetadataNamedDefaultableInMemoryEntity.prototype); (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)))))); +// export const NamedDefaultableRepetitionImportantSettingsInMemoryEntity = +// ImportantSettingsProviderMixin(HasRepetitionMixin(NamedDefaultableInMemoryEntity)); +// export const NamedDefaultableRepetitionContextAndRenderInMemoryEntity = ContextAndRenderFieldsMixin( +// HasRepetitionMixin(NamedDefaultableInMemoryEntity), +// ); +// export const NamedDefaultableRepetitionRuntimeItemsImportantSettingsContextAndRenderHashedInMemoryEntity = +// HashedEntityMixin( +// ContextAndRenderFieldsMixin( +// ImportantSettingsProviderMixin( +// RuntimeItemsUIAllowedMixin( +// RuntimeItemsUILogicMixin(HasRepetitionMixin(NamedDefaultableInMemoryEntity)), +// ), +// ), +// ), +// ); diff --git a/dist/js/generateSchemaMixin.d.ts b/dist/js/generateSchemaMixin.d.ts index ddb4f4fa..09714f4c 100644 --- a/dist/js/generateSchemaMixin.d.ts +++ b/dist/js/generateSchemaMixin.d.ts @@ -6,9 +6,10 @@ import type { JSONSchema7 } from "json-schema"; * @param outputPaths - Object mapping schema IDs to output file paths * @param skipFields - Array of field names to skip during generation * @param from - Import path for the schema type (default: "@mat3ra/esse/dist/js/types") + * @param entityFrom - Import path for the entity type (default: "@mat3ra/code/dist/js/entity") * @returns - Object with success and error counts */ -declare function generateShemaMixin(schemas: JSONSchema7[], outputPaths: Record, skipFields?: string[], from?: string): { +declare function generateShemaMixin(schemas: JSONSchema7[], outputPaths: Record, skipFields?: string[], from?: string, entityFrom?: string): { successCount: number; errorCount: number; }; diff --git a/dist/js/generateSchemaMixin.js b/dist/js/generateSchemaMixin.js index d65c0612..06774519 100644 --- a/dist/js/generateSchemaMixin.js +++ b/dist/js/generateSchemaMixin.js @@ -68,9 +68,10 @@ function extractSchemaProperties(schema) { * @param entityTypeName - Name of the entity type * @param skipFields - Array of field names to skip * @param from - Import path for the schema type (default: "@mat3ra/esse/dist/js/types") + * @param entityFrom - Import path for the entity type (default: "@mat3ra/code/dist/js/entity") * @returns - Generated TypeScript code */ -function generateMixinFunction(schema, schemaName, mixinTypeName, entityTypeName, skipFields = [], from = "@mat3ra/esse/dist/js/types") { +function generateMixinFunction(schema, schemaName, mixinTypeName, entityTypeName, skipFields = [], from = "@mat3ra/esse/dist/js/types", entityFrom = "@mat3ra/code/dist/js/entity") { // Convert mixin type name to camelCase for function name const functionName = mixinTypeName.charAt(0).toLowerCase() + mixinTypeName.slice(1); // Extract properties, handling allOf if present @@ -80,14 +81,21 @@ function generateMixinFunction(schema, schemaName, mixinTypeName, entityTypeName } // Filter out skip fields const propertyEntries = Object.entries(properties).filter(([propertyName]) => !skipFields.includes(propertyName)); - let code = `import type { InMemoryEntity } from "@mat3ra/code/dist/js/entity";\n`; + let code = `import type { InMemoryEntity } from "${entityFrom}";\n`; code += `import type { ${schemaName} } from "${from}";\n\n`; - // Generate the mixin type using Omit utility - const skipFieldNames = skipFields.map((field) => `"${field}"`).join(" | "); - code += `export type ${mixinTypeName} = Omit<${schemaName}, ${skipFieldNames}>;\n\n`; + // Generate the mixin type - only use Omit if skipFields has values + if (skipFields && skipFields.length > 0) { + const skipFieldNames = skipFields.map((field) => `"${field}"`).join(" | "); + code += `export type ${mixinTypeName} = Omit<${schemaName}, ${skipFieldNames}>;\n\n`; + } + else { + code += `export type ${mixinTypeName} = ${schemaName};\n\n`; + } // Generate the entity type code += `export type ${entityTypeName} = InMemoryEntity & ${mixinTypeName};\n\n`; - code += `export function ${functionName}(item: InMemoryEntity) {\n`; + code += `export function ${functionName}(\n`; + code += ` item: InMemoryEntity,\n`; + code += `): asserts item is T & ${mixinTypeName} {\n`; code += ` // @ts-expect-error\n`; code += ` const properties: InMemoryEntity & ${mixinTypeName} = {\n`; for (let i = 0; i < propertyEntries.length; i++) { @@ -97,6 +105,9 @@ function generateMixinFunction(schema, schemaName, mixinTypeName, entityTypeName const typeAnnotation = generateTypeAnnotation(propertyName, schemaName); code += `get ${propertyName}() {\n`; code += `return this.${methodName}<${typeAnnotation}>("${propertyName}");\n`; + code += `},\n`; + code += `set ${propertyName}(value: ${typeAnnotation}) {\n`; + code += `this.setProp("${propertyName}", value);\n`; code += `}`; // Add comma for all properties except the last one if (i < propertyEntries.length - 1) { @@ -117,9 +128,10 @@ function generateMixinFunction(schema, schemaName, mixinTypeName, entityTypeName * @param outputPath - The output file path * @param skipFields - Array of field names to skip * @param from - Import path for the schema type (default: "@mat3ra/esse/dist/js/types") + * @param entityFrom - Import path for the entity type (default: "@mat3ra/code/dist/js/entity") * @returns - Generated TypeScript code */ -function generateMixinFromSchemaId(schemaId, outputPath, skipFields = [], from = "@mat3ra/esse/dist/js/types") { +function generateMixinFromSchemaId(schemaId, outputPath, skipFields = [], from = "@mat3ra/esse/dist/js/types", entityFrom = "@mat3ra/code/dist/js/entity") { var _a, _b; // Get the resolved schema by ID const schema = JSONSchemasInterface_1.default.getSchemaById(schemaId); @@ -151,7 +163,7 @@ function generateMixinFromSchemaId(schemaId, outputPath, skipFields = [], from = const mixinTypeName = fileName; const entityTypeName = fileName.replace("SchemaMixin", "InMemoryEntity"); // Generate the complete mixin function - return generateMixinFunction(schema, schemaName, mixinTypeName, entityTypeName, skipFields, from); + return generateMixinFunction(schema, schemaName, mixinTypeName, entityTypeName, skipFields, from, entityFrom); } /** * Runs ESLint autofix on generated files @@ -177,9 +189,10 @@ function runESLintAutofix(filePaths) { * @param outputPaths - Object mapping schema IDs to output file paths * @param skipFields - Array of field names to skip during generation * @param from - Import path for the schema type (default: "@mat3ra/esse/dist/js/types") + * @param entityFrom - Import path for the entity type (default: "@mat3ra/code/dist/js/entity") * @returns - Object with success and error counts */ -function generateShemaMixin(schemas, outputPaths, skipFields = [], from = "@mat3ra/esse/dist/js/types") { +function generateShemaMixin(schemas, outputPaths, skipFields = [], from = "@mat3ra/esse/dist/js/types", entityFrom = "@mat3ra/code/dist/js/entity") { // Setup schemas JSONSchemasInterface_1.default.setSchemas(schemas); console.log("Generating mixin properties for all schemas..."); @@ -194,7 +207,7 @@ function generateShemaMixin(schemas, outputPaths, skipFields = [], from = "@mat3 if (!outputPath) { throw new Error(`No output path defined for schema: ${schemaId}`); } - const generatedCode = generateMixinFromSchemaId(schemaId, outputPath, skipFields, from); + const generatedCode = generateMixinFromSchemaId(schemaId, outputPath, skipFields, from, entityFrom); // Ensure the directory exists const dir = outputPath.substring(0, outputPath.lastIndexOf("/")); if (!fs_1.default.existsSync(dir)) { diff --git a/dist/js/generated/DefaultableSchemaMixin.d.ts b/dist/js/generated/DefaultableSchemaMixin.d.ts new file mode 100644 index 00000000..e254e5c4 --- /dev/null +++ b/dist/js/generated/DefaultableSchemaMixin.d.ts @@ -0,0 +1,5 @@ +import type { DefaultableEntitySchema } from "@mat3ra/esse/dist/js/types"; +import type { InMemoryEntity } from "../entity/in_memory"; +export type DefaultableSchemaMixin = DefaultableEntitySchema; +export type DefaultableInMemoryEntity = InMemoryEntity & DefaultableSchemaMixin; +export declare function defaultableSchemaMixin(item: InMemoryEntity): asserts item is T & DefaultableSchemaMixin; diff --git a/dist/js/generated/DefaultableSchemaMixin.js b/dist/js/generated/DefaultableSchemaMixin.js new file mode 100644 index 00000000..c9c276f1 --- /dev/null +++ b/dist/js/generated/DefaultableSchemaMixin.js @@ -0,0 +1,15 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.defaultableSchemaMixin = defaultableSchemaMixin; +function defaultableSchemaMixin(item) { + // @ts-expect-error + const properties = { + get isDefault() { + return this.prop("isDefault"); + }, + set isDefault(value) { + this.setProp("isDefault", value); + }, + }; + Object.defineProperties(item, Object.getOwnPropertyDescriptors(properties)); +} diff --git a/dist/js/generated/HasConsistencyChecksSchemaMixin.d.ts b/dist/js/generated/HasConsistencyChecksSchemaMixin.d.ts new file mode 100644 index 00000000..9266913b --- /dev/null +++ b/dist/js/generated/HasConsistencyChecksSchemaMixin.d.ts @@ -0,0 +1,5 @@ +import type { HasConsistencyCheckSchema } from "@mat3ra/esse/dist/js/types"; +import type { InMemoryEntity } from "../entity/in_memory"; +export type HasConsistencyChecksSchemaMixin = HasConsistencyCheckSchema; +export type HasConsistencyChecksInMemoryEntity = InMemoryEntity & HasConsistencyChecksSchemaMixin; +export declare function hasConsistencyChecksSchemaMixin(item: InMemoryEntity): asserts item is T & HasConsistencyChecksSchemaMixin; diff --git a/dist/js/generated/HasConsistencyChecksSchemaMixin.js b/dist/js/generated/HasConsistencyChecksSchemaMixin.js new file mode 100644 index 00000000..5db5cf1e --- /dev/null +++ b/dist/js/generated/HasConsistencyChecksSchemaMixin.js @@ -0,0 +1,15 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.hasConsistencyChecksSchemaMixin = hasConsistencyChecksSchemaMixin; +function hasConsistencyChecksSchemaMixin(item) { + // @ts-expect-error + const properties = { + get consistencyChecks() { + return this.prop("consistencyChecks"); + }, + set consistencyChecks(value) { + this.setProp("consistencyChecks", value); + }, + }; + Object.defineProperties(item, Object.getOwnPropertyDescriptors(properties)); +} diff --git a/dist/js/generated/HasDescriptionSchemaMixin.d.ts b/dist/js/generated/HasDescriptionSchemaMixin.d.ts new file mode 100644 index 00000000..5fbec77d --- /dev/null +++ b/dist/js/generated/HasDescriptionSchemaMixin.d.ts @@ -0,0 +1,5 @@ +import type { DescriptionSchema } from "@mat3ra/esse/dist/js/types"; +import type { InMemoryEntity } from "../entity/in_memory"; +export type HasDescriptionSchemaMixin = DescriptionSchema; +export type HasDescriptionInMemoryEntity = InMemoryEntity & HasDescriptionSchemaMixin; +export declare function hasDescriptionSchemaMixin(item: InMemoryEntity): asserts item is T & HasDescriptionSchemaMixin; diff --git a/dist/js/generated/HasDescriptionSchemaMixin.js b/dist/js/generated/HasDescriptionSchemaMixin.js new file mode 100644 index 00000000..78f97154 --- /dev/null +++ b/dist/js/generated/HasDescriptionSchemaMixin.js @@ -0,0 +1,21 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.hasDescriptionSchemaMixin = hasDescriptionSchemaMixin; +function hasDescriptionSchemaMixin(item) { + // @ts-expect-error + const properties = { + get description() { + return this.prop("description"); + }, + set description(value) { + this.setProp("description", value); + }, + get descriptionObject() { + return this.prop("descriptionObject"); + }, + set descriptionObject(value) { + this.setProp("descriptionObject", value); + }, + }; + Object.defineProperties(item, Object.getOwnPropertyDescriptors(properties)); +} diff --git a/dist/js/generated/NamedEntitySchemaMixin.d.ts b/dist/js/generated/NamedEntitySchemaMixin.d.ts new file mode 100644 index 00000000..441041c5 --- /dev/null +++ b/dist/js/generated/NamedEntitySchemaMixin.d.ts @@ -0,0 +1,5 @@ +import type { NameEntitySchema } from "@mat3ra/esse/dist/js/types"; +import type { InMemoryEntity } from "../entity/in_memory"; +export type NamedEntitySchemaMixin = NameEntitySchema; +export type NamedEntityInMemoryEntity = InMemoryEntity & NamedEntitySchemaMixin; +export declare function namedEntitySchemaMixin(item: InMemoryEntity): asserts item is T & NamedEntitySchemaMixin; diff --git a/dist/js/generated/NamedEntitySchemaMixin.js b/dist/js/generated/NamedEntitySchemaMixin.js new file mode 100644 index 00000000..6b701eb9 --- /dev/null +++ b/dist/js/generated/NamedEntitySchemaMixin.js @@ -0,0 +1,15 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.namedEntitySchemaMixin = namedEntitySchemaMixin; +function namedEntitySchemaMixin(item) { + // @ts-expect-error + const properties = { + get name() { + return this.requiredProp("name"); + }, + set name(value) { + this.setProp("name", value); + }, + }; + Object.defineProperties(item, Object.getOwnPropertyDescriptors(properties)); +} diff --git a/dist/js/generated/RuntimeItemsSchemaMixin.d.ts b/dist/js/generated/RuntimeItemsSchemaMixin.d.ts new file mode 100644 index 00000000..7de1b3d1 --- /dev/null +++ b/dist/js/generated/RuntimeItemsSchemaMixin.d.ts @@ -0,0 +1,5 @@ +import type { RuntimeItemsSchema } from "@mat3ra/esse/dist/js/types"; +import type { InMemoryEntity } from "../entity/in_memory"; +export type RuntimeItemsSchemaMixin = RuntimeItemsSchema; +export type RuntimeItemsInMemoryEntity = InMemoryEntity & RuntimeItemsSchemaMixin; +export declare function runtimeItemsSchemaMixin(item: InMemoryEntity): asserts item is T & RuntimeItemsSchemaMixin; diff --git a/dist/js/generated/RuntimeItemsSchemaMixin.js b/dist/js/generated/RuntimeItemsSchemaMixin.js new file mode 100644 index 00000000..88ea0b29 --- /dev/null +++ b/dist/js/generated/RuntimeItemsSchemaMixin.js @@ -0,0 +1,33 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.runtimeItemsSchemaMixin = runtimeItemsSchemaMixin; +function runtimeItemsSchemaMixin(item) { + // @ts-expect-error + const properties = { + get preProcessors() { + return this.requiredProp("preProcessors"); + }, + set preProcessors(value) { + this.setProp("preProcessors", value); + }, + get postProcessors() { + return this.requiredProp("postProcessors"); + }, + set postProcessors(value) { + this.setProp("postProcessors", value); + }, + get monitors() { + return this.requiredProp("monitors"); + }, + set monitors(value) { + this.setProp("monitors", value); + }, + get results() { + return this.requiredProp("results"); + }, + set results(value) { + this.setProp("results", value); + }, + }; + Object.defineProperties(item, Object.getOwnPropertyDescriptors(properties)); +} diff --git a/dist/js/generated/TaggableSchemaMixin.d.ts b/dist/js/generated/TaggableSchemaMixin.d.ts new file mode 100644 index 00000000..a2ced7e6 --- /dev/null +++ b/dist/js/generated/TaggableSchemaMixin.d.ts @@ -0,0 +1,5 @@ +import type { EntityTagsSchema } from "@mat3ra/esse/dist/js/types"; +import type { InMemoryEntity } from "../entity/in_memory"; +export type TaggableSchemaMixin = EntityTagsSchema; +export type TaggableInMemoryEntity = InMemoryEntity & TaggableSchemaMixin; +export declare function taggableSchemaMixin(item: InMemoryEntity): asserts item is T & TaggableSchemaMixin; diff --git a/dist/js/generated/TaggableSchemaMixin.js b/dist/js/generated/TaggableSchemaMixin.js new file mode 100644 index 00000000..86018a67 --- /dev/null +++ b/dist/js/generated/TaggableSchemaMixin.js @@ -0,0 +1,15 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.taggableSchemaMixin = taggableSchemaMixin; +function taggableSchemaMixin(item) { + // @ts-expect-error + const properties = { + get tags() { + return this.prop("tags"); + }, + set tags(value) { + this.setProp("tags", value); + }, + }; + Object.defineProperties(item, Object.getOwnPropertyDescriptors(properties)); +} diff --git a/dist/js/utils/object.d.ts b/dist/js/utils/object.d.ts index 64eece16..ec2bde55 100644 --- a/dist/js/utils/object.d.ts +++ b/dist/js/utils/object.d.ts @@ -1,4 +1,6 @@ -import { NameResultSchema } from "@mat3ra/esse/dist/js/types"; +export type NameResultSchema = { + name: string; +}; /** * @summary Safely convert input to { name: str } if it is not already * @param name {String|Object} the input to convert From 9b02efab9962abe6c0b17b93eecb1613a00ad514 Mon Sep 17 00:00:00 2001 From: Kostiantyn Dvornik Date: Fri, 20 Mar 2026 17:36:33 +0200 Subject: [PATCH 2/7] fix: transpile --- dist/js/entity/mixins/runtime_items.d.ts | 110 --------------- dist/js/entity/mixins/runtime_items.js | 157 --------------------- package-lock.json | 6 +- package.json | 2 +- src/js/entity/mixins/runtime_items.ts | 166 ----------------------- tests/js/mixin.flowchart.tests.ts | 97 ------------- 6 files changed, 4 insertions(+), 534 deletions(-) delete mode 100644 dist/js/entity/mixins/runtime_items.d.ts delete mode 100644 dist/js/entity/mixins/runtime_items.js delete mode 100644 src/js/entity/mixins/runtime_items.ts delete mode 100644 tests/js/mixin.flowchart.tests.ts diff --git a/dist/js/entity/mixins/runtime_items.d.ts b/dist/js/entity/mixins/runtime_items.d.ts deleted file mode 100644 index edb54feb..00000000 --- a/dist/js/entity/mixins/runtime_items.d.ts +++ /dev/null @@ -1,110 +0,0 @@ -import { AnyObject } from "@mat3ra/esse/dist/js/esse/types"; -import { NameResultSchema, RuntimeItemSchema } from "@mat3ra/esse/dist/js/types"; -import type { Constructor } from "src/js/utils/types"; -import { InMemoryEntityConstructor } from "../in_memory"; -import RuntimeItemsMixin, { type BaseRuntimeItemsInMemoryEntity, ItemKey } from "./RuntimeItemsMixin"; -export { RuntimeItemsMixin, ItemKey }; -export interface RuntimeItemsUILogicJSON extends AnyObject { - results?: NameResultSchema[]; - monitors?: NameResultSchema[]; - preProcessors?: NameResultSchema[]; - postProcessors?: NameResultSchema[]; -} -export declare function RuntimeItemsUILogicMixin>(superclass: T): { - new (...params: any): { - _json: RuntimeItemsUILogicJSON; - getDefaultsByKey(key: ItemKey): NameResultSchema[] | undefined; - setRuntimeItemsToDefaultValues(): void; - /** - * @summary Must pass config for subclasses to override and use initialization logic - * @private - */ - _initRuntimeItems(keys: ItemKey[], _config: object): void; - _addRuntimeItem(key: ItemKey | undefined, config: RuntimeItemSchema): void; - _removeRuntimeItem(key: ItemKey | undefined, config: RuntimeItemSchema): void; - _removeRuntimeItemByName(key: ItemKey, name: string): void; - _toggleRuntimeItem(key: ItemKey | undefined, data: RuntimeItemSchema, isAdding: boolean): void; - toggleResult(data: RuntimeItemSchema, isAdding: boolean): void; - toggleMonitor(data: RuntimeItemSchema, isAdding: boolean): void; - togglePreProcessor(data: RuntimeItemSchema, isAdding: boolean): void; - togglePostProcessor(data: RuntimeItemSchema, isAdding: boolean): void; - readonly resultNames: string[]; - readonly monitorNames: string[]; - readonly postProcessorNames: string[]; - readonly preProcessorNames: string[]; - getResultByName(name: string): NameResultSchema | undefined; - prop(name: string, defaultValue: T_1): T_1; - prop(name: string): T_1 | undefined; - requiredProp(name: string): T_1; - setProp(name: string, value: unknown): void; - unsetProp(name: string): void; - setProps(json?: AnyObject): /*elided*/ any; - toJSON(exclude?: string[]): AnyObject; - toJSONSafe(exclude?: string[]): AnyObject; - toJSONQuick(exclude?: string[]): AnyObject; - clone(extraContext?: object): /*elided*/ any; - validate(): void; - clean(config: AnyObject): 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; - defaultResults?: NameResultSchema[]; - defaultMonitors?: NameResultSchema[]; - defaultPreProcessors?: NameResultSchema[]; - defaultPostProcessors?: NameResultSchema[]; - results: NameResultSchema[]; - monitors: NameResultSchema[]; - preProcessors: NameResultSchema[]; - postProcessors: NameResultSchema[]; - hashObjectFromRuntimeItems: { - results: NameResultSchema[]; - preProcessors: NameResultSchema[]; - postProcessors: NameResultSchema[]; - }; - }; -} & T; -export declare function RuntimeItemsUIAllowedMixin(superclass: T): { - new (...args: any[]): { - readonly allowedResults: never[]; - readonly allowedMonitors: never[]; - readonly allowedPostProcessors: never[]; - _json: AnyObject; - prop(name: string, defaultValue: T_1): T_1; - prop(name: string): T_1 | undefined; - requiredProp(name: string): T_1; - setProp(name: string, value: unknown): void; - unsetProp(name: string): void; - setProps(json?: AnyObject): /*elided*/ any; - toJSON(exclude?: string[]): AnyObject; - toJSONSafe(exclude?: string[]): AnyObject; - toJSONQuick(exclude?: string[]): AnyObject; - clone(extraContext?: object): /*elided*/ any; - validate(): void; - clean(config: AnyObject): 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/runtime_items.js b/dist/js/entity/mixins/runtime_items.js deleted file mode 100644 index 83e5fe83..00000000 --- a/dist/js/entity/mixins/runtime_items.js +++ /dev/null @@ -1,157 +0,0 @@ -"use strict"; -var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { - if (k2 === undefined) k2 = k; - var desc = Object.getOwnPropertyDescriptor(m, k); - if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { - desc = { enumerable: true, get: function() { return m[k]; } }; - } - Object.defineProperty(o, k2, desc); -}) : (function(o, m, k, k2) { - if (k2 === undefined) k2 = k; - o[k2] = m[k]; -})); -var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { - Object.defineProperty(o, "default", { enumerable: true, value: v }); -}) : function(o, v) { - o["default"] = v; -}); -var __importStar = (this && this.__importStar) || (function () { - var ownKeys = function(o) { - ownKeys = Object.getOwnPropertyNames || function (o) { - var ar = []; - for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k; - return ar; - }; - return ownKeys(o); - }; - return function (mod) { - if (mod && mod.__esModule) return mod; - var result = {}; - if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]); - __setModuleDefault(result, mod); - return result; - }; -})(); -Object.defineProperty(exports, "__esModule", { value: true }); -exports.ItemKey = exports.RuntimeItemsMixin = void 0; -exports.RuntimeItemsUILogicMixin = RuntimeItemsUILogicMixin; -exports.RuntimeItemsUIAllowedMixin = RuntimeItemsUIAllowedMixin; -const object_1 = require("../../utils/object"); -const RuntimeItemsMixin_1 = __importStar(require("./RuntimeItemsMixin")); -exports.RuntimeItemsMixin = RuntimeItemsMixin_1.default; -Object.defineProperty(exports, "ItemKey", { enumerable: true, get: function () { return RuntimeItemsMixin_1.ItemKey; } }); -const allKeys = [ - RuntimeItemsMixin_1.ItemKey.results, - RuntimeItemsMixin_1.ItemKey.monitors, - RuntimeItemsMixin_1.ItemKey.postProcessors, - RuntimeItemsMixin_1.ItemKey.preProcessors, -]; -function RuntimeItemsUILogicMixin(superclass) { - return class extends (0, RuntimeItemsMixin_1.default)(superclass) { - // eslint-disable-next-line @typescript-eslint/no-explicit-any - constructor(...params) { - super(...params); - const config = params[0]; - this._initRuntimeItems(allKeys, config); - } - getDefaultsByKey(key) { - if (key === RuntimeItemsMixin_1.ItemKey.results) { - return this.defaultResults; - } - if (key === RuntimeItemsMixin_1.ItemKey.monitors) { - return this.defaultMonitors; - } - if (key === RuntimeItemsMixin_1.ItemKey.preProcessors) { - return this.defaultPreProcessors; - } - return this.defaultPostProcessors; - } - setRuntimeItemsToDefaultValues() { - allKeys.forEach((name) => this.setProp(name, this.getDefaultsByKey(name))); - } - /** - * @summary Must pass config for subclasses to override and use initialization logic - * @private - */ - // eslint-disable-next-line @typescript-eslint/no-unused-vars - _initRuntimeItems(keys, _config) { - // keeping this separate from constructor so that it can be overridden in mixing (eg. in `ExecutionUnit`) - // eslint-disable-next-line @typescript-eslint/no-this-alias - const me = this; - keys.forEach((key) => { - if (!me._json[key]) { - me._json[key] = me.getDefaultsByKey(key); - } - }); - } - // eslint-disable-next-line default-param-last - _addRuntimeItem(key = RuntimeItemsMixin_1.ItemKey.results, config) { - const runtimeItems = this._json[key]; - if (!runtimeItems) { - throw new Error("not found"); - } - runtimeItems.push((0, object_1.safeMakeObject)(config)); - } - // eslint-disable-next-line default-param-last - _removeRuntimeItem(key = RuntimeItemsMixin_1.ItemKey.results, config) { - const newConfig = (0, object_1.safeMakeObject)(config); - this._removeRuntimeItemByName(key, (newConfig === null || newConfig === void 0 ? void 0 : newConfig.name) || ""); - } - _removeRuntimeItemByName(key, name) { - this._json[key] = this._json[key].filter((x) => x.name !== name); - } - _toggleRuntimeItem( - // eslint-disable-next-line default-param-last - key = RuntimeItemsMixin_1.ItemKey.results, data, isAdding) { - if (isAdding) { - this._addRuntimeItem(key, data); - } - else { - this._removeRuntimeItem(key, data); - } - } - toggleResult(data, isAdding) { - this._toggleRuntimeItem(RuntimeItemsMixin_1.ItemKey.results, data, isAdding); - } - toggleMonitor(data, isAdding) { - this._toggleRuntimeItem(RuntimeItemsMixin_1.ItemKey.monitors, data, isAdding); - } - togglePreProcessor(data, isAdding) { - this._toggleRuntimeItem(RuntimeItemsMixin_1.ItemKey.preProcessors, data, isAdding); - } - togglePostProcessor(data, isAdding) { - this._toggleRuntimeItem(RuntimeItemsMixin_1.ItemKey.postProcessors, data, isAdding); - } - get resultNames() { - return this.results.map((r) => { - return r && r.name; - }); - } - get monitorNames() { - return this.monitors.map((r) => r === null || r === void 0 ? void 0 : r.name); - } - get postProcessorNames() { - return this.postProcessors.map((r) => r === null || r === void 0 ? void 0 : r.name); - } - get preProcessorNames() { - return this.preProcessors.map((r) => r === null || r === void 0 ? void 0 : r.name); - } - getResultByName(name) { - return this.results.find((r) => (r === null || r === void 0 ? void 0 : r.name) === name); - } - }; -} -// "Placeholder" mixin. Used to indicate the presence of the fields in parent class. -function RuntimeItemsUIAllowedMixin(superclass) { - return class extends superclass { - get allowedResults() { - return []; - } - get allowedMonitors() { - return []; - } - get allowedPostProcessors() { - return []; - } - }; -} diff --git a/package-lock.json b/package-lock.json index f11afb16..0260eb6f 100644 --- a/package-lock.json +++ b/package-lock.json @@ -33,7 +33,7 @@ "@babel/register": "^7.25.7", "@babel/runtime-corejs3": "^7.25.7", "@exabyte-io/eslint-config": "^2025.1.15-0", - "@mat3ra/esse": "git+https://github.com/Exabyte-io/esse#ca7bfd433dd1612fe27f2b8d39853c755359836d", + "@mat3ra/esse": "git+https://github.com/Exabyte-io/esse#be892d203b9f7cf6525270b1a1f6352c7f3fc055", "@mat3ra/tsconfig": "2024.6.3-0", "@types/chai": "^4.3.20", "@types/crypto-js": "^4.2.2", @@ -2755,8 +2755,8 @@ }, "node_modules/@mat3ra/esse": { "version": "0.0.0", - "resolved": "git+ssh://git@github.com/Exabyte-io/esse.git#ca7bfd433dd1612fe27f2b8d39853c755359836d", - "integrity": "sha512-t3Rbx0Wwi3pZCeD8WrvQPxNadBCCQVMjB7PCbFCcLsJofN/K1VevS8g0Ax0v7OPzTAOtDwQ0Mk/T/+1+ZdpuXQ==", + "resolved": "git+ssh://git@github.com/Exabyte-io/esse.git#be892d203b9f7cf6525270b1a1f6352c7f3fc055", + "integrity": "sha512-rCNE/Yvqg2CEf1hbnwjcNtEv8ItyQpq9+k6/D4gdrqk+vbLatV7+QIPuSEpB3I0B7HeozrbwujjR1jYPUAr+Sw==", "dev": true, "license": "Apache-2.0", "dependencies": { diff --git a/package.json b/package.json index 732a1fc7..e0da7a31 100644 --- a/package.json +++ b/package.json @@ -55,7 +55,7 @@ "@babel/register": "^7.25.7", "@babel/runtime-corejs3": "^7.25.7", "@exabyte-io/eslint-config": "^2025.1.15-0", - "@mat3ra/esse": "git+https://github.com/Exabyte-io/esse#ca7bfd433dd1612fe27f2b8d39853c755359836d", + "@mat3ra/esse": "git+https://github.com/Exabyte-io/esse#be892d203b9f7cf6525270b1a1f6352c7f3fc055", "@mat3ra/tsconfig": "2024.6.3-0", "@types/chai": "^4.3.20", "@types/crypto-js": "^4.2.2", diff --git a/src/js/entity/mixins/runtime_items.ts b/src/js/entity/mixins/runtime_items.ts deleted file mode 100644 index 3ea5facb..00000000 --- a/src/js/entity/mixins/runtime_items.ts +++ /dev/null @@ -1,166 +0,0 @@ -/* eslint-disable class-methods-use-this */ -import { AnyObject } from "@mat3ra/esse/dist/js/esse/types"; -import { NameResultSchema, RuntimeItemSchema } from "@mat3ra/esse/dist/js/types"; -import type { Constructor } from "src/js/utils/types"; - -import { safeMakeObject } from "../../utils/object"; -import { InMemoryEntityConstructor } from "../in_memory"; -import RuntimeItemsMixin, { - type BaseRuntimeItemsInMemoryEntity, - ItemKey, -} from "./RuntimeItemsMixin"; - -export { RuntimeItemsMixin, ItemKey }; - -export interface RuntimeItemsUILogicJSON extends AnyObject { - results?: NameResultSchema[]; - monitors?: NameResultSchema[]; - preProcessors?: NameResultSchema[]; - postProcessors?: NameResultSchema[]; -} - -const allKeys: ItemKey[] = [ - ItemKey.results, - ItemKey.monitors, - ItemKey.postProcessors, - ItemKey.preProcessors, -]; - -export function RuntimeItemsUILogicMixin>( - superclass: T, -) { - return class extends RuntimeItemsMixin(superclass) { - declare _json: RuntimeItemsUILogicJSON; - - // eslint-disable-next-line @typescript-eslint/no-explicit-any - constructor(...params: any) { - super(...params); - - const config = params[0]; - - this._initRuntimeItems(allKeys, config); - } - - getDefaultsByKey(key: ItemKey) { - if (key === ItemKey.results) { - return this.defaultResults; - } - if (key === ItemKey.monitors) { - return this.defaultMonitors; - } - if (key === ItemKey.preProcessors) { - return this.defaultPreProcessors; - } - return this.defaultPostProcessors; - } - - setRuntimeItemsToDefaultValues() { - allKeys.forEach((name) => this.setProp(name, this.getDefaultsByKey(name))); - } - - /** - * @summary Must pass config for subclasses to override and use initialization logic - * @private - */ - // eslint-disable-next-line @typescript-eslint/no-unused-vars - _initRuntimeItems(keys: ItemKey[], _config: object) { - // keeping this separate from constructor so that it can be overridden in mixing (eg. in `ExecutionUnit`) - // eslint-disable-next-line @typescript-eslint/no-this-alias - const me = this; - keys.forEach((key) => { - if (!me._json[key]) { - me._json[key] = me.getDefaultsByKey(key); - } - }); - } - - // eslint-disable-next-line default-param-last - _addRuntimeItem(key: ItemKey = ItemKey.results, config: RuntimeItemSchema) { - const runtimeItems = this._json[key]; - if (!runtimeItems) { - throw new Error("not found"); - } - runtimeItems.push(safeMakeObject(config)); - } - - // eslint-disable-next-line default-param-last - _removeRuntimeItem(key: ItemKey = ItemKey.results, config: RuntimeItemSchema) { - const newConfig = safeMakeObject(config); - this._removeRuntimeItemByName(key, newConfig?.name || ""); - } - - _removeRuntimeItemByName(key: ItemKey, name: string) { - this._json[key] = (this._json[key] as NameResultSchema[]).filter( - (x) => x.name !== name, - ); - } - - _toggleRuntimeItem( - // eslint-disable-next-line default-param-last - key: ItemKey = ItemKey.results, - data: RuntimeItemSchema, - isAdding: boolean, - ) { - if (isAdding) { - this._addRuntimeItem(key, data); - } else { - this._removeRuntimeItem(key, data); - } - } - - toggleResult(data: RuntimeItemSchema, isAdding: boolean) { - this._toggleRuntimeItem(ItemKey.results, data, isAdding); - } - - toggleMonitor(data: RuntimeItemSchema, isAdding: boolean) { - this._toggleRuntimeItem(ItemKey.monitors, data, isAdding); - } - - togglePreProcessor(data: RuntimeItemSchema, isAdding: boolean) { - this._toggleRuntimeItem(ItemKey.preProcessors, data, isAdding); - } - - togglePostProcessor(data: RuntimeItemSchema, isAdding: boolean) { - this._toggleRuntimeItem(ItemKey.postProcessors, data, isAdding); - } - - get resultNames() { - return this.results.map((r) => { - return r && r.name; - }); - } - - get monitorNames() { - return this.monitors.map((r) => r?.name); - } - - get postProcessorNames() { - return this.postProcessors.map((r) => r?.name); - } - - get preProcessorNames() { - return this.preProcessors.map((r) => r?.name); - } - - getResultByName(name: string) { - return this.results.find((r) => r?.name === name); - } - }; -} - -// "Placeholder" mixin. Used to indicate the presence of the fields in parent class. -export function RuntimeItemsUIAllowedMixin(superclass: T) { - return class extends superclass { - get allowedResults() { - return []; - } - - get allowedMonitors() { - return []; - } - - get allowedPostProcessors() { - return []; - } - }; -} diff --git a/tests/js/mixin.flowchart.tests.ts b/tests/js/mixin.flowchart.tests.ts deleted file mode 100644 index 6a29fa87..00000000 --- a/tests/js/mixin.flowchart.tests.ts +++ /dev/null @@ -1,97 +0,0 @@ -import { expect } from "chai"; - -import { FlowchartEntityMixin, FlowchartItemMixin, InMemoryEntity } from "../../src/js/entity"; - -const FlowchartEntity = FlowchartEntityMixin(InMemoryEntity); - -const FlowchartItem = FlowchartItemMixin(InMemoryEntity); - -function assertString(prop: unknown): prop is string { - expect(prop).to.be.a("string"); - return typeof prop === "string"; -} - -describe("Flowchart Mixins", () => { - it("flowchart item can be added", () => { - const entity = new FlowchartEntity(); - entity.addUnit(new FlowchartItem()); - expect(entity.units.length).to.be.equal(1); - }); - - it("flowchart item can be added between two other units", () => { - const entity = new FlowchartEntity(); - entity.addUnit(new FlowchartItem()); - entity.addUnit(new FlowchartItem()); - expect(entity.units[0].next).to.be.equal(entity.units[1].flowchartId); - const item = new FlowchartItem(); - entity.addUnit(item, 1); - expect(entity.units[1].flowchartId).to.be.equal(item.flowchartId); - expect(entity.units[1].next).to.be.equal(entity.units[2].flowchartId); - }); - - it("flowchart item points to correct target after removal of the in-between unit", () => { - const entity = new FlowchartEntity(); - entity.addUnit(new FlowchartItem()); - entity.addUnit(new FlowchartItem()); - entity.addUnit(new FlowchartItem()); - - if (assertString(entity.units[1].flowchartId)) { - entity.removeUnit(entity.units[1].flowchartId); - } - - expect(entity.units[0].next).to.be.equal(entity.units[1].flowchartId); - }); - - it("flowchart item points to correct target after removal of last unit", () => { - const entity = new FlowchartEntity(); - entity.addUnit(new FlowchartItem()); - entity.addUnit(new FlowchartItem()); - entity.addUnit(new FlowchartItem()); - if (assertString(entity.units[2].flowchartId)) { - entity.removeUnit(entity.units[2].flowchartId); - } - // eslint-disable-next-line no-unused-expressions - expect(entity.units[1].next).to.be.undefined; - }); - - it("flowchart item can be removed", () => { - const entity = new FlowchartEntity(); - const item = new FlowchartItem(); - entity.addUnit(item); - entity.removeUnit(item.flowchartId); - expect(entity.units.length).to.be.equal(0); - }); - - it("flowchart item can be replaced between two other units", () => { - const entity = new FlowchartEntity(); - entity.addUnit(new FlowchartItem()); - entity.addUnit(new FlowchartItem()); - entity.addUnit(new FlowchartItem()); - const unitsBeforeReplace = entity.units.length; - const item = new FlowchartItem(); - entity.replaceUnit(item, 1); - expect(entity.units[1].flowchartId).to.be.equal(item.flowchartId); - expect(entity.units.length).to.be.equal(unitsBeforeReplace); - }); - - it("flowchart item can be accessed by flowchart Id", () => { - const entity = new FlowchartEntity(); - entity.addUnit(new FlowchartItem()); - entity.addUnit(new FlowchartItem()); - const item = new FlowchartItem(); - entity.addUnit(item); - const fetchedUnit = entity.getUnit(item.flowchartId); - expect(fetchedUnit).to.be.instanceof(FlowchartItem); - expect(fetchedUnit?.flowchartId).to.be.equal(item.flowchartId); - }); - - it("flowchart item index can be found by flowchart Id", () => { - const entity = new FlowchartEntity(); - entity.addUnit(new FlowchartItem()); - entity.addUnit(new FlowchartItem()); - const item = new FlowchartItem(); - entity.addUnit(item); - const index = entity.getUnitIndexByFlowchartId(item.flowchartId); - expect(index).to.be.equal(entity.units.length - 1); // last unit - }); -}); From b0f35365bdc76c284730f17cbc786fdb43726c0a Mon Sep 17 00:00:00 2001 From: Kostiantyn Dvornik Date: Fri, 20 Mar 2026 17:38:49 +0200 Subject: [PATCH 3/7] update: create in_memory entity from another instance --- dist/js/entity/in_memory.d.ts | 2 +- dist/js/entity/in_memory.js | 11 ++++++++--- src/js/entity/in_memory.ts | 12 ++++++++---- 3 files changed, 17 insertions(+), 8 deletions(-) diff --git a/dist/js/entity/in_memory.d.ts b/dist/js/entity/in_memory.d.ts index f9b0527c..8c7ef904 100644 --- a/dist/js/entity/in_memory.d.ts +++ b/dist/js/entity/in_memory.d.ts @@ -25,7 +25,7 @@ export declare class InMemoryEntity implements BaseInMemoryEntitySchema { static allowJsonSchemaTypesCoercing: boolean; static readonly jsonSchema?: JSONSchema; _json: AnyObject; - constructor(config?: {}); + constructor(config?: object | InMemoryEntity); prop(name: string, defaultValue: T): T; prop(name: string): T | undefined; /** diff --git a/dist/js/entity/in_memory.js b/dist/js/entity/in_memory.js index fc7ea313..c3540198 100644 --- a/dist/js/entity/in_memory.js +++ b/dist/js/entity/in_memory.js @@ -62,9 +62,14 @@ class InMemoryEntity { } constructor(config = {}) { this._json = {}; - this._json = this.constructor._isDeepCloneRequired - ? (0, clone_1.deepClone)(config) - : (0, clone_1.clone)(config); + if (config instanceof InMemoryEntity) { + this._json = config.toJSON(); + } + else { + this._json = this.constructor._isDeepCloneRequired + ? (0, clone_1.deepClone)(config) + : (0, clone_1.clone)(config); + } } /** * @summary Return a prop or the default diff --git a/src/js/entity/in_memory.ts b/src/js/entity/in_memory.ts index e4403875..c4d3065a 100644 --- a/src/js/entity/in_memory.ts +++ b/src/js/entity/in_memory.ts @@ -46,10 +46,14 @@ export class InMemoryEntity implements BaseInMemoryEntitySchema { _json: AnyObject = {}; - constructor(config = {}) { - this._json = (this.constructor as typeof InMemoryEntity)._isDeepCloneRequired - ? deepClone(config) - : clone(config); + constructor(config: object | InMemoryEntity = {}) { + if (config instanceof InMemoryEntity) { + this._json = config.toJSON(); + } else { + this._json = (this.constructor as typeof InMemoryEntity)._isDeepCloneRequired + ? deepClone(config) + : clone(config); + } } prop(name: string, defaultValue: T): T; From 2b2ed0cdf1ebf798e3dd1889d049aaf62bed6d62 Mon Sep 17 00:00:00 2001 From: Kostiantyn Dvornik Date: Tue, 24 Mar 2026 22:02:35 +0200 Subject: [PATCH 4/7] chore: rename mixin --- dist/js/entity/mixins/HasDescriptionMixin.d.ts | 2 +- dist/js/entity/mixins/HasDescriptionMixin.js | 4 ++-- src/js/entity/mixins/HasDescriptionMixin.ts | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/dist/js/entity/mixins/HasDescriptionMixin.d.ts b/dist/js/entity/mixins/HasDescriptionMixin.d.ts index 4744e53a..8de49b3b 100644 --- a/dist/js/entity/mixins/HasDescriptionMixin.d.ts +++ b/dist/js/entity/mixins/HasDescriptionMixin.d.ts @@ -1,3 +1,3 @@ import { type HasDescriptionSchemaMixin, hasDescriptionSchemaMixin } from "../../generated/HasDescriptionSchemaMixin"; export type HasDescription = HasDescriptionSchemaMixin; -export declare const hasDescriptionPropertiesMixin: typeof hasDescriptionSchemaMixin; +export declare const hasDescriptionMixin: typeof hasDescriptionSchemaMixin; diff --git a/dist/js/entity/mixins/HasDescriptionMixin.js b/dist/js/entity/mixins/HasDescriptionMixin.js index 926b8fd5..c535ac9e 100644 --- a/dist/js/entity/mixins/HasDescriptionMixin.js +++ b/dist/js/entity/mixins/HasDescriptionMixin.js @@ -1,5 +1,5 @@ "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); -exports.hasDescriptionPropertiesMixin = void 0; +exports.hasDescriptionMixin = void 0; const HasDescriptionSchemaMixin_1 = require("../../generated/HasDescriptionSchemaMixin"); -exports.hasDescriptionPropertiesMixin = HasDescriptionSchemaMixin_1.hasDescriptionSchemaMixin; +exports.hasDescriptionMixin = HasDescriptionSchemaMixin_1.hasDescriptionSchemaMixin; diff --git a/src/js/entity/mixins/HasDescriptionMixin.ts b/src/js/entity/mixins/HasDescriptionMixin.ts index 1c4ba046..3b6e99fb 100644 --- a/src/js/entity/mixins/HasDescriptionMixin.ts +++ b/src/js/entity/mixins/HasDescriptionMixin.ts @@ -5,4 +5,4 @@ import { export type HasDescription = HasDescriptionSchemaMixin; -export const hasDescriptionPropertiesMixin = hasDescriptionSchemaMixin; +export const hasDescriptionMixin = hasDescriptionSchemaMixin; From c3c9e5eb177fe70b8bc221832b6f9d93104d7e2d Mon Sep 17 00:00:00 2001 From: Kostiantyn Dvornik Date: Wed, 25 Mar 2026 01:19:27 +0200 Subject: [PATCH 5/7] chore: merge dev + cleanups --- dist/js/entity/index.d.ts | 3 +- dist/js/entity/index.js | 5 +- dist/js/entity/mixins/HasRepetitionMixin.d.ts | 10 -- dist/js/entity/mixins/HasRepetitionMixin.js | 33 ----- dist/js/entity/mixins/context.d.ts | 116 ------------------ dist/js/entity/mixins/context.js | 84 ------------- dist/js/entity/mixins/context_runtime.d.ts | 40 ------ dist/js/entity/mixins/context_runtime.js | 26 ---- dist/js/entity/mixins/repetition.d.ts | 48 -------- dist/js/entity/mixins/repetition.js | 32 ----- package-lock.json | 14 +-- package.json | 2 +- src/js/entity/index.ts | 10 -- src/js/entity/mixins/HasRepetitionMixin.ts | 46 ------- src/js/entity/mixins/context.ts | 108 ---------------- src/js/entity/mixins/context_runtime.ts | 37 ------ src/js/entity/mixins/repetition.ts | 50 -------- 17 files changed, 10 insertions(+), 654 deletions(-) delete mode 100644 dist/js/entity/mixins/HasRepetitionMixin.d.ts delete mode 100644 dist/js/entity/mixins/HasRepetitionMixin.js delete mode 100644 dist/js/entity/mixins/context.d.ts delete mode 100644 dist/js/entity/mixins/context.js delete mode 100644 dist/js/entity/mixins/context_runtime.d.ts delete mode 100644 dist/js/entity/mixins/context_runtime.js delete mode 100644 dist/js/entity/mixins/repetition.d.ts delete mode 100644 dist/js/entity/mixins/repetition.js delete mode 100644 src/js/entity/mixins/HasRepetitionMixin.ts delete mode 100644 src/js/entity/mixins/context.ts delete mode 100644 src/js/entity/mixins/context_runtime.ts delete mode 100644 src/js/entity/mixins/repetition.ts diff --git a/dist/js/entity/index.d.ts b/dist/js/entity/index.d.ts index dd92a8de..6fa0e96e 100644 --- a/dist/js/entity/index.d.ts +++ b/dist/js/entity/index.d.ts @@ -1,5 +1,4 @@ import { InMemoryEntity } from "./in_memory"; -import { RuntimeContextFieldMixin } from "./mixins/context_runtime"; import { DefaultableInMemoryEntity, HasConsistencyChecksHasMetadataNamedDefaultableInMemoryEntity, HasMetadataNamedDefaultableInMemoryEntity, NamedDefaultableInMemoryEntity, NamedInMemoryEntity } from "./other"; import { InMemoryEntitySet } from "./set"; import { ENTITY_SET_TYPES } from "./set/enums"; @@ -7,4 +6,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, HasConsistencyChecksHasMetadataNamedDefaultableInMemoryEntity, RuntimeContextFieldMixin, InMemoryEntitySet, ENTITY_SET_TYPES, constructEntitySetFactoryByConfig, selectorsForEntitySet, InMemoryEntitySetMixin, InMemoryEntityInSetMixin, OrderedInMemoryEntitySetMixin, OrderedInMemoryEntityInSetMixin, }; +export { InMemoryEntity, NamedInMemoryEntity, DefaultableInMemoryEntity, NamedDefaultableInMemoryEntity, HasMetadataNamedDefaultableInMemoryEntity, HasConsistencyChecksHasMetadataNamedDefaultableInMemoryEntity, InMemoryEntitySet, ENTITY_SET_TYPES, constructEntitySetFactoryByConfig, selectorsForEntitySet, InMemoryEntitySetMixin, InMemoryEntityInSetMixin, OrderedInMemoryEntitySetMixin, OrderedInMemoryEntityInSetMixin, }; diff --git a/dist/js/entity/index.js b/dist/js/entity/index.js index 3ff147b3..a5a3eb30 100644 --- a/dist/js/entity/index.js +++ b/dist/js/entity/index.js @@ -33,12 +33,9 @@ var __importStar = (this && this.__importStar) || (function () { }; })(); Object.defineProperty(exports, "__esModule", { value: true }); -exports.OrderedInMemoryEntityInSetMixin = exports.OrderedInMemoryEntitySetMixin = exports.InMemoryEntityInSetMixin = exports.InMemoryEntitySetMixin = exports.selectorsForEntitySet = exports.constructEntitySetFactoryByConfig = exports.ENTITY_SET_TYPES = exports.InMemoryEntitySet = exports.RuntimeContextFieldMixin = exports.HasConsistencyChecksHasMetadataNamedDefaultableInMemoryEntity = exports.HasMetadataNamedDefaultableInMemoryEntity = exports.NamedDefaultableInMemoryEntity = exports.DefaultableInMemoryEntity = exports.NamedInMemoryEntity = exports.InMemoryEntity = void 0; +exports.OrderedInMemoryEntityInSetMixin = exports.OrderedInMemoryEntitySetMixin = exports.InMemoryEntityInSetMixin = exports.InMemoryEntitySetMixin = exports.selectorsForEntitySet = exports.constructEntitySetFactoryByConfig = exports.ENTITY_SET_TYPES = exports.InMemoryEntitySet = exports.HasConsistencyChecksHasMetadataNamedDefaultableInMemoryEntity = 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_runtime_1 = require("./mixins/context_runtime"); -Object.defineProperty(exports, "RuntimeContextFieldMixin", { enumerable: true, get: function () { return context_runtime_1.RuntimeContextFieldMixin; } }); -// import { RuntimeItemsMixin } from "./mixins/runtime_items"; const other_1 = require("./other"); Object.defineProperty(exports, "DefaultableInMemoryEntity", { enumerable: true, get: function () { return other_1.DefaultableInMemoryEntity; } }); Object.defineProperty(exports, "HasConsistencyChecksHasMetadataNamedDefaultableInMemoryEntity", { enumerable: true, get: function () { return other_1.HasConsistencyChecksHasMetadataNamedDefaultableInMemoryEntity; } }); diff --git a/dist/js/entity/mixins/HasRepetitionMixin.d.ts b/dist/js/entity/mixins/HasRepetitionMixin.d.ts deleted file mode 100644 index 671178a0..00000000 --- a/dist/js/entity/mixins/HasRepetitionMixin.d.ts +++ /dev/null @@ -1,10 +0,0 @@ -import type { InMemoryEntity } from "../in_memory"; -export interface HasRepetition { - _repetition: number; - _totalRepetitions: number; - repetition: number; - totalRepetitions: number; - setRepetition: (repetition: number) => void; - setTotalRepetitions: (totalRepetition: number) => void; -} -export declare function hasRepetitionMixin(item: T): asserts item is T & HasRepetition; diff --git a/dist/js/entity/mixins/HasRepetitionMixin.js b/dist/js/entity/mixins/HasRepetitionMixin.js deleted file mode 100644 index 5d13ab78..00000000 --- a/dist/js/entity/mixins/HasRepetitionMixin.js +++ /dev/null @@ -1,33 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.hasRepetitionMixin = hasRepetitionMixin; -function hasRepetitionMixin(item) { - // @ts-expect-error - const properties = { - _repetition: 0, - _totalRepetitions: 0, - get repetition() { - return this._repetition; - }, - set repetition(repetition) { - this._repetition = repetition; - }, - get totalRepetitions() { - return this._totalRepetitions || 1; - }, - setRepetition(repetition) { - this.repetition = repetition; - // if (["Subworkflow", "Workflow"].find((n) => this.constructor.name === n)) { - // this.units.forEach((u) => u.setRepetition(repetition)); - // } - // if (this.constructor.name === "Workflow") { - // this.subworkflows.forEach((sw) => sw.setRepetition(repetition)); - // this.workflows.forEach((wf) => wf.setRepetition(repetition)); - // } - }, - setTotalRepetitions(totalRepetition) { - this._totalRepetitions = totalRepetition; - }, - }; - Object.defineProperties(item, Object.getOwnPropertyDescriptors(properties)); -} diff --git a/dist/js/entity/mixins/context.d.ts b/dist/js/entity/mixins/context.d.ts deleted file mode 100644 index 64e2333b..00000000 --- a/dist/js/entity/mixins/context.d.ts +++ /dev/null @@ -1,116 +0,0 @@ -import { AnyObject } from "@mat3ra/esse/dist/js/esse/types"; -import { InMemoryEntityConstructor } from "../in_memory"; -export type Context = AnyObject; -export declare function ContextAndRenderFieldsMixin(superclass: T): { - new (...params: any[]): { - _context: Context; - context: AnyObject; - updateContext(ctx?: {}, executeRender?: boolean): void; - getPersistentContext(): object | undefined; - updatePersistentContext(ctx?: object): void; - getCombinedContext(): { - [x: string]: unknown; - }; - render(_context?: AnyObject): void; - _json: AnyObject; - prop(name: string, defaultValue: T_1): T_1; - prop(name: string): T_1 | undefined; - requiredProp(name: string): T_1; - setProp(name: string, value: unknown): void; - unsetProp(name: string): void; - setProps(json?: AnyObject): /*elided*/ any; - toJSON(exclude?: string[]): AnyObject; - toJSONSafe(exclude?: string[]): AnyObject; - toJSONQuick(exclude?: string[]): AnyObject; - clone(extraContext?: object): /*elided*/ any; - validate(): void; - clean(config: AnyObject): 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; -export interface ContextProvider { - domain: string; -} -export declare function DomainContextProviderMixin(superclass: T): { - new (...args: any[]): { - _contextProviders: ContextProvider[]; - readonly contextProviders: ContextProvider[]; - _json: AnyObject; - prop(name: string, defaultValue: T_1): T_1; - prop(name: string): T_1 | undefined; - requiredProp(name: string): T_1; - setProp(name: string, value: unknown): void; - unsetProp(name: string): void; - setProps(json?: AnyObject): /*elided*/ any; - toJSON(exclude?: string[]): AnyObject; - toJSONSafe(exclude?: string[]): AnyObject; - toJSONQuick(exclude?: string[]): AnyObject; - clone(extraContext?: object): /*elided*/ any; - validate(): void; - clean(config: AnyObject): 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; -export declare function ImportantSettingsProviderMixin(superclass: T): { - new (...args: any[]): { - readonly important: any; - setImportant(key: string, value: unknown): void; - readonly importantSettingsProviders: ContextProvider[]; - isImportantEdited: boolean | undefined; - _contextProviders: ContextProvider[]; - readonly contextProviders: ContextProvider[]; - _json: AnyObject; - prop(name: string, defaultValue: T_1): T_1; - prop(name: string): T_1 | undefined; - requiredProp(name: string): T_1; - setProp(name: string, value: unknown): void; - unsetProp(name: string): void; - setProps(json?: AnyObject): /*elided*/ any; - toJSON(exclude?: string[]): AnyObject; - toJSONSafe(exclude?: string[]): AnyObject; - toJSONQuick(exclude?: string[]): AnyObject; - clone(extraContext?: object): /*elided*/ any; - validate(): void; - clean(config: AnyObject): 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/context.js b/dist/js/entity/mixins/context.js deleted file mode 100644 index 76d2bd5b..00000000 --- a/dist/js/entity/mixins/context.js +++ /dev/null @@ -1,84 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.ContextAndRenderFieldsMixin = ContextAndRenderFieldsMixin; -exports.DomainContextProviderMixin = DomainContextProviderMixin; -exports.ImportantSettingsProviderMixin = ImportantSettingsProviderMixin; -const clone_1 = require("../../utils/clone"); -function ContextAndRenderFieldsMixin(superclass) { - return class extends superclass { - /** - * @see https://stackoverflow.com/questions/64396668/why-do-typescript-mixins-require-a-constructor-with-a-single-rest-parameter-any - * */ - // eslint-disable-next-line @typescript-eslint/no-explicit-any - constructor(...params) { - super(...params); - this._context = params[0].context || {}; - } - // in-memory, or "volatile" context that is reset when the `parent` object is destroyed - get context() { - return this._context; - } - set context(newContext) { - this._context = newContext; - } - updateContext(ctx = {}, executeRender = false) { - this._context = { ...this.context, ...ctx }; - if (executeRender) - this.render(); - } - // to get "persistent" context, that is stored in database and further should be provided to constructor - // when the `parent` object is re-created - getPersistentContext() { - return this.prop("context"); - } - // to make context persistent in `_json` - updatePersistentContext(ctx = {}) { - this.setProp("context", { ...ctx }); - } - // to get persistent and volatile context combined - getCombinedContext() { - return { ...this.getPersistentContext(), ...this.context }; - } - // override in subclasses - // eslint-disable-next-line @typescript-eslint/no-unused-vars - render(_context = this.context) { - throw new Error("RenderInitMixin: render not implemented in derived class"); - } - }; -} -/* - * @summary Handles logic for domain-specific context, eg. "important settings". - * Important settings are stored inside "important" property and have context providers associated with it. - */ -function DomainContextProviderMixin(superclass) { - return class extends superclass { - // eslint-disable-next-line @typescript-eslint/no-explicit-any - constructor(...args) { - super(...args); - this._contextProviders = []; - } - get contextProviders() { - // override in children - return this._contextProviders; - } - }; -} -function ImportantSettingsProviderMixin(superclass) { - return class extends DomainContextProviderMixin(superclass) { - get important() { - return (0, clone_1.deepClone)(this._json.important || {}); - } - setImportant(key, value) { - this.setProp("important", { [key]: value }); - } - get importantSettingsProviders() { - return this.contextProviders.filter((p) => p.domain === "important"); - } - get isImportantEdited() { - return this.prop("important.isEdited"); - } - set isImportantEdited(bool) { - this.setProp("important", Object.assign(this.important, { isEdited: bool })); - } - }; -} diff --git a/dist/js/entity/mixins/context_runtime.d.ts b/dist/js/entity/mixins/context_runtime.d.ts deleted file mode 100644 index 432f0a1a..00000000 --- a/dist/js/entity/mixins/context_runtime.d.ts +++ /dev/null @@ -1,40 +0,0 @@ -import { JobBaseSchema } from "@mat3ra/esse/dist/js/types"; -import { InMemoryEntityConstructor } from "../in_memory"; -type RuntimeContext = Required["runtimeContext"]; -export declare function RuntimeContextFieldMixin(superclass: T): { - new (...args: any[]): { - _runtimeContext: RuntimeContext; - runtimeContext: RuntimeContext; - updateRuntimeContext(ctx?: RuntimeContext): void; - toJSON(exclude?: string[]): { - runtimeContext: {}; - }; - _json: import("@mat3ra/esse/dist/js/esse/types").AnyObject; - prop(name: string, defaultValue: T_1): T_1; - prop(name: string): T_1 | undefined; - requiredProp(name: string): T_1; - setProp(name: string, value: unknown): void; - unsetProp(name: string): void; - setProps(json?: import("@mat3ra/esse/dist/js/esse/types").AnyObject): /*elided*/ any; - 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; -export {}; diff --git a/dist/js/entity/mixins/context_runtime.js b/dist/js/entity/mixins/context_runtime.js deleted file mode 100644 index 67da5130..00000000 --- a/dist/js/entity/mixins/context_runtime.js +++ /dev/null @@ -1,26 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.RuntimeContextFieldMixin = RuntimeContextFieldMixin; -function RuntimeContextFieldMixin(superclass) { - return class extends superclass { - // eslint-disable-next-line @typescript-eslint/no-explicit-any - constructor(...args) { - super(...args); - const config = args[0]; - this._runtimeContext = config.runtimeContext || {}; - } - // in-memory, or "volatile" runtimeContext that is reset when the `parent` object is destroyed - get runtimeContext() { - return this._runtimeContext; - } - set runtimeContext(newContext) { - this._runtimeContext = newContext; - } - updateRuntimeContext(ctx = {}) { - this.runtimeContext = Object.assign(this._runtimeContext, ctx); - } - toJSON(exclude = []) { - return { ...super.toJSON(exclude), runtimeContext: this._runtimeContext }; - } - }; -} diff --git a/dist/js/entity/mixins/repetition.d.ts b/dist/js/entity/mixins/repetition.d.ts deleted file mode 100644 index 60d71b43..00000000 --- a/dist/js/entity/mixins/repetition.d.ts +++ /dev/null @@ -1,48 +0,0 @@ -import { InMemoryEntityConstructor } from "../in_memory"; -export interface HasRepetition { - setRepetition: (repetition: number) => void; -} -type Units = HasRepetition[]; -type Workflows = HasRepetition[]; -type Subworkflows = HasRepetition[]; -export declare function HasRepetitionMixin(superclass: T): { - new (...args: any[]): { - _repetition: number; - _totalRepetitions: number; - units: Units; - workflows: Workflows; - subworkflows: Subworkflows; - readonly repetition: number; - setRepetition(repetition: number): void; - readonly totalRepetitions: number; - setTotalRepetitions(totalRepetition: number): void; - _json: import("@mat3ra/esse/dist/js/esse/types").AnyObject; - prop(name: string, defaultValue: T_1): T_1; - prop(name: string): T_1 | undefined; - requiredProp(name: string): T_1; - 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; -export {}; diff --git a/dist/js/entity/mixins/repetition.js b/dist/js/entity/mixins/repetition.js deleted file mode 100644 index cb93c0ad..00000000 --- a/dist/js/entity/mixins/repetition.js +++ /dev/null @@ -1,32 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.HasRepetitionMixin = HasRepetitionMixin; -function HasRepetitionMixin(superclass) { - return class extends superclass { - constructor() { - super(...arguments); - this._repetition = 0; - this._totalRepetitions = 0; - } - get repetition() { - return this._repetition || 0; - } - // TODO: make abstract and move to workflow/subworkflow classes? - setRepetition(repetition) { - this._repetition = repetition; - if (["Subworkflow", "Workflow"].find((n) => this.constructor.name === n)) { - this.units.forEach((u) => u.setRepetition(repetition)); - } - if (this.constructor.name === "Workflow") { - this.subworkflows.forEach((sw) => sw.setRepetition(repetition)); - this.workflows.forEach((wf) => wf.setRepetition(repetition)); - } - } - get totalRepetitions() { - return this._totalRepetitions || 1; - } - setTotalRepetitions(totalRepetition) { - this._totalRepetitions = totalRepetition; - } - }; -} diff --git a/package-lock.json b/package-lock.json index 0260eb6f..446598b3 100644 --- a/package-lock.json +++ b/package-lock.json @@ -33,7 +33,7 @@ "@babel/register": "^7.25.7", "@babel/runtime-corejs3": "^7.25.7", "@exabyte-io/eslint-config": "^2025.1.15-0", - "@mat3ra/esse": "git+https://github.com/Exabyte-io/esse#be892d203b9f7cf6525270b1a1f6352c7f3fc055", + "@mat3ra/esse": "git+https://github.com/Exabyte-io/esse#75ec994043d2dfadfff0c36a23ec9f6fbcf214e4", "@mat3ra/tsconfig": "2024.6.3-0", "@types/chai": "^4.3.20", "@types/crypto-js": "^4.2.2", @@ -2755,8 +2755,8 @@ }, "node_modules/@mat3ra/esse": { "version": "0.0.0", - "resolved": "git+ssh://git@github.com/Exabyte-io/esse.git#be892d203b9f7cf6525270b1a1f6352c7f3fc055", - "integrity": "sha512-rCNE/Yvqg2CEf1hbnwjcNtEv8ItyQpq9+k6/D4gdrqk+vbLatV7+QIPuSEpB3I0B7HeozrbwujjR1jYPUAr+Sw==", + "resolved": "git+ssh://git@github.com/Exabyte-io/esse.git#75ec994043d2dfadfff0c36a23ec9f6fbcf214e4", + "integrity": "sha512-qQl96uFmRcA1bP7fxQjSIbt5YtAJ5tcWQEQLgtcPXb1k6COrrc/HqkI5a8QyMxC8NclNosIAzM9myj5sQ+AK0w==", "dev": true, "license": "Apache-2.0", "dependencies": { @@ -2769,7 +2769,7 @@ "@babel/preset-typescript": "^7.27.0", "@babel/register": "^7.25.9", "@babel/runtime-corejs3": "^7.27.0", - "@mat3ra/utils": "^2025.11.20-0", + "@mat3ra/utils": "2026.3.7-0", "@types/chai": "^4.3.20", "@types/js-yaml": "^4.0.9", "@types/json-schema-merge-allof": "^0.6.5", @@ -2819,9 +2819,9 @@ } }, "node_modules/@mat3ra/utils": { - "version": "2025.11.20-0", - "resolved": "https://registry.npmjs.org/@mat3ra/utils/-/utils-2025.11.20-0.tgz", - "integrity": "sha512-igkswFIPrvIsOKiGdLE6ifgKGa3nruepjq2pPs9us+gHRn4tCaFNsBJqHw3ysw1dLgCtoYhHyYbMdpQu46+FCw==", + "version": "2026.3.7-0", + "resolved": "https://registry.npmjs.org/@mat3ra/utils/-/utils-2026.3.7-0.tgz", + "integrity": "sha512-qUxsyzo4s1G8MjHYbF+QHdXq0KgymJ3ey3x+dswCak69WiB0w8OuO5IOqyXS0RWoEB2mj7Ccm4ZN7uTSWZLHxw==", "dev": true, "license": "ISC", "dependencies": { diff --git a/package.json b/package.json index e0da7a31..0f7181b3 100644 --- a/package.json +++ b/package.json @@ -55,7 +55,7 @@ "@babel/register": "^7.25.7", "@babel/runtime-corejs3": "^7.25.7", "@exabyte-io/eslint-config": "^2025.1.15-0", - "@mat3ra/esse": "git+https://github.com/Exabyte-io/esse#be892d203b9f7cf6525270b1a1f6352c7f3fc055", + "@mat3ra/esse": "git+https://github.com/Exabyte-io/esse#75ec994043d2dfadfff0c36a23ec9f6fbcf214e4", "@mat3ra/tsconfig": "2024.6.3-0", "@types/chai": "^4.3.20", "@types/crypto-js": "^4.2.2", diff --git a/src/js/entity/index.ts b/src/js/entity/index.ts index 4bc9370b..6644ec7d 100644 --- a/src/js/entity/index.ts +++ b/src/js/entity/index.ts @@ -1,15 +1,10 @@ import { InMemoryEntity } from "./in_memory"; -import { RuntimeContextFieldMixin } from "./mixins/context_runtime"; -// import { RuntimeItemsMixin } from "./mixins/runtime_items"; import { DefaultableInMemoryEntity, HasConsistencyChecksHasMetadataNamedDefaultableInMemoryEntity, HasMetadataNamedDefaultableInMemoryEntity, NamedDefaultableInMemoryEntity, NamedInMemoryEntity, - // NamedDefaultableRepetitionContextAndRenderInMemoryEntity, - // NamedDefaultableRepetitionImportantSettingsInMemoryEntity, - // NamedDefaultableRepetitionRuntimeItemsImportantSettingsContextAndRenderHashedInMemoryEntity, } from "./other"; import { InMemoryEntitySet } from "./set"; import { ENTITY_SET_TYPES } from "./set/enums"; @@ -27,12 +22,7 @@ export { DefaultableInMemoryEntity, NamedDefaultableInMemoryEntity, HasMetadataNamedDefaultableInMemoryEntity, - // NamedDefaultableRepetitionContextAndRenderInMemoryEntity, - // NamedDefaultableRepetitionImportantSettingsInMemoryEntity, - // NamedDefaultableRepetitionRuntimeItemsImportantSettingsContextAndRenderHashedInMemoryEntity, HasConsistencyChecksHasMetadataNamedDefaultableInMemoryEntity, - // RuntimeItemsMixin, - RuntimeContextFieldMixin, InMemoryEntitySet, ENTITY_SET_TYPES, constructEntitySetFactoryByConfig, diff --git a/src/js/entity/mixins/HasRepetitionMixin.ts b/src/js/entity/mixins/HasRepetitionMixin.ts deleted file mode 100644 index e4d834ff..00000000 --- a/src/js/entity/mixins/HasRepetitionMixin.ts +++ /dev/null @@ -1,46 +0,0 @@ -import type { InMemoryEntity } from "../in_memory"; - -export interface HasRepetition { - _repetition: number; - _totalRepetitions: number; - repetition: number; - totalRepetitions: number; - setRepetition: (repetition: number) => void; - setTotalRepetitions: (totalRepetition: number) => void; -} - -export function hasRepetitionMixin( - item: T, -): asserts item is T & HasRepetition { - // @ts-expect-error - const properties: InMemoryEntity & HasRepetition = { - _repetition: 0, - - _totalRepetitions: 0, - - get repetition() { - return this._repetition; - }, - set repetition(repetition: number) { - this._repetition = repetition; - }, - get totalRepetitions() { - return this._totalRepetitions || 1; - }, - setRepetition(repetition: number) { - this.repetition = repetition; - // if (["Subworkflow", "Workflow"].find((n) => this.constructor.name === n)) { - // this.units.forEach((u) => u.setRepetition(repetition)); - // } - - // if (this.constructor.name === "Workflow") { - // this.subworkflows.forEach((sw) => sw.setRepetition(repetition)); - // this.workflows.forEach((wf) => wf.setRepetition(repetition)); - // } - }, - setTotalRepetitions(totalRepetition: number) { - this._totalRepetitions = totalRepetition; - }, - }; - Object.defineProperties(item, Object.getOwnPropertyDescriptors(properties)); -} diff --git a/src/js/entity/mixins/context.ts b/src/js/entity/mixins/context.ts deleted file mode 100644 index f2f2bac5..00000000 --- a/src/js/entity/mixins/context.ts +++ /dev/null @@ -1,108 +0,0 @@ -import { AnyObject } from "@mat3ra/esse/dist/js/esse/types"; - -import { deepClone } from "../../utils/clone"; -import { InMemoryEntityConstructor } from "../in_memory"; - -// TODO: clarify interface -export type Context = AnyObject; - -export function ContextAndRenderFieldsMixin(superclass: T) { - return class extends superclass { - _context: Context; - - /** - * @see https://stackoverflow.com/questions/64396668/why-do-typescript-mixins-require-a-constructor-with-a-single-rest-parameter-any - * */ - // eslint-disable-next-line @typescript-eslint/no-explicit-any - constructor(...params: any[]) { - super(...params); - - this._context = params[0].context || {}; - } - - // in-memory, or "volatile" context that is reset when the `parent` object is destroyed - get context() { - return this._context; - } - - set context(newContext) { - this._context = newContext; - } - - updateContext(ctx = {}, executeRender = false) { - this._context = { ...this.context, ...ctx }; - if (executeRender) this.render(); - } - - // to get "persistent" context, that is stored in database and further should be provided to constructor - // when the `parent` object is re-created - getPersistentContext() { - return this.prop("context"); - } - - // to make context persistent in `_json` - updatePersistentContext(ctx: object = {}) { - this.setProp("context", { ...ctx }); - } - - // to get persistent and volatile context combined - getCombinedContext() { - return { ...this.getPersistentContext(), ...this.context }; - } - - // override in subclasses - // eslint-disable-next-line @typescript-eslint/no-unused-vars - render(_context = this.context) { - throw new Error("RenderInitMixin: render not implemented in derived class"); - } - }; -} - -export interface ContextProvider { - domain: string; -} - -/* - * @summary Handles logic for domain-specific context, eg. "important settings". - * Important settings are stored inside "important" property and have context providers associated with it. - */ -export function DomainContextProviderMixin(superclass: T) { - return class extends superclass { - _contextProviders: ContextProvider[]; - - // eslint-disable-next-line @typescript-eslint/no-explicit-any - constructor(...args: any[]) { - super(...args); - this._contextProviders = []; - } - - get contextProviders() { - // override in children - return this._contextProviders; - } - }; -} - -export function ImportantSettingsProviderMixin(superclass: T) { - return class extends DomainContextProviderMixin(superclass) { - get important() { - return deepClone(this._json.important || {}); - } - - setImportant(key: string, value: unknown) { - this.setProp("important", { [key]: value }); - } - - get importantSettingsProviders() { - return this.contextProviders.filter((p) => p.domain === "important"); - } - - get isImportantEdited() { - return this.prop("important.isEdited"); - } - - set isImportantEdited(bool) { - this.setProp("important", Object.assign(this.important, { isEdited: bool })); - } - }; -} diff --git a/src/js/entity/mixins/context_runtime.ts b/src/js/entity/mixins/context_runtime.ts deleted file mode 100644 index 2e39a7bd..00000000 --- a/src/js/entity/mixins/context_runtime.ts +++ /dev/null @@ -1,37 +0,0 @@ -import { JobBaseSchema } from "@mat3ra/esse/dist/js/types"; - -import { InMemoryEntityConstructor } from "../in_memory"; - -type RuntimeContext = Required["runtimeContext"]; - -export function RuntimeContextFieldMixin(superclass: T) { - return class extends superclass { - _runtimeContext: RuntimeContext; - - // eslint-disable-next-line @typescript-eslint/no-explicit-any - constructor(...args: any[]) { - super(...args); - - const config = args[0]; - - this._runtimeContext = config.runtimeContext || {}; - } - - // in-memory, or "volatile" runtimeContext that is reset when the `parent` object is destroyed - get runtimeContext() { - return this._runtimeContext; - } - - set runtimeContext(newContext: RuntimeContext) { - this._runtimeContext = newContext; - } - - updateRuntimeContext(ctx: RuntimeContext = {}) { - this.runtimeContext = Object.assign(this._runtimeContext, ctx); - } - - toJSON(exclude: string[] = []) { - return { ...super.toJSON(exclude), runtimeContext: this._runtimeContext }; - } - }; -} diff --git a/src/js/entity/mixins/repetition.ts b/src/js/entity/mixins/repetition.ts deleted file mode 100644 index 5de0f653..00000000 --- a/src/js/entity/mixins/repetition.ts +++ /dev/null @@ -1,50 +0,0 @@ -import { InMemoryEntityConstructor } from "../in_memory"; - -export interface HasRepetition { - setRepetition: (repetition: number) => void; -} - -type Units = HasRepetition[]; -type Workflows = HasRepetition[]; -type Subworkflows = HasRepetition[]; - -export function HasRepetitionMixin(superclass: T) { - return class extends superclass { - _repetition = 0; - - _totalRepetitions = 0; - - // TODO: has to be moved somewhere - declare units: Units; - - declare workflows: Workflows; - - declare subworkflows: Subworkflows; - - get repetition() { - return this._repetition || 0; - } - - // TODO: make abstract and move to workflow/subworkflow classes? - setRepetition(repetition: number) { - this._repetition = repetition; - - if (["Subworkflow", "Workflow"].find((n) => this.constructor.name === n)) { - this.units.forEach((u) => u.setRepetition(repetition)); - } - - if (this.constructor.name === "Workflow") { - this.subworkflows.forEach((sw) => sw.setRepetition(repetition)); - this.workflows.forEach((wf) => wf.setRepetition(repetition)); - } - } - - get totalRepetitions() { - return this._totalRepetitions || 1; - } - - setTotalRepetitions(totalRepetition: number) { - this._totalRepetitions = totalRepetition; - } - }; -} From ad188d8a6d5dbb06b40791335c7b0068ee94a264 Mon Sep 17 00:00:00 2001 From: Kostiantyn Dvornik Date: Thu, 26 Mar 2026 21:50:07 +0200 Subject: [PATCH 6/7] chore: improve export --- dist/js/entity/index.d.ts | 3 ++- dist/js/entity/index.js | 7 ++++++- src/js/entity/index.ts | 2 ++ 3 files changed, 10 insertions(+), 2 deletions(-) diff --git a/dist/js/entity/index.d.ts b/dist/js/entity/index.d.ts index 6fa0e96e..b2e4a3c4 100644 --- a/dist/js/entity/index.d.ts +++ b/dist/js/entity/index.d.ts @@ -1,4 +1,5 @@ import { InMemoryEntity } from "./in_memory"; +import HasScopeTrackMixin from "./mixins/HasScopeTrackMixin"; import { DefaultableInMemoryEntity, HasConsistencyChecksHasMetadataNamedDefaultableInMemoryEntity, HasMetadataNamedDefaultableInMemoryEntity, NamedDefaultableInMemoryEntity, NamedInMemoryEntity } from "./other"; import { InMemoryEntitySet } from "./set"; import { ENTITY_SET_TYPES } from "./set/enums"; @@ -6,4 +7,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, HasConsistencyChecksHasMetadataNamedDefaultableInMemoryEntity, InMemoryEntitySet, ENTITY_SET_TYPES, constructEntitySetFactoryByConfig, selectorsForEntitySet, InMemoryEntitySetMixin, InMemoryEntityInSetMixin, OrderedInMemoryEntitySetMixin, OrderedInMemoryEntityInSetMixin, }; +export { InMemoryEntity, NamedInMemoryEntity, DefaultableInMemoryEntity, NamedDefaultableInMemoryEntity, HasMetadataNamedDefaultableInMemoryEntity, HasConsistencyChecksHasMetadataNamedDefaultableInMemoryEntity, InMemoryEntitySet, ENTITY_SET_TYPES, constructEntitySetFactoryByConfig, selectorsForEntitySet, InMemoryEntitySetMixin, InMemoryEntityInSetMixin, OrderedInMemoryEntitySetMixin, OrderedInMemoryEntityInSetMixin, HasScopeTrackMixin, }; diff --git a/dist/js/entity/index.js b/dist/js/entity/index.js index a5a3eb30..65215bff 100644 --- a/dist/js/entity/index.js +++ b/dist/js/entity/index.js @@ -32,10 +32,15 @@ var __importStar = (this && this.__importStar) || (function () { return result; }; })(); +var __importDefault = (this && this.__importDefault) || function (mod) { + return (mod && mod.__esModule) ? mod : { "default": mod }; +}; Object.defineProperty(exports, "__esModule", { value: true }); -exports.OrderedInMemoryEntityInSetMixin = exports.OrderedInMemoryEntitySetMixin = exports.InMemoryEntityInSetMixin = exports.InMemoryEntitySetMixin = exports.selectorsForEntitySet = exports.constructEntitySetFactoryByConfig = exports.ENTITY_SET_TYPES = exports.InMemoryEntitySet = exports.HasConsistencyChecksHasMetadataNamedDefaultableInMemoryEntity = exports.HasMetadataNamedDefaultableInMemoryEntity = exports.NamedDefaultableInMemoryEntity = exports.DefaultableInMemoryEntity = exports.NamedInMemoryEntity = exports.InMemoryEntity = void 0; +exports.HasScopeTrackMixin = exports.OrderedInMemoryEntityInSetMixin = exports.OrderedInMemoryEntitySetMixin = exports.InMemoryEntityInSetMixin = exports.InMemoryEntitySetMixin = exports.selectorsForEntitySet = exports.constructEntitySetFactoryByConfig = exports.ENTITY_SET_TYPES = exports.InMemoryEntitySet = exports.HasConsistencyChecksHasMetadataNamedDefaultableInMemoryEntity = 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 HasScopeTrackMixin_1 = __importDefault(require("./mixins/HasScopeTrackMixin")); +exports.HasScopeTrackMixin = HasScopeTrackMixin_1.default; const other_1 = require("./other"); Object.defineProperty(exports, "DefaultableInMemoryEntity", { enumerable: true, get: function () { return other_1.DefaultableInMemoryEntity; } }); Object.defineProperty(exports, "HasConsistencyChecksHasMetadataNamedDefaultableInMemoryEntity", { enumerable: true, get: function () { return other_1.HasConsistencyChecksHasMetadataNamedDefaultableInMemoryEntity; } }); diff --git a/src/js/entity/index.ts b/src/js/entity/index.ts index 6644ec7d..f7fd3408 100644 --- a/src/js/entity/index.ts +++ b/src/js/entity/index.ts @@ -1,4 +1,5 @@ import { InMemoryEntity } from "./in_memory"; +import HasScopeTrackMixin from "./mixins/HasScopeTrackMixin"; import { DefaultableInMemoryEntity, HasConsistencyChecksHasMetadataNamedDefaultableInMemoryEntity, @@ -31,4 +32,5 @@ export { InMemoryEntityInSetMixin, OrderedInMemoryEntitySetMixin, OrderedInMemoryEntityInSetMixin, + HasScopeTrackMixin, }; From 3c38f98c67ce011e12fd58a600bd7cec6ba13b30 Mon Sep 17 00:00:00 2001 From: Kostiantyn Dvornik Date: Fri, 3 Apr 2026 00:51:36 +0300 Subject: [PATCH 7/7] chore: cleanup mixins --- dist/js/entity/index.d.ts | 5 +- dist/js/entity/index.js | 8 +- .../mixins/ContextAndRenderFieldsMixin.d.ts | 15 - .../mixins/ContextAndRenderFieldsMixin.js | 21 - dist/js/entity/mixins/HasScopeTrackMixin.d.ts | 12 +- dist/js/entity/mixins/HasScopeTrackMixin.js | 22 +- dist/js/entity/mixins/flowchart.d.ts | 75 - dist/js/entity/mixins/flowchart.js | 69 - dist/js/entity/mixins/hash.d.ts | 39 - dist/js/entity/mixins/hash.js | 24 - dist/js/entity/mixins/props.d.ts | 2 - dist/js/entity/mixins/props.js | 8 - dist/js/entity/set.d.ts | 2 +- dist/js/entity/set.js | 4 +- .../entity/set/InMemoryEntityInSetMixin.d.ts | 7 +- .../js/entity/set/InMemoryEntityInSetMixin.js | 15 +- .../set/InMemoryEntitySetBaseMixin.d.ts | 10 +- .../entity/set/InMemoryEntitySetBaseMixin.js | 24 +- dist/js/entity/set/enums.d.ts | 4 +- dist/js/entity/set/factory.d.ts | 2 +- dist/js/entity/set/factory.js | 3 +- dist/js/entity/set/mixins.d.ts | 3 +- dist/js/entity/set/mixins.js | 5 +- dist/js/entity/set/ordered.d.ts | 2 - dist/js/entity/set/ordered.js | 6 - .../OrderedInMemoryEntityInSetMixin.d.ts | 4 +- dist/js/generateSchemaMixin.js | 7 +- .../HasConsistencyChecksSchemaMixin.js | 2 +- dist/js/generated/InSetSchemaMixin.d.ts | 5 + dist/js/generated/InSetSchemaMixin.js | 15 + dist/js/generated/TaggableSchemaMixin.js | 2 +- package-lock.json | 1425 +++++++++-------- package.json | 2 +- scripts/generate-mixins.ts | 1 + src/js/entity/index.ts | 5 +- .../mixins/ContextAndRenderFieldsMixin.ts | 39 - src/js/entity/mixins/HasScopeTrackMixin.ts | 32 +- src/js/entity/mixins/flowchart.ts | 83 - src/js/entity/mixins/hash.ts | 24 - src/js/entity/mixins/props.ts | 3 - src/js/entity/set.ts | 7 +- src/js/entity/set/InMemoryEntityInSetMixin.ts | 29 +- .../entity/set/InMemoryEntitySetBaseMixin.ts | 30 +- src/js/entity/set/enums.ts | 2 +- src/js/entity/set/factory.ts | 3 +- src/js/entity/set/mixins.ts | 4 +- src/js/entity/set/ordered.ts | 6 - .../OrderedInMemoryEntityInSetMixin.ts | 7 +- src/js/generateSchemaMixin.ts | 7 +- .../HasConsistencyChecksSchemaMixin.ts | 5 +- src/js/generated/InSetSchemaMixin.ts | 23 + src/js/generated/TaggableSchemaMixin.ts | 2 +- tests/js/generateSchemaMixin.tests.ts | 23 + 53 files changed, 912 insertions(+), 1272 deletions(-) delete mode 100644 dist/js/entity/mixins/ContextAndRenderFieldsMixin.d.ts delete mode 100644 dist/js/entity/mixins/ContextAndRenderFieldsMixin.js delete mode 100644 dist/js/entity/mixins/flowchart.d.ts delete mode 100644 dist/js/entity/mixins/flowchart.js delete mode 100644 dist/js/entity/mixins/hash.d.ts delete mode 100644 dist/js/entity/mixins/hash.js delete mode 100644 dist/js/entity/mixins/props.d.ts delete mode 100644 dist/js/entity/mixins/props.js delete mode 100644 dist/js/entity/set/ordered.d.ts delete mode 100644 dist/js/entity/set/ordered.js create mode 100644 dist/js/generated/InSetSchemaMixin.d.ts create mode 100644 dist/js/generated/InSetSchemaMixin.js delete mode 100644 src/js/entity/mixins/ContextAndRenderFieldsMixin.ts delete mode 100644 src/js/entity/mixins/flowchart.ts delete mode 100644 src/js/entity/mixins/hash.ts delete mode 100644 src/js/entity/mixins/props.ts delete mode 100644 src/js/entity/set/ordered.ts create mode 100644 src/js/generated/InSetSchemaMixin.ts diff --git a/dist/js/entity/index.d.ts b/dist/js/entity/index.d.ts index b2e4a3c4..70f382bf 100644 --- a/dist/js/entity/index.d.ts +++ b/dist/js/entity/index.d.ts @@ -1,10 +1,9 @@ import { InMemoryEntity } from "./in_memory"; -import HasScopeTrackMixin from "./mixins/HasScopeTrackMixin"; import { DefaultableInMemoryEntity, HasConsistencyChecksHasMetadataNamedDefaultableInMemoryEntity, HasMetadataNamedDefaultableInMemoryEntity, NamedDefaultableInMemoryEntity, NamedInMemoryEntity } from "./other"; import { InMemoryEntitySet } from "./set"; import { ENTITY_SET_TYPES } from "./set/enums"; import { constructEntitySetFactoryByConfig } from "./set/factory"; -import { InMemoryEntityInSetMixin, InMemoryEntitySetMixin } from "./set/mixins"; +import { InMemoryEntitySetMixin } from "./set/mixins"; import { OrderedInMemoryEntityInSetMixin, OrderedInMemoryEntitySetMixin } from "./set/ordered/mixins"; import * as selectorsForEntitySet from "./set/selectors"; -export { InMemoryEntity, NamedInMemoryEntity, DefaultableInMemoryEntity, NamedDefaultableInMemoryEntity, HasMetadataNamedDefaultableInMemoryEntity, HasConsistencyChecksHasMetadataNamedDefaultableInMemoryEntity, InMemoryEntitySet, ENTITY_SET_TYPES, constructEntitySetFactoryByConfig, selectorsForEntitySet, InMemoryEntitySetMixin, InMemoryEntityInSetMixin, OrderedInMemoryEntitySetMixin, OrderedInMemoryEntityInSetMixin, HasScopeTrackMixin, }; +export { InMemoryEntity, NamedInMemoryEntity, DefaultableInMemoryEntity, NamedDefaultableInMemoryEntity, HasMetadataNamedDefaultableInMemoryEntity, HasConsistencyChecksHasMetadataNamedDefaultableInMemoryEntity, InMemoryEntitySet, ENTITY_SET_TYPES, constructEntitySetFactoryByConfig, selectorsForEntitySet, InMemoryEntitySetMixin, OrderedInMemoryEntitySetMixin, OrderedInMemoryEntityInSetMixin, }; diff --git a/dist/js/entity/index.js b/dist/js/entity/index.js index 65215bff..815f90aa 100644 --- a/dist/js/entity/index.js +++ b/dist/js/entity/index.js @@ -32,15 +32,10 @@ var __importStar = (this && this.__importStar) || (function () { return result; }; })(); -var __importDefault = (this && this.__importDefault) || function (mod) { - return (mod && mod.__esModule) ? mod : { "default": mod }; -}; Object.defineProperty(exports, "__esModule", { value: true }); -exports.HasScopeTrackMixin = exports.OrderedInMemoryEntityInSetMixin = exports.OrderedInMemoryEntitySetMixin = exports.InMemoryEntityInSetMixin = exports.InMemoryEntitySetMixin = exports.selectorsForEntitySet = exports.constructEntitySetFactoryByConfig = exports.ENTITY_SET_TYPES = exports.InMemoryEntitySet = exports.HasConsistencyChecksHasMetadataNamedDefaultableInMemoryEntity = exports.HasMetadataNamedDefaultableInMemoryEntity = exports.NamedDefaultableInMemoryEntity = exports.DefaultableInMemoryEntity = exports.NamedInMemoryEntity = exports.InMemoryEntity = void 0; +exports.OrderedInMemoryEntityInSetMixin = exports.OrderedInMemoryEntitySetMixin = exports.InMemoryEntitySetMixin = exports.selectorsForEntitySet = exports.constructEntitySetFactoryByConfig = exports.ENTITY_SET_TYPES = exports.InMemoryEntitySet = exports.HasConsistencyChecksHasMetadataNamedDefaultableInMemoryEntity = 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 HasScopeTrackMixin_1 = __importDefault(require("./mixins/HasScopeTrackMixin")); -exports.HasScopeTrackMixin = HasScopeTrackMixin_1.default; const other_1 = require("./other"); Object.defineProperty(exports, "DefaultableInMemoryEntity", { enumerable: true, get: function () { return other_1.DefaultableInMemoryEntity; } }); Object.defineProperty(exports, "HasConsistencyChecksHasMetadataNamedDefaultableInMemoryEntity", { enumerable: true, get: function () { return other_1.HasConsistencyChecksHasMetadataNamedDefaultableInMemoryEntity; } }); @@ -54,7 +49,6 @@ Object.defineProperty(exports, "ENTITY_SET_TYPES", { enumerable: true, get: func const factory_1 = require("./set/factory"); Object.defineProperty(exports, "constructEntitySetFactoryByConfig", { enumerable: true, get: function () { return factory_1.constructEntitySetFactoryByConfig; } }); const mixins_1 = require("./set/mixins"); -Object.defineProperty(exports, "InMemoryEntityInSetMixin", { enumerable: true, get: function () { return mixins_1.InMemoryEntityInSetMixin; } }); Object.defineProperty(exports, "InMemoryEntitySetMixin", { enumerable: true, get: function () { return mixins_1.InMemoryEntitySetMixin; } }); const mixins_2 = require("./set/ordered/mixins"); Object.defineProperty(exports, "OrderedInMemoryEntityInSetMixin", { enumerable: true, get: function () { return mixins_2.OrderedInMemoryEntityInSetMixin; } }); diff --git a/dist/js/entity/mixins/ContextAndRenderFieldsMixin.d.ts b/dist/js/entity/mixins/ContextAndRenderFieldsMixin.d.ts deleted file mode 100644 index 2e41bca9..00000000 --- a/dist/js/entity/mixins/ContextAndRenderFieldsMixin.d.ts +++ /dev/null @@ -1,15 +0,0 @@ -import type { AnyObject } from "@mat3ra/esse/dist/js/esse/types"; -import type { InMemoryEntity } from "../in_memory"; -export type Context = AnyObject; -export type ContextAndRenderFields = { - context?: Context; - updateContext(ctx: Context): void; - getPersistentContext(): Context | undefined; - updatePersistentContext(ctx: Context): void; - getCombinedContext(): Context; -}; -type AbstractBase = { - render(ctx: Context): void; -}; -export declare function contextAndRenderFieldsMixin(item: T): asserts item is T & ContextAndRenderFields; -export {}; diff --git a/dist/js/entity/mixins/ContextAndRenderFieldsMixin.js b/dist/js/entity/mixins/ContextAndRenderFieldsMixin.js deleted file mode 100644 index 7fe3a434..00000000 --- a/dist/js/entity/mixins/ContextAndRenderFieldsMixin.js +++ /dev/null @@ -1,21 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.contextAndRenderFieldsMixin = contextAndRenderFieldsMixin; -function contextAndRenderFieldsMixin(item) { - // @ts-expect-error - const properties = { - updateContext(ctx) { - this.context = { ...this.context, ...ctx }; - }, - getPersistentContext() { - return this.prop("context"); - }, - updatePersistentContext(ctx) { - this.setProp("context", { ...ctx }); - }, - getCombinedContext() { - return { ...this.getPersistentContext(), ...this.context }; - }, - }; - Object.defineProperties(item, Object.getOwnPropertyDescriptors(properties)); -} diff --git a/dist/js/entity/mixins/HasScopeTrackMixin.d.ts b/dist/js/entity/mixins/HasScopeTrackMixin.d.ts index ca217a15..8e9df8fa 100644 --- a/dist/js/entity/mixins/HasScopeTrackMixin.d.ts +++ b/dist/js/entity/mixins/HasScopeTrackMixin.d.ts @@ -1,8 +1,8 @@ -import type { Constructor } from "../../utils/types"; -import { InMemoryEntity, InMemoryEntityConstructor } from "../in_memory"; -export declare function hasScopeTrackMixin(item: InMemoryEntity): { - scopeTrack: unknown[]; +import { InMemoryEntity } from "../in_memory"; +type ScopeTrackDescriptor = { + get scopeTrack(): unknown[]; + set scopeTrack(array: unknown[]); }; +export declare function hasScopeTrackMixin(item: InMemoryEntity): InMemoryEntity & ScopeTrackDescriptor; export type HasScopeTrackInMemoryEntity = ReturnType; -export type HasScopeTrackInMemoryEntityConstructor = Constructor; -export default function HasScopeTrackMixin(superclass: S): S & HasScopeTrackInMemoryEntityConstructor; +export {}; diff --git a/dist/js/entity/mixins/HasScopeTrackMixin.js b/dist/js/entity/mixins/HasScopeTrackMixin.js index 2d5d1bd9..11b85ab2 100644 --- a/dist/js/entity/mixins/HasScopeTrackMixin.js +++ b/dist/js/entity/mixins/HasScopeTrackMixin.js @@ -1,29 +1,19 @@ "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.hasScopeTrackMixin = hasScopeTrackMixin; -exports.default = HasScopeTrackMixin; function schemaMixin(item) { - const schema = { + // @ts-expect-error + const properties = { get scopeTrack() { - return item.prop("scopeTrack", []); + return this.prop("scopeTrack", []); }, set scopeTrack(array) { - item.setProp("scopeTrack", array); + this.setProp("scopeTrack", array); }, }; - Object.defineProperties(item, Object.getOwnPropertyDescriptors(schema)); - return schema; + Object.defineProperties(item, Object.getOwnPropertyDescriptors(properties)); + return properties; } function hasScopeTrackMixin(item) { return schemaMixin(item); } -function HasScopeTrackMixin(superclass) { - class HasScopeTrackMixin extends superclass { - // eslint-disable-next-line @typescript-eslint/no-explicit-any - constructor(...args) { - super(...args); - hasScopeTrackMixin(this); - } - } - return HasScopeTrackMixin; -} diff --git a/dist/js/entity/mixins/flowchart.d.ts b/dist/js/entity/mixins/flowchart.d.ts deleted file mode 100644 index c6f9d797..00000000 --- a/dist/js/entity/mixins/flowchart.d.ts +++ /dev/null @@ -1,75 +0,0 @@ -import { UnitEntity } from "../../utils/graph"; -import { InMemoryEntityConstructor } from "../in_memory"; -export declare function FlowchartItemMixin(superclass: T): { - new (...params: any[]): { - readonly flowchartId: string; - head: boolean; - next: string | undefined; - _json: import("@mat3ra/esse/dist/js/esse/types").AnyObject; - prop(name: string, defaultValue: T_1): T_1; - prop(name: string): T_1 | undefined; - requiredProp(name: string): T_1; - 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; -export declare function FlowchartEntityMixin(superclass: T): { - new (...params: any[]): { - _units: UnitEntity[]; - readonly units: UnitEntity[]; - setUnits(units: UnitEntity[]): void; - addUnit(unit: UnitEntity, index?: number): void; - removeUnit(flowchartId: string): void; - replaceUnit(unit: UnitEntity, index: number): void; - getUnit(flowchartId: string): UnitEntity | undefined; - getUnitIndexByFlowchartId(flowchartId: string): number; - _json: import("@mat3ra/esse/dist/js/esse/types").AnyObject; - prop(name: string, defaultValue: T_1): T_1; - prop(name: string): T_1 | undefined; - requiredProp(name: string): T_1; - 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/flowchart.js b/dist/js/entity/mixins/flowchart.js deleted file mode 100644 index e2710de6..00000000 --- a/dist/js/entity/mixins/flowchart.js +++ /dev/null @@ -1,69 +0,0 @@ -"use strict"; -var __importDefault = (this && this.__importDefault) || function (mod) { - return (mod && mod.__esModule) ? mod : { "default": mod }; -}; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.FlowchartItemMixin = FlowchartItemMixin; -exports.FlowchartEntityMixin = FlowchartEntityMixin; -const findIndex_1 = __importDefault(require("lodash/findIndex")); -const utils_1 = require("../../utils"); -function FlowchartItemMixin(superclass) { - return class extends superclass { - // eslint-disable-next-line @typescript-eslint/no-explicit-any - constructor(...params) { - super(...params); - const config = params[0]; - if (!(config === null || config === void 0 ? void 0 : config.flowchartId)) { - this.setProp("flowchartId", (0, utils_1.getUUID)()); - } - } - get flowchartId() { - return this.prop("flowchartId", ""); - } - get head() { - return this.prop("head", false); - } - set head(bool) { - this.setProp("head", bool); - } - get next() { - return this.prop("next"); - } - set next(flowchartId) { - this.setProp("next", flowchartId); - } - }; -} -function FlowchartEntityMixin(superclass) { - return class extends superclass { - // eslint-disable-next-line @typescript-eslint/no-explicit-any - constructor(...params) { - var _a; - super(...params); - this._units = ((_a = params[0]) === null || _a === void 0 ? void 0 : _a.units) || []; - } - get units() { - return this._units; - } - setUnits(units) { - this._units = units; - } - addUnit(unit, index = -1) { - this._units = (0, utils_1.addUnit)(this.units, unit, index); - } - removeUnit(flowchartId) { - this._units = (0, utils_1.removeUnit)(this.units, flowchartId); - } - replaceUnit(unit, index) { - this._units = (0, utils_1.replaceUnit)(this.units, unit, index); - } - getUnit(flowchartId) { - return this.units.find((x) => x.flowchartId === flowchartId); - } - getUnitIndexByFlowchartId(flowchartId) { - return (0, findIndex_1.default)(this.units, (unit) => { - return unit.flowchartId === flowchartId; - }); - } - }; -} diff --git a/dist/js/entity/mixins/hash.d.ts b/dist/js/entity/mixins/hash.d.ts deleted file mode 100644 index 2bd9bc90..00000000 --- a/dist/js/entity/mixins/hash.d.ts +++ /dev/null @@ -1,39 +0,0 @@ -import { InMemoryEntityConstructor } from "../in_memory"; -export declare function HashedEntityMixin(superclass: T): { - new (...args: any[]): { - getHashObject(): {}; - /** - * @summary Calculates hash based on meaningful fields and unit-specific fields. Unit-specific fields are - * separated into _typeSpecificHash function which can be overwritten by child classes. - * head and next are also important but not considered since they are included in subworkflow hash. - */ - calculateHash(): string; - _json: import("@mat3ra/esse/dist/js/esse/types").AnyObject; - prop(name: string, defaultValue: T_1): T_1; - prop(name: string): T_1 | undefined; - requiredProp(name: string): T_1; - 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 deleted file mode 100644 index 2963706e..00000000 --- a/dist/js/entity/mixins/hash.js +++ /dev/null @@ -1,24 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.HashedEntityMixin = HashedEntityMixin; -const hash_1 = require("../../utils/hash"); -function HashedEntityMixin(superclass) { - return class extends superclass { - /* - * @summary Returns an object based on meaningful fields for this unit, that will be used to calculate the hash - * Must be overridden. - */ - // eslint-disable-next-line class-methods-use-this - getHashObject() { - return {}; - } - /** - * @summary Calculates hash based on meaningful fields and unit-specific fields. Unit-specific fields are - * separated into _typeSpecificHash function which can be overwritten by child classes. - * head and next are also important but not considered since they are included in subworkflow hash. - */ - calculateHash() { - return (0, hash_1.calculateHashFromObject)(this.getHashObject()); - } - }; -} diff --git a/dist/js/entity/mixins/props.d.ts b/dist/js/entity/mixins/props.d.ts deleted file mode 100644 index 5cea781e..00000000 --- a/dist/js/entity/mixins/props.d.ts +++ /dev/null @@ -1,2 +0,0 @@ -import HasScopeTrackMixin from "./HasScopeTrackMixin"; -export { HasScopeTrackMixin }; diff --git a/dist/js/entity/mixins/props.js b/dist/js/entity/mixins/props.js deleted file mode 100644 index d8e7ae1c..00000000 --- a/dist/js/entity/mixins/props.js +++ /dev/null @@ -1,8 +0,0 @@ -"use strict"; -var __importDefault = (this && this.__importDefault) || function (mod) { - return (mod && mod.__esModule) ? mod : { "default": mod }; -}; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.HasScopeTrackMixin = void 0; -const HasScopeTrackMixin_1 = __importDefault(require("./HasScopeTrackMixin")); -exports.HasScopeTrackMixin = HasScopeTrackMixin_1.default; diff --git a/dist/js/entity/set.d.ts b/dist/js/entity/set.d.ts index b00a3e97..9d9a7b8e 100644 --- a/dist/js/entity/set.d.ts +++ b/dist/js/entity/set.d.ts @@ -1,5 +1,5 @@ import { InMemoryEntity } from "./in_memory"; -declare const InMemoryEntitySet_base: typeof InMemoryEntity & import("./set/InMemoryEntitySetBaseMixin").InMemoryEntitySetBaseConstructor & import("./set/InMemoryEntityInSetMixin").InMemoryEntityInSetConstructor & import("./set/InMemoryEntitySetMixin").InMemoryEntitySetConstructor; +declare const InMemoryEntitySet_base: typeof InMemoryEntity & import("./set/InMemoryEntitySetBaseMixin").InMemoryEntitySetBaseConstructor & import("./set/InMemoryEntitySetMixin").InMemoryEntitySetConstructor; export declare class InMemoryEntitySet extends InMemoryEntitySet_base { } export {}; diff --git a/dist/js/entity/set.js b/dist/js/entity/set.js index 54b2f537..eb294fc8 100644 --- a/dist/js/entity/set.js +++ b/dist/js/entity/set.js @@ -5,8 +5,10 @@ var __importDefault = (this && this.__importDefault) || function (mod) { Object.defineProperty(exports, "__esModule", { value: true }); exports.InMemoryEntitySet = void 0; const in_memory_1 = require("./in_memory"); +const InMemoryEntityInSetMixin_1 = require("./set/InMemoryEntityInSetMixin"); const InMemoryEntitySetBaseMixin_1 = __importDefault(require("./set/InMemoryEntitySetBaseMixin")); const mixins_1 = require("./set/mixins"); -class InMemoryEntitySet extends (0, mixins_1.InMemoryEntitySetMixin)((0, mixins_1.InMemoryEntityInSetMixin)((0, InMemoryEntitySetBaseMixin_1.default)(in_memory_1.InMemoryEntity))) { +class InMemoryEntitySet extends (0, mixins_1.InMemoryEntitySetMixin)((0, InMemoryEntitySetBaseMixin_1.default)(in_memory_1.InMemoryEntity)) { } exports.InMemoryEntitySet = InMemoryEntitySet; +(0, InMemoryEntityInSetMixin_1.inMemoryEntityInSetMixin)(InMemoryEntitySet.prototype); diff --git a/dist/js/entity/set/InMemoryEntityInSetMixin.d.ts b/dist/js/entity/set/InMemoryEntityInSetMixin.d.ts index e0f8ce53..785474f9 100644 --- a/dist/js/entity/set/InMemoryEntityInSetMixin.d.ts +++ b/dist/js/entity/set/InMemoryEntityInSetMixin.d.ts @@ -1,15 +1,10 @@ import { SystemInSetSchema } from "@mat3ra/esse/dist/js/types"; -import type { Constructor } from "../../utils/types"; import { type InMemoryEntity } from "../in_memory"; export type SystemInSet = Required; export type InSet = SystemInSet["inSet"][0]; -export declare function inMemoryEntityInSetMixin(item: E): void; +export declare function inMemoryEntityInSetMixin(item: E): asserts item is E & InMemoryEntityInSet; export type InSetPropertiesInMemoryEntity = { getInSetFilteredByCls: (cls: string) => InSet[]; parentEntitySetReference: InSet | undefined; }; export type InMemoryEntityInSet = SystemInSet & InSetPropertiesInMemoryEntity; -export type InMemoryEntityInSetConstructor = Constructor; -type Base = Constructor; -export default function InMemoryEntityInSetMixin(superclass: S): S & InMemoryEntityInSetConstructor; -export {}; diff --git a/dist/js/entity/set/InMemoryEntityInSetMixin.js b/dist/js/entity/set/InMemoryEntityInSetMixin.js index 65474110..e1fd21d9 100644 --- a/dist/js/entity/set/InMemoryEntityInSetMixin.js +++ b/dist/js/entity/set/InMemoryEntityInSetMixin.js @@ -1,16 +1,11 @@ "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.inMemoryEntityInSetMixin = inMemoryEntityInSetMixin; -exports.default = InMemoryEntityInSetMixin; +const InSetSchemaMixin_1 = require("../../generated/InSetSchemaMixin"); function inMemoryEntityInSetMixin(item) { + (0, InSetSchemaMixin_1.inSetSchemaMixin)(item); // @ts-expect-error const properties = { - get inSet() { - return this.prop("inSet", []); - }, - set inSet(inSet) { - this.setProp("inSet", inSet); - }, getInSetFilteredByCls(cls) { return this.inSet.filter((ref) => ref.cls === cls); }, @@ -22,9 +17,3 @@ function inMemoryEntityInSetMixin(item) { }; Object.defineProperties(item, Object.getOwnPropertyDescriptors(properties)); } -function InMemoryEntityInSetMixin(superclass) { - class InMemoryEntityInSetMixin extends superclass { - } - inMemoryEntityInSetMixin(InMemoryEntityInSetMixin.prototype); - return InMemoryEntityInSetMixin; -} diff --git a/dist/js/entity/set/InMemoryEntitySetBaseMixin.d.ts b/dist/js/entity/set/InMemoryEntitySetBaseMixin.d.ts index 1519fc11..dd4243bb 100644 --- a/dist/js/entity/set/InMemoryEntitySetBaseMixin.d.ts +++ b/dist/js/entity/set/InMemoryEntitySetBaseMixin.d.ts @@ -7,18 +7,14 @@ export declare enum EntitySetType { ordered = "ordered", unordered = "unordered" } -declare function schemaMixin(item: E): { - readonly isEntitySet: boolean; - readonly entitySetType: EntitySetType; - readonly entityCls: string | undefined; -}; -declare function methodsMixin(item: E & EntitySetSchema): { - readonly cls: string; +declare function schemaMixin(item: E): InMemoryEntity & EntitySetSchema; +type EntitySetBaseMethodsDescriptor = { toJSONForInclusionInEntity(): { _id: string; type: string; }; }; +declare function methodsMixin(item: E & EntitySetSchema): InMemoryEntity & EntitySetSchema & EntitySetBaseMethodsDescriptor; export declare function inMemoryEntitySetBaseMixin(item: T): void; export type InMemoryEntitySetBase = ReturnType & ReturnType; export type InMemoryEntitySetBaseConstructor = Constructor; diff --git a/dist/js/entity/set/InMemoryEntitySetBaseMixin.js b/dist/js/entity/set/InMemoryEntitySetBaseMixin.js index 33b57c06..9a51fba2 100644 --- a/dist/js/entity/set/InMemoryEntitySetBaseMixin.js +++ b/dist/js/entity/set/InMemoryEntitySetBaseMixin.js @@ -9,33 +9,35 @@ var EntitySetType; EntitySetType["unordered"] = "unordered"; })(EntitySetType || (exports.EntitySetType = EntitySetType = {})); function schemaMixin(item) { - const schema = { + // @ts-expect-error + const properties = { get isEntitySet() { - return item.prop("isEntitySet", false); + return this.prop("isEntitySet", false); }, get entitySetType() { - return item.prop("entitySetType", EntitySetType.unordered); + return this.prop("entitySetType", EntitySetType.unordered); }, get entityCls() { - return item.prop("entityCls"); + return this.prop("entityCls"); }, }; - Object.defineProperties(item, Object.getOwnPropertyDescriptors(schema)); - return schema; + Object.defineProperties(item, Object.getOwnPropertyDescriptors(properties)); + return properties; } function methodsMixin(item) { const originalCls = item.cls; - const methods = { + // @ts-expect-error + const properties = { get cls() { - return item.entityCls || originalCls; + return this.entityCls || originalCls; }, toJSONForInclusionInEntity() { - const { _id, type } = item.toJSON(); + const { _id, type } = this.toJSON(); return { _id, type }; }, }; - Object.defineProperties(item, Object.getOwnPropertyDescriptors(methods)); - return methods; + Object.defineProperties(item, Object.getOwnPropertyDescriptors(properties)); + return properties; } function inMemoryEntitySetBaseMixin(item) { schemaMixin(item); diff --git a/dist/js/entity/set/enums.d.ts b/dist/js/entity/set/enums.d.ts index e0b2a425..30ed93b5 100644 --- a/dist/js/entity/set/enums.d.ts +++ b/dist/js/entity/set/enums.d.ts @@ -1,4 +1,4 @@ export declare const ENTITY_SET_TYPES: { - unordered: string; - ordered: string; + readonly unordered: "unordered"; + readonly ordered: "ordered"; }; diff --git a/dist/js/entity/set/factory.d.ts b/dist/js/entity/set/factory.d.ts index 818770f1..459a43b5 100644 --- a/dist/js/entity/set/factory.d.ts +++ b/dist/js/entity/set/factory.d.ts @@ -3,5 +3,5 @@ import { EntitySetSchema } from "@mat3ra/esse/dist/js/types"; import { InMemoryEntitySet } from "../set"; export declare const constructEntitySetFactoryByConfig: ({ entitySetCls, orderedEntitySetCls }: { entitySetCls?: typeof InMemoryEntitySet | undefined; - orderedEntitySetCls?: (typeof InMemoryEntitySet & import("./ordered/OrderedInMemoryEntityInSetMixin").OrderedInMemoryEntityInSetConstructor & import("./ordered/OrderedInMemoryEntitySetMixin").OrderedInMemoryEntitySetConstructor) | undefined; + orderedEntitySetCls?: typeof InMemoryEntitySet | undefined; }) => (config: AnyObject, entityCls: EntitySetSchema["entityCls"]) => InMemoryEntitySet; diff --git a/dist/js/entity/set/factory.js b/dist/js/entity/set/factory.js index 627e395a..777de633 100644 --- a/dist/js/entity/set/factory.js +++ b/dist/js/entity/set/factory.js @@ -3,8 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true }); exports.constructEntitySetFactoryByConfig = void 0; const set_1 = require("../set"); const enums_1 = require("./enums"); -const ordered_1 = require("./ordered"); -const constructEntitySetFactoryByConfig = ({ entitySetCls = set_1.InMemoryEntitySet, orderedEntitySetCls = ordered_1.OrderedInMemoryEntitySet }) => (config, entityCls) => { +const constructEntitySetFactoryByConfig = ({ entitySetCls = set_1.InMemoryEntitySet, orderedEntitySetCls = set_1.InMemoryEntitySet }) => (config, entityCls) => { const Cls = config.entitySetType === enums_1.ENTITY_SET_TYPES.ordered ? orderedEntitySetCls : entitySetCls; return new Cls({ ...config, diff --git a/dist/js/entity/set/mixins.d.ts b/dist/js/entity/set/mixins.d.ts index a5314582..961ade9d 100644 --- a/dist/js/entity/set/mixins.d.ts +++ b/dist/js/entity/set/mixins.d.ts @@ -1,3 +1,2 @@ -import InMemoryEntityInSetMixin from "./InMemoryEntityInSetMixin"; import InMemoryEntitySetMixin from "./InMemoryEntitySetMixin"; -export { InMemoryEntityInSetMixin, InMemoryEntitySetMixin }; +export { InMemoryEntitySetMixin }; diff --git a/dist/js/entity/set/mixins.js b/dist/js/entity/set/mixins.js index 4628b23d..38f51484 100644 --- a/dist/js/entity/set/mixins.js +++ b/dist/js/entity/set/mixins.js @@ -3,9 +3,6 @@ var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); -exports.InMemoryEntitySetMixin = exports.InMemoryEntityInSetMixin = void 0; -/* eslint-disable @typescript-eslint/no-explicit-any */ -const InMemoryEntityInSetMixin_1 = __importDefault(require("./InMemoryEntityInSetMixin")); -exports.InMemoryEntityInSetMixin = InMemoryEntityInSetMixin_1.default; +exports.InMemoryEntitySetMixin = void 0; const InMemoryEntitySetMixin_1 = __importDefault(require("./InMemoryEntitySetMixin")); exports.InMemoryEntitySetMixin = InMemoryEntitySetMixin_1.default; diff --git a/dist/js/entity/set/ordered.d.ts b/dist/js/entity/set/ordered.d.ts deleted file mode 100644 index e7d6a3c6..00000000 --- a/dist/js/entity/set/ordered.d.ts +++ /dev/null @@ -1,2 +0,0 @@ -import { InMemoryEntitySet } from "../set"; -export declare const OrderedInMemoryEntitySet: typeof InMemoryEntitySet & import("./ordered/OrderedInMemoryEntityInSetMixin").OrderedInMemoryEntityInSetConstructor & import("./ordered/OrderedInMemoryEntitySetMixin").OrderedInMemoryEntitySetConstructor; diff --git a/dist/js/entity/set/ordered.js b/dist/js/entity/set/ordered.js deleted file mode 100644 index a786b0c3..00000000 --- a/dist/js/entity/set/ordered.js +++ /dev/null @@ -1,6 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.OrderedInMemoryEntitySet = void 0; -const set_1 = require("../set"); -const mixins_1 = require("./ordered/mixins"); -exports.OrderedInMemoryEntitySet = (0, mixins_1.OrderedInMemoryEntitySetMixin)((0, mixins_1.OrderedInMemoryEntityInSetMixin)(set_1.InMemoryEntitySet)); diff --git a/dist/js/entity/set/ordered/OrderedInMemoryEntityInSetMixin.d.ts b/dist/js/entity/set/ordered/OrderedInMemoryEntityInSetMixin.d.ts index 96569d34..89a033aa 100644 --- a/dist/js/entity/set/ordered/OrderedInMemoryEntityInSetMixin.d.ts +++ b/dist/js/entity/set/ordered/OrderedInMemoryEntityInSetMixin.d.ts @@ -1,11 +1,11 @@ import type { Constructor } from "../../../utils/types"; import { type InMemoryEntity } from "../../in_memory"; -import type { InMemoryEntityInSet, InMemoryEntityInSetConstructor } from "../InMemoryEntityInSetMixin"; +import type { InMemoryEntityInSet } from "../InMemoryEntityInSetMixin"; export declare function orderedEntityInSetMixin(item: InMemoryEntity & InMemoryEntityInSet): { getIndexByIdInOrderedSet(setId: string): number; }; export type OrderedInMemoryEntityInSet = ReturnType; export type OrderedInMemoryEntityInSetConstructor = Constructor; -type Base = Constructor & InMemoryEntityInSetConstructor; +type Base = Constructor & Constructor; export default function OrderedInMemoryEntityInSetMixin(superclass: S): S & OrderedInMemoryEntityInSetConstructor; export {}; diff --git a/dist/js/generateSchemaMixin.js b/dist/js/generateSchemaMixin.js index 06774519..44a775ce 100644 --- a/dist/js/generateSchemaMixin.js +++ b/dist/js/generateSchemaMixin.js @@ -141,10 +141,13 @@ function generateMixinFromSchemaId(schemaId, outputPath, skipFields = [], from = // Extract schema name from title for import let schemaName; if (schema.title) { - // Convert title to proper schema name + // Split on spaces and hyphens so titles like "System in-set schema" become SystemInSetSchema, + // not SystemIn-setSchema (hyphens are not valid in TS identifiers). schemaName = schema.title .split(/\s+/) - .map((word) => word.charAt(0).toUpperCase() + word.slice(1)) + .flatMap((word) => word.split("-")) + .filter((segment) => segment.length > 0) + .map((segment) => segment.charAt(0).toUpperCase() + segment.slice(1)) .join(""); } else { diff --git a/dist/js/generated/HasConsistencyChecksSchemaMixin.js b/dist/js/generated/HasConsistencyChecksSchemaMixin.js index 5db5cf1e..a5f3e02c 100644 --- a/dist/js/generated/HasConsistencyChecksSchemaMixin.js +++ b/dist/js/generated/HasConsistencyChecksSchemaMixin.js @@ -5,7 +5,7 @@ function hasConsistencyChecksSchemaMixin(item) { // @ts-expect-error const properties = { get consistencyChecks() { - return this.prop("consistencyChecks"); + return this.prop("consistencyChecks", []); }, set consistencyChecks(value) { this.setProp("consistencyChecks", value); diff --git a/dist/js/generated/InSetSchemaMixin.d.ts b/dist/js/generated/InSetSchemaMixin.d.ts new file mode 100644 index 00000000..21c2022f --- /dev/null +++ b/dist/js/generated/InSetSchemaMixin.d.ts @@ -0,0 +1,5 @@ +import type { SystemInSetSchema } from "@mat3ra/esse/dist/js/types"; +import type { InMemoryEntity } from "../entity/in_memory"; +export type InSetSchemaMixin = SystemInSetSchema; +export type InSetInMemoryEntity = InMemoryEntity & InSetSchemaMixin; +export declare function inSetSchemaMixin(item: InMemoryEntity): asserts item is T & InSetSchemaMixin; diff --git a/dist/js/generated/InSetSchemaMixin.js b/dist/js/generated/InSetSchemaMixin.js new file mode 100644 index 00000000..d1a14a22 --- /dev/null +++ b/dist/js/generated/InSetSchemaMixin.js @@ -0,0 +1,15 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.inSetSchemaMixin = inSetSchemaMixin; +function inSetSchemaMixin(item) { + // @ts-expect-error + const properties = { + get inSet() { + return this.requiredProp("inSet"); + }, + set inSet(value) { + this.setProp("inSet", value); + }, + }; + Object.defineProperties(item, Object.getOwnPropertyDescriptors(properties)); +} diff --git a/dist/js/generated/TaggableSchemaMixin.js b/dist/js/generated/TaggableSchemaMixin.js index 86018a67..fb57c06a 100644 --- a/dist/js/generated/TaggableSchemaMixin.js +++ b/dist/js/generated/TaggableSchemaMixin.js @@ -5,7 +5,7 @@ function taggableSchemaMixin(item) { // @ts-expect-error const properties = { get tags() { - return this.prop("tags"); + return this.prop("tags", []); }, set tags(value) { this.setProp("tags", value); diff --git a/package-lock.json b/package-lock.json index 446598b3..3eab48e9 100644 --- a/package-lock.json +++ b/package-lock.json @@ -33,7 +33,7 @@ "@babel/register": "^7.25.7", "@babel/runtime-corejs3": "^7.25.7", "@exabyte-io/eslint-config": "^2025.1.15-0", - "@mat3ra/esse": "git+https://github.com/Exabyte-io/esse#75ec994043d2dfadfff0c36a23ec9f6fbcf214e4", + "@mat3ra/esse": "git+https://github.com/Exabyte-io/esse#b5a1c0404a9f83b3189e2f1a1560a04257026331", "@mat3ra/tsconfig": "2024.6.3-0", "@types/chai": "^4.3.20", "@types/crypto-js": "^4.2.2", @@ -103,13 +103,13 @@ } }, "node_modules/@babel/cli": { - "version": "7.27.0", - "resolved": "https://registry.npmjs.org/@babel/cli/-/cli-7.27.0.tgz", - "integrity": "sha512-bZfxn8DRxwiVzDO5CEeV+7IqXeCkzI4yYnrQbpwjT76CUyossQc6RYE7n+xfm0/2k40lPaCpW0FhxYs7EBAetw==", + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/cli/-/cli-7.28.6.tgz", + "integrity": "sha512-6EUNcuBbNkj08Oj4gAZ+BUU8yLCgKzgVX4gaTh09Ya2C8ICM4P+G30g4m3akRxSYAp3A/gnWchrNst7px4/nUQ==", "dev": true, "license": "MIT", "dependencies": { - "@jridgewell/trace-mapping": "^0.3.25", + "@jridgewell/trace-mapping": "^0.3.28", "commander": "^6.2.0", "convert-source-map": "^2.0.0", "fs-readdir-recursive": "^1.1.0", @@ -142,24 +142,24 @@ } }, "node_modules/@babel/code-frame": { - "version": "7.26.2", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.26.2.tgz", - "integrity": "sha512-RJlIHRueQgwWitWgF8OdFYGZX328Ax5BCemNGlqHfplnRT9ESi8JkFlvaVYbS+UubVY6dpv87Fs2u5M29iNFVQ==", + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.29.0.tgz", + "integrity": "sha512-9NhCeYjq9+3uxgdtp20LSiJXJvN0FeCtNGpJxuMFZ1Kv3cWUNb6DOhJwUvcVCzKGR66cw4njwM6hrJLqgOwbcw==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-validator-identifier": "^7.25.9", + "@babel/helper-validator-identifier": "^7.28.5", "js-tokens": "^4.0.0", - "picocolors": "^1.0.0" + "picocolors": "^1.1.1" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/compat-data": { - "version": "7.26.8", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.26.8.tgz", - "integrity": "sha512-oH5UPLMWR3L2wEFLnFJ1TZXqHufiTKAiLfqw5zkhS4dKXLJ10yVztfil/twG8EDTA4F/tvVNw9nOl4ZMslB8rQ==", + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.29.0.tgz", + "integrity": "sha512-T1NCJqT/j9+cn8fvkt7jtwbLBfLC/1y1c7NtCeXFRgzGTsafi68MRv8yzkYSapBnFA6L3U2VSc02ciDzoAJhJg==", "dev": true, "license": "MIT", "engines": { @@ -167,22 +167,22 @@ } }, "node_modules/@babel/core": { - "version": "7.26.10", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.26.10.tgz", - "integrity": "sha512-vMqyb7XCDMPvJFFOaT9kxtiRh42GwlZEg1/uIgtZshS5a/8OaduUfCi7kynKgc3Tw/6Uo2D+db9qBttghhmxwQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@ampproject/remapping": "^2.2.0", - "@babel/code-frame": "^7.26.2", - "@babel/generator": "^7.26.10", - "@babel/helper-compilation-targets": "^7.26.5", - "@babel/helper-module-transforms": "^7.26.0", - "@babel/helpers": "^7.26.10", - "@babel/parser": "^7.26.10", - "@babel/template": "^7.26.9", - "@babel/traverse": "^7.26.10", - "@babel/types": "^7.26.10", + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.29.0.tgz", + "integrity": "sha512-CGOfOJqWjg2qW/Mb6zNsDm+u5vFQ8DxXfbM09z69p5Z6+mE1ikP2jUXw+j42Pf1XTYED2Rni5f95npYeuwMDQA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.29.0", + "@babel/generator": "^7.29.0", + "@babel/helper-compilation-targets": "^7.28.6", + "@babel/helper-module-transforms": "^7.28.6", + "@babel/helpers": "^7.28.6", + "@babel/parser": "^7.29.0", + "@babel/template": "^7.28.6", + "@babel/traverse": "^7.29.0", + "@babel/types": "^7.29.0", + "@jridgewell/remapping": "^2.3.5", "convert-source-map": "^2.0.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.2", @@ -207,9 +207,9 @@ } }, "node_modules/@babel/eslint-parser": { - "version": "7.27.0", - "resolved": "https://registry.npmjs.org/@babel/eslint-parser/-/eslint-parser-7.27.0.tgz", - "integrity": "sha512-dtnzmSjXfgL/HDgMcmsLSzyGbEosi4DrGWoCNfuI+W4IkVJw6izpTe7LtOdwAXnkDqw5yweboYCTkM2rQizCng==", + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/eslint-parser/-/eslint-parser-7.28.6.tgz", + "integrity": "sha512-QGmsKi2PBO/MHSQk+AAgA9R6OHQr+VqnniFE0eMWZcVcfBZoA2dKn2hUsl3Csg/Plt9opRUWdY7//VXsrIlEiA==", "dev": true, "license": "MIT", "dependencies": { @@ -235,16 +235,16 @@ } }, "node_modules/@babel/generator": { - "version": "7.27.0", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.27.0.tgz", - "integrity": "sha512-VybsKvpiN1gU1sdMZIp7FcqphVVKEwcuj02x73uvcHE0PTihx1nlBcowYWhDwjpoAXRv43+gDzyggGnn1XZhVw==", + "version": "7.29.1", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.29.1.tgz", + "integrity": "sha512-qsaF+9Qcm2Qv8SRIMMscAvG4O3lJ0F1GuMo5HR/Bp02LopNgnZBC/EkbevHFeGs4ls/oPz9v+Bsmzbkbe+0dUw==", "dev": true, "license": "MIT", "dependencies": { - "@babel/parser": "^7.27.0", - "@babel/types": "^7.27.0", - "@jridgewell/gen-mapping": "^0.3.5", - "@jridgewell/trace-mapping": "^0.3.25", + "@babel/parser": "^7.29.0", + "@babel/types": "^7.29.0", + "@jridgewell/gen-mapping": "^0.3.12", + "@jridgewell/trace-mapping": "^0.3.28", "jsesc": "^3.0.2" }, "engines": { @@ -252,27 +252,27 @@ } }, "node_modules/@babel/helper-annotate-as-pure": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.25.9.tgz", - "integrity": "sha512-gv7320KBUFJz1RnylIg5WWYPRXKZ884AGkYpgpWW02TH66Dl+HaC1t1CKd0z3R4b6hdYEcmrNZHUmfCP+1u3/g==", + "version": "7.27.3", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.27.3.tgz", + "integrity": "sha512-fXSwMQqitTGeHLBC08Eq5yXz2m37E4pJX1qAU1+2cNedz/ifv/bVXft90VeSav5nFO61EcNgwr0aJxbyPaWBPg==", "dev": true, "license": "MIT", "dependencies": { - "@babel/types": "^7.25.9" + "@babel/types": "^7.27.3" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-compilation-targets": { - "version": "7.26.5", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.26.5.tgz", - "integrity": "sha512-IXuyn5EkouFJscIDuFF5EsiSolseme1s0CZB+QxVugqJLYmKdxI1VfIBOst0SUu4rnk2Z7kqTwmoO1lp3HIfnA==", + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.28.6.tgz", + "integrity": "sha512-JYtls3hqi15fcx5GaSNL7SCTJ2MNmjrkHXg4FSpOA/grxK8KwyZ5bubHsCq8FXCkua6xhuaaBit+3b7+VZRfcA==", "dev": true, "license": "MIT", "dependencies": { - "@babel/compat-data": "^7.26.5", - "@babel/helper-validator-option": "^7.25.9", + "@babel/compat-data": "^7.28.6", + "@babel/helper-validator-option": "^7.27.1", "browserslist": "^4.24.0", "lru-cache": "^5.1.1", "semver": "^6.3.1" @@ -291,18 +291,18 @@ } }, "node_modules/@babel/helper-create-class-features-plugin": { - "version": "7.27.0", - "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.27.0.tgz", - "integrity": "sha512-vSGCvMecvFCd/BdpGlhpXYNhhC4ccxyvQWpbGL4CWbvfEoLFWUZuSuf7s9Aw70flgQF+6vptvgK2IfOnKlRmBg==", + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.28.6.tgz", + "integrity": "sha512-dTOdvsjnG3xNT9Y0AUg1wAl38y+4Rl4sf9caSQZOXdNqVn+H+HbbJ4IyyHaIqNR6SW9oJpA/RuRjsjCw2IdIow==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-annotate-as-pure": "^7.25.9", - "@babel/helper-member-expression-to-functions": "^7.25.9", - "@babel/helper-optimise-call-expression": "^7.25.9", - "@babel/helper-replace-supers": "^7.26.5", - "@babel/helper-skip-transparent-expression-wrappers": "^7.25.9", - "@babel/traverse": "^7.27.0", + "@babel/helper-annotate-as-pure": "^7.27.3", + "@babel/helper-member-expression-to-functions": "^7.28.5", + "@babel/helper-optimise-call-expression": "^7.27.1", + "@babel/helper-replace-supers": "^7.28.6", + "@babel/helper-skip-transparent-expression-wrappers": "^7.27.1", + "@babel/traverse": "^7.28.6", "semver": "^6.3.1" }, "engines": { @@ -322,14 +322,14 @@ } }, "node_modules/@babel/helper-create-regexp-features-plugin": { - "version": "7.26.3", - "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.26.3.tgz", - "integrity": "sha512-G7ZRb40uUgdKOQqPLjfD12ZmGA54PzqDFUv2BKImnC9QIfGhIHKvVML0oN8IUiDq4iRqpq74ABpvOaerfWdong==", + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.28.5.tgz", + "integrity": "sha512-N1EhvLtHzOvj7QQOUCCS3NrPJP8c5W6ZXCHDn7Yialuy1iu4r5EmIYkXlKNqT99Ciw+W0mDqWoR6HWMZlFP3hw==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-annotate-as-pure": "^7.25.9", - "regexpu-core": "^6.2.0", + "@babel/helper-annotate-as-pure": "^7.27.3", + "regexpu-core": "^6.3.1", "semver": "^6.3.1" }, "engines": { @@ -349,17 +349,17 @@ } }, "node_modules/@babel/helper-define-polyfill-provider": { - "version": "0.6.4", - "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.6.4.tgz", - "integrity": "sha512-jljfR1rGnXXNWnmQg2K3+bvhkxB51Rl32QRaOTuwwjviGrHzIbSc8+x9CpraDtbT7mfyjXObULP4w/adunNwAw==", + "version": "0.6.8", + "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.6.8.tgz", + "integrity": "sha512-47UwBLPpQi1NoWzLuHNjRoHlYXMwIJoBf7MFou6viC/sIHWYygpvr0B6IAyh5sBdA2nr2LPIRww8lfaUVQINBA==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-compilation-targets": "^7.22.6", - "@babel/helper-plugin-utils": "^7.22.5", - "debug": "^4.1.1", + "@babel/helper-compilation-targets": "^7.28.6", + "@babel/helper-plugin-utils": "^7.28.6", + "debug": "^4.4.3", "lodash.debounce": "^4.0.8", - "resolve": "^1.14.2" + "resolve": "^1.22.11" }, "peerDependencies": { "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" @@ -378,44 +378,54 @@ "node": ">=6.9.0" } }, + "node_modules/@babel/helper-globals": { + "version": "7.28.0", + "resolved": "https://registry.npmjs.org/@babel/helper-globals/-/helper-globals-7.28.0.tgz", + "integrity": "sha512-+W6cISkXFa1jXsDEdYA8HeevQT/FULhxzR99pxphltZcVaugps53THCeiWA8SguxxpSp3gKPiuYfSWopkLQ4hw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, "node_modules/@babel/helper-member-expression-to-functions": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.25.9.tgz", - "integrity": "sha512-wbfdZ9w5vk0C0oyHqAJbc62+vet5prjj01jjJ8sKn3j9h3MQQlflEdXYvuqRWjHnM12coDEqiC1IRCi0U/EKwQ==", + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.28.5.tgz", + "integrity": "sha512-cwM7SBRZcPCLgl8a7cY0soT1SptSzAlMH39vwiRpOQkJlh53r5hdHwLSCZpQdVLT39sZt+CRpNwYG4Y2v77atg==", "dev": true, "license": "MIT", "dependencies": { - "@babel/traverse": "^7.25.9", - "@babel/types": "^7.25.9" + "@babel/traverse": "^7.28.5", + "@babel/types": "^7.28.5" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-module-imports": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.25.9.tgz", - "integrity": "sha512-tnUA4RsrmflIM6W6RFTLFSXITtl0wKjgpnLgXyowocVPrbYrLUXSBXDgTs8BlbmIzIdlBySRQjINYs2BAkiLtw==", + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.28.6.tgz", + "integrity": "sha512-l5XkZK7r7wa9LucGw9LwZyyCUscb4x37JWTPz7swwFE/0FMQAGpiWUZn8u9DzkSBWEcK25jmvubfpw2dnAMdbw==", "dev": true, "license": "MIT", "dependencies": { - "@babel/traverse": "^7.25.9", - "@babel/types": "^7.25.9" + "@babel/traverse": "^7.28.6", + "@babel/types": "^7.28.6" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-module-transforms": { - "version": "7.26.0", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.26.0.tgz", - "integrity": "sha512-xO+xu6B5K2czEnQye6BHA7DolFFmS3LB7stHZFaOLb1pAwO1HWLS8fXA+eh0A2yIvltPVmx3eNNDBJA2SLHXFw==", + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.28.6.tgz", + "integrity": "sha512-67oXFAYr2cDLDVGLXTEABjdBJZ6drElUSI7WKp70NrpyISso3plG9SAGEF6y7zbha/wOzUByWWTJvEDVNIUGcA==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-module-imports": "^7.25.9", - "@babel/helper-validator-identifier": "^7.25.9", - "@babel/traverse": "^7.25.9" + "@babel/helper-module-imports": "^7.28.6", + "@babel/helper-validator-identifier": "^7.28.5", + "@babel/traverse": "^7.28.6" }, "engines": { "node": ">=6.9.0" @@ -425,22 +435,22 @@ } }, "node_modules/@babel/helper-optimise-call-expression": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.25.9.tgz", - "integrity": "sha512-FIpuNaz5ow8VyrYcnXQTDRGvV6tTjkNtCK/RYNDXGSLlUD6cBuQTSw43CShGxjvfBTfcUA/r6UhUCbtYqkhcuQ==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.27.1.tgz", + "integrity": "sha512-URMGH08NzYFhubNSGJrpUEphGKQwMQYBySzat5cAByY1/YgIRkULnIy3tAMeszlL/so2HbeilYloUmSpd7GdVw==", "dev": true, "license": "MIT", "dependencies": { - "@babel/types": "^7.25.9" + "@babel/types": "^7.27.1" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-plugin-utils": { - "version": "7.26.5", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.26.5.tgz", - "integrity": "sha512-RS+jZcRdZdRFzMyr+wcsaqOmld1/EqTghfaBGQQd/WnRdzdlvSZ//kF7U8VQTxf1ynZ4cjUcYgjVGx13ewNPMg==", + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.28.6.tgz", + "integrity": "sha512-S9gzZ/bz83GRysI7gAD4wPT/AI3uCnY+9xn+Mx/KPs2JwHJIz1W8PZkg2cqyt3RNOBM8ejcXhV6y8Og7ly/Dug==", "dev": true, "license": "MIT", "engines": { @@ -448,15 +458,15 @@ } }, "node_modules/@babel/helper-remap-async-to-generator": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.25.9.tgz", - "integrity": "sha512-IZtukuUeBbhgOcaW2s06OXTzVNJR0ybm4W5xC1opWFFJMZbwRj5LCk+ByYH7WdZPZTt8KnFwA8pvjN2yqcPlgw==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.27.1.tgz", + "integrity": "sha512-7fiA521aVw8lSPeI4ZOD3vRFkoqkJcS+z4hFo82bFSH/2tNd6eJ5qCVMS5OzDmZh/kaHQeBaeyxK6wljcPtveA==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-annotate-as-pure": "^7.25.9", - "@babel/helper-wrap-function": "^7.25.9", - "@babel/traverse": "^7.25.9" + "@babel/helper-annotate-as-pure": "^7.27.1", + "@babel/helper-wrap-function": "^7.27.1", + "@babel/traverse": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -466,15 +476,15 @@ } }, "node_modules/@babel/helper-replace-supers": { - "version": "7.26.5", - "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.26.5.tgz", - "integrity": "sha512-bJ6iIVdYX1YooY2X7w1q6VITt+LnUILtNk7zT78ykuwStx8BauCzxvFqFaHjOpW1bVnSUM1PN1f0p5P21wHxvg==", + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.28.6.tgz", + "integrity": "sha512-mq8e+laIk94/yFec3DxSjCRD2Z0TAjhVbEJY3UQrlwVo15Lmt7C2wAUbK4bjnTs4APkwsYLTahXRraQXhb1WCg==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-member-expression-to-functions": "^7.25.9", - "@babel/helper-optimise-call-expression": "^7.25.9", - "@babel/traverse": "^7.26.5" + "@babel/helper-member-expression-to-functions": "^7.28.5", + "@babel/helper-optimise-call-expression": "^7.27.1", + "@babel/traverse": "^7.28.6" }, "engines": { "node": ">=6.9.0" @@ -484,23 +494,23 @@ } }, "node_modules/@babel/helper-skip-transparent-expression-wrappers": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.25.9.tgz", - "integrity": "sha512-K4Du3BFa3gvyhzgPcntrkDgZzQaq6uozzcpGbOO1OEJaI+EJdqWIMTLgFgQf6lrfiDFo5FU+BxKepI9RmZqahA==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.27.1.tgz", + "integrity": "sha512-Tub4ZKEXqbPjXgWLl2+3JpQAYBJ8+ikpQ2Ocj/q/r0LwE3UhENh7EUabyHjz2kCEsrRY83ew2DQdHluuiDQFzg==", "dev": true, "license": "MIT", "dependencies": { - "@babel/traverse": "^7.25.9", - "@babel/types": "^7.25.9" + "@babel/traverse": "^7.27.1", + "@babel/types": "^7.27.1" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-string-parser": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.25.9.tgz", - "integrity": "sha512-4A/SCr/2KLd5jrtOMFzaKjVtAei3+2r/NChoBNoZ3EyP/+GlhoaEGoWOZUmFmoITP7zOJyHIMm+DYRd8o3PvHA==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.27.1.tgz", + "integrity": "sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==", "dev": true, "license": "MIT", "engines": { @@ -508,9 +518,9 @@ } }, "node_modules/@babel/helper-validator-identifier": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.25.9.tgz", - "integrity": "sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ==", + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.28.5.tgz", + "integrity": "sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q==", "dev": true, "license": "MIT", "engines": { @@ -518,9 +528,9 @@ } }, "node_modules/@babel/helper-validator-option": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.25.9.tgz", - "integrity": "sha512-e/zv1co8pp55dNdEcCynfj9X7nyUKUXoUEwfXqaZt0omVOmDe9oOTdKStH4GmAw6zxMFs50ZayuMfHDKlO7Tfw==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.27.1.tgz", + "integrity": "sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg==", "dev": true, "license": "MIT", "engines": { @@ -528,29 +538,29 @@ } }, "node_modules/@babel/helper-wrap-function": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.25.9.tgz", - "integrity": "sha512-ETzz9UTjQSTmw39GboatdymDq4XIQbR8ySgVrylRhPOFpsd+JrKHIuF0de7GCWmem+T4uC5z7EZguod7Wj4A4g==", + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.28.6.tgz", + "integrity": "sha512-z+PwLziMNBeSQJonizz2AGnndLsP2DeGHIxDAn+wdHOGuo4Fo1x1HBPPXeE9TAOPHNNWQKCSlA2VZyYyyibDnQ==", "dev": true, "license": "MIT", "dependencies": { - "@babel/template": "^7.25.9", - "@babel/traverse": "^7.25.9", - "@babel/types": "^7.25.9" + "@babel/template": "^7.28.6", + "@babel/traverse": "^7.28.6", + "@babel/types": "^7.28.6" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helpers": { - "version": "7.27.0", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.27.0.tgz", - "integrity": "sha512-U5eyP/CTFPuNE3qk+WZMxFkp/4zUzdceQlfzf7DdGdhp+Fezd7HD+i8Y24ZuTMKX3wQBld449jijbGq6OdGNQg==", + "version": "7.29.2", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.29.2.tgz", + "integrity": "sha512-HoGuUs4sCZNezVEKdVcwqmZN8GoHirLUcLaYVNBK2J0DadGtdcqgr3BCbvH8+XUo4NGjNl3VOtSjEKNzqfFgKw==", "dev": true, "license": "MIT", "dependencies": { - "@babel/template": "^7.27.0", - "@babel/types": "^7.27.0" + "@babel/template": "^7.28.6", + "@babel/types": "^7.29.0" }, "engines": { "node": ">=6.9.0" @@ -572,13 +582,13 @@ } }, "node_modules/@babel/parser": { - "version": "7.27.0", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.27.0.tgz", - "integrity": "sha512-iaepho73/2Pz7w2eMS0Q5f83+0RKI7i4xmiYeBmDzfRVbQtTOG7Ts0S4HzJVsTMGI9keU8rNfuZr8DKfSt7Yyg==", + "version": "7.29.2", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.29.2.tgz", + "integrity": "sha512-4GgRzy/+fsBa72/RZVJmGKPmZu9Byn8o4MoLpmNe1m8ZfYnz5emHLQz3U4gLud6Zwl0RZIcgiLD7Uq7ySFuDLA==", "dev": true, "license": "MIT", "dependencies": { - "@babel/types": "^7.27.0" + "@babel/types": "^7.29.0" }, "bin": { "parser": "bin/babel-parser.js" @@ -588,14 +598,14 @@ } }, "node_modules/@babel/plugin-bugfix-firefox-class-in-computed-class-key": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-firefox-class-in-computed-class-key/-/plugin-bugfix-firefox-class-in-computed-class-key-7.25.9.tgz", - "integrity": "sha512-ZkRyVkThtxQ/J6nv3JFYv1RYY+JT5BvU0y3k5bWrmuG4woXypRa4PXmm9RhOwodRkYFWqC0C0cqcJ4OqR7kW+g==", + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-firefox-class-in-computed-class-key/-/plugin-bugfix-firefox-class-in-computed-class-key-7.28.5.tgz", + "integrity": "sha512-87GDMS3tsmMSi/3bWOte1UblL+YUTFMV8SZPZ2eSEL17s74Cw/l63rR6NmGVKMYW2GYi85nE+/d6Hw5N0bEk2Q==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.25.9", - "@babel/traverse": "^7.25.9" + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/traverse": "^7.28.5" }, "engines": { "node": ">=6.9.0" @@ -605,13 +615,13 @@ } }, "node_modules/@babel/plugin-bugfix-safari-class-field-initializer-scope": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-class-field-initializer-scope/-/plugin-bugfix-safari-class-field-initializer-scope-7.25.9.tgz", - "integrity": "sha512-MrGRLZxLD/Zjj0gdU15dfs+HH/OXvnw/U4jJD8vpcP2CJQapPEv1IWwjc/qMg7ItBlPwSv1hRBbb7LeuANdcnw==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-class-field-initializer-scope/-/plugin-bugfix-safari-class-field-initializer-scope-7.27.1.tgz", + "integrity": "sha512-qNeq3bCKnGgLkEXUuFry6dPlGfCdQNZbn7yUAPCInwAJHMU7THJfrBSozkcWq5sNM6RcF3S8XyQL2A52KNR9IA==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.25.9" + "@babel/helper-plugin-utils": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -621,13 +631,13 @@ } }, "node_modules/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.25.9.tgz", - "integrity": "sha512-2qUwwfAFpJLZqxd02YW9btUCZHl+RFvdDkNfZwaIJrvB8Tesjsk8pEQkTvGwZXLqXUx/2oyY3ySRhm6HOXuCug==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.27.1.tgz", + "integrity": "sha512-g4L7OYun04N1WyqMNjldFwlfPCLVkgB54A/YCXICZYBsvJJE3kByKv9c9+R/nAfmIfjl2rKYLNyMHboYbZaWaA==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.25.9" + "@babel/helper-plugin-utils": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -637,15 +647,15 @@ } }, "node_modules/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.25.9.tgz", - "integrity": "sha512-6xWgLZTJXwilVjlnV7ospI3xi+sl8lN8rXXbBD6vYn3UYDlGsag8wrZkKcSI8G6KgqKP7vNFaDgeDnfAABq61g==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.27.1.tgz", + "integrity": "sha512-oO02gcONcD5O1iTLi/6frMJBIwWEHceWGSGqrpCmEL8nogiS6J9PBlE48CaK20/Jx1LuRml9aDftLgdjXT8+Cw==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.25.9", - "@babel/helper-skip-transparent-expression-wrappers": "^7.25.9", - "@babel/plugin-transform-optional-chaining": "^7.25.9" + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/helper-skip-transparent-expression-wrappers": "^7.27.1", + "@babel/plugin-transform-optional-chaining": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -655,14 +665,14 @@ } }, "node_modules/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/-/plugin-bugfix-v8-static-class-fields-redefine-readonly-7.25.9.tgz", - "integrity": "sha512-aLnMXYPnzwwqhYSCyXfKkIkYgJ8zv9RK+roo9DkTXz38ynIhd9XCbN08s3MGvqL2MYGVUGdRQLL/JqBIeJhJBg==", + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/-/plugin-bugfix-v8-static-class-fields-redefine-readonly-7.28.6.tgz", + "integrity": "sha512-a0aBScVTlNaiUe35UtfxAN7A/tehvvG4/ByO6+46VPKTRSlfnAFsgKy0FUh+qAkQrDTmhDkT+IBOKlOoMUxQ0g==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.25.9", - "@babel/traverse": "^7.25.9" + "@babel/helper-plugin-utils": "^7.28.6", + "@babel/traverse": "^7.28.6" }, "engines": { "node": ">=6.9.0" @@ -1010,13 +1020,13 @@ } }, "node_modules/@babel/plugin-syntax-import-assertions": { - "version": "7.26.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.26.0.tgz", - "integrity": "sha512-QCWT5Hh830hK5EQa7XzuqIkQU9tT/whqbDz7kuaZMHFl1inRRg7JnuAEOQ0Ur0QUl0NufCk1msK2BeY79Aj/eg==", + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.28.6.tgz", + "integrity": "sha512-pSJUpFHdx9z5nqTSirOCMtYVP2wFgoWhP0p3g8ONK/4IHhLIBd0B9NYqAvIUAhq+OkhO4VM1tENCt0cjlsNShw==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.25.9" + "@babel/helper-plugin-utils": "^7.28.6" }, "engines": { "node": ">=6.9.0" @@ -1026,13 +1036,13 @@ } }, "node_modules/@babel/plugin-syntax-import-attributes": { - "version": "7.26.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.26.0.tgz", - "integrity": "sha512-e2dttdsJ1ZTpi3B9UYGLw41hifAubg19AtCu/2I/F1QNVclOBr1dYpTdmdyZ84Xiz43BS/tCUkMAZNLv12Pi+A==", + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.28.6.tgz", + "integrity": "sha512-jiLC0ma9XkQT3TKJ9uYvlakm66Pamywo+qwL+oL8HJOvc6TWdZXVfhqJr8CCzbSGUAbDOzlGHJC1U+vRfLQDvw==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.25.9" + "@babel/helper-plugin-utils": "^7.28.6" }, "engines": { "node": ">=6.9.0" @@ -1055,13 +1065,13 @@ } }, "node_modules/@babel/plugin-syntax-jsx": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.25.9.tgz", - "integrity": "sha512-ld6oezHQMZsZfp6pWtbjaNDF2tiiCYYDqQszHt5VV437lewP9aSi2Of99CK0D0XB21k7FLgnLcmQKyKzynfeAA==", + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.28.6.tgz", + "integrity": "sha512-wgEmr06G6sIpqr8YDwA2dSRTE3bJ+V0IfpzfSY3Lfgd7YWOaAdlykvJi13ZKBt8cZHfgH1IXN+CL656W3uUa4w==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.25.9" + "@babel/helper-plugin-utils": "^7.28.6" }, "engines": { "node": ">=6.9.0" @@ -1181,13 +1191,13 @@ } }, "node_modules/@babel/plugin-syntax-typescript": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.25.9.tgz", - "integrity": "sha512-hjMgRy5hb8uJJjUcdWunWVcoi9bGpJp8p5Ol1229PoN6aytsLwNMgmdftO23wnCLMfVmTwZDWMPNq/D1SY60JQ==", + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.28.6.tgz", + "integrity": "sha512-+nDNmQye7nlnuuHDboPbGm00Vqg3oO8niRRL27/4LYHUsHYh0zJ1xWOz0uRwNFmM1Avzk8wZbc6rdiYhomzv/A==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.25.9" + "@babel/helper-plugin-utils": "^7.28.6" }, "engines": { "node": ">=6.9.0" @@ -1213,13 +1223,13 @@ } }, "node_modules/@babel/plugin-transform-arrow-functions": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.25.9.tgz", - "integrity": "sha512-6jmooXYIwn9ca5/RylZADJ+EnSxVUS5sjeJ9UPk6RWRzXCmOJCy6dqItPJFpw2cuCangPK4OYr5uhGKcmrm5Qg==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.27.1.tgz", + "integrity": "sha512-8Z4TGic6xW70FKThA5HYEKKyBpOOsucTOD1DjU3fZxDg+K3zBJcXMFnt/4yQiZnf5+MiOMSXQ9PaEK/Ilh1DeA==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.25.9" + "@babel/helper-plugin-utils": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -1229,15 +1239,15 @@ } }, "node_modules/@babel/plugin-transform-async-generator-functions": { - "version": "7.26.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.26.8.tgz", - "integrity": "sha512-He9Ej2X7tNf2zdKMAGOsmg2MrFc+hfoAhd3po4cWfo/NWjzEAKa0oQruj1ROVUdl0e6fb6/kE/G3SSxE0lRJOg==", + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.29.0.tgz", + "integrity": "sha512-va0VdWro4zlBr2JsXC+ofCPB2iG12wPtVGTWFx2WLDOM3nYQZZIGP82qku2eW/JR83sD+k2k+CsNtyEbUqhU6w==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.26.5", - "@babel/helper-remap-async-to-generator": "^7.25.9", - "@babel/traverse": "^7.26.8" + "@babel/helper-plugin-utils": "^7.28.6", + "@babel/helper-remap-async-to-generator": "^7.27.1", + "@babel/traverse": "^7.29.0" }, "engines": { "node": ">=6.9.0" @@ -1247,15 +1257,15 @@ } }, "node_modules/@babel/plugin-transform-async-to-generator": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.25.9.tgz", - "integrity": "sha512-NT7Ejn7Z/LjUH0Gv5KsBCxh7BH3fbLTV0ptHvpeMvrt3cPThHfJfst9Wrb7S8EvJ7vRTFI7z+VAvFVEQn/m5zQ==", + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.28.6.tgz", + "integrity": "sha512-ilTRcmbuXjsMmcZ3HASTe4caH5Tpo93PkTxF9oG2VZsSWsahydmcEHhix9Ik122RcTnZnUzPbmux4wh1swfv7g==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-module-imports": "^7.25.9", - "@babel/helper-plugin-utils": "^7.25.9", - "@babel/helper-remap-async-to-generator": "^7.25.9" + "@babel/helper-module-imports": "^7.28.6", + "@babel/helper-plugin-utils": "^7.28.6", + "@babel/helper-remap-async-to-generator": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -1265,13 +1275,13 @@ } }, "node_modules/@babel/plugin-transform-block-scoped-functions": { - "version": "7.26.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.26.5.tgz", - "integrity": "sha512-chuTSY+hq09+/f5lMj8ZSYgCFpppV2CbYrhNFJ1BFoXpiWPnnAb7R0MqrafCpN8E1+YRrtM1MXZHJdIx8B6rMQ==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.27.1.tgz", + "integrity": "sha512-cnqkuOtZLapWYZUYM5rVIdv1nXYuFVIltZ6ZJ7nIj585QsjKM5dhL2Fu/lICXZ1OyIAFc7Qy+bvDAtTXqGrlhg==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.26.5" + "@babel/helper-plugin-utils": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -1281,13 +1291,13 @@ } }, "node_modules/@babel/plugin-transform-block-scoping": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.25.9.tgz", - "integrity": "sha512-1F05O7AYjymAtqbsFETboN1NvBdcnzMerO+zlMyJBEz6WkMdejvGWw9p05iTSjC85RLlBseHHQpYaM4gzJkBGg==", + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.28.6.tgz", + "integrity": "sha512-tt/7wOtBmwHPNMPu7ax4pdPz6shjFrmHDghvNC+FG9Qvj7D6mJcoRQIF5dy4njmxR941l6rgtvfSB2zX3VlUIw==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.25.9" + "@babel/helper-plugin-utils": "^7.28.6" }, "engines": { "node": ">=6.9.0" @@ -1297,14 +1307,14 @@ } }, "node_modules/@babel/plugin-transform-class-properties": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.25.9.tgz", - "integrity": "sha512-bbMAII8GRSkcd0h0b4X+36GksxuheLFjP65ul9w6C3KgAamI3JqErNgSrosX6ZPj+Mpim5VvEbawXxJCyEUV3Q==", + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.28.6.tgz", + "integrity": "sha512-dY2wS3I2G7D697VHndN91TJr8/AAfXQNt5ynCTI/MpxMsSzHp+52uNivYT5wCPax3whc47DR8Ba7cmlQMg24bw==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.25.9", - "@babel/helper-plugin-utils": "^7.25.9" + "@babel/helper-create-class-features-plugin": "^7.28.6", + "@babel/helper-plugin-utils": "^7.28.6" }, "engines": { "node": ">=6.9.0" @@ -1314,14 +1324,14 @@ } }, "node_modules/@babel/plugin-transform-class-static-block": { - "version": "7.26.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.26.0.tgz", - "integrity": "sha512-6J2APTs7BDDm+UMqP1useWqhcRAXo0WIoVj26N7kPFB6S73Lgvyka4KTZYIxtgYXiN5HTyRObA72N2iu628iTQ==", + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.28.6.tgz", + "integrity": "sha512-rfQ++ghVwTWTqQ7w8qyDxL1XGihjBss4CmTgGRCTAC9RIbhVpyp4fOeZtta0Lbf+dTNIVJer6ych2ibHwkZqsQ==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.25.9", - "@babel/helper-plugin-utils": "^7.25.9" + "@babel/helper-create-class-features-plugin": "^7.28.6", + "@babel/helper-plugin-utils": "^7.28.6" }, "engines": { "node": ">=6.9.0" @@ -1331,18 +1341,18 @@ } }, "node_modules/@babel/plugin-transform-classes": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.25.9.tgz", - "integrity": "sha512-mD8APIXmseE7oZvZgGABDyM34GUmK45Um2TXiBUt7PnuAxrgoSVf123qUzPxEr/+/BHrRn5NMZCdE2m/1F8DGg==", + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.28.6.tgz", + "integrity": "sha512-EF5KONAqC5zAqT783iMGuM2ZtmEBy+mJMOKl2BCvPZ2lVrwvXnB6o+OBWCS+CoeCCpVRF2sA2RBKUxvT8tQT5Q==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-annotate-as-pure": "^7.25.9", - "@babel/helper-compilation-targets": "^7.25.9", - "@babel/helper-plugin-utils": "^7.25.9", - "@babel/helper-replace-supers": "^7.25.9", - "@babel/traverse": "^7.25.9", - "globals": "^11.1.0" + "@babel/helper-annotate-as-pure": "^7.27.3", + "@babel/helper-compilation-targets": "^7.28.6", + "@babel/helper-globals": "^7.28.0", + "@babel/helper-plugin-utils": "^7.28.6", + "@babel/helper-replace-supers": "^7.28.6", + "@babel/traverse": "^7.28.6" }, "engines": { "node": ">=6.9.0" @@ -1352,14 +1362,14 @@ } }, "node_modules/@babel/plugin-transform-computed-properties": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.25.9.tgz", - "integrity": "sha512-HnBegGqXZR12xbcTHlJ9HGxw1OniltT26J5YpfruGqtUHlz/xKf/G2ak9e+t0rVqrjXa9WOhvYPz1ERfMj23AA==", + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.28.6.tgz", + "integrity": "sha512-bcc3k0ijhHbc2lEfpFHgx7eYw9KNXqOerKWfzbxEHUGKnS3sz9C4CNL9OiFN1297bDNfUiSO7DaLzbvHQQQ1BQ==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.25.9", - "@babel/template": "^7.25.9" + "@babel/helper-plugin-utils": "^7.28.6", + "@babel/template": "^7.28.6" }, "engines": { "node": ">=6.9.0" @@ -1369,13 +1379,14 @@ } }, "node_modules/@babel/plugin-transform-destructuring": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.25.9.tgz", - "integrity": "sha512-WkCGb/3ZxXepmMiX101nnGiU+1CAdut8oHyEOHxkKuS1qKpU2SMXE2uSvfz8PBuLd49V6LEsbtyPhWC7fnkgvQ==", + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.28.5.tgz", + "integrity": "sha512-Kl9Bc6D0zTUcFUvkNuQh4eGXPKKNDOJQXVyyM4ZAQPMveniJdxi8XMJwLo+xSoW3MIq81bD33lcUe9kZpl0MCw==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.25.9" + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/traverse": "^7.28.5" }, "engines": { "node": ">=6.9.0" @@ -1385,14 +1396,14 @@ } }, "node_modules/@babel/plugin-transform-dotall-regex": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.25.9.tgz", - "integrity": "sha512-t7ZQ7g5trIgSRYhI9pIJtRl64KHotutUJsh4Eze5l7olJv+mRSg4/MmbZ0tv1eeqRbdvo/+trvJD/Oc5DmW2cA==", + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.28.6.tgz", + "integrity": "sha512-SljjowuNKB7q5Oayv4FoPzeB74g3QgLt8IVJw9ADvWy3QnUb/01aw8I4AVv8wYnPvQz2GDDZ/g3GhcNyDBI4Bg==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.25.9", - "@babel/helper-plugin-utils": "^7.25.9" + "@babel/helper-create-regexp-features-plugin": "^7.28.5", + "@babel/helper-plugin-utils": "^7.28.6" }, "engines": { "node": ">=6.9.0" @@ -1402,13 +1413,13 @@ } }, "node_modules/@babel/plugin-transform-duplicate-keys": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.25.9.tgz", - "integrity": "sha512-LZxhJ6dvBb/f3x8xwWIuyiAHy56nrRG3PeYTpBkkzkYRRQ6tJLu68lEF5VIqMUZiAV7a8+Tb78nEoMCMcqjXBw==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.27.1.tgz", + "integrity": "sha512-MTyJk98sHvSs+cvZ4nOauwTTG1JeonDjSGvGGUNHreGQns+Mpt6WX/dVzWBHgg+dYZhkC4X+zTDfkTU+Vy9y7Q==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.25.9" + "@babel/helper-plugin-utils": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -1418,14 +1429,14 @@ } }, "node_modules/@babel/plugin-transform-duplicate-named-capturing-groups-regex": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-named-capturing-groups-regex/-/plugin-transform-duplicate-named-capturing-groups-regex-7.25.9.tgz", - "integrity": "sha512-0UfuJS0EsXbRvKnwcLjFtJy/Sxc5J5jhLHnFhy7u4zih97Hz6tJkLU+O+FMMrNZrosUPxDi6sYxJ/EA8jDiAog==", + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-named-capturing-groups-regex/-/plugin-transform-duplicate-named-capturing-groups-regex-7.29.0.tgz", + "integrity": "sha512-zBPcW2lFGxdiD8PUnPwJjag2J9otbcLQzvbiOzDxpYXyCuYX9agOwMPGn1prVH0a4qzhCKu24rlH4c1f7yA8rw==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.25.9", - "@babel/helper-plugin-utils": "^7.25.9" + "@babel/helper-create-regexp-features-plugin": "^7.28.5", + "@babel/helper-plugin-utils": "^7.28.6" }, "engines": { "node": ">=6.9.0" @@ -1435,13 +1446,30 @@ } }, "node_modules/@babel/plugin-transform-dynamic-import": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.25.9.tgz", - "integrity": "sha512-GCggjexbmSLaFhqsojeugBpeaRIgWNTcgKVq/0qIteFEqY2A+b9QidYadrWlnbWQUrW5fn+mCvf3tr7OeBFTyg==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.27.1.tgz", + "integrity": "sha512-MHzkWQcEmjzzVW9j2q8LGjwGWpG2mjwaaB0BNQwst3FIjqsg8Ct/mIZlvSPJvfi9y2AC8mi/ktxbFVL9pZ1I4A==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.25.9" + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-explicit-resource-management": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-explicit-resource-management/-/plugin-transform-explicit-resource-management-7.28.6.tgz", + "integrity": "sha512-Iao5Konzx2b6g7EPqTy40UZbcdXE126tTxVFr/nAIj+WItNxjKSYTEw3RC+A2/ZetmdJsgueL1KhaMCQHkLPIg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.28.6", + "@babel/plugin-transform-destructuring": "^7.28.5" }, "engines": { "node": ">=6.9.0" @@ -1451,13 +1479,13 @@ } }, "node_modules/@babel/plugin-transform-exponentiation-operator": { - "version": "7.26.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.26.3.tgz", - "integrity": "sha512-7CAHcQ58z2chuXPWblnn1K6rLDnDWieghSOEmqQsrBenH0P9InCUtOJYD89pvngljmZlJcz3fcmgYsXFNGa1ZQ==", + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.28.6.tgz", + "integrity": "sha512-WitabqiGjV/vJ0aPOLSFfNY1u9U3R7W36B03r5I2KoNix+a3sOhJ3pKFB3R5It9/UiK78NiO0KE9P21cMhlPkw==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.25.9" + "@babel/helper-plugin-utils": "^7.28.6" }, "engines": { "node": ">=6.9.0" @@ -1467,13 +1495,13 @@ } }, "node_modules/@babel/plugin-transform-export-namespace-from": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.25.9.tgz", - "integrity": "sha512-2NsEz+CxzJIVOPx2o9UsW1rXLqtChtLoVnwYHHiB04wS5sgn7mrV45fWMBX0Kk+ub9uXytVYfNP2HjbVbCB3Ww==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.27.1.tgz", + "integrity": "sha512-tQvHWSZ3/jH2xuq/vZDy0jNn+ZdXJeM8gHvX4lnJmsc3+50yPlWdZXIc5ay+umX+2/tJIqHqiEqcJvxlmIvRvQ==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.25.9" + "@babel/helper-plugin-utils": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -1483,14 +1511,14 @@ } }, "node_modules/@babel/plugin-transform-for-of": { - "version": "7.26.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.26.9.tgz", - "integrity": "sha512-Hry8AusVm8LW5BVFgiyUReuoGzPUpdHQQqJY5bZnbbf+ngOHWuCuYFKw/BqaaWlvEUrF91HMhDtEaI1hZzNbLg==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.27.1.tgz", + "integrity": "sha512-BfbWFFEJFQzLCQ5N8VocnCtA8J1CLkNTe2Ms2wocj75dd6VpiqS5Z5quTYcUoo4Yq+DN0rtikODccuv7RU81sw==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.26.5", - "@babel/helper-skip-transparent-expression-wrappers": "^7.25.9" + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/helper-skip-transparent-expression-wrappers": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -1500,15 +1528,15 @@ } }, "node_modules/@babel/plugin-transform-function-name": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.25.9.tgz", - "integrity": "sha512-8lP+Yxjv14Vc5MuWBpJsoUCd3hD6V9DgBon2FVYL4jJgbnVQ9fTgYmonchzZJOVNgzEgbxp4OwAf6xz6M/14XA==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.27.1.tgz", + "integrity": "sha512-1bQeydJF9Nr1eBCMMbC+hdwmRlsv5XYOMu03YSWFwNs0HsAmtSxxF1fyuYPqemVldVyFmlCU7w8UE14LupUSZQ==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-compilation-targets": "^7.25.9", - "@babel/helper-plugin-utils": "^7.25.9", - "@babel/traverse": "^7.25.9" + "@babel/helper-compilation-targets": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/traverse": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -1518,13 +1546,13 @@ } }, "node_modules/@babel/plugin-transform-json-strings": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.25.9.tgz", - "integrity": "sha512-xoTMk0WXceiiIvsaquQQUaLLXSW1KJ159KP87VilruQm0LNNGxWzahxSS6T6i4Zg3ezp4vA4zuwiNUR53qmQAw==", + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.28.6.tgz", + "integrity": "sha512-Nr+hEN+0geQkzhbdgQVPoqr47lZbm+5fCUmO70722xJZd0Mvb59+33QLImGj6F+DkK3xgDi1YVysP8whD6FQAw==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.25.9" + "@babel/helper-plugin-utils": "^7.28.6" }, "engines": { "node": ">=6.9.0" @@ -1534,13 +1562,13 @@ } }, "node_modules/@babel/plugin-transform-literals": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.25.9.tgz", - "integrity": "sha512-9N7+2lFziW8W9pBl2TzaNht3+pgMIRP74zizeCSrtnSKVdUl8mAjjOP2OOVQAfZ881P2cNjDj1uAMEdeD50nuQ==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.27.1.tgz", + "integrity": "sha512-0HCFSepIpLTkLcsi86GG3mTUzxV5jpmbv97hTETW3yzrAij8aqlD36toB1D0daVFJM8NK6GvKO0gslVQmm+zZA==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.25.9" + "@babel/helper-plugin-utils": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -1550,13 +1578,13 @@ } }, "node_modules/@babel/plugin-transform-logical-assignment-operators": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.25.9.tgz", - "integrity": "sha512-wI4wRAzGko551Y8eVf6iOY9EouIDTtPb0ByZx+ktDGHwv6bHFimrgJM/2T021txPZ2s4c7bqvHbd+vXG6K948Q==", + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.28.6.tgz", + "integrity": "sha512-+anKKair6gpi8VsM/95kmomGNMD0eLz1NQ8+Pfw5sAwWH9fGYXT50E55ZpV0pHUHWf6IUTWPM+f/7AAff+wr9A==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.25.9" + "@babel/helper-plugin-utils": "^7.28.6" }, "engines": { "node": ">=6.9.0" @@ -1566,13 +1594,13 @@ } }, "node_modules/@babel/plugin-transform-member-expression-literals": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.25.9.tgz", - "integrity": "sha512-PYazBVfofCQkkMzh2P6IdIUaCEWni3iYEerAsRWuVd8+jlM1S9S9cz1dF9hIzyoZ8IA3+OwVYIp9v9e+GbgZhA==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.27.1.tgz", + "integrity": "sha512-hqoBX4dcZ1I33jCSWcXrP+1Ku7kdqXf1oeah7ooKOIiAdKQ+uqftgCFNOSzA5AMS2XIHEYeGFg4cKRCdpxzVOQ==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.25.9" + "@babel/helper-plugin-utils": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -1582,14 +1610,14 @@ } }, "node_modules/@babel/plugin-transform-modules-amd": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.25.9.tgz", - "integrity": "sha512-g5T11tnI36jVClQlMlt4qKDLlWnG5pP9CSM4GhdRciTNMRgkfpo5cR6b4rGIOYPgRRuFAvwjPQ/Yk+ql4dyhbw==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.27.1.tgz", + "integrity": "sha512-iCsytMg/N9/oFq6n+gFTvUYDZQOMK5kEdeYxmxt91fcJGycfxVP9CnrxoliM0oumFERba2i8ZtwRUCMhvP1LnA==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-module-transforms": "^7.25.9", - "@babel/helper-plugin-utils": "^7.25.9" + "@babel/helper-module-transforms": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -1599,14 +1627,14 @@ } }, "node_modules/@babel/plugin-transform-modules-commonjs": { - "version": "7.26.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.26.3.tgz", - "integrity": "sha512-MgR55l4q9KddUDITEzEFYn5ZsGDXMSsU9E+kh7fjRXTIC3RHqfCo8RPRbyReYJh44HQ/yomFkqbOFohXvDCiIQ==", + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.28.6.tgz", + "integrity": "sha512-jppVbf8IV9iWWwWTQIxJMAJCWBuuKx71475wHwYytrRGQ2CWiDvYlADQno3tcYpS/T2UUWFQp3nVtYfK/YBQrA==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-module-transforms": "^7.26.0", - "@babel/helper-plugin-utils": "^7.25.9" + "@babel/helper-module-transforms": "^7.28.6", + "@babel/helper-plugin-utils": "^7.28.6" }, "engines": { "node": ">=6.9.0" @@ -1616,16 +1644,16 @@ } }, "node_modules/@babel/plugin-transform-modules-systemjs": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.25.9.tgz", - "integrity": "sha512-hyss7iIlH/zLHaehT+xwiymtPOpsiwIIRlCAOwBB04ta5Tt+lNItADdlXw3jAWZ96VJ2jlhl/c+PNIQPKNfvcA==", + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.29.0.tgz", + "integrity": "sha512-PrujnVFbOdUpw4UHiVwKvKRLMMic8+eC0CuNlxjsyZUiBjhFdPsewdXCkveh2KqBA9/waD0W1b4hXSOBQJezpQ==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-module-transforms": "^7.25.9", - "@babel/helper-plugin-utils": "^7.25.9", - "@babel/helper-validator-identifier": "^7.25.9", - "@babel/traverse": "^7.25.9" + "@babel/helper-module-transforms": "^7.28.6", + "@babel/helper-plugin-utils": "^7.28.6", + "@babel/helper-validator-identifier": "^7.28.5", + "@babel/traverse": "^7.29.0" }, "engines": { "node": ">=6.9.0" @@ -1635,14 +1663,14 @@ } }, "node_modules/@babel/plugin-transform-modules-umd": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.25.9.tgz", - "integrity": "sha512-bS9MVObUgE7ww36HEfwe6g9WakQ0KF07mQF74uuXdkoziUPfKyu/nIm663kz//e5O1nPInPFx36z7WJmJ4yNEw==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.27.1.tgz", + "integrity": "sha512-iQBE/xC5BV1OxJbp6WG7jq9IWiD+xxlZhLrdwpPkTX3ydmXdvoCpyfJN7acaIBZaOqTfr76pgzqBJflNbeRK+w==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-module-transforms": "^7.25.9", - "@babel/helper-plugin-utils": "^7.25.9" + "@babel/helper-module-transforms": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -1652,14 +1680,14 @@ } }, "node_modules/@babel/plugin-transform-named-capturing-groups-regex": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.25.9.tgz", - "integrity": "sha512-oqB6WHdKTGl3q/ItQhpLSnWWOpjUJLsOCLVyeFgeTktkBSCiurvPOsyt93gibI9CmuKvTUEtWmG5VhZD+5T/KA==", + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.29.0.tgz", + "integrity": "sha512-1CZQA5KNAD6ZYQLPw7oi5ewtDNxH/2vuCh+6SmvgDfhumForvs8a1o9n0UrEoBD8HU4djO2yWngTQlXl1NDVEQ==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.25.9", - "@babel/helper-plugin-utils": "^7.25.9" + "@babel/helper-create-regexp-features-plugin": "^7.28.5", + "@babel/helper-plugin-utils": "^7.28.6" }, "engines": { "node": ">=6.9.0" @@ -1669,13 +1697,13 @@ } }, "node_modules/@babel/plugin-transform-new-target": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.25.9.tgz", - "integrity": "sha512-U/3p8X1yCSoKyUj2eOBIx3FOn6pElFOKvAAGf8HTtItuPyB+ZeOqfn+mvTtg9ZlOAjsPdK3ayQEjqHjU/yLeVQ==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.27.1.tgz", + "integrity": "sha512-f6PiYeqXQ05lYq3TIfIDu/MtliKUbNwkGApPUvyo6+tc7uaR4cPjPe7DFPr15Uyycg2lZU6btZ575CuQoYh7MQ==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.25.9" + "@babel/helper-plugin-utils": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -1685,13 +1713,13 @@ } }, "node_modules/@babel/plugin-transform-nullish-coalescing-operator": { - "version": "7.26.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.26.6.tgz", - "integrity": "sha512-CKW8Vu+uUZneQCPtXmSBUC6NCAUdya26hWCElAWh5mVSlSRsmiCPUUDKb3Z0szng1hiAJa098Hkhg9o4SE35Qw==", + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.28.6.tgz", + "integrity": "sha512-3wKbRgmzYbw24mDJXT7N+ADXw8BC/imU9yo9c9X9NKaLF1fW+e5H1U5QjMUBe4Qo4Ox/o++IyUkl1sVCLgevKg==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.26.5" + "@babel/helper-plugin-utils": "^7.28.6" }, "engines": { "node": ">=6.9.0" @@ -1701,13 +1729,13 @@ } }, "node_modules/@babel/plugin-transform-numeric-separator": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.25.9.tgz", - "integrity": "sha512-TlprrJ1GBZ3r6s96Yq8gEQv82s8/5HnCVHtEJScUj90thHQbwe+E5MLhi2bbNHBEJuzrvltXSru+BUxHDoog7Q==", + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.28.6.tgz", + "integrity": "sha512-SJR8hPynj8outz+SlStQSwvziMN4+Bq99it4tMIf5/Caq+3iOc0JtKyse8puvyXkk3eFRIA5ID/XfunGgO5i6w==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.25.9" + "@babel/helper-plugin-utils": "^7.28.6" }, "engines": { "node": ">=6.9.0" @@ -1717,15 +1745,17 @@ } }, "node_modules/@babel/plugin-transform-object-rest-spread": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.25.9.tgz", - "integrity": "sha512-fSaXafEE9CVHPweLYw4J0emp1t8zYTXyzN3UuG+lylqkvYd7RMrsOQ8TYx5RF231be0vqtFC6jnx3UmpJmKBYg==", + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.28.6.tgz", + "integrity": "sha512-5rh+JR4JBC4pGkXLAcYdLHZjXudVxWMXbB6u6+E9lRL5TrGVbHt1TjxGbZ8CkmYw9zjkB7jutzOROArsqtncEA==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-compilation-targets": "^7.25.9", - "@babel/helper-plugin-utils": "^7.25.9", - "@babel/plugin-transform-parameters": "^7.25.9" + "@babel/helper-compilation-targets": "^7.28.6", + "@babel/helper-plugin-utils": "^7.28.6", + "@babel/plugin-transform-destructuring": "^7.28.5", + "@babel/plugin-transform-parameters": "^7.27.7", + "@babel/traverse": "^7.28.6" }, "engines": { "node": ">=6.9.0" @@ -1735,14 +1765,14 @@ } }, "node_modules/@babel/plugin-transform-object-super": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.25.9.tgz", - "integrity": "sha512-Kj/Gh+Rw2RNLbCK1VAWj2U48yxxqL2x0k10nPtSdRa0O2xnHXalD0s+o1A6a0W43gJ00ANo38jxkQreckOzv5A==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.27.1.tgz", + "integrity": "sha512-SFy8S9plRPbIcxlJ8A6mT/CxFdJx/c04JEctz4jf8YZaVS2px34j7NXRrlGlHkN/M2gnpL37ZpGRGVFLd3l8Ng==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.25.9", - "@babel/helper-replace-supers": "^7.25.9" + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/helper-replace-supers": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -1752,13 +1782,13 @@ } }, "node_modules/@babel/plugin-transform-optional-catch-binding": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.25.9.tgz", - "integrity": "sha512-qM/6m6hQZzDcZF3onzIhZeDHDO43bkNNlOX0i8n3lR6zLbu0GN2d8qfM/IERJZYauhAHSLHy39NF0Ctdvcid7g==", + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.28.6.tgz", + "integrity": "sha512-R8ja/Pyrv0OGAvAXQhSTmWyPJPml+0TMqXlO5w+AsMEiwb2fg3WkOvob7UxFSL3OIttFSGSRFKQsOhJ/X6HQdQ==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.25.9" + "@babel/helper-plugin-utils": "^7.28.6" }, "engines": { "node": ">=6.9.0" @@ -1768,14 +1798,14 @@ } }, "node_modules/@babel/plugin-transform-optional-chaining": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.25.9.tgz", - "integrity": "sha512-6AvV0FsLULbpnXeBjrY4dmWF8F7gf8QnvTEoO/wX/5xm/xE1Xo8oPuD3MPS+KS9f9XBEAWN7X1aWr4z9HdOr7A==", + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.28.6.tgz", + "integrity": "sha512-A4zobikRGJTsX9uqVFdafzGkqD30t26ck2LmOzAuLL8b2x6k3TIqRiT2xVvA9fNmFeTX484VpsdgmKNA0bS23w==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.25.9", - "@babel/helper-skip-transparent-expression-wrappers": "^7.25.9" + "@babel/helper-plugin-utils": "^7.28.6", + "@babel/helper-skip-transparent-expression-wrappers": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -1785,13 +1815,13 @@ } }, "node_modules/@babel/plugin-transform-parameters": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.25.9.tgz", - "integrity": "sha512-wzz6MKwpnshBAiRmn4jR8LYz/g8Ksg0o80XmwZDlordjwEk9SxBzTWC7F5ef1jhbrbOW2DJ5J6ayRukrJmnr0g==", + "version": "7.27.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.27.7.tgz", + "integrity": "sha512-qBkYTYCb76RRxUM6CcZA5KRu8K4SM8ajzVeUgVdMVO9NN9uI/GaVmBg/WKJJGnNokV9SY8FxNOVWGXzqzUidBg==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.25.9" + "@babel/helper-plugin-utils": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -1801,14 +1831,14 @@ } }, "node_modules/@babel/plugin-transform-private-methods": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.25.9.tgz", - "integrity": "sha512-D/JUozNpQLAPUVusvqMxyvjzllRaF8/nSrP1s2YGQT/W4LHK4xxsMcHjhOGTS01mp9Hda8nswb+FblLdJornQw==", + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.28.6.tgz", + "integrity": "sha512-piiuapX9CRv7+0st8lmuUlRSmX6mBcVeNQ1b4AYzJxfCMuBfB0vBXDiGSmm03pKJw1v6cZ8KSeM+oUnM6yAExg==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.25.9", - "@babel/helper-plugin-utils": "^7.25.9" + "@babel/helper-create-class-features-plugin": "^7.28.6", + "@babel/helper-plugin-utils": "^7.28.6" }, "engines": { "node": ">=6.9.0" @@ -1818,15 +1848,15 @@ } }, "node_modules/@babel/plugin-transform-private-property-in-object": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.25.9.tgz", - "integrity": "sha512-Evf3kcMqzXA3xfYJmZ9Pg1OvKdtqsDMSWBDzZOPLvHiTt36E75jLDQo5w1gtRU95Q4E5PDttrTf25Fw8d/uWLw==", + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.28.6.tgz", + "integrity": "sha512-b97jvNSOb5+ehyQmBpmhOCiUC5oVK4PMnpRvO7+ymFBoqYjeDHIU9jnrNUuwHOiL9RpGDoKBpSViarV+BU+eVA==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-annotate-as-pure": "^7.25.9", - "@babel/helper-create-class-features-plugin": "^7.25.9", - "@babel/helper-plugin-utils": "^7.25.9" + "@babel/helper-annotate-as-pure": "^7.27.3", + "@babel/helper-create-class-features-plugin": "^7.28.6", + "@babel/helper-plugin-utils": "^7.28.6" }, "engines": { "node": ">=6.9.0" @@ -1836,13 +1866,13 @@ } }, "node_modules/@babel/plugin-transform-property-literals": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.25.9.tgz", - "integrity": "sha512-IvIUeV5KrS/VPavfSM/Iu+RE6llrHrYIKY1yfCzyO/lMXHQ+p7uGhonmGVisv6tSBSVgWzMBohTcvkC9vQcQFA==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.27.1.tgz", + "integrity": "sha512-oThy3BCuCha8kDZ8ZkgOg2exvPYUlprMukKQXI1r1pJ47NCvxfkEy8vK+r/hT9nF0Aa4H1WUPZZjHTFtAhGfmQ==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.25.9" + "@babel/helper-plugin-utils": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -1852,13 +1882,13 @@ } }, "node_modules/@babel/plugin-transform-react-display-name": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.25.9.tgz", - "integrity": "sha512-KJfMlYIUxQB1CJfO3e0+h0ZHWOTLCPP115Awhaz8U0Zpq36Gl/cXlpoyMRnUWlhNUBAzldnCiAZNvCDj7CrKxQ==", + "version": "7.28.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.28.0.tgz", + "integrity": "sha512-D6Eujc2zMxKjfa4Zxl4GHMsmhKKZ9VpcqIchJLvwTxad9zWIYulwYItBovpDOoNLISpcZSXoDJ5gaGbQUDqViA==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.25.9" + "@babel/helper-plugin-utils": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -1868,17 +1898,17 @@ } }, "node_modules/@babel/plugin-transform-react-jsx": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.25.9.tgz", - "integrity": "sha512-s5XwpQYCqGerXl+Pu6VDL3x0j2d82eiV77UJ8a2mDHAW7j9SWRqQ2y1fNo1Z74CdcYipl5Z41zvjj4Nfzq36rw==", + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.28.6.tgz", + "integrity": "sha512-61bxqhiRfAACulXSLd/GxqmAedUSrRZIu/cbaT18T1CetkTmtDN15it7i80ru4DVqRK1WMxQhXs+Lf9kajm5Ow==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-annotate-as-pure": "^7.25.9", - "@babel/helper-module-imports": "^7.25.9", - "@babel/helper-plugin-utils": "^7.25.9", - "@babel/plugin-syntax-jsx": "^7.25.9", - "@babel/types": "^7.25.9" + "@babel/helper-annotate-as-pure": "^7.27.3", + "@babel/helper-module-imports": "^7.28.6", + "@babel/helper-plugin-utils": "^7.28.6", + "@babel/plugin-syntax-jsx": "^7.28.6", + "@babel/types": "^7.28.6" }, "engines": { "node": ">=6.9.0" @@ -1888,13 +1918,13 @@ } }, "node_modules/@babel/plugin-transform-react-jsx-development": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.25.9.tgz", - "integrity": "sha512-9mj6rm7XVYs4mdLIpbZnHOYdpW42uoiBCTVowg7sP1thUOiANgMb4UtpRivR0pp5iL+ocvUv7X4mZgFRpJEzGw==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.27.1.tgz", + "integrity": "sha512-ykDdF5yI4f1WrAolLqeF3hmYU12j9ntLQl/AOG1HAS21jxyg1Q0/J/tpREuYLfatGdGmXp/3yS0ZA76kOlVq9Q==", "dev": true, "license": "MIT", "dependencies": { - "@babel/plugin-transform-react-jsx": "^7.25.9" + "@babel/plugin-transform-react-jsx": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -1904,14 +1934,14 @@ } }, "node_modules/@babel/plugin-transform-react-pure-annotations": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.25.9.tgz", - "integrity": "sha512-KQ/Takk3T8Qzj5TppkS1be588lkbTp5uj7w6a0LeQaTMSckU/wK0oJ/pih+T690tkgI5jfmg2TqDJvd41Sj1Cg==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.27.1.tgz", + "integrity": "sha512-JfuinvDOsD9FVMTHpzA/pBLisxpv1aSf+OIV8lgH3MuWrks19R27e6a6DipIg4aX1Zm9Wpb04p8wljfKrVSnPA==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-annotate-as-pure": "^7.25.9", - "@babel/helper-plugin-utils": "^7.25.9" + "@babel/helper-annotate-as-pure": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -1921,14 +1951,13 @@ } }, "node_modules/@babel/plugin-transform-regenerator": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.25.9.tgz", - "integrity": "sha512-vwDcDNsgMPDGP0nMqzahDWE5/MLcX8sv96+wfX7as7LoF/kr97Bo/7fI00lXY4wUXYfVmwIIyG80fGZ1uvt2qg==", + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.29.0.tgz", + "integrity": "sha512-FijqlqMA7DmRdg/aINBSs04y8XNTYw/lr1gJ2WsmBnnaNw1iS43EPkJW+zK7z65auG3AWRFXWj+NcTQwYptUog==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.25.9", - "regenerator-transform": "^0.15.2" + "@babel/helper-plugin-utils": "^7.28.6" }, "engines": { "node": ">=6.9.0" @@ -1938,14 +1967,14 @@ } }, "node_modules/@babel/plugin-transform-regexp-modifiers": { - "version": "7.26.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regexp-modifiers/-/plugin-transform-regexp-modifiers-7.26.0.tgz", - "integrity": "sha512-vN6saax7lrA2yA/Pak3sCxuD6F5InBjn9IcrIKQPjpsLvuHYLVroTxjdlVRHjjBWxKOqIwpTXDkOssYT4BFdRw==", + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regexp-modifiers/-/plugin-transform-regexp-modifiers-7.28.6.tgz", + "integrity": "sha512-QGWAepm9qxpaIs7UM9FvUSnCGlb8Ua1RhyM4/veAxLwt3gMat/LSGrZixyuj4I6+Kn9iwvqCyPTtbdxanYoWYg==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.25.9", - "@babel/helper-plugin-utils": "^7.25.9" + "@babel/helper-create-regexp-features-plugin": "^7.28.5", + "@babel/helper-plugin-utils": "^7.28.6" }, "engines": { "node": ">=6.9.0" @@ -1955,13 +1984,13 @@ } }, "node_modules/@babel/plugin-transform-reserved-words": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.25.9.tgz", - "integrity": "sha512-7DL7DKYjn5Su++4RXu8puKZm2XBPHyjWLUidaPEkCUBbE7IPcsrkRHggAOOKydH1dASWdcUBxrkOGNxUv5P3Jg==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.27.1.tgz", + "integrity": "sha512-V2ABPHIJX4kC7HegLkYoDpfg9PVmuWy/i6vUM5eGK22bx4YVFD3M5F0QQnWQoDs6AGsUWTVOopBiMFQgHaSkVw==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.25.9" + "@babel/helper-plugin-utils": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -1971,13 +2000,13 @@ } }, "node_modules/@babel/plugin-transform-shorthand-properties": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.25.9.tgz", - "integrity": "sha512-MUv6t0FhO5qHnS/W8XCbHmiRWOphNufpE1IVxhK5kuN3Td9FT1x4rx4K42s3RYdMXCXpfWkGSbCSd0Z64xA7Ng==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.27.1.tgz", + "integrity": "sha512-N/wH1vcn4oYawbJ13Y/FxcQrWk63jhfNa7jef0ih7PHSIHX2LB7GWE1rkPrOnka9kwMxb6hMl19p7lidA+EHmQ==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.25.9" + "@babel/helper-plugin-utils": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -1987,14 +2016,14 @@ } }, "node_modules/@babel/plugin-transform-spread": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.25.9.tgz", - "integrity": "sha512-oNknIB0TbURU5pqJFVbOOFspVlrpVwo2H1+HUIsVDvp5VauGGDP1ZEvO8Nn5xyMEs3dakajOxlmkNW7kNgSm6A==", + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.28.6.tgz", + "integrity": "sha512-9U4QObUC0FtJl05AsUcodau/RWDytrU6uKgkxu09mLR9HLDAtUMoPuuskm5huQsoktmsYpI+bGmq+iapDcriKA==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.25.9", - "@babel/helper-skip-transparent-expression-wrappers": "^7.25.9" + "@babel/helper-plugin-utils": "^7.28.6", + "@babel/helper-skip-transparent-expression-wrappers": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -2004,13 +2033,13 @@ } }, "node_modules/@babel/plugin-transform-sticky-regex": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.25.9.tgz", - "integrity": "sha512-WqBUSgeVwucYDP9U/xNRQam7xV8W5Zf+6Eo7T2SRVUFlhRiMNFdFz58u0KZmCVVqs2i7SHgpRnAhzRNmKfi2uA==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.27.1.tgz", + "integrity": "sha512-lhInBO5bi/Kowe2/aLdBAawijx+q1pQzicSgnkB6dUPc1+RC8QmJHKf2OjvU+NZWitguJHEaEmbV6VWEouT58g==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.25.9" + "@babel/helper-plugin-utils": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -2020,13 +2049,13 @@ } }, "node_modules/@babel/plugin-transform-template-literals": { - "version": "7.26.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.26.8.tgz", - "integrity": "sha512-OmGDL5/J0CJPJZTHZbi2XpO0tyT2Ia7fzpW5GURwdtp2X3fMmN8au/ej6peC/T33/+CRiIpA8Krse8hFGVmT5Q==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.27.1.tgz", + "integrity": "sha512-fBJKiV7F2DxZUkg5EtHKXQdbsbURW3DZKQUWphDum0uRP6eHGGa/He9mc0mypL680pb+e/lDIthRohlv8NCHkg==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.26.5" + "@babel/helper-plugin-utils": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -2036,13 +2065,13 @@ } }, "node_modules/@babel/plugin-transform-typeof-symbol": { - "version": "7.26.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.26.7.tgz", - "integrity": "sha512-jfoTXXZTgGg36BmhqT3cAYK5qkmqvJpvNrPhaK/52Vgjhw4Rq29s9UqpWWV0D6yuRmgiFH/BUVlkl96zJWqnaw==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.27.1.tgz", + "integrity": "sha512-RiSILC+nRJM7FY5srIyc4/fGIwUhyDuuBSdWn4y6yT6gm652DpCHZjIipgn6B7MQ1ITOUnAKWixEUjQRIBIcLw==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.26.5" + "@babel/helper-plugin-utils": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -2052,17 +2081,17 @@ } }, "node_modules/@babel/plugin-transform-typescript": { - "version": "7.27.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.27.0.tgz", - "integrity": "sha512-fRGGjO2UEGPjvEcyAZXRXAS8AfdaQoq7HnxAbJoAoW10B9xOKesmmndJv+Sym2a+9FHWZ9KbyyLCe9s0Sn5jtg==", + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.28.6.tgz", + "integrity": "sha512-0YWL2RFxOqEm9Efk5PvreamxPME8OyY0wM5wh5lHjF+VtVhdneCWGzZeSqzOfiobVqQaNCd2z0tQvnI9DaPWPw==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-annotate-as-pure": "^7.25.9", - "@babel/helper-create-class-features-plugin": "^7.27.0", - "@babel/helper-plugin-utils": "^7.26.5", - "@babel/helper-skip-transparent-expression-wrappers": "^7.25.9", - "@babel/plugin-syntax-typescript": "^7.25.9" + "@babel/helper-annotate-as-pure": "^7.27.3", + "@babel/helper-create-class-features-plugin": "^7.28.6", + "@babel/helper-plugin-utils": "^7.28.6", + "@babel/helper-skip-transparent-expression-wrappers": "^7.27.1", + "@babel/plugin-syntax-typescript": "^7.28.6" }, "engines": { "node": ">=6.9.0" @@ -2072,13 +2101,13 @@ } }, "node_modules/@babel/plugin-transform-unicode-escapes": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.25.9.tgz", - "integrity": "sha512-s5EDrE6bW97LtxOcGj1Khcx5AaXwiMmi4toFWRDP9/y0Woo6pXC+iyPu/KuhKtfSrNFd7jJB+/fkOtZy6aIC6Q==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.27.1.tgz", + "integrity": "sha512-Ysg4v6AmF26k9vpfFuTZg8HRfVWzsh1kVfowA23y9j/Gu6dOuahdUVhkLqpObp3JIv27MLSii6noRnuKN8H0Mg==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.25.9" + "@babel/helper-plugin-utils": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -2088,14 +2117,14 @@ } }, "node_modules/@babel/plugin-transform-unicode-property-regex": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.25.9.tgz", - "integrity": "sha512-Jt2d8Ga+QwRluxRQ307Vlxa6dMrYEMZCgGxoPR8V52rxPyldHu3hdlHspxaqYmE7oID5+kB+UKUB/eWS+DkkWg==", + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.28.6.tgz", + "integrity": "sha512-4Wlbdl/sIZjzi/8St0evF0gEZrgOswVO6aOzqxh1kDZOl9WmLrHq2HtGhnOJZmHZYKP8WZ1MDLCt5DAWwRo57A==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.25.9", - "@babel/helper-plugin-utils": "^7.25.9" + "@babel/helper-create-regexp-features-plugin": "^7.28.5", + "@babel/helper-plugin-utils": "^7.28.6" }, "engines": { "node": ">=6.9.0" @@ -2105,14 +2134,14 @@ } }, "node_modules/@babel/plugin-transform-unicode-regex": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.25.9.tgz", - "integrity": "sha512-yoxstj7Rg9dlNn9UQxzk4fcNivwv4nUYz7fYXBaKxvw/lnmPuOm/ikoELygbYq68Bls3D/D+NBPHiLwZdZZ4HA==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.27.1.tgz", + "integrity": "sha512-xvINq24TRojDuyt6JGtHmkVkrfVV3FPT16uytxImLeBZqW3/H52yN+kM1MGuyPkIQxrzKwPHs5U/MP3qKyzkGw==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.25.9", - "@babel/helper-plugin-utils": "^7.25.9" + "@babel/helper-create-regexp-features-plugin": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -2122,14 +2151,14 @@ } }, "node_modules/@babel/plugin-transform-unicode-sets-regex": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.25.9.tgz", - "integrity": "sha512-8BYqO3GeVNHtx69fdPshN3fnzUNLrWdHhk/icSwigksJGczKSizZ+Z6SBCxTs723Fr5VSNorTIK7a+R2tISvwQ==", + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.28.6.tgz", + "integrity": "sha512-/wHc/paTUmsDYN7SZkpWxogTOBNnlx7nBQYfy6JJlCT7G3mVhltk3e++N7zV0XfgGsrqBxd4rJQt9H16I21Y1Q==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.25.9", - "@babel/helper-plugin-utils": "^7.25.9" + "@babel/helper-create-regexp-features-plugin": "^7.28.5", + "@babel/helper-plugin-utils": "^7.28.6" }, "engines": { "node": ">=6.9.0" @@ -2139,80 +2168,81 @@ } }, "node_modules/@babel/preset-env": { - "version": "7.26.9", - "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.26.9.tgz", - "integrity": "sha512-vX3qPGE8sEKEAZCWk05k3cpTAE3/nOYca++JA+Rd0z2NCNzabmYvEiSShKzm10zdquOIAVXsy2Ei/DTW34KlKQ==", + "version": "7.29.2", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.29.2.tgz", + "integrity": "sha512-DYD23veRYGvBFhcTY1iUvJnDNpuqNd/BzBwCvzOTKUnJjKg5kpUBh3/u9585Agdkgj+QuygG7jLfOPWMa2KVNw==", "dev": true, "license": "MIT", "dependencies": { - "@babel/compat-data": "^7.26.8", - "@babel/helper-compilation-targets": "^7.26.5", - "@babel/helper-plugin-utils": "^7.26.5", - "@babel/helper-validator-option": "^7.25.9", - "@babel/plugin-bugfix-firefox-class-in-computed-class-key": "^7.25.9", - "@babel/plugin-bugfix-safari-class-field-initializer-scope": "^7.25.9", - "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.25.9", - "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.25.9", - "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": "^7.25.9", + "@babel/compat-data": "^7.29.0", + "@babel/helper-compilation-targets": "^7.28.6", + "@babel/helper-plugin-utils": "^7.28.6", + "@babel/helper-validator-option": "^7.27.1", + "@babel/plugin-bugfix-firefox-class-in-computed-class-key": "^7.28.5", + "@babel/plugin-bugfix-safari-class-field-initializer-scope": "^7.27.1", + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.27.1", + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.27.1", + "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": "^7.28.6", "@babel/plugin-proposal-private-property-in-object": "7.21.0-placeholder-for-preset-env.2", - "@babel/plugin-syntax-import-assertions": "^7.26.0", - "@babel/plugin-syntax-import-attributes": "^7.26.0", + "@babel/plugin-syntax-import-assertions": "^7.28.6", + "@babel/plugin-syntax-import-attributes": "^7.28.6", "@babel/plugin-syntax-unicode-sets-regex": "^7.18.6", - "@babel/plugin-transform-arrow-functions": "^7.25.9", - "@babel/plugin-transform-async-generator-functions": "^7.26.8", - "@babel/plugin-transform-async-to-generator": "^7.25.9", - "@babel/plugin-transform-block-scoped-functions": "^7.26.5", - "@babel/plugin-transform-block-scoping": "^7.25.9", - "@babel/plugin-transform-class-properties": "^7.25.9", - "@babel/plugin-transform-class-static-block": "^7.26.0", - "@babel/plugin-transform-classes": "^7.25.9", - "@babel/plugin-transform-computed-properties": "^7.25.9", - "@babel/plugin-transform-destructuring": "^7.25.9", - "@babel/plugin-transform-dotall-regex": "^7.25.9", - "@babel/plugin-transform-duplicate-keys": "^7.25.9", - "@babel/plugin-transform-duplicate-named-capturing-groups-regex": "^7.25.9", - "@babel/plugin-transform-dynamic-import": "^7.25.9", - "@babel/plugin-transform-exponentiation-operator": "^7.26.3", - "@babel/plugin-transform-export-namespace-from": "^7.25.9", - "@babel/plugin-transform-for-of": "^7.26.9", - "@babel/plugin-transform-function-name": "^7.25.9", - "@babel/plugin-transform-json-strings": "^7.25.9", - "@babel/plugin-transform-literals": "^7.25.9", - "@babel/plugin-transform-logical-assignment-operators": "^7.25.9", - "@babel/plugin-transform-member-expression-literals": "^7.25.9", - "@babel/plugin-transform-modules-amd": "^7.25.9", - "@babel/plugin-transform-modules-commonjs": "^7.26.3", - "@babel/plugin-transform-modules-systemjs": "^7.25.9", - "@babel/plugin-transform-modules-umd": "^7.25.9", - "@babel/plugin-transform-named-capturing-groups-regex": "^7.25.9", - "@babel/plugin-transform-new-target": "^7.25.9", - "@babel/plugin-transform-nullish-coalescing-operator": "^7.26.6", - "@babel/plugin-transform-numeric-separator": "^7.25.9", - "@babel/plugin-transform-object-rest-spread": "^7.25.9", - "@babel/plugin-transform-object-super": "^7.25.9", - "@babel/plugin-transform-optional-catch-binding": "^7.25.9", - "@babel/plugin-transform-optional-chaining": "^7.25.9", - "@babel/plugin-transform-parameters": "^7.25.9", - "@babel/plugin-transform-private-methods": "^7.25.9", - "@babel/plugin-transform-private-property-in-object": "^7.25.9", - "@babel/plugin-transform-property-literals": "^7.25.9", - "@babel/plugin-transform-regenerator": "^7.25.9", - "@babel/plugin-transform-regexp-modifiers": "^7.26.0", - "@babel/plugin-transform-reserved-words": "^7.25.9", - "@babel/plugin-transform-shorthand-properties": "^7.25.9", - "@babel/plugin-transform-spread": "^7.25.9", - "@babel/plugin-transform-sticky-regex": "^7.25.9", - "@babel/plugin-transform-template-literals": "^7.26.8", - "@babel/plugin-transform-typeof-symbol": "^7.26.7", - "@babel/plugin-transform-unicode-escapes": "^7.25.9", - "@babel/plugin-transform-unicode-property-regex": "^7.25.9", - "@babel/plugin-transform-unicode-regex": "^7.25.9", - "@babel/plugin-transform-unicode-sets-regex": "^7.25.9", + "@babel/plugin-transform-arrow-functions": "^7.27.1", + "@babel/plugin-transform-async-generator-functions": "^7.29.0", + "@babel/plugin-transform-async-to-generator": "^7.28.6", + "@babel/plugin-transform-block-scoped-functions": "^7.27.1", + "@babel/plugin-transform-block-scoping": "^7.28.6", + "@babel/plugin-transform-class-properties": "^7.28.6", + "@babel/plugin-transform-class-static-block": "^7.28.6", + "@babel/plugin-transform-classes": "^7.28.6", + "@babel/plugin-transform-computed-properties": "^7.28.6", + "@babel/plugin-transform-destructuring": "^7.28.5", + "@babel/plugin-transform-dotall-regex": "^7.28.6", + "@babel/plugin-transform-duplicate-keys": "^7.27.1", + "@babel/plugin-transform-duplicate-named-capturing-groups-regex": "^7.29.0", + "@babel/plugin-transform-dynamic-import": "^7.27.1", + "@babel/plugin-transform-explicit-resource-management": "^7.28.6", + "@babel/plugin-transform-exponentiation-operator": "^7.28.6", + "@babel/plugin-transform-export-namespace-from": "^7.27.1", + "@babel/plugin-transform-for-of": "^7.27.1", + "@babel/plugin-transform-function-name": "^7.27.1", + "@babel/plugin-transform-json-strings": "^7.28.6", + "@babel/plugin-transform-literals": "^7.27.1", + "@babel/plugin-transform-logical-assignment-operators": "^7.28.6", + "@babel/plugin-transform-member-expression-literals": "^7.27.1", + "@babel/plugin-transform-modules-amd": "^7.27.1", + "@babel/plugin-transform-modules-commonjs": "^7.28.6", + "@babel/plugin-transform-modules-systemjs": "^7.29.0", + "@babel/plugin-transform-modules-umd": "^7.27.1", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.29.0", + "@babel/plugin-transform-new-target": "^7.27.1", + "@babel/plugin-transform-nullish-coalescing-operator": "^7.28.6", + "@babel/plugin-transform-numeric-separator": "^7.28.6", + "@babel/plugin-transform-object-rest-spread": "^7.28.6", + "@babel/plugin-transform-object-super": "^7.27.1", + "@babel/plugin-transform-optional-catch-binding": "^7.28.6", + "@babel/plugin-transform-optional-chaining": "^7.28.6", + "@babel/plugin-transform-parameters": "^7.27.7", + "@babel/plugin-transform-private-methods": "^7.28.6", + "@babel/plugin-transform-private-property-in-object": "^7.28.6", + "@babel/plugin-transform-property-literals": "^7.27.1", + "@babel/plugin-transform-regenerator": "^7.29.0", + "@babel/plugin-transform-regexp-modifiers": "^7.28.6", + "@babel/plugin-transform-reserved-words": "^7.27.1", + "@babel/plugin-transform-shorthand-properties": "^7.27.1", + "@babel/plugin-transform-spread": "^7.28.6", + "@babel/plugin-transform-sticky-regex": "^7.27.1", + "@babel/plugin-transform-template-literals": "^7.27.1", + "@babel/plugin-transform-typeof-symbol": "^7.27.1", + "@babel/plugin-transform-unicode-escapes": "^7.27.1", + "@babel/plugin-transform-unicode-property-regex": "^7.28.6", + "@babel/plugin-transform-unicode-regex": "^7.27.1", + "@babel/plugin-transform-unicode-sets-regex": "^7.28.6", "@babel/preset-modules": "0.1.6-no-external-plugins", - "babel-plugin-polyfill-corejs2": "^0.4.10", - "babel-plugin-polyfill-corejs3": "^0.11.0", - "babel-plugin-polyfill-regenerator": "^0.6.1", - "core-js-compat": "^3.40.0", + "babel-plugin-polyfill-corejs2": "^0.4.15", + "babel-plugin-polyfill-corejs3": "^0.14.0", + "babel-plugin-polyfill-regenerator": "^0.6.6", + "core-js-compat": "^3.48.0", "semver": "^6.3.1" }, "engines": { @@ -2246,18 +2276,18 @@ } }, "node_modules/@babel/preset-react": { - "version": "7.26.3", - "resolved": "https://registry.npmjs.org/@babel/preset-react/-/preset-react-7.26.3.tgz", - "integrity": "sha512-Nl03d6T9ky516DGK2YMxrTqvnpUW63TnJMOMonj+Zae0JiPC5BC9xPMSL6L8fiSpA5vP88qfygavVQvnLp+6Cw==", + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/preset-react/-/preset-react-7.28.5.tgz", + "integrity": "sha512-Z3J8vhRq7CeLjdC58jLv4lnZ5RKFUJWqH5emvxmv9Hv3BD1T9R/Im713R4MTKwvFaV74ejZ3sM01LyEKk4ugNQ==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.25.9", - "@babel/helper-validator-option": "^7.25.9", - "@babel/plugin-transform-react-display-name": "^7.25.9", - "@babel/plugin-transform-react-jsx": "^7.25.9", - "@babel/plugin-transform-react-jsx-development": "^7.25.9", - "@babel/plugin-transform-react-pure-annotations": "^7.25.9" + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/helper-validator-option": "^7.27.1", + "@babel/plugin-transform-react-display-name": "^7.28.0", + "@babel/plugin-transform-react-jsx": "^7.27.1", + "@babel/plugin-transform-react-jsx-development": "^7.27.1", + "@babel/plugin-transform-react-pure-annotations": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -2267,17 +2297,17 @@ } }, "node_modules/@babel/preset-typescript": { - "version": "7.27.0", - "resolved": "https://registry.npmjs.org/@babel/preset-typescript/-/preset-typescript-7.27.0.tgz", - "integrity": "sha512-vxaPFfJtHhgeOVXRKuHpHPAOgymmy8V8I65T1q53R7GCZlefKeCaTyDs3zOPHTTbmquvNlQYC5klEvWsBAtrBQ==", + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/preset-typescript/-/preset-typescript-7.28.5.tgz", + "integrity": "sha512-+bQy5WOI2V6LJZpPVxY+yp66XdZ2yifu0Mc1aP5CQKgjn4QM5IN2i5fAZ4xKop47pr8rpVhiAeu+nDQa12C8+g==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.26.5", - "@babel/helper-validator-option": "^7.25.9", - "@babel/plugin-syntax-jsx": "^7.25.9", - "@babel/plugin-transform-modules-commonjs": "^7.26.3", - "@babel/plugin-transform-typescript": "^7.27.0" + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/helper-validator-option": "^7.27.1", + "@babel/plugin-syntax-jsx": "^7.27.1", + "@babel/plugin-transform-modules-commonjs": "^7.27.1", + "@babel/plugin-transform-typescript": "^7.28.5" }, "engines": { "node": ">=6.9.0" @@ -2287,9 +2317,9 @@ } }, "node_modules/@babel/register": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/register/-/register-7.25.9.tgz", - "integrity": "sha512-8D43jXtGsYmEeDvm4MWHYUpWf8iiXgWYx3fW7E7Wb7Oe6FWqJPl5K6TuFW0dOwNZzEE5rjlaSJYH9JjrUKJszA==", + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/register/-/register-7.28.6.tgz", + "integrity": "sha512-pgcbbEl/dWQYb6L6Yew6F94rdwygfuv+vJ/tXfwIOYAfPB6TNWpXUMEtEq3YuTeHRdvMIhvz13bkT9CNaS+wqA==", "dev": true, "license": "MIT", "dependencies": { @@ -2320,62 +2350,61 @@ } }, "node_modules/@babel/runtime-corejs3": { - "version": "7.27.0", - "resolved": "https://registry.npmjs.org/@babel/runtime-corejs3/-/runtime-corejs3-7.27.0.tgz", - "integrity": "sha512-UWjX6t+v+0ckwZ50Y5ShZLnlk95pP5MyW/pon9tiYzl3+18pkTHTFNTKr7rQbfRXPkowt2QAn30o1b6oswszew==", + "version": "7.29.2", + "resolved": "https://registry.npmjs.org/@babel/runtime-corejs3/-/runtime-corejs3-7.29.2.tgz", + "integrity": "sha512-Lc94FOD5+0aXhdb0Tdg3RUtqT6yWbI/BbFWvlaSJ3gAb9Ks+99nHRDKADVqC37er4eCB0fHyWT+y+K3QOvJKbw==", "dev": true, "license": "MIT", "dependencies": { - "core-js-pure": "^3.30.2", - "regenerator-runtime": "^0.14.0" + "core-js-pure": "^3.48.0" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/template": { - "version": "7.27.0", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.27.0.tgz", - "integrity": "sha512-2ncevenBqXI6qRMukPlXwHKHchC7RyMuu4xv5JBXRfOGVcTy1mXCD12qrp7Jsoxll1EV3+9sE4GugBVRjT2jFA==", + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.28.6.tgz", + "integrity": "sha512-YA6Ma2KsCdGb+WC6UpBVFJGXL58MDA6oyONbjyF/+5sBgxY/dwkhLogbMT2GXXyU84/IhRw/2D1Os1B/giz+BQ==", "dev": true, "license": "MIT", "dependencies": { - "@babel/code-frame": "^7.26.2", - "@babel/parser": "^7.27.0", - "@babel/types": "^7.27.0" + "@babel/code-frame": "^7.28.6", + "@babel/parser": "^7.28.6", + "@babel/types": "^7.28.6" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/traverse": { - "version": "7.27.0", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.27.0.tgz", - "integrity": "sha512-19lYZFzYVQkkHkl4Cy4WrAVcqBkgvV2YM2TU3xG6DIwO7O3ecbDPfW3yM3bjAGcqcQHi+CCtjMR3dIEHxsd6bA==", + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.29.0.tgz", + "integrity": "sha512-4HPiQr0X7+waHfyXPZpWPfWL/J7dcN1mx9gL6WdQVMbPnF3+ZhSMs8tCxN7oHddJE9fhNE7+lxdnlyemKfJRuA==", "dev": true, "license": "MIT", "dependencies": { - "@babel/code-frame": "^7.26.2", - "@babel/generator": "^7.27.0", - "@babel/parser": "^7.27.0", - "@babel/template": "^7.27.0", - "@babel/types": "^7.27.0", - "debug": "^4.3.1", - "globals": "^11.1.0" + "@babel/code-frame": "^7.29.0", + "@babel/generator": "^7.29.0", + "@babel/helper-globals": "^7.28.0", + "@babel/parser": "^7.29.0", + "@babel/template": "^7.28.6", + "@babel/types": "^7.29.0", + "debug": "^4.3.1" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/types": { - "version": "7.27.0", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.27.0.tgz", - "integrity": "sha512-H45s8fVLYjbhFH62dIJ3WtmJ6RSPt/3DRO0ZcT2SUiYiQyz3BLVb9ADEnLl91m74aQPS3AzzeajZHYOalWe3bg==", + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.29.0.tgz", + "integrity": "sha512-LwdZHpScM4Qz8Xw2iKSzS+cfglZzJGvofQICy7W7v4caru4EaAmyUuO6BGrbyQ2mYV11W0U8j5mBhd14dd3B0A==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-string-parser": "^7.25.9", - "@babel/helper-validator-identifier": "^7.25.9" + "@babel/helper-string-parser": "^7.27.1", + "@babel/helper-validator-identifier": "^7.28.5" }, "engines": { "node": ">=6.9.0" @@ -2699,17 +2728,25 @@ } }, "node_modules/@jridgewell/gen-mapping": { - "version": "0.3.5", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz", - "integrity": "sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==", + "version": "0.3.13", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.13.tgz", + "integrity": "sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==", "dev": true, + "license": "MIT", "dependencies": { - "@jridgewell/set-array": "^1.2.1", - "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/sourcemap-codec": "^1.5.0", + "@jridgewell/trace-mapping": "^0.3.24" + } + }, + "node_modules/@jridgewell/remapping": { + "version": "2.3.5", + "resolved": "https://registry.npmjs.org/@jridgewell/remapping/-/remapping-2.3.5.tgz", + "integrity": "sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.5", "@jridgewell/trace-mapping": "^0.3.24" - }, - "engines": { - "node": ">=6.0.0" } }, "node_modules/@jridgewell/resolve-uri": { @@ -2721,15 +2758,6 @@ "node": ">=6.0.0" } }, - "node_modules/@jridgewell/set-array": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz", - "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==", - "dev": true, - "engines": { - "node": ">=6.0.0" - } - }, "node_modules/@jridgewell/sourcemap-codec": { "version": "1.5.0", "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz", @@ -2737,10 +2765,11 @@ "dev": true }, "node_modules/@jridgewell/trace-mapping": { - "version": "0.3.25", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz", - "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==", + "version": "0.3.31", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.31.tgz", + "integrity": "sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==", "dev": true, + "license": "MIT", "dependencies": { "@jridgewell/resolve-uri": "^3.1.0", "@jridgewell/sourcemap-codec": "^1.4.14" @@ -2755,43 +2784,44 @@ }, "node_modules/@mat3ra/esse": { "version": "0.0.0", - "resolved": "git+ssh://git@github.com/Exabyte-io/esse.git#75ec994043d2dfadfff0c36a23ec9f6fbcf214e4", - "integrity": "sha512-qQl96uFmRcA1bP7fxQjSIbt5YtAJ5tcWQEQLgtcPXb1k6COrrc/HqkI5a8QyMxC8NclNosIAzM9myj5sQ+AK0w==", + "resolved": "git+ssh://git@github.com/Exabyte-io/esse.git#b5a1c0404a9f83b3189e2f1a1560a04257026331", + "integrity": "sha512-De8fKnddRNxNihLGDCs+mYbr3h6dvviOjA+kwLTcMaLnSbe+SwNcCV4CaOSgWvT+q6ABkF241WBZfmLVnNs1aw==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@babel/cli": "^7.27.0", - "@babel/core": "^7.26.10", - "@babel/eslint-parser": "^7.27.0", + "@babel/cli": "^7.28.6", + "@babel/core": "^7.29.0", + "@babel/eslint-parser": "^7.28.6", "@babel/plugin-proposal-class-properties": "^7.18.6", - "@babel/preset-env": "^7.26.9", - "@babel/preset-react": "^7.26.3", - "@babel/preset-typescript": "^7.27.0", - "@babel/register": "^7.25.9", - "@babel/runtime-corejs3": "^7.27.0", + "@babel/preset-env": "^7.29.0", + "@babel/preset-react": "^7.28.5", + "@babel/preset-typescript": "^7.28.5", + "@babel/register": "^7.28.6", + "@babel/runtime-corejs3": "^7.29.0", "@mat3ra/utils": "2026.3.7-0", "@types/chai": "^4.3.20", "@types/js-yaml": "^4.0.9", "@types/json-schema-merge-allof": "^0.6.5", "@types/mocha": "^10.0.10", - "ajv": "^8.17.1", + "ajv": "^8.18.0", "ajv-formats": "^2.1.1", - "js-yaml": "^4.1.0", + "js-yaml": "^4.1.1", "json-schema": "^0.4.0", "json-schema-deref-sync": "0.14.0", "json-schema-merge-allof": "^0.8.1", "json-schema-to-typescript": "^15.0.4", - "lodash": "4.17.21" + "lodash": "4.17.23" }, "engines": { "node": ">=14.0.0" } }, "node_modules/@mat3ra/esse/node_modules/ajv": { - "version": "8.17.1", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz", - "integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==", + "version": "8.18.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.18.0.tgz", + "integrity": "sha512-PlXPeEWMXMZ7sPYOHqmDyCJzcfNrUr3fGNKtezX14ykXOEIvyK81d+qydx89KY5O71FKMPaQ2vBfBFI5NHR63A==", "dev": true, + "license": "MIT", "dependencies": { "fast-deep-equal": "^3.1.3", "fast-uri": "^3.0.1", @@ -2807,7 +2837,8 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@mat3ra/tsconfig": { "version": "2024.6.3-0", @@ -4162,13 +4193,14 @@ } }, "node_modules/babel-plugin-polyfill-corejs2": { - "version": "0.4.11", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.11.tgz", - "integrity": "sha512-sMEJ27L0gRHShOh5G54uAAPaiCOygY/5ratXuiyb2G46FmlSpc9eFCzYVyDiPxfNbwzA7mYahmjQc5q+CZQ09Q==", + "version": "0.4.17", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.17.tgz", + "integrity": "sha512-aTyf30K/rqAsNwN76zYrdtx8obu0E4KoUME29B1xj+B3WxgvWkp943vYQ+z8Mv3lw9xHXMHpvSPOBxzAkIa94w==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/compat-data": "^7.22.6", - "@babel/helper-define-polyfill-provider": "^0.6.2", + "@babel/compat-data": "^7.28.6", + "@babel/helper-define-polyfill-provider": "^0.6.8", "semver": "^6.3.1" }, "peerDependencies": { @@ -4180,31 +4212,33 @@ "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "dev": true, + "license": "ISC", "bin": { "semver": "bin/semver.js" } }, "node_modules/babel-plugin-polyfill-corejs3": { - "version": "0.11.1", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.11.1.tgz", - "integrity": "sha512-yGCqvBT4rwMczo28xkH/noxJ6MZ4nJfkVYdoDaC/utLtWrXxv27HVrzAeSbqR8SxDsp46n0YF47EbHoixy6rXQ==", + "version": "0.14.2", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.14.2.tgz", + "integrity": "sha512-coWpDLJ410R781Npmn/SIBZEsAetR4xVi0SxLMXPaMO4lSf1MwnkGYMtkFxew0Dn8B3/CpbpYxN0JCgg8mn67g==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-define-polyfill-provider": "^0.6.3", - "core-js-compat": "^3.40.0" + "@babel/helper-define-polyfill-provider": "^0.6.8", + "core-js-compat": "^3.48.0" }, "peerDependencies": { "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" } }, "node_modules/babel-plugin-polyfill-regenerator": { - "version": "0.6.2", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.6.2.tgz", - "integrity": "sha512-2R25rQZWP63nGwaAswvDazbPXfrM3HwVoBXK6HcqeKrSrL/JqcC/rDcf95l4r7LXLyxDXc8uQDa064GubtCABg==", + "version": "0.6.8", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.6.8.tgz", + "integrity": "sha512-M762rNHfSF1EV3SLtnCJXFoQbbIIz0OyRwnCmV0KPC7qosSfCO0QLTSuJX3ayAebubhE6oYBAYPrBA5ljowaZg==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-define-polyfill-provider": "^0.6.2" + "@babel/helper-define-polyfill-provider": "^0.6.8" }, "peerDependencies": { "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" @@ -4216,6 +4250,19 @@ "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", "dev": true }, + "node_modules/baseline-browser-mapping": { + "version": "2.10.13", + "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.10.13.tgz", + "integrity": "sha512-BL2sTuHOdy0YT1lYieUxTw/QMtPBC3pmlJC6xk8BBYVv6vcw3SGdKemQ+Xsx9ik2F/lYDO9tqsFQH1r9PFuHKw==", + "dev": true, + "license": "Apache-2.0", + "bin": { + "baseline-browser-mapping": "dist/cli.cjs" + }, + "engines": { + "node": ">=6.0.0" + } + }, "node_modules/binary-extensions": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz", @@ -4257,9 +4304,9 @@ "dev": true }, "node_modules/browserslist": { - "version": "4.24.4", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.24.4.tgz", - "integrity": "sha512-KDi1Ny1gSePi1vm0q4oxSF8b4DR44GF4BbmS2YdhPLOEqd8pDviZOGH/GsmRwoWJ2+5Lr085X7naowMwKHDG1A==", + "version": "4.28.2", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.28.2.tgz", + "integrity": "sha512-48xSriZYYg+8qXna9kwqjIVzuQxi+KYWp2+5nCYnYKPTr0LvD89Jqk2Or5ogxz0NUMfIjhh2lIUX/LyX9B4oIg==", "dev": true, "funding": [ { @@ -4277,10 +4324,11 @@ ], "license": "MIT", "dependencies": { - "caniuse-lite": "^1.0.30001688", - "electron-to-chromium": "^1.5.73", - "node-releases": "^2.0.19", - "update-browserslist-db": "^1.1.1" + "baseline-browser-mapping": "^2.10.12", + "caniuse-lite": "^1.0.30001782", + "electron-to-chromium": "^1.5.328", + "node-releases": "^2.0.36", + "update-browserslist-db": "^1.2.3" }, "bin": { "browserslist": "cli.js" @@ -4375,9 +4423,9 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001710", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001710.tgz", - "integrity": "sha512-B5C0I0UmaGqHgo5FuqJ7hBd4L57A4dDD+Xi+XX1nXOoxGeDdY4Ko38qJYOyqznBVJEqON5p8P1x5zRR3+rsnxA==", + "version": "1.0.30001784", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001784.tgz", + "integrity": "sha512-WU346nBTklUV9YfUl60fqRbU5ZqyXlqvo1SgigE1OAXK5bFL8LL9q1K7aap3N739l4BvNqnkm3YrGHiY9sfUQw==", "dev": true, "funding": [ { @@ -4728,13 +4776,13 @@ "dev": true }, "node_modules/core-js-compat": { - "version": "3.41.0", - "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.41.0.tgz", - "integrity": "sha512-RFsU9LySVue9RTwdDVX/T0e2Y6jRYWXERKElIjpuEOEnxaXffI0X7RUwVzfYLfzuLXSNJDYoRYUAmRUcyln20A==", + "version": "3.49.0", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.49.0.tgz", + "integrity": "sha512-VQXt1jr9cBz03b331DFDCCP90b3fanciLkgiOoy8SBHy06gNf+vQ1A3WFLqG7I8TipYIKeYK9wxd0tUrvHcOZA==", "dev": true, "license": "MIT", "dependencies": { - "browserslist": "^4.24.4" + "browserslist": "^4.28.1" }, "funding": { "type": "opencollective", @@ -4742,11 +4790,12 @@ } }, "node_modules/core-js-pure": { - "version": "3.38.1", - "resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.38.1.tgz", - "integrity": "sha512-BY8Etc1FZqdw1glX0XNOq2FDwfrg/VGqoZOZCdaL+UmdaqDwQwYXkMJT4t6In+zfEfOJDcM9T0KdbBeJg8KKCQ==", + "version": "3.49.0", + "resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.49.0.tgz", + "integrity": "sha512-XM4RFka59xATyJv/cS3O3Kml72hQXUeGRuuTmMYFxwzc9/7C8OYTaIR/Ji+Yt8DXzsFLNhat15cE/JP15HrCgw==", "dev": true, "hasInstallScript": true, + "license": "MIT", "funding": { "type": "opencollective", "url": "https://opencollective.com/core-js" @@ -4850,10 +4899,11 @@ } }, "node_modules/debug": { - "version": "4.3.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz", - "integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==", + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz", + "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==", "dev": true, + "license": "MIT", "dependencies": { "ms": "^2.1.3" }, @@ -5031,9 +5081,9 @@ "dev": true }, "node_modules/electron-to-chromium": { - "version": "1.5.132", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.132.tgz", - "integrity": "sha512-QgX9EBvWGmvSRa74zqfnG7+Eno0Ak0vftBll0Pt2/z5b3bEGYL6OUXLgKPtvx73dn3dvwrlyVkjPKRRlhLYTEg==", + "version": "1.5.331", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.331.tgz", + "integrity": "sha512-IbxXrsTlD3hRodkLnbxAPP4OuJYdWCeM3IOdT+CpcMoIwIoDfCmRpEtSPfwBXxVkg9xmBeY7Lz2Eo2TDn/HC3Q==", "dev": true, "license": "ISC" }, @@ -6459,15 +6509,6 @@ "node": ">= 6" } }, - "node_modules/globals": { - "version": "11.12.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", - "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", - "dev": true, - "engines": { - "node": ">=4" - } - }, "node_modules/globalthis": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.4.tgz", @@ -6862,10 +6903,11 @@ } }, "node_modules/is-core-module": { - "version": "2.15.1", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.15.1.tgz", - "integrity": "sha512-z0vtXSwucUJtANQWldhbtbt7BnL0vxiFjIdDLAatwhDYty2bad6s+rijD6Ri4YuYJubLzIJLUidCh09e1djEVQ==", + "version": "2.16.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.16.1.tgz", + "integrity": "sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==", "dev": true, + "license": "MIT", "dependencies": { "hasown": "^2.0.2" }, @@ -7441,9 +7483,10 @@ "dev": true }, "node_modules/js-yaml": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", - "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.1.tgz", + "integrity": "sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA==", + "license": "MIT", "dependencies": { "argparse": "^2.0.1" }, @@ -7462,10 +7505,11 @@ } }, "node_modules/jsesc": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.0.2.tgz", - "integrity": "sha512-xKqzzWXDttJuOcawBt4KnKHHIf5oQ/Cxax+0PWFG+DFDgHNAdi+TXECADI+RYiFUMmx8792xsMbbgXj4CwnP4g==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.1.0.tgz", + "integrity": "sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==", "dev": true, + "license": "MIT", "bin": { "jsesc": "bin/jsesc" }, @@ -7819,9 +7863,10 @@ } }, "node_modules/lodash": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" + "version": "4.17.23", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.23.tgz", + "integrity": "sha512-LgVTMpQtIopCi79SJeDiP0TfWi5CNEc/L/aRdTh3yIvmZXTnheWpKjSZhnvMl8iXbC1tFg9gdHHDMLoV7CnG+w==", + "license": "MIT" }, "node_modules/lodash.debounce": { "version": "4.0.8", @@ -8375,9 +8420,9 @@ } }, "node_modules/node-releases": { - "version": "2.0.19", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.19.tgz", - "integrity": "sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw==", + "version": "2.0.37", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.37.tgz", + "integrity": "sha512-1h5gKZCF+pO/o3Iqt5Jp7wc9rH3eJJ0+nh/CIoiRwjRxde/hAHyLPXYN4V3CqKAbiZPSeJFSWHmJsbkicta0Eg==", "dev": true, "license": "MIT" }, @@ -9022,10 +9067,11 @@ } }, "node_modules/picocolors": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.0.tgz", - "integrity": "sha512-TQ92mBOW0l3LeMeyLV6mzy/kWr8lkd/hp3mTg7wYK7zJhuBStmGMBG0BdeDZS/dZx1IukaX6Bk11zcln25o1Aw==", - "dev": true + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", + "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", + "dev": true, + "license": "ISC" }, "node_modules/picomatch": { "version": "2.3.1", @@ -9243,9 +9289,9 @@ "license": "MIT" }, "node_modules/regenerate-unicode-properties": { - "version": "10.2.0", - "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.2.0.tgz", - "integrity": "sha512-DqHn3DwbmmPVzeKj9woBadqmXxLvQoQIwu7nopMc72ztvxVmVk2SBhSnx67zuye5TP+lJsb/TBQsjLKhnDf3MA==", + "version": "10.2.2", + "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.2.2.tgz", + "integrity": "sha512-m03P+zhBeQd1RGnYxrGyDAPpWX/epKirLrp8e3qevZdVkKtnCrjjWczIbYc8+xd6vcTStVlqfycTx1KR4LOr0g==", "dev": true, "license": "MIT", "dependencies": { @@ -9261,16 +9307,6 @@ "integrity": "sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==", "dev": true }, - "node_modules/regenerator-transform": { - "version": "0.15.2", - "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.15.2.tgz", - "integrity": "sha512-hfMp2BoF0qOk3uc5V20ALGDS2ddjQaLrdl7xrGXvAIow7qeWRM2VA2HuCHkUKk9slq3VwEwLNK3DFBqDfPGYtg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/runtime": "^7.8.4" - } - }, "node_modules/regexp.prototype.flags": { "version": "1.5.2", "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.2.tgz", @@ -9302,18 +9338,18 @@ } }, "node_modules/regexpu-core": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-6.2.0.tgz", - "integrity": "sha512-H66BPQMrv+V16t8xtmq+UC0CBpiTBA60V8ibS1QVReIp8T1z8hwFxqcGzm9K6lgsN7sB5edVH8a+ze6Fqm4weA==", + "version": "6.4.0", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-6.4.0.tgz", + "integrity": "sha512-0ghuzq67LI9bLXpOX/ISfve/Mq33a4aFRzoQYhnnok1JOFpmE/A2TBGkNVenOGEeSBCjIiWcc6MVOG5HEQv0sA==", "dev": true, "license": "MIT", "dependencies": { "regenerate": "^1.4.2", - "regenerate-unicode-properties": "^10.2.0", + "regenerate-unicode-properties": "^10.2.2", "regjsgen": "^0.8.0", - "regjsparser": "^0.12.0", + "regjsparser": "^0.13.0", "unicode-match-property-ecmascript": "^2.0.0", - "unicode-match-property-value-ecmascript": "^2.1.0" + "unicode-match-property-value-ecmascript": "^2.2.1" }, "engines": { "node": ">=4" @@ -9327,13 +9363,13 @@ "license": "MIT" }, "node_modules/regjsparser": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.12.0.tgz", - "integrity": "sha512-cnE+y8bz4NhMjISKbgeVJtqNbtf5QpjZP+Bslo+UqkIt9QPnX9q095eiRRASJG1/tz6dlNr6Z5NsBiWYokp6EQ==", + "version": "0.13.0", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.13.0.tgz", + "integrity": "sha512-NZQZdC5wOE/H3UT28fVGL+ikOZcEzfMGk/c3iN9UGxzWHMa1op7274oyiUVrAG4B2EuFhus8SvkaYnhvW92p9Q==", "dev": true, "license": "BSD-2-Clause", "dependencies": { - "jsesc": "~3.0.2" + "jsesc": "~3.1.0" }, "bin": { "regjsparser": "bin/parser" @@ -9385,18 +9421,22 @@ } }, "node_modules/resolve": { - "version": "1.22.8", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz", - "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==", + "version": "1.22.11", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.11.tgz", + "integrity": "sha512-RfqAvLnMl313r7c9oclB1HhUEAezcpLjz95wFH4LVuhk9JF/r22qmVP9AMmOU4vMX7Q8pN8jwNg/CSpdFnMjTQ==", "dev": true, + "license": "MIT", "dependencies": { - "is-core-module": "^2.13.0", + "is-core-module": "^2.16.1", "path-parse": "^1.0.7", "supports-preserve-symlinks-flag": "^1.0.0" }, "bin": { "resolve": "bin/resolve" }, + "engines": { + "node": ">= 0.4" + }, "funding": { "url": "https://github.com/sponsors/ljharb" } @@ -10535,9 +10575,9 @@ } }, "node_modules/unicode-match-property-value-ecmascript": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.2.0.tgz", - "integrity": "sha512-4IehN3V/+kkr5YeSSDDQG8QLqO26XpL2XP3GQtqwlT/QYSECAwFztxVHjlbh0+gjJ3XmNLS0zDsbgs9jWKExLg==", + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.2.1.tgz", + "integrity": "sha512-JQ84qTuMg4nVkx8ga4A16a1epI9H6uTXAknqxkGF/aFfRLw1xC/Bp24HNLaZhHSkWd3+84t8iXnp1J0kYcZHhg==", "dev": true, "license": "MIT", "engines": { @@ -10545,9 +10585,9 @@ } }, "node_modules/unicode-property-aliases-ecmascript": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.1.0.tgz", - "integrity": "sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w==", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.2.0.tgz", + "integrity": "sha512-hpbDzxUY9BFwX+UeBnxv3Sh1q7HFxj48DTmXchNgRa46lO8uj3/1iEn3MiNUYTg1g9ctIqXCCERn8gYZhHC5lQ==", "dev": true, "license": "MIT", "engines": { @@ -10555,9 +10595,9 @@ } }, "node_modules/update-browserslist-db": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.1.tgz", - "integrity": "sha512-R8UzCaa9Az+38REPiJ1tXlImTJXlVfgHZsglwBD/k6nj76ctsH1E3q4doGrukiLQd3sGQYu56r5+lo5r94l29A==", + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.2.3.tgz", + "integrity": "sha512-Js0m9cx+qOgDxo0eMiFGEueWztz+d4+M3rGlmKPT+T4IS/jP4ylw3Nwpu6cpTTP8R1MAC1kF4VbdLt3ARf209w==", "dev": true, "funding": [ { @@ -10573,9 +10613,10 @@ "url": "https://github.com/sponsors/ai" } ], + "license": "MIT", "dependencies": { "escalade": "^3.2.0", - "picocolors": "^1.1.0" + "picocolors": "^1.1.1" }, "bin": { "update-browserslist-db": "cli.js" diff --git a/package.json b/package.json index 0f7181b3..a40886b2 100644 --- a/package.json +++ b/package.json @@ -55,7 +55,7 @@ "@babel/register": "^7.25.7", "@babel/runtime-corejs3": "^7.25.7", "@exabyte-io/eslint-config": "^2025.1.15-0", - "@mat3ra/esse": "git+https://github.com/Exabyte-io/esse#75ec994043d2dfadfff0c36a23ec9f6fbcf214e4", + "@mat3ra/esse": "git+https://github.com/Exabyte-io/esse#b5a1c0404a9f83b3189e2f1a1560a04257026331", "@mat3ra/tsconfig": "2024.6.3-0", "@types/chai": "^4.3.20", "@types/crypto-js": "^4.2.2", diff --git a/scripts/generate-mixins.ts b/scripts/generate-mixins.ts index 4adab4d4..0108f2fc 100644 --- a/scripts/generate-mixins.ts +++ b/scripts/generate-mixins.ts @@ -30,6 +30,7 @@ const OUTPUT_PATHS = { "system/name": "src/js/generated/NamedEntitySchemaMixin.ts", "system/tags": "src/js/generated/TaggableSchemaMixin.ts", "system/runtime-items": "src/js/generated/RuntimeItemsSchemaMixin.ts", + "system/in-set": "src/js/generated/InSetSchemaMixin.ts", }; function main() { diff --git a/src/js/entity/index.ts b/src/js/entity/index.ts index f7fd3408..87a1098c 100644 --- a/src/js/entity/index.ts +++ b/src/js/entity/index.ts @@ -1,5 +1,4 @@ import { InMemoryEntity } from "./in_memory"; -import HasScopeTrackMixin from "./mixins/HasScopeTrackMixin"; import { DefaultableInMemoryEntity, HasConsistencyChecksHasMetadataNamedDefaultableInMemoryEntity, @@ -10,7 +9,7 @@ import { import { InMemoryEntitySet } from "./set"; import { ENTITY_SET_TYPES } from "./set/enums"; import { constructEntitySetFactoryByConfig } from "./set/factory"; -import { InMemoryEntityInSetMixin, InMemoryEntitySetMixin } from "./set/mixins"; +import { InMemoryEntitySetMixin } from "./set/mixins"; import { OrderedInMemoryEntityInSetMixin, OrderedInMemoryEntitySetMixin, @@ -29,8 +28,6 @@ export { constructEntitySetFactoryByConfig, selectorsForEntitySet, InMemoryEntitySetMixin, - InMemoryEntityInSetMixin, OrderedInMemoryEntitySetMixin, OrderedInMemoryEntityInSetMixin, - HasScopeTrackMixin, }; diff --git a/src/js/entity/mixins/ContextAndRenderFieldsMixin.ts b/src/js/entity/mixins/ContextAndRenderFieldsMixin.ts deleted file mode 100644 index 442064fc..00000000 --- a/src/js/entity/mixins/ContextAndRenderFieldsMixin.ts +++ /dev/null @@ -1,39 +0,0 @@ -import type { AnyObject } from "@mat3ra/esse/dist/js/esse/types"; - -import type { InMemoryEntity } from "../in_memory"; - -export type Context = AnyObject; - -export type ContextAndRenderFields = { - context?: Context; - updateContext(ctx: Context): void; - getPersistentContext(): Context | undefined; - updatePersistentContext(ctx: Context): void; - getCombinedContext(): Context; -}; - -type AbstractBase = { - render(ctx: Context): void; -}; - -export function contextAndRenderFieldsMixin( - item: T, -): asserts item is T & ContextAndRenderFields { - // @ts-expect-error - const properties: InMemoryEntity & ContextAndRenderFields = { - updateContext(ctx: Context) { - this.context = { ...this.context, ...ctx }; - }, - getPersistentContext() { - return this.prop("context"); - }, - updatePersistentContext(ctx: Context) { - this.setProp("context", { ...ctx }); - }, - getCombinedContext() { - return { ...this.getPersistentContext(), ...this.context }; - }, - }; - - Object.defineProperties(item, Object.getOwnPropertyDescriptors(properties)); -} diff --git a/src/js/entity/mixins/HasScopeTrackMixin.ts b/src/js/entity/mixins/HasScopeTrackMixin.ts index 195602bb..12e1ec54 100644 --- a/src/js/entity/mixins/HasScopeTrackMixin.ts +++ b/src/js/entity/mixins/HasScopeTrackMixin.ts @@ -1,19 +1,24 @@ -import type { Constructor } from "../../utils/types"; -import { InMemoryEntity, InMemoryEntityConstructor } from "../in_memory"; +import { InMemoryEntity } from "../in_memory"; + +type ScopeTrackDescriptor = { + get scopeTrack(): unknown[]; + set scopeTrack(array: unknown[]); +}; function schemaMixin(item: InMemoryEntity) { - const schema = { + // @ts-expect-error + const properties: InMemoryEntity & ScopeTrackDescriptor = { get scopeTrack(): unknown[] { - return item.prop("scopeTrack", []); + return this.prop("scopeTrack", []); }, set scopeTrack(array: unknown[]) { - item.setProp("scopeTrack", array); + this.setProp("scopeTrack", array); }, }; - Object.defineProperties(item, Object.getOwnPropertyDescriptors(schema)); + Object.defineProperties(item, Object.getOwnPropertyDescriptors(properties)); - return schema; + return properties; } export function hasScopeTrackMixin(item: InMemoryEntity) { @@ -21,16 +26,3 @@ export function hasScopeTrackMixin(item: InMemoryEntity) { } export type HasScopeTrackInMemoryEntity = ReturnType; -export type HasScopeTrackInMemoryEntityConstructor = Constructor; - -export default function HasScopeTrackMixin(superclass: S) { - class HasScopeTrackMixin extends superclass { - // eslint-disable-next-line @typescript-eslint/no-explicit-any - constructor(...args: any[]) { - super(...args); - hasScopeTrackMixin(this); - } - } - - return HasScopeTrackMixin as S & HasScopeTrackInMemoryEntityConstructor; -} diff --git a/src/js/entity/mixins/flowchart.ts b/src/js/entity/mixins/flowchart.ts deleted file mode 100644 index 951f783c..00000000 --- a/src/js/entity/mixins/flowchart.ts +++ /dev/null @@ -1,83 +0,0 @@ -import findIndex from "lodash/findIndex"; - -import { addUnit, getUUID, removeUnit, replaceUnit } from "../../utils"; -import { UnitEntity } from "../../utils/graph"; -import { InMemoryEntityConstructor } from "../in_memory"; - -export function FlowchartItemMixin(superclass: T) { - return class extends superclass implements UnitEntity { - // eslint-disable-next-line @typescript-eslint/no-explicit-any - constructor(...params: any[]) { - super(...params); - - const config = params[0]; - - if (!config?.flowchartId) { - this.setProp("flowchartId", getUUID()); - } - } - - get flowchartId(): string { - return this.prop("flowchartId", ""); - } - - get head(): boolean { - return this.prop("head", false); - } - - set head(bool) { - this.setProp("head", bool); - } - - get next() { - return this.prop("next"); - } - - set next(flowchartId: string | undefined) { - this.setProp("next", flowchartId); - } - }; -} - -export function FlowchartEntityMixin(superclass: T) { - return class extends superclass { - _units: UnitEntity[]; - - // eslint-disable-next-line @typescript-eslint/no-explicit-any - constructor(...params: any[]) { - super(...params); - - this._units = params[0]?.units || []; - } - - get units() { - return this._units; - } - - setUnits(units: UnitEntity[]) { - this._units = units; - } - - addUnit(unit: UnitEntity, index = -1) { - this._units = addUnit(this.units, unit, index); - } - - removeUnit(flowchartId: string) { - this._units = removeUnit(this.units, flowchartId); - } - - replaceUnit(unit: UnitEntity, index: number) { - this._units = replaceUnit(this.units, unit, index); - } - - getUnit(flowchartId: string) { - return this.units.find((x) => x.flowchartId === flowchartId); - } - - getUnitIndexByFlowchartId(flowchartId: string) { - return findIndex(this.units, (unit) => { - return unit.flowchartId === flowchartId; - }); - } - }; -} diff --git a/src/js/entity/mixins/hash.ts b/src/js/entity/mixins/hash.ts deleted file mode 100644 index 6a62b741..00000000 --- a/src/js/entity/mixins/hash.ts +++ /dev/null @@ -1,24 +0,0 @@ -import { calculateHashFromObject } from "../../utils/hash"; -import { InMemoryEntityConstructor } from "../in_memory"; - -export function HashedEntityMixin(superclass: T) { - return class extends superclass { - /* - * @summary Returns an object based on meaningful fields for this unit, that will be used to calculate the hash - * Must be overridden. - */ - // eslint-disable-next-line class-methods-use-this - getHashObject() { - return {}; - } - - /** - * @summary Calculates hash based on meaningful fields and unit-specific fields. Unit-specific fields are - * separated into _typeSpecificHash function which can be overwritten by child classes. - * head and next are also important but not considered since they are included in subworkflow hash. - */ - calculateHash() { - return calculateHashFromObject(this.getHashObject()); - } - }; -} diff --git a/src/js/entity/mixins/props.ts b/src/js/entity/mixins/props.ts deleted file mode 100644 index cc83669e..00000000 --- a/src/js/entity/mixins/props.ts +++ /dev/null @@ -1,3 +0,0 @@ -import HasScopeTrackMixin from "./HasScopeTrackMixin"; - -export { HasScopeTrackMixin }; diff --git a/src/js/entity/set.ts b/src/js/entity/set.ts index d7399084..02179b27 100644 --- a/src/js/entity/set.ts +++ b/src/js/entity/set.ts @@ -1,7 +1,10 @@ import { InMemoryEntity } from "./in_memory"; +import { inMemoryEntityInSetMixin } from "./set/InMemoryEntityInSetMixin"; import InMemoryEntitySetBaseMixin from "./set/InMemoryEntitySetBaseMixin"; -import { InMemoryEntityInSetMixin, InMemoryEntitySetMixin } from "./set/mixins"; +import { InMemoryEntitySetMixin } from "./set/mixins"; export class InMemoryEntitySet extends InMemoryEntitySetMixin( - InMemoryEntityInSetMixin(InMemoryEntitySetBaseMixin(InMemoryEntity)), + InMemoryEntitySetBaseMixin(InMemoryEntity), ) {} + +inMemoryEntityInSetMixin(InMemoryEntitySet.prototype); diff --git a/src/js/entity/set/InMemoryEntityInSetMixin.ts b/src/js/entity/set/InMemoryEntityInSetMixin.ts index ae6ac06b..f9cd9d17 100644 --- a/src/js/entity/set/InMemoryEntityInSetMixin.ts +++ b/src/js/entity/set/InMemoryEntityInSetMixin.ts @@ -1,23 +1,19 @@ /* eslint-disable @typescript-eslint/no-explicit-any */ import { SystemInSetSchema } from "@mat3ra/esse/dist/js/types"; -import type { Constructor } from "../../utils/types"; +import { inSetSchemaMixin } from "../../generated/InSetSchemaMixin"; import { type InMemoryEntity } from "../in_memory"; export type SystemInSet = Required; export type InSet = SystemInSet["inSet"][0]; -export function inMemoryEntityInSetMixin(item: E) { - // @ts-expect-error - const properties: SystemInSet & InSetPropertiesInMemoryEntity & E = { - get inSet() { - return this.prop("inSet", []); - }, - - set inSet(inSet: InSet[]) { - this.setProp("inSet", inSet); - }, +export function inMemoryEntityInSetMixin( + item: E, +): asserts item is E & InMemoryEntityInSet { + inSetSchemaMixin(item); + // @ts-expect-error + const properties: InMemoryEntity & InMemoryEntityInSet = { getInSetFilteredByCls(cls: string) { return this.inSet.filter((ref) => ref.cls === cls); }, @@ -38,14 +34,3 @@ export type InSetPropertiesInMemoryEntity = { }; export type InMemoryEntityInSet = SystemInSet & InSetPropertiesInMemoryEntity; -export type InMemoryEntityInSetConstructor = Constructor; - -type Base = Constructor; - -export default function InMemoryEntityInSetMixin(superclass: S) { - class InMemoryEntityInSetMixin extends superclass {} - - inMemoryEntityInSetMixin(InMemoryEntityInSetMixin.prototype); - - return InMemoryEntityInSetMixin as S & InMemoryEntityInSetConstructor; -} diff --git a/src/js/entity/set/InMemoryEntitySetBaseMixin.ts b/src/js/entity/set/InMemoryEntitySetBaseMixin.ts index 355f7c93..0849f47a 100644 --- a/src/js/entity/set/InMemoryEntitySetBaseMixin.ts +++ b/src/js/entity/set/InMemoryEntitySetBaseMixin.ts @@ -13,41 +13,47 @@ export enum EntitySetType { } function schemaMixin(item: E) { - const schema = { + // @ts-expect-error + const properties: InMemoryEntity & EntitySetSchema = { get isEntitySet() { - return item.prop("isEntitySet", false); + return this.prop("isEntitySet", false); }, get entitySetType() { - return item.prop("entitySetType", EntitySetType.unordered); + return this.prop("entitySetType", EntitySetType.unordered); }, get entityCls() { - return item.prop("entityCls"); + return this.prop("entityCls"); }, - } satisfies EntitySetSchema; + }; - Object.defineProperties(item, Object.getOwnPropertyDescriptors(schema)); + Object.defineProperties(item, Object.getOwnPropertyDescriptors(properties)); - return schema; + return properties; } +type EntitySetBaseMethodsDescriptor = { + toJSONForInclusionInEntity(): { _id: string; type: string }; +}; + function methodsMixin(item: E & EntitySetSchema) { const originalCls = item.cls; - const methods = { + // @ts-expect-error + const properties: InMemoryEntity & EntitySetSchema & EntitySetBaseMethodsDescriptor = { get cls() { - return item.entityCls || originalCls; + return this.entityCls || originalCls; }, toJSONForInclusionInEntity() { - const { _id, type } = item.toJSON() as { _id: string; type: string }; + const { _id, type } = this.toJSON() as { _id: string; type: string }; return { _id, type }; }, }; - Object.defineProperties(item, Object.getOwnPropertyDescriptors(methods)); + Object.defineProperties(item, Object.getOwnPropertyDescriptors(properties)); - return methods; + return properties; } export function inMemoryEntitySetBaseMixin(item: T) { diff --git a/src/js/entity/set/enums.ts b/src/js/entity/set/enums.ts index a0cdf4cf..c08714f7 100644 --- a/src/js/entity/set/enums.ts +++ b/src/js/entity/set/enums.ts @@ -1,4 +1,4 @@ export const ENTITY_SET_TYPES = { unordered: "unordered", ordered: "ordered", -}; +} as const; diff --git a/src/js/entity/set/factory.ts b/src/js/entity/set/factory.ts index e6a144e1..5ca202f1 100644 --- a/src/js/entity/set/factory.ts +++ b/src/js/entity/set/factory.ts @@ -3,10 +3,9 @@ import { EntitySetSchema } from "@mat3ra/esse/dist/js/types"; import { InMemoryEntitySet } from "../set"; import { ENTITY_SET_TYPES } from "./enums"; -import { OrderedInMemoryEntitySet } from "./ordered"; export const constructEntitySetFactoryByConfig = - ({ entitySetCls = InMemoryEntitySet, orderedEntitySetCls = OrderedInMemoryEntitySet }) => + ({ entitySetCls = InMemoryEntitySet, orderedEntitySetCls = InMemoryEntitySet }) => (config: AnyObject, entityCls: EntitySetSchema["entityCls"]) => { const Cls = config.entitySetType === ENTITY_SET_TYPES.ordered ? orderedEntitySetCls : entitySetCls; diff --git a/src/js/entity/set/mixins.ts b/src/js/entity/set/mixins.ts index 28077adb..fe9f85c0 100644 --- a/src/js/entity/set/mixins.ts +++ b/src/js/entity/set/mixins.ts @@ -1,5 +1,3 @@ -/* eslint-disable @typescript-eslint/no-explicit-any */ -import InMemoryEntityInSetMixin from "./InMemoryEntityInSetMixin"; import InMemoryEntitySetMixin from "./InMemoryEntitySetMixin"; -export { InMemoryEntityInSetMixin, InMemoryEntitySetMixin }; +export { InMemoryEntitySetMixin }; diff --git a/src/js/entity/set/ordered.ts b/src/js/entity/set/ordered.ts deleted file mode 100644 index 22f0b18b..00000000 --- a/src/js/entity/set/ordered.ts +++ /dev/null @@ -1,6 +0,0 @@ -import { InMemoryEntitySet } from "../set"; -import { OrderedInMemoryEntityInSetMixin, OrderedInMemoryEntitySetMixin } from "./ordered/mixins"; - -export const OrderedInMemoryEntitySet = OrderedInMemoryEntitySetMixin( - OrderedInMemoryEntityInSetMixin(InMemoryEntitySet), -); diff --git a/src/js/entity/set/ordered/OrderedInMemoryEntityInSetMixin.ts b/src/js/entity/set/ordered/OrderedInMemoryEntityInSetMixin.ts index 8c1197e8..87e6da9a 100644 --- a/src/js/entity/set/ordered/OrderedInMemoryEntityInSetMixin.ts +++ b/src/js/entity/set/ordered/OrderedInMemoryEntityInSetMixin.ts @@ -2,10 +2,7 @@ import type { Constructor } from "../../../utils/types"; import { type InMemoryEntity } from "../../in_memory"; -import type { - InMemoryEntityInSet, - InMemoryEntityInSetConstructor, -} from "../InMemoryEntityInSetMixin"; +import type { InMemoryEntityInSet } from "../InMemoryEntityInSetMixin"; export function orderedEntityInSetMixin(item: InMemoryEntity & InMemoryEntityInSet) { const properties = { @@ -23,7 +20,7 @@ export function orderedEntityInSetMixin(item: InMemoryEntity & InMemoryEntityInS export type OrderedInMemoryEntityInSet = ReturnType; export type OrderedInMemoryEntityInSetConstructor = Constructor; -type Base = Constructor & InMemoryEntityInSetConstructor; +type Base = Constructor & Constructor; export default function OrderedInMemoryEntityInSetMixin(superclass: S) { class OrderedInMemoryEntityInSetMixin extends superclass { diff --git a/src/js/generateSchemaMixin.ts b/src/js/generateSchemaMixin.ts index 17dd90da..a7447abe 100644 --- a/src/js/generateSchemaMixin.ts +++ b/src/js/generateSchemaMixin.ts @@ -177,10 +177,13 @@ function generateMixinFromSchemaId( // Extract schema name from title for import let schemaName; if (schema.title) { - // Convert title to proper schema name + // Split on spaces and hyphens so titles like "System in-set schema" become SystemInSetSchema, + // not SystemIn-setSchema (hyphens are not valid in TS identifiers). schemaName = schema.title .split(/\s+/) - .map((word) => word.charAt(0).toUpperCase() + word.slice(1)) + .flatMap((word) => word.split("-")) + .filter((segment) => segment.length > 0) + .map((segment) => segment.charAt(0).toUpperCase() + segment.slice(1)) .join(""); } else { // Convert schema ID to proper schema name diff --git a/src/js/generated/HasConsistencyChecksSchemaMixin.ts b/src/js/generated/HasConsistencyChecksSchemaMixin.ts index 4dbba886..34b9636b 100644 --- a/src/js/generated/HasConsistencyChecksSchemaMixin.ts +++ b/src/js/generated/HasConsistencyChecksSchemaMixin.ts @@ -12,7 +12,10 @@ export function hasConsistencyChecksSchemaMixin( // @ts-expect-error const properties: InMemoryEntity & HasConsistencyChecksSchemaMixin = { get consistencyChecks() { - return this.prop("consistencyChecks"); + return this.prop( + "consistencyChecks", + [], + ); }, set consistencyChecks(value: HasConsistencyCheckSchema["consistencyChecks"]) { this.setProp("consistencyChecks", value); diff --git a/src/js/generated/InSetSchemaMixin.ts b/src/js/generated/InSetSchemaMixin.ts new file mode 100644 index 00000000..40f37f4e --- /dev/null +++ b/src/js/generated/InSetSchemaMixin.ts @@ -0,0 +1,23 @@ +import type { SystemInSetSchema } from "@mat3ra/esse/dist/js/types"; + +import type { InMemoryEntity } from "../entity/in_memory"; + +export type InSetSchemaMixin = SystemInSetSchema; + +export type InSetInMemoryEntity = InMemoryEntity & InSetSchemaMixin; + +export function inSetSchemaMixin( + item: InMemoryEntity, +): asserts item is T & InSetSchemaMixin { + // @ts-expect-error + const properties: InMemoryEntity & InSetSchemaMixin = { + get inSet() { + return this.requiredProp("inSet"); + }, + set inSet(value: SystemInSetSchema["inSet"]) { + this.setProp("inSet", value); + }, + }; + + Object.defineProperties(item, Object.getOwnPropertyDescriptors(properties)); +} diff --git a/src/js/generated/TaggableSchemaMixin.ts b/src/js/generated/TaggableSchemaMixin.ts index c7f2a2cc..2c3fc837 100644 --- a/src/js/generated/TaggableSchemaMixin.ts +++ b/src/js/generated/TaggableSchemaMixin.ts @@ -12,7 +12,7 @@ export function taggableSchemaMixin( // @ts-expect-error const properties: InMemoryEntity & TaggableSchemaMixin = { get tags() { - return this.prop("tags"); + return this.prop("tags", []); }, set tags(value: EntityTagsSchema["tags"]) { this.setProp("tags", value); diff --git a/tests/js/generateSchemaMixin.tests.ts b/tests/js/generateSchemaMixin.tests.ts index 75875856..92f0e371 100644 --- a/tests/js/generateSchemaMixin.tests.ts +++ b/tests/js/generateSchemaMixin.tests.ts @@ -91,6 +91,29 @@ describe("generateSchemaMixin Tests", function () { }); }); + describe("generateShemaMixin - Schema title normalization", () => { + it("should produce valid TS identifiers when title words contain hyphens", () => { + const schemasWithHyphenTitle: JSONSchema7[] = [ + { + $id: "system/in-set", + title: "System in-set schema", + type: "object", + properties: { + inSet: { type: "string" }, + }, + }, + ]; + const outputPath = path.join(tempDir, "HyphenInTitleSchemaMixin.ts"); + generateShemaMixin(schemasWithHyphenTitle, { + "system/in-set": outputPath, + }); + + const generatedCode = fs.readFileSync(outputPath, "utf-8"); + expect(generatedCode).to.include("SystemInSetSchema"); + expect(generatedCode).to.not.include("SystemIn-setSchema"); + }); + }); + describe("generateShemaMixin - Error Handling", () => { it("should handle non-existent schema IDs gracefully", () => { const outputPaths = {