@openforis/arena-core 2.3.38 → 2.3.40

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 +3 -3
@@ -17,54 +17,107 @@ export declare enum UnitOfTime {
17
17
  seconds = "seconds"
18
18
  }
19
19
  type DateType = Date | number | string;
20
+ declare const format: (date: number | Date | undefined, format: string) => string;
21
+ /**
22
+ * Like `format`, but renders in UTC instead of the machine's local time zone.
23
+ * Use this when formatting a `Date` produced by `parse`/`parseZone`-style parsing, whose
24
+ * underlying timestamp already encodes the source digits as if they were UTC (see `parse`) -
25
+ * formatting with the local-time `format` above would silently re-shift them by the host's offset.
26
+ */
27
+ declare const formatUTC: (date: number | Date | undefined, format: string) => string;
28
+ declare const formatForStorage: (date: DateType) => string;
29
+ declare const formatForExpression: (date: DateType) => string;
30
+ declare const nowFormattedForStorage: () => string;
31
+ declare const nowFormattedForExpression: () => string;
32
+ declare const parseISO: (dateStr: string) => Date | undefined;
33
+ declare const parse: (dateStr: string, format: DateFormats, { keepTimeZone, strict }?: {
34
+ keepTimeZone?: boolean | undefined;
35
+ strict?: boolean | undefined;
36
+ }) => Date | undefined;
37
+ declare const isValidDateObject: (date: Date | undefined) => boolean;
38
+ declare const isValidDateInFormat: (dateStr: string, format: DateFormats) => boolean;
39
+ declare const convertDate: (params: {
40
+ dateStr: string;
41
+ formatFrom?: DateFormats;
42
+ formatTo: DateFormats;
43
+ keepTimeZone?: boolean;
44
+ }) => string | undefined;
45
+ /**
46
+ * Checks if the date is valid. Takes into account leap years
47
+ * (i.e. 2015/2/29 is not valid).
48
+ */
49
+ declare const isValidDate: (year: any, month: any, day: any) => boolean;
50
+ declare const isValidTime: (hour?: any, minutes?: any, seconds?: any) => boolean;
51
+ declare const isAfter: (date: DateType, dateToCompare: DateType) => boolean;
52
+ declare const isBefore: (date: DateType, dateToCompare: DateType) => boolean;
53
+ declare const add: (date: DateType, value: number, unit: UnitOfTime) => Date;
54
+ declare const addSeconds: (date: DateType, value: number) => Date;
55
+ declare const addMinutes: (date: DateType, value: number) => Date;
56
+ declare const addHours: (date: DateType, value: number) => Date;
57
+ declare const addDays: (date: DateType, value: number) => Date;
58
+ declare const addWeeks: (date: DateType, value: number) => Date;
59
+ declare const addMonths: (date: DateType, value: number) => Date;
60
+ declare const addYears: (date: DateType, value: number) => Date;
61
+ declare const diff: (dateA: DateType, dateB: DateType, unit: UnitOfTime, precise?: boolean) => number;
62
+ declare const diffInSeconds: (dateA: DateType, dateB: DateType) => number;
63
+ declare const diffInMinutes: (dateA: DateType, dateB: DateType) => number;
64
+ declare const diffInHours: (dateA: DateType, dateB: DateType) => number;
65
+ declare const diffInDays: (dateA: DateType, dateB: DateType) => number;
66
+ declare const diffInWeeks: (dateA: DateType, dateB: DateType) => number;
67
+ declare const diffInMonths: (dateA: DateType, dateB: DateType) => number;
68
+ declare const diffInYears: (dateA: DateType, dateB: DateType) => number;
69
+ declare const sub: (date: DateType, value: number, unit: UnitOfTime) => Date;
70
+ declare const subSeconds: (date: DateType, value: number) => Date;
71
+ declare const subMinutes: (date: DateType, value: number) => Date;
72
+ declare const subHours: (date: DateType, value: number) => Date;
73
+ declare const subDays: (date: DateType, value: number) => Date;
74
+ declare const subWeeks: (date: DateType, value: number) => Date;
75
+ declare const subMonths: (date: DateType, value: number) => Date;
76
+ declare const subYears: (date: DateType, value: number) => Date;
77
+ /**
78
+ * Gets the difference in minutes between the time on the local computer and Universal Coordinated Time (UTC).
79
+ */
80
+ declare const getTimezoneOffset: () => number;
20
81
  export declare const Dates: {
21
- isAfter: (date: DateType, dateToCompare: DateType) => boolean;
22
- isBefore: (date: DateType, dateToCompare: DateType) => boolean;
23
- isValidDate: (year: any, month: any, day: any) => boolean;
24
- isValidDateInFormat: (dateStr: string, format: DateFormats) => boolean;
25
- isValidDateObject: (date: Date | undefined) => boolean;
26
- isValidTime: (hour?: any, minutes?: any, seconds?: any) => boolean;
27
- nowFormattedForStorage: () => string;
28
- nowFormattedForExpression: () => string;
29
- convertDate: (params: {
30
- dateStr: string;
31
- formatFrom?: DateFormats;
32
- formatTo: DateFormats;
33
- keepTimeZone?: boolean;
34
- }) => string | undefined;
35
- format: (date: number | Date | undefined, format: string) => string;
36
- formatUTC: (date: number | Date | undefined, format: string) => string;
37
- formatForStorage: (date: DateType) => string;
38
- formatForExpression: (date: DateType) => string;
39
- parse: (dateStr: string, format: DateFormats, { keepTimeZone, strict }?: {
40
- keepTimeZone?: boolean | undefined;
41
- strict?: boolean | undefined;
42
- }) => Date | undefined;
43
- parseISO: (dateStr: string) => Date | undefined;
44
- getTimezoneOffset: () => number;
45
- add: (date: DateType, value: number, unit: UnitOfTime) => Date;
46
- addSeconds: (date: DateType, value: number) => Date;
47
- addMinutes: (date: DateType, value: number) => Date;
48
- addHours: (date: DateType, value: number) => Date;
49
- addDays: (date: DateType, value: number) => Date;
50
- addWeeks: (date: DateType, value: number) => Date;
51
- addMonths: (date: DateType, value: number) => Date;
52
- addYears: (date: DateType, value: number) => Date;
53
- sub: (date: DateType, value: number, unit: UnitOfTime) => Date;
54
- subSeconds: (date: DateType, value: number) => Date;
55
- subMinutes: (date: DateType, value: number) => Date;
56
- subHours: (date: DateType, value: number) => Date;
57
- subDays: (date: DateType, value: number) => Date;
58
- subWeeks: (date: DateType, value: number) => Date;
59
- subMonths: (date: DateType, value: number) => Date;
60
- subYears: (date: DateType, value: number) => Date;
61
- diff: (dateA: DateType, dateB: DateType, unit: UnitOfTime, precise?: boolean) => number;
62
- diffInSeconds: (dateA: DateType, dateB: DateType) => number;
63
- diffInMinutes: (dateA: DateType, dateB: DateType) => number;
64
- diffInHours: (dateA: DateType, dateB: DateType) => number;
65
- diffInDays: (dateA: DateType, dateB: DateType) => number;
66
- diffInWeeks: (dateA: DateType, dateB: DateType) => number;
67
- diffInMonths: (dateA: DateType, dateB: DateType) => number;
68
- diffInYears: (dateA: DateType, dateB: DateType) => number;
82
+ isAfter: typeof isAfter;
83
+ isBefore: typeof isBefore;
84
+ isValidDate: typeof isValidDate;
85
+ isValidDateInFormat: typeof isValidDateInFormat;
86
+ isValidDateObject: typeof isValidDateObject;
87
+ isValidTime: typeof isValidTime;
88
+ nowFormattedForStorage: typeof nowFormattedForStorage;
89
+ nowFormattedForExpression: typeof nowFormattedForExpression;
90
+ convertDate: typeof convertDate;
91
+ format: typeof format;
92
+ formatUTC: typeof formatUTC;
93
+ formatForStorage: typeof formatForStorage;
94
+ formatForExpression: typeof formatForExpression;
95
+ parse: typeof parse;
96
+ parseISO: typeof parseISO;
97
+ getTimezoneOffset: typeof getTimezoneOffset;
98
+ add: typeof add;
99
+ addSeconds: typeof addSeconds;
100
+ addMinutes: typeof addMinutes;
101
+ addHours: typeof addHours;
102
+ addDays: typeof addDays;
103
+ addWeeks: typeof addWeeks;
104
+ addMonths: typeof addMonths;
105
+ addYears: typeof addYears;
106
+ sub: typeof sub;
107
+ subSeconds: typeof subSeconds;
108
+ subMinutes: typeof subMinutes;
109
+ subHours: typeof subHours;
110
+ subDays: typeof subDays;
111
+ subWeeks: typeof subWeeks;
112
+ subMonths: typeof subMonths;
113
+ subYears: typeof subYears;
114
+ diff: typeof diff;
115
+ diffInSeconds: typeof diffInSeconds;
116
+ diffInMinutes: typeof diffInMinutes;
117
+ diffInHours: typeof diffInHours;
118
+ diffInDays: typeof diffInDays;
119
+ diffInWeeks: typeof diffInWeeks;
120
+ diffInMonths: typeof diffInMonths;
121
+ diffInYears: typeof diffInYears;
69
122
  };
70
123
  export {};
