@openforis/arena-core 2.3.33 → 2.3.35

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 (843) hide show
  1. package/dist/app/appInfo.js.map +1 -1
  2. package/dist/app/index.js.map +1 -1
  3. package/dist/auth/authGroup.js.map +1 -1
  4. package/dist/auth/authGroups.js.map +1 -1
  5. package/dist/auth/authorizer.js +45 -0
  6. package/dist/auth/authorizer.js.map +1 -1
  7. package/dist/auth/factory.js.map +1 -1
  8. package/dist/auth/index.js.map +1 -1
  9. package/dist/auth/permission.js.map +1 -1
  10. package/dist/auth/user.js.map +1 -1
  11. package/dist/auth/userAuth.js.map +1 -1
  12. package/dist/auth/userAuthTokenService.d.ts +28 -0
  13. package/dist/auth/userAuthTokenService.js.map +1 -1
  14. package/dist/auth/userGroup.js.map +1 -1
  15. package/dist/auth/userService.js.map +1 -1
  16. package/dist/auth/users.js +1 -0
  17. package/dist/auth/users.js.map +1 -1
  18. package/dist/category/categories.js.map +1 -1
  19. package/dist/category/category.js.map +1 -1
  20. package/dist/category/categoryImportSummary.js.map +1 -1
  21. package/dist/category/categoryItemGenerator.js.map +1 -1
  22. package/dist/category/categoryItems.js.map +1 -1
  23. package/dist/category/factory.js.map +1 -1
  24. package/dist/category/index.js.map +1 -1
  25. package/dist/category/item.js.map +1 -1
  26. package/dist/category/itemService.js.map +1 -1
  27. package/dist/category/level.js.map +1 -1
  28. package/dist/category/levelService.js.map +1 -1
  29. package/dist/category/service.js.map +1 -1
  30. package/dist/chain/chain.js.map +1 -1
  31. package/dist/chain/chainFactory.js.map +1 -1
  32. package/dist/chain/chainNodeDef.js.map +1 -1
  33. package/dist/chain/chainNodeDefAggregate.js.map +1 -1
  34. package/dist/chain/chainNodeDefFactory.js.map +1 -1
  35. package/dist/chain/chainNodeDefService.js.map +1 -1
  36. package/dist/chain/chainService.js.map +1 -1
  37. package/dist/chain/index.js.map +1 -1
  38. package/dist/common/Dictionary.js.map +1 -1
  39. package/dist/common/factory.js.map +1 -1
  40. package/dist/common/i18n.js.map +1 -1
  41. package/dist/common/index.js.map +1 -1
  42. package/dist/dataExport/ArenaExportInfo.js.map +1 -1
  43. package/dist/dataExport/ArenaExportInfoFactory.js.map +1 -1
  44. package/dist/dataExport/FlatDataExportModel.js +3 -3
  45. package/dist/dataExport/FlatDataExportModel.js.map +1 -1
  46. package/dist/dataExport/FlatDataExportOptions.js.map +1 -1
  47. package/dist/dataExport/FlatDataFiles.js.map +1 -1
  48. package/dist/dataExport/UniqueFileNamesGenerator.d.ts +23 -0
  49. package/dist/dataExport/UniqueFileNamesGenerator.js +26 -1
  50. package/dist/dataExport/UniqueFileNamesGenerator.js.map +1 -1
  51. package/dist/dataExport/index.js.map +1 -1
  52. package/dist/dataQuery/dataQuery.js.map +1 -1
  53. package/dist/dataQuery/dataQuerySummaries.js +3 -0
  54. package/dist/dataQuery/dataQuerySummaries.js.map +1 -1
  55. package/dist/dataQuery/index.js.map +1 -1
  56. package/dist/error/SystemError.js +1 -0
  57. package/dist/error/SystemError.js.map +1 -1
  58. package/dist/error/index.js.map +1 -1
  59. package/dist/esm/app/appInfo.js.map +1 -1
  60. package/dist/esm/app/index.js.map +1 -1
  61. package/dist/esm/auth/authGroup.js.map +1 -1
  62. package/dist/esm/auth/authGroups.js.map +1 -1
  63. package/dist/esm/auth/authorizer.js +45 -0
  64. package/dist/esm/auth/authorizer.js.map +1 -1
  65. package/dist/esm/auth/factory.js.map +1 -1
  66. package/dist/esm/auth/index.js.map +1 -1
  67. package/dist/esm/auth/permission.js.map +1 -1
  68. package/dist/esm/auth/user.js.map +1 -1
  69. package/dist/esm/auth/userAuth.js.map +1 -1
  70. package/dist/esm/auth/userAuthTokenService.js.map +1 -1
  71. package/dist/esm/auth/userGroup.js.map +1 -1
  72. package/dist/esm/auth/userService.js.map +1 -1
  73. package/dist/esm/auth/users.js +1 -0
  74. package/dist/esm/auth/users.js.map +1 -1
  75. package/dist/esm/category/categories.js.map +1 -1
  76. package/dist/esm/category/category.js.map +1 -1
  77. package/dist/esm/category/categoryImportSummary.js.map +1 -1
  78. package/dist/esm/category/categoryItemGenerator.js.map +1 -1
  79. package/dist/esm/category/categoryItems.js.map +1 -1
  80. package/dist/esm/category/factory.js.map +1 -1
  81. package/dist/esm/category/index.js.map +1 -1
  82. package/dist/esm/category/item.js.map +1 -1
  83. package/dist/esm/category/itemService.js.map +1 -1
  84. package/dist/esm/category/level.js.map +1 -1
  85. package/dist/esm/category/levelService.js.map +1 -1
  86. package/dist/esm/category/service.js.map +1 -1
  87. package/dist/esm/chain/chain.js.map +1 -1
  88. package/dist/esm/chain/chainFactory.js.map +1 -1
  89. package/dist/esm/chain/chainNodeDef.js.map +1 -1
  90. package/dist/esm/chain/chainNodeDefAggregate.js.map +1 -1
  91. package/dist/esm/chain/chainNodeDefFactory.js.map +1 -1
  92. package/dist/esm/chain/chainNodeDefService.js.map +1 -1
  93. package/dist/esm/chain/chainService.js.map +1 -1
  94. package/dist/esm/chain/index.js.map +1 -1
  95. package/dist/esm/common/Dictionary.js.map +1 -1
  96. package/dist/esm/common/factory.js.map +1 -1
  97. package/dist/esm/common/i18n.js.map +1 -1
  98. package/dist/esm/common/index.js.map +1 -1
  99. package/dist/esm/dataExport/ArenaExportInfo.js.map +1 -1
  100. package/dist/esm/dataExport/ArenaExportInfoFactory.js.map +1 -1
  101. package/dist/esm/dataExport/FlatDataExportModel.js +3 -3
  102. package/dist/esm/dataExport/FlatDataExportModel.js.map +1 -1
  103. package/dist/esm/dataExport/FlatDataExportOptions.js.map +1 -1
  104. package/dist/esm/dataExport/FlatDataFiles.js.map +1 -1
  105. package/dist/esm/dataExport/UniqueFileNamesGenerator.js +26 -1
  106. package/dist/esm/dataExport/UniqueFileNamesGenerator.js.map +1 -1
  107. package/dist/esm/dataExport/index.js.map +1 -1
  108. package/dist/esm/dataQuery/dataQuery.js.map +1 -1
  109. package/dist/esm/dataQuery/dataQuerySummaries.js +3 -0
  110. package/dist/esm/dataQuery/dataQuerySummaries.js.map +1 -1
  111. package/dist/esm/dataQuery/index.js.map +1 -1
  112. package/dist/esm/error/SystemError.js +1 -0
  113. package/dist/esm/error/SystemError.js.map +1 -1
  114. package/dist/esm/error/index.js.map +1 -1
  115. package/dist/esm/expression/context.js.map +1 -1
  116. package/dist/esm/expression/evaluator.js.map +1 -1
  117. package/dist/esm/expression/function.js.map +1 -1
  118. package/dist/esm/expression/index.js.map +1 -1
  119. package/dist/esm/expression/javascript/evaluator.js +4 -1
  120. package/dist/esm/expression/javascript/evaluator.js.map +1 -1
  121. package/dist/esm/expression/javascript/functionsDefault.js.map +1 -1
  122. package/dist/esm/expression/javascript/global.js.map +1 -1
  123. package/dist/esm/expression/javascript/node/array.js.map +1 -1
  124. package/dist/esm/expression/javascript/node/binary.js +23 -0
  125. package/dist/esm/expression/javascript/node/binary.js.map +1 -1
  126. package/dist/esm/expression/javascript/node/call.js +12 -0
  127. package/dist/esm/expression/javascript/node/call.js.map +1 -1
  128. package/dist/esm/expression/javascript/node/compound.js.map +1 -1
  129. package/dist/esm/expression/javascript/node/conditional.js.map +1 -1
  130. package/dist/esm/expression/javascript/node/identifier.js +7 -0
  131. package/dist/esm/expression/javascript/node/identifier.js.map +1 -1
  132. package/dist/esm/expression/javascript/node/literal.js.map +1 -1
  133. package/dist/esm/expression/javascript/node/member.js +5 -1
  134. package/dist/esm/expression/javascript/node/member.js.map +1 -1
  135. package/dist/esm/expression/javascript/node/sequence.js.map +1 -1
  136. package/dist/esm/expression/javascript/node/this.js.map +1 -1
  137. package/dist/esm/expression/javascript/node/unary.js +8 -0
  138. package/dist/esm/expression/javascript/node/unary.js.map +1 -1
  139. package/dist/esm/expression/javascript/parser/jsep.js +6 -2
  140. package/dist/esm/expression/javascript/parser/jsep.js.map +1 -1
  141. package/dist/esm/expression/javascript/parser/parser.js.map +1 -1
  142. package/dist/esm/expression/node.js.map +1 -1
  143. package/dist/esm/expression/parser.js.map +1 -1
  144. package/dist/esm/expression/variable.js.map +1 -1
  145. package/dist/esm/extraProp/extraProp.js.map +1 -1
  146. package/dist/esm/extraProp/extraProps.js.map +1 -1
  147. package/dist/esm/extraProp/extraPropsDataGenerator.js.map +1 -1
  148. package/dist/esm/extraProp/index.js.map +1 -1
  149. package/dist/esm/geo/index.js.map +1 -1
  150. package/dist/esm/geo/point.js.map +1 -1
  151. package/dist/esm/geo/pointFactory.js.map +1 -1
  152. package/dist/esm/geo/points/bearing.js +11 -0
  153. package/dist/esm/geo/points/bearing.js.map +1 -1
  154. package/dist/esm/geo/points/distance.js +9 -0
  155. package/dist/esm/geo/points/distance.js.map +1 -1
  156. package/dist/esm/geo/points/equals.js.map +1 -1
  157. package/dist/esm/geo/points/getSrs.js.map +1 -1
  158. package/dist/esm/geo/points/index.js.map +1 -1
  159. package/dist/esm/geo/points/isFilled.js.map +1 -1
  160. package/dist/esm/geo/points/isValid.js +1 -1
  161. package/dist/esm/geo/points/isValid.js.map +1 -1
  162. package/dist/esm/geo/points/parse.js +9 -0
  163. package/dist/esm/geo/points/parse.js.map +1 -1
  164. package/dist/esm/geo/points/pointAtDistance.js +10 -0
  165. package/dist/esm/geo/points/pointAtDistance.js.map +1 -1
  166. package/dist/esm/geo/points/toLatLong.js.map +1 -1
  167. package/dist/esm/geo/points/toString.js.map +1 -1
  168. package/dist/esm/geo/points/transform.js +12 -0
  169. package/dist/esm/geo/points/transform.js.map +1 -1
  170. package/dist/esm/index.js.map +1 -1
  171. package/dist/esm/job/JobBase.js +99 -0
  172. package/dist/esm/job/JobBase.js.map +1 -1
  173. package/dist/esm/job/index.js.map +1 -1
  174. package/dist/esm/job/job.js.map +1 -1
  175. package/dist/esm/job/jobContext.js.map +1 -1
  176. package/dist/esm/job/jobEvent.js.map +1 -1
  177. package/dist/esm/job/jobSerialized.js.map +1 -1
  178. package/dist/esm/job/status.js.map +1 -1
  179. package/dist/esm/language/index.js.map +1 -1
  180. package/dist/esm/language/labels.js.map +1 -1
  181. package/dist/esm/language/languageCode.js.map +1 -1
  182. package/dist/esm/language/languages.js.map +1 -1
  183. package/dist/esm/logger/index.js.map +1 -1
  184. package/dist/esm/logger/logger.js.map +1 -1
  185. package/dist/esm/message/index.js.map +1 -1
  186. package/dist/esm/message/message.js.map +1 -1
  187. package/dist/esm/message/messages.js +1 -0
  188. package/dist/esm/message/messages.js.map +1 -1
  189. package/dist/esm/node/factory.js.map +1 -1
  190. package/dist/esm/node/index.js.map +1 -1
  191. package/dist/esm/node/node.js.map +1 -1
  192. package/dist/esm/node/nodePointer.js.map +1 -1
  193. package/dist/esm/node/nodeValue/code.js.map +1 -1
  194. package/dist/esm/node/nodeValue/coordinate.js.map +1 -1
  195. package/dist/esm/node/nodeValue/file.js.map +1 -1
  196. package/dist/esm/node/nodeValue/index.js.map +1 -1
  197. package/dist/esm/node/nodeValue/nodeValueComposite.js.map +1 -1
  198. package/dist/esm/node/nodeValue/taxon.js.map +1 -1
  199. package/dist/esm/node/nodeValueFormatter.js +2 -0
  200. package/dist/esm/node/nodeValueFormatter.js.map +1 -1
  201. package/dist/esm/node/nodeValueProps.js.map +1 -1
  202. package/dist/esm/node/nodeValues.js +20 -0
  203. package/dist/esm/node/nodeValues.js.map +1 -1
  204. package/dist/esm/node/nodes.js +7 -0
  205. package/dist/esm/node/nodes.js.map +1 -1
  206. package/dist/esm/node/service.js.map +1 -1
  207. package/dist/esm/nodeDef/factory.js.map +1 -1
  208. package/dist/esm/nodeDef/index.js.map +1 -1
  209. package/dist/esm/nodeDef/nodeDef.js +1 -0
  210. package/dist/esm/nodeDef/nodeDef.js.map +1 -1
  211. package/dist/esm/nodeDef/nodeDefs.js +18 -0
  212. package/dist/esm/nodeDef/nodeDefs.js.map +1 -1
  213. package/dist/esm/nodeDef/service.js.map +1 -1
  214. package/dist/esm/nodeDef/types/boolean.js.map +1 -1
  215. package/dist/esm/nodeDef/types/code.js.map +1 -1
  216. package/dist/esm/nodeDef/types/coordinate.js.map +1 -1
  217. package/dist/esm/nodeDef/types/date.js.map +1 -1
  218. package/dist/esm/nodeDef/types/decimal.js.map +1 -1
  219. package/dist/esm/nodeDef/types/entity.js.map +1 -1
  220. package/dist/esm/nodeDef/types/file.js.map +1 -1
  221. package/dist/esm/nodeDef/types/formHeader.js.map +1 -1
  222. package/dist/esm/nodeDef/types/integer.js.map +1 -1
  223. package/dist/esm/nodeDef/types/taxon.js.map +1 -1
  224. package/dist/esm/nodeDef/types/text.js.map +1 -1
  225. package/dist/esm/nodeDef/types/time.js.map +1 -1
  226. package/dist/esm/nodeDefExpressionEvaluator/categoryItemProvider.js.map +1 -1
  227. package/dist/esm/nodeDefExpressionEvaluator/context.js.map +1 -1
  228. package/dist/esm/nodeDefExpressionEvaluator/evaluator.js.map +1 -1
  229. package/dist/esm/nodeDefExpressionEvaluator/functions.js +8 -1
  230. package/dist/esm/nodeDefExpressionEvaluator/functions.js.map +1 -1
  231. package/dist/esm/nodeDefExpressionEvaluator/index.js.map +1 -1
  232. package/dist/esm/nodeDefExpressionEvaluator/node/identifier.js +28 -0
  233. package/dist/esm/nodeDefExpressionEvaluator/node/identifier.js.map +1 -1
  234. package/dist/esm/nodeDefExpressionEvaluator/node/member.js +15 -0
  235. package/dist/esm/nodeDefExpressionEvaluator/node/member.js.map +1 -1
  236. package/dist/esm/nodeDefExpressionEvaluator/node/nodeDefExpressionNativeProperties.js +3 -0
  237. package/dist/esm/nodeDefExpressionEvaluator/node/nodeDefExpressionNativeProperties.js.map +1 -1
  238. package/dist/esm/nodeDefExpressionEvaluator/node/thisEvaluator.js.map +1 -1
  239. package/dist/esm/nodeDefExpressionEvaluator/taxonProvider.js.map +1 -1
  240. package/dist/esm/nodeDefExpressionEvaluator/validator.js.map +1 -1
  241. package/dist/esm/record/_records/nodeDefSelfReferences.js +57 -0
  242. package/dist/esm/record/_records/nodeDefSelfReferences.js.map +1 -0
  243. package/dist/esm/record/_records/recordCompletion.js +14 -0
  244. package/dist/esm/record/_records/recordCompletion.js.map +1 -1
  245. package/dist/esm/record/_records/recordGetters.js +26 -5
  246. package/dist/esm/record/_records/recordGetters.js.map +1 -1
  247. package/dist/esm/record/_records/recordNodesIndexReader.js.map +1 -1
  248. package/dist/esm/record/_records/recordNodesIndexUpdater.js +17 -0
  249. package/dist/esm/record/_records/recordNodesIndexUpdater.js.map +1 -1
  250. package/dist/esm/record/_records/recordPagesValidation.js +45 -0
  251. package/dist/esm/record/_records/recordPagesValidation.js.map +1 -1
  252. package/dist/esm/record/_records/recordUpdateOptions.js.map +1 -1
  253. package/dist/esm/record/_records/recordUpdater.js +2 -0
  254. package/dist/esm/record/_records/recordUpdater.js.map +1 -1
  255. package/dist/esm/record/_records/recordUtils.js.map +1 -1
  256. package/dist/esm/record/factory.js.map +1 -1
  257. package/dist/esm/record/index.js.map +1 -1
  258. package/dist/esm/record/nodePointers.js.map +1 -1
  259. package/dist/esm/record/record.js.map +1 -1
  260. package/dist/esm/record/recordCloner.js +10 -1
  261. package/dist/esm/record/recordCloner.js.map +1 -1
  262. package/dist/esm/record/recordExpressionEvaluator/context.js.map +1 -1
  263. package/dist/esm/record/recordExpressionEvaluator/functions.js.map +1 -1
  264. package/dist/esm/record/recordExpressionEvaluator/index.js.map +1 -1
  265. package/dist/esm/record/recordExpressionEvaluator/node/identifier/identifier.js +14 -0
  266. package/dist/esm/record/recordExpressionEvaluator/node/identifier/identifier.js.map +1 -1
  267. package/dist/esm/record/recordExpressionEvaluator/node/identifier/index.js.map +1 -1
  268. package/dist/esm/record/recordExpressionEvaluator/node/identifier/nodesFinder.js +6 -0
  269. package/dist/esm/record/recordExpressionEvaluator/node/identifier/nodesFinder.js.map +1 -1
  270. package/dist/esm/record/recordExpressionEvaluator/node/thisEvaluator.js.map +1 -1
  271. package/dist/esm/record/recordExpressionEvaluator/nodeValueExtractor.js.map +1 -1
  272. package/dist/esm/record/recordExpressionEvaluator/recordExpressionEvaluator.js.map +1 -1
  273. package/dist/esm/record/recordFixer.js +16 -0
  274. package/dist/esm/record/recordFixer.js.map +1 -1
  275. package/dist/esm/record/recordNodesUpdater/index.js.map +1 -1
  276. package/dist/esm/record/recordNodesUpdater/recordEnumeratingItemsExpressionEvaluator.js +6 -0
  277. package/dist/esm/record/recordNodesUpdater/recordEnumeratingItemsExpressionEvaluator.js.map +1 -1
  278. package/dist/esm/record/recordNodesUpdater/recordExpressionEvaluationContext.js.map +1 -1
  279. package/dist/esm/record/recordNodesUpdater/recordExpressionValueConverter.js +5 -0
  280. package/dist/esm/record/recordNodesUpdater/recordExpressionValueConverter.js.map +1 -1
  281. package/dist/esm/record/recordNodesUpdater/recordNodeDependentsApplicableUpdater.js +20 -2
  282. package/dist/esm/record/recordNodesUpdater/recordNodeDependentsApplicableUpdater.js.map +1 -1
  283. package/dist/esm/record/recordNodesUpdater/recordNodeDependentsBooleanUpdater.js +2 -1
  284. package/dist/esm/record/recordNodesUpdater/recordNodeDependentsBooleanUpdater.js.map +1 -1
  285. package/dist/esm/record/recordNodesUpdater/recordNodeDependentsCodeAttributesUpdater.js +13 -1
  286. package/dist/esm/record/recordNodesUpdater/recordNodeDependentsCodeAttributesUpdater.js.map +1 -1
  287. package/dist/esm/record/recordNodesUpdater/recordNodeDependentsCountUpdater.js +9 -1
  288. package/dist/esm/record/recordNodesUpdater/recordNodeDependentsCountUpdater.js.map +1 -1
  289. package/dist/esm/record/recordNodesUpdater/recordNodeDependentsDefaultValuesUpdater.js +17 -1
  290. package/dist/esm/record/recordNodesUpdater/recordNodeDependentsDefaultValuesUpdater.js.map +1 -1
  291. package/dist/esm/record/recordNodesUpdater/recordNodeDependentsEditableUpdater.js.map +1 -1
  292. package/dist/esm/record/recordNodesUpdater/recordNodeDependentsEnumeratedEntitiesUpdater.js +5 -1
  293. package/dist/esm/record/recordNodesUpdater/recordNodeDependentsEnumeratedEntitiesUpdater.js.map +1 -1
  294. package/dist/esm/record/recordNodesUpdater/recordNodeDependentsEnumeratingItemsUpdater.js +4 -2
  295. package/dist/esm/record/recordNodesUpdater/recordNodeDependentsEnumeratingItemsUpdater.js.map +1 -1
  296. package/dist/esm/record/recordNodesUpdater/recordNodeDependentsFileNamesEvaluator.js +8 -3
  297. package/dist/esm/record/recordNodesUpdater/recordNodeDependentsFileNamesEvaluator.js.map +1 -1
  298. package/dist/esm/record/recordNodesUpdater/recordNodeDependentsUpdateParams.js.map +1 -1
  299. package/dist/esm/record/recordNodesUpdater/recordNodeDependentsVisibleUpdater.js.map +1 -1
  300. package/dist/esm/record/recordNodesUpdater/recordNodesCreator.js +10 -5
  301. package/dist/esm/record/recordNodesUpdater/recordNodesCreator.js.map +1 -1
  302. package/dist/esm/record/recordNodesUpdater/recordNodesDeleter.js +7 -0
  303. package/dist/esm/record/recordNodesUpdater/recordNodesDeleter.js.map +1 -1
  304. package/dist/esm/record/recordNodesUpdater/recordNodesDependentsUpdaterCommons.js +2 -0
  305. package/dist/esm/record/recordNodesUpdater/recordNodesDependentsUpdaterCommons.js.map +1 -1
  306. package/dist/esm/record/recordNodesUpdater/recordNodesUpdater.js +16 -2
  307. package/dist/esm/record/recordNodesUpdater/recordNodesUpdater.js.map +1 -1
  308. package/dist/esm/record/recordNodesUpdater/recordUpdateResult.js +8 -0
  309. package/dist/esm/record/recordNodesUpdater/recordUpdateResult.js.map +1 -1
  310. package/dist/esm/record/recordPrettyPrinter.js.map +1 -1
  311. package/dist/esm/record/recordStep.js.map +1 -1
  312. package/dist/esm/record/recordUpdater.js +1 -0
  313. package/dist/esm/record/recordUpdater.js.map +1 -1
  314. package/dist/esm/record/recordValidations.js.map +1 -1
  315. package/dist/esm/record/recordValidator/attributeKeyValidator.js +3 -0
  316. package/dist/esm/record/recordValidator/attributeKeyValidator.js.map +1 -1
  317. package/dist/esm/record/recordValidator/attributeTypeValidator.js +3 -0
  318. package/dist/esm/record/recordValidator/attributeTypeValidator.js.map +1 -1
  319. package/dist/esm/record/recordValidator/attributeUniqueValidator.js +2 -0
  320. package/dist/esm/record/recordValidator/attributeUniqueValidator.js.map +1 -1
  321. package/dist/esm/record/recordValidator/attributeValidator.js +12 -1
  322. package/dist/esm/record/recordValidator/attributeValidator.js.map +1 -1
  323. package/dist/esm/record/recordValidator/countVaildator.js +5 -0
  324. package/dist/esm/record/recordValidator/countVaildator.js.map +1 -1
  325. package/dist/esm/record/recordValidator/index.js.map +1 -1
  326. package/dist/esm/record/recordValidator/recordValidator.js +3 -0
  327. package/dist/esm/record/recordValidator/recordValidator.js.map +1 -1
  328. package/dist/esm/record/records.js +3 -0
  329. package/dist/esm/record/records.js.map +1 -1
  330. package/dist/esm/record/service.js.map +1 -1
  331. package/dist/esm/registry/index.js.map +1 -1
  332. package/dist/esm/registry/serviceRegistry.js.map +1 -1
  333. package/dist/esm/registry/serviceType.js.map +1 -1
  334. package/dist/esm/srs/factory.js.map +1 -1
  335. package/dist/esm/srs/index.js.map +1 -1
  336. package/dist/esm/srs/srs.js.map +1 -1
  337. package/dist/esm/survey/factory.js +1 -0
  338. package/dist/esm/survey/factory.js.map +1 -1
  339. package/dist/esm/survey/index.js.map +1 -1
  340. package/dist/esm/survey/nodeDefsFixer.js +1 -0
  341. package/dist/esm/survey/nodeDefsFixer.js.map +1 -1
  342. package/dist/esm/survey/refData/factory.js.map +1 -1
  343. package/dist/esm/survey/refData/index.js.map +1 -1
  344. package/dist/esm/survey/refData/refData.js.map +1 -1
  345. package/dist/esm/survey/service.js.map +1 -1
  346. package/dist/esm/survey/survey.js.map +1 -1
  347. package/dist/esm/survey/surveyDocImageFactory.js.map +1 -1
  348. package/dist/esm/survey/surveyDocImages.js.map +1 -1
  349. package/dist/esm/survey/surveyFileFactory.js.map +1 -1
  350. package/dist/esm/survey/surveys/_nodeDefs/nodeDefsIndex.js +8 -0
  351. package/dist/esm/survey/surveys/_nodeDefs/nodeDefsIndex.js.map +1 -1
  352. package/dist/esm/survey/surveys/_nodeDefs/nodeDefsReader.js.map +1 -1
  353. package/dist/esm/survey/surveys/dependencies.js +11 -2
  354. package/dist/esm/survey/surveys/dependencies.js.map +1 -1
  355. package/dist/esm/survey/surveys/index.js +6 -0
  356. package/dist/esm/survey/surveys/index.js.map +1 -1
  357. package/dist/esm/survey/surveys/nodeDefs.js +12 -0
  358. package/dist/esm/survey/surveys/nodeDefs.js.map +1 -1
  359. package/dist/esm/survey/surveys/refsData.js.map +1 -1
  360. package/dist/esm/survey/surveys/surveyGettersSecurity.js.map +1 -1
  361. package/dist/esm/survey/surveys/surveysGetters.js +3 -1
  362. package/dist/esm/survey/surveys/surveysGetters.js.map +1 -1
  363. package/dist/esm/survey/surveys/surveysUtils.js.map +1 -1
  364. package/dist/esm/taxonomy/factory.js.map +1 -1
  365. package/dist/esm/taxonomy/index.js.map +1 -1
  366. package/dist/esm/taxonomy/service.js.map +1 -1
  367. package/dist/esm/taxonomy/taxa.js.map +1 -1
  368. package/dist/esm/taxonomy/taxon.js.map +1 -1
  369. package/dist/esm/taxonomy/taxonGenerator.js.map +1 -1
  370. package/dist/esm/taxonomy/taxonService.js.map +1 -1
  371. package/dist/esm/taxonomy/taxonVernacularName.js.map +1 -1
  372. package/dist/esm/taxonomy/taxonomies.js.map +1 -1
  373. package/dist/esm/taxonomy/taxonomy.js.map +1 -1
  374. package/dist/esm/tests/builder/recordBuilder/attributeBuilder.js +2 -0
  375. package/dist/esm/tests/builder/recordBuilder/attributeBuilder.js.map +1 -1
  376. package/dist/esm/tests/builder/recordBuilder/entityBuilder.js.map +1 -1
  377. package/dist/esm/tests/builder/recordBuilder/index.js.map +1 -1
  378. package/dist/esm/tests/builder/recordBuilder/nodeBuilder.js.map +1 -1
  379. package/dist/esm/tests/builder/recordBuilder/recordBuilder.js.map +1 -1
  380. package/dist/esm/tests/builder/surveyBuilder/categoryBuilder.js.map +1 -1
  381. package/dist/esm/tests/builder/surveyBuilder/categoryItemBuilder.js.map +1 -1
  382. package/dist/esm/tests/builder/surveyBuilder/index.js.map +1 -1
  383. package/dist/esm/tests/builder/surveyBuilder/nodeDefAttributeBuilder.js.map +1 -1
  384. package/dist/esm/tests/builder/surveyBuilder/nodeDefBuilder.js.map +1 -1
  385. package/dist/esm/tests/builder/surveyBuilder/nodeDefCodeBuilder.js.map +1 -1
  386. package/dist/esm/tests/builder/surveyBuilder/nodeDefEntityBuilder.js.map +1 -1
  387. package/dist/esm/tests/builder/surveyBuilder/nodeDefTaxonBuilder.js.map +1 -1
  388. package/dist/esm/tests/builder/surveyBuilder/surveyBuilder.js.map +1 -1
  389. package/dist/esm/tests/builder/surveyBuilder/taxonBuilder.js.map +1 -1
  390. package/dist/esm/tests/builder/surveyBuilder/taxonomyBuilder.js.map +1 -1
  391. package/dist/esm/utils/_objects/assoc.js.map +1 -1
  392. package/dist/esm/utils/_objects/assocPath.js +1 -0
  393. package/dist/esm/utils/_objects/assocPath.js.map +1 -1
  394. package/dist/esm/utils/_objects/camelize.js +9 -0
  395. package/dist/esm/utils/_objects/camelize.js.map +1 -1
  396. package/dist/esm/utils/_objects/deepMerge.js +10 -0
  397. package/dist/esm/utils/_objects/deepMerge.js.map +1 -1
  398. package/dist/esm/utils/_objects/deleteEmptyProps.js.map +1 -1
  399. package/dist/esm/utils/_objects/difference.js.map +1 -1
  400. package/dist/esm/utils/_objects/dissoc.js.map +1 -1
  401. package/dist/esm/utils/_objects/dissocPath.js +1 -0
  402. package/dist/esm/utils/_objects/dissocPath.js.map +1 -1
  403. package/dist/esm/utils/_objects/dissocPathIfEmpty.js.map +1 -1
  404. package/dist/esm/utils/_objects/fromPairs.js.map +1 -1
  405. package/dist/esm/utils/_objects/index.js.map +1 -1
  406. package/dist/esm/utils/_objects/isEmpty.js +8 -0
  407. package/dist/esm/utils/_objects/isEmpty.js.map +1 -1
  408. package/dist/esm/utils/_objects/isEqual.js.map +1 -1
  409. package/dist/esm/utils/_objects/isNil.js +6 -0
  410. package/dist/esm/utils/_objects/isNil.js.map +1 -1
  411. package/dist/esm/utils/_objects/isNotEmpty.js +6 -0
  412. package/dist/esm/utils/_objects/isNotEmpty.js.map +1 -1
  413. package/dist/esm/utils/_objects/parse.js +8 -0
  414. package/dist/esm/utils/_objects/parse.js.map +1 -1
  415. package/dist/esm/utils/_objects/path.js +7 -0
  416. package/dist/esm/utils/_objects/path.js.map +1 -1
  417. package/dist/esm/utils/_objects/propertyOf.js.map +1 -1
  418. package/dist/esm/utils/_objects/setInPath.js.map +1 -1
  419. package/dist/esm/utils/_objects/stringify.js +9 -0
  420. package/dist/esm/utils/_objects/stringify.js.map +1 -1
  421. package/dist/esm/utils/_objects/toPairs.js.map +1 -1
  422. package/dist/esm/utils/arrays.js.map +1 -1
  423. package/dist/esm/utils/dates.js +22 -0
  424. package/dist/esm/utils/dates.js.map +1 -1
  425. package/dist/esm/utils/fileNames.js.map +1 -1
  426. package/dist/esm/utils/fileProcessor.js +5 -1
  427. package/dist/esm/utils/fileProcessor.js.map +1 -1
  428. package/dist/esm/utils/index.js.map +1 -1
  429. package/dist/esm/utils/numbers.js +21 -0
  430. package/dist/esm/utils/numbers.js.map +1 -1
  431. package/dist/esm/utils/promises.js +15 -1
  432. package/dist/esm/utils/promises.js.map +1 -1
  433. package/dist/esm/utils/queue.js +9 -0
  434. package/dist/esm/utils/queue.js.map +1 -1
  435. package/dist/esm/utils/retryProcessor.js +5 -1
  436. package/dist/esm/utils/retryProcessor.js.map +1 -1
  437. package/dist/esm/utils/strings.js.map +1 -1
  438. package/dist/esm/utils/uuids.js.map +1 -1
  439. package/dist/esm/utils/versions.js +4 -0
  440. package/dist/esm/utils/versions.js.map +1 -1
  441. package/dist/esm/validation/factory.js.map +1 -1
  442. package/dist/esm/validation/fieldValidator.js.map +1 -1
  443. package/dist/esm/validation/fieldValidators/email.js +3 -0
  444. package/dist/esm/validation/fieldValidators/email.js.map +1 -1
  445. package/dist/esm/validation/fieldValidators/index.js.map +1 -1
  446. package/dist/esm/validation/fieldValidators/name.js +4 -0
  447. package/dist/esm/validation/fieldValidators/name.js.map +1 -1
  448. package/dist/esm/validation/fieldValidators/notKeyword.js.map +1 -1
  449. package/dist/esm/validation/fieldValidators/numeric.js.map +1 -1
  450. package/dist/esm/validation/fieldValidators/numericPositive.js.map +1 -1
  451. package/dist/esm/validation/fieldValidators/required.js.map +1 -1
  452. package/dist/esm/validation/index.js.map +1 -1
  453. package/dist/esm/validation/validation.js.map +1 -1
  454. package/dist/esm/validation/validationResults.js +1 -1
  455. package/dist/esm/validation/validationResults.js.map +1 -1
  456. package/dist/esm/validation/validations.js +17 -1
  457. package/dist/esm/validation/validations.js.map +1 -1
  458. package/dist/esm/validation/validator.js.map +1 -1
  459. package/dist/esm/validation/validatorErrorKeys.js.map +1 -1
  460. package/dist/expression/context.d.ts +6 -0
  461. package/dist/expression/context.js.map +1 -1
  462. package/dist/expression/evaluator.js.map +1 -1
  463. package/dist/expression/function.d.ts +13 -0
  464. package/dist/expression/function.js.map +1 -1
  465. package/dist/expression/index.js.map +1 -1
  466. package/dist/expression/javascript/evaluator.d.ts +1 -0
  467. package/dist/expression/javascript/evaluator.js +6 -2
  468. package/dist/expression/javascript/evaluator.js.map +1 -1
  469. package/dist/expression/javascript/functionsDefault.js.map +1 -1
  470. package/dist/expression/javascript/global.js.map +1 -1
  471. package/dist/expression/javascript/node/array.js.map +1 -1
  472. package/dist/expression/javascript/node/binary.js +23 -0
  473. package/dist/expression/javascript/node/binary.js.map +1 -1
  474. package/dist/expression/javascript/node/call.js +12 -0
  475. package/dist/expression/javascript/node/call.js.map +1 -1
  476. package/dist/expression/javascript/node/compound.js.map +1 -1
  477. package/dist/expression/javascript/node/conditional.js.map +1 -1
  478. package/dist/expression/javascript/node/identifier.d.ts +7 -0
  479. package/dist/expression/javascript/node/identifier.js +7 -0
  480. package/dist/expression/javascript/node/identifier.js.map +1 -1
  481. package/dist/expression/javascript/node/literal.js.map +1 -1
  482. package/dist/expression/javascript/node/member.js +5 -1
  483. package/dist/expression/javascript/node/member.js.map +1 -1
  484. package/dist/expression/javascript/node/sequence.js.map +1 -1
  485. package/dist/expression/javascript/node/this.js.map +1 -1
  486. package/dist/expression/javascript/node/unary.js +8 -0
  487. package/dist/expression/javascript/node/unary.js.map +1 -1
  488. package/dist/expression/javascript/parser/jsep.js +6 -2
  489. package/dist/expression/javascript/parser/jsep.js.map +1 -1
  490. package/dist/expression/javascript/parser/parser.js.map +1 -1
  491. package/dist/expression/node.js.map +1 -1
  492. package/dist/expression/parser.js.map +1 -1
  493. package/dist/expression/variable.js.map +1 -1
  494. package/dist/extraProp/extraProp.js.map +1 -1
  495. package/dist/extraProp/extraProps.js.map +1 -1
  496. package/dist/extraProp/extraPropsDataGenerator.js.map +1 -1
  497. package/dist/extraProp/index.js.map +1 -1
  498. package/dist/geo/index.js.map +1 -1
  499. package/dist/geo/point.js.map +1 -1
  500. package/dist/geo/pointFactory.js.map +1 -1
  501. package/dist/geo/points/bearing.d.ts +9 -0
  502. package/dist/geo/points/bearing.js +11 -0
  503. package/dist/geo/points/bearing.js.map +1 -1
  504. package/dist/geo/points/distance.d.ts +8 -0
  505. package/dist/geo/points/distance.js +9 -0
  506. package/dist/geo/points/distance.js.map +1 -1
  507. package/dist/geo/points/equals.js.map +1 -1
  508. package/dist/geo/points/getSrs.js.map +1 -1
  509. package/dist/geo/points/index.js.map +1 -1
  510. package/dist/geo/points/isFilled.js.map +1 -1
  511. package/dist/geo/points/isValid.js +1 -1
  512. package/dist/geo/points/isValid.js.map +1 -1
  513. package/dist/geo/points/parse.d.ts +9 -0
  514. package/dist/geo/points/parse.js +9 -0
  515. package/dist/geo/points/parse.js.map +1 -1
  516. package/dist/geo/points/pointAtDistance.d.ts +9 -0
  517. package/dist/geo/points/pointAtDistance.js +10 -0
  518. package/dist/geo/points/pointAtDistance.js.map +1 -1
  519. package/dist/geo/points/toLatLong.js.map +1 -1
  520. package/dist/geo/points/toString.js.map +1 -1
  521. package/dist/geo/points/transform.d.ts +8 -0
  522. package/dist/geo/points/transform.js +12 -0
  523. package/dist/geo/points/transform.js.map +1 -1
  524. package/dist/index.js.map +1 -1
  525. package/dist/job/JobBase.d.ts +81 -0
  526. package/dist/job/JobBase.js +99 -0
  527. package/dist/job/JobBase.js.map +1 -1
  528. package/dist/job/index.js.map +1 -1
  529. package/dist/job/job.d.ts +20 -0
  530. package/dist/job/job.js.map +1 -1
  531. package/dist/job/jobContext.js.map +1 -1
  532. package/dist/job/jobEvent.js.map +1 -1
  533. package/dist/job/jobSerialized.d.ts +3 -0
  534. package/dist/job/jobSerialized.js.map +1 -1
  535. package/dist/job/status.js.map +1 -1
  536. package/dist/language/index.js.map +1 -1
  537. package/dist/language/labels.js.map +1 -1
  538. package/dist/language/languageCode.js.map +1 -1
  539. package/dist/language/languages.js.map +1 -1
  540. package/dist/logger/index.js.map +1 -1
  541. package/dist/logger/logger.js.map +1 -1
  542. package/dist/message/index.js.map +1 -1
  543. package/dist/message/message.d.ts +3 -0
  544. package/dist/message/message.js.map +1 -1
  545. package/dist/message/messages.js +1 -0
  546. package/dist/message/messages.js.map +1 -1
  547. package/dist/node/factory.js.map +1 -1
  548. package/dist/node/index.js.map +1 -1
  549. package/dist/node/node.d.ts +38 -0
  550. package/dist/node/node.js.map +1 -1
  551. package/dist/node/nodePointer.js.map +1 -1
  552. package/dist/node/nodeValue/code.js.map +1 -1
  553. package/dist/node/nodeValue/coordinate.js.map +1 -1
  554. package/dist/node/nodeValue/file.js.map +1 -1
  555. package/dist/node/nodeValue/index.js.map +1 -1
  556. package/dist/node/nodeValue/nodeValueComposite.js.map +1 -1
  557. package/dist/node/nodeValue/taxon.js.map +1 -1
  558. package/dist/node/nodeValueFormatter.js +2 -0
  559. package/dist/node/nodeValueFormatter.js.map +1 -1
  560. package/dist/node/nodeValueProps.js.map +1 -1
  561. package/dist/node/nodeValues.d.ts +4 -0
  562. package/dist/node/nodeValues.js +20 -0
  563. package/dist/node/nodeValues.js.map +1 -1
  564. package/dist/node/nodes.js +7 -0
  565. package/dist/node/nodes.js.map +1 -1
  566. package/dist/node/service.js.map +1 -1
  567. package/dist/nodeDef/factory.js.map +1 -1
  568. package/dist/nodeDef/index.js.map +1 -1
  569. package/dist/nodeDef/nodeDef.js +1 -0
  570. package/dist/nodeDef/nodeDef.js.map +1 -1
  571. package/dist/nodeDef/nodeDefs.js +18 -0
  572. package/dist/nodeDef/nodeDefs.js.map +1 -1
  573. package/dist/nodeDef/service.js.map +1 -1
  574. package/dist/nodeDef/types/boolean.js.map +1 -1
  575. package/dist/nodeDef/types/code.js.map +1 -1
  576. package/dist/nodeDef/types/coordinate.js.map +1 -1
  577. package/dist/nodeDef/types/date.js.map +1 -1
  578. package/dist/nodeDef/types/decimal.js.map +1 -1
  579. package/dist/nodeDef/types/entity.d.ts +1 -0
  580. package/dist/nodeDef/types/entity.js.map +1 -1
  581. package/dist/nodeDef/types/file.js.map +1 -1
  582. package/dist/nodeDef/types/formHeader.js.map +1 -1
  583. package/dist/nodeDef/types/integer.js.map +1 -1
  584. package/dist/nodeDef/types/taxon.js.map +1 -1
  585. package/dist/nodeDef/types/text.js.map +1 -1
  586. package/dist/nodeDef/types/time.js.map +1 -1
  587. package/dist/nodeDefExpressionEvaluator/categoryItemProvider.js.map +1 -1
  588. package/dist/nodeDefExpressionEvaluator/context.d.ts +3 -0
  589. package/dist/nodeDefExpressionEvaluator/context.js.map +1 -1
  590. package/dist/nodeDefExpressionEvaluator/evaluator.js.map +1 -1
  591. package/dist/nodeDefExpressionEvaluator/functions.js +8 -1
  592. package/dist/nodeDefExpressionEvaluator/functions.js.map +1 -1
  593. package/dist/nodeDefExpressionEvaluator/index.js.map +1 -1
  594. package/dist/nodeDefExpressionEvaluator/node/identifier.d.ts +14 -0
  595. package/dist/nodeDefExpressionEvaluator/node/identifier.js +28 -0
  596. package/dist/nodeDefExpressionEvaluator/node/identifier.js.map +1 -1
  597. package/dist/nodeDefExpressionEvaluator/node/member.js +15 -0
  598. package/dist/nodeDefExpressionEvaluator/node/member.js.map +1 -1
  599. package/dist/nodeDefExpressionEvaluator/node/nodeDefExpressionNativeProperties.js +3 -0
  600. package/dist/nodeDefExpressionEvaluator/node/nodeDefExpressionNativeProperties.js.map +1 -1
  601. package/dist/nodeDefExpressionEvaluator/node/thisEvaluator.js.map +1 -1
  602. package/dist/nodeDefExpressionEvaluator/taxonProvider.js.map +1 -1
  603. package/dist/nodeDefExpressionEvaluator/validator.js.map +1 -1
  604. package/dist/record/_records/nodeDefSelfReferences.d.ts +8 -0
  605. package/dist/record/_records/nodeDefSelfReferences.js +60 -0
  606. package/dist/record/_records/nodeDefSelfReferences.js.map +1 -0
  607. package/dist/record/_records/recordCompletion.d.ts +12 -0
  608. package/dist/record/_records/recordCompletion.js +14 -0
  609. package/dist/record/_records/recordCompletion.js.map +1 -1
  610. package/dist/record/_records/recordGetters.d.ts +3 -0
  611. package/dist/record/_records/recordGetters.js +26 -5
  612. package/dist/record/_records/recordGetters.js.map +1 -1
  613. package/dist/record/_records/recordNodesIndexReader.js.map +1 -1
  614. package/dist/record/_records/recordNodesIndexUpdater.js +17 -0
  615. package/dist/record/_records/recordNodesIndexUpdater.js.map +1 -1
  616. package/dist/record/_records/recordPagesValidation.d.ts +39 -0
  617. package/dist/record/_records/recordPagesValidation.js +45 -0
  618. package/dist/record/_records/recordPagesValidation.js.map +1 -1
  619. package/dist/record/_records/recordUpdateOptions.js.map +1 -1
  620. package/dist/record/_records/recordUpdater.js +2 -0
  621. package/dist/record/_records/recordUpdater.js.map +1 -1
  622. package/dist/record/_records/recordUtils.js.map +1 -1
  623. package/dist/record/factory.js.map +1 -1
  624. package/dist/record/index.js.map +1 -1
  625. package/dist/record/nodePointers.js.map +1 -1
  626. package/dist/record/record.d.ts +12 -0
  627. package/dist/record/record.js.map +1 -1
  628. package/dist/record/recordCloner.js +10 -1
  629. package/dist/record/recordCloner.js.map +1 -1
  630. package/dist/record/recordExpressionEvaluator/context.js.map +1 -1
  631. package/dist/record/recordExpressionEvaluator/functions.js.map +1 -1
  632. package/dist/record/recordExpressionEvaluator/index.js.map +1 -1
  633. package/dist/record/recordExpressionEvaluator/node/identifier/identifier.js +14 -0
  634. package/dist/record/recordExpressionEvaluator/node/identifier/identifier.js.map +1 -1
  635. package/dist/record/recordExpressionEvaluator/node/identifier/index.js.map +1 -1
  636. package/dist/record/recordExpressionEvaluator/node/identifier/nodesFinder.js +6 -0
  637. package/dist/record/recordExpressionEvaluator/node/identifier/nodesFinder.js.map +1 -1
  638. package/dist/record/recordExpressionEvaluator/node/thisEvaluator.js.map +1 -1
  639. package/dist/record/recordExpressionEvaluator/nodeValueExtractor.js.map +1 -1
  640. package/dist/record/recordExpressionEvaluator/recordExpressionEvaluator.js.map +1 -1
  641. package/dist/record/recordFixer.js +16 -0
  642. package/dist/record/recordFixer.js.map +1 -1
  643. package/dist/record/recordNodesUpdater/index.js.map +1 -1
  644. package/dist/record/recordNodesUpdater/recordEnumeratingItemsExpressionEvaluator.d.ts +6 -0
  645. package/dist/record/recordNodesUpdater/recordEnumeratingItemsExpressionEvaluator.js +6 -0
  646. package/dist/record/recordNodesUpdater/recordEnumeratingItemsExpressionEvaluator.js.map +1 -1
  647. package/dist/record/recordNodesUpdater/recordExpressionEvaluationContext.js.map +1 -1
  648. package/dist/record/recordNodesUpdater/recordExpressionValueConverter.js +5 -0
  649. package/dist/record/recordNodesUpdater/recordExpressionValueConverter.js.map +1 -1
  650. package/dist/record/recordNodesUpdater/recordNodeDependentsApplicableUpdater.js +20 -2
  651. package/dist/record/recordNodesUpdater/recordNodeDependentsApplicableUpdater.js.map +1 -1
  652. package/dist/record/recordNodesUpdater/recordNodeDependentsBooleanUpdater.js +2 -1
  653. package/dist/record/recordNodesUpdater/recordNodeDependentsBooleanUpdater.js.map +1 -1
  654. package/dist/record/recordNodesUpdater/recordNodeDependentsCodeAttributesUpdater.js +13 -1
  655. package/dist/record/recordNodesUpdater/recordNodeDependentsCodeAttributesUpdater.js.map +1 -1
  656. package/dist/record/recordNodesUpdater/recordNodeDependentsCountUpdater.js +9 -1
  657. package/dist/record/recordNodesUpdater/recordNodeDependentsCountUpdater.js.map +1 -1
  658. package/dist/record/recordNodesUpdater/recordNodeDependentsDefaultValuesUpdater.js +17 -1
  659. package/dist/record/recordNodesUpdater/recordNodeDependentsDefaultValuesUpdater.js.map +1 -1
  660. package/dist/record/recordNodesUpdater/recordNodeDependentsEditableUpdater.js.map +1 -1
  661. package/dist/record/recordNodesUpdater/recordNodeDependentsEnumeratedEntitiesUpdater.js +5 -1
  662. package/dist/record/recordNodesUpdater/recordNodeDependentsEnumeratedEntitiesUpdater.js.map +1 -1
  663. package/dist/record/recordNodesUpdater/recordNodeDependentsEnumeratingItemsUpdater.js +4 -2
  664. package/dist/record/recordNodesUpdater/recordNodeDependentsEnumeratingItemsUpdater.js.map +1 -1
  665. package/dist/record/recordNodesUpdater/recordNodeDependentsFileNamesEvaluator.js +8 -3
  666. package/dist/record/recordNodesUpdater/recordNodeDependentsFileNamesEvaluator.js.map +1 -1
  667. package/dist/record/recordNodesUpdater/recordNodeDependentsUpdateParams.js.map +1 -1
  668. package/dist/record/recordNodesUpdater/recordNodeDependentsVisibleUpdater.js.map +1 -1
  669. package/dist/record/recordNodesUpdater/recordNodesCreator.js +10 -5
  670. package/dist/record/recordNodesUpdater/recordNodesCreator.js.map +1 -1
  671. package/dist/record/recordNodesUpdater/recordNodesDeleter.js +7 -0
  672. package/dist/record/recordNodesUpdater/recordNodesDeleter.js.map +1 -1
  673. package/dist/record/recordNodesUpdater/recordNodesDependentsUpdaterCommons.js +2 -0
  674. package/dist/record/recordNodesUpdater/recordNodesDependentsUpdaterCommons.js.map +1 -1
  675. package/dist/record/recordNodesUpdater/recordNodesUpdater.js +16 -2
  676. package/dist/record/recordNodesUpdater/recordNodesUpdater.js.map +1 -1
  677. package/dist/record/recordNodesUpdater/recordUpdateResult.d.ts +8 -0
  678. package/dist/record/recordNodesUpdater/recordUpdateResult.js +8 -0
  679. package/dist/record/recordNodesUpdater/recordUpdateResult.js.map +1 -1
  680. package/dist/record/recordPrettyPrinter.js.map +1 -1
  681. package/dist/record/recordStep.js.map +1 -1
  682. package/dist/record/recordUpdater.js +1 -0
  683. package/dist/record/recordUpdater.js.map +1 -1
  684. package/dist/record/recordValidations.js.map +1 -1
  685. package/dist/record/recordValidator/attributeKeyValidator.d.ts +4 -0
  686. package/dist/record/recordValidator/attributeKeyValidator.js +3 -0
  687. package/dist/record/recordValidator/attributeKeyValidator.js.map +1 -1
  688. package/dist/record/recordValidator/attributeTypeValidator.js +3 -0
  689. package/dist/record/recordValidator/attributeTypeValidator.js.map +1 -1
  690. package/dist/record/recordValidator/attributeUniqueValidator.js +2 -0
  691. package/dist/record/recordValidator/attributeUniqueValidator.js.map +1 -1
  692. package/dist/record/recordValidator/attributeValidator.js +12 -1
  693. package/dist/record/recordValidator/attributeValidator.js.map +1 -1
  694. package/dist/record/recordValidator/countVaildator.js +5 -0
  695. package/dist/record/recordValidator/countVaildator.js.map +1 -1
  696. package/dist/record/recordValidator/index.js.map +1 -1
  697. package/dist/record/recordValidator/recordValidator.js +3 -0
  698. package/dist/record/recordValidator/recordValidator.js.map +1 -1
  699. package/dist/record/records.js +3 -0
  700. package/dist/record/records.js.map +1 -1
  701. package/dist/record/service.js.map +1 -1
  702. package/dist/registry/index.js.map +1 -1
  703. package/dist/registry/serviceRegistry.js.map +1 -1
  704. package/dist/registry/serviceType.js.map +1 -1
  705. package/dist/srs/factory.js.map +1 -1
  706. package/dist/srs/index.js.map +1 -1
  707. package/dist/srs/srs.js.map +1 -1
  708. package/dist/survey/factory.js +1 -0
  709. package/dist/survey/factory.js.map +1 -1
  710. package/dist/survey/index.js.map +1 -1
  711. package/dist/survey/nodeDefsFixer.js +1 -0
  712. package/dist/survey/nodeDefsFixer.js.map +1 -1
  713. package/dist/survey/refData/factory.js.map +1 -1
  714. package/dist/survey/refData/index.js.map +1 -1
  715. package/dist/survey/refData/refData.d.ts +15 -0
  716. package/dist/survey/refData/refData.js.map +1 -1
  717. package/dist/survey/service.js.map +1 -1
  718. package/dist/survey/survey.d.ts +9 -0
  719. package/dist/survey/survey.js.map +1 -1
  720. package/dist/survey/surveyDocImageFactory.js.map +1 -1
  721. package/dist/survey/surveyDocImages.js.map +1 -1
  722. package/dist/survey/surveyFileFactory.js.map +1 -1
  723. package/dist/survey/surveys/_nodeDefs/nodeDefsIndex.js +8 -0
  724. package/dist/survey/surveys/_nodeDefs/nodeDefsIndex.js.map +1 -1
  725. package/dist/survey/surveys/_nodeDefs/nodeDefsReader.js.map +1 -1
  726. package/dist/survey/surveys/dependencies.js +11 -2
  727. package/dist/survey/surveys/dependencies.js.map +1 -1
  728. package/dist/survey/surveys/index.js +6 -0
  729. package/dist/survey/surveys/index.js.map +1 -1
  730. package/dist/survey/surveys/nodeDefs.js +12 -0
  731. package/dist/survey/surveys/nodeDefs.js.map +1 -1
  732. package/dist/survey/surveys/refsData.js.map +1 -1
  733. package/dist/survey/surveys/surveyGettersSecurity.js.map +1 -1
  734. package/dist/survey/surveys/surveysGetters.js +3 -1
  735. package/dist/survey/surveys/surveysGetters.js.map +1 -1
  736. package/dist/survey/surveys/surveysUtils.js.map +1 -1
  737. package/dist/taxonomy/factory.js.map +1 -1
  738. package/dist/taxonomy/index.js.map +1 -1
  739. package/dist/taxonomy/service.js.map +1 -1
  740. package/dist/taxonomy/taxa.js.map +1 -1
  741. package/dist/taxonomy/taxon.js.map +1 -1
  742. package/dist/taxonomy/taxonGenerator.js.map +1 -1
  743. package/dist/taxonomy/taxonService.js.map +1 -1
  744. package/dist/taxonomy/taxonVernacularName.js.map +1 -1
  745. package/dist/taxonomy/taxonomies.js.map +1 -1
  746. package/dist/taxonomy/taxonomy.js.map +1 -1
  747. package/dist/tests/builder/recordBuilder/attributeBuilder.js +2 -0
  748. package/dist/tests/builder/recordBuilder/attributeBuilder.js.map +1 -1
  749. package/dist/tests/builder/recordBuilder/entityBuilder.js.map +1 -1
  750. package/dist/tests/builder/recordBuilder/index.js.map +1 -1
  751. package/dist/tests/builder/recordBuilder/nodeBuilder.js.map +1 -1
  752. package/dist/tests/builder/recordBuilder/recordBuilder.js.map +1 -1
  753. package/dist/tests/builder/surveyBuilder/categoryBuilder.js.map +1 -1
  754. package/dist/tests/builder/surveyBuilder/categoryItemBuilder.js.map +1 -1
  755. package/dist/tests/builder/surveyBuilder/index.js.map +1 -1
  756. package/dist/tests/builder/surveyBuilder/nodeDefAttributeBuilder.js.map +1 -1
  757. package/dist/tests/builder/surveyBuilder/nodeDefBuilder.js.map +1 -1
  758. package/dist/tests/builder/surveyBuilder/nodeDefCodeBuilder.js.map +1 -1
  759. package/dist/tests/builder/surveyBuilder/nodeDefEntityBuilder.js.map +1 -1
  760. package/dist/tests/builder/surveyBuilder/nodeDefTaxonBuilder.js.map +1 -1
  761. package/dist/tests/builder/surveyBuilder/surveyBuilder.js.map +1 -1
  762. package/dist/tests/builder/surveyBuilder/taxonBuilder.js.map +1 -1
  763. package/dist/tests/builder/surveyBuilder/taxonomyBuilder.js.map +1 -1
  764. package/dist/utils/_objects/assoc.js.map +1 -1
  765. package/dist/utils/_objects/assocPath.js +1 -0
  766. package/dist/utils/_objects/assocPath.js.map +1 -1
  767. package/dist/utils/_objects/camelize.d.ts +9 -0
  768. package/dist/utils/_objects/camelize.js +9 -0
  769. package/dist/utils/_objects/camelize.js.map +1 -1
  770. package/dist/utils/_objects/deepMerge.d.ts +5 -0
  771. package/dist/utils/_objects/deepMerge.js +10 -0
  772. package/dist/utils/_objects/deepMerge.js.map +1 -1
  773. package/dist/utils/_objects/deleteEmptyProps.js.map +1 -1
  774. package/dist/utils/_objects/difference.js.map +1 -1
  775. package/dist/utils/_objects/dissoc.js.map +1 -1
  776. package/dist/utils/_objects/dissocPath.js +1 -0
  777. package/dist/utils/_objects/dissocPath.js.map +1 -1
  778. package/dist/utils/_objects/dissocPathIfEmpty.js.map +1 -1
  779. package/dist/utils/_objects/fromPairs.js.map +1 -1
  780. package/dist/utils/_objects/index.js.map +1 -1
  781. package/dist/utils/_objects/isEmpty.d.ts +6 -0
  782. package/dist/utils/_objects/isEmpty.js +8 -0
  783. package/dist/utils/_objects/isEmpty.js.map +1 -1
  784. package/dist/utils/_objects/isEqual.js.map +1 -1
  785. package/dist/utils/_objects/isNil.d.ts +6 -0
  786. package/dist/utils/_objects/isNil.js +6 -0
  787. package/dist/utils/_objects/isNil.js.map +1 -1
  788. package/dist/utils/_objects/isNotEmpty.d.ts +6 -0
  789. package/dist/utils/_objects/isNotEmpty.js +6 -0
  790. package/dist/utils/_objects/isNotEmpty.js.map +1 -1
  791. package/dist/utils/_objects/parse.d.ts +8 -0
  792. package/dist/utils/_objects/parse.js +8 -0
  793. package/dist/utils/_objects/parse.js.map +1 -1
  794. package/dist/utils/_objects/path.d.ts +6 -0
  795. package/dist/utils/_objects/path.js +7 -0
  796. package/dist/utils/_objects/path.js.map +1 -1
  797. package/dist/utils/_objects/propertyOf.js.map +1 -1
  798. package/dist/utils/_objects/setInPath.js.map +1 -1
  799. package/dist/utils/_objects/stringify.d.ts +9 -0
  800. package/dist/utils/_objects/stringify.js +9 -0
  801. package/dist/utils/_objects/stringify.js.map +1 -1
  802. package/dist/utils/_objects/toPairs.js.map +1 -1
  803. package/dist/utils/arrays.js.map +1 -1
  804. package/dist/utils/dates.d.ts +1 -1
  805. package/dist/utils/dates.js +22 -0
  806. package/dist/utils/dates.js.map +1 -1
  807. package/dist/utils/fileNames.js.map +1 -1
  808. package/dist/utils/fileProcessor.js +5 -1
  809. package/dist/utils/fileProcessor.js.map +1 -1
  810. package/dist/utils/index.js.map +1 -1
  811. package/dist/utils/numbers.js +21 -0
  812. package/dist/utils/numbers.js.map +1 -1
  813. package/dist/utils/promises.js +15 -1
  814. package/dist/utils/promises.js.map +1 -1
  815. package/dist/utils/queue.d.ts +7 -0
  816. package/dist/utils/queue.js +9 -0
  817. package/dist/utils/queue.js.map +1 -1
  818. package/dist/utils/retryProcessor.js +5 -1
  819. package/dist/utils/retryProcessor.js.map +1 -1
  820. package/dist/utils/strings.js.map +1 -1
  821. package/dist/utils/uuids.js.map +1 -1
  822. package/dist/utils/versions.js +4 -0
  823. package/dist/utils/versions.js.map +1 -1
  824. package/dist/validation/factory.js.map +1 -1
  825. package/dist/validation/fieldValidator.js.map +1 -1
  826. package/dist/validation/fieldValidators/email.js +3 -0
  827. package/dist/validation/fieldValidators/email.js.map +1 -1
  828. package/dist/validation/fieldValidators/index.js.map +1 -1
  829. package/dist/validation/fieldValidators/name.js +4 -0
  830. package/dist/validation/fieldValidators/name.js.map +1 -1
  831. package/dist/validation/fieldValidators/notKeyword.js.map +1 -1
  832. package/dist/validation/fieldValidators/numeric.js.map +1 -1
  833. package/dist/validation/fieldValidators/numericPositive.js.map +1 -1
  834. package/dist/validation/fieldValidators/required.js.map +1 -1
  835. package/dist/validation/index.js.map +1 -1
  836. package/dist/validation/validation.js.map +1 -1
  837. package/dist/validation/validationResults.js +1 -1
  838. package/dist/validation/validationResults.js.map +1 -1
  839. package/dist/validation/validations.js +17 -1
  840. package/dist/validation/validations.js.map +1 -1
  841. package/dist/validation/validator.js.map +1 -1
  842. package/dist/validation/validatorErrorKeys.js.map +1 -1
  843. package/package.json +6 -9
