From 21c0ae2f3b52ceebd56b3d53c0ec3532c321162e Mon Sep 17 00:00:00 2001 From: VsevolodX Date: Tue, 24 Mar 2026 12:52:42 -0700 Subject: [PATCH 1/3] update: add homo lumo --- dist/js/PropertyFactory.d.ts | 4 ++- dist/js/PropertyFactory.js | 4 +++ .../HOMOEnergyPropertySchemaMixin.d.ts | 5 ++++ .../HOMOEnergyPropertySchemaMixin.js | 18 ++++++++++++ .../LUMOEnergyPropertySchemaMixin.d.ts | 5 ++++ .../LUMOEnergyPropertySchemaMixin.js | 18 ++++++++++++ dist/js/index.d.ts | 2 ++ dist/js/index.js | 6 +++- .../properties/scalar/HOMOEnergyProperty.d.ts | 15 ++++++++++ .../properties/scalar/HOMOEnergyProperty.js | 18 ++++++++++++ .../properties/scalar/LUMOEnergyProperty.d.ts | 15 ++++++++++ .../properties/scalar/LUMOEnergyProperty.js | 18 ++++++++++++ dist/js/settings.d.ts | 2 ++ dist/js/settings.js | 2 ++ src/js/PropertyFactory.ts | 6 ++++ .../HOMOEnergyPropertySchemaMixin.ts | 26 +++++++++++++++++ .../LUMOEnergyPropertySchemaMixin.ts | 26 +++++++++++++++++ src/js/index.ts | 2 ++ .../properties/scalar/HOMOEnergyProperty.ts | 28 +++++++++++++++++++ .../properties/scalar/LUMOEnergyProperty.ts | 28 +++++++++++++++++++ src/js/settings.ts | 2 ++ 21 files changed, 248 insertions(+), 2 deletions(-) create mode 100644 dist/js/generated/HOMOEnergyPropertySchemaMixin.d.ts create mode 100644 dist/js/generated/HOMOEnergyPropertySchemaMixin.js create mode 100644 dist/js/generated/LUMOEnergyPropertySchemaMixin.d.ts create mode 100644 dist/js/generated/LUMOEnergyPropertySchemaMixin.js create mode 100644 dist/js/properties/scalar/HOMOEnergyProperty.d.ts create mode 100644 dist/js/properties/scalar/HOMOEnergyProperty.js create mode 100644 dist/js/properties/scalar/LUMOEnergyProperty.d.ts create mode 100644 dist/js/properties/scalar/LUMOEnergyProperty.js create mode 100644 src/js/generated/HOMOEnergyPropertySchemaMixin.ts create mode 100644 src/js/generated/LUMOEnergyPropertySchemaMixin.ts create mode 100644 src/js/properties/scalar/HOMOEnergyProperty.ts create mode 100644 src/js/properties/scalar/LUMOEnergyProperty.ts diff --git a/dist/js/PropertyFactory.d.ts b/dist/js/PropertyFactory.d.ts index 85845f7..0dc3381 100644 --- a/dist/js/PropertyFactory.d.ts +++ b/dist/js/PropertyFactory.d.ts @@ -23,7 +23,9 @@ import WavefunctionAmplitudeProperty from "./properties/non-scalar/WavefunctionA import WorkflowProperty from "./properties/non-scalar/WorkflowProperty"; import TotalEnergyContributionsProperty from "./properties/object/TotalEnergyContributionsProperty"; import FermiEnergyProperty from "./properties/scalar/FermiEnergyProperty"; +import HOMOEnergyProperty from "./properties/scalar/HOMOEnergyProperty"; import IonizationPotentialElementalProperty from "./properties/scalar/IonizationPotentialElementalProperty"; +import LUMOEnergyProperty from "./properties/scalar/LUMOEnergyProperty"; import PressureProperty from "./properties/scalar/PressureProperty"; import ReactionEnergyBarrierProperty from "./properties/scalar/ReactionEnergyBarrierProperty"; import SurfaceEnergyProperty from "./properties/scalar/SurfaceEnergyProperty"; @@ -48,7 +50,7 @@ export default class PropertyFactory { static getScalarPropertyNames(): PropertyName[]; static getNonScalarPropertyNames(): PropertyName[]; private static filterPropertyNames; - static createProperty(config: AnyProperty): AveragePotentialProfileProperty | BandGapsProperty | BandStructureProperty | ChargeDensityProfileProperty | ConvergenceElectronicProperty | ConvergenceIonicProperty | DensityOfStatesProperty | DielectricTensorProperty | FileContentProperty | FinalStructureProperty | HubbardUProperty | HubbardVNNProperty | HubbardVProperty | IsRelaxedProperty | JupyterNotebookEndpointProperty | PhononDispersionsProperty | PhononDOSProperty | PotentialProfileProperty | ReactionEnergyProfileProperty | WavefunctionAmplitudeProperty | WorkflowProperty | TotalEnergyContributionsProperty | FermiEnergyProperty | IonizationPotentialElementalProperty | PressureProperty | ReactionEnergyBarrierProperty | SurfaceEnergyProperty | TotalEnergyProperty | TotalForcesProperty | ValenceBandOffsetProperty | ZeroPointEnergyProperty | AtomicForcesProperty | MagneticMomentsProperty | StressTensorProperty; + static createProperty(config: AnyProperty): AveragePotentialProfileProperty | BandGapsProperty | BandStructureProperty | ChargeDensityProfileProperty | ConvergenceElectronicProperty | ConvergenceIonicProperty | DensityOfStatesProperty | DielectricTensorProperty | FileContentProperty | FinalStructureProperty | HubbardUProperty | HubbardVNNProperty | HubbardVProperty | IsRelaxedProperty | JupyterNotebookEndpointProperty | PhononDispersionsProperty | PhononDOSProperty | PotentialProfileProperty | ReactionEnergyProfileProperty | WavefunctionAmplitudeProperty | WorkflowProperty | TotalEnergyContributionsProperty | FermiEnergyProperty | HOMOEnergyProperty | IonizationPotentialElementalProperty | LUMOEnergyProperty | PressureProperty | ReactionEnergyBarrierProperty | SurfaceEnergyProperty | TotalEnergyProperty | TotalForcesProperty | ValenceBandOffsetProperty | ZeroPointEnergyProperty | AtomicForcesProperty | MagneticMomentsProperty | StressTensorProperty; static createMetaProperty(config: AnyMetaProperty): MetaProperty; static createProtoProperty(config: AnyProtoProperty): AtomicConstraintsProperty | BoundaryConditionsProperty; } diff --git a/dist/js/PropertyFactory.js b/dist/js/PropertyFactory.js index f10e9fa..ffd29ea 100644 --- a/dist/js/PropertyFactory.js +++ b/dist/js/PropertyFactory.js @@ -27,7 +27,9 @@ const WavefunctionAmplitudeProperty_1 = __importDefault(require("./properties/no const WorkflowProperty_1 = __importDefault(require("./properties/non-scalar/WorkflowProperty")); const TotalEnergyContributionsProperty_1 = __importDefault(require("./properties/object/TotalEnergyContributionsProperty")); const FermiEnergyProperty_1 = __importDefault(require("./properties/scalar/FermiEnergyProperty")); +const HOMOEnergyProperty_1 = __importDefault(require("./properties/scalar/HOMOEnergyProperty")); const IonizationPotentialElementalProperty_1 = __importDefault(require("./properties/scalar/IonizationPotentialElementalProperty")); +const LUMOEnergyProperty_1 = __importDefault(require("./properties/scalar/LUMOEnergyProperty")); const PressureProperty_1 = __importDefault(require("./properties/scalar/PressureProperty")); const ReactionEnergyBarrierProperty_1 = __importDefault(require("./properties/scalar/ReactionEnergyBarrierProperty")); const SurfaceEnergyProperty_1 = __importDefault(require("./properties/scalar/SurfaceEnergyProperty")); @@ -45,6 +47,8 @@ const PROPERTY_CLASS_MAP = { [PressureProperty_1.default.propertyName]: PressureProperty_1.default, [TotalForceProperty_1.default.propertyName]: TotalForceProperty_1.default, [TotalEnergyProperty_1.default.propertyName]: TotalEnergyProperty_1.default, + [HOMOEnergyProperty_1.default.propertyName]: HOMOEnergyProperty_1.default, + [LUMOEnergyProperty_1.default.propertyName]: LUMOEnergyProperty_1.default, [SurfaceEnergyProperty_1.default.propertyName]: SurfaceEnergyProperty_1.default, [ConvergenceElectronicProperty_1.default.propertyName]: ConvergenceElectronicProperty_1.default, [ConvergenceIonicProperty_1.default.propertyName]: ConvergenceIonicProperty_1.default, diff --git a/dist/js/generated/HOMOEnergyPropertySchemaMixin.d.ts b/dist/js/generated/HOMOEnergyPropertySchemaMixin.d.ts new file mode 100644 index 0000000..481aadf --- /dev/null +++ b/dist/js/generated/HOMOEnergyPropertySchemaMixin.d.ts @@ -0,0 +1,5 @@ +import type { InMemoryEntity } from "@mat3ra/code/dist/js/entity"; +import type { HOMOEnergyPropertySchema } from "@mat3ra/esse/dist/js/types"; +export type HOMOEnergyPropertySchemaMixin = Omit; +export type HOMOEnergyPropertyInMemoryEntity = InMemoryEntity & HOMOEnergyPropertySchemaMixin; +export declare function hOMOEnergyPropertySchemaMixin(item: InMemoryEntity): void; diff --git a/dist/js/generated/HOMOEnergyPropertySchemaMixin.js b/dist/js/generated/HOMOEnergyPropertySchemaMixin.js new file mode 100644 index 0000000..fdabf79 --- /dev/null +++ b/dist/js/generated/HOMOEnergyPropertySchemaMixin.js @@ -0,0 +1,18 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.hOMOEnergyPropertySchemaMixin = hOMOEnergyPropertySchemaMixin; +function hOMOEnergyPropertySchemaMixin(item) { + // @ts-expect-error + const properties = { + get name() { + return this.requiredProp("name"); + }, + get units() { + return this.requiredProp("units"); + }, + get value() { + return this.requiredProp("value"); + }, + }; + Object.defineProperties(item, Object.getOwnPropertyDescriptors(properties)); +} diff --git a/dist/js/generated/LUMOEnergyPropertySchemaMixin.d.ts b/dist/js/generated/LUMOEnergyPropertySchemaMixin.d.ts new file mode 100644 index 0000000..dbd0189 --- /dev/null +++ b/dist/js/generated/LUMOEnergyPropertySchemaMixin.d.ts @@ -0,0 +1,5 @@ +import type { InMemoryEntity } from "@mat3ra/code/dist/js/entity"; +import type { LUMOEnergyPropertySchema } from "@mat3ra/esse/dist/js/types"; +export type LUMOEnergyPropertySchemaMixin = Omit; +export type LUMOEnergyPropertyInMemoryEntity = InMemoryEntity & LUMOEnergyPropertySchemaMixin; +export declare function lUMOEnergyPropertySchemaMixin(item: InMemoryEntity): void; diff --git a/dist/js/generated/LUMOEnergyPropertySchemaMixin.js b/dist/js/generated/LUMOEnergyPropertySchemaMixin.js new file mode 100644 index 0000000..3e3bbc5 --- /dev/null +++ b/dist/js/generated/LUMOEnergyPropertySchemaMixin.js @@ -0,0 +1,18 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.lUMOEnergyPropertySchemaMixin = lUMOEnergyPropertySchemaMixin; +function lUMOEnergyPropertySchemaMixin(item) { + // @ts-expect-error + const properties = { + get name() { + return this.requiredProp("name"); + }, + get units() { + return this.requiredProp("units"); + }, + get value() { + return this.requiredProp("value"); + }, + }; + Object.defineProperties(item, Object.getOwnPropertyDescriptors(properties)); +} diff --git a/dist/js/index.d.ts b/dist/js/index.d.ts index 18d5246..2fd61ac 100644 --- a/dist/js/index.d.ts +++ b/dist/js/index.d.ts @@ -10,6 +10,8 @@ export { default as PressureProperty } from "./properties/scalar/PressurePropert export { default as ReactionEnergyBarrierProperty } from "./properties/scalar/ReactionEnergyBarrierProperty"; export { default as SurfaceEnergyProperty } from "./properties/scalar/SurfaceEnergyProperty"; export { default as TotalEnergyProperty } from "./properties/scalar/TotalEnergyProperty"; +export { default as HOMOEnergyProperty } from "./properties/scalar/HOMOEnergyProperty"; +export { default as LUMOEnergyProperty } from "./properties/scalar/LUMOEnergyProperty"; export { default as BandStructureProperty } from "./properties/non-scalar/BandStructureProperty"; export { default as ChargeDensityProfileProperty } from "./properties/non-scalar/ChargeDensityProfileProperty"; export { default as PotentialProfileProperty } from "./properties/non-scalar/PotentialProfileProperty"; diff --git a/dist/js/index.js b/dist/js/index.js index 1dfb431..78b0664 100644 --- a/dist/js/index.js +++ b/dist/js/index.js @@ -17,7 +17,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); -exports.metaPropertyHolderMixin = exports.propertyHolderMixin = exports.protoPropertyHolderMixin = exports.ReactionEnergyProfileProperty = exports.WavefunctionAmplitudeProperty = exports.PotentialProfileProperty = exports.ChargeDensityProfileProperty = exports.BandStructureProperty = exports.TotalEnergyProperty = exports.SurfaceEnergyProperty = exports.ReactionEnergyBarrierProperty = exports.PressureProperty = exports.IsRelaxedProperty = exports.BandGapsProperty = exports.FinalStructureProperty = exports.PseudopotentialMetaProperty = exports.MetaProperty = exports.Property = exports.PropertyType = exports.PropertyName = exports.PropertyFactory = void 0; +exports.metaPropertyHolderMixin = exports.propertyHolderMixin = exports.protoPropertyHolderMixin = exports.ReactionEnergyProfileProperty = exports.WavefunctionAmplitudeProperty = exports.PotentialProfileProperty = exports.ChargeDensityProfileProperty = exports.BandStructureProperty = exports.LUMOEnergyProperty = exports.HOMOEnergyProperty = exports.TotalEnergyProperty = exports.SurfaceEnergyProperty = exports.ReactionEnergyBarrierProperty = exports.PressureProperty = exports.IsRelaxedProperty = exports.BandGapsProperty = exports.FinalStructureProperty = exports.PseudopotentialMetaProperty = exports.MetaProperty = exports.Property = exports.PropertyType = exports.PropertyName = exports.PropertyFactory = void 0; var PropertyFactory_1 = require("./PropertyFactory"); Object.defineProperty(exports, "PropertyFactory", { enumerable: true, get: function () { return __importDefault(PropertyFactory_1).default; } }); var settings_1 = require("./settings"); @@ -43,6 +43,10 @@ var SurfaceEnergyProperty_1 = require("./properties/scalar/SurfaceEnergyProperty Object.defineProperty(exports, "SurfaceEnergyProperty", { enumerable: true, get: function () { return __importDefault(SurfaceEnergyProperty_1).default; } }); var TotalEnergyProperty_1 = require("./properties/scalar/TotalEnergyProperty"); Object.defineProperty(exports, "TotalEnergyProperty", { enumerable: true, get: function () { return __importDefault(TotalEnergyProperty_1).default; } }); +var HOMOEnergyProperty_1 = require("./properties/scalar/HOMOEnergyProperty"); +Object.defineProperty(exports, "HOMOEnergyProperty", { enumerable: true, get: function () { return __importDefault(HOMOEnergyProperty_1).default; } }); +var LUMOEnergyProperty_1 = require("./properties/scalar/LUMOEnergyProperty"); +Object.defineProperty(exports, "LUMOEnergyProperty", { enumerable: true, get: function () { return __importDefault(LUMOEnergyProperty_1).default; } }); var BandStructureProperty_1 = require("./properties/non-scalar/BandStructureProperty"); Object.defineProperty(exports, "BandStructureProperty", { enumerable: true, get: function () { return __importDefault(BandStructureProperty_1).default; } }); var ChargeDensityProfileProperty_1 = require("./properties/non-scalar/ChargeDensityProfileProperty"); diff --git a/dist/js/properties/scalar/HOMOEnergyProperty.d.ts b/dist/js/properties/scalar/HOMOEnergyProperty.d.ts new file mode 100644 index 0000000..4431117 --- /dev/null +++ b/dist/js/properties/scalar/HOMOEnergyProperty.d.ts @@ -0,0 +1,15 @@ +import type { Constructor } from "@mat3ra/code/dist/js/utils/types"; +import type { HOMOEnergyPropertySchema } from "@mat3ra/esse/dist/js/types"; +import { HOMOEnergyPropertySchemaMixin } from "../../generated/HOMOEnergyPropertySchemaMixin"; +import Property from "../../Property"; +import { PropertyName, PropertyType } from "../../settings"; +type Schema = HOMOEnergyPropertySchema; +type Base = typeof Property & Constructor; +declare const HOMOEnergyProperty_base: Base; +export default class HOMOEnergyProperty extends HOMOEnergyProperty_base implements Schema { + static readonly isRefined = true; + static readonly propertyName = PropertyName.homo_energy; + static readonly propertyType = PropertyType.scalar; + constructor(config: Omit); +} +export {}; diff --git a/dist/js/properties/scalar/HOMOEnergyProperty.js b/dist/js/properties/scalar/HOMOEnergyProperty.js new file mode 100644 index 0000000..ba84cf6 --- /dev/null +++ b/dist/js/properties/scalar/HOMOEnergyProperty.js @@ -0,0 +1,18 @@ +"use strict"; +var __importDefault = (this && this.__importDefault) || function (mod) { + return (mod && mod.__esModule) ? mod : { "default": mod }; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +const HOMOEnergyPropertySchemaMixin_1 = require("../../generated/HOMOEnergyPropertySchemaMixin"); +const Property_1 = __importDefault(require("../../Property")); +const settings_1 = require("../../settings"); +class HOMOEnergyProperty extends Property_1.default { + constructor(config) { + super({ ...config, name: HOMOEnergyProperty.propertyName }); + } +} +HOMOEnergyProperty.isRefined = true; +HOMOEnergyProperty.propertyName = settings_1.PropertyName.homo_energy; +HOMOEnergyProperty.propertyType = settings_1.PropertyType.scalar; +exports.default = HOMOEnergyProperty; +(0, HOMOEnergyPropertySchemaMixin_1.hOMOEnergyPropertySchemaMixin)(HOMOEnergyProperty.prototype); diff --git a/dist/js/properties/scalar/LUMOEnergyProperty.d.ts b/dist/js/properties/scalar/LUMOEnergyProperty.d.ts new file mode 100644 index 0000000..ef61ce9 --- /dev/null +++ b/dist/js/properties/scalar/LUMOEnergyProperty.d.ts @@ -0,0 +1,15 @@ +import type { Constructor } from "@mat3ra/code/dist/js/utils/types"; +import type { LUMOEnergyPropertySchema } from "@mat3ra/esse/dist/js/types"; +import { LUMOEnergyPropertySchemaMixin } from "../../generated/LUMOEnergyPropertySchemaMixin"; +import Property from "../../Property"; +import { PropertyName, PropertyType } from "../../settings"; +type Schema = LUMOEnergyPropertySchema; +type Base = typeof Property & Constructor; +declare const LUMOEnergyProperty_base: Base; +export default class LUMOEnergyProperty extends LUMOEnergyProperty_base implements Schema { + static readonly isRefined = true; + static readonly propertyName = PropertyName.lumo_energy; + static readonly propertyType = PropertyType.scalar; + constructor(config: Omit); +} +export {}; diff --git a/dist/js/properties/scalar/LUMOEnergyProperty.js b/dist/js/properties/scalar/LUMOEnergyProperty.js new file mode 100644 index 0000000..4855c0b --- /dev/null +++ b/dist/js/properties/scalar/LUMOEnergyProperty.js @@ -0,0 +1,18 @@ +"use strict"; +var __importDefault = (this && this.__importDefault) || function (mod) { + return (mod && mod.__esModule) ? mod : { "default": mod }; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +const LUMOEnergyPropertySchemaMixin_1 = require("../../generated/LUMOEnergyPropertySchemaMixin"); +const Property_1 = __importDefault(require("../../Property")); +const settings_1 = require("../../settings"); +class LUMOEnergyProperty extends Property_1.default { + constructor(config) { + super({ ...config, name: LUMOEnergyProperty.propertyName }); + } +} +LUMOEnergyProperty.isRefined = true; +LUMOEnergyProperty.propertyName = settings_1.PropertyName.lumo_energy; +LUMOEnergyProperty.propertyType = settings_1.PropertyType.scalar; +exports.default = LUMOEnergyProperty; +(0, LUMOEnergyPropertySchemaMixin_1.lUMOEnergyPropertySchemaMixin)(LUMOEnergyProperty.prototype); diff --git a/dist/js/settings.d.ts b/dist/js/settings.d.ts index 5865d7e..567cf67 100644 --- a/dist/js/settings.d.ts +++ b/dist/js/settings.d.ts @@ -12,6 +12,8 @@ export declare enum PropertyName { pressure = "pressure", total_force = "total_force", total_energy = "total_energy", + homo_energy = "homo_energy", + lumo_energy = "lumo_energy", surface_energy = "surface_energy", convergence_electronic = "convergence_electronic", convergence_ionic = "convergence_ionic", diff --git a/dist/js/settings.js b/dist/js/settings.js index 5ad376a..c7e200c 100644 --- a/dist/js/settings.js +++ b/dist/js/settings.js @@ -20,6 +20,8 @@ var PropertyName; PropertyName["pressure"] = "pressure"; PropertyName["total_force"] = "total_force"; PropertyName["total_energy"] = "total_energy"; + PropertyName["homo_energy"] = "homo_energy"; + PropertyName["lumo_energy"] = "lumo_energy"; PropertyName["surface_energy"] = "surface_energy"; PropertyName["convergence_electronic"] = "convergence_electronic"; PropertyName["convergence_ionic"] = "convergence_ionic"; diff --git a/src/js/PropertyFactory.ts b/src/js/PropertyFactory.ts index 7ef7354..5fe9030 100644 --- a/src/js/PropertyFactory.ts +++ b/src/js/PropertyFactory.ts @@ -30,7 +30,9 @@ import WavefunctionAmplitudeProperty from "./properties/non-scalar/WavefunctionA import WorkflowProperty from "./properties/non-scalar/WorkflowProperty"; import TotalEnergyContributionsProperty from "./properties/object/TotalEnergyContributionsProperty"; import FermiEnergyProperty from "./properties/scalar/FermiEnergyProperty"; +import HOMOEnergyProperty from "./properties/scalar/HOMOEnergyProperty"; import IonizationPotentialElementalProperty from "./properties/scalar/IonizationPotentialElementalProperty"; +import LUMOEnergyProperty from "./properties/scalar/LUMOEnergyProperty"; import PressureProperty from "./properties/scalar/PressureProperty"; import ReactionEnergyBarrierProperty from "./properties/scalar/ReactionEnergyBarrierProperty"; import SurfaceEnergyProperty from "./properties/scalar/SurfaceEnergyProperty"; @@ -55,6 +57,8 @@ type PropertyClassMap = { | Constructor | Constructor | Constructor + | Constructor + | Constructor | Constructor | Constructor | Constructor @@ -102,6 +106,8 @@ const PROPERTY_CLASS_MAP: PropertyClassMap = { [PressureProperty.propertyName]: PressureProperty, [TotalForcesProperty.propertyName]: TotalForcesProperty, [TotalEnergyProperty.propertyName]: TotalEnergyProperty, + [HOMOEnergyProperty.propertyName]: HOMOEnergyProperty, + [LUMOEnergyProperty.propertyName]: LUMOEnergyProperty, [SurfaceEnergyProperty.propertyName]: SurfaceEnergyProperty, [ConvergenceElectronicProperty.propertyName]: ConvergenceElectronicProperty, [ConvergenceIonicProperty.propertyName]: ConvergenceIonicProperty, diff --git a/src/js/generated/HOMOEnergyPropertySchemaMixin.ts b/src/js/generated/HOMOEnergyPropertySchemaMixin.ts new file mode 100644 index 0000000..2bfb57f --- /dev/null +++ b/src/js/generated/HOMOEnergyPropertySchemaMixin.ts @@ -0,0 +1,26 @@ +import type { InMemoryEntity } from "@mat3ra/code/dist/js/entity"; +import type { HOMOEnergyPropertySchema } from "@mat3ra/esse/dist/js/types"; + +export type HOMOEnergyPropertySchemaMixin = Omit< + HOMOEnergyPropertySchema, + "_id" | "slug" | "systemName" | "schemaVersion" +>; + +export type HOMOEnergyPropertyInMemoryEntity = InMemoryEntity & HOMOEnergyPropertySchemaMixin; + +export function hOMOEnergyPropertySchemaMixin(item: InMemoryEntity) { + // @ts-expect-error + const properties: InMemoryEntity & HOMOEnergyPropertySchemaMixin = { + get name() { + return this.requiredProp("name"); + }, + get units() { + return this.requiredProp("units"); + }, + get value() { + return this.requiredProp("value"); + }, + }; + + Object.defineProperties(item, Object.getOwnPropertyDescriptors(properties)); +} diff --git a/src/js/generated/LUMOEnergyPropertySchemaMixin.ts b/src/js/generated/LUMOEnergyPropertySchemaMixin.ts new file mode 100644 index 0000000..8c10e53 --- /dev/null +++ b/src/js/generated/LUMOEnergyPropertySchemaMixin.ts @@ -0,0 +1,26 @@ +import type { InMemoryEntity } from "@mat3ra/code/dist/js/entity"; +import type { LUMOEnergyPropertySchema } from "@mat3ra/esse/dist/js/types"; + +export type LUMOEnergyPropertySchemaMixin = Omit< + LUMOEnergyPropertySchema, + "_id" | "slug" | "systemName" | "schemaVersion" +>; + +export type LUMOEnergyPropertyInMemoryEntity = InMemoryEntity & LUMOEnergyPropertySchemaMixin; + +export function lUMOEnergyPropertySchemaMixin(item: InMemoryEntity) { + // @ts-expect-error + const properties: InMemoryEntity & LUMOEnergyPropertySchemaMixin = { + get name() { + return this.requiredProp("name"); + }, + get units() { + return this.requiredProp("units"); + }, + get value() { + return this.requiredProp("value"); + }, + }; + + Object.defineProperties(item, Object.getOwnPropertyDescriptors(properties)); +} diff --git a/src/js/index.ts b/src/js/index.ts index 69cfabf..c383140 100644 --- a/src/js/index.ts +++ b/src/js/index.ts @@ -10,6 +10,8 @@ export { default as PressureProperty } from "./properties/scalar/PressurePropert export { default as ReactionEnergyBarrierProperty } from "./properties/scalar/ReactionEnergyBarrierProperty"; export { default as SurfaceEnergyProperty } from "./properties/scalar/SurfaceEnergyProperty"; export { default as TotalEnergyProperty } from "./properties/scalar/TotalEnergyProperty"; +export { default as HOMOEnergyProperty } from "./properties/scalar/HOMOEnergyProperty"; +export { default as LUMOEnergyProperty } from "./properties/scalar/LUMOEnergyProperty"; export { default as BandStructureProperty } from "./properties/non-scalar/BandStructureProperty"; export { default as ChargeDensityProfileProperty } from "./properties/non-scalar/ChargeDensityProfileProperty"; export { default as PotentialProfileProperty } from "./properties/non-scalar/PotentialProfileProperty"; diff --git a/src/js/properties/scalar/HOMOEnergyProperty.ts b/src/js/properties/scalar/HOMOEnergyProperty.ts new file mode 100644 index 0000000..3125556 --- /dev/null +++ b/src/js/properties/scalar/HOMOEnergyProperty.ts @@ -0,0 +1,28 @@ +import type { Constructor } from "@mat3ra/code/dist/js/utils/types"; +import type { HOMOEnergyPropertySchema } from "@mat3ra/esse/dist/js/types"; + +import { + HOMOEnergyPropertySchemaMixin, + // The generated helper lowercases only the first character of leading acronyms. + hOMOEnergyPropertySchemaMixin as homoEnergyPropertySchemaMixin, +} from "../../generated/HOMOEnergyPropertySchemaMixin"; +import Property from "../../Property"; +import { PropertyName, PropertyType } from "../../settings"; + +type Schema = HOMOEnergyPropertySchema; + +type Base = typeof Property & Constructor; + +export default class HOMOEnergyProperty extends (Property as Base) implements Schema { + static readonly isRefined = true; + + static readonly propertyName = PropertyName.homo_energy; + + static readonly propertyType = PropertyType.scalar; + + constructor(config: Omit) { + super({ ...config, name: HOMOEnergyProperty.propertyName }); + } +} + +homoEnergyPropertySchemaMixin(HOMOEnergyProperty.prototype); diff --git a/src/js/properties/scalar/LUMOEnergyProperty.ts b/src/js/properties/scalar/LUMOEnergyProperty.ts new file mode 100644 index 0000000..5a32217 --- /dev/null +++ b/src/js/properties/scalar/LUMOEnergyProperty.ts @@ -0,0 +1,28 @@ +import type { Constructor } from "@mat3ra/code/dist/js/utils/types"; +import type { LUMOEnergyPropertySchema } from "@mat3ra/esse/dist/js/types"; + +import { + LUMOEnergyPropertySchemaMixin, + // The generated helper lowercases only the first character of leading acronyms. + lUMOEnergyPropertySchemaMixin as lumoEnergyPropertySchemaMixin, +} from "../../generated/LUMOEnergyPropertySchemaMixin"; +import Property from "../../Property"; +import { PropertyName, PropertyType } from "../../settings"; + +type Schema = LUMOEnergyPropertySchema; + +type Base = typeof Property & Constructor; + +export default class LUMOEnergyProperty extends (Property as Base) implements Schema { + static readonly isRefined = true; + + static readonly propertyName = PropertyName.lumo_energy; + + static readonly propertyType = PropertyType.scalar; + + constructor(config: Omit) { + super({ ...config, name: LUMOEnergyProperty.propertyName }); + } +} + +lumoEnergyPropertySchemaMixin(LUMOEnergyProperty.prototype); diff --git a/src/js/settings.ts b/src/js/settings.ts index 1cb6451..2705927 100644 --- a/src/js/settings.ts +++ b/src/js/settings.ts @@ -16,6 +16,8 @@ export enum PropertyName { pressure = "pressure", total_force = "total_force", total_energy = "total_energy", + homo_energy = "homo_energy", + lumo_energy = "lumo_energy", surface_energy = "surface_energy", convergence_electronic = "convergence_electronic", convergence_ionic = "convergence_ionic", From 686b0c64961edf661a55ea6f297ba09065247f05 Mon Sep 17 00:00:00 2001 From: VsevolodX Date: Tue, 24 Mar 2026 12:53:49 -0700 Subject: [PATCH 2/3] update: tests: --- package-lock.json | 167 ++++++++++++------------ package.json | 2 +- scripts/generate-mixins.ts | 4 + tests/js/properties/homo_energy.test.ts | 22 ++++ tests/js/properties/lumo_energy.test.ts | 22 ++++ tests/js/property_factory.test.ts | 4 + 6 files changed, 137 insertions(+), 84 deletions(-) create mode 100644 tests/js/properties/homo_energy.test.ts create mode 100644 tests/js/properties/lumo_energy.test.ts diff --git a/package-lock.json b/package-lock.json index 2d88039..29558ab 100644 --- a/package-lock.json +++ b/package-lock.json @@ -16,7 +16,7 @@ "@babel/eslint-parser": "^7.16.3", "@exabyte-io/eslint-config": "2025.5.13-0", "@mat3ra/code": "2025.10.8-0", - "@mat3ra/esse": "2026.1.23-0", + "@mat3ra/esse": "git+https://github.com/Exabyte-io/esse.git#f11c7519a4b76dde88318c5d4ee24d6fe9f3c152", "@mat3ra/made": "2025.10.7-0", "@mat3ra/tsconfig": "2024.6.3-0", "@types/lodash": "^4.17.20", @@ -134,13 +134,13 @@ } }, "node_modules/@babel/code-frame": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.27.1.tgz", - "integrity": "sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg==", + "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.27.1", + "@babel/helper-validator-identifier": "^7.28.5", "js-tokens": "^4.0.0", "picocolors": "^1.1.1" }, @@ -225,14 +225,14 @@ } }, "node_modules/@babel/generator": { - "version": "7.28.0", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.28.0.tgz", - "integrity": "sha512-lJjzvrbEeWrhB4P3QBsH7tey117PjLZnDbLiQEKjQ/fNJTjuq4HSqgFA+UNSwZT8D7dxxbnuSBMsa1lrWzKlQg==", + "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.28.0", - "@babel/types": "^7.28.0", + "@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" @@ -299,18 +299,18 @@ "license": "ISC" }, "node_modules/@babel/helper-create-class-features-plugin": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.27.1.tgz", - "integrity": "sha512-QwGAmuvM17btKU5VqXfb+Giw4JcN0hjuufz3DYnpeVDvZLAObloM77bhMXiqry3Iio+Ai4phVRDwl6WU10+r5A==", + "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.27.1", - "@babel/helper-member-expression-to-functions": "^7.27.1", + "@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.27.1", + "@babel/helper-replace-supers": "^7.28.6", "@babel/helper-skip-transparent-expression-wrappers": "^7.27.1", - "@babel/traverse": "^7.27.1", + "@babel/traverse": "^7.28.6", "semver": "^6.3.1" }, "engines": { @@ -404,14 +404,14 @@ } }, "node_modules/@babel/helper-member-expression-to-functions": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.27.1.tgz", - "integrity": "sha512-E5chM8eWjTp/aNoVpcbfM7mLxu9XGLWYise2eBKGQomAk/Mb4XoxyqXTZbuTohbsl8EKqdlMhnDI2CCLfcs9wA==", + "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.27.1", - "@babel/types": "^7.27.1" + "@babel/traverse": "^7.28.5", + "@babel/types": "^7.28.5" }, "engines": { "node": ">=6.9.0" @@ -463,9 +463,9 @@ } }, "node_modules/@babel/helper-plugin-utils": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.27.1.tgz", - "integrity": "sha512-1gn1Up5YXka3YYAHGKpbideQ5Yjf1tDa9qYcgysz+cNCXukyLl6DjPXhD3VRwSb8c0J9tA4b2+rHEZtc6R0tlw==", + "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": { @@ -491,15 +491,15 @@ } }, "node_modules/@babel/helper-replace-supers": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.27.1.tgz", - "integrity": "sha512-7EHz6qDZc8RYS5ElPoShMheWvEgERonFCs7IAonWLLUTXW59DP14bCZt89/GKyreYn8g3S83m21FelHKbeDCKA==", + "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.27.1", + "@babel/helper-member-expression-to-functions": "^7.28.5", "@babel/helper-optimise-call-expression": "^7.27.1", - "@babel/traverse": "^7.27.1" + "@babel/traverse": "^7.28.6" }, "engines": { "node": ">=6.9.0" @@ -533,9 +533,9 @@ } }, "node_modules/@babel/helper-validator-identifier": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.27.1.tgz", - "integrity": "sha512-D2hP9eA+Sqx1kBZgzxZh0y1trbuU+JoDkiEwqhQ36nodYqJwyEIhPSdMNd7lOm/4io72luTPWH20Yda0xOuUow==", + "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": { @@ -596,13 +596,13 @@ } }, "node_modules/@babel/parser": { - "version": "7.28.0", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.28.0.tgz", - "integrity": "sha512-jVZGvOxOuNSsuQuLRTh13nU0AogFlw32w/MT+LV6D3sP5WdbW61E77RnkbaO2dUvmPAYrBDJXGn5gGS6tH4j8g==", + "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.28.0" + "@babel/types": "^7.29.0" }, "bin": { "parser": "bin/babel-parser.js" @@ -1185,13 +1185,13 @@ } }, "node_modules/@babel/plugin-syntax-typescript": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.27.1.tgz", - "integrity": "sha512-xfYCBMxveHrRMnAWl1ZlPXOZjzkN82THFvLhQhFXFt81Z5HnN+EtUkZhv/zcKpmT3fzmWZB0ywiBrbC3vogbwQ==", + "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.27.1" + "@babel/helper-plugin-utils": "^7.28.6" }, "engines": { "node": ">=6.9.0" @@ -2076,17 +2076,17 @@ } }, "node_modules/@babel/plugin-transform-typescript": { - "version": "7.28.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.28.0.tgz", - "integrity": "sha512-4AEiDEBPIZvLQaWlc9liCavE0xRM0dNca41WtBeM3jgFptfUOSG9z0uteLhq6+3rq+WB6jIvUwKDTpXEHPJ2Vg==", + "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.27.3", - "@babel/helper-create-class-features-plugin": "^7.27.1", - "@babel/helper-plugin-utils": "^7.27.1", + "@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.27.1" + "@babel/plugin-syntax-typescript": "^7.28.6" }, "engines": { "node": ">=6.9.0" @@ -2297,9 +2297,9 @@ } }, "node_modules/@babel/preset-typescript": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/preset-typescript/-/preset-typescript-7.27.1.tgz", - "integrity": "sha512-l7WfQfX0WK4M0v2RudjuQK4u99BS6yLHYEmdtVPP7lKV013zr9DygFuWNlnbvQ9LR+LS0Egz/XAvGx5U9MX0fQ==", + "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": { @@ -2307,7 +2307,7 @@ "@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.27.1" + "@babel/plugin-transform-typescript": "^7.28.5" }, "engines": { "node": ">=6.9.0" @@ -2360,33 +2360,33 @@ } }, "node_modules/@babel/template": { - "version": "7.27.2", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.27.2.tgz", - "integrity": "sha512-LPDZ85aEJyYSd18/DkjNh4/y1ntkE5KwUHWTiqgRxruuZL2F1yuHligVHLvcHY2vMHXttKFpJn6LwfI7cw7ODw==", + "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.27.1", - "@babel/parser": "^7.27.2", - "@babel/types": "^7.27.1" + "@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.28.0", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.28.0.tgz", - "integrity": "sha512-mGe7UK5wWyh0bKRfupsUchrQGqvDbZDbKJw+kcRGSmdHVYrv+ltd0pnpDTVpiTqnaBru9iEvA8pz8W46v0Amwg==", + "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.27.1", - "@babel/generator": "^7.28.0", + "@babel/code-frame": "^7.29.0", + "@babel/generator": "^7.29.0", "@babel/helper-globals": "^7.28.0", - "@babel/parser": "^7.28.0", - "@babel/template": "^7.27.2", - "@babel/types": "^7.28.0", + "@babel/parser": "^7.29.0", + "@babel/template": "^7.28.6", + "@babel/types": "^7.29.0", "debug": "^4.3.1" }, "engines": { @@ -2394,14 +2394,14 @@ } }, "node_modules/@babel/types": { - "version": "7.28.2", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.28.2.tgz", - "integrity": "sha512-ruv7Ae4J5dUYULmeXw1gmb7rYRz57OWCPM57pHojnLq/3Z1CK2lNSLTCVjxVk1F/TZHwOZZrOWi0ur95BbLxNQ==", + "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.27.1", - "@babel/helper-validator-identifier": "^7.27.1" + "@babel/helper-validator-identifier": "^7.28.5" }, "engines": { "node": ">=6.9.0" @@ -2891,9 +2891,9 @@ } }, "node_modules/@mat3ra/esse": { - "version": "2026.1.23-0", - "resolved": "https://registry.npmjs.org/@mat3ra/esse/-/esse-2026.1.23-0.tgz", - "integrity": "sha512-SajwOKbjtj0wW+e9DSEjMi56WZq6uyKZSlahKsLK7VS26O8vosminDz4y+gKdr3IbiwKlYPNL5Irr8eR0rCNRQ==", + "version": "0.0.0", + "resolved": "git+ssh://git@github.com/Exabyte-io/esse.git#f11c7519a4b76dde88318c5d4ee24d6fe9f3c152", + "integrity": "sha512-yYehfhrMXC6K+/K4e2+bn08rzJENRvkhu5Ksgm+pTtbQhnoPF4QpZnLzJhlnM9O9+KMN6T2zgpEyg1h7o8zp/w==", "dev": true, "license": "Apache-2.0", "dependencies": { @@ -2906,7 +2906,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", @@ -3388,9 +3388,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": { @@ -3522,9 +3522,9 @@ } }, "node_modules/@mat3ra/utils/node_modules/semver": { - "version": "7.7.3", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz", - "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==", + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz", + "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==", "dev": true, "license": "ISC", "bin": { @@ -9303,10 +9303,11 @@ } }, "node_modules/regenerator-runtime": { - "version": "0.13.9", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz", - "integrity": "sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA==", - "dev": true + "version": "0.13.11", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz", + "integrity": "sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==", + "dev": true, + "license": "MIT" }, "node_modules/regexp.prototype.flags": { "version": "1.4.3", diff --git a/package.json b/package.json index 55f81a6..4833070 100644 --- a/package.json +++ b/package.json @@ -52,7 +52,7 @@ "@babel/eslint-parser": "^7.16.3", "@exabyte-io/eslint-config": "2025.5.13-0", "@mat3ra/code": "2025.10.8-0", - "@mat3ra/esse": "2026.1.23-0", + "@mat3ra/esse": "git+https://github.com/Exabyte-io/esse.git#f11c7519a4b76dde88318c5d4ee24d6fe9f3c152", "@mat3ra/made": "2025.10.7-0", "@mat3ra/tsconfig": "2024.6.3-0", "@typescript-eslint/eslint-plugin": "^5.9.1", diff --git a/scripts/generate-mixins.ts b/scripts/generate-mixins.ts index 9639f96..f302973 100644 --- a/scripts/generate-mixins.ts +++ b/scripts/generate-mixins.ts @@ -68,8 +68,12 @@ const OUTPUT_PATHS = { "src/js/generated/TotalEnergyContributionsPropertySchemaMixin.ts", "properties-directory/scalar/fermi-energy": "src/js/generated/FermiEnergyPropertySchemaMixin.ts", + "properties-directory/scalar/homo-energy": + "src/js/generated/HOMOEnergyPropertySchemaMixin.ts", "properties-directory/elemental/ionization-potential": "src/js/generated/IonizationPotentialElementalPropertySchemaMixin.ts", + "properties-directory/scalar/lumo-energy": + "src/js/generated/LUMOEnergyPropertySchemaMixin.ts", "properties-directory/scalar/pressure": "src/js/generated/PressurePropertySchemaMixin.ts", "properties-directory/scalar/reaction-energy-barrier": "src/js/generated/ReactionEnergyBarrierPropertySchemaMixin.ts", diff --git a/tests/js/properties/homo_energy.test.ts b/tests/js/properties/homo_energy.test.ts new file mode 100644 index 0000000..ae51418 --- /dev/null +++ b/tests/js/properties/homo_energy.test.ts @@ -0,0 +1,22 @@ +/* eslint-disable no-unused-expressions */ +import type { HOMOEnergyPropertySchema } from "@mat3ra/esse/dist/js/types"; +import { expect } from "chai"; + +import HOMOEnergyProperty from "../../../src/js/properties/scalar/HOMOEnergyProperty"; +import { PropertyName, PropertyType } from "../../../src/js/settings"; + +describe("HOMOEnergyProperty", () => { + it("should create a HOMO energy property with correct constructor, propertyType, propertyName, and isRefined", () => { + const config: Omit = { + value: -12.8, + units: "eV", + }; + + const homoEnergyProperty = new HOMOEnergyProperty(config); + + expect(homoEnergyProperty).to.be.instanceOf(HOMOEnergyProperty); + expect(HOMOEnergyProperty.propertyType).equal(PropertyType.scalar); + expect(HOMOEnergyProperty.propertyName).equal(PropertyName.homo_energy); + expect(HOMOEnergyProperty.isRefined).to.be.true; + }); +}); diff --git a/tests/js/properties/lumo_energy.test.ts b/tests/js/properties/lumo_energy.test.ts new file mode 100644 index 0000000..dd73e09 --- /dev/null +++ b/tests/js/properties/lumo_energy.test.ts @@ -0,0 +1,22 @@ +/* eslint-disable no-unused-expressions */ +import type { LUMOEnergyPropertySchema } from "@mat3ra/esse/dist/js/types"; +import { expect } from "chai"; + +import LUMOEnergyProperty from "../../../src/js/properties/scalar/LUMOEnergyProperty"; +import { PropertyName, PropertyType } from "../../../src/js/settings"; + +describe("LUMOEnergyProperty", () => { + it("should create a LUMO energy property with correct constructor, propertyType, propertyName, and isRefined", () => { + const config: Omit = { + value: 3.12, + units: "eV", + }; + + const lumoEnergyProperty = new LUMOEnergyProperty(config); + + expect(lumoEnergyProperty).to.be.instanceOf(LUMOEnergyProperty); + expect(LUMOEnergyProperty.propertyType).equal(PropertyType.scalar); + expect(LUMOEnergyProperty.propertyName).equal(PropertyName.lumo_energy); + expect(LUMOEnergyProperty.isRefined).to.be.true; + }); +}); diff --git a/tests/js/property_factory.test.ts b/tests/js/property_factory.test.ts index f6f97e6..c54ea94 100644 --- a/tests/js/property_factory.test.ts +++ b/tests/js/property_factory.test.ts @@ -48,6 +48,8 @@ describe("PropertyFactory", () => { // Test specific known properties are in correct categories expect(refinedPropertyNames).to.include(PropertyName.total_energy); + expect(refinedPropertyNames).to.include(PropertyName.homo_energy); + expect(refinedPropertyNames).to.include(PropertyName.lumo_energy); expect(refinedPropertyNames).to.include(PropertyName.band_structure); expect(refinedPropertyNames).to.include(PropertyName.density_of_states); @@ -57,6 +59,8 @@ describe("PropertyFactory", () => { expect(multipleResultsPropertyNames).to.include(PropertyName.file_content); expect(scalarPropertyNames).to.include(PropertyName.total_energy); + expect(scalarPropertyNames).to.include(PropertyName.homo_energy); + expect(scalarPropertyNames).to.include(PropertyName.lumo_energy); expect(scalarPropertyNames).to.include(PropertyName.fermi_energy); expect(scalarPropertyNames).to.include(PropertyName.pressure); From d24a11f8f520927fc9965d13ccf13e3cb18f7ff6 Mon Sep 17 00:00:00 2001 From: VsevolodX Date: Tue, 24 Mar 2026 19:56:49 -0700 Subject: [PATCH 3/3] chore: esse --- package-lock.json | 268 ++-------------------------------------------- package.json | 2 +- 2 files changed, 8 insertions(+), 262 deletions(-) diff --git a/package-lock.json b/package-lock.json index 29558ab..930b4c5 100644 --- a/package-lock.json +++ b/package-lock.json @@ -16,7 +16,7 @@ "@babel/eslint-parser": "^7.16.3", "@exabyte-io/eslint-config": "2025.5.13-0", "@mat3ra/code": "2025.10.8-0", - "@mat3ra/esse": "git+https://github.com/Exabyte-io/esse.git#f11c7519a4b76dde88318c5d4ee24d6fe9f3c152", + "@mat3ra/esse": "2026.3.25-0", "@mat3ra/made": "2025.10.7-0", "@mat3ra/tsconfig": "2024.6.3-0", "@types/lodash": "^4.17.20", @@ -2317,9 +2317,9 @@ } }, "node_modules/@babel/register": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/register/-/register-7.27.1.tgz", - "integrity": "sha512-K13lQpoV54LATKkzBpBAEu1GGSIRzxR9f4IN4V8DCDgiUMo2UDGagEZr3lPeVNJPLkWUi5JE4hCHKneVTwQlYQ==", + "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": { @@ -2891,9 +2891,9 @@ } }, "node_modules/@mat3ra/esse": { - "version": "0.0.0", - "resolved": "git+ssh://git@github.com/Exabyte-io/esse.git#f11c7519a4b76dde88318c5d4ee24d6fe9f3c152", - "integrity": "sha512-yYehfhrMXC6K+/K4e2+bn08rzJENRvkhu5Ksgm+pTtbQhnoPF4QpZnLzJhlnM9O9+KMN6T2zgpEyg1h7o8zp/w==", + "version": "2026.3.25-0", + "resolved": "https://registry.npmjs.org/@mat3ra/esse/-/esse-2026.3.25-0.tgz", + "integrity": "sha512-pBcYR27YnocksMuNZMyA8YpvQQ3cWbaHVeRUUzFD6qP0bhELslq58fuat6rBxXb3v7pdZrDw2FMIut7CbtNu4A==", "dev": true, "license": "Apache-2.0", "dependencies": { @@ -3603,20 +3603,6 @@ "node": ">= 8" } }, - "node_modules/@pkgr/core": { - "version": "0.2.9", - "resolved": "https://registry.npmjs.org/@pkgr/core/-/core-0.2.9.tgz", - "integrity": "sha512-QNqXyfVS2wm9hweSYD2O7F0G06uurj9kZ96TRQE5Y9hU7+tgdZwIkbAKc5Ocy1HxEY2kuDQa6cQ1WRs/O5LFKA==", - "dev": true, - "license": "MIT", - "peer": true, - "engines": { - "node": "^12.20.0 || ^14.18.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/pkgr" - } - }, "node_modules/@tsconfig/node10": { "version": "1.0.10", "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.10.tgz", @@ -5326,37 +5312,6 @@ "url": "https://opencollective.com/eslint" } }, - "node_modules/eslint-compat-utils": { - "version": "0.6.5", - "resolved": "https://registry.npmjs.org/eslint-compat-utils/-/eslint-compat-utils-0.6.5.tgz", - "integrity": "sha512-vAUHYzue4YAa2hNACjB8HvUQj5yehAZgiClyFVVom9cP8z5NSFq3PwB/TtJslN2zAMgRX6FCFCjYBbQh71g5RQ==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "semver": "^7.5.4" - }, - "engines": { - "node": ">=12" - }, - "peerDependencies": { - "eslint": ">=6.0.0" - } - }, - "node_modules/eslint-compat-utils/node_modules/semver": { - "version": "7.7.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.2.tgz", - "integrity": "sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==", - "dev": true, - "license": "ISC", - "peer": true, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, "node_modules/eslint-config-airbnb": { "version": "19.0.2", "resolved": "https://registry.npmjs.org/eslint-config-airbnb/-/eslint-config-airbnb-19.0.2.tgz", @@ -5467,29 +5422,6 @@ "ms": "^2.1.1" } }, - "node_modules/eslint-json-compat-utils": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/eslint-json-compat-utils/-/eslint-json-compat-utils-0.2.1.tgz", - "integrity": "sha512-YzEodbDyW8DX8bImKhAcCeu/L31Dd/70Bidx2Qex9OFUtgzXLqtfWL4Hr5fM/aCCB8QUZLuJur0S9k6UfgFkfg==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "esquery": "^1.6.0" - }, - "engines": { - "node": ">=12" - }, - "peerDependencies": { - "eslint": "*", - "jsonc-eslint-parser": "^2.4.0" - }, - "peerDependenciesMeta": { - "@eslint/json": { - "optional": true - } - } - }, "node_modules/eslint-module-utils": { "version": "2.7.3", "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.7.3.tgz", @@ -5674,80 +5606,6 @@ "node": ">=10" } }, - "node_modules/eslint-plugin-jsonc": { - "version": "2.20.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-jsonc/-/eslint-plugin-jsonc-2.20.1.tgz", - "integrity": "sha512-gUzIwQHXx7ZPypUoadcyRi4WbHW2TPixDr0kqQ4miuJBU0emJmyGTlnaT3Og9X2a8R1CDayN9BFSq5weGWbTng==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "@eslint-community/eslint-utils": "^4.5.1", - "eslint-compat-utils": "^0.6.4", - "eslint-json-compat-utils": "^0.2.1", - "espree": "^9.6.1 || ^10.3.0", - "graphemer": "^1.4.0", - "jsonc-eslint-parser": "^2.4.0", - "natural-compare": "^1.4.0", - "synckit": "^0.6.2 || ^0.7.3 || ^0.11.5" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/ota-meshi" - }, - "peerDependencies": { - "eslint": ">=6.0.0" - } - }, - "node_modules/eslint-plugin-jsonc/node_modules/acorn": { - "version": "8.15.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.15.0.tgz", - "integrity": "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==", - "dev": true, - "license": "MIT", - "peer": true, - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/eslint-plugin-jsonc/node_modules/eslint-visitor-keys": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.1.tgz", - "integrity": "sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==", - "dev": true, - "license": "Apache-2.0", - "peer": true, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/eslint-plugin-jsonc/node_modules/espree": { - "version": "10.4.0", - "resolved": "https://registry.npmjs.org/espree/-/espree-10.4.0.tgz", - "integrity": "sha512-j6PAQ2uUr79PZhBjP5C5fhl8e39FmRnOjsD5lGnWrFU8i2G776tBK7+nP8KuQUTTyAZUwfQqXAgrVH5MbH9CYQ==", - "dev": true, - "license": "BSD-2-Clause", - "peer": true, - "dependencies": { - "acorn": "^8.15.0", - "acorn-jsx": "^5.3.2", - "eslint-visitor-keys": "^4.2.1" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, "node_modules/eslint-plugin-jsx-a11y": { "version": "6.5.1", "resolved": "https://registry.npmjs.org/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.5.1.tgz", @@ -5845,20 +5703,6 @@ "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8" } }, - "node_modules/eslint-plugin-react-hooks": { - "version": "4.6.2", - "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.6.2.tgz", - "integrity": "sha512-QzliNJq4GinDBcD8gPB5v0wh6g8q3SUi6EFF0x8N/BL9PoVs0atuGc47ozMRyOWAKdwaZ5OnbOEa3WR+dSGKuQ==", - "dev": true, - "license": "MIT", - "peer": true, - "engines": { - "node": ">=10" - }, - "peerDependencies": { - "eslint": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0" - } - }, "node_modules/eslint-plugin-react/node_modules/doctrine": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", @@ -7554,87 +7398,6 @@ "node": ">=6" } }, - "node_modules/jsonc-eslint-parser": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/jsonc-eslint-parser/-/jsonc-eslint-parser-2.4.0.tgz", - "integrity": "sha512-WYDyuc/uFcGp6YtM2H0uKmUwieOuzeE/5YocFJLnLfclZ4inf3mRn8ZVy1s7Hxji7Jxm6Ss8gqpexD/GlKoGgg==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "acorn": "^8.5.0", - "eslint-visitor-keys": "^3.0.0", - "espree": "^9.0.0", - "semver": "^7.3.5" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/ota-meshi" - } - }, - "node_modules/jsonc-eslint-parser/node_modules/acorn": { - "version": "8.15.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.15.0.tgz", - "integrity": "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==", - "dev": true, - "license": "MIT", - "peer": true, - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/jsonc-eslint-parser/node_modules/eslint-visitor-keys": { - "version": "3.4.3", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", - "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", - "dev": true, - "license": "Apache-2.0", - "peer": true, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/jsonc-eslint-parser/node_modules/espree": { - "version": "9.6.1", - "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz", - "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==", - "dev": true, - "license": "BSD-2-Clause", - "peer": true, - "dependencies": { - "acorn": "^8.9.0", - "acorn-jsx": "^5.3.2", - "eslint-visitor-keys": "^3.4.1" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/jsonc-eslint-parser/node_modules/semver": { - "version": "7.7.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.2.tgz", - "integrity": "sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==", - "dev": true, - "license": "ISC", - "peer": true, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, "node_modules/jsx-ast-utils": { "version": "3.3.2", "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.3.2.tgz", @@ -9951,23 +9714,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/synckit": { - "version": "0.11.11", - "resolved": "https://registry.npmjs.org/synckit/-/synckit-0.11.11.tgz", - "integrity": "sha512-MeQTA1r0litLUf0Rp/iisCaL8761lKAZHaimlbGK4j0HysC4PLfqygQj9srcs0m2RdtDYnF8UuYyKpbjHYp7Jw==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "@pkgr/core": "^0.2.9" - }, - "engines": { - "node": "^14.18.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/synckit" - } - }, "node_modules/table": { "version": "6.8.0", "resolved": "https://registry.npmjs.org/table/-/table-6.8.0.tgz", diff --git a/package.json b/package.json index 4833070..0a06b6c 100644 --- a/package.json +++ b/package.json @@ -52,7 +52,7 @@ "@babel/eslint-parser": "^7.16.3", "@exabyte-io/eslint-config": "2025.5.13-0", "@mat3ra/code": "2025.10.8-0", - "@mat3ra/esse": "git+https://github.com/Exabyte-io/esse.git#f11c7519a4b76dde88318c5d4ee24d6fe9f3c152", + "@mat3ra/esse": "2026.3.25-0", "@mat3ra/made": "2025.10.7-0", "@mat3ra/tsconfig": "2024.6.3-0", "@typescript-eslint/eslint-plugin": "^5.9.1",