@openforis/arena-core 2.3.36 → 2.3.39

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 (383) hide show
  1. package/dist/auth/authGroup.js.map +1 -1
  2. package/dist/auth/authGroups.d.ts +21 -11
  3. package/dist/auth/authGroups.js.map +1 -1
  4. package/dist/auth/authorizer.d.ts +64 -38
  5. package/dist/auth/authorizer.js.map +1 -1
  6. package/dist/auth/permission.js.map +1 -1
  7. package/dist/auth/user.js.map +1 -1
  8. package/dist/auth/users.d.ts +19 -9
  9. package/dist/auth/users.js +3 -2
  10. package/dist/auth/users.js.map +1 -1
  11. package/dist/category/categories.d.ts +7 -3
  12. package/dist/category/categories.js.map +1 -1
  13. package/dist/category/categoryImportSummary.js.map +1 -1
  14. package/dist/category/categoryItemGenerator.d.ts +6 -4
  15. package/dist/category/categoryItems.d.ts +9 -4
  16. package/dist/category/categoryItems.js +2 -1
  17. package/dist/category/categoryItems.js.map +1 -1
  18. package/dist/category/factory.js.map +1 -1
  19. package/dist/chain/chain.js.map +1 -1
  20. package/dist/common/index.js.map +1 -1
  21. package/dist/dataExport/FlatDataExportModel.js.map +1 -1
  22. package/dist/dataExport/FlatDataExportOptions.js.map +1 -1
  23. package/dist/dataExport/FlatDataFiles.d.ts +7 -5
  24. package/dist/dataExport/UniqueFileNamesGenerator.js.map +1 -1
  25. package/dist/dataQuery/dataQuery.js.map +1 -1
  26. package/dist/dataQuery/dataQuerySummaries.d.ts +28 -15
  27. package/dist/dataQuery/dataQuerySummaries.js +3 -3
  28. package/dist/dataQuery/dataQuerySummaries.js.map +1 -1
  29. package/dist/error/SystemError.js.map +1 -1
  30. package/dist/esm/auth/authGroups.js.map +1 -1
  31. package/dist/esm/auth/users.js +3 -2
  32. package/dist/esm/auth/users.js.map +1 -1
  33. package/dist/esm/category/categories.js.map +1 -1
  34. package/dist/esm/category/categoryItems.js +2 -1
  35. package/dist/esm/category/categoryItems.js.map +1 -1
  36. package/dist/esm/dataExport/FlatDataExportModel.js.map +1 -1
  37. package/dist/esm/dataQuery/dataQuerySummaries.js +3 -3
  38. package/dist/esm/dataQuery/dataQuerySummaries.js.map +1 -1
  39. package/dist/esm/expression/javascript/evaluator.js.map +1 -1
  40. package/dist/esm/extraProp/extraProps.js.map +1 -1
  41. package/dist/esm/geo/pointFactory.js.map +1 -1
  42. package/dist/esm/geo/points/bearing.js +1 -1
  43. package/dist/esm/geo/points/bearing.js.map +1 -1
  44. package/dist/esm/geo/points/distance.js +1 -1
  45. package/dist/esm/geo/points/distance.js.map +1 -1
  46. package/dist/esm/geo/points/isValid.js.map +1 -1
  47. package/dist/esm/geo/points/transform.js.map +1 -1
  48. package/dist/esm/job/JobBase.js +4 -3
  49. package/dist/esm/job/JobBase.js.map +1 -1
  50. package/dist/esm/message/messages.js +9 -8
  51. package/dist/esm/message/messages.js.map +1 -1
  52. package/dist/esm/node/factory.js +2 -1
  53. package/dist/esm/node/factory.js.map +1 -1
  54. package/dist/esm/node/nodeValueFormatter.js +2 -1
  55. package/dist/esm/node/nodeValueFormatter.js.map +1 -1
  56. package/dist/esm/node/nodeValues.js +3 -2
  57. package/dist/esm/node/nodeValues.js.map +1 -1
  58. package/dist/esm/node/nodes.js +4 -4
  59. package/dist/esm/node/nodes.js.map +1 -1
  60. package/dist/esm/nodeDef/nodeDefs.js +10 -10
  61. package/dist/esm/nodeDef/nodeDefs.js.map +1 -1
  62. package/dist/esm/nodeDefExpressionEvaluator/evaluator.js.map +1 -1
  63. package/dist/esm/nodeDefExpressionEvaluator/functions.js.map +1 -1
  64. package/dist/esm/nodeDefExpressionEvaluator/node/identifier.js +3 -2
  65. package/dist/esm/nodeDefExpressionEvaluator/node/identifier.js.map +1 -1
  66. package/dist/esm/nodeDefExpressionEvaluator/node/member.js.map +1 -1
  67. package/dist/esm/nodeDefExpressionEvaluator/validator.js.map +1 -1
  68. package/dist/esm/record/_records/nodeDefSelfReferences.js.map +1 -1
  69. package/dist/esm/record/_records/recordGetters.js.map +1 -1
  70. package/dist/esm/record/_records/recordNodesIndexReader.js +6 -4
  71. package/dist/esm/record/_records/recordNodesIndexReader.js.map +1 -1
  72. package/dist/esm/record/_records/recordNodesIndexUpdater.js +10 -7
  73. package/dist/esm/record/_records/recordNodesIndexUpdater.js.map +1 -1
  74. package/dist/esm/record/_records/recordPagesValidation.js.map +1 -1
  75. package/dist/esm/record/_records/recordUpdater.js.map +1 -1
  76. package/dist/esm/record/factory.js +2 -1
  77. package/dist/esm/record/factory.js.map +1 -1
  78. package/dist/esm/record/recordCloner.js +2 -1
  79. package/dist/esm/record/recordCloner.js.map +1 -1
  80. package/dist/esm/record/recordExpressionEvaluator/functions.js.map +1 -1
  81. package/dist/esm/record/recordExpressionEvaluator/node/identifier/identifier.js +3 -2
  82. package/dist/esm/record/recordExpressionEvaluator/node/identifier/identifier.js.map +1 -1
  83. package/dist/esm/record/recordExpressionEvaluator/recordExpressionEvaluator.js +4 -7
  84. package/dist/esm/record/recordExpressionEvaluator/recordExpressionEvaluator.js.map +1 -1
  85. package/dist/esm/record/recordNodesUpdater/recordNodeDependentsApplicableUpdater.js.map +1 -1
  86. package/dist/esm/record/recordNodesUpdater/recordNodeDependentsBooleanUpdater.js.map +1 -1
  87. package/dist/esm/record/recordNodesUpdater/recordNodeDependentsCountUpdater.js.map +1 -1
  88. package/dist/esm/record/recordNodesUpdater/recordNodesDeleter.js.map +1 -1
  89. package/dist/esm/record/recordNodesUpdater/recordNodesUpdater.js.map +1 -1
  90. package/dist/esm/record/recordNodesUpdater/recordUpdateResult.js.map +1 -1
  91. package/dist/esm/record/recordUpdater.js.map +1 -1
  92. package/dist/esm/record/recordValidator/attributeTypeValidator.js +2 -2
  93. package/dist/esm/record/recordValidator/attributeTypeValidator.js.map +1 -1
  94. package/dist/esm/record/recordValidator/attributeUniqueValidator.js.map +1 -1
  95. package/dist/esm/record/recordValidator/attributeValidator.js.map +1 -1
  96. package/dist/esm/record/recordValidator/recordValidator.js.map +1 -1
  97. package/dist/esm/survey/nodeDefsFixer.js.map +1 -1
  98. package/dist/esm/survey/refData/factory.js +3 -2
  99. package/dist/esm/survey/refData/factory.js.map +1 -1
  100. package/dist/esm/survey/surveyDocImageFactory.js.map +1 -1
  101. package/dist/esm/survey/surveyDocImages.js.map +1 -1
  102. package/dist/esm/survey/surveyFileFactory.js.map +1 -1
  103. package/dist/esm/survey/surveys/_nodeDefs/nodeDefsIndex.js.map +1 -1
  104. package/dist/esm/survey/surveys/_nodeDefs/nodeDefsReader.js.map +1 -1
  105. package/dist/esm/survey/surveys/dependencies.js +2 -1
  106. package/dist/esm/survey/surveys/dependencies.js.map +1 -1
  107. package/dist/esm/survey/surveys/nodeDefs.js +4 -2
  108. package/dist/esm/survey/surveys/nodeDefs.js.map +1 -1
  109. package/dist/esm/survey/surveys/refsData.js +2 -1
  110. package/dist/esm/survey/surveys/refsData.js.map +1 -1
  111. package/dist/esm/survey/surveys/surveyGettersSecurity.js +1 -4
  112. package/dist/esm/survey/surveys/surveyGettersSecurity.js.map +1 -1
  113. package/dist/esm/survey/surveys/surveysGetters.js +5 -7
  114. package/dist/esm/survey/surveys/surveysGetters.js.map +1 -1
  115. package/dist/esm/taxonomy/taxa.js.map +1 -1
  116. package/dist/esm/taxonomy/taxonomies.js.map +1 -1
  117. package/dist/esm/tests/builder/recordBuilder/attributeBuilder.js.map +1 -1
  118. package/dist/esm/tests/builder/recordBuilder/index.js.map +1 -1
  119. package/dist/esm/tests/builder/recordBuilder/nodeBuilder.js.map +1 -1
  120. package/dist/esm/tests/builder/surveyBuilder/categoryItemBuilder.js.map +1 -1
  121. package/dist/esm/tests/builder/surveyBuilder/nodeDefAttributeBuilder.js.map +1 -1
  122. package/dist/esm/tests/builder/surveyBuilder/nodeDefBuilder.js.map +1 -1
  123. package/dist/esm/utils/_objects/camelize.js.map +1 -1
  124. package/dist/esm/utils/arrays.js.map +1 -1
  125. package/dist/esm/utils/dates.js.map +1 -1
  126. package/dist/esm/utils/fileNames.js.map +1 -1
  127. package/dist/esm/utils/fileProcessor.js +2 -1
  128. package/dist/esm/utils/fileProcessor.js.map +1 -1
  129. package/dist/esm/utils/numbers.js.map +1 -1
  130. package/dist/esm/utils/queue.js.map +1 -1
  131. package/dist/esm/utils/versions.js.map +1 -1
  132. package/dist/esm/validation/factory.js.map +1 -1
  133. package/dist/esm/validation/fieldValidators/numeric.js.map +1 -1
  134. package/dist/esm/validation/fieldValidators/numericPositive.js.map +1 -1
  135. package/dist/esm/validation/validationResults.js +1 -1
  136. package/dist/esm/validation/validationResults.js.map +1 -1
  137. package/dist/esm/validation/validations.js +2 -2
  138. package/dist/esm/validation/validations.js.map +1 -1
  139. package/dist/esm/validation/validator.js.map +1 -1
  140. package/dist/expression/javascript/evaluator.js.map +1 -1
  141. package/dist/expression/javascript/global.js.map +1 -1
  142. package/dist/expression/javascript/node/array.js.map +1 -1
  143. package/dist/expression/javascript/node/binary.js.map +1 -1
  144. package/dist/expression/javascript/node/call.js.map +1 -1
  145. package/dist/expression/javascript/node/compound.js.map +1 -1
  146. package/dist/expression/javascript/node/conditional.js.map +1 -1
  147. package/dist/expression/javascript/node/identifier.js.map +1 -1
  148. package/dist/expression/javascript/node/literal.js.map +1 -1
  149. package/dist/expression/javascript/node/member.js.map +1 -1
  150. package/dist/expression/javascript/node/sequence.js.map +1 -1
  151. package/dist/expression/javascript/node/this.js.map +1 -1
  152. package/dist/expression/javascript/node/unary.js.map +1 -1
  153. package/dist/expression/javascript/parser/jsep.js.map +1 -1
  154. package/dist/expression/javascript/parser/parser.js.map +1 -1
  155. package/dist/expression/node.js.map +1 -1
  156. package/dist/expression/variable.js.map +1 -1
  157. package/dist/extraProp/extraProp.js.map +1 -1
  158. package/dist/extraProp/extraProps.d.ts +9 -6
  159. package/dist/extraProp/extraProps.js.map +1 -1
  160. package/dist/extraProp/extraPropsDataGenerator.d.ts +7 -5
  161. package/dist/geo/pointFactory.js.map +1 -1
  162. package/dist/geo/points/bearing.js +5 -2
  163. package/dist/geo/points/bearing.js.map +1 -1
  164. package/dist/geo/points/distance.js +5 -2
  165. package/dist/geo/points/distance.js.map +1 -1
  166. package/dist/geo/points/equals.js.map +1 -1
  167. package/dist/geo/points/getSrs.js.map +1 -1
  168. package/dist/geo/points/index.d.ts +18 -14
  169. package/dist/geo/points/isFilled.js.map +1 -1
  170. package/dist/geo/points/isValid.js.map +1 -1
  171. package/dist/geo/points/parse.js.map +1 -1
  172. package/dist/geo/points/pointAtDistance.js.map +1 -1
  173. package/dist/geo/points/toLatLong.js.map +1 -1
  174. package/dist/geo/points/toString.js.map +1 -1
  175. package/dist/geo/points/transform.js.map +1 -1
  176. package/dist/job/JobBase.js +4 -3
  177. package/dist/job/JobBase.js.map +1 -1
  178. package/dist/job/jobEvent.js.map +1 -1
  179. package/dist/job/status.js.map +1 -1
  180. package/dist/language/languageCode.js.map +1 -1
  181. package/dist/language/languages.js.map +1 -1
  182. package/dist/message/message.js.map +1 -1
  183. package/dist/message/messages.d.ts +54 -28
  184. package/dist/message/messages.js +9 -8
  185. package/dist/message/messages.js.map +1 -1
  186. package/dist/node/factory.js +2 -1
  187. package/dist/node/factory.js.map +1 -1
  188. package/dist/node/node.js.map +1 -1
  189. package/dist/node/nodeValueFormatter.d.ts +2 -1
  190. package/dist/node/nodeValueFormatter.js +2 -1
  191. package/dist/node/nodeValueFormatter.js.map +1 -1
  192. package/dist/node/nodeValueProps.js.map +1 -1
  193. package/dist/node/nodeValues.d.ts +62 -41
  194. package/dist/node/nodeValues.js +3 -2
  195. package/dist/node/nodeValues.js.map +1 -1
  196. package/dist/node/nodes.d.ts +112 -86
  197. package/dist/node/nodes.js +4 -4
  198. package/dist/node/nodes.js.map +1 -1
  199. package/dist/nodeDef/nodeDef.js.map +1 -1
  200. package/dist/nodeDef/nodeDefs.d.ts +173 -86
  201. package/dist/nodeDef/nodeDefs.js +10 -10
  202. package/dist/nodeDef/nodeDefs.js.map +1 -1
  203. package/dist/nodeDef/types/entity.js.map +1 -1
  204. package/dist/nodeDef/types/file.js.map +1 -1
  205. package/dist/nodeDef/types/formHeader.js.map +1 -1
  206. package/dist/nodeDef/types/text.js.map +1 -1
  207. package/dist/nodeDefExpressionEvaluator/evaluator.js.map +1 -1
  208. package/dist/nodeDefExpressionEvaluator/functions.js.map +1 -1
  209. package/dist/nodeDefExpressionEvaluator/node/identifier.js +3 -2
  210. package/dist/nodeDefExpressionEvaluator/node/identifier.js.map +1 -1
  211. package/dist/nodeDefExpressionEvaluator/node/member.js.map +1 -1
  212. package/dist/nodeDefExpressionEvaluator/node/nodeDefExpressionNativeProperties.d.ts +11 -8
  213. package/dist/nodeDefExpressionEvaluator/node/thisEvaluator.d.ts +1 -1
  214. package/dist/nodeDefExpressionEvaluator/node/thisEvaluator.js.map +1 -1
  215. package/dist/nodeDefExpressionEvaluator/validator.js.map +1 -1
  216. package/dist/record/_records/nodeDefSelfReferences.d.ts +12 -4
  217. package/dist/record/_records/nodeDefSelfReferences.js.map +1 -1
  218. package/dist/record/_records/recordCompletion.js.map +1 -1
  219. package/dist/record/_records/recordGetters.js.map +1 -1
  220. package/dist/record/_records/recordNodesIndexReader.d.ts +14 -8
  221. package/dist/record/_records/recordNodesIndexReader.js +6 -4
  222. package/dist/record/_records/recordNodesIndexReader.js.map +1 -1
  223. package/dist/record/_records/recordNodesIndexUpdater.d.ts +22 -12
  224. package/dist/record/_records/recordNodesIndexUpdater.js +10 -7
  225. package/dist/record/_records/recordNodesIndexUpdater.js.map +1 -1
  226. package/dist/record/_records/recordPagesValidation.js.map +1 -1
  227. package/dist/record/_records/recordUpdater.js.map +1 -1
  228. package/dist/record/_records/recordUtils.js.map +1 -1
  229. package/dist/record/factory.js +2 -1
  230. package/dist/record/factory.js.map +1 -1
  231. package/dist/record/nodePointers.d.ts +13 -10
  232. package/dist/record/recordCloner.d.ts +11 -10
  233. package/dist/record/recordCloner.js +2 -1
  234. package/dist/record/recordCloner.js.map +1 -1
  235. package/dist/record/recordExpressionEvaluator/functions.js.map +1 -1
  236. package/dist/record/recordExpressionEvaluator/node/identifier/identifier.js +3 -2
  237. package/dist/record/recordExpressionEvaluator/node/identifier/identifier.js.map +1 -1
  238. package/dist/record/recordExpressionEvaluator/node/identifier/nodesFinder.d.ts +8 -6
  239. package/dist/record/recordExpressionEvaluator/node/thisEvaluator.js.map +1 -1
  240. package/dist/record/recordExpressionEvaluator/nodeValueExtractor.d.ts +7 -5
  241. package/dist/record/recordExpressionEvaluator/recordExpressionEvaluator.js +4 -7
  242. package/dist/record/recordExpressionEvaluator/recordExpressionEvaluator.js.map +1 -1
  243. package/dist/record/recordFixer.d.ts +19 -10
  244. package/dist/record/recordNodesUpdater/index.d.ts +8 -7
  245. package/dist/record/recordNodesUpdater/recordEnumeratingItemsExpressionEvaluator.js.map +1 -1
  246. package/dist/record/recordNodesUpdater/recordExpressionValueConverter.d.ts +2 -1
  247. package/dist/record/recordNodesUpdater/recordNodeDependentsApplicableUpdater.js.map +1 -1
  248. package/dist/record/recordNodesUpdater/recordNodeDependentsBooleanUpdater.js.map +1 -1
  249. package/dist/record/recordNodesUpdater/recordNodeDependentsCodeAttributesUpdater.js.map +1 -1
  250. package/dist/record/recordNodesUpdater/recordNodeDependentsCountUpdater.js.map +1 -1
  251. package/dist/record/recordNodesUpdater/recordNodeDependentsDefaultValuesUpdater.js.map +1 -1
  252. package/dist/record/recordNodesUpdater/recordNodeDependentsEditableUpdater.js.map +1 -1
  253. package/dist/record/recordNodesUpdater/recordNodeDependentsEnumeratedEntitiesUpdater.js.map +1 -1
  254. package/dist/record/recordNodesUpdater/recordNodeDependentsEnumeratingItemsUpdater.js.map +1 -1
  255. package/dist/record/recordNodesUpdater/recordNodeDependentsFileNamesEvaluator.js.map +1 -1
  256. package/dist/record/recordNodesUpdater/recordNodeDependentsVisibleUpdater.js.map +1 -1
  257. package/dist/record/recordNodesUpdater/recordNodesCreator.js.map +1 -1
  258. package/dist/record/recordNodesUpdater/recordNodesDeleter.js.map +1 -1
  259. package/dist/record/recordNodesUpdater/recordNodesDependentsUpdaterCommons.js.map +1 -1
  260. package/dist/record/recordNodesUpdater/recordNodesUpdater.js.map +1 -1
  261. package/dist/record/recordNodesUpdater/recordUpdateResult.js.map +1 -1
  262. package/dist/record/recordPrettyPrinter.d.ts +18 -15
  263. package/dist/record/recordPrettyPrinter.js.map +1 -1
  264. package/dist/record/recordStep.d.ts +5 -2
  265. package/dist/record/recordStep.js.map +1 -1
  266. package/dist/record/recordUpdater.d.ts +22 -15
  267. package/dist/record/recordUpdater.js.map +1 -1
  268. package/dist/record/recordValidations.d.ts +21 -14
  269. package/dist/record/recordValidator/attributeKeyValidator.d.ts +8 -6
  270. package/dist/record/recordValidator/attributeKeyValidator.js.map +1 -1
  271. package/dist/record/recordValidator/attributeTypeValidator.d.ts +2 -1
  272. package/dist/record/recordValidator/attributeTypeValidator.js +2 -2
  273. package/dist/record/recordValidator/attributeTypeValidator.js.map +1 -1
  274. package/dist/record/recordValidator/attributeUniqueValidator.d.ts +1 -5
  275. package/dist/record/recordValidator/attributeUniqueValidator.js.map +1 -1
  276. package/dist/record/recordValidator/attributeValidator.d.ts +3 -1
  277. package/dist/record/recordValidator/attributeValidator.js.map +1 -1
  278. package/dist/record/recordValidator/countVaildator.d.ts +21 -17
  279. package/dist/record/recordValidator/index.d.ts +4 -3
  280. package/dist/record/recordValidator/recordValidator.js.map +1 -1
  281. package/dist/record/records.d.ts +62 -220
  282. package/dist/registry/serviceRegistry.js.map +1 -1
  283. package/dist/registry/serviceType.js.map +1 -1
  284. package/dist/srs/srs.js.map +1 -1
  285. package/dist/survey/nodeDefsFixer.d.ts +5 -4
  286. package/dist/survey/nodeDefsFixer.js.map +1 -1
  287. package/dist/survey/refData/factory.js +3 -2
  288. package/dist/survey/refData/factory.js.map +1 -1
  289. package/dist/survey/survey.d.ts +2 -2
  290. package/dist/survey/survey.js.map +1 -1
  291. package/dist/survey/surveyDocImageFactory.js.map +1 -1
  292. package/dist/survey/surveyDocImages.d.ts +11 -5
  293. package/dist/survey/surveyDocImages.js.map +1 -1
  294. package/dist/survey/surveyFileFactory.js.map +1 -1
  295. package/dist/survey/surveys/_nodeDefs/nodeDefsIndex.js.map +1 -1
  296. package/dist/survey/surveys/_nodeDefs/nodeDefsReader.js.map +1 -1
  297. package/dist/survey/surveys/dependencies.js +2 -1
  298. package/dist/survey/surveys/dependencies.js.map +1 -1
  299. package/dist/survey/surveys/index.d.ts +82 -255
  300. package/dist/survey/surveys/nodeDefs.d.ts +4 -6
  301. package/dist/survey/surveys/nodeDefs.js +4 -2
  302. package/dist/survey/surveys/nodeDefs.js.map +1 -1
  303. package/dist/survey/surveys/refsData.js +2 -1
  304. package/dist/survey/surveys/refsData.js.map +1 -1
  305. package/dist/survey/surveys/surveyGettersSecurity.js +1 -4
  306. package/dist/survey/surveys/surveyGettersSecurity.js.map +1 -1
  307. package/dist/survey/surveys/surveysGetters.js +5 -7
  308. package/dist/survey/surveys/surveysGetters.js.map +1 -1
  309. package/dist/survey/surveys/surveysUtils.js.map +1 -1
  310. package/dist/taxonomy/taxa.d.ts +17 -11
  311. package/dist/taxonomy/taxa.js.map +1 -1
  312. package/dist/taxonomy/taxonGenerator.d.ts +6 -4
  313. package/dist/taxonomy/taxonomies.d.ts +7 -3
  314. package/dist/taxonomy/taxonomies.js.map +1 -1
  315. package/dist/tests/builder/recordBuilder/attributeBuilder.js.map +1 -1
  316. package/dist/tests/builder/recordBuilder/entityBuilder.js.map +1 -1
  317. package/dist/tests/builder/recordBuilder/index.d.ts +4 -2
  318. package/dist/tests/builder/recordBuilder/index.js.map +1 -1
  319. package/dist/tests/builder/recordBuilder/nodeBuilder.js.map +1 -1
  320. package/dist/tests/builder/recordBuilder/recordBuilder.js.map +1 -1
  321. package/dist/tests/builder/surveyBuilder/categoryBuilder.js.map +1 -1
  322. package/dist/tests/builder/surveyBuilder/categoryItemBuilder.js.map +1 -1
  323. package/dist/tests/builder/surveyBuilder/index.d.ts +30 -15
  324. package/dist/tests/builder/surveyBuilder/nodeDefAttributeBuilder.js.map +1 -1
  325. package/dist/tests/builder/surveyBuilder/nodeDefBuilder.js.map +1 -1
  326. package/dist/tests/builder/surveyBuilder/nodeDefCodeBuilder.js.map +1 -1
  327. package/dist/tests/builder/surveyBuilder/nodeDefEntityBuilder.js.map +1 -1
  328. package/dist/tests/builder/surveyBuilder/nodeDefTaxonBuilder.js.map +1 -1
  329. package/dist/tests/builder/surveyBuilder/surveyBuilder.js.map +1 -1
  330. package/dist/tests/builder/surveyBuilder/taxonBuilder.js.map +1 -1
  331. package/dist/tests/builder/surveyBuilder/taxonomyBuilder.js.map +1 -1
  332. package/dist/utils/_objects/assoc.js.map +1 -1
  333. package/dist/utils/_objects/assocPath.js.map +1 -1
  334. package/dist/utils/_objects/camelize.js.map +1 -1
  335. package/dist/utils/_objects/deepMerge.js.map +1 -1
  336. package/dist/utils/_objects/deleteEmptyProps.js.map +1 -1
  337. package/dist/utils/_objects/difference.js.map +1 -1
  338. package/dist/utils/_objects/dissoc.js.map +1 -1
  339. package/dist/utils/_objects/dissocPath.js.map +1 -1
  340. package/dist/utils/_objects/dissocPathIfEmpty.js.map +1 -1
  341. package/dist/utils/_objects/index.d.ts +34 -48
  342. package/dist/utils/_objects/isEmpty.js.map +1 -1
  343. package/dist/utils/_objects/isNil.js.map +1 -1
  344. package/dist/utils/_objects/isNotEmpty.js.map +1 -1
  345. package/dist/utils/_objects/parse.js.map +1 -1
  346. package/dist/utils/_objects/path.js.map +1 -1
  347. package/dist/utils/_objects/propertyOf.js.map +1 -1
  348. package/dist/utils/_objects/setInPath.js.map +1 -1
  349. package/dist/utils/_objects/stringify.js.map +1 -1
  350. package/dist/utils/arrays.d.ts +25 -15
  351. package/dist/utils/arrays.js.map +1 -1
  352. package/dist/utils/dates.d.ts +101 -48
  353. package/dist/utils/dates.js.map +1 -1
  354. package/dist/utils/fileNames.d.ts +7 -3
  355. package/dist/utils/fileNames.js.map +1 -1
  356. package/dist/utils/fileProcessor.js +2 -1
  357. package/dist/utils/fileProcessor.js.map +1 -1
  358. package/dist/utils/numbers.d.ts +42 -13
  359. package/dist/utils/numbers.js.map +1 -1
  360. package/dist/utils/promises.d.ts +12 -1
  361. package/dist/utils/queue.js.map +1 -1
  362. package/dist/utils/retryProcessor.js.map +1 -1
  363. package/dist/utils/strings.d.ts +22 -11
  364. package/dist/utils/uuids.d.ts +3 -1
  365. package/dist/utils/versions.d.ts +19 -7
  366. package/dist/utils/versions.js.map +1 -1
  367. package/dist/validation/factory.js.map +1 -1
  368. package/dist/validation/fieldValidators/email.js.map +1 -1
  369. package/dist/validation/fieldValidators/index.d.ts +12 -6
  370. package/dist/validation/fieldValidators/name.js.map +1 -1
  371. package/dist/validation/fieldValidators/notKeyword.js.map +1 -1
  372. package/dist/validation/fieldValidators/numeric.js.map +1 -1
  373. package/dist/validation/fieldValidators/numericPositive.js.map +1 -1
  374. package/dist/validation/fieldValidators/required.js.map +1 -1
  375. package/dist/validation/validation.js.map +1 -1
  376. package/dist/validation/validationResults.d.ts +17 -9
  377. package/dist/validation/validationResults.js +1 -1
  378. package/dist/validation/validationResults.js.map +1 -1
  379. package/dist/validation/validations.d.ts +71 -35
  380. package/dist/validation/validations.js +2 -2
  381. package/dist/validation/validations.js.map +1 -1
  382. package/dist/validation/validator.js.map +1 -1
  383. package/package.json +11 -4
