@mat3ra/wode 2026.4.9-0 → 2026.5.29-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.
Files changed (361) hide show
  1. package/.babelrc +1 -1
  2. package/dist/js/Subworkflow.d.ts +714 -0
  3. package/dist/js/Subworkflow.js +397 -0
  4. package/dist/js/Workflow.d.ts +82 -0
  5. package/dist/js/Workflow.js +286 -0
  6. package/dist/js/WorkflowDesignerMaterial.d.ts +21 -0
  7. package/dist/js/WorkflowDesignerMaterial.js +26 -0
  8. package/dist/js/context/mixins/ApplicationContextMixin.d.ts +10 -0
  9. package/dist/js/context/mixins/ApplicationContextMixin.js +10 -17
  10. package/dist/js/context/mixins/MaterialContextMixin.d.ts +18 -0
  11. package/dist/js/context/mixins/MaterialContextMixin.js +14 -38
  12. package/dist/js/context/mixins/MaterialsContextMixin.d.ts +10 -0
  13. package/dist/js/context/mixins/MaterialsContextMixin.js +11 -17
  14. package/dist/js/context/mixins/MaterialsSetContextMixin.d.ts +14 -0
  15. package/dist/js/context/mixins/MaterialsSetContextMixin.js +21 -23
  16. package/dist/js/context/providers/BoundaryConditionsFormDataManager.d.ts +30 -0
  17. package/dist/js/context/providers/BoundaryConditionsFormDataManager.js +62 -0
  18. package/dist/js/context/providers/CollinearMagnetizationDataManager.d.ts +42 -0
  19. package/dist/js/context/providers/CollinearMagnetizationDataManager.js +101 -0
  20. package/dist/js/context/providers/Hubbard/HubbardContextManagerLegacy.d.ts +29 -0
  21. package/dist/js/context/providers/Hubbard/HubbardContextManagerLegacy.js +69 -0
  22. package/dist/js/context/providers/Hubbard/HubbardContextProvider.d.ts +20 -0
  23. package/dist/js/context/providers/Hubbard/HubbardContextProvider.js +47 -0
  24. package/dist/js/context/providers/Hubbard/HubbardJContextManager.d.ts +22 -0
  25. package/dist/js/context/providers/Hubbard/HubbardJContextManager.js +61 -0
  26. package/dist/js/context/providers/Hubbard/HubbardUContextManager.d.ts +22 -0
  27. package/dist/js/context/providers/Hubbard/HubbardUContextManager.js +57 -0
  28. package/dist/js/context/providers/Hubbard/HubbardVContextManager.d.ts +22 -0
  29. package/dist/js/context/providers/Hubbard/HubbardVContextManager.js +79 -0
  30. package/dist/js/context/providers/IonDynamicsDataManager.d.ts +27 -0
  31. package/dist/js/context/providers/IonDynamicsDataManager.js +48 -0
  32. package/dist/js/context/providers/MLSettingsDataManager.d.ts +24 -0
  33. package/dist/js/context/providers/MLSettingsDataManager.js +42 -0
  34. package/dist/js/context/providers/MLTrainTestSplitDataManager.d.ts +23 -0
  35. package/dist/js/context/providers/MLTrainTestSplitDataManager.js +40 -0
  36. package/dist/js/context/providers/NEBFormDataManager.d.ts +23 -0
  37. package/dist/js/context/providers/NEBFormDataManager.js +39 -0
  38. package/dist/js/context/providers/NonCollinearMagnetizationDataManager.d.ts +78 -0
  39. package/dist/js/context/providers/NonCollinearMagnetizationDataManager.js +181 -0
  40. package/dist/js/context/providers/PlanewaveCutoffDataManager.d.ts +26 -0
  41. package/dist/js/context/providers/PlanewaveCutoffDataManager.js +69 -0
  42. package/dist/js/context/providers/PointsGrid/IGridFormDataManager.d.ts +13 -0
  43. package/dist/js/context/providers/PointsGrid/IGridFormDataManager.js +23 -0
  44. package/dist/js/context/providers/PointsGrid/KGridFormDataManager.d.ts +15 -0
  45. package/dist/js/context/providers/PointsGrid/KGridFormDataManager.js +30 -0
  46. package/dist/js/context/providers/PointsGrid/PointsGridFormDataProvider.d.ts +171 -0
  47. package/dist/js/context/providers/PointsGrid/PointsGridFormDataProvider.js +270 -0
  48. package/dist/js/context/providers/PointsGrid/QGridFormDataManager.d.ts +13 -0
  49. package/dist/js/context/providers/PointsGrid/QGridFormDataManager.js +23 -0
  50. package/dist/js/context/providers/PointsPath/ExplicitKPath2PIBAFormDataManager.d.ts +10 -0
  51. package/dist/js/context/providers/PointsPath/ExplicitKPath2PIBAFormDataManager.js +19 -0
  52. package/dist/js/context/providers/PointsPath/ExplicitKPathFormDataManager.d.ts +9 -0
  53. package/dist/js/context/providers/PointsPath/ExplicitKPathFormDataManager.js +18 -0
  54. package/dist/js/context/providers/PointsPath/IPathFormDataManager.d.ts +8 -0
  55. package/dist/js/context/providers/PointsPath/IPathFormDataManager.js +17 -0
  56. package/dist/js/context/providers/PointsPath/KPathFormDataManager.d.ts +8 -0
  57. package/dist/js/context/providers/PointsPath/KPathFormDataManager.js +17 -0
  58. package/dist/js/context/providers/PointsPath/PointsPathFormDataProvider.d.ts +40 -0
  59. package/dist/js/context/providers/PointsPath/PointsPathFormDataProvider.js +125 -0
  60. package/dist/js/context/providers/PointsPath/QPathFormDataManager.d.ts +8 -0
  61. package/dist/js/context/providers/PointsPath/QPathFormDataManager.js +17 -0
  62. package/dist/js/context/providers/base/ContextProvider.d.ts +75 -0
  63. package/dist/js/context/providers/base/ContextProvider.js +87 -0
  64. package/dist/js/context/providers/base/JSONSchemaDataProvider.d.ts +16 -0
  65. package/dist/js/context/providers/base/JSONSchemaDataProvider.js +17 -0
  66. package/dist/js/context/providers/base/JSONSchemaFormDataProvider.d.ts +19 -0
  67. package/dist/js/context/providers/base/JSONSchemaFormDataProvider.js +32 -0
  68. package/dist/js/context/providers/by_application/espresso/QENEBInputDataManager.d.ts +26 -0
  69. package/dist/js/context/providers/by_application/espresso/QENEBInputDataManager.js +54 -0
  70. package/dist/js/context/providers/by_application/espresso/QEPWXInputDataManager.d.ts +78 -0
  71. package/dist/js/context/providers/by_application/espresso/QEPWXInputDataManager.js +104 -0
  72. package/dist/js/context/providers/by_application/nwchem/NWChemInputDataManager.d.ts +36 -0
  73. package/dist/js/context/providers/by_application/nwchem/NWChemInputDataManager.js +58 -0
  74. package/dist/js/context/providers/by_application/vasp/VASPInputDataManager.d.ts +36 -0
  75. package/dist/js/context/providers/by_application/vasp/VASPInputDataManager.js +56 -0
  76. package/dist/js/context/providers/by_application/vasp/VASPNEBInputDataManager.d.ts +30 -0
  77. package/dist/js/context/providers/by_application/vasp/VASPNEBInputDataManager.js +50 -0
  78. package/dist/js/context/providers/index.d.ts +92 -0
  79. package/dist/js/context/providers/index.js +107 -0
  80. package/dist/js/context/providers/settings.d.ts +7 -0
  81. package/dist/js/context/providers/settings.js +11 -33
  82. package/dist/js/convergence/ConvergenceParameter.d.ts +26 -0
  83. package/dist/js/convergence/ConvergenceParameter.js +13 -0
  84. package/dist/js/convergence/NonUniformKGridConvergence.d.ts +12 -0
  85. package/dist/js/convergence/NonUniformKGridConvergence.js +31 -0
  86. package/dist/js/convergence/UniformKGridConvergence.d.ts +8 -0
  87. package/dist/js/convergence/UniformKGridConvergence.js +22 -0
  88. package/dist/js/convergence/factory.d.ts +8 -0
  89. package/dist/js/convergence/factory.js +18 -0
  90. package/dist/js/enums.d.ts +62 -0
  91. package/dist/js/enums.js +66 -61
  92. package/dist/js/generated/AssertionUnitSchemaMixin.d.ts +5 -0
  93. package/dist/js/generated/AssertionUnitSchemaMixin.js +27 -0
  94. package/dist/js/generated/AssignmentUnitSchemaMixin.d.ts +5 -0
  95. package/dist/js/generated/AssignmentUnitSchemaMixin.js +33 -0
  96. package/dist/js/generated/BaseUnitSchemaMixin.d.ts +5 -0
  97. package/dist/js/generated/BaseUnitSchemaMixin.js +57 -0
  98. package/dist/js/generated/ConditionUnitSchemaMixin.d.ts +5 -0
  99. package/dist/js/generated/ConditionUnitSchemaMixin.js +51 -0
  100. package/dist/js/generated/ExecutionUnitInputSchemaMixin.d.ts +5 -0
  101. package/dist/js/generated/ExecutionUnitInputSchemaMixin.js +27 -0
  102. package/dist/js/generated/ExecutionUnitSchemaMixin.d.ts +5 -0
  103. package/dist/js/generated/ExecutionUnitSchemaMixin.js +45 -0
  104. package/dist/js/generated/IOUnitSchemaMixin.d.ts +5 -0
  105. package/dist/js/generated/IOUnitSchemaMixin.js +33 -0
  106. package/dist/js/generated/MapUnitSchemaMixin.d.ts +5 -0
  107. package/dist/js/generated/MapUnitSchemaMixin.js +27 -0
  108. package/dist/js/generated/ReduceUnitSchemaMixin.d.ts +5 -0
  109. package/dist/js/generated/ReduceUnitSchemaMixin.js +27 -0
  110. package/dist/js/generated/StatusSchemaMixin.d.ts +5 -0
  111. package/dist/js/generated/StatusSchemaMixin.js +21 -0
  112. package/dist/js/generated/SubworkflowSchemaMixin.d.ts +5 -0
  113. package/dist/js/generated/SubworkflowSchemaMixin.js +51 -0
  114. package/dist/js/generated/SubworkflowUnitSchemaMixin.d.ts +5 -0
  115. package/dist/js/generated/SubworkflowUnitSchemaMixin.js +15 -0
  116. package/dist/js/generated/WorkflowSchemaMixin.d.ts +5 -0
  117. package/dist/js/generated/WorkflowSchemaMixin.js +51 -0
  118. package/dist/js/index.d.ts +13 -0
  119. package/dist/js/index.js +66 -176
  120. package/dist/js/units/AssertionUnit.d.ts +20 -0
  121. package/dist/js/units/AssertionUnit.js +33 -0
  122. package/dist/js/units/AssignmentUnit.d.ts +17 -0
  123. package/dist/js/units/AssignmentUnit.js +35 -0
  124. package/dist/js/units/BaseUnit.d.ts +39 -0
  125. package/dist/js/units/BaseUnit.js +70 -0
  126. package/dist/js/units/ConditionUnit.d.ts +17 -0
  127. package/dist/js/units/ConditionUnit.js +37 -0
  128. package/dist/js/units/ExecutionUnit.d.ts +115 -0
  129. package/dist/js/units/ExecutionUnit.js +181 -0
  130. package/dist/js/units/ExecutionUnitInput.d.ts +22 -0
  131. package/dist/js/units/ExecutionUnitInput.js +47 -0
  132. package/dist/js/units/IOUnit.d.ts +16 -0
  133. package/dist/js/units/IOUnit.js +31 -0
  134. package/dist/js/units/MapUnit.d.ts +34 -0
  135. package/dist/js/units/MapUnit.js +46 -0
  136. package/dist/js/units/ReduceUnit.d.ts +16 -0
  137. package/dist/js/units/ReduceUnit.js +30 -0
  138. package/dist/js/units/SubworkflowUnit.d.ts +16 -0
  139. package/dist/js/units/SubworkflowUnit.js +28 -0
  140. package/dist/js/units/factory.d.ts +31 -0
  141. package/dist/js/units/factory.js +65 -47
  142. package/dist/js/units/index.d.ts +14 -0
  143. package/dist/js/units/index.js +25 -81
  144. package/dist/js/units/mixins/RuntimeItemsUILogicMixin.d.ts +26 -0
  145. package/dist/js/units/mixins/RuntimeItemsUILogicMixin.js +50 -0
  146. package/dist/js/utils/baseUnits.d.ts +2 -0
  147. package/dist/js/utils/baseUnits.js +11 -0
  148. package/dist/js/utils/index.d.ts +3 -0
  149. package/dist/js/utils/index.js +39 -0
  150. package/dist/js/utils/subworkflow.d.ts +2 -0
  151. package/dist/js/utils/subworkflow.js +29 -0
  152. package/dist/js/utils/underscoreStringSlugify.d.ts +6 -0
  153. package/dist/js/utils/underscoreStringSlugify.js +32 -0
  154. package/dist/js/utils/units.d.ts +4 -0
  155. package/dist/js/utils/units.js +16 -0
  156. package/dist/js/utils/workflow.d.ts +9 -0
  157. package/dist/js/utils/workflow.js +67 -0
  158. package/dist/js/utils.js +2 -7
  159. package/dist/js/workflows/default.d.ts +3 -0
  160. package/dist/js/workflows/default.js +43 -39
  161. package/dist/js/workflows/workflow.d.ts +4404 -0
  162. package/dist/js/workflows/workflow.js +310 -306
  163. package/package.json +56 -44
  164. package/src/js/Subworkflow.ts +532 -0
  165. package/src/js/Workflow.ts +390 -0
  166. package/src/js/context/mixins/ApplicationContextMixin.ts +21 -0
  167. package/src/js/context/mixins/MaterialContextMixin.ts +35 -0
  168. package/src/js/context/mixins/MaterialsContextMixin.ts +24 -0
  169. package/src/js/context/mixins/MaterialsSetContextMixin.ts +42 -0
  170. package/src/js/context/providers/BoundaryConditionsFormDataManager.ts +88 -0
  171. package/src/js/context/providers/CollinearMagnetizationDataManager.ts +140 -0
  172. package/src/js/context/providers/Hubbard/HubbardContextManagerLegacy.ts +93 -0
  173. package/src/js/context/providers/Hubbard/HubbardContextProvider.ts +85 -0
  174. package/src/js/context/providers/Hubbard/HubbardJContextManager.ts +82 -0
  175. package/src/js/context/providers/Hubbard/HubbardUContextManager.ts +78 -0
  176. package/src/js/context/providers/Hubbard/HubbardVContextManager.ts +100 -0
  177. package/src/js/context/providers/IonDynamicsDataManager.ts +64 -0
  178. package/src/js/context/providers/MLSettingsDataManager.ts +61 -0
  179. package/src/js/context/providers/MLTrainTestSplitDataManager.ts +59 -0
  180. package/src/js/context/providers/NEBFormDataManager.ts +57 -0
  181. package/src/js/context/providers/NonCollinearMagnetizationDataManager.ts +229 -0
  182. package/src/js/context/providers/PlanewaveCutoffDataManager.ts +110 -0
  183. package/src/js/context/providers/PointsGrid/IGridFormDataManager.ts +36 -0
  184. package/src/js/context/providers/PointsGrid/KGridFormDataManager.ts +46 -0
  185. package/src/js/context/providers/PointsGrid/PointsGridFormDataProvider.ts +371 -0
  186. package/src/js/context/providers/PointsGrid/QGridFormDataManager.ts +36 -0
  187. package/src/js/context/providers/PointsPath/ExplicitKPath2PIBAFormDataManager.ts +26 -0
  188. package/src/js/context/providers/PointsPath/ExplicitKPathFormDataManager.ts +24 -0
  189. package/src/js/context/providers/PointsPath/IPathFormDataManager.ts +22 -0
  190. package/src/js/context/providers/PointsPath/KPathFormDataManager.ts +22 -0
  191. package/src/js/context/providers/PointsPath/PointsPathFormDataProvider.ts +192 -0
  192. package/src/js/context/providers/PointsPath/QPathFormDataManager.ts +22 -0
  193. package/src/js/context/providers/base/ContextProvider.ts +150 -0
  194. package/src/js/context/providers/base/JSONSchemaDataProvider.ts +31 -0
  195. package/src/js/context/providers/base/JSONSchemaFormDataProvider.ts +38 -0
  196. package/src/js/context/providers/by_application/espresso/QENEBInputDataManager.ts +107 -0
  197. package/src/js/context/providers/by_application/espresso/QEPWXInputDataManager.ts +178 -0
  198. package/src/js/context/providers/by_application/nwchem/NWChemInputDataManager.ts +93 -0
  199. package/src/js/context/providers/by_application/vasp/VASPInputDataManager.ts +89 -0
  200. package/src/js/context/providers/by_application/vasp/VASPNEBInputDataManager.ts +92 -0
  201. package/src/js/context/providers/index.ts +155 -0
  202. package/src/js/context/providers/settings.ts +13 -0
  203. package/src/js/convergence/ConvergenceParameter.ts +37 -0
  204. package/src/js/convergence/NonUniformKGridConvergence.ts +38 -0
  205. package/src/js/convergence/UniformKGridConvergence.ts +26 -0
  206. package/src/js/convergence/factory.ts +18 -0
  207. package/src/js/{enums.js → enums.ts} +27 -22
  208. package/src/js/generated/AssertionUnitSchemaMixin.ts +34 -0
  209. package/src/js/generated/AssignmentUnitSchemaMixin.ts +40 -0
  210. package/src/js/generated/BaseUnitSchemaMixin.ts +64 -0
  211. package/src/js/generated/ConditionUnitSchemaMixin.ts +58 -0
  212. package/src/js/generated/ExecutionUnitInputSchemaMixin.ts +36 -0
  213. package/src/js/generated/ExecutionUnitSchemaMixin.ts +52 -0
  214. package/src/js/generated/IOUnitSchemaMixin.ts +40 -0
  215. package/src/js/generated/MapUnitSchemaMixin.ts +34 -0
  216. package/src/js/generated/ReduceUnitSchemaMixin.ts +34 -0
  217. package/src/js/generated/StatusSchemaMixin.ts +28 -0
  218. package/src/js/generated/SubworkflowSchemaMixin.ts +58 -0
  219. package/src/js/generated/SubworkflowUnitSchemaMixin.ts +22 -0
  220. package/src/js/generated/WorkflowSchemaMixin.ts +58 -0
  221. package/src/js/index.ts +44 -0
  222. package/src/js/units/AssertionUnit.ts +49 -0
  223. package/src/js/units/AssignmentUnit.ts +49 -0
  224. package/src/js/units/BaseUnit.ts +117 -0
  225. package/src/js/units/ConditionUnit.ts +52 -0
  226. package/src/js/units/ExecutionUnit.ts +274 -0
  227. package/src/js/units/ExecutionUnitInput.ts +71 -0
  228. package/src/js/units/IOUnit.ts +43 -0
  229. package/src/js/units/MapUnit.ts +59 -0
  230. package/src/js/units/ReduceUnit.ts +46 -0
  231. package/src/js/units/SubworkflowUnit.ts +44 -0
  232. package/src/js/units/factory.ts +131 -0
  233. package/src/js/units/index.ts +27 -0
  234. package/src/js/units/mixins/RuntimeItemsUILogicMixin.ts +81 -0
  235. package/src/js/utils/baseUnits.ts +11 -0
  236. package/src/js/utils/index.ts +3 -0
  237. package/src/js/utils/units.ts +23 -0
  238. package/src/js/utils/workflow.ts +69 -0
  239. package/src/js/workflows/{default.js → default.ts} +8 -1
  240. package/build_workflows.js +0 -65
  241. package/dist/js/context/context.js +0 -49
  242. package/dist/js/context/mixins/JobContextMixin.js +0 -39
  243. package/dist/js/context/mixins/MethodDataContextMixin.js +0 -48
  244. package/dist/js/context/mixins/WorkflowContextMixin.js +0 -28
  245. package/dist/js/context/providers/BoundaryConditionsFormDataProvider.js +0 -84
  246. package/dist/js/context/providers/CollinearMagnetizationContextProvider.js +0 -96
  247. package/dist/js/context/providers/HubbardContextProviderLegacy.js +0 -68
  248. package/dist/js/context/providers/HubbardJContextProvider.js +0 -67
  249. package/dist/js/context/providers/HubbardUContextProvider.js +0 -70
  250. package/dist/js/context/providers/HubbardVContextProvider.js +0 -92
  251. package/dist/js/context/providers/IonDynamicsContextProvider.js +0 -58
  252. package/dist/js/context/providers/MLSettingsContextProvider.js +0 -51
  253. package/dist/js/context/providers/MLTrainTestSplitContextProvider.js +0 -47
  254. package/dist/js/context/providers/NEBFormDataProvider.js +0 -42
  255. package/dist/js/context/providers/NonCollinearMagnetizationContextProvider.js +0 -187
  256. package/dist/js/context/providers/PlanewaveCutoffsContextProvider.js +0 -67
  257. package/dist/js/context/providers/PointsGridFormDataProvider.js +0 -263
  258. package/dist/js/context/providers/PointsPathFormDataProvider.js +0 -147
  259. package/dist/js/context/providers/by_application/ExecutableContextProvider.js +0 -25
  260. package/dist/js/context/providers/by_application/espresso/QENEBContextProvider.js +0 -61
  261. package/dist/js/context/providers/by_application/espresso/QEPWXContextProvider.js +0 -150
  262. package/dist/js/context/providers/by_application/nwchem/NWChemTotalEnergyContextProvider.js +0 -85
  263. package/dist/js/context/providers/by_application/vasp/VASPContextProvider.js +0 -65
  264. package/dist/js/context/providers/by_application/vasp/VASPNEBContextProvider.js +0 -57
  265. package/dist/js/context/providers.js +0 -199
  266. package/dist/js/patch.js +0 -19
  267. package/dist/js/subworkflows/convergence/non_uniform_kgrid.js +0 -31
  268. package/dist/js/subworkflows/convergence/parameter.js +0 -70
  269. package/dist/js/subworkflows/convergence/uniform_kgrid.js +0 -26
  270. package/dist/js/subworkflows/convergence.js +0 -189
  271. package/dist/js/subworkflows/create.js +0 -293
  272. package/dist/js/subworkflows/dynamic/espresso/getQpointIrrep.js +0 -34
  273. package/dist/js/subworkflows/dynamic/index.js +0 -19
  274. package/dist/js/subworkflows/dynamic/surfaceEnergy.js +0 -67
  275. package/dist/js/subworkflows/index.js +0 -19
  276. package/dist/js/units/assertion.js +0 -37
  277. package/dist/js/units/assignment.js +0 -42
  278. package/dist/js/units/base.js +0 -91
  279. package/dist/js/units/builders/AssertionUnitConfigBuilder.js +0 -34
  280. package/dist/js/units/builders/AssignmentUnitConfigBuilder.js +0 -41
  281. package/dist/js/units/builders/ExecutionUnitConfigBuilder.js +0 -67
  282. package/dist/js/units/builders/IOUnitConfigBuilder.js +0 -54
  283. package/dist/js/units/builders/UnitConfigBuilder.js +0 -85
  284. package/dist/js/units/builders/index.js +0 -18
  285. package/dist/js/units/condition.js +0 -52
  286. package/dist/js/units/execution.js +0 -225
  287. package/dist/js/units/io.js +0 -148
  288. package/dist/js/units/map.js +0 -38
  289. package/dist/js/units/processing.js +0 -41
  290. package/dist/js/units/reduce.js +0 -24
  291. package/dist/js/units/subworkflow.js +0 -23
  292. package/dist/js/workflows/create.js +0 -318
  293. package/dist/js/workflows/index.js +0 -113
  294. package/dist/js/workflows/relaxation.js +0 -38
  295. package/src/js/context/context.js +0 -47
  296. package/src/js/context/mixins/ApplicationContextMixin.js +0 -19
  297. package/src/js/context/mixins/JobContextMixin.js +0 -36
  298. package/src/js/context/mixins/MaterialContextMixin.js +0 -41
  299. package/src/js/context/mixins/MaterialsContextMixin.js +0 -18
  300. package/src/js/context/mixins/MaterialsSetContextMixin.js +0 -24
  301. package/src/js/context/mixins/MethodDataContextMixin.js +0 -48
  302. package/src/js/context/mixins/WorkflowContextMixin.js +0 -25
  303. package/src/js/context/providers/BoundaryConditionsFormDataProvider.js +0 -72
  304. package/src/js/context/providers/CollinearMagnetizationContextProvider.js +0 -105
  305. package/src/js/context/providers/HubbardContextProviderLegacy.js +0 -67
  306. package/src/js/context/providers/HubbardJContextProvider.js +0 -65
  307. package/src/js/context/providers/HubbardUContextProvider.js +0 -95
  308. package/src/js/context/providers/HubbardVContextProvider.js +0 -96
  309. package/src/js/context/providers/IonDynamicsContextProvider.js +0 -44
  310. package/src/js/context/providers/MLSettingsContextProvider.js +0 -45
  311. package/src/js/context/providers/MLTrainTestSplitContextProvider.js +0 -43
  312. package/src/js/context/providers/NEBFormDataProvider.js +0 -33
  313. package/src/js/context/providers/NonCollinearMagnetizationContextProvider.js +0 -179
  314. package/src/js/context/providers/PlanewaveCutoffsContextProvider.js +0 -65
  315. package/src/js/context/providers/PointsGridFormDataProvider.js +0 -271
  316. package/src/js/context/providers/PointsPathFormDataProvider.js +0 -163
  317. package/src/js/context/providers/by_application/ExecutableContextProvider.js +0 -17
  318. package/src/js/context/providers/by_application/espresso/QENEBContextProvider.js +0 -58
  319. package/src/js/context/providers/by_application/espresso/QEPWXContextProvider.js +0 -168
  320. package/src/js/context/providers/by_application/nwchem/NWChemTotalEnergyContextProvider.js +0 -89
  321. package/src/js/context/providers/by_application/vasp/VASPContextProvider.js +0 -58
  322. package/src/js/context/providers/by_application/vasp/VASPNEBContextProvider.js +0 -48
  323. package/src/js/context/providers/settings.js +0 -38
  324. package/src/js/context/providers.js +0 -140
  325. package/src/js/index.js +0 -57
  326. package/src/js/patch.js +0 -12
  327. package/src/js/subworkflows/convergence/enums.js +0 -12
  328. package/src/js/subworkflows/convergence/factory.js +0 -15
  329. package/src/js/subworkflows/convergence/non_uniform_kgrid.js +0 -28
  330. package/src/js/subworkflows/convergence/parameter.js +0 -58
  331. package/src/js/subworkflows/convergence/uniform_kgrid.js +0 -22
  332. package/src/js/subworkflows/convergence.js +0 -196
  333. package/src/js/subworkflows/create.js +0 -220
  334. package/src/js/subworkflows/dynamic/espresso/getQpointIrrep.js +0 -35
  335. package/src/js/subworkflows/dynamic/index.js +0 -8
  336. package/src/js/subworkflows/dynamic/surfaceEnergy.js +0 -124
  337. package/src/js/subworkflows/index.js +0 -2
  338. package/src/js/subworkflows/subworkflow.js +0 -345
  339. package/src/js/units/assertion.js +0 -29
  340. package/src/js/units/assignment.js +0 -34
  341. package/src/js/units/base.js +0 -97
  342. package/src/js/units/builders/AssertionUnitConfigBuilder.js +0 -28
  343. package/src/js/units/builders/AssignmentUnitConfigBuilder.js +0 -36
  344. package/src/js/units/builders/ExecutionUnitConfigBuilder.js +0 -59
  345. package/src/js/units/builders/IOUnitConfigBuilder.js +0 -53
  346. package/src/js/units/builders/UnitConfigBuilder.js +0 -92
  347. package/src/js/units/builders/index.js +0 -15
  348. package/src/js/units/condition.js +0 -47
  349. package/src/js/units/execution.js +0 -267
  350. package/src/js/units/factory.js +0 -53
  351. package/src/js/units/index.js +0 -25
  352. package/src/js/units/io.js +0 -163
  353. package/src/js/units/map.js +0 -33
  354. package/src/js/units/processing.js +0 -39
  355. package/src/js/units/reduce.js +0 -17
  356. package/src/js/units/subworkflow.js +0 -15
  357. package/src/js/utils.js +0 -73
  358. package/src/js/workflows/create.js +0 -227
  359. package/src/js/workflows/index.js +0 -98
  360. package/src/js/workflows/relaxation.js +0 -42
  361. package/src/js/workflows/workflow.js +0 -388
