@mat3ra/esse 2025.11.7-0 → 2025.11.25-0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -2833,6 +2833,104 @@ export interface PymatgenSlabGeneratorParametersSchema {
2833
2833
  */
2834
2834
  symmetrize?: boolean;
2835
2835
  }
2836
+ /** Schema dist/js/schema/context_provider.json */
2837
+ export interface ContextProviderSchema {
2838
+ name: Name;
2839
+ /**
2840
+ * domain of the context provider
2841
+ */
2842
+ domain?: string;
2843
+ /**
2844
+ * entity name associated with the context provider
2845
+ */
2846
+ entityName?: string;
2847
+ /**
2848
+ * data object for the context provider
2849
+ */
2850
+ data?: {};
2851
+ /**
2852
+ * additional data object for the context provider
2853
+ */
2854
+ extraData?: {};
2855
+ /**
2856
+ * flag indicating if the context provider has been edited
2857
+ */
2858
+ isEdited?: boolean;
2859
+ /**
2860
+ * context object for the context provider
2861
+ */
2862
+ context?: {};
2863
+ [k: string]: unknown;
2864
+ }
2865
+ export declare enum Name {
2866
+ PlanewaveCutoffDataManager = "PlanewaveCutoffDataManager",
2867
+ KGridFormDataManager = "KGridFormDataManager",
2868
+ QGridFormDataManager = "QGridFormDataManager",
2869
+ IGridFormDataManager = "IGridFormDataManager",
2870
+ QPathFormDataManager = "QPathFormDataManager",
2871
+ IPathFormDataManager = "IPathFormDataManager",
2872
+ KPathFormDataManager = "KPathFormDataManager",
2873
+ ExplicitKPathFormDataManager = "ExplicitKPathFormDataManager",
2874
+ ExplicitKPath2PIBAFormDataManager = "ExplicitKPath2PIBAFormDataManager",
2875
+ HubbardJContextManager = "HubbardJContextManager",
2876
+ HubbardUContextManager = "HubbardUContextManager",
2877
+ HubbardVContextManager = "HubbardVContextManager",
2878
+ HubbardContextManagerLegacy = "HubbardContextManagerLegacy",
2879
+ NEBFormDataManager = "NEBFormDataManager",
2880
+ BoundaryConditionsFormDataManager = "BoundaryConditionsFormDataManager",
2881
+ MLSettingsDataManager = "MLSettingsDataManager",
2882
+ MLTrainTestSplitDataManager = "MLTrainTestSplitDataManager",
2883
+ IonDynamicsContextProvider = "IonDynamicsContextProvider",
2884
+ CollinearMagnetizationDataManager = "CollinearMagnetizationDataManager",
2885
+ NonCollinearMagnetizationDataManager = "NonCollinearMagnetizationDataManager",
2886
+ QEPWXInputDataManager = "QEPWXInputDataManager",
2887
+ QENEBInputDataManager = "QENEBInputDataManager",
2888
+ VASPInputDataManager = "VASPInputDataManager",
2889
+ VASPNEBInputDataManager = "VASPNEBInputDataManager",
2890
+ NWChemInputDataManager = "NWChemInputDataManager"
2891
+ }
2892
+ /** Schema dist/js/schema/context_providers_directory/boundary_conditions_provider.json */
2893
+ export interface BoundaryConditionsProviderSchema {
2894
+ type?: string;
2895
+ offset?: number;
2896
+ electricField?: number;
2897
+ targetFermiEnergy?: number;
2898
+ }
2899
+ /** Schema dist/js/schema/context_providers_directory/enum.json */
2900
+ export interface ContextProvidersDirectoryEnum {
2901
+ [k: string]: unknown;
2902
+ }
2903
+ /**
2904
+ * This interface was referenced by `ContextProvidersDirectoryEnum`'s JSON-Schema
2905
+ * via the `definition` "ContextProviderNameEnum".
2906
+ */
2907
+ export declare enum ContextProviderNameEnum {
2908
+ PlanewaveCutoffDataManager = "PlanewaveCutoffDataManager",
2909
+ KGridFormDataManager = "KGridFormDataManager",
2910
+ QGridFormDataManager = "QGridFormDataManager",
2911
+ IGridFormDataManager = "IGridFormDataManager",
2912
+ QPathFormDataManager = "QPathFormDataManager",
2913
+ IPathFormDataManager = "IPathFormDataManager",
2914
+ KPathFormDataManager = "KPathFormDataManager",
2915
+ ExplicitKPathFormDataManager = "ExplicitKPathFormDataManager",
2916
+ ExplicitKPath2PIBAFormDataManager = "ExplicitKPath2PIBAFormDataManager",
2917
+ HubbardJContextManager = "HubbardJContextManager",
2918
+ HubbardUContextManager = "HubbardUContextManager",
2919
+ HubbardVContextManager = "HubbardVContextManager",
2920
+ HubbardContextManagerLegacy = "HubbardContextManagerLegacy",
2921
+ NEBFormDataManager = "NEBFormDataManager",
2922
+ BoundaryConditionsFormDataManager = "BoundaryConditionsFormDataManager",
2923
+ MLSettingsDataManager = "MLSettingsDataManager",
2924
+ MLTrainTestSplitDataManager = "MLTrainTestSplitDataManager",
2925
+ IonDynamicsContextProvider = "IonDynamicsContextProvider",
2926
+ CollinearMagnetizationDataManager = "CollinearMagnetizationDataManager",
2927
+ NonCollinearMagnetizationDataManager = "NonCollinearMagnetizationDataManager",
2928
+ QEPWXInputDataManager = "QEPWXInputDataManager",
2929
+ QENEBInputDataManager = "QENEBInputDataManager",
2930
+ VASPInputDataManager = "VASPInputDataManager",
2931
+ VASPNEBInputDataManager = "VASPNEBInputDataManager",
2932
+ NWChemInputDataManager = "NWChemInputDataManager"
2933
+ }
2836
2934
  /** Schema dist/js/schema/core/abstract/2d_data.json */
