@openforis/arena-core 2.3.33 → 2.3.35

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (843) hide show
  1. package/dist/app/appInfo.js.map +1 -1
  2. package/dist/app/index.js.map +1 -1
  3. package/dist/auth/authGroup.js.map +1 -1
  4. package/dist/auth/authGroups.js.map +1 -1
  5. package/dist/auth/authorizer.js +45 -0
  6. package/dist/auth/authorizer.js.map +1 -1
  7. package/dist/auth/factory.js.map +1 -1
  8. package/dist/auth/index.js.map +1 -1
  9. package/dist/auth/permission.js.map +1 -1
  10. package/dist/auth/user.js.map +1 -1
  11. package/dist/auth/userAuth.js.map +1 -1
  12. package/dist/auth/userAuthTokenService.d.ts +28 -0
  13. package/dist/auth/userAuthTokenService.js.map +1 -1
  14. package/dist/auth/userGroup.js.map +1 -1
  15. package/dist/auth/userService.js.map +1 -1
  16. package/dist/auth/users.js +1 -0
  17. package/dist/auth/users.js.map +1 -1
  18. package/dist/category/categories.js.map +1 -1
  19. package/dist/category/category.js.map +1 -1
  20. package/dist/category/categoryImportSummary.js.map +1 -1
  21. package/dist/category/categoryItemGenerator.js.map +1 -1
  22. package/dist/category/categoryItems.js.map +1 -1
  23. package/dist/category/factory.js.map +1 -1
  24. package/dist/category/index.js.map +1 -1
  25. package/dist/category/item.js.map +1 -1
  26. package/dist/category/itemService.js.map +1 -1
  27. package/dist/category/level.js.map +1 -1
  28. package/dist/category/levelService.js.map +1 -1
  29. package/dist/category/service.js.map +1 -1
  30. package/dist/chain/chain.js.map +1 -1
  31. package/dist/chain/chainFactory.js.map +1 -1
  32. package/dist/chain/chainNodeDef.js.map +1 -1
  33. package/dist/chain/chainNodeDefAggregate.js.map +1 -1
  34. package/dist/chain/chainNodeDefFactory.js.map +1 -1
  35. package/dist/chain/chainNodeDefService.js.map +1 -1
  36. package/dist/chain/chainService.js.map +1 -1
  37. package/dist/chain/index.js.map +1 -1
  38. package/dist/common/Dictionary.js.map +1 -1
  39. package/dist/common/factory.js.map +1 -1
  40. package/dist/common/i18n.js.map +1 -1
  41. package/dist/common/index.js.map +1 -1
  42. package/dist/dataExport/ArenaExportInfo.js.map +1 -1
  43. package/dist/dataExport/ArenaExportInfoFactory.js.map +1 -1
  44. package/dist/dataExport/FlatDataExportModel.js +3 -3
  45. package/dist/dataExport/FlatDataExportModel.js.map +1 -1
  46. package/dist/dataExport/FlatDataExportOptions.js.map +1 -1
  47. package/dist/dataExport/FlatDataFiles.js.map +1 -1
  48. package/dist/dataExport/UniqueFileNamesGenerator.d.ts +23 -0
  49. package/dist/dataExport/UniqueFileNamesGenerator.js +26 -1
  50. package/dist/dataExport/UniqueFileNamesGenerator.js.map +1 -1
  51. package/dist/dataExport/index.js.map +1 -1
  52. package/dist/dataQuery/dataQuery.js.map +1 -1
  53. package/dist/dataQuery/dataQuerySummaries.js +3 -0
  54. package/dist/dataQuery/dataQuerySummaries.js.map +1 -1
  55. package/dist/dataQuery/index.js.map +1 -1
  56. package/dist/error/SystemError.js +1 -0
  57. package/dist/error/SystemError.js.map +1 -1
  58. package/dist/error/index.js.map +1 -1
  59. package/dist/esm/app/appInfo.js.map +1 -1
  60. package/dist/esm/app/index.js.map +1 -1
  61. package/dist/esm/auth/authGroup.js.map +1 -1
  62. package/dist/esm/auth/authGroups.js.map +1 -1
  63. package/dist/esm/auth/authorizer.js +45 -0
  64. package/dist/esm/auth/authorizer.js.map +1 -1
  65. package/dist/esm/auth/factory.js.map +1 -1
  66. package/dist/esm/auth/index.js.map +1 -1
  67. package/dist/esm/auth/permission.js.map +1 -1
  68. package/dist/esm/auth/user.js.map +1 -1
  69. package/dist/esm/auth/userAuth.js.map +1 -1
  70. package/dist/esm/auth/userAuthTokenService.js.map +1 -1
  71. package/dist/esm/auth/userGroup.js.map +1 -1
  72. package/dist/esm/auth/userService.js.map +1 -1
  73. package/dist/esm/auth/users.js +1 -0
  74. package/dist/esm/auth/users.js.map +1 -1
  75. package/dist/esm/category/categories.js.map +1 -1
  76. package/dist/esm/category/category.js.map +1 -1
  77. package/dist/esm/category/categoryImportSummary.js.map +1 -1
  78. package/dist/esm/category/categoryItemGenerator.js.map +1 -1
  79. package/dist/esm/category/categoryItems.js.map +1 -1
  80. package/dist/esm/category/factory.js.map +1 -1
  81. package/dist/esm/category/index.js.map +1 -1
  82. package/dist/esm/category/item.js.map +1 -1
  83. package/dist/esm/category/itemService.js.map +1 -1
  84. package/dist/esm/category/level.js.map +1 -1
  85. package/dist/esm/category/levelService.js.map +1 -1
  86. package/dist/esm/category/service.js.map +1 -1
  87. package/dist/esm/chain/chain.js.map +1 -1
  88. package/dist/esm/chain/chainFactory.js.map +1 -1
  89. package/dist/esm/chain/chainNodeDef.js.map +1 -1
  90. package/dist/esm/chain/chainNodeDefAggregate.js.map +1 -1
  91. package/dist/esm/chain/chainNodeDefFactory.js.map +1 -1
  92. package/dist/esm/chain/chainNodeDefService.js.map +1 -1
  93. package/dist/esm/chain/chainService.js.map +1 -1
  94. package/dist/esm/chain/index.js.map +1 -1
  95. package/dist/esm/common/Dictionary.js.map +1 -1
  96. package/dist/esm/common/factory.js.map +1 -1
  97. package/dist/esm/common/i18n.js.map +1 -1
  98. package/dist/esm/common/index.js.map +1 -1
  99. package/dist/esm/dataExport/ArenaExportInfo.js.map +1 -1
  100. package/dist/esm/dataExport/ArenaExportInfoFactory.js.map +1 -1
  101. package/dist/esm/dataExport/FlatDataExportModel.js +3 -3
  102. package/dist/esm/dataExport/FlatDataExportModel.js.map +1 -1
  103. package/dist/esm/dataExport/FlatDataExportOptions.js.map +1 -1
  104. package/dist/esm/dataExport/FlatDataFiles.js.map +1 -1
  105. package/dist/esm/dataExport/UniqueFileNamesGenerator.js +26 -1
  106. package/dist/esm/dataExport/UniqueFileNamesGenerator.js.map +1 -1
  107. package/dist/esm/dataExport/index.js.map +1 -1
  108. package/dist/esm/dataQuery/dataQuery.js.map +1 -1
  109. package/dist/esm/dataQuery/dataQuerySummaries.js +3 -0
  110. package/dist/esm/dataQuery/dataQuerySummaries.js.map +1 -1
  111. package/dist/esm/dataQuery/index.js.map +1 -1
  112. package/dist/esm/error/SystemError.js +1 -0
  113. package/dist/esm/error/SystemError.js.map +1 -1
  114. package/dist/esm/error/index.js.map +1 -1
  115. package/dist/esm/expression/context.js.map +1 -1
  116. package/dist/esm/expression/evaluator.js.map +1 -1
  117. package/dist/esm/expression/function.js.map +1 -1
  118. package/dist/esm/expression/index.js.map +1 -1
  119. package/dist/esm/expression/javascript/evaluator.js +4 -1
  120. package/dist/esm/expression/javascript/evaluator.js.map +1 -1
  121. package/dist/esm/expression/javascript/functionsDefault.js.map +1 -1
  122. package/dist/esm/expression/javascript/global.js.map +1 -1
  123. package/dist/esm/expression/javascript/node/array.js.map +1 -1
  124. package/dist/esm/expression/javascript/node/binary.js +23 -0
  125. package/dist/esm/expression/javascript/node/binary.js.map +1 -1
  126. package/dist/esm/expression/javascript/node/call.js +12 -0
  127. package/dist/esm/expression/javascript/node/call.js.map +1 -1
  128. package/dist/esm/expression/javascript/node/compound.js.map +1 -1
  129. package/dist/esm/expression/javascript/node/conditional.js.map +1 -1
  130. package/dist/esm/expression/javascript/node/identifier.js +7 -0
  131. package/dist/esm/expression/javascript/node/identifier.js.map +1 -1
  132. package/dist/esm/expression/javascript/node/literal.js.map +1 -1
  133. package/dist/esm/expression/javascript/node/member.js +5 -1
  134. package/dist/esm/expression/javascript/node/member.js.map +1 -1
  135. package/dist/esm/expression/javascript/node/sequence.js.map +1 -1
  136. package/dist/esm/expression/javascript/node/this.js.map +1 -1
  137. package/dist/esm/expression/javascript/node/unary.js +8 -0
  138. package/dist/esm/expression/javascript/node/unary.js.map +1 -1
  139. package/dist/esm/expression/javascript/parser/jsep.js +6 -2
  140. package/dist/esm/expression/javascript/parser/jsep.js.map +1 -1
  141. package/dist/esm/expression/javascript/parser/parser.js.map +1 -1
  142. package/dist/esm/expression/node.js.map +1 -1
  143. package/dist/esm/expression/parser.js.map +1 -1
  144. package/dist/esm/expression/variable.js.map +1 -1
  145. package/dist/esm/extraProp/extraProp.js.map +1 -1
  146. package/dist/esm/extraProp/extraProps.js.map +1 -1
  147. package/dist/esm/extraProp/extraPropsDataGenerator.js.map +1 -1
  148. package/dist/esm/extraProp/index.js.map +1 -1
  149. package/dist/esm/geo/index.js.map +1 -1
  150. package/dist/esm/geo/point.js.map +1 -1
  151. package/dist/esm/geo/pointFactory.js.map +1 -1
  152. package/dist/esm/geo/points/bearing.js +11 -0
  153. package/dist/esm/geo/points/bearing.js.map +1 -1
  154. package/dist/esm/geo/points/distance.js +9 -0
  155. package/dist/esm/geo/points/distance.js.map +1 -1
  156. package/dist/esm/geo/points/equals.js.map +1 -1
  157. package/dist/esm/geo/points/getSrs.js.map +1 -1
  158. package/dist/esm/geo/points/index.js.map +1 -1
  159. package/dist/esm/geo/points/isFilled.js.map +1 -1
  160. package/dist/esm/geo/points/isValid.js +1 -1
  161. package/dist/esm/geo/points/isValid.js.map +1 -1
  162. package/dist/esm/geo/points/parse.js +9 -0
  163. package/dist/esm/geo/points/parse.js.map +1 -1
  164. package/dist/esm/geo/points/pointAtDistance.js +10 -0
  165. package/dist/esm/geo/points/pointAtDistance.js.map +1 -1
  166. package/dist/esm/geo/points/toLatLong.js.map +1 -1
  167. package/dist/esm/geo/points/toString.js.map +1 -1
  168. package/dist/esm/geo/points/transform.js +12 -0
  169. package/dist/esm/geo/points/transform.js.map +1 -1
  170. package/dist/esm/index.js.map +1 -1
  171. package/dist/esm/job/JobBase.js +99 -0
  172. package/dist/esm/job/JobBase.js.map +1 -1
  173. package/dist/esm/job/index.js.map +1 -1
  174. package/dist/esm/job/job.js.map +1 -1
  175. package/dist/esm/job/jobContext.js.map +1 -1
  176. package/dist/esm/job/jobEvent.js.map +1 -1
  177. package/dist/esm/job/jobSerialized.js.map +1 -1
  178. package/dist/esm/job/status.js.map +1 -1
  179. package/dist/esm/language/index.js.map +1 -1
  180. package/dist/esm/language/labels.js.map +1 -1
  181. package/dist/esm/language/languageCode.js.map +1 -1
  182. package/dist/esm/language/languages.js.map +1 -1
  183. package/dist/esm/logger/index.js.map +1 -1
  184. package/dist/esm/logger/logger.js.map +1 -1
  185. package/dist/esm/message/index.js.map +1 -1
  186. package/dist/esm/message/message.js.map +1 -1
  187. package/dist/esm/message/messages.js +1 -0
  188. package/dist/esm/message/messages.js.map +1 -1
  189. package/dist/esm/node/factory.js.map +1 -1
  190. package/dist/esm/node/index.js.map +1 -1
  191. package/dist/esm/node/node.js.map +1 -1
  192. package/dist/esm/node/nodePointer.js.map +1 -1
  193. package/dist/esm/node/nodeValue/code.js.map +1 -1
  194. package/dist/esm/node/nodeValue/coordinate.js.map +1 -1
  195. package/dist/esm/node/nodeValue/file.js.map +1 -1
  196. package/dist/esm/node/nodeValue/index.js.map +1 -1
  197. package/dist/esm/node/nodeValue/nodeValueComposite.js.map +1 -1
  198. package/dist/esm/node/nodeValue/taxon.js.map +1 -1
  199. package/dist/esm/node/nodeValueFormatter.js +2 -0
  200. package/dist/esm/node/nodeValueFormatter.js.map +1 -1
  201. package/dist/esm/node/nodeValueProps.js.map +1 -1
  202. package/dist/esm/node/nodeValues.js +20 -0
  203. package/dist/esm/node/nodeValues.js.map +1 -1
  204. package/dist/esm/node/nodes.js +7 -0
  205. package/dist/esm/node/nodes.js.map +1 -1
  206. package/dist/esm/node/service.js.map +1 -1
  207. package/dist/esm/nodeDef/factory.js.map +1 -1
  208. package/dist/esm/nodeDef/index.js.map +1 -1
  209. package/dist/esm/nodeDef/nodeDef.js +1 -0
  210. package/dist/esm/nodeDef/nodeDef.js.map +1 -1
  211. package/dist/esm/nodeDef/nodeDefs.js +18 -0
  212. package/dist/esm/nodeDef/nodeDefs.js.map +1 -1
  213. package/dist/esm/nodeDef/service.js.map +1 -1
  214. package/dist/esm/nodeDef/types/boolean.js.map +1 -1
  215. package/dist/esm/nodeDef/types/code.js.map +1 -1
  216. package/dist/esm/nodeDef/types/coordinate.js.map +1 -1
  217. package/dist/esm/nodeDef/types/date.js.map +1 -1
  218. package/dist/esm/nodeDef/types/decimal.js.map +1 -1
  219. package/dist/esm/nodeDef/types/entity.js.map +1 -1
  220. package/dist/esm/nodeDef/types/file.js.map +1 -1
  221. package/dist/esm/nodeDef/types/formHeader.js.map +1 -1
  222. package/dist/esm/nodeDef/types/integer.js.map +1 -1
  223. package/dist/esm/nodeDef/types/taxon.js.map +1 -1
  224. package/dist/esm/nodeDef/types/text.js.map +1 -1
  225. package/dist/esm/nodeDef/types/time.js.map +1 -1
  226. package/dist/esm/nodeDefExpressionEvaluator/categoryItemProvider.js.map +1 -1
  227. package/dist/esm/nodeDefExpressionEvaluator/context.js.map +1 -1
  228. package/dist/esm/nodeDefExpressionEvaluator/evaluator.js.map +1 -1
  229. package/dist/esm/nodeDefExpressionEvaluator/functions.js +8 -1
  230. package/dist/esm/nodeDefExpressionEvaluator/functions.js.map +1 -1
  231. package/dist/esm/nodeDefExpressionEvaluator/index.js.map +1 -1
  232. package/dist/esm/nodeDefExpressionEvaluator/node/identifier.js +28 -0
  233. package/dist/esm/nodeDefExpressionEvaluator/node/identifier.js.map +1 -1
  234. package/dist/esm/nodeDefExpressionEvaluator/node/member.js +15 -0
  235. package/dist/esm/nodeDefExpressionEvaluator/node/member.js.map +1 -1
  236. package/dist/esm/nodeDefExpressionEvaluator/node/nodeDefExpressionNativeProperties.js +3 -0
  237. package/dist/esm/nodeDefExpressionEvaluator/node/nodeDefExpressionNativeProperties.js.map +1 -1
  238. package/dist/esm/nodeDefExpressionEvaluator/node/thisEvaluator.js.map +1 -1
  239. package/dist/esm/nodeDefExpressionEvaluator/taxonProvider.js.map +1 -1
  240. package/dist/esm/nodeDefExpressionEvaluator/validator.js.map +1 -1
  241. package/dist/esm/record/_records/nodeDefSelfReferences.js +57 -0
  242. package/dist/esm/record/_records/nodeDefSelfReferences.js.map +1 -0
  243. package/dist/esm/record/_records/recordCompletion.js +14 -0
  244. package/dist/esm/record/_records/recordCompletion.js.map +1 -1
  245. package/dist/esm/record/_records/recordGetters.js +26 -5
  246. package/dist/esm/record/_records/recordGetters.js.map +1 -1
  247. package/dist/esm/record/_records/recordNodesIndexReader.js.map +1 -1
  248. package/dist/esm/record/_records/recordNodesIndexUpdater.js +17 -0
  249. package/dist/esm/record/_records/recordNodesIndexUpdater.js.map +1 -1
  250. package/dist/esm/record/_records/recordPagesValidation.js +45 -0
  251. package/dist/esm/record/_records/recordPagesValidation.js.map +1 -1
  252. package/dist/esm/record/_records/recordUpdateOptions.js.map +1 -1
  253. package/dist/esm/record/_records/recordUpdater.js +2 -0
  254. package/dist/esm/record/_records/recordUpdater.js.map +1 -1
  255. package/dist/esm/record/_records/recordUtils.js.map +1 -1
  256. package/dist/esm/record/factory.js.map +1 -1
  257. package/dist/esm/record/index.js.map +1 -1
  258. package/dist/esm/record/nodePointers.js.map +1 -1
  259. package/dist/esm/record/record.js.map +1 -1
  260. package/dist/esm/record/recordCloner.js +10 -1
  261. package/dist/esm/record/recordCloner.js.map +1 -1
  262. package/dist/esm/record/recordExpressionEvaluator/context.js.map +1 -1
  263. package/dist/esm/record/recordExpressionEvaluator/functions.js.map +1 -1
  264. package/dist/esm/record/recordExpressionEvaluator/index.js.map +1 -1
  265. package/dist/esm/record/recordExpressionEvaluator/node/identifier/identifier.js +14 -0
  266. package/dist/esm/record/recordExpressionEvaluator/node/identifier/identifier.js.map +1 -1
  267. package/dist/esm/record/recordExpressionEvaluator/node/identifier/index.js.map +1 -1
  268. package/dist/esm/record/recordExpressionEvaluator/node/identifier/nodesFinder.js +6 -0
  269. package/dist/esm/record/recordExpressionEvaluator/node/identifier/nodesFinder.js.map +1 -1
  270. package/dist/esm/record/recordExpressionEvaluator/node/thisEvaluator.js.map +1 -1
  271. package/dist/esm/record/recordExpressionEvaluator/nodeValueExtractor.js.map +1 -1
  272. package/dist/esm/record/recordExpressionEvaluator/recordExpressionEvaluator.js.map +1 -1
  273. package/dist/esm/record/recordFixer.js +16 -0
  274. package/dist/esm/record/recordFixer.js.map +1 -1
  275. package/dist/esm/record/recordNodesUpdater/index.js.map +1 -1
  276. package/dist/esm/record/recordNodesUpdater/recordEnumeratingItemsExpressionEvaluator.js +6 -0
  277. package/dist/esm/record/recordNodesUpdater/recordEnumeratingItemsExpressionEvaluator.js.map +1 -1
  278. package/dist/esm/record/recordNodesUpdater/recordExpressionEvaluationContext.js.map +1 -1
  279. package/dist/esm/record/recordNodesUpdater/recordExpressionValueConverter.js +5 -0
  280. package/dist/esm/record/recordNodesUpdater/recordExpressionValueConverter.js.map +1 -1
  281. package/dist/esm/record/recordNodesUpdater/recordNodeDependentsApplicableUpdater.js +20 -2
  282. package/dist/esm/record/recordNodesUpdater/recordNodeDependentsApplicableUpdater.js.map +1 -1
  283. package/dist/esm/record/recordNodesUpdater/recordNodeDependentsBooleanUpdater.js +2 -1
  284. package/dist/esm/record/recordNodesUpdater/recordNodeDependentsBooleanUpdater.js.map +1 -1
  285. package/dist/esm/record/recordNodesUpdater/recordNodeDependentsCodeAttributesUpdater.js +13 -1
  286. package/dist/esm/record/recordNodesUpdater/recordNodeDependentsCodeAttributesUpdater.js.map +1 -1
  287. package/dist/esm/record/recordNodesUpdater/recordNodeDependentsCountUpdater.js +9 -1
  288. package/dist/esm/record/recordNodesUpdater/recordNodeDependentsCountUpdater.js.map +1 -1
  289. package/dist/esm/record/recordNodesUpdater/recordNodeDependentsDefaultValuesUpdater.js +17 -1
  290. package/dist/esm/record/recordNodesUpdater/recordNodeDependentsDefaultValuesUpdater.js.map +1 -1
  291. package/dist/esm/record/recordNodesUpdater/recordNodeDependentsEditableUpdater.js.map +1 -1
  292. package/dist/esm/record/recordNodesUpdater/recordNodeDependentsEnumeratedEntitiesUpdater.js +5 -1
  293. package/dist/esm/record/recordNodesUpdater/recordNodeDependentsEnumeratedEntitiesUpdater.js.map +1 -1
  294. package/dist/esm/record/recordNodesUpdater/recordNodeDependentsEnumeratingItemsUpdater.js +4 -2
  295. package/dist/esm/record/recordNodesUpdater/recordNodeDependentsEnumeratingItemsUpdater.js.map +1 -1
  296. package/dist/esm/record/recordNodesUpdater/recordNodeDependentsFileNamesEvaluator.js +8 -3
  297. package/dist/esm/record/recordNodesUpdater/recordNodeDependentsFileNamesEvaluator.js.map +1 -1
  298. package/dist/esm/record/recordNodesUpdater/recordNodeDependentsUpdateParams.js.map +1 -1
  299. package/dist/esm/record/recordNodesUpdater/recordNodeDependentsVisibleUpdater.js.map +1 -1
  300. package/dist/esm/record/recordNodesUpdater/recordNodesCreator.js +10 -5
  301. package/dist/esm/record/recordNodesUpdater/recordNodesCreator.js.map +1 -1
  302. package/dist/esm/record/recordNodesUpdater/recordNodesDeleter.js +7 -0
  303. package/dist/esm/record/recordNodesUpdater/recordNodesDeleter.js.map +1 -1
  304. package/dist/esm/record/recordNodesUpdater/recordNodesDependentsUpdaterCommons.js +2 -0
  305. package/dist/esm/record/recordNodesUpdater/recordNodesDependentsUpdaterCommons.js.map +1 -1
  306. package/dist/esm/record/recordNodesUpdater/recordNodesUpdater.js +16 -2
  307. package/dist/esm/record/recordNodesUpdater/recordNodesUpdater.js.map +1 -1
  308. package/dist/esm/record/recordNodesUpdater/recordUpdateResult.js +8 -0
  309. package/dist/esm/record/recordNodesUpdater/recordUpdateResult.js.map +1 -1
  310. package/dist/esm/record/recordPrettyPrinter.js.map +1 -1
  311. package/dist/esm/record/recordStep.js.map +1 -1
  312. package/dist/esm/record/recordUpdater.js +1 -0
  313. package/dist/esm/record/recordUpdater.js.map +1 -1
  314. package/dist/esm/record/recordValidations.js.map +1 -1
  315. package/dist/esm/record/recordValidator/attributeKeyValidator.js +3 -0
  316. package/dist/esm/record/recordValidator/attributeKeyValidator.js.map +1 -1
  317. package/dist/esm/record/recordValidator/attributeTypeValidator.js +3 -0
  318. package/dist/esm/record/recordValidator/attributeTypeValidator.js.map +1 -1
  319. package/dist/esm/record/recordValidator/attributeUniqueValidator.js +2 -0
  320. package/dist/esm/record/recordValidator/attributeUniqueValidator.js.map +1 -1
  321. package/dist/esm/record/recordValidator/attributeValidator.js +12 -1
  322. package/dist/esm/record/recordValidator/attributeValidator.js.map +1 -1
  323. package/dist/esm/record/recordValidator/countVaildator.js +5 -0
  324. package/dist/esm/record/recordValidator/countVaildator.js.map +1 -1
  325. package/dist/esm/record/recordValidator/index.js.map +1 -1
  326. package/dist/esm/record/recordValidator/recordValidator.js +3 -0
  327. package/dist/esm/record/recordValidator/recordValidator.js.map +1 -1
  328. package/dist/esm/record/records.js +3 -0
  329. package/dist/esm/record/records.js.map +1 -1
  330. package/dist/esm/record/service.js.map +1 -1
  331. package/dist/esm/registry/index.js.map +1 -1
  332. package/dist/esm/registry/serviceRegistry.js.map +1 -1
  333. package/dist/esm/registry/serviceType.js.map +1 -1
  334. package/dist/esm/srs/factory.js.map +1 -1
  335. package/dist/esm/srs/index.js.map +1 -1
  336. package/dist/esm/srs/srs.js.map +1 -1
  337. package/dist/esm/survey/factory.js +1 -0
  338. package/dist/esm/survey/factory.js.map +1 -1
  339. package/dist/esm/survey/index.js.map +1 -1
  340. package/dist/esm/survey/nodeDefsFixer.js +1 -0
  341. package/dist/esm/survey/nodeDefsFixer.js.map +1 -1
  342. package/dist/esm/survey/refData/factory.js.map +1 -1
  343. package/dist/esm/survey/refData/index.js.map +1 -1
  344. package/dist/esm/survey/refData/refData.js.map +1 -1
  345. package/dist/esm/survey/service.js.map +1 -1
  346. package/dist/esm/survey/survey.js.map +1 -1
  347. package/dist/esm/survey/surveyDocImageFactory.js.map +1 -1
  348. package/dist/esm/survey/surveyDocImages.js.map +1 -1
  349. package/dist/esm/survey/surveyFileFactory.js.map +1 -1
  350. package/dist/esm/survey/surveys/_nodeDefs/nodeDefsIndex.js +8 -0
  351. package/dist/esm/survey/surveys/_nodeDefs/nodeDefsIndex.js.map +1 -1
  352. package/dist/esm/survey/surveys/_nodeDefs/nodeDefsReader.js.map +1 -1
  353. package/dist/esm/survey/surveys/dependencies.js +11 -2
  354. package/dist/esm/survey/surveys/dependencies.js.map +1 -1
  355. package/dist/esm/survey/surveys/index.js +6 -0
  356. package/dist/esm/survey/surveys/index.js.map +1 -1
  357. package/dist/esm/survey/surveys/nodeDefs.js +12 -0
  358. package/dist/esm/survey/surveys/nodeDefs.js.map +1 -1
  359. package/dist/esm/survey/surveys/refsData.js.map +1 -1
  360. package/dist/esm/survey/surveys/surveyGettersSecurity.js.map +1 -1
  361. package/dist/esm/survey/surveys/surveysGetters.js +3 -1
  362. package/dist/esm/survey/surveys/surveysGetters.js.map +1 -1
  363. package/dist/esm/survey/surveys/surveysUtils.js.map +1 -1
  364. package/dist/esm/taxonomy/factory.js.map +1 -1
  365. package/dist/esm/taxonomy/index.js.map +1 -1
  366. package/dist/esm/taxonomy/service.js.map +1 -1
  367. package/dist/esm/taxonomy/taxa.js.map +1 -1
  368. package/dist/esm/taxonomy/taxon.js.map +1 -1
  369. package/dist/esm/taxonomy/taxonGenerator.js.map +1 -1
  370. package/dist/esm/taxonomy/taxonService.js.map +1 -1
  371. package/dist/esm/taxonomy/taxonVernacularName.js.map +1 -1
  372. package/dist/esm/taxonomy/taxonomies.js.map +1 -1
  373. package/dist/esm/taxonomy/taxonomy.js.map +1 -1
  374. package/dist/esm/tests/builder/recordBuilder/attributeBuilder.js +2 -0
  375. package/dist/esm/tests/builder/recordBuilder/attributeBuilder.js.map +1 -1
  376. package/dist/esm/tests/builder/recordBuilder/entityBuilder.js.map +1 -1
  377. package/dist/esm/tests/builder/recordBuilder/index.js.map +1 -1
  378. package/dist/esm/tests/builder/recordBuilder/nodeBuilder.js.map +1 -1
  379. package/dist/esm/tests/builder/recordBuilder/recordBuilder.js.map +1 -1
  380. package/dist/esm/tests/builder/surveyBuilder/categoryBuilder.js.map +1 -1
  381. package/dist/esm/tests/builder/surveyBuilder/categoryItemBuilder.js.map +1 -1
  382. package/dist/esm/tests/builder/surveyBuilder/index.js.map +1 -1
  383. package/dist/esm/tests/builder/surveyBuilder/nodeDefAttributeBuilder.js.map +1 -1
  384. package/dist/esm/tests/builder/surveyBuilder/nodeDefBuilder.js.map +1 -1
  385. package/dist/esm/tests/builder/surveyBuilder/nodeDefCodeBuilder.js.map +1 -1
  386. package/dist/esm/tests/builder/surveyBuilder/nodeDefEntityBuilder.js.map +1 -1
  387. package/dist/esm/tests/builder/surveyBuilder/nodeDefTaxonBuilder.js.map +1 -1
  388. package/dist/esm/tests/builder/surveyBuilder/surveyBuilder.js.map +1 -1
  389. package/dist/esm/tests/builder/surveyBuilder/taxonBuilder.js.map +1 -1
  390. package/dist/esm/tests/builder/surveyBuilder/taxonomyBuilder.js.map +1 -1
  391. package/dist/esm/utils/_objects/assoc.js.map +1 -1
  392. package/dist/esm/utils/_objects/assocPath.js +1 -0
  393. package/dist/esm/utils/_objects/assocPath.js.map +1 -1
  394. package/dist/esm/utils/_objects/camelize.js +9 -0
  395. package/dist/esm/utils/_objects/camelize.js.map +1 -1
  396. package/dist/esm/utils/_objects/deepMerge.js +10 -0
  397. package/dist/esm/utils/_objects/deepMerge.js.map +1 -1
  398. package/dist/esm/utils/_objects/deleteEmptyProps.js.map +1 -1
  399. package/dist/esm/utils/_objects/difference.js.map +1 -1
  400. package/dist/esm/utils/_objects/dissoc.js.map +1 -1
  401. package/dist/esm/utils/_objects/dissocPath.js +1 -0
  402. package/dist/esm/utils/_objects/dissocPath.js.map +1 -1
  403. package/dist/esm/utils/_objects/dissocPathIfEmpty.js.map +1 -1
  404. package/dist/esm/utils/_objects/fromPairs.js.map +1 -1
  405. package/dist/esm/utils/_objects/index.js.map +1 -1
  406. package/dist/esm/utils/_objects/isEmpty.js +8 -0
  407. package/dist/esm/utils/_objects/isEmpty.js.map +1 -1
  408. package/dist/esm/utils/_objects/isEqual.js.map +1 -1
  409. package/dist/esm/utils/_objects/isNil.js +6 -0
  410. package/dist/esm/utils/_objects/isNil.js.map +1 -1
  411. package/dist/esm/utils/_objects/isNotEmpty.js +6 -0
  412. package/dist/esm/utils/_objects/isNotEmpty.js.map +1 -1
  413. package/dist/esm/utils/_objects/parse.js +8 -0
  414. package/dist/esm/utils/_objects/parse.js.map +1 -1
  415. package/dist/esm/utils/_objects/path.js +7 -0
  416. package/dist/esm/utils/_objects/path.js.map +1 -1
  417. package/dist/esm/utils/_objects/propertyOf.js.map +1 -1
  418. package/dist/esm/utils/_objects/setInPath.js.map +1 -1
  419. package/dist/esm/utils/_objects/stringify.js +9 -0
  420. package/dist/esm/utils/_objects/stringify.js.map +1 -1
  421. package/dist/esm/utils/_objects/toPairs.js.map +1 -1
  422. package/dist/esm/utils/arrays.js.map +1 -1
  423. package/dist/esm/utils/dates.js +22 -0
  424. package/dist/esm/utils/dates.js.map +1 -1
  425. package/dist/esm/utils/fileNames.js.map +1 -1
  426. package/dist/esm/utils/fileProcessor.js +5 -1
  427. package/dist/esm/utils/fileProcessor.js.map +1 -1
  428. package/dist/esm/utils/index.js.map +1 -1
  429. package/dist/esm/utils/numbers.js +21 -0
  430. package/dist/esm/utils/numbers.js.map +1 -1
  431. package/dist/esm/utils/promises.js +15 -1
  432. package/dist/esm/utils/promises.js.map +1 -1
  433. package/dist/esm/utils/queue.js +9 -0
  434. package/dist/esm/utils/queue.js.map +1 -1
  435. package/dist/esm/utils/retryProcessor.js +5 -1
  436. package/dist/esm/utils/retryProcessor.js.map +1 -1
  437. package/dist/esm/utils/strings.js.map +1 -1
  438. package/dist/esm/utils/uuids.js.map +1 -1
  439. package/dist/esm/utils/versions.js +4 -0
  440. package/dist/esm/utils/versions.js.map +1 -1
  441. package/dist/esm/validation/factory.js.map +1 -1
  442. package/dist/esm/validation/fieldValidator.js.map +1 -1
  443. package/dist/esm/validation/fieldValidators/email.js +3 -0
  444. package/dist/esm/validation/fieldValidators/email.js.map +1 -1
  445. package/dist/esm/validation/fieldValidators/index.js.map +1 -1
  446. package/dist/esm/validation/fieldValidators/name.js +4 -0
  447. package/dist/esm/validation/fieldValidators/name.js.map +1 -1
  448. package/dist/esm/validation/fieldValidators/notKeyword.js.map +1 -1
  449. package/dist/esm/validation/fieldValidators/numeric.js.map +1 -1
  450. package/dist/esm/validation/fieldValidators/numericPositive.js.map +1 -1
  451. package/dist/esm/validation/fieldValidators/required.js.map +1 -1
  452. package/dist/esm/validation/index.js.map +1 -1
  453. package/dist/esm/validation/validation.js.map +1 -1
  454. package/dist/esm/validation/validationResults.js +1 -1
  455. package/dist/esm/validation/validationResults.js.map +1 -1
  456. package/dist/esm/validation/validations.js +17 -1
  457. package/dist/esm/validation/validations.js.map +1 -1
  458. package/dist/esm/validation/validator.js.map +1 -1
  459. package/dist/esm/validation/validatorErrorKeys.js.map +1 -1
  460. package/dist/expression/context.d.ts +6 -0
  461. package/dist/expression/context.js.map +1 -1
  462. package/dist/expression/evaluator.js.map +1 -1
  463. package/dist/expression/function.d.ts +13 -0
  464. package/dist/expression/function.js.map +1 -1
  465. package/dist/expression/index.js.map +1 -1
  466. package/dist/expression/javascript/evaluator.d.ts +1 -0
  467. package/dist/expression/javascript/evaluator.js +6 -2
  468. package/dist/expression/javascript/evaluator.js.map +1 -1
  469. package/dist/expression/javascript/functionsDefault.js.map +1 -1
  470. package/dist/expression/javascript/global.js.map +1 -1
  471. package/dist/expression/javascript/node/array.js.map +1 -1
  472. package/dist/expression/javascript/node/binary.js +23 -0
  473. package/dist/expression/javascript/node/binary.js.map +1 -1
  474. package/dist/expression/javascript/node/call.js +12 -0
  475. package/dist/expression/javascript/node/call.js.map +1 -1
  476. package/dist/expression/javascript/node/compound.js.map +1 -1
  477. package/dist/expression/javascript/node/conditional.js.map +1 -1
  478. package/dist/expression/javascript/node/identifier.d.ts +7 -0
  479. package/dist/expression/javascript/node/identifier.js +7 -0
  480. package/dist/expression/javascript/node/identifier.js.map +1 -1
  481. package/dist/expression/javascript/node/literal.js.map +1 -1
  482. package/dist/expression/javascript/node/member.js +5 -1
  483. package/dist/expression/javascript/node/member.js.map +1 -1
  484. package/dist/expression/javascript/node/sequence.js.map +1 -1
  485. package/dist/expression/javascript/node/this.js.map +1 -1
  486. package/dist/expression/javascript/node/unary.js +8 -0
  487. package/dist/expression/javascript/node/unary.js.map +1 -1
  488. package/dist/expression/javascript/parser/jsep.js +6 -2
  489. package/dist/expression/javascript/parser/jsep.js.map +1 -1
  490. package/dist/expression/javascript/parser/parser.js.map +1 -1
  491. package/dist/expression/node.js.map +1 -1
  492. package/dist/expression/parser.js.map +1 -1
  493. package/dist/expression/variable.js.map +1 -1
  494. package/dist/extraProp/extraProp.js.map +1 -1
  495. package/dist/extraProp/extraProps.js.map +1 -1
  496. package/dist/extraProp/extraPropsDataGenerator.js.map +1 -1
  497. package/dist/extraProp/index.js.map +1 -1
  498. package/dist/geo/index.js.map +1 -1
  499. package/dist/geo/point.js.map +1 -1
  500. package/dist/geo/pointFactory.js.map +1 -1
  501. package/dist/geo/points/bearing.d.ts +9 -0
  502. package/dist/geo/points/bearing.js +11 -0
  503. package/dist/geo/points/bearing.js.map +1 -1
  504. package/dist/geo/points/distance.d.ts +8 -0
  505. package/dist/geo/points/distance.js +9 -0
  506. package/dist/geo/points/distance.js.map +1 -1
  507. package/dist/geo/points/equals.js.map +1 -1
  508. package/dist/geo/points/getSrs.js.map +1 -1
  509. package/dist/geo/points/index.js.map +1 -1
  510. package/dist/geo/points/isFilled.js.map +1 -1
  511. package/dist/geo/points/isValid.js +1 -1
  512. package/dist/geo/points/isValid.js.map +1 -1
  513. package/dist/geo/points/parse.d.ts +9 -0
  514. package/dist/geo/points/parse.js +9 -0
  515. package/dist/geo/points/parse.js.map +1 -1
  516. package/dist/geo/points/pointAtDistance.d.ts +9 -0
  517. package/dist/geo/points/pointAtDistance.js +10 -0
  518. package/dist/geo/points/pointAtDistance.js.map +1 -1
  519. package/dist/geo/points/toLatLong.js.map +1 -1
  520. package/dist/geo/points/toString.js.map +1 -1
  521. package/dist/geo/points/transform.d.ts +8 -0
  522. package/dist/geo/points/transform.js +12 -0
  523. package/dist/geo/points/transform.js.map +1 -1
  524. package/dist/index.js.map +1 -1
  525. package/dist/job/JobBase.d.ts +81 -0
  526. package/dist/job/JobBase.js +99 -0
  527. package/dist/job/JobBase.js.map +1 -1
  528. package/dist/job/index.js.map +1 -1
  529. package/dist/job/job.d.ts +20 -0
  530. package/dist/job/job.js.map +1 -1
  531. package/dist/job/jobContext.js.map +1 -1
  532. package/dist/job/jobEvent.js.map +1 -1
  533. package/dist/job/jobSerialized.d.ts +3 -0
  534. package/dist/job/jobSerialized.js.map +1 -1
  535. package/dist/job/status.js.map +1 -1
  536. package/dist/language/index.js.map +1 -1
  537. package/dist/language/labels.js.map +1 -1
  538. package/dist/language/languageCode.js.map +1 -1
  539. package/dist/language/languages.js.map +1 -1
  540. package/dist/logger/index.js.map +1 -1
  541. package/dist/logger/logger.js.map +1 -1
  542. package/dist/message/index.js.map +1 -1
  543. package/dist/message/message.d.ts +3 -0
  544. package/dist/message/message.js.map +1 -1
  545. package/dist/message/messages.js +1 -0
  546. package/dist/message/messages.js.map +1 -1
  547. package/dist/node/factory.js.map +1 -1
  548. package/dist/node/index.js.map +1 -1
  549. package/dist/node/node.d.ts +38 -0
  550. package/dist/node/node.js.map +1 -1
  551. package/dist/node/nodePointer.js.map +1 -1
  552. package/dist/node/nodeValue/code.js.map +1 -1
  553. package/dist/node/nodeValue/coordinate.js.map +1 -1
  554. package/dist/node/nodeValue/file.js.map +1 -1
  555. package/dist/node/nodeValue/index.js.map +1 -1
  556. package/dist/node/nodeValue/nodeValueComposite.js.map +1 -1
  557. package/dist/node/nodeValue/taxon.js.map +1 -1
  558. package/dist/node/nodeValueFormatter.js +2 -0
  559. package/dist/node/nodeValueFormatter.js.map +1 -1
  560. package/dist/node/nodeValueProps.js.map +1 -1
  561. package/dist/node/nodeValues.d.ts +4 -0
  562. package/dist/node/nodeValues.js +20 -0
  563. package/dist/node/nodeValues.js.map +1 -1
  564. package/dist/node/nodes.js +7 -0
  565. package/dist/node/nodes.js.map +1 -1
  566. package/dist/node/service.js.map +1 -1
  567. package/dist/nodeDef/factory.js.map +1 -1
  568. package/dist/nodeDef/index.js.map +1 -1
  569. package/dist/nodeDef/nodeDef.js +1 -0
  570. package/dist/nodeDef/nodeDef.js.map +1 -1
  571. package/dist/nodeDef/nodeDefs.js +18 -0
  572. package/dist/nodeDef/nodeDefs.js.map +1 -1
  573. package/dist/nodeDef/service.js.map +1 -1
  574. package/dist/nodeDef/types/boolean.js.map +1 -1
  575. package/dist/nodeDef/types/code.js.map +1 -1
  576. package/dist/nodeDef/types/coordinate.js.map +1 -1
  577. package/dist/nodeDef/types/date.js.map +1 -1
  578. package/dist/nodeDef/types/decimal.js.map +1 -1
  579. package/dist/nodeDef/types/entity.d.ts +1 -0
  580. package/dist/nodeDef/types/entity.js.map +1 -1
  581. package/dist/nodeDef/types/file.js.map +1 -1
  582. package/dist/nodeDef/types/formHeader.js.map +1 -1
  583. package/dist/nodeDef/types/integer.js.map +1 -1
  584. package/dist/nodeDef/types/taxon.js.map +1 -1
  585. package/dist/nodeDef/types/text.js.map +1 -1
  586. package/dist/nodeDef/types/time.js.map +1 -1
  587. package/dist/nodeDefExpressionEvaluator/categoryItemProvider.js.map +1 -1
  588. package/dist/nodeDefExpressionEvaluator/context.d.ts +3 -0
  589. package/dist/nodeDefExpressionEvaluator/context.js.map +1 -1
  590. package/dist/nodeDefExpressionEvaluator/evaluator.js.map +1 -1
  591. package/dist/nodeDefExpressionEvaluator/functions.js +8 -1
  592. package/dist/nodeDefExpressionEvaluator/functions.js.map +1 -1
  593. package/dist/nodeDefExpressionEvaluator/index.js.map +1 -1
  594. package/dist/nodeDefExpressionEvaluator/node/identifier.d.ts +14 -0
  595. package/dist/nodeDefExpressionEvaluator/node/identifier.js +28 -0
  596. package/dist/nodeDefExpressionEvaluator/node/identifier.js.map +1 -1
  597. package/dist/nodeDefExpressionEvaluator/node/member.js +15 -0
  598. package/dist/nodeDefExpressionEvaluator/node/member.js.map +1 -1
  599. package/dist/nodeDefExpressionEvaluator/node/nodeDefExpressionNativeProperties.js +3 -0
  600. package/dist/nodeDefExpressionEvaluator/node/nodeDefExpressionNativeProperties.js.map +1 -1
  601. package/dist/nodeDefExpressionEvaluator/node/thisEvaluator.js.map +1 -1
  602. package/dist/nodeDefExpressionEvaluator/taxonProvider.js.map +1 -1
  603. package/dist/nodeDefExpressionEvaluator/validator.js.map +1 -1
  604. package/dist/record/_records/nodeDefSelfReferences.d.ts +8 -0
  605. package/dist/record/_records/nodeDefSelfReferences.js +60 -0
  606. package/dist/record/_records/nodeDefSelfReferences.js.map +1 -0
  607. package/dist/record/_records/recordCompletion.d.ts +12 -0
  608. package/dist/record/_records/recordCompletion.js +14 -0
  609. package/dist/record/_records/recordCompletion.js.map +1 -1
  610. package/dist/record/_records/recordGetters.d.ts +3 -0
  611. package/dist/record/_records/recordGetters.js +26 -5
  612. package/dist/record/_records/recordGetters.js.map +1 -1
  613. package/dist/record/_records/recordNodesIndexReader.js.map +1 -1
  614. package/dist/record/_records/recordNodesIndexUpdater.js +17 -0
  615. package/dist/record/_records/recordNodesIndexUpdater.js.map +1 -1
  616. package/dist/record/_records/recordPagesValidation.d.ts +39 -0
  617. package/dist/record/_records/recordPagesValidation.js +45 -0
  618. package/dist/record/_records/recordPagesValidation.js.map +1 -1
  619. package/dist/record/_records/recordUpdateOptions.js.map +1 -1
  620. package/dist/record/_records/recordUpdater.js +2 -0
  621. package/dist/record/_records/recordUpdater.js.map +1 -1
  622. package/dist/record/_records/recordUtils.js.map +1 -1
  623. package/dist/record/factory.js.map +1 -1
  624. package/dist/record/index.js.map +1 -1
  625. package/dist/record/nodePointers.js.map +1 -1
  626. package/dist/record/record.d.ts +12 -0
  627. package/dist/record/record.js.map +1 -1
  628. package/dist/record/recordCloner.js +10 -1
  629. package/dist/record/recordCloner.js.map +1 -1
  630. package/dist/record/recordExpressionEvaluator/context.js.map +1 -1
  631. package/dist/record/recordExpressionEvaluator/functions.js.map +1 -1
  632. package/dist/record/recordExpressionEvaluator/index.js.map +1 -1
  633. package/dist/record/recordExpressionEvaluator/node/identifier/identifier.js +14 -0
  634. package/dist/record/recordExpressionEvaluator/node/identifier/identifier.js.map +1 -1
  635. package/dist/record/recordExpressionEvaluator/node/identifier/index.js.map +1 -1
  636. package/dist/record/recordExpressionEvaluator/node/identifier/nodesFinder.js +6 -0
  637. package/dist/record/recordExpressionEvaluator/node/identifier/nodesFinder.js.map +1 -1
  638. package/dist/record/recordExpressionEvaluator/node/thisEvaluator.js.map +1 -1
  639. package/dist/record/recordExpressionEvaluator/nodeValueExtractor.js.map +1 -1
  640. package/dist/record/recordExpressionEvaluator/recordExpressionEvaluator.js.map +1 -1
  641. package/dist/record/recordFixer.js +16 -0
  642. package/dist/record/recordFixer.js.map +1 -1
  643. package/dist/record/recordNodesUpdater/index.js.map +1 -1
  644. package/dist/record/recordNodesUpdater/recordEnumeratingItemsExpressionEvaluator.d.ts +6 -0
  645. package/dist/record/recordNodesUpdater/recordEnumeratingItemsExpressionEvaluator.js +6 -0
  646. package/dist/record/recordNodesUpdater/recordEnumeratingItemsExpressionEvaluator.js.map +1 -1
  647. package/dist/record/recordNodesUpdater/recordExpressionEvaluationContext.js.map +1 -1
  648. package/dist/record/recordNodesUpdater/recordExpressionValueConverter.js +5 -0
  649. package/dist/record/recordNodesUpdater/recordExpressionValueConverter.js.map +1 -1
  650. package/dist/record/recordNodesUpdater/recordNodeDependentsApplicableUpdater.js +20 -2
  651. package/dist/record/recordNodesUpdater/recordNodeDependentsApplicableUpdater.js.map +1 -1
  652. package/dist/record/recordNodesUpdater/recordNodeDependentsBooleanUpdater.js +2 -1
  653. package/dist/record/recordNodesUpdater/recordNodeDependentsBooleanUpdater.js.map +1 -1
  654. package/dist/record/recordNodesUpdater/recordNodeDependentsCodeAttributesUpdater.js +13 -1
  655. package/dist/record/recordNodesUpdater/recordNodeDependentsCodeAttributesUpdater.js.map +1 -1
  656. package/dist/record/recordNodesUpdater/recordNodeDependentsCountUpdater.js +9 -1
  657. package/dist/record/recordNodesUpdater/recordNodeDependentsCountUpdater.js.map +1 -1
  658. package/dist/record/recordNodesUpdater/recordNodeDependentsDefaultValuesUpdater.js +17 -1
  659. package/dist/record/recordNodesUpdater/recordNodeDependentsDefaultValuesUpdater.js.map +1 -1
  660. package/dist/record/recordNodesUpdater/recordNodeDependentsEditableUpdater.js.map +1 -1
  661. package/dist/record/recordNodesUpdater/recordNodeDependentsEnumeratedEntitiesUpdater.js +5 -1
  662. package/dist/record/recordNodesUpdater/recordNodeDependentsEnumeratedEntitiesUpdater.js.map +1 -1
  663. package/dist/record/recordNodesUpdater/recordNodeDependentsEnumeratingItemsUpdater.js +4 -2
  664. package/dist/record/recordNodesUpdater/recordNodeDependentsEnumeratingItemsUpdater.js.map +1 -1
  665. package/dist/record/recordNodesUpdater/recordNodeDependentsFileNamesEvaluator.js +8 -3
  666. package/dist/record/recordNodesUpdater/recordNodeDependentsFileNamesEvaluator.js.map +1 -1
  667. package/dist/record/recordNodesUpdater/recordNodeDependentsUpdateParams.js.map +1 -1
  668. package/dist/record/recordNodesUpdater/recordNodeDependentsVisibleUpdater.js.map +1 -1
  669. package/dist/record/recordNodesUpdater/recordNodesCreator.js +10 -5
  670. package/dist/record/recordNodesUpdater/recordNodesCreator.js.map +1 -1
  671. package/dist/record/recordNodesUpdater/recordNodesDeleter.js +7 -0
  672. package/dist/record/recordNodesUpdater/recordNodesDeleter.js.map +1 -1
  673. package/dist/record/recordNodesUpdater/recordNodesDependentsUpdaterCommons.js +2 -0
  674. package/dist/record/recordNodesUpdater/recordNodesDependentsUpdaterCommons.js.map +1 -1
  675. package/dist/record/recordNodesUpdater/recordNodesUpdater.js +16 -2
  676. package/dist/record/recordNodesUpdater/recordNodesUpdater.js.map +1 -1
  677. package/dist/record/recordNodesUpdater/recordUpdateResult.d.ts +8 -0
  678. package/dist/record/recordNodesUpdater/recordUpdateResult.js +8 -0
  679. package/dist/record/recordNodesUpdater/recordUpdateResult.js.map +1 -1
  680. package/dist/record/recordPrettyPrinter.js.map +1 -1
  681. package/dist/record/recordStep.js.map +1 -1
  682. package/dist/record/recordUpdater.js +1 -0
  683. package/dist/record/recordUpdater.js.map +1 -1
  684. package/dist/record/recordValidations.js.map +1 -1
  685. package/dist/record/recordValidator/attributeKeyValidator.d.ts +4 -0
  686. package/dist/record/recordValidator/attributeKeyValidator.js +3 -0
  687. package/dist/record/recordValidator/attributeKeyValidator.js.map +1 -1
  688. package/dist/record/recordValidator/attributeTypeValidator.js +3 -0
  689. package/dist/record/recordValidator/attributeTypeValidator.js.map +1 -1
  690. package/dist/record/recordValidator/attributeUniqueValidator.js +2 -0
  691. package/dist/record/recordValidator/attributeUniqueValidator.js.map +1 -1
  692. package/dist/record/recordValidator/attributeValidator.js +12 -1
  693. package/dist/record/recordValidator/attributeValidator.js.map +1 -1
  694. package/dist/record/recordValidator/countVaildator.js +5 -0
  695. package/dist/record/recordValidator/countVaildator.js.map +1 -1
  696. package/dist/record/recordValidator/index.js.map +1 -1
  697. package/dist/record/recordValidator/recordValidator.js +3 -0
  698. package/dist/record/recordValidator/recordValidator.js.map +1 -1
  699. package/dist/record/records.js +3 -0
  700. package/dist/record/records.js.map +1 -1
  701. package/dist/record/service.js.map +1 -1
  702. package/dist/registry/index.js.map +1 -1
  703. package/dist/registry/serviceRegistry.js.map +1 -1
  704. package/dist/registry/serviceType.js.map +1 -1
  705. package/dist/srs/factory.js.map +1 -1
  706. package/dist/srs/index.js.map +1 -1
  707. package/dist/srs/srs.js.map +1 -1
  708. package/dist/survey/factory.js +1 -0
  709. package/dist/survey/factory.js.map +1 -1
  710. package/dist/survey/index.js.map +1 -1
  711. package/dist/survey/nodeDefsFixer.js +1 -0
  712. package/dist/survey/nodeDefsFixer.js.map +1 -1
  713. package/dist/survey/refData/factory.js.map +1 -1
  714. package/dist/survey/refData/index.js.map +1 -1
  715. package/dist/survey/refData/refData.d.ts +15 -0
  716. package/dist/survey/refData/refData.js.map +1 -1
  717. package/dist/survey/service.js.map +1 -1
  718. package/dist/survey/survey.d.ts +9 -0
  719. package/dist/survey/survey.js.map +1 -1
  720. package/dist/survey/surveyDocImageFactory.js.map +1 -1
  721. package/dist/survey/surveyDocImages.js.map +1 -1
  722. package/dist/survey/surveyFileFactory.js.map +1 -1
  723. package/dist/survey/surveys/_nodeDefs/nodeDefsIndex.js +8 -0
  724. package/dist/survey/surveys/_nodeDefs/nodeDefsIndex.js.map +1 -1
  725. package/dist/survey/surveys/_nodeDefs/nodeDefsReader.js.map +1 -1
  726. package/dist/survey/surveys/dependencies.js +11 -2
  727. package/dist/survey/surveys/dependencies.js.map +1 -1
  728. package/dist/survey/surveys/index.js +6 -0
  729. package/dist/survey/surveys/index.js.map +1 -1
  730. package/dist/survey/surveys/nodeDefs.js +12 -0
  731. package/dist/survey/surveys/nodeDefs.js.map +1 -1
  732. package/dist/survey/surveys/refsData.js.map +1 -1
  733. package/dist/survey/surveys/surveyGettersSecurity.js.map +1 -1
  734. package/dist/survey/surveys/surveysGetters.js +3 -1
  735. package/dist/survey/surveys/surveysGetters.js.map +1 -1
  736. package/dist/survey/surveys/surveysUtils.js.map +1 -1
  737. package/dist/taxonomy/factory.js.map +1 -1
  738. package/dist/taxonomy/index.js.map +1 -1
  739. package/dist/taxonomy/service.js.map +1 -1
  740. package/dist/taxonomy/taxa.js.map +1 -1
  741. package/dist/taxonomy/taxon.js.map +1 -1
  742. package/dist/taxonomy/taxonGenerator.js.map +1 -1
  743. package/dist/taxonomy/taxonService.js.map +1 -1
  744. package/dist/taxonomy/taxonVernacularName.js.map +1 -1
  745. package/dist/taxonomy/taxonomies.js.map +1 -1
  746. package/dist/taxonomy/taxonomy.js.map +1 -1
  747. package/dist/tests/builder/recordBuilder/attributeBuilder.js +2 -0
  748. package/dist/tests/builder/recordBuilder/attributeBuilder.js.map +1 -1
  749. package/dist/tests/builder/recordBuilder/entityBuilder.js.map +1 -1
  750. package/dist/tests/builder/recordBuilder/index.js.map +1 -1
  751. package/dist/tests/builder/recordBuilder/nodeBuilder.js.map +1 -1
  752. package/dist/tests/builder/recordBuilder/recordBuilder.js.map +1 -1
  753. package/dist/tests/builder/surveyBuilder/categoryBuilder.js.map +1 -1
  754. package/dist/tests/builder/surveyBuilder/categoryItemBuilder.js.map +1 -1
  755. package/dist/tests/builder/surveyBuilder/index.js.map +1 -1
  756. package/dist/tests/builder/surveyBuilder/nodeDefAttributeBuilder.js.map +1 -1
  757. package/dist/tests/builder/surveyBuilder/nodeDefBuilder.js.map +1 -1
  758. package/dist/tests/builder/surveyBuilder/nodeDefCodeBuilder.js.map +1 -1
  759. package/dist/tests/builder/surveyBuilder/nodeDefEntityBuilder.js.map +1 -1
  760. package/dist/tests/builder/surveyBuilder/nodeDefTaxonBuilder.js.map +1 -1
  761. package/dist/tests/builder/surveyBuilder/surveyBuilder.js.map +1 -1
  762. package/dist/tests/builder/surveyBuilder/taxonBuilder.js.map +1 -1
  763. package/dist/tests/builder/surveyBuilder/taxonomyBuilder.js.map +1 -1
  764. package/dist/utils/_objects/assoc.js.map +1 -1
  765. package/dist/utils/_objects/assocPath.js +1 -0
  766. package/dist/utils/_objects/assocPath.js.map +1 -1
  767. package/dist/utils/_objects/camelize.d.ts +9 -0
  768. package/dist/utils/_objects/camelize.js +9 -0
  769. package/dist/utils/_objects/camelize.js.map +1 -1
  770. package/dist/utils/_objects/deepMerge.d.ts +5 -0
  771. package/dist/utils/_objects/deepMerge.js +10 -0
  772. package/dist/utils/_objects/deepMerge.js.map +1 -1
  773. package/dist/utils/_objects/deleteEmptyProps.js.map +1 -1
  774. package/dist/utils/_objects/difference.js.map +1 -1
  775. package/dist/utils/_objects/dissoc.js.map +1 -1
  776. package/dist/utils/_objects/dissocPath.js +1 -0
  777. package/dist/utils/_objects/dissocPath.js.map +1 -1
  778. package/dist/utils/_objects/dissocPathIfEmpty.js.map +1 -1
  779. package/dist/utils/_objects/fromPairs.js.map +1 -1
  780. package/dist/utils/_objects/index.js.map +1 -1
  781. package/dist/utils/_objects/isEmpty.d.ts +6 -0
  782. package/dist/utils/_objects/isEmpty.js +8 -0
  783. package/dist/utils/_objects/isEmpty.js.map +1 -1
  784. package/dist/utils/_objects/isEqual.js.map +1 -1
  785. package/dist/utils/_objects/isNil.d.ts +6 -0
  786. package/dist/utils/_objects/isNil.js +6 -0
  787. package/dist/utils/_objects/isNil.js.map +1 -1
  788. package/dist/utils/_objects/isNotEmpty.d.ts +6 -0
  789. package/dist/utils/_objects/isNotEmpty.js +6 -0
  790. package/dist/utils/_objects/isNotEmpty.js.map +1 -1
  791. package/dist/utils/_objects/parse.d.ts +8 -0
  792. package/dist/utils/_objects/parse.js +8 -0
  793. package/dist/utils/_objects/parse.js.map +1 -1
  794. package/dist/utils/_objects/path.d.ts +6 -0
  795. package/dist/utils/_objects/path.js +7 -0
  796. package/dist/utils/_objects/path.js.map +1 -1
  797. package/dist/utils/_objects/propertyOf.js.map +1 -1
  798. package/dist/utils/_objects/setInPath.js.map +1 -1
  799. package/dist/utils/_objects/stringify.d.ts +9 -0
  800. package/dist/utils/_objects/stringify.js +9 -0
  801. package/dist/utils/_objects/stringify.js.map +1 -1
  802. package/dist/utils/_objects/toPairs.js.map +1 -1
  803. package/dist/utils/arrays.js.map +1 -1
  804. package/dist/utils/dates.d.ts +1 -1
  805. package/dist/utils/dates.js +22 -0
  806. package/dist/utils/dates.js.map +1 -1
  807. package/dist/utils/fileNames.js.map +1 -1
  808. package/dist/utils/fileProcessor.js +5 -1
  809. package/dist/utils/fileProcessor.js.map +1 -1
  810. package/dist/utils/index.js.map +1 -1
  811. package/dist/utils/numbers.js +21 -0
  812. package/dist/utils/numbers.js.map +1 -1
  813. package/dist/utils/promises.js +15 -1
  814. package/dist/utils/promises.js.map +1 -1
  815. package/dist/utils/queue.d.ts +7 -0
  816. package/dist/utils/queue.js +9 -0
  817. package/dist/utils/queue.js.map +1 -1
  818. package/dist/utils/retryProcessor.js +5 -1
  819. package/dist/utils/retryProcessor.js.map +1 -1
  820. package/dist/utils/strings.js.map +1 -1
  821. package/dist/utils/uuids.js.map +1 -1
  822. package/dist/utils/versions.js +4 -0
  823. package/dist/utils/versions.js.map +1 -1
  824. package/dist/validation/factory.js.map +1 -1
  825. package/dist/validation/fieldValidator.js.map +1 -1
  826. package/dist/validation/fieldValidators/email.js +3 -0
  827. package/dist/validation/fieldValidators/email.js.map +1 -1
  828. package/dist/validation/fieldValidators/index.js.map +1 -1
  829. package/dist/validation/fieldValidators/name.js +4 -0
  830. package/dist/validation/fieldValidators/name.js.map +1 -1
  831. package/dist/validation/fieldValidators/notKeyword.js.map +1 -1
  832. package/dist/validation/fieldValidators/numeric.js.map +1 -1
  833. package/dist/validation/fieldValidators/numericPositive.js.map +1 -1
  834. package/dist/validation/fieldValidators/required.js.map +1 -1
  835. package/dist/validation/index.js.map +1 -1
  836. package/dist/validation/validation.js.map +1 -1
  837. package/dist/validation/validationResults.js +1 -1
  838. package/dist/validation/validationResults.js.map +1 -1
  839. package/dist/validation/validations.js +17 -1
  840. package/dist/validation/validations.js.map +1 -1
  841. package/dist/validation/validator.js.map +1 -1
  842. package/dist/validation/validatorErrorKeys.js.map +1 -1
  843. package/package.json +6 -9
