@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
@@ -2,13 +2,24 @@ import { bearing as bearingTurf } from '@turf/bearing';
2
2
  import { DEFAULT_SRS_INDEX } from '../../srs';
3
3
  import { toLatLong } from './toLatLong';
4
4
  import { Numbers } from '../../utils';
5
+ /**
6
+ * Calculates the angle (bearing) in degrees from pointFrom to pointTo.
7
+ * Returns the clockwise angle from north (0° = north, 90° = east, 180° = south, 270° = west).
8
+ *
9
+ * @param {!object} pointFrom - Start point.
10
+ * @param {!object} pointTo - End point.
11
+ * @param {!SRSIndex} srsIndex - SRSs indexed by SRS code.
12
+ * @returns {number} - Bearing angle in degrees [0-360).
13
+ */
5
14
  export const bearing = (pointFrom, pointTo, srsIndex = DEFAULT_SRS_INDEX) => {
6
15
  const point1LatLong = toLatLong(pointFrom, srsIndex);
7
16
  const point2LatLong = toLatLong(pointTo, srsIndex);
8
17
  if (!point1LatLong || !point2LatLong)
9
18
  return null;
19
+ // Turf expects [longitude, latitude] format
10
20
  const from = [point1LatLong.x, point1LatLong.y];
11
21
  const to = [point2LatLong.x, point2LatLong.y];
22
+ // Turf returns bearings in the range [-180, 180]; normalize to [0, 360)
12
23
  const rawBearing = bearingTurf(from, to);
13
24
  return Numbers.absMod(360)(rawBearing);
14
25
  };
