@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,6 +1,7 @@
1
+ import { validateNodes, validateRecord, validateSortedNodes } from './recordValidator';
1
2
  export type { AttributeValidatorParams, AttributesValidatorParams, RecordValidatorParams, SortedAttributesValidatorParams, } from './attributeValidator';
2
3
  export declare const RecordValidator: {
3
- validateNodes: (params: import("./attributeValidator").AttributesValidatorParams) => Promise<import("../..").Validation>;
4
- validateSortedNodes: (params: import("./attributeValidator").SortedAttributesValidatorParams) => Promise<import("../..").Validation>;
5
- validateRecord: (params: import("./attributeValidator").RecordValidatorParams) => Promise<import("../..").Validation>;
4
+ validateNodes: typeof validateNodes;
5
+ validateSortedNodes: typeof validateSortedNodes;
6
+ validateRecord: typeof validateRecord;
6
7
  };
@@ -1 +1 @@
1
- {"version":3,"file":"recordValidator.js","sourceRoot":"","sources":["../../../src/record/recordValidator/recordValidator.ts"],"names":[],"mappings":";;;;;;;;;;;;AACA,iDAAgE;AAChE,8DAA0D;AAC1D,wCAAoC;AACpC,6DAK6B;AAC7B,qDAAiD;AAE1C,MAAM,mBAAmB,GAAG,CAAO,MAAuC,EAAuB,EAAE;IACxG,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,GAAG,MAAM,CAAA;IAE7C,yBAAyB;IACzB,MAAM,oBAAoB,GAAG,MAAM,uCAAkB,CAAC,wCAAwC,iCACzF,MAAM,KACT,UAAU,IACV,CAAA;IAEF,4BAA4B;IAC5B,MAAM,oBAAoB,GAAG,+BAAc,CAAC,+BAA+B,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC,CAAA;IAE3G,uBAAuB;IACvB,OAAO,yBAAW,CAAC,mBAAmB,CACpC,8BAAiB,CAAC,cAAc,CAAC;QAC/B,KAAK,EAAE,IAAI;QACX,MAAM,kCACD,oBAAoB,GACpB,oBAAoB,CACxB;KACF,CAAC,CACH,CAAA;AACH,CAAC,CAAA,CAAA;AAtBY,QAAA,mBAAmB,uBAsB/B;AAEM,MAAM,aAAa,GAAG,CAAO,MAAiC,EAAuB,EAAE,kDAC5F,OAAA,IAAA,2BAAmB,kCAAM,MAAM,KAAE,UAAU,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,IAAG,CAAA,GAAA,CAAA;AADhE,QAAA,aAAa,iBACmD;AAEtE,MAAM,cAAc,GAAG,CAAO,MAA6B,EAAuB,EAAE;IACzF,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,CAAA;IACzB,MAAM,UAAU,GAAW,EAAE,CAAA;IAC7B,MAAM,KAAK,GAAa,EAAE,CAAA;IAC1B,iBAAO,CAAC,uBAAuB,CAAC;QAC9B,MAAM;QACN,IAAI,EAAE,iBAAO,CAAC,OAAO,CAAC,MAAM,CAAE;QAC9B,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE;YAChB,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;YACrB,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAA;QACzB,CAAC;KACF,CAAC,CAAA;IAEF,OAAO,IAAA,2BAAmB,kCAAM,MAAM,KAAE,UAAU,IAAG,CAAA;AACvD,CAAC,CAAA,CAAA;AAdY,QAAA,cAAc,kBAc1B","sourcesContent":["import { Node, NodesMap } from '../../node'\nimport { Validation, ValidationFactory } from '../../validation'\nimport { Validations } from '../../validation/validations'\nimport { Records } from '../records'\nimport {\n AttributesValidatorParams,\n AttributeValidator,\n RecordValidatorParams,\n SortedAttributesValidatorParams,\n} from './attributeValidator'\nimport { CountValidator } from './countVaildator'\n\nexport const validateSortedNodes = async (params: SortedAttributesValidatorParams): Promise<Validation> => {\n const { survey, record, nodesArray } = params\n\n // 1. validate attributes\n const attributeValidations = await AttributeValidator.validateSelfAndDependentSortedAttributes({\n ...params,\n nodesArray,\n })\n\n // 2. validate min/max count\n const nodeCountValidations = CountValidator.validateChildrenCountNodesArray({ survey, record, nodesArray })\n\n // 3. merge validations\n return Validations.recalculateValidity(\n ValidationFactory.createInstance({\n valid: true,\n fields: {\n ...attributeValidations,\n ...nodeCountValidations,\n },\n })\n )\n}\n\nexport const validateNodes = async (params: AttributesValidatorParams): Promise<Validation> =>\n validateSortedNodes({ ...params, nodesArray: Object.values(params.nodes) })\n\nexport const validateRecord = async (params: RecordValidatorParams): Promise<Validation> => {\n const { record } = params\n const nodesArray: Node[] = []\n const nodes: NodesMap = {}\n Records.visitDescendantsAndSelf({\n record,\n node: Records.getRoot(record)!,\n visitor: (node) => {\n nodesArray.push(node)\n nodes[node.uuid] = node\n },\n })\n\n return validateSortedNodes({ ...params, nodesArray })\n}\n"]}
1
+ {"version":3,"file":"recordValidator.js","sourceRoot":"","sources":["../../../src/record/recordValidator/recordValidator.ts"],"names":[],"mappings":";;;;;;;;;;;;AACA,iDAAgE;AAChE,8DAA0D;AAC1D,wCAAoC;AACpC,6DAK6B;AAC7B,qDAAiD;AAE1C,MAAM,mBAAmB,GAAG,CAAO,MAAuC,EAAuB,EAAE;IACxG,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,GAAG,MAAM,CAAA;IAE7C,yBAAyB;IACzB,MAAM,oBAAoB,GAAG,MAAM,uCAAkB,CAAC,wCAAwC,iCACzF,MAAM,KACT,UAAU,IACV,CAAA;IAEF,4BAA4B;IAC5B,MAAM,oBAAoB,GAAG,+BAAc,CAAC,+BAA+B,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC,CAAA;IAE3G,uBAAuB;IACvB,OAAO,yBAAW,CAAC,mBAAmB,CACpC,8BAAiB,CAAC,cAAc,CAAC;QAC/B,KAAK,EAAE,IAAI;QACX,MAAM,kCACD,oBAAoB,GACpB,oBAAoB,CACxB;KACF,CAAC,CACH,CAAA;AACH,CAAC,CAAA,CAAA;AAtBY,QAAA,mBAAmB,GAAnB,mBAAmB,CAsB/B;AAEM,MAAM,aAAa,GAAG,CAAO,MAAiC,EAAuB,EAAE,kDAC5F,OAAA,IAAA,QAAA,mBAAmB,kCAAM,MAAM,KAAE,UAAU,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,IAAG,CAAA,CAE7E,CAAC,CAF4E,CAAA;AADhE,QAAA,aAAa,GAAb,aAAa,CACmD;AAEtE,MAAM,cAAc,GAAG,CAAO,MAA6B,EAAuB,EAAE;IACzF,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,CAAA;IACzB,MAAM,UAAU,GAAW,EAAE,CAAA;IAC7B,MAAM,KAAK,GAAa,EAAE,CAAA;IAC1B,iBAAO,CAAC,uBAAuB,CAAC;QAC9B,MAAM;QACN,IAAI,EAAE,iBAAO,CAAC,OAAO,CAAC,MAAM,CAAE;QAC9B,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE;YAChB,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;YACrB,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAA;QACzB,CAAC;KACF,CAAC,CAAA;IAEF,OAAO,IAAA,QAAA,mBAAmB,kCAAM,MAAM,KAAE,UAAU,IAAG,CAAA;AACvD,CAAC,CAAA,CAAA;AAdY,QAAA,cAAc,GAAd,cAAc,CAc1B","sourcesContent":["import { Node, NodesMap } from '../../node'\nimport { Validation, ValidationFactory } from '../../validation'\nimport { Validations } from '../../validation/validations'\nimport { Records } from '../records'\nimport {\n AttributesValidatorParams,\n AttributeValidator,\n RecordValidatorParams,\n SortedAttributesValidatorParams,\n} from './attributeValidator'\nimport { CountValidator } from './countVaildator'\n\nexport const validateSortedNodes = async (params: SortedAttributesValidatorParams): Promise<Validation> => {\n const { survey, record, nodesArray } = params\n\n // 1. validate attributes\n const attributeValidations = await AttributeValidator.validateSelfAndDependentSortedAttributes({\n ...params,\n nodesArray,\n })\n\n // 2. validate min/max count\n const nodeCountValidations = CountValidator.validateChildrenCountNodesArray({ survey, record, nodesArray })\n\n // 3. merge validations\n return Validations.recalculateValidity(\n ValidationFactory.createInstance({\n valid: true,\n fields: {\n ...attributeValidations,\n ...nodeCountValidations,\n },\n })\n )\n}\n\nexport const validateNodes = async (params: AttributesValidatorParams): Promise<Validation> =>\n validateSortedNodes({ ...params, nodesArray: Object.values(params.nodes) })\n\nexport const validateRecord = async (params: RecordValidatorParams): Promise<Validation> => {\n const { record } = params\n const nodesArray: Node[] = []\n const nodes: NodesMap = {}\n Records.visitDescendantsAndSelf({\n record,\n node: Records.getRoot(record)!,\n visitor: (node) => {\n nodesArray.push(node)\n nodes[node.uuid] = node\n },\n })\n\n return validateSortedNodes({ ...params, nodesArray })\n}\n"]}
@@ -1,72 +1,31 @@
1
+ import { getCycle, getRoot, getNodes, getNodesArray, getNodeByUuid, getNodesByUuids, getNodesByDefUuid, getChild, getChildren, getParent, getParentCodeAttribute, getAncestorCodePath, getDependentCodeAttributes, getAncestor, getEntityKeyNodes, getEntityKeyNodesByDefUuid, getEntityKeyValues, getEntityKeyValuesByDefUuid, getEntitySiblings, getAttributeSiblings, getNodeIndex, visitAncestorsAndSelf, getAncestorsAndSelf, getDescendant, getDescendantsOrSelf, isDescendantOf, visitDescendantsAndSelf, getDependentNodePointers, findEntityByKeyValues, findEntityWithSameKeysInAnotherRecord, getCategoryItemUuid, isNodeEmpty, isNodeFilledByUser, isEmpty, getStep, isInAnalysisStep } from './_records/recordGetters';
2
+ import { addNode, addNodes } from './_records/recordUpdater';
3
+ import { getEnumeratingCategoryItems, findDependentEnumeratedEntityDefsNotEmpty } from './_records/recordUtils';
4
+ import { getEntityCompletionPercent, getEntityCompletionStats, getEntityOwnCompletionPercent, getRecordCompletionPercent } from './_records/recordCompletion';
5
+ import { getDescendantPageNodeDefUuids, getEntitySubtreeStatus, getMultiplePageEntitiesStatus, getNodeDefChildrenInOwnPage, getPageNodeDefs, getPageValidationStatus, getRecordPagesValidationProgress, nodeBelongsToOwnPage, nodeBelongsToPage, pageHasOwnErrors } from './_records/recordPagesValidation';
6
+ import { deleteNode, deleteNodes } from './recordNodesUpdater/recordNodesDeleter';
1
7
  export declare const Records: {
2
- getCycle: (record: import("./record").Record) => string;
3
- getRoot: (record: import("./record").Record) => import("..").Node | undefined;
4
- getNodes: (record: import("./record").Record) => import("..").Dictionary<import("..").Node>;
5
- getNodesArray: (record: import("./record").Record) => import("..").Node[];
6
- getNodeByUuid: (uuid: string) => (record: import("./record").Record) => import("..").Node | undefined;
7
- getNodesByUuids: (uuids: string[]) => (record: import("./record").Record) => import("..").Node[];
8
- getNodesByDefUuid: (nodeDefUuid: string) => (record: import("./record").Record) => import("..").Node[];
9
- getChild: (parentNode: import("..").Node, childDefUuid: string) => (record: import("./record").Record) => import("..").Node;
10
- getChildren: (parentNode: import("..").Node, childDefUuid?: string) => (record: import("./record").Record) => import("..").Node[];
11
- getParent: (node: import("..").Node) => (record: import("./record").Record) => import("..").Node | undefined;
12
- getParentCodeAttribute: (params: {
13
- parentNode: import("..").Node;
14
- nodeDef: import("..").NodeDefCode;
15
- }) => (record: import("./record").Record) => import("..").Node | undefined;
16
- getAncestorCodePath: (params: {
17
- survey: import("..").Survey;
18
- record: import("./record").Record;
19
- parentNode: import("..").Node;
20
- nodeDef: import("..").NodeDef<import("..").NodeDefType.code, import("..").NodeDefCodeProps>;
21
- }) => string[];
22
- getDependentCodeAttributes: (node: import("..").Node) => (record: import("./record").Record) => import("..").Node[];
23
- getAncestor: (params: {
24
- record: import("./record").Record;
25
- node: import("..").Node;
26
- ancestorDefUuid: string;
27
- }) => import("..").Node | undefined;
28
- getEntityKeyNodes: (params: {
29
- survey: import("..").Survey;
30
- cycle?: string;
31
- record: import("./record").Record;
32
- entity: import("..").Node;
33
- keyDefs?: import("..").NodeDef<import("..").NodeDefType, import("..").NodeDefProps>[];
34
- }) => import("..").Node[];
35
- getEntityKeyNodesByDefUuid: (params: {
36
- survey: import("..").Survey;
37
- cycle?: string;
38
- record: import("./record").Record;
39
- entity: import("..").Node;
40
- keyDefs?: import("..").NodeDef<import("..").NodeDefType, import("..").NodeDefProps>[];
41
- }) => import("..").NodesMap;
42
- getEntityKeyValues: (params: {
43
- survey: import("..").Survey;
44
- cycle?: string;
45
- record: import("./record").Record;
46
- entity: import("..").Node;
47
- keyDefs?: import("..").NodeDef<import("..").NodeDefType, import("..").NodeDefProps>[];
48
- }) => any[];
49
- getEntityKeyValuesByDefUuid: (params: {
50
- survey: import("..").Survey;
51
- cycle?: string;
52
- record: import("./record").Record;
53
- entity: import("..").Node;
54
- keyDefs?: import("..").NodeDef<import("..").NodeDefType, import("..").NodeDefProps>[];
55
- }) => import("..").Dictionary<any>;
56
- getEntitySiblings: (params: {
57
- record: import("./record").Record;
58
- entity: import("..").Node;
59
- includeSelf?: boolean;
60
- }) => import("..").Node[];
61
- getAttributeSiblings: (params: {
62
- record: import("./record").Record;
63
- node: import("..").Node;
64
- nodeDef: import("..").NodeDef<import("..").NodeDefType, import("..").NodeDefProps>;
65
- }) => import("..").Node[];
66
- getNodeIndex: (params: {
67
- record: import("./record").Record;
68
- node: import("..").Node;
69
- }) => number;
8
+ getCycle: typeof getCycle;
9
+ getRoot: typeof getRoot;
10
+ getNodes: typeof getNodes;
11
+ getNodesArray: typeof getNodesArray;
12
+ getNodeByUuid: typeof getNodeByUuid;
13
+ getNodesByUuids: typeof getNodesByUuids;
14
+ getNodesByDefUuid: typeof getNodesByDefUuid;
15
+ getChild: typeof getChild;
16
+ getChildren: typeof getChildren;
17
+ getParent: typeof getParent;
18
+ getParentCodeAttribute: typeof getParentCodeAttribute;
19
+ getAncestorCodePath: typeof getAncestorCodePath;
20
+ getDependentCodeAttributes: typeof getDependentCodeAttributes;
21
+ getAncestor: typeof getAncestor;
22
+ getEntityKeyNodes: typeof getEntityKeyNodes;
23
+ getEntityKeyNodesByDefUuid: typeof getEntityKeyNodesByDefUuid;
24
+ getEntityKeyValues: typeof getEntityKeyValues;
25
+ getEntityKeyValuesByDefUuid: typeof getEntityKeyValuesByDefUuid;
26
+ getEntitySiblings: typeof getEntitySiblings;
27
+ getAttributeSiblings: typeof getAttributeSiblings;
28
+ getNodeIndex: typeof getNodeIndex;
70
29
  isNodeApplicable: (params: {
71
30
  record: import("./record").Record;
72
31
  node: import("..").Node;
@@ -79,158 +38,41 @@ export declare const Records: {
79
38
  record: import("./record").Record;
80
39
  node: import("..").Node;
81
40
  }) => boolean;
82
- visitAncestorsAndSelf: (node: import("..").Node, visitor: (node: import("..").Node) => void, stopIfFn?: () => boolean) => (record: import("./record").Record) => void;
83
- getAncestorsAndSelf: (params: {
84
- record: import("./record").Record;
85
- node: import("..").Node;
86
- }) => Array<import("..").Node>;
87
- getDescendant: (params: {
88
- record: import("./record").Record;
89
- node: import("..").Node;
90
- nodeDefDescendant: import("..").NodeDef<any>;
91
- }) => import("..").Node;
92
- getDescendantsOrSelf: (params: {
93
- record: import("./record").Record;
94
- node: import("..").Node;
95
- nodeDefDescendant: import("..").NodeDef<any>;
96
- }) => import("..").Node[];
97
- isDescendantOf: (params: {
98
- node: import("..").Node;
99
- ancestor: import("..").Node;
100
- }) => boolean;
101
- visitDescendantsAndSelf: (params: {
102
- record: import("./record").Record;
103
- node: import("..").Node;
104
- visitor: (node: import("..").Node) => boolean | void;
105
- traverseMethod?: import("..").TraverseMethod;
106
- }) => void;
107
- getDependentNodePointers: (params: {
108
- survey: import("..").Survey;
109
- record: import("./record").Record;
110
- node: import("..").Node;
111
- dependencyType: import("..").SurveyDependencyType;
112
- includeSelf?: boolean;
113
- filterFn?: (nodePointer: import("..").NodePointer) => boolean;
114
- }) => import("..").NodePointer[];
115
- findEntityByKeyValues: (params: {
116
- survey: import("..").Survey;
117
- cycle: string;
118
- record: import("./record").Record;
119
- parentEntity: import("..").Node;
120
- entityDefUuid: string;
121
- keyValuesByDefUuid: import("..").Dictionary<any>;
122
- }) => import("..").Node | undefined;
123
- findEntityWithSameKeysInAnotherRecord: (params: {
124
- survey: import("..").Survey;
125
- cycle: string;
126
- entityUuid: string;
127
- record: import("./record").Record;
128
- recordOther: import("./record").Record;
129
- }) => import("..").Node | undefined;
130
- getCategoryItemUuid: (params: {
131
- survey: import("..").Survey;
132
- nodeDef: import("..").NodeDef<import("..").NodeDefType.code, import("..").NodeDefCodeProps>;
133
- record: import("./record").Record;
134
- parentNode: import("..").Node;
135
- code: string;
136
- }) => string | undefined;
137
- isNodeEmpty: (node: import("..").Node) => (record: import("./record").Record) => boolean;
138
- isNodeFilledByUser: (node: import("..").Node) => (record: import("./record").Record) => boolean;
139
- isEmpty: (record: import("./record").Record) => boolean;
140
- getStep: (record: import("./record").Record) => string;
141
- isInAnalysisStep: (record: import("./record").Record) => boolean;
142
- getEntityCompletionPercent: (params: {
143
- survey: import("..").Survey;
144
- record: import("./record").Record;
145
- entity: import("..").Node;
146
- }) => number;
147
- getEntityCompletionStats: (params: {
148
- survey: import("..").Survey;
149
- record: import("./record").Record;
150
- entity: import("..").Node;
151
- includeNestedEntities?: boolean;
152
- }) => import("./_records/recordCompletion").EntityCompletionStats;
153
- getEntityOwnCompletionPercent: (params: {
154
- survey: import("..").Survey;
155
- record: import("./record").Record;
156
- entity: import("..").Node;
157
- }) => number;
158
- getRecordCompletionPercent: (params: {
159
- survey: import("..").Survey;
160
- record: import("./record").Record;
161
- }) => number;
162
- getNodeDefChildrenInOwnPage: (params: {
163
- survey: import("..").Survey;
164
- nodeDef: import("..").NodeDefEntity;
165
- cycle: string;
166
- }) => import("..").NodeDefEntity[];
167
- getPageNodeDefs: (params: {
168
- survey: import("..").Survey;
169
- cycle: string;
170
- }) => import("..").NodeDefEntity[];
171
- getDescendantPageNodeDefUuids: (params: {
172
- survey: import("..").Survey;
173
- cycle: string;
174
- pageNodeDef: import("..").NodeDefEntity;
175
- }) => string[];
176
- nodeBelongsToPage: (params: {
177
- node: import("..").Node;
178
- pageNodeDefUuid: string;
179
- record: import("./record").Record;
180
- }) => boolean;
181
- nodeBelongsToOwnPage: (params: {
182
- node: import("..").Node;
183
- pageNodeDefUuid: string;
184
- descendantPageUuids: string[];
185
- record: import("./record").Record;
186
- }) => boolean;
187
- getPageValidationStatus: (params: {
188
- pageNodeDefUuid: string;
189
- descendantPageUuids?: string[];
190
- record: import("./record").Record;
191
- scopeEntityUuid?: string;
192
- }) => import("./records").PageValidationStatus;
193
- pageHasOwnErrors: (params: {
194
- pageNodeDefUuid: string;
195
- descendantPageUuids: string[];
196
- record: import("./record").Record;
197
- }) => boolean;
198
- getRecordPagesValidationProgress: (params: {
199
- survey: import("..").Survey;
200
- record: import("./record").Record;
201
- cycle?: string;
202
- }) => import("./records").PagesValidationProgress | null;
203
- getEntitySubtreeStatus: (params: {
204
- survey: import("..").Survey;
205
- record: import("./record").Record;
206
- entityUuid: string;
207
- cycle?: string;
208
- }) => import("./records").EntitySubtreeStatus | null;
209
- getMultiplePageEntitiesStatus: (params: {
210
- survey: import("..").Survey;
211
- record: import("./record").Record;
212
- pageNodeDefUuid: string;
213
- cycle?: string;
214
- scopeEntityUuid?: string;
215
- }) => import("./records").EntitySubtreeStatus;
216
- addNode: (node: import("..").Node, options?: import("./records").RecordUpdateOptions) => (record: import("./record").Record) => import("./record").Record;
217
- addNodes: (nodes: {
218
- [key: string]: import("..").Node;
219
- }, options?: import("./records").RecordUpdateOptions) => (record: import("./record").Record) => import("./record").Record;
220
- deleteNode: (nodeUuid: string, options?: import("./records").RecordUpdateOptions) => (record: import("./record").Record) => import("./recordNodesUpdater").RecordUpdateResult;
221
- deleteNodes: (nodeUuids: string[], options?: import("./records").RecordUpdateOptions) => (record: import("./record").Record) => import("./recordNodesUpdater").RecordUpdateResult;
222
- getEnumeratingCategoryItems: (params: {
223
- survey: import("..").Survey;
224
- enumeratorDef: import("..").NodeDefCode;
225
- parentNode: import("..").Node;
226
- categoryItemProvider?: import("..").CategoryItemProvider;
227
- allowedCodes?: Set<string>;
228
- }) => (record: import("./record").Record) => Promise<import("..").CategoryItem[]>;
229
- findDependentEnumeratedEntityDefsNotEmpty: (params: {
230
- survey: import("..").Survey;
231
- node: import("..").Node;
232
- nodeDef: import("..").NodeDef<any>;
233
- }) => (record: import("./record").Record) => import("..").NodeDefEntity[];
41
+ visitAncestorsAndSelf: typeof visitAncestorsAndSelf;
42
+ getAncestorsAndSelf: typeof getAncestorsAndSelf;
43
+ getDescendant: typeof getDescendant;
44
+ getDescendantsOrSelf: typeof getDescendantsOrSelf;
45
+ isDescendantOf: typeof isDescendantOf;
46
+ visitDescendantsAndSelf: typeof visitDescendantsAndSelf;
47
+ getDependentNodePointers: typeof getDependentNodePointers;
48
+ findEntityByKeyValues: typeof findEntityByKeyValues;
49
+ findEntityWithSameKeysInAnotherRecord: typeof findEntityWithSameKeysInAnotherRecord;
50
+ getCategoryItemUuid: typeof getCategoryItemUuid;
51
+ isNodeEmpty: typeof isNodeEmpty;
52
+ isNodeFilledByUser: typeof isNodeFilledByUser;
53
+ isEmpty: typeof isEmpty;
54
+ getStep: typeof getStep;
55
+ isInAnalysisStep: typeof isInAnalysisStep;
56
+ getEntityCompletionPercent: typeof getEntityCompletionPercent;
57
+ getEntityCompletionStats: typeof getEntityCompletionStats;
58
+ getEntityOwnCompletionPercent: typeof getEntityOwnCompletionPercent;
59
+ getRecordCompletionPercent: typeof getRecordCompletionPercent;
60
+ getNodeDefChildrenInOwnPage: typeof getNodeDefChildrenInOwnPage;
61
+ getPageNodeDefs: typeof getPageNodeDefs;
62
+ getDescendantPageNodeDefUuids: typeof getDescendantPageNodeDefUuids;
63
+ nodeBelongsToPage: typeof nodeBelongsToPage;
64
+ nodeBelongsToOwnPage: typeof nodeBelongsToOwnPage;
65
+ getPageValidationStatus: typeof getPageValidationStatus;
66
+ pageHasOwnErrors: typeof pageHasOwnErrors;
67
+ getRecordPagesValidationProgress: typeof getRecordPagesValidationProgress;
68
+ getEntitySubtreeStatus: typeof getEntitySubtreeStatus;
69
+ getMultiplePageEntitiesStatus: typeof getMultiplePageEntitiesStatus;
70
+ addNode: typeof addNode;
71
+ addNodes: typeof addNodes;
72
+ deleteNode: typeof deleteNode;
73
+ deleteNodes: typeof deleteNodes;
74
+ getEnumeratingCategoryItems: typeof getEnumeratingCategoryItems;
75
+ findDependentEnumeratedEntityDefsNotEmpty: typeof findDependentEnumeratedEntityDefsNotEmpty;
234
76
  };
235
77
  export type { RecordUpdateOptions } from './_records/recordUpdateOptions';
236
78
  export type { EntitySubtreeStatus, PageValidationStatus, PagesValidationProgress, } from './_records/recordPagesValidation';
@@ -1 +1 @@
1
- {"version":3,"file":"serviceRegistry.js","sourceRoot":"","sources":["../../src/registry/serviceRegistry.ts"],"names":[],"mappings":";;;AAEA,MAAa,eAAe;IAI1B;QACE,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAA;IACpB,CAAC;IAEM,MAAM,CAAC,WAAW;QACvB,IAAI,CAAC,eAAe,CAAC,SAAS,EAAE,CAAC;YAC/B,eAAe,CAAC,SAAS,GAAG,IAAI,eAAe,EAAE,CAAA;QACnD,CAAC;QACD,OAAO,eAAe,CAAC,SAAS,CAAA;IAClC,CAAC;IAED,UAAU,CAAyB,GAAW;QAC5C,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAA;QAClC,IAAI,CAAC,OAAO;YAAE,MAAM,IAAI,KAAK,CAAC,WAAW,GAAG,iBAAiB,CAAC,CAAA;QAC9D,OAAO,OAAY,CAAA;IACrB,CAAC;IAED,eAAe,CAAC,IAAY,EAAE,OAAqB;QACjD,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,OAAO,CAAA;QAC7B,OAAO,IAAI,CAAA;IACb,CAAC;IAED,4BAA4B,CAAC,QAAyB;QACpD,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,OAAO,CAAC,EAAE,EAAE;YAC3D,IAAI,CAAC,eAAe,CAAC,GAAG,EAAE,OAAO,CAAC,CAAA;QACpC,CAAC,CAAC,CAAA;QACF,OAAO,IAAI,CAAA;IACb,CAAC;CACF;AAhCD,0CAgCC","sourcesContent":["import { ArenaService } from '../common'\n\nexport class ServiceRegistry {\n private static _instance: ServiceRegistry\n private readonly services: { [key: string]: ArenaService }\n\n private constructor() {\n this.services = {}\n }\n\n public static getInstance(): ServiceRegistry {\n if (!ServiceRegistry._instance) {\n ServiceRegistry._instance = new ServiceRegistry()\n }\n return ServiceRegistry._instance\n }\n\n getService<S extends ArenaService>(key: string): S {\n const service = this.services[key]\n if (!service) throw new Error(`Service ${key} not registered`)\n return service as S\n }\n\n registerService(type: string, service: ArenaService): this {\n this.services[type] = service\n return this\n }\n\n registerServicesFromRegistry(registry: ServiceRegistry): this {\n Object.entries(registry.services).forEach(([key, service]) => {\n this.registerService(key, service)\n })\n return this\n }\n}\n"]}
1
+ {"version":3,"file":"serviceRegistry.js","sourceRoot":"","sources":["../../src/registry/serviceRegistry.ts"],"names":[],"mappings":";;;AAEA;IAIE;QACE,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAA;IACpB,CAAC;IAEM,MAAM,CAAC,WAAW;QACvB,IAAI,CAAC,eAAe,CAAC,SAAS,EAAE,CAAC;YAC/B,eAAe,CAAC,SAAS,GAAG,IAAI,eAAe,EAAE,CAAA;QACnD,CAAC;QACD,OAAO,eAAe,CAAC,SAAS,CAAA;IAClC,CAAC;IAED,UAAU,CAAyB,GAAW;QAC5C,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAA;QAClC,IAAI,CAAC,OAAO;YAAE,MAAM,IAAI,KAAK,CAAC,WAAW,GAAG,iBAAiB,CAAC,CAAA;QAC9D,OAAO,OAAY,CAAA;IACrB,CAAC;IAED,eAAe,CAAC,IAAY,EAAE,OAAqB;QACjD,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,OAAO,CAAA;QAC7B,OAAO,IAAI,CAAA;IACb,CAAC;IAED,4BAA4B,CAAC,QAAyB;QACpD,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,OAAO,CAAC,EAAE,EAAE;YAC3D,IAAI,CAAC,eAAe,CAAC,GAAG,EAAE,OAAO,CAAC,CAAA;QACpC,CAAC,CAAC,CAAA;QACF,OAAO,IAAI,CAAA;IACb,CAAC;CACF","sourcesContent":["import { ArenaService } from '../common'\n\nexport class ServiceRegistry {\n private static _instance: ServiceRegistry\n private readonly services: { [key: string]: ArenaService }\n\n private constructor() {\n this.services = {}\n }\n\n public static getInstance(): ServiceRegistry {\n if (!ServiceRegistry._instance) {\n ServiceRegistry._instance = new ServiceRegistry()\n }\n return ServiceRegistry._instance\n }\n\n getService<S extends ArenaService>(key: string): S {\n const service = this.services[key]\n if (!service) throw new Error(`Service ${key} not registered`)\n return service as S\n }\n\n registerService(type: string, service: ArenaService): this {\n this.services[type] = service\n return this\n }\n\n registerServicesFromRegistry(registry: ServiceRegistry): this {\n Object.entries(registry.services).forEach(([key, service]) => {\n this.registerService(key, service)\n })\n return this\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"serviceType.js","sourceRoot":"","sources":["../../src/registry/serviceType.ts"],"names":[],"mappings":";;;AAAA,IAAY,WAeX;AAfD,WAAY,WAAW;IACrB,oCAAqB,CAAA;IACrB,4CAA6B,CAAA;IAC7B,8CAA+B,CAAA;IAC/B,8BAAe,CAAA;IACf,4CAA6B,CAAA;IAC7B,4BAAa,CAAA;IACb,4BAAa,CAAA;IACb,kCAAmB,CAAA;IACnB,gCAAiB,CAAA;IACjB,gCAAiB,CAAA;IACjB,8BAAe,CAAA;IACf,oCAAqB,CAAA;IACrB,4BAAa,CAAA;IACb,8CAA+B,CAAA;AACjC,CAAC,EAfW,WAAW,2BAAX,WAAW,QAetB","sourcesContent":["export enum ServiceType {\n category = 'category',\n categoryItem = 'categoryItem',\n categoryLevel = 'categoryLevel',\n chain = 'chain',\n chainNodeDef = 'chainNodeDef',\n info = 'info',\n node = 'node',\n nodeDef = 'nodeDef',\n record = 'record',\n survey = 'survey',\n taxon = 'taxon',\n taxonomy = 'taxonomy',\n user = 'user',\n userAuthToken = 'userAuthToken',\n}\n"]}
1
+ {"version":3,"file":"serviceType.js","sourceRoot":"","sources":["../../src/registry/serviceType.ts"],"names":[],"mappings":";;;AAAA,IAAY,WAeX;AAfD,WAAY,WAAW;IACrB,oCAAqB,CAAA;IACrB,4CAA6B,CAAA;IAC7B,8CAA+B,CAAA;IAC/B,8BAAe,CAAA;IACf,4CAA6B,CAAA;IAC7B,4BAAa,CAAA;IACb,4BAAa,CAAA;IACb,kCAAmB,CAAA;IACnB,gCAAiB,CAAA;IACjB,gCAAiB,CAAA;IACjB,8BAAe,CAAA;IACf,oCAAqB,CAAA;IACrB,4BAAa,CAAA;IACb,8CAA+B,CAAA;AACjC,CAAC,EAfW,WAAW,aAAX,WAAW,GAAX,WAAW,QAetB","sourcesContent":["export enum ServiceType {\n category = 'category',\n categoryItem = 'categoryItem',\n categoryLevel = 'categoryLevel',\n chain = 'chain',\n chainNodeDef = 'chainNodeDef',\n info = 'info',\n node = 'node',\n nodeDef = 'nodeDef',\n record = 'record',\n survey = 'survey',\n taxon = 'taxon',\n taxonomy = 'taxonomy',\n user = 'user',\n userAuthToken = 'userAuthToken',\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"srs.js","sourceRoot":"","sources":["../../src/srs/srs.ts"],"names":[],"mappings":";;;AAUa,QAAA,WAAW,GAAQ;IAC9B,IAAI,EAAE,MAAM;IACZ,IAAI,EAAE,cAAc;IACpB,GAAG,EAAE;;;;;;;;;;;SAWE;CACR,CAAA;AAEY,QAAA,iBAAiB,GAAG;IAC/B,CAAC,mBAAW,CAAC,IAAI,CAAC,EAAE,mBAAW;CAChC,CAAA","sourcesContent":["export interface SRS {\n code: string\n name: string\n wkt: string\n}\n\nexport interface SRSIndex {\n [srsCode: string]: SRS\n}\n\nexport const DEFAULT_SRS: SRS = {\n code: '4326',\n name: 'GCS WGS 1984',\n wkt: `\n GEOGCS[\"WGS 84\",\n DATUM[\"WGS_1984\",\n SPHEROID[\"WGS 84\",6378137,298.257223563,\n AUTHORITY[\"EPSG\",\"7030\"]],\n AUTHORITY[\"EPSG\",\"6326\"]],\n PRIMEM[\"Greenwich\",0,\n AUTHORITY[\"EPSG\",\"8901\"]],\n UNIT[\"degree\",0.01745329251994328,\n AUTHORITY[\"EPSG\",\"9122\"]],\n AUTHORITY[\"EPSG\",\"4326\"]]\n `,\n}\n\nexport const DEFAULT_SRS_INDEX = {\n [DEFAULT_SRS.code]: DEFAULT_SRS,\n}\n"]}
1
+ {"version":3,"file":"srs.js","sourceRoot":"","sources":["../../src/srs/srs.ts"],"names":[],"mappings":";;;AAUa,QAAA,WAAW,GAAQ;IAC9B,IAAI,EAAE,MAAM;IACZ,IAAI,EAAE,cAAc;IACpB,GAAG,EAAE;;;;;;;;;;;SAWE;CACR,CAAA;AAEY,QAAA,iBAAiB,GAAG;IAC/B,CAAC,QAAA,WAAW,CAAC,IAAI,CAAC,EAAE,QAAA,WAAW;CAChC,CAAA","sourcesContent":["export interface SRS {\n code: string\n name: string\n wkt: string\n}\n\nexport interface SRSIndex {\n [srsCode: string]: SRS\n}\n\nexport const DEFAULT_SRS: SRS = {\n code: '4326',\n name: 'GCS WGS 1984',\n wkt: `\n GEOGCS[\"WGS 84\",\n DATUM[\"WGS_1984\",\n SPHEROID[\"WGS 84\",6378137,298.257223563,\n AUTHORITY[\"EPSG\",\"7030\"]],\n AUTHORITY[\"EPSG\",\"6326\"]],\n PRIMEM[\"Greenwich\",0,\n AUTHORITY[\"EPSG\",\"8901\"]],\n UNIT[\"degree\",0.01745329251994328,\n AUTHORITY[\"EPSG\",\"9122\"]],\n AUTHORITY[\"EPSG\",\"4326\"]]\n `,\n}\n\nexport const DEFAULT_SRS_INDEX = {\n [DEFAULT_SRS.code]: DEFAULT_SRS,\n}\n"]}
@@ -4,10 +4,11 @@ type NodeDefsFixParams = {
4
4
  sideEffect?: boolean;
5
5
  cycles: string[];
6
6
  };
7
+ declare const fixNodeDefs: (params: NodeDefsFixParams) => {
8
+ nodeDefs: NodeDefMap;
9
+ updatedNodeDefs: NodeDefMap;
10
+ };
7
11
  export declare const NodeDefsFixer: {
8
- fixNodeDefs: (params: NodeDefsFixParams) => {
9
- nodeDefs: NodeDefMap;
10
- updatedNodeDefs: NodeDefMap;
11
- };
12
+ fixNodeDefs: typeof fixNodeDefs;
12
13
  };
13
14
  export {};
@@ -1 +1 @@
1
- {"version":3,"file":"nodeDefsFixer.js","sourceRoot":"","sources":["../../src/survey/nodeDefsFixer.ts"],"names":[],"mappings":"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","sourcesContent":["import { SystemError } from '../error'\nimport { NodeDef, NodeDefEntity, NodeDefMap, NodeDefs } from '../nodeDef'\nimport { NodeDefEntityLayoutChildItem } from '../nodeDef/types/entity'\nimport { Objects } from '../utils'\n\ntype NodeDefsFixParams = {\n nodeDefs: NodeDefMap\n sideEffect?: boolean\n cycles: string[]\n}\n\ntype NodeDefsInCycleFixParams = NodeDefsFixParams & {\n cycle: string\n}\n\ntype NodeDefFixParams = NodeDefsInCycleFixParams & {\n nodeDef: NodeDef<any>\n}\n\ntype LayoutPropFixParams = NodeDefFixParams & {\n propName: string\n}\n\ntype LayoutPropFixerFnParams = LayoutPropFixParams & { propOld: any }\n\nconst calculateNodeDefHierarchy = (params: { nodeDef: NodeDef<any>; nodeDefs: NodeDefMap }): string[] => {\n const { nodeDef, nodeDefs } = params\n const hiearchy = []\n const visitedNodeDefUuids = new Set<string>()\n let currentParentUuid = nodeDef.parentUuid\n while (currentParentUuid) {\n if (visitedNodeDefUuids.has(currentParentUuid)) {\n throw new SystemError('nodeDef.hierarchyCircularDependency', {\n nodeDefName: nodeDef.props?.name,\n nodeDefUuid: nodeDef.uuid,\n parentUuid: currentParentUuid,\n })\n }\n visitedNodeDefUuids.add(currentParentUuid)\n hiearchy.unshift(currentParentUuid)\n const currentParentNode = nodeDefs[currentParentUuid]\n if (!currentParentNode) {\n throw new SystemError('nodeDef.parentNotFound', {\n nodeDefName: nodeDef.props?.name,\n nodeDefUuid: nodeDef.uuid,\n parentUuid: currentParentUuid,\n })\n }\n currentParentUuid = currentParentNode.parentUuid\n }\n return hiearchy\n}\n\nconst fixHiearchy = (params: NodeDefFixParams): NodeDef<any> | null => {\n const { nodeDefs, nodeDef, sideEffect } = params\n const calculatedHierarchy = calculateNodeDefHierarchy({ nodeDefs, nodeDef })\n // compare the whole hierarchy: a node def moved to another parent at the same depth has a hierarchy with the same length\n return Objects.isEqual(calculatedHierarchy, NodeDefs.getMetaHieararchy(nodeDef))\n ? null\n : Objects.assocPath({ obj: nodeDef, path: ['meta', 'h'], value: calculatedHierarchy, sideEffect })\n}\n\nconst fixLayoutProp = (\n params: LayoutPropFixParams & { fixerFn: (params: LayoutPropFixerFnParams) => any }\n): NodeDef<any> | null => {\n const { cycle, nodeDef, propName, sideEffect, fixerFn } = params\n\n const propPath = ['props', 'layout', cycle, propName]\n\n const propOld = Objects.path(propPath)(nodeDef)\n\n if (Objects.isEmpty(propOld)) return null\n\n const propFixed = fixerFn({ ...params, propOld })\n\n if (Objects.isEqual(propOld, propFixed)) return null\n\n return Objects.assocPath({\n obj: nodeDef,\n path: propPath,\n value: propFixed,\n sideEffect,\n })\n}\n\nconst fixIndexChildren = (params: NodeDefFixParams): NodeDef<any> | null =>\n fixLayoutProp({\n ...params,\n propName: 'indexChildren',\n fixerFn: ({ nodeDefs, cycle, propOld: indexChildren }) =>\n (indexChildren as string[]).filter((childDefUuid) => {\n const childDef = nodeDefs[childDefUuid]\n return (\n childDef?.parentUuid === params.nodeDef.uuid &&\n NodeDefs.isEntity(childDef) &&\n NodeDefs.isDisplayInOwnPage(cycle)(childDef as NodeDefEntity)\n )\n }),\n })\n\nconst fixLayoutChildren = (params: NodeDefFixParams): NodeDef<any> | null =>\n fixLayoutProp({\n ...params,\n propName: 'layoutChildren',\n fixerFn: ({ nodeDefs, cycle, propOld: layoutChildren }) =>\n (layoutChildren as NodeDefEntityLayoutChildItem[]).filter((item) => {\n const childDefUuid = typeof item === 'string' ? item : item.i\n const childDef = nodeDefs[childDefUuid]\n return (\n childDef?.parentUuid === params.nodeDef.uuid &&\n (!NodeDefs.isEntity(childDef) || !NodeDefs.isDisplayInOwnPage(cycle)(childDef as NodeDefEntity))\n )\n }),\n })\n\nconst fix = (params: NodeDefFixParams): NodeDef<any> | null => {\n const { nodeDef } = params\n let nodeDefFixed: NodeDef<any> | null = fixHiearchy(params)\n if (NodeDefs.isEntity(nodeDef)) {\n nodeDefFixed = fixIndexChildren({ ...params, nodeDef: nodeDefFixed ?? nodeDef }) ?? nodeDefFixed\n nodeDefFixed = fixLayoutChildren({ ...params, nodeDef: nodeDefFixed ?? nodeDef }) ?? nodeDefFixed\n }\n return nodeDefFixed\n}\n\nconst fixNodeDefs = (params: NodeDefsFixParams): { nodeDefs: NodeDefMap; updatedNodeDefs: NodeDefMap } => {\n const { nodeDefs, cycles } = params\n const nodeDefsResult: NodeDefMap = {}\n const updatedNodeDefs: NodeDefMap = {}\n\n for (const cycle of cycles) {\n for (const nodeDef of Object.values(nodeDefs)) {\n const nodeDefToFix = nodeDefsResult[nodeDef.uuid] ?? nodeDef\n const fixedNodeDef = fix({ ...params, cycle, nodeDef: nodeDefToFix })\n if (fixedNodeDef) {\n updatedNodeDefs[nodeDef.uuid] = fixedNodeDef\n }\n nodeDefsResult[nodeDef.uuid] = fixedNodeDef ?? nodeDef\n }\n }\n return {\n nodeDefs: nodeDefsResult,\n updatedNodeDefs,\n }\n}\n\nexport const NodeDefsFixer = {\n fixNodeDefs,\n}\n"]}
1
+ {"version":3,"file":"nodeDefsFixer.js","sourceRoot":"","sources":["../../src/survey/nodeDefsFixer.ts"],"names":[],"mappings":"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","sourcesContent":["import { SystemError } from '../error'\nimport { NodeDef, NodeDefEntity, NodeDefMap, NodeDefs } from '../nodeDef'\nimport { NodeDefEntityLayoutChildItem } from '../nodeDef/types/entity'\nimport { Objects } from '../utils'\n\ntype NodeDefsFixParams = {\n nodeDefs: NodeDefMap\n sideEffect?: boolean\n cycles: string[]\n}\n\ntype NodeDefsInCycleFixParams = NodeDefsFixParams & {\n cycle: string\n}\n\ntype NodeDefFixParams = NodeDefsInCycleFixParams & {\n nodeDef: NodeDef<any>\n}\n\ntype LayoutPropFixParams = NodeDefFixParams & {\n propName: string\n}\n\ntype LayoutPropFixerFnParams = LayoutPropFixParams & { propOld: any }\n\nconst calculateNodeDefHierarchy = (params: { nodeDef: NodeDef<any>; nodeDefs: NodeDefMap }): string[] => {\n const { nodeDef, nodeDefs } = params\n const hiearchy = []\n const visitedNodeDefUuids = new Set<string>()\n let currentParentUuid = nodeDef.parentUuid\n while (currentParentUuid) {\n if (visitedNodeDefUuids.has(currentParentUuid)) {\n throw new SystemError('nodeDef.hierarchyCircularDependency', {\n nodeDefName: nodeDef.props?.name,\n nodeDefUuid: nodeDef.uuid,\n parentUuid: currentParentUuid,\n })\n }\n visitedNodeDefUuids.add(currentParentUuid)\n hiearchy.unshift(currentParentUuid)\n const currentParentNode = nodeDefs[currentParentUuid]\n if (!currentParentNode) {\n throw new SystemError('nodeDef.parentNotFound', {\n nodeDefName: nodeDef.props?.name,\n nodeDefUuid: nodeDef.uuid,\n parentUuid: currentParentUuid,\n })\n }\n currentParentUuid = currentParentNode.parentUuid\n }\n return hiearchy\n}\n\nconst fixHiearchy = (params: NodeDefFixParams): NodeDef<any> | null => {\n const { nodeDefs, nodeDef, sideEffect } = params\n const calculatedHierarchy = calculateNodeDefHierarchy({ nodeDefs, nodeDef })\n // compare the whole hierarchy: a node def moved to another parent at the same depth has a hierarchy with the same length\n return Objects.isEqual(calculatedHierarchy, NodeDefs.getMetaHieararchy(nodeDef))\n ? null\n : Objects.assocPath({ obj: nodeDef, path: ['meta', 'h'], value: calculatedHierarchy, sideEffect })\n}\n\nconst fixLayoutProp = (\n params: LayoutPropFixParams & { fixerFn: (params: LayoutPropFixerFnParams) => any }\n): NodeDef<any> | null => {\n const { cycle, nodeDef, propName, sideEffect, fixerFn } = params\n\n const propPath = ['props', 'layout', cycle, propName]\n\n const propOld = Objects.path(propPath)(nodeDef)\n\n if (Objects.isEmpty(propOld)) return null\n\n const propFixed = fixerFn({ ...params, propOld })\n\n if (Objects.isEqual(propOld, propFixed)) return null\n\n return Objects.assocPath({\n obj: nodeDef,\n path: propPath,\n value: propFixed,\n sideEffect,\n })\n}\n\nconst fixIndexChildren = (params: NodeDefFixParams): NodeDef<any> | null =>\n fixLayoutProp({\n ...params,\n propName: 'indexChildren',\n fixerFn: ({ nodeDefs, cycle, propOld: indexChildren }) =>\n (indexChildren as string[]).filter((childDefUuid) => {\n const childDef = nodeDefs[childDefUuid]\n return (\n childDef?.parentUuid === params.nodeDef.uuid &&\n NodeDefs.isEntity(childDef) &&\n NodeDefs.isDisplayInOwnPage(cycle)(childDef as NodeDefEntity)\n )\n }),\n })\n\nconst fixLayoutChildren = (params: NodeDefFixParams): NodeDef<any> | null =>\n fixLayoutProp({\n ...params,\n propName: 'layoutChildren',\n fixerFn: ({ nodeDefs, cycle, propOld: layoutChildren }) =>\n (layoutChildren as NodeDefEntityLayoutChildItem[]).filter((item) => {\n const childDefUuid = typeof item === 'string' ? item : item.i\n const childDef = nodeDefs[childDefUuid]\n return (\n childDef?.parentUuid === params.nodeDef.uuid &&\n (!NodeDefs.isEntity(childDef) || !NodeDefs.isDisplayInOwnPage(cycle)(childDef as NodeDefEntity))\n )\n }),\n })\n\nconst fix = (params: NodeDefFixParams): NodeDef<any> | null => {\n const { nodeDef } = params\n let nodeDefFixed: NodeDef<any> | null = fixHiearchy(params)\n if (NodeDefs.isEntity(nodeDef)) {\n nodeDefFixed = fixIndexChildren({ ...params, nodeDef: nodeDefFixed ?? nodeDef }) ?? nodeDefFixed\n nodeDefFixed = fixLayoutChildren({ ...params, nodeDef: nodeDefFixed ?? nodeDef }) ?? nodeDefFixed\n }\n return nodeDefFixed\n}\n\nconst fixNodeDefs = (params: NodeDefsFixParams): { nodeDefs: NodeDefMap; updatedNodeDefs: NodeDefMap } => {\n const { nodeDefs, cycles } = params\n const nodeDefsResult: NodeDefMap = {}\n const updatedNodeDefs: NodeDefMap = {}\n\n for (const cycle of cycles) {\n for (const nodeDef of Object.values(nodeDefs)) {\n const nodeDefToFix = nodeDefsResult[nodeDef.uuid] ?? nodeDef\n const fixedNodeDef = fix({ ...params, cycle, nodeDef: nodeDefToFix })\n if (fixedNodeDef) {\n updatedNodeDefs[nodeDef.uuid] = fixedNodeDef\n }\n nodeDefsResult[nodeDef.uuid] = fixedNodeDef ?? nodeDef\n }\n }\n return {\n nodeDefs: nodeDefsResult,\n updatedNodeDefs,\n }\n}\n\nexport const NodeDefsFixer = {\n fixNodeDefs,\n}\n"]}
@@ -14,10 +14,11 @@ exports.SurveyRefDataFactory = {
14
14
  const categoryItemIndex = {};
15
15
  Object.entries(itemsByCategoryUuid).forEach(([categoryUuid, items]) => {
16
16
  items.forEach((item) => {
17
- var _a, _b, _c;
17
+ var _a;
18
+ var _b, _c;
18
19
  utils_1.Objects.assocPath({
19
20
  obj: categoryItemUuidIndex,
20
- path: [categoryUuid, (_a = item.parentUuid) !== null && _a !== void 0 ? _a : 'null', (_c = (_b = item.props) === null || _b === void 0 ? void 0 : _b.code) !== null && _c !== void 0 ? _c : ''],
21
+ path: [categoryUuid, (_b = item.parentUuid) !== null && _b !== void 0 ? _b : 'null', (_c = (_a = item.props) === null || _a === void 0 ? void 0 : _a.code) !== null && _c !== void 0 ? _c : ''],
21
22
  value: item.uuid,
22
23
  sideEffect: true,
23
24
  });
@@ -1 +1 @@
1
- {"version":3,"file":"factory.js","sourceRoot":"","sources":["../../../src/survey/refData/factory.ts"],"names":[],"mappings":";;;AAIA,uCAAqC;AAUxB,QAAA,oBAAoB,GAAuD;IACtF,cAAc,EAAE,CAAC,MAAkC,EAAiB,EAAE;QACpE,MAAM,aAAa,GAAG;YACpB,mBAAmB,EAAE,EAAE;YACvB,cAAc,EAAE,EAAE;YAClB,UAAU,EAAE,EAAE;SACf,CAAA;QACD,MAAM,EAAE,mBAAmB,EAAE,cAAc,EAAE,UAAU,EAAE,mCACpD,aAAa,GACb,MAAM,CACV,CAAA;QACD,MAAM,qBAAqB,GAEvB,EAAE,CAAA;QACN,MAAM,iBAAiB,GAAiD,EAAE,CAAA;QAE1E,MAAM,CAAC,OAAO,CAAC,mBAAmB,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,YAAY,EAAE,KAAK,CAAC,EAAE,EAAE;YACpE,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;;gBACrB,eAAO,CAAC,SAAS,CAAC;oBAChB,GAAG,EAAE,qBAAqB;oBAC1B,IAAI,EAAE,CAAC,YAAY,EAAE,MAAA,IAAI,CAAC,UAAU,mCAAI,MAAM,EAAE,MAAA,MAAA,IAAI,CAAC,KAAK,0CAAE,IAAI,mCAAI,EAAE,CAAC;oBACvE,KAAK,EAAE,IAAI,CAAC,IAAI;oBAChB,UAAU,EAAE,IAAI;iBACjB,CAAC,CAAA;gBACF,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAA;YACrC,CAAC,CAAC,CAAA;QACJ,CAAC,CAAC,CAAA;QAEF,OAAO,EAAE,qBAAqB,EAAE,iBAAiB,EAAE,cAAc,EAAE,UAAU,EAAE,CAAA;IACjF,CAAC;CACF,CAAA","sourcesContent":["import { SurveyRefData } from './refData'\nimport { Factory } from '../../common'\nimport { Taxon } from '../../taxonomy'\nimport { CategoryItem } from '../../category'\nimport { Objects } from '../../utils'\nimport { SRS } from '../../srs'\n\nexport type SurveyRefDataFactoryParams = {\n itemsByCategoryUuid?: { [categoryUuid: string]: CategoryItem[] }\n taxonUuidIndex?: { [taxonomyUuid: string]: { [taxonCode: string]: string } }\n taxonIndex?: { [taxonUuid: string]: Taxon }\n srsIndex?: { [srsCode: string]: SRS }\n}\n\nexport const SurveyRefDataFactory: Factory<SurveyRefData, SurveyRefDataFactoryParams> = {\n createInstance: (params: SurveyRefDataFactoryParams): SurveyRefData => {\n const defaultParams = {\n itemsByCategoryUuid: {},\n taxonUuidIndex: {},\n taxonIndex: {},\n }\n const { itemsByCategoryUuid, taxonUuidIndex, taxonIndex }: SurveyRefDataFactoryParams = {\n ...defaultParams,\n ...params,\n }\n const categoryItemUuidIndex: {\n [categoryUuid: string]: { [parentItemUuid: string]: { [code: string]: string } }\n } = {}\n const categoryItemIndex: { [categoryItemUuid: string]: CategoryItem } = {}\n\n Object.entries(itemsByCategoryUuid).forEach(([categoryUuid, items]) => {\n items.forEach((item) => {\n Objects.assocPath({\n obj: categoryItemUuidIndex,\n path: [categoryUuid, item.parentUuid ?? 'null', item.props?.code ?? ''],\n value: item.uuid,\n sideEffect: true,\n })\n categoryItemIndex[item.uuid] = item\n })\n })\n\n return { categoryItemUuidIndex, categoryItemIndex, taxonUuidIndex, taxonIndex }\n },\n}\n"]}
1
+ {"version":3,"file":"factory.js","sourceRoot":"","sources":["../../../src/survey/refData/factory.ts"],"names":[],"mappings":";;;AAIA,uCAAqC;AAUxB,QAAA,oBAAoB,GAAuD;IACtF,cAAc,EAAE,CAAC,MAAkC,EAAiB,EAAE;QACpE,MAAM,aAAa,GAAG;YACpB,mBAAmB,EAAE,EAAE;YACvB,cAAc,EAAE,EAAE;YAClB,UAAU,EAAE,EAAE;SACf,CAAA;QACD,MAAM,EAAE,mBAAmB,EAAE,cAAc,EAAE,UAAU,EAAE,mCACpD,aAAa,GACb,MAAM,CACV,CAAA;QACD,MAAM,qBAAqB,GAEvB,EAAE,CAAA;QACN,MAAM,iBAAiB,GAAiD,EAAE,CAAA;QAE1E,MAAM,CAAC,OAAO,CAAC,mBAAmB,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,YAAY,EAAE,KAAK,CAAC,EAAE,EAAE;YACpE,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;;;gBACrB,eAAO,CAAC,SAAS,CAAC;oBAChB,GAAG,EAAE,qBAAqB;oBAC1B,IAAI,EAAE,CAAC,YAAY,QAAE,IAAI,CAAC,UAAU,mCAAI,MAAM,QAAE,MAAA,IAAI,CAAC,KAAK,0CAAE,IAAI,mCAAI,EAAE,CAAC;oBACvE,KAAK,EAAE,IAAI,CAAC,IAAI;oBAChB,UAAU,EAAE,IAAI;iBACjB,CAAC,CAAA;gBACF,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAA;YACrC,CAAC,CAAC,CAAA;QACJ,CAAC,CAAC,CAAA;QAEF,OAAO,EAAE,qBAAqB,EAAE,iBAAiB,EAAE,cAAc,EAAE,UAAU,EAAE,CAAA;IACjF,CAAC;CACF,CAAA","sourcesContent":["import { SurveyRefData } from './refData'\nimport { Factory } from '../../common'\nimport { Taxon } from '../../taxonomy'\nimport { CategoryItem } from '../../category'\nimport { Objects } from '../../utils'\nimport { SRS } from '../../srs'\n\nexport type SurveyRefDataFactoryParams = {\n itemsByCategoryUuid?: { [categoryUuid: string]: CategoryItem[] }\n taxonUuidIndex?: { [taxonomyUuid: string]: { [taxonCode: string]: string } }\n taxonIndex?: { [taxonUuid: string]: Taxon }\n srsIndex?: { [srsCode: string]: SRS }\n}\n\nexport const SurveyRefDataFactory: Factory<SurveyRefData, SurveyRefDataFactoryParams> = {\n createInstance: (params: SurveyRefDataFactoryParams): SurveyRefData => {\n const defaultParams = {\n itemsByCategoryUuid: {},\n taxonUuidIndex: {},\n taxonIndex: {},\n }\n const { itemsByCategoryUuid, taxonUuidIndex, taxonIndex }: SurveyRefDataFactoryParams = {\n ...defaultParams,\n ...params,\n }\n const categoryItemUuidIndex: {\n [categoryUuid: string]: { [parentItemUuid: string]: { [code: string]: string } }\n } = {}\n const categoryItemIndex: { [categoryItemUuid: string]: CategoryItem } = {}\n\n Object.entries(itemsByCategoryUuid).forEach(([categoryUuid, items]) => {\n items.forEach((item) => {\n Objects.assocPath({\n obj: categoryItemUuidIndex,\n path: [categoryUuid, item.parentUuid ?? 'null', item.props?.code ?? ''],\n value: item.uuid,\n sideEffect: true,\n })\n categoryItemIndex[item.uuid] = item\n })\n })\n\n return { categoryItemUuidIndex, categoryItemIndex, taxonUuidIndex, taxonIndex }\n },\n}\n"]}
@@ -49,8 +49,8 @@ export declare enum SurveyDocPlace {
49
49
  footer = "footer"
50
50
  }
51
51
  export declare const surveyDocImagePropKeys: {
52
- readonly documentPlace: "documentPlace";
53
- readonly applyIf: "applyIf";
52
+ readonly documentPlace: 'documentPlace';
53
+ readonly applyIf: 'applyIf';
54
54
  };
55
55
  export type SurveyDocImageProps = SurveyFileProps & {
56
56
  documentPlace?: SurveyDocPlace;
@@ -1 +1 @@
1
- {"version":3,"file":"survey.js","sourceRoot":"","sources":["../../src/survey/survey.ts"],"names":[],"mappings":";;;AAUa,QAAA,YAAY,GAAG,GAAG,CAAA;AAM/B,IAAY,oBAaX;AAbD,WAAY,oBAAoB;IAC9B,iDAAyB,CAAA;IACzB,uDAA+B,CAAA;IAC/B,6CAAqB,CAAA;IACrB,6DAAqC,CAAA;IACrC,6CAAqB,CAAA;IACrB,2CAAmB,CAAA;IACnB,6CAAqB,CAAA;IACrB,6CAAqB,CAAA;IACrB,iDAAyB,CAAA;IACzB,mDAA2B,CAAA;IAC3B,2CAAmB,CAAA;IACnB,6CAAqB,CAAA;AACvB,CAAC,EAbW,oBAAoB,oCAApB,oBAAoB,QAa/B;AAWD,IAAY,kBAQX;AARD,WAAY,kBAAkB;IAC5B,mGAA6E,CAAA;IAC7E,qGAA+E,CAAA;IAC/E,yDAAmC,CAAA;IACnC,mFAA6D,CAAA;IAC7D,mFAA6D,CAAA;IAC7D,uGAAiF,CAAA;IACjF,qFAA+D,CAAA;AACjE,CAAC,EARW,kBAAkB,kCAAlB,kBAAkB,QAQ7B;AAMY,QAAA,sBAAsB,GAAmB;IACpD,CAAC,kBAAkB,CAAC,oCAAoC,CAAC,EAAE,IAAI;IAC/D,CAAC,kBAAkB,CAAC,qCAAqC,CAAC,EAAE,IAAI;IAChE,CAAC,kBAAkB,CAAC,eAAe,CAAC,EAAE,IAAI;IAC1C,CAAC,kBAAkB,CAAC,4BAA4B,CAAC,EAAE,IAAI;IACvD,CAAC,kBAAkB,CAAC,4BAA4B,CAAC,EAAE,IAAI;IACvD,CAAC,kBAAkB,CAAC,sCAAsC,CAAC,EAAE,IAAI;IACjE,CAAC,kBAAkB,CAAC,6BAA6B,CAAC,EAAE,IAAI;CACzD,CAAA;AAED,IAAY,cAGX;AAHD,WAAY,cAAc;IACxB,mCAAiB,CAAA;IACjB,mCAAiB,CAAA;AACnB,CAAC,EAHW,cAAc,8BAAd,cAAc,QAGzB;AAEY,QAAA,sBAAsB,GAAG;IACpC,aAAa,EAAE,eAAe;IAC9B,OAAO,EAAE,SAAS;CACV,CAAA","sourcesContent":["import { ArenaObject, Dictionary } from '../common'\nimport { AuthGroup } from '../auth'\nimport { Labels, LanguageCode } from '../language'\nimport { SRS } from '../srs'\n\nimport { NodeDef, NodeDefType } from '../nodeDef'\nimport { Category } from '../category'\nimport { Taxonomy } from '../taxonomy'\nimport { SurveyRefData } from './refData/refData'\n\nexport const defaultCycle = '0'\n\nexport interface SurveyDependency {\n [nodeDefUuid: string]: string[] | boolean\n}\n\nexport enum SurveyDependencyType {\n applicable = 'applicable',\n defaultValues = 'defaultValues',\n editable = 'editable',\n enumeratingItems = 'enumeratingItems',\n fileName = 'fileName',\n formula = 'formula',\n maxCount = 'maxCount',\n minCount = 'minCount',\n parentCode = 'parentCode',\n validations = 'validations',\n visible = 'visible',\n onUpdate = 'onUpdate', // dependencies updated on every record update, stored as dictionary of booleans\n}\n\nexport type SurveyDependencyGraph = {\n [key in SurveyDependencyType]: SurveyDependency\n}\n\nexport interface SurveyCycle {\n dateEnd?: string\n dateStart: string\n}\n\nexport enum SurveySecurityProp {\n dataEditorViewNotOwnedRecordsAllowed = 'dataEditorViewNotOwnedRecordsAllowed',\n dataAnalystViewNotOwnedRecordsAllowed = 'dataAnalystViewNotOwnedRecordsAllowed',\n visibleInMobile = 'visibleInMobile',\n allowRecordsDownloadInMobile = 'allowRecordsDownloadInMobile',\n allowRecordsUploadFromMobile = 'allowRecordsUploadFromMobile',\n allowRecordsWithErrorsUploadFromMobile = 'allowRecordsWithErrorsUploadFromMobile',\n allowRecordsMergeWithSameKeys = 'allowRecordsMergeWithSameKeys',\n}\n\nexport type SurveySecurity = {\n [key in SurveySecurityProp]?: boolean\n}\n\nexport const surveySecurityDefaults: SurveySecurity = {\n [SurveySecurityProp.dataEditorViewNotOwnedRecordsAllowed]: true,\n [SurveySecurityProp.dataAnalystViewNotOwnedRecordsAllowed]: true,\n [SurveySecurityProp.visibleInMobile]: true,\n [SurveySecurityProp.allowRecordsDownloadInMobile]: true,\n [SurveySecurityProp.allowRecordsUploadFromMobile]: true,\n [SurveySecurityProp.allowRecordsWithErrorsUploadFromMobile]: true,\n [SurveySecurityProp.allowRecordsMergeWithSameKeys]: true,\n}\n\nexport enum SurveyDocPlace {\n header = 'header',\n footer = 'footer',\n}\n\nexport const surveyDocImagePropKeys = {\n documentPlace: 'documentPlace',\n applyIf: 'applyIf',\n} as const\n\nexport type SurveyDocImageProps = SurveyFileProps & {\n documentPlace?: SurveyDocPlace\n applyIf?: string\n}\n\nexport type SurveyFileProps = {\n deleted?: boolean\n labels?: Labels\n name?: string\n nodeUuid?: string\n recordUuid?: string\n size?: number | null\n temporary?: boolean\n type?: string\n}\n\nexport type SurveyFile = {\n uuid: string\n props: SurveyFileProps\n content?: Buffer | null\n dateCreated: string\n}\n\nexport type SurveyDocImage = SurveyFile & {\n props: SurveyDocImageProps\n}\n\nexport type SurveyDocOptions = {\n headerOnFirstPageOnly?: boolean // default: true\n}\n\nexport interface SurveyProps {\n collectUri?: string\n cycles: {\n [key: string]: SurveyCycle\n }\n defaultCycleKey?: string\n descriptions?: Labels\n fieldManualLinks?: Labels\n // when true, values of attributes becoming non-applicable are kept during data entry (default: cleared)\n keepNonApplicableValues?: boolean\n labels?: Labels\n languages: LanguageCode[]\n name: string\n preloadedMapLayers?: SurveyFile[]\n preloadedMapLayersEnabled?: boolean\n security?: SurveySecurity\n srs: SRS[]\n surveyDocImages?: SurveyDocImage[]\n surveyDocOptions?: SurveyDocOptions\n}\n\nexport interface SurveyNodeDefsIndex {\n rootDefUuid?: string\n childDefUuidPresenceByParentUuid?: { [parentUuid: string]: { [nodeDefUuid: string]: boolean } }\n nodeDefUuidByName?: Dictionary<string>\n qualifierPresenceByUuid?: { [nodeDefUuid: string]: boolean }\n}\n\nexport interface Survey extends ArenaObject<SurveyProps> {\n authGroups: Array<AuthGroup>\n dateCreated?: string\n dateModified?: string\n datePublished?: string\n dependencyGraph?: SurveyDependencyGraph\n draft: boolean\n nodeDefs?: { [nodeDefUuid: string]: NodeDef<NodeDefType> }\n ownerUuid: string\n published: boolean\n readonly id?: number\n template: boolean\n uuid: string\n /**\n * Categories indexed by uuid.\n */\n categories?: { [categoryUuid: string]: Category }\n /**\n * Taxonomies indexed by uuid.\n */\n taxonomies?: { [taxonomyUuid: string]: Taxonomy }\n /**\n * Reference data cache (category items and taxa).\n */\n refData?: SurveyRefData\n\n nodeDefsIndex?: SurveyNodeDefsIndex\n}\n"]}
1
+ {"version":3,"file":"survey.js","sourceRoot":"","sources":["../../src/survey/survey.ts"],"names":[],"mappings":";;;AAUa,QAAA,YAAY,GAAG,GAAG,CAAA;AAM/B,IAAY,oBAaX;AAbD,WAAY,oBAAoB;IAC9B,iDAAyB,CAAA;IACzB,uDAA+B,CAAA;IAC/B,6CAAqB,CAAA;IACrB,6DAAqC,CAAA;IACrC,6CAAqB,CAAA;IACrB,2CAAmB,CAAA;IACnB,6CAAqB,CAAA;IACrB,6CAAqB,CAAA;IACrB,iDAAyB,CAAA;IACzB,mDAA2B,CAAA;IAC3B,2CAAmB,CAAA;IACnB,6CAAqB,CAAA;AACvB,CAAC,EAbW,oBAAoB,aAApB,oBAAoB,GAApB,oBAAoB,QAa/B;AAWD,IAAY,kBAQX;AARD,WAAY,kBAAkB;IAC5B,mGAA6E,CAAA;IAC7E,qGAA+E,CAAA;IAC/E,yDAAmC,CAAA;IACnC,mFAA6D,CAAA;IAC7D,mFAA6D,CAAA;IAC7D,uGAAiF,CAAA;IACjF,qFAA+D,CAAA;AACjE,CAAC,EARW,kBAAkB,aAAlB,kBAAkB,GAAlB,kBAAkB,QAQ7B;AAMY,QAAA,sBAAsB,GAAmB;IACpD,CAAC,kBAAkB,CAAC,oCAAoC,CAAC,EAAE,IAAI;IAC/D,CAAC,kBAAkB,CAAC,qCAAqC,CAAC,EAAE,IAAI;IAChE,CAAC,kBAAkB,CAAC,eAAe,CAAC,EAAE,IAAI;IAC1C,CAAC,kBAAkB,CAAC,4BAA4B,CAAC,EAAE,IAAI;IACvD,CAAC,kBAAkB,CAAC,4BAA4B,CAAC,EAAE,IAAI;IACvD,CAAC,kBAAkB,CAAC,sCAAsC,CAAC,EAAE,IAAI;IACjE,CAAC,kBAAkB,CAAC,6BAA6B,CAAC,EAAE,IAAI;CACzD,CAAA;AAED,IAAY,cAGX;AAHD,WAAY,cAAc;IACxB,mCAAiB,CAAA;IACjB,mCAAiB,CAAA;AACnB,CAAC,EAHW,cAAc,aAAd,cAAc,GAAd,cAAc,QAGzB;AAEY,QAAA,sBAAsB,GAAG;IACpC,aAAa,EAAE,eAAe;IAC9B,OAAO,EAAE,SAAS;CACV,CAAA","sourcesContent":["import { ArenaObject, Dictionary } from '../common'\nimport { AuthGroup } from '../auth'\nimport { Labels, LanguageCode } from '../language'\nimport { SRS } from '../srs'\n\nimport { NodeDef, NodeDefType } from '../nodeDef'\nimport { Category } from '../category'\nimport { Taxonomy } from '../taxonomy'\nimport { SurveyRefData } from './refData/refData'\n\nexport const defaultCycle = '0'\n\nexport interface SurveyDependency {\n [nodeDefUuid: string]: string[] | boolean\n}\n\nexport enum SurveyDependencyType {\n applicable = 'applicable',\n defaultValues = 'defaultValues',\n editable = 'editable',\n enumeratingItems = 'enumeratingItems',\n fileName = 'fileName',\n formula = 'formula',\n maxCount = 'maxCount',\n minCount = 'minCount',\n parentCode = 'parentCode',\n validations = 'validations',\n visible = 'visible',\n onUpdate = 'onUpdate', // dependencies updated on every record update, stored as dictionary of booleans\n}\n\nexport type SurveyDependencyGraph = {\n [key in SurveyDependencyType]: SurveyDependency\n}\n\nexport interface SurveyCycle {\n dateEnd?: string\n dateStart: string\n}\n\nexport enum SurveySecurityProp {\n dataEditorViewNotOwnedRecordsAllowed = 'dataEditorViewNotOwnedRecordsAllowed',\n dataAnalystViewNotOwnedRecordsAllowed = 'dataAnalystViewNotOwnedRecordsAllowed',\n visibleInMobile = 'visibleInMobile',\n allowRecordsDownloadInMobile = 'allowRecordsDownloadInMobile',\n allowRecordsUploadFromMobile = 'allowRecordsUploadFromMobile',\n allowRecordsWithErrorsUploadFromMobile = 'allowRecordsWithErrorsUploadFromMobile',\n allowRecordsMergeWithSameKeys = 'allowRecordsMergeWithSameKeys',\n}\n\nexport type SurveySecurity = {\n [key in SurveySecurityProp]?: boolean\n}\n\nexport const surveySecurityDefaults: SurveySecurity = {\n [SurveySecurityProp.dataEditorViewNotOwnedRecordsAllowed]: true,\n [SurveySecurityProp.dataAnalystViewNotOwnedRecordsAllowed]: true,\n [SurveySecurityProp.visibleInMobile]: true,\n [SurveySecurityProp.allowRecordsDownloadInMobile]: true,\n [SurveySecurityProp.allowRecordsUploadFromMobile]: true,\n [SurveySecurityProp.allowRecordsWithErrorsUploadFromMobile]: true,\n [SurveySecurityProp.allowRecordsMergeWithSameKeys]: true,\n}\n\nexport enum SurveyDocPlace {\n header = 'header',\n footer = 'footer',\n}\n\nexport const surveyDocImagePropKeys = {\n documentPlace: 'documentPlace',\n applyIf: 'applyIf',\n} as const\n\nexport type SurveyDocImageProps = SurveyFileProps & {\n documentPlace?: SurveyDocPlace\n applyIf?: string\n}\n\nexport type SurveyFileProps = {\n deleted?: boolean\n labels?: Labels\n name?: string\n nodeUuid?: string\n recordUuid?: string\n size?: number | null\n temporary?: boolean\n type?: string\n}\n\nexport type SurveyFile = {\n uuid: string\n props: SurveyFileProps\n content?: Buffer | null\n dateCreated: string\n}\n\nexport type SurveyDocImage = SurveyFile & {\n props: SurveyDocImageProps\n}\n\nexport type SurveyDocOptions = {\n headerOnFirstPageOnly?: boolean // default: true\n}\n\nexport interface SurveyProps {\n collectUri?: string\n cycles: {\n [key: string]: SurveyCycle\n }\n defaultCycleKey?: string\n descriptions?: Labels\n fieldManualLinks?: Labels\n // when true, values of attributes becoming non-applicable are kept during data entry (default: cleared)\n keepNonApplicableValues?: boolean\n labels?: Labels\n languages: LanguageCode[]\n name: string\n preloadedMapLayers?: SurveyFile[]\n preloadedMapLayersEnabled?: boolean\n security?: SurveySecurity\n srs: SRS[]\n surveyDocImages?: SurveyDocImage[]\n surveyDocOptions?: SurveyDocOptions\n}\n\nexport interface SurveyNodeDefsIndex {\n rootDefUuid?: string\n childDefUuidPresenceByParentUuid?: { [parentUuid: string]: { [nodeDefUuid: string]: boolean } }\n nodeDefUuidByName?: Dictionary<string>\n qualifierPresenceByUuid?: { [nodeDefUuid: string]: boolean }\n}\n\nexport interface Survey extends ArenaObject<SurveyProps> {\n authGroups: Array<AuthGroup>\n dateCreated?: string\n dateModified?: string\n datePublished?: string\n dependencyGraph?: SurveyDependencyGraph\n draft: boolean\n nodeDefs?: { [nodeDefUuid: string]: NodeDef<NodeDefType> }\n ownerUuid: string\n published: boolean\n readonly id?: number\n template: boolean\n uuid: string\n /**\n * Categories indexed by uuid.\n */\n categories?: { [categoryUuid: string]: Category }\n /**\n * Taxonomies indexed by uuid.\n */\n taxonomies?: { [taxonomyUuid: string]: Taxonomy }\n /**\n * Reference data cache (category items and taxa).\n */\n refData?: SurveyRefData\n\n nodeDefsIndex?: SurveyNodeDefsIndex\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"surveyDocImageFactory.js","sourceRoot":"","sources":["../../src/survey/surveyDocImageFactory.ts"],"names":[],"mappings":";;;;;;;;;;;;;;AACA,uDAAmD;AAEnD,2DAAgG;AAOnF,QAAA,qBAAqB,GAAyD;IACzF,cAAc,EAAE,CAAC,SAAsC,EAAE,EAAkB,EAAE;QAC3E,MAAM,EAAE,aAAa,EAAE,OAAO,KAAoB,MAAM,EAArB,UAAU,UAAK,MAAM,EAAlD,4BAAyC,CAAS,CAAA;QAExD,IAAI,KAAK,GAAG,qCAAiB,CAAC,cAAc,iCACvC,UAAU,KACb,IAAI,EAAE,kCAAc,CAAC,cAAc,IACjB,CAAA;QAEpB,IAAI,aAAa;YAAE,KAAK,GAAG,iCAAe,CAAC,kBAAkB,CAAC,aAAa,CAAC,CAAC,KAAK,CAAC,CAAA;QACnF,IAAI,OAAO;YAAE,KAAK,GAAG,iCAAe,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,CAAA;QAEjE,OAAO,KAAK,CAAA;IACd,CAAC;CACF,CAAA","sourcesContent":["import { Factory } from '../common'\nimport { SurveyDocImages } from './surveyDocImages'\nimport { SurveyDocImage, SurveyDocPlace } from './survey'\nimport { SurveyFileFactory, SurveyFileFactoryParams, SurveyFileType } from './surveyFileFactory'\n\nexport type SurveyDocImageFactoryParams = SurveyFileFactoryParams & {\n documentPlace?: SurveyDocPlace | null\n applyIf?: string\n}\n\nexport const SurveyDocImageFactory: Factory<SurveyDocImage, SurveyDocImageFactoryParams> = {\n createInstance: (params: SurveyDocImageFactoryParams = {}): SurveyDocImage => {\n const { documentPlace, applyIf, ...fileParams } = params\n\n let image = SurveyFileFactory.createInstance({\n ...fileParams,\n type: SurveyFileType.surveyDocImage,\n }) as SurveyDocImage\n\n if (documentPlace) image = SurveyDocImages.assocDocumentPlace(documentPlace)(image)\n if (applyIf) image = SurveyDocImages.assocApplyIf(applyIf)(image)\n\n return image\n },\n}\n"]}
1
+ {"version":3,"file":"surveyDocImageFactory.js","sourceRoot":"","sources":["../../src/survey/surveyDocImageFactory.ts"],"names":[],"mappings":";;;;;;;;;;;;;;AACA,uDAAmD;AAEnD,2DAAgG;AAOnF,QAAA,qBAAqB,GAAyD;IACzF,cAAc,EAAE,CAAC,MAAM,GAAgC,EAAE,EAAkB,EAAE;QAC3E,MAAM,EAAE,aAAa,EAAE,OAAO,KAAoB,MAAM,EAArB,UAAU,UAAK,MAAM,EAAlD,4BAAyC,CAAS,CAAA;QAExD,IAAI,KAAK,GAAG,qCAAiB,CAAC,cAAc,iCACvC,UAAU,KACb,IAAI,EAAE,kCAAc,CAAC,cAAc,IACjB,CAAA;QAEpB,IAAI,aAAa;YAAE,KAAK,GAAG,iCAAe,CAAC,kBAAkB,CAAC,aAAa,CAAC,CAAC,KAAK,CAAC,CAAA;QACnF,IAAI,OAAO;YAAE,KAAK,GAAG,iCAAe,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,CAAA;QAEjE,OAAO,KAAK,CAAA;IACd,CAAC;CACF,CAAA","sourcesContent":["import { Factory } from '../common'\nimport { SurveyDocImages } from './surveyDocImages'\nimport { SurveyDocImage, SurveyDocPlace } from './survey'\nimport { SurveyFileFactory, SurveyFileFactoryParams, SurveyFileType } from './surveyFileFactory'\n\nexport type SurveyDocImageFactoryParams = SurveyFileFactoryParams & {\n documentPlace?: SurveyDocPlace | null\n applyIf?: string\n}\n\nexport const SurveyDocImageFactory: Factory<SurveyDocImage, SurveyDocImageFactoryParams> = {\n createInstance: (params: SurveyDocImageFactoryParams = {}): SurveyDocImage => {\n const { documentPlace, applyIf, ...fileParams } = params\n\n let image = SurveyFileFactory.createInstance({\n ...fileParams,\n type: SurveyFileType.surveyDocImage,\n }) as SurveyDocImage\n\n if (documentPlace) image = SurveyDocImages.assocDocumentPlace(documentPlace)(image)\n if (applyIf) image = SurveyDocImages.assocApplyIf(applyIf)(image)\n\n return image\n },\n}\n"]}
@@ -1,9 +1,15 @@
1
1
  import { Labels } from '../language';
2
2
  import { SurveyDocImage, SurveyDocPlace } from './survey';
3
+ declare const getDocumentPlace: (image: SurveyDocImage) => SurveyDocPlace | undefined;
4
+ declare const getApplyIf: (image: SurveyDocImage) => string;
5
+ declare const assocDocumentPlace: (place: SurveyDocPlace) => (image: SurveyDocImage) => SurveyDocImage;
6
+ declare const assocApplyIf: (expr: string) => (image: SurveyDocImage) => SurveyDocImage;
7
+ declare const assocLabels: (labels: Labels) => (image: SurveyDocImage) => SurveyDocImage;
3
8
  export declare const SurveyDocImages: {
4
- getDocumentPlace: (image: SurveyDocImage) => SurveyDocPlace | undefined;
5
- getApplyIf: (image: SurveyDocImage) => string;
6
- assocDocumentPlace: (place: SurveyDocPlace) => (image: SurveyDocImage) => SurveyDocImage;
7
- assocApplyIf: (expr: string) => (image: SurveyDocImage) => SurveyDocImage;
8
- assocLabels: (labels: Labels) => (image: SurveyDocImage) => SurveyDocImage;
9
+ getDocumentPlace: typeof getDocumentPlace;
10
+ getApplyIf: typeof getApplyIf;
11
+ assocDocumentPlace: typeof assocDocumentPlace;
12
+ assocApplyIf: typeof assocApplyIf;
13
+ assocLabels: typeof assocLabels;
9
14
  };
15
+ export {};
@@ -1 +1 @@
1
- {"version":3,"file":"surveyDocImages.js","sourceRoot":"","sources":["../../src/survey/surveyDocImages.ts"],"names":[],"mappings":";;;AACA,oCAAkC;AAClC,qCAAiF;AAEjF,MAAM,gBAAgB,GAAG,CAAC,KAAqB,EAA8B,EAAE,CAC7E,eAAO,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,+BAAsB,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,CAAC,CAAA;AAEtE,MAAM,UAAU,GAAG,CAAC,KAAqB,EAAU,EAAE,WACnD,OAAA,MAAA,eAAO,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,+BAAsB,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,mCAAI,EAAE,CAAA,EAAA,CAAA;AAEtE,MAAM,kBAAkB,GACtB,CAAC,KAAqB,EAAE,EAAE,CAC1B,CAAC,KAAqB,EAAkB,EAAE,CACxC,eAAO,CAAC,SAAS,CAAC;IAChB,GAAG,EAAE,KAAK;IACV,IAAI,EAAE,CAAC,OAAO,EAAE,+BAAsB,CAAC,aAAa,CAAC;IACrD,KAAK,EAAE,KAAK;CACb,CAAmB,CAAA;AAExB,MAAM,YAAY,GAChB,CAAC,IAAY,EAAE,EAAE,CACjB,CAAC,KAAqB,EAAkB,EAAE,CACxC,eAAO,CAAC,SAAS,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,OAAO,EAAE,+BAAsB,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,CAAmB,CAAA;AAErH,MAAM,WAAW,GACf,CAAC,MAAc,EAAE,EAAE,CACnB,CAAC,KAAqB,EAAkB,EAAE,CACxC,eAAO,CAAC,SAAS,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,OAAO,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,CAAmB,CAAA;AAEpF,QAAA,eAAe,GAAG;IAC7B,gBAAgB;IAChB,UAAU;IACV,kBAAkB;IAClB,YAAY;IACZ,WAAW;CACZ,CAAA","sourcesContent":["import { Labels } from '../language'\nimport { Objects } from '../utils'\nimport { SurveyDocImage, SurveyDocPlace, surveyDocImagePropKeys } from './survey'\n\nconst getDocumentPlace = (image: SurveyDocImage): SurveyDocPlace | undefined =>\n Objects.path(['props', surveyDocImagePropKeys.documentPlace])(image)\n\nconst getApplyIf = (image: SurveyDocImage): string =>\n Objects.path(['props', surveyDocImagePropKeys.applyIf])(image) ?? ''\n\nconst assocDocumentPlace =\n (place: SurveyDocPlace) =>\n (image: SurveyDocImage): SurveyDocImage =>\n Objects.assocPath({\n obj: image,\n path: ['props', surveyDocImagePropKeys.documentPlace],\n value: place,\n }) as SurveyDocImage\n\nconst assocApplyIf =\n (expr: string) =>\n (image: SurveyDocImage): SurveyDocImage =>\n Objects.assocPath({ obj: image, path: ['props', surveyDocImagePropKeys.applyIf], value: expr }) as SurveyDocImage\n\nconst assocLabels =\n (labels: Labels) =>\n (image: SurveyDocImage): SurveyDocImage =>\n Objects.assocPath({ obj: image, path: ['props', 'labels'], value: labels }) as SurveyDocImage\n\nexport const SurveyDocImages = {\n getDocumentPlace,\n getApplyIf,\n assocDocumentPlace,\n assocApplyIf,\n assocLabels,\n}\n"]}
1
+ {"version":3,"file":"surveyDocImages.js","sourceRoot":"","sources":["../../src/survey/surveyDocImages.ts"],"names":[],"mappings":";;;AACA,oCAAkC;AAClC,qCAAiF;AAEjF,MAAM,gBAAgB,GAAG,CAAC,KAAqB,EAA8B,EAAE,CAC7E,eAAO,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,+BAAsB,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,CAAC,CAAA;AAEtE,MAAM,UAAU,GAAG,CAAC,KAAqB,EAAU,EAAE,wBACnD,eAAO,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,+BAAsB,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,mCAAI,EAAE,GAAA,CAAA;AAEtE,MAAM,kBAAkB,GACtB,CAAC,KAAqB,EAAE,EAAE,CAC1B,CAAC,KAAqB,EAAkB,EAAE,CACxC,eAAO,CAAC,SAAS,CAAC;IAChB,GAAG,EAAE,KAAK;IACV,IAAI,EAAE,CAAC,OAAO,EAAE,+BAAsB,CAAC,aAAa,CAAC;IACrD,KAAK,EAAE,KAAK;CACb,CAAmB,CAAA;AAExB,MAAM,YAAY,GAChB,CAAC,IAAY,EAAE,EAAE,CACjB,CAAC,KAAqB,EAAkB,EAAE,CACxC,eAAO,CAAC,SAAS,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,OAAO,EAAE,+BAAsB,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,CAAmB,CAAA;AAErH,MAAM,WAAW,GACf,CAAC,MAAc,EAAE,EAAE,CACnB,CAAC,KAAqB,EAAkB,EAAE,CACxC,eAAO,CAAC,SAAS,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,OAAO,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,CAAmB,CAAA;AAEpF,QAAA,eAAe,GAAG;IAC7B,gBAAgB;IAChB,UAAU;IACV,kBAAkB;IAClB,YAAY;IACZ,WAAW;CACZ,CAAA","sourcesContent":["import { Labels } from '../language'\nimport { Objects } from '../utils'\nimport { SurveyDocImage, SurveyDocPlace, surveyDocImagePropKeys } from './survey'\n\nconst getDocumentPlace = (image: SurveyDocImage): SurveyDocPlace | undefined =>\n Objects.path(['props', surveyDocImagePropKeys.documentPlace])(image)\n\nconst getApplyIf = (image: SurveyDocImage): string =>\n Objects.path(['props', surveyDocImagePropKeys.applyIf])(image) ?? ''\n\nconst assocDocumentPlace =\n (place: SurveyDocPlace) =>\n (image: SurveyDocImage): SurveyDocImage =>\n Objects.assocPath({\n obj: image,\n path: ['props', surveyDocImagePropKeys.documentPlace],\n value: place,\n }) as SurveyDocImage\n\nconst assocApplyIf =\n (expr: string) =>\n (image: SurveyDocImage): SurveyDocImage =>\n Objects.assocPath({ obj: image, path: ['props', surveyDocImagePropKeys.applyIf], value: expr }) as SurveyDocImage\n\nconst assocLabels =\n (labels: Labels) =>\n (image: SurveyDocImage): SurveyDocImage =>\n Objects.assocPath({ obj: image, path: ['props', 'labels'], value: labels }) as SurveyDocImage\n\nexport const SurveyDocImages = {\n getDocumentPlace,\n getApplyIf,\n assocDocumentPlace,\n assocApplyIf,\n assocLabels,\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"surveyFileFactory.js","sourceRoot":"","sources":["../../src/survey/surveyFileFactory.ts"],"names":[],"mappings":";;;AACA,oCAAuC;AAGvC,IAAY,cAEX;AAFD,WAAY,cAAc;IACxB,mDAAiC,CAAA;AACnC,CAAC,EAFW,cAAc,8BAAd,cAAc,QAEzB;AAIY,QAAA,iBAAiB,GAAiD;IAC7E,cAAc,EAAE,CAAC,SAAkC,EAAE,EAAc,EAAE;QACnE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,SAAS,GAAG,KAAK,EAAE,GAAG,MAAM,CAAA;QAE9D,OAAO;YACL,IAAI,EAAE,aAAK,CAAC,EAAE,EAAE;YAChB,WAAW,EAAE,aAAK,CAAC,sBAAsB,EAAE;YAC3C,KAAK,EAAE;gBACL,IAAI;gBACJ,MAAM,EAAE,MAAM,aAAN,MAAM,cAAN,MAAM,GAAI,SAAS;gBAC3B,IAAI;gBACJ,IAAI;gBACJ,SAAS;aACV;SACF,CAAA;IACH,CAAC;CACF,CAAA","sourcesContent":["import { Factory } from '../common'\nimport { Dates, UUIDs } from '../utils'\nimport { SurveyFile, SurveyFileProps } from './survey'\n\nexport enum SurveyFileType {\n surveyDocImage = 'surveyDocImage',\n}\n\nexport type SurveyFileFactoryParams = Pick<SurveyFileProps, 'name' | 'labels' | 'size' | 'type' | 'temporary'>\n\nexport const SurveyFileFactory: Factory<SurveyFile, SurveyFileFactoryParams> = {\n createInstance: (params: SurveyFileFactoryParams = {}): SurveyFile => {\n const { name, labels, size, type, temporary = false } = params\n\n return {\n uuid: UUIDs.v4(),\n dateCreated: Dates.nowFormattedForStorage(),\n props: {\n name,\n labels: labels ?? undefined,\n size,\n type,\n temporary,\n },\n }\n },\n}\n"]}
1
+ {"version":3,"file":"surveyFileFactory.js","sourceRoot":"","sources":["../../src/survey/surveyFileFactory.ts"],"names":[],"mappings":";;;AACA,oCAAuC;AAGvC,IAAY,cAEX;AAFD,WAAY,cAAc;IACxB,mDAAiC,CAAA;AACnC,CAAC,EAFW,cAAc,aAAd,cAAc,GAAd,cAAc,QAEzB;AAIY,QAAA,iBAAiB,GAAiD;IAC7E,cAAc,EAAE,CAAC,MAAM,GAA4B,EAAE,EAAc,EAAE;QACnE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,SAAS,GAAG,KAAK,EAAE,GAAG,MAAM,CAAA;QAE9D,OAAO;YACL,IAAI,EAAE,aAAK,CAAC,EAAE,EAAE;YAChB,WAAW,EAAE,aAAK,CAAC,sBAAsB,EAAE;YAC3C,KAAK,EAAE;gBACL,IAAI;gBACJ,MAAM,EAAE,MAAM,aAAN,MAAM,cAAN,MAAM,GAAI,SAAS;gBAC3B,IAAI;gBACJ,IAAI;gBACJ,SAAS;aACV;SACF,CAAA;IACH,CAAC;CACF,CAAA","sourcesContent":["import { Factory } from '../common'\nimport { Dates, UUIDs } from '../utils'\nimport { SurveyFile, SurveyFileProps } from './survey'\n\nexport enum SurveyFileType {\n surveyDocImage = 'surveyDocImage',\n}\n\nexport type SurveyFileFactoryParams = Pick<SurveyFileProps, 'name' | 'labels' | 'size' | 'type' | 'temporary'>\n\nexport const SurveyFileFactory: Factory<SurveyFile, SurveyFileFactoryParams> = {\n createInstance: (params: SurveyFileFactoryParams = {}): SurveyFile => {\n const { name, labels, size, type, temporary = false } = params\n\n return {\n uuid: UUIDs.v4(),\n dateCreated: Dates.nowFormattedForStorage(),\n props: {\n name,\n labels: labels ?? undefined,\n size,\n type,\n temporary,\n },\n }\n },\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"nodeDefsIndex.js","sourceRoot":"","sources":["../../../../src/survey/surveys/_nodeDefs/nodeDefsIndex.ts"],"names":[],"mappings":"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","sourcesContent":["import { NodeDef, NodeDefs } from '../../../nodeDef'\nimport { Objects } from '../../../utils'\nimport { Survey, SurveyNodeDefsIndex } from '../../survey'\nimport { getNodeDefsArray } from './nodeDefsReader'\n\nconst keys = {\n nodeDefsIndex: 'nodeDefsIndex',\n}\n\n// keys and values must match: forces every property of SurveyNodeDefsIndex to be present here,\n// and a rename/typo on either side becomes a compile error instead of a silent runtime mismatch.\nconst indexKeys: { [K in keyof SurveyNodeDefsIndex]-?: K } = {\n childDefUuidPresenceByParentUuid: 'childDefUuidPresenceByParentUuid',\n nodeDefUuidByName: 'nodeDefUuidByName',\n qualifierPresenceByUuid: 'qualifierPresenceByUuid',\n rootDefUuid: 'rootDefUuid',\n}\n\n// ==== READ\n\nexport const getNodeDefsIndex = (survey: Survey) => {\n const { nodeDefsIndex } = survey\n return nodeDefsIndex || {}\n}\n\n// ==== UPDATE\n\nexport const addNodeDefToIndex =\n (nodeDef: NodeDef<any>, options: { sideEffect: boolean }) =>\n (survey: Survey): Survey => {\n const { sideEffect = false } = options || {}\n\n const { analysis, parentUuid, temporary, uuid } = nodeDef\n const name = NodeDefs.getName(nodeDef)\n\n let surveyUpdated: Survey = Objects.assocPath({\n obj: survey,\n path: [keys.nodeDefsIndex, indexKeys.nodeDefUuidByName, name],\n value: nodeDef.uuid,\n sideEffect,\n })\n\n if (parentUuid) {\n surveyUpdated = Objects.assocPath({\n obj: surveyUpdated,\n path: [keys.nodeDefsIndex, indexKeys.childDefUuidPresenceByParentUuid, parentUuid, uuid],\n value: true,\n sideEffect,\n }) as Survey\n } else if (!temporary && !analysis) {\n // nodeDef is root\n surveyUpdated = Objects.assocPath({\n obj: surveyUpdated,\n path: [keys.nodeDefsIndex, indexKeys.rootDefUuid],\n value: uuid,\n sideEffect,\n }) as Survey\n }\n\n if (NodeDefs.isQualifier(nodeDef)) {\n surveyUpdated = Objects.assocPath({\n obj: surveyUpdated,\n path: [keys.nodeDefsIndex, indexKeys.qualifierPresenceByUuid, uuid],\n value: true,\n sideEffect,\n }) as Survey\n }\n return surveyUpdated\n }\n\nexport const updateNodeDefUuidByNameIndex =\n (nodeDef: NodeDef<any>, nodeDefPrevious?: NodeDef<any>, options?: { sideEffect?: boolean }) =>\n (survey: Survey): Survey => {\n const { sideEffect } = options ?? {}\n let surveyUpdated = survey\n const currentName = NodeDefs.getName(nodeDef)\n const previousName = nodeDefPrevious ? NodeDefs.getName(nodeDefPrevious) : ''\n if (currentName !== previousName) {\n surveyUpdated = Objects.dissocPath({\n obj: surveyUpdated,\n path: [keys.nodeDefsIndex, indexKeys.nodeDefUuidByName, previousName],\n sideEffect,\n })\n surveyUpdated = Objects.assocPath({\n obj: surveyUpdated,\n path: [keys.nodeDefsIndex, indexKeys.nodeDefUuidByName, currentName],\n value: nodeDef.uuid,\n sideEffect,\n })\n }\n return surveyUpdated\n }\n\n// ==== DELETE\n\nexport const deleteNodeDefIndex =\n (nodeDef: NodeDef<any>) =>\n (survey: Survey): Survey => {\n const { parentUuid, uuid } = nodeDef\n const name = NodeDefs.getName(nodeDef)\n\n let surveyUpdated: Survey = Objects.dissocPath({\n obj: survey,\n path: [keys.nodeDefsIndex, indexKeys.childDefUuidPresenceByParentUuid, uuid],\n })\n\n surveyUpdated = Objects.dissocPath({\n obj: surveyUpdated,\n path: [keys.nodeDefsIndex, indexKeys.nodeDefUuidByName, name],\n })\n\n if (parentUuid) {\n surveyUpdated = Objects.dissocPath({\n obj: surveyUpdated,\n path: [keys.nodeDefsIndex, indexKeys.childDefUuidPresenceByParentUuid, parentUuid, uuid],\n })\n } else if (survey.nodeDefsIndex?.rootDefUuid === uuid) {\n // node def is root (other node defs without parent, e.g. temporary or analysis ones, are not)\n surveyUpdated = Objects.dissocPath({\n obj: surveyUpdated,\n path: [keys.nodeDefsIndex, indexKeys.rootDefUuid],\n })\n }\n\n if (NodeDefs.isQualifier(nodeDef)) {\n surveyUpdated = Objects.dissocPath({\n obj: surveyUpdated,\n path: [keys.nodeDefsIndex, indexKeys.qualifierPresenceByUuid, uuid],\n })\n }\n return surveyUpdated\n }\n\n// ==== CREATE\n\nexport const buildAndAssocNodeDefsIndex = (survey: Survey): Survey => {\n survey.nodeDefsIndex = {\n childDefUuidPresenceByParentUuid: {},\n qualifierPresenceByUuid: {},\n }\n getNodeDefsArray(survey)\n .sort((nodeDef1: NodeDef<any>, nodeDef2: NodeDef<any>) => (nodeDef1.id ?? 0) - (nodeDef2.id ?? 0))\n .forEach((nodeDef) => addNodeDefToIndex(nodeDef, { sideEffect: true })(survey))\n\n return survey\n}\n"]}
1
+ {"version":3,"file":"nodeDefsIndex.js","sourceRoot":"","sources":["../../../../src/survey/surveys/_nodeDefs/nodeDefsIndex.ts"],"names":[],"mappings":"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","sourcesContent":["import { NodeDef, NodeDefs } from '../../../nodeDef'\nimport { Objects } from '../../../utils'\nimport { Survey, SurveyNodeDefsIndex } from '../../survey'\nimport { getNodeDefsArray } from './nodeDefsReader'\n\nconst keys = {\n nodeDefsIndex: 'nodeDefsIndex',\n}\n\n// keys and values must match: forces every property of SurveyNodeDefsIndex to be present here,\n// and a rename/typo on either side becomes a compile error instead of a silent runtime mismatch.\nconst indexKeys: { [K in keyof SurveyNodeDefsIndex]-?: K } = {\n childDefUuidPresenceByParentUuid: 'childDefUuidPresenceByParentUuid',\n nodeDefUuidByName: 'nodeDefUuidByName',\n qualifierPresenceByUuid: 'qualifierPresenceByUuid',\n rootDefUuid: 'rootDefUuid',\n}\n\n// ==== READ\n\nexport const getNodeDefsIndex = (survey: Survey) => {\n const { nodeDefsIndex } = survey\n return nodeDefsIndex || {}\n}\n\n// ==== UPDATE\n\nexport const addNodeDefToIndex =\n (nodeDef: NodeDef<any>, options: { sideEffect: boolean }) =>\n (survey: Survey): Survey => {\n const { sideEffect = false } = options || {}\n\n const { analysis, parentUuid, temporary, uuid } = nodeDef\n const name = NodeDefs.getName(nodeDef)\n\n let surveyUpdated: Survey = Objects.assocPath({\n obj: survey,\n path: [keys.nodeDefsIndex, indexKeys.nodeDefUuidByName, name],\n value: nodeDef.uuid,\n sideEffect,\n })\n\n if (parentUuid) {\n surveyUpdated = Objects.assocPath({\n obj: surveyUpdated,\n path: [keys.nodeDefsIndex, indexKeys.childDefUuidPresenceByParentUuid, parentUuid, uuid],\n value: true,\n sideEffect,\n }) as Survey\n } else if (!temporary && !analysis) {\n // nodeDef is root\n surveyUpdated = Objects.assocPath({\n obj: surveyUpdated,\n path: [keys.nodeDefsIndex, indexKeys.rootDefUuid],\n value: uuid,\n sideEffect,\n }) as Survey\n }\n\n if (NodeDefs.isQualifier(nodeDef)) {\n surveyUpdated = Objects.assocPath({\n obj: surveyUpdated,\n path: [keys.nodeDefsIndex, indexKeys.qualifierPresenceByUuid, uuid],\n value: true,\n sideEffect,\n }) as Survey\n }\n return surveyUpdated\n }\n\nexport const updateNodeDefUuidByNameIndex =\n (nodeDef: NodeDef<any>, nodeDefPrevious?: NodeDef<any>, options?: { sideEffect?: boolean }) =>\n (survey: Survey): Survey => {\n const { sideEffect } = options ?? {}\n let surveyUpdated = survey\n const currentName = NodeDefs.getName(nodeDef)\n const previousName = nodeDefPrevious ? NodeDefs.getName(nodeDefPrevious) : ''\n if (currentName !== previousName) {\n surveyUpdated = Objects.dissocPath({\n obj: surveyUpdated,\n path: [keys.nodeDefsIndex, indexKeys.nodeDefUuidByName, previousName],\n sideEffect,\n })\n surveyUpdated = Objects.assocPath({\n obj: surveyUpdated,\n path: [keys.nodeDefsIndex, indexKeys.nodeDefUuidByName, currentName],\n value: nodeDef.uuid,\n sideEffect,\n })\n }\n return surveyUpdated\n }\n\n// ==== DELETE\n\nexport const deleteNodeDefIndex =\n (nodeDef: NodeDef<any>) =>\n (survey: Survey): Survey => {\n const { parentUuid, uuid } = nodeDef\n const name = NodeDefs.getName(nodeDef)\n\n let surveyUpdated: Survey = Objects.dissocPath({\n obj: survey,\n path: [keys.nodeDefsIndex, indexKeys.childDefUuidPresenceByParentUuid, uuid],\n })\n\n surveyUpdated = Objects.dissocPath({\n obj: surveyUpdated,\n path: [keys.nodeDefsIndex, indexKeys.nodeDefUuidByName, name],\n })\n\n if (parentUuid) {\n surveyUpdated = Objects.dissocPath({\n obj: surveyUpdated,\n path: [keys.nodeDefsIndex, indexKeys.childDefUuidPresenceByParentUuid, parentUuid, uuid],\n })\n } else if (survey.nodeDefsIndex?.rootDefUuid === uuid) {\n // node def is root (other node defs without parent, e.g. temporary or analysis ones, are not)\n surveyUpdated = Objects.dissocPath({\n obj: surveyUpdated,\n path: [keys.nodeDefsIndex, indexKeys.rootDefUuid],\n })\n }\n\n if (NodeDefs.isQualifier(nodeDef)) {\n surveyUpdated = Objects.dissocPath({\n obj: surveyUpdated,\n path: [keys.nodeDefsIndex, indexKeys.qualifierPresenceByUuid, uuid],\n })\n }\n return surveyUpdated\n }\n\n// ==== CREATE\n\nexport const buildAndAssocNodeDefsIndex = (survey: Survey): Survey => {\n survey.nodeDefsIndex = {\n childDefUuidPresenceByParentUuid: {},\n qualifierPresenceByUuid: {},\n }\n getNodeDefsArray(survey)\n .sort((nodeDef1: NodeDef<any>, nodeDef2: NodeDef<any>) => (nodeDef1.id ?? 0) - (nodeDef2.id ?? 0))\n .forEach((nodeDef) => addNodeDefToIndex(nodeDef, { sideEffect: true })(survey))\n\n return survey\n}\n"]}