@@ -31,12 +31,14 @@ const getChildEntityCompletionStats = (params) => {
31
31
  }
32
32
  const minCountRaw = Nodes.getChildrenMinCount({ parentNode: parentEntity, nodeDef });
33
33
  const minCount = Number.isNaN(minCountRaw) ? 0 : Math.max(minCountRaw, 0);
34
+ // entities added beyond the min count are still expected to be complete
34
35
  const expectedCount = Math.max(minCount, childEntities.length);
35
36
  if (expectedCount === 0)
36
37
  return emptyStats();
37
38
  const stats = emptyStats();
38
39
  for (let index = 0; index < expectedCount; index++) {
39
40
  const childEntity = childEntities[index];
41
+ // a missing repetition (below the min count) counts as a single incomplete unit
40
42
  addStats(stats, childEntity ? getEntityCompletionStats({ survey, record, entity: childEntity }) : { total: 1, filled: 0 });
41
43
  }
42
44
  return stats;
@@ -66,8 +68,20 @@ const toCompletionPercent = (stats) => {
66
68
  return 100;
67
69
  return Numbers.roundToPrecision((filled / total) * 100, 2);
68
70
  };
71
+ /**
72
+ * Returns the percentage of completion of the given entity (0-100), considering every descendant recursively.
73
+ * A required or key attribute is considered filled when it has a non empty value; multiple attributes and
74
+ * entities are considered filled based on their min count (see Nodes.getChildrenMinCount).
75
+ */
69
76
  export const getEntityCompletionPercent = (params) => toCompletionPercent(getEntityCompletionStats(params));