@@ -1 +1 @@
1
- {"version":3,"file":"dates.js","sourceRoot":"","sources":["../../src/utils/dates.ts"],"names":[],"mappings":"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","sourcesContent":["import dayjs from 'dayjs'\nimport customParseFormat from 'dayjs/plugin/customParseFormat'\nimport utc from 'dayjs/plugin/utc'\nimport { Objects } from './_objects'\n\ndayjs.extend(customParseFormat)\ndayjs.extend(utc)\n\nexport enum DateFormats {\n dateDisplay = 'DD/MM/YYYY',\n dateStorage = 'YYYY-MM-DD',\n datetimeDisplay = 'DD/MM/YYYY HH:mm:ss',\n datetimeStorage = 'YYYY-MM-DD[T]HH:mm:ss.SSS[Z]', // ISO\n timeStorage = 'HH:mm',\n timeWithSeconds = 'HH:mm:ss',\n datetimeDefault = 'YYYY-MM-DD_HH-mm-ss',\n}\n\nexport enum UnitOfTime {\n years = 'years',\n months = 'months',\n weeks = 'weeks',\n days = 'days',\n hours = 'hours',\n minutes = 'minutes',\n seconds = 'seconds',\n}\n\ntype DateType = Date | number | string\n\nconst format = (date: number | Date | undefined, format: string): string => (date ? dayjs(date).format(format) : '')\n\n/**\n * Like `format`, but renders in UTC instead of the machine's local time zone.\n * Use this when formatting a `Date` produced by `parse`/`parseZone`-style parsing, whose\n * underlying timestamp already encodes the source digits as if they were UTC (see `parse`) -\n * formatting with the local-time `format` above would silently re-shift them by the host's offset.\n */\nconst formatUTC = (date: number | Date | undefined, format: string): string =>\n date ? dayjs.utc(date).format(format) : ''\n\nconst formatForStorage = (date: DateType): string => new Date(date).toISOString()\nconst formatForExpression = (date: DateType): string => format(new Date(date), DateFormats.datetimeDefault)\n\nconst nowFormattedForStorage = (): string => formatForStorage(new Date())\nconst nowFormattedForExpression = (): string => formatForExpression(Date.now())\n\n// ISO date or date time: YYYY-MM-DD[THH:mm[:ss[.SSS]]][Z|±HH:mm]\nconst ISO_OFFSET_REGEX = /(?:Z|[+-]\\d{2}:?\\d{2})$/\nconst ISO_DATE_REGEX = /^(\\d{4})-(\\d{2})-(\\d{2})$/\nconst ISO_TIME_REGEX = /^(\\d{2}):(\\d{2})(?::(\\d{2})(?:\\.\\d+)?)?$/\n\nconst invalidDate = (): Date => new Date(Number.NaN)\n\n/**\n * Parses an ISO date (or date time) string; values like 2020-02-30 are not valid (they are not moved to the next month).\n * Date only strings and date times without offset are read as UTC.\n */\nconst parseISOStrict = (dateStr: string): Date => {\n const dateTimeStr = dateStr.replace(ISO_OFFSET_REGEX, '')\n const [datePart, timePart, ...otherParts] = dateTimeStr.split(/[T ]/)\n if (otherParts.length > 0) return invalidDate()\n\n const dateMatch = ISO_DATE_REGEX.exec(datePart)\n if (!dateMatch) return invalidDate()\n const [, year, month, day] = dateMatch\n if (!isValidDate(year, month, day)) return invalidDate()\n\n if (timePart !== undefined) {\n const timeMatch = ISO_TIME_REGEX.exec(timePart)\n if (!timeMatch) return invalidDate()\n const [, hours, minutes, seconds] = timeMatch\n if (!isValidTime(hours, minutes, seconds ?? 0)) return invalidDate()\n }\n return dayjs.utc(dateStr).toDate()\n}\n\nconst parseISO = (dateStr: string): Date | undefined => (dateStr ? dayjs(dateStr).toDate() : undefined)\nconst parse = (\n dateStr: string,\n format: DateFormats,\n { keepTimeZone = true, strict = false } = {}\n): Date | undefined => {\n if (!dateStr) return undefined\n // ISO strings without an explicit offset (e.g. date only) are read as UTC, like the other formats with keepTimeZone\n if (format == DateFormats.datetimeStorage) return parseISOStrict(dateStr)\n // keepTimeZone: the formats don't contain any time zone offset, so the digits are read as UTC\n if (keepTimeZone) return dayjs.utc(dateStr, format, strict).toDate()\n return dayjs(dateStr, format, strict).toDate()\n}\n\nconst isValidDateObject = (date: Date | undefined): boolean => !!date && dayjs(date).isValid()\n\nconst isValidDateInFormat = (dateStr: string, format: DateFormats) => {\n const parsed = parse(dateStr, format, { strict: true })\n return isValidDateObject(parsed)\n}\n\nconst convertDate = (params: {\n dateStr: string\n formatFrom?: DateFormats\n formatTo: DateFormats\n keepTimeZone?: boolean\n}): string | undefined => {\n const { dateStr, formatFrom = DateFormats.dateStorage, formatTo, keepTimeZone = true } = params\n if (Objects.isEmpty(dateStr)) return undefined\n\n const dateParsed = parse(dateStr, formatFrom, { keepTimeZone })\n if (!dateParsed || !dayjs(dateParsed).isValid()) {\n return undefined\n }\n // with keepTimeZone the parsed date encodes the source digits as if they were UTC (see parse/parseZone):\n // format it in UTC too, otherwise the digits would be shifted by the time zone of this machine\n return keepTimeZone ? formatUTC(dateParsed, formatTo) : format(dateParsed, formatTo)\n}\n\n/**\n * Checks if the date is valid. Takes into account leap years\n * (i.e. 2015/2/29 is not valid).\n */\nconst isValidDate = (year: any, month: any, day: any): boolean => {\n if (Objects.isEmpty(year) || Objects.isEmpty(month) || Objects.isEmpty(day)) {\n return false\n }\n\n const date = new Date(year, month - 1, day)\n\n return (\n dayjs(date).isValid() &&\n date.getFullYear() === Number(year) &&\n date.getMonth() + 1 === Number(month) &&\n date.getDate() === Number(day)\n )\n}\n\nconst isValidTime = (hour: any = '', minutes: any = '', seconds: any = 0): boolean => {\n if (Objects.isEmpty(hour) || Objects.isEmpty(minutes)) return false\n if (!(Number(hour) >= 0 && Number(hour) < 24 && Number(minutes) >= 0 && Number(minutes) < 60)) return false\n return Number(seconds) >= 0 && Number(seconds) < 60\n}\n\nconst toDate = (date: DateType): Date | undefined => {\n if (Objects.isEmpty(date)) return undefined\n if (date instanceof Date) return date\n if (typeof date === 'string') return parseISO(date)\n if (typeof date === 'number') return new Date(date)\n return undefined\n}\n\nconst isAfter = (date: DateType, dateToCompare: DateType): boolean => {\n const _date = toDate(date)\n const _dateToCompare = toDate(dateToCompare)\n if (!_date || !_dateToCompare) return false\n return dayjs(_date).isAfter(dayjs(_dateToCompare))\n}\n\nconst isBefore = (date: DateType, dateToCompare: DateType): boolean => {\n const _date = toDate(date)\n const _dateToCompare = toDate(dateToCompare)\n if (!_date || !_dateToCompare) return false\n return dayjs(_date).isBefore(dayjs(_dateToCompare))\n}\n\nconst add = (date: DateType, value: number, unit: UnitOfTime): Date => dayjs(date).add(value, unit).toDate()\nconst addSeconds = (date: DateType, value: number): Date => add(date, value, UnitOfTime.seconds)\nconst addMinutes = (date: DateType, value: number): Date => add(date, value, UnitOfTime.minutes)\nconst addHours = (date: DateType, value: number): Date => add(date, value, UnitOfTime.hours)\nconst addDays = (date: DateType, value: number): Date => add(date, value, UnitOfTime.days)\nconst addWeeks = (date: DateType, value: number): Date => add(date, value, UnitOfTime.weeks)\nconst addMonths = (date: DateType, value: number): Date => add(date, value, UnitOfTime.months)\nconst addYears = (date: DateType, value: number): Date => add(date, value, UnitOfTime.years)\n\nconst diff = (dateA: DateType, dateB: DateType, unit: UnitOfTime, precise?: boolean): number =>\n dayjs(dateA).diff(dayjs(dateB), unit, precise)\nconst diffInSeconds = (dateA: DateType, dateB: DateType): number => diff(dateA, dateB, UnitOfTime.seconds)\nconst diffInMinutes = (dateA: DateType, dateB: DateType): number => diff(dateA, dateB, UnitOfTime.minutes)\nconst diffInHours = (dateA: DateType, dateB: DateType): number => diff(dateA, dateB, UnitOfTime.hours)\nconst diffInDays = (dateA: DateType, dateB: DateType): number => diff(dateA, dateB, UnitOfTime.days)\nconst diffInWeeks = (dateA: DateType, dateB: DateType): number => diff(dateA, dateB, UnitOfTime.weeks)\nconst diffInMonths = (dateA: DateType, dateB: DateType): number => diff(dateA, dateB, UnitOfTime.months)\nconst diffInYears = (dateA: DateType, dateB: DateType): number => diff(dateA, dateB, UnitOfTime.years)\n\nconst sub = (date: DateType, value: number, unit: UnitOfTime): Date => dayjs(date).subtract(value, unit).toDate()\nconst subSeconds = (date: DateType, value: number): Date => sub(date, value, UnitOfTime.seconds)\nconst subMinutes = (date: DateType, value: number): Date => sub(date, value, UnitOfTime.minutes)\nconst subHours = (date: DateType, value: number): Date => sub(date, value, UnitOfTime.hours)\nconst subDays = (date: DateType, value: number): Date => sub(date, value, UnitOfTime.days)\nconst subWeeks = (date: DateType, value: number): Date => sub(date, value, UnitOfTime.weeks)\nconst subMonths = (date: DateType, value: number): Date => sub(date, value, UnitOfTime.months)\nconst subYears = (date: DateType, value: number): Date => sub(date, value, UnitOfTime.years)\n\n/**\n * Gets the difference in minutes between the time on the local computer and Universal Coordinated Time (UTC).\n */\nconst getTimezoneOffset = (): number => new Date().getTimezoneOffset()\n\nexport const Dates = {\n isAfter,\n isBefore,\n isValidDate,\n isValidDateInFormat,\n isValidDateObject,\n isValidTime,\n nowFormattedForStorage,\n nowFormattedForExpression,\n convertDate,\n format,\n formatUTC,\n formatForStorage,\n formatForExpression,\n parse,\n parseISO,\n getTimezoneOffset,\n add,\n addSeconds,\n addMinutes,\n addHours,\n addDays,\n addWeeks,\n addMonths,\n addYears,\n sub,\n subSeconds,\n subMinutes,\n subHours,\n subDays,\n subWeeks,\n subMonths,\n subYears,\n diff,\n diffInSeconds,\n diffInMinutes,\n diffInHours,\n diffInDays,\n diffInWeeks,\n diffInMonths,\n diffInYears,\n}\n"]}
1
+ {"version":3,"file":"dates.js","sourceRoot":"","sources":["../../src/utils/dates.ts"],"names":[],"mappings":"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","sourcesContent":["import dayjs from 'dayjs'\nimport customParseFormat from 'dayjs/plugin/customParseFormat'\nimport utc from 'dayjs/plugin/utc'\nimport { Objects } from './_objects'\n\ndayjs.extend(customParseFormat)\ndayjs.extend(utc)\n\nexport enum DateFormats {\n dateDisplay = 'DD/MM/YYYY',\n dateStorage = 'YYYY-MM-DD',\n datetimeDisplay = 'DD/MM/YYYY HH:mm:ss',\n datetimeStorage = 'YYYY-MM-DD[T]HH:mm:ss.SSS[Z]', // ISO\n timeStorage = 'HH:mm',\n timeWithSeconds = 'HH:mm:ss',\n datetimeDefault = 'YYYY-MM-DD_HH-mm-ss',\n}\n\nexport enum UnitOfTime {\n years = 'years',\n months = 'months',\n weeks = 'weeks',\n days = 'days',\n hours = 'hours',\n minutes = 'minutes',\n seconds = 'seconds',\n}\n\ntype DateType = Date | number | string\n\nconst format = (date: number | Date | undefined, format: string): string => (date ? dayjs(date).format(format) : '')\n\n/**\n * Like `format`, but renders in UTC instead of the machine's local time zone.\n * Use this when formatting a `Date` produced by `parse`/`parseZone`-style parsing, whose\n * underlying timestamp already encodes the source digits as if they were UTC (see `parse`) -\n * formatting with the local-time `format` above would silently re-shift them by the host's offset.\n */\nconst formatUTC = (date: number | Date | undefined, format: string): string =>\n date ? dayjs.utc(date).format(format) : ''\n\nconst formatForStorage = (date: DateType): string => new Date(date).toISOString()\nconst formatForExpression = (date: DateType): string => format(new Date(date), DateFormats.datetimeDefault)\n\nconst nowFormattedForStorage = (): string => formatForStorage(new Date())\nconst nowFormattedForExpression = (): string => formatForExpression(Date.now())\n\n// ISO date or date time: YYYY-MM-DD[THH:mm[:ss[.SSS]]][Z|±HH:mm]\nconst ISO_OFFSET_REGEX = /(?:Z|[+-]\\d{2}:?\\d{2})$/\nconst ISO_DATE_REGEX = /^(\\d{4})-(\\d{2})-(\\d{2})$/\nconst ISO_TIME_REGEX = /^(\\d{2}):(\\d{2})(?::(\\d{2})(?:\\.\\d+)?)?$/\n\nconst invalidDate = (): Date => new Date(Number.NaN)\n\n/**\n * Parses an ISO date (or date time) string; values like 2020-02-30 are not valid (they are not moved to the next month).\n * Date only strings and date times without offset are read as UTC.\n */\nconst parseISOStrict = (dateStr: string): Date => {\n const dateTimeStr = dateStr.replace(ISO_OFFSET_REGEX, '')\n const [datePart, timePart, ...otherParts] = dateTimeStr.split(/[T ]/)\n if (otherParts.length > 0) return invalidDate()\n\n const dateMatch = ISO_DATE_REGEX.exec(datePart)\n if (!dateMatch) return invalidDate()\n const [, year, month, day] = dateMatch\n if (!isValidDate(year, month, day)) return invalidDate()\n\n if (timePart !== undefined) {\n const timeMatch = ISO_TIME_REGEX.exec(timePart)\n if (!timeMatch) return invalidDate()\n const [, hours, minutes, seconds] = timeMatch\n if (!isValidTime(hours, minutes, seconds ?? 0)) return invalidDate()\n }\n return dayjs.utc(dateStr).toDate()\n}\n\nconst parseISO = (dateStr: string): Date | undefined => (dateStr ? dayjs(dateStr).toDate() : undefined)\nconst parse = (\n dateStr: string,\n format: DateFormats,\n { keepTimeZone = true, strict = false } = {}\n): Date | undefined => {\n if (!dateStr) return undefined\n // ISO strings without an explicit offset (e.g. date only) are read as UTC, like the other formats with keepTimeZone\n if (format == DateFormats.datetimeStorage) return parseISOStrict(dateStr)\n // keepTimeZone: the formats don't contain any time zone offset, so the digits are read as UTC\n if (keepTimeZone) return dayjs.utc(dateStr, format, strict).toDate()\n return dayjs(dateStr, format, strict).toDate()\n}\n\nconst isValidDateObject = (date: Date | undefined): boolean => !!date && dayjs(date).isValid()\n\nconst isValidDateInFormat = (dateStr: string, format: DateFormats) => {\n const parsed = parse(dateStr, format, { strict: true })\n return isValidDateObject(parsed)\n}\n\nconst convertDate = (params: {\n dateStr: string\n formatFrom?: DateFormats\n formatTo: DateFormats\n keepTimeZone?: boolean\n}): string | undefined => {\n const { dateStr, formatFrom = DateFormats.dateStorage, formatTo, keepTimeZone = true } = params\n if (Objects.isEmpty(dateStr)) return undefined\n\n const dateParsed = parse(dateStr, formatFrom, { keepTimeZone })\n if (!dateParsed || !dayjs(dateParsed).isValid()) {\n return undefined\n }\n // with keepTimeZone the parsed date encodes the source digits as if they were UTC (see parse/parseZone):\n // format it in UTC too, otherwise the digits would be shifted by the time zone of this machine\n return keepTimeZone ? formatUTC(dateParsed, formatTo) : format(dateParsed, formatTo)\n}\n\n/**\n * Checks if the date is valid. Takes into account leap years\n * (i.e. 2015/2/29 is not valid).\n */\nconst isValidDate = (year: any, month: any, day: any): boolean => {\n if (Objects.isEmpty(year) || Objects.isEmpty(month) || Objects.isEmpty(day)) {\n return false\n }\n\n const date = new Date(year, month - 1, day)\n\n return (\n dayjs(date).isValid() &&\n date.getFullYear() === Number(year) &&\n date.getMonth() + 1 === Number(month) &&\n date.getDate() === Number(day)\n )\n}\n\nconst isValidTime = (hour: any = '', minutes: any = '', seconds: any = 0): boolean => {\n if (Objects.isEmpty(hour) || Objects.isEmpty(minutes)) return false\n if (!(Number(hour) >= 0 && Number(hour) < 24 && Number(minutes) >= 0 && Number(minutes) < 60)) return false\n return Number(seconds) >= 0 && Number(seconds) < 60\n}\n\nconst toDate = (date: DateType): Date | undefined => {\n if (Objects.isEmpty(date)) return undefined\n if (date instanceof Date) return date\n if (typeof date === 'string') return parseISO(date)\n if (typeof date === 'number') return new Date(date)\n return undefined\n}\n\nconst isAfter = (date: DateType, dateToCompare: DateType): boolean => {\n const _date = toDate(date)\n const _dateToCompare = toDate(dateToCompare)\n if (!_date || !_dateToCompare) return false\n return dayjs(_date).isAfter(dayjs(_dateToCompare))\n}\n\nconst isBefore = (date: DateType, dateToCompare: DateType): boolean => {\n const _date = toDate(date)\n const _dateToCompare = toDate(dateToCompare)\n if (!_date || !_dateToCompare) return false\n return dayjs(_date).isBefore(dayjs(_dateToCompare))\n}\n\nconst add = (date: DateType, value: number, unit: UnitOfTime): Date => dayjs(date).add(value, unit).toDate()\nconst addSeconds = (date: DateType, value: number): Date => add(date, value, UnitOfTime.seconds)\nconst addMinutes = (date: DateType, value: number): Date => add(date, value, UnitOfTime.minutes)\nconst addHours = (date: DateType, value: number): Date => add(date, value, UnitOfTime.hours)\nconst addDays = (date: DateType, value: number): Date => add(date, value, UnitOfTime.days)\nconst addWeeks = (date: DateType, value: number): Date => add(date, value, UnitOfTime.weeks)\nconst addMonths = (date: DateType, value: number): Date => add(date, value, UnitOfTime.months)\nconst addYears = (date: DateType, value: number): Date => add(date, value, UnitOfTime.years)\n\nconst diff = (dateA: DateType, dateB: DateType, unit: UnitOfTime, precise?: boolean): number =>\n dayjs(dateA).diff(dayjs(dateB), unit, precise)\nconst diffInSeconds = (dateA: DateType, dateB: DateType): number => diff(dateA, dateB, UnitOfTime.seconds)\nconst diffInMinutes = (dateA: DateType, dateB: DateType): number => diff(dateA, dateB, UnitOfTime.minutes)\nconst diffInHours = (dateA: DateType, dateB: DateType): number => diff(dateA, dateB, UnitOfTime.hours)\nconst diffInDays = (dateA: DateType, dateB: DateType): number => diff(dateA, dateB, UnitOfTime.days)\nconst diffInWeeks = (dateA: DateType, dateB: DateType): number => diff(dateA, dateB, UnitOfTime.weeks)\nconst diffInMonths = (dateA: DateType, dateB: DateType): number => diff(dateA, dateB, UnitOfTime.months)\nconst diffInYears = (dateA: DateType, dateB: DateType): number => diff(dateA, dateB, UnitOfTime.years)\n\nconst sub = (date: DateType, value: number, unit: UnitOfTime): Date => dayjs(date).subtract(value, unit).toDate()\nconst subSeconds = (date: DateType, value: number): Date => sub(date, value, UnitOfTime.seconds)\nconst subMinutes = (date: DateType, value: number): Date => sub(date, value, UnitOfTime.minutes)\nconst subHours = (date: DateType, value: number): Date => sub(date, value, UnitOfTime.hours)\nconst subDays = (date: DateType, value: number): Date => sub(date, value, UnitOfTime.days)\nconst subWeeks = (date: DateType, value: number): Date => sub(date, value, UnitOfTime.weeks)\nconst subMonths = (date: DateType, value: number): Date => sub(date, value, UnitOfTime.months)\nconst subYears = (date: DateType, value: number): Date => sub(date, value, UnitOfTime.years)\n\n/**\n * Gets the difference in minutes between the time on the local computer and Universal Coordinated Time (UTC).\n */\nconst getTimezoneOffset = (): number => new Date().getTimezoneOffset()\n\nexport const Dates = {\n isAfter,\n isBefore,\n isValidDate,\n isValidDateInFormat,\n isValidDateObject,\n isValidTime,\n nowFormattedForStorage,\n nowFormattedForExpression,\n convertDate,\n format,\n formatUTC,\n formatForStorage,\n formatForExpression,\n parse,\n parseISO,\n getTimezoneOffset,\n add,\n addSeconds,\n addMinutes,\n addHours,\n addDays,\n addWeeks,\n addMonths,\n addYears,\n sub,\n subSeconds,\n subMinutes,\n subHours,\n subDays,\n subWeeks,\n subMonths,\n subYears,\n diff,\n diffInSeconds,\n diffInMinutes,\n diffInHours,\n diffInDays,\n diffInWeeks,\n diffInMonths,\n diffInYears,\n}\n"]}
@@ -1,5 +1,9 @@
1
+ declare const getName: (fileName: string | null | undefined) => string;
2
+ declare const getExtension: (fileName: string | null | undefined) => string;
3
+ declare const addExtensionIfMissing: (fileName: string, defaultExtension: string) => string;
1
4
  export declare const FileNames: {
2
- getName: (fileName: string | null | undefined) => string;
3
- getExtension: (fileName: string | null | undefined) => string;
4
- addExtensionIfMissing: (fileName: string, defaultExtension: string) => string;
5
+ getName: typeof getName;
6
+ getExtension: typeof getExtension;
7
+ addExtensionIfMissing: typeof addExtensionIfMissing;
5
8
  };