@@ -14,13 +14,13 @@ const getDateCreated = (message) => message.dateCreated;
14
14
  const getDateModified = (message) => message.dateModified;
15
15
  const getDateValidUntil = (message) => { var _a; return (_a = message.props) === null || _a === void 0 ? void 0 : _a.dateValidUntil; };
16
16
  const getDateScheduledAt = (message) => { var _a; return (_a = message.props) === null || _a === void 0 ? void 0 : _a.dateScheduledAt; };
17
- const getNotificationTypes = (message) => { var _a, _b; return (_b = (_a = message.props) === null || _a === void 0 ? void 0 : _a.notificationTypes) !== null && _b !== void 0 ? _b : []; };
17
+ const getNotificationTypes = (message) => { var _a; var _b; return (_b = (_a = message.props) === null || _a === void 0 ? void 0 : _a.notificationTypes) !== null && _b !== void 0 ? _b : []; };
18
18
  const getSubject = (message) => { var _a; return (_a = message.props) === null || _a === void 0 ? void 0 : _a.subject; };
19
19
  const getBody = (message) => { var _a; return (_a = message.props) === null || _a === void 0 ? void 0 : _a.body; };
20
- const getTargetAppIds = (message) => { var _a, _b; return (_b = (_a = message.props) === null || _a === void 0 ? void 0 : _a.targetAppIds) !== null && _b !== void 0 ? _b : []; };
21
- const getTargetUserTypes = (message) => { var _a, _b; return (_b = (_a = message.props) === null || _a === void 0 ? void 0 : _a.targetUserTypes) !== null && _b !== void 0 ? _b : []; };
22
- const getTargetUserEmails = (message) => { var _a, _b; return (_b = (_a = message.props) === null || _a === void 0 ? void 0 : _a.targetUserEmails) !== null && _b !== void 0 ? _b : []; };
23
- const getTargetExcludedUserEmails = (message) => { var _a, _b; return (_b = (_a = message.props) === null || _a === void 0 ? void 0 : _a.targetExcludedUserEmails) !== null && _b !== void 0 ? _b : []; };
20
+ const getTargetAppIds = (message) => { var _a; var _b; return (_b = (_a = message.props) === null || _a === void 0 ? void 0 : _a.targetAppIds) !== null && _b !== void 0 ? _b : []; };
21
+ const getTargetUserTypes = (message) => { var _a; var _b; return (_b = (_a = message.props) === null || _a === void 0 ? void 0 : _a.targetUserTypes) !== null && _b !== void 0 ? _b : []; };
22
+ const getTargetUserEmails = (message) => { var _a; var _b; return (_b = (_a = message.props) === null || _a === void 0 ? void 0 : _a.targetUserEmails) !== null && _b !== void 0 ? _b : []; };
23
+ const getTargetExcludedUserEmails = (message) => { var _a; var _b; return (_b = (_a = message.props) === null || _a === void 0 ? void 0 : _a.targetExcludedUserEmails) !== null && _b !== void 0 ? _b : []; };
24
24
  const assocStatus = (status) => (message) => utils_1.Objects.assoc({ obj: message, prop: 'status', value: status });
