@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.
- package/dist/js/esse/JSONSchemasInterface.d.ts +13 -0
- package/dist/js/esse/JSONSchemasInterface.js +22 -0
- package/dist/js/esse/utils.d.ts +2 -0
- package/dist/js/esse/utils.js +50 -1
- package/dist/js/schema/context_provider.json +93 -0
- package/dist/js/schema/context_providers_directory/boundary_conditions_provider.json +24 -0
- package/dist/js/schema/context_providers_directory/enum.json +62 -0
- package/dist/js/schema/methods_directory/legacy/localorbital.json +2 -6
- package/dist/js/schema/methods_directory/legacy/pseudopotential.json +2 -3
- package/dist/js/schema/methods_directory/legacy/unknown.json +2 -6
- package/dist/js/schema/models_directory/legacy/dft.json +7 -21
- package/dist/js/schemas.json +1 -1
- package/dist/js/types.d.ts +98 -0
- package/dist/js/types.js +61 -1
- package/package.json +2 -1
- package/schema/context_provider.json +39 -0
- package/schema/context_providers_directory/boundary_conditions_provider.json +24 -0
- package/schema/context_providers_directory/enum.json +62 -0
- package/schema/methods_directory/legacy/localorbital.json +2 -6
- package/schema/methods_directory/legacy/pseudopotential.json +3 -4
- package/schema/methods_directory/legacy/unknown.json +2 -6
- package/schema/models_directory/legacy/dft.json +4 -12
- package/src/js/esse/JSONSchemasInterface.ts +33 -1
- package/src/js/esse/utils.ts +58 -0
package/dist/js/types.d.ts
CHANGED
|
@@ -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.
|
|
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
|
+
}
|
|
@@ -23,18 +23,14 @@
|
|
|
23
23
|
],
|
|
24
24
|
"properties": {
|
|
25
25
|
"type": {
|
|
26
|
-
"
|
|
27
|
-
"dft"
|
|
28
|
-
]
|
|
26
|
+
"const": "dft"
|
|
29
27
|
}
|
|
30
28
|
},
|
|
31
29
|
"definitions": {
|
|
32
30
|
"lda": {
|
|
33
31
|
"properties": {
|
|
34
32
|
"subtype": {
|
|
35
|
-
"
|
|
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
|
-
"
|
|
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
|
-
"
|
|
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
|
}
|
package/src/js/esse/utils.ts
CHANGED
|
@@ -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
|
+
}
|