@@ -1 +1 @@
1
- {"version":3,"file":"bearing.js","sourceRoot":"","sources":["../../../../src/geo/points/bearing.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,eAAe,CAAA;AAGtD,OAAO,EAAE,iBAAiB,EAAY,MAAM,WAAW,CAAA;AACvD,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AACvC,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAA;AAWrC,MAAM,CAAC,MAAM,OAAO,GAAG,CAAC,SAAgB,EAAE,OAAc,EAAE,WAAqB,iBAAiB,EAAiB,EAAE;IACjH,MAAM,aAAa,GAAG,SAAS,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAA;IACpD,MAAM,aAAa,GAAG,SAAS,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAA;IAElD,IAAI,CAAC,aAAa,IAAI,CAAC,aAAa;QAAE,OAAO,IAAI,CAAA;IAGjD,MAAM,IAAI,GAAG,CAAC,aAAa,CAAC,CAAC,EAAE,aAAa,CAAC,CAAC,CAAC,CAAA;IAC/C,MAAM,EAAE,GAAG,CAAC,aAAa,CAAC,CAAC,EAAE,aAAa,CAAC,CAAC,CAAC,CAAA;IAG7C,MAAM,UAAU,GAAG,WAAW,CAAC,IAAI,EAAE,EAAE,CAAC,CAAA;IACxC,OAAO,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,UAAU,CAAC,CAAA;AACxC,CAAC,CAAA"}
1
+ {"version":3,"file":"bearing.js","sourceRoot":"","sources":["../../../../src/geo/points/bearing.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,eAAe,CAAA;AAGtD,OAAO,EAAE,iBAAiB,EAAY,MAAM,WAAW,CAAA;AACvD,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AACvC,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAA;AAErC;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,OAAO,GAAG,CAAC,SAAgB,EAAE,OAAc,EAAE,WAAqB,iBAAiB,EAAiB,EAAE;IACjH,MAAM,aAAa,GAAG,SAAS,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAA;IACpD,MAAM,aAAa,GAAG,SAAS,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAA;IAElD,IAAI,CAAC,aAAa,IAAI,CAAC,aAAa;QAAE,OAAO,IAAI,CAAA;IAEjD,4CAA4C;IAC5C,MAAM,IAAI,GAAG,CAAC,aAAa,CAAC,CAAC,EAAE,aAAa,CAAC,CAAC,CAAC,CAAA;IAC/C,MAAM,EAAE,GAAG,CAAC,aAAa,CAAC,CAAC,EAAE,aAAa,CAAC,CAAC,CAAC,CAAA;IAE7C,wEAAwE;IACxE,MAAM,UAAU,GAAG,WAAW,CAAC,IAAI,EAAE,EAAE,CAAC,CAAA;IACxC,OAAO,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,UAAU,CAAC,CAAA;AACxC,CAAC,CAAA","sourcesContent":["import { bearing as bearingTurf } from '@turf/bearing'\n\nimport { Point } from '../point'\nimport { DEFAULT_SRS_INDEX, SRSIndex } from '../../srs'\nimport { toLatLong } from './toLatLong'\nimport { Numbers } from '../../utils'\n\n/**\n * Calculates the angle (bearing) in degrees from pointFrom to pointTo.\n * Returns the clockwise angle from north (0° = north, 90° = east, 180° = south, 270° = west).\n *\n * @param {!object} pointFrom - Start point.\n * @param {!object} pointTo - End point.\n * @param {!SRSIndex} srsIndex - SRSs indexed by SRS code.\n * @returns {number} - Bearing angle in degrees [0-360).\n */\nexport const bearing = (pointFrom: Point, pointTo: Point, srsIndex: SRSIndex = DEFAULT_SRS_INDEX): number | null => {\n const point1LatLong = toLatLong(pointFrom, srsIndex)\n const point2LatLong = toLatLong(pointTo, srsIndex)\n\n if (!point1LatLong || !point2LatLong) return null\n\n // Turf expects [longitude, latitude] format\n const from = [point1LatLong.x, point1LatLong.y]\n const to = [point2LatLong.x, point2LatLong.y]\n\n // Turf returns bearings in the range [-180, 180]; normalize to [0, 360)\n const rawBearing = bearingTurf(from, to)\n return Numbers.absMod(360)(rawBearing)\n}\n"]}
@@ -1,11 +1,20 @@
1
1
  import { distance as turfDistance } from '@turf/distance';
2
2
  import { DEFAULT_SRS_INDEX } from '../../srs';
3
3
  import { toLatLong } from './toLatLong';
4
+ /**
5
+ * Takes two points and returns the distance between them as the crow flies (in meters).
6
+ *
7
+ * @param {!object} pointFrom - Start point.
8
+ * @param {!object} pointTo - End point.
9
+ * @param {!SRSIndex} srsIndex - SRSs indexed by SRS code.
10
+ * @returns {number} - Distance between the specified points in meters.
11
+ */
4
12
  export const distance = (pointFrom, pointTo, srsIndex = DEFAULT_SRS_INDEX) => {
5
13
  const point1LatLong = toLatLong(pointFrom, srsIndex);
6
14
  const point2LatLong = toLatLong(pointTo, srsIndex);
7
15
  if (!point1LatLong || !point2LatLong)
8
16
  return null;
17
+ // Turf expects [longitude, latitude] format
9
18
  const from = [point1LatLong.x, point1LatLong.y];
10
19
  const to = [point2LatLong.x, point2LatLong.y];
11
20
  return turfDistance(from, to, { units: 'meters' });
@@ -1 +1 @@
1
- {"version":3,"file":"distance.js","sourceRoot":"","sources":["../../../../src/geo/points/distance.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,IAAI,YAAY,EAAE,MAAM,gBAAgB,CAAA;AACzD,OAAO,EAAE,iBAAiB,EAAY,MAAM,WAAW,CAAA;AAEvD,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AAUvC,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAC,SAAgB,EAAE,OAAc,EAAE,WAAqB,iBAAiB,EAAiB,EAAE;IAClH,MAAM,aAAa,GAAG,SAAS,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAA;IACpD,MAAM,aAAa,GAAG,SAAS,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAA;IAElD,IAAI,CAAC,aAAa,IAAI,CAAC,aAAa;QAAE,OAAO,IAAI,CAAA;IAGjD,MAAM,IAAI,GAAG,CAAC,aAAa,CAAC,CAAC,EAAE,aAAa,CAAC,CAAC,CAAC,CAAA;IAC/C,MAAM,EAAE,GAAG,CAAC,aAAa,CAAC,CAAC,EAAE,aAAa,CAAC,CAAC,CAAC,CAAA;IAE7C,OAAO,YAAY,CAAC,IAAI,EAAE,EAAE,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAA;AACpD,CAAC,CAAA"}
1
+ {"version":3,"file":"distance.js","sourceRoot":"","sources":["../../../../src/geo/points/distance.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,IAAI,YAAY,EAAE,MAAM,gBAAgB,CAAA;AACzD,OAAO,EAAE,iBAAiB,EAAY,MAAM,WAAW,CAAA;AAEvD,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AAEvC;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAC,SAAgB,EAAE,OAAc,EAAE,WAAqB,iBAAiB,EAAiB,EAAE;IAClH,MAAM,aAAa,GAAG,SAAS,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAA;IACpD,MAAM,aAAa,GAAG,SAAS,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAA;IAElD,IAAI,CAAC,aAAa,IAAI,CAAC,aAAa;QAAE,OAAO,IAAI,CAAA;IAEjD,4CAA4C;IAC5C,MAAM,IAAI,GAAG,CAAC,aAAa,CAAC,CAAC,EAAE,aAAa,CAAC,CAAC,CAAC,CAAA;IAC/C,MAAM,EAAE,GAAG,CAAC,aAAa,CAAC,CAAC,EAAE,aAAa,CAAC,CAAC,CAAC,CAAA;IAE7C,OAAO,YAAY,CAAC,IAAI,EAAE,EAAE,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAA;AACpD,CAAC,CAAA","sourcesContent":["import { distance as turfDistance } from '@turf/distance'\nimport { DEFAULT_SRS_INDEX, SRSIndex } from '../../srs'\nimport { Point } from '../point'\nimport { toLatLong } from './toLatLong'\n\n/**\n * Takes two points and returns the distance between them as the crow flies (in meters).\n *\n * @param {!object} pointFrom - Start point.\n * @param {!object} pointTo - End point.\n * @param {!SRSIndex} srsIndex - SRSs indexed by SRS code.\n * @returns {number} - Distance between the specified points in meters.\n */\nexport const distance = (pointFrom: Point, pointTo: Point, srsIndex: SRSIndex = DEFAULT_SRS_INDEX): number | null => {\n const point1LatLong = toLatLong(pointFrom, srsIndex)\n const point2LatLong = toLatLong(pointTo, srsIndex)\n\n if (!point1LatLong || !point2LatLong) return null\n\n // Turf expects [longitude, latitude] format\n const from = [point1LatLong.x, point1LatLong.y]\n const to = [point2LatLong.x, point2LatLong.y]\n\n return turfDistance(from, to, { units: 'meters' })\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"equals.js","sourceRoot":"","sources":["../../../../src/geo/points/equals.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,MAAM,GAAG,CAAC,MAAa,EAAE,MAAa,EAAW,EAAE;IAC9D,IAAI,MAAM,KAAK,MAAM;QAAE,OAAO,IAAI,CAAA;IAClC,OAAO,MAAM,CAAC,GAAG,KAAK,MAAM,CAAC,GAAG,IAAI,MAAM,CAAC,CAAC,KAAK,MAAM,CAAC,CAAC,IAAI,MAAM,CAAC,CAAC,KAAK,MAAM,CAAC,CAAC,CAAA;AACpF,CAAC,CAAA"}
1
+ {"version":3,"file":"equals.js","sourceRoot":"","sources":["../../../../src/geo/points/equals.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,MAAM,GAAG,CAAC,MAAa,EAAE,MAAa,EAAW,EAAE;IAC9D,IAAI,MAAM,KAAK,MAAM;QAAE,OAAO,IAAI,CAAA;IAClC,OAAO,MAAM,CAAC,GAAG,KAAK,MAAM,CAAC,GAAG,IAAI,MAAM,CAAC,CAAC,KAAK,MAAM,CAAC,CAAC,IAAI,MAAM,CAAC,CAAC,KAAK,MAAM,CAAC,CAAC,CAAA;AACpF,CAAC,CAAA","sourcesContent":["import { Point } from '../point'\n\nexport const equals = (point1: Point, point2: Point): boolean => {\n if (point1 === point2) return true\n return point1.srs === point2.srs && point1.x === point2.x && point1.y === point2.y\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"getSrs.js","sourceRoot":"","sources":["../../../../src/geo/points/getSrs.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAiB,MAAM,WAAW,CAAA;AAEtD,MAAM,CAAC,MAAM,MAAM,GAAG,CAAC,MAA4C,EAAmB,EAAE;IACtF,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,MAAM,CAAA;IACjC,IAAI,IAAI,KAAK,WAAW,CAAC,IAAI,EAAE,CAAC;QAC9B,OAAO,WAAW,CAAA;IACpB,CAAC;IACD,OAAO,QAAQ,CAAC,IAAI,CAAC,CAAA;AACvB,CAAC,CAAA"}
1
+ {"version":3,"file":"getSrs.js","sourceRoot":"","sources":["../../../../src/geo/points/getSrs.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAiB,MAAM,WAAW,CAAA;AAEtD,MAAM,CAAC,MAAM,MAAM,GAAG,CAAC,MAA4C,EAAmB,EAAE;IACtF,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,MAAM,CAAA;IACjC,IAAI,IAAI,KAAK,WAAW,CAAC,IAAI,EAAE,CAAC;QAC9B,OAAO,WAAW,CAAA;IACpB,CAAC;IACD,OAAO,QAAQ,CAAC,IAAI,CAAC,CAAA;AACvB,CAAC,CAAA","sourcesContent":["import { DEFAULT_SRS, SRS, SRSIndex } from '../../srs'\n\nexport const getSrs = (params: { code: string; srsIndex: SRSIndex }): SRS | undefined => {\n const { code, srsIndex } = params\n if (code === DEFAULT_SRS.code) {\n return DEFAULT_SRS\n }\n return srsIndex[code]\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/geo/points/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AACnC,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AACrC,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAA;AACjC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AACnC,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAA;AACnD,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAA;AAC/B,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AACvC,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AACrC,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AAEvC,MAAM,CAAC,MAAM,MAAM,GAAG;IACpB,OAAO;IACP,QAAQ;IACR,MAAM;IACN,OAAO;IACP,eAAe;IACf,KAAK;IACL,SAAS;IACT,QAAQ;IACR,SAAS;CACV,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/geo/points/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AACnC,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AACrC,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAA;AACjC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AACnC,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAA;AACnD,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAA;AAC/B,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AACvC,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AACrC,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AAEvC,MAAM,CAAC,MAAM,MAAM,GAAG;IACpB,OAAO;IACP,QAAQ;IACR,MAAM;IACN,OAAO;IACP,eAAe;IACf,KAAK;IACL,SAAS;IACT,QAAQ;IACR,SAAS;CACV,CAAA","sourcesContent":["import { bearing } from './bearing'\nimport { distance } from './distance'\nimport { equals } from './equals'\nimport { isValid } from './isValid'\nimport { pointAtDistance } from './pointAtDistance'\nimport { parse } from './parse'\nimport { toLatLong } from './toLatLong'\nimport { toString } from './toString'\nimport { transform } from './transform'\n\nexport const Points = {\n bearing,\n distance,\n equals,\n isValid,\n pointAtDistance,\n parse,\n toLatLong,\n toString,\n transform,\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"isFilled.js","sourceRoot":"","sources":["../../../../src/geo/points/isFilled.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAA;AAGrC,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAC,KAAY,EAAW,EAAE,CAChD,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA"}
1
+ {"version":3,"file":"isFilled.js","sourceRoot":"","sources":["../../../../src/geo/points/isFilled.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAA;AAGrC,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAC,KAAY,EAAW,EAAE,CAChD,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA","sourcesContent":["import { Objects } from '../../utils'\nimport { Point } from '../point'\n\nexport const isFilled = (point: Point): boolean =>\n !Objects.isEmpty(point) && !Objects.isEmpty(point.srs) && !Objects.isEmpty(point.x) && !Objects.isEmpty(point.y)\n"]}
@@ -5,7 +5,7 @@ import { equals } from './equals';
5
5
  import { getSrs } from './getSrs';
6
6
  import { isFilled } from './isFilled';
7
7
  import { toLatLong } from './toLatLong';
8
- const INVALID_LAT_LONG_POINT = PointFactory.createInstance({ x: 0, y: 90 });
8
+ const INVALID_LAT_LONG_POINT = PointFactory.createInstance({ x: 0, y: 90 }); // Proj4 returns [0,90] when a wrong coordinate is projected into lat-lon
9
9
  export const isValid = (point, srsIndex = DEFAULT_SRS_INDEX) => {
10
10
  if (!point || !isFilled(point))
11
11
  return false;
@@ -1 +1 @@
1
- {"version":3,"file":"isValid.js","sourceRoot":"","sources":["../../../../src/geo/points/isValid.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAY,MAAM,WAAW,CAAA;AACvD,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAA;AAErC,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAA;AAC9C,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAA;AACjC,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAA;AACjC,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AACrC,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AAEvC,MAAM,sBAAsB,GAAU,YAAY,CAAC,cAAc,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,CAAA;AAElF,MAAM,CAAC,MAAM,OAAO,GAAG,CAAC,KAAY,EAAE,WAAqB,iBAAiB,EAAW,EAAE;IACvF,IAAI,CAAC,KAAK,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;QAAE,OAAO,KAAK,CAAA;IAE5C,IAAI,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,GAAG,EAAE,QAAQ,EAAE,CAAC;QAAE,OAAO,KAAK,CAAA;IAExD,MAAM,YAAY,GAAG,SAAS,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAA;IAC/C,IAAI,CAAC,YAAY,IAAI,MAAM,CAAC,YAAY,EAAE,sBAAsB,CAAC;QAAE,OAAO,KAAK,CAAA;IAE/E,OAAO,OAAO,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,OAAO,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,CAAA;AAC/F,CAAC,CAAA"}
1
+ {"version":3,"file":"isValid.js","sourceRoot":"","sources":["../../../../src/geo/points/isValid.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAY,MAAM,WAAW,CAAA;AACvD,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAA;AAErC,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAA;AAC9C,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAA;AACjC,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAA;AACjC,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AACrC,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AAEvC,MAAM,sBAAsB,GAAU,YAAY,CAAC,cAAc,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,CAAA,CAAC,yEAAyE;AAE5J,MAAM,CAAC,MAAM,OAAO,GAAG,CAAC,KAAY,EAAE,WAAqB,iBAAiB,EAAW,EAAE;IACvF,IAAI,CAAC,KAAK,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;QAAE,OAAO,KAAK,CAAA;IAE5C,IAAI,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,GAAG,EAAE,QAAQ,EAAE,CAAC;QAAE,OAAO,KAAK,CAAA;IAExD,MAAM,YAAY,GAAG,SAAS,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAA;IAC/C,IAAI,CAAC,YAAY,IAAI,MAAM,CAAC,YAAY,EAAE,sBAAsB,CAAC;QAAE,OAAO,KAAK,CAAA;IAE/E,OAAO,OAAO,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,OAAO,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,CAAA;AAC/F,CAAC,CAAA","sourcesContent":["import { DEFAULT_SRS_INDEX, SRSIndex } from '../../srs'\nimport { Numbers } from '../../utils'\nimport { Point } from '../point'\nimport { PointFactory } from '../pointFactory'\nimport { equals } from './equals'\nimport { getSrs } from './getSrs'\nimport { isFilled } from './isFilled'\nimport { toLatLong } from './toLatLong'\n\nconst INVALID_LAT_LONG_POINT: Point = PointFactory.createInstance({ x: 0, y: 90 }) // Proj4 returns [0,90] when a wrong coordinate is projected into lat-lon\n\nexport const isValid = (point: Point, srsIndex: SRSIndex = DEFAULT_SRS_INDEX): boolean => {\n if (!point || !isFilled(point)) return false\n\n if (!getSrs({ code: point.srs, srsIndex })) return false\n\n const pointLatLong = toLatLong(point, srsIndex)\n if (!pointLatLong || equals(pointLatLong, INVALID_LAT_LONG_POINT)) return false\n\n return Numbers.between(pointLatLong.x, -180, 180) && Numbers.between(pointLatLong.y, -90, 90)\n}\n"]}
@@ -1,5 +1,14 @@
1
1
  import { PointFactory } from '../pointFactory';
2
2
  const POINT_REGEX = /SRID=((EPSG:)?(\w+));POINT\((-?\d+(\.\d+)?) (-?\d+(\.\d+)?)\)/;
3
+ /**
4
+ * Parses a point in the format: SRID=SRS_CODE;POINT(X Y)
5
+ * (X and Y separated by a space). Valid examples are:
6
+ * - SRID=EPSG:4326;POINT(12.489060 41.882788)
7
+ * - SRID=4326;POINT(12 41).
8
+ *
9
+ * @param {!(string | object)} value - The point to parse. It can be a string or an object.
10
+ * @returns {Point} - The parsed Point object.
11
+ */
3
12
  export const parse = (value) => {
4
13
  if (!value)
5
14
  return null;
@@ -1 +1 @@
1
- {"version":3,"file":"parse.js","sourceRoot":"","sources":["../../../../src/geo/points/parse.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAA;AAE9C,MAAM,WAAW,GAAG,+DAA+D,CAAA;AAWnF,MAAM,CAAC,MAAM,KAAK,GAAG,CAAC,KAAsB,EAAgB,EAAE;IAC5D,IAAI,CAAC,KAAK;QAAE,OAAO,IAAI,CAAA;IAEvB,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,KAAc,CAAA;IAEpD,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,MAAM,KAAK,GAAG,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;QACrC,IAAI,CAAC,KAAK;YAAE,OAAO,IAAI,CAAA;QAEvB,MAAM,GAAG,GAAG,KAAK,CAAC,CAAC,CAAC,CAAA;QACpB,MAAM,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAA;QAC1B,MAAM,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAA;QAC1B,OAAO,YAAY,CAAC,cAAc,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAA;IACnD,CAAC;IACD,OAAO,IAAI,CAAA;AACb,CAAC,CAAA"}
1
+ {"version":3,"file":"parse.js","sourceRoot":"","sources":["../../../../src/geo/points/parse.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAA;AAE9C,MAAM,WAAW,GAAG,+DAA+D,CAAA;AAEnF;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,KAAK,GAAG,CAAC,KAAsB,EAAgB,EAAE;IAC5D,IAAI,CAAC,KAAK;QAAE,OAAO,IAAI,CAAA;IAEvB,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,KAAc,CAAA;IAEpD,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,MAAM,KAAK,GAAG,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;QACrC,IAAI,CAAC,KAAK;YAAE,OAAO,IAAI,CAAA;QAEvB,MAAM,GAAG,GAAG,KAAK,CAAC,CAAC,CAAC,CAAA;QACpB,MAAM,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAA;QAC1B,MAAM,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAA;QAC1B,OAAO,YAAY,CAAC,cAAc,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAA;IACnD,CAAC;IACD,OAAO,IAAI,CAAA;AACb,CAAC,CAAA","sourcesContent":["import { Point } from '../point'\nimport { PointFactory } from '../pointFactory'\n\nconst POINT_REGEX = /SRID=((EPSG:)?(\\w+));POINT\\((-?\\d+(\\.\\d+)?) (-?\\d+(\\.\\d+)?)\\)/\n\n/**\n * Parses a point in the format: SRID=SRS_CODE;POINT(X Y)\n * (X and Y separated by a space). Valid examples are:\n * - SRID=EPSG:4326;POINT(12.489060 41.882788)\n * - SRID=4326;POINT(12 41).\n *\n * @param {!(string | object)} value - The point to parse. It can be a string or an object.\n * @returns {Point} - The parsed Point object.\n */\nexport const parse = (value: string | object): Point | null => {\n if (!value) return null\n\n if (typeof value === 'object') return value as Point\n\n if (typeof value === 'string') {\n const match = POINT_REGEX.exec(value)\n if (!match) return null\n\n const srs = match[3]\n const x = Number(match[4])\n const y = Number(match[6])\n return PointFactory.createInstance({ srs, x, y })\n }\n return null\n}\n"]}
@@ -4,8 +4,18 @@ import { PointFactory } from '../pointFactory';
4
4
  import { toLatLong } from './toLatLong';
5
5
  import { transform } from './transform';
6
6
  import { isValid } from './isValid';
7
+ /**
8
+ * Takes a point, a distance in meters, and a bearing in degrees, and returns the location of the point at the specified distance and bearing from the original point.
9
+ * @param params
10
+ * @param params.origin - The original point from which to calculate the new location.
11
+ * @param params.distanceMeters - The distance in meters from the original point to the new location.
12
+ * @param params.bearingDeg - The bearing in degrees from the original point to the new location.
13
+ * @param params.srsIndex - SRSs indexed by SRS code.
14
+ * @returns The new point at the specified distance and bearing from the original point, or null if the calculation fails.
15
+ */
7
16
  export const pointAtDistance = ({ origin, distanceMeters, bearingDeg, srsIndex = DEFAULT_SRS_INDEX, }) => {
8
17
  const originLatLong = toLatLong(origin, srsIndex);
18
+ // Validate numeric inputs and lat/long bounds before calling turfDestination
9
19
  if (!originLatLong || !isValid(originLatLong, srsIndex)) {
10
20
  return null;
11
21
  }
@@ -1 +1 @@
1
- {"version":3,"file":"pointAtDistance.js","sourceRoot":"","sources":["../../../../src/geo/points/pointAtDistance.ts"],"names":[],"mappings":"AAAA,OAAO,eAAe,MAAM,mBAAmB,CAAA;AAE/C,OAAO,EAAE,iBAAiB,EAAY,MAAM,WAAW,CAAA;AAEvD,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAA;AAC9C,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AACvC,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AACvC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAWnC,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,EAC9B,MAAM,EACN,cAAc,EACd,UAAU,EACV,QAAQ,GAAG,iBAAiB,GAM7B,EAAgB,EAAE;IACjB,MAAM,aAAa,GAAG,SAAS,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAA;IAGjD,IAAI,CAAC,aAAa,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE,QAAQ,CAAC,EAAE,CAAC;QACxD,OAAO,IAAI,CAAA;IACb,CAAC;IACD,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,cAAc,CAAC,IAAI,cAAc,GAAG,CAAC,EAAE,CAAC;QAC3D,OAAO,IAAI,CAAA;IACb,CAAC;IACD,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;QACjC,OAAO,IAAI,CAAA;IACb,CAAC;IACD,MAAM,MAAM,GAAG,eAAe,CAAC,CAAC,aAAa,CAAC,CAAC,EAAE,aAAa,CAAC,CAAC,CAAC,EAAE,cAAc,EAAE,UAAU,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAA;IACnH,MAAM,kBAAkB,GAAG,YAAY,CAAC,cAAc,CAAC;QACrD,CAAC,EAAE,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,CAAC;QACjC,CAAC,EAAE,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,CAAC;KAClC,CAAC,CAAA;IACF,OAAO,SAAS,CAAC,kBAAkB,EAAE,MAAM,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAA;AAC5D,CAAC,CAAA"}
1
+ {"version":3,"file":"pointAtDistance.js","sourceRoot":"","sources":["../../../../src/geo/points/pointAtDistance.ts"],"names":[],"mappings":"AAAA,OAAO,eAAe,MAAM,mBAAmB,CAAA;AAE/C,OAAO,EAAE,iBAAiB,EAAY,MAAM,WAAW,CAAA;AAEvD,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAA;AAC9C,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AACvC,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AACvC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAEnC;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,EAC9B,MAAM,EACN,cAAc,EACd,UAAU,EACV,QAAQ,GAAG,iBAAiB,GAM7B,EAAgB,EAAE;IACjB,MAAM,aAAa,GAAG,SAAS,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAA;IAEjD,6EAA6E;IAC7E,IAAI,CAAC,aAAa,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE,QAAQ,CAAC,EAAE,CAAC;QACxD,OAAO,IAAI,CAAA;IACb,CAAC;IACD,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,cAAc,CAAC,IAAI,cAAc,GAAG,CAAC,EAAE,CAAC;QAC3D,OAAO,IAAI,CAAA;IACb,CAAC;IACD,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;QACjC,OAAO,IAAI,CAAA;IACb,CAAC;IACD,MAAM,MAAM,GAAG,eAAe,CAAC,CAAC,aAAa,CAAC,CAAC,EAAE,aAAa,CAAC,CAAC,CAAC,EAAE,cAAc,EAAE,UAAU,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAA;IACnH,MAAM,kBAAkB,GAAG,YAAY,CAAC,cAAc,CAAC;QACrD,CAAC,EAAE,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,CAAC;QACjC,CAAC,EAAE,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,CAAC;KAClC,CAAC,CAAA;IACF,OAAO,SAAS,CAAC,kBAAkB,EAAE,MAAM,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAA;AAC5D,CAAC,CAAA","sourcesContent":["import turfDestination from '@turf/destination'\n\nimport { DEFAULT_SRS_INDEX, SRSIndex } from '../../srs'\nimport { Point } from '../point'\nimport { PointFactory } from '../pointFactory'\nimport { toLatLong } from './toLatLong'\nimport { transform } from './transform'\nimport { isValid } from './isValid'\n\n/**\n * Takes a point, a distance in meters, and a bearing in degrees, and returns the location of the point at the specified distance and bearing from the original point.\n * @param params\n * @param params.origin - The original point from which to calculate the new location.\n * @param params.distanceMeters - The distance in meters from the original point to the new location.\n * @param params.bearingDeg - The bearing in degrees from the original point to the new location.\n * @param params.srsIndex - SRSs indexed by SRS code.\n * @returns The new point at the specified distance and bearing from the original point, or null if the calculation fails.\n */\nexport const pointAtDistance = ({\n origin,\n distanceMeters,\n bearingDeg,\n srsIndex = DEFAULT_SRS_INDEX,\n}: {\n origin: Point\n distanceMeters: number\n bearingDeg: number\n srsIndex?: SRSIndex\n}): Point | null => {\n const originLatLong = toLatLong(origin, srsIndex)\n\n // Validate numeric inputs and lat/long bounds before calling turfDestination\n if (!originLatLong || !isValid(originLatLong, srsIndex)) {\n return null\n }\n if (!Number.isFinite(distanceMeters) || distanceMeters < 0) {\n return null\n }\n if (!Number.isFinite(bearingDeg)) {\n return null\n }\n const target = turfDestination([originLatLong.x, originLatLong.y], distanceMeters, bearingDeg, { units: 'meters' })\n const targetPointLatLong = PointFactory.createInstance({\n x: target.geometry.coordinates[0],\n y: target.geometry.coordinates[1],\n })\n return transform(targetPointLatLong, origin.srs, srsIndex)\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"toLatLong.js","sourceRoot":"","sources":["../../../../src/geo/points/toLatLong.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAY,MAAM,WAAW,CAAA;AAEjD,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AAEvC,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,KAAY,EAAE,QAAkB,EAAgB,EAAE,CAC1E,SAAS,CAAC,KAAK,EAAE,WAAW,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAA"}
1
+ {"version":3,"file":"toLatLong.js","sourceRoot":"","sources":["../../../../src/geo/points/toLatLong.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAY,MAAM,WAAW,CAAA;AAEjD,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AAEvC,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,KAAY,EAAE,QAAkB,EAAgB,EAAE,CAC1E,SAAS,CAAC,KAAK,EAAE,WAAW,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAA","sourcesContent":["import { DEFAULT_SRS, SRSIndex } from '../../srs'\nimport { Point } from '../point'\nimport { transform } from './transform'\n\nexport const toLatLong = (point: Point, srsIndex: SRSIndex): Point | null =>\n transform(point, DEFAULT_SRS.code, srsIndex)\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"toString.js","sourceRoot":"","sources":["../../../../src/geo/points/toString.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAC,KAAY,EAAU,EAAE,CAAC,QAAQ,KAAK,CAAC,GAAG,UAAU,KAAK,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,GAAG,CAAA"}
1
+ {"version":3,"file":"toString.js","sourceRoot":"","sources":["../../../../src/geo/points/toString.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAC,KAAY,EAAU,EAAE,CAAC,QAAQ,KAAK,CAAC,GAAG,UAAU,KAAK,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,GAAG,CAAA","sourcesContent":["import { Point } from '../point'\n\nexport const toString = (point: Point): string => `SRID=${point.srs};POINT(${point.x} ${point.y})`\n"]}
@@ -3,6 +3,7 @@ import { DEFAULT_SRS_INDEX } from '../../srs';
3
3
  import { PointFactory } from '../pointFactory';
4
4
  import { isFilled } from './isFilled';
5
5
  import { getSrs } from './getSrs';
6
+ // proj4 parses both WKT strings every time it is called with them: cache the converters by WKT pair
6
7
  const convertersCache = new Map();
7
8
  const getConverter = (wktFrom, wktTo) => {
8
9
  const key = `${wktFrom}\n${wktTo}`;
@@ -13,19 +14,30 @@ const getConverter = (wktFrom, wktTo) => {
13
14
  }
14
15
  return converter;
15
16
  };
17
+ /**
18
+ * Trasforms the specified point from one SRS into another.
19
+ *
20
+ * @param {!Point} point - The point to transform.
21
+ * @param {!string} srsCodeTo - The SRS code to transform the coordinate into.
22
+ * @param {SRSIndex} srsIndex - SRSs indexed by SRS code.
23
+ * @returns {Point|null} - The transformed Point object, null if an error occurred.
24
+ */
16
25
  export const transform = (point, srsCodeTo, srsIndex = DEFAULT_SRS_INDEX) => {
17
26
  if (!isFilled(point))
18
27
  return null;
19
28
  const { srs: srsCodeFrom } = point;
20
29
  if (srsCodeFrom === srsCodeTo) {
30
+ // projection is not needed
21
31
  return point;
22
32
  }
23
33
  const srsFrom = getSrs({ code: srsCodeFrom, srsIndex });
24
34
  if (!srsFrom) {
35
+ // invalid srs specified in point
25
36
  return null;
26
37
  }
27
38
  const srsTo = getSrs({ code: srsCodeTo, srsIndex });
28
39
  if (!srsTo) {
40
+ // invalid target srs code
29
41
  return null;
30
42
  }
31
43
  try {
@@ -1 +1 @@
1
- {"version":3,"file":"transform.js","sourceRoot":"","sources":["../../../../src/geo/points/transform.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AAEzB,OAAO,EAAE,iBAAiB,EAAY,MAAM,WAAW,CAAA;AAEvD,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAA;AAC9C,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AACrC,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAA;AAGjC,MAAM,eAAe,GAAG,IAAI,GAAG,EAA2B,CAAA;AAE1D,MAAM,YAAY,GAAG,CAAC,OAAe,EAAE,KAAa,EAAmB,EAAE;IACvE,MAAM,GAAG,GAAG,GAAG,OAAO,KAAK,KAAK,EAAE,CAAA;IAClC,IAAI,SAAS,GAAG,eAAe,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;IACxC,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,SAAS,GAAG,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,CAAA;QACjC,eAAe,CAAC,GAAG,CAAC,GAAG,EAAE,SAAS,CAAC,CAAA;IACrC,CAAC;IACD,OAAO,SAAS,CAAA;AAClB,CAAC,CAAA;AAUD,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,KAAY,EAAE,SAAiB,EAAE,WAAqB,iBAAiB,EAAgB,EAAE;IACjH,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;QAAE,OAAO,IAAI,CAAA;IAEjC,MAAM,EAAE,GAAG,EAAE,WAAW,EAAE,GAAG,KAAK,CAAA;IAElC,IAAI,WAAW,KAAK,SAAS,EAAE,CAAC;QAE9B,OAAO,KAAK,CAAA;IACd,CAAC;IACD,MAAM,OAAO,GAAG,MAAM,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,QAAQ,EAAE,CAAC,CAAA;IACvD,IAAI,CAAC,OAAO,EAAE,CAAC;QAEb,OAAO,IAAI,CAAA;IACb,CAAC;IAED,MAAM,KAAK,GAAG,MAAM,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAC,CAAA;IACnD,IAAI,CAAC,KAAK,EAAE,CAAC;QAEX,OAAO,IAAI,CAAA;IACb,CAAC;IACD,IAAI,CAAC;QACH,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,KAAK,CAAA;QACtB,MAAM,CAAC,IAAI,EAAE,GAAG,CAAC,GAAG,YAAY,CAAC,OAAO,CAAC,GAAG,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;QAExF,OAAO,YAAY,CAAC,cAAc,iCAAM,KAAK,KAAE,GAAG,EAAE,SAAS,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,GAAG,IAAG,CAAA;IACnF,CAAC;IAAC,WAAM,CAAC;QACP,OAAO,IAAI,CAAA;IACb,CAAC;AACH,CAAC,CAAA"}
1
+ {"version":3,"file":"transform.js","sourceRoot":"","sources":["../../../../src/geo/points/transform.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AAEzB,OAAO,EAAE,iBAAiB,EAAY,MAAM,WAAW,CAAA;AAEvD,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAA;AAC9C,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AACrC,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAA;AAEjC,oGAAoG;AACpG,MAAM,eAAe,GAAG,IAAI,GAAG,EAA2B,CAAA;AAE1D,MAAM,YAAY,GAAG,CAAC,OAAe,EAAE,KAAa,EAAmB,EAAE;IACvE,MAAM,GAAG,GAAG,GAAG,OAAO,KAAK,KAAK,EAAE,CAAA;IAClC,IAAI,SAAS,GAAG,eAAe,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;IACxC,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,SAAS,GAAG,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,CAAA;QACjC,eAAe,CAAC,GAAG,CAAC,GAAG,EAAE,SAAS,CAAC,CAAA;IACrC,CAAC;IACD,OAAO,SAAS,CAAA;AAClB,CAAC,CAAA;AAED;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,KAAY,EAAE,SAAiB,EAAE,WAAqB,iBAAiB,EAAgB,EAAE;IACjH,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;QAAE,OAAO,IAAI,CAAA;IAEjC,MAAM,EAAE,GAAG,EAAE,WAAW,EAAE,GAAG,KAAK,CAAA;IAElC,IAAI,WAAW,KAAK,SAAS,EAAE,CAAC;QAC9B,2BAA2B;QAC3B,OAAO,KAAK,CAAA;IACd,CAAC;IACD,MAAM,OAAO,GAAG,MAAM,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,QAAQ,EAAE,CAAC,CAAA;IACvD,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,iCAAiC;QACjC,OAAO,IAAI,CAAA;IACb,CAAC;IAED,MAAM,KAAK,GAAG,MAAM,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAC,CAAA;IACnD,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,0BAA0B;QAC1B,OAAO,IAAI,CAAA;IACb,CAAC;IACD,IAAI,CAAC;QACH,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,KAAK,CAAA;QACtB,MAAM,CAAC,IAAI,EAAE,GAAG,CAAC,GAAG,YAAY,CAAC,OAAO,CAAC,GAAG,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;QAExF,OAAO,YAAY,CAAC,cAAc,iCAAM,KAAK,KAAE,GAAG,EAAE,SAAS,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,GAAG,IAAG,CAAA;IACnF,CAAC;IAAC,WAAM,CAAC;QACP,OAAO,IAAI,CAAA;IACb,CAAC;AACH,CAAC,CAAA","sourcesContent":["import proj4 from 'proj4'\n\nimport { DEFAULT_SRS_INDEX, SRSIndex } from '../../srs'\nimport { Point } from '../point'\nimport { PointFactory } from '../pointFactory'\nimport { isFilled } from './isFilled'\nimport { getSrs } from './getSrs'\n\n// proj4 parses both WKT strings every time it is called with them: cache the converters by WKT pair\nconst convertersCache = new Map<string, proj4.Converter>()\n\nconst getConverter = (wktFrom: string, wktTo: string): proj4.Converter => {\n const key = `${wktFrom}\\n${wktTo}`\n let converter = convertersCache.get(key)\n if (!converter) {\n converter = proj4(wktFrom, wktTo)\n convertersCache.set(key, converter)\n }\n return converter\n}\n\n/**\n * Trasforms the specified point from one SRS into another.\n *\n * @param {!Point} point - The point to transform.\n * @param {!string} srsCodeTo - The SRS code to transform the coordinate into.\n * @param {SRSIndex} srsIndex - SRSs indexed by SRS code.\n * @returns {Point|null} - The transformed Point object, null if an error occurred.\n */\nexport const transform = (point: Point, srsCodeTo: string, srsIndex: SRSIndex = DEFAULT_SRS_INDEX): Point | null => {\n if (!isFilled(point)) return null\n\n const { srs: srsCodeFrom } = point\n\n if (srsCodeFrom === srsCodeTo) {\n // projection is not needed\n return point\n }\n const srsFrom = getSrs({ code: srsCodeFrom, srsIndex })\n if (!srsFrom) {\n // invalid srs specified in point\n return null\n }\n\n const srsTo = getSrs({ code: srsCodeTo, srsIndex })\n if (!srsTo) {\n // invalid target srs code\n return null\n }\n try {\n const { x, y } = point\n const [long, lat] = getConverter(srsFrom.wkt, srsTo.wkt).forward([Number(x), Number(y)])\n\n return PointFactory.createInstance({ ...point, srs: srsCodeTo, x: long, y: lat })\n } catch {\n return null\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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","sourcesContent":["export type { AppInfo } from './app'\n\nexport { Authorizer, AuthGroupName, UserStatus, Permission, UserTitle, UserFactory, Users } from './auth'\nexport type {\n AuthGroup,\n User,\n UserAuthGroup,\n UserAuthGroupProps,\n AuthToken,\n UserAuthTokenPayload,\n UserAuthTokenService,\n UserPrefs,\n UserPrefSurveys,\n UserProps,\n UserAuthRefreshToken,\n UserAuthRefreshTokenProps,\n UserAuthRefreshTokenPayload,\n UserService,\n UserTokenPayload,\n DownloadAuthTokenPayload,\n UserGroup,\n UserGroupProps,\n UserGroupQualifier,\n UserInvitation,\n} from './auth'\n\nexport { CategoryFactory, CategoryImportColumnType, CategoryItemFactory, CategoryLevelFactory } from './category'\nexport type {\n CategoryItemProps,\n Category,\n CategoryItem,\n CategoryLevel,\n CategoryLevelProps,\n CategoryImportSummary,\n CategoryImportSummaryColumn,\n CategoryItemService,\n CategoryLevelService,\n CategoryProps,\n CategoryService,\n} from './category'\n\nexport { Categories, CategoryItems } from './category'\n\nexport { ChainFactory, ChainStatusExec, ChainNodeDefFactory } from './chain'\nexport type {\n Chain,\n ChainProps,\n ChainService,\n ChainNodeDef,\n ChainNodeDefProps,\n ChainNodeDefService,\n ChainNodeDefAggregate,\n ChainNodeDefAggregateProps,\n} from './chain'\n\nexport { TraverseMethod } from './common'\nexport type { ArenaObject, ArenaService, Dictionary, Factory, I18n } from './common'\n\nexport type { FlatDataExportOptions, ArenaExportInfoFactoryParams, ArenaExportInfo } from './dataExport'\nexport {\n FlatDataExportDefaultOptions,\n FlatDataExportOption,\n FlatDataFiles,\n FlatDataExportModel,\n FlatDataExportColumnDataType,\n ArenaExportInfoFactory,\n UniqueFileNamesGenerator,\n} from './dataExport'\n\nexport { DataQueryMode, DataQuerySummaries } from './dataQuery'\nexport type { DataQuery, DataQuerySummary, DataQuerySummaryProps } from './dataQuery'\n\nexport { SystemError } from './error'\n\nexport {\n ExpressionNodeType,\n ExpressionNodeEvaluator,\n ExpressionVariable,\n JavascriptExpressionEvaluator,\n JavascriptExpressionParser,\n} from './expression'\nexport type {\n ArrayExpression,\n BinaryExpression,\n CallExpression,\n CompoundExpression,\n ConditionalExpression,\n ExpressionContext,\n ExpressionEvaluator,\n ExpressionFunction,\n ExpressionFunctions,\n ExpressionNode,\n ExpressionNodeEvaluatorConstructor,\n MemberExpression,\n IdentifierExpression,\n LiteralExpression,\n SequenceExpression,\n ThisExpression,\n UnaryExpression,\n} from './expression'\n\nexport { ExtraPropDataType, ExtraPropsDataGenerator } from './extraProp'\nexport type { ExtraPropDef, ExtraPropDefs } from './extraProp'\n\nexport { PointFactory, Points } from './geo'\nexport type { Point } from './geo'\n\nexport { JobBase, JobEventType, JobStatus } from './job'\nexport type { Job, JobContext, JobEvent, JobSerialized } from './job'\n\nexport { LanguageCode, Languages, LanguagesISO639part2 } from './language'\nexport type { Labels } from './language'\n\nexport type { Logger } from './logger'\n\nexport type { Message } from './message'\nexport { MessageNotificationType, MessagePropsKey, MessageStatus, MessageTargetUserType, Messages } from './message'\n\nexport { NodeFactory, NodeKeys, NodeMetaKeys, Nodes, NodeValueFormatter, NodeValues } from './node'\nexport type {\n Node,\n Node as ArenaRecordNode,\n NodeMeta,\n NodePointer,\n NodeRefData,\n NodeService,\n NodesMap,\n NodeValueCode,\n NodeValueCoordinate,\n NodeValueFile,\n NodeValueTaxon,\n} from './node'\n\nexport {\n NodeDefCountType,\n NodeDefType,\n NodeDefFactory,\n NodeDefs,\n NodeDefEntityRenderType,\n NodeDefFileType,\n NodeDefTextInputType,\n NodeDefTextRenderType,\n FormHeaderColor,\n} from './nodeDef'\n\nexport { NodeDefExpressionEvaluator, NodeDefExpressionValidator } from './nodeDefExpressionEvaluator'\nexport type { CategoryItemProvider, TaxonProvider } from './nodeDefExpressionEvaluator'\n\nexport type {\n NodeDef,\n NodeDefLayout,\n NodeDefMeta,\n NodeDefProps,\n NodeDefPropsWithLayout,\n NodeDefBoolean,\n NodeDefBooleanProps,\n NodeDefCode,\n NodeDefCodeLayout,\n NodeDefCodeProps,\n NodeDefCoordinate,\n NodeDefCoordinateProps,\n NodeDefDate,\n NodeDefDecimal,\n NodeDefDecimalProps,\n NodeDefEntity,\n NodeDefEntityChildPosition,\n NodeDefEntityLayout,\n NodeDefEntityProps,\n NodeDefPrintOrientation,\n NodeDefFile,\n NodeDefFileProps,\n NodeDefFormHeader,\n NodeDefFormHeaderProps,\n NodeDefInteger,\n NodeDefPropsAdvanced,\n NodeDefTaxon,\n NodeDefTaxonProps,\n NodeDefText,\n NodeDefTextProps,\n NodeDefTextLayout,\n NodeDefTime,\n NodeDefTimeProps,\n NodeDefExpression,\n NodeDefMap,\n NodeDefService,\n NodeDefValidations,\n} from './nodeDef'\n\nexport {\n NodePointers,\n RecordCloner,\n RecordFactory,\n RecordFixer,\n Records,\n RECORD_STEP_DEFAULT,\n RecordExpressionEvaluator,\n RecordNodesUpdater,\n RecordPrettyPrinter,\n RecordUpdater,\n RecordUpdateResult,\n RecordValidator,\n RecordValidations,\n} from './record'\nexport type {\n AttributeValidatorParams,\n AttributesValidatorParams,\n NodeCreateParams,\n NodesUpdateParams,\n Record,\n Record as ArenaRecord,\n RecordExpressionContext,\n RecordExpressionEvaluationContext,\n RecordService,\n RecordUpdateOptions,\n RecordValidatorParams,\n SortedAttributesValidatorParams,\n} from './record'\n\nexport { ServiceRegistry, ServiceType } from './registry'\n\nexport { DEFAULT_SRS, DEFAULT_SRS_INDEX, SRSFactory } from './srs'\nexport type { SRS, SRSIndex } from './srs'\n\nexport {\n NodeDefsFixer,\n SurveyDocImages,\n SurveyDocImageFactory,\n SurveyDocPlace,\n SurveyDependencyType,\n SurveyFactory,\n SurveyFileFactory,\n SurveyFileType,\n SurveyRefDataFactory,\n SurveySecurityProp,\n Surveys,\n surveyDocImagePropKeys,\n surveySecurityDefaults,\n defaultCycle,\n} from './survey'\nexport type {\n Survey,\n SurveyCycle,\n SurveyDependency,\n SurveyDependencyGraph,\n SurveyDocImage,\n SurveyDocImageFactoryParams,\n SurveyDocImageProps,\n SurveyFile,\n SurveyFileFactoryParams,\n SurveyFileProps,\n SurveyProps,\n SurveyRefData,\n SurveySecurity,\n SurveyService,\n} from './survey'\n\nexport { Taxa, Taxonomies, TaxonomyFactory, TaxonFactory, TaxonGenerator, VernacularNameFactory } from './taxonomy'\nexport type {\n VernacularNameParams,\n TaxonomyFactoryParams,\n TaxonFactoryParams,\n Taxonomy,\n TaxonomyService,\n VernacularNameProps,\n VernacularName,\n TaxonProps,\n Taxon,\n TaxonomyProps,\n TaxonService,\n} from './taxonomy'\n\nexport { SurveyBuilder, SurveyObjectBuilders } from './tests/builder/surveyBuilder'\nexport { RecordBuilder, RecordNodeBuilders } from './tests/builder/recordBuilder'\n\nexport {\n Arrays,\n DateFormats,\n Dates,\n FileNames,\n FileProcessor,\n Numbers,\n Objects,\n Promises,\n Queue,\n RetryProcessor,\n Strings,\n UnitOfTime,\n UUIDs,\n Versions,\n} from './utils'\n\nexport type { FileProcessorConstructorArgs, ParsedVersion } from './utils'\n\nexport {\n FieldValidators,\n ValidationFactory,\n ValidationResultFactory,\n ValidationResults,\n Validations,\n ValidationSeverity,\n Validator,\n ValidatorErrorKeys,\n} from './validation'\nexport type { FieldValidator, Validation, ValidationFields, ValidationResult, ValidationCounts } from './validation'\n"]}
@@ -12,6 +12,27 @@ import { UUIDs } from '../utils';
12
12
  import { JobEventType } from './jobEvent';
13
13
  import { JobStatus } from './status';
14
14
  const PROGRESS_NOTIFICATION_THROTTLE_MILLIS = 1000;
15
+ /**
16
+ * Asynchronous task handler.
17
+ *
18
+ * Status workflow:
19
+ * - pending
20
+ * - running
21
+ * - (end)
22
+ * -- succeeded
23
+ * -- failed
24
+ * -- canceled
25
+ *
26
+ * Methods that can be overwritten by subclasses:
27
+ * - shouldExecute (in tx)
28
+ * - onStart (in tx)
29
+ * - execute (in tx)
30
+ * - beforeSuccess (in tx)
31
+ * - generateResult (in tx)
32
+ * - beforeEnd (in tx)
33
+ * - onEnd (out of tx)
34
+ * - getErrorInfo
35
+ */
15
36
  export class JobBase {
16
37
  constructor(context, innerJobs = []) {
17
38
  var _a;
@@ -24,14 +45,18 @@ export class JobBase {
24
45
  this.progressThrottleTimeoutId = undefined;
25
46
  this.progressThrottleLastRunTime = 0;
26
47
  this._stopOnInnerJobFailure = true;
48
+ // set as soon as cancel() is called (the canceled status is set only after beforeEnd has run)
27
49
  this.cancelRequested = false;
28
50
  this.beforeEndCalled = false;
51
+ // inner job events are handled in sequence; executeJobs waits for them before going on
29
52
  this.innerJobEventsQueue = Promise.resolve();
30
53
  this.context = Object.assign({}, context);
31
54
  this.innerJobs = innerJobs;
32
55
  this.uuid = UUIDs.v4();
33
56
  this.type = (_a = this.context.type) !== null && _a !== void 0 ? _a : this.constructor.name;
34
57
  this.total = innerJobs.length > 0 ? innerJobs.length : 1;
58
+ // Created last, so that createLogger() overrides can safely build the logger name out of
59
+ // the job identity (e.g. arena's `Job <ClassName> (<uuid>)` log correlation id).
35
60
  this.logger = this.createLogger();
36
61
  }
37
62
  get processed() {
@@ -72,6 +97,10 @@ export class JobBase {
72
97
  delete this.context[propName];
73
98
  });
74
99
  }
100
+ /**
101
+ * Registers the listener notified of job events (status changes and progress).
102
+ * Only one listener can be registered at a time; registering a new one replaces the previous one.
103
+ */
75
104
  onEvent(listener) {
76
105
  this.eventListener = listener;
77
106
  return this;
@@ -118,10 +147,13 @@ export class JobBase {
118
147
  this.cancelRequested = true;
119
148
  const currentInnerJob = this.getCurrentInnerJob();
120
149
  if (currentInnerJob === null || currentInnerJob === void 0 ? void 0 : currentInnerJob.isRunning()) {
150
+ // the parent job status will be set to canceled when handling the canceled event of the inner job
121
151
  yield currentInnerJob.cancel({ canceledByAdmin });
122
152
  return;
123
153
  }
154
+ // no inner job running (job without inner jobs, or between two inner jobs)
124
155
  this.canceledByAdmin = canceledByAdmin;
156
+ // release the resources (temp files/directories, streams) allocated before the cancellation
125
157
  yield this.runBeforeEnd();
126
158
  yield this.setStatus(JobStatus.canceled);
127
159
  });
@@ -129,6 +161,9 @@ export class JobBase {
129
161
  isCancelRequestedOrNotRunning() {
130
162
  return this.cancelRequested || !this.isRunning();
131
163
  }
164
+ /**
165
+ * Runs beforeEnd only once (it can be called by cancel() and when the job execution ends).
166
+ */
132
167
  runBeforeEnd() {
133
168
  return __awaiter(this, void 0, void 0, function* () {
134
169
  if (this.beforeEndCalled)
@@ -186,6 +221,7 @@ export class JobBase {
186
221
  }
187
222
  }
188
223
  finally {
224
+ // runs only if not already run by cancel()
189
225
  yield this.runBeforeEnd();
190
226
  this.context.tx = undefined;
191
227
  }
@@ -194,6 +230,9 @@ export class JobBase {
194
230
  }
195
231
  });
196
232
  }
233
+ /**
234
+ * Generates a plain JSON-serializable representation of the job, including its inner jobs.
235
+ */
197
236
  toJSON() {
198
237
  const { errors, processed, result, status, total, type, userUuid, uuid } = this;
199
238
  return {
@@ -230,13 +269,20 @@ export class JobBase {
230
269
  }
231
270
  currentInnerJob.context = this.context;
232
271
  currentInnerJob.onEvent((event) => {
272
+ // handle the inner job events in sequence; errors are logged (they would be unhandled rejections otherwise)
233
273
  this.innerJobEventsQueue = this.innerJobEventsQueue
234
274
  .then(() => this.onInnerJobEvent(event))
235
275
  .catch((error) => { var _a; return this.logError((_a = error === null || error === void 0 ? void 0 : error.stack) !== null && _a !== void 0 ? _a : error); });
236
276
  });
277
+ // The inner job shares this very context object, and its own start()/executeInTransaction()
278
+ // clear `context.tx` when they terminate: without saving and restoring it here, the first
279
+ // inner job would wipe the parent's transaction handle, leaving every following inner job
280
+ // (and the parent's own beforeSuccess()/beforeEnd()) running outside of the transaction.
281
+ // start() never throws (it swallows/records errors internally), so a plain restore is enough.
237
282
  const parentTx = this.context.tx;
238
283
  yield currentInnerJob.start(parentTx);
239
284
  this.context.tx = parentTx;
285
+ // the inner job events (e.g. canceled, failed) update the status of this job
240
286
  yield this.innerJobEventsQueue;
241
287
  if (this.cancelRequested || this.isCanceled() || currentInnerJob.isCanceled()) {
242
288
  break;
@@ -251,10 +297,24 @@ export class JobBase {
251
297
  this.logDebug(`- ${this.processed} inner jobs processed successfully`);
252
298
  });
253
299
  }
300
+ /**
301
+ * Runs the job's own work when it has no inner jobs. Default implementation is a no-op, so
302
+ * subclasses that only supply inner jobs (and never override this) don't need to. It also means
303
+ * a subclass can safely call `super.execute()` defensively without knowing whether any ancestor
304
+ * overrides it - if this were `abstract` instead, TypeScript would compile away any runtime
305
+ * property for it entirely, so `super.execute()` would throw the moment no ancestor overrides it
306
+ * (confirmed in production: a subclass whose immediate parent didn't override `execute()` crashed
307
+ * with "(intermediate value).execute is not a function" the instant it called `super.execute()`).
308
+ */
254
309
  execute() {
255
310
  return __awaiter(this, void 0, void 0, function* () {
311
+ // to be extended by subclasses
256
312
  });
257
313
  }
314
+ /**
315
+ * Determines whether the job should actually run.
316
+ * When it returns false, "execute" (or the inner jobs) will be skipped, but the job will still succeed.
317
+ */
258
318
  shouldExecute() {
259
319
  return Promise.resolve(true);
260
320
  }
@@ -277,6 +337,9 @@ export class JobBase {
277
337
  this.notifyEvent(event);
278
338
  });
279
339
  }
340
+ /**
341
+ * Inner job event handler.
342
+ */
280
343
  onInnerJobEvent(event) {
281
344
  return __awaiter(this, void 0, void 0, function* () {
282
345
  var _a, _b, _c, _d;
@@ -286,6 +349,7 @@ export class JobBase {
286
349
  return this.setStatus(status);
287
350
  }
288
351
  if (status === JobStatus.failed) {
352
+ // report the errors of the failed inner job in the failed event (and in the errors) of this job
289
353
  Object.assign(this.errors, (_d = (_c = this.getCurrentInnerJob()) === null || _c === void 0 ? void 0 : _c.errors) !== null && _d !== void 0 ? _d : {});
290
354
  return this.setStatus(status);
291
355
  }
@@ -301,20 +365,39 @@ export class JobBase {
301
365
  this.logDebug(`Unknown inner job status: ${status}`);
302
366
  });
303
367
  }
368
+ /**
369
+ * Called when the job just has been started.
370
+ */
304
371
  onStart() {
305
372
  return __awaiter(this, void 0, void 0, function* () {
306
373
  this.startTime = new Date();
307
374
  yield this.setStatus(JobStatus.running);
308
375
  });
309
376
  }
377
+ /**
378
+ * Called before beforeEnd only if the status will change to 'success'.
379
+ * Default implementation stores the value returned by generateResult() via setResult().
380
+ * It runs INSIDE the current db transaction.
381
+ */
310
382
  beforeSuccess() {
311
383
  return __awaiter(this, void 0, void 0, function* () {
312
384
  this.setResult(yield this.generateResult());
313
385
  });
314
386
  }
387
+ /**
388
+ * Computes the value beforeSuccess() will store as this job's result.
389
+ * Default implementation returns whatever is already in `this.result`
390
+ * (e.g. accumulated via earlier setResult() calls during execute()).
391
+ */
315
392
  generateResult() {
316
393
  return Promise.resolve(this.result);
317
394
  }
395
+ /**
396
+ * Updates this job's result. When both the current and incoming values are plain objects,
397
+ * they are merged (Object.assign); otherwise the incoming value replaces the current one.
398
+ * This keeps it safe for subclasses whose result is a primitive (e.g. a plain number) as
399
+ * well as ones that build an object result incrementally across multiple setResult() calls.
400
+ */
318
401
  setResult(result) {
319
402
  if (result && typeof result === 'object' && this.result && typeof this.result === 'object') {
320
403
  Object.assign(this.result, result);
@@ -323,10 +406,18 @@ export class JobBase {
323
406
  this.result = result;
324
407
  }
325
408
  }
409
+ /**
410
+ * Called before onEnd. Useful for flushing resources used by the job before it terminates completely.
411
+ * It runs INSIDE the current db transaction.
412
+ */
326
413
  beforeEnd() {
327
414
  this.logDebug('Cleanup');
328
415
  return Promise.resolve();
329
416
  }
417
+ /**
418
+ * Called when the job status changes to success, failed or canceled
419
+ * (it runs OUTSIDE of the current db transaction)
420
+ */
330
421
  onEnd() {
331
422
  this.endTime = new Date();
332
423
  this.cancelNotifyProgress();
@@ -337,6 +428,7 @@ export class JobBase {
337
428
  this.errors[key] = error;
338
429
  }
339
430
  throwError(errorKey, params) {
431
+ // SystemError: getErrorInfo will report the translatable key instead of a generic error
340
432
  throw new SystemError(errorKey, params);
341
433
  }
342
434
  getErrorInfo(error) {
@@ -388,6 +480,10 @@ export class JobBase {
388
480
  return 0;
389
481
  return ((_a = this.endTime) !== null && _a !== void 0 ? _a : new Date()).getTime() - this.startTime.getTime();
390
482
  }
483
+ /**
484
+ * Notifies a progress event to the registered listener, throttled so that fast-changing
485
+ * progress does not flood consumers (e.g. web socket clients).
486
+ */
391
487
  notifyProgress() {
392
488
  const run = () => {
393
489
  this.progressThrottleTimeoutId = undefined;
@@ -409,6 +505,9 @@ export class JobBase {
409
505
  this.progressThrottleTimeoutId = setTimeout(run, PROGRESS_NOTIFICATION_THROTTLE_MILLIS - elapsed);
410
506
  }
411
507
  }
508
+ /**
509
+ * Cancels any pending throttled progress notification and resets the throttle state.
510
+ */
412
511
  cancelNotifyProgress() {
413
512
  if (this.progressThrottleTimeoutId) {
414
513
  clearTimeout(this.progressThrottleTimeoutId);