9
+ export {};
@@ -1 +1 @@
1
- {"version":3,"file":"fileNames.js","sourceRoot":"","sources":["../../src/utils/fileNames.ts"],"names":[],"mappings":";;;AAAA,yCAAoC;AAEpC,MAAM,OAAO,GAAG,CAAC,QAAmC,EAAU,EAAE;IAC9D,IAAI,kBAAO,CAAC,OAAO,CAAC,QAAQ,CAAC;QAAE,OAAO,EAAE,CAAA;IACxC,MAAM,WAAW,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAA;IACpC,MAAM,cAAc,GAAG,WAAW,CAAC,WAAW,CAAC,GAAG,CAAC,CAAA;IACnD,OAAO,cAAc,GAAG,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,EAAE,cAAc,CAAC,CAAC,CAAC,CAAC,WAAW,CAAA;AACpF,CAAC,CAAA;AAED,MAAM,YAAY,GAAG,CAAC,QAAmC,EAAU,EAAE;;IACnE,IAAI,kBAAO,CAAC,OAAO,CAAC,QAAQ,CAAC;QAAE,OAAO,EAAE,CAAA;IACxC,MAAM,KAAK,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;IACzC,OAAO,KAAK,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,MAAA,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,mCAAI,EAAE,CAAC,CAAA;AACtD,CAAC,CAAA;AAED,MAAM,qBAAqB,GAAG,CAAC,QAAgB,EAAE,gBAAwB,EAAU,EAAE;IACnF,MAAM,SAAS,GAAG,YAAY,CAAC,QAAQ,CAAC,CAAA;IACxC,IAAI,kBAAO,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,kBAAO,CAAC,OAAO,CAAC,gBAAgB,CAAC;QAAE,OAAO,QAAQ,CAAA;IACvF,OAAO,CAAC,QAAQ,EAAE,gBAAgB,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;AAC/C,CAAC,CAAA;AAEY,QAAA,SAAS,GAAG;IACvB,OAAO;IACP,YAAY;IACZ,qBAAqB;CACtB,CAAA","sourcesContent":["import { Objects } from './_objects'\n\nconst getName = (fileName: string | null | undefined): string => {\n if (Objects.isEmpty(fileName)) return ''\n const fileNameStr = String(fileName)\n const lastIndexOfDot = fileNameStr.lastIndexOf('.')\n return lastIndexOfDot > 0 ? fileNameStr.substring(0, lastIndexOfDot) : fileNameStr\n}\n\nconst getExtension = (fileName: string | null | undefined): string => {\n if (Objects.isEmpty(fileName)) return ''\n const parts = String(fileName).split('.')\n return parts.length <= 1 ? '' : (parts.at(-1) ?? '')\n}\n\nconst addExtensionIfMissing = (fileName: string, defaultExtension: string): string => {\n const extension = getExtension(fileName)\n if (Objects.isNotEmpty(extension) || Objects.isEmpty(defaultExtension)) return fileName\n return [fileName, defaultExtension].join('.')\n}\n\nexport const FileNames = {\n getName,\n getExtension,\n addExtensionIfMissing,\n}\n"]}
1
+ {"version":3,"file":"fileNames.js","sourceRoot":"","sources":["../../src/utils/fileNames.ts"],"names":[],"mappings":";;;AAAA,yCAAoC;AAEpC,MAAM,OAAO,GAAG,CAAC,QAAmC,EAAU,EAAE;IAC9D,IAAI,kBAAO,CAAC,OAAO,CAAC,QAAQ,CAAC;QAAE,OAAO,EAAE,CAAA;IACxC,MAAM,WAAW,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAA;IACpC,MAAM,cAAc,GAAG,WAAW,CAAC,WAAW,CAAC,GAAG,CAAC,CAAA;IACnD,OAAO,cAAc,GAAG,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,EAAE,cAAc,CAAC,CAAC,CAAC,CAAC,WAAW,CAAA;AACpF,CAAC,CAAA;AAED,MAAM,YAAY,GAAG,CAAC,QAAmC,EAAU,EAAE;;IACnE,IAAI,kBAAO,CAAC,OAAO,CAAC,QAAQ,CAAC;QAAE,OAAO,EAAE,CAAA;IACxC,MAAM,KAAK,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;IACzC,OAAO,KAAK,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,mCAAI,EAAE,CAAC,CAAA;AACtD,CAAC,CAAA;AAED,MAAM,qBAAqB,GAAG,CAAC,QAAgB,EAAE,gBAAwB,EAAU,EAAE;IACnF,MAAM,SAAS,GAAG,YAAY,CAAC,QAAQ,CAAC,CAAA;IACxC,IAAI,kBAAO,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,kBAAO,CAAC,OAAO,CAAC,gBAAgB,CAAC;QAAE,OAAO,QAAQ,CAAA;IACvF,OAAO,CAAC,QAAQ,EAAE,gBAAgB,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;AAC/C,CAAC,CAAA;AAEY,QAAA,SAAS,GAAG;IACvB,OAAO;IACP,YAAY;IACZ,qBAAqB;CACtB,CAAA","sourcesContent":["import { Objects } from './_objects'\n\nconst getName = (fileName: string | null | undefined): string => {\n if (Objects.isEmpty(fileName)) return ''\n const fileNameStr = String(fileName)\n const lastIndexOfDot = fileNameStr.lastIndexOf('.')\n return lastIndexOfDot > 0 ? fileNameStr.substring(0, lastIndexOfDot) : fileNameStr\n}\n\nconst getExtension = (fileName: string | null | undefined): string => {\n if (Objects.isEmpty(fileName)) return ''\n const parts = String(fileName).split('.')\n return parts.length <= 1 ? '' : (parts.at(-1) ?? '')\n}\n\nconst addExtensionIfMissing = (fileName: string, defaultExtension: string): string => {\n const extension = getExtension(fileName)\n if (Objects.isNotEmpty(extension) || Objects.isEmpty(defaultExtension)) return fileName\n return [fileName, defaultExtension].join('.')\n}\n\nexport const FileNames = {\n getName,\n getExtension,\n addExtensionIfMissing,\n}\n"]}
@@ -42,7 +42,8 @@ class FileProcessor {
42
42
  this.completed = false;
43
43
  }