2837
2935
  export interface DimensionDataSchema {
2838
2936
  /**
package/dist/js/types.js CHANGED
@@ -1,7 +1,67 @@
1
1
  "use strict";
2
2
  /** Schema dist/js/schema/apse/db/materials_project/2025.9.25/summary.json */
3
3
  Object.defineProperty(exports, "__esModule", { value: true });
4
- exports.Action = exports.Type = void 0;
4
+ exports.Action = exports.Type = exports.ContextProviderNameEnum = exports.Name = void 0;
5
+ var Name;
6
+ (function (Name) {
7
+ Name["PlanewaveCutoffDataManager"] = "PlanewaveCutoffDataManager";
8
+ Name["KGridFormDataManager"] = "KGridFormDataManager";
9
+ Name["QGridFormDataManager"] = "QGridFormDataManager";
10
+ Name["IGridFormDataManager"] = "IGridFormDataManager";
11
+ Name["QPathFormDataManager"] = "QPathFormDataManager";
12
+ Name["IPathFormDataManager"] = "IPathFormDataManager";
13
+ Name["KPathFormDataManager"] = "KPathFormDataManager";
14
+ Name["ExplicitKPathFormDataManager"] = "ExplicitKPathFormDataManager";
15
+ Name["ExplicitKPath2PIBAFormDataManager"] = "ExplicitKPath2PIBAFormDataManager";
16
+ Name["HubbardJContextManager"] = "HubbardJContextManager";
17
+ Name["HubbardUContextManager"] = "HubbardUContextManager";
18
+ Name["HubbardVContextManager"] = "HubbardVContextManager";
19
+ Name["HubbardContextManagerLegacy"] = "HubbardContextManagerLegacy";
20
+ Name["NEBFormDataManager"] = "NEBFormDataManager";
21
+ Name["BoundaryConditionsFormDataManager"] = "BoundaryConditionsFormDataManager";
22
+ Name["MLSettingsDataManager"] = "MLSettingsDataManager";
23
+ Name["MLTrainTestSplitDataManager"] = "MLTrainTestSplitDataManager";
24
+ Name["IonDynamicsContextProvider"] = "IonDynamicsContextProvider";
25
+ Name["CollinearMagnetizationDataManager"] = "CollinearMagnetizationDataManager";
26
+ Name["NonCollinearMagnetizationDataManager"] = "NonCollinearMagnetizationDataManager";
27
+ Name["QEPWXInputDataManager"] = "QEPWXInputDataManager";
28
+ Name["QENEBInputDataManager"] = "QENEBInputDataManager";
29
+ Name["VASPInputDataManager"] = "VASPInputDataManager";
30
+ Name["VASPNEBInputDataManager"] = "VASPNEBInputDataManager";
31
+ Name["NWChemInputDataManager"] = "NWChemInputDataManager";
32
+ })(Name = exports.Name || (exports.Name = {}));
33
+ /**
34
+ * This interface was referenced by `ContextProvidersDirectoryEnum`'s JSON-Schema
35
+ * via the `definition` "ContextProviderNameEnum".
36
+ */
37
+ var ContextProviderNameEnum;
38
+ (function (ContextProviderNameEnum) {
39
+ ContextProviderNameEnum["PlanewaveCutoffDataManager"] = "PlanewaveCutoffDataManager";
40
+ ContextProviderNameEnum["KGridFormDataManager"] = "KGridFormDataManager";
41
+ ContextProviderNameEnum["QGridFormDataManager"] = "QGridFormDataManager";
42
+ ContextProviderNameEnum["IGridFormDataManager"] = "IGridFormDataManager";
43
+ ContextProviderNameEnum["QPathFormDataManager"] = "QPathFormDataManager";
44
+ ContextProviderNameEnum["IPathFormDataManager"] = "IPathFormDataManager";
45
+ ContextProviderNameEnum["KPathFormDataManager"] = "KPathFormDataManager";
46
+ ContextProviderNameEnum["ExplicitKPathFormDataManager"] = "ExplicitKPathFormDataManager";
47
+ ContextProviderNameEnum["ExplicitKPath2PIBAFormDataManager"] = "ExplicitKPath2PIBAFormDataManager";
48
+ ContextProviderNameEnum["HubbardJContextManager"] = "HubbardJContextManager";
49
+ ContextProviderNameEnum["HubbardUContextManager"] = "HubbardUContextManager";
50
+ ContextProviderNameEnum["HubbardVContextManager"] = "HubbardVContextManager";
51
+ ContextProviderNameEnum["HubbardContextManagerLegacy"] = "HubbardContextManagerLegacy";
52
+ ContextProviderNameEnum["NEBFormDataManager"] = "NEBFormDataManager";
53
+ ContextProviderNameEnum["BoundaryConditionsFormDataManager"] = "BoundaryConditionsFormDataManager";
54
+ ContextProviderNameEnum["MLSettingsDataManager"] = "MLSettingsDataManager";
55
+ ContextProviderNameEnum["MLTrainTestSplitDataManager"] = "MLTrainTestSplitDataManager";
56
+ ContextProviderNameEnum["IonDynamicsContextProvider"] = "IonDynamicsContextProvider";
57
+ ContextProviderNameEnum["CollinearMagnetizationDataManager"] = "CollinearMagnetizationDataManager";
58
+ ContextProviderNameEnum["NonCollinearMagnetizationDataManager"] = "NonCollinearMagnetizationDataManager";
59
+ ContextProviderNameEnum["QEPWXInputDataManager"] = "QEPWXInputDataManager";
60
+ ContextProviderNameEnum["QENEBInputDataManager"] = "QENEBInputDataManager";
61
+ ContextProviderNameEnum["VASPInputDataManager"] = "VASPInputDataManager";
62
+ ContextProviderNameEnum["VASPNEBInputDataManager"] = "VASPNEBInputDataManager";
63
+ ContextProviderNameEnum["NWChemInputDataManager"] = "NWChemInputDataManager";
64
+ })(ContextProviderNameEnum = exports.ContextProviderNameEnum || (exports.ContextProviderNameEnum = {}));
5
65
  /**
6
66
  * The type of the message to distinguish the direction of the message.
7
67
  */
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mat3ra/esse",
3
- "version": "2025.11.7-0",
3
+ "version": "2025.11.25-0",
4
4
  "description": "Mat3ra's Excellent Source of Schemas and Examples (ESSE) for Digital Materials R&D",
5
5
  "scripts": {
6
6
  "transpile": "tsc -p tsconfig-transpile.json",
@@ -58,6 +58,7 @@
58
58
  },
59
59
  "license": "Apache-2.0",
60
60
  "dependencies": {
61
+ "@mat3ra/utils": "^2025.11.20-0",
61
62
  "@babel/cli": "^7.27.0",
62
63
  "@babel/core": "^7.26.10",
63
64
  "@babel/eslint-parser": "^7.27.0",
@@ -0,0 +1,39 @@
1
+ {
2
+ "$id": "context-provider",
3
+ "$schema": "http://json-schema.org/draft-07/schema#",
4
+ "title": "context provider schema",
5
+ "type": "object",
6
+ "properties": {
7
+ "name": {
8
+ "$ref": "context_providers_directory/enum.json#/definitions/ContextProviderNameEnum"
9
+ },
10
+ "domain": {
11
+ "description": "domain of the context provider",
12
+ "type": "string"
13
+ },
14
+ "entityName": {
15
+ "description": "entity name associated with the context provider",
16
+ "type": "string"
17
+ },
18
+ "data": {
19
+ "description": "data object for the context provider",
20
+ "type": "object"
21
+ },
22
+ "extraData": {
23
+ "description": "additional data object for the context provider",
24
+ "type": "object"
25
+ },
26
+ "isEdited": {
27
+ "description": "flag indicating if the context provider has been edited",
28
+ "type": "boolean"
29
+ },
30
+ "context": {
31
+ "description": "context object for the context provider",
32
+ "type": "object"
33
+ }
34
+ },
35
+ "additionalProperties": true,
36
+ "required": [
37
+ "name"
38
+ ]
39
+ }
@@ -0,0 +1,24 @@
1
+ {
2
+ "$id": "context-providers-directory/boundary-conditions-provider",
3
+ "$schema": "http://json-schema.org/draft-07/schema#",
4
+ "title": "Boundary Conditions Provider Schema",
5
+ "type": "object",
6
+ "properties": {
7
+ "type": {
8
+ "type": "string",
9
+ "title": "Type"
10
+ },
11
+ "offset": {
12
+ "type": "number",
13
+ "title": "Offset (A)"
14
+ },
15
+ "electricField": {
16
+ "type": "number",
17
+ "title": "Electric Field (eV/A)"
18
+ },
19
+ "targetFermiEnergy": {
20
+ "type": "number",
21
+ "title": "Target Fermi Energy (eV)"
22
+ }
23
+ }
24
+ }
@@ -0,0 +1,62 @@
1
+ {
2
+ "$id": "context-providers-directory/enum",
3
+ "definitions": {
4
+ "ContextProviderNameEnum": {
5
+ "type": "string",
6
+ "enum": [
7
+ "PlanewaveCutoffDataManager",
8
+ "KGridFormDataManager",
9
+ "QGridFormDataManager",
10
+ "IGridFormDataManager",
11
+ "QPathFormDataManager",
12
+ "IPathFormDataManager",
13
+ "KPathFormDataManager",
14
+ "ExplicitKPathFormDataManager",
15
+ "ExplicitKPath2PIBAFormDataManager",
16
+ "HubbardJContextManager",
17
+ "HubbardUContextManager",
18
+ "HubbardVContextManager",
19
+ "HubbardContextManagerLegacy",
20
+ "NEBFormDataManager",
21
+ "BoundaryConditionsFormDataManager",
22
+ "MLSettingsDataManager",
23
+ "MLTrainTestSplitDataManager",
24
+ "IonDynamicsContextProvider",
25
+ "CollinearMagnetizationDataManager",
26
+ "NonCollinearMagnetizationDataManager",
27
+ "QEPWXInputDataManager",
28
+ "QENEBInputDataManager",
29
+ "VASPInputDataManager",
30
+ "VASPNEBInputDataManager",
31
+ "NWChemInputDataManager"
32
+ ],
33
+ "tsEnumNames": [
34
+ "PlanewaveCutoffDataManager",
35
+ "KGridFormDataManager",
36
+ "QGridFormDataManager",
37
+ "IGridFormDataManager",
38
+ "QPathFormDataManager",
39
+ "IPathFormDataManager",
40
+ "KPathFormDataManager",
41
+ "ExplicitKPathFormDataManager",
42
+ "ExplicitKPath2PIBAFormDataManager",
43
+ "HubbardJContextManager",
44
+ "HubbardUContextManager",
45
+ "HubbardVContextManager",
46
+ "HubbardContextManagerLegacy",
47
+ "NEBFormDataManager",
48
+ "BoundaryConditionsFormDataManager",
49
+ "MLSettingsDataManager",
50
+ "MLTrainTestSplitDataManager",
51
+ "IonDynamicsContextProvider",
52
+ "CollinearMagnetizationDataManager",
53
+ "NonCollinearMagnetizationDataManager",
54
+ "QEPWXInputDataManager",
55
+ "QENEBInputDataManager",
56
+ "VASPInputDataManager",
57
+ "VASPNEBInputDataManager",
58
+ "NWChemInputDataManager"
59
+ ]
60
+ }
61
+ }
62
+ }
@@ -10,14 +10,10 @@
10
10
  ],
11
11
  "properties": {
12
12
  "type": {
13
- "enum": [
14
- "localorbital"
15
- ]
13
+ "const": "localorbital"
16
14
  },
17
15
  "subtype": {
18
- "enum": [
19
- "pople"
20
- ]
16
+ "const": "pople"
21
17
  }
22
18
  }
23
19
  }