@@ -15,6 +15,11 @@ BigNumber.config({
15
15
  },
16
16
  });
17
17
  const toNumber = (num) => (Objects.isEmpty(num) ? Number.NaN : Number(num));
18
+ /**
19
+ * Returns the absolute modulus of the specified value. The result will always be a positive number.
20
+ * @param {!number} modulus - The modulus to apply.
21
+ * @returns {number} - The result of the modulus (always positive or 0).
22
+ */
18
23
  const absMod = (modulus) => (value) => ((value % modulus) + modulus) % modulus;
19
24
  const between = (value, min, max) => min <= value && max >= value;
20
25
  const isFloat = (value) => {
@@ -25,21 +30,33 @@ const isInteger = (value) => {
25
30
  const number = toNumber(value);
26
31
  return Number.isInteger(number);
27
32
  };
33
+ /**
34
+ * Formats the given value to the specified fixed dicimal digits.
35
+ */
28
36
  const formatDecimal = (value, decimalDigits = Number.NaN) => {
29
37
  if (Number.isNaN(value) || value === null)
30
38
  return null;
31
39
  const num = new BigNumber(value);
32
40
  if (decimalDigits > 0) {
41
+ // round to fixed number of decimal digits
33
42
  return num.toFormat(decimalDigits);
34
43
  }
35
44
  if (decimalDigits === 0) {
45
+ // format as integer
36
46
  return num.toFormat(0, { groupSeparator: '' });
37
47
  }
38
48
  return num.toString();
39
49
  };
50
+ /**
51
+ * Formats the given value to a rounded integer.
52
+ *
53
+ * @param {!number} value - The value to format.
54
+ * @returns {string} - The formatted value or null if the value was null.
55
+ */
40
56
  const formatInteger = (value) => formatDecimal(value, 0);
41
57
  const limit = ({ minValue = Number.NaN, maxValue = Number.NaN }) => (value) => {
42
58
  let result = Number(value);
59
+ // NOTE: 0 is a valid bound
43
60
  if (!Number.isNaN(minValue))
44
61
  result = Math.max(minValue, result);
45
62
  if (!Number.isNaN(maxValue))
@@ -63,6 +80,10 @@ const toCardinalByLang = {
63
80
  [LanguageCode.pt]: toCardinalPt,
64
81
  [LanguageCode.ru]: toCardinalRu,
65
82
  };
83
+ /**
84
+ * Converts the given number to words (cardinal form) in the specified language.
85
+ * Falls back to English if the specified language is not supported.
86
+ */
66
87
  const toWords = (value, lang = LanguageCode.en) => {
67
88
  var _a;
68
89
  const number = toNumber(value);
@@ -1 +1 @@
1
- {"version":3,"file":"numbers.js","sourceRoot":"","sources":["../../../src/utils/numbers.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"numbers.js","sourceRoot":"","sources":["../../../src/utils/numbers.ts"],"names":[],"mappings":"AAAA,OAAO,SAAS,MAAM,cAAc,CAAA;AACpC,OAAO,EAAE,UAAU,IAAI,YAAY,EAAE,MAAM,YAAY,CAAA;AACvD,OAAO,EAAE,UAAU,IAAI,YAAY,EAAE,MAAM,YAAY,CAAA;AACvD,OAAO,EAAE,UAAU,IAAI,YAAY,EAAE,MAAM,YAAY,CAAA;AACvD,OAAO,EAAE,UAAU,IAAI,YAAY,EAAE,MAAM,YAAY,CAAA;AACvD,OAAO,EAAE,UAAU,IAAI,YAAY,EAAE,MAAM,eAAe,CAAA;AAC1D,OAAO,EAAE,UAAU,IAAI,YAAY,EAAE,MAAM,YAAY,CAAA;AAEvD,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAC1C,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAA;AAEpC,SAAS,CAAC,MAAM,CAAC;IACf,MAAM,EAAE;QACN,gBAAgB,EAAE,GAAG;QACrB,cAAc,EAAE,GAAG;QACnB,SAAS,EAAE,CAAC;KACb;CACF,CAAC,CAAA;AAEF,MAAM,QAAQ,GAAG,CAAC,GAAQ,EAAU,EAAE,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAA;AAExF;;;;GAIG;AACH,MAAM,MAAM,GACV,CAAC,OAAe,EAAE,EAAE,CACpB,CAAC,KAAa,EAAU,EAAE,CACxB,CAAC,CAAC,KAAK,GAAG,OAAO,CAAC,GAAG,OAAO,CAAC,GAAG,OAAO,CAAA;AAE3C,MAAM,OAAO,GAAG,CAAC,KAAa,EAAE,GAAW,EAAE,GAAW,EAAW,EAAE,CAAC,GAAG,IAAI,KAAK,IAAI,GAAG,IAAI,KAAK,CAAA;AAElG,MAAM,OAAO,GAAG,CAAC,KAAU,EAAW,EAAE;IACtC,MAAM,MAAM,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAA;IAC9B,OAAO,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAA;AAChC,CAAC,CAAA;AAED,MAAM,SAAS,GAAG,CAAC,KAAU,EAAW,EAAE;IACxC,MAAM,MAAM,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAA;IAC9B,OAAO,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAA;AACjC,CAAC,CAAA;AAED;;GAEG;AACH,MAAM,aAAa,GAAG,CAAC,KAAa,EAAE,aAAa,GAAG,MAAM,CAAC,GAAG,EAAE,EAAE;IAClE,IAAI,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,KAAK,KAAK,IAAI;QAAE,OAAO,IAAI,CAAA;IACtD,MAAM,GAAG,GAAG,IAAI,SAAS,CAAC,KAAK,CAAC,CAAA;IAEhC,IAAI,aAAa,GAAG,CAAC,EAAE,CAAC;QACtB,0CAA0C;QAC1C,OAAO,GAAG,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAA;IACpC,CAAC;IACD,IAAI,aAAa,KAAK,CAAC,EAAE,CAAC;QACxB,oBAAoB;QACpB,OAAO,GAAG,CAAC,QAAQ,CAAC,CAAC,EAAE,EAAE,cAAc,EAAE,EAAE,EAAE,CAAC,CAAA;IAChD,CAAC;IACD,OAAO,GAAG,CAAC,QAAQ,EAAE,CAAA;AACvB,CAAC,CAAA;AAED;;;;;GAKG;AACH,MAAM,aAAa,GAAG,CAAC,KAAa,EAAiB,EAAE,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC,CAAC,CAAA;AAE/E,MAAM,KAAK,GACT,CAAC,EAAE,QAAQ,GAAG,MAAM,CAAC,GAAG,EAAE,QAAQ,GAAG,MAAM,CAAC,GAAG,EAAE,EAAE,EAAE,CACrD,CAAC,KAAa,EAAE,EAAE;IAChB,IAAI,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,CAAA;IAC1B,2BAA2B;IAC3B,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC;QAAE,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAA;IAChE,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC;QAAE,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAA;IAChE,OAAO,MAAM,CAAA;AACf,CAAC,CAAA;AAEH,MAAM,gBAAgB,GAAG,CAAC,KAAU,EAAE,SAAS,GAAG,MAAM,CAAC,GAAG,EAAE,EAAE;IAC9D,MAAM,GAAG,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAA;IAC3B,IAAI,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC;QAAE,OAAO,MAAM,CAAC,GAAG,CAAA;IACxC,IAAI,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC;QAAE,OAAO,GAAG,CAAA;IACvC,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,SAAS,CAAC,CAAA;IACnC,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,CAAA;AACpC,CAAC,CAAA;AAED,MAAM,gBAAgB,GAA+E;IACnG,CAAC,YAAY,CAAC,EAAE,CAAC,EAAE,YAAY;IAC/B,CAAC,YAAY,CAAC,EAAE,CAAC,EAAE,YAAY;IAC/B,CAAC,YAAY,CAAC,EAAE,CAAC,EAAE,YAAY;IAC/B,CAAC,YAAY,CAAC,EAAE,CAAC,EAAE,YAAY;IAC/B,CAAC,YAAY,CAAC,EAAE,CAAC,EAAE,YAAY;IAC/B,CAAC,YAAY,CAAC,EAAE,CAAC,EAAE,YAAY;CAChC,CAAA;AAED;;;GAGG;AACH,MAAM,OAAO,GAAG,CAAC,KAAU,EAAE,OAAqB,YAAY,CAAC,EAAE,EAAiB,EAAE;;IAClF,MAAM,MAAM,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAA;IAC9B,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC;QAAE,OAAO,IAAI,CAAA;IACzC,MAAM,UAAU,GAAG,MAAA,gBAAgB,CAAC,IAAI,CAAC,mCAAI,gBAAgB,CAAC,YAAY,CAAC,EAAE,CAAE,CAAA;IAC/E,IAAI,CAAC;QACH,OAAO,UAAU,CAAC,MAAM,CAAC,CAAA;IAC3B,CAAC;IAAC,WAAM,CAAC;QACP,OAAO,IAAI,CAAA;IACb,CAAC;AACH,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,OAAO,GAAG;IACrB,MAAM;IACN,OAAO;IACP,aAAa;IACb,aAAa;IACb,OAAO;IACP,SAAS;IACT,KAAK;IACL,gBAAgB;IAChB,QAAQ;IACR,OAAO;CACR,CAAA","sourcesContent":["import BigNumber from 'bignumber.js'\nimport { toCardinal as toCardinalEn } from 'n2words/en'\nimport { toCardinal as toCardinalEs } from 'n2words/es'\nimport { toCardinal as toCardinalFr } from 'n2words/fr'\nimport { toCardinal as toCardinalJa } from 'n2words/ja'\nimport { toCardinal as toCardinalPt } from 'n2words/pt-PT'\nimport { toCardinal as toCardinalRu } from 'n2words/ru'\n\nimport { LanguageCode } from '../language'\nimport { Objects } from './_objects'\n\nBigNumber.config({\n FORMAT: {\n decimalSeparator: '.',\n groupSeparator: ',',\n groupSize: 3,\n },\n})\n\nconst toNumber = (num: any): number => (Objects.isEmpty(num) ? Number.NaN : Number(num))\n\n/**\n * Returns the absolute modulus of the specified value. The result will always be a positive number.\n * @param {!number} modulus - The modulus to apply.\n * @returns {number} - The result of the modulus (always positive or 0).\n */\nconst absMod =\n (modulus: number) =>\n (value: number): number =>\n ((value % modulus) + modulus) % modulus\n\nconst between = (value: number, min: number, max: number): boolean => min <= value && max >= value\n\nconst isFloat = (value: any): boolean => {\n const number = toNumber(value)\n return Number.isFinite(number)\n}\n\nconst isInteger = (value: any): boolean => {\n const number = toNumber(value)\n return Number.isInteger(number)\n}\n\n/**\n * Formats the given value to the specified fixed dicimal digits.\n */\nconst formatDecimal = (value: number, decimalDigits = Number.NaN) => {\n if (Number.isNaN(value) || value === null) return null\n const num = new BigNumber(value)\n\n if (decimalDigits > 0) {\n // round to fixed number of decimal digits\n return num.toFormat(decimalDigits)\n }\n if (decimalDigits === 0) {\n // format as integer\n return num.toFormat(0, { groupSeparator: '' })\n }\n return num.toString()\n}\n\n/**\n * Formats the given value to a rounded integer.\n *\n * @param {!number} value - The value to format.\n * @returns {string} - The formatted value or null if the value was null.\n */\nconst formatInteger = (value: number): string | null => formatDecimal(value, 0)\n\nconst limit =\n ({ minValue = Number.NaN, maxValue = Number.NaN }) =>\n (value: number) => {\n let result = Number(value)\n // NOTE: 0 is a valid bound\n if (!Number.isNaN(minValue)) result = Math.max(minValue, result)\n if (!Number.isNaN(maxValue)) result = Math.min(maxValue, result)\n return result\n }\n\nconst roundToPrecision = (value: any, precision = Number.NaN) => {\n const num = toNumber(value)\n if (Number.isNaN(num)) return Number.NaN\n if (Number.isNaN(precision)) return num\n const exp = Math.pow(10, precision)\n return Math.round(num * exp) / exp\n}\n\nconst toCardinalByLang: Partial<Record<LanguageCode, (value: number | string | bigint) => string>> = {\n [LanguageCode.en]: toCardinalEn,\n [LanguageCode.es]: toCardinalEs,\n [LanguageCode.fr]: toCardinalFr,\n [LanguageCode.ja]: toCardinalJa,\n [LanguageCode.pt]: toCardinalPt,\n [LanguageCode.ru]: toCardinalRu,\n}\n\n/**\n * Converts the given number to words (cardinal form) in the specified language.\n * Falls back to English if the specified language is not supported.\n */\nconst toWords = (value: any, lang: LanguageCode = LanguageCode.en): string | null => {\n const number = toNumber(value)\n if (!Number.isFinite(number)) return null\n const toCardinal = toCardinalByLang[lang] ?? toCardinalByLang[LanguageCode.en]!\n try {\n return toCardinal(number)\n } catch {\n return null\n }\n}\n\nexport const Numbers = {\n absMod,\n between,\n formatDecimal,\n formatInteger,\n isFloat,\n isInteger,\n limit,\n roundToPrecision,\n toNumber,\n toWords,\n}\n"]}
@@ -15,7 +15,21 @@ const handleGeneratorNext = (results) => (generator) => __awaiter(void 0, void 0
15
15
  results.push(yield value);
16
16
  return handleGeneratorNext(results)(generator);
17
17
  });
18
- const resolveGenerator = (generator) => handleGeneratorNext([])(generator);
18
+ /**
19
+ * Transforms the generator passed as input parameter to a Promise that gets resolved when the generator finishes.
20
+ *
21
+ * A useful application is when an array of promises must be resolved in order.
22
+ */
23
+ const resolveGenerator = (generator) => handleGeneratorNext([])(generator); // use a new results array at every call
24
+ /**
25
+ * Given an Iterable, iterates serially over all the values in it, executing the given callback on each element.
26
+ * If the callback returns a Promise, it is awaited before continuing to the next iteration.
27
+ *
28
+ * @param {Iterable} iterable - The iterable to iterate.
29
+ * @param {Function} callback - The callback function to invoke on each element of the iterable.
30
+ * @param {Function} stopIfFn - If specified, stops the loop if the call to that function returns true.
31
+ * @returns {Promise<*>} - The returned Promise.
32
+ */
19
33
  const each = (iterable, callback, stopIfFn) => __awaiter(void 0, void 0, void 0, function* () {
20
34
  function* generator() {
21
35
  let index = 0;
@@ -1 +1 @@
1
- {"version":3,"file":"promises.js","sourceRoot":"","sources":["../../../src/utils/promises.ts"],"names":[],"mappings":";;;;;;;;;AAAA,MAAM,mBAAmB,GACvB,CAAI,OAAc,EAAE,EAAE,CACtB,CAAO,SAAoC,EAAgB,EAAE;IAC3D,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,SAAS,CAAC,IAAI,EAAE,CAAA;IAExC,IAAI,IAAI,EAAE,CAAC;QACT,OAAO,OAAO,CAAA;IAChB,CAAC;IAED,OAAO,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC,CAAA;IAEzB,OAAO,mBAAmB,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC,CAAA;AAChD,CAAC,CAAA,CAAA;AAOH,MAAM,gBAAgB,GAAG,CAAI,SAAoC,EAAgB,EAAE,CACjF,mBAAmB,CAAI,EAAE,CAAC,CAAC,SAAS,CAAC,CAAA;AAWvC,MAAM,IAAI,GAAG,CACX,QAAqB,EACrB,QAAmD,EACnD,QAA+B,EAChB,EAAE;IACjB,QAAQ,CAAC,CAAC,SAAS;QACjB,IAAI,KAAK,GAAG,CAAC,CAAA;QACb,KAAK,MAAM,IAAI,IAAI,QAAQ,EAAE,CAAC;YAC5B,IAAI,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAG,IAAI,CAAC,EAAE,CAAC;gBACrB,OAAM;YACR,CAAC;YACD,MAAM,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC,CAAA;YAC3B,KAAK,IAAI,CAAC,CAAA;QACZ,CAAC;IACH,CAAC;IAED,OAAO,gBAAgB,CAAC,SAAS,EAAE,CAAC,CAAA;AACtC,CAAC,CAAA,CAAA;AAED,MAAM,CAAC,MAAM,QAAQ,GAAG;IACtB,IAAI;CACL,CAAA"}
1
+ {"version":3,"file":"promises.js","sourceRoot":"","sources":["../../../src/utils/promises.ts"],"names":[],"mappings":";;;;;;;;;AAAA,MAAM,mBAAmB,GACvB,CAAI,OAAc,EAAE,EAAE,CACtB,CAAO,SAAoC,EAAgB,EAAE;IAC3D,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,SAAS,CAAC,IAAI,EAAE,CAAA;IAExC,IAAI,IAAI,EAAE,CAAC;QACT,OAAO,OAAO,CAAA;IAChB,CAAC;IAED,OAAO,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC,CAAA;IAEzB,OAAO,mBAAmB,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC,CAAA;AAChD,CAAC,CAAA,CAAA;AAEH;;;;GAIG;AACH,MAAM,gBAAgB,GAAG,CAAI,SAAoC,EAAgB,EAAE,CACjF,mBAAmB,CAAI,EAAE,CAAC,CAAC,SAAS,CAAC,CAAA,CAAC,wCAAwC;AAEhF;;;;;;;;GAQG;AACH,MAAM,IAAI,GAAG,CACX,QAAqB,EACrB,QAAmD,EACnD,QAA+B,EAChB,EAAE;IACjB,QAAQ,CAAC,CAAC,SAAS;QACjB,IAAI,KAAK,GAAG,CAAC,CAAA;QACb,KAAK,MAAM,IAAI,IAAI,QAAQ,EAAE,CAAC;YAC5B,IAAI,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAG,IAAI,CAAC,EAAE,CAAC;gBACrB,OAAM;YACR,CAAC;YACD,MAAM,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC,CAAA;YAC3B,KAAK,IAAI,CAAC,CAAA;QACZ,CAAC;IACH,CAAC;IAED,OAAO,gBAAgB,CAAC,SAAS,EAAE,CAAC,CAAA;AACtC,CAAC,CAAA,CAAA;AAED,MAAM,CAAC,MAAM,QAAQ,GAAG;IACtB,IAAI;CACL,CAAA","sourcesContent":["const handleGeneratorNext =\n <T>(results: any[]) =>\n async (generator: Iterator<Promise<T>, any>): Promise<any> => {\n const { done, value } = generator.next()\n\n if (done) {\n return results\n }\n\n results.push(await value)\n\n return handleGeneratorNext(results)(generator)\n }\n\n/**\n * Transforms the generator passed as input parameter to a Promise that gets resolved when the generator finishes.\n *\n * A useful application is when an array of promises must be resolved in order.\n */\nconst resolveGenerator = <T>(generator: Iterator<Promise<T>, any>): Promise<any> =>\n handleGeneratorNext<T>([])(generator) // use a new results array at every call\n\n/**\n * Given an Iterable, iterates serially over all the values in it, executing the given callback on each element.\n * If the callback returns a Promise, it is awaited before continuing to the next iteration.\n *\n * @param {Iterable} iterable - The iterable to iterate.\n * @param {Function} callback - The callback function to invoke on each element of the iterable.\n * @param {Function} stopIfFn - If specified, stops the loop if the call to that function returns true.\n * @returns {Promise<*>} - The returned Promise.\n */\nconst each = async <T>(\n iterable: Iterable<T>,\n callback: (item: T, index: number) => Promise<void>,\n stopIfFn?: (item: T) => boolean\n): Promise<void> => {\n function* generator() {\n let index = 0\n for (const item of iterable) {\n if (stopIfFn?.(item)) {\n return\n }\n yield callback(item, index)\n index += 1\n }\n }\n\n return resolveGenerator(generator())\n}\n\nexport const Promises = {\n each,\n}\n"]}
@@ -1,10 +1,19 @@
1
+ // when the number of dequeued items exceeds this threshold (and half of the stored items),
2
+ // the storage array is compacted to release the memory of the dequeued items
1
3
  const COMPACTION_MIN_HEAD_INDEX = 1024;
4
+ /**
5
+ * FIFO queue with constant time enqueue and dequeue operations.
6
+ */
2
7
  export class Queue {
3
8
  constructor(items = []) {
4
9
  this._items = [];
5
10
  this._headIndex = 0;
6
11
  this.enqueueItems(items);
7
12
  }
13
+ /**
14
+ * Snapshot of the items still in the queue, from the last enqueued to the first one (the next one to be dequeued).
15
+ * The returned array is a copy: modifying it does not affect the queue.
16
+ */
8
17
  get items() {
9
18
  return this._items.slice(this._headIndex).reverse();
10
19
  }
@@ -1 +1 @@
1
- {"version":3,"file":"queue.js","sourceRoot":"","sources":["../../../src/utils/queue.ts"],"names":[],"mappings":"AAEA,MAAM,yBAAyB,GAAG,IAAI,CAAA;AAKtC,MAAM,OAAO,KAAK;IAIhB,YAAY,QAAe,EAAE;QAC3B,IAAI,CAAC,MAAM,GAAG,EAAE,CAAA;QAChB,IAAI,CAAC,UAAU,GAAG,CAAC,CAAA;QACnB,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAA;IAC1B,CAAC;IAMD,IAAI,KAAK;QACP,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,OAAO,EAAE,CAAA;IACrD,CAAC;IAED,OAAO,CAAC,IAAS;QACf,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IACxB,CAAC;IAED,YAAY,CAAC,KAAY;QACvB,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAA;QACpB,CAAC;IACH,CAAC;IAED,OAAO;QACL,IAAI,IAAI,CAAC,OAAO,EAAE;YAAE,OAAO,SAAS,CAAA;QAEpC,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA;QACzC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,SAAS,CAAA;QACxC,IAAI,CAAC,UAAU,IAAI,CAAC,CAAA;QAEpB,IAAI,IAAI,CAAC,OAAO,EAAE,EAAE,CAAC;YACnB,IAAI,CAAC,MAAM,GAAG,EAAE,CAAA;YAChB,IAAI,CAAC,UAAU,GAAG,CAAC,CAAA;QACrB,CAAC;aAAM,IAAI,IAAI,CAAC,UAAU,IAAI,yBAAyB,IAAI,IAAI,CAAC,UAAU,GAAG,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;YACrG,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA;YAChD,IAAI,CAAC,UAAU,GAAG,CAAC,CAAA;QACrB,CAAC;QACD,OAAO,IAAI,CAAA;IACb,CAAC;IAED,IAAI,KAAK;QACP,OAAO,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA;IAClE,CAAC;IAED,IAAI,IAAI;QACN,OAAO,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAA;IACxD,CAAC;IAED,IAAI,IAAI;QACN,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC,UAAU,CAAA;IAC7C,CAAC;IAED,OAAO;QACL,OAAO,IAAI,CAAC,IAAI,KAAK,CAAC,CAAA;IACxB,CAAC;CACF"}
1
+ {"version":3,"file":"queue.js","sourceRoot":"","sources":["../../../src/utils/queue.ts"],"names":[],"mappings":"AAAA,2FAA2F;AAC3F,6EAA6E;AAC7E,MAAM,yBAAyB,GAAG,IAAI,CAAA;AAEtC;;GAEG;AACH,MAAM,OAAO,KAAK;IAIhB,YAAY,QAAe,EAAE;QAC3B,IAAI,CAAC,MAAM,GAAG,EAAE,CAAA;QAChB,IAAI,CAAC,UAAU,GAAG,CAAC,CAAA;QACnB,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAA;IAC1B,CAAC;IAED;;;OAGG;IACH,IAAI,KAAK;QACP,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,OAAO,EAAE,CAAA;IACrD,CAAC;IAED,OAAO,CAAC,IAAS;QACf,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IACxB,CAAC;IAED,YAAY,CAAC,KAAY;QACvB,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAA;QACpB,CAAC;IACH,CAAC;IAED,OAAO;QACL,IAAI,IAAI,CAAC,OAAO,EAAE;YAAE,OAAO,SAAS,CAAA;QAEpC,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA;QACzC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,SAAS,CAAA;QACxC,IAAI,CAAC,UAAU,IAAI,CAAC,CAAA;QAEpB,IAAI,IAAI,CAAC,OAAO,EAAE,EAAE,CAAC;YACnB,IAAI,CAAC,MAAM,GAAG,EAAE,CAAA;YAChB,IAAI,CAAC,UAAU,GAAG,CAAC,CAAA;QACrB,CAAC;aAAM,IAAI,IAAI,CAAC,UAAU,IAAI,yBAAyB,IAAI,IAAI,CAAC,UAAU,GAAG,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;YACrG,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA;YAChD,IAAI,CAAC,UAAU,GAAG,CAAC,CAAA;QACrB,CAAC;QACD,OAAO,IAAI,CAAA;IACb,CAAC;IAED,IAAI,KAAK;QACP,OAAO,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA;IAClE,CAAC;IAED,IAAI,IAAI;QACN,OAAO,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAA;IACxD,CAAC;IAED,IAAI,IAAI;QACN,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC,UAAU,CAAA;IAC7C,CAAC;IAED,OAAO;QACL,OAAO,IAAI,CAAC,IAAI,KAAK,CAAC,CAAA;IACxB,CAAC;CACF","sourcesContent":["// when the number of dequeued items exceeds this threshold (and half of the stored items),\n// the storage array is compacted to release the memory of the dequeued items\nconst COMPACTION_MIN_HEAD_INDEX = 1024\n\n/**\n * FIFO queue with constant time enqueue and dequeue operations.\n */\nexport class Queue {\n private _items: any[]\n private _headIndex: number\n\n constructor(items: any[] = []) {\n this._items = []\n this._headIndex = 0\n this.enqueueItems(items)\n }\n\n /**\n * Snapshot of the items still in the queue, from the last enqueued to the first one (the next one to be dequeued).\n * The returned array is a copy: modifying it does not affect the queue.\n */\n get items(): readonly any[] {\n return this._items.slice(this._headIndex).reverse()\n }\n\n enqueue(item: any): void {\n this._items.push(item)\n }\n\n enqueueItems(items: any[]) {\n for (const item of items) {\n this.enqueue(item)\n }\n }\n\n dequeue(): any {\n if (this.isEmpty()) return undefined\n\n const item = this._items[this._headIndex]\n this._items[this._headIndex] = undefined\n this._headIndex += 1\n\n if (this.isEmpty()) {\n this._items = []\n this._headIndex = 0\n } else if (this._headIndex >= COMPACTION_MIN_HEAD_INDEX && this._headIndex * 2 >= this._items.length) {\n this._items = this._items.slice(this._headIndex)\n this._headIndex = 0\n }\n return item\n }\n\n get first(): any {\n return this.isEmpty() ? undefined : this._items[this._headIndex]\n }\n\n get last(): any {\n return this.isEmpty() ? undefined : this._items.at(-1)\n }\n\n get size(): number {\n return this._items.length - this._headIndex\n }\n\n isEmpty(): boolean {\n return this.size === 0\n }\n}\n"]}
@@ -1,5 +1,6 @@
1
1
  export class RetryProcessor {
2
2
  constructor({ processor, onSuccess, onFail, maxTryings = 2 }) {
3
+ // State properties
3
4
  this.currentTrying = 0;
4
5
  this.running = false;
5
6
  this.processor = processor;
@@ -18,14 +19,17 @@ export class RetryProcessor {
18
19
  this.onSuccess(res);
19
20
  })
20
21
  .catch((error) => {
22
+ // On error, check if we should try again
21
23
  if (this.running && this.currentTrying < this.maxTryings) {
22
- this.processNext();
24
+ this.processNext(); // Retry
23
25
  }
24
26
  else {
27
+ // If we've stopped or exceeded max attempts, call the fail callback
25
28
  this.onFail(error);
26
29
  }
27
30
  });
28
31
  }
32
+ // Public methods
29
33
  start() {
30
34
  this.running = true;
31
35
  this.processNext();
@@ -1 +1 @@
1
- {"version":3,"file":"retryProcessor.js","sourceRoot":"","sources":["../../../src/utils/retryProcessor.ts"],"names":[],"mappings":"AAOA,MAAM,OAAO,cAAc;IAUzB,YAAY,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,EAAE,UAAU,GAAG,CAAC,EAAuC;QAHzF,kBAAa,GAAW,CAAC,CAAA;QACzB,YAAO,GAAY,KAAK,CAAA;QAG9B,IAAI,CAAC,SAAS,GAAG,SAAS,CAAA;QAC1B,IAAI,CAAC,SAAS,GAAG,SAAS,CAAA;QAC1B,IAAI,CAAC,MAAM,GAAG,MAAM,CAAA;QACpB,IAAI,CAAC,UAAU,GAAG,UAAU,CAAA;IAC9B,CAAC;IAES,KAAK;QACb,IAAI,CAAC,aAAa,GAAG,CAAC,CAAA;QACtB,IAAI,CAAC,OAAO,GAAG,KAAK,CAAA;IACtB,CAAC;IAES,WAAW;QACnB,IAAI,CAAC,aAAa,IAAI,CAAC,CAAA;QAEvB,IAAI,CAAC,SAAS,EAAE;aACb,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE;YACZ,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAA;QACrB,CAAC,CAAC;aACD,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;YAEf,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;gBACzD,IAAI,CAAC,WAAW,EAAE,CAAA;YACpB,CAAC;iBAAM,CAAC;gBAEN,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;YACpB,CAAC;QACH,CAAC,CAAC,CAAA;IACN,CAAC;IAGD,KAAK;QACH,IAAI,CAAC,OAAO,GAAG,IAAI,CAAA;QACnB,IAAI,CAAC,WAAW,EAAE,CAAA;IACpB,CAAC;IAED,IAAI;QACF,IAAI,CAAC,KAAK,EAAE,CAAA;IACd,CAAC;CACF"}
1
+ {"version":3,"file":"retryProcessor.js","sourceRoot":"","sources":["../../../src/utils/retryProcessor.ts"],"names":[],"mappings":"AAOA,MAAM,OAAO,cAAc;IAUzB,YAAY,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,EAAE,UAAU,GAAG,CAAC,EAAuC;QAJjG,mBAAmB;QACX,kBAAa,GAAW,CAAC,CAAA;QACzB,YAAO,GAAY,KAAK,CAAA;QAG9B,IAAI,CAAC,SAAS,GAAG,SAAS,CAAA;QAC1B,IAAI,CAAC,SAAS,GAAG,SAAS,CAAA;QAC1B,IAAI,CAAC,MAAM,GAAG,MAAM,CAAA;QACpB,IAAI,CAAC,UAAU,GAAG,UAAU,CAAA;IAC9B,CAAC;IAES,KAAK;QACb,IAAI,CAAC,aAAa,GAAG,CAAC,CAAA;QACtB,IAAI,CAAC,OAAO,GAAG,KAAK,CAAA;IACtB,CAAC;IAES,WAAW;QACnB,IAAI,CAAC,aAAa,IAAI,CAAC,CAAA;QAEvB,IAAI,CAAC,SAAS,EAAE;aACb,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE;YACZ,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAA;QACrB,CAAC,CAAC;aACD,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;YACf,yCAAyC;YACzC,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;gBACzD,IAAI,CAAC,WAAW,EAAE,CAAA,CAAC,QAAQ;YAC7B,CAAC;iBAAM,CAAC;gBACN,oEAAoE;gBACpE,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;YACpB,CAAC;QACH,CAAC,CAAC,CAAA;IACN,CAAC;IAED,iBAAiB;IACjB,KAAK;QACH,IAAI,CAAC,OAAO,GAAG,IAAI,CAAA;QACnB,IAAI,CAAC,WAAW,EAAE,CAAA;IACpB,CAAC;IAED,IAAI;QACF,IAAI,CAAC,KAAK,EAAE,CAAA;IACd,CAAC;CACF","sourcesContent":["interface RetryProcessorArgs<ProcessorResult> {\n processor: () => Promise<ProcessorResult>\n onSuccess: (result: ProcessorResult) => void\n onFail: (error: Error) => void\n maxTryings?: number\n}\n\nexport class RetryProcessor<ProcessorResult> {\n private readonly processor: () => Promise<ProcessorResult>\n private readonly onSuccess: (result: ProcessorResult) => void\n private readonly onFail: (error: Error) => void\n private readonly maxTryings: number\n\n // State properties\n private currentTrying: number = 0\n private running: boolean = false\n\n constructor({ processor, onSuccess, onFail, maxTryings = 2 }: RetryProcessorArgs<ProcessorResult>) {\n this.processor = processor\n this.onSuccess = onSuccess\n this.onFail = onFail\n this.maxTryings = maxTryings\n }\n\n protected reset() {\n this.currentTrying = 0\n this.running = false\n }\n\n protected processNext(): void {\n this.currentTrying += 1\n\n this.processor()\n .then((res) => {\n this.onSuccess(res)\n })\n .catch((error) => {\n // On error, check if we should try again\n if (this.running && this.currentTrying < this.maxTryings) {\n this.processNext() // Retry\n } else {\n // If we've stopped or exceeded max attempts, call the fail callback\n this.onFail(error)\n }\n })\n }\n\n // Public methods\n start(): void {\n this.running = true\n this.processNext()\n }\n\n stop(): void {\n this.reset()\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"strings.js","sourceRoot":"","sources":["../../../src/utils/strings.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"strings.js","sourceRoot":"","sources":["../../../src/utils/strings.ts"],"names":[],"mappings":"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","sourcesContent":["import { camelCase, snakeCase } from 'change-case'\n\nimport { Objects } from './_objects'\n\ntype TextType = string | undefined | null\n\nconst defaultIfEmpty =\n (defaultValue: string) =>\n (text: TextType): string =>\n Objects.isEmpty(text) ? defaultValue : (text as string)\n\nconst padStart =\n (length: number, padString: string) =>\n (text: TextType): string =>\n (text ?? '').padStart(length, padString)\n\nconst quote = (text: TextType): string => (Objects.isEmpty(text) ? '' : `'${text}'`)\n\nconst quoteDouble = (text: TextType): string => (Objects.isEmpty(text) ? '' : `\"${text}\"`)\n\nconst removePrefix =\n (prefix: string) =>\n (text: TextType): string => {\n if (Objects.isEmpty(text)) return ''\n return text?.startsWith(prefix) ? text.substring(prefix.length) : (text as string)\n }\n\nconst removeSuffix =\n (suffix: string) =>\n (text: TextType): string => {\n if (Objects.isEmpty(text)) return ''\n return text?.endsWith(suffix) ? text.substring(0, text.length - suffix.length) : (text as string)\n }\n\nconst appendIfMissing = (suffix: string) => (text: TextType) =>\n text?.endsWith(suffix) ? text : `${text ?? ''}${suffix}`\n\nconst prependIfMissing = (prefix: string) => (text: TextType) =>\n text?.startsWith(prefix) ? text : `${prefix}${text ?? ''}`\n\nconst repeat = (text: string, times: number): string => {\n const parts = []\n for (let i = 0; i < times; i++) {\n parts.push(text)\n }\n return parts.join('')\n}\n\nconst _unquoteInternal = (text: TextType, quoteSymbol = \"'\"): string => {\n if (Objects.isEmpty(text)) return ''\n let result = text as string\n if (result.length > 1 && result.startsWith(quoteSymbol) && result.endsWith(quoteSymbol)) {\n result = removePrefix(quoteSymbol)(result)\n result = removeSuffix(quoteSymbol)(result)\n }\n return result\n}\n\nconst unquote = (text: TextType): string => _unquoteInternal(text, `'`)\n\nconst unquoteDouble = (text: TextType): string => _unquoteInternal(text, `\"`)\n\nexport const Strings = {\n defaultIfEmpty,\n padStart,\n quote,\n quoteDouble,\n removePrefix,\n removeSuffix,\n appendIfMissing,\n prependIfMissing,\n repeat,\n unquote,\n unquoteDouble,\n camelCase,\n snakeCase,\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"uuids.js","sourceRoot":"","sources":["../../../src/utils/uuids.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,MAAM,MAAM,CAAA;AAEzB,MAAM,MAAM,GAAG,CAAC,KAAa,EAAW,EAAE,CACxC,KAAK,CAAC,MAAM,KAAK,EAAE,IAAI,4EAA4E,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;AAEjH,MAAM,CAAC,MAAM,KAAK,GAAG;IACnB,MAAM;IACN,EAAE;CACH,CAAA"}
1
+ {"version":3,"file":"uuids.js","sourceRoot":"","sources":["../../../src/utils/uuids.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,MAAM,MAAM,CAAA;AAEzB,MAAM,MAAM,GAAG,CAAC,KAAa,EAAW,EAAE,CACxC,KAAK,CAAC,MAAM,KAAK,EAAE,IAAI,4EAA4E,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;AAEjH,MAAM,CAAC,MAAM,KAAK,GAAG;IACnB,MAAM;IACN,EAAE;CACH,CAAA","sourcesContent":["import { v4 } from 'uuid'\n\nconst isUuid = (value: string): boolean =>\n value.length === 36 && /^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i.test(value)\n\nexport const UUIDs = {\n isUuid,\n v4,\n}\n"]}
@@ -16,6 +16,10 @@ const parse = (version) => {
16
16
  }
17
17
  return parsedVersion;
18
18
  };
19
+ /**
20
+ * Compares two version strings.
21
+ * @returns -1 if v1 < v2, 0 if v1 === v2, 1 if v1 > v2
22
+ */
19
23
  const compare = (v1, v2) => {
20
24
  var _a, _b, _c, _d;
21
25
  const p1 = parse(v1);
@@ -1 +1 @@
1
- {"version":3,"file":"versions.js","sourceRoot":"","sources":["../../../src/utils/versions.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"versions.js","sourceRoot":"","sources":["../../../src/utils/versions.ts"],"names":[],"mappings":"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","sourcesContent":["export type ParsedVersion = {\n major: number\n minor: number\n patch?: number\n commitsSinceTag?: number\n}\n\nconst VERSION_REGEX = /^v?(\\d+)\\.(\\d+)(?:\\.(\\d+))?(?:-(\\d+)(?:-g[0-9a-f]+)?)?$/i\n\nconst parse = (version: string): ParsedVersion => {\n const match = VERSION_REGEX.exec(version.trim())\n if (!match) {\n throw new Error(\n `Invalid version format: \"${version}\". Expected format: [v]major.minor[.patch][-commitsSinceTag[-g<commitHash>]] (e.g. \"2.3\", \"2.3.1\", \"v2.3.1\" or \"v2.3.19-4-g207bc95f8\")`\n )\n }\n const parsedVersion: ParsedVersion = {\n major: Number.parseInt(match[1], 10),\n minor: Number.parseInt(match[2], 10),\n }\n if (match[3] !== undefined) {\n parsedVersion.patch = Number.parseInt(match[3], 10)\n }\n if (match[4] !== undefined) {\n parsedVersion.commitsSinceTag = Number.parseInt(match[4], 10)\n }\n return parsedVersion\n}\n\n/**\n * Compares two version strings.\n * @returns -1 if v1 < v2, 0 if v1 === v2, 1 if v1 > v2\n */\nconst compare = (v1: string, v2: string): -1 | 0 | 1 => {\n const p1 = parse(v1)\n const p2 = parse(v2)\n const patch1 = p1.patch ?? 0\n const patch2 = p2.patch ?? 0\n const commitsSinceTag1 = p1.commitsSinceTag ?? 0\n const commitsSinceTag2 = p2.commitsSinceTag ?? 0\n\n if (p1.major !== p2.major) return p1.major < p2.major ? -1 : 1\n if (p1.minor !== p2.minor) return p1.minor < p2.minor ? -1 : 1\n if (patch1 !== patch2) return patch1 < patch2 ? -1 : 1\n if (commitsSinceTag1 !== commitsSinceTag2) return commitsSinceTag1 < commitsSinceTag2 ? -1 : 1\n return 0\n}\n\nconst isEqual = (v1: string, v2: string): boolean => compare(v1, v2) === 0\n\nconst isGreaterThan = (v1: string, v2: string): boolean => compare(v1, v2) === 1\n\nconst isLessThan = (v1: string, v2: string): boolean => compare(v1, v2) === -1\n\nconst isGreaterThanOrEqual = (v1: string, v2: string): boolean => compare(v1, v2) >= 0\n\nconst isLessThanOrEqual = (v1: string, v2: string): boolean => compare(v1, v2) <= 0\n\nexport const Versions = {\n parse,\n compare,\n isEqual,\n isGreaterThan,\n isLessThan,\n isGreaterThanOrEqual,\n isLessThanOrEqual,\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"factory.js","sourceRoot":"","sources":["../../../src/validation/factory.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,UAAU,CAAA;AAClC,OAAO,EAAgC,kBAAkB,EAAE,MAAM,cAAc,CAAA;AAS/E,MAAM,CAAC,MAAM,iBAAiB,GAAiD;IAC7E,cAAc,EAAE,CAAC,MAAgC,EAAc,EAAE;QAC/D,MAAM,aAAa,GAAG;YACpB,KAAK,EAAE,IAAI;SACZ,CAAA;QACD,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,mCACpC,aAAa,GACb,MAAM,CACV,CAAA;QACD,MAAM,MAAM,GAAe,EAAE,KAAK,EAAE,CAAA;QACpC,IAAI,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;YAC/B,MAAM,CAAC,MAAM,GAAG,MAAM,CAAA;QACxB,CAAC;QACD,IAAI,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;YAC/B,MAAM,CAAC,MAAM,GAAG,MAAM,CAAA;QACxB,CAAC;QACD,IAAI,OAAO,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;YACjC,MAAM,CAAC,QAAQ,GAAG,QAAQ,CAAA;QAC5B,CAAC;QACD,OAAO,MAAM,CAAA;IACf,CAAC;CACF,CAAA;AAUD,MAAM,CAAC,MAAM,uBAAuB,GAA6D;IAC/F,cAAc,EAAE,CAAC,SAAwC,EAAE,EAAoB,EAAE;QAC/E,MAAM,aAAa,GAAG;YACpB,KAAK,EAAE,IAAI;SACZ,CAAA;QACD,MAAM,EAAE,QAAQ,EAAE,aAAa,EAAE,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,mCAAQ,aAAa,GAAK,MAAM,CAAE,CAAA;QAC1G,MAAM,QAAQ,GAAG,CAAC,aAAa,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC,CAAC,aAAa,CAAA;QACpF,OAAO;YACL,QAAQ;YACR,GAAG;YACH,MAAM,EAAE,OAAO;YACf,QAAQ;YACR,KAAK;SACN,CAAA;IACH,CAAC;CACF,CAAA"}
1
+ {"version":3,"file":"factory.js","sourceRoot":"","sources":["../../../src/validation/factory.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,UAAU,CAAA;AAClC,OAAO,EAAgC,kBAAkB,EAAE,MAAM,cAAc,CAAA;AAS/E,MAAM,CAAC,MAAM,iBAAiB,GAAiD;IAC7E,cAAc,EAAE,CAAC,MAAgC,EAAc,EAAE;QAC/D,MAAM,aAAa,GAAG;YACpB,KAAK,EAAE,IAAI;SACZ,CAAA;QACD,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,mCACpC,aAAa,GACb,MAAM,CACV,CAAA;QACD,MAAM,MAAM,GAAe,EAAE,KAAK,EAAE,CAAA;QACpC,IAAI,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;YAC/B,MAAM,CAAC,MAAM,GAAG,MAAM,CAAA;QACxB,CAAC;QACD,IAAI,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;YAC/B,MAAM,CAAC,MAAM,GAAG,MAAM,CAAA;QACxB,CAAC;QACD,IAAI,OAAO,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;YACjC,MAAM,CAAC,QAAQ,GAAG,QAAQ,CAAA;QAC5B,CAAC;QACD,OAAO,MAAM,CAAA;IACf,CAAC;CACF,CAAA;AAUD,MAAM,CAAC,MAAM,uBAAuB,GAA6D;IAC/F,cAAc,EAAE,CAAC,SAAwC,EAAE,EAAoB,EAAE;QAC/E,MAAM,aAAa,GAAG;YACpB,KAAK,EAAE,IAAI;SACZ,CAAA;QACD,MAAM,EAAE,QAAQ,EAAE,aAAa,EAAE,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,mCAAQ,aAAa,GAAK,MAAM,CAAE,CAAA;QAC1G,MAAM,QAAQ,GAAG,CAAC,aAAa,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC,CAAC,aAAa,CAAA;QACpF,OAAO;YACL,QAAQ;YACR,GAAG;YACH,MAAM,EAAE,OAAO;YACf,QAAQ;YACR,KAAK;SACN,CAAA;IACH,CAAC;CACF,CAAA","sourcesContent":["import { Dictionary, Factory } from '../common'\nimport { Labels } from '../language'\nimport { Objects } from '../utils'\nimport { Validation, ValidationResult, ValidationSeverity } from './validation'\n\ntype ValidationFactoryParams = {\n errors?: ValidationResult[]\n fields?: Dictionary<Validation>\n valid?: boolean\n warnings?: ValidationResult[]\n}\n\nexport const ValidationFactory: Factory<Validation, ValidationFactoryParams> = {\n createInstance: (params?: ValidationFactoryParams): Validation => {\n const defaultParams = {\n valid: true,\n }\n const { errors, fields, valid, warnings } = {\n ...defaultParams,\n ...params,\n }\n const result: Validation = { valid }\n if (Objects.isNotEmpty(errors)) {\n result.errors = errors\n }\n if (Objects.isNotEmpty(fields)) {\n result.fields = fields\n }\n if (Objects.isNotEmpty(warnings)) {\n result.warnings = warnings\n }\n return result\n },\n}\n\ntype ValidationResultFactoryParams = {\n messages?: Labels\n key?: string\n params?: Dictionary<any>\n severity?: ValidationSeverity\n valid?: boolean\n}\n\nexport const ValidationResultFactory: Factory<ValidationResult, ValidationResultFactoryParams> = {\n createInstance: (params: ValidationResultFactoryParams = {}): ValidationResult => {\n const defaultParams = {\n valid: true,\n }\n const { severity: severityParam, key, params: _params, messages, valid } = { ...defaultParams, ...params }\n const severity = !severityParam && !valid ? ValidationSeverity.error : severityParam\n return {\n severity,\n key,\n params: _params,\n messages,\n valid,\n }\n },\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"fieldValidator.js","sourceRoot":"","sources":["../../../src/validation/fieldValidator.ts"],"names":[],"mappings":""}
1
+ {"version":3,"file":"fieldValidator.js","sourceRoot":"","sources":["../../../src/validation/fieldValidator.ts"],"names":[],"mappings":"","sourcesContent":["import { ValidationResult } from './validation'\n\nexport type FieldValidator = (field: string, obj: any) => Promise<ValidationResult>\n"]}
@@ -1,6 +1,9 @@
1
1
  import { Objects } from '../../utils';
2
2
  import { ValidationResultFactory } from '../factory';
3
3
  import { ValidationSeverity } from '../validation';
4
+ /**
5
+ * Email regular expression
6
+ */
4
7
  const emailRegex = /^(([^<>()[\]\\.,;:\s@"]+(\.[^<>()[\]\\.,;:\s@"]+)*)|(".+"))@((\[\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/;
5
8
  export const email = (messageKey) => (field, obj) => {
6
9
  const value = Objects.path(field)(obj);
@@ -1 +1 @@
1
- {"version":3,"file":"email.js","sourceRoot":"","sources":["../../../../src/validation/fieldValidators/email.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAA;AACrC,OAAO,EAAE,uBAAuB,EAAE,MAAM,YAAY,CAAA;AACpD,OAAO,EAAoB,kBAAkB,EAAE,MAAM,eAAe,CAAA;AAKpE,MAAM,UAAU,GACd,0IAA0I,CAAA;AAE5I,MAAM,CAAC,MAAM,KAAK,GAChB,CAAC,UAAkB,EAAE,EAAE,CACvB,CAAC,KAAa,EAAE,GAAQ,EAA6B,EAAE;IACrD,MAAM,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAA;IACtC,MAAM,KAAK,GAAG,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;IAE9D,OAAO,OAAO,CAAC,OAAO,CACpB,uBAAuB,CAAC,cAAc,CAAC;QACrC,KAAK;QACL,GAAG,EAAE,UAAU;QACf,QAAQ,EAAE,kBAAkB,CAAC,KAAK;KACnC,CAAC,CACH,CAAA;AACH,CAAC,CAAA"}
1
+ {"version":3,"file":"email.js","sourceRoot":"","sources":["../../../../src/validation/fieldValidators/email.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAA;AACrC,OAAO,EAAE,uBAAuB,EAAE,MAAM,YAAY,CAAA;AACpD,OAAO,EAAoB,kBAAkB,EAAE,MAAM,eAAe,CAAA;AAEpE;;GAEG;AACH,MAAM,UAAU,GACd,0IAA0I,CAAA;AAE5I,MAAM,CAAC,MAAM,KAAK,GAChB,CAAC,UAAkB,EAAE,EAAE,CACvB,CAAC,KAAa,EAAE,GAAQ,EAA6B,EAAE;IACrD,MAAM,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAA;IACtC,MAAM,KAAK,GAAG,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;IAE9D,OAAO,OAAO,CAAC,OAAO,CACpB,uBAAuB,CAAC,cAAc,CAAC;QACrC,KAAK;QACL,GAAG,EAAE,UAAU;QACf,QAAQ,EAAE,kBAAkB,CAAC,KAAK;KACnC,CAAC,CACH,CAAA;AACH,CAAC,CAAA","sourcesContent":["import { Objects } from '../../utils'\nimport { ValidationResultFactory } from '../factory'\nimport { ValidationResult, ValidationSeverity } from '../validation'\n\n/**\n * Email regular expression\n */\nconst emailRegex =\n /^(([^<>()[\\]\\\\.,;:\\s@\"]+(\\.[^<>()[\\]\\\\.,;:\\s@\"]+)*)|(\".+\"))@((\\[\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/\n\nexport const email =\n (messageKey: string) =>\n (field: string, obj: any): Promise<ValidationResult> => {\n const value = Objects.path(field)(obj)\n const valid = Objects.isEmpty(value) || emailRegex.test(value)\n\n return Promise.resolve(\n ValidationResultFactory.createInstance({\n valid,\n key: messageKey,\n severity: ValidationSeverity.error,\n })\n )\n }\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/validation/fieldValidators/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAA;AAC/B,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAA;AAC7B,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AACzC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AACnC,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAA;AACnD,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AAErC,MAAM,CAAC,MAAM,eAAe,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,eAAe,EAAE,QAAQ,EAAE,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/validation/fieldValidators/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAA;AAC/B,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAA;AAC7B,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AACzC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AACnC,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAA;AACnD,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AAErC,MAAM,CAAC,MAAM,eAAe,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,eAAe,EAAE,QAAQ,EAAE,CAAA","sourcesContent":["import { email } from './email'\nimport { name } from './name'\nimport { notKeyword } from './notKeyword'\nimport { numeric } from './numeric'\nimport { numericPositive } from './numericPositive'\nimport { required } from './required'\n\nexport const FieldValidators = { email, name, notKeyword, numeric, numericPositive, required }\n"]}
@@ -1,6 +1,10 @@
1
1
  import { Objects } from '../../utils';
2
2
  import { ValidationResultFactory } from '../factory';
3
3
  import { ValidationSeverity } from '../validation';
4
+ /**
5
+ * Internal name regular expression: it must contain only lowercase letters, numbers and underscores starting with a letter,
6
+ * and it must be at most 40 characters long
7
+ */
4
8
  const nameRegex = /^[a-z][a-z0-9_]{0,39}$/;
5
9
  export const name = (messageKey) => (field, obj) => {
6
10
  const value = Objects.path(field)(obj);
@@ -1 +1 @@
1
- {"version":3,"file":"name.js","sourceRoot":"","sources":["../../../../src/validation/fieldValidators/name.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAA;AACrC,OAAO,EAAE,uBAAuB,EAAE,MAAM,YAAY,CAAA;AACpD,OAAO,EAAoB,kBAAkB,EAAE,MAAM,eAAe,CAAA;AAMpE,MAAM,SAAS,GAAG,wBAAwB,CAAA;AAE1C,MAAM,CAAC,MAAM,IAAI,GACf,CAAC,UAAkB,EAAE,EAAE,CACvB,CAAC,KAAa,EAAE,GAAQ,EAA6B,EAAE;IACrD,MAAM,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAA;IACtC,MAAM,KAAK,GAAG,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;IAC7D,OAAO,OAAO,CAAC,OAAO,CACpB,uBAAuB,CAAC,cAAc,CAAC;QACrC,KAAK;QACL,GAAG,EAAE,UAAU;QACf,QAAQ,EAAE,kBAAkB,CAAC,KAAK;KACnC,CAAC,CACH,CAAA;AACH,CAAC,CAAA"}
1
+ {"version":3,"file":"name.js","sourceRoot":"","sources":["../../../../src/validation/fieldValidators/name.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAA;AACrC,OAAO,EAAE,uBAAuB,EAAE,MAAM,YAAY,CAAA;AACpD,OAAO,EAAoB,kBAAkB,EAAE,MAAM,eAAe,CAAA;AAEpE;;;GAGG;AACH,MAAM,SAAS,GAAG,wBAAwB,CAAA;AAE1C,MAAM,CAAC,MAAM,IAAI,GACf,CAAC,UAAkB,EAAE,EAAE,CACvB,CAAC,KAAa,EAAE,GAAQ,EAA6B,EAAE;IACrD,MAAM,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAA;IACtC,MAAM,KAAK,GAAG,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;IAC7D,OAAO,OAAO,CAAC,OAAO,CACpB,uBAAuB,CAAC,cAAc,CAAC;QACrC,KAAK;QACL,GAAG,EAAE,UAAU;QACf,QAAQ,EAAE,kBAAkB,CAAC,KAAK;KACnC,CAAC,CACH,CAAA;AACH,CAAC,CAAA","sourcesContent":["import { Objects } from '../../utils'\nimport { ValidationResultFactory } from '../factory'\nimport { ValidationResult, ValidationSeverity } from '../validation'\n\n/**\n * Internal name regular expression: it must contain only lowercase letters, numbers and underscores starting with a letter,\n * and it must be at most 40 characters long\n */\nconst nameRegex = /^[a-z][a-z0-9_]{0,39}$/\n\nexport const name =\n (messageKey: string) =>\n (field: string, obj: any): Promise<ValidationResult> => {\n const value = Objects.path(field)(obj)\n const valid = Objects.isEmpty(value) || nameRegex.test(value)\n return Promise.resolve(\n ValidationResultFactory.createInstance({\n valid,\n key: messageKey,\n severity: ValidationSeverity.error,\n })\n )\n }\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"notKeyword.js","sourceRoot":"","sources":["../../../../src/validation/fieldValidators/notKeyword.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAA;AACrC,OAAO,EAAE,uBAAuB,EAAE,MAAM,YAAY,CAAA;AACpD,OAAO,EAAoB,kBAAkB,EAAE,MAAM,eAAe,CAAA;AAEpE,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC;IACvB,KAAK;IACL,cAAc;IACd,eAAe;IACf,MAAM;IACN,MAAM;IACN,IAAI;IACJ,QAAQ;IACR,eAAe;IACf,YAAY;IACZ,WAAW;IACX,aAAa;IACb,OAAO;IACP,aAAa;IACb,gBAAgB;IAChB,aAAa;IACb,MAAM;IACN,MAAM;IACN,OAAO;CACR,CAAC,CAAA;AAEF,MAAM,CAAC,MAAM,UAAU,GACrB,CAAC,UAAkB,EAAE,EAAE,CACvB,CAAC,KAAa,EAAE,GAAQ,EAA6B,EAAE;IACrD,MAAM,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAA;IACtC,MAAM,KAAK,GAAG,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,CAAA;IAE5D,OAAO,OAAO,CAAC,OAAO,CACpB,uBAAuB,CAAC,cAAc,CAAC;QACrC,KAAK;QACL,GAAG,EAAE,UAAU;QACf,QAAQ,EAAE,kBAAkB,CAAC,KAAK;KACnC,CAAC,CACH,CAAA;AACH,CAAC,CAAA"}
1
+ {"version":3,"file":"notKeyword.js","sourceRoot":"","sources":["../../../../src/validation/fieldValidators/notKeyword.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAA;AACrC,OAAO,EAAE,uBAAuB,EAAE,MAAM,YAAY,CAAA;AACpD,OAAO,EAAoB,kBAAkB,EAAE,MAAM,eAAe,CAAA;AAEpE,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC;IACvB,KAAK;IACL,cAAc;IACd,eAAe;IACf,MAAM;IACN,MAAM;IACN,IAAI;IACJ,QAAQ;IACR,eAAe;IACf,YAAY;IACZ,WAAW;IACX,aAAa;IACb,OAAO;IACP,aAAa;IACb,gBAAgB;IAChB,aAAa;IACb,MAAM;IACN,MAAM;IACN,OAAO;CACR,CAAC,CAAA;AAEF,MAAM,CAAC,MAAM,UAAU,GACrB,CAAC,UAAkB,EAAE,EAAE,CACvB,CAAC,KAAa,EAAE,GAAQ,EAA6B,EAAE;IACrD,MAAM,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAA;IACtC,MAAM,KAAK,GAAG,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,CAAA;IAE5D,OAAO,OAAO,CAAC,OAAO,CACpB,uBAAuB,CAAC,cAAc,CAAC;QACrC,KAAK;QACL,GAAG,EAAE,UAAU;QACf,QAAQ,EAAE,kBAAkB,CAAC,KAAK;KACnC,CAAC,CACH,CAAA;AACH,CAAC,CAAA","sourcesContent":["import { Objects } from '../../utils'\nimport { ValidationResultFactory } from '../factory'\nimport { ValidationResult, ValidationSeverity } from '../validation'\n\nconst keywords = new Set([\n 'asc',\n 'date_created',\n 'date_modified',\n 'desc',\n 'file',\n 'id',\n 'length',\n 'node_def_uuid',\n 'owner_uuid',\n 'parent_id',\n 'parent_uuid',\n 'props',\n 'props_draft',\n 'props_advanced',\n 'record_uuid',\n 'step',\n 'uuid',\n 'value',\n])\n\nexport const notKeyword =\n (messageKey: string) =>\n (field: string, obj: any): Promise<ValidationResult> => {\n const value = Objects.path(field)(obj)\n const valid = Objects.isEmpty(value) || !keywords.has(value)\n\n return Promise.resolve(\n ValidationResultFactory.createInstance({\n valid,\n key: messageKey,\n severity: ValidationSeverity.error,\n })\n )\n }\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"numeric.js","sourceRoot":"","sources":["../../../../src/validation/fieldValidators/numeric.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAA;AACrC,OAAO,EAAE,uBAAuB,EAAE,MAAM,YAAY,CAAA;AACpD,OAAO,EAAoB,kBAAkB,EAAE,MAAM,eAAe,CAAA;AAEpE,MAAM,CAAC,MAAM,OAAO,GAClB,CAAC,UAAU,GAAG,gBAAgB,EAAE,gBAAqB,EAAE,EAAE,EAAE,CAC3D,CAAC,KAAa,EAAE,GAAQ,EAA6B,EAAE;IACrD,MAAM,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAA;IACtC,MAAM,KAAK,GAAG,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAA;IAEpE,OAAO,OAAO,CAAC,OAAO,CACpB,uBAAuB,CAAC,cAAc,CAAC;QACrC,KAAK;QACL,GAAG,EAAE,UAAU;QACf,MAAM,EAAE,aAAa;QACrB,QAAQ,EAAE,kBAAkB,CAAC,KAAK;KACnC,CAAC,CACH,CAAA;AACH,CAAC,CAAA"}
1
+ {"version":3,"file":"numeric.js","sourceRoot":"","sources":["../../../../src/validation/fieldValidators/numeric.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAA;AACrC,OAAO,EAAE,uBAAuB,EAAE,MAAM,YAAY,CAAA;AACpD,OAAO,EAAoB,kBAAkB,EAAE,MAAM,eAAe,CAAA;AAEpE,MAAM,CAAC,MAAM,OAAO,GAClB,CAAC,UAAU,GAAG,gBAAgB,EAAE,gBAAqB,EAAE,EAAE,EAAE,CAC3D,CAAC,KAAa,EAAE,GAAQ,EAA6B,EAAE;IACrD,MAAM,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAA;IACtC,MAAM,KAAK,GAAG,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAA;IAEpE,OAAO,OAAO,CAAC,OAAO,CACpB,uBAAuB,CAAC,cAAc,CAAC;QACrC,KAAK;QACL,GAAG,EAAE,UAAU;QACf,MAAM,EAAE,aAAa;QACrB,QAAQ,EAAE,kBAAkB,CAAC,KAAK;KACnC,CAAC,CACH,CAAA;AACH,CAAC,CAAA","sourcesContent":["import { Objects } from '../../utils'\nimport { ValidationResultFactory } from '../factory'\nimport { ValidationResult, ValidationSeverity } from '../validation'\n\nexport const numeric =\n (messageKey = 'invalid_number', messageParams: any = {}) =>\n (field: string, obj: any): Promise<ValidationResult> => {\n const value = Objects.path(field)(obj)\n const valid = Objects.isEmpty(value) || !Number.isNaN(Number(value))\n\n return Promise.resolve(\n ValidationResultFactory.createInstance({\n valid,\n key: messageKey,\n params: messageParams,\n severity: ValidationSeverity.error,\n })\n )\n }\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"numericPositive.js","sourceRoot":"","sources":["../../../../src/validation/fieldValidators/numericPositive.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAA;AACrC,OAAO,EAAE,uBAAuB,EAAE,MAAM,YAAY,CAAA;AACpD,OAAO,EAAoB,kBAAkB,EAAE,MAAM,eAAe,CAAA;AACpE,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAEnC,MAAM,CAAC,MAAM,eAAe,GAC1B,CAAC,UAAkB,EAAE,gBAAqB,EAAE,EAAE,EAAE,CAChD,CAAO,KAAa,EAAE,GAAQ,EAA6B,EAAE;IAC3D,MAAM,oBAAoB,GAAG,MAAM,OAAO,CAAC,UAAU,EAAE,aAAa,CAAC,CAAC,KAAK,EAAE,GAAG,CAAC,CAAA;IACjF,IAAI,CAAC,oBAAoB,CAAC,KAAK,EAAE,CAAC;QAChC,OAAO,oBAAoB,CAAA;IAC7B,CAAC;IACD,MAAM,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAA;IACtC,MAAM,KAAK,GAAG,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,KAAK,IAAI,CAAC,CAAA;IAElD,OAAO,uBAAuB,CAAC,cAAc,CAAC;QAC5C,KAAK;QACL,GAAG,EAAE,UAAU;QACf,MAAM,EAAE,aAAa;QACrB,QAAQ,EAAE,kBAAkB,CAAC,KAAK;KACnC,CAAC,CAAA;AACJ,CAAC,CAAA,CAAA"}
1
+ {"version":3,"file":"numericPositive.js","sourceRoot":"","sources":["../../../../src/validation/fieldValidators/numericPositive.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAA;AACrC,OAAO,EAAE,uBAAuB,EAAE,MAAM,YAAY,CAAA;AACpD,OAAO,EAAoB,kBAAkB,EAAE,MAAM,eAAe,CAAA;AACpE,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAEnC,MAAM,CAAC,MAAM,eAAe,GAC1B,CAAC,UAAkB,EAAE,gBAAqB,EAAE,EAAE,EAAE,CAChD,CAAO,KAAa,EAAE,GAAQ,EAA6B,EAAE;IAC3D,MAAM,oBAAoB,GAAG,MAAM,OAAO,CAAC,UAAU,EAAE,aAAa,CAAC,CAAC,KAAK,EAAE,GAAG,CAAC,CAAA;IACjF,IAAI,CAAC,oBAAoB,CAAC,KAAK,EAAE,CAAC;QAChC,OAAO,oBAAoB,CAAA;IAC7B,CAAC;IACD,MAAM,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAA;IACtC,MAAM,KAAK,GAAG,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,KAAK,IAAI,CAAC,CAAA;IAElD,OAAO,uBAAuB,CAAC,cAAc,CAAC;QAC5C,KAAK;QACL,GAAG,EAAE,UAAU;QACf,MAAM,EAAE,aAAa;QACrB,QAAQ,EAAE,kBAAkB,CAAC,KAAK;KACnC,CAAC,CAAA;AACJ,CAAC,CAAA,CAAA","sourcesContent":["import { Objects } from '../../utils'\nimport { ValidationResultFactory } from '../factory'\nimport { ValidationResult, ValidationSeverity } from '../validation'\nimport { numeric } from './numeric'\n\nexport const numericPositive =\n (messageKey: string, messageParams: any = {}) =>\n async (field: string, obj: any): Promise<ValidationResult> => {\n const validateNumberResult = await numeric(messageKey, messageParams)(field, obj)\n if (!validateNumberResult.valid) {\n return validateNumberResult\n }\n const value = Objects.path(field)(obj)\n const valid = Objects.isEmpty(value) || value >= 0\n\n return ValidationResultFactory.createInstance({\n valid,\n key: messageKey,\n params: messageParams,\n severity: ValidationSeverity.error,\n })\n }\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"required.js","sourceRoot":"","sources":["../../../../src/validation/fieldValidators/required.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAA;AAErC,OAAO,EAAE,uBAAuB,EAAE,MAAM,YAAY,CAAA;AACpD,OAAO,EAAoB,kBAAkB,EAAE,MAAM,eAAe,CAAA;AAEpE,MAAM,CAAC,MAAM,QAAQ,GACnB,CAAC,UAAkB,EAAE,EAAE,CACvB,CAAC,KAAa,EAAE,GAAQ,EAA6B,EAAE;IACrD,MAAM,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAA;IACtC,MAAM,KAAK,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA;IACrC,OAAO,OAAO,CAAC,OAAO,CACpB,uBAAuB,CAAC,cAAc,CAAC;QACrC,KAAK;QACL,GAAG,EAAE,UAAU;QACf,QAAQ,EAAE,kBAAkB,CAAC,KAAK;KACnC,CAAC,CACH,CAAA;AACH,CAAC,CAAA"}
1
+ {"version":3,"file":"required.js","sourceRoot":"","sources":["../../../../src/validation/fieldValidators/required.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAA;AAErC,OAAO,EAAE,uBAAuB,EAAE,MAAM,YAAY,CAAA;AACpD,OAAO,EAAoB,kBAAkB,EAAE,MAAM,eAAe,CAAA;AAEpE,MAAM,CAAC,MAAM,QAAQ,GACnB,CAAC,UAAkB,EAAE,EAAE,CACvB,CAAC,KAAa,EAAE,GAAQ,EAA6B,EAAE;IACrD,MAAM,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAA;IACtC,MAAM,KAAK,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA;IACrC,OAAO,OAAO,CAAC,OAAO,CACpB,uBAAuB,CAAC,cAAc,CAAC;QACrC,KAAK;QACL,GAAG,EAAE,UAAU;QACf,QAAQ,EAAE,kBAAkB,CAAC,KAAK;KACnC,CAAC,CACH,CAAA;AACH,CAAC,CAAA","sourcesContent":["import { Objects } from '../../utils'\n\nimport { ValidationResultFactory } from '../factory'\nimport { ValidationResult, ValidationSeverity } from '../validation'\n\nexport const required =\n (messageKey: string) =>\n (field: string, obj: any): Promise<ValidationResult> => {\n const value = Objects.path(field)(obj)\n const valid = !Objects.isEmpty(value)\n return Promise.resolve(\n ValidationResultFactory.createInstance({\n valid,\n key: messageKey,\n severity: ValidationSeverity.error,\n })\n )\n }\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/validation/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAA;AAEnD,OAAO,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAA;AACjD,OAAO,EAAE,iBAAiB,EAAE,uBAAuB,EAAE,MAAM,WAAW,CAAA;AACtE,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAA;AACvD,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AAC3C,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AACvC,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/validation/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAA;AAEnD,OAAO,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAA;AACjD,OAAO,EAAE,iBAAiB,EAAE,uBAAuB,EAAE,MAAM,WAAW,CAAA;AACtE,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAA;AACvD,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AAC3C,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AACvC,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAA","sourcesContent":["export type { FieldValidator } from './fieldValidator'\nexport { FieldValidators } from './fieldValidators'\nexport type { Validation, ValidationFields, ValidationResult, ValidationCounts } from './validation'\nexport { ValidationSeverity } from './validation'\nexport { ValidationFactory, ValidationResultFactory } from './factory'\nexport { ValidationResults } from './validationResults'\nexport { Validations } from './validations'\nexport { Validator } from './validator'\nexport { ValidatorErrorKeys } from './validatorErrorKeys'\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"validation.js","sourceRoot":"","sources":["../../../src/validation/validation.ts"],"names":[],"mappings":"AAEA,MAAM,CAAN,IAAY,kBAGX;AAHD,WAAY,kBAAkB;IAC5B,qCAAe,CAAA;IACf,yCAAmB,CAAA;AACrB,CAAC,EAHW,kBAAkB,KAAlB,kBAAkB,QAG7B"}
1
+ {"version":3,"file":"validation.js","sourceRoot":"","sources":["../../../src/validation/validation.ts"],"names":[],"mappings":"AAEA,MAAM,CAAN,IAAY,kBAGX;AAHD,WAAY,kBAAkB;IAC5B,qCAAe,CAAA;IACf,yCAAmB,CAAA;AACrB,CAAC,EAHW,kBAAkB,KAAlB,kBAAkB,QAG7B","sourcesContent":["import { Labels } from '../language'\n\nexport enum ValidationSeverity {\n error = 'error',\n warning = 'warning',\n}\n\nexport interface ValidationResult {\n severity?: ValidationSeverity\n key?: string\n params?: { [key: string]: any }\n messages?: Labels\n valid: boolean\n}\n\nexport interface ValidationCounts {\n errors: number\n warnings: number\n}\n\nexport interface ValidationFields {\n [key: string]: Validation\n}\n\nexport interface Validation {\n errors?: ValidationResult[]\n fields?: ValidationFields\n valid: boolean\n warnings?: ValidationResult[]\n counts?: ValidationCounts\n}\n"]}
@@ -3,7 +3,7 @@ const getKey = (result) => result === null || result === void 0 ? void 0 : resul
3
3
  const getParams = (result) => result === null || result === void 0 ? void 0 : result.params;
4
4
  const getSeverity = (result) => { var _a; return (_a = result === null || result === void 0 ? void 0 : result.severity) !== null && _a !== void 0 ? _a : ValidationSeverity.error; };
5
5
  const getMessages = (result) => result === null || result === void 0 ? void 0 : result.messages;
6
- const getMessage = (lang) => (result) => { var _a, _b, _c; return (_b = (_a = result === null || result === void 0 ? void 0 : result.messages) === null || _a === void 0 ? void 0 : _a[lang]) !== null && _b !== void 0 ? _b : Object.values((_c = result === null || result === void 0 ? void 0 : result.messages) !== null && _c !== void 0 ? _c : {})[0]; };
6
+ const getMessage = (lang) => (result) => { var _a, _b, _c; return (_b = (_a = result === null || result === void 0 ? void 0 : result.messages) === null || _a === void 0 ? void 0 : _a[lang]) !== null && _b !== void 0 ? _b : Object.values((_c = result === null || result === void 0 ? void 0 : result.messages) !== null && _c !== void 0 ? _c : {})[0]; }; // fallback to first message if the requested language is not available
7
7
  const hasMessages = (result) => (result === null || result === void 0 ? void 0 : result.messages) != null && Object.keys(result.messages).length > 0;
8
8
  const isError = (result) => getSeverity(result) === ValidationSeverity.error;
9
9
  export const ValidationResults = {
@@ -1 +1 @@
1
- {"version":3,"file":"validationResults.js","sourceRoot":"","sources":["../../../src/validation/validationResults.ts"],"names":[],"mappings":"AACA,OAAO,EAAoB,kBAAkB,EAAE,MAAM,cAAc,CAAA;AAEnE,MAAM,MAAM,GAAG,CAAC,MAAwB,EAAsB,EAAE,CAAC,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,GAAG,CAAA;AAE5E,MAAM,SAAS,GAAG,CAAC,MAAwB,EAAsC,EAAE,CAAC,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,MAAM,CAAA;AAElG,MAAM,WAAW,GAAG,CAAC,MAAwB,EAAsB,EAAE,WAAC,OAAA,MAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,QAAQ,mCAAI,kBAAkB,CAAC,KAAK,CAAA,EAAA,CAAA;AAElH,MAAM,WAAW,GAAG,CAAC,MAAwB,EAAsB,EAAE,CAAC,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,QAAQ,CAAA;AAEtF,MAAM,UAAU,GACd,CAAC,IAAkB,EAAE,EAAE,CACvB,CAAC,MAAwB,EAAsB,EAAE,mBAC/C,OAAA,MAAA,MAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,QAAQ,0CAAG,IAAI,CAAC,mCAAI,MAAM,CAAC,MAAM,CAAC,MAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,QAAQ,mCAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAA,EAAA,CAAA;AAExE,MAAM,WAAW,GAAG,CAAC,MAAwB,EAAW,EAAE,CACxD,CAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,QAAQ,KAAI,IAAI,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,MAAM,GAAG,CAAC,CAAA;AAErE,MAAM,OAAO,GAAG,CAAC,MAAwB,EAAW,EAAE,CAAC,WAAW,CAAC,MAAM,CAAC,KAAK,kBAAkB,CAAC,KAAK,CAAA;AAEvG,MAAM,CAAC,MAAM,iBAAiB,GAAG;IAC/B,MAAM;IACN,SAAS;IACT,WAAW;IACX,WAAW;IACX,UAAU;IACV,WAAW;IACX,OAAO;CACR,CAAA"}
1
+ {"version":3,"file":"validationResults.js","sourceRoot":"","sources":["../../../src/validation/validationResults.ts"],"names":[],"mappings":"AACA,OAAO,EAAoB,kBAAkB,EAAE,MAAM,cAAc,CAAA;AAEnE,MAAM,MAAM,GAAG,CAAC,MAAwB,EAAsB,EAAE,CAAC,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,GAAG,CAAA;AAE5E,MAAM,SAAS,GAAG,CAAC,MAAwB,EAAsC,EAAE,CAAC,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,MAAM,CAAA;AAElG,MAAM,WAAW,GAAG,CAAC,MAAwB,EAAsB,EAAE,WAAC,OAAA,MAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,QAAQ,mCAAI,kBAAkB,CAAC,KAAK,CAAA,EAAA,CAAA;AAElH,MAAM,WAAW,GAAG,CAAC,MAAwB,EAAsB,EAAE,CAAC,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,QAAQ,CAAA;AAEtF,MAAM,UAAU,GACd,CAAC,IAAkB,EAAE,EAAE,CACvB,CAAC,MAAwB,EAAsB,EAAE,mBAC/C,OAAA,MAAA,MAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,QAAQ,0CAAG,IAAI,CAAC,mCAAI,MAAM,CAAC,MAAM,CAAC,MAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,QAAQ,mCAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAA,EAAA,CAAA,CAAC,uEAAuE;AAEhJ,MAAM,WAAW,GAAG,CAAC,MAAwB,EAAW,EAAE,CACxD,CAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,QAAQ,KAAI,IAAI,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,MAAM,GAAG,CAAC,CAAA;AAErE,MAAM,OAAO,GAAG,CAAC,MAAwB,EAAW,EAAE,CAAC,WAAW,CAAC,MAAM,CAAC,KAAK,kBAAkB,CAAC,KAAK,CAAA;AAEvG,MAAM,CAAC,MAAM,iBAAiB,GAAG;IAC/B,MAAM;IACN,SAAS;IACT,WAAW;IACX,WAAW;IACX,UAAU;IACV,WAAW;IACX,OAAO;CACR,CAAA","sourcesContent":["import { Labels, LanguageCode } from '../language'\nimport { ValidationResult, ValidationSeverity } from './validation'\n\nconst getKey = (result: ValidationResult): string | undefined => result?.key\n\nconst getParams = (result: ValidationResult): { [key: string]: any } | undefined => result?.params\n\nconst getSeverity = (result: ValidationResult): ValidationSeverity => result?.severity ?? ValidationSeverity.error\n\nconst getMessages = (result: ValidationResult): Labels | undefined => result?.messages\n\nconst getMessage =\n (lang: LanguageCode) =>\n (result: ValidationResult): string | undefined =>\n result?.messages?.[lang] ?? Object.values(result?.messages ?? {})[0] // fallback to first message if the requested language is not available\n\nconst hasMessages = (result: ValidationResult): boolean =>\n result?.messages != null && Object.keys(result.messages).length > 0\n\nconst isError = (result: ValidationResult): boolean => getSeverity(result) === ValidationSeverity.error\n\nexport const ValidationResults = {\n getKey,\n getParams,\n getSeverity,\n getMessages,\n getMessage,\n hasMessages,\n isError,\n}\n"]}
@@ -17,7 +17,7 @@ const getFieldValidationUnsafe = (field) => (validation) => {
17
17
  const parts = field.split('.');
18
18
  parts.some((part) => {
19
19
  validationCurrent = getFieldValidations(validationCurrent)[part];
20
- return !validationCurrent;
20
+ return !validationCurrent; // breaks the loop if there is no field validation
21
21
  });
22
22
  return validationCurrent;
23
23
  }
@@ -52,6 +52,10 @@ const isObjValid = (obj) => isValid(getValidation(obj));
52
52
  const getCounts = (validation) => validation === null || validation === void 0 ? void 0 : validation.counts;
53
53
  const getErrorsCount = (validation) => { var _a, _b; return (_b = (_a = getCounts(validation)) === null || _a === void 0 ? void 0 : _a.errors) !== null && _b !== void 0 ? _b : 0; };
54
54
  const getWarningsCount = (validation) => { var _a, _b; return (_b = (_a = getCounts(validation)) === null || _a === void 0 ? void 0 : _a.warnings) !== null && _b !== void 0 ? _b : 0; };
55
+ /**
56
+ * Creates a validation object like ValidationFactory.createInstance does, but without checking again
57
+ * if fields is empty (checking it is O(N) for objects with many properties).
58
+ */
55
59
  const _createValidation = (params) => {
56
60
  const { valid, fields, hasFields, errors, warnings } = params;
57
61
  const result = { valid };
@@ -77,6 +81,8 @@ const recalculateValidity = (validation) => {
77
81
  }
78
82
  const errors = getErrors(validation);
79
83
  const warnings = getWarnings(validation);
84
+ // nested errors and warnings already make the recalculated field validations not valid:
85
+ // checking only own errors and warnings is enough (hasErrors/hasWarnings would visit the whole subtree again)
80
86
  const valid = allFieldsValid && errors.length === 0 && warnings.length === 0;
81
87
  return _createValidation({ valid, fields: fieldsWithValidationRecalculated, hasFields, errors, warnings });
82
88
  };
@@ -86,6 +92,7 @@ const traverse = (visitor) => (validation) => {
86
92
  while (stack.length) {
87
93
  const validationCurrent = stack.pop();
88
94
  visitor(validationCurrent);
95
+ // Add field validations to stack
89
96
  const validationFields = getFieldValidations(validationCurrent);
90
97
  stack.push(...Object.values(validationFields));
91
98
  }
@@ -106,6 +113,7 @@ const updateCounts = (validation) => (Object.assign(Object.assign({}, validation
106
113
  const calculateHasNestedErrors = (validation) => calculateCounts(validation).errors > 0;
107
114
  const calculateHasNestedWarnings = (validation) => calculateCounts(validation).warnings > 0;
108
115
  const cleanup = (validation) => {
116
+ // only not valid field validations are kept
109
117
  let hasFields = false;
110
118
  const fieldsCleaned = {};
111
119
  for (const [field, fieldValidation] of Object.entries(getFieldValidations(validation))) {
@@ -117,15 +125,19 @@ const cleanup = (validation) => {
117
125
  }
118
126
  const errors = getErrors(validation);
119
127
  const warnings = getWarnings(validation);
128
+ // nested errors and warnings already make the cleaned field validations not valid:
129
+ // checking only own errors and warnings is enough (hasErrors/hasWarnings would visit the whole subtree again)
120
130
  const valid = !hasFields && errors.length === 0 && warnings.length === 0;
121
131
  return _createValidation({ valid, fields: fieldsCleaned, hasFields, errors, warnings });
122
132
  };
123
133
  const mergeValidations = (validationNext, doCleanup = true) => (validationPrev) => {
124
134
  const validationFieldsResult = Object.assign({}, getFieldValidations(validationPrev));
125
135
  const validationFieldsNext = getFieldValidations(validationNext);
136
+ // iterate over new field validations: remove valid ones, merge invalid ones with previous ones
126
137
  for (const [fieldKey, validationFieldNext] of Object.entries(validationFieldsNext)) {
127
138
  if (isValid(validationFieldNext)) {
128
139
  if (doCleanup) {
140
+ // field validation valid: remove it from resulting validation
129
141
  delete validationFieldsResult[fieldKey];
130
142
  }
131
143
  else {
@@ -133,6 +145,7 @@ const mergeValidations = (validationNext, doCleanup = true) => (validationPrev)
133
145
  }
134
146
  }
135
147
  else {
148
+ // field validation not valid: deep merge it with the previous one
136
149
  const validationFieldPrev = validationFieldsResult[fieldKey];
137
150
  const validationFieldMerged = validationFieldPrev
138
151
  ? mergeValidation(validationFieldNext, false)(validationFieldPrev)
@@ -168,9 +181,11 @@ const dissocFieldValidationsStartingWith = (fieldStartsWith, sideEffect = false,
168
181
  const mergeValidation = (validationNext, doCleanup = true) => (validationPrev) => {
169
182
  const validationFieldsResult = Object.assign({}, getFieldValidations(validationPrev));
170
183
  const validationFieldsNext = getFieldValidations(validationNext);
184
+ // iterate over new field validations: remove valid ones, merge invalid ones with previous ones
171
185
  for (const [fieldKey, validationFieldNext] of Object.entries(validationFieldsNext)) {
172
186
  if (isValid(validationFieldNext)) {
173
187
  if (doCleanup) {
188
+ // field validation valid: remove it from resulting validation
174
189
  delete validationFieldsResult[fieldKey];
175
190
  }
176
191
  else {
@@ -178,6 +193,7 @@ const mergeValidation = (validationNext, doCleanup = true) => (validationPrev) =
178
193
  }
179
194
  }
180
195
  else {
196
+ // field validation not valid: deep merge it with the previous one
181
197
  const validationFieldPrev = validationFieldsResult[fieldKey];
182
198
  const validationFieldMerged = validationFieldPrev
183
199
  ? mergeValidation(validationFieldNext, false)(validationFieldPrev)
@@ -1 +1 @@
1
- {"version":3,"file":"validations.js","sourceRoot":"","sources":["../../../src/validation/validations.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"validations.js","sourceRoot":"","sources":["../../../src/validation/validations.ts"],"names":[],"mappings":"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","sourcesContent":["import { Objects } from '../utils'\nimport { ValidationFactory } from './factory'\nimport { Validation, ValidationCounts, ValidationFields, ValidationResult } from './validation'\n\nconst keys = {\n counts: 'counts',\n errors: 'errors',\n fields: 'fields',\n valid: 'valid',\n validation: 'validation',\n warnings: 'warnings',\n}\n\nconst hasValidation = (obj: any): boolean => !!obj?.validation\n\nconst getValidation = (obj: any): Validation => obj?.validation || ValidationFactory.createInstance()\n\nconst getFieldValidations = (validation: Validation): ValidationFields => validation?.fields ?? {}\n\nconst getFieldValidationUnsafe =\n (field: string | number) =>\n (validation: Validation): Validation | undefined => {\n if (typeof field === 'string') {\n let validationCurrent: Validation | undefined = validation\n const parts = field.split('.')\n parts.some((part) => {\n validationCurrent = getFieldValidations(validationCurrent!)[part]\n return !validationCurrent // breaks the loop if there is no field validation\n })\n return validationCurrent\n } else {\n return getFieldValidations(validation)[field]\n }\n }\n\nconst getFieldValidation =\n (field: string | number, defaultValue: Validation = ValidationFactory.createInstance()) =>\n (validation: Validation): Validation =>\n getFieldValidationUnsafe(field)(validation) ?? defaultValue\n\nconst getFieldValidationsByFields =\n (fields: (string | number)[]) =>\n (validation: Validation): ValidationFields => {\n const result: ValidationFields = {}\n for (const field of fields) {\n const fieldValidation = getFieldValidationUnsafe(field)(validation)\n if (fieldValidation) {\n result[String(field)] = fieldValidation\n }\n }\n return result\n }\n\nconst getErrors = (validation: Validation): ValidationResult[] => validation?.errors ?? []\n\nconst getWarnings = (validation: Validation): ValidationResult[] => validation?.warnings ?? []\n\nconst hasErrors = (validation: Validation): boolean => {\n const errors = getErrors(validation)\n return !Objects.isEmpty(errors) || Object.values(getFieldValidations(validation)).some(hasErrors)\n}\n\nconst hasWarnings = (validation: Validation): boolean => {\n const warnings = getWarnings(validation)\n return !Objects.isEmpty(warnings) || Object.values(getFieldValidations(validation)).some(hasWarnings)\n}\n\nconst isValid = (validation: Validation): boolean => Objects.isEmpty(validation) || validation.valid\nconst isNotValid = (validation: Validation): boolean => !isValid(validation)\nconst isObjValid = (obj: Record<string, unknown>): boolean => isValid(getValidation(obj))\n\nconst getCounts = (validation: Validation): ValidationCounts | undefined => validation?.counts\nconst getErrorsCount = (validation: Validation): number => getCounts(validation)?.errors ?? 0\nconst getWarningsCount = (validation: Validation): number => getCounts(validation)?.warnings ?? 0\n\n/**\n * Creates a validation object like ValidationFactory.createInstance does, but without checking again\n * if fields is empty (checking it is O(N) for objects with many properties).\n */\nconst _createValidation = (params: {\n valid: boolean\n fields: ValidationFields\n hasFields: boolean\n errors: ValidationResult[]\n warnings: ValidationResult[]\n}): Validation => {\n const { valid, fields, hasFields, errors, warnings } = params\n const result: Validation = { valid }\n if (errors.length > 0) result.errors = errors\n if (hasFields) result.fields = fields\n if (warnings.length > 0) result.warnings = warnings\n return result\n}\n\nconst recalculateValidity = (validation: Validation): Validation => {\n let allFieldsValid = true\n let hasFields = false\n\n const fieldsWithValidationRecalculated: ValidationFields = {}\n\n for (const [fieldKey, fieldValidation] of Object.entries(getFieldValidations(validation))) {\n const fieldValidationUpdated = recalculateValidity(fieldValidation)\n fieldsWithValidationRecalculated[fieldKey] = fieldValidationUpdated\n hasFields = true\n if (!fieldValidationUpdated.valid) {\n allFieldsValid = false\n }\n }\n const errors = getErrors(validation)\n const warnings = getWarnings(validation)\n // nested errors and warnings already make the recalculated field validations not valid:\n // checking only own errors and warnings is enough (hasErrors/hasWarnings would visit the whole subtree again)\n const valid = allFieldsValid && errors.length === 0 && warnings.length === 0\n\n return _createValidation({ valid, fields: fieldsWithValidationRecalculated, hasFields, errors, warnings })\n}\n\nconst traverse = (visitor: (visitedItem: Validation) => void) => (validation: Validation) => {\n const stack: Validation[] = []\n stack.push(validation)\n\n while (stack.length) {\n const validationCurrent = stack.pop()!\n visitor(validationCurrent)\n // Add field validations to stack\n const validationFields = getFieldValidations(validationCurrent)\n stack.push(...Object.values(validationFields))\n }\n}\n\nconst calculateCounts = (validation: Validation): ValidationCounts => {\n let errors = 0\n let warnings = 0\n\n traverse((validationCurrent) => {\n errors += getErrors(validationCurrent).length\n warnings += getWarnings(validationCurrent).length\n })(validation)\n\n return {\n errors,\n warnings,\n }\n}\n\nconst updateCounts = (validation: Validation): Validation => ({\n ...validation,\n counts: calculateCounts(validation),\n})\n\nconst calculateHasNestedErrors = (validation: Validation): boolean => calculateCounts(validation).errors > 0\nconst calculateHasNestedWarnings = (validation: Validation): boolean => calculateCounts(validation).warnings > 0\n\nconst cleanup = (validation: Validation): Validation => {\n // only not valid field validations are kept\n let hasFields = false\n const fieldsCleaned: ValidationFields = {}\n for (const [field, fieldValidation] of Object.entries(getFieldValidations(validation))) {\n const fieldValidationCleaned = cleanup(fieldValidation)\n if (!fieldValidationCleaned.valid) {\n fieldsCleaned[field] = fieldValidationCleaned\n hasFields = true\n }\n }\n const errors = getErrors(validation)\n const warnings = getWarnings(validation)\n // nested errors and warnings already make the cleaned field validations not valid:\n // checking only own errors and warnings is enough (hasErrors/hasWarnings would visit the whole subtree again)\n const valid = !hasFields && errors.length === 0 && warnings.length === 0\n\n return _createValidation({ valid, fields: fieldsCleaned, hasFields, errors, warnings })\n}\n\nconst mergeValidations =\n (validationNext: Validation, doCleanup = true) =>\n (validationPrev: Validation): Validation => {\n const validationFieldsResult = { ...getFieldValidations(validationPrev) }\n const validationFieldsNext = getFieldValidations(validationNext)\n\n // iterate over new field validations: remove valid ones, merge invalid ones with previous ones\n for (const [fieldKey, validationFieldNext] of Object.entries(validationFieldsNext)) {\n if (isValid(validationFieldNext)) {\n if (doCleanup) {\n // field validation valid: remove it from resulting validation\n delete validationFieldsResult[fieldKey]\n } else {\n validationFieldsResult[fieldKey] = ValidationFactory.createInstance()\n }\n } else {\n // field validation not valid: deep merge it with the previous one\n const validationFieldPrev = validationFieldsResult[fieldKey]\n const validationFieldMerged = validationFieldPrev\n ? mergeValidation(validationFieldNext, false)(validationFieldPrev)\n : validationFieldNext\n validationFieldsResult[fieldKey] = validationFieldMerged\n }\n }\n const validationResult: Validation = { ...validationPrev, [keys.fields]: validationFieldsResult }\n validationResult.errors = getErrors(validationNext)\n validationResult.warnings = getWarnings(validationNext)\n return doCleanup ? cleanup(validationResult) : recalculateValidity(validationResult)\n }\n\nconst dissocFieldValidation =\n (fieldKey: string, sideEffect = false, doCleanup = true) =>\n (validation: Validation): Validation => {\n const validationUpdated = Objects.dissocPath({ obj: validation, path: ['fields', fieldKey], sideEffect })\n return doCleanup ? cleanup(validationUpdated) : validationUpdated\n }\n\nconst dissocFieldValidationsStartingWith =\n (fieldStartsWith: string, sideEffect = false, doCleanup = true) =>\n (validation: Validation): Validation => {\n if (!validation?.fields) return validation\n\n const fieldsUpdated = sideEffect ? validation.fields : { ...validation.fields }\n for (const fieldKey of Object.keys(fieldsUpdated)) {\n if (fieldKey.startsWith(fieldStartsWith)) {\n delete fieldsUpdated[fieldKey]\n }\n }\n if (sideEffect) {\n validation.fields = fieldsUpdated\n return validation\n }\n const validationUpdated = { ...validation, fields: fieldsUpdated }\n return doCleanup ? cleanup(validationUpdated) : validationUpdated\n }\n\nconst mergeValidation =\n (validationNext: Validation, doCleanup = true) =>\n (validationPrev: Validation): Validation => {\n const validationFieldsResult: ValidationFields = {\n ...getFieldValidations(validationPrev),\n }\n const validationFieldsNext = getFieldValidations(validationNext)\n\n // iterate over new field validations: remove valid ones, merge invalid ones with previous ones\n for (const [fieldKey, validationFieldNext] of Object.entries(validationFieldsNext)) {\n if (isValid(validationFieldNext)) {\n if (doCleanup) {\n // field validation valid: remove it from resulting validation\n delete validationFieldsResult[fieldKey]\n } else {\n validationFieldsResult[fieldKey] = ValidationFactory.createInstance()\n }\n } else {\n // field validation not valid: deep merge it with the previous one\n const validationFieldPrev = validationFieldsResult[fieldKey]\n const validationFieldMerged = validationFieldPrev\n ? mergeValidation(validationFieldNext, false)(validationFieldPrev)\n : validationFieldNext\n validationFieldsResult[fieldKey] = validationFieldMerged\n }\n }\n\n const validationResult: Validation = { ...validationPrev, fields: validationFieldsResult }\n validationResult.errors = getErrors(validationNext)\n validationResult.warnings = getWarnings(validationNext)\n\n return doCleanup ? cleanup(validationResult) : recalculateValidity(validationResult)\n }\n\nconst mergeFieldValidations = (\n fieldValidationsNext: ValidationFields,\n fieldValidationsPrev: ValidationFields\n): ValidationFields => {\n const result: ValidationFields = { ...fieldValidationsPrev }\n for (const [fieldKey, fieldValidationNext] of Object.entries(fieldValidationsNext)) {\n const fieldValidationPrev = fieldValidationsPrev[fieldKey]\n result[fieldKey] = fieldValidationPrev\n ? mergeValidation(fieldValidationNext, false)(fieldValidationPrev)\n : fieldValidationNext\n }\n return result\n}\n\nconst setValid = (valid: boolean) => (obj: object) => Objects.setInPath({ obj, path: [keys.valid], value: valid })\n\nconst setErrors = (errors: ValidationResult[]) => (obj: object) =>\n Objects.setInPath({ obj, path: [keys.errors], value: errors })\n\nconst setWarnings = (warnings: ValidationResult[]) => (obj: object) =>\n Objects.setInPath({ obj, path: [keys.warnings], value: warnings })\n\nconst setFieldValidations = (fieldValidations: ValidationFields) => (obj: object) =>\n Objects.setInPath({ obj, path: [keys.fields], value: fieldValidations })\n\nconst setFieldValidation = (field: string, fieldValidation: Validation) => (obj: object) =>\n Objects.setInPath({ obj, path: [keys.fields, field], value: fieldValidation })\n\nconst assocFieldValidation = (field: string, fieldValidation: Validation) => (validation: Validation) =>\n cleanup(Objects.assocPath({ obj: validation, path: [keys.fields, field], value: fieldValidation }))\n\nconst assocValidation = (v: Validation) => (obj: Record<string, unknown>) =>\n Objects.assoc({ obj, prop: 'validation', value: v })\n\nconst dissocValidation = (obj: Record<string, unknown>) => Objects.dissoc({ obj, prop: 'validation' })\n\nexport const Validations = {\n keys,\n hasValidation,\n getValidation,\n getFieldValidation,\n getFieldValidations,\n getFieldValidationsByFields,\n getErrors,\n getWarnings,\n hasErrors,\n hasWarnings,\n isValid,\n isNotValid,\n isObjValid,\n getCounts,\n getErrorsCount,\n getWarningsCount,\n recalculateValidity,\n traverse,\n calculateCounts,\n calculateHasNestedErrors,\n calculateHasNestedWarnings,\n updateCounts,\n cleanup,\n mergeValidations,\n dissocFieldValidation,\n dissocFieldValidationsStartingWith,\n mergeValidation,\n mergeFieldValidations,\n setValid,\n setErrors,\n setWarnings,\n setFieldValidations,\n assocFieldValidation,\n setFieldValidation,\n assocValidation,\n dissocValidation,\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"validator.js","sourceRoot":"","sources":["../../../src/validation/validator.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAA;AAE7C,OAAO,EAAE,kBAAkB,EAAkD,MAAM,cAAc,CAAA;AAMjG,MAAM,sBAAsB,GAAoB,EAAE,WAAW,EAAE,IAAI,EAAE,CAAA;AAErE,MAAM,OAAO,SAAS;IACN,aAAa,CAAC,GAAQ,EAAE,KAAa,EAAE,eAAsC;;YACzF,MAAM,WAAW,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC,cAAc,EAAE,EAAE,CAAC,cAAc,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC,CAAA;YAC1G,MAAM,MAAM,GAA4B,EAAE,CAAA;YAC1C,MAAM,QAAQ,GAA4B,EAAE,CAAA;YAC5C,WAAW,CAAC,OAAO,CAAC,CAAC,gBAAgB,EAAE,EAAE;gBACvC,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE,CAAC;oBAC5B,MAAM,GAAG,GAAG,gBAAgB,CAAC,QAAQ,KAAK,kBAAkB,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAA;oBACtF,GAAG,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAA;gBAC5B,CAAC;YACH,CAAC,CAAC,CAAA;YACF,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,KAAK,CAAC,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,CAAA;YAC1D,OAAO,iBAAiB,CAAC,cAAc,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,CAAA;QACtE,CAAC;KAAA;IAEK,QAAQ;6DACZ,GAAQ,EACR,gBAA4D,EAC5D,UAA2B,sBAAsB;YAEjD,MAAM,qBAAqB,GAAsB,MAAM,OAAO,CAAC,GAAG,CAChE,MAAM,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC,GAAG,CAAC,KAAiC,EAAE,0CAA5B,CAAC,KAAK,EAAE,eAAe,CAAC,IAClE,OAAA,IAAI,CAAC,aAAa,CAAC,GAAG,EAAE,KAAK,EAAE,eAAe,CAAC,CAAA,GAAA,CAChD,CACF,CAAA;YACD,MAAM,MAAM,GAAqB,EAAE,CAAA;YACnC,IAAI,KAAK,GAAG,IAAI,CAAA;YAChB,MAAM,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE;gBACrD,MAAM,eAAe,GAAe,qBAAqB,CAAC,KAAK,CAAC,CAAA;gBAChE,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,CAAC;oBAC3B,KAAK,GAAG,KAAK,CAAA;gBACf,CAAC;gBACD,IAAI,CAAC,OAAO,CAAC,WAAW,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,CAAC;oBACnD,MAAM,CAAC,KAAK,CAAC,GAAG,eAAe,CAAA;gBACjC,CAAC;YACH,CAAC,CAAC,CAAA;YACF,OAAO,iBAAiB,CAAC,cAAc,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAA;QAC5D,CAAC;KAAA;CACF"}
1
+ {"version":3,"file":"validator.js","sourceRoot":"","sources":["../../../src/validation/validator.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAA;AAE7C,OAAO,EAAE,kBAAkB,EAAkD,MAAM,cAAc,CAAA;AAMjG,MAAM,sBAAsB,GAAoB,EAAE,WAAW,EAAE,IAAI,EAAE,CAAA;AAErE,MAAM,OAAO,SAAS;IACN,aAAa,CAAC,GAAQ,EAAE,KAAa,EAAE,eAAsC;;YACzF,MAAM,WAAW,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC,cAAc,EAAE,EAAE,CAAC,cAAc,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC,CAAA;YAC1G,MAAM,MAAM,GAA4B,EAAE,CAAA;YAC1C,MAAM,QAAQ,GAA4B,EAAE,CAAA;YAC5C,WAAW,CAAC,OAAO,CAAC,CAAC,gBAAgB,EAAE,EAAE;gBACvC,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE,CAAC;oBAC5B,MAAM,GAAG,GAAG,gBAAgB,CAAC,QAAQ,KAAK,kBAAkB,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAA;oBACtF,GAAG,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAA;gBAC5B,CAAC;YACH,CAAC,CAAC,CAAA;YACF,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,KAAK,CAAC,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,CAAA;YAC1D,OAAO,iBAAiB,CAAC,cAAc,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,CAAA;QACtE,CAAC;KAAA;IAEK,QAAQ;6DACZ,GAAQ,EACR,gBAA4D,EAC5D,UAA2B,sBAAsB;YAEjD,MAAM,qBAAqB,GAAsB,MAAM,OAAO,CAAC,GAAG,CAChE,MAAM,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC,GAAG,CAAC,KAAiC,EAAE,0CAA5B,CAAC,KAAK,EAAE,eAAe,CAAC,IAClE,OAAA,IAAI,CAAC,aAAa,CAAC,GAAG,EAAE,KAAK,EAAE,eAAe,CAAC,CAAA,GAAA,CAChD,CACF,CAAA;YACD,MAAM,MAAM,GAAqB,EAAE,CAAA;YACnC,IAAI,KAAK,GAAG,IAAI,CAAA;YAChB,MAAM,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE;gBACrD,MAAM,eAAe,GAAe,qBAAqB,CAAC,KAAK,CAAC,CAAA;gBAChE,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,CAAC;oBAC3B,KAAK,GAAG,KAAK,CAAA;gBACf,CAAC;gBACD,IAAI,CAAC,OAAO,CAAC,WAAW,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,CAAC;oBACnD,MAAM,CAAC,KAAK,CAAC,GAAG,eAAe,CAAA;gBACjC,CAAC;YACH,CAAC,CAAC,CAAA;YACF,OAAO,iBAAiB,CAAC,cAAc,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAA;QAC5D,CAAC;KAAA;CACF","sourcesContent":["import { ValidationFactory } from './factory'\nimport { FieldValidator } from './fieldValidator'\nimport { ValidationSeverity, Validation, ValidationResult, ValidationFields } from './validation'\n\ninterface ValidateOptions {\n removeValid: boolean\n}\n\nconst defaultValidateOptions: ValidateOptions = { removeValid: true }\n\nexport class Validator {\n private async validateField(obj: any, field: string, fieldValidators: Array<FieldValidator>): Promise<Validation> {\n const validations = await Promise.all(fieldValidators.map((fieldValidator) => fieldValidator(field, obj)))\n const errors: Array<ValidationResult> = []\n const warnings: Array<ValidationResult> = []\n validations.forEach((validationResult) => {\n if (!validationResult.valid) {\n const arr = validationResult.severity === ValidationSeverity.error ? errors : warnings\n arr.push(validationResult)\n }\n })\n const valid = errors.length === 0 && warnings.length === 0\n return ValidationFactory.createInstance({ valid, errors, warnings })\n }\n\n async validate(\n obj: any,\n fieldsValidators: { [field: string]: Array<FieldValidator> },\n options: ValidateOptions = defaultValidateOptions\n ): Promise<Validation> {\n const fieldsValidationArray: Array<Validation> = await Promise.all(\n Object.entries(fieldsValidators).map(async ([field, fieldValidators]) =>\n this.validateField(obj, field, fieldValidators)\n )\n )\n const fields: ValidationFields = {}\n let valid = true\n Object.keys(fieldsValidators).forEach((field, index) => {\n const fieldValidation: Validation = fieldsValidationArray[index]\n if (!fieldValidation.valid) {\n valid = false\n }\n if (!options.removeValid || !fieldValidation.valid) {\n fields[field] = fieldValidation\n }\n })\n return ValidationFactory.createInstance({ valid, fields })\n }\n}\n"]}