44
44
  calculateFileSize() {
45
- var _a, _b;
45
+ var _a;
46
+ var _b;
46
47
  return Promise.resolve((_b = (_a = this.file) === null || _a === void 0 ? void 0 : _a.size) !== null && _b !== void 0 ? _b : 0);
47
48
  }
48
49
  onFail(error) {
@@ -1 +1 @@
1
- {"version":3,"file":"fileProcessor.js","sourceRoot":"","sources":["../../src/utils/fileProcessor.ts"],"names":[],"mappings":"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","sourcesContent":["import { RetryProcessor } from './retryProcessor'\n\ntype ChunkProcessor = (args: {\n chunk: number\n content: Blob | string | Uint8Array\n totalChunks: number\n totalFileSize: number\n}) => Promise<any>\n\nexport type FileProcessorConstructorArgs = {\n file?: File\n filePath?: string\n chunkProcessor: ChunkProcessor\n onError?: (error: Error) => void\n onComplete?: (result: any) => void\n chunkSize?: number\n maxTryings?: number\n}\n\nexport class FileProcessor {\n static readonly defaultChunkSize = 1024 * 1024 * 10 // 10MB\n static readonly defaultMaxTryings = 5\n\n private readonly file?: File\n private readonly filePath?: string\n private readonly chunkProcessor: ChunkProcessor\n private readonly chunkSize: number\n private readonly maxTryings: number\n private readonly onError?: (error: Error) => void\n private readonly onComplete?: (result?: any) => void\n\n // State properties\n protected totalFileSize: number = 0\n protected running: boolean = false\n protected totalChunks: number = 0\n protected currentChunkNumber: number = 0\n // true while a chunk is being processed (resume must not start a second processing chain)\n protected processingChunk: boolean = false\n protected completed: boolean = false\n\n constructor({\n file,\n filePath,\n chunkProcessor,\n onError,\n onComplete,\n chunkSize = FileProcessor.defaultChunkSize,\n maxTryings = FileProcessor.defaultMaxTryings,\n }: FileProcessorConstructorArgs) {\n this.file = file\n this.filePath = filePath\n this.chunkProcessor = chunkProcessor\n this.chunkSize = chunkSize\n this.maxTryings = maxTryings\n this.onError = onError\n this.onComplete = onComplete\n\n if (!this.file && !this.filePath) {\n throw new Error('File or filePath not specified')\n }\n\n this.reset()\n }\n\n protected reset(): void {\n this.running = false\n this.totalChunks = 0\n this.currentChunkNumber = 0\n this.totalFileSize = 0\n this.processingChunk = false\n this.completed = false\n }\n\n protected calculateFileSize(): Promise<number> {\n return Promise.resolve(this.file?.size ?? 0)\n }\n\n protected onFail(error: Error): void {\n this.onError?.(error)\n }\n\n protected extractCurrentFileChunk(): Promise<Blob | string | Uint8Array> {\n const { file, currentChunkNumber, totalChunks, chunkSize } = this\n if (!file) {\n return Promise.reject(new Error('File property not initialized'))\n }\n return Promise.resolve(\n file.slice(\n (currentChunkNumber - 1) * chunkSize,\n currentChunkNumber === totalChunks ? undefined : currentChunkNumber * chunkSize\n )\n )\n }\n\n protected processNextChunk(): void {\n const { chunkProcessor, currentChunkNumber, totalFileSize, totalChunks, maxTryings } = this\n\n this.processingChunk = true\n this.extractCurrentFileChunk()\n .then((content) => {\n const retryProcessor = new RetryProcessor<void>({\n processor: async () => {\n const chunkResult = await chunkProcessor({ chunk: currentChunkNumber, totalFileSize, totalChunks, content })\n if (this.currentChunkNumber === totalChunks && this.onComplete) {\n this.onComplete(chunkResult)\n }\n },\n onSuccess: () => {\n this.processingChunk = false\n if (this.currentChunkNumber < totalChunks) {\n // move to the next chunk also when paused: resume will continue from it\n this.currentChunkNumber += 1\n if (this.running) {\n this.processNextChunk()\n }\n } else {\n this.running = false\n this.completed = true\n }\n },\n onFail: (error: Error) => {\n this.processingChunk = false\n this.onFail(error)\n this.running = false\n },\n maxTryings,\n })\n retryProcessor.start()\n })\n .catch((error) => {\n this.processingChunk = false\n this.onFail(error)\n this.running = false\n })\n }\n\n start(startFromChunk: number = 1): void {\n this.running = true\n this.completed = false\n this.currentChunkNumber = startFromChunk\n this.calculateFileSize()\n .then((fileSize) => {\n this.totalFileSize = fileSize\n this.totalChunks = Math.ceil(fileSize / this.chunkSize)\n if (this.totalChunks > 0) {\n this.processNextChunk()\n }\n })\n .catch((error) => {\n this.onFail(error)\n this.running = false\n })\n }\n\n stop(): void {\n this.reset()\n }\n\n pause(): void {\n this.running = false\n }\n\n resume(): void {\n if (this.running || this.completed) return\n this.running = true\n // if a chunk is still being processed, processing continues when it completes\n if (!this.processingChunk && this.totalChunks > 0) {\n this.processNextChunk()\n }\n }\n}\n"]}
1
+ {"version":3,"file":"fileProcessor.js","sourceRoot":"","sources":["../../src/utils/fileProcessor.ts"],"names":[],"mappings":"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","sourcesContent":["import { RetryProcessor } from './retryProcessor'\n\ntype ChunkProcessor = (args: {\n chunk: number\n content: Blob | string | Uint8Array\n totalChunks: number\n totalFileSize: number\n}) => Promise<any>\n\nexport type FileProcessorConstructorArgs = {\n file?: File\n filePath?: string\n chunkProcessor: ChunkProcessor\n onError?: (error: Error) => void\n onComplete?: (result: any) => void\n chunkSize?: number\n maxTryings?: number\n}\n\nexport class FileProcessor {\n static readonly defaultChunkSize = 1024 * 1024 * 10 // 10MB\n static readonly defaultMaxTryings = 5\n\n private readonly file?: File\n private readonly filePath?: string\n private readonly chunkProcessor: ChunkProcessor\n private readonly chunkSize: number\n private readonly maxTryings: number\n private readonly onError?: (error: Error) => void\n private readonly onComplete?: (result?: any) => void\n\n // State properties\n protected totalFileSize: number = 0\n protected running: boolean = false\n protected totalChunks: number = 0\n protected currentChunkNumber: number = 0\n // true while a chunk is being processed (resume must not start a second processing chain)\n protected processingChunk: boolean = false\n protected completed: boolean = false\n\n constructor({\n file,\n filePath,\n chunkProcessor,\n onError,\n onComplete,\n chunkSize = FileProcessor.defaultChunkSize,\n maxTryings = FileProcessor.defaultMaxTryings,\n }: FileProcessorConstructorArgs) {\n this.file = file\n this.filePath = filePath\n this.chunkProcessor = chunkProcessor\n this.chunkSize = chunkSize\n this.maxTryings = maxTryings\n this.onError = onError\n this.onComplete = onComplete\n\n if (!this.file && !this.filePath) {\n throw new Error('File or filePath not specified')\n }\n\n this.reset()\n }\n\n protected reset(): void {\n this.running = false\n this.totalChunks = 0\n this.currentChunkNumber = 0\n this.totalFileSize = 0\n this.processingChunk = false\n this.completed = false\n }\n\n protected calculateFileSize(): Promise<number> {\n return Promise.resolve(this.file?.size ?? 0)\n }\n\n protected onFail(error: Error): void {\n this.onError?.(error)\n }\n\n protected extractCurrentFileChunk(): Promise<Blob | string | Uint8Array> {\n const { file, currentChunkNumber, totalChunks, chunkSize } = this\n if (!file) {\n return Promise.reject(new Error('File property not initialized'))\n }\n return Promise.resolve(\n file.slice(\n (currentChunkNumber - 1) * chunkSize,\n currentChunkNumber === totalChunks ? undefined : currentChunkNumber * chunkSize\n )\n )\n }\n\n protected processNextChunk(): void {\n const { chunkProcessor, currentChunkNumber, totalFileSize, totalChunks, maxTryings } = this\n\n this.processingChunk = true\n this.extractCurrentFileChunk()\n .then((content) => {\n const retryProcessor = new RetryProcessor<void>({\n processor: async () => {\n const chunkResult = await chunkProcessor({ chunk: currentChunkNumber, totalFileSize, totalChunks, content })\n if (this.currentChunkNumber === totalChunks && this.onComplete) {\n this.onComplete(chunkResult)\n }\n },\n onSuccess: () => {\n this.processingChunk = false\n if (this.currentChunkNumber < totalChunks) {\n // move to the next chunk also when paused: resume will continue from it\n this.currentChunkNumber += 1\n if (this.running) {\n this.processNextChunk()\n }\n } else {\n this.running = false\n this.completed = true\n }\n },\n onFail: (error: Error) => {\n this.processingChunk = false\n this.onFail(error)\n this.running = false\n },\n maxTryings,\n })\n retryProcessor.start()\n })\n .catch((error) => {\n this.processingChunk = false\n this.onFail(error)\n this.running = false\n })\n }\n\n start(startFromChunk: number = 1): void {\n this.running = true\n this.completed = false\n this.currentChunkNumber = startFromChunk\n this.calculateFileSize()\n .then((fileSize) => {\n this.totalFileSize = fileSize\n this.totalChunks = Math.ceil(fileSize / this.chunkSize)\n if (this.totalChunks > 0) {\n this.processNextChunk()\n }\n })\n .catch((error) => {\n this.onFail(error)\n this.running = false\n })\n }\n\n stop(): void {\n this.reset()\n }\n\n pause(): void {\n this.running = false\n }\n\n resume(): void {\n if (this.running || this.completed) return\n this.running = true\n // if a chunk is still being processed, processing continues when it completes\n if (!this.processingChunk && this.totalChunks > 0) {\n this.processNextChunk()\n }\n }\n}\n"]}
@@ -1,16 +1,45 @@
1
1
  import { LanguageCode } from '../language';
2
+ declare const toNumber: (num: any) => number;
3
+ /**
4
+ * Returns the absolute modulus of the specified value. The result will always be a positive number.
5
+ * @param {!number} modulus - The modulus to apply.
6
+ * @returns {number} - The result of the modulus (always positive or 0).
7
+ */
8
+ declare const absMod: (modulus: number) => (value: number) => number;
9
+ declare const between: (value: number, min: number, max: number) => boolean;
10
+ declare const isFloat: (value: any) => boolean;
11
+ declare const isInteger: (value: any) => boolean;
12
+ /**
13
+ * Formats the given value to the specified fixed dicimal digits.
14
+ */
15
+ declare const formatDecimal: (value: number, decimalDigits?: number) => string | null;
16
+ /**
17
+ * Formats the given value to a rounded integer.
18
+ *
19
+ * @param {!number} value - The value to format.
20
+ * @returns {string} - The formatted value or null if the value was null.
21
+ */
22
+ declare const formatInteger: (value: number) => string | null;
23
+ declare const limit: ({ minValue, maxValue }: {
24
+ maxValue?: number | undefined;
25
+ minValue?: number | undefined;
26
+ }) => (value: number) => number;
27
+ declare const roundToPrecision: (value: any, precision?: number) => number;
28
+ /**
29
+ * Converts the given number to words (cardinal form) in the specified language.
30
+ * Falls back to English if the specified language is not supported.
31
+ */
32
+ declare const toWords: (value: any, lang?: LanguageCode) => string | null;
2
33
  export declare const Numbers: {
3
- absMod: (modulus: number) => (value: number) => number;
4
- between: (value: number, min: number, max: number) => boolean;
5
- formatDecimal: (value: number, decimalDigits?: number) => string | null;
6
- formatInteger: (value: number) => string | null;
7
- isFloat: (value: any) => boolean;
8
- isInteger: (value: any) => boolean;
9
- limit: ({ minValue, maxValue }: {
10
- minValue?: number | undefined;
11
- maxValue?: number | undefined;
12
- }) => (value: number) => number;
13
- roundToPrecision: (value: any, precision?: number) => number;
14
- toNumber: (num: any) => number;
15
- toWords: (value: any, lang?: LanguageCode) => string | null;
34
+ absMod: typeof absMod;
35
+ between: typeof between;
36
+ formatDecimal: typeof formatDecimal;
37
+ formatInteger: typeof formatInteger;
38
+ isFloat: typeof isFloat;
39
+ isInteger: typeof isInteger;
40
+ limit: typeof limit;
41
+ roundToPrecision: typeof roundToPrecision;
42
+ toNumber: typeof toNumber;
43
+ toWords: typeof toWords;
16
44
  };
45
+ export {};
@@ -1 +1 @@
1
- {"version":3,"file":"numbers.js","sourceRoot":"","sources":["../../src/utils/numbers.ts"],"names":[],"mappings":"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","sourcesContent":["import BigNumber from 'bignumber.js'\nimport { toCardinal as toCardinalEn } from 'n2words/en'\nimport { toCardinal as toCardinalEs } from 'n2words/es'\nimport { toCardinal as toCardinalFr } from 'n2words/fr'\nimport { toCardinal as toCardinalJa } from 'n2words/ja'\nimport { toCardinal as toCardinalPt } from 'n2words/pt-PT'\nimport { toCardinal as toCardinalRu } from 'n2words/ru'\n\nimport { LanguageCode } from '../language'\nimport { Objects } from './_objects'\n\nBigNumber.config({\n FORMAT: {\n decimalSeparator: '.',\n groupSeparator: ',',\n groupSize: 3,\n },\n})\n\nconst toNumber = (num: any): number => (Objects.isEmpty(num) ? Number.NaN : Number(num))\n\n/**\n * Returns the absolute modulus of the specified value. The result will always be a positive number.\n * @param {!number} modulus - The modulus to apply.\n * @returns {number} - The result of the modulus (always positive or 0).\n */\nconst absMod =\n (modulus: number) =>\n (value: number): number =>\n ((value % modulus) + modulus) % modulus\n\nconst between = (value: number, min: number, max: number): boolean => min <= value && max >= value\n\nconst isFloat = (value: any): boolean => {\n const number = toNumber(value)\n return Number.isFinite(number)\n}\n\nconst isInteger = (value: any): boolean => {\n const number = toNumber(value)\n return Number.isInteger(number)\n}\n\n/**\n * Formats the given value to the specified fixed dicimal digits.\n */\nconst formatDecimal = (value: number, decimalDigits = Number.NaN) => {\n if (Number.isNaN(value) || value === null) return null\n const num = new BigNumber(value)\n\n if (decimalDigits > 0) {\n // round to fixed number of decimal digits\n return num.toFormat(decimalDigits)\n }\n if (decimalDigits === 0) {\n // format as integer\n return num.toFormat(0, { groupSeparator: '' })\n }\n return num.toString()\n}\n\n/**\n * Formats the given value to a rounded integer.\n *\n * @param {!number} value - The value to format.\n * @returns {string} - The formatted value or null if the value was null.\n */\nconst formatInteger = (value: number): string | null => formatDecimal(value, 0)\n\nconst limit =\n ({ minValue = Number.NaN, maxValue = Number.NaN }) =>\n (value: number) => {\n let result = Number(value)\n // NOTE: 0 is a valid bound\n if (!Number.isNaN(minValue)) result = Math.max(minValue, result)\n if (!Number.isNaN(maxValue)) result = Math.min(maxValue, result)\n return result\n }\n\nconst roundToPrecision = (value: any, precision = Number.NaN) => {\n const num = toNumber(value)\n if (Number.isNaN(num)) return Number.NaN\n if (Number.isNaN(precision)) return num\n const exp = Math.pow(10, precision)\n return Math.round(num * exp) / exp\n}\n\nconst toCardinalByLang: Partial<Record<LanguageCode, (value: number | string | bigint) => string>> = {\n [LanguageCode.en]: toCardinalEn,\n [LanguageCode.es]: toCardinalEs,\n [LanguageCode.fr]: toCardinalFr,\n [LanguageCode.ja]: toCardinalJa,\n [LanguageCode.pt]: toCardinalPt,\n [LanguageCode.ru]: toCardinalRu,\n}\n\n/**\n * Converts the given number to words (cardinal form) in the specified language.\n * Falls back to English if the specified language is not supported.\n */\nconst toWords = (value: any, lang: LanguageCode = LanguageCode.en): string | null => {\n const number = toNumber(value)\n if (!Number.isFinite(number)) return null\n const toCardinal = toCardinalByLang[lang] ?? toCardinalByLang[LanguageCode.en]!\n try {\n return toCardinal(number)\n } catch {\n return null\n }\n}\n\nexport const Numbers = {\n absMod,\n between,\n formatDecimal,\n formatInteger,\n isFloat,\n isInteger,\n limit,\n roundToPrecision,\n toNumber,\n toWords,\n}\n"]}
1
+ {"version":3,"file":"numbers.js","sourceRoot":"","sources":["../../src/utils/numbers.ts"],"names":[],"mappings":"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","sourcesContent":["import BigNumber from 'bignumber.js'\nimport { toCardinal as toCardinalEn } from 'n2words/en'\nimport { toCardinal as toCardinalEs } from 'n2words/es'\nimport { toCardinal as toCardinalFr } from 'n2words/fr'\nimport { toCardinal as toCardinalJa } from 'n2words/ja'\nimport { toCardinal as toCardinalPt } from 'n2words/pt-PT'\nimport { toCardinal as toCardinalRu } from 'n2words/ru'\n\nimport { LanguageCode } from '../language'\nimport { Objects } from './_objects'\n\nBigNumber.config({\n FORMAT: {\n decimalSeparator: '.',\n groupSeparator: ',',\n groupSize: 3,\n },\n})\n\nconst toNumber = (num: any): number => (Objects.isEmpty(num) ? Number.NaN : Number(num))\n\n/**\n * Returns the absolute modulus of the specified value. The result will always be a positive number.\n * @param {!number} modulus - The modulus to apply.\n * @returns {number} - The result of the modulus (always positive or 0).\n */\nconst absMod =\n (modulus: number) =>\n (value: number): number =>\n ((value % modulus) + modulus) % modulus\n\nconst between = (value: number, min: number, max: number): boolean => min <= value && max >= value\n\nconst isFloat = (value: any): boolean => {\n const number = toNumber(value)\n return Number.isFinite(number)\n}\n\nconst isInteger = (value: any): boolean => {\n const number = toNumber(value)\n return Number.isInteger(number)\n}\n\n/**\n * Formats the given value to the specified fixed dicimal digits.\n */\nconst formatDecimal = (value: number, decimalDigits = Number.NaN) => {\n if (Number.isNaN(value) || value === null) return null\n const num = new BigNumber(value)\n\n if (decimalDigits > 0) {\n // round to fixed number of decimal digits\n return num.toFormat(decimalDigits)\n }\n if (decimalDigits === 0) {\n // format as integer\n return num.toFormat(0, { groupSeparator: '' })\n }\n return num.toString()\n}\n\n/**\n * Formats the given value to a rounded integer.\n *\n * @param {!number} value - The value to format.\n * @returns {string} - The formatted value or null if the value was null.\n */\nconst formatInteger = (value: number): string | null => formatDecimal(value, 0)\n\nconst limit =\n ({ minValue = Number.NaN, maxValue = Number.NaN }) =>\n (value: number) => {\n let result = Number(value)\n // NOTE: 0 is a valid bound\n if (!Number.isNaN(minValue)) result = Math.max(minValue, result)\n if (!Number.isNaN(maxValue)) result = Math.min(maxValue, result)\n return result\n }\n\nconst roundToPrecision = (value: any, precision = Number.NaN) => {\n const num = toNumber(value)\n if (Number.isNaN(num)) return Number.NaN\n if (Number.isNaN(precision)) return num\n const exp = Math.pow(10, precision)\n return Math.round(num * exp) / exp\n}\n\nconst toCardinalByLang: Partial<Record<LanguageCode, (value: number | string | bigint) => string>> = {\n [LanguageCode.en]: toCardinalEn,\n [LanguageCode.es]: toCardinalEs,\n [LanguageCode.fr]: toCardinalFr,\n [LanguageCode.ja]: toCardinalJa,\n [LanguageCode.pt]: toCardinalPt,\n [LanguageCode.ru]: toCardinalRu,\n}\n\n/**\n * Converts the given number to words (cardinal form) in the specified language.\n * Falls back to English if the specified language is not supported.\n */\nconst toWords = (value: any, lang: LanguageCode = LanguageCode.en): string | null => {\n const number = toNumber(value)\n if (!Number.isFinite(number)) return null\n const toCardinal = toCardinalByLang[lang] ?? toCardinalByLang[LanguageCode.en]!\n try {\n return toCardinal(number)\n } catch {\n return null\n }\n}\n\nexport const Numbers = {\n absMod,\n between,\n formatDecimal,\n formatInteger,\n isFloat,\n isInteger,\n limit,\n roundToPrecision,\n toNumber,\n toWords,\n}\n"]}
@@ -1,3 +1,14 @@
1
+ /**
2
+ * Given an Iterable, iterates serially over all the values in it, executing the given callback on each element.
3
+ * If the callback returns a Promise, it is awaited before continuing to the next iteration.
4
+ *
5
+ * @param {Iterable} iterable - The iterable to iterate.
6
+ * @param {Function} callback - The callback function to invoke on each element of the iterable.
7
+ * @param {Function} stopIfFn - If specified, stops the loop if the call to that function returns true.
8
+ * @returns {Promise<*>} - The returned Promise.
9
+ */
10
+ declare const each: <T>(iterable: Iterable<T>, callback: (item: T, index: number) => Promise<void>, stopIfFn?: (item: T) => boolean) => Promise<void>;
1
11
  export declare const Promises: {
2
- each: <T>(iterable: Iterable<T>, callback: (item: T, index: number) => Promise<void>, stopIfFn?: (item: T) => boolean) => Promise<void>;
12
+ each: typeof each;
3
13
  };
14
+ export {};
@@ -1 +1 @@
1
- {"version":3,"file":"queue.js","sourceRoot":"","sources":["../../src/utils/queue.ts"],"names":[],"mappings":";;;AAAA,2FAA2F;AAC3F,6EAA6E;AAC7E,MAAM,yBAAyB,GAAG,IAAI,CAAA;AAEtC;;GAEG;AACH,MAAa,KAAK;IAIhB,YAAY,QAAe,EAAE;QAC3B,IAAI,CAAC,MAAM,GAAG,EAAE,CAAA;QAChB,IAAI,CAAC,UAAU,GAAG,CAAC,CAAA;QACnB,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAA;IAC1B,CAAC;IAED;;;OAGG;IACH,IAAI,KAAK;QACP,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,OAAO,EAAE,CAAA;IACrD,CAAC;IAED,OAAO,CAAC,IAAS;QACf,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IACxB,CAAC;IAED,YAAY,CAAC,KAAY;QACvB,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAA;QACpB,CAAC;IACH,CAAC;IAED,OAAO;QACL,IAAI,IAAI,CAAC,OAAO,EAAE;YAAE,OAAO,SAAS,CAAA;QAEpC,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA;QACzC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,SAAS,CAAA;QACxC,IAAI,CAAC,UAAU,IAAI,CAAC,CAAA;QAEpB,IAAI,IAAI,CAAC,OAAO,EAAE,EAAE,CAAC;YACnB,IAAI,CAAC,MAAM,GAAG,EAAE,CAAA;YAChB,IAAI,CAAC,UAAU,GAAG,CAAC,CAAA;QACrB,CAAC;aAAM,IAAI,IAAI,CAAC,UAAU,IAAI,yBAAyB,IAAI,IAAI,CAAC,UAAU,GAAG,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;YACrG,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA;YAChD,IAAI,CAAC,UAAU,GAAG,CAAC,CAAA;QACrB,CAAC;QACD,OAAO,IAAI,CAAA;IACb,CAAC;IAED,IAAI,KAAK;QACP,OAAO,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA;IAClE,CAAC;IAED,IAAI,IAAI;QACN,OAAO,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAA;IACxD,CAAC;IAED,IAAI,IAAI;QACN,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC,UAAU,CAAA;IAC7C,CAAC;IAED,OAAO;QACL,OAAO,IAAI,CAAC,IAAI,KAAK,CAAC,CAAA;IACxB,CAAC;CACF;AA5DD,sBA4DC","sourcesContent":["// when the number of dequeued items exceeds this threshold (and half of the stored items),\n// the storage array is compacted to release the memory of the dequeued items\nconst COMPACTION_MIN_HEAD_INDEX = 1024\n\n/**\n * FIFO queue with constant time enqueue and dequeue operations.\n */\nexport class Queue {\n private _items: any[]\n private _headIndex: number\n\n constructor(items: any[] = []) {\n this._items = []\n this._headIndex = 0\n this.enqueueItems(items)\n }\n\n /**\n * Snapshot of the items still in the queue, from the last enqueued to the first one (the next one to be dequeued).\n * The returned array is a copy: modifying it does not affect the queue.\n */\n get items(): readonly any[] {\n return this._items.slice(this._headIndex).reverse()\n }\n\n enqueue(item: any): void {\n this._items.push(item)\n }\n\n enqueueItems(items: any[]) {\n for (const item of items) {\n this.enqueue(item)\n }\n }\n\n dequeue(): any {\n if (this.isEmpty()) return undefined\n\n const item = this._items[this._headIndex]\n this._items[this._headIndex] = undefined\n this._headIndex += 1\n\n if (this.isEmpty()) {\n this._items = []\n this._headIndex = 0\n } else if (this._headIndex >= COMPACTION_MIN_HEAD_INDEX && this._headIndex * 2 >= this._items.length) {\n this._items = this._items.slice(this._headIndex)\n this._headIndex = 0\n }\n return item\n }\n\n get first(): any {\n return this.isEmpty() ? undefined : this._items[this._headIndex]\n }\n\n get last(): any {\n return this.isEmpty() ? undefined : this._items.at(-1)\n }\n\n get size(): number {\n return this._items.length - this._headIndex\n }\n\n isEmpty(): boolean {\n return this.size === 0\n }\n}\n"]}
1
+ {"version":3,"file":"queue.js","sourceRoot":"","sources":["../../src/utils/queue.ts"],"names":[],"mappings":";;;AAAA,2FAA2F;AAC3F,6EAA6E;AAC7E,MAAM,yBAAyB,GAAG,IAAI,CAAA;AAEtC;;GAEG;AACH;IAIE,YAAY,KAAK,GAAU,EAAE;QAC3B,IAAI,CAAC,MAAM,GAAG,EAAE,CAAA;QAChB,IAAI,CAAC,UAAU,GAAG,CAAC,CAAA;QACnB,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAA;IAC1B,CAAC;IAED;;;OAGG;IACH,IAAI,KAAK;QACP,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,OAAO,EAAE,CAAA;IACrD,CAAC;IAED,OAAO,CAAC,IAAS;QACf,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IACxB,CAAC;IAED,YAAY,CAAC,KAAY;QACvB,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAA;QACpB,CAAC;IACH,CAAC;IAED,OAAO;QACL,IAAI,IAAI,CAAC,OAAO,EAAE;YAAE,OAAO,SAAS,CAAA;QAEpC,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA;QACzC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,SAAS,CAAA;QACxC,IAAI,CAAC,UAAU,IAAI,CAAC,CAAA;QAEpB,IAAI,IAAI,CAAC,OAAO,EAAE,EAAE,CAAC;YACnB,IAAI,CAAC,MAAM,GAAG,EAAE,CAAA;YAChB,IAAI,CAAC,UAAU,GAAG,CAAC,CAAA;QACrB,CAAC;aAAM,IAAI,IAAI,CAAC,UAAU,IAAI,yBAAyB,IAAI,IAAI,CAAC,UAAU,GAAG,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;YACrG,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA;YAChD,IAAI,CAAC,UAAU,GAAG,CAAC,CAAA;QACrB,CAAC;QACD,OAAO,IAAI,CAAA;IACb,CAAC;IAED,IAAI,KAAK;QACP,OAAO,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA;IAClE,CAAC;IAED,IAAI,IAAI;QACN,OAAO,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAA;IACxD,CAAC;IAED,IAAI,IAAI;QACN,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC,UAAU,CAAA;IAC7C,CAAC;IAED,OAAO;QACL,OAAO,IAAI,CAAC,IAAI,KAAK,CAAC,CAAA;IACxB,CAAC;CACF","sourcesContent":["// when the number of dequeued items exceeds this threshold (and half of the stored items),\n// the storage array is compacted to release the memory of the dequeued items\nconst COMPACTION_MIN_HEAD_INDEX = 1024\n\n/**\n * FIFO queue with constant time enqueue and dequeue operations.\n */\nexport class Queue {\n private _items: any[]\n private _headIndex: number\n\n constructor(items: any[] = []) {\n this._items = []\n this._headIndex = 0\n this.enqueueItems(items)\n }\n\n /**\n * Snapshot of the items still in the queue, from the last enqueued to the first one (the next one to be dequeued).\n * The returned array is a copy: modifying it does not affect the queue.\n */\n get items(): readonly any[] {\n return this._items.slice(this._headIndex).reverse()\n }\n\n enqueue(item: any): void {\n this._items.push(item)\n }\n\n enqueueItems(items: any[]) {\n for (const item of items) {\n this.enqueue(item)\n }\n }\n\n dequeue(): any {\n if (this.isEmpty()) return undefined\n\n const item = this._items[this._headIndex]\n this._items[this._headIndex] = undefined\n this._headIndex += 1\n\n if (this.isEmpty()) {\n this._items = []\n this._headIndex = 0\n } else if (this._headIndex >= COMPACTION_MIN_HEAD_INDEX && this._headIndex * 2 >= this._items.length) {\n this._items = this._items.slice(this._headIndex)\n this._headIndex = 0\n }\n return item\n }\n\n get first(): any {\n return this.isEmpty() ? undefined : this._items[this._headIndex]\n }\n\n get last(): any {\n return this.isEmpty() ? undefined : this._items.at(-1)\n }\n\n get size(): number {\n return this._items.length - this._headIndex\n }\n\n isEmpty(): boolean {\n return this.size === 0\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"retryProcessor.js","sourceRoot":"","sources":["../../src/utils/retryProcessor.ts"],"names":[],"mappings":";;;AAOA,MAAa,cAAc;IAUzB,YAAY,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,EAAE,UAAU,GAAG,CAAC,EAAuC;QAJjG,mBAAmB;QACX,kBAAa,GAAW,CAAC,CAAA;QACzB,YAAO,GAAY,KAAK,CAAA;QAG9B,IAAI,CAAC,SAAS,GAAG,SAAS,CAAA;QAC1B,IAAI,CAAC,SAAS,GAAG,SAAS,CAAA;QAC1B,IAAI,CAAC,MAAM,GAAG,MAAM,CAAA;QACpB,IAAI,CAAC,UAAU,GAAG,UAAU,CAAA;IAC9B,CAAC;IAES,KAAK;QACb,IAAI,CAAC,aAAa,GAAG,CAAC,CAAA;QACtB,IAAI,CAAC,OAAO,GAAG,KAAK,CAAA;IACtB,CAAC;IAES,WAAW;QACnB,IAAI,CAAC,aAAa,IAAI,CAAC,CAAA;QAEvB,IAAI,CAAC,SAAS,EAAE;aACb,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE;YACZ,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAA;QACrB,CAAC,CAAC;aACD,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;YACf,yCAAyC;YACzC,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;gBACzD,IAAI,CAAC,WAAW,EAAE,CAAA,CAAC,QAAQ;YAC7B,CAAC;iBAAM,CAAC;gBACN,oEAAoE;gBACpE,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;YACpB,CAAC;QACH,CAAC,CAAC,CAAA;IACN,CAAC;IAED,iBAAiB;IACjB,KAAK;QACH,IAAI,CAAC,OAAO,GAAG,IAAI,CAAA;QACnB,IAAI,CAAC,WAAW,EAAE,CAAA;IACpB,CAAC;IAED,IAAI;QACF,IAAI,CAAC,KAAK,EAAE,CAAA;IACd,CAAC;CACF;AAjDD,wCAiDC","sourcesContent":["interface RetryProcessorArgs<ProcessorResult> {\n processor: () => Promise<ProcessorResult>\n onSuccess: (result: ProcessorResult) => void\n onFail: (error: Error) => void\n maxTryings?: number\n}\n\nexport class RetryProcessor<ProcessorResult> {\n private readonly processor: () => Promise<ProcessorResult>\n private readonly onSuccess: (result: ProcessorResult) => void\n private readonly onFail: (error: Error) => void\n private readonly maxTryings: number\n\n // State properties\n private currentTrying: number = 0\n private running: boolean = false\n\n constructor({ processor, onSuccess, onFail, maxTryings = 2 }: RetryProcessorArgs<ProcessorResult>) {\n this.processor = processor\n this.onSuccess = onSuccess\n this.onFail = onFail\n this.maxTryings = maxTryings\n }\n\n protected reset() {\n this.currentTrying = 0\n this.running = false\n }\n\n protected processNext(): void {\n this.currentTrying += 1\n\n this.processor()\n .then((res) => {\n this.onSuccess(res)\n })\n .catch((error) => {\n // On error, check if we should try again\n if (this.running && this.currentTrying < this.maxTryings) {\n this.processNext() // Retry\n } else {\n // If we've stopped or exceeded max attempts, call the fail callback\n this.onFail(error)\n }\n })\n }\n\n // Public methods\n start(): void {\n this.running = true\n this.processNext()\n }\n\n stop(): void {\n this.reset()\n }\n}\n"]}
1
+ {"version":3,"file":"retryProcessor.js","sourceRoot":"","sources":["../../src/utils/retryProcessor.ts"],"names":[],"mappings":";;;AAOA;IAUE,YAAY,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,EAAE,UAAU,GAAG,CAAC,EAAuC;QAJjG,mBAAmB;QACX,kBAAa,GAAW,CAAC,CAAA;QACzB,YAAO,GAAY,KAAK,CAAA;QAG9B,IAAI,CAAC,SAAS,GAAG,SAAS,CAAA;QAC1B,IAAI,CAAC,SAAS,GAAG,SAAS,CAAA;QAC1B,IAAI,CAAC,MAAM,GAAG,MAAM,CAAA;QACpB,IAAI,CAAC,UAAU,GAAG,UAAU,CAAA;IAC9B,CAAC;IAES,KAAK;QACb,IAAI,CAAC,aAAa,GAAG,CAAC,CAAA;QACtB,IAAI,CAAC,OAAO,GAAG,KAAK,CAAA;IACtB,CAAC;IAES,WAAW;QACnB,IAAI,CAAC,aAAa,IAAI,CAAC,CAAA;QAEvB,IAAI,CAAC,SAAS,EAAE;aACb,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE;YACZ,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAA;QACrB,CAAC,CAAC;aACD,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;YACf,yCAAyC;YACzC,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;gBACzD,IAAI,CAAC,WAAW,EAAE,CAAA,CAAC,QAAQ;YAC7B,CAAC;iBAAM,CAAC;gBACN,oEAAoE;gBACpE,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;YACpB,CAAC;QACH,CAAC,CAAC,CAAA;IACN,CAAC;IAED,iBAAiB;IACjB,KAAK;QACH,IAAI,CAAC,OAAO,GAAG,IAAI,CAAA;QACnB,IAAI,CAAC,WAAW,EAAE,CAAA;IACpB,CAAC;IAED,IAAI;QACF,IAAI,CAAC,KAAK,EAAE,CAAA;IACd,CAAC;CACF","sourcesContent":["interface RetryProcessorArgs<ProcessorResult> {\n processor: () => Promise<ProcessorResult>\n onSuccess: (result: ProcessorResult) => void\n onFail: (error: Error) => void\n maxTryings?: number\n}\n\nexport class RetryProcessor<ProcessorResult> {\n private readonly processor: () => Promise<ProcessorResult>\n private readonly onSuccess: (result: ProcessorResult) => void\n private readonly onFail: (error: Error) => void\n private readonly maxTryings: number\n\n // State properties\n private currentTrying: number = 0\n private running: boolean = false\n\n constructor({ processor, onSuccess, onFail, maxTryings = 2 }: RetryProcessorArgs<ProcessorResult>) {\n this.processor = processor\n this.onSuccess = onSuccess\n this.onFail = onFail\n this.maxTryings = maxTryings\n }\n\n protected reset() {\n this.currentTrying = 0\n this.running = false\n }\n\n protected processNext(): void {\n this.currentTrying += 1\n\n this.processor()\n .then((res) => {\n this.onSuccess(res)\n })\n .catch((error) => {\n // On error, check if we should try again\n if (this.running && this.currentTrying < this.maxTryings) {\n this.processNext() // Retry\n } else {\n // If we've stopped or exceeded max attempts, call the fail callback\n this.onFail(error)\n }\n })\n }\n\n // Public methods\n start(): void {\n this.running = true\n this.processNext()\n }\n\n stop(): void {\n this.reset()\n }\n}\n"]}
@@ -1,17 +1,28 @@
1
1
  import { camelCase, snakeCase } from 'change-case';
2
2
  type TextType = string | undefined | null;
3
+ declare const defaultIfEmpty: (defaultValue: string) => (text: TextType) => string;
4
+ declare const padStart: (length: number, padString: string) => (text: TextType) => string;
5
+ declare const quote: (text: TextType) => string;
6
+ declare const quoteDouble: (text: TextType) => string;
7
+ declare const removePrefix: (prefix: string) => (text: TextType) => string;
8
+ declare const removeSuffix: (suffix: string) => (text: TextType) => string;
9
+ declare const appendIfMissing: (suffix: string) => (text: TextType) => string;
10
+ declare const prependIfMissing: (prefix: string) => (text: TextType) => string;
11
+ declare const repeat: (text: string, times: number) => string;
12
+ declare const unquote: (text: TextType) => string;
13
+ declare const unquoteDouble: (text: TextType) => string;
3
14
  export declare const Strings: {
4
- defaultIfEmpty: (defaultValue: string) => (text: TextType) => string;
5
- padStart: (length: number, padString: string) => (text: TextType) => string;
6
- quote: (text: TextType) => string;
7
- quoteDouble: (text: TextType) => string;
8
- removePrefix: (prefix: string) => (text: TextType) => string;
9
- removeSuffix: (suffix: string) => (text: TextType) => string;
10
- appendIfMissing: (suffix: string) => (text: TextType) => string;
11
- prependIfMissing: (prefix: string) => (text: TextType) => string;
12
- repeat: (text: string, times: number) => string;
13
- unquote: (text: TextType) => string;
14
- unquoteDouble: (text: TextType) => string;
15
+ defaultIfEmpty: typeof defaultIfEmpty;
16
+ padStart: typeof padStart;
17
+ quote: typeof quote;
18
+ quoteDouble: typeof quoteDouble;
19
+ removePrefix: typeof removePrefix;
20
+ removeSuffix: typeof removeSuffix;
21
+ appendIfMissing: typeof appendIfMissing;
22
+ prependIfMissing: typeof prependIfMissing;
23
+ repeat: typeof repeat;
24
+ unquote: typeof unquote;
25
+ unquoteDouble: typeof unquoteDouble;
15
26
  camelCase: typeof camelCase;
16
27
  snakeCase: typeof snakeCase;
17
28
  };
@@ -1,5 +1,7 @@
1
1
  import { v4 } from 'uuid';
2
+ declare const isUuid: (value: string) => boolean;
2
3
  export declare const UUIDs: {
3
- isUuid: (value: string) => boolean;
4
+ isUuid: typeof isUuid;
4
5
  v4: typeof v4;
5
6
  };
7
+ export {};
@@ -4,12 +4,24 @@ export type ParsedVersion = {
4
4
  patch?: number;
5
5
  commitsSinceTag?: number;
6
6
  };
7
+ declare const parse: (version: string) => ParsedVersion;
8
+ /**
9
+ * Compares two version strings.
10
+ * @returns -1 if v1 < v2, 0 if v1 === v2, 1 if v1 > v2
11
+ */
12
+ declare const compare: (v1: string, v2: string) => -1 | 0 | 1;
13
+ declare const isEqual: (v1: string, v2: string) => boolean;
14
+ declare const isGreaterThan: (v1: string, v2: string) => boolean;
15
+ declare const isLessThan: (v1: string, v2: string) => boolean;
16
+ declare const isGreaterThanOrEqual: (v1: string, v2: string) => boolean;
17
+ declare const isLessThanOrEqual: (v1: string, v2: string) => boolean;
7
18
  export declare const Versions: {
8
- parse: (version: string) => ParsedVersion;
9
- compare: (v1: string, v2: string) => -1 | 0 | 1;
10
- isEqual: (v1: string, v2: string) => boolean;
11
- isGreaterThan: (v1: string, v2: string) => boolean;
12
- isLessThan: (v1: string, v2: string) => boolean;
13
- isGreaterThanOrEqual: (v1: string, v2: string) => boolean;
14
- isLessThanOrEqual: (v1: string, v2: string) => boolean;
19
+ parse: typeof parse;
20
+ compare: typeof compare;
21
+ isEqual: typeof isEqual;
22
+ isGreaterThan: typeof isGreaterThan;
23
+ isLessThan: typeof isLessThan;
24
+ isGreaterThanOrEqual: typeof isGreaterThanOrEqual;
25
+ isLessThanOrEqual: typeof isLessThanOrEqual;
15
26
  };
27
+ export {};
@@ -1 +1 @@
1
- {"version":3,"file":"versions.js","sourceRoot":"","sources":["../../src/utils/versions.ts"],"names":[],"mappings":"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","sourcesContent":["export type ParsedVersion = {\n major: number\n minor: number\n patch?: number\n commitsSinceTag?: number\n}\n\nconst VERSION_REGEX = /^v?(\\d+)\\.(\\d+)(?:\\.(\\d+))?(?:-(\\d+)(?:-g[0-9a-f]+)?)?$/i\n\nconst parse = (version: string): ParsedVersion => {\n const match = VERSION_REGEX.exec(version.trim())\n if (!match) {\n throw new Error(\n `Invalid version format: \"${version}\". Expected format: [v]major.minor[.patch][-commitsSinceTag[-g<commitHash>]] (e.g. \"2.3\", \"2.3.1\", \"v2.3.1\" or \"v2.3.19-4-g207bc95f8\")`\n )\n }\n const parsedVersion: ParsedVersion = {\n major: Number.parseInt(match[1], 10),\n minor: Number.parseInt(match[2], 10),\n }\n if (match[3] !== undefined) {\n parsedVersion.patch = Number.parseInt(match[3], 10)\n }\n if (match[4] !== undefined) {\n parsedVersion.commitsSinceTag = Number.parseInt(match[4], 10)\n }\n return parsedVersion\n}\n\n/**\n * Compares two version strings.\n * @returns -1 if v1 < v2, 0 if v1 === v2, 1 if v1 > v2\n */\nconst compare = (v1: string, v2: string): -1 | 0 | 1 => {\n const p1 = parse(v1)\n const p2 = parse(v2)\n const patch1 = p1.patch ?? 0\n const patch2 = p2.patch ?? 0\n const commitsSinceTag1 = p1.commitsSinceTag ?? 0\n const commitsSinceTag2 = p2.commitsSinceTag ?? 0\n\n if (p1.major !== p2.major) return p1.major < p2.major ? -1 : 1\n if (p1.minor !== p2.minor) return p1.minor < p2.minor ? -1 : 1\n if (patch1 !== patch2) return patch1 < patch2 ? -1 : 1\n if (commitsSinceTag1 !== commitsSinceTag2) return commitsSinceTag1 < commitsSinceTag2 ? -1 : 1\n return 0\n}\n\nconst isEqual = (v1: string, v2: string): boolean => compare(v1, v2) === 0\n\nconst isGreaterThan = (v1: string, v2: string): boolean => compare(v1, v2) === 1\n\nconst isLessThan = (v1: string, v2: string): boolean => compare(v1, v2) === -1\n\nconst isGreaterThanOrEqual = (v1: string, v2: string): boolean => compare(v1, v2) >= 0\n\nconst isLessThanOrEqual = (v1: string, v2: string): boolean => compare(v1, v2) <= 0\n\nexport const Versions = {\n parse,\n compare,\n isEqual,\n isGreaterThan,\n isLessThan,\n isGreaterThanOrEqual,\n isLessThanOrEqual,\n}\n"]}
1
+ {"version":3,"file":"versions.js","sourceRoot":"","sources":["../../src/utils/versions.ts"],"names":[],"mappings":"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","sourcesContent":["export type ParsedVersion = {\n major: number\n minor: number\n patch?: number\n commitsSinceTag?: number\n}\n\nconst VERSION_REGEX = /^v?(\\d+)\\.(\\d+)(?:\\.(\\d+))?(?:-(\\d+)(?:-g[0-9a-f]+)?)?$/i\n\nconst parse = (version: string): ParsedVersion => {\n const match = VERSION_REGEX.exec(version.trim())\n if (!match) {\n throw new Error(\n `Invalid version format: \"${version}\". Expected format: [v]major.minor[.patch][-commitsSinceTag[-g<commitHash>]] (e.g. \"2.3\", \"2.3.1\", \"v2.3.1\" or \"v2.3.19-4-g207bc95f8\")`\n )\n }\n const parsedVersion: ParsedVersion = {\n major: Number.parseInt(match[1], 10),\n minor: Number.parseInt(match[2], 10),\n }\n if (match[3] !== undefined) {\n parsedVersion.patch = Number.parseInt(match[3], 10)\n }\n if (match[4] !== undefined) {\n parsedVersion.commitsSinceTag = Number.parseInt(match[4], 10)\n }\n return parsedVersion\n}\n\n/**\n * Compares two version strings.\n * @returns -1 if v1 < v2, 0 if v1 === v2, 1 if v1 > v2\n */\nconst compare = (v1: string, v2: string): -1 | 0 | 1 => {\n const p1 = parse(v1)\n const p2 = parse(v2)\n const patch1 = p1.patch ?? 0\n const patch2 = p2.patch ?? 0\n const commitsSinceTag1 = p1.commitsSinceTag ?? 0\n const commitsSinceTag2 = p2.commitsSinceTag ?? 0\n\n if (p1.major !== p2.major) return p1.major < p2.major ? -1 : 1\n if (p1.minor !== p2.minor) return p1.minor < p2.minor ? -1 : 1\n if (patch1 !== patch2) return patch1 < patch2 ? -1 : 1\n if (commitsSinceTag1 !== commitsSinceTag2) return commitsSinceTag1 < commitsSinceTag2 ? -1 : 1\n return 0\n}\n\nconst isEqual = (v1: string, v2: string): boolean => compare(v1, v2) === 0\n\nconst isGreaterThan = (v1: string, v2: string): boolean => compare(v1, v2) === 1\n\nconst isLessThan = (v1: string, v2: string): boolean => compare(v1, v2) === -1\n\nconst isGreaterThanOrEqual = (v1: string, v2: string): boolean => compare(v1, v2) >= 0\n\nconst isLessThanOrEqual = (v1: string, v2: string): boolean => compare(v1, v2) <= 0\n\nexport const Versions = {\n parse,\n compare,\n isEqual,\n isGreaterThan,\n isLessThan,\n isGreaterThanOrEqual,\n isLessThanOrEqual,\n}\n"]}