@@ -0,0 +1,117 @@
1
+ import { InMemoryEntity } from "@mat3ra/code/dist/js/entity";
2
+ import {
3
+ type Defaultable,
4
+ defaultableEntityMixin,
5
+ } from "@mat3ra/code/dist/js/entity/mixins/DefaultableMixin";
6
+ import {
7
+ HashedEntity,
8
+ hashedEntityMixin,
9
+ } from "@mat3ra/code/dist/js/entity/mixins/HashedEntityMixin";
10
+ import {
11
+ type NamedEntity,
12
+ namedEntityMixin,
13
+ } from "@mat3ra/code/dist/js/entity/mixins/NamedEntityMixin";
14
+ import {
15
+ type RuntimeItems,
16
+ runtimeItemsMixin,
17
+ } from "@mat3ra/code/dist/js/entity/mixins/RuntimeItemsMixin";
18
+ import { Taggable, taggableMixin } from "@mat3ra/code/dist/js/entity/mixins/TaggableMixin";
19
+ import type { NameResultSchema } from "@mat3ra/code/dist/js/utils/object";
20
+ import type { Constructor } from "@mat3ra/code/dist/js/utils/types";
21
+ import type { AnyObject } from "@mat3ra/esse/dist/js/esse/types";
22
+ import type { StatusSchema, WorkflowBaseUnitSchema } from "@mat3ra/esse/dist/js/types";
23
+ import { Utils } from "@mat3ra/utils";
24
+
25
+ import { UnitStatus } from "../enums";
26
+ import { type BaseUnitSchemaMixin, baseUnitSchemaMixin } from "../generated/BaseUnitSchemaMixin";
27
+ import { type StatusSchemaMixin, statusSchemaMixin } from "../generated/StatusSchemaMixin";
28
+ import {
29
+ type RuntimeItemsUILogic,
30
+ runtimeItemsUILogicMixin,
31
+ } from "./mixins/RuntimeItemsUILogicMixin";
32
+
33
+ type Schema = WorkflowBaseUnitSchema;
34
+
35
+ type Base = typeof InMemoryEntity &
36
+ Constructor<NamedEntity> &
37
+ Constructor<Defaultable> &
38
+ Constructor<Taggable> &
39
+ Constructor<HashedEntity> &
40
+ Constructor<RuntimeItems> &
41
+ Constructor<RuntimeItemsUILogic> &
42
+ Constructor<BaseUnitSchemaMixin> &
43
+ Constructor<StatusSchemaMixin>;
44
+
45
+ class BaseUnit<S extends Schema = Schema> extends (InMemoryEntity as Base) implements Schema {
46
+ declare toJSON: () => Schema & AnyObject;
47
+
48
+ declare _json: Schema & AnyObject;
49
+
50
+ defaultResults: NameResultSchema[] = [];
51
+
52
+ defaultMonitors: NameResultSchema[] = [];
53
+
54
+ defaultPostProcessors: NameResultSchema[] = [];
55
+
56
+ defaultPreProcessors: NameResultSchema[] = [];
57
+
58
+ repetition = 0;
59
+
60
+ /**
61
+ * @param config — `flowchartId` is optional; when absent, a new UUID is generated.
62
+ */
63
+ constructor(config: Partial<S> & Pick<S, "name">) {
64
+ super({
65
+ results: [],
66
+ monitors: [],
67
+ preProcessors: [],
68
+ postProcessors: [],
69
+ ...config,
70
+ status: config.status || UnitStatus.idle,
71
+ statusTrack: config.statusTrack || [],
72
+ flowchartId: config.flowchartId ?? Utils.uuid.getUUID(),
73
+ tags: config.tags || [],
74
+ });
75
+
76
+ this._initRuntimeItems(config);
77
+ }
78
+
79
+ get lastStatusUpdate() {
80
+ const statusTrack = (this.statusTrack || []).filter((s) => {
81
+ return (s.repetition || 0) === this.repetition;
82
+ });
83
+ const sortedStatusTrack = statusTrack.sort((a, b) => a.trackedAt - b.trackedAt); // lodash.sortBy(statusTrack, (x) => x.trackedAt);
84
+ return sortedStatusTrack[sortedStatusTrack.length - 1];
85
+ }
86
+
87
+ getHashObject(): object {
88
+ return { ...this.hashObjectFromRuntimeItems, type: this.type };
89
+ }
90
+
91
+ isInStatus(status: StatusSchema["status"]) {
92
+ return this.status === status;
93
+ }
94
+
95
+ clone(extraContext: object) {
96
+ const flowchartIDOverrideConfigAsExtraContext = {
97
+ flowchartId: Utils.uuid.getUUID(),
98
+ ...extraContext,
99
+ };
100
+ return super.clone(flowchartIDOverrideConfigAsExtraContext);
101
+ }
102
+
103
+ setRepetition(repetition: number) {
104
+ this.repetition = repetition;
105
+ }
106
+ }
107
+
108
+ taggableMixin(BaseUnit.prototype);
109
+ hashedEntityMixin(BaseUnit.prototype);
110
+ runtimeItemsMixin(BaseUnit.prototype);
111
+ runtimeItemsUILogicMixin(BaseUnit.prototype);
112
+ baseUnitSchemaMixin(BaseUnit.prototype);
113
+ statusSchemaMixin(BaseUnit.prototype);
114
+ namedEntityMixin(BaseUnit.prototype);
115
+ defaultableEntityMixin(BaseUnit);
116
+
117
+ export default BaseUnit;
@@ -0,0 +1,52 @@
1
+ import type { Constructor } from "@mat3ra/code/dist/js/utils/types";
2
+ import JSONSchemasInterface from "@mat3ra/esse/dist/js/esse/JSONSchemasInterface";
3
+ import type { AnyObject } from "@mat3ra/esse/dist/js/esse/types";
4
+ import type { ConditionUnitSchema } from "@mat3ra/esse/dist/js/types";
5
+
6
+ import { UnitType } from "../enums";
7
+ import {
8
+ type ConditionUnitSchemaMixin,
9
+ conditionUnitSchemaMixin,
10
+ } from "../generated/ConditionUnitSchemaMixin";
11
+ import BaseUnit from "./BaseUnit";
12
+
13
+ type Schema = ConditionUnitSchema;
14
+ type Base = typeof BaseUnit<Schema> & Constructor<ConditionUnitSchemaMixin>;
15
+
16
+ export type ConditionUnitConfig = Partial<Schema>;
17
+
18
+ class ConditionUnit extends (BaseUnit as Base) implements Schema {
19
+ declare toJSON: () => Schema & AnyObject;
20
+
21
+ declare _json: Schema & AnyObject;
22
+
23
+ static get jsonSchema() {
24
+ return JSONSchemasInterface.getSchemaById("workflow/unit/condition");
25
+ }
26
+
27
+ constructor(config: ConditionUnitConfig) {
28
+ const schema = {
29
+ input: [],
30
+ results: [],
31
+ preProcessors: [],
32
+ postProcessors: [],
33
+ monitors: [],
34
+ then: "",
35
+ else: "",
36
+ statement: "true",
37
+ maxOccurrences: 100,
38
+ ...config,
39
+ name: config.name ?? UnitType.condition,
40
+ type: UnitType.condition as Schema["type"],
41
+ };
42
+ super(schema);
43
+ }
44
+
45
+ getHashObject(): object {
46
+ return { statement: this.statement, maxOccurrences: this.maxOccurrences };
47
+ }
48
+ }
49
+
50
+ conditionUnitSchemaMixin(ConditionUnit.prototype);
51
+
52
+ export default ConditionUnit;
@@ -0,0 +1,274 @@
1
+ import type { Constructor } from "@mat3ra/code/dist/js/utils/types";
2
+ import JSONSchemasInterface from "@mat3ra/esse/dist/js/esse/JSONSchemasInterface";
3
+ import type { AnyObject } from "@mat3ra/esse/dist/js/esse/types";
4
+ import type { ExecutionUnitInputItemSchema, ExecutionUnitSchema } from "@mat3ra/esse/dist/js/types";
5
+ import { ApplicationRegistry, applicationVersionSatisfiesSupportedRange } from "@mat3ra/standata";
6
+ import { Utils } from "@mat3ra/utils";
7
+
8
+ import {
9
+ type AnyContextProvider,
10
+ type ExternalContext,
11
+ createProvider,
12
+ } from "../context/providers";
13
+ import type ConvergenceParameter from "../convergence/ConvergenceParameter";
14
+ import { UnitType } from "../enums";
15
+ import {
16
+ type ExecutionUnitSchemaMixin,
17
+ executionUnitSchemaMixin,
18
+ } from "../generated/ExecutionUnitSchemaMixin";
19
+ import BaseUnit from "./BaseUnit";
20
+ import ExecutionUnitInput from "./ExecutionUnitInput";
21
+
22
+ type Schema = ExecutionUnitSchema;
23
+
24
+ type Base = typeof BaseUnit & Constructor<ExecutionUnitSchemaMixin>;
25
+
26
+ export type ExecutionUnitConfig = Omit<Partial<Schema>, "application"> & SetApplicationProps;
27
+
28
+ type SetApplicationProps = Pick<Schema, "application"> &
29
+ Pick<Partial<Schema>, "executable" | "flavor"> &
30
+ SetExecutableProps;
31
+
32
+ type SetExecutableProps = {
33
+ executableName?: string;
34
+ flavorName?: string;
35
+ };
36
+
37
+ class ExecutionUnit extends (BaseUnit as Base) implements Schema {
38
+ inputInstances: ExecutionUnitInput[] = [];
39
+
40
+ renderingContext: Partial<ExternalContext> = {};
41
+
42
+ contextProvidersInstances: AnyContextProvider[] = [];
43
+
44
+ declare toJSON: () => Schema & AnyObject;
45
+
46
+ declare _json: Schema & AnyObject;
47
+
48
+ static get jsonSchema() {
49
+ return JSONSchemasInterface.getSchemaById("workflow/unit/execution");
50
+ }
51
+
52
+ constructor(config: ExecutionUnitConfig) {
53
+ const schema = {
54
+ name: UnitType.execution,
55
+ type: UnitType.execution as Schema["type"],
56
+ input: [],
57
+ results: [],
58
+ preProcessors: [],
59
+ postProcessors: [],
60
+ monitors: [],
61
+ context: [],
62
+ ...config,
63
+ };
64
+ super(schema);
65
+
66
+ this.setApplication(config);
67
+
68
+ this.name = this.name || this.flavor.name || "";
69
+ }
70
+
71
+ setApplication({
72
+ application,
73
+ executable,
74
+ flavor,
75
+ executableName,
76
+ flavorName,
77
+ }: SetApplicationProps) {
78
+ const currentExecutable = this.prop<Schema["executable"]>("executable");
79
+ const currentFlavor = this.prop<Schema["flavor"]>("flavor");
80
+
81
+ this.setProp("application", application);
82
+ this.setExecutable({
83
+ executableName: executableName ?? executable?.name ?? currentExecutable?.name,
84
+ flavorName: flavorName ?? flavor?.name ?? currentFlavor?.name,
85
+ });
86
+ }
87
+
88
+ setExecutable({ executableName, flavorName }: SetExecutableProps) {
89
+ const executable = new ApplicationRegistry()
90
+ .getExecutablesByApplication(this.application)
91
+ .find((executable) => {
92
+ return executableName ? executable.name === executableName : executable.isDefault;
93
+ });
94
+
95
+ if (!executable) {
96
+ throw new Error(`Executable ${executableName} not found`);
97
+ }
98
+
99
+ this.setProp("executable", executable);
100
+ this.setFlavor(flavorName);
101
+ }
102
+
103
+ setFlavor(flavorName?: string) {
104
+ const flavor = new ApplicationRegistry()
105
+ .getFlavorsByApplicationExecutable(this.application, this.executable)
106
+ .find((flavor) => (flavorName ? flavor.name === flavorName : flavor.isDefault));
107
+
108
+ if (!flavor) {
109
+ throw new Error(`Flavor ${flavorName} not found`);
110
+ }
111
+
112
+ this.defaultResults = flavor.results;
113
+ this.defaultMonitors = flavor.monitors;
114
+ this.defaultPreProcessors = flavor.preProcessors;
115
+ this.defaultPostProcessors = flavor.postProcessors;
116
+
117
+ // flavor is missing on the first run, so do not use getter this.flavor with requiredProperty
118
+ const previousFlavor = this.prop<Schema["flavor"]>("flavor");
119
+
120
+ if (previousFlavor?.name !== flavor.name) {
121
+ this.results = flavor.results;
122
+ this.monitors = flavor.monitors;
123
+ this.preProcessors = flavor.preProcessors;
124
+ this.postProcessors = flavor.postProcessors;
125
+ }
126
+
127
+ this.setProp("flavor", flavor);
128
+ this.setDefaultInput();
129
+ }
130
+
131
+ /**
132
+ * Persisted `input[].template` must match the current application/executable (and optional
133
+ * applicationVersion). Otherwise the stored template is stale, and we take the default from
134
+ * ApplicationRegistry.
135
+ */
136
+ private isPersistedInputItemCompatible(item: ExecutionUnitInputItemSchema): boolean {
137
+ const { template } = item;
138
+
139
+ if (
140
+ template.applicationName !== this.application.name ||
141
+ template.executableName !== this.executable.name
142
+ ) {
143
+ return false;
144
+ }
145
+
146
+ if (
147
+ !applicationVersionSatisfiesSupportedRange(
148
+ this.application.version,
149
+ template.applicationVersion ?? "",
150
+ )
151
+ ) {
152
+ return false;
153
+ }
154
+
155
+ return true;
156
+ }
157
+
158
+ /**
159
+ * Build `inputInstances` from the current flavor’s defaults (`ApplicationRegistry#getInput(application, flavor)`),
160
+ * merged with persisted `this.input` from saved workflow JSON. For each input slot from the registry we
161
+ * prefer a compatible persisted row matched by `template.name`, else by index; incompatible or missing
162
+ * rows use the registry template. `render()` then serializes from these instances into `this.input`, so UI
163
+ * and saved JSON stay aligned when Subworkflow re-serializes units after render.
164
+ */
165
+ setDefaultInput() {
166
+ const driverTemplates = new ApplicationRegistry().getInput(this.application, this.flavor);
167
+ const persisted = Array.isArray(this.input) ? this.input : [];
168
+
169
+ this.inputInstances = driverTemplates.map((driverTemplate, index) => {
170
+ const persistedItem =
171
+ persisted.find((item) => item?.template?.name === driverTemplate.name) ??
172
+ persisted[index];
173
+
174
+ if (persistedItem && this.isPersistedInputItemCompatible(persistedItem)) {
175
+ return new ExecutionUnitInput(persistedItem);
176
+ }
177
+
178
+ return ExecutionUnitInput.createFromTemplate(driverTemplate);
179
+ });
180
+
181
+ this.input = this.inputInstances.map((input) => input.toJSON());
182
+ }
183
+
184
+ render(externalContext: ExternalContext, convergence?: ConvergenceParameter) {
185
+ this.contextProvidersInstances = this.getContextProvidersInstances(
186
+ externalContext,
187
+ convergence,
188
+ );
189
+
190
+ this.saveContext(externalContext);
191
+ }
192
+
193
+ private getContextProvidersInstances(
194
+ externalContext: ExternalContext,
195
+ convergence?: ConvergenceParameter,
196
+ ) {
197
+ const uniqueContextProviderNames = [
198
+ ...new Set(
199
+ this.input
200
+ .map((input) => {
201
+ return input.template.contextProviders.map((provider) => {
202
+ return provider.name;
203
+ });
204
+ })
205
+ .flat(),
206
+ ),
207
+ ];
208
+
209
+ // TODO: kgrid should be abstracted and selected by user
210
+ const parameterToContextProviderMap = {
211
+ N_k: "kgrid",
212
+ N_k_nonuniform: "kgrid",
213
+ } as const;
214
+
215
+ return uniqueContextProviderNames
216
+ .map((name) => {
217
+ return createProvider(name, this.context, externalContext);
218
+ })
219
+ .map((provider) => {
220
+ if (
221
+ convergence &&
222
+ provider.name === parameterToContextProviderMap[convergence.name]
223
+ ) {
224
+ provider.applyConvergenceParameter(convergence);
225
+ }
226
+ return provider;
227
+ });
228
+ }
229
+
230
+ savePersistentContext() {
231
+ const persistentItems = this.contextProvidersInstances.map((p) => p.getContextItemData());
232
+ this.context = persistentItems.filter((c) => c.isEdited);
233
+ }
234
+
235
+ saveRenderingContext(externalContext: ExternalContext) {
236
+ const renderingItems = this.contextProvidersInstances.map((p) =>
237
+ p.getContextItemDataForRendering(),
238
+ );
239
+ this.renderingContext = {
240
+ ...Object.fromEntries(renderingItems.map((context) => [context.name, context.data])),
241
+ ...externalContext,
242
+ };
243
+ this.input = this.inputInstances.map((input) => {
244
+ return input.render(this.renderingContext).toJSON();
245
+ });
246
+ }
247
+
248
+ saveContext(externalContext: ExternalContext) {
249
+ this.savePersistentContext();
250
+ this.saveRenderingContext(externalContext);
251
+ }
252
+
253
+ getHashObject() {
254
+ const { input, flavor, application, executable } = this.toJSON();
255
+
256
+ return {
257
+ ...super.getHashObject(),
258
+ application,
259
+ executable,
260
+ flavor,
261
+ input: Utils.hash.calculateHashFromObject(
262
+ input.map(({ template }) => {
263
+ return Utils.str.removeEmptyLinesFromString(
264
+ Utils.str.removeCommentsFromSourceCode(template.content),
265
+ );
266
+ }),
267
+ ),
268
+ };
269
+ }
270
+ }
271
+
272
+ executionUnitSchemaMixin(ExecutionUnit.prototype);
273
+
274
+ export default ExecutionUnit;
@@ -0,0 +1,71 @@
1
+ import { Template } from "@mat3ra/ade";
2
+ import { InMemoryEntity } from "@mat3ra/code/dist/js/entity";
3
+ import JSONSchemasInterface from "@mat3ra/esse/dist/js/esse/JSONSchemasInterface";
4
+ import type { AnyObject } from "@mat3ra/esse/dist/js/esse/types";
5
+ import type { TemplateSchema } from "@mat3ra/esse/dist/js/types";
6
+ import { setupNunjucksEnvironment } from "@mat3ra/standata";
7
+ import nunjucks from "nunjucks";
8
+
9
+ import {
10
+ type ExecutionUnitInputSchemaMixin,
11
+ executionUnitInputSchemaMixin,
12
+ } from "../generated/ExecutionUnitInputSchemaMixin";
13
+
14
+ type Schema = ExecutionUnitInputSchemaMixin;
15
+ type JSON = Schema & AnyObject;
16
+ type ConstructorConfig = Schema | (Omit<Schema, "template"> & { template: Template });
17
+
18
+ const env = setupNunjucksEnvironment(new nunjucks.Environment());
19
+
20
+ // eslint-disable-next-line @typescript-eslint/no-empty-interface
21
+ interface ExecutionUnitInput extends ExecutionUnitInputSchemaMixin {}
22
+
23
+ class ExecutionUnitInput extends InMemoryEntity implements Schema {
24
+ declare _json: JSON;
25
+
26
+ declare toJSON: () => JSON;
27
+
28
+ declare toJSONQuick: () => JSON;
29
+
30
+ static get jsonSchema() {
31
+ return JSONSchemasInterface.getSchemaById("workflow/unit/input/-inputItem");
32
+ }
33
+
34
+ static createFromTemplate(template: Template | TemplateSchema) {
35
+ return new ExecutionUnitInput({
36
+ template,
37
+ rendered: template.content,
38
+ isManuallyChanged: false,
39
+ });
40
+ }
41
+
42
+ constructor(config: ConstructorConfig) {
43
+ const { template } = config;
44
+ const templateInstance = template instanceof Template ? template : new Template(template);
45
+
46
+ super({ ...config, template: templateInstance.toJSON() });
47
+ }
48
+
49
+ render(renderingContext: Record<string, unknown>) {
50
+ if (this.isManuallyChanged) {
51
+ return this;
52
+ }
53
+
54
+ try {
55
+ const rendered = nunjucks.compile(this.template.content, env).render(renderingContext);
56
+
57
+ this.rendered = rendered || this.template.content;
58
+
59
+ return this;
60
+ } catch (error) {
61
+ console.error("Error rendering template", this.template.content);
62
+ console.error("Rendering context: ", JSON.stringify(renderingContext));
63
+ console.error("Error", error);
64
+ throw error;
65
+ }
66
+ }
67
+ }
68
+
69
+ executionUnitInputSchemaMixin(ExecutionUnitInput.prototype);
70
+
71
+ export default ExecutionUnitInput;
@@ -0,0 +1,43 @@
1
+ import type { Constructor } from "@mat3ra/code/dist/js/utils/types";
2
+ import JSONSchemasInterface from "@mat3ra/esse/dist/js/esse/JSONSchemasInterface";
3
+ import type { AnyObject } from "@mat3ra/esse/dist/js/esse/types";
4
+ import type { DataIOUnitSchema } from "@mat3ra/esse/dist/js/types";
5
+
6
+ import { UnitType } from "../enums";
7
+ import { type IOUnitSchemaMixin, iOUnitSchemaMixin } from "../generated/IOUnitSchemaMixin";
8
+ import BaseUnit from "./BaseUnit";
9
+
10
+ type Schema = DataIOUnitSchema;
11
+ type Base = typeof BaseUnit<Schema> & Constructor<IOUnitSchemaMixin>;
12
+
13
+ export type IOUnitConfig = Partial<Schema>;
14
+
15
+ class IOUnit extends (BaseUnit as Base) implements Schema {
16
+ declare toJSON: () => Schema & AnyObject;
17
+
18
+ declare _json: Schema & AnyObject;
19
+
20
+ static get jsonSchema() {
21
+ return JSONSchemasInterface.getSchemaById("workflow/unit/io");
22
+ }
23
+
24
+ constructor(config: IOUnitConfig) {
25
+ const schema = {
26
+ name: UnitType.io,
27
+ subtype: "input" as const,
28
+ source: "api" as const,
29
+ input: [],
30
+ results: [],
31
+ preProcessors: [],
32
+ postProcessors: [],
33
+ monitors: [],
34
+ ...config,
35
+ type: UnitType.io as Schema["type"],
36
+ };
37
+ super(schema);
38
+ }
39
+ }
40
+
41
+ iOUnitSchemaMixin(IOUnit.prototype);
42
+
43
+ export default IOUnit;
@@ -0,0 +1,59 @@
1
+ import type { Constructor } from "@mat3ra/code/dist/js/utils/types";
2
+ import JSONSchemasInterface from "@mat3ra/esse/dist/js/esse/JSONSchemasInterface";
3
+ import type { AnyObject } from "@mat3ra/esse/dist/js/esse/types";
4
+ import type { MapUnitSchema } from "@mat3ra/esse/dist/js/types";
5
+
6
+ import { UnitType } from "../enums";
7
+ import { type MapUnitSchemaMixin, mapUnitSchemaMixin } from "../generated/MapUnitSchemaMixin";
8
+ import BaseUnit from "./BaseUnit";
9
+
10
+ type Schema = MapUnitSchema;
11
+
12
+ export const defaultMapConfig = {
13
+ name: UnitType.map,
14
+ type: UnitType.map,
15
+ workflowId: "",
16
+ input: {
17
+ target: "MAP_DATA",
18
+ scope: "global",
19
+ name: "",
20
+ values: [],
21
+ useValues: false,
22
+ },
23
+ results: [],
24
+ monitors: [],
25
+ preProcessors: [],
26
+ postProcessors: [],
27
+ };
28
+
29
+ type Base = typeof BaseUnit<Schema> & Constructor<MapUnitSchemaMixin>;
30
+
31
+ export type MapUnitConfig = Partial<Omit<Schema, "type">>;
32
+
33
+ class MapUnit extends (BaseUnit as Base) implements Schema {
34
+ declare toJSON: () => Schema & AnyObject;
35
+
36
+ declare _json: Schema & AnyObject;
37
+
38
+ static get jsonSchema() {
39
+ return JSONSchemasInterface.getSchemaById("workflow/unit/flowchart");
40
+ }
41
+
42
+ constructor(config: MapUnitConfig) {
43
+ const schema: Schema = {
44
+ ...defaultMapConfig,
45
+ ...config,
46
+ flowchartId: config.flowchartId ?? "",
47
+ type: UnitType.map,
48
+ };
49
+ super(schema);
50
+ }
51
+
52
+ setWorkflowId(id: string) {
53
+ this.setProp("workflowId", id);
54
+ }
55
+ }
56
+
57
+ mapUnitSchemaMixin(MapUnit.prototype);
58
+
59
+ export default MapUnit;
@@ -0,0 +1,46 @@
1
+ import type { Constructor } from "@mat3ra/code/dist/js/utils/types";
2
+ import JSONSchemasInterface from "@mat3ra/esse/dist/js/esse/JSONSchemasInterface";
3
+ import type { AnyObject } from "@mat3ra/esse/dist/js/esse/types";
4
+ import type { ReduceUnitSchema } from "@mat3ra/esse/dist/js/types";
5
+
6
+ import { UnitType } from "../enums";
7
+ import {
8
+ type ReduceUnitSchemaMixin,
9
+ reduceUnitSchemaMixin,
10
+ } from "../generated/ReduceUnitSchemaMixin";
11
+ import BaseUnit from "./BaseUnit";
12
+
13
+ type Schema = ReduceUnitSchema;
14
+ type Base = typeof BaseUnit<Schema> & Constructor<ReduceUnitSchemaMixin>;
15
+
16
+ export type ReduceUnitConfig = Partial<Omit<Schema, "type" | "flowchartId">> &
17
+ Pick<Schema, "flowchartId">;
18
+
19
+ class ReduceUnit extends (BaseUnit as Base) implements Schema {
20
+ declare toJSON: () => Schema & AnyObject;
21
+
22
+ declare _json: Schema & AnyObject;
23
+
24
+ static get jsonSchema() {
25
+ return JSONSchemasInterface.getSchemaById("workflow/unit/flowchart");
26
+ }
27
+
28
+ constructor(config: ReduceUnitConfig) {
29
+ const schema: Schema = {
30
+ name: UnitType.reduce,
31
+ mapFlowchartId: "",
32
+ input: [],
33
+ results: [],
34
+ preProcessors: [],
35
+ postProcessors: [],
36
+ monitors: [],
37
+ ...config,
38
+ type: UnitType.reduce,
39
+ };
40
+ super(schema);
41
+ }
42
+ }
43
+
44
+ reduceUnitSchemaMixin(ReduceUnit.prototype);
45
+
46
+ export default ReduceUnit;