77
+ /**
78
+ * Returns the percentage of completion of the given entity (0-100), considering only its own attributes
79
+ * (nested entities are ignored).
80
+ */
70
81
  export const getEntityOwnCompletionPercent = (params) => toCompletionPercent(getEntityCompletionStats(Object.assign(Object.assign({}, params), { includeNestedEntities: false })));
82
+ /**
83
+ * Returns the percentage of completion of the given record (0-100), i.e. the completion of its root entity.
84
+ */
71
85
  export const getRecordCompletionPercent = (params) => {
72
86
  const { survey, record } = params;
73
87
  const rootEntity = getRoot(record);
@@ -1 +1 @@
1
- {"version":3,"file":"recordCompletion.js","sourceRoot":"","sources":["../../../../src/record/_records/recordCompletion.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"recordCompletion.js","sourceRoot":"","sources":["../../../../src/record/_records/recordCompletion.ts"],"names":[],"mappings":"AAAA,OAAO,EAAQ,KAAK,EAAE,MAAM,YAAY,CAAA;AACxC,OAAO,EAAyB,QAAQ,EAAe,MAAM,eAAe,CAAA;AAC5E,OAAO,EAAU,OAAO,EAAE,MAAM,cAAc,CAAA;AAC9C,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAA;AAErC,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAA;AAOtD,MAAM,UAAU,GAAG,GAA0B,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,CAAA;AAEzE,MAAM,QAAQ,GAAG,CAAC,QAA+B,EAAE,UAAiC,EAAQ,EAAE;IAC5F,QAAQ,CAAC,KAAK,IAAI,UAAU,CAAC,KAAK,CAAA;IAClC,QAAQ,CAAC,MAAM,IAAI,UAAU,CAAC,MAAM,CAAA;AACtC,CAAC,CAAA;AAED,MAAM,2BAA2B,GAAG,CAAC,MAIpC,EAAyB,EAAE;IAC1B,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,CAAA;IAE1C,IAAI,QAAQ,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;QACjC,MAAM,QAAQ,GAAG,KAAK,CAAC,mBAAmB,CAAC,EAAE,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,CAAA;QAC3E,IAAI,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,QAAQ,IAAI,CAAC;YAAE,OAAO,UAAU,EAAE,CAAA;QAEhE,MAAM,gBAAgB,GAAG,WAAW,CAAC,MAAM,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC,MAAM,CAAA;QAEvG,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,CAAC,GAAG,CAAC,gBAAgB,EAAE,QAAQ,CAAC,EAAE,CAAA;IAC1E,CAAC;IAED,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC;QAAE,OAAO,UAAU,EAAE,CAAA;IAElF,MAAM,IAAI,GAAG,WAAW,CAAC,MAAM,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAA;IACzD,OAAO,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,IAAI,IAAI,KAAK,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAA;AAC1E,CAAC,CAAA;AAED,MAAM,6BAA6B,GAAG,CAAC,MAKtC,EAAyB,EAAE;IAC1B,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,YAAY,EAAE,OAAO,EAAE,GAAG,MAAM,CAAA;IACxD,MAAM,aAAa,GAAG,WAAW,CAAC,YAAY,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAA;IAErE,IAAI,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;QAC/B,MAAM,WAAW,GAAG,aAAa,CAAC,CAAC,CAAC,CAAA;QACpC,OAAO,WAAW,CAAC,CAAC,CAAC,wBAAwB,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC,CAAC,CAAC,CAAC,UAAU,EAAE,CAAA;IACvG,CAAC;IAED,MAAM,WAAW,GAAG,KAAK,CAAC,mBAAmB,CAAC,EAAE,UAAU,EAAE,YAAY,EAAE,OAAO,EAAE,CAAC,CAAA;IACpF,MAAM,QAAQ,GAAG,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC,CAAC,CAAA;IACzE,wEAAwE;IACxE,MAAM,aAAa,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,aAAa,CAAC,MAAM,CAAC,CAAA;IAC9D,IAAI,aAAa,KAAK,CAAC;QAAE,OAAO,UAAU,EAAE,CAAA;IAE5C,MAAM,KAAK,GAAG,UAAU,EAAE,CAAA;IAC1B,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,aAAa,EAAE,KAAK,EAAE,EAAE,CAAC;QACnD,MAAM,WAAW,GAAG,aAAa,CAAC,KAAK,CAAC,CAAA;QACxC,gFAAgF;QAChF,QAAQ,CACN,KAAK,EACL,WAAW,CAAC,CAAC,CAAC,wBAAwB,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,CAC1G,CAAA;IACH,CAAC;IACD,OAAO,KAAK,CAAA;AACd,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,wBAAwB,GAAG,CAAC,MAKxC,EAAyB,EAAE;IAC1B,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,qBAAqB,GAAG,IAAI,EAAE,GAAG,MAAM,CAAA;IACvE,MAAM,SAAS,GAAG,OAAO,CAAC,gBAAgB,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,WAAW,EAAE,CAAC,CAAA;IAChF,MAAM,SAAS,GAAG,OAAO,CAAC,kBAAkB,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC,CAAA;IAE5E,MAAM,KAAK,GAAG,UAAU,EAAE,CAAA;IAC1B,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE,CAAC;QACjC,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,MAAM,EAAE,QAAQ,CAAC,IAAI,CAAC;YAAE,SAAQ;QAE7D,IAAI,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;YAChC,IAAI,CAAC,qBAAqB;gBAAE,SAAQ;YACpC,QAAQ,CAAC,KAAK,EAAE,6BAA6B,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAA;QAC7G,CAAC;aAAM,CAAC;YACN,QAAQ,CAAC,KAAK,EAAE,2BAA2B,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAA;QACrF,CAAC;IACH,CAAC;IACD,OAAO,KAAK,CAAA;AACd,CAAC,CAAA;AAED,MAAM,mBAAmB,GAAG,CAAC,KAA4B,EAAU,EAAE;IACnE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,KAAK,CAAA;IAC/B,IAAI,KAAK,IAAI,CAAC;QAAE,OAAO,GAAG,CAAA;IAC1B,OAAO,OAAO,CAAC,gBAAgB,CAAC,CAAC,MAAM,GAAG,KAAK,CAAC,GAAG,GAAG,EAAE,CAAC,CAAC,CAAA;AAC5D,CAAC,CAAA;AAED;;;;GAIG;AACH,MAAM,CAAC,MAAM,0BAA0B,GAAG,CAAC,MAAwD,EAAU,EAAE,CAC7G,mBAAmB,CAAC,wBAAwB,CAAC,MAAM,CAAC,CAAC,CAAA;AAEvD;;;GAGG;AACH,MAAM,CAAC,MAAM,6BAA6B,GAAG,CAAC,MAAwD,EAAU,EAAE,CAChH,mBAAmB,CAAC,wBAAwB,iCAAM,MAAM,KAAE,qBAAqB,EAAE,KAAK,IAAG,CAAC,CAAA;AAE5F;;GAEG;AACH,MAAM,CAAC,MAAM,0BAA0B,GAAG,CAAC,MAA0C,EAAU,EAAE;IAC/F,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,CAAA;IACjC,MAAM,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC,CAAA;IAClC,OAAO,UAAU,CAAC,CAAC,CAAC,0BAA0B,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;AAC5F,CAAC,CAAA","sourcesContent":["import { Node, Nodes } from '../../node'\nimport { NodeDef, NodeDefProps, NodeDefs, NodeDefType } from '../../nodeDef'\nimport { Survey, Surveys } from '../../survey'\nimport { Numbers } from '../../utils'\nimport { Record } from '../record'\nimport { getChildren, getRoot } from './recordGetters'\n\nexport interface EntityCompletionStats {\n total: number\n filled: number\n}\n\nconst emptyStats = (): EntityCompletionStats => ({ total: 0, filled: 0 })\n\nconst addStats = (statsAcc: EntityCompletionStats, statsToAdd: EntityCompletionStats): void => {\n statsAcc.total += statsToAdd.total\n statsAcc.filled += statsToAdd.filled\n}\n\nconst getAttributeCompletionStats = (params: {\n record: Record\n entity: Node\n nodeDef: NodeDef<NodeDefType, NodeDefProps>\n}): EntityCompletionStats => {\n const { record, entity, nodeDef } = params\n\n if (NodeDefs.isMultiple(nodeDef)) {\n const minCount = Nodes.getChildrenMinCount({ parentNode: entity, nodeDef })\n if (Number.isNaN(minCount) || minCount <= 0) return emptyStats()\n\n const filledNodesCount = getChildren(entity, nodeDef.uuid)(record).filter(Nodes.isValueNotBlank).length\n\n return { total: minCount, filled: Math.min(filledNodesCount, minCount) }\n }\n\n if (!NodeDefs.isRequired(nodeDef) && !NodeDefs.isKey(nodeDef)) return emptyStats()\n\n const node = getChildren(entity, nodeDef.uuid)(record)[0]\n return { total: 1, filled: node && Nodes.isValueNotBlank(node) ? 1 : 0 }\n}\n\nconst getChildEntityCompletionStats = (params: {\n survey: Survey\n record: Record\n parentEntity: Node\n nodeDef: NodeDef<NodeDefType, NodeDefProps>\n}): EntityCompletionStats => {\n const { survey, record, parentEntity, nodeDef } = params\n const childEntities = getChildren(parentEntity, nodeDef.uuid)(record)\n\n if (NodeDefs.isSingle(nodeDef)) {\n const childEntity = childEntities[0]\n return childEntity ? getEntityCompletionStats({ survey, record, entity: childEntity }) : emptyStats()\n }\n\n const minCountRaw = Nodes.getChildrenMinCount({ parentNode: parentEntity, nodeDef })\n const minCount = Number.isNaN(minCountRaw) ? 0 : Math.max(minCountRaw, 0)\n // entities added beyond the min count are still expected to be complete\n const expectedCount = Math.max(minCount, childEntities.length)\n if (expectedCount === 0) return emptyStats()\n\n const stats = emptyStats()\n for (let index = 0; index < expectedCount; index++) {\n const childEntity = childEntities[index]\n // a missing repetition (below the min count) counts as a single incomplete unit\n addStats(\n stats,\n childEntity ? getEntityCompletionStats({ survey, record, entity: childEntity }) : { total: 1, filled: 0 }\n )\n }\n return stats\n}\n\nexport const getEntityCompletionStats = (params: {\n survey: Survey\n record: Record\n entity: Node\n includeNestedEntities?: boolean\n}): EntityCompletionStats => {\n const { survey, record, entity, includeNestedEntities = true } = params\n const entityDef = Surveys.getNodeDefByUuid({ survey, uuid: entity.nodeDefUuid })\n const childDefs = Surveys.getNodeDefChildren({ survey, nodeDef: entityDef })\n\n const stats = emptyStats()\n for (const childDef of childDefs) {\n if (!Nodes.isChildApplicable(entity, childDef.uuid)) continue\n\n if (NodeDefs.isEntity(childDef)) {\n if (!includeNestedEntities) continue\n addStats(stats, getChildEntityCompletionStats({ survey, record, parentEntity: entity, nodeDef: childDef }))\n } else {\n addStats(stats, getAttributeCompletionStats({ record, entity, nodeDef: childDef }))\n }\n }\n return stats\n}\n\nconst toCompletionPercent = (stats: EntityCompletionStats): number => {\n const { total, filled } = stats\n if (total <= 0) return 100\n return Numbers.roundToPrecision((filled / total) * 100, 2)\n}\n\n/**\n * Returns the percentage of completion of the given entity (0-100), considering every descendant recursively.\n * A required or key attribute is considered filled when it has a non empty value; multiple attributes and\n * entities are considered filled based on their min count (see Nodes.getChildrenMinCount).\n */\nexport const getEntityCompletionPercent = (params: { survey: Survey; record: Record; entity: Node }): number =>\n toCompletionPercent(getEntityCompletionStats(params))\n\n/**\n * Returns the percentage of completion of the given entity (0-100), considering only its own attributes\n * (nested entities are ignored).\n */\nexport const getEntityOwnCompletionPercent = (params: { survey: Survey; record: Record; entity: Node }): number =>\n toCompletionPercent(getEntityCompletionStats({ ...params, includeNestedEntities: false }))\n\n/**\n * Returns the percentage of completion of the given record (0-100), i.e. the completion of its root entity.\n */\nexport const getRecordCompletionPercent = (params: { survey: Survey; record: Record }): number => {\n const { survey, record } = params\n const rootEntity = getRoot(record)\n return rootEntity ? getEntityCompletionPercent({ survey, record, entity: rootEntity }) : 0\n}\n"]}
@@ -8,6 +8,7 @@ import { Arrays, Queue } from '../../utils';
8
8
  import { RECORD_STEP_DEFAULT } from '../record';
9
9
  import { RecordStepAnalysisCode } from '../recordStep';
10
10
  import { RecordNodesIndexReader } from './recordNodesIndexReader';
11
+ import { NodeDefSelfReferences } from './nodeDefSelfReferences';
11
12
  export const getCycle = (record) => { var _a; return (_a = record.cycle) !== null && _a !== void 0 ? _a : defaultCycle; };
12
13
  export const getNodes = (record) => { var _a; return (_a = record.nodes) !== null && _a !== void 0 ? _a : {}; };
13
14
  export const getNodesArray = (record) => Object.values(getNodes(record));
@@ -86,6 +87,7 @@ export const getParentCodeAttribute = (params) => (record) => {
86
87
  }
87
88
  return undefined;
88
89
  };
90
+ // ancestors
89
91
  export const visitAncestorsAndSelf = (node, visitor, stopIfFn) => (record) => {
90
92
  let currentNode = node;
91
93
  while (currentNode) {
@@ -114,6 +116,9 @@ export const getAncestor = (params) => {
114
116
  }
115
117
  return ancestor;
116
118
  };
119
+ /**
120
+ * Returns the list of ancestors from the given node to the root entity
121
+ */
117
122
  export const getAncestorsAndSelf = (params) => {
118
123
  const { record, node } = params;
119
124
  const ancestors = [];
@@ -122,12 +127,15 @@ export const getAncestorsAndSelf = (params) => {
122
127
  })(record);
123
128
  return ancestors;
124
129
  };
130
+ // descendants
125
131
  export const getDescendantsOrSelf = (params) => {
126
132
  const { record, node, nodeDefDescendant } = params;
127
133
  if (nodeDefDescendant.uuid === node.nodeDefUuid)
128
134
  return [node];
129
135
  const nodeDefDescendantFullHierarchy = [...nodeDefDescendant.meta.h, nodeDefDescendant.uuid];
136
+ // 1. get the descendant node defs uuids starting from node nodeDefUuid (not inclusive) down to the specified nodeDefDescendant uuid
130
137
  const descendantNodeDefUuids = nodeDefDescendantFullHierarchy.slice(nodeDefDescendantFullHierarchy.indexOf(node.nodeDefUuid) + 1);
138
+ // 2. for every level in the hierarchy, find the children having the nodeDefUuid equal to the current one
131
139
  let currentAncestors = [node];
132
140
  let currentDescendants = [];
133
141
  for (const currentDescendantDefUuid of descendantNodeDefUuids) {
@@ -137,7 +145,7 @@ export const getDescendantsOrSelf = (params) => {
137
145
  currentAncestors = currentDescendants;
138
146
  currentDescendants = [];
139
147
  }
140
- return currentAncestors;
148
+ return currentAncestors; // currentAncestors is equal to the currentDescendants of the last level
141
149
  };
142
150
  export const getDescendant = (params) => {
143
151
  const { record, node, nodeDefDescendant } = params;
@@ -155,6 +163,7 @@ export const visitDescendantsAndSelf = (params) => {
155
163
  while (!queue.isEmpty()) {
156
164
  const visitedNode = queue.dequeue();
157
165
  if (visitor(visitedNode)) {
166
+ // stop if visitor returns true
158
167
  return;
159
168
  }
160
169
  const children = getChildren(visitedNode)(record);
@@ -167,9 +176,11 @@ export const visitDescendantsAndSelf = (params) => {
167
176
  while (stack.length > 0) {
168
177
  const visitedNode = stack.pop();
169
178
  if (visitor(visitedNode)) {
179
+ // stop if visitor returns true
170
180
  return;
171
181
  }
172
182
  const children = getChildren(visitedNode)(record);
183
+ // add children to stack in reverse order
173
184
  for (let index = children.length - 1; index >= 0; index--) {
174
185
  const child = children[index];
175
186
  stack.push(child);
@@ -193,13 +204,21 @@ export const findDescendantOrSelf = (node, predicate) => (record) => {
193
204
  return found;
194
205
  };
195
206
  const getClosestAncestorNode = (params) => {
196
- const { record, node, nodeDef, dependentDef } = params;
207
+ const { record, node, nodeDef, dependentDef, dependencyType } = params;
208
+ // 1a if dependent def is the same as node def, potentially all nodes with
209
+ // nodeDefUuid === dependentDef.uuid in record could be dependent of nodeDef;
210
+ // consider the root node as the closest ancestor node,
211
+ // unless the node def references itself only among the children of its parent entity (e.g. validation "dbh > 0")
197
212
  if (nodeDef.uuid === dependentDef.uuid) {
198
- return getRoot(record);
213
+ return NodeDefSelfReferences.isSelfReferenceLocal({ nodeDef, dependencyType })
214
+ ? getParent(node)(record)
215
+ : getRoot(record);
199
216
  }
217
+ // 1 find common ancestor def
200
218
  const commonAncestorDefUuid = Arrays.last(Arrays.intersection(nodeDef.meta.h, dependentDef.meta.h));
201
219
  if (!commonAncestorDefUuid)
202
220
  return undefined;
221
+ // 2 get ancestor node with common parent def
203
222
  return getAncestor({ record, node, ancestorDefUuid: commonAncestorDefUuid });
204
223
  };
205
224
  export const getEntityKeyNodesByDefUuid = (params) => {
@@ -244,7 +263,7 @@ export const getNodeIndex = (params) => {
244
263
  const { record, node } = params;
245
264
  const parentEntity = getParent(node)(record);
246
265
  if (!parentEntity)
247
- return 0;
266
+ return 0; // root entity
248
267
  const siblings = getChildren(parentEntity, node.nodeDefUuid)(record);
249
268
  return siblings.indexOf(node);
250
269
  };
@@ -321,12 +340,14 @@ export const getDependentNodePointers = (params) => {
321
340
  }
322
341
  };
323
342
  for (const dependentDef of dependentDefs) {
324
- const commonAncestorNode = getClosestAncestorNode({ record, node, nodeDef, dependentDef });
343
+ // 1 find common ancestor node
344
+ const commonAncestorNode = getClosestAncestorNode({ record, node, nodeDef, dependentDef, dependencyType });
325
345
  if (!commonAncestorNode)
326
346
  continue;
327
347
  const nodeDefDependentParent = Surveys.getNodeDefParent({ survey, nodeDef: dependentDef });
328
348
  if (!nodeDefDependentParent)
329
349
  throw new SystemError('record.nodes.dependents.dependencyOnRootFound');
350
+ // 2 find descendant nodes of common parent node with nodeDefUuid = dependentDef uuid
330
351
  const dependentContextNodes = getDescendantsOrSelf({
331
352
  record,
332
353
  node: commonAncestorNode,
@@ -1 +1 @@
1
- {"version":3,"file":"recordGetters.js","sourceRoot":"","sources":["../../../../src/record/_records/recordGetters.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"recordGetters.js","sourceRoot":"","sources":["../../../../src/record/_records/recordGetters.ts"],"names":[],"mappings":"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","sourcesContent":["import { Dictionary, TraverseMethod } from '../../common'\nimport { SystemError } from '../../error'\nimport { Node, NodePointer, Nodes, NodesMap } from '../../node'\nimport { NodeValues } from '../../node/nodeValues'\nimport { NodeDef, NodeDefCode, NodeDefCodeProps, NodeDefProps, NodeDefs, NodeDefType } from '../../nodeDef'\nimport { defaultCycle, Surveys } from '../../survey'\nimport { Survey, SurveyDependencyType } from '../../survey/survey'\nimport { Arrays, Queue } from '../../utils'\nimport { Record, RECORD_STEP_DEFAULT } from '../record'\nimport { RecordStepAnalysisCode } from '../recordStep'\nimport { RecordNodesIndexReader } from './recordNodesIndexReader'\nimport { NodeDefSelfReferences } from './nodeDefSelfReferences'\n\nexport const getCycle = (record: Record): string => record.cycle ?? defaultCycle\n\nexport const getNodes = (record: Record): Dictionary<Node> => record.nodes ?? {}\n\nexport const getNodesArray = (record: Record): Node[] => Object.values(getNodes(record))\n\nexport const getNodeByUuid =\n (uuid: string) =>\n (record: Record): Node | undefined =>\n record.nodes?.[uuid]\n\nexport const getNodesByUuids =\n (uuids: string[]) =>\n (record: Record): Node[] =>\n uuids.map((uuid: string) => getNodeByUuid(uuid)(record)) as Node[]\n\nexport const getRoot = (record: Record): Node | undefined => {\n const rootUuid = record._nodesIndex ? RecordNodesIndexReader.getNodeRootUuid(record._nodesIndex) : null\n if (rootUuid) {\n return getNodeByUuid(rootUuid)(record)\n }\n return getNodesArray(record).find((node) => !node.parentUuid)\n}\n\nexport const getChildren =\n (parentNode: Node, childDefUuid?: string) =>\n (record: Record): Node[] => {\n if (record._nodesIndex) {\n const childrenUuids = childDefUuid\n ? RecordNodesIndexReader.getNodeUuidsByParentAndChildDef({\n parentNodeUuid: parentNode.uuid,\n childDefUuid,\n })(record._nodesIndex)\n : RecordNodesIndexReader.getNodeUuidsByParent(parentNode.uuid)(record._nodesIndex)\n return getNodesByUuids(childrenUuids)(record)\n }\n return getNodesArray(record).filter(\n (node) => node.parentUuid === parentNode.uuid && (!childDefUuid || node.nodeDefUuid == childDefUuid)\n )\n }\n\nexport const getChild =\n (parentNode: Node, childDefUuid: string) =>\n (record: Record): Node => {\n const children = getChildren(parentNode, childDefUuid)(record)\n const errorParams = { childDefUuid, parentNodeUuid: parentNode.uuid, recordUuid: record.uuid }\n if (children.length === 1) {\n return children[0]\n }\n if (children.length > 1) {\n throw new SystemError('systemError.record.multipleNodesFound', errorParams)\n }\n throw new SystemError('systemError.record.childNotFound', errorParams)\n }\n\nexport const getParent =\n (node: Node) =>\n (record: Record): Node | undefined =>\n node.parentUuid ? getNodeByUuid(node.parentUuid)(record) : undefined\n\nexport const getNodesByDefUuid =\n (nodeDefUuid: string) =>\n (record: Record): Node[] => {\n if (record._nodesIndex) {\n const nodeUuids = RecordNodesIndexReader.getNodeUuidsByDef(nodeDefUuid)(record._nodesIndex)\n return getNodesByUuids(nodeUuids)(record)\n }\n return getNodesArray(record).filter((node) => node.nodeDefUuid === nodeDefUuid)\n }\n\nconst isNodeFlagTrue =\n (isChildFlagTrue: (parent: Node, nodeDefUuid: string) => boolean) =>\n (params: { record: Record; node: Node }): boolean => {\n const { record, node } = params\n const ancestorsAndSelf = getAncestorsAndSelf({ record, node })\n for (let i = 0; i < ancestorsAndSelf.length - 1; i++) {\n const child = ancestorsAndSelf[i]\n const parent = ancestorsAndSelf[i + 1]\n if (!isChildFlagTrue(parent, child.nodeDefUuid)) return false\n }\n return true\n }\n\nexport const isNodeApplicable = isNodeFlagTrue((parent, nodeDefUuid) => Nodes.isChildApplicable(parent, nodeDefUuid))\nexport const isNodeEditable = isNodeFlagTrue((parent, nodeDefUuid) => Nodes.isChildEditable(parent, nodeDefUuid))\nexport const isNodeVisible = isNodeFlagTrue((parent, nodeDefUuid) => Nodes.isChildVisible(parent, nodeDefUuid))\n\nexport const getDependentCodeAttributes =\n (node: Node) =>\n (record: Record): Node[] => {\n if (record._nodesIndex) {\n const nodeUuids = RecordNodesIndexReader.getNodeCodeDependentUuids(node.uuid)(record._nodesIndex)\n return getNodesByUuids(nodeUuids)(record)\n }\n throw new SystemError('record.nodesIndexNotInitialized')\n }\n\nexport const getParentCodeAttribute =\n (params: { parentNode: Node; nodeDef: NodeDefCode }) =>\n (record: Record): Node | undefined => {\n const { parentNode, nodeDef } = params\n\n const parentCodeDefUuid = NodeDefs.getParentCodeDefUuid(nodeDef)\n if (!parentCodeDefUuid) return undefined\n\n const ancestors = getAncestorsAndSelf({ record, node: parentNode })\n for (const ancestor of ancestors) {\n const children = getChildren(ancestor, parentCodeDefUuid)(record)\n if (children.length === 1) {\n return children[0]\n }\n }\n return undefined\n }\n\n// ancestors\nexport const visitAncestorsAndSelf =\n (node: Node, visitor: (node: Node) => void, stopIfFn?: () => boolean) =>\n (record: Record): void => {\n let currentNode: Node | undefined = node\n while (currentNode) {\n visitor(currentNode)\n if (stopIfFn?.()) break\n currentNode = getParent(currentNode)(record)\n }\n }\n\nexport const findAncestor =\n (node: Node, predicate: (node: Node) => boolean) =>\n (record: Record): Node | undefined => {\n let result: Node | undefined = undefined\n visitAncestorsAndSelf(\n node,\n (visitedNode) => {\n if (predicate(visitedNode)) {\n result = visitedNode\n }\n },\n () => !!result\n )(record)\n return result\n }\n\nexport const getAncestor = (params: { record: Record; node: Node; ancestorDefUuid: string }): Node | undefined => {\n const { record, node, ancestorDefUuid } = params\n if (node.nodeDefUuid === ancestorDefUuid) return node\n\n let ancestor = getParent(node)(record)\n while (ancestor && ancestor.nodeDefUuid !== ancestorDefUuid) {\n ancestor = getParent(ancestor)(record)\n }\n return ancestor\n}\n\n/**\n * Returns the list of ancestors from the given node to the root entity\n */\nexport const getAncestorsAndSelf = (params: { record: Record; node: Node }): Array<Node> => {\n const { record, node } = params\n const ancestors: Array<Node> = []\n visitAncestorsAndSelf(node, (currentNode) => {\n ancestors.push(currentNode)\n })(record)\n return ancestors\n}\n\n// descendants\n\nexport const getDescendantsOrSelf = (params: {\n record: Record\n node: Node\n nodeDefDescendant: NodeDef<any>\n}): Node[] => {\n const { record, node, nodeDefDescendant } = params\n\n if (nodeDefDescendant.uuid === node.nodeDefUuid) return [node]\n\n const nodeDefDescendantFullHierarchy = [...nodeDefDescendant.meta.h, nodeDefDescendant.uuid]\n\n // 1. get the descendant node defs uuids starting from node nodeDefUuid (not inclusive) down to the specified nodeDefDescendant uuid\n const descendantNodeDefUuids = nodeDefDescendantFullHierarchy.slice(\n nodeDefDescendantFullHierarchy.indexOf(node.nodeDefUuid) + 1\n )\n // 2. for every level in the hierarchy, find the children having the nodeDefUuid equal to the current one\n let currentAncestors = [node]\n let currentDescendants: Node[] = []\n for (const currentDescendantDefUuid of descendantNodeDefUuids) {\n for (const currentAncestor of currentAncestors) {\n currentDescendants.push(...getChildren(currentAncestor, currentDescendantDefUuid)(record))\n }\n currentAncestors = currentDescendants\n currentDescendants = []\n }\n return currentAncestors // currentAncestors is equal to the currentDescendants of the last level\n}\n\nexport const getDescendant = (params: { record: Record; node: Node; nodeDefDescendant: NodeDef<any> }): Node => {\n const { record, node, nodeDefDescendant } = params\n\n return getDescendantsOrSelf({ record, node, nodeDefDescendant })[0]\n}\n\nexport const isDescendantOf = (params: { node: Node; ancestor: Node }): boolean => {\n const { node, ancestor } = params\n return Nodes.getHierarchy(node).includes(ancestor.uuid)\n}\n\nexport const visitDescendantsAndSelf = (params: {\n record: Record\n node: Node\n visitor: (node: Node) => boolean | void\n traverseMethod?: TraverseMethod\n}): void => {\n const { record, node, visitor, traverseMethod = TraverseMethod.bfs } = params\n\n if (traverseMethod === TraverseMethod.bfs) {\n const queue = new Queue()\n\n queue.enqueue(node)\n\n while (!queue.isEmpty()) {\n const visitedNode = queue.dequeue()\n\n if (visitor(visitedNode)) {\n // stop if visitor returns true\n return\n }\n\n const children = getChildren(visitedNode)(record)\n queue.enqueueItems(children)\n }\n } else {\n const stack = []\n\n stack.push(node)\n\n while (stack.length > 0) {\n const visitedNode = stack.pop() as Node\n\n if (visitor(visitedNode)) {\n // stop if visitor returns true\n return\n }\n\n const children = getChildren(visitedNode)(record)\n\n // add children to stack in reverse order\n for (let index = children.length - 1; index >= 0; index--) {\n const child = children[index]\n stack.push(child)\n }\n }\n }\n}\n\nexport const findDescendantOrSelf =\n (node: Node, predicate: (node: Node) => boolean) =>\n (record: Record): Node | undefined => {\n let found = undefined\n\n visitDescendantsAndSelf({\n record,\n node,\n visitor: (currentNode) => {\n if (predicate(currentNode)) {\n found = currentNode\n return true\n }\n return false\n },\n })\n return found\n }\n\nconst getClosestAncestorNode = (params: {\n record: Record\n node: Node\n nodeDef: NodeDef<NodeDefType, NodeDefProps>\n dependentDef: NodeDef<NodeDefType, NodeDefProps>\n dependencyType: SurveyDependencyType\n}): Node | undefined => {\n const { record, node, nodeDef, dependentDef, dependencyType } = params\n\n // 1a if dependent def is the same as node def, potentially all nodes with\n // nodeDefUuid === dependentDef.uuid in record could be dependent of nodeDef;\n // consider the root node as the closest ancestor node,\n // unless the node def references itself only among the children of its parent entity (e.g. validation \"dbh > 0\")\n if (nodeDef.uuid === dependentDef.uuid) {\n return NodeDefSelfReferences.isSelfReferenceLocal({ nodeDef, dependencyType })\n ? getParent(node)(record)\n : getRoot(record)\n }\n // 1 find common ancestor def\n const commonAncestorDefUuid = Arrays.last(Arrays.intersection(nodeDef.meta.h, dependentDef.meta.h))\n if (!commonAncestorDefUuid) return undefined\n\n // 2 get ancestor node with common parent def\n return getAncestor({ record, node, ancestorDefUuid: commonAncestorDefUuid })\n}\n\ntype EntityKeyNodesGetterParams = {\n survey: Survey\n cycle?: string\n record: Record\n entity: Node\n keyDefs?: NodeDef<NodeDefType, NodeDefProps>[]\n}\n\nexport const getEntityKeyNodesByDefUuid = (params: EntityKeyNodesGetterParams): NodesMap => {\n const { survey, cycle, record, entity, keyDefs } = params\n const nodeDef = Surveys.getNodeDefByUuid({ survey, uuid: entity.nodeDefUuid })\n const nodeDefKeys = keyDefs ?? Surveys.getNodeDefKeys({ survey, cycle, nodeDef })\n return nodeDefKeys.reduce((acc: NodesMap, nodeDefKey) => {\n const nodeKey = getDescendant({ record, node: entity, nodeDefDescendant: nodeDefKey })\n acc[nodeDefKey.uuid] = nodeKey\n return acc\n }, {})\n}\n\nexport const getEntityKeyNodes = (params: EntityKeyNodesGetterParams): Node[] =>\n Object.values(getEntityKeyNodesByDefUuid(params))\n\nexport const getEntityKeyValuesByDefUuid = (params: EntityKeyNodesGetterParams): Dictionary<any> => {\n const keyNodesByDefUuid = getEntityKeyNodesByDefUuid(params)\n return Object.entries(keyNodesByDefUuid).reduce((acc: Dictionary<any>, [uuid, keyNode]) => {\n acc[uuid] = keyNode?.value\n return acc\n }, {})\n}\n\nexport const getEntityKeyValues = (params: EntityKeyNodesGetterParams): any[] =>\n Object.values(getEntityKeyValuesByDefUuid(params))\n\nexport const getEntitySiblings = (params: { record: Record; entity: Node; includeSelf?: boolean }) => {\n const { record, entity, includeSelf = false } = params\n const parentEntity = getParent(entity)(record)\n if (!parentEntity) return []\n const siblingEntities = getChildren(parentEntity, entity.nodeDefUuid)(record)\n return includeSelf ? siblingEntities : siblingEntities.filter((sibling) => !Nodes.areEqual(sibling, entity))\n}\n\nexport const getAttributeSiblings = (params: {\n record: Record\n node: Node\n nodeDef: NodeDef<NodeDefType, NodeDefProps>\n}) => {\n const { record, node, nodeDef } = params\n const parentEntity = getParent(node)(record)\n if (!parentEntity) return []\n const siblingParentEntities = getEntitySiblings({ record, entity: parentEntity })\n return siblingParentEntities.reduce((siblingsAcc: Node[], siblingEntity) => {\n siblingsAcc.push(...getChildren(siblingEntity, nodeDef.uuid)(record))\n return siblingsAcc\n }, [])\n}\n\nexport const getNodeIndex = (params: { record: Record; node: Node }) => {\n const { record, node } = params\n const parentEntity = getParent(node)(record)\n if (!parentEntity) return 0 // root entity\n const siblings = getChildren(parentEntity, node.nodeDefUuid)(record)\n return siblings.indexOf(node)\n}\n\nexport const findEntityByKeyValues = (params: {\n survey: Survey\n cycle: string\n record: Record\n parentEntity: Node\n entityDefUuid: string\n keyValuesByDefUuid: Dictionary<any>\n}): Node | undefined => {\n const { survey, cycle, record, parentEntity, entityDefUuid, keyValuesByDefUuid } = params\n const entityDef = Surveys.getNodeDefByUuid({ survey, uuid: entityDefUuid })\n const siblingEntities = getChildren(parentEntity, entityDefUuid)(record)\n if (NodeDefs.isSingle(entityDef)) {\n return siblingEntities[0]\n }\n const keyDefs = Surveys.getNodeDefKeys({ survey, cycle, nodeDef: entityDef })\n\n return siblingEntities.find((siblingEntity) => {\n const siblingEntityKeyValuesByDefUuid = getEntityKeyValuesByDefUuid({\n survey,\n record,\n entity: siblingEntity,\n keyDefs,\n })\n return keyDefs.every((keyDef) => {\n const keyValue = siblingEntityKeyValuesByDefUuid[keyDef.uuid]\n const keyValueSearch = keyValuesByDefUuid[keyDef.uuid]\n return NodeValues.isValueEqual({\n survey,\n nodeDef: keyDef,\n value: keyValue,\n valueSearch: keyValueSearch,\n })\n })\n })\n}\n\nexport const findEntityWithSameKeysInAnotherRecord = (params: {\n survey: Survey\n cycle: string\n entityUuid: string\n record: Record\n recordOther: Record\n}): Node | undefined => {\n const { survey, cycle, entityUuid, record, recordOther } = params\n const entity = getNodeByUuid(entityUuid)(record)\n if (!entity) return undefined\n\n let otherRecordCurrentParentEntity = getRoot(recordOther)\n if (!otherRecordCurrentParentEntity) return undefined\n\n const entityAncestorsAndSelf = getAncestorsAndSelf({\n record,\n node: entity,\n })\n const ancestorDefUuidsAndKeys = entityAncestorsAndSelf.map((ancestor) => ({\n entityDefUuid: ancestor.nodeDefUuid,\n keyValuesByDefUuid: getEntityKeyValuesByDefUuid({\n survey,\n record,\n entity: ancestor,\n }),\n }))\n\n const ancestorDefUuidsAndKeysToVisit = [...ancestorDefUuidsAndKeys].reverse()\n\n for (let index = 1; otherRecordCurrentParentEntity && index < ancestorDefUuidsAndKeysToVisit.length; index++) {\n const { entityDefUuid, keyValuesByDefUuid } = ancestorDefUuidsAndKeysToVisit[index]\n otherRecordCurrentParentEntity = findEntityByKeyValues({\n survey,\n cycle,\n record: recordOther,\n parentEntity: otherRecordCurrentParentEntity,\n entityDefUuid,\n keyValuesByDefUuid,\n })\n }\n return otherRecordCurrentParentEntity\n}\n\nexport const getDependentNodePointers = (params: {\n survey: Survey\n record: Record\n node: Node\n dependencyType: SurveyDependencyType\n includeSelf?: boolean\n filterFn?: (nodePointer: NodePointer) => boolean\n}) => {\n const { survey, record, node, dependencyType, includeSelf = false, filterFn = null } = params\n const nodeDefUuid = node.nodeDefUuid\n const nodeDef = Surveys.getNodeDefByUuid({ survey, uuid: nodeDefUuid })\n const dependentDefs = Surveys.getNodeDefDependents({ survey, nodeDefUuid, dependencyType })\n const nodePointers: Array<NodePointer> = []\n\n const addToNodePointers = (nodePointer: NodePointer): void => {\n if (filterFn === null || filterFn(nodePointer)) {\n nodePointers.push(nodePointer)\n }\n }\n\n for (const dependentDef of dependentDefs) {\n // 1 find common ancestor node\n const commonAncestorNode = getClosestAncestorNode({ record, node, nodeDef, dependentDef, dependencyType })\n if (!commonAncestorNode) continue\n\n const nodeDefDependentParent = Surveys.getNodeDefParent({ survey, nodeDef: dependentDef })\n if (!nodeDefDependentParent) throw new SystemError('record.nodes.dependents.dependencyOnRootFound')\n\n // 2 find descendant nodes of common parent node with nodeDefUuid = dependentDef uuid\n const dependentContextNodes = getDescendantsOrSelf({\n record,\n node: commonAncestorNode,\n nodeDefDescendant: nodeDefDependentParent,\n })\n\n for (const dependentContextNode of dependentContextNodes) {\n addToNodePointers({\n nodeCtx: dependentContextNode,\n nodeDef: dependentDef,\n })\n }\n }\n if (includeSelf) {\n const parentNode = getParent(node)(record)\n if (parentNode) {\n addToNodePointers({\n nodeCtx: parentNode,\n nodeDef,\n })\n }\n }\n\n return nodePointers\n}\n\nexport const getAncestorCodePath = (params: {\n survey: Survey\n record: Record\n parentNode: Node\n nodeDef: NodeDef<NodeDefType.code, NodeDefCodeProps>\n}): string[] => {\n const { record, parentNode, nodeDef, survey } = params\n\n const getCodeAttributeItemCode = (codeAttribute: Node | undefined): string => {\n const codeItemUuid = codeAttribute ? NodeValues.getItemUuid(codeAttribute) : undefined\n if (!codeItemUuid) return ''\n const item = Surveys.getCategoryItemByUuid({ survey, itemUuid: codeItemUuid })\n return item?.props.code ?? ''\n }\n\n const codePaths = []\n let currentParentCodeAttribute = getParentCodeAttribute({ parentNode, nodeDef })(record)\n\n while (currentParentCodeAttribute) {\n const ancestorItemCode = getCodeAttributeItemCode(currentParentCodeAttribute)\n codePaths.unshift(ancestorItemCode)\n const ancestorCodeDef = Surveys.getNodeDefByUuid({\n survey,\n uuid: currentParentCodeAttribute.nodeDefUuid,\n }) as NodeDefCode\n currentParentCodeAttribute = getParentCodeAttribute({ parentNode, nodeDef: ancestorCodeDef })(record)\n }\n return codePaths\n}\n\nexport const getCategoryItemUuid = (params: {\n survey: Survey\n nodeDef: NodeDef<NodeDefType.code, NodeDefCodeProps>\n record: Record\n parentNode: Node\n code: string\n}): string | undefined => {\n const { survey, nodeDef, record, parentNode, code } = params\n const categoryUuid = nodeDef.props.categoryUuid\n\n const codePaths = [...getAncestorCodePath({ survey, record, parentNode, nodeDef }), code]\n\n const item = Surveys.getCategoryItemByCodePaths({ survey, categoryUuid, codePaths })\n\n return item?.uuid\n}\n\nexport const isNodeFilledByUser =\n (node: Node) =>\n (record: Record): boolean =>\n !!findDescendantOrSelf(node, (visitedNode) => Nodes.hasUserInputValue(visitedNode))(record)\n\nexport const isNodeEmpty =\n (node: Node) =>\n (record: Record): boolean =>\n !isNodeFilledByUser(node)(record)\n\nexport const isEmpty = (record: Record): boolean => {\n const rootNode = getRoot(record)\n return rootNode ? isNodeEmpty(rootNode)(record) : true\n}\n\nexport const getStep = (record: Record): string => record.step ?? RECORD_STEP_DEFAULT\n\nexport const isInAnalysisStep = (record: Record): boolean => getStep(record) === RecordStepAnalysisCode\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"recordNodesIndexReader.js","sourceRoot":"","sources":["../../../../src/record/_records/recordNodesIndexReader.ts"],"names":[],"mappings":"AAEA,MAAM,eAAe,GAAG,CAAC,KAAuB,EAAsB,EAAE,CAAC,KAAK,CAAC,YAAY,CAAA;AAE3F,MAAM,iBAAiB,GACrB,CAAC,WAAmB,EAAE,EAAE,CACxB,CAAC,KAAuB,EAAY,EAAE,eACpC,OAAA,MAAM,CAAC,IAAI,CAAC,MAAA,MAAA,KAAK,CAAC,UAAU,0CAAG,WAAW,CAAC,mCAAI,EAAE,CAAC,CAAA,EAAA,CAAA;AAEtD,MAAM,+BAA+B,GACnC,CAAC,MAAwD,EAAE,EAAE,CAC7D,CAAC,KAAuB,EAAY,EAAE;;IACpC,MAAM,EAAE,cAAc,EAAE,YAAY,EAAE,GAAG,MAAM,CAAA;IAC/C,OAAO,MAAM,CAAC,IAAI,CAAC,MAAA,MAAA,MAAA,KAAK,CAAC,wBAAwB,0CAAG,cAAc,CAAC,0CAAG,YAAY,CAAC,mCAAI,EAAE,CAAC,CAAA;AAC5F,CAAC,CAAA;AAEH,MAAM,oBAAoB,GACxB,CAAC,cAAsB,EAAE,EAAE,CAC3B,CAAC,KAAuB,EAAY,EAAE;;IACpC,MAAM,2BAA2B,GAAG,MAAA,MAAA,KAAK,CAAC,wBAAwB,0CAAG,cAAc,CAAC,mCAAI,EAAE,CAAA;IAC1F,OAAO,MAAM,CAAC,MAAM,CAAC,2BAA2B,CAAC,CAAC,OAAO,CAAC,CAAC,aAAa,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAA;AAC1G,CAAC,CAAA;AAEH,MAAM,yBAAyB,GAC7B,CAAC,QAAgB,EAAE,EAAE,CACrB,CAAC,KAAuB,EAAY,EAAE,eACpC,OAAA,MAAM,CAAC,IAAI,CAAC,MAAA,MAAA,KAAK,CAAC,kBAAkB,0CAAG,QAAQ,CAAC,mCAAI,EAAE,CAAC,CAAA,EAAA,CAAA;AAE3D,MAAM,CAAC,MAAM,sBAAsB,GAAG;IACpC,eAAe;IACf,iBAAiB;IACjB,+BAA+B;IAC/B,oBAAoB;IACpB,yBAAyB;CAC1B,CAAA"}
1
+ {"version":3,"file":"recordNodesIndexReader.js","sourceRoot":"","sources":["../../../../src/record/_records/recordNodesIndexReader.ts"],"names":[],"mappings":"AAEA,MAAM,eAAe,GAAG,CAAC,KAAuB,EAAsB,EAAE,CAAC,KAAK,CAAC,YAAY,CAAA;AAE3F,MAAM,iBAAiB,GACrB,CAAC,WAAmB,EAAE,EAAE,CACxB,CAAC,KAAuB,EAAY,EAAE,eACpC,OAAA,MAAM,CAAC,IAAI,CAAC,MAAA,MAAA,KAAK,CAAC,UAAU,0CAAG,WAAW,CAAC,mCAAI,EAAE,CAAC,CAAA,EAAA,CAAA;AAEtD,MAAM,+BAA+B,GACnC,CAAC,MAAwD,EAAE,EAAE,CAC7D,CAAC,KAAuB,EAAY,EAAE;;IACpC,MAAM,EAAE,cAAc,EAAE,YAAY,EAAE,GAAG,MAAM,CAAA;IAC/C,OAAO,MAAM,CAAC,IAAI,CAAC,MAAA,MAAA,MAAA,KAAK,CAAC,wBAAwB,0CAAG,cAAc,CAAC,0CAAG,YAAY,CAAC,mCAAI,EAAE,CAAC,CAAA;AAC5F,CAAC,CAAA;AAEH,MAAM,oBAAoB,GACxB,CAAC,cAAsB,EAAE,EAAE,CAC3B,CAAC,KAAuB,EAAY,EAAE;;IACpC,MAAM,2BAA2B,GAAG,MAAA,MAAA,KAAK,CAAC,wBAAwB,0CAAG,cAAc,CAAC,mCAAI,EAAE,CAAA;IAC1F,OAAO,MAAM,CAAC,MAAM,CAAC,2BAA2B,CAAC,CAAC,OAAO,CAAC,CAAC,aAAa,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAA;AAC1G,CAAC,CAAA;AAEH,MAAM,yBAAyB,GAC7B,CAAC,QAAgB,EAAE,EAAE,CACrB,CAAC,KAAuB,EAAY,EAAE,eACpC,OAAA,MAAM,CAAC,IAAI,CAAC,MAAA,MAAA,KAAK,CAAC,kBAAkB,0CAAG,QAAQ,CAAC,mCAAI,EAAE,CAAC,CAAA,EAAA,CAAA;AAE3D,MAAM,CAAC,MAAM,sBAAsB,GAAG;IACpC,eAAe;IACf,iBAAiB;IACjB,+BAA+B;IAC/B,oBAAoB;IACpB,yBAAyB;CAC1B,CAAA","sourcesContent":["import { RecordNodesIndex } from '../record'\n\nconst getNodeRootUuid = (index: RecordNodesIndex): string | undefined => index.nodeRootUuid\n\nconst getNodeUuidsByDef =\n (nodeDefUuid: string) =>\n (index: RecordNodesIndex): string[] =>\n Object.keys(index.nodesByDef?.[nodeDefUuid] ?? {})\n\nconst getNodeUuidsByParentAndChildDef =\n (params: { parentNodeUuid: string; childDefUuid: string }) =>\n (index: RecordNodesIndex): string[] => {\n const { parentNodeUuid, childDefUuid } = params\n return Object.keys(index.nodesByParentAndChildDef?.[parentNodeUuid]?.[childDefUuid] ?? {})\n }\n\nconst getNodeUuidsByParent =\n (parentNodeUuid: string) =>\n (index: RecordNodesIndex): string[] => {\n const nodesPresenceByChildDefUuid = index.nodesByParentAndChildDef?.[parentNodeUuid] ?? {}\n return Object.values(nodesPresenceByChildDefUuid).flatMap((nodesPresence) => Object.keys(nodesPresence))\n }\n\nconst getNodeCodeDependentUuids =\n (nodeUuid: string) =>\n (index: RecordNodesIndex): string[] =>\n Object.keys(index.nodeCodeDependents?.[nodeUuid] ?? {})\n\nexport const RecordNodesIndexReader = {\n getNodeRootUuid,\n getNodeUuidsByDef,\n getNodeUuidsByParentAndChildDef,\n getNodeUuidsByParent,\n getNodeCodeDependentUuids,\n}\n"]}
@@ -12,6 +12,7 @@ const sortNodesByIdOrCreationDate = (nodeA, nodeB) => {
12
12
  return -1;
13
13
  if (!nodeB.parentUuid)
14
14
  return 1;
15
+ // read the hierarchy length directly: Nodes.getHierarchy copies the array on every comparison
15
16
  const hierarchyDepthA = (_c = (_b = (_a = nodeA.meta) === null || _a === void 0 ? void 0 : _a.h) === null || _b === void 0 ? void 0 : _b.length) !== null && _c !== void 0 ? _c : 0;
16
17
  const hierarchyDepthB = (_f = (_e = (_d = nodeB.meta) === null || _d === void 0 ? void 0 : _d.h) === null || _e === void 0 ? void 0 : _e.length) !== null && _f !== void 0 ? _f : 0;
17
18
  const depthDiff = hierarchyDepthA - hierarchyDepthB;
@@ -23,6 +24,11 @@ const sortNodesByIdOrCreationDate = (nodeA, nodeB) => {
23
24
  return nodeA.dateCreated.localeCompare(nodeB.dateCreated);
24
25
  return 0;
25
26
  };
27
+ /**
28
+ * Mutable copy of a nodes index, used to apply many changes to it at once.
29
+ * When sideEffect is false, every object along a modified path is copied only the first time it is modified
30
+ * (copy on write): applying N changes costs one copy of each touched object instead of N copies.
31
+ */
26
32
  class NodesIndexDraft {
27
33
  constructor(index, sideEffect) {
28
34
  this.copiedObjects = new Set();
@@ -55,6 +61,9 @@ class NodesIndexDraft {
55
61
  }
56
62
  current[path.at(-1)] = value;
57
63
  }
64
+ /**
65
+ * Deletes the value at the specified path, then removes the objects along the path left empty.
66
+ */
58
67
  delete(path) {
59
68
  const containers = [this.index];
60
69
  let current = this.index;
@@ -75,12 +84,16 @@ class NodesIndexDraft {
75
84
  var _a, _b;
76
85
  const { uuid: nodeUuid, nodeDefUuid, parentUuid } = node;
77
86
  if (parentUuid) {
87
+ // nodes by parent and child def uuid
78
88
  this.set([keys.nodesByParentAndChildDef, parentUuid, nodeDefUuid, nodeUuid], true);
79
89
  }
80
90
  else {
91
+ // root entity index
81
92
  this.index.nodeRootUuid = nodeUuid;
82
93
  }
94
+ // nodes by def uuid
83
95
  this.set([keys.nodesByDef, nodeDefUuid, nodeUuid], true);
96
+ // code dependents
84
97
  for (const ancestorCodeAttributeUuid of (_b = (_a = node.meta) === null || _a === void 0 ? void 0 : _a.hCode) !== null && _b !== void 0 ? _b : []) {
85
98
  this.set([keys.nodeCodeDependents, ancestorCodeAttributeUuid, nodeUuid], true);
86
99
  }
@@ -94,6 +107,7 @@ class NodesIndexDraft {
94
107
  delete this.index.nodeRootUuid;
95
108
  }
96
109
  this.delete([keys.nodesByDef, nodeDefUuid, nodeUuid]);
110
+ // code dependents
97
111
  for (const ancestorCodeAttributeUuid of Nodes.getHierarchyCode(node)) {
98
112
  this.delete([keys.nodeCodeDependents, ancestorCodeAttributeUuid, nodeUuid]);
99
113
  }
@@ -127,6 +141,9 @@ const _isSameHierarchyCode = (nodeA, nodeB) => {
127
141
  const hCodeB = (_d = (_c = nodeB.meta) === null || _c === void 0 ? void 0 : _c.hCode) !== null && _d !== void 0 ? _d : [];
128
142
  return hCodeA.length === hCodeB.length && hCodeA.every((uuid, index) => uuid === hCodeB[index]);
129
143
  };
144
+ /**
145
+ * Returns true if the index entries of the specified node would not change when the node replaces the previous version of it.
146
+ */
130
147
  const isNodeIndexUnchanged = (params) => {
131
148
  var _a, _b, _c, _d, _e;
132
149
  const { index, node, nodePrev } = params;
@@ -1 +1 @@
1
- {"version":3,"file":"recordNodesIndexUpdater.js","sourceRoot":"","sources":["../../../../src/record/_records/recordNodesIndexUpdater.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"recordNodesIndexUpdater.js","sourceRoot":"","sources":["../../../../src/record/_records/recordNodesIndexUpdater.ts"],"names":[],"mappings":"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","sourcesContent":["import { Node, Nodes } from '../../node'\nimport { Objects } from '../../utils'\nimport { Record, RecordNodesIndex } from '../record'\n\nconst keys = {\n nodeRootUuid: 'nodeRootUuid',\n nodesByParentAndChildDef: 'nodesByParentAndChildDef',\n nodesByDef: 'nodesByDef',\n nodeCodeDependents: 'nodeCodeDependents',\n}\n\nconst sortNodesByIdOrCreationDate = (nodeA: Node, nodeB: Node): number => {\n if (!nodeA.parentUuid) return -1\n if (!nodeB.parentUuid) return 1\n // read the hierarchy length directly: Nodes.getHierarchy copies the array on every comparison\n const hierarchyDepthA = nodeA.meta?.h?.length ?? 0\n const hierarchyDepthB = nodeB.meta?.h?.length ?? 0\n const depthDiff = hierarchyDepthA - hierarchyDepthB\n if (depthDiff !== 0) return depthDiff\n if (nodeA.id && nodeB.id) return nodeA.id - nodeB.id\n if (nodeA.dateCreated && nodeB.dateCreated) return nodeA.dateCreated.localeCompare(nodeB.dateCreated)\n return 0\n}\n\n/**\n * Mutable copy of a nodes index, used to apply many changes to it at once.\n * When sideEffect is false, every object along a modified path is copied only the first time it is modified\n * (copy on write): applying N changes costs one copy of each touched object instead of N copies.\n */\nclass NodesIndexDraft {\n readonly index: RecordNodesIndex\n private readonly sideEffect: boolean\n private readonly copiedObjects = new Set<object>()\n\n constructor(index: RecordNodesIndex, sideEffect: boolean) {\n this.sideEffect = sideEffect\n this.index = sideEffect ? index : this.markCopied({ ...index })\n }\n\n private markCopied<T extends object>(obj: T): T {\n this.copiedObjects.add(obj)\n return obj\n }\n\n private getWritableChild(parent: any, key: string, createIfMissing: boolean): any {\n const child = parent[key]\n if (child === undefined || child === null) {\n if (!createIfMissing) return undefined\n const childCreated = this.markCopied({})\n parent[key] = childCreated\n return childCreated\n }\n if (this.sideEffect || this.copiedObjects.has(child)) return child\n const childCopy = this.markCopied({ ...child })\n parent[key] = childCopy\n return childCopy\n }\n\n set(path: string[], value: any): void {\n let current: any = this.index\n for (let i = 0; i < path.length - 1; i++) {\n current = this.getWritableChild(current, path[i], true)\n }\n current[path.at(-1)!] = value\n }\n\n /**\n * Deletes the value at the specified path, then removes the objects along the path left empty.\n */\n delete(path: string[]): void {\n const containers: any[] = [this.index]\n let current: any = this.index\n for (let i = 0; i < path.length - 1; i++) {\n if (current[path[i]] === undefined) return\n current = this.getWritableChild(current, path[i], false)\n containers.push(current)\n }\n delete current[path.at(-1)!]\n for (let i = path.length - 2; i >= 0; i--) {\n if (!Objects.isEmpty(containers[i + 1])) break\n delete containers[i][path[i]]\n }\n }\n\n addNode(node: Node): void {\n const { uuid: nodeUuid, nodeDefUuid, parentUuid } = node\n if (parentUuid) {\n // nodes by parent and child def uuid\n this.set([keys.nodesByParentAndChildDef, parentUuid, nodeDefUuid, nodeUuid], true)\n } else {\n // root entity index\n this.index.nodeRootUuid = nodeUuid\n }\n // nodes by def uuid\n this.set([keys.nodesByDef, nodeDefUuid, nodeUuid], true)\n // code dependents\n for (const ancestorCodeAttributeUuid of node.meta?.hCode ?? []) {\n this.set([keys.nodeCodeDependents, ancestorCodeAttributeUuid, nodeUuid], true)\n }\n }\n\n removeNode(node: Node): void {\n const { uuid: nodeUuid, parentUuid, nodeDefUuid } = node\n if (parentUuid) {\n this.delete([keys.nodesByParentAndChildDef, parentUuid, nodeDefUuid, nodeUuid])\n } else {\n delete this.index.nodeRootUuid\n }\n this.delete([keys.nodesByDef, nodeDefUuid, nodeUuid])\n // code dependents\n for (const ancestorCodeAttributeUuid of Nodes.getHierarchyCode(node)) {\n this.delete([keys.nodeCodeDependents, ancestorCodeAttributeUuid, nodeUuid])\n }\n this.delete([keys.nodeCodeDependents, nodeUuid])\n }\n}\n\nconst addNodes =\n (nodes: { [key: string]: Node }, sideEffect = false, sortNodes = false) =>\n (index: RecordNodesIndex): RecordNodesIndex => {\n const draft = new NodesIndexDraft(index, sideEffect)\n const nodesArray = Object.values(nodes)\n if (sortNodes) {\n nodesArray.sort(sortNodesByIdOrCreationDate)\n }\n for (const node of nodesArray) {\n draft.addNode(node)\n }\n return draft.index\n }\n\nconst addNode =\n (node: Node) =>\n (index: RecordNodesIndex): RecordNodesIndex =>\n addNodes({ [node.uuid]: node })(index)\n\nconst initializeIndex = (record: Record): RecordNodesIndex => addNodes(record.nodes ?? {}, true, true)({})\n\nconst removeNodes =\n (nodes: Node[], sideEffect = false) =>\n (index: RecordNodesIndex): RecordNodesIndex => {\n const draft = new NodesIndexDraft(index, sideEffect)\n for (const node of nodes) {\n draft.removeNode(node)\n }\n return draft.index\n }\n\nconst removeNode =\n (node: Node, sideEffect = false) =>\n (index: RecordNodesIndex): RecordNodesIndex =>\n removeNodes([node], sideEffect)(index)\n\nconst _isSameHierarchyCode = (nodeA: Node, nodeB: Node): boolean => {\n const hCodeA = nodeA.meta?.hCode ?? []\n const hCodeB = nodeB.meta?.hCode ?? []\n return hCodeA.length === hCodeB.length && hCodeA.every((uuid, index) => uuid === hCodeB[index])\n}\n\n/**\n * Returns true if the index entries of the specified node would not change when the node replaces the previous version of it.\n */\nconst isNodeIndexUnchanged = (params: { index: RecordNodesIndex; node: Node; nodePrev?: Node }): boolean => {\n const { index, node, nodePrev } = params\n if (!nodePrev) return false\n const { uuid, parentUuid, nodeDefUuid } = node\n if (parentUuid !== nodePrev.parentUuid || nodeDefUuid !== nodePrev.nodeDefUuid) return false\n if (!_isSameHierarchyCode(node, nodePrev)) return false\n if (!index.nodesByDef?.[nodeDefUuid]?.[uuid]) return false\n return parentUuid\n ? !!index.nodesByParentAndChildDef?.[parentUuid]?.[nodeDefUuid]?.[uuid]\n : index.nodeRootUuid === uuid\n}\n\nexport const RecordNodesIndexUpdater = {\n addNode,\n addNodes,\n initializeIndex,\n isNodeIndexUnchanged,\n removeNode,\n removeNodes,\n}\n"]}
@@ -5,6 +5,9 @@ import { Validations } from '../../validation';
5
5
  import { RecordValidations } from '../recordValidations';
6
6
  import { getEntityCompletionStats } from './recordCompletion';
7
7
  import { getCycle, getNodeByUuid, getNodesByDefUuid, getRoot } from './recordGetters';
8
+ /**
9
+ * Whether a node belongs under a page entity (itself or any descendant of that page).
10
+ */
8
11
  export const nodeBelongsToPage = (params) => {
9
12
  const { node, pageNodeDefUuid, record } = params;
10
13
  if (node.nodeDefUuid === pageNodeDefUuid)
@@ -14,6 +17,10 @@ export const nodeBelongsToPage = (params) => {
14
17
  return (ancestor === null || ancestor === void 0 ? void 0 : ancestor.nodeDefUuid) === pageNodeDefUuid;
15
18
  });
16
19
  };
20
+ /**
21
+ * Whether a node belongs to this page only — not to a nested descendant page entity.
22
+ * When descendantPageUuids is empty, all nodes under the page hierarchy are included.
23
+ */
17
24
  export const nodeBelongsToOwnPage = (params) => {
18
25
  const { node, pageNodeDefUuid, descendantPageUuids, record } = params;
19
26
  if (!nodeBelongsToPage({ node, pageNodeDefUuid, record }))
@@ -22,6 +29,9 @@ export const nodeBelongsToOwnPage = (params) => {
22
29
  return false;
23
30
  return !descendantPageUuids.some((descendantUuid) => nodeBelongsToPage({ node, pageNodeDefUuid: descendantUuid, record }));
24
31
  };
32
+ /**
33
+ * Child page-entity defs displayed in their own page under the given entity.
34
+ */
25
35
  export const getNodeDefChildrenInOwnPage = (params) => {
26
36
  const { survey, nodeDef, cycle } = params;
27
37
  return Surveys.getNodeDefChildren({ survey, nodeDef, includeAnalysis: true }).filter((child) => {
@@ -30,6 +40,9 @@ export const getNodeDefChildrenInOwnPage = (params) => {
30
40
  return NodeDefs.isDisplayInOwnPage(cycle)(child);
31
41
  });
32
42
  };
43
+ /**
44
+ * Collects all page-entity node defs in the survey cycle (root + nested own-pages).
45
+ */
33
46
  export const getPageNodeDefs = (params) => {
34
47
  const { survey, cycle } = params;
35
48
  const root = Surveys.getNodeDefRoot({ survey });
@@ -46,6 +59,9 @@ export const getPageNodeDefs = (params) => {
46
59
  }
47
60
  return pages;
48
61
  };
62
+ /**
63
+ * Collects descendant page node def UUIDs under a page (not including the page itself).
64
+ */
49
65
  export const getDescendantPageNodeDefUuids = (params) => {
50
66
  const { survey, cycle, pageNodeDef } = params;
51
67
  const uuids = [];
@@ -90,12 +106,19 @@ const getOwnPageFieldValidationFlags = (params) => {
90
106
  hasWarnings: Validations.hasWarnings(nodeValidation),
91
107
  };
92
108
  };
109
+ /**
110
+ * Children-count validations (file min count, inline multiple min/max, etc.) are keyed as
111
+ * `childrenCount_{parentUuid}_{childDefUuid}`, not as node UUIDs.
112
+ * Include them when the parent is on this page, but skip counts that refer to descendant
113
+ * page entities (missing sub-page instances should not paint the parent page red).
114
+ */
93
115
  const getOwnPageChildrenCountValidationFlags = (params) => {
94
116
  const { childrenCountKey, pageNodeDefUuid, descendantPageUuids, scopeEntityUuid, record, recordValidation } = params;
95
117
  const parentUuid = RecordValidations.extractValidationChildrenCountKeyParentUuid(childrenCountKey);
96
118
  const childDefUuid = RecordValidations.extractValidationChildrenCountKeyNodeDefUuid(childrenCountKey);
97
119
  if (!parentUuid || !childDefUuid)
98
120
  return null;
121
+ // Sub-page entity min/max counts belong to navigation of nested pages, not this page's fields.
99
122
  if (descendantPageUuids.includes(childDefUuid))
100
123
  return null;
101
124
  const parentNode = getNodeByUuid(parentUuid)(record);
@@ -112,6 +135,11 @@ const getOwnPageChildrenCountValidationFlags = (params) => {
112
135
  hasWarnings: Validations.hasWarnings(fieldValidation),
113
136
  };
114
137
  };
138
+ /**
139
+ * Aggregates error/warning flags for a page.
140
+ * When descendantPageUuids is non-empty, nested page entities are excluded (own-page scope).
141
+ * When scopeEntityUuid is set, only validations for nodes under that entity instance are included.
142
+ */
115
143
  export const getPageValidationStatus = (params) => {
116
144
  const { pageNodeDefUuid, descendantPageUuids = [], record, scopeEntityUuid } = params;
117
145
  const recordValidation = Validations.getValidation(record);
@@ -142,6 +170,10 @@ const aggregatePageValidationStatuses = (statuses) => ({
142
170
  hasErrors: statuses.some((status) => status.hasErrors),
143
171
  hasWarnings: statuses.some((status) => status.hasWarnings),
144
172
  });
173
+ /**
174
+ * Validation and completion status for one entity instance and its descendant pages.
175
+ * Returns null when the node is missing or is not an entity.
176
+ */
145
177
  export const getEntitySubtreeStatus = (params) => {
146
178
  var _a;
147
179
  const { survey, record, entityUuid } = params;
@@ -170,6 +202,12 @@ export const getEntitySubtreeStatus = (params) => {
170
202
  const isComplete = total > 0 && filled === total && !hasErrors && !hasWarnings;
171
203
  return { hasErrors, hasWarnings, isComplete };
172
204
  };
205
+ /**
206
+ * Aggregates subtree status across instances of a multiple page entity.
207
+ * When `scopeEntityUuid` is set, only instances under that ancestor entity are included
208
+ * (needed for nested multiples, e.g. Tree under the currently selected Plot).
209
+ * Empty instance lists return a non-complete status with no validation flags.
210
+ */
173
211
  export const getMultiplePageEntitiesStatus = (params) => {
174
212
  const { survey, record, pageNodeDefUuid, scopeEntityUuid } = params;
175
213
  const instances = getNodesByDefUuid(pageNodeDefUuid)(record).filter((instance) => scopeEntityUuid ? nodeIsUnderEntity({ node: instance, entityUuid: scopeEntityUuid }) : true);
@@ -185,7 +223,14 @@ export const getMultiplePageEntitiesStatus = (params) => {
185
223
  isComplete: instanceStatuses.length > 0 && instanceStatuses.every((status) => status.isComplete),
186
224
  };
187
225
  };
226
+ /**
227
+ * Whether the page has validation errors on its own fields (excluding nested page entities).
228
+ */
188
229
  export const pageHasOwnErrors = (params) => getPageValidationStatus(params).hasErrors;
230
+ /**
231
+ * Progress of pages without own-field validation errors over all survey pages.
232
+ * Warnings do not reduce the score (matches Arena sidebar red-icon signal).
233
+ */
189
234
  export const getRecordPagesValidationProgress = (params) => {
190
235
  var _a;
191
236
  const { survey, record } = params;