@openforis/arena-core 2.3.36 → 2.3.39

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (383) hide show
  1. package/dist/auth/authGroup.js.map +1 -1
  2. package/dist/auth/authGroups.d.ts +21 -11
  3. package/dist/auth/authGroups.js.map +1 -1
  4. package/dist/auth/authorizer.d.ts +64 -38
  5. package/dist/auth/authorizer.js.map +1 -1
  6. package/dist/auth/permission.js.map +1 -1
  7. package/dist/auth/user.js.map +1 -1
  8. package/dist/auth/users.d.ts +19 -9
  9. package/dist/auth/users.js +3 -2
  10. package/dist/auth/users.js.map +1 -1
  11. package/dist/category/categories.d.ts +7 -3
  12. package/dist/category/categories.js.map +1 -1
  13. package/dist/category/categoryImportSummary.js.map +1 -1
  14. package/dist/category/categoryItemGenerator.d.ts +6 -4
  15. package/dist/category/categoryItems.d.ts +9 -4
  16. package/dist/category/categoryItems.js +2 -1
  17. package/dist/category/categoryItems.js.map +1 -1
  18. package/dist/category/factory.js.map +1 -1
  19. package/dist/chain/chain.js.map +1 -1
  20. package/dist/common/index.js.map +1 -1
  21. package/dist/dataExport/FlatDataExportModel.js.map +1 -1
  22. package/dist/dataExport/FlatDataExportOptions.js.map +1 -1
  23. package/dist/dataExport/FlatDataFiles.d.ts +7 -5
  24. package/dist/dataExport/UniqueFileNamesGenerator.js.map +1 -1
  25. package/dist/dataQuery/dataQuery.js.map +1 -1
  26. package/dist/dataQuery/dataQuerySummaries.d.ts +28 -15
  27. package/dist/dataQuery/dataQuerySummaries.js +3 -3
  28. package/dist/dataQuery/dataQuerySummaries.js.map +1 -1
  29. package/dist/error/SystemError.js.map +1 -1
  30. package/dist/esm/auth/authGroups.js.map +1 -1
  31. package/dist/esm/auth/users.js +3 -2
  32. package/dist/esm/auth/users.js.map +1 -1
  33. package/dist/esm/category/categories.js.map +1 -1
  34. package/dist/esm/category/categoryItems.js +2 -1
  35. package/dist/esm/category/categoryItems.js.map +1 -1
  36. package/dist/esm/dataExport/FlatDataExportModel.js.map +1 -1
  37. package/dist/esm/dataQuery/dataQuerySummaries.js +3 -3
  38. package/dist/esm/dataQuery/dataQuerySummaries.js.map +1 -1
  39. package/dist/esm/expression/javascript/evaluator.js.map +1 -1
  40. package/dist/esm/extraProp/extraProps.js.map +1 -1
  41. package/dist/esm/geo/pointFactory.js.map +1 -1
  42. package/dist/esm/geo/points/bearing.js +1 -1
  43. package/dist/esm/geo/points/bearing.js.map +1 -1
  44. package/dist/esm/geo/points/distance.js +1 -1
  45. package/dist/esm/geo/points/distance.js.map +1 -1
  46. package/dist/esm/geo/points/isValid.js.map +1 -1
  47. package/dist/esm/geo/points/transform.js.map +1 -1
  48. package/dist/esm/job/JobBase.js +4 -3
  49. package/dist/esm/job/JobBase.js.map +1 -1
  50. package/dist/esm/message/messages.js +9 -8
  51. package/dist/esm/message/messages.js.map +1 -1
  52. package/dist/esm/node/factory.js +2 -1
  53. package/dist/esm/node/factory.js.map +1 -1
  54. package/dist/esm/node/nodeValueFormatter.js +2 -1
  55. package/dist/esm/node/nodeValueFormatter.js.map +1 -1
  56. package/dist/esm/node/nodeValues.js +3 -2
  57. package/dist/esm/node/nodeValues.js.map +1 -1
  58. package/dist/esm/node/nodes.js +4 -4
  59. package/dist/esm/node/nodes.js.map +1 -1
  60. package/dist/esm/nodeDef/nodeDefs.js +10 -10
  61. package/dist/esm/nodeDef/nodeDefs.js.map +1 -1
  62. package/dist/esm/nodeDefExpressionEvaluator/evaluator.js.map +1 -1
  63. package/dist/esm/nodeDefExpressionEvaluator/functions.js.map +1 -1
  64. package/dist/esm/nodeDefExpressionEvaluator/node/identifier.js +3 -2
  65. package/dist/esm/nodeDefExpressionEvaluator/node/identifier.js.map +1 -1
  66. package/dist/esm/nodeDefExpressionEvaluator/node/member.js.map +1 -1
  67. package/dist/esm/nodeDefExpressionEvaluator/validator.js.map +1 -1
  68. package/dist/esm/record/_records/nodeDefSelfReferences.js.map +1 -1
  69. package/dist/esm/record/_records/recordGetters.js.map +1 -1
  70. package/dist/esm/record/_records/recordNodesIndexReader.js +6 -4
  71. package/dist/esm/record/_records/recordNodesIndexReader.js.map +1 -1
  72. package/dist/esm/record/_records/recordNodesIndexUpdater.js +10 -7
  73. package/dist/esm/record/_records/recordNodesIndexUpdater.js.map +1 -1
  74. package/dist/esm/record/_records/recordPagesValidation.js.map +1 -1
  75. package/dist/esm/record/_records/recordUpdater.js.map +1 -1
  76. package/dist/esm/record/factory.js +2 -1
  77. package/dist/esm/record/factory.js.map +1 -1
  78. package/dist/esm/record/recordCloner.js +2 -1
  79. package/dist/esm/record/recordCloner.js.map +1 -1
  80. package/dist/esm/record/recordExpressionEvaluator/functions.js.map +1 -1
  81. package/dist/esm/record/recordExpressionEvaluator/node/identifier/identifier.js +3 -2
  82. package/dist/esm/record/recordExpressionEvaluator/node/identifier/identifier.js.map +1 -1
  83. package/dist/esm/record/recordExpressionEvaluator/recordExpressionEvaluator.js +4 -7
  84. package/dist/esm/record/recordExpressionEvaluator/recordExpressionEvaluator.js.map +1 -1
  85. package/dist/esm/record/recordNodesUpdater/recordNodeDependentsApplicableUpdater.js.map +1 -1
  86. package/dist/esm/record/recordNodesUpdater/recordNodeDependentsBooleanUpdater.js.map +1 -1
  87. package/dist/esm/record/recordNodesUpdater/recordNodeDependentsCountUpdater.js.map +1 -1
  88. package/dist/esm/record/recordNodesUpdater/recordNodesDeleter.js.map +1 -1
  89. package/dist/esm/record/recordNodesUpdater/recordNodesUpdater.js.map +1 -1
  90. package/dist/esm/record/recordNodesUpdater/recordUpdateResult.js.map +1 -1
  91. package/dist/esm/record/recordUpdater.js.map +1 -1
  92. package/dist/esm/record/recordValidator/attributeTypeValidator.js +2 -2
  93. package/dist/esm/record/recordValidator/attributeTypeValidator.js.map +1 -1
  94. package/dist/esm/record/recordValidator/attributeUniqueValidator.js.map +1 -1
  95. package/dist/esm/record/recordValidator/attributeValidator.js.map +1 -1
  96. package/dist/esm/record/recordValidator/recordValidator.js.map +1 -1
  97. package/dist/esm/survey/nodeDefsFixer.js.map +1 -1
  98. package/dist/esm/survey/refData/factory.js +3 -2
  99. package/dist/esm/survey/refData/factory.js.map +1 -1
  100. package/dist/esm/survey/surveyDocImageFactory.js.map +1 -1
  101. package/dist/esm/survey/surveyDocImages.js.map +1 -1
  102. package/dist/esm/survey/surveyFileFactory.js.map +1 -1
  103. package/dist/esm/survey/surveys/_nodeDefs/nodeDefsIndex.js.map +1 -1
  104. package/dist/esm/survey/surveys/_nodeDefs/nodeDefsReader.js.map +1 -1
  105. package/dist/esm/survey/surveys/dependencies.js +2 -1
  106. package/dist/esm/survey/surveys/dependencies.js.map +1 -1
  107. package/dist/esm/survey/surveys/nodeDefs.js +4 -2
  108. package/dist/esm/survey/surveys/nodeDefs.js.map +1 -1
  109. package/dist/esm/survey/surveys/refsData.js +2 -1
  110. package/dist/esm/survey/surveys/refsData.js.map +1 -1
  111. package/dist/esm/survey/surveys/surveyGettersSecurity.js +1 -4
  112. package/dist/esm/survey/surveys/surveyGettersSecurity.js.map +1 -1
  113. package/dist/esm/survey/surveys/surveysGetters.js +5 -7
  114. package/dist/esm/survey/surveys/surveysGetters.js.map +1 -1
  115. package/dist/esm/taxonomy/taxa.js.map +1 -1
  116. package/dist/esm/taxonomy/taxonomies.js.map +1 -1
  117. package/dist/esm/tests/builder/recordBuilder/attributeBuilder.js.map +1 -1
  118. package/dist/esm/tests/builder/recordBuilder/index.js.map +1 -1
  119. package/dist/esm/tests/builder/recordBuilder/nodeBuilder.js.map +1 -1
  120. package/dist/esm/tests/builder/surveyBuilder/categoryItemBuilder.js.map +1 -1
  121. package/dist/esm/tests/builder/surveyBuilder/nodeDefAttributeBuilder.js.map +1 -1
  122. package/dist/esm/tests/builder/surveyBuilder/nodeDefBuilder.js.map +1 -1
  123. package/dist/esm/utils/_objects/camelize.js.map +1 -1
  124. package/dist/esm/utils/arrays.js.map +1 -1
  125. package/dist/esm/utils/dates.js.map +1 -1
  126. package/dist/esm/utils/fileNames.js.map +1 -1
  127. package/dist/esm/utils/fileProcessor.js +2 -1
  128. package/dist/esm/utils/fileProcessor.js.map +1 -1
  129. package/dist/esm/utils/numbers.js.map +1 -1
  130. package/dist/esm/utils/queue.js.map +1 -1
  131. package/dist/esm/utils/versions.js.map +1 -1
  132. package/dist/esm/validation/factory.js.map +1 -1
  133. package/dist/esm/validation/fieldValidators/numeric.js.map +1 -1
  134. package/dist/esm/validation/fieldValidators/numericPositive.js.map +1 -1
  135. package/dist/esm/validation/validationResults.js +1 -1
  136. package/dist/esm/validation/validationResults.js.map +1 -1
  137. package/dist/esm/validation/validations.js +2 -2
  138. package/dist/esm/validation/validations.js.map +1 -1
  139. package/dist/esm/validation/validator.js.map +1 -1
  140. package/dist/expression/javascript/evaluator.js.map +1 -1
  141. package/dist/expression/javascript/global.js.map +1 -1
  142. package/dist/expression/javascript/node/array.js.map +1 -1
  143. package/dist/expression/javascript/node/binary.js.map +1 -1
  144. package/dist/expression/javascript/node/call.js.map +1 -1
  145. package/dist/expression/javascript/node/compound.js.map +1 -1
  146. package/dist/expression/javascript/node/conditional.js.map +1 -1
  147. package/dist/expression/javascript/node/identifier.js.map +1 -1
  148. package/dist/expression/javascript/node/literal.js.map +1 -1
  149. package/dist/expression/javascript/node/member.js.map +1 -1
  150. package/dist/expression/javascript/node/sequence.js.map +1 -1
  151. package/dist/expression/javascript/node/this.js.map +1 -1
  152. package/dist/expression/javascript/node/unary.js.map +1 -1
  153. package/dist/expression/javascript/parser/jsep.js.map +1 -1
  154. package/dist/expression/javascript/parser/parser.js.map +1 -1
  155. package/dist/expression/node.js.map +1 -1
  156. package/dist/expression/variable.js.map +1 -1
  157. package/dist/extraProp/extraProp.js.map +1 -1
  158. package/dist/extraProp/extraProps.d.ts +9 -6
  159. package/dist/extraProp/extraProps.js.map +1 -1
  160. package/dist/extraProp/extraPropsDataGenerator.d.ts +7 -5
  161. package/dist/geo/pointFactory.js.map +1 -1
  162. package/dist/geo/points/bearing.js +5 -2
  163. package/dist/geo/points/bearing.js.map +1 -1
  164. package/dist/geo/points/distance.js +5 -2
  165. package/dist/geo/points/distance.js.map +1 -1
  166. package/dist/geo/points/equals.js.map +1 -1
  167. package/dist/geo/points/getSrs.js.map +1 -1
  168. package/dist/geo/points/index.d.ts +18 -14
  169. package/dist/geo/points/isFilled.js.map +1 -1
  170. package/dist/geo/points/isValid.js.map +1 -1
  171. package/dist/geo/points/parse.js.map +1 -1
  172. package/dist/geo/points/pointAtDistance.js.map +1 -1
  173. package/dist/geo/points/toLatLong.js.map +1 -1
  174. package/dist/geo/points/toString.js.map +1 -1
  175. package/dist/geo/points/transform.js.map +1 -1
  176. package/dist/job/JobBase.js +4 -3
  177. package/dist/job/JobBase.js.map +1 -1
  178. package/dist/job/jobEvent.js.map +1 -1
  179. package/dist/job/status.js.map +1 -1
  180. package/dist/language/languageCode.js.map +1 -1
  181. package/dist/language/languages.js.map +1 -1
  182. package/dist/message/message.js.map +1 -1
  183. package/dist/message/messages.d.ts +54 -28
  184. package/dist/message/messages.js +9 -8
  185. package/dist/message/messages.js.map +1 -1
  186. package/dist/node/factory.js +2 -1
  187. package/dist/node/factory.js.map +1 -1
  188. package/dist/node/node.js.map +1 -1
  189. package/dist/node/nodeValueFormatter.d.ts +2 -1
  190. package/dist/node/nodeValueFormatter.js +2 -1
  191. package/dist/node/nodeValueFormatter.js.map +1 -1
  192. package/dist/node/nodeValueProps.js.map +1 -1
  193. package/dist/node/nodeValues.d.ts +62 -41
  194. package/dist/node/nodeValues.js +3 -2
  195. package/dist/node/nodeValues.js.map +1 -1
  196. package/dist/node/nodes.d.ts +112 -86
  197. package/dist/node/nodes.js +4 -4
  198. package/dist/node/nodes.js.map +1 -1
  199. package/dist/nodeDef/nodeDef.js.map +1 -1
  200. package/dist/nodeDef/nodeDefs.d.ts +173 -86
  201. package/dist/nodeDef/nodeDefs.js +10 -10
  202. package/dist/nodeDef/nodeDefs.js.map +1 -1
  203. package/dist/nodeDef/types/entity.js.map +1 -1
  204. package/dist/nodeDef/types/file.js.map +1 -1
  205. package/dist/nodeDef/types/formHeader.js.map +1 -1
  206. package/dist/nodeDef/types/text.js.map +1 -1
  207. package/dist/nodeDefExpressionEvaluator/evaluator.js.map +1 -1
  208. package/dist/nodeDefExpressionEvaluator/functions.js.map +1 -1
  209. package/dist/nodeDefExpressionEvaluator/node/identifier.js +3 -2
  210. package/dist/nodeDefExpressionEvaluator/node/identifier.js.map +1 -1
  211. package/dist/nodeDefExpressionEvaluator/node/member.js.map +1 -1
  212. package/dist/nodeDefExpressionEvaluator/node/nodeDefExpressionNativeProperties.d.ts +11 -8
  213. package/dist/nodeDefExpressionEvaluator/node/thisEvaluator.d.ts +1 -1
  214. package/dist/nodeDefExpressionEvaluator/node/thisEvaluator.js.map +1 -1
  215. package/dist/nodeDefExpressionEvaluator/validator.js.map +1 -1
  216. package/dist/record/_records/nodeDefSelfReferences.d.ts +12 -4
  217. package/dist/record/_records/nodeDefSelfReferences.js.map +1 -1
  218. package/dist/record/_records/recordCompletion.js.map +1 -1
  219. package/dist/record/_records/recordGetters.js.map +1 -1
  220. package/dist/record/_records/recordNodesIndexReader.d.ts +14 -8
  221. package/dist/record/_records/recordNodesIndexReader.js +6 -4
  222. package/dist/record/_records/recordNodesIndexReader.js.map +1 -1
  223. package/dist/record/_records/recordNodesIndexUpdater.d.ts +22 -12
  224. package/dist/record/_records/recordNodesIndexUpdater.js +10 -7
  225. package/dist/record/_records/recordNodesIndexUpdater.js.map +1 -1
  226. package/dist/record/_records/recordPagesValidation.js.map +1 -1
  227. package/dist/record/_records/recordUpdater.js.map +1 -1
  228. package/dist/record/_records/recordUtils.js.map +1 -1
  229. package/dist/record/factory.js +2 -1
  230. package/dist/record/factory.js.map +1 -1
  231. package/dist/record/nodePointers.d.ts +13 -10
  232. package/dist/record/recordCloner.d.ts +11 -10
  233. package/dist/record/recordCloner.js +2 -1
  234. package/dist/record/recordCloner.js.map +1 -1
  235. package/dist/record/recordExpressionEvaluator/functions.js.map +1 -1
  236. package/dist/record/recordExpressionEvaluator/node/identifier/identifier.js +3 -2
  237. package/dist/record/recordExpressionEvaluator/node/identifier/identifier.js.map +1 -1
  238. package/dist/record/recordExpressionEvaluator/node/identifier/nodesFinder.d.ts +8 -6
  239. package/dist/record/recordExpressionEvaluator/node/thisEvaluator.js.map +1 -1
  240. package/dist/record/recordExpressionEvaluator/nodeValueExtractor.d.ts +7 -5
  241. package/dist/record/recordExpressionEvaluator/recordExpressionEvaluator.js +4 -7
  242. package/dist/record/recordExpressionEvaluator/recordExpressionEvaluator.js.map +1 -1
  243. package/dist/record/recordFixer.d.ts +19 -10
  244. package/dist/record/recordNodesUpdater/index.d.ts +8 -7
  245. package/dist/record/recordNodesUpdater/recordEnumeratingItemsExpressionEvaluator.js.map +1 -1
  246. package/dist/record/recordNodesUpdater/recordExpressionValueConverter.d.ts +2 -1
  247. package/dist/record/recordNodesUpdater/recordNodeDependentsApplicableUpdater.js.map +1 -1
  248. package/dist/record/recordNodesUpdater/recordNodeDependentsBooleanUpdater.js.map +1 -1
  249. package/dist/record/recordNodesUpdater/recordNodeDependentsCodeAttributesUpdater.js.map +1 -1
  250. package/dist/record/recordNodesUpdater/recordNodeDependentsCountUpdater.js.map +1 -1
  251. package/dist/record/recordNodesUpdater/recordNodeDependentsDefaultValuesUpdater.js.map +1 -1
  252. package/dist/record/recordNodesUpdater/recordNodeDependentsEditableUpdater.js.map +1 -1
  253. package/dist/record/recordNodesUpdater/recordNodeDependentsEnumeratedEntitiesUpdater.js.map +1 -1
  254. package/dist/record/recordNodesUpdater/recordNodeDependentsEnumeratingItemsUpdater.js.map +1 -1
  255. package/dist/record/recordNodesUpdater/recordNodeDependentsFileNamesEvaluator.js.map +1 -1
  256. package/dist/record/recordNodesUpdater/recordNodeDependentsVisibleUpdater.js.map +1 -1
  257. package/dist/record/recordNodesUpdater/recordNodesCreator.js.map +1 -1
  258. package/dist/record/recordNodesUpdater/recordNodesDeleter.js.map +1 -1
  259. package/dist/record/recordNodesUpdater/recordNodesDependentsUpdaterCommons.js.map +1 -1
  260. package/dist/record/recordNodesUpdater/recordNodesUpdater.js.map +1 -1
  261. package/dist/record/recordNodesUpdater/recordUpdateResult.js.map +1 -1
  262. package/dist/record/recordPrettyPrinter.d.ts +18 -15
  263. package/dist/record/recordPrettyPrinter.js.map +1 -1
  264. package/dist/record/recordStep.d.ts +5 -2
  265. package/dist/record/recordStep.js.map +1 -1
  266. package/dist/record/recordUpdater.d.ts +22 -15
  267. package/dist/record/recordUpdater.js.map +1 -1
  268. package/dist/record/recordValidations.d.ts +21 -14
  269. package/dist/record/recordValidator/attributeKeyValidator.d.ts +8 -6
  270. package/dist/record/recordValidator/attributeKeyValidator.js.map +1 -1
  271. package/dist/record/recordValidator/attributeTypeValidator.d.ts +2 -1
  272. package/dist/record/recordValidator/attributeTypeValidator.js +2 -2
  273. package/dist/record/recordValidator/attributeTypeValidator.js.map +1 -1
  274. package/dist/record/recordValidator/attributeUniqueValidator.d.ts +1 -5
  275. package/dist/record/recordValidator/attributeUniqueValidator.js.map +1 -1
  276. package/dist/record/recordValidator/attributeValidator.d.ts +3 -1
  277. package/dist/record/recordValidator/attributeValidator.js.map +1 -1
  278. package/dist/record/recordValidator/countVaildator.d.ts +21 -17
  279. package/dist/record/recordValidator/index.d.ts +4 -3
  280. package/dist/record/recordValidator/recordValidator.js.map +1 -1
  281. package/dist/record/records.d.ts +62 -220
  282. package/dist/registry/serviceRegistry.js.map +1 -1
  283. package/dist/registry/serviceType.js.map +1 -1
  284. package/dist/srs/srs.js.map +1 -1
  285. package/dist/survey/nodeDefsFixer.d.ts +5 -4
  286. package/dist/survey/nodeDefsFixer.js.map +1 -1
  287. package/dist/survey/refData/factory.js +3 -2
  288. package/dist/survey/refData/factory.js.map +1 -1
  289. package/dist/survey/survey.d.ts +2 -2
  290. package/dist/survey/survey.js.map +1 -1
  291. package/dist/survey/surveyDocImageFactory.js.map +1 -1
  292. package/dist/survey/surveyDocImages.d.ts +11 -5
  293. package/dist/survey/surveyDocImages.js.map +1 -1
  294. package/dist/survey/surveyFileFactory.js.map +1 -1
  295. package/dist/survey/surveys/_nodeDefs/nodeDefsIndex.js.map +1 -1
  296. package/dist/survey/surveys/_nodeDefs/nodeDefsReader.js.map +1 -1
  297. package/dist/survey/surveys/dependencies.js +2 -1
  298. package/dist/survey/surveys/dependencies.js.map +1 -1
  299. package/dist/survey/surveys/index.d.ts +82 -255
  300. package/dist/survey/surveys/nodeDefs.d.ts +4 -6
  301. package/dist/survey/surveys/nodeDefs.js +4 -2
  302. package/dist/survey/surveys/nodeDefs.js.map +1 -1
  303. package/dist/survey/surveys/refsData.js +2 -1
  304. package/dist/survey/surveys/refsData.js.map +1 -1
  305. package/dist/survey/surveys/surveyGettersSecurity.js +1 -4
  306. package/dist/survey/surveys/surveyGettersSecurity.js.map +1 -1
  307. package/dist/survey/surveys/surveysGetters.js +5 -7
  308. package/dist/survey/surveys/surveysGetters.js.map +1 -1
  309. package/dist/survey/surveys/surveysUtils.js.map +1 -1
  310. package/dist/taxonomy/taxa.d.ts +17 -11
  311. package/dist/taxonomy/taxa.js.map +1 -1
  312. package/dist/taxonomy/taxonGenerator.d.ts +6 -4
  313. package/dist/taxonomy/taxonomies.d.ts +7 -3
  314. package/dist/taxonomy/taxonomies.js.map +1 -1
  315. package/dist/tests/builder/recordBuilder/attributeBuilder.js.map +1 -1
  316. package/dist/tests/builder/recordBuilder/entityBuilder.js.map +1 -1
  317. package/dist/tests/builder/recordBuilder/index.d.ts +4 -2
  318. package/dist/tests/builder/recordBuilder/index.js.map +1 -1
  319. package/dist/tests/builder/recordBuilder/nodeBuilder.js.map +1 -1
  320. package/dist/tests/builder/recordBuilder/recordBuilder.js.map +1 -1
  321. package/dist/tests/builder/surveyBuilder/categoryBuilder.js.map +1 -1
  322. package/dist/tests/builder/surveyBuilder/categoryItemBuilder.js.map +1 -1
  323. package/dist/tests/builder/surveyBuilder/index.d.ts +30 -15
  324. package/dist/tests/builder/surveyBuilder/nodeDefAttributeBuilder.js.map +1 -1
  325. package/dist/tests/builder/surveyBuilder/nodeDefBuilder.js.map +1 -1
  326. package/dist/tests/builder/surveyBuilder/nodeDefCodeBuilder.js.map +1 -1
  327. package/dist/tests/builder/surveyBuilder/nodeDefEntityBuilder.js.map +1 -1
  328. package/dist/tests/builder/surveyBuilder/nodeDefTaxonBuilder.js.map +1 -1
  329. package/dist/tests/builder/surveyBuilder/surveyBuilder.js.map +1 -1
  330. package/dist/tests/builder/surveyBuilder/taxonBuilder.js.map +1 -1
  331. package/dist/tests/builder/surveyBuilder/taxonomyBuilder.js.map +1 -1
  332. package/dist/utils/_objects/assoc.js.map +1 -1
  333. package/dist/utils/_objects/assocPath.js.map +1 -1
  334. package/dist/utils/_objects/camelize.js.map +1 -1
  335. package/dist/utils/_objects/deepMerge.js.map +1 -1
  336. package/dist/utils/_objects/deleteEmptyProps.js.map +1 -1
  337. package/dist/utils/_objects/difference.js.map +1 -1
  338. package/dist/utils/_objects/dissoc.js.map +1 -1
  339. package/dist/utils/_objects/dissocPath.js.map +1 -1
  340. package/dist/utils/_objects/dissocPathIfEmpty.js.map +1 -1
  341. package/dist/utils/_objects/index.d.ts +34 -48
  342. package/dist/utils/_objects/isEmpty.js.map +1 -1
  343. package/dist/utils/_objects/isNil.js.map +1 -1
  344. package/dist/utils/_objects/isNotEmpty.js.map +1 -1
  345. package/dist/utils/_objects/parse.js.map +1 -1
  346. package/dist/utils/_objects/path.js.map +1 -1
  347. package/dist/utils/_objects/propertyOf.js.map +1 -1
  348. package/dist/utils/_objects/setInPath.js.map +1 -1
  349. package/dist/utils/_objects/stringify.js.map +1 -1
  350. package/dist/utils/arrays.d.ts +25 -15
  351. package/dist/utils/arrays.js.map +1 -1
  352. package/dist/utils/dates.d.ts +101 -48
  353. package/dist/utils/dates.js.map +1 -1
  354. package/dist/utils/fileNames.d.ts +7 -3
  355. package/dist/utils/fileNames.js.map +1 -1
  356. package/dist/utils/fileProcessor.js +2 -1
  357. package/dist/utils/fileProcessor.js.map +1 -1
  358. package/dist/utils/numbers.d.ts +42 -13
  359. package/dist/utils/numbers.js.map +1 -1
  360. package/dist/utils/promises.d.ts +12 -1
  361. package/dist/utils/queue.js.map +1 -1
  362. package/dist/utils/retryProcessor.js.map +1 -1
  363. package/dist/utils/strings.d.ts +22 -11
  364. package/dist/utils/uuids.d.ts +3 -1
  365. package/dist/utils/versions.d.ts +19 -7
  366. package/dist/utils/versions.js.map +1 -1
  367. package/dist/validation/factory.js.map +1 -1
  368. package/dist/validation/fieldValidators/email.js.map +1 -1
  369. package/dist/validation/fieldValidators/index.d.ts +12 -6
  370. package/dist/validation/fieldValidators/name.js.map +1 -1
  371. package/dist/validation/fieldValidators/notKeyword.js.map +1 -1
  372. package/dist/validation/fieldValidators/numeric.js.map +1 -1
  373. package/dist/validation/fieldValidators/numericPositive.js.map +1 -1
  374. package/dist/validation/fieldValidators/required.js.map +1 -1
  375. package/dist/validation/validation.js.map +1 -1
  376. package/dist/validation/validationResults.d.ts +17 -9
  377. package/dist/validation/validationResults.js +1 -1
  378. package/dist/validation/validationResults.js.map +1 -1
  379. package/dist/validation/validations.d.ts +71 -35
  380. package/dist/validation/validations.js +2 -2
  381. package/dist/validation/validations.js.map +1 -1
  382. package/dist/validation/validator.js.map +1 -1
  383. package/package.json +11 -4