25
25
  const assocProp = (propKey, propValue) => (message) => utils_1.Objects.assocPath({ obj: message, path: ['props', propKey], value: propValue });
26
26
  const assocSubject = (subject) => (message) => assocProp(message_1.MessagePropsKey.subject, subject)(message);
@@ -76,9 +76,10 @@ const clearNotApplicableProps = (message) => {
76
76
  return messageNext;
77
77
  };
78
78
  const replaceBodyTemplateVariables = ({ i18n, user }) => (message) => {
79
- var _a, _b;
80
- const body = (_a = getBody(message)) !== null && _a !== void 0 ? _a : '';
81
- const titleKey = (_b = user.props) === null || _b === void 0 ? void 0 : _b.title;
79
+ var _a;
80
+ var _b;
81
+ const body = (_b = getBody(message)) !== null && _b !== void 0 ? _b : '';
82
+ const titleKey = (_a = user.props) === null || _a === void 0 ? void 0 : _a.title;
82
83
  const name = user.name;
83
84
  const titleAndNameParts = [];
84
85
  if (utils_1.Objects.isNotEmpty(name)) {
@@ -1 +1 @@
1
- {"version":3,"file":"messages.js","sourceRoot":"","sources":["../../src/message/messages.ts"],"names":[],"mappings":"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","sourcesContent":["import { AuthGroupName, User, Users, UserTitle } from '../auth'\nimport type { I18n } from '../common'\nimport { Objects } from '../utils'\n\nimport { Message, MessageNotificationType, MessagePropsKey, MessageStatus, MessageTargetUserType } from './message'\n\nconst hiddenProps = [\n MessagePropsKey.targetUserEmails,\n MessagePropsKey.targetUserUuids,\n MessagePropsKey.targetExcludedUserEmails,\n]\n\nconst getStatus = (message: Message): MessageStatus => message.status\n\nconst getDateCreated = (message: Message): Date | undefined => message.dateCreated\n\nconst getDateModified = (message: Message): Date | undefined => message.dateModified\n\nconst getDateValidUntil = (message: Message): Date | undefined => message.props?.dateValidUntil\n\nconst getDateScheduledAt = (message: Message): Date | undefined => message.props?.dateScheduledAt\n\nconst getNotificationTypes = (message: Message): MessageNotificationType[] => message.props?.notificationTypes ?? []\n\nconst getSubject = (message: Message): string | undefined => message.props?.subject\n\nconst getBody = (message: Message): string | undefined => message.props?.body\n\nconst getTargetAppIds = (message: Message): string[] => message.props?.targetAppIds ?? []\n\nconst getTargetUserTypes = (message: Message): MessageTargetUserType[] => message.props?.targetUserTypes ?? []\n\nconst getTargetUserEmails = (message: Message): string[] => message.props?.targetUserEmails ?? []\n\nconst getTargetExcludedUserEmails = (message: Message): string[] => message.props?.targetExcludedUserEmails ?? []\n\nconst assocStatus =\n (status: MessageStatus) =>\n (message: Message): Message =>\n Objects.assoc({ obj: message, prop: 'status', value: status })\n\nconst assocProp =\n (propKey: MessagePropsKey, propValue: any) =>\n (message: Message): Message =>\n Objects.assocPath({ obj: message, path: ['props', propKey], value: propValue })\n\nconst assocSubject =\n (subject: string) =>\n (message: Message): Message =>\n assocProp(MessagePropsKey.subject, subject)(message)\n\nconst assocBody =\n (body: string) =>\n (message: Message): Message =>\n assocProp(MessagePropsKey.body, body)(message)\n\nconst assocNotificationTypes =\n (notificationTypes: MessageNotificationType[]) =>\n (message: Message): Message =>\n assocProp(MessagePropsKey.notificationTypes, notificationTypes)(message)\n\nconst assocTargetAppIds =\n (targetAppIds: string[]) =>\n (message: Message): Message =>\n assocProp(MessagePropsKey.targetAppIds, targetAppIds)(message)\n\nconst assocTargetUserTypes =\n (targetUserTypes: MessageTargetUserType[]) =>\n (message: Message): Message =>\n assocProp(MessagePropsKey.targetUserTypes, targetUserTypes)(message)\n\nconst assocTargetUserEmails =\n (emails: string[]) =>\n (message: Message): Message =>\n assocProp(MessagePropsKey.targetUserEmails, emails)(message)\n\nconst assocTargetExcludedUserEmails =\n (emails: string[]) =>\n (message: Message): Message =>\n assocProp(MessagePropsKey.targetExcludedUserEmails, emails)(message)\n\nconst assocDateValidUntil =\n (dateValidUntil: Date | undefined) =>\n (message: Message): Message =>\n assocProp(MessagePropsKey.dateValidUntil, dateValidUntil)(message)\n\nconst isTargetingUser =\n (user: User) =>\n (message: Message): boolean => {\n const now = Date.now()\n // dates can be strings (e.g. when the message comes from JSON): compare timestamps\n const validUntil = getDateValidUntil(message)\n if (validUntil && new Date(validUntil).getTime() < now) {\n return false\n }\n const scheduledAt = getDateScheduledAt(message)\n if (scheduledAt && new Date(scheduledAt).getTime() > now) {\n return false\n }\n const targets = getTargetUserTypes(message)\n if (targets.includes(MessageTargetUserType.Individual)) {\n return getTargetUserEmails(message).includes(user.email)\n }\n if (getTargetExcludedUserEmails(message).includes(user.email)) {\n return false\n }\n return (\n targets.includes(MessageTargetUserType.All) ||\n (targets.includes(MessageTargetUserType.SystemAdmins) && Users.isSystemAdmin(user)) ||\n (targets.includes(MessageTargetUserType.SurveyAdmins) &&\n !!Users.getAuthGroupByName(AuthGroupName.surveyAdmin)(user)) ||\n (targets.includes(MessageTargetUserType.SurveyManagers) && Users.isSurveyManager(user)) ||\n (targets.includes(MessageTargetUserType.DataAnalysts) &&\n !!Users.getAuthGroupByName(AuthGroupName.dataAnalyst)(user)) ||\n (targets.includes(MessageTargetUserType.DataCleaners) &&\n !!Users.getAuthGroupByName(AuthGroupName.dataCleanser)(user)) ||\n (targets.includes(MessageTargetUserType.DataEditors) &&\n !!Users.getAuthGroupByName(AuthGroupName.dataEditor)(user))\n )\n }\n\nconst clearHiddenProps = (message: Message): Message => {\n return hiddenProps.reduce((msg, prop) => assocProp(prop, undefined)(msg), message)\n}\n\nconst clearNotApplicableProps = (message: Message): Message => {\n const targets = getTargetUserTypes(message)\n let messageNext = message\n const targetEmailsNext = targets.includes(MessageTargetUserType.Individual) ? getTargetUserEmails(message) : []\n messageNext = assocTargetUserEmails(targetEmailsNext)(messageNext)\n const excludedEmailsNext = targets.includes(MessageTargetUserType.Individual)\n ? []\n : getTargetExcludedUserEmails(message)\n messageNext = assocTargetExcludedUserEmails(excludedEmailsNext)(messageNext)\n return messageNext\n}\n\nconst replaceBodyTemplateVariables =\n ({ i18n, user }: { i18n: I18n; user: User }) =>\n (message: Message): Message => {\n const body = getBody(message) ?? ''\n const titleKey = user.props?.title\n const name = user.name\n const titleAndNameParts = []\n if (Objects.isNotEmpty(name)) {\n titleAndNameParts.push(name)\n }\n if (Objects.isNotEmpty(titleKey) && UserTitle.preferNotToSay !== titleKey) {\n const title = i18n.t(`user.titleValues.${titleKey}`)\n titleAndNameParts.unshift(title)\n }\n const userTitleAndName = titleAndNameParts.length > 0 ? titleAndNameParts.join(' ') : 'User'\n const bodyFixed = body\n .replaceAll('{{userTitleAndName}}', userTitleAndName)\n .replaceAll('{{userName}}', name ?? 'User')\n return assocBody(bodyFixed)(message)\n }\n\nexport const Messages = {\n getStatus,\n getDateCreated,\n getDateModified,\n getDateScheduledAt,\n getDateValidUntil,\n getNotificationTypes,\n getSubject,\n getBody,\n getTargetAppIds,\n getTargetUserTypes,\n getTargetUserEmails,\n getTargetExcludedUserEmails,\n assocStatus,\n assocSubject,\n assocBody,\n assocNotificationTypes,\n assocTargetAppIds,\n assocTargetUserTypes,\n assocTargetUserEmails,\n assocTargetExcludedUserEmails,\n assocDateValidUntil,\n isTargetingUser,\n clearHiddenProps,\n clearNotApplicableProps,\n replaceBodyTemplateVariables,\n}\n"]}
1
+ {"version":3,"file":"messages.js","sourceRoot":"","sources":["../../src/message/messages.ts"],"names":[],"mappings":"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","sourcesContent":["import { AuthGroupName, User, Users, UserTitle } from '../auth'\nimport type { I18n } from '../common'\nimport { Objects } from '../utils'\n\nimport { Message, MessageNotificationType, MessagePropsKey, MessageStatus, MessageTargetUserType } from './message'\n\nconst hiddenProps = [\n MessagePropsKey.targetUserEmails,\n MessagePropsKey.targetUserUuids,\n MessagePropsKey.targetExcludedUserEmails,\n]\n\nconst getStatus = (message: Message): MessageStatus => message.status\n\nconst getDateCreated = (message: Message): Date | undefined => message.dateCreated\n\nconst getDateModified = (message: Message): Date | undefined => message.dateModified\n\nconst getDateValidUntil = (message: Message): Date | undefined => message.props?.dateValidUntil\n\nconst getDateScheduledAt = (message: Message): Date | undefined => message.props?.dateScheduledAt\n\nconst getNotificationTypes = (message: Message): MessageNotificationType[] => message.props?.notificationTypes ?? []\n\nconst getSubject = (message: Message): string | undefined => message.props?.subject\n\nconst getBody = (message: Message): string | undefined => message.props?.body\n\nconst getTargetAppIds = (message: Message): string[] => message.props?.targetAppIds ?? []\n\nconst getTargetUserTypes = (message: Message): MessageTargetUserType[] => message.props?.targetUserTypes ?? []\n\nconst getTargetUserEmails = (message: Message): string[] => message.props?.targetUserEmails ?? []\n\nconst getTargetExcludedUserEmails = (message: Message): string[] => message.props?.targetExcludedUserEmails ?? []\n\nconst assocStatus =\n (status: MessageStatus) =>\n (message: Message): Message =>\n Objects.assoc({ obj: message, prop: 'status', value: status })\n\nconst assocProp =\n (propKey: MessagePropsKey, propValue: any) =>\n (message: Message): Message =>\n Objects.assocPath({ obj: message, path: ['props', propKey], value: propValue })\n\nconst assocSubject =\n (subject: string) =>\n (message: Message): Message =>\n assocProp(MessagePropsKey.subject, subject)(message)\n\nconst assocBody =\n (body: string) =>\n (message: Message): Message =>\n assocProp(MessagePropsKey.body, body)(message)\n\nconst assocNotificationTypes =\n (notificationTypes: MessageNotificationType[]) =>\n (message: Message): Message =>\n assocProp(MessagePropsKey.notificationTypes, notificationTypes)(message)\n\nconst assocTargetAppIds =\n (targetAppIds: string[]) =>\n (message: Message): Message =>\n assocProp(MessagePropsKey.targetAppIds, targetAppIds)(message)\n\nconst assocTargetUserTypes =\n (targetUserTypes: MessageTargetUserType[]) =>\n (message: Message): Message =>\n assocProp(MessagePropsKey.targetUserTypes, targetUserTypes)(message)\n\nconst assocTargetUserEmails =\n (emails: string[]) =>\n (message: Message): Message =>\n assocProp(MessagePropsKey.targetUserEmails, emails)(message)\n\nconst assocTargetExcludedUserEmails =\n (emails: string[]) =>\n (message: Message): Message =>\n assocProp(MessagePropsKey.targetExcludedUserEmails, emails)(message)\n\nconst assocDateValidUntil =\n (dateValidUntil: Date | undefined) =>\n (message: Message): Message =>\n assocProp(MessagePropsKey.dateValidUntil, dateValidUntil)(message)\n\nconst isTargetingUser =\n (user: User) =>\n (message: Message): boolean => {\n const now = Date.now()\n // dates can be strings (e.g. when the message comes from JSON): compare timestamps\n const validUntil = getDateValidUntil(message)\n if (validUntil && new Date(validUntil).getTime() < now) {\n return false\n }\n const scheduledAt = getDateScheduledAt(message)\n if (scheduledAt && new Date(scheduledAt).getTime() > now) {\n return false\n }\n const targets = getTargetUserTypes(message)\n if (targets.includes(MessageTargetUserType.Individual)) {\n return getTargetUserEmails(message).includes(user.email)\n }\n if (getTargetExcludedUserEmails(message).includes(user.email)) {\n return false\n }\n return (\n targets.includes(MessageTargetUserType.All) ||\n (targets.includes(MessageTargetUserType.SystemAdmins) && Users.isSystemAdmin(user)) ||\n (targets.includes(MessageTargetUserType.SurveyAdmins) &&\n !!Users.getAuthGroupByName(AuthGroupName.surveyAdmin)(user)) ||\n (targets.includes(MessageTargetUserType.SurveyManagers) && Users.isSurveyManager(user)) ||\n (targets.includes(MessageTargetUserType.DataAnalysts) &&\n !!Users.getAuthGroupByName(AuthGroupName.dataAnalyst)(user)) ||\n (targets.includes(MessageTargetUserType.DataCleaners) &&\n !!Users.getAuthGroupByName(AuthGroupName.dataCleanser)(user)) ||\n (targets.includes(MessageTargetUserType.DataEditors) &&\n !!Users.getAuthGroupByName(AuthGroupName.dataEditor)(user))\n )\n }\n\nconst clearHiddenProps = (message: Message): Message => {\n return hiddenProps.reduce((msg, prop) => assocProp(prop, undefined)(msg), message)\n}\n\nconst clearNotApplicableProps = (message: Message): Message => {\n const targets = getTargetUserTypes(message)\n let messageNext = message\n const targetEmailsNext = targets.includes(MessageTargetUserType.Individual) ? getTargetUserEmails(message) : []\n messageNext = assocTargetUserEmails(targetEmailsNext)(messageNext)\n const excludedEmailsNext = targets.includes(MessageTargetUserType.Individual)\n ? []\n : getTargetExcludedUserEmails(message)\n messageNext = assocTargetExcludedUserEmails(excludedEmailsNext)(messageNext)\n return messageNext\n}\n\nconst replaceBodyTemplateVariables =\n ({ i18n, user }: { i18n: I18n; user: User }) =>\n (message: Message): Message => {\n const body = getBody(message) ?? ''\n const titleKey = user.props?.title\n const name = user.name\n const titleAndNameParts = []\n if (Objects.isNotEmpty(name)) {\n titleAndNameParts.push(name)\n }\n if (Objects.isNotEmpty(titleKey) && UserTitle.preferNotToSay !== titleKey) {\n const title = i18n.t(`user.titleValues.${titleKey}`)\n titleAndNameParts.unshift(title)\n }\n const userTitleAndName = titleAndNameParts.length > 0 ? titleAndNameParts.join(' ') : 'User'\n const bodyFixed = body\n .replaceAll('{{userTitleAndName}}', userTitleAndName)\n .replaceAll('{{userName}}', name ?? 'User')\n return assocBody(bodyFixed)(message)\n }\n\nexport const Messages = {\n getStatus,\n getDateCreated,\n getDateModified,\n getDateScheduledAt,\n getDateValidUntil,\n getNotificationTypes,\n getSubject,\n getBody,\n getTargetAppIds,\n getTargetUserTypes,\n getTargetUserEmails,\n getTargetExcludedUserEmails,\n assocStatus,\n assocSubject,\n assocBody,\n assocNotificationTypes,\n assocTargetAppIds,\n assocTargetUserTypes,\n assocTargetUserEmails,\n assocTargetExcludedUserEmails,\n assocDateValidUntil,\n isTargetingUser,\n clearHiddenProps,\n clearNotApplicableProps,\n replaceBodyTemplateVariables,\n}\n"]}
@@ -4,7 +4,8 @@ exports.NodePlaceholderFactory = exports.NodeFactory = void 0;
4
4
  const utils_1 = require("../utils");
5
5
  exports.NodeFactory = {
6
6
  createInstance: (params) => {
7
- var _a, _b;
7
+ var _a;
8
+ var _b;
8
9
  const { nodeDefUuid, recordUuid, parentNode, surveyUuid, value } = params;
9
10
  const now = utils_1.Dates.nowFormattedForStorage();
10
11
  return {
@@ -1 +1 @@
1
- {"version":3,"file":"factory.js","sourceRoot":"","sources":["../../src/node/factory.ts"],"names":[],"mappings":";;;AACA,oCAAuC;AAW1B,QAAA,WAAW,GAAqC;IAC3D,cAAc,EAAE,CAAC,MAAyB,EAAQ,EAAE;;QAClD,MAAM,EAAE,WAAW,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,KAAK,EAAE,GAAG,MAAM,CAAA;QACzE,MAAM,GAAG,GAAG,aAAK,CAAC,sBAAsB,EAAE,CAAA;QAE1C,OAAO;YACL,OAAO,EAAE,IAAI;YACb,WAAW,EAAE,GAAG;YAChB,YAAY,EAAE,GAAG;YACjB,IAAI,EAAE;gBACJ,CAAC,EAAE,CAAC,GAAG,CAAC,MAAA,MAAA,UAAU,aAAV,UAAU,uBAAV,UAAU,CAAE,IAAI,0CAAE,CAAC,mCAAI,EAAE,CAAC,EAAE,GAAG,CAAC,CAAA,UAAU,aAAV,UAAU,uBAAV,UAAU,CAAE,IAAI,EAAC,CAAC,CAAC,CAAC,UAAU,aAAV,UAAU,uBAAV,UAAU,CAAE,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;aACrF;YACD,WAAW;YACX,UAAU,EAAE,UAAU,aAAV,UAAU,uBAAV,UAAU,CAAE,IAAI;YAC5B,UAAU;YACV,UAAU;YACV,KAAK;YACL,IAAI,EAAE,aAAK,CAAC,EAAE,EAAE;SACjB,CAAA;IACH,CAAC;CACF,CAAA;AAEY,QAAA,sBAAsB,GAAqC;IACtE,cAAc,EAAE,CAAC,MAAyB,EAAQ,EAAE;QAClD,uCACK,mBAAW,CAAC,cAAc,CAAC,MAAM,CAAC,KACrC,WAAW,EAAE,IAAI,IAClB;IACH,CAAC;CACF,CAAA","sourcesContent":["import { Factory } from '../common'\nimport { Dates, UUIDs } from '../utils'\nimport { Node } from './node'\n\nexport type NodeFactoryParams = {\n nodeDefUuid: string\n recordUuid: string\n parentNode?: Node\n surveyUuid?: string\n value?: any\n}\n\nexport const NodeFactory: Factory<Node, NodeFactoryParams> = {\n createInstance: (params: NodeFactoryParams): Node => {\n const { nodeDefUuid, recordUuid, parentNode, surveyUuid, value } = params\n const now = Dates.nowFormattedForStorage()\n\n return {\n created: true,\n dateCreated: now,\n dateModified: now,\n meta: {\n h: [...(parentNode?.meta?.h ?? []), ...(parentNode?.uuid ? [parentNode?.uuid] : [])],\n },\n nodeDefUuid,\n parentUuid: parentNode?.uuid,\n recordUuid,\n surveyUuid,\n value,\n uuid: UUIDs.v4(),\n }\n },\n}\n\nexport const NodePlaceholderFactory: Factory<Node, NodeFactoryParams> = {\n createInstance: (params: NodeFactoryParams): Node => {\n return {\n ...NodeFactory.createInstance(params),\n placeholder: true,\n }\n },\n}\n"]}
1
+ {"version":3,"file":"factory.js","sourceRoot":"","sources":["../../src/node/factory.ts"],"names":[],"mappings":";;;AACA,oCAAuC;AAW1B,QAAA,WAAW,GAAqC;IAC3D,cAAc,EAAE,CAAC,MAAyB,EAAQ,EAAE;;;QAClD,MAAM,EAAE,WAAW,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,KAAK,EAAE,GAAG,MAAM,CAAA;QACzE,MAAM,GAAG,GAAG,aAAK,CAAC,sBAAsB,EAAE,CAAA;QAE1C,OAAO;YACL,OAAO,EAAE,IAAI;YACb,WAAW,EAAE,GAAG;YAChB,YAAY,EAAE,GAAG;YACjB,IAAI,EAAE;gBACJ,CAAC,EAAE,CAAC,GAAG,OAAC,MAAA,UAAU,aAAV,UAAU,uBAAV,UAAU,CAAE,IAAI,0CAAE,CAAC,mCAAI,EAAE,CAAC,EAAE,GAAG,CAAC,CAAA,UAAU,aAAV,UAAU,uBAAV,UAAU,CAAE,IAAI,EAAC,CAAC,CAAC,CAAC,UAAU,aAAV,UAAU,uBAAV,UAAU,CAAE,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;aACrF;YACD,WAAW;YACX,UAAU,EAAE,UAAU,aAAV,UAAU,uBAAV,UAAU,CAAE,IAAI;YAC5B,UAAU;YACV,UAAU;YACV,KAAK;YACL,IAAI,EAAE,aAAK,CAAC,EAAE,EAAE;SACjB,CAAA;IACH,CAAC;CACF,CAAA;AAEY,QAAA,sBAAsB,GAAqC;IACtE,cAAc,EAAE,CAAC,MAAyB,EAAQ,EAAE;QAClD,uCACK,QAAA,WAAW,CAAC,cAAc,CAAC,MAAM,CAAC,KACrC,WAAW,EAAE,IAAI,IAClB;IACH,CAAC;CACF,CAAA","sourcesContent":["import { Factory } from '../common'\nimport { Dates, UUIDs } from '../utils'\nimport { Node } from './node'\n\nexport type NodeFactoryParams = {\n nodeDefUuid: string\n recordUuid: string\n parentNode?: Node\n surveyUuid?: string\n value?: any\n}\n\nexport const NodeFactory: Factory<Node, NodeFactoryParams> = {\n createInstance: (params: NodeFactoryParams): Node => {\n const { nodeDefUuid, recordUuid, parentNode, surveyUuid, value } = params\n const now = Dates.nowFormattedForStorage()\n\n return {\n created: true,\n dateCreated: now,\n dateModified: now,\n meta: {\n h: [...(parentNode?.meta?.h ?? []), ...(parentNode?.uuid ? [parentNode?.uuid] : [])],\n },\n nodeDefUuid,\n parentUuid: parentNode?.uuid,\n recordUuid,\n surveyUuid,\n value,\n uuid: UUIDs.v4(),\n }\n },\n}\n\nexport const NodePlaceholderFactory: Factory<Node, NodeFactoryParams> = {\n createInstance: (params: NodeFactoryParams): Node => {\n return {\n ...NodeFactory.createInstance(params),\n placeholder: true,\n }\n },\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"node.js","sourceRoot":"","sources":["../../src/node/node.ts"],"names":[],"mappings":";;;AAGA,IAAY,QAGX;AAHD,WAAY,QAAQ;IAClB,yBAAa,CAAA;IACb,2BAAe,CAAA;AACjB,CAAC,EAHW,QAAQ,wBAAR,QAAQ,QAGnB;AAED,IAAY,YAEX;AAFD,WAAY,YAAY;IACtB,uBAAO,CAAA;AACT,CAAC,EAFW,YAAY,4BAAZ,YAAY,QAEvB","sourcesContent":["import { CategoryItem } from '../category'\nimport { Taxon } from '../taxonomy'\n\nexport enum NodeKeys {\n meta = 'meta',\n value = 'value',\n}\n\nexport enum NodeMetaKeys {\n h = 'h',\n}\n\nexport interface NodeMeta {\n /**\n * Applicability of the node children (by definition UUID). If not defined, the children are applicable by default.\n */\n childApplicability?: { [uuid: string]: boolean }\n /**\n * Whether the node children (by definition UUID) are editable (true) or read-only (false).\n * If not defined, the children are editable by default.\n */\n cEdit?: { [uuid: string]: boolean }\n /**\n * Maximum number of children (by definition UUID) for the node.\n */\n childrenMaxCount?: { [uuid: string]: number }\n /**\n * Minimum number of children (by definition UUID) for the node.\n */\n childrenMinCount?: { [uuid: string]: number }\n /**\n * Whether the node children (by definition UUID) are visible (true) or hidden (false).\n * If not defined, the children are visible by default.\n */\n cVis?: { [uuid: string]: boolean }\n /**\n * Hierarchy of ancestor node UUIDs.\n */\n h?: string[]\n /**\n * Hierarchy of code attribute ancestor UUIDs (according to the parent code defs specified).\n */\n hCode?: string[]\n /**\n * True if the value has been auto-filled from the node default value\n */\n defaultValueApplied?: boolean\n /**\n * True if the value has been auto-filled from the user group qualifier\n */\n qualifierValueApplied?: boolean\n}\n\nexport interface NodeRefData {\n categoryItem?: CategoryItem\n taxon?: Taxon\n}\n\nexport interface Node {\n dateCreated?: string\n dateModified?: string\n id?: number\n meta?: NodeMeta\n nodeDefUuid: string\n parentUuid?: string\n recordUuid: string\n refData?: NodeRefData\n uuid: string\n value?: any\n placeholder?: boolean\n surveyUuid?: string\n\n // transient status variables\n /**\n * Record node has been created but not persisted yet.\n */\n created?: boolean\n /**\n * Record node has been deleted.\n */\n deleted?: boolean\n /**\n * Record node has been modified but not persisted yet.\n */\n updated?: boolean\n}\n\nexport interface NodesMap {\n [key: string]: Node\n}\n"]}
1
+ {"version":3,"file":"node.js","sourceRoot":"","sources":["../../src/node/node.ts"],"names":[],"mappings":";;;AAGA,IAAY,QAGX;AAHD,WAAY,QAAQ;IAClB,yBAAa,CAAA;IACb,2BAAe,CAAA;AACjB,CAAC,EAHW,QAAQ,aAAR,QAAQ,GAAR,QAAQ,QAGnB;AAED,IAAY,YAEX;AAFD,WAAY,YAAY;IACtB,uBAAO,CAAA;AACT,CAAC,EAFW,YAAY,aAAZ,YAAY,GAAZ,YAAY,QAEvB","sourcesContent":["import { CategoryItem } from '../category'\nimport { Taxon } from '../taxonomy'\n\nexport enum NodeKeys {\n meta = 'meta',\n value = 'value',\n}\n\nexport enum NodeMetaKeys {\n h = 'h',\n}\n\nexport interface NodeMeta {\n /**\n * Applicability of the node children (by definition UUID). If not defined, the children are applicable by default.\n */\n childApplicability?: { [uuid: string]: boolean }\n /**\n * Whether the node children (by definition UUID) are editable (true) or read-only (false).\n * If not defined, the children are editable by default.\n */\n cEdit?: { [uuid: string]: boolean }\n /**\n * Maximum number of children (by definition UUID) for the node.\n */\n childrenMaxCount?: { [uuid: string]: number }\n /**\n * Minimum number of children (by definition UUID) for the node.\n */\n childrenMinCount?: { [uuid: string]: number }\n /**\n * Whether the node children (by definition UUID) are visible (true) or hidden (false).\n * If not defined, the children are visible by default.\n */\n cVis?: { [uuid: string]: boolean }\n /**\n * Hierarchy of ancestor node UUIDs.\n */\n h?: string[]\n /**\n * Hierarchy of code attribute ancestor UUIDs (according to the parent code defs specified).\n */\n hCode?: string[]\n /**\n * True if the value has been auto-filled from the node default value\n */\n defaultValueApplied?: boolean\n /**\n * True if the value has been auto-filled from the user group qualifier\n */\n qualifierValueApplied?: boolean\n}\n\nexport interface NodeRefData {\n categoryItem?: CategoryItem\n taxon?: Taxon\n}\n\nexport interface Node {\n dateCreated?: string\n dateModified?: string\n id?: number\n meta?: NodeMeta\n nodeDefUuid: string\n parentUuid?: string\n recordUuid: string\n refData?: NodeRefData\n uuid: string\n value?: any\n placeholder?: boolean\n surveyUuid?: string\n\n // transient status variables\n /**\n * Record node has been created but not persisted yet.\n */\n created?: boolean\n /**\n * Record node has been deleted.\n */\n deleted?: boolean\n /**\n * Record node has been modified but not persisted yet.\n */\n updated?: boolean\n}\n\nexport interface NodesMap {\n [key: string]: Node\n}\n"]}
@@ -12,7 +12,8 @@ type FormatParams = {
12
12
  quoteLabels?: boolean;
13
13
  lang?: LanguageCode;
14
14
  };
15
+ declare const format: (params: FormatParams) => any;
15
16
  export declare const NodeValueFormatter: {
16
- format: (params: FormatParams) => any;
17
+ format: typeof format;
17
18
  };
18
19
  export {};
@@ -8,7 +8,8 @@ const taxonomy_1 = require("../taxonomy");
8
8
  const utils_1 = require("../utils");
9
9
  const nodeValues_1 = require("./nodeValues");
10
10
  const extractCategoryItem = (params) => {
11
- var _a, _b;
11
+ var _a;
12
+ var _b;
12
13
  const { survey, node, value } = params;
13
14
  const itemUuid = nodeValues_1.NodeValues.getValueItemUuid(value);
14
15
  if (!itemUuid)
@@ -1 +1 @@
1
- {"version":3,"file":"nodeValueFormatter.js","sourceRoot":"","sources":["../../src/node/nodeValueFormatter.ts"],"names":[],"mappings":"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","sourcesContent":["import { CategoryItem, CategoryItems } from '../category'\nimport { LanguageCode } from '../language'\nimport { NodeDef, NodeDefCode, NodeDefDecimal, NodeDefs, NodeDefType } from '../nodeDef'\nimport { Survey, Surveys } from '../survey'\nimport { Taxa } from '../taxonomy'\nimport { DateFormats, Dates, Numbers, Objects, Strings } from '../utils'\nimport { Node } from './node'\nimport { NodeValues } from './nodeValues'\n\nconst extractCategoryItem = (params: { survey: Survey; node?: Node; value: any }): CategoryItem | undefined => {\n const { survey, node, value } = params\n\n const itemUuid = NodeValues.getValueItemUuid(value)\n if (!itemUuid) return undefined\n\n const item = node?.refData?.categoryItem ?? Surveys.getCategoryItemByUuid({ survey, itemUuid })\n // check the validity of the reference data category item\n return item?.props && Objects.isNotEmpty(CategoryItems.getCode(item)) ? item : undefined\n}\n\ntype FormatParams = {\n survey: Survey\n cycle: string\n nodeDef: NodeDef<NodeDefType>\n node?: Node\n value: any\n showLabel?: boolean\n quoteLabels?: boolean\n lang?: LanguageCode\n}\n\nconst formatters: { [key in NodeDefType]?: (params: FormatParams) => any } = {\n [NodeDefType.code]: (params: FormatParams) => {\n const { survey, cycle, nodeDef, node, value, showLabel, quoteLabels, lang } = params\n\n if (!showLabel) {\n // item code already inside value, no need to get category item\n const itemCode = NodeValues.getValueCode(value)\n if (!Objects.isEmpty(itemCode)) return itemCode\n }\n const categoryItem = extractCategoryItem({ survey, node, value })\n if (!categoryItem) return null\n\n if (showLabel) {\n let result\n if (NodeDefs.isCodeShown(cycle)(nodeDef as NodeDefCode)) {\n result = CategoryItems.getLabelWithCode(categoryItem, lang!)\n } else {\n result = CategoryItems.getLabel(categoryItem, lang!, true)\n }\n return quoteLabels ? Strings.quote(result) : result\n }\n return CategoryItems.getCode(categoryItem)\n },\n [NodeDefType.date]: (params: FormatParams) => {\n const { value } = params\n const dateParsed = Dates.parseISO(value)\n return Dates.format(dateParsed, DateFormats.dateDisplay)\n },\n [NodeDefType.decimal]: (params: FormatParams) => {\n const { value, nodeDef } = params\n return Numbers.formatDecimal(value, NodeDefs.getMaxNumberDecimalDigits(nodeDef as NodeDefDecimal))\n },\n [NodeDefType.integer]: (params: FormatParams) => {\n const { value } = params\n return Numbers.formatInteger(Number(value))\n },\n [NodeDefType.taxon]: (params: FormatParams) => {\n const { survey, value, showLabel } = params\n const taxonUuid = NodeValues.getValueTaxonUuid(value)\n if (!taxonUuid) return null\n const taxon = Surveys.getTaxonByUuid({ survey, taxonUuid })\n if (!taxon) return null\n return showLabel ? Taxa.getScientificName(taxon) : Taxa.getCode(taxon)\n },\n [NodeDefType.text]: (params: FormatParams) => {\n const { value, quoteLabels } = params\n return quoteLabels ? Strings.quote(value) : value\n },\n}\n\nconst format = (params: FormatParams) => {\n const { nodeDef, value } = params\n if (Objects.isEmpty(value)) {\n return ''\n }\n const formatter = formatters[NodeDefs.getType(nodeDef)]\n const formatValue = (v: any) => (formatter ? formatter({ ...params, value: v }) : v)\n\n return NodeDefs.isMultiple(nodeDef) && Array.isArray(value) ? value.map(formatValue).join(', ') : formatValue(value)\n}\n\nexport const NodeValueFormatter = {\n format,\n}\n"]}
1
+ {"version":3,"file":"nodeValueFormatter.js","sourceRoot":"","sources":["../../src/node/nodeValueFormatter.ts"],"names":[],"mappings":"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","sourcesContent":["import { CategoryItem, CategoryItems } from '../category'\nimport { LanguageCode } from '../language'\nimport { NodeDef, NodeDefCode, NodeDefDecimal, NodeDefs, NodeDefType } from '../nodeDef'\nimport { Survey, Surveys } from '../survey'\nimport { Taxa } from '../taxonomy'\nimport { DateFormats, Dates, Numbers, Objects, Strings } from '../utils'\nimport { Node } from './node'\nimport { NodeValues } from './nodeValues'\n\nconst extractCategoryItem = (params: { survey: Survey; node?: Node; value: any }): CategoryItem | undefined => {\n const { survey, node, value } = params\n\n const itemUuid = NodeValues.getValueItemUuid(value)\n if (!itemUuid) return undefined\n\n const item = node?.refData?.categoryItem ?? Surveys.getCategoryItemByUuid({ survey, itemUuid })\n // check the validity of the reference data category item\n return item?.props && Objects.isNotEmpty(CategoryItems.getCode(item)) ? item : undefined\n}\n\ntype FormatParams = {\n survey: Survey\n cycle: string\n nodeDef: NodeDef<NodeDefType>\n node?: Node\n value: any\n showLabel?: boolean\n quoteLabels?: boolean\n lang?: LanguageCode\n}\n\nconst formatters: { [key in NodeDefType]?: (params: FormatParams) => any } = {\n [NodeDefType.code]: (params: FormatParams) => {\n const { survey, cycle, nodeDef, node, value, showLabel, quoteLabels, lang } = params\n\n if (!showLabel) {\n // item code already inside value, no need to get category item\n const itemCode = NodeValues.getValueCode(value)\n if (!Objects.isEmpty(itemCode)) return itemCode\n }\n const categoryItem = extractCategoryItem({ survey, node, value })\n if (!categoryItem) return null\n\n if (showLabel) {\n let result\n if (NodeDefs.isCodeShown(cycle)(nodeDef as NodeDefCode)) {\n result = CategoryItems.getLabelWithCode(categoryItem, lang!)\n } else {\n result = CategoryItems.getLabel(categoryItem, lang!, true)\n }\n return quoteLabels ? Strings.quote(result) : result\n }\n return CategoryItems.getCode(categoryItem)\n },\n [NodeDefType.date]: (params: FormatParams) => {\n const { value } = params\n const dateParsed = Dates.parseISO(value)\n return Dates.format(dateParsed, DateFormats.dateDisplay)\n },\n [NodeDefType.decimal]: (params: FormatParams) => {\n const { value, nodeDef } = params\n return Numbers.formatDecimal(value, NodeDefs.getMaxNumberDecimalDigits(nodeDef as NodeDefDecimal))\n },\n [NodeDefType.integer]: (params: FormatParams) => {\n const { value } = params\n return Numbers.formatInteger(Number(value))\n },\n [NodeDefType.taxon]: (params: FormatParams) => {\n const { survey, value, showLabel } = params\n const taxonUuid = NodeValues.getValueTaxonUuid(value)\n if (!taxonUuid) return null\n const taxon = Surveys.getTaxonByUuid({ survey, taxonUuid })\n if (!taxon) return null\n return showLabel ? Taxa.getScientificName(taxon) : Taxa.getCode(taxon)\n },\n [NodeDefType.text]: (params: FormatParams) => {\n const { value, quoteLabels } = params\n return quoteLabels ? Strings.quote(value) : value\n },\n}\n\nconst format = (params: FormatParams) => {\n const { nodeDef, value } = params\n if (Objects.isEmpty(value)) {\n return ''\n }\n const formatter = formatters[NodeDefs.getType(nodeDef)]\n const formatValue = (v: any) => (formatter ? formatter({ ...params, value: v }) : v)\n\n return NodeDefs.isMultiple(nodeDef) && Array.isArray(value) ? value.map(formatValue).join(', ') : formatValue(value)\n}\n\nexport const NodeValueFormatter = {\n format,\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"nodeValueProps.js","sourceRoot":"","sources":["../../src/node/nodeValueProps.ts"],"names":[],"mappings":";;;AAAA,IAAY,cAIX;AAJD,WAAY,cAAc;IACxB,+BAAa,CAAA;IACb,uCAAqB,CAAA;IACrB,iCAAe,CAAA;AACjB,CAAC,EAJW,cAAc,8BAAd,cAAc,QAIzB;AAED,IAAY,oBAOX;AAPD,WAAY,oBAAoB;IAC9B,+BAAO,CAAA;IACP,+BAAO,CAAA;IACP,mCAAW,CAAA;IACX,6CAAqB,CAAA;IACrB,6CAAqB,CAAA;IACrB,6DAAqC,CAAA;AACvC,CAAC,EAPW,oBAAoB,oCAApB,oBAAoB,QAO/B;AAED,IAAY,cAIX;AAJD,WAAY,cAAc;IACxB,6BAAW,CAAA;IACX,iCAAe,CAAA;IACf,+BAAa,CAAA;AACf,CAAC,EAJW,cAAc,8BAAd,cAAc,QAIzB;AAED,IAAY,cAKX;AALD,WAAY,cAAc;IACxB,uCAAqB,CAAA;IACrB,uCAAqB,CAAA;IACrB,2DAAyC,CAAA;IACzC,uCAAqB,CAAA;AACvB,CAAC,EALW,cAAc,8BAAd,cAAc,QAKzB;AAED,IAAY,eAMX;AAND,WAAY,eAAe;IACzB,gCAAa,CAAA;IACb,oDAAiC,CAAA;IACjC,0CAAuB,CAAA;IACvB,oDAAiC,CAAA;IACjC,4DAAyC,CAAA;AAC3C,CAAC,EANW,eAAe,+BAAf,eAAe,QAM1B;AAED,IAAY,cAIX;AAJD,WAAY,cAAc;IACxB,+BAAa,CAAA;IACb,mCAAiB,CAAA;IACjB,qCAAmB,CAAA;AACrB,CAAC,EAJW,cAAc,8BAAd,cAAc,QAIzB","sourcesContent":["export enum ValuePropsCode {\n code = 'code',\n itemUuid = 'itemUuid',\n label = 'label',\n}\n\nexport enum ValuePropsCoordinate {\n x = 'x',\n y = 'y',\n srs = 'srs',\n accuracy = 'accuracy',\n altitude = 'altitude',\n altitudeAccuracy = 'altitudeAccuracy',\n}\n\nexport enum ValuePropsDate {\n day = 'day',\n month = 'month',\n year = 'year',\n}\n\nexport enum ValuePropsFile {\n fileUuid = 'fileUuid',\n fileName = 'fileName',\n fileNameCalculated = 'fileNameCalculated',\n fileSize = 'fileSize',\n}\n\nexport enum ValuePropsTaxon {\n code = 'code',\n scientificName = 'scientificName',\n taxonUuid = 'taxonUuid',\n vernacularName = 'vernacularName',\n vernacularNameUuid = 'vernacularNameUuid',\n}\n\nexport enum ValuePropsTime {\n hour = 'hour',\n minute = 'minute',\n seconds = 'seconds',\n}\n"]}
1
+ {"version":3,"file":"nodeValueProps.js","sourceRoot":"","sources":["../../src/node/nodeValueProps.ts"],"names":[],"mappings":";;;AAAA,IAAY,cAIX;AAJD,WAAY,cAAc;IACxB,+BAAa,CAAA;IACb,uCAAqB,CAAA;IACrB,iCAAe,CAAA;AACjB,CAAC,EAJW,cAAc,aAAd,cAAc,GAAd,cAAc,QAIzB;AAED,IAAY,oBAOX;AAPD,WAAY,oBAAoB;IAC9B,+BAAO,CAAA;IACP,+BAAO,CAAA;IACP,mCAAW,CAAA;IACX,6CAAqB,CAAA;IACrB,6CAAqB,CAAA;IACrB,6DAAqC,CAAA;AACvC,CAAC,EAPW,oBAAoB,aAApB,oBAAoB,GAApB,oBAAoB,QAO/B;AAED,IAAY,cAIX;AAJD,WAAY,cAAc;IACxB,6BAAW,CAAA;IACX,iCAAe,CAAA;IACf,+BAAa,CAAA;AACf,CAAC,EAJW,cAAc,aAAd,cAAc,GAAd,cAAc,QAIzB;AAED,IAAY,cAKX;AALD,WAAY,cAAc;IACxB,uCAAqB,CAAA;IACrB,uCAAqB,CAAA;IACrB,2DAAyC,CAAA;IACzC,uCAAqB,CAAA;AACvB,CAAC,EALW,cAAc,aAAd,cAAc,GAAd,cAAc,QAKzB;AAED,IAAY,eAMX;AAND,WAAY,eAAe;IACzB,gCAAa,CAAA;IACb,oDAAiC,CAAA;IACjC,0CAAuB,CAAA;IACvB,oDAAiC,CAAA;IACjC,4DAAyC,CAAA;AAC3C,CAAC,EANW,eAAe,aAAf,eAAe,GAAf,eAAe,QAM1B;AAED,IAAY,cAIX;AAJD,WAAY,cAAc;IACxB,+BAAa,CAAA;IACb,mCAAiB,CAAA;IACjB,qCAAmB,CAAA;AACrB,CAAC,EAJW,cAAc,aAAd,cAAc,GAAd,cAAc,QAIzB","sourcesContent":["export enum ValuePropsCode {\n code = 'code',\n itemUuid = 'itemUuid',\n label = 'label',\n}\n\nexport enum ValuePropsCoordinate {\n x = 'x',\n y = 'y',\n srs = 'srs',\n accuracy = 'accuracy',\n altitude = 'altitude',\n altitudeAccuracy = 'altitudeAccuracy',\n}\n\nexport enum ValuePropsDate {\n day = 'day',\n month = 'month',\n year = 'year',\n}\n\nexport enum ValuePropsFile {\n fileUuid = 'fileUuid',\n fileName = 'fileName',\n fileNameCalculated = 'fileNameCalculated',\n fileSize = 'fileSize',\n}\n\nexport enum ValuePropsTaxon {\n code = 'code',\n scientificName = 'scientificName',\n taxonUuid = 'taxonUuid',\n vernacularName = 'vernacularName',\n vernacularNameUuid = 'vernacularNameUuid',\n}\n\nexport enum ValuePropsTime {\n hour = 'hour',\n minute = 'minute',\n seconds = 'seconds',\n}\n"]}
@@ -13,6 +13,36 @@ export declare const ValuePropsByType: {
13
13
  [key: string]: string;
14
14
  } | null;
15
15
  };
16
+ declare const newCodeValue: (params: {
17
+ itemUuid: string;
18
+ }) => {
19
+ itemUuid: string;
20
+ };
21
+ declare const getItemUuid: (node: Node) => string | undefined;
22
+ declare const getValueCode: (value: any) => string | undefined;
23
+ declare const getValueItemUuid: (value: any) => string | undefined;
24
+ declare const getFileName: (node: Node) => string | undefined;
25
+ declare const getFileNameCalculated: (node: Node) => string | undefined;
26
+ declare const getFileSize: (node: Node) => string | undefined;
27
+ declare const getFileUuid: (node: Node) => string | undefined;
28
+ declare const getTaxonUuid: (node: Node) => string | undefined;
29
+ declare const getValueTaxonUuid: (value: any) => string | undefined;
30
+ declare const getScientificName: (node: Node) => string | undefined;
31
+ declare const getValueScientificName: (value: any) => string | undefined;
32
+ declare const getVernacularName: (node: Node) => string | undefined;
33
+ declare const getValueVernacularName: (value: any) => string | undefined;
34
+ declare const getVernacularNameUuid: (node: Node) => string | undefined;
35
+ declare const getValueVernacularNameUuid: (value: any) => string | undefined;
36
+ declare const getTimeSeconds: (node: Node) => number;
37
+ declare const isValueProp: (params: {
38
+ nodeDef: NodeDef<NodeDefType, NodeDefProps>;
39
+ prop: string;
40
+ }) => boolean;
41
+ declare const getNodeValueProp: (params: {
42
+ nodeDef: NodeDef<NodeDefType, NodeDefProps>;
43
+ node: Node;
44
+ prop: string;
45
+ }) => any;
16
46
  interface NodeValuesCompareParams {
17
47
  survey: Survey;
18
48
  nodeDef: NodeDef<NodeDefType, any>;
@@ -22,6 +52,11 @@ interface NodeValuesCompareParams {
22
52
  parentNode?: Node;
23
53
  strict?: boolean;
24
54
  }
55
+ declare const isValueEqual: (params: NodeValuesCompareParams) => boolean;
56
+ declare const getValueAsPoint: (params: {
57
+ survey: Survey;
58
+ node: Node;
59
+ }) => Point | null;
25
60
  export declare const NodeValues: {
26
61
  ValuePropsByType: {
27
62
  boolean: {
@@ -39,15 +74,18 @@ export declare const NodeValues: {
39
74
  decimal: {
40
75
  [key: string]: string;
41
76
  } | null;
42
- geo: {
43
- [key: string]: string;
44
- } | null;
45
77
  entity: {
46
78
  [key: string]: string;
47
79
  } | null;
48
80
  file: {
49
81
  [key: string]: string;
50
82
  } | null;
83
+ formHeader: {
84
+ [key: string]: string;
85
+ } | null;
86
+ geo: {
87
+ [key: string]: string;
88
+ } | null;
51
89
  integer: {
52
90
  [key: string]: string;
53
91
  } | null;
@@ -60,9 +98,6 @@ export declare const NodeValues: {
60
98
  time: {
61
99
  [key: string]: string;
62
100
  } | null;
63
- formHeader: {
64
- [key: string]: string;
65
- } | null;
66
101
  };
67
102
  ValuePropsCode: typeof ValuePropsCode;
68
103
  ValuePropsCoordinate: typeof ValuePropsCoordinate;
@@ -70,45 +105,31 @@ export declare const NodeValues: {
70
105
  ValuePropsFile: typeof ValuePropsFile;
71
106
  ValuePropsTaxon: typeof ValuePropsTaxon;
72
107
  ValuePropsTime: typeof ValuePropsTime;
73
- getNodeValueProp: (params: {
74
- nodeDef: NodeDef<NodeDefType, NodeDefProps>;
75
- node: Node;
76
- prop: string;
77
- }) => any;
78
- isValueProp: (params: {
79
- nodeDef: NodeDef<NodeDefType, NodeDefProps>;
80
- prop: string;
81
- }) => boolean;
82
- getValueAsPoint: (params: {
83
- survey: Survey;
84
- node: Node;
85
- }) => Point | null;
86
- newCodeValue: (params: {
87
- itemUuid: string;
88
- }) => {
89
- itemUuid: string;
90
- };
91
- getItemUuid: (node: Node) => string | undefined;
92
- getValueCode: (value: any) => string | undefined;
93
- getValueItemUuid: (value: any) => string | undefined;
108
+ getNodeValueProp: typeof getNodeValueProp;
109
+ isValueProp: typeof isValueProp;
110
+ getValueAsPoint: typeof getValueAsPoint;
111
+ newCodeValue: typeof newCodeValue;
112
+ getItemUuid: typeof getItemUuid;
113
+ getValueCode: typeof getValueCode;
114
+ getValueItemUuid: typeof getValueItemUuid;
94
115
  getDateYear: (node: Node) => number;
95
116
  getDateMonth: (node: Node) => number;
96
117
  getDateDay: (node: Node) => number;
97
- getFileName: (node: Node) => string | undefined;
98
- getFileNameCalculated: (node: Node) => string | undefined;
99
- getFileSize: (node: Node) => string | undefined;
100
- getFileUuid: (node: Node) => string | undefined;
101
- getTaxonUuid: (node: Node) => string | undefined;
102
- getValueTaxonUuid: (value: any) => string | undefined;
103
- getScientificName: (node: Node) => string | undefined;
104
- getValueScientificName: (value: any) => string | undefined;
105
- getVernacularName: (node: Node) => string | undefined;
106
- getValueVernacularName: (value: any) => string | undefined;
107
- getVernacularNameUuid: (node: Node) => string | undefined;
108
- getValueVernacularNameUuid: (value: any) => string | undefined;
118
+ getFileName: typeof getFileName;
119
+ getFileNameCalculated: typeof getFileNameCalculated;
120
+ getFileSize: typeof getFileSize;
121
+ getFileUuid: typeof getFileUuid;
122
+ getTaxonUuid: typeof getTaxonUuid;
123
+ getValueTaxonUuid: typeof getValueTaxonUuid;
124
+ getScientificName: typeof getScientificName;
125
+ getValueScientificName: typeof getValueScientificName;
126
+ getVernacularName: typeof getVernacularName;
127
+ getValueVernacularName: typeof getValueVernacularName;
128
+ getVernacularNameUuid: typeof getVernacularNameUuid;
129
+ getValueVernacularNameUuid: typeof getValueVernacularNameUuid;
109
130
  getTimeHour: (node: Node) => number;
110
131
  getTimeMinute: (node: Node) => number;
111
- getTimeSeconds: (node: Node) => number;
112
- isValueEqual: (params: NodeValuesCompareParams) => boolean;
132
+ getTimeSeconds: typeof getTimeSeconds;
133
+ isValueEqual: typeof isValueEqual;
113
134
  };
114
135
  export {};
@@ -46,9 +46,10 @@ const getItemUuid = (node) => getNodeValuePropRaw({ node, prop: nodeValueProps_1
46
46
  const getValueCode = (value) => getValuePropRaw({ value, prop: nodeValueProps_1.ValuePropsCode[nodeValueProps_1.ValuePropsCode.code] });
47
47
  const getValueItemUuid = (value) => getValuePropRaw({ value, prop: nodeValueProps_1.ValuePropsCode[nodeValueProps_1.ValuePropsCode.itemUuid] });
48
48
  const getDateTimePart = (params) => {
49
- var _a, _b;
49
+ var _a;
50
+ var _b;
50
51
  const { node, index, separator } = params;
51
- return Number((_b = ((_a = node.value) !== null && _a !== void 0 ? _a : '').split(separator)[index]) === null || _b === void 0 ? void 0 : _b.trim());
52
+ return Number((_a = ((_b = node.value) !== null && _b !== void 0 ? _b : '').split(separator)[index]) === null || _a === void 0 ? void 0 : _a.trim());
52
53
  };
53
54
  // Date
54
55
  const getDatePart = (index) => (node) => getDateTimePart({ node, index, separator: '-' });
@@ -1 +1 @@
1
- {"version":3,"file":"nodeValues.js","sourceRoot":"","sources":["../../src/node/nodeValues.ts"],"names":[],"mappings":"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","sourcesContent":["import { CategoryItems } from '../category'\nimport { Point, PointFactory } from '../geo'\nimport { NodeDef, NodeDefCode, NodeDefProps, NodeDefType } from '../nodeDef'\nimport { Record, Records } from '../record'\nimport { Survey, Surveys } from '../survey'\nimport { DateFormats, Dates, Objects } from '../utils'\nimport { Node } from './node'\nimport { NodeValueCoordinate } from './nodeValue/coordinate'\nimport {\n ValuePropsCode,\n ValuePropsCoordinate,\n ValuePropsDate,\n ValuePropsFile,\n ValuePropsTaxon,\n ValuePropsTime,\n} from './nodeValueProps'\n\n/**\n * Props of node value indexed by node def type.\n * The node definitions here are only the ones of \"composite\" attributes.\n */\nexport const ValuePropsByType: { [key in NodeDefType]: { [key: string]: string } | null } = {\n [NodeDefType.boolean]: null,\n [NodeDefType.code]: ValuePropsCode,\n [NodeDefType.coordinate]: ValuePropsCoordinate,\n [NodeDefType.date]: ValuePropsDate,\n [NodeDefType.decimal]: null,\n [NodeDefType.geo]: null,\n [NodeDefType.entity]: null,\n [NodeDefType.file]: ValuePropsFile,\n [NodeDefType.integer]: null,\n [NodeDefType.taxon]: ValuePropsTaxon,\n [NodeDefType.time]: ValuePropsTime,\n [NodeDefType.text]: null,\n // layout elements\n [NodeDefType.formHeader]: null,\n}\n\nconst getValuePropRaw = (params: { value: any; prop: string; defaultValue?: any }): any => {\n const { value, prop, defaultValue } = params\n const valueProp = value?.[prop]\n return valueProp === undefined ? defaultValue : valueProp\n}\n\nconst getNodeValuePropRaw = (params: { node: Node; prop: string; defaultValue?: any }): any => {\n const { node, prop, defaultValue } = params\n return getValuePropRaw({ value: node.value, prop, defaultValue })\n}\n\n// Code\nconst newCodeValue = (params: { itemUuid: string }) => {\n const { itemUuid } = params\n return { [ValuePropsCode[ValuePropsCode.itemUuid]]: itemUuid }\n}\n\nconst getItemUuid = (node: Node): string | undefined =>\n getNodeValuePropRaw({ node, prop: ValuePropsCode[ValuePropsCode.itemUuid] })\n\nconst getValueCode = (value: any): string | undefined =>\n getValuePropRaw({ value, prop: ValuePropsCode[ValuePropsCode.code] })\n\nconst getValueItemUuid = (value: any): string | undefined =>\n getValuePropRaw({ value, prop: ValuePropsCode[ValuePropsCode.itemUuid] })\n\nconst getDateTimePart = (params: { node: Node; index: number; separator: string }): number => {\n const { node, index, separator } = params\n return Number((node.value ?? '').split(separator)[index]?.trim())\n}\n\n// Date\nconst getDatePart =\n (index: number) =>\n (node: Node): number =>\n getDateTimePart({ node, index, separator: '-' })\nconst getDateYear = getDatePart(0)\nconst getDateMonth = getDatePart(1)\nconst getDateDay = getDatePart(2)\n\nconst _datePropGetters: { [key in ValuePropsDate]: (node: Node) => number } = {\n [ValuePropsDate.day]: getDateDay,\n [ValuePropsDate.month]: getDateMonth,\n [ValuePropsDate.year]: getDateYear,\n}\n\n// File\nconst getFileName = (node: Node): string | undefined => getNodeValuePropRaw({ node, prop: ValuePropsFile.fileName })\nconst getFileNameCalculated = (node: Node): string | undefined =>\n getNodeValuePropRaw({ node, prop: ValuePropsFile.fileNameCalculated })\nconst getFileSize = (node: Node): string | undefined => getNodeValuePropRaw({ node, prop: ValuePropsFile.fileSize })\nconst getFileUuid = (node: Node): string | undefined => getNodeValuePropRaw({ node, prop: ValuePropsFile.fileUuid })\n\n// Taxon\nconst getTaxonUuid = (node: Node): string | undefined =>\n getNodeValuePropRaw({ node, prop: ValuePropsTaxon[ValuePropsTaxon.taxonUuid] })\nconst getValueTaxonUuid = (value: any): string | undefined =>\n getValuePropRaw({ value, prop: ValuePropsTaxon[ValuePropsTaxon.taxonUuid] })\nconst getScientificName = (node: Node): string | undefined =>\n getNodeValuePropRaw({ node, prop: ValuePropsTaxon[ValuePropsTaxon.scientificName] })\nconst getValueScientificName = (value: any): string | undefined =>\n getValuePropRaw({ value, prop: ValuePropsTaxon[ValuePropsTaxon.scientificName] })\nconst getVernacularName = (node: Node): string | undefined =>\n getNodeValuePropRaw({ node, prop: ValuePropsTaxon[ValuePropsTaxon.vernacularName] })\nconst getValueVernacularName = (value: any): string | undefined =>\n getValuePropRaw({ value, prop: ValuePropsTaxon[ValuePropsTaxon.vernacularName] })\nconst getVernacularNameUuid = (node: Node): string | undefined =>\n getNodeValuePropRaw({ node, prop: ValuePropsTaxon[ValuePropsTaxon.vernacularNameUuid] })\nconst getValueVernacularNameUuid = (value: any): string | undefined =>\n getValuePropRaw({ value, prop: ValuePropsTaxon[ValuePropsTaxon.vernacularNameUuid] })\n\n// Time\nconst _getTimePart =\n (index: number) =>\n (node: Node): number =>\n getDateTimePart({ node, index, separator: ':' })\nconst getTimeHour = _getTimePart(0)\nconst getTimeMinute = _getTimePart(1)\nconst getTimeSeconds = (node: Node): number => {\n const parts = (node.value ?? '').split(':')\n return parts.length > 2 ? _getTimePart(2)(node) : 0\n}\n\nconst _timePropGetters: { [key in ValuePropsTime]: any } = {\n [ValuePropsTime.hour]: getTimeHour,\n [ValuePropsTime.minute]: getTimeMinute,\n [ValuePropsTime.seconds]: getTimeSeconds,\n}\n\nconst _valuePropGetters: { [key in NodeDefType]?: (prop: string) => (node: Node) => number } = {\n [NodeDefType.date]: (prop: string) => _datePropGetters[ValuePropsDate[prop as keyof typeof ValuePropsDate]],\n [NodeDefType.time]: (prop: string) => _timePropGetters[ValuePropsTime[prop as keyof typeof ValuePropsTime]],\n}\n\nconst isValueProp = (params: { nodeDef: NodeDef<NodeDefType, NodeDefProps>; prop: string }): boolean => {\n const { nodeDef, prop } = params\n return Object.values(ValuePropsByType[nodeDef.type] ?? {}).includes(prop)\n}\n\nconst getNodeValueProp = (params: { nodeDef: NodeDef<NodeDefType, NodeDefProps>; node: Node; prop: string }): any => {\n const { nodeDef, node, prop } = params\n const propGetter: any = _valuePropGetters[nodeDef.type]\n return propGetter ? propGetter(prop)(node) : getNodeValuePropRaw({ node, prop })\n}\n\n// value compare\n\nconst singlePropValueEqualComparator = (params: NodeValuesCompareParams): boolean => {\n const { value, valueSearch } = params\n return value === valueSearch || String(value) === String(valueSearch)\n}\n\nconst extractCategoryItemUuidFromValue = (params: NodeValuesCompareParams): string | undefined => {\n const { survey, nodeDef, record, parentNode, value } = params\n const valueItemUuid = getValueItemUuid(value)\n if (valueItemUuid) {\n return valueItemUuid\n }\n // find itemUuid by code\n const valueCode = getValueCode(value)\n if (Objects.isEmpty(valueCode)) return undefined\n\n const nodeDefCode = nodeDef as NodeDefCode\n const code = valueCode!\n const categoryUuid = nodeDefCode.props?.categoryUuid\n const levelIndex = Surveys.getNodeDefCategoryLevelIndex({ survey, nodeDef: nodeDefCode })\n if (levelIndex === 0) {\n return Surveys.getCategoryItemUuidByCode({ survey, categoryUuid, parentItemUuid: undefined, code })\n }\n if (!record || !parentNode) return undefined\n\n const parentCodeAttribute = Records.getParentCodeAttribute({ parentNode, nodeDef: nodeDef as NodeDefCode })(record)\n if (!parentCodeAttribute) return undefined\n\n const parentItemUuid = getItemUuid(parentCodeAttribute)\n if (!parentItemUuid) return undefined\n\n return Surveys.getCategoryItemUuidByCode({\n survey,\n categoryUuid,\n parentItemUuid,\n code,\n })\n}\n\nconst extractCategoryItemCodeFromValue = (params: { survey: Survey; value: any }): string | undefined => {\n const { survey, value } = params\n const itemUuid = getValueItemUuid(value)\n if (itemUuid) {\n const item = Surveys.getCategoryItemByUuid({ survey, itemUuid })\n return item ? CategoryItems.getCode(item) : undefined\n }\n return getValueCode(value)\n}\n\nconst dateTimeComparator =\n (params: { formatsSource: DateFormats[]; formatTo: DateFormats }) =>\n (paramsComparator: NodeValuesCompareParams): boolean => {\n const { formatsSource, formatTo } = params\n const { value, valueSearch } = paramsComparator\n const toDateTime = (val: any) => {\n if (val instanceof Date) {\n return Dates.format(val, formatTo)\n }\n const formatFrom = formatsSource.find((format) => Dates.isValidDateInFormat(val, format))\n return formatFrom ? Dates.convertDate({ dateStr: val, formatFrom, formatTo }) : null\n }\n const dateTime = toDateTime(value)\n const dateTimeSearch = toDateTime(valueSearch)\n return !!dateTime && !!dateTimeSearch && dateTime === dateTimeSearch\n }\n\nconst valueComparatorByNodeDefType: { [key in NodeDefType]?: (params: NodeValuesCompareParams) => boolean } = {\n [NodeDefType.boolean]: singlePropValueEqualComparator,\n [NodeDefType.code]: (params: NodeValuesCompareParams): boolean => {\n const { survey, record, value, valueSearch, strict } = params\n if (!strict || !record) {\n // compare just codes (record not available, tricky to find the \"correct\" category item without knowing its parent item)\n const code = extractCategoryItemCodeFromValue({ survey, value })\n const codeSearch = extractCategoryItemCodeFromValue({ survey, value: valueSearch })\n return !!code && !!codeSearch && code === codeSearch\n }\n const itemUuid = extractCategoryItemUuidFromValue(params)\n const itemUuidSearch = extractCategoryItemUuidFromValue({\n ...params,\n value: valueSearch,\n })\n return !!itemUuidSearch && !!itemUuid && itemUuidSearch === itemUuid\n },\n [NodeDefType.coordinate]: (params: NodeValuesCompareParams) => {\n const { value, valueSearch } = params\n return Objects.isEqual(value, valueSearch)\n },\n [NodeDefType.date]: dateTimeComparator({\n formatsSource: [DateFormats.dateDisplay, DateFormats.dateStorage],\n formatTo: DateFormats.dateStorage,\n }),\n [NodeDefType.decimal]: singlePropValueEqualComparator,\n [NodeDefType.integer]: singlePropValueEqualComparator,\n [NodeDefType.taxon]: ({ value, valueSearch }) => {\n if (value === valueSearch) return true\n if (!value) return false\n if (!valueSearch) return false\n return value[ValuePropsTaxon.taxonUuid] === valueSearch[ValuePropsTaxon.taxonUuid]\n },\n [NodeDefType.text]: singlePropValueEqualComparator,\n [NodeDefType.time]: dateTimeComparator({\n formatsSource: [DateFormats.timeStorage, DateFormats.timeWithSeconds],\n formatTo: DateFormats.timeWithSeconds,\n }),\n}\n\ninterface NodeValuesCompareParams {\n survey: Survey\n nodeDef: NodeDef<NodeDefType, any>\n value: any\n valueSearch: any\n record?: Record\n parentNode?: Node\n strict?: boolean\n}\n\nconst isValueEqual = (params: NodeValuesCompareParams): boolean => {\n const { survey, nodeDef, value, valueSearch, record = undefined, parentNode = undefined, strict = false } = params\n if (value === valueSearch) return true\n if (Objects.isEmpty(value) || Objects.isEmpty(valueSearch)) return false\n\n const valueComparator = valueComparatorByNodeDefType[nodeDef.type]\n if (!valueComparator) {\n return Objects.isEqual(value, valueSearch)\n }\n return valueComparator({ survey, nodeDef, record, parentNode, value, valueSearch, strict })\n}\n\nconst getValueAsPoint = (params: { survey: Survey; node: Node }): Point | null => {\n const { survey, node } = params\n const nodeValue = node?.value\n\n if (!nodeValue) return null\n\n const nodeDef = Surveys.getNodeDefByUuid({ survey, uuid: node.nodeDefUuid })\n if (nodeDef.type === NodeDefType.coordinate) {\n const { x, y, srs } = nodeValue as NodeValueCoordinate\n\n const srsObject = Surveys.getSRSByCode(srs)(survey)\n if (!srsObject) return null\n\n return PointFactory.createInstance({ srs, x, y })\n }\n return null\n}\n\nexport const NodeValues = {\n ValuePropsByType,\n ValuePropsCode,\n ValuePropsCoordinate,\n ValuePropsDate,\n ValuePropsFile,\n ValuePropsTaxon,\n ValuePropsTime,\n\n getNodeValueProp,\n isValueProp,\n\n // coordinate\n getValueAsPoint,\n\n // code\n newCodeValue,\n getItemUuid,\n getValueCode,\n getValueItemUuid,\n\n // date\n getDateYear,\n getDateMonth,\n getDateDay,\n\n // file\n getFileName,\n getFileNameCalculated,\n getFileSize,\n getFileUuid,\n\n // taxon\n getTaxonUuid,\n getValueTaxonUuid,\n getScientificName,\n getValueScientificName,\n getVernacularName,\n getValueVernacularName,\n getVernacularNameUuid,\n getValueVernacularNameUuid,\n\n // time\n getTimeHour,\n getTimeMinute,\n getTimeSeconds,\n\n // utils\n isValueEqual,\n}\n"]}
1
+ {"version":3,"file":"nodeValues.js","sourceRoot":"","sources":["../../src/node/nodeValues.ts"],"names":[],"mappings":"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","sourcesContent":["import { CategoryItems } from '../category'\nimport { Point, PointFactory } from '../geo'\nimport { NodeDef, NodeDefCode, NodeDefProps, NodeDefType } from '../nodeDef'\nimport { Record, Records } from '../record'\nimport { Survey, Surveys } from '../survey'\nimport { DateFormats, Dates, Objects } from '../utils'\nimport { Node } from './node'\nimport { NodeValueCoordinate } from './nodeValue/coordinate'\nimport {\n ValuePropsCode,\n ValuePropsCoordinate,\n ValuePropsDate,\n ValuePropsFile,\n ValuePropsTaxon,\n ValuePropsTime,\n} from './nodeValueProps'\n\n/**\n * Props of node value indexed by node def type.\n * The node definitions here are only the ones of \"composite\" attributes.\n */\nexport const ValuePropsByType: { [key in NodeDefType]: { [key: string]: string } | null } = {\n [NodeDefType.boolean]: null,\n [NodeDefType.code]: ValuePropsCode,\n [NodeDefType.coordinate]: ValuePropsCoordinate,\n [NodeDefType.date]: ValuePropsDate,\n [NodeDefType.decimal]: null,\n [NodeDefType.geo]: null,\n [NodeDefType.entity]: null,\n [NodeDefType.file]: ValuePropsFile,\n [NodeDefType.integer]: null,\n [NodeDefType.taxon]: ValuePropsTaxon,\n [NodeDefType.time]: ValuePropsTime,\n [NodeDefType.text]: null,\n // layout elements\n [NodeDefType.formHeader]: null,\n}\n\nconst getValuePropRaw = (params: { value: any; prop: string; defaultValue?: any }): any => {\n const { value, prop, defaultValue } = params\n const valueProp = value?.[prop]\n return valueProp === undefined ? defaultValue : valueProp\n}\n\nconst getNodeValuePropRaw = (params: { node: Node; prop: string; defaultValue?: any }): any => {\n const { node, prop, defaultValue } = params\n return getValuePropRaw({ value: node.value, prop, defaultValue })\n}\n\n// Code\nconst newCodeValue = (params: { itemUuid: string }) => {\n const { itemUuid } = params\n return { [ValuePropsCode[ValuePropsCode.itemUuid]]: itemUuid }\n}\n\nconst getItemUuid = (node: Node): string | undefined =>\n getNodeValuePropRaw({ node, prop: ValuePropsCode[ValuePropsCode.itemUuid] })\n\nconst getValueCode = (value: any): string | undefined =>\n getValuePropRaw({ value, prop: ValuePropsCode[ValuePropsCode.code] })\n\nconst getValueItemUuid = (value: any): string | undefined =>\n getValuePropRaw({ value, prop: ValuePropsCode[ValuePropsCode.itemUuid] })\n\nconst getDateTimePart = (params: { node: Node; index: number; separator: string }): number => {\n const { node, index, separator } = params\n return Number((node.value ?? '').split(separator)[index]?.trim())\n}\n\n// Date\nconst getDatePart =\n (index: number) =>\n (node: Node): number =>\n getDateTimePart({ node, index, separator: '-' })\nconst getDateYear = getDatePart(0)\nconst getDateMonth = getDatePart(1)\nconst getDateDay = getDatePart(2)\n\nconst _datePropGetters: { [key in ValuePropsDate]: (node: Node) => number } = {\n [ValuePropsDate.day]: getDateDay,\n [ValuePropsDate.month]: getDateMonth,\n [ValuePropsDate.year]: getDateYear,\n}\n\n// File\nconst getFileName = (node: Node): string | undefined => getNodeValuePropRaw({ node, prop: ValuePropsFile.fileName })\nconst getFileNameCalculated = (node: Node): string | undefined =>\n getNodeValuePropRaw({ node, prop: ValuePropsFile.fileNameCalculated })\nconst getFileSize = (node: Node): string | undefined => getNodeValuePropRaw({ node, prop: ValuePropsFile.fileSize })\nconst getFileUuid = (node: Node): string | undefined => getNodeValuePropRaw({ node, prop: ValuePropsFile.fileUuid })\n\n// Taxon\nconst getTaxonUuid = (node: Node): string | undefined =>\n getNodeValuePropRaw({ node, prop: ValuePropsTaxon[ValuePropsTaxon.taxonUuid] })\nconst getValueTaxonUuid = (value: any): string | undefined =>\n getValuePropRaw({ value, prop: ValuePropsTaxon[ValuePropsTaxon.taxonUuid] })\nconst getScientificName = (node: Node): string | undefined =>\n getNodeValuePropRaw({ node, prop: ValuePropsTaxon[ValuePropsTaxon.scientificName] })\nconst getValueScientificName = (value: any): string | undefined =>\n getValuePropRaw({ value, prop: ValuePropsTaxon[ValuePropsTaxon.scientificName] })\nconst getVernacularName = (node: Node): string | undefined =>\n getNodeValuePropRaw({ node, prop: ValuePropsTaxon[ValuePropsTaxon.vernacularName] })\nconst getValueVernacularName = (value: any): string | undefined =>\n getValuePropRaw({ value, prop: ValuePropsTaxon[ValuePropsTaxon.vernacularName] })\nconst getVernacularNameUuid = (node: Node): string | undefined =>\n getNodeValuePropRaw({ node, prop: ValuePropsTaxon[ValuePropsTaxon.vernacularNameUuid] })\nconst getValueVernacularNameUuid = (value: any): string | undefined =>\n getValuePropRaw({ value, prop: ValuePropsTaxon[ValuePropsTaxon.vernacularNameUuid] })\n\n// Time\nconst _getTimePart =\n (index: number) =>\n (node: Node): number =>\n getDateTimePart({ node, index, separator: ':' })\nconst getTimeHour = _getTimePart(0)\nconst getTimeMinute = _getTimePart(1)\nconst getTimeSeconds = (node: Node): number => {\n const parts = (node.value ?? '').split(':')\n return parts.length > 2 ? _getTimePart(2)(node) : 0\n}\n\nconst _timePropGetters: { [key in ValuePropsTime]: any } = {\n [ValuePropsTime.hour]: getTimeHour,\n [ValuePropsTime.minute]: getTimeMinute,\n [ValuePropsTime.seconds]: getTimeSeconds,\n}\n\nconst _valuePropGetters: { [key in NodeDefType]?: (prop: string) => (node: Node) => number } = {\n [NodeDefType.date]: (prop: string) => _datePropGetters[ValuePropsDate[prop as keyof typeof ValuePropsDate]],\n [NodeDefType.time]: (prop: string) => _timePropGetters[ValuePropsTime[prop as keyof typeof ValuePropsTime]],\n}\n\nconst isValueProp = (params: { nodeDef: NodeDef<NodeDefType, NodeDefProps>; prop: string }): boolean => {\n const { nodeDef, prop } = params\n return Object.values(ValuePropsByType[nodeDef.type] ?? {}).includes(prop)\n}\n\nconst getNodeValueProp = (params: { nodeDef: NodeDef<NodeDefType, NodeDefProps>; node: Node; prop: string }): any => {\n const { nodeDef, node, prop } = params\n const propGetter: any = _valuePropGetters[nodeDef.type]\n return propGetter ? propGetter(prop)(node) : getNodeValuePropRaw({ node, prop })\n}\n\n// value compare\n\nconst singlePropValueEqualComparator = (params: NodeValuesCompareParams): boolean => {\n const { value, valueSearch } = params\n return value === valueSearch || String(value) === String(valueSearch)\n}\n\nconst extractCategoryItemUuidFromValue = (params: NodeValuesCompareParams): string | undefined => {\n const { survey, nodeDef, record, parentNode, value } = params\n const valueItemUuid = getValueItemUuid(value)\n if (valueItemUuid) {\n return valueItemUuid\n }\n // find itemUuid by code\n const valueCode = getValueCode(value)\n if (Objects.isEmpty(valueCode)) return undefined\n\n const nodeDefCode = nodeDef as NodeDefCode\n const code = valueCode!\n const categoryUuid = nodeDefCode.props?.categoryUuid\n const levelIndex = Surveys.getNodeDefCategoryLevelIndex({ survey, nodeDef: nodeDefCode })\n if (levelIndex === 0) {\n return Surveys.getCategoryItemUuidByCode({ survey, categoryUuid, parentItemUuid: undefined, code })\n }\n if (!record || !parentNode) return undefined\n\n const parentCodeAttribute = Records.getParentCodeAttribute({ parentNode, nodeDef: nodeDef as NodeDefCode })(record)\n if (!parentCodeAttribute) return undefined\n\n const parentItemUuid = getItemUuid(parentCodeAttribute)\n if (!parentItemUuid) return undefined\n\n return Surveys.getCategoryItemUuidByCode({\n survey,\n categoryUuid,\n parentItemUuid,\n code,\n })\n}\n\nconst extractCategoryItemCodeFromValue = (params: { survey: Survey; value: any }): string | undefined => {\n const { survey, value } = params\n const itemUuid = getValueItemUuid(value)\n if (itemUuid) {\n const item = Surveys.getCategoryItemByUuid({ survey, itemUuid })\n return item ? CategoryItems.getCode(item) : undefined\n }\n return getValueCode(value)\n}\n\nconst dateTimeComparator =\n (params: { formatsSource: DateFormats[]; formatTo: DateFormats }) =>\n (paramsComparator: NodeValuesCompareParams): boolean => {\n const { formatsSource, formatTo } = params\n const { value, valueSearch } = paramsComparator\n const toDateTime = (val: any) => {\n if (val instanceof Date) {\n return Dates.format(val, formatTo)\n }\n const formatFrom = formatsSource.find((format) => Dates.isValidDateInFormat(val, format))\n return formatFrom ? Dates.convertDate({ dateStr: val, formatFrom, formatTo }) : null\n }\n const dateTime = toDateTime(value)\n const dateTimeSearch = toDateTime(valueSearch)\n return !!dateTime && !!dateTimeSearch && dateTime === dateTimeSearch\n }\n\nconst valueComparatorByNodeDefType: { [key in NodeDefType]?: (params: NodeValuesCompareParams) => boolean } = {\n [NodeDefType.boolean]: singlePropValueEqualComparator,\n [NodeDefType.code]: (params: NodeValuesCompareParams): boolean => {\n const { survey, record, value, valueSearch, strict } = params\n if (!strict || !record) {\n // compare just codes (record not available, tricky to find the \"correct\" category item without knowing its parent item)\n const code = extractCategoryItemCodeFromValue({ survey, value })\n const codeSearch = extractCategoryItemCodeFromValue({ survey, value: valueSearch })\n return !!code && !!codeSearch && code === codeSearch\n }\n const itemUuid = extractCategoryItemUuidFromValue(params)\n const itemUuidSearch = extractCategoryItemUuidFromValue({\n ...params,\n value: valueSearch,\n })\n return !!itemUuidSearch && !!itemUuid && itemUuidSearch === itemUuid\n },\n [NodeDefType.coordinate]: (params: NodeValuesCompareParams) => {\n const { value, valueSearch } = params\n return Objects.isEqual(value, valueSearch)\n },\n [NodeDefType.date]: dateTimeComparator({\n formatsSource: [DateFormats.dateDisplay, DateFormats.dateStorage],\n formatTo: DateFormats.dateStorage,\n }),\n [NodeDefType.decimal]: singlePropValueEqualComparator,\n [NodeDefType.integer]: singlePropValueEqualComparator,\n [NodeDefType.taxon]: ({ value, valueSearch }) => {\n if (value === valueSearch) return true\n if (!value) return false\n if (!valueSearch) return false\n return value[ValuePropsTaxon.taxonUuid] === valueSearch[ValuePropsTaxon.taxonUuid]\n },\n [NodeDefType.text]: singlePropValueEqualComparator,\n [NodeDefType.time]: dateTimeComparator({\n formatsSource: [DateFormats.timeStorage, DateFormats.timeWithSeconds],\n formatTo: DateFormats.timeWithSeconds,\n }),\n}\n\ninterface NodeValuesCompareParams {\n survey: Survey\n nodeDef: NodeDef<NodeDefType, any>\n value: any\n valueSearch: any\n record?: Record\n parentNode?: Node\n strict?: boolean\n}\n\nconst isValueEqual = (params: NodeValuesCompareParams): boolean => {\n const { survey, nodeDef, value, valueSearch, record = undefined, parentNode = undefined, strict = false } = params\n if (value === valueSearch) return true\n if (Objects.isEmpty(value) || Objects.isEmpty(valueSearch)) return false\n\n const valueComparator = valueComparatorByNodeDefType[nodeDef.type]\n if (!valueComparator) {\n return Objects.isEqual(value, valueSearch)\n }\n return valueComparator({ survey, nodeDef, record, parentNode, value, valueSearch, strict })\n}\n\nconst getValueAsPoint = (params: { survey: Survey; node: Node }): Point | null => {\n const { survey, node } = params\n const nodeValue = node?.value\n\n if (!nodeValue) return null\n\n const nodeDef = Surveys.getNodeDefByUuid({ survey, uuid: node.nodeDefUuid })\n if (nodeDef.type === NodeDefType.coordinate) {\n const { x, y, srs } = nodeValue as NodeValueCoordinate\n\n const srsObject = Surveys.getSRSByCode(srs)(survey)\n if (!srsObject) return null\n\n return PointFactory.createInstance({ srs, x, y })\n }\n return null\n}\n\nexport const NodeValues = {\n ValuePropsByType,\n ValuePropsCode,\n ValuePropsCoordinate,\n ValuePropsDate,\n ValuePropsFile,\n ValuePropsTaxon,\n ValuePropsTime,\n\n getNodeValueProp,\n isValueProp,\n\n // coordinate\n getValueAsPoint,\n\n // code\n newCodeValue,\n getItemUuid,\n getValueCode,\n getValueItemUuid,\n\n // date\n getDateYear,\n getDateMonth,\n getDateDay,\n\n // file\n getFileName,\n getFileNameCalculated,\n getFileSize,\n getFileUuid,\n\n // taxon\n getTaxonUuid,\n getValueTaxonUuid,\n getScientificName,\n getValueScientificName,\n getVernacularName,\n getValueVernacularName,\n getVernacularNameUuid,\n getValueVernacularNameUuid,\n\n // time\n getTimeHour,\n getTimeMinute,\n getTimeSeconds,\n\n // utils\n isValueEqual,\n}\n"]}