From a199afe4f1ece3908d938fd563819a1d3a5d6546 Mon Sep 17 00:00:00 2001 From: VsevolodX Date: Sun, 24 May 2026 15:33:46 -0700 Subject: [PATCH 1/3] update: add formation energy property --- dist/js/PropertyFactory.d.ts | 3 ++- dist/js/PropertyFactory.js | 2 ++ .../FormationEnergyPropertySchemaMixin.d.ts | 5 ++++ .../FormationEnergyPropertySchemaMixin.js | 18 +++++++++++++ dist/js/index.d.ts | 1 + dist/js/index.js | 4 ++- .../scalar/FormationEnergyProperty.d.ts | 15 +++++++++++ .../scalar/FormationEnergyProperty.js | 18 +++++++++++++ dist/js/settings.d.ts | 1 + dist/js/settings.js | 1 + scripts/generate-mixins.ts | 2 ++ src/js/PropertyFactory.ts | 3 +++ .../FormationEnergyPropertySchemaMixin.ts | 27 +++++++++++++++++++ src/js/index.ts | 1 + .../scalar/FormationEnergyProperty.ts | 27 +++++++++++++++++++ src/js/settings.ts | 1 + tests/js/properties/formation_energy.test.ts | 22 +++++++++++++++ 17 files changed, 149 insertions(+), 2 deletions(-) create mode 100644 dist/js/generated/FormationEnergyPropertySchemaMixin.d.ts create mode 100644 dist/js/generated/FormationEnergyPropertySchemaMixin.js create mode 100644 dist/js/properties/scalar/FormationEnergyProperty.d.ts create mode 100644 dist/js/properties/scalar/FormationEnergyProperty.js create mode 100644 src/js/generated/FormationEnergyPropertySchemaMixin.ts create mode 100644 src/js/properties/scalar/FormationEnergyProperty.ts create mode 100644 tests/js/properties/formation_energy.test.ts diff --git a/dist/js/PropertyFactory.d.ts b/dist/js/PropertyFactory.d.ts index 9ca6b17..876ec8b 100644 --- a/dist/js/PropertyFactory.d.ts +++ b/dist/js/PropertyFactory.d.ts @@ -23,6 +23,7 @@ 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 FormationEnergyProperty from "./properties/scalar/FormationEnergyProperty"; import HOMOEnergyProperty from "./properties/scalar/HOMOEnergyProperty"; import IonizationPotentialElementalProperty from "./properties/scalar/IonizationPotentialElementalProperty"; import LUMOEnergyProperty from "./properties/scalar/LUMOEnergyProperty"; @@ -52,7 +53,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 | HOMOEnergyProperty | IonizationPotentialElementalProperty | LUMOEnergyProperty | PressureProperty | ReactionEnergyBarrierProperty | SurfaceEnergyProperty | ThermalCorrectionToEnergyProperty | ThermalCorrectionToEnthalpyProperty | 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 | FormationEnergyProperty | HOMOEnergyProperty | IonizationPotentialElementalProperty | LUMOEnergyProperty | PressureProperty | ReactionEnergyBarrierProperty | SurfaceEnergyProperty | ThermalCorrectionToEnergyProperty | ThermalCorrectionToEnthalpyProperty | 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 6d5f19f..b83901e 100644 --- a/dist/js/PropertyFactory.js +++ b/dist/js/PropertyFactory.js @@ -27,6 +27,7 @@ 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 FormationEnergyProperty_1 = __importDefault(require("./properties/scalar/FormationEnergyProperty")); const HOMOEnergyProperty_1 = __importDefault(require("./properties/scalar/HOMOEnergyProperty")); const IonizationPotentialElementalProperty_1 = __importDefault(require("./properties/scalar/IonizationPotentialElementalProperty")); const LUMOEnergyProperty_1 = __importDefault(require("./properties/scalar/LUMOEnergyProperty")); @@ -51,6 +52,7 @@ const PROPERTY_CLASS_MAP = { [TotalEnergyProperty_1.default.propertyName]: TotalEnergyProperty_1.default, [HOMOEnergyProperty_1.default.propertyName]: HOMOEnergyProperty_1.default, [LUMOEnergyProperty_1.default.propertyName]: LUMOEnergyProperty_1.default, + [FormationEnergyProperty_1.default.propertyName]: FormationEnergyProperty_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/FormationEnergyPropertySchemaMixin.d.ts b/dist/js/generated/FormationEnergyPropertySchemaMixin.d.ts new file mode 100644 index 0000000..ed54e5a --- /dev/null +++ b/dist/js/generated/FormationEnergyPropertySchemaMixin.d.ts @@ -0,0 +1,5 @@ +import type { InMemoryEntity } from "@mat3ra/code/dist/js/entity"; +import type { FormationEnergyPropertySchema } from "@mat3ra/esse/dist/js/types"; +export type FormationEnergyPropertySchemaMixin = Omit; +export type FormationEnergyPropertyInMemoryEntity = InMemoryEntity & FormationEnergyPropertySchemaMixin; +export declare function formationEnergyPropertySchemaMixin(item: InMemoryEntity): void; diff --git a/dist/js/generated/FormationEnergyPropertySchemaMixin.js b/dist/js/generated/FormationEnergyPropertySchemaMixin.js new file mode 100644 index 0000000..85a59d2 --- /dev/null +++ b/dist/js/generated/FormationEnergyPropertySchemaMixin.js @@ -0,0 +1,18 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.formationEnergyPropertySchemaMixin = formationEnergyPropertySchemaMixin; +function formationEnergyPropertySchemaMixin(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 85b8344..470fb0f 100644 --- a/dist/js/index.d.ts +++ b/dist/js/index.d.ts @@ -8,6 +8,7 @@ export { default as BandGapsProperty } from "./properties/non-scalar/BandGapsPro export { default as IsRelaxedProperty } from "./properties/non-scalar/IsRelaxedProperty"; export { default as PressureProperty } from "./properties/scalar/PressureProperty"; export { default as ReactionEnergyBarrierProperty } from "./properties/scalar/ReactionEnergyBarrierProperty"; +export { default as FormationEnergyProperty } from "./properties/scalar/FormationEnergyProperty"; export { default as SurfaceEnergyProperty } from "./properties/scalar/SurfaceEnergyProperty"; export { default as TotalEnergyProperty } from "./properties/scalar/TotalEnergyProperty"; export { default as HOMOEnergyProperty } from "./properties/scalar/HOMOEnergyProperty"; diff --git a/dist/js/index.js b/dist/js/index.js index c7e8c51..8735299 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.ThermalCorrectionToEnthalpyProperty = exports.ThermalCorrectionToEnergyProperty = 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; +exports.metaPropertyHolderMixin = exports.propertyHolderMixin = exports.protoPropertyHolderMixin = exports.ReactionEnergyProfileProperty = exports.WavefunctionAmplitudeProperty = exports.PotentialProfileProperty = exports.ChargeDensityProfileProperty = exports.BandStructureProperty = exports.ThermalCorrectionToEnthalpyProperty = exports.ThermalCorrectionToEnergyProperty = exports.LUMOEnergyProperty = exports.HOMOEnergyProperty = exports.TotalEnergyProperty = exports.SurfaceEnergyProperty = exports.FormationEnergyProperty = 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"); @@ -39,6 +39,8 @@ var PressureProperty_1 = require("./properties/scalar/PressureProperty"); Object.defineProperty(exports, "PressureProperty", { enumerable: true, get: function () { return __importDefault(PressureProperty_1).default; } }); var ReactionEnergyBarrierProperty_1 = require("./properties/scalar/ReactionEnergyBarrierProperty"); Object.defineProperty(exports, "ReactionEnergyBarrierProperty", { enumerable: true, get: function () { return __importDefault(ReactionEnergyBarrierProperty_1).default; } }); +var FormationEnergyProperty_1 = require("./properties/scalar/FormationEnergyProperty"); +Object.defineProperty(exports, "FormationEnergyProperty", { enumerable: true, get: function () { return __importDefault(FormationEnergyProperty_1).default; } }); 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"); diff --git a/dist/js/properties/scalar/FormationEnergyProperty.d.ts b/dist/js/properties/scalar/FormationEnergyProperty.d.ts new file mode 100644 index 0000000..eaec3bb --- /dev/null +++ b/dist/js/properties/scalar/FormationEnergyProperty.d.ts @@ -0,0 +1,15 @@ +import type { Constructor } from "@mat3ra/code/dist/js/utils/types"; +import type { FormationEnergyPropertySchema } from "@mat3ra/esse/dist/js/types"; +import { FormationEnergyPropertySchemaMixin } from "../../generated/FormationEnergyPropertySchemaMixin"; +import Property from "../../Property"; +import { PropertyName, PropertyType } from "../../settings"; +type Schema = FormationEnergyPropertySchema; +type Base = typeof Property & Constructor; +declare const FormationEnergyProperty_base: Base; +export default class FormationEnergyProperty extends FormationEnergyProperty_base implements Schema { + static readonly isRefined = true; + static readonly propertyName = PropertyName.formation_energy; + static readonly propertyType = PropertyType.scalar; + constructor(config: Omit); +} +export {}; diff --git a/dist/js/properties/scalar/FormationEnergyProperty.js b/dist/js/properties/scalar/FormationEnergyProperty.js new file mode 100644 index 0000000..0a2ec7c --- /dev/null +++ b/dist/js/properties/scalar/FormationEnergyProperty.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 FormationEnergyPropertySchemaMixin_1 = require("../../generated/FormationEnergyPropertySchemaMixin"); +const Property_1 = __importDefault(require("../../Property")); +const settings_1 = require("../../settings"); +class FormationEnergyProperty extends Property_1.default { + constructor(config) { + super({ ...config, name: FormationEnergyProperty.propertyName }); + } +} +FormationEnergyProperty.isRefined = true; +FormationEnergyProperty.propertyName = settings_1.PropertyName.formation_energy; +FormationEnergyProperty.propertyType = settings_1.PropertyType.scalar; +exports.default = FormationEnergyProperty; +(0, FormationEnergyPropertySchemaMixin_1.formationEnergyPropertySchemaMixin)(FormationEnergyProperty.prototype); diff --git a/dist/js/settings.d.ts b/dist/js/settings.d.ts index f575892..a0ec5b9 100644 --- a/dist/js/settings.d.ts +++ b/dist/js/settings.d.ts @@ -15,6 +15,7 @@ export declare enum PropertyName { homo_energy = "homo_energy", lumo_energy = "lumo_energy", surface_energy = "surface_energy", + formation_energy = "formation_energy", convergence_electronic = "convergence_electronic", convergence_ionic = "convergence_ionic", fermi_energy = "fermi_energy", diff --git a/dist/js/settings.js b/dist/js/settings.js index a39ff9e..1daeae8 100644 --- a/dist/js/settings.js +++ b/dist/js/settings.js @@ -23,6 +23,7 @@ var PropertyName; PropertyName["homo_energy"] = "homo_energy"; PropertyName["lumo_energy"] = "lumo_energy"; PropertyName["surface_energy"] = "surface_energy"; + PropertyName["formation_energy"] = "formation_energy"; PropertyName["convergence_electronic"] = "convergence_electronic"; PropertyName["convergence_ionic"] = "convergence_ionic"; PropertyName["fermi_energy"] = "fermi_energy"; diff --git a/scripts/generate-mixins.ts b/scripts/generate-mixins.ts index b33124e..0126593 100644 --- a/scripts/generate-mixins.ts +++ b/scripts/generate-mixins.ts @@ -75,6 +75,8 @@ const OUTPUT_PATHS = { "properties-directory/scalar/pressure": "src/js/generated/PressurePropertySchemaMixin.ts", "properties-directory/scalar/reaction-energy-barrier": "src/js/generated/ReactionEnergyBarrierPropertySchemaMixin.ts", + "properties-directory/scalar/formation-energy": + "src/js/generated/FormationEnergyPropertySchemaMixin.ts", "properties-directory/scalar/surface-energy": "src/js/generated/SurfaceEnergyPropertySchemaMixin.ts", "properties-directory/scalar/thermal-correction-to-energy": diff --git a/src/js/PropertyFactory.ts b/src/js/PropertyFactory.ts index feb1ec2..2146876 100644 --- a/src/js/PropertyFactory.ts +++ b/src/js/PropertyFactory.ts @@ -30,6 +30,7 @@ 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 FormationEnergyProperty from "./properties/scalar/FormationEnergyProperty"; import HOMOEnergyProperty from "./properties/scalar/HOMOEnergyProperty"; import IonizationPotentialElementalProperty from "./properties/scalar/IonizationPotentialElementalProperty"; import LUMOEnergyProperty from "./properties/scalar/LUMOEnergyProperty"; @@ -61,6 +62,7 @@ type PropertyClassMap = { | Constructor | Constructor | Constructor + | Constructor | Constructor | Constructor | Constructor @@ -112,6 +114,7 @@ const PROPERTY_CLASS_MAP: PropertyClassMap = { [TotalEnergyProperty.propertyName]: TotalEnergyProperty, [HOMOEnergyProperty.propertyName]: HOMOEnergyProperty, [LUMOEnergyProperty.propertyName]: LUMOEnergyProperty, + [FormationEnergyProperty.propertyName]: FormationEnergyProperty, [SurfaceEnergyProperty.propertyName]: SurfaceEnergyProperty, [ConvergenceElectronicProperty.propertyName]: ConvergenceElectronicProperty, [ConvergenceIonicProperty.propertyName]: ConvergenceIonicProperty, diff --git a/src/js/generated/FormationEnergyPropertySchemaMixin.ts b/src/js/generated/FormationEnergyPropertySchemaMixin.ts new file mode 100644 index 0000000..659eef3 --- /dev/null +++ b/src/js/generated/FormationEnergyPropertySchemaMixin.ts @@ -0,0 +1,27 @@ +import type { InMemoryEntity } from "@mat3ra/code/dist/js/entity"; +import type { FormationEnergyPropertySchema } from "@mat3ra/esse/dist/js/types"; + +export type FormationEnergyPropertySchemaMixin = Omit< + FormationEnergyPropertySchema, + "_id" | "slug" | "systemName" | "schemaVersion" +>; + +export type FormationEnergyPropertyInMemoryEntity = InMemoryEntity & + FormationEnergyPropertySchemaMixin; + +export function formationEnergyPropertySchemaMixin(item: InMemoryEntity) { + // @ts-expect-error + const properties: InMemoryEntity & FormationEnergyPropertySchemaMixin = { + 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 e342c6a..c8da01d 100644 --- a/src/js/index.ts +++ b/src/js/index.ts @@ -8,6 +8,7 @@ export { default as BandGapsProperty } from "./properties/non-scalar/BandGapsPro export { default as IsRelaxedProperty } from "./properties/non-scalar/IsRelaxedProperty"; export { default as PressureProperty } from "./properties/scalar/PressureProperty"; export { default as ReactionEnergyBarrierProperty } from "./properties/scalar/ReactionEnergyBarrierProperty"; +export { default as FormationEnergyProperty } from "./properties/scalar/FormationEnergyProperty"; export { default as SurfaceEnergyProperty } from "./properties/scalar/SurfaceEnergyProperty"; export { default as TotalEnergyProperty } from "./properties/scalar/TotalEnergyProperty"; export { default as HOMOEnergyProperty } from "./properties/scalar/HOMOEnergyProperty"; diff --git a/src/js/properties/scalar/FormationEnergyProperty.ts b/src/js/properties/scalar/FormationEnergyProperty.ts new file mode 100644 index 0000000..a2f7f38 --- /dev/null +++ b/src/js/properties/scalar/FormationEnergyProperty.ts @@ -0,0 +1,27 @@ +import type { Constructor } from "@mat3ra/code/dist/js/utils/types"; +import type { FormationEnergyPropertySchema } from "@mat3ra/esse/dist/js/types"; + +import { + FormationEnergyPropertySchemaMixin, + formationEnergyPropertySchemaMixin, +} from "../../generated/FormationEnergyPropertySchemaMixin"; +import Property from "../../Property"; +import { PropertyName, PropertyType } from "../../settings"; + +type Schema = FormationEnergyPropertySchema; + +type Base = typeof Property & Constructor; + +export default class FormationEnergyProperty extends (Property as Base) implements Schema { + static readonly isRefined = true; + + static readonly propertyName = PropertyName.formation_energy; + + static readonly propertyType = PropertyType.scalar; + + constructor(config: Omit) { + super({ ...config, name: FormationEnergyProperty.propertyName }); + } +} + +formationEnergyPropertySchemaMixin(FormationEnergyProperty.prototype); diff --git a/src/js/settings.ts b/src/js/settings.ts index ce1fab8..e15c552 100644 --- a/src/js/settings.ts +++ b/src/js/settings.ts @@ -19,6 +19,7 @@ export enum PropertyName { homo_energy = "homo_energy", lumo_energy = "lumo_energy", surface_energy = "surface_energy", + formation_energy = "formation_energy", convergence_electronic = "convergence_electronic", convergence_ionic = "convergence_ionic", fermi_energy = "fermi_energy", diff --git a/tests/js/properties/formation_energy.test.ts b/tests/js/properties/formation_energy.test.ts new file mode 100644 index 0000000..919e427 --- /dev/null +++ b/tests/js/properties/formation_energy.test.ts @@ -0,0 +1,22 @@ +/* eslint-disable no-unused-expressions */ +import type { FormationEnergyPropertySchema } from "@mat3ra/esse/dist/js/types"; +import { expect } from "chai"; + +import FormationEnergyProperty from "../../../src/js/properties/scalar/FormationEnergyProperty"; +import { PropertyName, PropertyType } from "../../../src/js/settings"; + +describe("FormationEnergyProperty", () => { + it("should create a formation energy property with correct constructor, propertyType, propertyName, and isRefined", () => { + const config: Omit = { + value: -0.123, + units: "eV", + }; + + const formationEnergyProperty = new FormationEnergyProperty(config); + + expect(formationEnergyProperty).to.be.instanceOf(FormationEnergyProperty); + expect(FormationEnergyProperty.propertyType).equal(PropertyType.scalar); + expect(FormationEnergyProperty.propertyName).equal(PropertyName.formation_energy); + expect(FormationEnergyProperty.isRefined).to.be.true; + }); +}); From cad0a2f8c4b64e37d560f844a0cf63d46d15ceeb Mon Sep 17 00:00:00 2001 From: VsevolodX Date: Thu, 28 May 2026 14:57:39 -0700 Subject: [PATCH 2/3] update: add formation energy and reference energies --- dist/js/PropertyFactory.d.ts | 3 +- dist/js/PropertyFactory.js | 2 + ...onEnergyReferencesPropertySchemaMixin.d.ts | 5 +++ ...tionEnergyReferencesPropertySchemaMixin.js | 15 +++++++ dist/js/index.d.ts | 1 + dist/js/index.js | 4 +- .../FormationEnergyReferencesProperty.d.ts | 14 +++++++ .../FormationEnergyReferencesProperty.js | 17 ++++++++ dist/js/settings.d.ts | 1 + dist/js/settings.js | 1 + dist/js/types.d.ts | 1 + scripts/generate-mixins.ts | 2 + src/js/PropertyFactory.ts | 3 ++ ...tionEnergyReferencesPropertySchemaMixin.ts | 24 ++++++++++++ src/js/index.ts | 1 + .../FormationEnergyReferencesProperty.ts | 26 +++++++++++++ src/js/settings.ts | 1 + tests/js/properties/formation_energy.test.ts | 2 +- .../formation_energy_references.test.ts | 39 +++++++++++++++++++ 19 files changed, 159 insertions(+), 3 deletions(-) create mode 100644 dist/js/generated/FormationEnergyReferencesPropertySchemaMixin.d.ts create mode 100644 dist/js/generated/FormationEnergyReferencesPropertySchemaMixin.js create mode 100644 dist/js/properties/non-scalar/FormationEnergyReferencesProperty.d.ts create mode 100644 dist/js/properties/non-scalar/FormationEnergyReferencesProperty.js create mode 100644 src/js/generated/FormationEnergyReferencesPropertySchemaMixin.ts create mode 100644 src/js/properties/non-scalar/FormationEnergyReferencesProperty.ts create mode 100644 tests/js/properties/formation_energy_references.test.ts diff --git a/dist/js/PropertyFactory.d.ts b/dist/js/PropertyFactory.d.ts index 876ec8b..de6269c 100644 --- a/dist/js/PropertyFactory.d.ts +++ b/dist/js/PropertyFactory.d.ts @@ -8,6 +8,7 @@ import ConvergenceElectronicProperty from "./properties/non-scalar/convergence/C import ConvergenceIonicProperty from "./properties/non-scalar/convergence/ConvergenceIonicProperty"; import DensityOfStatesProperty from "./properties/non-scalar/DensityOfStatesProperty"; import DielectricTensorProperty from "./properties/non-scalar/DielectricTensorProperty"; +import FormationEnergyReferencesProperty from "./properties/non-scalar/FormationEnergyReferencesProperty"; import FileContentProperty from "./properties/non-scalar/FileContentProperty"; import FinalStructureProperty from "./properties/non-scalar/FinalStructureProperty"; import HubbardUProperty from "./properties/non-scalar/HubbardUProperty"; @@ -53,7 +54,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 | FormationEnergyProperty | HOMOEnergyProperty | IonizationPotentialElementalProperty | LUMOEnergyProperty | PressureProperty | ReactionEnergyBarrierProperty | SurfaceEnergyProperty | ThermalCorrectionToEnergyProperty | ThermalCorrectionToEnthalpyProperty | TotalEnergyProperty | TotalForcesProperty | ValenceBandOffsetProperty | ZeroPointEnergyProperty | AtomicForcesProperty | MagneticMomentsProperty | StressTensorProperty; + static createProperty(config: AnyProperty): AveragePotentialProfileProperty | BandGapsProperty | BandStructureProperty | ChargeDensityProfileProperty | ConvergenceElectronicProperty | ConvergenceIonicProperty | DensityOfStatesProperty | DielectricTensorProperty | FormationEnergyReferencesProperty | FileContentProperty | FinalStructureProperty | HubbardUProperty | HubbardVNNProperty | HubbardVProperty | IsRelaxedProperty | JupyterNotebookEndpointProperty | PhononDispersionsProperty | PhononDOSProperty | PotentialProfileProperty | ReactionEnergyProfileProperty | WavefunctionAmplitudeProperty | WorkflowProperty | TotalEnergyContributionsProperty | FermiEnergyProperty | FormationEnergyProperty | HOMOEnergyProperty | IonizationPotentialElementalProperty | LUMOEnergyProperty | PressureProperty | ReactionEnergyBarrierProperty | SurfaceEnergyProperty | ThermalCorrectionToEnergyProperty | ThermalCorrectionToEnthalpyProperty | 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 b83901e..ee7cdc6 100644 --- a/dist/js/PropertyFactory.js +++ b/dist/js/PropertyFactory.js @@ -12,6 +12,7 @@ const ConvergenceElectronicProperty_1 = __importDefault(require("./properties/no const ConvergenceIonicProperty_1 = __importDefault(require("./properties/non-scalar/convergence/ConvergenceIonicProperty")); const DensityOfStatesProperty_1 = __importDefault(require("./properties/non-scalar/DensityOfStatesProperty")); const DielectricTensorProperty_1 = __importDefault(require("./properties/non-scalar/DielectricTensorProperty")); +const FormationEnergyReferencesProperty_1 = __importDefault(require("./properties/non-scalar/FormationEnergyReferencesProperty")); const FileContentProperty_1 = __importDefault(require("./properties/non-scalar/FileContentProperty")); const FinalStructureProperty_1 = __importDefault(require("./properties/non-scalar/FinalStructureProperty")); const HubbardUProperty_1 = __importDefault(require("./properties/non-scalar/HubbardUProperty")); @@ -82,6 +83,7 @@ const PROPERTY_CLASS_MAP = { [IonizationPotentialElementalProperty_1.default.propertyName]: IonizationPotentialElementalProperty_1.default, [FileContentProperty_1.default.propertyName]: FileContentProperty_1.default, [DielectricTensorProperty_1.default.propertyName]: DielectricTensorProperty_1.default, + [FormationEnergyReferencesProperty_1.default.propertyName]: FormationEnergyReferencesProperty_1.default, [HubbardUProperty_1.default.propertyName]: HubbardUProperty_1.default, [HubbardVNNProperty_1.default.propertyName]: HubbardVNNProperty_1.default, [HubbardVProperty_1.default.propertyName]: HubbardVProperty_1.default, diff --git a/dist/js/generated/FormationEnergyReferencesPropertySchemaMixin.d.ts b/dist/js/generated/FormationEnergyReferencesPropertySchemaMixin.d.ts new file mode 100644 index 0000000..2014eff --- /dev/null +++ b/dist/js/generated/FormationEnergyReferencesPropertySchemaMixin.d.ts @@ -0,0 +1,5 @@ +import type { InMemoryEntity } from "@mat3ra/code/dist/js/entity"; +import type { FormationEnergyReferencesPropertySchema } from "@mat3ra/esse/dist/js/types"; +export type FormationEnergyReferencesPropertySchemaMixin = Omit; +export type FormationEnergyReferencesPropertyInMemoryEntity = InMemoryEntity & FormationEnergyReferencesPropertySchemaMixin; +export declare function formationEnergyReferencesPropertySchemaMixin(item: InMemoryEntity): void; diff --git a/dist/js/generated/FormationEnergyReferencesPropertySchemaMixin.js b/dist/js/generated/FormationEnergyReferencesPropertySchemaMixin.js new file mode 100644 index 0000000..b84f0d0 --- /dev/null +++ b/dist/js/generated/FormationEnergyReferencesPropertySchemaMixin.js @@ -0,0 +1,15 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.formationEnergyReferencesPropertySchemaMixin = formationEnergyReferencesPropertySchemaMixin; +function formationEnergyReferencesPropertySchemaMixin(item) { + // @ts-expect-error + const properties = { + get name() { + return this.requiredProp("name"); + }, + 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 470fb0f..c111a32 100644 --- a/dist/js/index.d.ts +++ b/dist/js/index.d.ts @@ -5,6 +5,7 @@ export { default as MetaProperty } from "./MetaProperty"; export { default as PseudopotentialMetaProperty } from "./meta_properties/PseudopotentialMetaProperty"; export { default as FinalStructureProperty } from "./properties/non-scalar/FinalStructureProperty"; export { default as BandGapsProperty } from "./properties/non-scalar/BandGapsProperty"; +export { default as FormationEnergyReferencesProperty } from "./properties/non-scalar/FormationEnergyReferencesProperty"; export { default as IsRelaxedProperty } from "./properties/non-scalar/IsRelaxedProperty"; export { default as PressureProperty } from "./properties/scalar/PressureProperty"; export { default as ReactionEnergyBarrierProperty } from "./properties/scalar/ReactionEnergyBarrierProperty"; diff --git a/dist/js/index.js b/dist/js/index.js index 8735299..79479b2 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.ThermalCorrectionToEnthalpyProperty = exports.ThermalCorrectionToEnergyProperty = exports.LUMOEnergyProperty = exports.HOMOEnergyProperty = exports.TotalEnergyProperty = exports.SurfaceEnergyProperty = exports.FormationEnergyProperty = 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.ThermalCorrectionToEnthalpyProperty = exports.ThermalCorrectionToEnergyProperty = exports.LUMOEnergyProperty = exports.HOMOEnergyProperty = exports.TotalEnergyProperty = exports.SurfaceEnergyProperty = exports.FormationEnergyProperty = exports.ReactionEnergyBarrierProperty = exports.PressureProperty = exports.IsRelaxedProperty = exports.FormationEnergyReferencesProperty = 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"); @@ -33,6 +33,8 @@ var FinalStructureProperty_1 = require("./properties/non-scalar/FinalStructurePr Object.defineProperty(exports, "FinalStructureProperty", { enumerable: true, get: function () { return __importDefault(FinalStructureProperty_1).default; } }); var BandGapsProperty_1 = require("./properties/non-scalar/BandGapsProperty"); Object.defineProperty(exports, "BandGapsProperty", { enumerable: true, get: function () { return __importDefault(BandGapsProperty_1).default; } }); +var FormationEnergyReferencesProperty_1 = require("./properties/non-scalar/FormationEnergyReferencesProperty"); +Object.defineProperty(exports, "FormationEnergyReferencesProperty", { enumerable: true, get: function () { return __importDefault(FormationEnergyReferencesProperty_1).default; } }); var IsRelaxedProperty_1 = require("./properties/non-scalar/IsRelaxedProperty"); Object.defineProperty(exports, "IsRelaxedProperty", { enumerable: true, get: function () { return __importDefault(IsRelaxedProperty_1).default; } }); var PressureProperty_1 = require("./properties/scalar/PressureProperty"); diff --git a/dist/js/properties/non-scalar/FormationEnergyReferencesProperty.d.ts b/dist/js/properties/non-scalar/FormationEnergyReferencesProperty.d.ts new file mode 100644 index 0000000..073c6a0 --- /dev/null +++ b/dist/js/properties/non-scalar/FormationEnergyReferencesProperty.d.ts @@ -0,0 +1,14 @@ +import type { Constructor } from "@mat3ra/code/dist/js/utils/types"; +import type { FormationEnergyReferencesPropertySchema } from "@mat3ra/esse/dist/js/types"; +import { FormationEnergyReferencesPropertySchemaMixin } from "../../generated/FormationEnergyReferencesPropertySchemaMixin"; +import Property from "../../Property"; +import { PropertyName, PropertyType } from "../../settings"; +type Schema = FormationEnergyReferencesPropertySchema; +type Base = typeof Property & Constructor; +declare const FormationEnergyReferencesProperty_base: Base; +export default class FormationEnergyReferencesProperty extends FormationEnergyReferencesProperty_base implements Schema { + static readonly propertyName = PropertyName.formation_energy_references; + static readonly propertyType = PropertyType.non_scalar; + constructor(config: Omit); +} +export {}; diff --git a/dist/js/properties/non-scalar/FormationEnergyReferencesProperty.js b/dist/js/properties/non-scalar/FormationEnergyReferencesProperty.js new file mode 100644 index 0000000..2b3fac6 --- /dev/null +++ b/dist/js/properties/non-scalar/FormationEnergyReferencesProperty.js @@ -0,0 +1,17 @@ +"use strict"; +var __importDefault = (this && this.__importDefault) || function (mod) { + return (mod && mod.__esModule) ? mod : { "default": mod }; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +const FormationEnergyReferencesPropertySchemaMixin_1 = require("../../generated/FormationEnergyReferencesPropertySchemaMixin"); +const Property_1 = __importDefault(require("../../Property")); +const settings_1 = require("../../settings"); +class FormationEnergyReferencesProperty extends Property_1.default { + constructor(config) { + super({ ...config, name: FormationEnergyReferencesProperty.propertyName }); + } +} +FormationEnergyReferencesProperty.propertyName = settings_1.PropertyName.formation_energy_references; +FormationEnergyReferencesProperty.propertyType = settings_1.PropertyType.non_scalar; +exports.default = FormationEnergyReferencesProperty; +(0, FormationEnergyReferencesPropertySchemaMixin_1.formationEnergyReferencesPropertySchemaMixin)(FormationEnergyReferencesProperty.prototype); diff --git a/dist/js/settings.d.ts b/dist/js/settings.d.ts index a0ec5b9..4d1bda0 100644 --- a/dist/js/settings.d.ts +++ b/dist/js/settings.d.ts @@ -48,6 +48,7 @@ export declare enum PropertyName { pseudopotential = "pseudopotential", boundary_conditions = "boundary_conditions", dielectric_tensor = "dielectric_tensor", + formation_energy_references = "formation_energy_references", hubbard_u = "hubbard_u", hubbard_v_nn = "hubbard_v_nn", hubbard_v = "hubbard_v" diff --git a/dist/js/settings.js b/dist/js/settings.js index 1daeae8..a20962a 100644 --- a/dist/js/settings.js +++ b/dist/js/settings.js @@ -56,6 +56,7 @@ var PropertyName; PropertyName["pseudopotential"] = "pseudopotential"; PropertyName["boundary_conditions"] = "boundary_conditions"; PropertyName["dielectric_tensor"] = "dielectric_tensor"; + PropertyName["formation_energy_references"] = "formation_energy_references"; PropertyName["hubbard_u"] = "hubbard_u"; PropertyName["hubbard_v_nn"] = "hubbard_v_nn"; PropertyName["hubbard_v"] = "hubbard_v"; diff --git a/dist/js/types.d.ts b/dist/js/types.d.ts index 898d76d..ec294f5 100644 --- a/dist/js/types.d.ts +++ b/dist/js/types.d.ts @@ -10,5 +10,6 @@ export type { default as StressTensorProperty } from "./properties/tensor/Stress export type { default as AveragePotentialProfileProperty } from "./properties/non-scalar/AveragePotentialProfileProperty"; export type { default as DensityOfStatesProperty } from "./properties/non-scalar/DensityOfStatesProperty"; export type { default as DielectricTensorProperty } from "./properties/non-scalar/DielectricTensorProperty"; +export type { default as FormationEnergyReferencesProperty } from "./properties/non-scalar/FormationEnergyReferencesProperty"; export type { default as PhononDispersionsProperty } from "./properties/non-scalar/PhononDispersionsProperty"; export type { default as PhononDOSProperty } from "./properties/non-scalar/PhononDOSProperty"; diff --git a/scripts/generate-mixins.ts b/scripts/generate-mixins.ts index 0126593..9258f77 100644 --- a/scripts/generate-mixins.ts +++ b/scripts/generate-mixins.ts @@ -39,6 +39,8 @@ const OUTPUT_PATHS = { "src/js/generated/DensityOfStatesPropertySchemaMixin.ts", "properties-directory/non-scalar/dielectric-tensor": "src/js/generated/DielectricTensorPropertySchemaMixin.ts", + "properties-directory/non-scalar/formation-energy-references": + "src/js/generated/FormationEnergyReferencesPropertySchemaMixin.ts", "properties-directory/non-scalar/file-content": "src/js/generated/FileContentPropertySchemaMixin.ts", "properties-directory/non-scalar/final-structure": diff --git a/src/js/PropertyFactory.ts b/src/js/PropertyFactory.ts index 2146876..acd47f9 100644 --- a/src/js/PropertyFactory.ts +++ b/src/js/PropertyFactory.ts @@ -15,6 +15,7 @@ import ConvergenceElectronicProperty from "./properties/non-scalar/convergence/C import ConvergenceIonicProperty from "./properties/non-scalar/convergence/ConvergenceIonicProperty"; import DensityOfStatesProperty from "./properties/non-scalar/DensityOfStatesProperty"; import DielectricTensorProperty from "./properties/non-scalar/DielectricTensorProperty"; +import FormationEnergyReferencesProperty from "./properties/non-scalar/FormationEnergyReferencesProperty"; import FileContentProperty from "./properties/non-scalar/FileContentProperty"; import FinalStructureProperty from "./properties/non-scalar/FinalStructureProperty"; import HubbardUProperty from "./properties/non-scalar/HubbardUProperty"; @@ -92,6 +93,7 @@ type PropertyClassMap = { | Constructor | Constructor | Constructor + | Constructor | Constructor | Constructor | Constructor @@ -144,6 +146,7 @@ const PROPERTY_CLASS_MAP: PropertyClassMap = { [IonizationPotentialElementalProperty.propertyName]: IonizationPotentialElementalProperty, [FileContentProperty.propertyName]: FileContentProperty, [DielectricTensorProperty.propertyName]: DielectricTensorProperty, + [FormationEnergyReferencesProperty.propertyName]: FormationEnergyReferencesProperty, [HubbardUProperty.propertyName]: HubbardUProperty, [HubbardVNNProperty.propertyName]: HubbardVNNProperty, [HubbardVProperty.propertyName]: HubbardVProperty, diff --git a/src/js/generated/FormationEnergyReferencesPropertySchemaMixin.ts b/src/js/generated/FormationEnergyReferencesPropertySchemaMixin.ts new file mode 100644 index 0000000..ff74b8e --- /dev/null +++ b/src/js/generated/FormationEnergyReferencesPropertySchemaMixin.ts @@ -0,0 +1,24 @@ +import type { InMemoryEntity } from "@mat3ra/code/dist/js/entity"; +import type { FormationEnergyReferencesPropertySchema } from "@mat3ra/esse/dist/js/types"; + +export type FormationEnergyReferencesPropertySchemaMixin = Omit< + FormationEnergyReferencesPropertySchema, + "_id" | "slug" | "systemName" | "schemaVersion" +>; + +export type FormationEnergyReferencesPropertyInMemoryEntity = InMemoryEntity & + FormationEnergyReferencesPropertySchemaMixin; + +export function formationEnergyReferencesPropertySchemaMixin(item: InMemoryEntity) { + // @ts-expect-error + const properties: InMemoryEntity & FormationEnergyReferencesPropertySchemaMixin = { + get name() { + return this.requiredProp("name"); + }, + 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 c8da01d..d016a27 100644 --- a/src/js/index.ts +++ b/src/js/index.ts @@ -5,6 +5,7 @@ export { default as MetaProperty } from "./MetaProperty"; export { default as PseudopotentialMetaProperty } from "./meta_properties/PseudopotentialMetaProperty"; export { default as FinalStructureProperty } from "./properties/non-scalar/FinalStructureProperty"; export { default as BandGapsProperty } from "./properties/non-scalar/BandGapsProperty"; +export { default as FormationEnergyReferencesProperty } from "./properties/non-scalar/FormationEnergyReferencesProperty"; export { default as IsRelaxedProperty } from "./properties/non-scalar/IsRelaxedProperty"; export { default as PressureProperty } from "./properties/scalar/PressureProperty"; export { default as ReactionEnergyBarrierProperty } from "./properties/scalar/ReactionEnergyBarrierProperty"; diff --git a/src/js/properties/non-scalar/FormationEnergyReferencesProperty.ts b/src/js/properties/non-scalar/FormationEnergyReferencesProperty.ts new file mode 100644 index 0000000..27ca2ff --- /dev/null +++ b/src/js/properties/non-scalar/FormationEnergyReferencesProperty.ts @@ -0,0 +1,26 @@ +import type { Constructor } from "@mat3ra/code/dist/js/utils/types"; +import type { FormationEnergyReferencesPropertySchema } from "@mat3ra/esse/dist/js/types"; + +import { + FormationEnergyReferencesPropertySchemaMixin, + formationEnergyReferencesPropertySchemaMixin, +} from "../../generated/FormationEnergyReferencesPropertySchemaMixin"; +import Property from "../../Property"; +import { PropertyName, PropertyType } from "../../settings"; + +type Schema = FormationEnergyReferencesPropertySchema; +type Base = typeof Property & Constructor; + +export default class FormationEnergyReferencesProperty + extends (Property as Base) + implements Schema { + static readonly propertyName = PropertyName.formation_energy_references; + + static readonly propertyType = PropertyType.non_scalar; + + constructor(config: Omit) { + super({ ...config, name: FormationEnergyReferencesProperty.propertyName }); + } +} + +formationEnergyReferencesPropertySchemaMixin(FormationEnergyReferencesProperty.prototype); diff --git a/src/js/settings.ts b/src/js/settings.ts index e15c552..5c49118 100644 --- a/src/js/settings.ts +++ b/src/js/settings.ts @@ -52,6 +52,7 @@ export enum PropertyName { pseudopotential = "pseudopotential", boundary_conditions = "boundary_conditions", dielectric_tensor = "dielectric_tensor", + formation_energy_references = "formation_energy_references", hubbard_u = "hubbard_u", hubbard_v_nn = "hubbard_v_nn", hubbard_v = "hubbard_v", diff --git a/tests/js/properties/formation_energy.test.ts b/tests/js/properties/formation_energy.test.ts index 919e427..900c50f 100644 --- a/tests/js/properties/formation_energy.test.ts +++ b/tests/js/properties/formation_energy.test.ts @@ -9,7 +9,7 @@ describe("FormationEnergyProperty", () => { it("should create a formation energy property with correct constructor, propertyType, propertyName, and isRefined", () => { const config: Omit = { value: -0.123, - units: "eV", + units: "eV/atom", }; const formationEnergyProperty = new FormationEnergyProperty(config); diff --git a/tests/js/properties/formation_energy_references.test.ts b/tests/js/properties/formation_energy_references.test.ts new file mode 100644 index 0000000..eac5c90 --- /dev/null +++ b/tests/js/properties/formation_energy_references.test.ts @@ -0,0 +1,39 @@ +/* eslint-disable no-unused-expressions */ +import type { FormationEnergyReferencesPropertySchema } from "@mat3ra/esse/dist/js/types"; +import { expect } from "chai"; + +import FormationEnergyReferencesProperty from "../../../src/js/properties/non-scalar/FormationEnergyReferencesProperty"; +import { PropertyName, PropertyType } from "../../../src/js/settings"; + +const COMPOUND_LABEL = "SiC"; +const COMPOUND_TOTAL_ENERGY = -15.5; +const COMPOUND_N_ATOMS = 2; + +describe("FormationEnergyReferencesProperty", () => { + it("should create property with correct metadata and rows", () => { + const config: Omit = { + value: { + rows: [ + { + label: COMPOUND_LABEL, + total_energy: COMPOUND_TOTAL_ENERGY, + n_atoms: COMPOUND_N_ATOMS, + total_energy_per_atom: COMPOUND_TOTAL_ENERGY / COMPOUND_N_ATOMS, + precision_value: 10, + precision_metric: "KPPRA", + }, + ], + }, + }; + + const property = new FormationEnergyReferencesProperty(config); + + expect(property).to.be.instanceOf(FormationEnergyReferencesProperty); + expect(FormationEnergyReferencesProperty.propertyType).equal(PropertyType.non_scalar); + expect(FormationEnergyReferencesProperty.propertyName).equal( + PropertyName.formation_energy_references, + ); + expect(property.value.rows).to.have.length(1); + expect(property.value.rows[0].label).equal(COMPOUND_LABEL); + }); +}); From c6f77b409ab6f33e10239b1a0e1bccb850f7271e Mon Sep 17 00:00:00 2001 From: VsevolodX Date: Thu, 28 May 2026 15:07:33 -0700 Subject: [PATCH 3/3] chore: esse --- dist/js/types.d.ts | 1 - package-lock.json | 292 ++++++++++++++++++++++----------------------- package.json | 2 +- 3 files changed, 147 insertions(+), 148 deletions(-) diff --git a/dist/js/types.d.ts b/dist/js/types.d.ts index ec294f5..898d76d 100644 --- a/dist/js/types.d.ts +++ b/dist/js/types.d.ts @@ -10,6 +10,5 @@ export type { default as StressTensorProperty } from "./properties/tensor/Stress export type { default as AveragePotentialProfileProperty } from "./properties/non-scalar/AveragePotentialProfileProperty"; export type { default as DensityOfStatesProperty } from "./properties/non-scalar/DensityOfStatesProperty"; export type { default as DielectricTensorProperty } from "./properties/non-scalar/DielectricTensorProperty"; -export type { default as FormationEnergyReferencesProperty } from "./properties/non-scalar/FormationEnergyReferencesProperty"; export type { default as PhononDispersionsProperty } from "./properties/non-scalar/PhononDispersionsProperty"; export type { default as PhononDOSProperty } from "./properties/non-scalar/PhononDOSProperty"; diff --git a/package-lock.json b/package-lock.json index 8cba195..4d6567c 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.3.29-0", + "@mat3ra/esse": "git+https://github.com/Exabyte-io/esse.git#9d9ab4b9e3b62c44270dc390bc339052d973696e", "@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.29.0", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.29.0.tgz", - "integrity": "sha512-9NhCeYjq9+3uxgdtp20LSiJXJvN0FeCtNGpJxuMFZ1Kv3cWUNb6DOhJwUvcVCzKGR66cw4njwM6hrJLqgOwbcw==", + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.29.7.tgz", + "integrity": "sha512-Aup7aUOfpbAUg2ROOJN6Iw5f9DMBlzu0mIkm/malLQFN/YQgO48wCj0Kxa3sEHJvPVFg7siR+qRInwXd2qhQKw==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-validator-identifier": "^7.28.5", + "@babel/helper-validator-identifier": "^7.29.7", "js-tokens": "^4.0.0", "picocolors": "^1.1.1" }, @@ -225,14 +225,14 @@ } }, "node_modules/@babel/generator": { - "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==", + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.29.7.tgz", + "integrity": "sha512-DkXD5OJQaAQIdZ1bt3UZdEnHAn9Imd3IVBdX03UFe+ony9Ojw5pzr9YVKGDY1jt+Gcn/FnGkNf8r+Vj5NOJWtQ==", "dev": true, "license": "MIT", "dependencies": { - "@babel/parser": "^7.29.0", - "@babel/types": "^7.29.0", + "@babel/parser": "^7.29.7", + "@babel/types": "^7.29.7", "@jridgewell/gen-mapping": "^0.3.12", "@jridgewell/trace-mapping": "^0.3.28", "jsesc": "^3.0.2" @@ -242,13 +242,13 @@ } }, "node_modules/@babel/helper-annotate-as-pure": { - "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==", + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.29.7.tgz", + "integrity": "sha512-OoK6239jHPuSQOoS0kfTVKn0b/rVTk0seKq4Gd2UMLtmOVLjDC0ki3e+c90Trqv2gMfvJFqkiljrr568+qddiw==", "dev": true, "license": "MIT", "dependencies": { - "@babel/types": "^7.27.3" + "@babel/types": "^7.29.7" }, "engines": { "node": ">=6.9.0" @@ -299,18 +299,18 @@ "license": "ISC" }, "node_modules/@babel/helper-create-class-features-plugin": { - "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==", + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.29.7.tgz", + "integrity": "sha512-IY3ZD9Tmooqr3TUhc3DUWxiuo8xx1DWLhd5M7hQ+ZWJamqM2BbalrBJb2MisSLoYorOj75U03qULCxQTY9r3hg==", "dev": true, "license": "MIT", "dependencies": { - "@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", + "@babel/helper-annotate-as-pure": "^7.29.7", + "@babel/helper-member-expression-to-functions": "^7.29.7", + "@babel/helper-optimise-call-expression": "^7.29.7", + "@babel/helper-replace-supers": "^7.29.7", + "@babel/helper-skip-transparent-expression-wrappers": "^7.29.7", + "@babel/traverse": "^7.29.7", "semver": "^6.3.1" }, "engines": { @@ -394,9 +394,9 @@ } }, "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==", + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/helper-globals/-/helper-globals-7.29.7.tgz", + "integrity": "sha512-3nQVUAtvkKH9zahfWgw96Jc/uFOmjACE1kQz82E2lqWmHBgjzbNlsC22nuQTfahmWeQtTq5nQ/4Nnd2A1wj4zA==", "dev": true, "license": "MIT", "engines": { @@ -404,43 +404,43 @@ } }, "node_modules/@babel/helper-member-expression-to-functions": { - "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==", + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.29.7.tgz", + "integrity": "sha512-j+7JYmk1JYDtACIGj0QJqqWZjoUpMoEikQGADMaHgCMCSDqd2+P32rfcibUNrGOMWrlzK1WJBdxrB3JJQZwWtg==", "dev": true, "license": "MIT", "dependencies": { - "@babel/traverse": "^7.28.5", - "@babel/types": "^7.28.5" + "@babel/traverse": "^7.29.7", + "@babel/types": "^7.29.7" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-module-imports": { - "version": "7.28.6", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.28.6.tgz", - "integrity": "sha512-l5XkZK7r7wa9LucGw9LwZyyCUscb4x37JWTPz7swwFE/0FMQAGpiWUZn8u9DzkSBWEcK25jmvubfpw2dnAMdbw==", + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.29.7.tgz", + "integrity": "sha512-ejHwrQQYcm9xnTivShn2IDOlIzInN34AXskvq9QicvCtEzq1Vzclu/tKF8Jq1Cg8JG2GL6/EmjgsCT7lXepE3g==", "dev": true, "license": "MIT", "dependencies": { - "@babel/traverse": "^7.28.6", - "@babel/types": "^7.28.6" + "@babel/traverse": "^7.29.7", + "@babel/types": "^7.29.7" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-module-transforms": { - "version": "7.28.6", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.28.6.tgz", - "integrity": "sha512-67oXFAYr2cDLDVGLXTEABjdBJZ6drElUSI7WKp70NrpyISso3plG9SAGEF6y7zbha/wOzUByWWTJvEDVNIUGcA==", + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.29.7.tgz", + "integrity": "sha512-UPUVSyXbOh627KiCIGQSgwWzGeBKLkaJ9PJEdrngIwMSzxLR4jS4+f1f1jb7VzBbg8nFLaYotvVPFCTqdrmTAg==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-module-imports": "^7.28.6", - "@babel/helper-validator-identifier": "^7.28.5", - "@babel/traverse": "^7.28.6" + "@babel/helper-module-imports": "^7.29.7", + "@babel/helper-validator-identifier": "^7.29.7", + "@babel/traverse": "^7.29.7" }, "engines": { "node": ">=6.9.0" @@ -450,22 +450,22 @@ } }, "node_modules/@babel/helper-optimise-call-expression": { - "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==", + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.29.7.tgz", + "integrity": "sha512-+kmGVjcT9RGYzoDwdwEqEvGgKe3BYq+O1iGzjFubaNgZHwYHP6lsF2Yghf4kEuv9BV7tYDZ913aBW9am6YKong==", "dev": true, "license": "MIT", "dependencies": { - "@babel/types": "^7.27.1" + "@babel/types": "^7.29.7" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-plugin-utils": { - "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==", + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.29.7.tgz", + "integrity": "sha512-G7sHYigPY17oO5SYWnfD/0MTBwVR781S/JI643e/JhUYgVgWE/61SoW3NH9KWUKyKq5LVh3npif99Wkt6j86Jw==", "dev": true, "license": "MIT", "engines": { @@ -491,15 +491,15 @@ } }, "node_modules/@babel/helper-replace-supers": { - "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==", + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.29.7.tgz", + "integrity": "sha512-atfGXWSeCiF4DnKZIfmJfQRkSw9b9gNNXR1kqKjbhG4pGYCOnkp8OcTB8E3NXjBu8NpheSnOeNKz8KT7UNFTmQ==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-member-expression-to-functions": "^7.28.5", - "@babel/helper-optimise-call-expression": "^7.27.1", - "@babel/traverse": "^7.28.6" + "@babel/helper-member-expression-to-functions": "^7.29.7", + "@babel/helper-optimise-call-expression": "^7.29.7", + "@babel/traverse": "^7.29.7" }, "engines": { "node": ">=6.9.0" @@ -509,23 +509,23 @@ } }, "node_modules/@babel/helper-skip-transparent-expression-wrappers": { - "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==", + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.29.7.tgz", + "integrity": "sha512-brcMGQaVzIeUb+6/bs1Av0f8YuNNjKY2JyvfRCsFuFsdKccEQ5Ges2y74D74NZ1Rz8lKJ9ksJkfqwQFJ/iNEyQ==", "dev": true, "license": "MIT", "dependencies": { - "@babel/traverse": "^7.27.1", - "@babel/types": "^7.27.1" + "@babel/traverse": "^7.29.7", + "@babel/types": "^7.29.7" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-string-parser": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.27.1.tgz", - "integrity": "sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==", + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.29.7.tgz", + "integrity": "sha512-Pb5ijPrZ89GDH8223L4UP8i6QApWxs04RbPQJTeWDV0/keR2E36MeKnyr6LYmUUvqRRI+Iv87SuF1W6ErINzYw==", "dev": true, "license": "MIT", "engines": { @@ -533,9 +533,9 @@ } }, "node_modules/@babel/helper-validator-identifier": { - "version": "7.28.5", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.28.5.tgz", - "integrity": "sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q==", + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.29.7.tgz", + "integrity": "sha512-qehxGkRj55h/ff8EMaJ+cYhyaKlHIxqYDn682wQD7RNp9UujOQsHog2uS0r2vzr4pW+sXf90NeeayjcNaX3fFg==", "dev": true, "license": "MIT", "engines": { @@ -543,9 +543,9 @@ } }, "node_modules/@babel/helper-validator-option": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.27.1.tgz", - "integrity": "sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg==", + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.29.7.tgz", + "integrity": "sha512-N9ZErrD+yW5geCDtBqnOoxmR8+tNKiGuxKlDpuJxfsqpa2dFcexaziGAE/qoHLiDDreVNMupxGmSoNlyvsA3gw==", "dev": true, "license": "MIT", "engines": { @@ -596,13 +596,13 @@ } }, "node_modules/@babel/parser": { - "version": "7.29.2", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.29.2.tgz", - "integrity": "sha512-4GgRzy/+fsBa72/RZVJmGKPmZu9Byn8o4MoLpmNe1m8ZfYnz5emHLQz3U4gLud6Zwl0RZIcgiLD7Uq7ySFuDLA==", + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.29.7.tgz", + "integrity": "sha512-hnORnjP/1P/zFEndoeX+n+t1RwWRJiJpM/jO7FW32Kn9r5+sJB2JWOdYo4L6k78j15eCwY3Gm/7364B1EMwtNg==", "dev": true, "license": "MIT", "dependencies": { - "@babel/types": "^7.29.0" + "@babel/types": "^7.29.7" }, "bin": { "parser": "bin/babel-parser.js" @@ -1067,13 +1067,13 @@ } }, "node_modules/@babel/plugin-syntax-jsx": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.27.1.tgz", - "integrity": "sha512-y8YTNIeKoyhGd9O0Jiyzyyqk8gdjnumGTQPsz0xOZOQ2RmkVJeZ1vmmfIvFEKqucBG6axJGBZDE/7iI5suUI/w==", + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.29.7.tgz", + "integrity": "sha512-TSu8+mHCoEaaCDEZ0I3+6mvTBYR4PCxQwf2z9/r5Tbztv6NaLR3B9thGTTxX2WGuGHJqRiAbKPeGTJ5XWXVg6A==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.27.1" + "@babel/helper-plugin-utils": "^7.29.7" }, "engines": { "node": ">=6.9.0" @@ -1185,13 +1185,13 @@ } }, "node_modules/@babel/plugin-syntax-typescript": { - "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==", + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.29.7.tgz", + "integrity": "sha512-ngr+82Sh0xMz25TPCZi+nC2iTzjfCdWS2ONXTp/PtSCHCgaCNBpdMqgvJ2ccdLlClVZ7sisIgB914j/JFe+RZA==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.28.6" + "@babel/helper-plugin-utils": "^7.29.7" }, "engines": { "node": ">=6.9.0" @@ -1622,14 +1622,14 @@ } }, "node_modules/@babel/plugin-transform-modules-commonjs": { - "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==", + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.29.7.tgz", + "integrity": "sha512-j0vCldybPC5b5dwCQOJ21uKtHzt7hxLygJTg9eF1ScfaikEDNfzn94XoW5Fi+seBR0nCyL23xaBFFkq7dTM8XQ==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-module-transforms": "^7.28.6", - "@babel/helper-plugin-utils": "^7.28.6" + "@babel/helper-module-transforms": "^7.29.7", + "@babel/helper-plugin-utils": "^7.29.7" }, "engines": { "node": ">=6.9.0" @@ -2076,17 +2076,17 @@ } }, "node_modules/@babel/plugin-transform-typescript": { - "version": "7.28.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.28.6.tgz", - "integrity": "sha512-0YWL2RFxOqEm9Efk5PvreamxPME8OyY0wM5wh5lHjF+VtVhdneCWGzZeSqzOfiobVqQaNCd2z0tQvnI9DaPWPw==", + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.29.7.tgz", + "integrity": "sha512-jK52h8LaLc7JarhQV2ofeFMts4H7vnOXnqZNA6fYglBTZewRBE51KWt3BUltW1P+KoPsYkHoJeXePuz4zo2LMw==", "dev": true, "license": "MIT", "dependencies": { - "@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" + "@babel/helper-annotate-as-pure": "^7.29.7", + "@babel/helper-create-class-features-plugin": "^7.29.7", + "@babel/helper-plugin-utils": "^7.29.7", + "@babel/helper-skip-transparent-expression-wrappers": "^7.29.7", + "@babel/plugin-syntax-typescript": "^7.29.7" }, "engines": { "node": ">=6.9.0" @@ -2297,17 +2297,17 @@ } }, "node_modules/@babel/preset-typescript": { - "version": "7.28.5", - "resolved": "https://registry.npmjs.org/@babel/preset-typescript/-/preset-typescript-7.28.5.tgz", - "integrity": "sha512-+bQy5WOI2V6LJZpPVxY+yp66XdZ2yifu0Mc1aP5CQKgjn4QM5IN2i5fAZ4xKop47pr8rpVhiAeu+nDQa12C8+g==", + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/preset-typescript/-/preset-typescript-7.29.7.tgz", + "integrity": "sha512-/Foi8vKY2EVbed/1eZx0gJEEwHAIxogrySI7rULcRIvhZzbvoE/b5qG5Ghc0WKAFKOHA9SD1x7RsFlOYdutIiQ==", "dev": true, "license": "MIT", "dependencies": { - "@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" + "@babel/helper-plugin-utils": "^7.29.7", + "@babel/helper-validator-option": "^7.29.7", + "@babel/plugin-syntax-jsx": "^7.29.7", + "@babel/plugin-transform-modules-commonjs": "^7.29.7", + "@babel/plugin-transform-typescript": "^7.29.7" }, "engines": { "node": ">=6.9.0" @@ -2360,33 +2360,33 @@ } }, "node_modules/@babel/template": { - "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==", + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.29.7.tgz", + "integrity": "sha512-puq+Gf35oI24FeN11LkoUQFqv9uwNeWpxXZi/Ji3rRIoKAzKnxRaZ+Gkj0vKS9ZCiTESfng1N9LyOyXvo+m+Gg==", "dev": true, "license": "MIT", "dependencies": { - "@babel/code-frame": "^7.28.6", - "@babel/parser": "^7.28.6", - "@babel/types": "^7.28.6" + "@babel/code-frame": "^7.29.7", + "@babel/parser": "^7.29.7", + "@babel/types": "^7.29.7" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/traverse": { - "version": "7.29.0", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.29.0.tgz", - "integrity": "sha512-4HPiQr0X7+waHfyXPZpWPfWL/J7dcN1mx9gL6WdQVMbPnF3+ZhSMs8tCxN7oHddJE9fhNE7+lxdnlyemKfJRuA==", + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.29.7.tgz", + "integrity": "sha512-EhlfNQtZ+NK22w5BM61ciuiq1m58ed33Wr1Xan//ZRTy6hgjnwyCffRYwzsGXdASJSUJ1guZILsErh1eQcl+zw==", "dev": true, "license": "MIT", "dependencies": { - "@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", + "@babel/code-frame": "^7.29.7", + "@babel/generator": "^7.29.7", + "@babel/helper-globals": "^7.29.7", + "@babel/parser": "^7.29.7", + "@babel/template": "^7.29.7", + "@babel/types": "^7.29.7", "debug": "^4.3.1" }, "engines": { @@ -2394,14 +2394,14 @@ } }, "node_modules/@babel/types": { - "version": "7.29.0", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.29.0.tgz", - "integrity": "sha512-LwdZHpScM4Qz8Xw2iKSzS+cfglZzJGvofQICy7W7v4caru4EaAmyUuO6BGrbyQ2mYV11W0U8j5mBhd14dd3B0A==", + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.29.7.tgz", + "integrity": "sha512-4zBIxpPzowiZpusoFkyGVwakdRJUyuH5PxQ/PrqghfdFWWasvnCdPfQXHrenDai+gyLARulZjZowCOj6fjT4pA==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-string-parser": "^7.27.1", - "@babel/helper-validator-identifier": "^7.28.5" + "@babel/helper-string-parser": "^7.29.7", + "@babel/helper-validator-identifier": "^7.29.7" }, "engines": { "node": ">=6.9.0" @@ -2902,9 +2902,9 @@ } }, "node_modules/@mat3ra/esse": { - "version": "2026.3.29-0", - "resolved": "https://registry.npmjs.org/@mat3ra/esse/-/esse-2026.3.29-0.tgz", - "integrity": "sha512-Nx4fCbGlw51IPFJXhciDO+jJR1Lqw7f5bnUS4CVWWs1xs7AKYSRuX4pxV9zGig646JqLnvYqkXo63Ub52yXH+Q==", + "version": "0.0.0", + "resolved": "git+ssh://git@github.com/Exabyte-io/esse.git#9d9ab4b9e3b62c44270dc390bc339052d973696e", + "integrity": "sha512-0WbcmOzKaLFD+z6BQxcB8N2jiucHwjVSrGGEl/uWB3wXNSEi0aYLtExiGlJVHUq6tCT5GVqvs/W+oekft6HINw==", "dev": true, "license": "Apache-2.0", "dependencies": { @@ -2912,24 +2912,24 @@ "@babel/core": "^7.29.0", "@babel/eslint-parser": "^7.28.6", "@babel/plugin-proposal-class-properties": "^7.18.6", - "@babel/preset-env": "^7.29.0", + "@babel/preset-env": "^7.29.2", "@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", + "@babel/runtime-corejs3": "^7.29.2", + "@mat3ra/utils": "^2026.4.15-1", "@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.18.0", + "ajv": "^8.20.0", "ajv-formats": "^2.1.1", "js-yaml": "^4.1.1", "json-schema": "^0.4.0", - "json-schema-deref-sync": "0.14.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.23" + "lodash": "^4.18.1" }, "engines": { "node": ">=14.0.0" @@ -3164,9 +3164,9 @@ } }, "node_modules/@mat3ra/esse/node_modules/ajv": { - "version": "8.18.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.18.0.tgz", - "integrity": "sha512-PlXPeEWMXMZ7sPYOHqmDyCJzcfNrUr3fGNKtezX14ykXOEIvyK81d+qydx89KY5O71FKMPaQ2vBfBFI5NHR63A==", + "version": "8.20.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.20.0.tgz", + "integrity": "sha512-Thbli+OlOj+iMPYFBVBfJ3OmCAnaSyNn4M1vz9T6Gka5Jt9ba/HIR56joy65tY6kx/FCF5VXNB819Y7/GUrBGA==", "dev": true, "license": "MIT", "dependencies": { @@ -3401,9 +3401,9 @@ } }, "node_modules/@mat3ra/utils": { - "version": "2026.3.7-0", - "resolved": "https://registry.npmjs.org/@mat3ra/utils/-/utils-2026.3.7-0.tgz", - "integrity": "sha512-qUxsyzo4s1G8MjHYbF+QHdXq0KgymJ3ey3x+dswCak69WiB0w8OuO5IOqyXS0RWoEB2mj7Ccm4ZN7uTSWZLHxw==", + "version": "2026.4.15-1", + "resolved": "https://registry.npmjs.org/@mat3ra/utils/-/utils-2026.4.15-1.tgz", + "integrity": "sha512-ahIUAc9QzbZ+G3rvIPW5BqAwa4pPMjDwH4k3+1SrXSYUhM67z+S4FTpcsfNn4WkAgmJ2Az9l026RvP3xZcXF9g==", "dev": true, "license": "ISC", "dependencies": { @@ -3535,9 +3535,9 @@ } }, "node_modules/@mat3ra/utils/node_modules/semver": { - "version": "7.7.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz", - "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==", + "version": "7.8.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.8.1.tgz", + "integrity": "sha512-rkVq3IXh+4FDGch+KwzX3aV9W3kO54GyEgpvBzSyctDA6Xtd7RJQV1xmXbeQp5v7+VzLOfVqiutSE6GICgPFvg==", "dev": true, "license": "ISC", "bin": { @@ -6283,9 +6283,9 @@ "dev": true }, "node_modules/fast-uri": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.1.0.tgz", - "integrity": "sha512-iPeeDKJSWf4IEOasVVrknXpaBV0IApz/gp7S2bb7Z4Lljbl2MGJRqInZiUrQwV16cpzw/D3S5j5Julj/gT52AA==", + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.1.2.tgz", + "integrity": "sha512-rVjf7ArG3LTk+FS6Yw81V1DLuZl1bRbNrev6Tmd/9RaroeeRRJhAt7jg/6YFxbvAQXUCavSoZhPPj6oOx+5KjQ==", "dev": true, "funding": [ { @@ -7889,9 +7889,9 @@ } }, "node_modules/lodash": { - "version": "4.17.23", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.23.tgz", - "integrity": "sha512-LgVTMpQtIopCi79SJeDiP0TfWi5CNEc/L/aRdTh3yIvmZXTnheWpKjSZhnvMl8iXbC1tFg9gdHHDMLoV7CnG+w==", + "version": "4.18.1", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.18.1.tgz", + "integrity": "sha512-dMInicTPVE8d1e5otfwmmjlxkZoUpiVLwyeTdUsi/Caj/gfzzblBcCE5sRHV/AsjuCmxWrte2TNGSYuCeCq+0Q==", "license": "MIT" }, "node_modules/lodash.debounce": { diff --git a/package.json b/package.json index 959613c..8d58216 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.3.29-0", + "@mat3ra/esse": "git+https://github.com/Exabyte-io/esse.git#9d9ab4b9e3b62c44270dc390bc339052d973696e", "@mat3ra/made": "2025.10.7-0", "@mat3ra/tsconfig": "2024.6.3-0", "@typescript-eslint/eslint-plugin": "^5.9.1",