@@ -10,9 +10,7 @@
10
10
  ],
11
11
  "properties": {
12
12
  "type": {
13
- "enum": [
14
- "pseudopotential"
15
- ]
13
+ "const": "pseudopotential"
16
14
  },
17
15
  "subtype": {
18
16
  "enum": [
@@ -20,7 +18,8 @@
20
18
  "nc",
21
19
  "us",
22
20
  "any"
23
- ]
21
+ ],
22
+ "default": "us"
24
23
  }
25
24
  }
26
25
  }
@@ -10,14 +10,10 @@
10
10
  ],
11
11
  "properties": {
12
12
  "type": {
13
- "enum": [
14
- "unknown"
15
- ]
13
+ "const": "unknown"
16
14
  },
17
15
  "subtype": {
18
- "enum": [
19
- "unknown"
20
- ]
16
+ "const": "unknown"
21
17
  }
22
18
  }
23
19
  }
@@ -23,18 +23,14 @@
23
23
  ],
24
24
  "properties": {
25
25
  "type": {
26
- "enum": [
27
- "dft"
28
- ]
26
+ "const": "dft"
29
27
  }
30
28
  },
31
29
  "definitions": {
32
30
  "lda": {
33
31
  "properties": {
34
32
  "subtype": {
35
- "enum": [
36
- "lda"
37
- ]
33
+ "const": "lda"
38
34
  },
39
35
  "functional": {
40
36
  "enum": [
@@ -49,9 +45,7 @@
49
45
  "gga": {
50
46
  "properties": {
51
47
  "subtype": {
52
- "enum": [
53
- "gga"
54
- ]
48
+ "const": "gga"
55
49
  },
56
50
  "functional": {
57
51
  "enum": [
@@ -66,9 +60,7 @@
66
60
  "hybrid": {
67
61
  "properties": {
68
62
  "subtype": {
69
- "enum": [
70
- "hybrid"
71
- ]
63
+ "const": "hybrid"
72
64
  },
73
65
  "functional": {
74
66
  "enum": [
@@ -1,4 +1,4 @@
1
- import { JSONSchema } from "./utils";
1
+ import { applyPatchTree, JSONSchema } from "./utils";
2
2
 
3
3
  export type JSONSchemasInterfaceQuery = { [key in keyof JSONSchema]: { $regex: string } };
4
4
 
@@ -53,4 +53,36 @@ export default class JSONSchemasInterface {
53
53
  });
54
54
  });
55
55
  }
56
+
57
+ /**
58
+ * Get a patched copy of a schema without modifying the cached version
59
+ * @param schemaId - The ID of the schema to patch
60
+ * @param propertyPatches - Object with property names as keys and patch objects as values
61
+ * @returns A new schema with patched properties
62
+ *
63
+ * @example
64
+ * JSONSchemasInterface.getPatchedSchema("boundary-conditions-provider", {
65
+ * type: { default: "pbc" },
66
+ * offset: { default: 0 }
67
+ * });
68
+ */
69
+ static getPatchedSchemaById(
70
+ schemaId: string,
71
+ patchConfig: Record<string, unknown>,
72
+ ): JSONSchema | undefined {
73
+ const baseSchema = this.getSchemaById(schemaId);
74
+ if (!baseSchema) {
75
+ return undefined;
76
+ }
77
+
78
+ const patchedSchema = JSON.parse(JSON.stringify(baseSchema));
79
+
80
+ applyPatchTree(
81
+ patchedSchema as Record<string, unknown>,
82
+ patchConfig as Record<string, unknown>,
83
+ [],
84
+ );
85
+
86
+ return patchedSchema;
87
+ }
56
88
  }
@@ -77,3 +77,61 @@ export function parseIncludeReferenceStatementsByDir(dirPath: string, wrapInData
77
77
 
78
78
  return wrapInDataAndPath ? schemasWithPath : schemas;
79
79
  }
80
+
81
+ function isPlainObject(value: unknown): value is Record<string, unknown> {
82
+ return value !== null && typeof value === "object" && !Array.isArray(value);
83
+ }
84
+
85
+ export function applyPatchWithDotNotation(
86
+ target: Record<string, unknown>,
87
+ path: string,
88
+ patchValue: unknown,
89
+ ): void {
90
+ const keys = path.split(".");
91
+ let current: any = target;
92
+
93
+ // Navigate to parent of final key
94
+ for (let index = 0; index < keys.length - 1; index += 1) {
95
+ const key = keys[index];
96
+ if (!isPlainObject(current[key])) {
97
+ // Path does not exist or is not an object → skip patch
98
+ return;
99
+ }
100
+ current = current[key];
101
+ }
102
+
103
+ const finalKey = keys[keys.length - 1];
104
+ const existingValue = current[finalKey];
105
+
106
+ if (isPlainObject(existingValue) && isPlainObject(patchValue)) {
107
+ // Merge object into existing object
108
+ Object.assign(existingValue, patchValue);
109
+ } else if (existingValue !== undefined) {
110
+ // Overwrite leaf value
111
+ current[finalKey] = patchValue;
112
+ }
113
+ // If existingValue is undefined, we skip;
114
+ }
115
+
116
+ export function applyPatchTree(
117
+ schema: Record<string, unknown>,
118
+ patchNode: Record<string, unknown>,
119
+ pathPrefix: string[],
120
+ ): void {
121
+ Object.entries(patchNode).forEach(([key, value]) => {
122
+ if (key.includes(".")) {
123
+ // Dot notation relative to current prefix
124
+ const fullPathSegments = [...pathPrefix, ...key.split(".")];
125
+ const fullPath = fullPathSegments.join(".");
126
+ applyPatchWithDotNotation(schema, fullPath, value);
127
+ } else if (isPlainObject(value)) {
128
+ // Nested subtree → recurse with extended prefix
129
+ applyPatchTree(schema, value, [...pathPrefix, key]);
130
+ } else {
131
+ // Leaf patch (primitive / array) → treat as direct field patch
132
+ const fullPathSegments = [...pathPrefix, key];
133
+ const fullPath = fullPathSegments.join(".");
134
+ applyPatchWithDotNotation(schema, fullPath, value);
135
+ }
136
+ });
137
+ }