@@ -1 +1 @@
1
- {"version":3,"file":"FlatDataExportModel.js","sourceRoot":"","sources":["../../src/dataExport/FlatDataExportModel.ts"],"names":[],"mappings":";;;AAAA,0CAA2C;AAC3C,kCAAoC;AACpC,wCAAwE;AACxE,sCAA2C;AAC3C,oCAAkC;AAClC,mEAA6F;AAE7F,IAAY,4BAIX;AAJD,WAAY,4BAA4B;IACtC,mDAAmB,CAAA;IACnB,mDAAmB,CAAA;IACnB,6CAAa,CAAA;AACf,CAAC,EAJW,4BAA4B,4CAA5B,4BAA4B,QAIvC;AAEM,MAAM,mCAAmC,GAAG,CAAC,EAAE,OAAO,EAAE,IAAI,EAA2C,EAAE,EAAE,CAChH,GAAG,kBAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,IAAI,EAAE,CAAA;AAD5B,QAAA,mCAAmC,uCACP;AAEzC,MAAM,aAAa,GAAG,CAAC,EAAE,OAAO,EAAE,QAAQ,EAAsC,EAAE,EAAE,CAAC,CAAC;IACpF,MAAM,EAAE,kBAAQ,CAAC,OAAO,CAAC,OAAO,CAAC;IACjC,OAAO;IACP,QAAQ;CACT,CAAC,CAAA;AAoBF,MAAM,6BAA6B,GAAmD;IACpF,CAAC,qBAAW,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,CAAC,aAAa,CAAC,EAAE,OAAO,EAAE,QAAQ,EAAE,4BAA4B,CAAC,OAAO,EAAE,CAAC,CAAC;IACpH,CAAC,qBAAW,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,EAAE,EAAE;QACnD,MAAM,WAAW,GAAG,OAAsB,CAAA;QAC1C,MAAM,EAAE,0BAA0B,GAAG,KAAK,EAAE,mBAAmB,GAAG,KAAK,EAAE,GAAG,OAAO,aAAP,OAAO,cAAP,OAAO,GAAI,EAAE,CAAA;QACzF,MAAM,WAAW,GAAG,kBAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,CAAA;QAC7C,MAAM,MAAM,GAAG;YACb;gBACE,MAAM,EAAE,WAAW;gBACnB,OAAO;gBACP,QAAQ,EAAE,4BAA4B,CAAC,IAAI;gBAC3C,SAAS,EAAE,iBAAU,CAAC,cAAc,CAAC,IAAI;aAC1C;SACF,CAAA;QACD,IAAI,0BAA0B,EAAE,CAAC;YAC/B,MAAM,CAAC,IAAI,CAAC;gBACV,MAAM,EAAE,GAAG,WAAW,QAAQ;gBAC9B,OAAO;gBACP,QAAQ,EAAE,4BAA4B,CAAC,IAAI;gBAC3C,SAAS,EAAE,iBAAU,CAAC,cAAc,CAAC,KAAK;aAC3C,CAAC,CAAA;QACJ,CAAC;QACD,IAAI,mBAAmB,EAAE,CAAC;YACxB,MAAM,YAAY,GAAG,kBAAQ,CAAC,eAAe,CAAC,WAAW,CAAE,CAAA;YAC3D,MAAM,UAAU,GAAG,gBAAO,CAAC,4BAA4B,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW,EAAE,CAAC,CAAA;YACzF,MAAM,KAAK,GAAG,gBAAO,CAAC,uBAAuB,CAAC,EAAE,MAAM,EAAE,YAAY,EAAE,UAAU,EAAE,CAAC,CAAA;YACnF,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;gBACrB,MAAM,CAAC,IAAI,CAAC;oBACV,MAAM,EAAE,IAAA,2CAAmC,EAAC,EAAE,OAAO,EAAE,IAAI,EAAE,wBAAa,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;oBAC3F,OAAO;oBACP,QAAQ,EAAE,4BAA4B,CAAC,OAAO;oBAC9C,SAAS,EAAE,iBAAU,CAAC,cAAc,CAAC,IAAI;iBAC1C,CAAC,CAAA;YACJ,CAAC,CAAC,CAAA;QACJ,CAAC;QACD,OAAO,MAAM,CAAA;IACf,CAAC;IACD,CAAC,qBAAW,CAAC,UAAU,CAAC,EAAE,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE;QACxC,MAAM,WAAW,GAAG,kBAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,CAAA;QAC7C,OAAO;YACL;gBACE,MAAM,EAAE,GAAG,WAAW,IAAI;gBAC1B,OAAO;gBACP,QAAQ,EAAE,4BAA4B,CAAC,OAAO;gBAC9C,SAAS,EAAE,iBAAU,CAAC,oBAAoB,CAAC,CAAC;aAC7C;YACD;gBACE,MAAM,EAAE,GAAG,WAAW,IAAI;gBAC1B,OAAO;gBACP,QAAQ,EAAE,4BAA4B,CAAC,OAAO;gBAC9C,SAAS,EAAE,iBAAU,CAAC,oBAAoB,CAAC,CAAC;aAC7C;YACD;gBACE,MAAM,EAAE,GAAG,WAAW,MAAM;gBAC5B,OAAO;gBACP,QAAQ,EAAE,4BAA4B,CAAC,IAAI;gBAC3C,SAAS,EAAE,iBAAU,CAAC,oBAAoB,CAAC,GAAG;aAC/C;YACD,GAAG,kBAAQ,CAAC,6BAA6B,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;gBACjE,MAAM,EAAE,GAAG,WAAW,IAAI,eAAO,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE;gBACpD,OAAO;gBACP,QAAQ,EAAE,4BAA4B,CAAC,OAAO;gBAC9C,SAAS,EAAE,KAAK;aACjB,CAAC,CAAC;SACJ,CAAA;IACH,CAAC;IACD,CAAC,qBAAW,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,CAAC,aAAa,CAAC,EAAE,OAAO,EAAE,QAAQ,EAAE,4BAA4B,CAAC,IAAI,EAAE,CAAC,CAAC;IAC9G,CAAC,qBAAW,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,CAAC,aAAa,CAAC,EAAE,OAAO,EAAE,QAAQ,EAAE,4BAA4B,CAAC,OAAO,EAAE,CAAC,CAAC;IACpH,CAAC,qBAAW,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE;QAClC,MAAM,WAAW,GAAG,kBAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,CAAA;QAC7C,OAAO;YACL;gBACE,MAAM,EAAE,GAAG,WAAW,YAAY;gBAClC,OAAO;gBACP,QAAQ,EAAE,4BAA4B,CAAC,IAAI;gBAC3C,SAAS,EAAE,iBAAU,CAAC,cAAc,CAAC,QAAQ;aAC9C;YACD;gBACE,MAAM,EAAE,GAAG,WAAW,YAAY;gBAClC,OAAO;gBACP,QAAQ,EAAE,4BAA4B,CAAC,IAAI;gBAC3C,SAAS,EAAE,iBAAU,CAAC,cAAc,CAAC,QAAQ;aAC9C;SACF,CAAA;IACH,CAAC;IACD,CAAC,qBAAW,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,CAAC,aAAa,CAAC,EAAE,OAAO,EAAE,QAAQ,EAAE,4BAA4B,CAAC,OAAO,EAAE,CAAC,CAAC;IACpH,CAAC,qBAAW,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,EAAE,EAAE;QAC5C,MAAM,EAAE,0BAA0B,GAAG,KAAK,EAAE,GAAG,OAAO,aAAP,OAAO,cAAP,OAAO,GAAI,EAAE,CAAA;QAC5D,MAAM,WAAW,GAAG,kBAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,CAAA;QAC7C,OAAO;YACL;gBACE,MAAM,EAAE,WAAW;gBACnB,OAAO;gBACP,QAAQ,EAAE,4BAA4B,CAAC,IAAI;gBAC3C,SAAS,EAAE,iBAAU,CAAC,eAAe,CAAC,IAAI;aAC3C;YACD,GAAG,CAAC,0BAA0B;gBAC5B,CAAC,CAAC;oBACE;wBACE,MAAM,EAAE,GAAG,WAAW,kBAAkB;wBACxC,OAAO;wBACP,QAAQ,EAAE,4BAA4B,CAAC,IAAI;wBAC3C,SAAS,EAAE,iBAAU,CAAC,eAAe,CAAC,cAAc;qBACrD;oBACD;wBACE,MAAM,EAAE,GAAG,WAAW,kBAAkB;wBACxC,OAAO;wBACP,QAAQ,EAAE,4BAA4B,CAAC,IAAI;wBAC3C,SAAS,EAAE,iBAAU,CAAC,eAAe,CAAC,cAAc;qBACrD;iBACF;gBACH,CAAC,CAAC,EAAE,CAAC;SACR,CAAA;IACH,CAAC;IACD,CAAC,qBAAW,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,CAAC,aAAa,CAAC,EAAE,OAAO,EAAE,QAAQ,EAAE,4BAA4B,CAAC,IAAI,EAAE,CAAC,CAAC;IAC9G,CAAC,qBAAW,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,CAAC,aAAa,CAAC,EAAE,OAAO,EAAE,QAAQ,EAAE,4BAA4B,CAAC,IAAI,EAAE,CAAC,CAAC;CAC/G,CAAA;AAED,MAAM,mBAAmB,GAAG,cAAc,CAAA;AAE1C,MAAa,mBAAmB;IAW9B,YAAY,EACV,MAAM,EACN,KAAK,EACL,cAAc,EACd,OAAO,GAAG,oDAA4B,GAMvC;QACC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAA;QACpB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAA;QAClB,IAAI,CAAC,cAAc,GAAG,cAAc,CAAA;QACpC,IAAI,CAAC,OAAO,mCAAQ,oDAA4B,GAAK,OAAO,CAAE,CAAA;QAC9D,IAAI,CAAC,OAAO,GAAG,EAAE,CAAA;QAEjB,IAAI,CAAC,IAAI,EAAE,CAAA;IACb,CAAC;IAED,IAAI;QACF,IAAI,CAAC,YAAY,EAAE,CAAA;IACrB,CAAC;IAED,YAAY;QACV,MAAM,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAC,OAAO,CAAA;QAEjC,MAAM,gBAAgB,GAAG,IAAI,CAAC,uBAAuB,EAAE,CAAA;QAEvD,MAAM,sBAAsB,GAAG,IAAI,CAAC,6BAA6B,EAAE,CAAA;QAEnE,IAAI,CAAC,OAAO,GAAG;YACb,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,mBAAmB,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YACtD,GAAG,gBAAgB;YACnB,GAAG,sBAAsB;SAC1B,CAAA;IACH,CAAC;IAED,+BAA+B,CAAC,aAA6B;QAC3D,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,IAAI,CAAA;QAChC,MAAM,MAAM,GAAG,EAAE,CAAA;QACjB,KAAK,MAAM,OAAO,IAAI,aAAa,EAAE,CAAC;YACpC,MAAM,aAAa,GAAG,6BAA6B,CAAC,kBAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAA;YAE9E,MAAM,mBAAmB,GAAG,aAAa,CAAC,CAAC,CAAC,aAAa,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAA;YAE5F,IAAI,kBAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC;gBAC5B,KAAK,MAAM,GAAG,IAAI,mBAAmB,EAAE,CAAC;oBACtC,GAAG,CAAC,GAAG,GAAG,IAAI,CAAA;gBAChB,CAAC;YACH,CAAC;YACD,MAAM,CAAC,IAAI,CAAC,GAAG,mBAAmB,CAAC,CAAA;QACrC,CAAC;QACD,OAAO,MAAM,CAAA;IACf,CAAC;IAES,uBAAuB;QAC/B,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,cAAc,EAAE,OAAO,EAAE,GAAG,IAAI,CAAA;QACvD,MAAM,EAAE,yBAAyB,EAAE,GAAG,OAAO,CAAA;QAE7C,MAAM,gBAAgB,GAAa,EAAE,CAAA;QAErC,gBAAO,CAAC,4BAA4B,CAAC;YACnC,MAAM;YACN,OAAO,EAAE,cAAc;YACvB,OAAO,EAAE,CAAC,eAAe,EAAE,EAAE;gBAC3B,MAAM,qBAAqB,GAAG,yBAAyB;oBACrD,CAAC,CAAC,kCAAkC;wBAClC,IAAI,CAAC,4BAA4B,CAAC,eAAe,CAAC;oBACpD,CAAC,CAAC,wCAAwC;wBACxC,gBAAO,CAAC,cAAc,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,eAAe,EAAE,CAAC,CAAA;gBACvE,MAAM,eAAe,GAAG,IAAI,CAAC,+BAA+B,CAAC,qBAAqB,CAAC,CAAA;gBACnF,gBAAgB,CAAC,OAAO,CAAC,GAAG,eAAe,CAAC,CAAA;YAC9C,CAAC;YACD,WAAW,EAAE,KAAK;SACnB,CAAC,CAAA;QAEF,OAAO,gBAAgB,CAAA;IACzB,CAAC;IAED,4BAA4B,CAAC,cAA4B;QACvD,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI,CAAA;QACvC,MAAM,EACJ,eAAe,EACf,wBAAwB,EACxB,YAAY,EACZ,yBAAyB,EACzB,yBAAyB,GAC1B,GAAG,OAAO,CAAA;QAEX,IAAI,MAAM,GAAG,kBAAQ,CAAC,QAAQ,CAAC,cAAc,CAAC;YAC5C,CAAC,CAAC,gBAAO,CAAC,8BAA8B,CAAC;gBACrC,MAAM;gBACN,KAAK;gBACL,OAAO,EAAE,cAAc;gBACvB,SAAS,EAAE,yBAAyB,CAAC,CAAC,CAAC,kBAAQ,CAAC,WAAW,CAAC,CAAC,CAAC,kBAAQ,CAAC,iBAAiB;gBACxF,eAAe;aAChB,CAAC;YACJ,CAAC,CAAC,CAAC,cAAc,CAAC,CAAA,CAAC,qBAAqB;QAE1C,MAAM,GAAG,MAAM,CAAC,MAAM,CACpB,CAAC,OAAO,EAAE,EAAE,CACV,CAAC,wBAAwB,IAAI,YAAY,IAAI,kBAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,qBAAW,CAAC,IAAI,CAAC;YAC5F,CAAC,yBAAyB,IAAI,CAAC,kBAAQ,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,kBAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAC1F,CAAA;QACD,OAAO,MAAM,CAAA;IACf,CAAC;IAES,6BAA6B;QACrC,MAAM,cAAc,GAAG,IAAI,CAAC,4BAA4B,CAAC,IAAI,CAAC,cAAc,CAAC,CAAA;QAC7E,OAAO,IAAI,CAAC,+BAA+B,CAAC,cAAc,CAAC,CAAA;IAC7D,CAAC;IAED,IAAI,OAAO;QACT,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,CAAA;IACpD,CAAC;IAED,iBAAiB,CAAC,MAAc;QAC9B,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,MAAM,KAAK,MAAM,CAAC,CAAA;IAChE,CAAC;;AAlIH,kDAmIC;AA5HiB,kCAAc,GAAwC,4BAA4B,CAAA;AAClF,uDAAmC,GACjD,2CAAmC,CAAA","sourcesContent":["import { CategoryItems } from '../category'\nimport { NodeValues } from '../node'\nimport { NodeDef, NodeDefCode, NodeDefs, NodeDefType } from '../nodeDef'\nimport { Survey, Surveys } from '../survey'\nimport { Strings } from '../utils'\nimport { FlatDataExportDefaultOptions, FlatDataExportOptions } from './FlatDataExportOptions'\n\nexport enum FlatDataExportColumnDataType {\n boolean = 'boolean',\n numeric = 'numeric',\n text = 'text',\n}\n\nexport const getExpandedCategoryItemColumnHeader = ({ nodeDef, code }: { nodeDef: NodeDef<any>; code: string }) =>\n `${NodeDefs.getName(nodeDef)}__${code}`\n\nconst getMainColumn = ({ nodeDef, dataType }: { nodeDef: any; dataType: string }) => ({\n header: NodeDefs.getName(nodeDef),\n nodeDef,\n dataType,\n})\n\ntype Column = {\n key?: boolean\n header: string\n nodeDef?: any\n dataType?: string\n valueProp?: string\n}\n\ntype ColumnsExtractor = ({\n survey,\n nodeDef,\n options,\n}: {\n nodeDef: NodeDef<any>\n survey: Survey\n options: FlatDataExportOptions\n}) => Column[]\n\nconst columnsExtractorByNodeDefType: Partial<Record<NodeDefType, ColumnsExtractor>> = {\n [NodeDefType.boolean]: ({ nodeDef }) => [getMainColumn({ nodeDef, dataType: FlatDataExportColumnDataType.boolean })],\n [NodeDefType.code]: ({ survey, nodeDef, options }) => {\n const nodeDefCode = nodeDef as NodeDefCode\n const { includeCategoryItemsLabels = false, expandCategoryItems = false } = options ?? {}\n const nodeDefName = NodeDefs.getName(nodeDef)\n const result = [\n {\n header: nodeDefName,\n nodeDef,\n dataType: FlatDataExportColumnDataType.text,\n valueProp: NodeValues.ValuePropsCode.code,\n },\n ]\n if (includeCategoryItemsLabels) {\n result.push({\n header: `${nodeDefName}_label`,\n nodeDef,\n dataType: FlatDataExportColumnDataType.text,\n valueProp: NodeValues.ValuePropsCode.label,\n })\n }\n if (expandCategoryItems) {\n const categoryUuid = NodeDefs.getCategoryUuid(nodeDefCode)!\n const levelIndex = Surveys.getNodeDefCategoryLevelIndex({ survey, nodeDef: nodeDefCode })\n const items = Surveys.getCategoryItemsInLevel({ survey, categoryUuid, levelIndex })\n items.forEach((item) => {\n result.push({\n header: getExpandedCategoryItemColumnHeader({ nodeDef, code: CategoryItems.getCode(item) }),\n nodeDef,\n dataType: FlatDataExportColumnDataType.boolean,\n valueProp: NodeValues.ValuePropsCode.code,\n })\n })\n }\n return result\n },\n [NodeDefType.coordinate]: ({ nodeDef }) => {\n const nodeDefName = NodeDefs.getName(nodeDef)\n return [\n {\n header: `${nodeDefName}_x`,\n nodeDef,\n dataType: FlatDataExportColumnDataType.numeric,\n valueProp: NodeValues.ValuePropsCoordinate.x,\n },\n {\n header: `${nodeDefName}_y`,\n nodeDef,\n dataType: FlatDataExportColumnDataType.numeric,\n valueProp: NodeValues.ValuePropsCoordinate.y,\n },\n {\n header: `${nodeDefName}_srs`,\n nodeDef,\n dataType: FlatDataExportColumnDataType.text,\n valueProp: NodeValues.ValuePropsCoordinate.srs,\n },\n ...NodeDefs.getCoordinateAdditionalFields(nodeDef).map((field) => ({\n header: `${nodeDefName}_${Strings.snakeCase(field)}`,\n nodeDef,\n dataType: FlatDataExportColumnDataType.numeric,\n valueProp: field,\n })),\n ]\n },\n [NodeDefType.date]: ({ nodeDef }) => [getMainColumn({ nodeDef, dataType: FlatDataExportColumnDataType.text })],\n [NodeDefType.decimal]: ({ nodeDef }) => [getMainColumn({ nodeDef, dataType: FlatDataExportColumnDataType.numeric })],\n [NodeDefType.file]: ({ nodeDef }) => {\n const nodeDefName = NodeDefs.getName(nodeDef)\n return [\n {\n header: `${nodeDefName}_file_uuid`,\n nodeDef,\n dataType: FlatDataExportColumnDataType.text,\n valueProp: NodeValues.ValuePropsFile.fileUuid,\n },\n {\n header: `${nodeDefName}_file_name`,\n nodeDef,\n dataType: FlatDataExportColumnDataType.text,\n valueProp: NodeValues.ValuePropsFile.fileName,\n },\n ]\n },\n [NodeDefType.integer]: ({ nodeDef }) => [getMainColumn({ nodeDef, dataType: FlatDataExportColumnDataType.numeric })],\n [NodeDefType.taxon]: ({ nodeDef, options }) => {\n const { includeTaxonScientificName = false } = options ?? {}\n const nodeDefName = NodeDefs.getName(nodeDef)\n return [\n {\n header: nodeDefName,\n nodeDef,\n dataType: FlatDataExportColumnDataType.text,\n valueProp: NodeValues.ValuePropsTaxon.code,\n },\n ...(includeTaxonScientificName\n ? [\n {\n header: `${nodeDefName}_scientific_name`,\n nodeDef,\n dataType: FlatDataExportColumnDataType.text,\n valueProp: NodeValues.ValuePropsTaxon.scientificName,\n },\n {\n header: `${nodeDefName}_vernacular_name`,\n nodeDef,\n dataType: FlatDataExportColumnDataType.text,\n valueProp: NodeValues.ValuePropsTaxon.vernacularName,\n },\n ]\n : []),\n ]\n },\n [NodeDefType.text]: ({ nodeDef }) => [getMainColumn({ nodeDef, dataType: FlatDataExportColumnDataType.text })],\n [NodeDefType.time]: ({ nodeDef }) => [getMainColumn({ nodeDef, dataType: FlatDataExportColumnDataType.text })],\n}\n\nconst RECORD_CYCLE_HEADER = 'record_cycle'\n\nexport class FlatDataExportModel {\n survey: Survey\n cycle: string\n nodeDefContext: NodeDef<any>\n options: FlatDataExportOptions\n columns: Column[]\n\n static readonly columnDataType: typeof FlatDataExportColumnDataType = FlatDataExportColumnDataType\n static readonly getExpandedCategoryItemColumnHeader: typeof getExpandedCategoryItemColumnHeader =\n getExpandedCategoryItemColumnHeader\n\n constructor({\n survey,\n cycle,\n nodeDefContext,\n options = FlatDataExportDefaultOptions,\n }: {\n survey: Survey\n cycle: string\n nodeDefContext: NodeDef<any>\n options?: FlatDataExportOptions\n }) {\n this.survey = survey\n this.cycle = cycle\n this.nodeDefContext = nodeDefContext\n this.options = { ...FlatDataExportDefaultOptions, ...options }\n this.columns = []\n\n this.init()\n }\n\n init() {\n this._initColumns()\n }\n\n _initColumns() {\n const { addCycle } = this.options\n\n const ancestorsColumns = this.extractAncestorsColumns()\n\n const contextNodeDefsColumns = this.extractContextNodeDefsColumns()\n\n this.columns = [\n ...(addCycle ? [{ header: RECORD_CYCLE_HEADER }] : []),\n ...ancestorsColumns,\n ...contextNodeDefsColumns,\n ]\n }\n\n _createColumnsFromAttributeDefs(attributeDefs: NodeDef<any>[]) {\n const { survey, options } = this\n const result = []\n for (const nodeDef of attributeDefs) {\n const columnsGetter = columnsExtractorByNodeDefType[NodeDefs.getType(nodeDef)]\n\n const columnsPerAttribute = columnsGetter ? columnsGetter({ survey, nodeDef, options }) : []\n\n if (NodeDefs.isKey(nodeDef)) {\n for (const col of columnsPerAttribute) {\n col.key = true\n }\n }\n result.push(...columnsPerAttribute)\n }\n return result\n }\n\n protected extractAncestorsColumns(): Column[] {\n const { survey, cycle, nodeDefContext, options } = this\n const { includeAncestorAttributes } = options\n\n const ancestorsColumns: Column[] = []\n\n Surveys.visitAncestorsAndSelfNodeDef({\n survey,\n nodeDef: nodeDefContext,\n visitor: (nodeDefAncestor) => {\n const ancestorAttributeDefs = includeAncestorAttributes\n ? // include all ancestor attributes\n this.extractAncestorAttributeDefs(nodeDefAncestor)\n : // consider only ancestor key attributes\n Surveys.getNodeDefKeys({ survey, cycle, nodeDef: nodeDefAncestor })\n const ancestorColumns = this._createColumnsFromAttributeDefs(ancestorAttributeDefs)\n ancestorsColumns.unshift(...ancestorColumns)\n },\n includeSelf: false,\n })\n\n return ancestorsColumns\n }\n\n extractAncestorAttributeDefs(nodeDefContext: NodeDef<any>): NodeDef<any>[] {\n const { cycle, options, survey } = this\n const {\n includeAnalysis,\n includeFileAttributeDefs,\n includeFiles,\n includeMultipleAttributes,\n includeReadOnlyAttributes,\n } = options\n\n let result = NodeDefs.isEntity(nodeDefContext)\n ? Surveys.getDescendantsInSingleEntities({\n survey,\n cycle,\n nodeDef: nodeDefContext,\n predicate: includeMultipleAttributes ? NodeDefs.isAttribute : NodeDefs.isSingleAttribute,\n includeAnalysis,\n })\n : [nodeDefContext] // Multiple attribute\n\n result = result.filter(\n (nodeDef) =>\n (includeFileAttributeDefs || includeFiles || NodeDefs.getType(nodeDef) !== NodeDefType.file) &&\n (includeReadOnlyAttributes || !NodeDefs.isReadOnly(nodeDef) || NodeDefs.isKey(nodeDef))\n )\n return result\n }\n\n protected extractContextNodeDefsColumns(): Column[] {\n const descendantDefs = this.extractAncestorAttributeDefs(this.nodeDefContext)\n return this._createColumnsFromAttributeDefs(descendantDefs)\n }\n\n get headers() {\n return this.columns.map((column) => column.header)\n }\n\n getColumnByHeader(header: string): Column | undefined {\n return this.columns.find((column) => column.header === header)\n }\n}\n"]}
1
+ {"version":3,"file":"FlatDataExportModel.js","sourceRoot":"","sources":["../../src/dataExport/FlatDataExportModel.ts"],"names":[],"mappings":"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","sourcesContent":["import { CategoryItems } from '../category'\nimport { NodeValues } from '../node'\nimport { NodeDef, NodeDefCode, NodeDefs, NodeDefType } from '../nodeDef'\nimport { Survey, Surveys } from '../survey'\nimport { Strings } from '../utils'\nimport { FlatDataExportDefaultOptions, FlatDataExportOptions } from './FlatDataExportOptions'\n\nexport enum FlatDataExportColumnDataType {\n boolean = 'boolean',\n numeric = 'numeric',\n text = 'text',\n}\n\nexport const getExpandedCategoryItemColumnHeader = ({ nodeDef, code }: { nodeDef: NodeDef<any>; code: string }) =>\n `${NodeDefs.getName(nodeDef)}__${code}`\n\nconst getMainColumn = ({ nodeDef, dataType }: { nodeDef: any; dataType: string }) => ({\n header: NodeDefs.getName(nodeDef),\n nodeDef,\n dataType,\n})\n\ntype Column = {\n key?: boolean\n header: string\n nodeDef?: any\n dataType?: string\n valueProp?: string\n}\n\ntype ColumnsExtractor = ({\n survey,\n nodeDef,\n options,\n}: {\n nodeDef: NodeDef<any>\n survey: Survey\n options: FlatDataExportOptions\n}) => Column[]\n\nconst columnsExtractorByNodeDefType: Partial<Record<NodeDefType, ColumnsExtractor>> = {\n [NodeDefType.boolean]: ({ nodeDef }) => [getMainColumn({ nodeDef, dataType: FlatDataExportColumnDataType.boolean })],\n [NodeDefType.code]: ({ survey, nodeDef, options }) => {\n const nodeDefCode = nodeDef as NodeDefCode\n const { includeCategoryItemsLabels = false, expandCategoryItems = false } = options ?? {}\n const nodeDefName = NodeDefs.getName(nodeDef)\n const result = [\n {\n header: nodeDefName,\n nodeDef,\n dataType: FlatDataExportColumnDataType.text,\n valueProp: NodeValues.ValuePropsCode.code,\n },\n ]\n if (includeCategoryItemsLabels) {\n result.push({\n header: `${nodeDefName}_label`,\n nodeDef,\n dataType: FlatDataExportColumnDataType.text,\n valueProp: NodeValues.ValuePropsCode.label,\n })\n }\n if (expandCategoryItems) {\n const categoryUuid = NodeDefs.getCategoryUuid(nodeDefCode)!\n const levelIndex = Surveys.getNodeDefCategoryLevelIndex({ survey, nodeDef: nodeDefCode })\n const items = Surveys.getCategoryItemsInLevel({ survey, categoryUuid, levelIndex })\n items.forEach((item) => {\n result.push({\n header: getExpandedCategoryItemColumnHeader({ nodeDef, code: CategoryItems.getCode(item) }),\n nodeDef,\n dataType: FlatDataExportColumnDataType.boolean,\n valueProp: NodeValues.ValuePropsCode.code,\n })\n })\n }\n return result\n },\n [NodeDefType.coordinate]: ({ nodeDef }) => {\n const nodeDefName = NodeDefs.getName(nodeDef)\n return [\n {\n header: `${nodeDefName}_x`,\n nodeDef,\n dataType: FlatDataExportColumnDataType.numeric,\n valueProp: NodeValues.ValuePropsCoordinate.x,\n },\n {\n header: `${nodeDefName}_y`,\n nodeDef,\n dataType: FlatDataExportColumnDataType.numeric,\n valueProp: NodeValues.ValuePropsCoordinate.y,\n },\n {\n header: `${nodeDefName}_srs`,\n nodeDef,\n dataType: FlatDataExportColumnDataType.text,\n valueProp: NodeValues.ValuePropsCoordinate.srs,\n },\n ...NodeDefs.getCoordinateAdditionalFields(nodeDef).map((field) => ({\n header: `${nodeDefName}_${Strings.snakeCase(field)}`,\n nodeDef,\n dataType: FlatDataExportColumnDataType.numeric,\n valueProp: field,\n })),\n ]\n },\n [NodeDefType.date]: ({ nodeDef }) => [getMainColumn({ nodeDef, dataType: FlatDataExportColumnDataType.text })],\n [NodeDefType.decimal]: ({ nodeDef }) => [getMainColumn({ nodeDef, dataType: FlatDataExportColumnDataType.numeric })],\n [NodeDefType.file]: ({ nodeDef }) => {\n const nodeDefName = NodeDefs.getName(nodeDef)\n return [\n {\n header: `${nodeDefName}_file_uuid`,\n nodeDef,\n dataType: FlatDataExportColumnDataType.text,\n valueProp: NodeValues.ValuePropsFile.fileUuid,\n },\n {\n header: `${nodeDefName}_file_name`,\n nodeDef,\n dataType: FlatDataExportColumnDataType.text,\n valueProp: NodeValues.ValuePropsFile.fileName,\n },\n ]\n },\n [NodeDefType.integer]: ({ nodeDef }) => [getMainColumn({ nodeDef, dataType: FlatDataExportColumnDataType.numeric })],\n [NodeDefType.taxon]: ({ nodeDef, options }) => {\n const { includeTaxonScientificName = false } = options ?? {}\n const nodeDefName = NodeDefs.getName(nodeDef)\n return [\n {\n header: nodeDefName,\n nodeDef,\n dataType: FlatDataExportColumnDataType.text,\n valueProp: NodeValues.ValuePropsTaxon.code,\n },\n ...(includeTaxonScientificName\n ? [\n {\n header: `${nodeDefName}_scientific_name`,\n nodeDef,\n dataType: FlatDataExportColumnDataType.text,\n valueProp: NodeValues.ValuePropsTaxon.scientificName,\n },\n {\n header: `${nodeDefName}_vernacular_name`,\n nodeDef,\n dataType: FlatDataExportColumnDataType.text,\n valueProp: NodeValues.ValuePropsTaxon.vernacularName,\n },\n ]\n : []),\n ]\n },\n [NodeDefType.text]: ({ nodeDef }) => [getMainColumn({ nodeDef, dataType: FlatDataExportColumnDataType.text })],\n [NodeDefType.time]: ({ nodeDef }) => [getMainColumn({ nodeDef, dataType: FlatDataExportColumnDataType.text })],\n}\n\nconst RECORD_CYCLE_HEADER = 'record_cycle'\n\nexport class FlatDataExportModel {\n survey: Survey\n cycle: string\n nodeDefContext: NodeDef<any>\n options: FlatDataExportOptions\n columns: Column[]\n\n static readonly columnDataType: typeof FlatDataExportColumnDataType = FlatDataExportColumnDataType\n static readonly getExpandedCategoryItemColumnHeader: typeof getExpandedCategoryItemColumnHeader =\n getExpandedCategoryItemColumnHeader\n\n constructor({\n survey,\n cycle,\n nodeDefContext,\n options = FlatDataExportDefaultOptions,\n }: {\n survey: Survey\n cycle: string\n nodeDefContext: NodeDef<any>\n options?: FlatDataExportOptions\n }) {\n this.survey = survey\n this.cycle = cycle\n this.nodeDefContext = nodeDefContext\n this.options = { ...FlatDataExportDefaultOptions, ...options }\n this.columns = []\n\n this.init()\n }\n\n init() {\n this._initColumns()\n }\n\n _initColumns() {\n const { addCycle } = this.options\n\n const ancestorsColumns = this.extractAncestorsColumns()\n\n const contextNodeDefsColumns = this.extractContextNodeDefsColumns()\n\n this.columns = [\n ...(addCycle ? [{ header: RECORD_CYCLE_HEADER }] : []),\n ...ancestorsColumns,\n ...contextNodeDefsColumns,\n ]\n }\n\n _createColumnsFromAttributeDefs(attributeDefs: NodeDef<any>[]) {\n const { survey, options } = this\n const result = []\n for (const nodeDef of attributeDefs) {\n const columnsGetter = columnsExtractorByNodeDefType[NodeDefs.getType(nodeDef)]\n\n const columnsPerAttribute = columnsGetter ? columnsGetter({ survey, nodeDef, options }) : []\n\n if (NodeDefs.isKey(nodeDef)) {\n for (const col of columnsPerAttribute) {\n col.key = true\n }\n }\n result.push(...columnsPerAttribute)\n }\n return result\n }\n\n protected extractAncestorsColumns(): Column[] {\n const { survey, cycle, nodeDefContext, options } = this\n const { includeAncestorAttributes } = options\n\n const ancestorsColumns: Column[] = []\n\n Surveys.visitAncestorsAndSelfNodeDef({\n survey,\n nodeDef: nodeDefContext,\n visitor: (nodeDefAncestor) => {\n const ancestorAttributeDefs = includeAncestorAttributes\n ? // include all ancestor attributes\n this.extractAncestorAttributeDefs(nodeDefAncestor)\n : // consider only ancestor key attributes\n Surveys.getNodeDefKeys({ survey, cycle, nodeDef: nodeDefAncestor })\n const ancestorColumns = this._createColumnsFromAttributeDefs(ancestorAttributeDefs)\n ancestorsColumns.unshift(...ancestorColumns)\n },\n includeSelf: false,\n })\n\n return ancestorsColumns\n }\n\n extractAncestorAttributeDefs(nodeDefContext: NodeDef<any>): NodeDef<any>[] {\n const { cycle, options, survey } = this\n const {\n includeAnalysis,\n includeFileAttributeDefs,\n includeFiles,\n includeMultipleAttributes,\n includeReadOnlyAttributes,\n } = options\n\n let result = NodeDefs.isEntity(nodeDefContext)\n ? Surveys.getDescendantsInSingleEntities({\n survey,\n cycle,\n nodeDef: nodeDefContext,\n predicate: includeMultipleAttributes ? NodeDefs.isAttribute : NodeDefs.isSingleAttribute,\n includeAnalysis,\n })\n : [nodeDefContext] // Multiple attribute\n\n result = result.filter(\n (nodeDef) =>\n (includeFileAttributeDefs || includeFiles || NodeDefs.getType(nodeDef) !== NodeDefType.file) &&\n (includeReadOnlyAttributes || !NodeDefs.isReadOnly(nodeDef) || NodeDefs.isKey(nodeDef))\n )\n return result\n }\n\n protected extractContextNodeDefsColumns(): Column[] {\n const descendantDefs = this.extractAncestorAttributeDefs(this.nodeDefContext)\n return this._createColumnsFromAttributeDefs(descendantDefs)\n }\n\n get headers() {\n return this.columns.map((column) => column.header)\n }\n\n getColumnByHeader(header: string): Column | undefined {\n return this.columns.find((column) => column.header === header)\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"FlatDataExportOptions.js","sourceRoot":"","sources":["../../src/dataExport/FlatDataExportOptions.ts"],"names":[],"mappings":";;;AAAA,IAAY,oBAgBX;AAhBD,WAAY,oBAAoB;IAC9B,6CAAqB,CAAA;IACrB,2DAAmC,CAAA;IACnC,+EAAuD,CAAA;IACvD,iFAAyD,CAAA;IACzD,mEAA2C,CAAA;IAC3C,uGAA+E,CAAA;IAC/E,iEAAyC,CAAA;IACzC,6EAAqD,CAAA;IACrD,qDAA6B,CAAA;IAC7B,qEAA6C,CAAA;IAC7C,+EAAuD,CAAA;IACvD,+EAAuD,CAAA;IACvD,iFAAyD,CAAA;IACzD,mEAA2C,CAAA;IAC3C,qDAA6B,CAAA;AAC/B,CAAC,EAhBW,oBAAoB,oCAApB,oBAAoB,QAgB/B;AAIY,QAAA,4BAA4B,GAA0B;IACjE,mBAAmB,EAAE,KAAK;IAC1B,qCAAqC,EAAE,KAAK;IAC5C,eAAe,EAAE,IAAI;IACrB,yBAAyB,EAAE,KAAK;IAChC,0BAA0B,EAAE,IAAI;IAChC,YAAY,EAAE,IAAI;IAClB,yBAAyB,EAAE,KAAK;IAChC,yBAAyB,EAAE,IAAI;IAC/B,0BAA0B,EAAE,IAAI;CACjC,CAAA","sourcesContent":["export enum FlatDataExportOption {\n addCycle = 'addCycle',\n includeAnalysis = 'includeAnalysis',\n includeAncestorAttributes = 'includeAncestorAttributes',\n includeCategoryItemsLabels = 'includeCategoryItemsLabels',\n expandCategoryItems = 'expandCategoryItems',\n exportSingleEntitiesIntoSeparateFiles = 'exportSingleEntitiesIntoSeparateFiles',\n includeDateCreated = 'includeDateCreated',\n includeFileAttributeDefs = 'includeFileAttributeDefs',\n includeFiles = 'includeFiles',\n includeInternalUuids = 'includeInternalUuids',\n includeMultipleAttributes = 'includeMultipleAttributes',\n includeReadOnlyAttributes = 'includeReadOnlyAttributes',\n includeTaxonScientificName = 'includeTaxonScientificName',\n keepFileNamesUnique = 'keepFileNamesUnique',\n nullsToEmpty = 'nullsToEmpty',\n}\n\nexport type FlatDataExportOptions = Partial<Record<FlatDataExportOption, boolean>>\n\nexport const FlatDataExportDefaultOptions: FlatDataExportOptions = {\n expandCategoryItems: false,\n exportSingleEntitiesIntoSeparateFiles: false,\n includeAnalysis: true,\n includeAncestorAttributes: false,\n includeCategoryItemsLabels: true,\n includeFiles: true,\n includeMultipleAttributes: false,\n includeReadOnlyAttributes: true,\n includeTaxonScientificName: true,\n}\n"]}
1
+ {"version":3,"file":"FlatDataExportOptions.js","sourceRoot":"","sources":["../../src/dataExport/FlatDataExportOptions.ts"],"names":[],"mappings":";;;AAAA,IAAY,oBAgBX;AAhBD,WAAY,oBAAoB;IAC9B,6CAAqB,CAAA;IACrB,2DAAmC,CAAA;IACnC,+EAAuD,CAAA;IACvD,iFAAyD,CAAA;IACzD,mEAA2C,CAAA;IAC3C,uGAA+E,CAAA;IAC/E,iEAAyC,CAAA;IACzC,6EAAqD,CAAA;IACrD,qDAA6B,CAAA;IAC7B,qEAA6C,CAAA;IAC7C,+EAAuD,CAAA;IACvD,+EAAuD,CAAA;IACvD,iFAAyD,CAAA;IACzD,mEAA2C,CAAA;IAC3C,qDAA6B,CAAA;AAC/B,CAAC,EAhBW,oBAAoB,aAApB,oBAAoB,GAApB,oBAAoB,QAgB/B;AAIY,QAAA,4BAA4B,GAA0B;IACjE,mBAAmB,EAAE,KAAK;IAC1B,qCAAqC,EAAE,KAAK;IAC5C,eAAe,EAAE,IAAI;IACrB,yBAAyB,EAAE,KAAK;IAChC,0BAA0B,EAAE,IAAI;IAChC,YAAY,EAAE,IAAI;IAClB,yBAAyB,EAAE,KAAK;IAChC,yBAAyB,EAAE,IAAI;IAC/B,0BAA0B,EAAE,IAAI;CACjC,CAAA","sourcesContent":["export enum FlatDataExportOption {\n addCycle = 'addCycle',\n includeAnalysis = 'includeAnalysis',\n includeAncestorAttributes = 'includeAncestorAttributes',\n includeCategoryItemsLabels = 'includeCategoryItemsLabels',\n expandCategoryItems = 'expandCategoryItems',\n exportSingleEntitiesIntoSeparateFiles = 'exportSingleEntitiesIntoSeparateFiles',\n includeDateCreated = 'includeDateCreated',\n includeFileAttributeDefs = 'includeFileAttributeDefs',\n includeFiles = 'includeFiles',\n includeInternalUuids = 'includeInternalUuids',\n includeMultipleAttributes = 'includeMultipleAttributes',\n includeReadOnlyAttributes = 'includeReadOnlyAttributes',\n includeTaxonScientificName = 'includeTaxonScientificName',\n keepFileNamesUnique = 'keepFileNamesUnique',\n nullsToEmpty = 'nullsToEmpty',\n}\n\nexport type FlatDataExportOptions = Partial<Record<FlatDataExportOption, boolean>>\n\nexport const FlatDataExportDefaultOptions: FlatDataExportOptions = {\n expandCategoryItems: false,\n exportSingleEntitiesIntoSeparateFiles: false,\n includeAnalysis: true,\n includeAncestorAttributes: false,\n includeCategoryItemsLabels: true,\n includeFiles: true,\n includeMultipleAttributes: false,\n includeReadOnlyAttributes: true,\n includeTaxonScientificName: true,\n}\n"]}
@@ -1,9 +1,11 @@
1
1
  import { NodeDef } from '../nodeDef';
2
+ declare const getFileName: ({ nodeDef, index, extension, }: {
3
+ nodeDef: NodeDef<any>;
4
+ index: number;
5
+ extension: string;
6
+ }) => string;
2
7
  export declare const FlatDataFiles: {
3
8
  attachedFilesSubfolderName: string;
4
- getFileName: ({ nodeDef, index, extension, }: {
5
- nodeDef: NodeDef<any>;
6
- index: number;
7
- extension: string;
8
- }) => string;
9
+ getFileName: typeof getFileName;
9
10
  };
11
+ export {};
@@ -1 +1 @@
1
- {"version":3,"file":"UniqueFileNamesGenerator.js","sourceRoot":"","sources":["../../src/dataExport/UniqueFileNamesGenerator.ts"],"names":[],"mappings":";;;AACA,oCAAoC;AAEpC,MAAM,kBAAkB,GAAG,kBAAkB,CAAA,CAAC,mCAAmC;AAEjF,MAAa,wBAAwB;IAInC;QACE,IAAI,CAAC,eAAe,GAAG,EAAE,CAAA;QACzB,IAAI,CAAC,eAAe,GAAG,EAAE,CAAA;IAC3B,CAAC;IAED;;;;;;;;;;;;;;;OAeG;IACH,sBAAsB,CAAC,aAAqB,EAAE,GAAW;QACvD,MAAM,gBAAgB,GAAG,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,CAAA;QAClD,IAAI,gBAAgB,EAAE,CAAC;YACrB,OAAO,gBAAgB,CAAA;QACzB,CAAC;QACD,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,aAAa,CAAC,EAAE,CAAC;YACzC,yBAAyB;YACzB,IAAI,CAAC,eAAe,CAAC,aAAa,CAAC,GAAG,GAAG,CAAA;YACzC,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,GAAG,aAAa,CAAA;YACzC,OAAO,aAAa,CAAA;QACtB,CAAC;QACD,IAAI,iBAAiB,GAAG,IAAI,CAAC,oBAAoB,CAAC,aAAa,CAAC,CAAA;QAChE,OAAO,IAAI,CAAC,eAAe,CAAC,iBAAiB,CAAC,EAAE,CAAC;YAC/C,kDAAkD;YAClD,iBAAiB,GAAG,IAAI,CAAC,oBAAoB,CAAC,iBAAiB,CAAC,CAAA;QAClE,CAAC;QACD,IAAI,CAAC,eAAe,CAAC,iBAAiB,CAAC,GAAG,GAAG,CAAA;QAC7C,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,GAAG,iBAAiB,CAAA;QAC7C,OAAO,iBAAiB,CAAA;IAC1B,CAAC;IAED;;;;;;OAMG;IACO,oBAAoB,CAAC,aAAqB;QAClD,MAAM,IAAI,GAAG,iBAAS,CAAC,OAAO,CAAC,aAAa,CAAC,CAAA;QAC7C,MAAM,SAAS,GAAG,iBAAS,CAAC,YAAY,CAAC,aAAa,CAAC,CAAA;QACvD,IAAI,WAAW,CAAA;QACf,MAAM,QAAQ,GAAG,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QAC9C,IAAI,QAAQ,EAAE,CAAC;YACb,MAAM,CAAC,EAAE,gBAAgB,EAAE,KAAK,CAAC,GAAG,QAAQ,CAAA;YAC5C,MAAM,SAAS,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;YACnC,WAAW,GAAG,GAAG,gBAAgB,KAAK,SAAS,GAAG,CAAA;QACpD,CAAC;aAAM,CAAC;YACN,WAAW,GAAG,GAAG,IAAI,MAAM,CAAA;QAC7B,CAAC;QACD,OAAO,SAAS,CAAC,CAAC,CAAC,GAAG,WAAW,IAAI,SAAS,EAAE,CAAC,CAAC,CAAC,WAAW,CAAA;IAChE,CAAC;IAED,IAAI,cAAc;QAChB,yBAAY,IAAI,CAAC,eAAe,EAAE;IACpC,CAAC;IAED,IAAI,cAAc;QAChB,yBAAY,IAAI,CAAC,eAAe,EAAE;IACpC,CAAC;CACF;AA3ED,4DA2EC","sourcesContent":["import { Dictionary } from '../common'\nimport { FileNames } from '../utils'\n\nconst nameWithIndexRegEx = /^(.*) \\((\\d+)\\)$/ // file name like \"example (1).txt\"\n\nexport class UniqueFileNamesGenerator {\n private _fileNamesByKey: Dictionary<string>\n private _keysByFileName: Dictionary<string>\n\n constructor() {\n this._fileNamesByKey = {}\n this._keysByFileName = {}\n }\n\n /**\n * Generates a unique file name for the given key.\n *\n * If the key has been used before, the previously generated file name\n * associated with that key is returned, regardless of the current\n * {@link inputFileName} value.\n *\n * If the key has not been used before, the method either:\n * - returns {@link inputFileName} if it has not been used for another key, or\n * - generates the next available non-conflicting name by appending or\n * incrementing a numeric index in parentheses.\n *\n * @param inputFileName The desired base file name, including extension.\n * @param key A logical identifier whose associated file name should remain stable across calls.\n * @returns The unique file name associated with the given key.\n */\n generateUniqueFileName(inputFileName: string, key: string): string {\n const existingFileName = this._fileNamesByKey[key]\n if (existingFileName) {\n return existingFileName\n }\n if (!this._keysByFileName[inputFileName]) {\n // file name not used yet\n this._keysByFileName[inputFileName] = key\n this._fileNamesByKey[key] = inputFileName\n return inputFileName\n }\n let generatedFileName = this.generateNextFileName(inputFileName)\n while (this._keysByFileName[generatedFileName]) {\n // file name already exists, generate the next one\n generatedFileName = this.generateNextFileName(generatedFileName)\n }\n this._keysByFileName[generatedFileName] = key\n this._fileNamesByKey[key] = generatedFileName\n return generatedFileName\n }\n\n /**\n * Generates a new file name by incrementing an existing numeric suffix\n * of the form \"name (n)\" or appending \" (1)\" if no such suffix exists.\n *\n * @param inputFileName The original file name, including its extension.\n * @returns The updated file name with an incremented or newly added numeric suffix.\n */\n protected generateNextFileName(inputFileName: string): string {\n const name = FileNames.getName(inputFileName)\n const extension = FileNames.getExtension(inputFileName)\n let nameUpdated\n const matchRes = nameWithIndexRegEx.exec(name)\n if (matchRes) {\n const [, nameWithoutIndex, index] = matchRes\n const nextIndex = Number(index) + 1\n nameUpdated = `${nameWithoutIndex} (${nextIndex})`\n } else {\n nameUpdated = `${name} (1)`\n }\n return extension ? `${nameUpdated}.${extension}` : nameUpdated\n }\n\n get fileNamesByKey(): Readonly<Dictionary<string>> {\n return { ...this._fileNamesByKey }\n }\n\n get keysByFileName(): Readonly<Dictionary<string>> {\n return { ...this._keysByFileName }\n }\n}\n"]}
1
+ {"version":3,"file":"UniqueFileNamesGenerator.js","sourceRoot":"","sources":["../../src/dataExport/UniqueFileNamesGenerator.ts"],"names":[],"mappings":";;;AACA,oCAAoC;AAEpC,MAAM,kBAAkB,GAAG,kBAAkB,CAAA,CAAC,mCAAmC;AAEjF;IAIE;QACE,IAAI,CAAC,eAAe,GAAG,EAAE,CAAA;QACzB,IAAI,CAAC,eAAe,GAAG,EAAE,CAAA;IAC3B,CAAC;IAED;;;;;;;;;;;;;;;OAeG;IACH,sBAAsB,CAAC,aAAqB,EAAE,GAAW;QACvD,MAAM,gBAAgB,GAAG,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,CAAA;QAClD,IAAI,gBAAgB,EAAE,CAAC;YACrB,OAAO,gBAAgB,CAAA;QACzB,CAAC;QACD,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,aAAa,CAAC,EAAE,CAAC;YACzC,yBAAyB;YACzB,IAAI,CAAC,eAAe,CAAC,aAAa,CAAC,GAAG,GAAG,CAAA;YACzC,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,GAAG,aAAa,CAAA;YACzC,OAAO,aAAa,CAAA;QACtB,CAAC;QACD,IAAI,iBAAiB,GAAG,IAAI,CAAC,oBAAoB,CAAC,aAAa,CAAC,CAAA;QAChE,OAAO,IAAI,CAAC,eAAe,CAAC,iBAAiB,CAAC,EAAE,CAAC;YAC/C,kDAAkD;YAClD,iBAAiB,GAAG,IAAI,CAAC,oBAAoB,CAAC,iBAAiB,CAAC,CAAA;QAClE,CAAC;QACD,IAAI,CAAC,eAAe,CAAC,iBAAiB,CAAC,GAAG,GAAG,CAAA;QAC7C,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,GAAG,iBAAiB,CAAA;QAC7C,OAAO,iBAAiB,CAAA;IAC1B,CAAC;IAED;;;;;;OAMG;IACO,oBAAoB,CAAC,aAAqB;QAClD,MAAM,IAAI,GAAG,iBAAS,CAAC,OAAO,CAAC,aAAa,CAAC,CAAA;QAC7C,MAAM,SAAS,GAAG,iBAAS,CAAC,YAAY,CAAC,aAAa,CAAC,CAAA;QACvD,IAAI,WAAW,CAAA;QACf,MAAM,QAAQ,GAAG,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QAC9C,IAAI,QAAQ,EAAE,CAAC;YACb,MAAM,CAAC,EAAE,gBAAgB,EAAE,KAAK,CAAC,GAAG,QAAQ,CAAA;YAC5C,MAAM,SAAS,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;YACnC,WAAW,GAAG,GAAG,gBAAgB,KAAK,SAAS,GAAG,CAAA;QACpD,CAAC;aAAM,CAAC;YACN,WAAW,GAAG,GAAG,IAAI,MAAM,CAAA;QAC7B,CAAC;QACD,OAAO,SAAS,CAAC,CAAC,CAAC,GAAG,WAAW,IAAI,SAAS,EAAE,CAAC,CAAC,CAAC,WAAW,CAAA;IAChE,CAAC;IAED,IAAI,cAAc;QAChB,yBAAY,IAAI,CAAC,eAAe,EAAE;IACpC,CAAC;IAED,IAAI,cAAc;QAChB,yBAAY,IAAI,CAAC,eAAe,EAAE;IACpC,CAAC;CACF","sourcesContent":["import { Dictionary } from '../common'\nimport { FileNames } from '../utils'\n\nconst nameWithIndexRegEx = /^(.*) \\((\\d+)\\)$/ // file name like \"example (1).txt\"\n\nexport class UniqueFileNamesGenerator {\n private _fileNamesByKey: Dictionary<string>\n private _keysByFileName: Dictionary<string>\n\n constructor() {\n this._fileNamesByKey = {}\n this._keysByFileName = {}\n }\n\n /**\n * Generates a unique file name for the given key.\n *\n * If the key has been used before, the previously generated file name\n * associated with that key is returned, regardless of the current\n * {@link inputFileName} value.\n *\n * If the key has not been used before, the method either:\n * - returns {@link inputFileName} if it has not been used for another key, or\n * - generates the next available non-conflicting name by appending or\n * incrementing a numeric index in parentheses.\n *\n * @param inputFileName The desired base file name, including extension.\n * @param key A logical identifier whose associated file name should remain stable across calls.\n * @returns The unique file name associated with the given key.\n */\n generateUniqueFileName(inputFileName: string, key: string): string {\n const existingFileName = this._fileNamesByKey[key]\n if (existingFileName) {\n return existingFileName\n }\n if (!this._keysByFileName[inputFileName]) {\n // file name not used yet\n this._keysByFileName[inputFileName] = key\n this._fileNamesByKey[key] = inputFileName\n return inputFileName\n }\n let generatedFileName = this.generateNextFileName(inputFileName)\n while (this._keysByFileName[generatedFileName]) {\n // file name already exists, generate the next one\n generatedFileName = this.generateNextFileName(generatedFileName)\n }\n this._keysByFileName[generatedFileName] = key\n this._fileNamesByKey[key] = generatedFileName\n return generatedFileName\n }\n\n /**\n * Generates a new file name by incrementing an existing numeric suffix\n * of the form \"name (n)\" or appending \" (1)\" if no such suffix exists.\n *\n * @param inputFileName The original file name, including its extension.\n * @returns The updated file name with an incremented or newly added numeric suffix.\n */\n protected generateNextFileName(inputFileName: string): string {\n const name = FileNames.getName(inputFileName)\n const extension = FileNames.getExtension(inputFileName)\n let nameUpdated\n const matchRes = nameWithIndexRegEx.exec(name)\n if (matchRes) {\n const [, nameWithoutIndex, index] = matchRes\n const nextIndex = Number(index) + 1\n nameUpdated = `${nameWithoutIndex} (${nextIndex})`\n } else {\n nameUpdated = `${name} (1)`\n }\n return extension ? `${nameUpdated}.${extension}` : nameUpdated\n }\n\n get fileNamesByKey(): Readonly<Dictionary<string>> {\n return { ...this._fileNamesByKey }\n }\n\n get keysByFileName(): Readonly<Dictionary<string>> {\n return { ...this._keysByFileName }\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"dataQuery.js","sourceRoot":"","sources":["../../src/dataQuery/dataQuery.ts"],"names":[],"mappings":";;;AAEA,IAAY,aAGX;AAHD,WAAY,aAAa;IACvB,4BAAW,CAAA;IACX,wCAAuB,CAAA;AACzB,CAAC,EAHW,aAAa,6BAAb,aAAa,QAGxB","sourcesContent":["import { Labels } from '../language'\n\nexport enum DataQueryMode {\n raw = 'raw',\n aggregate = 'aggregate',\n}\n\nexport interface DataQuery {\n mode: DataQueryMode\n filter?: string\n sort?: string\n entityDefUuid?: string\n attributeDefUuids?: string[]\n dimensions?: string[]\n measures?: string[]\n filterRecordUuids?: string[]\n}\n\nexport interface DataQuerySummaryProps {\n name?: string\n labels?: Labels\n descriptions?: Labels\n}\n\nexport interface DataQuerySummary {\n content?: DataQuery\n dateCreated?: string\n dateModified?: string\n id?: number\n props?: DataQuerySummaryProps\n uuid?: string\n}\n"]}
1
+ {"version":3,"file":"dataQuery.js","sourceRoot":"","sources":["../../src/dataQuery/dataQuery.ts"],"names":[],"mappings":";;;AAEA,IAAY,aAGX;AAHD,WAAY,aAAa;IACvB,4BAAW,CAAA;IACX,wCAAuB,CAAA;AACzB,CAAC,EAHW,aAAa,aAAb,aAAa,GAAb,aAAa,QAGxB","sourcesContent":["import { Labels } from '../language'\n\nexport enum DataQueryMode {\n raw = 'raw',\n aggregate = 'aggregate',\n}\n\nexport interface DataQuery {\n mode: DataQueryMode\n filter?: string\n sort?: string\n entityDefUuid?: string\n attributeDefUuids?: string[]\n dimensions?: string[]\n measures?: string[]\n filterRecordUuids?: string[]\n}\n\nexport interface DataQuerySummaryProps {\n name?: string\n labels?: Labels\n descriptions?: Labels\n}\n\nexport interface DataQuerySummary {\n content?: DataQuery\n dateCreated?: string\n dateModified?: string\n id?: number\n props?: DataQuerySummaryProps\n uuid?: string\n}\n"]}
@@ -1,19 +1,32 @@
1
1
  import { Labels, LanguageCode } from '../language';
2
2
  import { DataQuery, DataQuerySummary, DataQuerySummaryProps } from './dataQuery';
3
+ declare const create: (params: {
4
+ props?: DataQuerySummaryProps;
5
+ content?: DataQuery;
6
+ }) => DataQuerySummary;
7
+ declare const getUuid: (querySummary: DataQuerySummary) => string;
8
+ declare const getName: (querySummary: DataQuerySummary) => string;
9
+ declare const getContent: (querySummary: DataQuerySummary) => DataQuery | undefined;
10
+ declare const getLabels: (querySummary: DataQuerySummary) => Labels;
11
+ declare const getLabel: (lang: LanguageCode) => (querySummary: DataQuerySummary) => string;
12
+ declare const getDescriptions: (querySummary: DataQuerySummary) => Labels;
13
+ declare const getDescription: (lang: LanguageCode) => (querySummary: DataQuerySummary) => string;
14
+ declare const assocName: (value: string) => (querySummary: DataQuerySummary) => DataQuerySummary;
15
+ declare const assocLabels: (value: Labels) => (querySummary: DataQuerySummary) => DataQuerySummary;
16
+ declare const assocDescriptions: (value: Labels) => (querySummary: DataQuerySummary) => DataQuerySummary;
17
+ declare const assocContent: (content: DataQuery) => (querySummary: DataQuerySummary) => DataQuerySummary;
3
18
  export declare const DataQuerySummaries: {
4
- create: (params: {
5
- props?: DataQuerySummaryProps;
6
- content?: DataQuery;
7
- }) => DataQuerySummary;
8
- getUuid: (querySummary: DataQuerySummary) => string;
9
- getName: (querySummary: DataQuerySummary) => string;
10
- getContent: (querySummary: DataQuerySummary) => DataQuery | undefined;
11
- getLabels: (querySummary: DataQuerySummary) => Labels;
12
- getLabel: (lang: LanguageCode) => (querySummary: DataQuerySummary) => string;
13
- getDescriptions: (querySummary: DataQuerySummary) => Labels;
14
- getDescription: (lang: LanguageCode) => (querySummary: DataQuerySummary) => string;
15
- assocName: (value: string) => (querySummary: DataQuerySummary) => DataQuerySummary;
16
- assocLabels: (value: Labels) => (querySummary: DataQuerySummary) => DataQuerySummary;
17
- assocDescriptions: (value: Labels) => (querySummary: DataQuerySummary) => DataQuerySummary;
18
- assocContent: (content: DataQuery) => (querySummary: DataQuerySummary) => DataQuerySummary;
19
+ create: typeof create;
20
+ getUuid: typeof getUuid;
21
+ getName: typeof getName;
22
+ getContent: typeof getContent;
23
+ getLabels: typeof getLabels;
24
+ getLabel: typeof getLabel;
25
+ getDescriptions: typeof getDescriptions;
26
+ getDescription: typeof getDescription;
27
+ assocName: typeof assocName;
28
+ assocLabels: typeof assocLabels;
29
+ assocDescriptions: typeof assocDescriptions;
30
+ assocContent: typeof assocContent;
19
31
  };
32
+ export {};
@@ -15,11 +15,11 @@ const create = (params) => {
15
15
  return { uuid: utils_1.UUIDs.v4(), content, props };
16
16
  };
17
17
  const getUuid = (querySummary) => { var _a; return (_a = querySummary === null || querySummary === void 0 ? void 0 : querySummary.uuid) !== null && _a !== void 0 ? _a : ''; };
18
- const getName = (querySummary) => { var _a, _b; return (_b = (_a = querySummary === null || querySummary === void 0 ? void 0 : querySummary.props) === null || _a === void 0 ? void 0 : _a.name) !== null && _b !== void 0 ? _b : ''; };
18
+ const getName = (querySummary) => { var _a; var _b; return (_b = (_a = querySummary === null || querySummary === void 0 ? void 0 : querySummary.props) === null || _a === void 0 ? void 0 : _a.name) !== null && _b !== void 0 ? _b : ''; };
19
19
  const getContent = (querySummary) => querySummary === null || querySummary === void 0 ? void 0 : querySummary.content;
20
- const getLabels = (querySummary) => { var _a, _b; return (_b = (_a = querySummary === null || querySummary === void 0 ? void 0 : querySummary.props) === null || _a === void 0 ? void 0 : _a.labels) !== null && _b !== void 0 ? _b : {}; };
20
+ const getLabels = (querySummary) => { var _a; var _b; return (_b = (_a = querySummary === null || querySummary === void 0 ? void 0 : querySummary.props) === null || _a === void 0 ? void 0 : _a.labels) !== null && _b !== void 0 ? _b : {}; };
21
21
  const getLabel = (lang) => (querySummary) => { var _a; return (_a = getLabels(querySummary)[lang]) !== null && _a !== void 0 ? _a : ''; };
22
- const getDescriptions = (querySummary) => { var _a, _b; return (_b = (_a = querySummary === null || querySummary === void 0 ? void 0 : querySummary.props) === null || _a === void 0 ? void 0 : _a.descriptions) !== null && _b !== void 0 ? _b : {}; };
22
+ const getDescriptions = (querySummary) => { var _a; var _b; return (_b = (_a = querySummary === null || querySummary === void 0 ? void 0 : querySummary.props) === null || _a === void 0 ? void 0 : _a.descriptions) !== null && _b !== void 0 ? _b : {}; };
23
23
  const getDescription = (lang) => (querySummary) => { var _a; return (_a = getDescriptions(querySummary)[lang]) !== null && _a !== void 0 ? _a : ''; };
24
24
  const assocProp = (prop, value) => (obj) => utils_1.Objects.assocPath({ obj, path: ['props', prop], value });
25
25
  const assocName = (value) => (querySummary) => assocProp(PropKeys.name, value)(querySummary);
@@ -1 +1 @@
1
- {"version":3,"file":"dataQuerySummaries.js","sourceRoot":"","sources":["../../src/dataQuery/dataQuerySummaries.ts"],"names":[],"mappings":"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","sourcesContent":["import { Labels, LanguageCode } from '../language'\nimport { Objects, UUIDs } from '../utils'\nimport { DataQuery, DataQuerySummary, DataQuerySummaryProps } from './dataQuery'\n\nconst PropKeys = {\n name: 'name',\n labels: 'labels',\n descriptions: 'descriptions',\n}\n\nconst Keys = {\n content: 'content',\n}\n\nconst create = (params: { props?: DataQuerySummaryProps; content?: DataQuery }): DataQuerySummary => {\n const { props, content } = params ?? {}\n return { uuid: UUIDs.v4(), content, props }\n}\n\nconst getUuid = (querySummary: DataQuerySummary): string => querySummary?.uuid ?? ''\n\nconst getName = (querySummary: DataQuerySummary): string => querySummary?.props?.name ?? ''\n\nconst getContent = (querySummary: DataQuerySummary): DataQuery | undefined => querySummary?.content\n\nconst getLabels = (querySummary: DataQuerySummary): Labels => querySummary?.props?.labels ?? {}\n\nconst getLabel =\n (lang: LanguageCode) =>\n (querySummary: DataQuerySummary): string =>\n getLabels(querySummary)[lang] ?? ''\n\nconst getDescriptions = (querySummary: DataQuerySummary): Labels => querySummary?.props?.descriptions ?? {}\n\nconst getDescription =\n (lang: LanguageCode) =>\n (querySummary: DataQuerySummary): string =>\n getDescriptions(querySummary)[lang] ?? ''\n\nconst assocProp =\n (prop: string, value: any) =>\n (obj: any): any =>\n Objects.assocPath({ obj, path: ['props', prop], value })\n\nconst assocName =\n (value: string) =>\n (querySummary: DataQuerySummary): DataQuerySummary =>\n assocProp(PropKeys.name, value)(querySummary)\n\nconst assocLabels =\n (value: Labels) =>\n (querySummary: DataQuerySummary): DataQuerySummary =>\n assocProp(PropKeys.labels, value)(querySummary)\n\nconst assocDescriptions =\n (value: Labels) =>\n (querySummary: DataQuerySummary): DataQuerySummary =>\n assocProp(PropKeys.descriptions, value)(querySummary)\n\nconst assocContent =\n (content: DataQuery) =>\n (querySummary: DataQuerySummary): DataQuerySummary =>\n Objects.assoc({ obj: querySummary, prop: Keys.content, value: content })\n\nexport const DataQuerySummaries = {\n // create\n create,\n // read\n getUuid,\n getName,\n getContent,\n getLabels,\n getLabel,\n getDescriptions,\n getDescription,\n // update\n assocName,\n assocLabels,\n assocDescriptions,\n assocContent,\n}\n"]}
1
+ {"version":3,"file":"dataQuerySummaries.js","sourceRoot":"","sources":["../../src/dataQuery/dataQuerySummaries.ts"],"names":[],"mappings":"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","sourcesContent":["import { Labels, LanguageCode } from '../language'\nimport { Objects, UUIDs } from '../utils'\nimport { DataQuery, DataQuerySummary, DataQuerySummaryProps } from './dataQuery'\n\nconst PropKeys = {\n name: 'name',\n labels: 'labels',\n descriptions: 'descriptions',\n}\n\nconst Keys = {\n content: 'content',\n}\n\nconst create = (params: { props?: DataQuerySummaryProps; content?: DataQuery }): DataQuerySummary => {\n const { props, content } = params ?? {}\n return { uuid: UUIDs.v4(), content, props }\n}\n\nconst getUuid = (querySummary: DataQuerySummary): string => querySummary?.uuid ?? ''\n\nconst getName = (querySummary: DataQuerySummary): string => querySummary?.props?.name ?? ''\n\nconst getContent = (querySummary: DataQuerySummary): DataQuery | undefined => querySummary?.content\n\nconst getLabels = (querySummary: DataQuerySummary): Labels => querySummary?.props?.labels ?? {}\n\nconst getLabel =\n (lang: LanguageCode) =>\n (querySummary: DataQuerySummary): string =>\n getLabels(querySummary)[lang] ?? ''\n\nconst getDescriptions = (querySummary: DataQuerySummary): Labels => querySummary?.props?.descriptions ?? {}\n\nconst getDescription =\n (lang: LanguageCode) =>\n (querySummary: DataQuerySummary): string =>\n getDescriptions(querySummary)[lang] ?? ''\n\nconst assocProp =\n (prop: string, value: any) =>\n (obj: any): any =>\n Objects.assocPath({ obj, path: ['props', prop], value })\n\nconst assocName =\n (value: string) =>\n (querySummary: DataQuerySummary): DataQuerySummary =>\n assocProp(PropKeys.name, value)(querySummary)\n\nconst assocLabels =\n (value: Labels) =>\n (querySummary: DataQuerySummary): DataQuerySummary =>\n assocProp(PropKeys.labels, value)(querySummary)\n\nconst assocDescriptions =\n (value: Labels) =>\n (querySummary: DataQuerySummary): DataQuerySummary =>\n assocProp(PropKeys.descriptions, value)(querySummary)\n\nconst assocContent =\n (content: DataQuery) =>\n (querySummary: DataQuerySummary): DataQuerySummary =>\n Objects.assoc({ obj: querySummary, prop: Keys.content, value: content })\n\nexport const DataQuerySummaries = {\n // create\n create,\n // read\n getUuid,\n getName,\n getContent,\n getLabels,\n getLabel,\n getDescriptions,\n getDescription,\n // update\n assocName,\n assocLabels,\n assocDescriptions,\n assocContent,\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"SystemError.js","sourceRoot":"","sources":["../../src/error/SystemError.ts"],"names":[],"mappings":";;;AAEA,MAAa,WAAY,SAAQ,KAAK;IAIpC,YAAY,GAAW,EAAE,MAAwB;QAC/C,KAAK,CAAC,GAAG,CAAC,CAAA;QAEV,IAAI,CAAC,IAAI,GAAG,aAAa,CAAA;QAEzB,IAAI,CAAC,IAAI,GAAG,GAAG,CAAA;QACf,IAAI,CAAC,OAAO,GAAG,MAAM,aAAN,MAAM,cAAN,MAAM,GAAI,EAAE,CAAA;QAE3B,sDAAsD;QACtD,IAAI,KAAK,CAAC,iBAAiB,EAAE,CAAC;YAC5B,KAAK,CAAC,iBAAiB,CAAC,IAAI,EAAE,WAAW,CAAC,CAAA;QAC5C,CAAC;IACH,CAAC;IAED,IAAI,GAAG;QACL,OAAO,IAAI,CAAC,IAAI,CAAA;IAClB,CAAC;IAED,IAAI,MAAM;QACR,OAAO,IAAI,CAAC,OAAO,CAAA;IACrB,CAAC;IAED,MAAM;QACJ,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,IAAI,CAAA;QAC5B,MAAM,EAAE,KAAK,EAAE,WAAW,EAAE,GAAG,MAAM,aAAN,MAAM,cAAN,MAAM,GAAI,EAAE,CAAA;QAC3C,MAAM,cAAc,GAClB,WAAW,IAAI,WAAW,YAAY,WAAW,CAAC,CAAC,iCAAM,MAAM,KAAE,KAAK,EAAE,WAAW,aAAX,WAAW,uBAAX,WAAW,CAAE,MAAM,EAAE,IAAG,CAAC,CAAC,MAAM,CAAA;QAC1G,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,cAAc,EAAE,CAAA;IACxC,CAAC;CACF;AAjCD,kCAiCC","sourcesContent":["import { Dictionary } from '../common'\n\nexport class SystemError extends Error {\n private readonly _key: string\n private readonly _params: Dictionary<any>\n\n constructor(key: string, params?: Dictionary<any>) {\n super(key)\n\n this.name = 'SystemError'\n\n this._key = key\n this._params = params ?? {}\n\n // Maintains proper stack trace (only available on V8)\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, SystemError)\n }\n }\n\n get key(): string {\n return this._key\n }\n\n get params(): Dictionary<any> {\n return this._params\n }\n\n toJSON() {\n const { key, params } = this\n const { error: nestedError } = params ?? {}\n const paramsAdjusted: Dictionary<any> =\n nestedError && nestedError instanceof SystemError ? { ...params, error: nestedError?.toJSON() } : params\n return { key, params: paramsAdjusted }\n }\n}\n"]}
1
+ {"version":3,"file":"SystemError.js","sourceRoot":"","sources":["../../src/error/SystemError.ts"],"names":[],"mappings":";;;AAEA,iBAAyB,SAAQ,KAAK;IAIpC,YAAY,GAAW,EAAE,MAAwB;QAC/C,KAAK,CAAC,GAAG,CAAC,CAAA;QAEV,IAAI,CAAC,IAAI,GAAG,aAAa,CAAA;QAEzB,IAAI,CAAC,IAAI,GAAG,GAAG,CAAA;QACf,IAAI,CAAC,OAAO,GAAG,MAAM,aAAN,MAAM,cAAN,MAAM,GAAI,EAAE,CAAA;QAE3B,sDAAsD;QACtD,IAAI,KAAK,CAAC,iBAAiB,EAAE,CAAC;YAC5B,KAAK,CAAC,iBAAiB,CAAC,IAAI,EAAE,WAAW,CAAC,CAAA;QAC5C,CAAC;IACH,CAAC;IAED,IAAI,GAAG;QACL,OAAO,IAAI,CAAC,IAAI,CAAA;IAClB,CAAC;IAED,IAAI,MAAM;QACR,OAAO,IAAI,CAAC,OAAO,CAAA;IACrB,CAAC;IAED,MAAM;QACJ,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,IAAI,CAAA;QAC5B,MAAM,EAAE,KAAK,EAAE,WAAW,EAAE,GAAG,MAAM,aAAN,MAAM,cAAN,MAAM,GAAI,EAAE,CAAA;QAC3C,MAAM,cAAc,GAClB,WAAW,IAAI,WAAW,YAAY,WAAW,CAAC,CAAC,iCAAM,MAAM,KAAE,KAAK,EAAE,WAAW,aAAX,WAAW,uBAAX,WAAW,CAAE,MAAM,EAAE,IAAG,CAAC,CAAC,MAAM,CAAA;QAC1G,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,cAAc,EAAE,CAAA;IACxC,CAAC;CACF","sourcesContent":["import { Dictionary } from '../common'\n\nexport class SystemError extends Error {\n private readonly _key: string\n private readonly _params: Dictionary<any>\n\n constructor(key: string, params?: Dictionary<any>) {\n super(key)\n\n this.name = 'SystemError'\n\n this._key = key\n this._params = params ?? {}\n\n // Maintains proper stack trace (only available on V8)\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, SystemError)\n }\n }\n\n get key(): string {\n return this._key\n }\n\n get params(): Dictionary<any> {\n return this._params\n }\n\n toJSON() {\n const { key, params } = this\n const { error: nestedError } = params ?? {}\n const paramsAdjusted: Dictionary<any> =\n nestedError && nestedError instanceof SystemError ? { ...params, error: nestedError?.toJSON() } : params\n return { key, params: paramsAdjusted }\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"authGroups.js","sourceRoot":"","sources":["../../../src/auth/authGroups.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,UAAU,CAAA;AAChC,OAAO,EAAa,aAAa,EAAE,mBAAmB,EAAE,sBAAsB,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAA;AAGrH,MAAM,aAAa,GAAG,CAAC,SAAoB,EAAW,EAAE,CAAC,CAAA,SAAS,aAAT,SAAS,uBAAT,SAAS,CAAE,IAAI,MAAK,aAAa,CAAC,WAAW,CAAA;AAEtG,MAAM,eAAe,GAAG,CAAC,SAAoB,EAAW,EAAE,CAAC,CAAA,SAAS,aAAT,SAAS,uBAAT,SAAS,CAAE,IAAI,MAAK,aAAa,CAAC,aAAa,CAAA;AAE1G,MAAM,aAAa,GAAG,CAAC,SAAoB,EAAW,EAAE,CAAC,CAAC,aAAa,CAAC,SAAS,CAAC,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,CAAA;AAEjH,MAAM,aAAa,GAAG,CAAC,SAAoB,EAAsB,EAAE,CAAC,SAAS,aAAT,SAAS,uBAAT,SAAS,CAAE,UAAU,CAAA;AAEzF,MAAM,cAAc,GAAG,CAAC,SAAqB,EAAuD,EAAE,CACpG,SAAS,aAAT,SAAS,uBAAT,SAAS,CAAE,WAAW,CAAA;AAExB,MAAM,kBAAkB,GACtB,CAAC,IAAY,EAAE,EAAE,CACjB,CAAC,SAAqB,EAAwB,EAAE;IAC9C,MAAM,KAAK,GAAG,cAAc,CAAC,SAAS,CAAC,CAAA;IACvC,IAAI,CAAC,KAAK;QAAE,MAAM,IAAI,KAAK,CAAC,UAAU,CAAC,CAAA;IAEvC,OAAO,KAAK,CAAC,IAAI,CAAC,CAAA;AACpB,CAAC,CAAA;AAEH,MAAM,oBAAoB,GAAG,CAAC,UAAkB,EAAe,EAAE,CAC/D,mBAAmB,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,iCAAM,KAAK,KAAE,IAAI,EAAE,KAAK,CAAC,EAAE,EAAE,EAAE,UAAU,IAAG,CAAC,CAAA;AAElF,MAAM,cAAc,GAAG,CAAC,KAAgB,EAAE,EAAE,WAAC,OAAA,MAAA,sBAAsB,CAAC,KAAK,CAAC,IAAI,CAAC,mCAAI,EAAE,CAAA,EAAA,CAAA;AAErF,MAAM,UAAU,GAAG,CAAC,MAAmB,EAAE,EAAE;IACzC,MAAM,YAAY,GAAG,CAAC,GAAG,MAAM,CAAC,CAAA;IAChC,YAAY,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE;QACnC,MAAM,UAAU,GAAG,gBAAgB,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;QACxD,MAAM,UAAU,GAAG,gBAAgB,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;QACxD,OAAO,UAAU,GAAG,UAAU,CAAA;IAChC,CAAC,CAAC,CAAA;IACF,OAAO,YAAY,CAAA;AACrB,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,UAAU,GAAG;IACxB,aAAa;IACb,aAAa;IACb,eAAe;IACf,aAAa;IACb,cAAc;IACd,kBAAkB;IAClB,oBAAoB;IACpB,cAAc;IACd,UAAU;CACX,CAAA","sourcesContent":["import { UUIDs } from '../utils'\nimport { AuthGroup, AuthGroupName, DEFAULT_AUTH_GROUPS, permissionsByGroupName, sortedGroupNames } from './authGroup'\nimport { RecordStepPermission } from './permission'\n\nconst isSystemAdmin = (authGroup: AuthGroup): boolean => authGroup?.name === AuthGroupName.systemAdmin\n\nconst isSurveyManager = (authGroup: AuthGroup): boolean => authGroup?.name === AuthGroupName.surveyManager\n\nconst isSurveyGroup = (authGroup: AuthGroup): boolean => !isSystemAdmin(authGroup) && !isSurveyManager(authGroup)\n\nconst getSurveyUuid = (authGroup: AuthGroup): string | undefined => authGroup?.surveyUuid\n\nconst getRecordSteps = (authGroup?: AuthGroup): { [key: string]: RecordStepPermission } | undefined =>\n authGroup?.recordSteps\n\nconst getRecordEditLevel =\n (step: string) =>\n (authGroup?: AuthGroup): RecordStepPermission => {\n const steps = getRecordSteps(authGroup)\n if (!steps) throw new Error('No steps')\n\n return steps[step]\n }\n\nconst getDefaultAuthGroups = (surveyUuid: string): AuthGroup[] =>\n DEFAULT_AUTH_GROUPS.map((group) => ({ ...group, uuid: UUIDs.v4(), surveyUuid }))\n\nconst getPermissions = (group: AuthGroup) => permissionsByGroupName[group.name] ?? []\n\nconst sortGroups = (groups: AuthGroup[]) => {\n const sortedGroups = [...groups]\n sortedGroups.sort((group1, group2) => {\n const sortOrder1 = sortedGroupNames.indexOf(group1.name)\n const sortOrder2 = sortedGroupNames.indexOf(group2.name)\n return sortOrder1 - sortOrder2\n })\n return sortedGroups\n}\n\nexport const AuthGroups = {\n isSystemAdmin,\n isSurveyGroup,\n isSurveyManager,\n getSurveyUuid,\n getRecordSteps,\n getRecordEditLevel,\n getDefaultAuthGroups,\n getPermissions,\n sortGroups,\n}\n"]}
1
+ {"version":3,"file":"authGroups.js","sourceRoot":"","sources":["../../../src/auth/authGroups.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,UAAU,CAAA;AAChC,OAAO,EAAa,aAAa,EAAE,mBAAmB,EAAE,sBAAsB,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAA;AAGrH,MAAM,aAAa,GAAG,CAAC,SAAoB,EAAW,EAAE,CAAC,CAAA,SAAS,aAAT,SAAS,uBAAT,SAAS,CAAE,IAAI,MAAK,aAAa,CAAC,WAAW,CAAA;AAEtG,MAAM,eAAe,GAAG,CAAC,SAAoB,EAAW,EAAE,CAAC,CAAA,SAAS,aAAT,SAAS,uBAAT,SAAS,CAAE,IAAI,MAAK,aAAa,CAAC,aAAa,CAAA;AAE1G,MAAM,aAAa,GAAG,CAAC,SAAoB,EAAW,EAAE,CAAC,CAAC,aAAa,CAAC,SAAS,CAAC,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,CAAA;AAEjH,MAAM,aAAa,GAAG,CAAC,SAAoB,EAAsB,EAAE,CAAC,SAAS,aAAT,SAAS,uBAAT,SAAS,CAAE,UAAU,CAAA;AAEzF,MAAM,cAAc,GAAG,CAAC,SAAqB,EAAuD,EAAE,CACpG,SAAS,aAAT,SAAS,uBAAT,SAAS,CAAE,WAAW,CAAA;AAExB,MAAM,kBAAkB,GACtB,CAAC,IAAY,EAAE,EAAE,CACjB,CAAC,SAAqB,EAAwB,EAAE;IAC9C,MAAM,KAAK,GAAG,cAAc,CAAC,SAAS,CAAC,CAAA;IACvC,IAAI,CAAC,KAAK;QAAE,MAAM,IAAI,KAAK,CAAC,UAAU,CAAC,CAAA;IAEvC,OAAO,KAAK,CAAC,IAAI,CAAC,CAAA;AACpB,CAAC,CAAA;AAEH,MAAM,oBAAoB,GAAG,CAAC,UAAkB,EAAe,EAAE,CAC/D,mBAAmB,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,iCAAM,KAAK,KAAE,IAAI,EAAE,KAAK,CAAC,EAAE,EAAE,EAAE,UAAU,IAAG,CAAC,CAAA;AAElF,MAAM,cAAc,GAAG,CAAC,KAAgB,EAAE,EAAE,wBAAC,sBAAsB,CAAC,KAAK,CAAC,IAAI,CAAC,mCAAI,EAAE,GAAA,CAAA;AAErF,MAAM,UAAU,GAAG,CAAC,MAAmB,EAAE,EAAE;IACzC,MAAM,YAAY,GAAG,CAAC,GAAG,MAAM,CAAC,CAAA;IAChC,YAAY,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE;QACnC,MAAM,UAAU,GAAG,gBAAgB,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;QACxD,MAAM,UAAU,GAAG,gBAAgB,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;QACxD,OAAO,UAAU,GAAG,UAAU,CAAA;IAChC,CAAC,CAAC,CAAA;IACF,OAAO,YAAY,CAAA;AACrB,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,UAAU,GAAG;IACxB,aAAa;IACb,aAAa;IACb,eAAe;IACf,aAAa;IACb,cAAc;IACd,kBAAkB;IAClB,oBAAoB;IACpB,cAAc;IACd,UAAU;CACX,CAAA","sourcesContent":["import { UUIDs } from '../utils'\nimport { AuthGroup, AuthGroupName, DEFAULT_AUTH_GROUPS, permissionsByGroupName, sortedGroupNames } from './authGroup'\nimport { RecordStepPermission } from './permission'\n\nconst isSystemAdmin = (authGroup: AuthGroup): boolean => authGroup?.name === AuthGroupName.systemAdmin\n\nconst isSurveyManager = (authGroup: AuthGroup): boolean => authGroup?.name === AuthGroupName.surveyManager\n\nconst isSurveyGroup = (authGroup: AuthGroup): boolean => !isSystemAdmin(authGroup) && !isSurveyManager(authGroup)\n\nconst getSurveyUuid = (authGroup: AuthGroup): string | undefined => authGroup?.surveyUuid\n\nconst getRecordSteps = (authGroup?: AuthGroup): { [key: string]: RecordStepPermission } | undefined =>\n authGroup?.recordSteps\n\nconst getRecordEditLevel =\n (step: string) =>\n (authGroup?: AuthGroup): RecordStepPermission => {\n const steps = getRecordSteps(authGroup)\n if (!steps) throw new Error('No steps')\n\n return steps[step]\n }\n\nconst getDefaultAuthGroups = (surveyUuid: string): AuthGroup[] =>\n DEFAULT_AUTH_GROUPS.map((group) => ({ ...group, uuid: UUIDs.v4(), surveyUuid }))\n\nconst getPermissions = (group: AuthGroup) => permissionsByGroupName[group.name] ?? []\n\nconst sortGroups = (groups: AuthGroup[]) => {\n const sortedGroups = [...groups]\n sortedGroups.sort((group1, group2) => {\n const sortOrder1 = sortedGroupNames.indexOf(group1.name)\n const sortOrder2 = sortedGroupNames.indexOf(group2.name)\n return sortOrder1 - sortOrder2\n })\n return sortedGroups\n}\n\nexport const AuthGroups = {\n isSystemAdmin,\n isSurveyGroup,\n isSurveyManager,\n getSurveyUuid,\n getRecordSteps,\n getRecordEditLevel,\n getDefaultAuthGroups,\n getPermissions,\n sortGroups,\n}\n"]}
@@ -18,14 +18,15 @@ const getAuthGroupByName = (groupName) => (user) => {
18
18
  return authGroups.find((group) => group.name === groupName);
19
19
  };
20
20
  const getCombinedExtraProps = (surveyUuid) => (user) => {
21
- var _a, _b, _c;
21
+ var _a;
22
+ var _b, _c;
22
23
  const userSurveyAuthGroup = user ? Users.getAuthGroupBySurveyUuid(surveyUuid)(user) : null;
23
24
  const userAuthGroupExtraProps = (_b = (_a = userSurveyAuthGroup === null || userSurveyAuthGroup === void 0 ? void 0 : userSurveyAuthGroup.props) === null || _a === void 0 ? void 0 : _a.extra) !== null && _b !== void 0 ? _b : {};
24
25
  const userExtraProps = (_c = user === null || user === void 0 ? void 0 : user.props.extra) !== null && _c !== void 0 ? _c : {};
25
26
  // user auth group extra props overwrite user extra props
26
27
  return Object.assign(Object.assign({}, userExtraProps), userAuthGroupExtraProps);
27
28
  };
28
- const getMaxSurveys = (user) => { var _a, _b; return (_b = (_a = user.props) === null || _a === void 0 ? void 0 : _a.maxSurveys) !== null && _b !== void 0 ? _b : defaultMaxSurveys; };
29
+ const getMaxSurveys = (user) => { var _a; var _b; return (_b = (_a = user.props) === null || _a === void 0 ? void 0 : _a.maxSurveys) !== null && _b !== void 0 ? _b : defaultMaxSurveys; };
29
30
  const isEqual = (userToCompare) => (user) => user && userToCompare ? user === userToCompare || user.uuid === userToCompare.uuid : false;
30
31
  export const Users = {
31
32
  hasAccepted,
@@ -1 +1 @@
1
- {"version":3,"file":"users.js","sourceRoot":"","sources":["../../../src/auth/users.ts"],"names":[],"mappings":"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","sourcesContent":["import { Dictionary } from '../common'\nimport { AuthGroupName } from './authGroup'\nimport { AuthGroups } from './authGroups'\nimport { User, UserAuthGroup, UserStatus } from './user'\n\nconst defaultMaxSurveys = 5\n\nconst hasAccepted = (user: User): boolean => user?.status === UserStatus.ACCEPTED\n\nconst getAuthGroups = (user: User): UserAuthGroup[] => user?.authGroups ?? []\n\nconst isSystemAdmin = (user: User): boolean => getAuthGroups(user).some(AuthGroups.isSystemAdmin)\n\nconst isSurveyManager = (user: User): boolean => getAuthGroups(user).some(AuthGroups.isSurveyManager)\n\nconst getAuthGroupBySurveyUuid =\n (surveyUuid?: string, includeSystemAdmin = true) =>\n (user: User): UserAuthGroup | undefined => {\n const authGroups = getAuthGroups(user)\n if (!authGroups) return undefined\n return includeSystemAdmin && isSystemAdmin(user)\n ? authGroups.find(AuthGroups.isSystemAdmin)\n : authGroups.find((authGroup) => authGroup.surveyUuid === surveyUuid)\n }\n\nconst getAuthGroupByName = (groupName: AuthGroupName) => (user: User) => {\n const authGroups = getAuthGroups(user)\n return authGroups.find((group) => group.name === groupName)\n}\n\nconst getCombinedExtraProps =\n (surveyUuid: string) =>\n (user: User): Dictionary<any> => {\n const userSurveyAuthGroup = user ? Users.getAuthGroupBySurveyUuid(surveyUuid)(user) : null\n const userAuthGroupExtraProps = userSurveyAuthGroup?.props?.extra ?? {}\n const userExtraProps = user?.props.extra ?? {}\n // user auth group extra props overwrite user extra props\n return { ...userExtraProps, ...userAuthGroupExtraProps }\n }\n\nconst getMaxSurveys = (user: User) => user.props?.maxSurveys ?? defaultMaxSurveys\n\nconst isEqual =\n (userToCompare: User) =>\n (user: User): boolean =>\n user && userToCompare ? user === userToCompare || user.uuid === userToCompare.uuid : false\n\nexport const Users = {\n hasAccepted,\n getAuthGroups,\n isSystemAdmin,\n isSurveyManager,\n getAuthGroupBySurveyUuid,\n getAuthGroupByName,\n getCombinedExtraProps,\n getMaxSurveys,\n isEqual,\n}\n"]}
1
+ {"version":3,"file":"users.js","sourceRoot":"","sources":["../../../src/auth/users.ts"],"names":[],"mappings":"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","sourcesContent":["import { Dictionary } from '../common'\nimport { AuthGroupName } from './authGroup'\nimport { AuthGroups } from './authGroups'\nimport { User, UserAuthGroup, UserStatus } from './user'\n\nconst defaultMaxSurveys = 5\n\nconst hasAccepted = (user: User): boolean => user?.status === UserStatus.ACCEPTED\n\nconst getAuthGroups = (user: User): UserAuthGroup[] => user?.authGroups ?? []\n\nconst isSystemAdmin = (user: User): boolean => getAuthGroups(user).some(AuthGroups.isSystemAdmin)\n\nconst isSurveyManager = (user: User): boolean => getAuthGroups(user).some(AuthGroups.isSurveyManager)\n\nconst getAuthGroupBySurveyUuid =\n (surveyUuid?: string, includeSystemAdmin = true) =>\n (user: User): UserAuthGroup | undefined => {\n const authGroups = getAuthGroups(user)\n if (!authGroups) return undefined\n return includeSystemAdmin && isSystemAdmin(user)\n ? authGroups.find(AuthGroups.isSystemAdmin)\n : authGroups.find((authGroup) => authGroup.surveyUuid === surveyUuid)\n }\n\nconst getAuthGroupByName = (groupName: AuthGroupName) => (user: User) => {\n const authGroups = getAuthGroups(user)\n return authGroups.find((group) => group.name === groupName)\n}\n\nconst getCombinedExtraProps =\n (surveyUuid: string) =>\n (user: User): Dictionary<any> => {\n const userSurveyAuthGroup = user ? Users.getAuthGroupBySurveyUuid(surveyUuid)(user) : null\n const userAuthGroupExtraProps = userSurveyAuthGroup?.props?.extra ?? {}\n const userExtraProps = user?.props.extra ?? {}\n // user auth group extra props overwrite user extra props\n return { ...userExtraProps, ...userAuthGroupExtraProps }\n }\n\nconst getMaxSurveys = (user: User) => user.props?.maxSurveys ?? defaultMaxSurveys\n\nconst isEqual =\n (userToCompare: User) =>\n (user: User): boolean =>\n user && userToCompare ? user === userToCompare || user.uuid === userToCompare.uuid : false\n\nexport const Users = {\n hasAccepted,\n getAuthGroups,\n isSystemAdmin,\n isSurveyManager,\n getAuthGroupBySurveyUuid,\n getAuthGroupByName,\n getCombinedExtraProps,\n getMaxSurveys,\n isEqual,\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"categories.js","sourceRoot":"","sources":["../../../src/category/categories.ts"],"names":[],"mappings":"AAGA,MAAM,gBAAgB,GAAG,CAAC,QAAkB,EAA6B,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,YAAY,CAAA;AAEvG,MAAM,oBAAoB,GAAG,CAAC,QAAkB,EAAY,EAAE,WAAC,OAAA,MAAM,CAAC,IAAI,CAAC,MAAA,gBAAgB,CAAC,QAAQ,CAAC,mCAAI,EAAE,CAAC,CAAA,EAAA,CAAA;AAE5G,MAAM,qBAAqB,GACzB,CAAC,IAAY,EAAE,EAAE,CACjB,CAAC,QAAkB,EAA4B,EAAE,WAC/C,OAAA,MAAA,gBAAgB,CAAC,QAAQ,CAAC,0CAAG,IAAI,CAAC,CAAA,EAAA,CAAA;AAEtC,MAAM,CAAC,MAAM,UAAU,GAAG;IACxB,gBAAgB;IAChB,oBAAoB;IACpB,qBAAqB;CACtB,CAAA","sourcesContent":["import { ExtraPropDef, ExtraPropDefs } from '../extraProp'\nimport { Category } from './category'\n\nconst getExtraPropDefs = (category: Category): ExtraPropDefs | undefined => category.props.itemExtraDef\n\nconst getExtraPropDefNames = (category: Category): string[] => Object.keys(getExtraPropDefs(category) ?? {})\n\nconst getExtraPropDefByName =\n (name: string) =>\n (category: Category): ExtraPropDef | undefined =>\n getExtraPropDefs(category)?.[name]\n\nexport const Categories = {\n getExtraPropDefs,\n getExtraPropDefNames,\n getExtraPropDefByName,\n}\n"]}
1
+ {"version":3,"file":"categories.js","sourceRoot":"","sources":["../../../src/category/categories.ts"],"names":[],"mappings":"AAGA,MAAM,gBAAgB,GAAG,CAAC,QAAkB,EAA6B,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,YAAY,CAAA;AAEvG,MAAM,oBAAoB,GAAG,CAAC,QAAkB,EAAY,EAAE,kBAAC,MAAM,CAAC,IAAI,OAAC,gBAAgB,CAAC,QAAQ,CAAC,mCAAI,EAAE,CAAC,GAAA,CAAA;AAE5G,MAAM,qBAAqB,GACzB,CAAC,IAAY,EAAE,EAAE,CACjB,CAAC,QAAkB,EAA4B,EAAE,kBAC/C,MAAA,gBAAgB,CAAC,QAAQ,CAAC,0CAAG,IAAI,CAAC,GAAA,CAAA;AAEtC,MAAM,CAAC,MAAM,UAAU,GAAG;IACxB,gBAAgB;IAChB,oBAAoB;IACpB,qBAAqB;CACtB,CAAA","sourcesContent":["import { ExtraPropDef, ExtraPropDefs } from '../extraProp'\nimport { Category } from './category'\n\nconst getExtraPropDefs = (category: Category): ExtraPropDefs | undefined => category.props.itemExtraDef\n\nconst getExtraPropDefNames = (category: Category): string[] => Object.keys(getExtraPropDefs(category) ?? {})\n\nconst getExtraPropDefByName =\n (name: string) =>\n (category: Category): ExtraPropDef | undefined =>\n getExtraPropDefs(category)?.[name]\n\nexport const Categories = {\n getExtraPropDefs,\n getExtraPropDefNames,\n getExtraPropDefByName,\n}\n"]}
@@ -1,7 +1,8 @@
1
1
  const getCode = (item) => { var _a; return (_a = item.props.code) !== null && _a !== void 0 ? _a : ''; };
2
2
  const getIndex = (item) => { var _a; return (_a = item.props.index) !== null && _a !== void 0 ? _a : Number.NaN; };
3
3
  const getLabel = (item, lang, defaultToCode) => {
4
- var _a, _b;
4
+ var _a;
5
+ var _b;
5
6
  const label = (_b = (_a = item.props.labels) === null || _a === void 0 ? void 0 : _a[lang]) !== null && _b !== void 0 ? _b : '';
6
7
  return !label && defaultToCode ? getCode(item) : label;
7
8
  };
@@ -1 +1 @@
1
- {"version":3,"file":"categoryItems.js","sourceRoot":"","sources":["../../../src/category/categoryItems.ts"],"names":[],"mappings":"AAGA,MAAM,OAAO,GAAG,CAAC,IAAkB,EAAU,EAAE,WAAC,OAAA,MAAA,IAAI,CAAC,KAAK,CAAC,IAAI,mCAAI,EAAE,CAAA,EAAA,CAAA;AAErE,MAAM,QAAQ,GAAG,CAAC,IAAkB,EAAU,EAAE,WAAC,OAAA,MAAA,IAAI,CAAC,KAAK,CAAC,KAAK,mCAAI,MAAM,CAAC,GAAG,CAAA,EAAA,CAAA;AAE/E,MAAM,QAAQ,GAAG,CAAC,IAAkB,EAAE,IAAkB,EAAE,aAAuB,EAAU,EAAE;;IAC3F,MAAM,KAAK,GAAG,MAAA,MAAA,IAAI,CAAC,KAAK,CAAC,MAAM,0CAAG,IAAI,CAAC,mCAAI,EAAE,CAAA;IAC7C,OAAO,CAAC,KAAK,IAAI,aAAa,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAA;AACxD,CAAC,CAAA;AAED,MAAM,gBAAgB,GAAG,CAAC,IAAkB,EAAE,IAAkB,EAAU,EAAE;IAC1E,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IAC1B,MAAM,KAAK,GAAG,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,CAAA;IAClC,OAAO,KAAK,CAAC,CAAC,CAAC,GAAG,KAAK,KAAK,IAAI,GAAG,CAAC,CAAC,CAAC,IAAI,CAAA;AAC5C,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,aAAa,GAAG;IAC3B,OAAO;IACP,QAAQ;IACR,QAAQ;IACR,gBAAgB;CACjB,CAAA","sourcesContent":["import { LanguageCode } from '../language'\nimport { CategoryItem } from './item'\n\nconst getCode = (item: CategoryItem): string => item.props.code ?? ''\n\nconst getIndex = (item: CategoryItem): number => item.props.index ?? Number.NaN\n\nconst getLabel = (item: CategoryItem, lang: LanguageCode, defaultToCode?: boolean): string => {\n const label = item.props.labels?.[lang] ?? ''\n return !label && defaultToCode ? getCode(item) : label\n}\n\nconst getLabelWithCode = (item: CategoryItem, lang: LanguageCode): string => {\n const code = getCode(item)\n const label = getLabel(item, lang)\n return label ? `${label} (${code})` : code\n}\n\nexport const CategoryItems = {\n getCode,\n getIndex,\n getLabel,\n getLabelWithCode,\n}\n"]}
1
+ {"version":3,"file":"categoryItems.js","sourceRoot":"","sources":["../../../src/category/categoryItems.ts"],"names":[],"mappings":"AAGA,MAAM,OAAO,GAAG,CAAC,IAAkB,EAAU,EAAE,wBAAC,IAAI,CAAC,KAAK,CAAC,IAAI,mCAAI,EAAE,GAAA,CAAA;AAErE,MAAM,QAAQ,GAAG,CAAC,IAAkB,EAAU,EAAE,wBAAC,IAAI,CAAC,KAAK,CAAC,KAAK,mCAAI,MAAM,CAAC,GAAG,GAAA,CAAA;AAE/E,MAAM,QAAQ,GAAG,CAAC,IAAkB,EAAE,IAAkB,EAAE,aAAuB,EAAU,EAAE;;;IAC3F,MAAM,KAAK,SAAG,MAAA,IAAI,CAAC,KAAK,CAAC,MAAM,0CAAG,IAAI,CAAC,mCAAI,EAAE,CAAA;IAC7C,OAAO,CAAC,KAAK,IAAI,aAAa,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAA;AACxD,CAAC,CAAA;AAED,MAAM,gBAAgB,GAAG,CAAC,IAAkB,EAAE,IAAkB,EAAU,EAAE;IAC1E,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IAC1B,MAAM,KAAK,GAAG,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,CAAA;IAClC,OAAO,KAAK,CAAC,CAAC,CAAC,GAAG,KAAK,KAAK,IAAI,GAAG,CAAC,CAAC,CAAC,IAAI,CAAA;AAC5C,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,aAAa,GAAG;IAC3B,OAAO;IACP,QAAQ;IACR,QAAQ;IACR,gBAAgB;CACjB,CAAA","sourcesContent":["import { LanguageCode } from '../language'\nimport { CategoryItem } from './item'\n\nconst getCode = (item: CategoryItem): string => item.props.code ?? ''\n\nconst getIndex = (item: CategoryItem): number => item.props.index ?? Number.NaN\n\nconst getLabel = (item: CategoryItem, lang: LanguageCode, defaultToCode?: boolean): string => {\n const label = item.props.labels?.[lang] ?? ''\n return !label && defaultToCode ? getCode(item) : label\n}\n\nconst getLabelWithCode = (item: CategoryItem, lang: LanguageCode): string => {\n const code = getCode(item)\n const label = getLabel(item, lang)\n return label ? `${label} (${code})` : code\n}\n\nexport const CategoryItems = {\n getCode,\n getIndex,\n getLabel,\n getLabelWithCode,\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"FlatDataExportModel.js","sourceRoot":"","sources":["../../../src/dataExport/FlatDataExportModel.ts"],"names":[],"mappings":"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","sourcesContent":["import { CategoryItems } from '../category'\nimport { NodeValues } from '../node'\nimport { NodeDef, NodeDefCode, NodeDefs, NodeDefType } from '../nodeDef'\nimport { Survey, Surveys } from '../survey'\nimport { Strings } from '../utils'\nimport { FlatDataExportDefaultOptions, FlatDataExportOptions } from './FlatDataExportOptions'\n\nexport enum FlatDataExportColumnDataType {\n boolean = 'boolean',\n numeric = 'numeric',\n text = 'text',\n}\n\nexport const getExpandedCategoryItemColumnHeader = ({ nodeDef, code }: { nodeDef: NodeDef<any>; code: string }) =>\n `${NodeDefs.getName(nodeDef)}__${code}`\n\nconst getMainColumn = ({ nodeDef, dataType }: { nodeDef: any; dataType: string }) => ({\n header: NodeDefs.getName(nodeDef),\n nodeDef,\n dataType,\n})\n\ntype Column = {\n key?: boolean\n header: string\n nodeDef?: any\n dataType?: string\n valueProp?: string\n}\n\ntype ColumnsExtractor = ({\n survey,\n nodeDef,\n options,\n}: {\n nodeDef: NodeDef<any>\n survey: Survey\n options: FlatDataExportOptions\n}) => Column[]\n\nconst columnsExtractorByNodeDefType: Partial<Record<NodeDefType, ColumnsExtractor>> = {\n [NodeDefType.boolean]: ({ nodeDef }) => [getMainColumn({ nodeDef, dataType: FlatDataExportColumnDataType.boolean })],\n [NodeDefType.code]: ({ survey, nodeDef, options }) => {\n const nodeDefCode = nodeDef as NodeDefCode\n const { includeCategoryItemsLabels = false, expandCategoryItems = false } = options ?? {}\n const nodeDefName = NodeDefs.getName(nodeDef)\n const result = [\n {\n header: nodeDefName,\n nodeDef,\n dataType: FlatDataExportColumnDataType.text,\n valueProp: NodeValues.ValuePropsCode.code,\n },\n ]\n if (includeCategoryItemsLabels) {\n result.push({\n header: `${nodeDefName}_label`,\n nodeDef,\n dataType: FlatDataExportColumnDataType.text,\n valueProp: NodeValues.ValuePropsCode.label,\n })\n }\n if (expandCategoryItems) {\n const categoryUuid = NodeDefs.getCategoryUuid(nodeDefCode)!\n const levelIndex = Surveys.getNodeDefCategoryLevelIndex({ survey, nodeDef: nodeDefCode })\n const items = Surveys.getCategoryItemsInLevel({ survey, categoryUuid, levelIndex })\n items.forEach((item) => {\n result.push({\n header: getExpandedCategoryItemColumnHeader({ nodeDef, code: CategoryItems.getCode(item) }),\n nodeDef,\n dataType: FlatDataExportColumnDataType.boolean,\n valueProp: NodeValues.ValuePropsCode.code,\n })\n })\n }\n return result\n },\n [NodeDefType.coordinate]: ({ nodeDef }) => {\n const nodeDefName = NodeDefs.getName(nodeDef)\n return [\n {\n header: `${nodeDefName}_x`,\n nodeDef,\n dataType: FlatDataExportColumnDataType.numeric,\n valueProp: NodeValues.ValuePropsCoordinate.x,\n },\n {\n header: `${nodeDefName}_y`,\n nodeDef,\n dataType: FlatDataExportColumnDataType.numeric,\n valueProp: NodeValues.ValuePropsCoordinate.y,\n },\n {\n header: `${nodeDefName}_srs`,\n nodeDef,\n dataType: FlatDataExportColumnDataType.text,\n valueProp: NodeValues.ValuePropsCoordinate.srs,\n },\n ...NodeDefs.getCoordinateAdditionalFields(nodeDef).map((field) => ({\n header: `${nodeDefName}_${Strings.snakeCase(field)}`,\n nodeDef,\n dataType: FlatDataExportColumnDataType.numeric,\n valueProp: field,\n })),\n ]\n },\n [NodeDefType.date]: ({ nodeDef }) => [getMainColumn({ nodeDef, dataType: FlatDataExportColumnDataType.text })],\n [NodeDefType.decimal]: ({ nodeDef }) => [getMainColumn({ nodeDef, dataType: FlatDataExportColumnDataType.numeric })],\n [NodeDefType.file]: ({ nodeDef }) => {\n const nodeDefName = NodeDefs.getName(nodeDef)\n return [\n {\n header: `${nodeDefName}_file_uuid`,\n nodeDef,\n dataType: FlatDataExportColumnDataType.text,\n valueProp: NodeValues.ValuePropsFile.fileUuid,\n },\n {\n header: `${nodeDefName}_file_name`,\n nodeDef,\n dataType: FlatDataExportColumnDataType.text,\n valueProp: NodeValues.ValuePropsFile.fileName,\n },\n ]\n },\n [NodeDefType.integer]: ({ nodeDef }) => [getMainColumn({ nodeDef, dataType: FlatDataExportColumnDataType.numeric })],\n [NodeDefType.taxon]: ({ nodeDef, options }) => {\n const { includeTaxonScientificName = false } = options ?? {}\n const nodeDefName = NodeDefs.getName(nodeDef)\n return [\n {\n header: nodeDefName,\n nodeDef,\n dataType: FlatDataExportColumnDataType.text,\n valueProp: NodeValues.ValuePropsTaxon.code,\n },\n ...(includeTaxonScientificName\n ? [\n {\n header: `${nodeDefName}_scientific_name`,\n nodeDef,\n dataType: FlatDataExportColumnDataType.text,\n valueProp: NodeValues.ValuePropsTaxon.scientificName,\n },\n {\n header: `${nodeDefName}_vernacular_name`,\n nodeDef,\n dataType: FlatDataExportColumnDataType.text,\n valueProp: NodeValues.ValuePropsTaxon.vernacularName,\n },\n ]\n : []),\n ]\n },\n [NodeDefType.text]: ({ nodeDef }) => [getMainColumn({ nodeDef, dataType: FlatDataExportColumnDataType.text })],\n [NodeDefType.time]: ({ nodeDef }) => [getMainColumn({ nodeDef, dataType: FlatDataExportColumnDataType.text })],\n}\n\nconst RECORD_CYCLE_HEADER = 'record_cycle'\n\nexport class FlatDataExportModel {\n survey: Survey\n cycle: string\n nodeDefContext: NodeDef<any>\n options: FlatDataExportOptions\n columns: Column[]\n\n static readonly columnDataType: typeof FlatDataExportColumnDataType = FlatDataExportColumnDataType\n static readonly getExpandedCategoryItemColumnHeader: typeof getExpandedCategoryItemColumnHeader =\n getExpandedCategoryItemColumnHeader\n\n constructor({\n survey,\n cycle,\n nodeDefContext,\n options = FlatDataExportDefaultOptions,\n }: {\n survey: Survey\n cycle: string\n nodeDefContext: NodeDef<any>\n options?: FlatDataExportOptions\n }) {\n this.survey = survey\n this.cycle = cycle\n this.nodeDefContext = nodeDefContext\n this.options = { ...FlatDataExportDefaultOptions, ...options }\n this.columns = []\n\n this.init()\n }\n\n init() {\n this._initColumns()\n }\n\n _initColumns() {\n const { addCycle } = this.options\n\n const ancestorsColumns = this.extractAncestorsColumns()\n\n const contextNodeDefsColumns = this.extractContextNodeDefsColumns()\n\n this.columns = [\n ...(addCycle ? [{ header: RECORD_CYCLE_HEADER }] : []),\n ...ancestorsColumns,\n ...contextNodeDefsColumns,\n ]\n }\n\n _createColumnsFromAttributeDefs(attributeDefs: NodeDef<any>[]) {\n const { survey, options } = this\n const result = []\n for (const nodeDef of attributeDefs) {\n const columnsGetter = columnsExtractorByNodeDefType[NodeDefs.getType(nodeDef)]\n\n const columnsPerAttribute = columnsGetter ? columnsGetter({ survey, nodeDef, options }) : []\n\n if (NodeDefs.isKey(nodeDef)) {\n for (const col of columnsPerAttribute) {\n col.key = true\n }\n }\n result.push(...columnsPerAttribute)\n }\n return result\n }\n\n protected extractAncestorsColumns(): Column[] {\n const { survey, cycle, nodeDefContext, options } = this\n const { includeAncestorAttributes } = options\n\n const ancestorsColumns: Column[] = []\n\n Surveys.visitAncestorsAndSelfNodeDef({\n survey,\n nodeDef: nodeDefContext,\n visitor: (nodeDefAncestor) => {\n const ancestorAttributeDefs = includeAncestorAttributes\n ? // include all ancestor attributes\n this.extractAncestorAttributeDefs(nodeDefAncestor)\n : // consider only ancestor key attributes\n Surveys.getNodeDefKeys({ survey, cycle, nodeDef: nodeDefAncestor })\n const ancestorColumns = this._createColumnsFromAttributeDefs(ancestorAttributeDefs)\n ancestorsColumns.unshift(...ancestorColumns)\n },\n includeSelf: false,\n })\n\n return ancestorsColumns\n }\n\n extractAncestorAttributeDefs(nodeDefContext: NodeDef<any>): NodeDef<any>[] {\n const { cycle, options, survey } = this\n const {\n includeAnalysis,\n includeFileAttributeDefs,\n includeFiles,\n includeMultipleAttributes,\n includeReadOnlyAttributes,\n } = options\n\n let result = NodeDefs.isEntity(nodeDefContext)\n ? Surveys.getDescendantsInSingleEntities({\n survey,\n cycle,\n nodeDef: nodeDefContext,\n predicate: includeMultipleAttributes ? NodeDefs.isAttribute : NodeDefs.isSingleAttribute,\n includeAnalysis,\n })\n : [nodeDefContext] // Multiple attribute\n\n result = result.filter(\n (nodeDef) =>\n (includeFileAttributeDefs || includeFiles || NodeDefs.getType(nodeDef) !== NodeDefType.file) &&\n (includeReadOnlyAttributes || !NodeDefs.isReadOnly(nodeDef) || NodeDefs.isKey(nodeDef))\n )\n return result\n }\n\n protected extractContextNodeDefsColumns(): Column[] {\n const descendantDefs = this.extractAncestorAttributeDefs(this.nodeDefContext)\n return this._createColumnsFromAttributeDefs(descendantDefs)\n }\n\n get headers() {\n return this.columns.map((column) => column.header)\n }\n\n getColumnByHeader(header: string): Column | undefined {\n return this.columns.find((column) => column.header === header)\n }\n}\n"]}
1
+ {"version":3,"file":"FlatDataExportModel.js","sourceRoot":"","sources":["../../../src/dataExport/FlatDataExportModel.ts"],"names":[],"mappings":"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","sourcesContent":["import { CategoryItems } from '../category'\nimport { NodeValues } from '../node'\nimport { NodeDef, NodeDefCode, NodeDefs, NodeDefType } from '../nodeDef'\nimport { Survey, Surveys } from '../survey'\nimport { Strings } from '../utils'\nimport { FlatDataExportDefaultOptions, FlatDataExportOptions } from './FlatDataExportOptions'\n\nexport enum FlatDataExportColumnDataType {\n boolean = 'boolean',\n numeric = 'numeric',\n text = 'text',\n}\n\nexport const getExpandedCategoryItemColumnHeader = ({ nodeDef, code }: { nodeDef: NodeDef<any>; code: string }) =>\n `${NodeDefs.getName(nodeDef)}__${code}`\n\nconst getMainColumn = ({ nodeDef, dataType }: { nodeDef: any; dataType: string }) => ({\n header: NodeDefs.getName(nodeDef),\n nodeDef,\n dataType,\n})\n\ntype Column = {\n key?: boolean\n header: string\n nodeDef?: any\n dataType?: string\n valueProp?: string\n}\n\ntype ColumnsExtractor = ({\n survey,\n nodeDef,\n options,\n}: {\n nodeDef: NodeDef<any>\n survey: Survey\n options: FlatDataExportOptions\n}) => Column[]\n\nconst columnsExtractorByNodeDefType: Partial<Record<NodeDefType, ColumnsExtractor>> = {\n [NodeDefType.boolean]: ({ nodeDef }) => [getMainColumn({ nodeDef, dataType: FlatDataExportColumnDataType.boolean })],\n [NodeDefType.code]: ({ survey, nodeDef, options }) => {\n const nodeDefCode = nodeDef as NodeDefCode\n const { includeCategoryItemsLabels = false, expandCategoryItems = false } = options ?? {}\n const nodeDefName = NodeDefs.getName(nodeDef)\n const result = [\n {\n header: nodeDefName,\n nodeDef,\n dataType: FlatDataExportColumnDataType.text,\n valueProp: NodeValues.ValuePropsCode.code,\n },\n ]\n if (includeCategoryItemsLabels) {\n result.push({\n header: `${nodeDefName}_label`,\n nodeDef,\n dataType: FlatDataExportColumnDataType.text,\n valueProp: NodeValues.ValuePropsCode.label,\n })\n }\n if (expandCategoryItems) {\n const categoryUuid = NodeDefs.getCategoryUuid(nodeDefCode)!\n const levelIndex = Surveys.getNodeDefCategoryLevelIndex({ survey, nodeDef: nodeDefCode })\n const items = Surveys.getCategoryItemsInLevel({ survey, categoryUuid, levelIndex })\n items.forEach((item) => {\n result.push({\n header: getExpandedCategoryItemColumnHeader({ nodeDef, code: CategoryItems.getCode(item) }),\n nodeDef,\n dataType: FlatDataExportColumnDataType.boolean,\n valueProp: NodeValues.ValuePropsCode.code,\n })\n })\n }\n return result\n },\n [NodeDefType.coordinate]: ({ nodeDef }) => {\n const nodeDefName = NodeDefs.getName(nodeDef)\n return [\n {\n header: `${nodeDefName}_x`,\n nodeDef,\n dataType: FlatDataExportColumnDataType.numeric,\n valueProp: NodeValues.ValuePropsCoordinate.x,\n },\n {\n header: `${nodeDefName}_y`,\n nodeDef,\n dataType: FlatDataExportColumnDataType.numeric,\n valueProp: NodeValues.ValuePropsCoordinate.y,\n },\n {\n header: `${nodeDefName}_srs`,\n nodeDef,\n dataType: FlatDataExportColumnDataType.text,\n valueProp: NodeValues.ValuePropsCoordinate.srs,\n },\n ...NodeDefs.getCoordinateAdditionalFields(nodeDef).map((field) => ({\n header: `${nodeDefName}_${Strings.snakeCase(field)}`,\n nodeDef,\n dataType: FlatDataExportColumnDataType.numeric,\n valueProp: field,\n })),\n ]\n },\n [NodeDefType.date]: ({ nodeDef }) => [getMainColumn({ nodeDef, dataType: FlatDataExportColumnDataType.text })],\n [NodeDefType.decimal]: ({ nodeDef }) => [getMainColumn({ nodeDef, dataType: FlatDataExportColumnDataType.numeric })],\n [NodeDefType.file]: ({ nodeDef }) => {\n const nodeDefName = NodeDefs.getName(nodeDef)\n return [\n {\n header: `${nodeDefName}_file_uuid`,\n nodeDef,\n dataType: FlatDataExportColumnDataType.text,\n valueProp: NodeValues.ValuePropsFile.fileUuid,\n },\n {\n header: `${nodeDefName}_file_name`,\n nodeDef,\n dataType: FlatDataExportColumnDataType.text,\n valueProp: NodeValues.ValuePropsFile.fileName,\n },\n ]\n },\n [NodeDefType.integer]: ({ nodeDef }) => [getMainColumn({ nodeDef, dataType: FlatDataExportColumnDataType.numeric })],\n [NodeDefType.taxon]: ({ nodeDef, options }) => {\n const { includeTaxonScientificName = false } = options ?? {}\n const nodeDefName = NodeDefs.getName(nodeDef)\n return [\n {\n header: nodeDefName,\n nodeDef,\n dataType: FlatDataExportColumnDataType.text,\n valueProp: NodeValues.ValuePropsTaxon.code,\n },\n ...(includeTaxonScientificName\n ? [\n {\n header: `${nodeDefName}_scientific_name`,\n nodeDef,\n dataType: FlatDataExportColumnDataType.text,\n valueProp: NodeValues.ValuePropsTaxon.scientificName,\n },\n {\n header: `${nodeDefName}_vernacular_name`,\n nodeDef,\n dataType: FlatDataExportColumnDataType.text,\n valueProp: NodeValues.ValuePropsTaxon.vernacularName,\n },\n ]\n : []),\n ]\n },\n [NodeDefType.text]: ({ nodeDef }) => [getMainColumn({ nodeDef, dataType: FlatDataExportColumnDataType.text })],\n [NodeDefType.time]: ({ nodeDef }) => [getMainColumn({ nodeDef, dataType: FlatDataExportColumnDataType.text })],\n}\n\nconst RECORD_CYCLE_HEADER = 'record_cycle'\n\nexport class FlatDataExportModel {\n survey: Survey\n cycle: string\n nodeDefContext: NodeDef<any>\n options: FlatDataExportOptions\n columns: Column[]\n\n static readonly columnDataType: typeof FlatDataExportColumnDataType = FlatDataExportColumnDataType\n static readonly getExpandedCategoryItemColumnHeader: typeof getExpandedCategoryItemColumnHeader =\n getExpandedCategoryItemColumnHeader\n\n constructor({\n survey,\n cycle,\n nodeDefContext,\n options = FlatDataExportDefaultOptions,\n }: {\n survey: Survey\n cycle: string\n nodeDefContext: NodeDef<any>\n options?: FlatDataExportOptions\n }) {\n this.survey = survey\n this.cycle = cycle\n this.nodeDefContext = nodeDefContext\n this.options = { ...FlatDataExportDefaultOptions, ...options }\n this.columns = []\n\n this.init()\n }\n\n init() {\n this._initColumns()\n }\n\n _initColumns() {\n const { addCycle } = this.options\n\n const ancestorsColumns = this.extractAncestorsColumns()\n\n const contextNodeDefsColumns = this.extractContextNodeDefsColumns()\n\n this.columns = [\n ...(addCycle ? [{ header: RECORD_CYCLE_HEADER }] : []),\n ...ancestorsColumns,\n ...contextNodeDefsColumns,\n ]\n }\n\n _createColumnsFromAttributeDefs(attributeDefs: NodeDef<any>[]) {\n const { survey, options } = this\n const result = []\n for (const nodeDef of attributeDefs) {\n const columnsGetter = columnsExtractorByNodeDefType[NodeDefs.getType(nodeDef)]\n\n const columnsPerAttribute = columnsGetter ? columnsGetter({ survey, nodeDef, options }) : []\n\n if (NodeDefs.isKey(nodeDef)) {\n for (const col of columnsPerAttribute) {\n col.key = true\n }\n }\n result.push(...columnsPerAttribute)\n }\n return result\n }\n\n protected extractAncestorsColumns(): Column[] {\n const { survey, cycle, nodeDefContext, options } = this\n const { includeAncestorAttributes } = options\n\n const ancestorsColumns: Column[] = []\n\n Surveys.visitAncestorsAndSelfNodeDef({\n survey,\n nodeDef: nodeDefContext,\n visitor: (nodeDefAncestor) => {\n const ancestorAttributeDefs = includeAncestorAttributes\n ? // include all ancestor attributes\n this.extractAncestorAttributeDefs(nodeDefAncestor)\n : // consider only ancestor key attributes\n Surveys.getNodeDefKeys({ survey, cycle, nodeDef: nodeDefAncestor })\n const ancestorColumns = this._createColumnsFromAttributeDefs(ancestorAttributeDefs)\n ancestorsColumns.unshift(...ancestorColumns)\n },\n includeSelf: false,\n })\n\n return ancestorsColumns\n }\n\n extractAncestorAttributeDefs(nodeDefContext: NodeDef<any>): NodeDef<any>[] {\n const { cycle, options, survey } = this\n const {\n includeAnalysis,\n includeFileAttributeDefs,\n includeFiles,\n includeMultipleAttributes,\n includeReadOnlyAttributes,\n } = options\n\n let result = NodeDefs.isEntity(nodeDefContext)\n ? Surveys.getDescendantsInSingleEntities({\n survey,\n cycle,\n nodeDef: nodeDefContext,\n predicate: includeMultipleAttributes ? NodeDefs.isAttribute : NodeDefs.isSingleAttribute,\n includeAnalysis,\n })\n : [nodeDefContext] // Multiple attribute\n\n result = result.filter(\n (nodeDef) =>\n (includeFileAttributeDefs || includeFiles || NodeDefs.getType(nodeDef) !== NodeDefType.file) &&\n (includeReadOnlyAttributes || !NodeDefs.isReadOnly(nodeDef) || NodeDefs.isKey(nodeDef))\n )\n return result\n }\n\n protected extractContextNodeDefsColumns(): Column[] {\n const descendantDefs = this.extractAncestorAttributeDefs(this.nodeDefContext)\n return this._createColumnsFromAttributeDefs(descendantDefs)\n }\n\n get headers() {\n return this.columns.map((column) => column.header)\n }\n\n getColumnByHeader(header: string): Column | undefined {\n return this.columns.find((column) => column.header === header)\n }\n}\n"]}
@@ -12,11 +12,11 @@ const create = (params) => {
12
12
  return { uuid: UUIDs.v4(), content, props };
13
13
  };
14
14
  const getUuid = (querySummary) => { var _a; return (_a = querySummary === null || querySummary === void 0 ? void 0 : querySummary.uuid) !== null && _a !== void 0 ? _a : ''; };
15
- const getName = (querySummary) => { var _a, _b; return (_b = (_a = querySummary === null || querySummary === void 0 ? void 0 : querySummary.props) === null || _a === void 0 ? void 0 : _a.name) !== null && _b !== void 0 ? _b : ''; };
15
+ const getName = (querySummary) => { var _a; var _b; return (_b = (_a = querySummary === null || querySummary === void 0 ? void 0 : querySummary.props) === null || _a === void 0 ? void 0 : _a.name) !== null && _b !== void 0 ? _b : ''; };
16
16
  const getContent = (querySummary) => querySummary === null || querySummary === void 0 ? void 0 : querySummary.content;
17
- const getLabels = (querySummary) => { var _a, _b; return (_b = (_a = querySummary === null || querySummary === void 0 ? void 0 : querySummary.props) === null || _a === void 0 ? void 0 : _a.labels) !== null && _b !== void 0 ? _b : {}; };
17
+ const getLabels = (querySummary) => { var _a; var _b; return (_b = (_a = querySummary === null || querySummary === void 0 ? void 0 : querySummary.props) === null || _a === void 0 ? void 0 : _a.labels) !== null && _b !== void 0 ? _b : {}; };
18
18
  const getLabel = (lang) => (querySummary) => { var _a; return (_a = getLabels(querySummary)[lang]) !== null && _a !== void 0 ? _a : ''; };
19
- const getDescriptions = (querySummary) => { var _a, _b; return (_b = (_a = querySummary === null || querySummary === void 0 ? void 0 : querySummary.props) === null || _a === void 0 ? void 0 : _a.descriptions) !== null && _b !== void 0 ? _b : {}; };
19
+ const getDescriptions = (querySummary) => { var _a; var _b; return (_b = (_a = querySummary === null || querySummary === void 0 ? void 0 : querySummary.props) === null || _a === void 0 ? void 0 : _a.descriptions) !== null && _b !== void 0 ? _b : {}; };
20
20
  const getDescription = (lang) => (querySummary) => { var _a; return (_a = getDescriptions(querySummary)[lang]) !== null && _a !== void 0 ? _a : ''; };
21
21
  const assocProp = (prop, value) => (obj) => Objects.assocPath({ obj, path: ['props', prop], value });
22
22
  const assocName = (value) => (querySummary) => assocProp(PropKeys.name, value)(querySummary);
@@ -1 +1 @@
1
- {"version":3,"file":"dataQuerySummaries.js","sourceRoot":"","sources":["../../../src/dataQuery/dataQuerySummaries.ts"],"names":[],"mappings":"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","sourcesContent":["import { Labels, LanguageCode } from '../language'\nimport { Objects, UUIDs } from '../utils'\nimport { DataQuery, DataQuerySummary, DataQuerySummaryProps } from './dataQuery'\n\nconst PropKeys = {\n name: 'name',\n labels: 'labels',\n descriptions: 'descriptions',\n}\n\nconst Keys = {\n content: 'content',\n}\n\nconst create = (params: { props?: DataQuerySummaryProps; content?: DataQuery }): DataQuerySummary => {\n const { props, content } = params ?? {}\n return { uuid: UUIDs.v4(), content, props }\n}\n\nconst getUuid = (querySummary: DataQuerySummary): string => querySummary?.uuid ?? ''\n\nconst getName = (querySummary: DataQuerySummary): string => querySummary?.props?.name ?? ''\n\nconst getContent = (querySummary: DataQuerySummary): DataQuery | undefined => querySummary?.content\n\nconst getLabels = (querySummary: DataQuerySummary): Labels => querySummary?.props?.labels ?? {}\n\nconst getLabel =\n (lang: LanguageCode) =>\n (querySummary: DataQuerySummary): string =>\n getLabels(querySummary)[lang] ?? ''\n\nconst getDescriptions = (querySummary: DataQuerySummary): Labels => querySummary?.props?.descriptions ?? {}\n\nconst getDescription =\n (lang: LanguageCode) =>\n (querySummary: DataQuerySummary): string =>\n getDescriptions(querySummary)[lang] ?? ''\n\nconst assocProp =\n (prop: string, value: any) =>\n (obj: any): any =>\n Objects.assocPath({ obj, path: ['props', prop], value })\n\nconst assocName =\n (value: string) =>\n (querySummary: DataQuerySummary): DataQuerySummary =>\n assocProp(PropKeys.name, value)(querySummary)\n\nconst assocLabels =\n (value: Labels) =>\n (querySummary: DataQuerySummary): DataQuerySummary =>\n assocProp(PropKeys.labels, value)(querySummary)\n\nconst assocDescriptions =\n (value: Labels) =>\n (querySummary: DataQuerySummary): DataQuerySummary =>\n assocProp(PropKeys.descriptions, value)(querySummary)\n\nconst assocContent =\n (content: DataQuery) =>\n (querySummary: DataQuerySummary): DataQuerySummary =>\n Objects.assoc({ obj: querySummary, prop: Keys.content, value: content })\n\nexport const DataQuerySummaries = {\n // create\n create,\n // read\n getUuid,\n getName,\n getContent,\n getLabels,\n getLabel,\n getDescriptions,\n getDescription,\n // update\n assocName,\n assocLabels,\n assocDescriptions,\n assocContent,\n}\n"]}
1
+ {"version":3,"file":"dataQuerySummaries.js","sourceRoot":"","sources":["../../../src/dataQuery/dataQuerySummaries.ts"],"names":[],"mappings":"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","sourcesContent":["import { Labels, LanguageCode } from '../language'\nimport { Objects, UUIDs } from '../utils'\nimport { DataQuery, DataQuerySummary, DataQuerySummaryProps } from './dataQuery'\n\nconst PropKeys = {\n name: 'name',\n labels: 'labels',\n descriptions: 'descriptions',\n}\n\nconst Keys = {\n content: 'content',\n}\n\nconst create = (params: { props?: DataQuerySummaryProps; content?: DataQuery }): DataQuerySummary => {\n const { props, content } = params ?? {}\n return { uuid: UUIDs.v4(), content, props }\n}\n\nconst getUuid = (querySummary: DataQuerySummary): string => querySummary?.uuid ?? ''\n\nconst getName = (querySummary: DataQuerySummary): string => querySummary?.props?.name ?? ''\n\nconst getContent = (querySummary: DataQuerySummary): DataQuery | undefined => querySummary?.content\n\nconst getLabels = (querySummary: DataQuerySummary): Labels => querySummary?.props?.labels ?? {}\n\nconst getLabel =\n (lang: LanguageCode) =>\n (querySummary: DataQuerySummary): string =>\n getLabels(querySummary)[lang] ?? ''\n\nconst getDescriptions = (querySummary: DataQuerySummary): Labels => querySummary?.props?.descriptions ?? {}\n\nconst getDescription =\n (lang: LanguageCode) =>\n (querySummary: DataQuerySummary): string =>\n getDescriptions(querySummary)[lang] ?? ''\n\nconst assocProp =\n (prop: string, value: any) =>\n (obj: any): any =>\n Objects.assocPath({ obj, path: ['props', prop], value })\n\nconst assocName =\n (value: string) =>\n (querySummary: DataQuerySummary): DataQuerySummary =>\n assocProp(PropKeys.name, value)(querySummary)\n\nconst assocLabels =\n (value: Labels) =>\n (querySummary: DataQuerySummary): DataQuerySummary =>\n assocProp(PropKeys.labels, value)(querySummary)\n\nconst assocDescriptions =\n (value: Labels) =>\n (querySummary: DataQuerySummary): DataQuerySummary =>\n assocProp(PropKeys.descriptions, value)(querySummary)\n\nconst assocContent =\n (content: DataQuery) =>\n (querySummary: DataQuerySummary): DataQuerySummary =>\n Objects.assoc({ obj: querySummary, prop: Keys.content, value: content })\n\nexport const DataQuerySummaries = {\n // create\n create,\n // read\n getUuid,\n getName,\n getContent,\n getLabels,\n getLabel,\n getDescriptions,\n getDescription,\n // update\n assocName,\n assocLabels,\n assocDescriptions,\n assocContent,\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"evaluator.js","sourceRoot":"","sources":["../../../../src/expression/javascript/evaluator.ts"],"names":[],"mappings":"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","sourcesContent":["import { ExpressionContext } from '../context'\nimport { ExpressionEvaluator } from '../evaluator'\nimport { ExpressionFunctions } from '../function'\nimport { ExpressionNode, ExpressionNodeEvaluatorConstructor, ExpressionNodeType } from '../node'\nimport { SystemError } from '../../error'\n\nimport { functionsDefault } from './functionsDefault'\nimport { ArrayEvaluator } from './node/array'\nimport { BinaryEvaluator } from './node/binary'\nimport { CallEvaluator } from './node/call'\nimport { CompoundEvaluator } from './node/compound'\nimport { ConditionalEvaluator } from './node/conditional'\nimport { IdentifierEvaluator } from './node/identifier'\nimport { LiteralEvaluator } from './node/literal'\nimport { MemberEvaluator } from './node/member'\nimport { SequenceEvaluator } from './node/sequence'\nimport { ThisEvaluator } from './node/this'\nimport { UnaryEvaluator } from './node/unary'\nimport { JavascriptExpressionParser } from './parser/parser'\n\ntype Evaluators<C extends ExpressionContext> = {\n [nodeType in ExpressionNodeType]?: ExpressionNodeEvaluatorConstructor<C, ExpressionNode<ExpressionNodeType>>\n}\n\nconst defaultEvaluators = {\n [ExpressionNodeType.Array]: ArrayEvaluator,\n [ExpressionNodeType.Binary]: BinaryEvaluator,\n [ExpressionNodeType.Call]: CallEvaluator,\n [ExpressionNodeType.Compound]: CompoundEvaluator,\n [ExpressionNodeType.Conditional]: ConditionalEvaluator,\n [ExpressionNodeType.Identifier]: IdentifierEvaluator,\n [ExpressionNodeType.Literal]: LiteralEvaluator,\n [ExpressionNodeType.Member]: MemberEvaluator,\n [ExpressionNodeType.Sequence]: SequenceEvaluator,\n [ExpressionNodeType.This]: ThisEvaluator,\n [ExpressionNodeType.Unary]: UnaryEvaluator,\n}\n\n// Parsed expressions cache: the same expressions are evaluated many times (e.g. for every node during a record update).\n// The cached expression nodes are shared, so evaluators must never modify them.\nconst PARSED_EXPRESSIONS_CACHE_MAX_SIZE = 1000\nconst parsedExpressionsCache = new Map<string, ExpressionNode<ExpressionNodeType>>()\nconst expressionParser = new JavascriptExpressionParser()\n\nexport const parseExpression = (expression: string): ExpressionNode<ExpressionNodeType> => {\n let expressionNode = parsedExpressionsCache.get(expression)\n if (!expressionNode) {\n expressionNode = expressionParser.parse(expression)\n if (parsedExpressionsCache.size >= PARSED_EXPRESSIONS_CACHE_MAX_SIZE) {\n // evict the oldest entry (Map keeps insertion order)\n const oldestExpression = parsedExpressionsCache.keys().next().value\n if (oldestExpression !== undefined) parsedExpressionsCache.delete(oldestExpression)\n }\n parsedExpressionsCache.set(expression, expressionNode)\n }\n return expressionNode\n}\n\nexport class JavascriptExpressionEvaluator<C extends ExpressionContext> implements ExpressionEvaluator<C> {\n functions: ExpressionFunctions<C>\n evaluators: Evaluators<C>\n\n constructor(functions: ExpressionFunctions<C> = {}, evaluators: Evaluators<C> = {}) {\n this.evaluators = { ...defaultEvaluators, ...evaluators }\n this.functions = { ...functionsDefault, ...functions }\n }\n\n async evaluate(expression: string, context?: C): Promise<any> {\n return this.evaluateNode(parseExpression(expression), context ?? ({} as C))\n }\n\n async evaluateNode(expressionNode: ExpressionNode<ExpressionNodeType>, context: C): Promise<any> {\n const { type } = expressionNode\n\n const NodeEvaluator = this.evaluators[type]\n if (!NodeEvaluator) {\n throw new SystemError('expression.unsupportedFunctionType', { type })\n }\n return new NodeEvaluator(this, context).evaluate(expressionNode)\n }\n}\n"]}
1
+ {"version":3,"file":"evaluator.js","sourceRoot":"","sources":["../../../../src/expression/javascript/evaluator.ts"],"names":[],"mappings":"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","sourcesContent":["import { ExpressionContext } from '../context'\nimport { ExpressionEvaluator } from '../evaluator'\nimport { ExpressionFunctions } from '../function'\nimport { ExpressionNode, ExpressionNodeEvaluatorConstructor, ExpressionNodeType } from '../node'\nimport { SystemError } from '../../error'\n\nimport { functionsDefault } from './functionsDefault'\nimport { ArrayEvaluator } from './node/array'\nimport { BinaryEvaluator } from './node/binary'\nimport { CallEvaluator } from './node/call'\nimport { CompoundEvaluator } from './node/compound'\nimport { ConditionalEvaluator } from './node/conditional'\nimport { IdentifierEvaluator } from './node/identifier'\nimport { LiteralEvaluator } from './node/literal'\nimport { MemberEvaluator } from './node/member'\nimport { SequenceEvaluator } from './node/sequence'\nimport { ThisEvaluator } from './node/this'\nimport { UnaryEvaluator } from './node/unary'\nimport { JavascriptExpressionParser } from './parser/parser'\n\ntype Evaluators<C extends ExpressionContext> = {\n [nodeType in ExpressionNodeType]?: ExpressionNodeEvaluatorConstructor<C, ExpressionNode<ExpressionNodeType>>\n}\n\nconst defaultEvaluators = {\n [ExpressionNodeType.Array]: ArrayEvaluator,\n [ExpressionNodeType.Binary]: BinaryEvaluator,\n [ExpressionNodeType.Call]: CallEvaluator,\n [ExpressionNodeType.Compound]: CompoundEvaluator,\n [ExpressionNodeType.Conditional]: ConditionalEvaluator,\n [ExpressionNodeType.Identifier]: IdentifierEvaluator,\n [ExpressionNodeType.Literal]: LiteralEvaluator,\n [ExpressionNodeType.Member]: MemberEvaluator,\n [ExpressionNodeType.Sequence]: SequenceEvaluator,\n [ExpressionNodeType.This]: ThisEvaluator,\n [ExpressionNodeType.Unary]: UnaryEvaluator,\n}\n\n// Parsed expressions cache: the same expressions are evaluated many times (e.g. for every node during a record update).\n// The cached expression nodes are shared, so evaluators must never modify them.\nconst PARSED_EXPRESSIONS_CACHE_MAX_SIZE = 1000\nconst parsedExpressionsCache = new Map<string, ExpressionNode<ExpressionNodeType>>()\nconst expressionParser = new JavascriptExpressionParser()\n\nexport const parseExpression = (expression: string): ExpressionNode<ExpressionNodeType> => {\n let expressionNode = parsedExpressionsCache.get(expression)\n if (!expressionNode) {\n expressionNode = expressionParser.parse(expression)\n if (parsedExpressionsCache.size >= PARSED_EXPRESSIONS_CACHE_MAX_SIZE) {\n // evict the oldest entry (Map keeps insertion order)\n const oldestExpression = parsedExpressionsCache.keys().next().value\n if (oldestExpression !== undefined) parsedExpressionsCache.delete(oldestExpression)\n }\n parsedExpressionsCache.set(expression, expressionNode)\n }\n return expressionNode\n}\n\nexport class JavascriptExpressionEvaluator<C extends ExpressionContext> implements ExpressionEvaluator<C> {\n functions: ExpressionFunctions<C>\n evaluators: Evaluators<C>\n\n constructor(functions: ExpressionFunctions<C> = {}, evaluators: Evaluators<C> = {}) {\n this.evaluators = { ...defaultEvaluators, ...evaluators }\n this.functions = { ...functionsDefault, ...functions }\n }\n\n async evaluate(expression: string, context?: C): Promise<any> {\n return this.evaluateNode(parseExpression(expression), context ?? ({} as C))\n }\n\n async evaluateNode(expressionNode: ExpressionNode<ExpressionNodeType>, context: C): Promise<any> {\n const { type } = expressionNode\n\n const NodeEvaluator = this.evaluators[type]\n if (!NodeEvaluator) {\n throw new SystemError('expression.unsupportedFunctionType', { type })\n }\n return new NodeEvaluator(this, context).evaluate(expressionNode)\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"extraProps.js","sourceRoot":"","sources":["../../../src/extraProp/extraProps.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAgB,MAAM,aAAa,CAAA;AAC7D,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AAE/B,OAAO,EAAE,OAAO,EAAE,MAAM,UAAU,CAAA;AAElC,MAAM,eAAe,GAAoF;IACvG,CAAC,iBAAiB,CAAC,aAAa,CAAC,EAAE,CAAC,MAAsB,EAAE,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC;IACzF,CAAC,iBAAiB,CAAC,MAAM,CAAC,EAAE,CAAC,MAAsB,EAAE,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC;IAC5E,CAAC,iBAAiB,CAAC,IAAI,CAAC,EAAE,CAAC,MAAsB,EAAE,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC;CAC3E,CAAA;AAED,MAAM,WAAW,GAAG,CAAC,YAA0B,EAAqB,EAAE,WAAC,OAAA,MAAA,YAAY,CAAC,QAAQ,mCAAI,iBAAiB,CAAC,IAAI,CAAA,EAAA,CAAA;AAEtH,MAAM,YAAY,GAAG,CAAC,MAAkE,EAAE,EAAE;IAC1F,MAAM,EAAE,MAAM,EAAE,YAAY,EAAE,KAAK,EAAE,GAAG,MAAM,CAAA;IAC9C,IAAI,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC;QAAE,OAAO,IAAI,CAAA;IAEvC,MAAM,SAAS,GAAG,eAAe,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC,CAAA;IAC5D,OAAO,SAAS,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAA;AACrC,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,UAAU,GAAG;IACxB,WAAW;IACX,YAAY;CACb,CAAA","sourcesContent":["import { ExtraPropDataType, ExtraPropDef } from './extraProp'\nimport { Points } from '../geo'\nimport { Survey } from '../survey'\nimport { Objects } from '../utils'\n\nconst covertersByType: { [key in ExtraPropDataType]: (params: { survey: Survey; value: any }) => any } = {\n [ExtraPropDataType.geometryPoint]: (params: { value: any }) => Points.parse(params.value),\n [ExtraPropDataType.number]: (params: { value: any }) => Number(params.value),\n [ExtraPropDataType.text]: (params: { value: any }) => String(params.value),\n}\n\nconst getDataType = (extraPropDef: ExtraPropDef): ExtraPropDataType => extraPropDef.dataType ?? ExtraPropDataType.text\n\nconst convertValue = (params: { survey: Survey; extraPropDef: ExtraPropDef; value: any }) => {\n const { survey, extraPropDef, value } = params\n if (Objects.isEmpty(value)) return null\n\n const converter = covertersByType[getDataType(extraPropDef)]\n return converter({ survey, value })\n}\n\nexport const ExtraProps = {\n getDataType,\n convertValue,\n}\n"]}
1
+ {"version":3,"file":"extraProps.js","sourceRoot":"","sources":["../../../src/extraProp/extraProps.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAgB,MAAM,aAAa,CAAA;AAC7D,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AAE/B,OAAO,EAAE,OAAO,EAAE,MAAM,UAAU,CAAA;AAElC,MAAM,eAAe,GAAoF;IACvG,CAAC,iBAAiB,CAAC,aAAa,CAAC,EAAE,CAAC,MAAsB,EAAE,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC;IACzF,CAAC,iBAAiB,CAAC,MAAM,CAAC,EAAE,CAAC,MAAsB,EAAE,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC;IAC5E,CAAC,iBAAiB,CAAC,IAAI,CAAC,EAAE,CAAC,MAAsB,EAAE,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC;CAC3E,CAAA;AAED,MAAM,WAAW,GAAG,CAAC,YAA0B,EAAqB,EAAE,wBAAC,YAAY,CAAC,QAAQ,mCAAI,iBAAiB,CAAC,IAAI,GAAA,CAAA;AAEtH,MAAM,YAAY,GAAG,CAAC,MAAkE,EAAE,EAAE;IAC1F,MAAM,EAAE,MAAM,EAAE,YAAY,EAAE,KAAK,EAAE,GAAG,MAAM,CAAA;IAC9C,IAAI,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC;QAAE,OAAO,IAAI,CAAA;IAEvC,MAAM,SAAS,GAAG,eAAe,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC,CAAA;IAC5D,OAAO,SAAS,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAA;AACrC,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,UAAU,GAAG;IACxB,WAAW;IACX,YAAY;CACb,CAAA","sourcesContent":["import { ExtraPropDataType, ExtraPropDef } from './extraProp'\nimport { Points } from '../geo'\nimport { Survey } from '../survey'\nimport { Objects } from '../utils'\n\nconst covertersByType: { [key in ExtraPropDataType]: (params: { survey: Survey; value: any }) => any } = {\n [ExtraPropDataType.geometryPoint]: (params: { value: any }) => Points.parse(params.value),\n [ExtraPropDataType.number]: (params: { value: any }) => Number(params.value),\n [ExtraPropDataType.text]: (params: { value: any }) => String(params.value),\n}\n\nconst getDataType = (extraPropDef: ExtraPropDef): ExtraPropDataType => extraPropDef.dataType ?? ExtraPropDataType.text\n\nconst convertValue = (params: { survey: Survey; extraPropDef: ExtraPropDef; value: any }) => {\n const { survey, extraPropDef, value } = params\n if (Objects.isEmpty(value)) return null\n\n const converter = covertersByType[getDataType(extraPropDef)]\n return converter({ survey, value })\n}\n\nexport const ExtraProps = {\n getDataType,\n convertValue,\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"pointFactory.js","sourceRoot":"","sources":["../../../src/geo/pointFactory.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,QAAQ,CAAA;AAYpC,MAAM,CAAC,MAAM,YAAY,GAAuC;IAC9D,cAAc,EAAE,CAAC,MAA0B,EAAS,EAAE;;QACpD,uCAAY,MAAM,KAAE,GAAG,EAAE,MAAA,MAAM,CAAC,GAAG,mCAAI,WAAW,CAAC,IAAI,IAAE;IAC3D,CAAC;CACF,CAAA","sourcesContent":["import { Factory } from '../common'\nimport { DEFAULT_SRS } from '../srs'\nimport { Point } from './point'\n\nexport type PointFactoryParams = {\n srs?: string\n x: number\n y: number\n accuracy?: number\n altitude?: number\n altitudeAccuracy?: number\n}\n\nexport const PointFactory: Factory<Point, PointFactoryParams> = {\n createInstance: (params: PointFactoryParams): Point => {\n return { ...params, srs: params.srs ?? DEFAULT_SRS.code }\n },\n}\n"]}
1
+ {"version":3,"file":"pointFactory.js","sourceRoot":"","sources":["../../../src/geo/pointFactory.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,QAAQ,CAAA;AAYpC,MAAM,CAAC,MAAM,YAAY,GAAuC;IAC9D,cAAc,EAAE,CAAC,MAA0B,EAAS,EAAE;;QACpD,uCAAY,MAAM,KAAE,GAAG,QAAE,MAAM,CAAC,GAAG,mCAAI,WAAW,CAAC,IAAI,IAAE;IAC3D,CAAC;CACF,CAAA","sourcesContent":["import { Factory } from '../common'\nimport { DEFAULT_SRS } from '../srs'\nimport { Point } from './point'\n\nexport type PointFactoryParams = {\n srs?: string\n x: number\n y: number\n accuracy?: number\n altitude?: number\n altitudeAccuracy?: number\n}\n\nexport const PointFactory: Factory<Point, PointFactoryParams> = {\n createInstance: (params: PointFactoryParams): Point => {\n return { ...params, srs: params.srs ?? DEFAULT_SRS.code }\n },\n}\n"]}
@@ -1,4 +1,4 @@
1
- import { bearing as bearingTurf } from '@turf/bearing';
1
+ import bearingTurf from '@turf/bearing';
2
2
  import { DEFAULT_SRS_INDEX } from '../../srs';
3
3
  import { toLatLong } from './toLatLong';
4
4
  import { Numbers } from '../../utils';
@@ -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;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
+ {"version":3,"file":"bearing.js","sourceRoot":"","sources":["../../../../src/geo/points/bearing.ts"],"names":[],"mappings":"AAAA,OAAO,WAAW,MAAM,eAAe,CAAA;AAGvC,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,QAAQ,GAAa,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 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,4 +1,4 @@
1
- import { distance as turfDistance } from '@turf/distance';
1
+ import turfDistance from '@turf/distance';
2
2
  import { DEFAULT_SRS_INDEX } from '../../srs';
3
3
  import { toLatLong } from './toLatLong';
4
4
  /**