@geniusdynamics/ns8-ui-lib 1.0.0

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 (310) hide show
  1. package/README.md +167 -0
  2. package/dist/index.d.ts +14 -0
  3. package/dist/ns8-ui-lib.es.js +4278 -0
  4. package/dist/ns8-ui-lib.es.js.map +1 -0
  5. package/dist/ns8-ui-lib.umd.js +7 -0
  6. package/dist/ns8-ui-lib.umd.js.map +1 -0
  7. package/dist/src/App.vue.d.ts +2 -0
  8. package/dist/src/components/HelloWorld.vue.d.ts +5 -0
  9. package/dist/src/components/NS/cards/NSBackupCard.vue.d.ts +51 -0
  10. package/dist/src/components/NS/cards/NSSystemInfoCard.vue.d.ts +58 -0
  11. package/dist/src/components/NS/cards/NSSystemdServiceCard.vue.d.ts +47 -0
  12. package/dist/src/components/NS/cards/index.d.ts +3 -0
  13. package/dist/src/components/NS/checkbox/NSCheckbox.vue.d.ts +37 -0
  14. package/dist/src/components/NS/checkbox/index.d.ts +1 -0
  15. package/dist/src/components/NS/data-table/NSDataTable.vue.d.ts +98 -0
  16. package/dist/src/components/NS/data-table/index.d.ts +1 -0
  17. package/dist/src/components/NS/empty-state/NSEmptyState.vue.d.ts +45 -0
  18. package/dist/src/components/NS/empty-state/index.d.ts +1 -0
  19. package/dist/src/components/NS/index.d.ts +35 -0
  20. package/dist/src/components/NS/inline-notification/NSInlineNotification.vue.d.ts +44 -0
  21. package/dist/src/components/NS/inline-notification/index.d.ts +1 -0
  22. package/dist/src/components/NS/lottie-animation/NSLottieAnimation.vue.d.ts +75 -0
  23. package/dist/src/components/NS/lottie-animation/index.d.ts +1 -0
  24. package/dist/src/components/NS/modal/NSModal.vue.d.ts +56 -0
  25. package/dist/src/components/NS/modal/NSModalTrigger.vue.d.ts +64 -0
  26. package/dist/src/components/NS/modal/index.d.ts +2 -0
  27. package/dist/src/components/NS/pagination/NSPagination.vue.d.ts +36 -0
  28. package/dist/src/components/NS/pagination/index.d.ts +1 -0
  29. package/dist/src/components/NS/progress/NSProgress.vue.d.ts +37 -0
  30. package/dist/src/components/NS/progress/NSProgressBar.vue.d.ts +39 -0
  31. package/dist/src/components/NS/progress/index.d.ts +2 -0
  32. package/dist/src/components/NS/slider/NSByteSlider.vue.d.ts +50 -0
  33. package/dist/src/components/NS/slider/NSSlider.vue.d.ts +49 -0
  34. package/dist/src/components/NS/slider/index.d.ts +2 -0
  35. package/dist/src/components/NS/tag/NSTag.vue.d.ts +41 -0
  36. package/dist/src/components/NS/tag/index.d.ts +1 -0
  37. package/dist/src/components/NS/text-input/NSTextInput.vue.d.ts +67 -0
  38. package/dist/src/components/NS/text-input/index.d.ts +1 -0
  39. package/dist/src/components/NS/toast-notification/NSToastNotification.vue.d.ts +44 -0
  40. package/dist/src/components/NS/toast-notification/index.d.ts +1 -0
  41. package/dist/src/components/NS/toggle/NSToggle.vue.d.ts +51 -0
  42. package/dist/src/components/NS/toggle/index.d.ts +1 -0
  43. package/dist/src/components/NS/wizard/NSWizard.vue.d.ts +86 -0
  44. package/dist/src/components/NS/wizard/index.d.ts +1 -0
  45. package/dist/src/components/ui/button/Button.vue.d.ts +27 -0
  46. package/dist/src/components/ui/button/index.d.ts +7 -0
  47. package/dist/src/components/ui/card/Card.vue.d.ts +21 -0
  48. package/dist/src/components/ui/card/CardAction.vue.d.ts +21 -0
  49. package/dist/src/components/ui/card/CardContent.vue.d.ts +21 -0
  50. package/dist/src/components/ui/card/CardDescription.vue.d.ts +21 -0
  51. package/dist/src/components/ui/card/CardFooter.vue.d.ts +21 -0
  52. package/dist/src/components/ui/card/CardHeader.vue.d.ts +21 -0
  53. package/dist/src/components/ui/card/CardTitle.vue.d.ts +21 -0
  54. package/dist/src/components/ui/card/index.d.ts +7 -0
  55. package/dist/src/components/ui/checkbox/NsCheckbox.vue.d.ts +49 -0
  56. package/dist/src/components/ui/checkbox/index.d.ts +11 -0
  57. package/dist/src/components/ui/dialog/Dialog.vue.d.ts +28 -0
  58. package/dist/src/components/ui/dialog/index.d.ts +1 -0
  59. package/dist/src/components/ui/empty-state/NsEmptyState.vue.d.ts +45 -0
  60. package/dist/src/components/ui/empty-state/index.d.ts +11 -0
  61. package/dist/src/components/ui/inline-notification/NsInlineNotification.vue.d.ts +45 -0
  62. package/dist/src/components/ui/inline-notification/index.d.ts +6 -0
  63. package/dist/src/components/ui/input/Input.vue.d.ts +12 -0
  64. package/dist/src/components/ui/input/index.d.ts +1 -0
  65. package/dist/src/components/ui/input-group/InputGroup.vue.d.ts +21 -0
  66. package/dist/src/components/ui/input-group/InputGroupAddon.vue.d.ts +25 -0
  67. package/dist/src/components/ui/input-group/InputGroupButton.vue.d.ts +22 -0
  68. package/dist/src/components/ui/input-group/InputGroupInput.vue.d.ts +6 -0
  69. package/dist/src/components/ui/input-group/InputGroupText.vue.d.ts +21 -0
  70. package/dist/src/components/ui/input-group/InputGroupTextarea.vue.d.ts +6 -0
  71. package/dist/src/components/ui/input-group/index.d.ts +22 -0
  72. package/dist/src/components/ui/item/Item.vue.d.ts +27 -0
  73. package/dist/src/components/ui/item/ItemActions.vue.d.ts +21 -0
  74. package/dist/src/components/ui/item/ItemContent.vue.d.ts +21 -0
  75. package/dist/src/components/ui/item/ItemDescription.vue.d.ts +21 -0
  76. package/dist/src/components/ui/item/ItemFooter.vue.d.ts +21 -0
  77. package/dist/src/components/ui/item/ItemGroup.vue.d.ts +21 -0
  78. package/dist/src/components/ui/item/ItemHeader.vue.d.ts +21 -0
  79. package/dist/src/components/ui/item/ItemMedia.vue.d.ts +23 -0
  80. package/dist/src/components/ui/item/ItemSeparator.vue.d.ts +7 -0
  81. package/dist/src/components/ui/item/ItemTitle.vue.d.ts +21 -0
  82. package/dist/src/components/ui/item/index.d.ts +20 -0
  83. package/dist/src/components/ui/label/Label.vue.d.ts +22 -0
  84. package/dist/src/components/ui/label/index.d.ts +1 -0
  85. package/dist/src/components/ui/scroll-area/ScrollArea.vue.d.ts +22 -0
  86. package/dist/src/components/ui/scroll-area/ScrollBar.vue.d.ts +9 -0
  87. package/dist/src/components/ui/scroll-area/index.d.ts +2 -0
  88. package/dist/src/components/ui/select/Select.vue.d.ts +28 -0
  89. package/dist/src/components/ui/select/SelectContent.vue.d.ts +32 -0
  90. package/dist/src/components/ui/select/SelectGroup.vue.d.ts +18 -0
  91. package/dist/src/components/ui/select/SelectItem.vue.d.ts +23 -0
  92. package/dist/src/components/ui/select/SelectItemText.vue.d.ts +18 -0
  93. package/dist/src/components/ui/select/SelectLabel.vue.d.ts +22 -0
  94. package/dist/src/components/ui/select/SelectScrollDownButton.vue.d.ts +22 -0
  95. package/dist/src/components/ui/select/SelectScrollUpButton.vue.d.ts +22 -0
  96. package/dist/src/components/ui/select/SelectSeparator.vue.d.ts +7 -0
  97. package/dist/src/components/ui/select/SelectTrigger.vue.d.ts +25 -0
  98. package/dist/src/components/ui/select/SelectValue.vue.d.ts +18 -0
  99. package/dist/src/components/ui/select/index.d.ts +11 -0
  100. package/dist/src/components/ui/separator/Separator.vue.d.ts +10 -0
  101. package/dist/src/components/ui/separator/index.d.ts +1 -0
  102. package/dist/src/components/ui/sheet/Sheet.vue.d.ts +25 -0
  103. package/dist/src/components/ui/sheet/SheetClose.vue.d.ts +18 -0
  104. package/dist/src/components/ui/sheet/SheetContent.vue.d.ts +39 -0
  105. package/dist/src/components/ui/sheet/SheetDescription.vue.d.ts +22 -0
  106. package/dist/src/components/ui/sheet/SheetFooter.vue.d.ts +21 -0
  107. package/dist/src/components/ui/sheet/SheetHeader.vue.d.ts +21 -0
  108. package/dist/src/components/ui/sheet/SheetOverlay.vue.d.ts +22 -0
  109. package/dist/src/components/ui/sheet/SheetTitle.vue.d.ts +22 -0
  110. package/dist/src/components/ui/sheet/SheetTrigger.vue.d.ts +18 -0
  111. package/dist/src/components/ui/sheet/index.d.ts +8 -0
  112. package/dist/src/components/ui/sidebar/Sidebar.vue.d.ts +24 -0
  113. package/dist/src/components/ui/sidebar/SidebarContent.vue.d.ts +21 -0
  114. package/dist/src/components/ui/sidebar/SidebarFooter.vue.d.ts +21 -0
  115. package/dist/src/components/ui/sidebar/SidebarGroup.vue.d.ts +21 -0
  116. package/dist/src/components/ui/sidebar/SidebarGroupAction.vue.d.ts +22 -0
  117. package/dist/src/components/ui/sidebar/SidebarGroupContent.vue.d.ts +21 -0
  118. package/dist/src/components/ui/sidebar/SidebarGroupLabel.vue.d.ts +22 -0
  119. package/dist/src/components/ui/sidebar/SidebarHeader.vue.d.ts +21 -0
  120. package/dist/src/components/ui/sidebar/SidebarInput.vue.d.ts +21 -0
  121. package/dist/src/components/ui/sidebar/SidebarInset.vue.d.ts +21 -0
  122. package/dist/src/components/ui/sidebar/SidebarMenu.vue.d.ts +21 -0
  123. package/dist/src/components/ui/sidebar/SidebarMenuAction.vue.d.ts +25 -0
  124. package/dist/src/components/ui/sidebar/SidebarMenuBadge.vue.d.ts +21 -0
  125. package/dist/src/components/ui/sidebar/SidebarMenuButton.vue.d.ts +27 -0
  126. package/dist/src/components/ui/sidebar/SidebarMenuButtonChild.vue.d.ts +30 -0
  127. package/dist/src/components/ui/sidebar/SidebarMenuItem.vue.d.ts +21 -0
  128. package/dist/src/components/ui/sidebar/SidebarMenuSkeleton.vue.d.ts +7 -0
  129. package/dist/src/components/ui/sidebar/SidebarMenuSub.vue.d.ts +21 -0
  130. package/dist/src/components/ui/sidebar/SidebarMenuSubButton.vue.d.ts +27 -0
  131. package/dist/src/components/ui/sidebar/SidebarMenuSubItem.vue.d.ts +21 -0
  132. package/dist/src/components/ui/sidebar/SidebarProvider.vue.d.ts +30 -0
  133. package/dist/src/components/ui/sidebar/SidebarRail.vue.d.ts +21 -0
  134. package/dist/src/components/ui/sidebar/SidebarSeparator.vue.d.ts +21 -0
  135. package/dist/src/components/ui/sidebar/SidebarTrigger.vue.d.ts +6 -0
  136. package/dist/src/components/ui/sidebar/index.d.ts +37 -0
  137. package/dist/src/components/ui/sidebar/utils.d.ts +56 -0
  138. package/dist/src/components/ui/skeleton/Skeleton.vue.d.ts +6 -0
  139. package/dist/src/components/ui/skeleton/index.d.ts +1 -0
  140. package/dist/src/components/ui/sonner/Sonner.vue.d.ts +3 -0
  141. package/dist/src/components/ui/sonner/index.d.ts +1 -0
  142. package/dist/src/components/ui/switch/Switch.vue.d.ts +28 -0
  143. package/dist/src/components/ui/switch/index.d.ts +1 -0
  144. package/dist/src/components/ui/table/Table.vue.d.ts +21 -0
  145. package/dist/src/components/ui/table/TableBody.vue.d.ts +21 -0
  146. package/dist/src/components/ui/table/TableCaption.vue.d.ts +21 -0
  147. package/dist/src/components/ui/table/TableCell.vue.d.ts +21 -0
  148. package/dist/src/components/ui/table/TableEmpty.vue.d.ts +24 -0
  149. package/dist/src/components/ui/table/TableFooter.vue.d.ts +21 -0
  150. package/dist/src/components/ui/table/TableHead.vue.d.ts +21 -0
  151. package/dist/src/components/ui/table/TableHeader.vue.d.ts +21 -0
  152. package/dist/src/components/ui/table/TableRow.vue.d.ts +21 -0
  153. package/dist/src/components/ui/table/index.d.ts +9 -0
  154. package/dist/src/components/ui/table/utils.d.ts +3 -0
  155. package/dist/src/components/ui/tabs/Tabs.vue.d.ts +28 -0
  156. package/dist/src/components/ui/tabs/TabsContent.vue.d.ts +22 -0
  157. package/dist/src/components/ui/tabs/TabsList.vue.d.ts +22 -0
  158. package/dist/src/components/ui/tabs/TabsTrigger.vue.d.ts +22 -0
  159. package/dist/src/components/ui/tabs/index.d.ts +4 -0
  160. package/dist/src/components/ui/tag/NsTag.vue.d.ts +42 -0
  161. package/dist/src/components/ui/tag/index.d.ts +8 -0
  162. package/dist/src/components/ui/text-input/NsTextInput.vue.d.ts +79 -0
  163. package/dist/src/components/ui/text-input/index.d.ts +15 -0
  164. package/dist/src/components/ui/textarea/Textarea.vue.d.ts +12 -0
  165. package/dist/src/components/ui/textarea/index.d.ts +1 -0
  166. package/dist/src/components/ui/toggle/NsToggle.vue.d.ts +54 -0
  167. package/dist/src/components/ui/toggle/index.d.ts +15 -0
  168. package/dist/src/components/ui/tooltip/Tooltip.vue.d.ts +24 -0
  169. package/dist/src/components/ui/tooltip/TooltipContent.vue.d.ts +30 -0
  170. package/dist/src/components/ui/tooltip/TooltipProvider.vue.d.ts +20 -0
  171. package/dist/src/components/ui/tooltip/TooltipTrigger.vue.d.ts +18 -0
  172. package/dist/src/components/ui/tooltip/index.d.ts +4 -0
  173. package/dist/src/composables/index.d.ts +8 -0
  174. package/dist/src/composables/useDateTimeService.d.ts +10 -0
  175. package/dist/src/composables/useFilterService.d.ts +8 -0
  176. package/dist/src/composables/useIconService.d.ts +153 -0
  177. package/dist/src/composables/usePageTitleService.d.ts +3 -0
  178. package/dist/src/composables/useQueryParamService.d.ts +13 -0
  179. package/dist/src/composables/useStorageService.d.ts +5 -0
  180. package/dist/src/composables/useTaskService.d.ts +18 -0
  181. package/dist/src/composables/useUtilService.d.ts +27 -0
  182. package/dist/src/lib/utils.d.ts +2 -0
  183. package/dist/src/main.d.ts +0 -0
  184. package/dist/vite.svg +1 -0
  185. package/package.json +80 -0
  186. package/src/App.vue +30 -0
  187. package/src/components/HelloWorld.vue +41 -0
  188. package/src/components/NS/CompleteDemo.vue +475 -0
  189. package/src/components/NS/Demo.vue +191 -0
  190. package/src/components/NS/cards/NSBackupCard.vue +272 -0
  191. package/src/components/NS/cards/NSSystemInfoCard.vue +252 -0
  192. package/src/components/NS/cards/NSSystemdServiceCard.vue +250 -0
  193. package/src/components/NS/checkbox/NSCheckbox.vue +104 -0
  194. package/src/components/NS/data-table/NSDataTable.vue +434 -0
  195. package/src/components/NS/empty-state/NSEmptyState.vue +188 -0
  196. package/src/components/NS/inline-notification/NSInlineNotification.vue +162 -0
  197. package/src/components/NS/lottie-animation/NSLottieAnimation.vue +255 -0
  198. package/src/components/NS/modal/NSModal.vue +193 -0
  199. package/src/components/NS/modal/NSModalTrigger.vue +109 -0
  200. package/src/components/NS/pagination/NSPagination.vue +247 -0
  201. package/src/components/NS/progress/NSProgress.vue +115 -0
  202. package/src/components/NS/progress/NSProgressBar.vue +137 -0
  203. package/src/components/NS/slider/NSByteSlider.vue +144 -0
  204. package/src/components/NS/slider/NSSlider.vue +142 -0
  205. package/src/components/NS/tag/NSTag.vue +139 -0
  206. package/src/components/NS/text-input/NSTextInput.vue +242 -0
  207. package/src/components/NS/toast-notification/NSToastNotification.vue +163 -0
  208. package/src/components/NS/toggle/NSToggle.vue +156 -0
  209. package/src/components/NS/wizard/NSWizard.vue +399 -0
  210. package/src/components/ui/button/Button.vue +29 -0
  211. package/src/components/ui/card/Card.vue +22 -0
  212. package/src/components/ui/card/CardAction.vue +17 -0
  213. package/src/components/ui/card/CardContent.vue +17 -0
  214. package/src/components/ui/card/CardDescription.vue +17 -0
  215. package/src/components/ui/card/CardFooter.vue +17 -0
  216. package/src/components/ui/card/CardHeader.vue +17 -0
  217. package/src/components/ui/card/CardTitle.vue +17 -0
  218. package/src/components/ui/checkbox/NsCheckbox.vue +123 -0
  219. package/src/components/ui/dialog/Dialog.vue +68 -0
  220. package/src/components/ui/empty-state/NsEmptyState.vue +149 -0
  221. package/src/components/ui/inline-notification/NsInlineNotification.vue +163 -0
  222. package/src/components/ui/input/Input.vue +33 -0
  223. package/src/components/ui/input-group/InputGroup.vue +35 -0
  224. package/src/components/ui/input-group/InputGroupAddon.vue +36 -0
  225. package/src/components/ui/input-group/InputGroupButton.vue +21 -0
  226. package/src/components/ui/input-group/InputGroupInput.vue +19 -0
  227. package/src/components/ui/input-group/InputGroupText.vue +19 -0
  228. package/src/components/ui/input-group/InputGroupTextarea.vue +19 -0
  229. package/src/components/ui/item/Item.vue +27 -0
  230. package/src/components/ui/item/ItemActions.vue +17 -0
  231. package/src/components/ui/item/ItemContent.vue +17 -0
  232. package/src/components/ui/item/ItemDescription.vue +21 -0
  233. package/src/components/ui/item/ItemFooter.vue +17 -0
  234. package/src/components/ui/item/ItemGroup.vue +18 -0
  235. package/src/components/ui/item/ItemHeader.vue +17 -0
  236. package/src/components/ui/item/ItemMedia.vue +21 -0
  237. package/src/components/ui/item/ItemSeparator.vue +18 -0
  238. package/src/components/ui/item/ItemTitle.vue +17 -0
  239. package/src/components/ui/label/Label.vue +26 -0
  240. package/src/components/ui/scroll-area/ScrollArea.vue +33 -0
  241. package/src/components/ui/scroll-area/ScrollBar.vue +32 -0
  242. package/src/components/ui/select/Select.vue +19 -0
  243. package/src/components/ui/select/SelectContent.vue +51 -0
  244. package/src/components/ui/select/SelectGroup.vue +15 -0
  245. package/src/components/ui/select/SelectItem.vue +44 -0
  246. package/src/components/ui/select/SelectItemText.vue +15 -0
  247. package/src/components/ui/select/SelectLabel.vue +17 -0
  248. package/src/components/ui/select/SelectScrollDownButton.vue +26 -0
  249. package/src/components/ui/select/SelectScrollUpButton.vue +26 -0
  250. package/src/components/ui/select/SelectSeparator.vue +19 -0
  251. package/src/components/ui/select/SelectTrigger.vue +33 -0
  252. package/src/components/ui/select/SelectValue.vue +15 -0
  253. package/src/components/ui/separator/Separator.vue +29 -0
  254. package/src/components/ui/sheet/Sheet.vue +19 -0
  255. package/src/components/ui/sheet/SheetClose.vue +15 -0
  256. package/src/components/ui/sheet/SheetContent.vue +62 -0
  257. package/src/components/ui/sheet/SheetDescription.vue +21 -0
  258. package/src/components/ui/sheet/SheetFooter.vue +16 -0
  259. package/src/components/ui/sheet/SheetHeader.vue +15 -0
  260. package/src/components/ui/sheet/SheetOverlay.vue +21 -0
  261. package/src/components/ui/sheet/SheetTitle.vue +21 -0
  262. package/src/components/ui/sheet/SheetTrigger.vue +15 -0
  263. package/src/components/ui/sidebar/Sidebar.vue +96 -0
  264. package/src/components/ui/sidebar/SidebarContent.vue +18 -0
  265. package/src/components/ui/sidebar/SidebarFooter.vue +18 -0
  266. package/src/components/ui/sidebar/SidebarGroup.vue +18 -0
  267. package/src/components/ui/sidebar/SidebarGroupAction.vue +27 -0
  268. package/src/components/ui/sidebar/SidebarGroupContent.vue +18 -0
  269. package/src/components/ui/sidebar/SidebarGroupLabel.vue +25 -0
  270. package/src/components/ui/sidebar/SidebarHeader.vue +18 -0
  271. package/src/components/ui/sidebar/SidebarInput.vue +22 -0
  272. package/src/components/ui/sidebar/SidebarInset.vue +21 -0
  273. package/src/components/ui/sidebar/SidebarMenu.vue +18 -0
  274. package/src/components/ui/sidebar/SidebarMenuAction.vue +35 -0
  275. package/src/components/ui/sidebar/SidebarMenuBadge.vue +26 -0
  276. package/src/components/ui/sidebar/SidebarMenuButton.vue +48 -0
  277. package/src/components/ui/sidebar/SidebarMenuButtonChild.vue +36 -0
  278. package/src/components/ui/sidebar/SidebarMenuItem.vue +18 -0
  279. package/src/components/ui/sidebar/SidebarMenuSkeleton.vue +35 -0
  280. package/src/components/ui/sidebar/SidebarMenuSub.vue +22 -0
  281. package/src/components/ui/sidebar/SidebarMenuSubButton.vue +36 -0
  282. package/src/components/ui/sidebar/SidebarMenuSubItem.vue +18 -0
  283. package/src/components/ui/sidebar/SidebarProvider.vue +82 -0
  284. package/src/components/ui/sidebar/SidebarRail.vue +33 -0
  285. package/src/components/ui/sidebar/SidebarSeparator.vue +19 -0
  286. package/src/components/ui/sidebar/SidebarTrigger.vue +27 -0
  287. package/src/components/ui/skeleton/Skeleton.vue +17 -0
  288. package/src/components/ui/sonner/Sonner.vue +42 -0
  289. package/src/components/ui/switch/Switch.vue +38 -0
  290. package/src/components/ui/table/Table.vue +16 -0
  291. package/src/components/ui/table/TableBody.vue +17 -0
  292. package/src/components/ui/table/TableCaption.vue +17 -0
  293. package/src/components/ui/table/TableCell.vue +22 -0
  294. package/src/components/ui/table/TableEmpty.vue +34 -0
  295. package/src/components/ui/table/TableFooter.vue +17 -0
  296. package/src/components/ui/table/TableHead.vue +17 -0
  297. package/src/components/ui/table/TableHeader.vue +17 -0
  298. package/src/components/ui/table/TableRow.vue +17 -0
  299. package/src/components/ui/tabs/Tabs.vue +24 -0
  300. package/src/components/ui/tabs/TabsContent.vue +21 -0
  301. package/src/components/ui/tabs/TabsList.vue +24 -0
  302. package/src/components/ui/tabs/TabsTrigger.vue +26 -0
  303. package/src/components/ui/tag/NsTag.vue +114 -0
  304. package/src/components/ui/text-input/NsTextInput.vue +269 -0
  305. package/src/components/ui/textarea/Textarea.vue +28 -0
  306. package/src/components/ui/toggle/NsToggle.vue +126 -0
  307. package/src/components/ui/tooltip/Tooltip.vue +19 -0
  308. package/src/components/ui/tooltip/TooltipContent.vue +34 -0
  309. package/src/components/ui/tooltip/TooltipProvider.vue +14 -0
  310. package/src/components/ui/tooltip/TooltipTrigger.vue +15 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ns8-ui-lib.es.js","sources":["../node_modules/.pnpm/uuid@13.0.0/node_modules/uuid/dist/stringify.js","../node_modules/.pnpm/uuid@13.0.0/node_modules/uuid/dist/rng.js","../node_modules/.pnpm/uuid@13.0.0/node_modules/uuid/dist/native.js","../node_modules/.pnpm/uuid@13.0.0/node_modules/uuid/dist/v4.js","../src/composables/useUtilService.ts","../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/constants.js","../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/constructFrom.js","../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/toDate.js","../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/addDays.js","../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/_lib/defaultOptions.js","../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/startOfWeek.js","../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/startOfISOWeek.js","../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/getISOWeekYear.js","../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/_lib/getTimezoneOffsetInMilliseconds.js","../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/_lib/normalizeDates.js","../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/startOfDay.js","../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/differenceInCalendarDays.js","../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/startOfISOWeekYear.js","../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/compareAsc.js","../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/isDate.js","../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/isValid.js","../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/differenceInCalendarMonths.js","../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/_lib/getRoundingMethod.js","../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/differenceInMilliseconds.js","../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/endOfDay.js","../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/endOfMonth.js","../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/isLastDayOfMonth.js","../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/differenceInMonths.js","../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/differenceInSeconds.js","../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/startOfYear.js","../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/locale/en-US/_lib/formatDistance.js","../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/locale/_lib/buildFormatLongFn.js","../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/locale/en-US/_lib/formatLong.js","../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/locale/en-US/_lib/formatRelative.js","../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/locale/_lib/buildLocalizeFn.js","../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/locale/en-US/_lib/localize.js","../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/locale/_lib/buildMatchFn.js","../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/locale/_lib/buildMatchPatternFn.js","../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/locale/en-US/_lib/match.js","../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/locale/en-US.js","../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/getDayOfYear.js","../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/getISOWeek.js","../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/getWeekYear.js","../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/startOfWeekYear.js","../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/getWeek.js","../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/_lib/addLeadingZeros.js","../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/_lib/format/lightFormatters.js","../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/_lib/format/formatters.js","../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/_lib/format/longFormatters.js","../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/_lib/protectedTokens.js","../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/format.js","../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/formatDistance.js","../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/getDefaultOptions.js","../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/isBefore.js","../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/subDays.js","../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/parseISO.js","../node_modules/.pnpm/date-fns-tz@3.2.0_date-fns@4.1.0/node_modules/date-fns-tz/dist/esm/_lib/tzIntlTimeZoneName/index.js","../node_modules/.pnpm/date-fns-tz@3.2.0_date-fns@4.1.0/node_modules/date-fns-tz/dist/esm/_lib/tzTokenizeDate/index.js","../node_modules/.pnpm/date-fns-tz@3.2.0_date-fns@4.1.0/node_modules/date-fns-tz/dist/esm/_lib/newDateUTC/index.js","../node_modules/.pnpm/date-fns-tz@3.2.0_date-fns@4.1.0/node_modules/date-fns-tz/dist/esm/_lib/tzParseTimezone/index.js","../node_modules/.pnpm/date-fns-tz@3.2.0_date-fns@4.1.0/node_modules/date-fns-tz/dist/esm/format/formatters/index.js","../node_modules/.pnpm/date-fns-tz@3.2.0_date-fns@4.1.0/node_modules/date-fns-tz/dist/esm/_lib/getTimezoneOffsetInMilliseconds/index.js","../node_modules/.pnpm/date-fns-tz@3.2.0_date-fns@4.1.0/node_modules/date-fns-tz/dist/esm/_lib/tzPattern/index.js","../node_modules/.pnpm/date-fns-tz@3.2.0_date-fns@4.1.0/node_modules/date-fns-tz/dist/esm/toDate/index.js","../node_modules/.pnpm/date-fns-tz@3.2.0_date-fns@4.1.0/node_modules/date-fns-tz/dist/esm/format/index.js","../node_modules/.pnpm/date-fns-tz@3.2.0_date-fns@4.1.0/node_modules/date-fns-tz/dist/esm/toZonedTime/index.js","../src/composables/useDateTimeService.ts","../src/composables/useIconService.ts","../src/composables/usePageTitleService.ts","../src/composables/useQueryParamService.ts","../src/composables/useStorageService.ts","../node_modules/.pnpm/axios@1.13.2/node_modules/axios/lib/helpers/bind.js","../node_modules/.pnpm/axios@1.13.2/node_modules/axios/lib/utils.js","../node_modules/.pnpm/axios@1.13.2/node_modules/axios/lib/core/AxiosError.js","../node_modules/.pnpm/axios@1.13.2/node_modules/axios/lib/helpers/null.js","../node_modules/.pnpm/axios@1.13.2/node_modules/axios/lib/helpers/toFormData.js","../node_modules/.pnpm/axios@1.13.2/node_modules/axios/lib/helpers/AxiosURLSearchParams.js","../node_modules/.pnpm/axios@1.13.2/node_modules/axios/lib/helpers/buildURL.js","../node_modules/.pnpm/axios@1.13.2/node_modules/axios/lib/core/InterceptorManager.js","../node_modules/.pnpm/axios@1.13.2/node_modules/axios/lib/defaults/transitional.js","../node_modules/.pnpm/axios@1.13.2/node_modules/axios/lib/platform/browser/classes/URLSearchParams.js","../node_modules/.pnpm/axios@1.13.2/node_modules/axios/lib/platform/browser/classes/FormData.js","../node_modules/.pnpm/axios@1.13.2/node_modules/axios/lib/platform/browser/classes/Blob.js","../node_modules/.pnpm/axios@1.13.2/node_modules/axios/lib/platform/browser/index.js","../node_modules/.pnpm/axios@1.13.2/node_modules/axios/lib/platform/common/utils.js","../node_modules/.pnpm/axios@1.13.2/node_modules/axios/lib/platform/index.js","../node_modules/.pnpm/axios@1.13.2/node_modules/axios/lib/helpers/toURLEncodedForm.js","../node_modules/.pnpm/axios@1.13.2/node_modules/axios/lib/helpers/formDataToJSON.js","../node_modules/.pnpm/axios@1.13.2/node_modules/axios/lib/defaults/index.js","../node_modules/.pnpm/axios@1.13.2/node_modules/axios/lib/helpers/parseHeaders.js","../node_modules/.pnpm/axios@1.13.2/node_modules/axios/lib/core/AxiosHeaders.js","../node_modules/.pnpm/axios@1.13.2/node_modules/axios/lib/core/transformData.js","../node_modules/.pnpm/axios@1.13.2/node_modules/axios/lib/cancel/isCancel.js","../node_modules/.pnpm/axios@1.13.2/node_modules/axios/lib/cancel/CanceledError.js","../node_modules/.pnpm/axios@1.13.2/node_modules/axios/lib/core/settle.js","../node_modules/.pnpm/axios@1.13.2/node_modules/axios/lib/helpers/parseProtocol.js","../node_modules/.pnpm/axios@1.13.2/node_modules/axios/lib/helpers/speedometer.js","../node_modules/.pnpm/axios@1.13.2/node_modules/axios/lib/helpers/throttle.js","../node_modules/.pnpm/axios@1.13.2/node_modules/axios/lib/helpers/progressEventReducer.js","../node_modules/.pnpm/axios@1.13.2/node_modules/axios/lib/helpers/isURLSameOrigin.js","../node_modules/.pnpm/axios@1.13.2/node_modules/axios/lib/helpers/cookies.js","../node_modules/.pnpm/axios@1.13.2/node_modules/axios/lib/helpers/isAbsoluteURL.js","../node_modules/.pnpm/axios@1.13.2/node_modules/axios/lib/helpers/combineURLs.js","../node_modules/.pnpm/axios@1.13.2/node_modules/axios/lib/core/buildFullPath.js","../node_modules/.pnpm/axios@1.13.2/node_modules/axios/lib/core/mergeConfig.js","../node_modules/.pnpm/axios@1.13.2/node_modules/axios/lib/helpers/resolveConfig.js","../node_modules/.pnpm/axios@1.13.2/node_modules/axios/lib/adapters/xhr.js","../node_modules/.pnpm/axios@1.13.2/node_modules/axios/lib/helpers/composeSignals.js","../node_modules/.pnpm/axios@1.13.2/node_modules/axios/lib/helpers/trackStream.js","../node_modules/.pnpm/axios@1.13.2/node_modules/axios/lib/adapters/fetch.js","../node_modules/.pnpm/axios@1.13.2/node_modules/axios/lib/adapters/adapters.js","../node_modules/.pnpm/axios@1.13.2/node_modules/axios/lib/core/dispatchRequest.js","../node_modules/.pnpm/axios@1.13.2/node_modules/axios/lib/env/data.js","../node_modules/.pnpm/axios@1.13.2/node_modules/axios/lib/helpers/validator.js","../node_modules/.pnpm/axios@1.13.2/node_modules/axios/lib/core/Axios.js","../node_modules/.pnpm/axios@1.13.2/node_modules/axios/lib/cancel/CancelToken.js","../node_modules/.pnpm/axios@1.13.2/node_modules/axios/lib/helpers/spread.js","../node_modules/.pnpm/axios@1.13.2/node_modules/axios/lib/helpers/isAxiosError.js","../node_modules/.pnpm/axios@1.13.2/node_modules/axios/lib/helpers/HttpStatusCode.js","../node_modules/.pnpm/axios@1.13.2/node_modules/axios/lib/axios.js","../node_modules/.pnpm/axios@1.13.2/node_modules/axios/index.js","../src/composables/useTaskService.ts","../src/composables/useFilterService.ts","../index.ts"],"sourcesContent":["import validate from './validate.js';\nconst byteToHex = [];\nfor (let i = 0; i < 256; ++i) {\n byteToHex.push((i + 0x100).toString(16).slice(1));\n}\nexport function unsafeStringify(arr, offset = 0) {\n return (byteToHex[arr[offset + 0]] +\n byteToHex[arr[offset + 1]] +\n byteToHex[arr[offset + 2]] +\n byteToHex[arr[offset + 3]] +\n '-' +\n byteToHex[arr[offset + 4]] +\n byteToHex[arr[offset + 5]] +\n '-' +\n byteToHex[arr[offset + 6]] +\n byteToHex[arr[offset + 7]] +\n '-' +\n byteToHex[arr[offset + 8]] +\n byteToHex[arr[offset + 9]] +\n '-' +\n byteToHex[arr[offset + 10]] +\n byteToHex[arr[offset + 11]] +\n byteToHex[arr[offset + 12]] +\n byteToHex[arr[offset + 13]] +\n byteToHex[arr[offset + 14]] +\n byteToHex[arr[offset + 15]]).toLowerCase();\n}\nfunction stringify(arr, offset = 0) {\n const uuid = unsafeStringify(arr, offset);\n if (!validate(uuid)) {\n throw TypeError('Stringified UUID is invalid');\n }\n return uuid;\n}\nexport default stringify;\n","let getRandomValues;\nconst rnds8 = new Uint8Array(16);\nexport default function rng() {\n if (!getRandomValues) {\n if (typeof crypto === 'undefined' || !crypto.getRandomValues) {\n throw new Error('crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported');\n }\n getRandomValues = crypto.getRandomValues.bind(crypto);\n }\n return getRandomValues(rnds8);\n}\n","const randomUUID = typeof crypto !== 'undefined' && crypto.randomUUID && crypto.randomUUID.bind(crypto);\nexport default { randomUUID };\n","import native from './native.js';\nimport rng from './rng.js';\nimport { unsafeStringify } from './stringify.js';\nfunction _v4(options, buf, offset) {\n options = options || {};\n const rnds = options.random ?? options.rng?.() ?? rng();\n if (rnds.length < 16) {\n throw new Error('Random bytes length must be >= 16');\n }\n rnds[6] = (rnds[6] & 0x0f) | 0x40;\n rnds[8] = (rnds[8] & 0x3f) | 0x80;\n if (buf) {\n offset = offset || 0;\n if (offset < 0 || offset + 16 > buf.length) {\n throw new RangeError(`UUID byte range ${offset}:${offset + 15} is out of buffer bounds`);\n }\n for (let i = 0; i < 16; ++i) {\n buf[offset + i] = rnds[i];\n }\n return buf;\n }\n return unsafeStringify(rnds);\n}\nfunction v4(options, buf, offset) {\n if (native.randomUUID && !buf && !options) {\n return native.randomUUID();\n }\n return _v4(options, buf, offset);\n}\nexport default v4;\n","/*\n * Copyright (C) 2023 Nethesis S.r.l.\n * SPDX-License-Identifier: GPL-3.0-or-later\n */\n\nimport { nextTick } from 'vue';\nimport { v4 as uuidv4 } from \"uuid\";\n\nexport const useUtilService = () => {\n const DELETE_DELAY = 7000; // you have 7 seconds to cancel object deletion\n const time24HourPattern = /([01]\\d|2[0-3]):?([0-5]\\d)/;\n const time24HourPatternString = \"([01]\\\\d|2[0-3]):?([0-5]\\\\d)\";\n const time24HourPlaceholder = \"hh:mm\";\n // used to highlight the anchor user has just navigated to\n let highlightAnchor = \"\";\n const ipAddressPattern = /^((25[0-5]|(2[0-4]|1\\d|[1-9]|)\\d)\\.?\\b){4}$/;\n const cidrPattern = /^((25[0-5]|(2[0-4]|1\\d|[1-9]|)\\d)\\.?\\b){4}\\/(\\d){1,2}$/;\n\n const getErrorMessage = (error: any, t?: (key: string, args?: any) => string) => {\n if (error.message === \"Network Error\") {\n return t ? t(\"error.network_error\") : \"Network error\";\n }\n\n if (/^timeout of .+ exceeded$/.test(error.message)) {\n // axios timeout reached\n return t ? t(\"error.network_timeout\") : \"Network timeout\";\n }\n\n if (error.response) {\n switch (error.response.status) {\n case 401:\n return t ? t(\"error.401\") : \"Unauthorized\";\n case 403:\n return t ? t(\"error.403\") : \"Forbidden\";\n case 404:\n return t ? t(\"error.404\") : \"Not found\";\n }\n }\n\n return t ? t(\"error.generic_error\") : \"Generic error\";\n };\n\n /**\n * Clear errors inside context. Used to clear previous errors before input data validation\n */\n const clearErrors = (error: any) => {\n clearStrings(error);\n };\n\n const clearStrings = (obj: any) => {\n for (const key of Object.keys(obj)) {\n if (typeof obj[key] == \"string\") {\n obj[key] = \"\";\n } else if (typeof obj[key] == \"boolean\") {\n obj[key] = false;\n } else if (typeof obj[key] == \"object\") {\n // recursion\n clearStrings(obj[key]);\n } else {\n console.error(\"unexpected object type:\", typeof obj[key]);\n }\n }\n };\n\n /**\n * Sort function to order array elements by a specific property (for array of objects) or by a specific index (for arrays of arrays)\n */\n const sortByProperty = (property: string) => {\n return function (a: any, b: any) {\n if (a[property] < b[property]) {\n return -1;\n }\n if (a[property] > b[property]) {\n return 1;\n }\n return 0;\n };\n };\n\n /**\n * Sort function for module instances (e.g. [\"dokuwiki1\", \"dokuwiki2\", \"dokuwiki11\"])\n */\n const sortModuleInstances = () => {\n return function (instance1: any, instance2: any) {\n const instance1Name = instance1.id.split(/[0-9]+/)[0];\n const instance1Number = parseInt(\n instance1.id.substring(instance1Name.length)\n );\n\n const instance2Name = instance2.id.split(/[0-9]+/)[0];\n const instance2Number = parseInt(\n instance2.id.substring(instance2Name.length)\n );\n\n // compare instance names\n if (instance1Name < instance2Name) {\n return -1;\n } else if (instance1Name > instance2Name) {\n return 1;\n } else {\n // compare instance numbers\n if (instance1Number < instance2Number) {\n return -1;\n } else if (instance1Number > instance2Number) {\n return 1;\n } else {\n return 0;\n }\n }\n };\n };\n\n /**\n * Return if input string can be parsed as a JSON object\n */\n const isJson = (s: string) => {\n try {\n JSON.parse(s);\n return true;\n } catch (err) {\n return false;\n }\n };\n\n /**\n * Try to parse input string and return a JSON object. If input string cannot be parsed, then input string is returned\n */\n const tryParseJson = (s: string) => {\n try {\n return JSON.parse(s);\n } catch (err) {\n return s;\n }\n };\n\n /**\n * Set focus on an HTML element\n */\n const focusElement = (elementRef: any) => {\n nextTick(() => {\n const element = elementRef.value || elementRef;\n if (element && element.focus) {\n element.focus();\n }\n });\n };\n\n /**\n * Smoothly scroll to a specific element in the page\n */\n const scrollToElement = (element: Element) => {\n if (element) {\n element.scrollIntoView({ behavior: \"smooth\" });\n }\n };\n\n /**\n * Get app description using the locale\n */\n const getAppDescription = (app: any, t: (key: string, args?: any) => string, locale: string) => {\n let description = app.description[locale];\n\n if (!description) {\n // fallback to english\n description = app.description.en;\n }\n return description;\n };\n\n /**\n * Get app categories using the locale\n */\n const getAppCategories = (app: any, t: (key: string, args?: any) => string) => {\n let i18nCategories: string[] = [];\n\n for (const category of app.categories) {\n if (category === \"unknown\") {\n return \"\";\n }\n\n i18nCategories.push(\n t(\"software_center.app_categories.\" + category)\n );\n }\n return i18nCategories.join(\", \");\n };\n\n /**\n * Used in Backup section\n */\n const getBackupScheduleDescription = (schedule: any, t: (key: string, args?: any) => string) => {\n if (!schedule) {\n return \"-\";\n }\n\n switch (schedule.interval) {\n case \"hourly\":\n if (schedule.minute == 0) {\n return t(\"backup.every_hour\");\n } else {\n return t(\"backup.minutes_past_the_hour\", { minutes: schedule.minute });\n }\n case \"daily\":\n if (time24HourPattern.test(schedule.time)) {\n return t(\"backup.every_day_at\", { time: schedule.time });\n } else {\n return \"-\";\n }\n case \"weekly\":\n if (time24HourPattern.test(schedule.time)) {\n return t(\"backup.every_weekday_at_hour\", {\n weekDay: t(\"calendar.\" + schedule.weekDay),\n time: schedule.time,\n });\n } else {\n return \"-\";\n }\n case \"monthly\":\n if (time24HourPattern.test(schedule.time)) {\n return t(\"backup.every_month_at_time\", {\n dayNum: schedule.monthDay,\n time: schedule.time,\n });\n } else {\n return \"-\";\n }\n default:\n return \"-\";\n }\n };\n\n /**\n * Get the base64 representation of a file\n */\n const fileToBase64 = (file: File): Promise<string> => {\n return new Promise((resolve, reject) => {\n const reader = new FileReader();\n reader.readAsDataURL(file);\n reader.onload = () => resolve(reader.result as string);\n reader.onerror = (error) => reject(error);\n });\n };\n\n /**\n * Generate a universally unique identifier\n */\n const getUuid = () => {\n return uuidv4();\n };\n\n /**\n * Get a readable label for a node\n */\n const getNodeLabel = (node: any, t: (key: string, args?: any) => string) => {\n return node.ui_name\n ? node.ui_name + \" (\" + t(\"common.node\") + \" \" + node.id + \")\"\n : t(\"common.node\") + \" \" + node.id;\n };\n\n /**\n * Get a readable short label for a node\n */\n const getShortNodeLabel = (node: any, t: (key: string, args?: any) => string) => {\n return node.ui_name\n ? node.ui_name\n : t(\"common.node\") + \" \" + node.id;\n };\n\n /**\n * Decode a jwt token and parse its payload\n */\n const decodeJwtPayload = (token: string) => {\n const base64Url = token.split(\".\")[1];\n const base64 = base64Url.replace(/-/g, \"+\").replace(/_/g, \"/\");\n const jsonPayload = decodeURIComponent(\n window\n .atob(base64)\n .split(\"\")\n .map(function (c) {\n return \"%\" + (\"00\" + c.charCodeAt(0).toString(16)).slice(-2);\n })\n .join(\"\")\n );\n return JSON.parse(jsonPayload);\n };\n\n /**\n * Get SHA256 digest of a string\n */\n const getSha256 = async (message: string) => {\n // encode as UTF-8\n const msgBuffer = new TextEncoder().encode(message);\n\n // hash message\n const hashBuffer = await crypto.subtle.digest(\"SHA-256\", msgBuffer);\n\n // convert ArrayBuffer to Array\n const hashArray = Array.from(new Uint8Array(hashBuffer));\n\n // convert bytes to hex string\n const hashHex = hashArray\n .map((b) => b.toString(16).padStart(2, \"0\"))\n .join(\"\");\n return hashHex;\n };\n\n return {\n DELETE_DELAY,\n time24HourPattern,\n time24HourPatternString,\n time24HourPlaceholder,\n highlightAnchor,\n ipAddressPattern,\n cidrPattern,\n getErrorMessage,\n clearErrors,\n clearStrings,\n sortByProperty,\n sortModuleInstances,\n isJson,\n tryParseJson,\n focusElement,\n scrollToElement,\n getAppDescription,\n getAppCategories,\n getBackupScheduleDescription,\n fileToBase64,\n getUuid,\n getNodeLabel,\n getShortNodeLabel,\n decodeJwtPayload,\n getSha256,\n };\n};","/**\n * @module constants\n * @summary Useful constants\n * @description\n * Collection of useful date constants.\n *\n * The constants could be imported from `date-fns/constants`:\n *\n * ```ts\n * import { maxTime, minTime } from \"./constants/date-fns/constants\";\n *\n * function isAllowedTime(time) {\n * return time <= maxTime && time >= minTime;\n * }\n * ```\n */\n\n/**\n * @constant\n * @name daysInWeek\n * @summary Days in 1 week.\n */\nexport const daysInWeek = 7;\n\n/**\n * @constant\n * @name daysInYear\n * @summary Days in 1 year.\n *\n * @description\n * How many days in a year.\n *\n * One years equals 365.2425 days according to the formula:\n *\n * > Leap year occurs every 4 years, except for years that are divisible by 100 and not divisible by 400.\n * > 1 mean year = (365+1/4-1/100+1/400) days = 365.2425 days\n */\nexport const daysInYear = 365.2425;\n\n/**\n * @constant\n * @name maxTime\n * @summary Maximum allowed time.\n *\n * @example\n * import { maxTime } from \"./constants/date-fns/constants\";\n *\n * const isValid = 8640000000000001 <= maxTime;\n * //=> false\n *\n * new Date(8640000000000001);\n * //=> Invalid Date\n */\nexport const maxTime = Math.pow(10, 8) * 24 * 60 * 60 * 1000;\n\n/**\n * @constant\n * @name minTime\n * @summary Minimum allowed time.\n *\n * @example\n * import { minTime } from \"./constants/date-fns/constants\";\n *\n * const isValid = -8640000000000001 >= minTime;\n * //=> false\n *\n * new Date(-8640000000000001)\n * //=> Invalid Date\n */\nexport const minTime = -maxTime;\n\n/**\n * @constant\n * @name millisecondsInWeek\n * @summary Milliseconds in 1 week.\n */\nexport const millisecondsInWeek = 604800000;\n\n/**\n * @constant\n * @name millisecondsInDay\n * @summary Milliseconds in 1 day.\n */\nexport const millisecondsInDay = 86400000;\n\n/**\n * @constant\n * @name millisecondsInMinute\n * @summary Milliseconds in 1 minute\n */\nexport const millisecondsInMinute = 60000;\n\n/**\n * @constant\n * @name millisecondsInHour\n * @summary Milliseconds in 1 hour\n */\nexport const millisecondsInHour = 3600000;\n\n/**\n * @constant\n * @name millisecondsInSecond\n * @summary Milliseconds in 1 second\n */\nexport const millisecondsInSecond = 1000;\n\n/**\n * @constant\n * @name minutesInYear\n * @summary Minutes in 1 year.\n */\nexport const minutesInYear = 525600;\n\n/**\n * @constant\n * @name minutesInMonth\n * @summary Minutes in 1 month.\n */\nexport const minutesInMonth = 43200;\n\n/**\n * @constant\n * @name minutesInDay\n * @summary Minutes in 1 day.\n */\nexport const minutesInDay = 1440;\n\n/**\n * @constant\n * @name minutesInHour\n * @summary Minutes in 1 hour.\n */\nexport const minutesInHour = 60;\n\n/**\n * @constant\n * @name monthsInQuarter\n * @summary Months in 1 quarter.\n */\nexport const monthsInQuarter = 3;\n\n/**\n * @constant\n * @name monthsInYear\n * @summary Months in 1 year.\n */\nexport const monthsInYear = 12;\n\n/**\n * @constant\n * @name quartersInYear\n * @summary Quarters in 1 year\n */\nexport const quartersInYear = 4;\n\n/**\n * @constant\n * @name secondsInHour\n * @summary Seconds in 1 hour.\n */\nexport const secondsInHour = 3600;\n\n/**\n * @constant\n * @name secondsInMinute\n * @summary Seconds in 1 minute.\n */\nexport const secondsInMinute = 60;\n\n/**\n * @constant\n * @name secondsInDay\n * @summary Seconds in 1 day.\n */\nexport const secondsInDay = secondsInHour * 24;\n\n/**\n * @constant\n * @name secondsInWeek\n * @summary Seconds in 1 week.\n */\nexport const secondsInWeek = secondsInDay * 7;\n\n/**\n * @constant\n * @name secondsInYear\n * @summary Seconds in 1 year.\n */\nexport const secondsInYear = secondsInDay * daysInYear;\n\n/**\n * @constant\n * @name secondsInMonth\n * @summary Seconds in 1 month\n */\nexport const secondsInMonth = secondsInYear / 12;\n\n/**\n * @constant\n * @name secondsInQuarter\n * @summary Seconds in 1 quarter.\n */\nexport const secondsInQuarter = secondsInMonth * 3;\n\n/**\n * @constant\n * @name constructFromSymbol\n * @summary Symbol enabling Date extensions to inherit properties from the reference date.\n *\n * The symbol is used to enable the `constructFrom` function to construct a date\n * using a reference date and a value. It allows to transfer extra properties\n * from the reference date to the new date. It's useful for extensions like\n * [`TZDate`](https://github.com/date-fns/tz) that accept a time zone as\n * a constructor argument.\n */\nexport const constructFromSymbol = Symbol.for(\"constructDateFrom\");\n","import { constructFromSymbol } from \"./constants.js\";\n\n/**\n * @name constructFrom\n * @category Generic Helpers\n * @summary Constructs a date using the reference date and the value\n *\n * @description\n * The function constructs a new date using the constructor from the reference\n * date and the given value. It helps to build generic functions that accept\n * date extensions.\n *\n * It defaults to `Date` if the passed reference date is a number or a string.\n *\n * Starting from v3.7.0, it allows to construct a date using `[Symbol.for(\"constructDateFrom\")]`\n * enabling to transfer extra properties from the reference date to the new date.\n * It's useful for extensions like [`TZDate`](https://github.com/date-fns/tz)\n * that accept a time zone as a constructor argument.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param date - The reference date to take constructor from\n * @param value - The value to create the date\n *\n * @returns Date initialized using the given date and value\n *\n * @example\n * import { constructFrom } from \"./constructFrom/date-fns\";\n *\n * // A function that clones a date preserving the original type\n * function cloneDate<DateType extends Date>(date: DateType): DateType {\n * return constructFrom(\n * date, // Use constructor from the given date\n * date.getTime() // Use the date value to create a new date\n * );\n * }\n */\nexport function constructFrom(date, value) {\n if (typeof date === \"function\") return date(value);\n\n if (date && typeof date === \"object\" && constructFromSymbol in date)\n return date[constructFromSymbol](value);\n\n if (date instanceof Date) return new date.constructor(value);\n\n return new Date(value);\n}\n\n// Fallback for modularized imports:\nexport default constructFrom;\n","import { constructFrom } from \"./constructFrom.js\";\n\n/**\n * @name toDate\n * @category Common Helpers\n * @summary Convert the given argument to an instance of Date.\n *\n * @description\n * Convert the given argument to an instance of Date.\n *\n * If the argument is an instance of Date, the function returns its clone.\n *\n * If the argument is a number, it is treated as a timestamp.\n *\n * If the argument is none of the above, the function returns Invalid Date.\n *\n * Starting from v3.7.0, it clones a date using `[Symbol.for(\"constructDateFrom\")]`\n * enabling to transfer extra properties from the reference date to the new date.\n * It's useful for extensions like [`TZDate`](https://github.com/date-fns/tz)\n * that accept a time zone as a constructor argument.\n *\n * **Note**: *all* Date arguments passed to any *date-fns* function is processed by `toDate`.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param argument - The value to convert\n *\n * @returns The parsed date in the local time zone\n *\n * @example\n * // Clone the date:\n * const result = toDate(new Date(2014, 1, 11, 11, 30, 30))\n * //=> Tue Feb 11 2014 11:30:30\n *\n * @example\n * // Convert the timestamp to date:\n * const result = toDate(1392098430000)\n * //=> Tue Feb 11 2014 11:30:30\n */\nexport function toDate(argument, context) {\n // [TODO] Get rid of `toDate` or `constructFrom`?\n return constructFrom(context || argument, argument);\n}\n\n// Fallback for modularized imports:\nexport default toDate;\n","import { constructFrom } from \"./constructFrom.js\";\nimport { toDate } from \"./toDate.js\";\n\n/**\n * The {@link addDays} function options.\n */\n\n/**\n * @name addDays\n * @category Day Helpers\n * @summary Add the specified number of days to the given date.\n *\n * @description\n * Add the specified number of days to the given date.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param date - The date to be changed\n * @param amount - The amount of days to be added.\n * @param options - An object with options\n *\n * @returns The new date with the days added\n *\n * @example\n * // Add 10 days to 1 September 2014:\n * const result = addDays(new Date(2014, 8, 1), 10)\n * //=> Thu Sep 11 2014 00:00:00\n */\nexport function addDays(date, amount, options) {\n const _date = toDate(date, options?.in);\n if (isNaN(amount)) return constructFrom(options?.in || date, NaN);\n\n // If 0 days, no-op to avoid changing times in the hour before end of DST\n if (!amount) return _date;\n\n _date.setDate(_date.getDate() + amount);\n return _date;\n}\n\n// Fallback for modularized imports:\nexport default addDays;\n","let defaultOptions = {};\n\nexport function getDefaultOptions() {\n return defaultOptions;\n}\n\nexport function setDefaultOptions(newOptions) {\n defaultOptions = newOptions;\n}\n","import { getDefaultOptions } from \"./_lib/defaultOptions.js\";\nimport { toDate } from \"./toDate.js\";\n\n/**\n * The {@link startOfWeek} function options.\n */\n\n/**\n * @name startOfWeek\n * @category Week Helpers\n * @summary Return the start of a week for the given date.\n *\n * @description\n * Return the start of a week for the given date.\n * The result will be in the local timezone.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param date - The original date\n * @param options - An object with options\n *\n * @returns The start of a week\n *\n * @example\n * // The start of a week for 2 September 2014 11:55:00:\n * const result = startOfWeek(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Sun Aug 31 2014 00:00:00\n *\n * @example\n * // If the week starts on Monday, the start of the week for 2 September 2014 11:55:00:\n * const result = startOfWeek(new Date(2014, 8, 2, 11, 55, 0), { weekStartsOn: 1 })\n * //=> Mon Sep 01 2014 00:00:00\n */\nexport function startOfWeek(date, options) {\n const defaultOptions = getDefaultOptions();\n const weekStartsOn =\n options?.weekStartsOn ??\n options?.locale?.options?.weekStartsOn ??\n defaultOptions.weekStartsOn ??\n defaultOptions.locale?.options?.weekStartsOn ??\n 0;\n\n const _date = toDate(date, options?.in);\n const day = _date.getDay();\n const diff = (day < weekStartsOn ? 7 : 0) + day - weekStartsOn;\n\n _date.setDate(_date.getDate() - diff);\n _date.setHours(0, 0, 0, 0);\n return _date;\n}\n\n// Fallback for modularized imports:\nexport default startOfWeek;\n","import { startOfWeek } from \"./startOfWeek.js\";\n\n/**\n * The {@link startOfISOWeek} function options.\n */\n\n/**\n * @name startOfISOWeek\n * @category ISO Week Helpers\n * @summary Return the start of an ISO week for the given date.\n *\n * @description\n * Return the start of an ISO week for the given date.\n * The result will be in the local timezone.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param date - The original date\n * @param options - An object with options\n *\n * @returns The start of an ISO week\n *\n * @example\n * // The start of an ISO week for 2 September 2014 11:55:00:\n * const result = startOfISOWeek(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Mon Sep 01 2014 00:00:00\n */\nexport function startOfISOWeek(date, options) {\n return startOfWeek(date, { ...options, weekStartsOn: 1 });\n}\n\n// Fallback for modularized imports:\nexport default startOfISOWeek;\n","import { constructFrom } from \"./constructFrom.js\";\nimport { startOfISOWeek } from \"./startOfISOWeek.js\";\nimport { toDate } from \"./toDate.js\";\n\n/**\n * The {@link getISOWeekYear} function options.\n */\n\n/**\n * @name getISOWeekYear\n * @category ISO Week-Numbering Year Helpers\n * @summary Get the ISO week-numbering year of the given date.\n *\n * @description\n * Get the ISO week-numbering year of the given date,\n * which always starts 3 days before the year's first Thursday.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * @param date - The given date\n *\n * @returns The ISO week-numbering year\n *\n * @example\n * // Which ISO-week numbering year is 2 January 2005?\n * const result = getISOWeekYear(new Date(2005, 0, 2))\n * //=> 2004\n */\nexport function getISOWeekYear(date, options) {\n const _date = toDate(date, options?.in);\n const year = _date.getFullYear();\n\n const fourthOfJanuaryOfNextYear = constructFrom(_date, 0);\n fourthOfJanuaryOfNextYear.setFullYear(year + 1, 0, 4);\n fourthOfJanuaryOfNextYear.setHours(0, 0, 0, 0);\n const startOfNextYear = startOfISOWeek(fourthOfJanuaryOfNextYear);\n\n const fourthOfJanuaryOfThisYear = constructFrom(_date, 0);\n fourthOfJanuaryOfThisYear.setFullYear(year, 0, 4);\n fourthOfJanuaryOfThisYear.setHours(0, 0, 0, 0);\n const startOfThisYear = startOfISOWeek(fourthOfJanuaryOfThisYear);\n\n if (_date.getTime() >= startOfNextYear.getTime()) {\n return year + 1;\n } else if (_date.getTime() >= startOfThisYear.getTime()) {\n return year;\n } else {\n return year - 1;\n }\n}\n\n// Fallback for modularized imports:\nexport default getISOWeekYear;\n","import { toDate } from \"../toDate.js\";\n\n/**\n * Google Chrome as of 67.0.3396.87 introduced timezones with offset that includes seconds.\n * They usually appear for dates that denote time before the timezones were introduced\n * (e.g. for 'Europe/Prague' timezone the offset is GMT+00:57:44 before 1 October 1891\n * and GMT+01:00:00 after that date)\n *\n * Date#getTimezoneOffset returns the offset in minutes and would return 57 for the example above,\n * which would lead to incorrect calculations.\n *\n * This function returns the timezone offset in milliseconds that takes seconds in account.\n */\nexport function getTimezoneOffsetInMilliseconds(date) {\n const _date = toDate(date);\n const utcDate = new Date(\n Date.UTC(\n _date.getFullYear(),\n _date.getMonth(),\n _date.getDate(),\n _date.getHours(),\n _date.getMinutes(),\n _date.getSeconds(),\n _date.getMilliseconds(),\n ),\n );\n utcDate.setUTCFullYear(_date.getFullYear());\n return +date - +utcDate;\n}\n","import { constructFrom } from \"../constructFrom.js\";\n\nexport function normalizeDates(context, ...dates) {\n const normalize = constructFrom.bind(\n null,\n context || dates.find((date) => typeof date === \"object\"),\n );\n return dates.map(normalize);\n}\n","import { toDate } from \"./toDate.js\";\n\n/**\n * The {@link startOfDay} function options.\n */\n\n/**\n * @name startOfDay\n * @category Day Helpers\n * @summary Return the start of a day for the given date.\n *\n * @description\n * Return the start of a day for the given date.\n * The result will be in the local timezone.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param date - The original date\n * @param options - The options\n *\n * @returns The start of a day\n *\n * @example\n * // The start of a day for 2 September 2014 11:55:00:\n * const result = startOfDay(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Tue Sep 02 2014 00:00:00\n */\nexport function startOfDay(date, options) {\n const _date = toDate(date, options?.in);\n _date.setHours(0, 0, 0, 0);\n return _date;\n}\n\n// Fallback for modularized imports:\nexport default startOfDay;\n","import { getTimezoneOffsetInMilliseconds } from \"./_lib/getTimezoneOffsetInMilliseconds.js\";\nimport { normalizeDates } from \"./_lib/normalizeDates.js\";\nimport { millisecondsInDay } from \"./constants.js\";\nimport { startOfDay } from \"./startOfDay.js\";\n\n/**\n * The {@link differenceInCalendarDays} function options.\n */\n\n/**\n * @name differenceInCalendarDays\n * @category Day Helpers\n * @summary Get the number of calendar days between the given dates.\n *\n * @description\n * Get the number of calendar days between the given dates. This means that the times are removed\n * from the dates and then the difference in days is calculated.\n *\n * @param laterDate - The later date\n * @param earlierDate - The earlier date\n * @param options - The options object\n *\n * @returns The number of calendar days\n *\n * @example\n * // How many calendar days are between\n * // 2 July 2011 23:00:00 and 2 July 2012 00:00:00?\n * const result = differenceInCalendarDays(\n * new Date(2012, 6, 2, 0, 0),\n * new Date(2011, 6, 2, 23, 0)\n * )\n * //=> 366\n * // How many calendar days are between\n * // 2 July 2011 23:59:00 and 3 July 2011 00:01:00?\n * const result = differenceInCalendarDays(\n * new Date(2011, 6, 3, 0, 1),\n * new Date(2011, 6, 2, 23, 59)\n * )\n * //=> 1\n */\nexport function differenceInCalendarDays(laterDate, earlierDate, options) {\n const [laterDate_, earlierDate_] = normalizeDates(\n options?.in,\n laterDate,\n earlierDate,\n );\n\n const laterStartOfDay = startOfDay(laterDate_);\n const earlierStartOfDay = startOfDay(earlierDate_);\n\n const laterTimestamp =\n +laterStartOfDay - getTimezoneOffsetInMilliseconds(laterStartOfDay);\n const earlierTimestamp =\n +earlierStartOfDay - getTimezoneOffsetInMilliseconds(earlierStartOfDay);\n\n // Round the number of days to the nearest integer because the number of\n // milliseconds in a day is not constant (e.g. it's different in the week of\n // the daylight saving time clock shift).\n return Math.round((laterTimestamp - earlierTimestamp) / millisecondsInDay);\n}\n\n// Fallback for modularized imports:\nexport default differenceInCalendarDays;\n","import { constructFrom } from \"./constructFrom.js\";\nimport { getISOWeekYear } from \"./getISOWeekYear.js\";\nimport { startOfISOWeek } from \"./startOfISOWeek.js\";\n\n/**\n * The {@link startOfISOWeekYear} function options.\n */\n\n/**\n * @name startOfISOWeekYear\n * @category ISO Week-Numbering Year Helpers\n * @summary Return the start of an ISO week-numbering year for the given date.\n *\n * @description\n * Return the start of an ISO week-numbering year,\n * which always starts 3 days before the year's first Thursday.\n * The result will be in the local timezone.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param date - The original date\n * @param options - An object with options\n *\n * @returns The start of an ISO week-numbering year\n *\n * @example\n * // The start of an ISO week-numbering year for 2 July 2005:\n * const result = startOfISOWeekYear(new Date(2005, 6, 2))\n * //=> Mon Jan 03 2005 00:00:00\n */\nexport function startOfISOWeekYear(date, options) {\n const year = getISOWeekYear(date, options);\n const fourthOfJanuary = constructFrom(options?.in || date, 0);\n fourthOfJanuary.setFullYear(year, 0, 4);\n fourthOfJanuary.setHours(0, 0, 0, 0);\n return startOfISOWeek(fourthOfJanuary);\n}\n\n// Fallback for modularized imports:\nexport default startOfISOWeekYear;\n","import { toDate } from \"./toDate.js\";\n\n/**\n * @name compareAsc\n * @category Common Helpers\n * @summary Compare the two dates and return -1, 0 or 1.\n *\n * @description\n * Compare the two dates and return 1 if the first date is after the second,\n * -1 if the first date is before the second or 0 if dates are equal.\n *\n * @param dateLeft - The first date to compare\n * @param dateRight - The second date to compare\n *\n * @returns The result of the comparison\n *\n * @example\n * // Compare 11 February 1987 and 10 July 1989:\n * const result = compareAsc(new Date(1987, 1, 11), new Date(1989, 6, 10))\n * //=> -1\n *\n * @example\n * // Sort the array of dates:\n * const result = [\n * new Date(1995, 6, 2),\n * new Date(1987, 1, 11),\n * new Date(1989, 6, 10)\n * ].sort(compareAsc)\n * //=> [\n * // Wed Feb 11 1987 00:00:00,\n * // Mon Jul 10 1989 00:00:00,\n * // Sun Jul 02 1995 00:00:00\n * // ]\n */\nexport function compareAsc(dateLeft, dateRight) {\n const diff = +toDate(dateLeft) - +toDate(dateRight);\n\n if (diff < 0) return -1;\n else if (diff > 0) return 1;\n\n // Return 0 if diff is 0; return NaN if diff is NaN\n return diff;\n}\n\n// Fallback for modularized imports:\nexport default compareAsc;\n","/**\n * @name isDate\n * @category Common Helpers\n * @summary Is the given value a date?\n *\n * @description\n * Returns true if the given value is an instance of Date. The function works for dates transferred across iframes.\n *\n * @param value - The value to check\n *\n * @returns True if the given value is a date\n *\n * @example\n * // For a valid date:\n * const result = isDate(new Date())\n * //=> true\n *\n * @example\n * // For an invalid date:\n * const result = isDate(new Date(NaN))\n * //=> true\n *\n * @example\n * // For some value:\n * const result = isDate('2014-02-31')\n * //=> false\n *\n * @example\n * // For an object:\n * const result = isDate({})\n * //=> false\n */\nexport function isDate(value) {\n return (\n value instanceof Date ||\n (typeof value === \"object\" &&\n Object.prototype.toString.call(value) === \"[object Date]\")\n );\n}\n\n// Fallback for modularized imports:\nexport default isDate;\n","import { isDate } from \"./isDate.js\";\nimport { toDate } from \"./toDate.js\";\n\n/**\n * @name isValid\n * @category Common Helpers\n * @summary Is the given date valid?\n *\n * @description\n * Returns false if argument is Invalid Date and true otherwise.\n * Argument is converted to Date using `toDate`. See [toDate](https://date-fns.org/docs/toDate)\n * Invalid Date is a Date, whose time value is NaN.\n *\n * Time value of Date: http://es5.github.io/#x15.9.1.1\n *\n * @param date - The date to check\n *\n * @returns The date is valid\n *\n * @example\n * // For the valid date:\n * const result = isValid(new Date(2014, 1, 31))\n * //=> true\n *\n * @example\n * // For the value, convertible into a date:\n * const result = isValid(1393804800000)\n * //=> true\n *\n * @example\n * // For the invalid date:\n * const result = isValid(new Date(''))\n * //=> false\n */\nexport function isValid(date) {\n return !((!isDate(date) && typeof date !== \"number\") || isNaN(+toDate(date)));\n}\n\n// Fallback for modularized imports:\nexport default isValid;\n","import { normalizeDates } from \"./_lib/normalizeDates.js\";\n\n/**\n * The {@link differenceInCalendarMonths} function options.\n */\n\n/**\n * @name differenceInCalendarMonths\n * @category Month Helpers\n * @summary Get the number of calendar months between the given dates.\n *\n * @description\n * Get the number of calendar months between the given dates.\n *\n * @param laterDate - The later date\n * @param earlierDate - The earlier date\n * @param options - An object with options\n *\n * @returns The number of calendar months\n *\n * @example\n * // How many calendar months are between 31 January 2014 and 1 September 2014?\n * const result = differenceInCalendarMonths(\n * new Date(2014, 8, 1),\n * new Date(2014, 0, 31)\n * )\n * //=> 8\n */\nexport function differenceInCalendarMonths(laterDate, earlierDate, options) {\n const [laterDate_, earlierDate_] = normalizeDates(\n options?.in,\n laterDate,\n earlierDate,\n );\n\n const yearsDiff = laterDate_.getFullYear() - earlierDate_.getFullYear();\n const monthsDiff = laterDate_.getMonth() - earlierDate_.getMonth();\n\n return yearsDiff * 12 + monthsDiff;\n}\n\n// Fallback for modularized imports:\nexport default differenceInCalendarMonths;\n","export function getRoundingMethod(method) {\n return (number) => {\n const round = method ? Math[method] : Math.trunc;\n const result = round(number);\n // Prevent negative zero\n return result === 0 ? 0 : result;\n };\n}\n","import { toDate } from \"./toDate.js\";\n\n/**\n * @name differenceInMilliseconds\n * @category Millisecond Helpers\n * @summary Get the number of milliseconds between the given dates.\n *\n * @description\n * Get the number of milliseconds between the given dates.\n *\n * @param laterDate - The later date\n * @param earlierDate - The earlier date\n *\n * @returns The number of milliseconds\n *\n * @example\n * // How many milliseconds are between\n * // 2 July 2014 12:30:20.600 and 2 July 2014 12:30:21.700?\n * const result = differenceInMilliseconds(\n * new Date(2014, 6, 2, 12, 30, 21, 700),\n * new Date(2014, 6, 2, 12, 30, 20, 600)\n * )\n * //=> 1100\n */\nexport function differenceInMilliseconds(laterDate, earlierDate) {\n return +toDate(laterDate) - +toDate(earlierDate);\n}\n\n// Fallback for modularized imports:\nexport default differenceInMilliseconds;\n","import { toDate } from \"./toDate.js\";\n\n/**\n * The {@link endOfDay} function options.\n */\n\n/**\n * @name endOfDay\n * @category Day Helpers\n * @summary Return the end of a day for the given date.\n *\n * @description\n * Return the end of a day for the given date.\n * The result will be in the local timezone.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param date - The original date\n * @param options - An object with options\n *\n * @returns The end of a day\n *\n * @example\n * // The end of a day for 2 September 2014 11:55:00:\n * const result = endOfDay(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Tue Sep 02 2014 23:59:59.999\n */\nexport function endOfDay(date, options) {\n const _date = toDate(date, options?.in);\n _date.setHours(23, 59, 59, 999);\n return _date;\n}\n\n// Fallback for modularized imports:\nexport default endOfDay;\n","import { toDate } from \"./toDate.js\";\n\n/**\n * The {@link endOfMonth} function options.\n */\n\n/**\n * @name endOfMonth\n * @category Month Helpers\n * @summary Return the end of a month for the given date.\n *\n * @description\n * Return the end of a month for the given date.\n * The result will be in the local timezone.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param date - The original date\n * @param options - An object with options\n *\n * @returns The end of a month\n *\n * @example\n * // The end of a month for 2 September 2014 11:55:00:\n * const result = endOfMonth(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Tue Sep 30 2014 23:59:59.999\n */\nexport function endOfMonth(date, options) {\n const _date = toDate(date, options?.in);\n const month = _date.getMonth();\n _date.setFullYear(_date.getFullYear(), month + 1, 0);\n _date.setHours(23, 59, 59, 999);\n return _date;\n}\n\n// Fallback for modularized imports:\nexport default endOfMonth;\n","import { endOfDay } from \"./endOfDay.js\";\nimport { endOfMonth } from \"./endOfMonth.js\";\nimport { toDate } from \"./toDate.js\";\n\n/**\n * @name isLastDayOfMonth\n * @category Month Helpers\n * @summary Is the given date the last day of a month?\n *\n * @description\n * Is the given date the last day of a month?\n *\n * @param date - The date to check\n * @param options - An object with options\n *\n * @returns The date is the last day of a month\n *\n * @example\n * // Is 28 February 2014 the last day of a month?\n * const result = isLastDayOfMonth(new Date(2014, 1, 28))\n * //=> true\n */\nexport function isLastDayOfMonth(date, options) {\n const _date = toDate(date, options?.in);\n return +endOfDay(_date, options) === +endOfMonth(_date, options);\n}\n\n// Fallback for modularized imports:\nexport default isLastDayOfMonth;\n","import { normalizeDates } from \"./_lib/normalizeDates.js\";\nimport { compareAsc } from \"./compareAsc.js\";\nimport { differenceInCalendarMonths } from \"./differenceInCalendarMonths.js\";\nimport { isLastDayOfMonth } from \"./isLastDayOfMonth.js\";\n\n/**\n * The {@link differenceInMonths} function options.\n */\n\n/**\n * @name differenceInMonths\n * @category Month Helpers\n * @summary Get the number of full months between the given dates.\n *\n * @param laterDate - The later date\n * @param earlierDate - The earlier date\n * @param options - An object with options\n *\n * @returns The number of full months\n *\n * @example\n * // How many full months are between 31 January 2014 and 1 September 2014?\n * const result = differenceInMonths(new Date(2014, 8, 1), new Date(2014, 0, 31))\n * //=> 7\n */\nexport function differenceInMonths(laterDate, earlierDate, options) {\n const [laterDate_, workingLaterDate, earlierDate_] = normalizeDates(\n options?.in,\n laterDate,\n laterDate,\n earlierDate,\n );\n\n const sign = compareAsc(workingLaterDate, earlierDate_);\n const difference = Math.abs(\n differenceInCalendarMonths(workingLaterDate, earlierDate_),\n );\n\n if (difference < 1) return 0;\n\n if (workingLaterDate.getMonth() === 1 && workingLaterDate.getDate() > 27)\n workingLaterDate.setDate(30);\n\n workingLaterDate.setMonth(workingLaterDate.getMonth() - sign * difference);\n\n let isLastMonthNotFull = compareAsc(workingLaterDate, earlierDate_) === -sign;\n\n if (\n isLastDayOfMonth(laterDate_) &&\n difference === 1 &&\n compareAsc(laterDate_, earlierDate_) === 1\n ) {\n isLastMonthNotFull = false;\n }\n\n const result = sign * (difference - +isLastMonthNotFull);\n return result === 0 ? 0 : result;\n}\n\n// Fallback for modularized imports:\nexport default differenceInMonths;\n","import { getRoundingMethod } from \"./_lib/getRoundingMethod.js\";\nimport { differenceInMilliseconds } from \"./differenceInMilliseconds.js\";\n\n/**\n * The {@link differenceInSeconds} function options.\n */\n\n/**\n * @name differenceInSeconds\n * @category Second Helpers\n * @summary Get the number of seconds between the given dates.\n *\n * @description\n * Get the number of seconds between the given dates.\n *\n * @param laterDate - The later date\n * @param earlierDate - The earlier date\n * @param options - An object with options.\n *\n * @returns The number of seconds\n *\n * @example\n * // How many seconds are between\n * // 2 July 2014 12:30:07.999 and 2 July 2014 12:30:20.000?\n * const result = differenceInSeconds(\n * new Date(2014, 6, 2, 12, 30, 20, 0),\n * new Date(2014, 6, 2, 12, 30, 7, 999)\n * )\n * //=> 12\n */\nexport function differenceInSeconds(laterDate, earlierDate, options) {\n const diff = differenceInMilliseconds(laterDate, earlierDate) / 1000;\n return getRoundingMethod(options?.roundingMethod)(diff);\n}\n\n// Fallback for modularized imports:\nexport default differenceInSeconds;\n","import { toDate } from \"./toDate.js\";\n\n/**\n * The {@link startOfYear} function options.\n */\n\n/**\n * @name startOfYear\n * @category Year Helpers\n * @summary Return the start of a year for the given date.\n *\n * @description\n * Return the start of a year for the given date.\n * The result will be in the local timezone.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param date - The original date\n * @param options - The options\n *\n * @returns The start of a year\n *\n * @example\n * // The start of a year for 2 September 2014 11:55:00:\n * const result = startOfYear(new Date(2014, 8, 2, 11, 55, 00))\n * //=> Wed Jan 01 2014 00:00:00\n */\nexport function startOfYear(date, options) {\n const date_ = toDate(date, options?.in);\n date_.setFullYear(date_.getFullYear(), 0, 1);\n date_.setHours(0, 0, 0, 0);\n return date_;\n}\n\n// Fallback for modularized imports:\nexport default startOfYear;\n","const formatDistanceLocale = {\n lessThanXSeconds: {\n one: \"less than a second\",\n other: \"less than {{count}} seconds\",\n },\n\n xSeconds: {\n one: \"1 second\",\n other: \"{{count}} seconds\",\n },\n\n halfAMinute: \"half a minute\",\n\n lessThanXMinutes: {\n one: \"less than a minute\",\n other: \"less than {{count}} minutes\",\n },\n\n xMinutes: {\n one: \"1 minute\",\n other: \"{{count}} minutes\",\n },\n\n aboutXHours: {\n one: \"about 1 hour\",\n other: \"about {{count}} hours\",\n },\n\n xHours: {\n one: \"1 hour\",\n other: \"{{count}} hours\",\n },\n\n xDays: {\n one: \"1 day\",\n other: \"{{count}} days\",\n },\n\n aboutXWeeks: {\n one: \"about 1 week\",\n other: \"about {{count}} weeks\",\n },\n\n xWeeks: {\n one: \"1 week\",\n other: \"{{count}} weeks\",\n },\n\n aboutXMonths: {\n one: \"about 1 month\",\n other: \"about {{count}} months\",\n },\n\n xMonths: {\n one: \"1 month\",\n other: \"{{count}} months\",\n },\n\n aboutXYears: {\n one: \"about 1 year\",\n other: \"about {{count}} years\",\n },\n\n xYears: {\n one: \"1 year\",\n other: \"{{count}} years\",\n },\n\n overXYears: {\n one: \"over 1 year\",\n other: \"over {{count}} years\",\n },\n\n almostXYears: {\n one: \"almost 1 year\",\n other: \"almost {{count}} years\",\n },\n};\n\nexport const formatDistance = (token, count, options) => {\n let result;\n\n const tokenValue = formatDistanceLocale[token];\n if (typeof tokenValue === \"string\") {\n result = tokenValue;\n } else if (count === 1) {\n result = tokenValue.one;\n } else {\n result = tokenValue.other.replace(\"{{count}}\", count.toString());\n }\n\n if (options?.addSuffix) {\n if (options.comparison && options.comparison > 0) {\n return \"in \" + result;\n } else {\n return result + \" ago\";\n }\n }\n\n return result;\n};\n","export function buildFormatLongFn(args) {\n return (options = {}) => {\n // TODO: Remove String()\n const width = options.width ? String(options.width) : args.defaultWidth;\n const format = args.formats[width] || args.formats[args.defaultWidth];\n return format;\n };\n}\n","import { buildFormatLongFn } from \"../../_lib/buildFormatLongFn.js\";\n\nconst dateFormats = {\n full: \"EEEE, MMMM do, y\",\n long: \"MMMM do, y\",\n medium: \"MMM d, y\",\n short: \"MM/dd/yyyy\",\n};\n\nconst timeFormats = {\n full: \"h:mm:ss a zzzz\",\n long: \"h:mm:ss a z\",\n medium: \"h:mm:ss a\",\n short: \"h:mm a\",\n};\n\nconst dateTimeFormats = {\n full: \"{{date}} 'at' {{time}}\",\n long: \"{{date}} 'at' {{time}}\",\n medium: \"{{date}}, {{time}}\",\n short: \"{{date}}, {{time}}\",\n};\n\nexport const formatLong = {\n date: buildFormatLongFn({\n formats: dateFormats,\n defaultWidth: \"full\",\n }),\n\n time: buildFormatLongFn({\n formats: timeFormats,\n defaultWidth: \"full\",\n }),\n\n dateTime: buildFormatLongFn({\n formats: dateTimeFormats,\n defaultWidth: \"full\",\n }),\n};\n","const formatRelativeLocale = {\n lastWeek: \"'last' eeee 'at' p\",\n yesterday: \"'yesterday at' p\",\n today: \"'today at' p\",\n tomorrow: \"'tomorrow at' p\",\n nextWeek: \"eeee 'at' p\",\n other: \"P\",\n};\n\nexport const formatRelative = (token, _date, _baseDate, _options) =>\n formatRelativeLocale[token];\n","/**\n * The localize function argument callback which allows to convert raw value to\n * the actual type.\n *\n * @param value - The value to convert\n *\n * @returns The converted value\n */\n\n/**\n * The map of localized values for each width.\n */\n\n/**\n * The index type of the locale unit value. It types conversion of units of\n * values that don't start at 0 (i.e. quarters).\n */\n\n/**\n * Converts the unit value to the tuple of values.\n */\n\n/**\n * The tuple of localized era values. The first element represents BC,\n * the second element represents AD.\n */\n\n/**\n * The tuple of localized quarter values. The first element represents Q1.\n */\n\n/**\n * The tuple of localized day values. The first element represents Sunday.\n */\n\n/**\n * The tuple of localized month values. The first element represents January.\n */\n\nexport function buildLocalizeFn(args) {\n return (value, options) => {\n const context = options?.context ? String(options.context) : \"standalone\";\n\n let valuesArray;\n if (context === \"formatting\" && args.formattingValues) {\n const defaultWidth = args.defaultFormattingWidth || args.defaultWidth;\n const width = options?.width ? String(options.width) : defaultWidth;\n\n valuesArray =\n args.formattingValues[width] || args.formattingValues[defaultWidth];\n } else {\n const defaultWidth = args.defaultWidth;\n const width = options?.width ? String(options.width) : args.defaultWidth;\n\n valuesArray = args.values[width] || args.values[defaultWidth];\n }\n const index = args.argumentCallback ? args.argumentCallback(value) : value;\n\n // @ts-expect-error - For some reason TypeScript just don't want to match it, no matter how hard we try. I challenge you to try to remove it!\n return valuesArray[index];\n };\n}\n","import { buildLocalizeFn } from \"../../_lib/buildLocalizeFn.js\";\n\nconst eraValues = {\n narrow: [\"B\", \"A\"],\n abbreviated: [\"BC\", \"AD\"],\n wide: [\"Before Christ\", \"Anno Domini\"],\n};\n\nconst quarterValues = {\n narrow: [\"1\", \"2\", \"3\", \"4\"],\n abbreviated: [\"Q1\", \"Q2\", \"Q3\", \"Q4\"],\n wide: [\"1st quarter\", \"2nd quarter\", \"3rd quarter\", \"4th quarter\"],\n};\n\n// Note: in English, the names of days of the week and months are capitalized.\n// If you are making a new locale based on this one, check if the same is true for the language you're working on.\n// Generally, formatted dates should look like they are in the middle of a sentence,\n// e.g. in Spanish language the weekdays and months should be in the lowercase.\nconst monthValues = {\n narrow: [\"J\", \"F\", \"M\", \"A\", \"M\", \"J\", \"J\", \"A\", \"S\", \"O\", \"N\", \"D\"],\n abbreviated: [\n \"Jan\",\n \"Feb\",\n \"Mar\",\n \"Apr\",\n \"May\",\n \"Jun\",\n \"Jul\",\n \"Aug\",\n \"Sep\",\n \"Oct\",\n \"Nov\",\n \"Dec\",\n ],\n\n wide: [\n \"January\",\n \"February\",\n \"March\",\n \"April\",\n \"May\",\n \"June\",\n \"July\",\n \"August\",\n \"September\",\n \"October\",\n \"November\",\n \"December\",\n ],\n};\n\nconst dayValues = {\n narrow: [\"S\", \"M\", \"T\", \"W\", \"T\", \"F\", \"S\"],\n short: [\"Su\", \"Mo\", \"Tu\", \"We\", \"Th\", \"Fr\", \"Sa\"],\n abbreviated: [\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"],\n wide: [\n \"Sunday\",\n \"Monday\",\n \"Tuesday\",\n \"Wednesday\",\n \"Thursday\",\n \"Friday\",\n \"Saturday\",\n ],\n};\n\nconst dayPeriodValues = {\n narrow: {\n am: \"a\",\n pm: \"p\",\n midnight: \"mi\",\n noon: \"n\",\n morning: \"morning\",\n afternoon: \"afternoon\",\n evening: \"evening\",\n night: \"night\",\n },\n abbreviated: {\n am: \"AM\",\n pm: \"PM\",\n midnight: \"midnight\",\n noon: \"noon\",\n morning: \"morning\",\n afternoon: \"afternoon\",\n evening: \"evening\",\n night: \"night\",\n },\n wide: {\n am: \"a.m.\",\n pm: \"p.m.\",\n midnight: \"midnight\",\n noon: \"noon\",\n morning: \"morning\",\n afternoon: \"afternoon\",\n evening: \"evening\",\n night: \"night\",\n },\n};\n\nconst formattingDayPeriodValues = {\n narrow: {\n am: \"a\",\n pm: \"p\",\n midnight: \"mi\",\n noon: \"n\",\n morning: \"in the morning\",\n afternoon: \"in the afternoon\",\n evening: \"in the evening\",\n night: \"at night\",\n },\n abbreviated: {\n am: \"AM\",\n pm: \"PM\",\n midnight: \"midnight\",\n noon: \"noon\",\n morning: \"in the morning\",\n afternoon: \"in the afternoon\",\n evening: \"in the evening\",\n night: \"at night\",\n },\n wide: {\n am: \"a.m.\",\n pm: \"p.m.\",\n midnight: \"midnight\",\n noon: \"noon\",\n morning: \"in the morning\",\n afternoon: \"in the afternoon\",\n evening: \"in the evening\",\n night: \"at night\",\n },\n};\n\nconst ordinalNumber = (dirtyNumber, _options) => {\n const number = Number(dirtyNumber);\n\n // If ordinal numbers depend on context, for example,\n // if they are different for different grammatical genders,\n // use `options.unit`.\n //\n // `unit` can be 'year', 'quarter', 'month', 'week', 'date', 'dayOfYear',\n // 'day', 'hour', 'minute', 'second'.\n\n const rem100 = number % 100;\n if (rem100 > 20 || rem100 < 10) {\n switch (rem100 % 10) {\n case 1:\n return number + \"st\";\n case 2:\n return number + \"nd\";\n case 3:\n return number + \"rd\";\n }\n }\n return number + \"th\";\n};\n\nexport const localize = {\n ordinalNumber,\n\n era: buildLocalizeFn({\n values: eraValues,\n defaultWidth: \"wide\",\n }),\n\n quarter: buildLocalizeFn({\n values: quarterValues,\n defaultWidth: \"wide\",\n argumentCallback: (quarter) => quarter - 1,\n }),\n\n month: buildLocalizeFn({\n values: monthValues,\n defaultWidth: \"wide\",\n }),\n\n day: buildLocalizeFn({\n values: dayValues,\n defaultWidth: \"wide\",\n }),\n\n dayPeriod: buildLocalizeFn({\n values: dayPeriodValues,\n defaultWidth: \"wide\",\n formattingValues: formattingDayPeriodValues,\n defaultFormattingWidth: \"wide\",\n }),\n};\n","export function buildMatchFn(args) {\n return (string, options = {}) => {\n const width = options.width;\n\n const matchPattern =\n (width && args.matchPatterns[width]) ||\n args.matchPatterns[args.defaultMatchWidth];\n const matchResult = string.match(matchPattern);\n\n if (!matchResult) {\n return null;\n }\n const matchedString = matchResult[0];\n\n const parsePatterns =\n (width && args.parsePatterns[width]) ||\n args.parsePatterns[args.defaultParseWidth];\n\n const key = Array.isArray(parsePatterns)\n ? findIndex(parsePatterns, (pattern) => pattern.test(matchedString))\n : // [TODO] -- I challenge you to fix the type\n findKey(parsePatterns, (pattern) => pattern.test(matchedString));\n\n let value;\n\n value = args.valueCallback ? args.valueCallback(key) : key;\n value = options.valueCallback\n ? // [TODO] -- I challenge you to fix the type\n options.valueCallback(value)\n : value;\n\n const rest = string.slice(matchedString.length);\n\n return { value, rest };\n };\n}\n\nfunction findKey(object, predicate) {\n for (const key in object) {\n if (\n Object.prototype.hasOwnProperty.call(object, key) &&\n predicate(object[key])\n ) {\n return key;\n }\n }\n return undefined;\n}\n\nfunction findIndex(array, predicate) {\n for (let key = 0; key < array.length; key++) {\n if (predicate(array[key])) {\n return key;\n }\n }\n return undefined;\n}\n","export function buildMatchPatternFn(args) {\n return (string, options = {}) => {\n const matchResult = string.match(args.matchPattern);\n if (!matchResult) return null;\n const matchedString = matchResult[0];\n\n const parseResult = string.match(args.parsePattern);\n if (!parseResult) return null;\n let value = args.valueCallback\n ? args.valueCallback(parseResult[0])\n : parseResult[0];\n\n // [TODO] I challenge you to fix the type\n value = options.valueCallback ? options.valueCallback(value) : value;\n\n const rest = string.slice(matchedString.length);\n\n return { value, rest };\n };\n}\n","import { buildMatchFn } from \"../../_lib/buildMatchFn.js\";\nimport { buildMatchPatternFn } from \"../../_lib/buildMatchPatternFn.js\";\n\nconst matchOrdinalNumberPattern = /^(\\d+)(th|st|nd|rd)?/i;\nconst parseOrdinalNumberPattern = /\\d+/i;\n\nconst matchEraPatterns = {\n narrow: /^(b|a)/i,\n abbreviated: /^(b\\.?\\s?c\\.?|b\\.?\\s?c\\.?\\s?e\\.?|a\\.?\\s?d\\.?|c\\.?\\s?e\\.?)/i,\n wide: /^(before christ|before common era|anno domini|common era)/i,\n};\nconst parseEraPatterns = {\n any: [/^b/i, /^(a|c)/i],\n};\n\nconst matchQuarterPatterns = {\n narrow: /^[1234]/i,\n abbreviated: /^q[1234]/i,\n wide: /^[1234](th|st|nd|rd)? quarter/i,\n};\nconst parseQuarterPatterns = {\n any: [/1/i, /2/i, /3/i, /4/i],\n};\n\nconst matchMonthPatterns = {\n narrow: /^[jfmasond]/i,\n abbreviated: /^(jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec)/i,\n wide: /^(january|february|march|april|may|june|july|august|september|october|november|december)/i,\n};\nconst parseMonthPatterns = {\n narrow: [\n /^j/i,\n /^f/i,\n /^m/i,\n /^a/i,\n /^m/i,\n /^j/i,\n /^j/i,\n /^a/i,\n /^s/i,\n /^o/i,\n /^n/i,\n /^d/i,\n ],\n\n any: [\n /^ja/i,\n /^f/i,\n /^mar/i,\n /^ap/i,\n /^may/i,\n /^jun/i,\n /^jul/i,\n /^au/i,\n /^s/i,\n /^o/i,\n /^n/i,\n /^d/i,\n ],\n};\n\nconst matchDayPatterns = {\n narrow: /^[smtwf]/i,\n short: /^(su|mo|tu|we|th|fr|sa)/i,\n abbreviated: /^(sun|mon|tue|wed|thu|fri|sat)/i,\n wide: /^(sunday|monday|tuesday|wednesday|thursday|friday|saturday)/i,\n};\nconst parseDayPatterns = {\n narrow: [/^s/i, /^m/i, /^t/i, /^w/i, /^t/i, /^f/i, /^s/i],\n any: [/^su/i, /^m/i, /^tu/i, /^w/i, /^th/i, /^f/i, /^sa/i],\n};\n\nconst matchDayPeriodPatterns = {\n narrow: /^(a|p|mi|n|(in the|at) (morning|afternoon|evening|night))/i,\n any: /^([ap]\\.?\\s?m\\.?|midnight|noon|(in the|at) (morning|afternoon|evening|night))/i,\n};\nconst parseDayPeriodPatterns = {\n any: {\n am: /^a/i,\n pm: /^p/i,\n midnight: /^mi/i,\n noon: /^no/i,\n morning: /morning/i,\n afternoon: /afternoon/i,\n evening: /evening/i,\n night: /night/i,\n },\n};\n\nexport const match = {\n ordinalNumber: buildMatchPatternFn({\n matchPattern: matchOrdinalNumberPattern,\n parsePattern: parseOrdinalNumberPattern,\n valueCallback: (value) => parseInt(value, 10),\n }),\n\n era: buildMatchFn({\n matchPatterns: matchEraPatterns,\n defaultMatchWidth: \"wide\",\n parsePatterns: parseEraPatterns,\n defaultParseWidth: \"any\",\n }),\n\n quarter: buildMatchFn({\n matchPatterns: matchQuarterPatterns,\n defaultMatchWidth: \"wide\",\n parsePatterns: parseQuarterPatterns,\n defaultParseWidth: \"any\",\n valueCallback: (index) => index + 1,\n }),\n\n month: buildMatchFn({\n matchPatterns: matchMonthPatterns,\n defaultMatchWidth: \"wide\",\n parsePatterns: parseMonthPatterns,\n defaultParseWidth: \"any\",\n }),\n\n day: buildMatchFn({\n matchPatterns: matchDayPatterns,\n defaultMatchWidth: \"wide\",\n parsePatterns: parseDayPatterns,\n defaultParseWidth: \"any\",\n }),\n\n dayPeriod: buildMatchFn({\n matchPatterns: matchDayPeriodPatterns,\n defaultMatchWidth: \"any\",\n parsePatterns: parseDayPeriodPatterns,\n defaultParseWidth: \"any\",\n }),\n};\n","import { formatDistance } from \"./en-US/_lib/formatDistance.js\";\nimport { formatLong } from \"./en-US/_lib/formatLong.js\";\nimport { formatRelative } from \"./en-US/_lib/formatRelative.js\";\nimport { localize } from \"./en-US/_lib/localize.js\";\nimport { match } from \"./en-US/_lib/match.js\";\n\n/**\n * @category Locales\n * @summary English locale (United States).\n * @language English\n * @iso-639-2 eng\n * @author Sasha Koss [@kossnocorp](https://github.com/kossnocorp)\n * @author Lesha Koss [@leshakoss](https://github.com/leshakoss)\n */\nexport const enUS = {\n code: \"en-US\",\n formatDistance: formatDistance,\n formatLong: formatLong,\n formatRelative: formatRelative,\n localize: localize,\n match: match,\n options: {\n weekStartsOn: 0 /* Sunday */,\n firstWeekContainsDate: 1,\n },\n};\n\n// Fallback for modularized imports:\nexport default enUS;\n","import { differenceInCalendarDays } from \"./differenceInCalendarDays.js\";\nimport { startOfYear } from \"./startOfYear.js\";\nimport { toDate } from \"./toDate.js\";\n\n/**\n * The {@link getDayOfYear} function options.\n */\n\n/**\n * @name getDayOfYear\n * @category Day Helpers\n * @summary Get the day of the year of the given date.\n *\n * @description\n * Get the day of the year of the given date.\n *\n * @param date - The given date\n * @param options - The options\n *\n * @returns The day of year\n *\n * @example\n * // Which day of the year is 2 July 2014?\n * const result = getDayOfYear(new Date(2014, 6, 2))\n * //=> 183\n */\nexport function getDayOfYear(date, options) {\n const _date = toDate(date, options?.in);\n const diff = differenceInCalendarDays(_date, startOfYear(_date));\n const dayOfYear = diff + 1;\n return dayOfYear;\n}\n\n// Fallback for modularized imports:\nexport default getDayOfYear;\n","import { millisecondsInWeek } from \"./constants.js\";\nimport { startOfISOWeek } from \"./startOfISOWeek.js\";\nimport { startOfISOWeekYear } from \"./startOfISOWeekYear.js\";\nimport { toDate } from \"./toDate.js\";\n\n/**\n * The {@link getISOWeek} function options.\n */\n\n/**\n * @name getISOWeek\n * @category ISO Week Helpers\n * @summary Get the ISO week of the given date.\n *\n * @description\n * Get the ISO week of the given date.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * @param date - The given date\n * @param options - The options\n *\n * @returns The ISO week\n *\n * @example\n * // Which week of the ISO-week numbering year is 2 January 2005?\n * const result = getISOWeek(new Date(2005, 0, 2))\n * //=> 53\n */\nexport function getISOWeek(date, options) {\n const _date = toDate(date, options?.in);\n const diff = +startOfISOWeek(_date) - +startOfISOWeekYear(_date);\n\n // Round the number of weeks to the nearest integer because the number of\n // milliseconds in a week is not constant (e.g. it's different in the week of\n // the daylight saving time clock shift).\n return Math.round(diff / millisecondsInWeek) + 1;\n}\n\n// Fallback for modularized imports:\nexport default getISOWeek;\n","import { getDefaultOptions } from \"./_lib/defaultOptions.js\";\nimport { constructFrom } from \"./constructFrom.js\";\nimport { startOfWeek } from \"./startOfWeek.js\";\nimport { toDate } from \"./toDate.js\";\n\n/**\n * The {@link getWeekYear} function options.\n */\n\n/**\n * @name getWeekYear\n * @category Week-Numbering Year Helpers\n * @summary Get the local week-numbering year of the given date.\n *\n * @description\n * Get the local week-numbering year of the given date.\n * The exact calculation depends on the values of\n * `options.weekStartsOn` (which is the index of the first day of the week)\n * and `options.firstWeekContainsDate` (which is the day of January, which is always in\n * the first week of the week-numbering year)\n *\n * Week numbering: https://en.wikipedia.org/wiki/Week#The_ISO_week_date_system\n *\n * @param date - The given date\n * @param options - An object with options.\n *\n * @returns The local week-numbering year\n *\n * @example\n * // Which week numbering year is 26 December 2004 with the default settings?\n * const result = getWeekYear(new Date(2004, 11, 26))\n * //=> 2005\n *\n * @example\n * // Which week numbering year is 26 December 2004 if week starts on Saturday?\n * const result = getWeekYear(new Date(2004, 11, 26), { weekStartsOn: 6 })\n * //=> 2004\n *\n * @example\n * // Which week numbering year is 26 December 2004 if the first week contains 4 January?\n * const result = getWeekYear(new Date(2004, 11, 26), { firstWeekContainsDate: 4 })\n * //=> 2004\n */\nexport function getWeekYear(date, options) {\n const _date = toDate(date, options?.in);\n const year = _date.getFullYear();\n\n const defaultOptions = getDefaultOptions();\n const firstWeekContainsDate =\n options?.firstWeekContainsDate ??\n options?.locale?.options?.firstWeekContainsDate ??\n defaultOptions.firstWeekContainsDate ??\n defaultOptions.locale?.options?.firstWeekContainsDate ??\n 1;\n\n const firstWeekOfNextYear = constructFrom(options?.in || date, 0);\n firstWeekOfNextYear.setFullYear(year + 1, 0, firstWeekContainsDate);\n firstWeekOfNextYear.setHours(0, 0, 0, 0);\n const startOfNextYear = startOfWeek(firstWeekOfNextYear, options);\n\n const firstWeekOfThisYear = constructFrom(options?.in || date, 0);\n firstWeekOfThisYear.setFullYear(year, 0, firstWeekContainsDate);\n firstWeekOfThisYear.setHours(0, 0, 0, 0);\n const startOfThisYear = startOfWeek(firstWeekOfThisYear, options);\n\n if (+_date >= +startOfNextYear) {\n return year + 1;\n } else if (+_date >= +startOfThisYear) {\n return year;\n } else {\n return year - 1;\n }\n}\n\n// Fallback for modularized imports:\nexport default getWeekYear;\n","import { getDefaultOptions } from \"./_lib/defaultOptions.js\";\nimport { constructFrom } from \"./constructFrom.js\";\nimport { getWeekYear } from \"./getWeekYear.js\";\nimport { startOfWeek } from \"./startOfWeek.js\";\n\n/**\n * The {@link startOfWeekYear} function options.\n */\n\n/**\n * @name startOfWeekYear\n * @category Week-Numbering Year Helpers\n * @summary Return the start of a local week-numbering year for the given date.\n *\n * @description\n * Return the start of a local week-numbering year.\n * The exact calculation depends on the values of\n * `options.weekStartsOn` (which is the index of the first day of the week)\n * and `options.firstWeekContainsDate` (which is the day of January, which is always in\n * the first week of the week-numbering year)\n *\n * Week numbering: https://en.wikipedia.org/wiki/Week#The_ISO_week_date_system\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type.\n *\n * @param date - The original date\n * @param options - An object with options\n *\n * @returns The start of a week-numbering year\n *\n * @example\n * // The start of an a week-numbering year for 2 July 2005 with default settings:\n * const result = startOfWeekYear(new Date(2005, 6, 2))\n * //=> Sun Dec 26 2004 00:00:00\n *\n * @example\n * // The start of a week-numbering year for 2 July 2005\n * // if Monday is the first day of week\n * // and 4 January is always in the first week of the year:\n * const result = startOfWeekYear(new Date(2005, 6, 2), {\n * weekStartsOn: 1,\n * firstWeekContainsDate: 4\n * })\n * //=> Mon Jan 03 2005 00:00:00\n */\nexport function startOfWeekYear(date, options) {\n const defaultOptions = getDefaultOptions();\n const firstWeekContainsDate =\n options?.firstWeekContainsDate ??\n options?.locale?.options?.firstWeekContainsDate ??\n defaultOptions.firstWeekContainsDate ??\n defaultOptions.locale?.options?.firstWeekContainsDate ??\n 1;\n\n const year = getWeekYear(date, options);\n const firstWeek = constructFrom(options?.in || date, 0);\n firstWeek.setFullYear(year, 0, firstWeekContainsDate);\n firstWeek.setHours(0, 0, 0, 0);\n const _date = startOfWeek(firstWeek, options);\n return _date;\n}\n\n// Fallback for modularized imports:\nexport default startOfWeekYear;\n","import { millisecondsInWeek } from \"./constants.js\";\nimport { startOfWeek } from \"./startOfWeek.js\";\nimport { startOfWeekYear } from \"./startOfWeekYear.js\";\nimport { toDate } from \"./toDate.js\";\n\n/**\n * The {@link getWeek} function options.\n */\n\n/**\n * @name getWeek\n * @category Week Helpers\n * @summary Get the local week index of the given date.\n *\n * @description\n * Get the local week index of the given date.\n * The exact calculation depends on the values of\n * `options.weekStartsOn` (which is the index of the first day of the week)\n * and `options.firstWeekContainsDate` (which is the day of January, which is always in\n * the first week of the week-numbering year)\n *\n * Week numbering: https://en.wikipedia.org/wiki/Week#The_ISO_week_date_system\n *\n * @param date - The given date\n * @param options - An object with options\n *\n * @returns The week\n *\n * @example\n * // Which week of the local week numbering year is 2 January 2005 with default options?\n * const result = getWeek(new Date(2005, 0, 2))\n * //=> 2\n *\n * @example\n * // Which week of the local week numbering year is 2 January 2005,\n * // if Monday is the first day of the week,\n * // and the first week of the year always contains 4 January?\n * const result = getWeek(new Date(2005, 0, 2), {\n * weekStartsOn: 1,\n * firstWeekContainsDate: 4\n * })\n * //=> 53\n */\nexport function getWeek(date, options) {\n const _date = toDate(date, options?.in);\n const diff = +startOfWeek(_date, options) - +startOfWeekYear(_date, options);\n\n // Round the number of weeks to the nearest integer because the number of\n // milliseconds in a week is not constant (e.g. it's different in the week of\n // the daylight saving time clock shift).\n return Math.round(diff / millisecondsInWeek) + 1;\n}\n\n// Fallback for modularized imports:\nexport default getWeek;\n","export function addLeadingZeros(number, targetLength) {\n const sign = number < 0 ? \"-\" : \"\";\n const output = Math.abs(number).toString().padStart(targetLength, \"0\");\n return sign + output;\n}\n","import { addLeadingZeros } from \"../addLeadingZeros.js\";\n\n/*\n * | | Unit | | Unit |\n * |-----|--------------------------------|-----|--------------------------------|\n * | a | AM, PM | A* | |\n * | d | Day of month | D | |\n * | h | Hour [1-12] | H | Hour [0-23] |\n * | m | Minute | M | Month |\n * | s | Second | S | Fraction of second |\n * | y | Year (abs) | Y | |\n *\n * Letters marked by * are not implemented but reserved by Unicode standard.\n */\n\nexport const lightFormatters = {\n // Year\n y(date, token) {\n // From http://www.unicode.org/reports/tr35/tr35-31/tr35-dates.html#Date_Format_tokens\n // | Year | y | yy | yyy | yyyy | yyyyy |\n // |----------|-------|----|-------|-------|-------|\n // | AD 1 | 1 | 01 | 001 | 0001 | 00001 |\n // | AD 12 | 12 | 12 | 012 | 0012 | 00012 |\n // | AD 123 | 123 | 23 | 123 | 0123 | 00123 |\n // | AD 1234 | 1234 | 34 | 1234 | 1234 | 01234 |\n // | AD 12345 | 12345 | 45 | 12345 | 12345 | 12345 |\n\n const signedYear = date.getFullYear();\n // Returns 1 for 1 BC (which is year 0 in JavaScript)\n const year = signedYear > 0 ? signedYear : 1 - signedYear;\n return addLeadingZeros(token === \"yy\" ? year % 100 : year, token.length);\n },\n\n // Month\n M(date, token) {\n const month = date.getMonth();\n return token === \"M\" ? String(month + 1) : addLeadingZeros(month + 1, 2);\n },\n\n // Day of the month\n d(date, token) {\n return addLeadingZeros(date.getDate(), token.length);\n },\n\n // AM or PM\n a(date, token) {\n const dayPeriodEnumValue = date.getHours() / 12 >= 1 ? \"pm\" : \"am\";\n\n switch (token) {\n case \"a\":\n case \"aa\":\n return dayPeriodEnumValue.toUpperCase();\n case \"aaa\":\n return dayPeriodEnumValue;\n case \"aaaaa\":\n return dayPeriodEnumValue[0];\n case \"aaaa\":\n default:\n return dayPeriodEnumValue === \"am\" ? \"a.m.\" : \"p.m.\";\n }\n },\n\n // Hour [1-12]\n h(date, token) {\n return addLeadingZeros(date.getHours() % 12 || 12, token.length);\n },\n\n // Hour [0-23]\n H(date, token) {\n return addLeadingZeros(date.getHours(), token.length);\n },\n\n // Minute\n m(date, token) {\n return addLeadingZeros(date.getMinutes(), token.length);\n },\n\n // Second\n s(date, token) {\n return addLeadingZeros(date.getSeconds(), token.length);\n },\n\n // Fraction of second\n S(date, token) {\n const numberOfDigits = token.length;\n const milliseconds = date.getMilliseconds();\n const fractionalSeconds = Math.trunc(\n milliseconds * Math.pow(10, numberOfDigits - 3),\n );\n return addLeadingZeros(fractionalSeconds, token.length);\n },\n};\n","import { getDayOfYear } from \"../../getDayOfYear.js\";\nimport { getISOWeek } from \"../../getISOWeek.js\";\nimport { getISOWeekYear } from \"../../getISOWeekYear.js\";\nimport { getWeek } from \"../../getWeek.js\";\nimport { getWeekYear } from \"../../getWeekYear.js\";\n\nimport { addLeadingZeros } from \"../addLeadingZeros.js\";\nimport { lightFormatters } from \"./lightFormatters.js\";\n\nconst dayPeriodEnum = {\n am: \"am\",\n pm: \"pm\",\n midnight: \"midnight\",\n noon: \"noon\",\n morning: \"morning\",\n afternoon: \"afternoon\",\n evening: \"evening\",\n night: \"night\",\n};\n\n/*\n * | | Unit | | Unit |\n * |-----|--------------------------------|-----|--------------------------------|\n * | a | AM, PM | A* | Milliseconds in day |\n * | b | AM, PM, noon, midnight | B | Flexible day period |\n * | c | Stand-alone local day of week | C* | Localized hour w/ day period |\n * | d | Day of month | D | Day of year |\n * | e | Local day of week | E | Day of week |\n * | f | | F* | Day of week in month |\n * | g* | Modified Julian day | G | Era |\n * | h | Hour [1-12] | H | Hour [0-23] |\n * | i! | ISO day of week | I! | ISO week of year |\n * | j* | Localized hour w/ day period | J* | Localized hour w/o day period |\n * | k | Hour [1-24] | K | Hour [0-11] |\n * | l* | (deprecated) | L | Stand-alone month |\n * | m | Minute | M | Month |\n * | n | | N | |\n * | o! | Ordinal number modifier | O | Timezone (GMT) |\n * | p! | Long localized time | P! | Long localized date |\n * | q | Stand-alone quarter | Q | Quarter |\n * | r* | Related Gregorian year | R! | ISO week-numbering year |\n * | s | Second | S | Fraction of second |\n * | t! | Seconds timestamp | T! | Milliseconds timestamp |\n * | u | Extended year | U* | Cyclic year |\n * | v* | Timezone (generic non-locat.) | V* | Timezone (location) |\n * | w | Local week of year | W* | Week of month |\n * | x | Timezone (ISO-8601 w/o Z) | X | Timezone (ISO-8601) |\n * | y | Year (abs) | Y | Local week-numbering year |\n * | z | Timezone (specific non-locat.) | Z* | Timezone (aliases) |\n *\n * Letters marked by * are not implemented but reserved by Unicode standard.\n *\n * Letters marked by ! are non-standard, but implemented by date-fns:\n * - `o` modifies the previous token to turn it into an ordinal (see `format` docs)\n * - `i` is ISO day of week. For `i` and `ii` is returns numeric ISO week days,\n * i.e. 7 for Sunday, 1 for Monday, etc.\n * - `I` is ISO week of year, as opposed to `w` which is local week of year.\n * - `R` is ISO week-numbering year, as opposed to `Y` which is local week-numbering year.\n * `R` is supposed to be used in conjunction with `I` and `i`\n * for universal ISO week-numbering date, whereas\n * `Y` is supposed to be used in conjunction with `w` and `e`\n * for week-numbering date specific to the locale.\n * - `P` is long localized date format\n * - `p` is long localized time format\n */\n\nexport const formatters = {\n // Era\n G: function (date, token, localize) {\n const era = date.getFullYear() > 0 ? 1 : 0;\n switch (token) {\n // AD, BC\n case \"G\":\n case \"GG\":\n case \"GGG\":\n return localize.era(era, { width: \"abbreviated\" });\n // A, B\n case \"GGGGG\":\n return localize.era(era, { width: \"narrow\" });\n // Anno Domini, Before Christ\n case \"GGGG\":\n default:\n return localize.era(era, { width: \"wide\" });\n }\n },\n\n // Year\n y: function (date, token, localize) {\n // Ordinal number\n if (token === \"yo\") {\n const signedYear = date.getFullYear();\n // Returns 1 for 1 BC (which is year 0 in JavaScript)\n const year = signedYear > 0 ? signedYear : 1 - signedYear;\n return localize.ordinalNumber(year, { unit: \"year\" });\n }\n\n return lightFormatters.y(date, token);\n },\n\n // Local week-numbering year\n Y: function (date, token, localize, options) {\n const signedWeekYear = getWeekYear(date, options);\n // Returns 1 for 1 BC (which is year 0 in JavaScript)\n const weekYear = signedWeekYear > 0 ? signedWeekYear : 1 - signedWeekYear;\n\n // Two digit year\n if (token === \"YY\") {\n const twoDigitYear = weekYear % 100;\n return addLeadingZeros(twoDigitYear, 2);\n }\n\n // Ordinal number\n if (token === \"Yo\") {\n return localize.ordinalNumber(weekYear, { unit: \"year\" });\n }\n\n // Padding\n return addLeadingZeros(weekYear, token.length);\n },\n\n // ISO week-numbering year\n R: function (date, token) {\n const isoWeekYear = getISOWeekYear(date);\n\n // Padding\n return addLeadingZeros(isoWeekYear, token.length);\n },\n\n // Extended year. This is a single number designating the year of this calendar system.\n // The main difference between `y` and `u` localizers are B.C. years:\n // | Year | `y` | `u` |\n // |------|-----|-----|\n // | AC 1 | 1 | 1 |\n // | BC 1 | 1 | 0 |\n // | BC 2 | 2 | -1 |\n // Also `yy` always returns the last two digits of a year,\n // while `uu` pads single digit years to 2 characters and returns other years unchanged.\n u: function (date, token) {\n const year = date.getFullYear();\n return addLeadingZeros(year, token.length);\n },\n\n // Quarter\n Q: function (date, token, localize) {\n const quarter = Math.ceil((date.getMonth() + 1) / 3);\n switch (token) {\n // 1, 2, 3, 4\n case \"Q\":\n return String(quarter);\n // 01, 02, 03, 04\n case \"QQ\":\n return addLeadingZeros(quarter, 2);\n // 1st, 2nd, 3rd, 4th\n case \"Qo\":\n return localize.ordinalNumber(quarter, { unit: \"quarter\" });\n // Q1, Q2, Q3, Q4\n case \"QQQ\":\n return localize.quarter(quarter, {\n width: \"abbreviated\",\n context: \"formatting\",\n });\n // 1, 2, 3, 4 (narrow quarter; could be not numerical)\n case \"QQQQQ\":\n return localize.quarter(quarter, {\n width: \"narrow\",\n context: \"formatting\",\n });\n // 1st quarter, 2nd quarter, ...\n case \"QQQQ\":\n default:\n return localize.quarter(quarter, {\n width: \"wide\",\n context: \"formatting\",\n });\n }\n },\n\n // Stand-alone quarter\n q: function (date, token, localize) {\n const quarter = Math.ceil((date.getMonth() + 1) / 3);\n switch (token) {\n // 1, 2, 3, 4\n case \"q\":\n return String(quarter);\n // 01, 02, 03, 04\n case \"qq\":\n return addLeadingZeros(quarter, 2);\n // 1st, 2nd, 3rd, 4th\n case \"qo\":\n return localize.ordinalNumber(quarter, { unit: \"quarter\" });\n // Q1, Q2, Q3, Q4\n case \"qqq\":\n return localize.quarter(quarter, {\n width: \"abbreviated\",\n context: \"standalone\",\n });\n // 1, 2, 3, 4 (narrow quarter; could be not numerical)\n case \"qqqqq\":\n return localize.quarter(quarter, {\n width: \"narrow\",\n context: \"standalone\",\n });\n // 1st quarter, 2nd quarter, ...\n case \"qqqq\":\n default:\n return localize.quarter(quarter, {\n width: \"wide\",\n context: \"standalone\",\n });\n }\n },\n\n // Month\n M: function (date, token, localize) {\n const month = date.getMonth();\n switch (token) {\n case \"M\":\n case \"MM\":\n return lightFormatters.M(date, token);\n // 1st, 2nd, ..., 12th\n case \"Mo\":\n return localize.ordinalNumber(month + 1, { unit: \"month\" });\n // Jan, Feb, ..., Dec\n case \"MMM\":\n return localize.month(month, {\n width: \"abbreviated\",\n context: \"formatting\",\n });\n // J, F, ..., D\n case \"MMMMM\":\n return localize.month(month, {\n width: \"narrow\",\n context: \"formatting\",\n });\n // January, February, ..., December\n case \"MMMM\":\n default:\n return localize.month(month, { width: \"wide\", context: \"formatting\" });\n }\n },\n\n // Stand-alone month\n L: function (date, token, localize) {\n const month = date.getMonth();\n switch (token) {\n // 1, 2, ..., 12\n case \"L\":\n return String(month + 1);\n // 01, 02, ..., 12\n case \"LL\":\n return addLeadingZeros(month + 1, 2);\n // 1st, 2nd, ..., 12th\n case \"Lo\":\n return localize.ordinalNumber(month + 1, { unit: \"month\" });\n // Jan, Feb, ..., Dec\n case \"LLL\":\n return localize.month(month, {\n width: \"abbreviated\",\n context: \"standalone\",\n });\n // J, F, ..., D\n case \"LLLLL\":\n return localize.month(month, {\n width: \"narrow\",\n context: \"standalone\",\n });\n // January, February, ..., December\n case \"LLLL\":\n default:\n return localize.month(month, { width: \"wide\", context: \"standalone\" });\n }\n },\n\n // Local week of year\n w: function (date, token, localize, options) {\n const week = getWeek(date, options);\n\n if (token === \"wo\") {\n return localize.ordinalNumber(week, { unit: \"week\" });\n }\n\n return addLeadingZeros(week, token.length);\n },\n\n // ISO week of year\n I: function (date, token, localize) {\n const isoWeek = getISOWeek(date);\n\n if (token === \"Io\") {\n return localize.ordinalNumber(isoWeek, { unit: \"week\" });\n }\n\n return addLeadingZeros(isoWeek, token.length);\n },\n\n // Day of the month\n d: function (date, token, localize) {\n if (token === \"do\") {\n return localize.ordinalNumber(date.getDate(), { unit: \"date\" });\n }\n\n return lightFormatters.d(date, token);\n },\n\n // Day of year\n D: function (date, token, localize) {\n const dayOfYear = getDayOfYear(date);\n\n if (token === \"Do\") {\n return localize.ordinalNumber(dayOfYear, { unit: \"dayOfYear\" });\n }\n\n return addLeadingZeros(dayOfYear, token.length);\n },\n\n // Day of week\n E: function (date, token, localize) {\n const dayOfWeek = date.getDay();\n switch (token) {\n // Tue\n case \"E\":\n case \"EE\":\n case \"EEE\":\n return localize.day(dayOfWeek, {\n width: \"abbreviated\",\n context: \"formatting\",\n });\n // T\n case \"EEEEE\":\n return localize.day(dayOfWeek, {\n width: \"narrow\",\n context: \"formatting\",\n });\n // Tu\n case \"EEEEEE\":\n return localize.day(dayOfWeek, {\n width: \"short\",\n context: \"formatting\",\n });\n // Tuesday\n case \"EEEE\":\n default:\n return localize.day(dayOfWeek, {\n width: \"wide\",\n context: \"formatting\",\n });\n }\n },\n\n // Local day of week\n e: function (date, token, localize, options) {\n const dayOfWeek = date.getDay();\n const localDayOfWeek = (dayOfWeek - options.weekStartsOn + 8) % 7 || 7;\n switch (token) {\n // Numerical value (Nth day of week with current locale or weekStartsOn)\n case \"e\":\n return String(localDayOfWeek);\n // Padded numerical value\n case \"ee\":\n return addLeadingZeros(localDayOfWeek, 2);\n // 1st, 2nd, ..., 7th\n case \"eo\":\n return localize.ordinalNumber(localDayOfWeek, { unit: \"day\" });\n case \"eee\":\n return localize.day(dayOfWeek, {\n width: \"abbreviated\",\n context: \"formatting\",\n });\n // T\n case \"eeeee\":\n return localize.day(dayOfWeek, {\n width: \"narrow\",\n context: \"formatting\",\n });\n // Tu\n case \"eeeeee\":\n return localize.day(dayOfWeek, {\n width: \"short\",\n context: \"formatting\",\n });\n // Tuesday\n case \"eeee\":\n default:\n return localize.day(dayOfWeek, {\n width: \"wide\",\n context: \"formatting\",\n });\n }\n },\n\n // Stand-alone local day of week\n c: function (date, token, localize, options) {\n const dayOfWeek = date.getDay();\n const localDayOfWeek = (dayOfWeek - options.weekStartsOn + 8) % 7 || 7;\n switch (token) {\n // Numerical value (same as in `e`)\n case \"c\":\n return String(localDayOfWeek);\n // Padded numerical value\n case \"cc\":\n return addLeadingZeros(localDayOfWeek, token.length);\n // 1st, 2nd, ..., 7th\n case \"co\":\n return localize.ordinalNumber(localDayOfWeek, { unit: \"day\" });\n case \"ccc\":\n return localize.day(dayOfWeek, {\n width: \"abbreviated\",\n context: \"standalone\",\n });\n // T\n case \"ccccc\":\n return localize.day(dayOfWeek, {\n width: \"narrow\",\n context: \"standalone\",\n });\n // Tu\n case \"cccccc\":\n return localize.day(dayOfWeek, {\n width: \"short\",\n context: \"standalone\",\n });\n // Tuesday\n case \"cccc\":\n default:\n return localize.day(dayOfWeek, {\n width: \"wide\",\n context: \"standalone\",\n });\n }\n },\n\n // ISO day of week\n i: function (date, token, localize) {\n const dayOfWeek = date.getDay();\n const isoDayOfWeek = dayOfWeek === 0 ? 7 : dayOfWeek;\n switch (token) {\n // 2\n case \"i\":\n return String(isoDayOfWeek);\n // 02\n case \"ii\":\n return addLeadingZeros(isoDayOfWeek, token.length);\n // 2nd\n case \"io\":\n return localize.ordinalNumber(isoDayOfWeek, { unit: \"day\" });\n // Tue\n case \"iii\":\n return localize.day(dayOfWeek, {\n width: \"abbreviated\",\n context: \"formatting\",\n });\n // T\n case \"iiiii\":\n return localize.day(dayOfWeek, {\n width: \"narrow\",\n context: \"formatting\",\n });\n // Tu\n case \"iiiiii\":\n return localize.day(dayOfWeek, {\n width: \"short\",\n context: \"formatting\",\n });\n // Tuesday\n case \"iiii\":\n default:\n return localize.day(dayOfWeek, {\n width: \"wide\",\n context: \"formatting\",\n });\n }\n },\n\n // AM or PM\n a: function (date, token, localize) {\n const hours = date.getHours();\n const dayPeriodEnumValue = hours / 12 >= 1 ? \"pm\" : \"am\";\n\n switch (token) {\n case \"a\":\n case \"aa\":\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: \"abbreviated\",\n context: \"formatting\",\n });\n case \"aaa\":\n return localize\n .dayPeriod(dayPeriodEnumValue, {\n width: \"abbreviated\",\n context: \"formatting\",\n })\n .toLowerCase();\n case \"aaaaa\":\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: \"narrow\",\n context: \"formatting\",\n });\n case \"aaaa\":\n default:\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: \"wide\",\n context: \"formatting\",\n });\n }\n },\n\n // AM, PM, midnight, noon\n b: function (date, token, localize) {\n const hours = date.getHours();\n let dayPeriodEnumValue;\n if (hours === 12) {\n dayPeriodEnumValue = dayPeriodEnum.noon;\n } else if (hours === 0) {\n dayPeriodEnumValue = dayPeriodEnum.midnight;\n } else {\n dayPeriodEnumValue = hours / 12 >= 1 ? \"pm\" : \"am\";\n }\n\n switch (token) {\n case \"b\":\n case \"bb\":\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: \"abbreviated\",\n context: \"formatting\",\n });\n case \"bbb\":\n return localize\n .dayPeriod(dayPeriodEnumValue, {\n width: \"abbreviated\",\n context: \"formatting\",\n })\n .toLowerCase();\n case \"bbbbb\":\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: \"narrow\",\n context: \"formatting\",\n });\n case \"bbbb\":\n default:\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: \"wide\",\n context: \"formatting\",\n });\n }\n },\n\n // in the morning, in the afternoon, in the evening, at night\n B: function (date, token, localize) {\n const hours = date.getHours();\n let dayPeriodEnumValue;\n if (hours >= 17) {\n dayPeriodEnumValue = dayPeriodEnum.evening;\n } else if (hours >= 12) {\n dayPeriodEnumValue = dayPeriodEnum.afternoon;\n } else if (hours >= 4) {\n dayPeriodEnumValue = dayPeriodEnum.morning;\n } else {\n dayPeriodEnumValue = dayPeriodEnum.night;\n }\n\n switch (token) {\n case \"B\":\n case \"BB\":\n case \"BBB\":\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: \"abbreviated\",\n context: \"formatting\",\n });\n case \"BBBBB\":\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: \"narrow\",\n context: \"formatting\",\n });\n case \"BBBB\":\n default:\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: \"wide\",\n context: \"formatting\",\n });\n }\n },\n\n // Hour [1-12]\n h: function (date, token, localize) {\n if (token === \"ho\") {\n let hours = date.getHours() % 12;\n if (hours === 0) hours = 12;\n return localize.ordinalNumber(hours, { unit: \"hour\" });\n }\n\n return lightFormatters.h(date, token);\n },\n\n // Hour [0-23]\n H: function (date, token, localize) {\n if (token === \"Ho\") {\n return localize.ordinalNumber(date.getHours(), { unit: \"hour\" });\n }\n\n return lightFormatters.H(date, token);\n },\n\n // Hour [0-11]\n K: function (date, token, localize) {\n const hours = date.getHours() % 12;\n\n if (token === \"Ko\") {\n return localize.ordinalNumber(hours, { unit: \"hour\" });\n }\n\n return addLeadingZeros(hours, token.length);\n },\n\n // Hour [1-24]\n k: function (date, token, localize) {\n let hours = date.getHours();\n if (hours === 0) hours = 24;\n\n if (token === \"ko\") {\n return localize.ordinalNumber(hours, { unit: \"hour\" });\n }\n\n return addLeadingZeros(hours, token.length);\n },\n\n // Minute\n m: function (date, token, localize) {\n if (token === \"mo\") {\n return localize.ordinalNumber(date.getMinutes(), { unit: \"minute\" });\n }\n\n return lightFormatters.m(date, token);\n },\n\n // Second\n s: function (date, token, localize) {\n if (token === \"so\") {\n return localize.ordinalNumber(date.getSeconds(), { unit: \"second\" });\n }\n\n return lightFormatters.s(date, token);\n },\n\n // Fraction of second\n S: function (date, token) {\n return lightFormatters.S(date, token);\n },\n\n // Timezone (ISO-8601. If offset is 0, output is always `'Z'`)\n X: function (date, token, _localize) {\n const timezoneOffset = date.getTimezoneOffset();\n\n if (timezoneOffset === 0) {\n return \"Z\";\n }\n\n switch (token) {\n // Hours and optional minutes\n case \"X\":\n return formatTimezoneWithOptionalMinutes(timezoneOffset);\n\n // Hours, minutes and optional seconds without `:` delimiter\n // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n // so this token always has the same output as `XX`\n case \"XXXX\":\n case \"XX\": // Hours and minutes without `:` delimiter\n return formatTimezone(timezoneOffset);\n\n // Hours, minutes and optional seconds with `:` delimiter\n // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n // so this token always has the same output as `XXX`\n case \"XXXXX\":\n case \"XXX\": // Hours and minutes with `:` delimiter\n default:\n return formatTimezone(timezoneOffset, \":\");\n }\n },\n\n // Timezone (ISO-8601. If offset is 0, output is `'+00:00'` or equivalent)\n x: function (date, token, _localize) {\n const timezoneOffset = date.getTimezoneOffset();\n\n switch (token) {\n // Hours and optional minutes\n case \"x\":\n return formatTimezoneWithOptionalMinutes(timezoneOffset);\n\n // Hours, minutes and optional seconds without `:` delimiter\n // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n // so this token always has the same output as `xx`\n case \"xxxx\":\n case \"xx\": // Hours and minutes without `:` delimiter\n return formatTimezone(timezoneOffset);\n\n // Hours, minutes and optional seconds with `:` delimiter\n // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n // so this token always has the same output as `xxx`\n case \"xxxxx\":\n case \"xxx\": // Hours and minutes with `:` delimiter\n default:\n return formatTimezone(timezoneOffset, \":\");\n }\n },\n\n // Timezone (GMT)\n O: function (date, token, _localize) {\n const timezoneOffset = date.getTimezoneOffset();\n\n switch (token) {\n // Short\n case \"O\":\n case \"OO\":\n case \"OOO\":\n return \"GMT\" + formatTimezoneShort(timezoneOffset, \":\");\n // Long\n case \"OOOO\":\n default:\n return \"GMT\" + formatTimezone(timezoneOffset, \":\");\n }\n },\n\n // Timezone (specific non-location)\n z: function (date, token, _localize) {\n const timezoneOffset = date.getTimezoneOffset();\n\n switch (token) {\n // Short\n case \"z\":\n case \"zz\":\n case \"zzz\":\n return \"GMT\" + formatTimezoneShort(timezoneOffset, \":\");\n // Long\n case \"zzzz\":\n default:\n return \"GMT\" + formatTimezone(timezoneOffset, \":\");\n }\n },\n\n // Seconds timestamp\n t: function (date, token, _localize) {\n const timestamp = Math.trunc(+date / 1000);\n return addLeadingZeros(timestamp, token.length);\n },\n\n // Milliseconds timestamp\n T: function (date, token, _localize) {\n return addLeadingZeros(+date, token.length);\n },\n};\n\nfunction formatTimezoneShort(offset, delimiter = \"\") {\n const sign = offset > 0 ? \"-\" : \"+\";\n const absOffset = Math.abs(offset);\n const hours = Math.trunc(absOffset / 60);\n const minutes = absOffset % 60;\n if (minutes === 0) {\n return sign + String(hours);\n }\n return sign + String(hours) + delimiter + addLeadingZeros(minutes, 2);\n}\n\nfunction formatTimezoneWithOptionalMinutes(offset, delimiter) {\n if (offset % 60 === 0) {\n const sign = offset > 0 ? \"-\" : \"+\";\n return sign + addLeadingZeros(Math.abs(offset) / 60, 2);\n }\n return formatTimezone(offset, delimiter);\n}\n\nfunction formatTimezone(offset, delimiter = \"\") {\n const sign = offset > 0 ? \"-\" : \"+\";\n const absOffset = Math.abs(offset);\n const hours = addLeadingZeros(Math.trunc(absOffset / 60), 2);\n const minutes = addLeadingZeros(absOffset % 60, 2);\n return sign + hours + delimiter + minutes;\n}\n","const dateLongFormatter = (pattern, formatLong) => {\n switch (pattern) {\n case \"P\":\n return formatLong.date({ width: \"short\" });\n case \"PP\":\n return formatLong.date({ width: \"medium\" });\n case \"PPP\":\n return formatLong.date({ width: \"long\" });\n case \"PPPP\":\n default:\n return formatLong.date({ width: \"full\" });\n }\n};\n\nconst timeLongFormatter = (pattern, formatLong) => {\n switch (pattern) {\n case \"p\":\n return formatLong.time({ width: \"short\" });\n case \"pp\":\n return formatLong.time({ width: \"medium\" });\n case \"ppp\":\n return formatLong.time({ width: \"long\" });\n case \"pppp\":\n default:\n return formatLong.time({ width: \"full\" });\n }\n};\n\nconst dateTimeLongFormatter = (pattern, formatLong) => {\n const matchResult = pattern.match(/(P+)(p+)?/) || [];\n const datePattern = matchResult[1];\n const timePattern = matchResult[2];\n\n if (!timePattern) {\n return dateLongFormatter(pattern, formatLong);\n }\n\n let dateTimeFormat;\n\n switch (datePattern) {\n case \"P\":\n dateTimeFormat = formatLong.dateTime({ width: \"short\" });\n break;\n case \"PP\":\n dateTimeFormat = formatLong.dateTime({ width: \"medium\" });\n break;\n case \"PPP\":\n dateTimeFormat = formatLong.dateTime({ width: \"long\" });\n break;\n case \"PPPP\":\n default:\n dateTimeFormat = formatLong.dateTime({ width: \"full\" });\n break;\n }\n\n return dateTimeFormat\n .replace(\"{{date}}\", dateLongFormatter(datePattern, formatLong))\n .replace(\"{{time}}\", timeLongFormatter(timePattern, formatLong));\n};\n\nexport const longFormatters = {\n p: timeLongFormatter,\n P: dateTimeLongFormatter,\n};\n","const dayOfYearTokenRE = /^D+$/;\nconst weekYearTokenRE = /^Y+$/;\n\nconst throwTokens = [\"D\", \"DD\", \"YY\", \"YYYY\"];\n\nexport function isProtectedDayOfYearToken(token) {\n return dayOfYearTokenRE.test(token);\n}\n\nexport function isProtectedWeekYearToken(token) {\n return weekYearTokenRE.test(token);\n}\n\nexport function warnOrThrowProtectedError(token, format, input) {\n const _message = message(token, format, input);\n console.warn(_message);\n if (throwTokens.includes(token)) throw new RangeError(_message);\n}\n\nfunction message(token, format, input) {\n const subject = token[0] === \"Y\" ? \"years\" : \"days of the month\";\n return `Use \\`${token.toLowerCase()}\\` instead of \\`${token}\\` (in \\`${format}\\`) for formatting ${subject} to the input \\`${input}\\`; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md`;\n}\n","import { defaultLocale } from \"./_lib/defaultLocale.js\";\nimport { getDefaultOptions } from \"./_lib/defaultOptions.js\";\nimport { formatters } from \"./_lib/format/formatters.js\";\nimport { longFormatters } from \"./_lib/format/longFormatters.js\";\nimport {\n isProtectedDayOfYearToken,\n isProtectedWeekYearToken,\n warnOrThrowProtectedError,\n} from \"./_lib/protectedTokens.js\";\nimport { isValid } from \"./isValid.js\";\nimport { toDate } from \"./toDate.js\";\n\n// Rexports of internal for libraries to use.\n// See: https://github.com/date-fns/date-fns/issues/3638#issuecomment-1877082874\nexport { formatters, longFormatters };\n\n// This RegExp consists of three parts separated by `|`:\n// - [yYQqMLwIdDecihHKkms]o matches any available ordinal number token\n// (one of the certain letters followed by `o`)\n// - (\\w)\\1* matches any sequences of the same letter\n// - '' matches two quote characters in a row\n// - '(''|[^'])+('|$) matches anything surrounded by two quote characters ('),\n// except a single quote symbol, which ends the sequence.\n// Two quote characters do not end the sequence.\n// If there is no matching single quote\n// then the sequence will continue until the end of the string.\n// - . matches any single character unmatched by previous parts of the RegExps\nconst formattingTokensRegExp =\n /[yYQqMLwIdDecihHKkms]o|(\\w)\\1*|''|'(''|[^'])+('|$)|./g;\n\n// This RegExp catches symbols escaped by quotes, and also\n// sequences of symbols P, p, and the combinations like `PPPPPPPppppp`\nconst longFormattingTokensRegExp = /P+p+|P+|p+|''|'(''|[^'])+('|$)|./g;\n\nconst escapedStringRegExp = /^'([^]*?)'?$/;\nconst doubleQuoteRegExp = /''/g;\nconst unescapedLatinCharacterRegExp = /[a-zA-Z]/;\n\nexport { format as formatDate };\n\n/**\n * The {@link format} function options.\n */\n\n/**\n * @name format\n * @alias formatDate\n * @category Common Helpers\n * @summary Format the date.\n *\n * @description\n * Return the formatted date string in the given format. The result may vary by locale.\n *\n * > ⚠️ Please note that the `format` tokens differ from Moment.js and other libraries.\n * > See: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n *\n * The characters wrapped between two single quotes characters (') are escaped.\n * Two single quotes in a row, whether inside or outside a quoted sequence, represent a 'real' single quote.\n * (see the last example)\n *\n * Format of the string is based on Unicode Technical Standard #35:\n * https://www.unicode.org/reports/tr35/tr35-dates.html#Date_Field_Symbol_Table\n * with a few additions (see note 7 below the table).\n *\n * Accepted patterns:\n * | Unit | Pattern | Result examples | Notes |\n * |---------------------------------|---------|-----------------------------------|-------|\n * | Era | G..GGG | AD, BC | |\n * | | GGGG | Anno Domini, Before Christ | 2 |\n * | | GGGGG | A, B | |\n * | Calendar year | y | 44, 1, 1900, 2017 | 5 |\n * | | yo | 44th, 1st, 0th, 17th | 5,7 |\n * | | yy | 44, 01, 00, 17 | 5 |\n * | | yyy | 044, 001, 1900, 2017 | 5 |\n * | | yyyy | 0044, 0001, 1900, 2017 | 5 |\n * | | yyyyy | ... | 3,5 |\n * | Local week-numbering year | Y | 44, 1, 1900, 2017 | 5 |\n * | | Yo | 44th, 1st, 1900th, 2017th | 5,7 |\n * | | YY | 44, 01, 00, 17 | 5,8 |\n * | | YYY | 044, 001, 1900, 2017 | 5 |\n * | | YYYY | 0044, 0001, 1900, 2017 | 5,8 |\n * | | YYYYY | ... | 3,5 |\n * | ISO week-numbering year | R | -43, 0, 1, 1900, 2017 | 5,7 |\n * | | RR | -43, 00, 01, 1900, 2017 | 5,7 |\n * | | RRR | -043, 000, 001, 1900, 2017 | 5,7 |\n * | | RRRR | -0043, 0000, 0001, 1900, 2017 | 5,7 |\n * | | RRRRR | ... | 3,5,7 |\n * | Extended year | u | -43, 0, 1, 1900, 2017 | 5 |\n * | | uu | -43, 01, 1900, 2017 | 5 |\n * | | uuu | -043, 001, 1900, 2017 | 5 |\n * | | uuuu | -0043, 0001, 1900, 2017 | 5 |\n * | | uuuuu | ... | 3,5 |\n * | Quarter (formatting) | Q | 1, 2, 3, 4 | |\n * | | Qo | 1st, 2nd, 3rd, 4th | 7 |\n * | | QQ | 01, 02, 03, 04 | |\n * | | QQQ | Q1, Q2, Q3, Q4 | |\n * | | QQQQ | 1st quarter, 2nd quarter, ... | 2 |\n * | | QQQQQ | 1, 2, 3, 4 | 4 |\n * | Quarter (stand-alone) | q | 1, 2, 3, 4 | |\n * | | qo | 1st, 2nd, 3rd, 4th | 7 |\n * | | qq | 01, 02, 03, 04 | |\n * | | qqq | Q1, Q2, Q3, Q4 | |\n * | | qqqq | 1st quarter, 2nd quarter, ... | 2 |\n * | | qqqqq | 1, 2, 3, 4 | 4 |\n * | Month (formatting) | M | 1, 2, ..., 12 | |\n * | | Mo | 1st, 2nd, ..., 12th | 7 |\n * | | MM | 01, 02, ..., 12 | |\n * | | MMM | Jan, Feb, ..., Dec | |\n * | | MMMM | January, February, ..., December | 2 |\n * | | MMMMM | J, F, ..., D | |\n * | Month (stand-alone) | L | 1, 2, ..., 12 | |\n * | | Lo | 1st, 2nd, ..., 12th | 7 |\n * | | LL | 01, 02, ..., 12 | |\n * | | LLL | Jan, Feb, ..., Dec | |\n * | | LLLL | January, February, ..., December | 2 |\n * | | LLLLL | J, F, ..., D | |\n * | Local week of year | w | 1, 2, ..., 53 | |\n * | | wo | 1st, 2nd, ..., 53th | 7 |\n * | | ww | 01, 02, ..., 53 | |\n * | ISO week of year | I | 1, 2, ..., 53 | 7 |\n * | | Io | 1st, 2nd, ..., 53th | 7 |\n * | | II | 01, 02, ..., 53 | 7 |\n * | Day of month | d | 1, 2, ..., 31 | |\n * | | do | 1st, 2nd, ..., 31st | 7 |\n * | | dd | 01, 02, ..., 31 | |\n * | Day of year | D | 1, 2, ..., 365, 366 | 9 |\n * | | Do | 1st, 2nd, ..., 365th, 366th | 7 |\n * | | DD | 01, 02, ..., 365, 366 | 9 |\n * | | DDD | 001, 002, ..., 365, 366 | |\n * | | DDDD | ... | 3 |\n * | Day of week (formatting) | E..EEE | Mon, Tue, Wed, ..., Sun | |\n * | | EEEE | Monday, Tuesday, ..., Sunday | 2 |\n * | | EEEEE | M, T, W, T, F, S, S | |\n * | | EEEEEE | Mo, Tu, We, Th, Fr, Sa, Su | |\n * | ISO day of week (formatting) | i | 1, 2, 3, ..., 7 | 7 |\n * | | io | 1st, 2nd, ..., 7th | 7 |\n * | | ii | 01, 02, ..., 07 | 7 |\n * | | iii | Mon, Tue, Wed, ..., Sun | 7 |\n * | | iiii | Monday, Tuesday, ..., Sunday | 2,7 |\n * | | iiiii | M, T, W, T, F, S, S | 7 |\n * | | iiiiii | Mo, Tu, We, Th, Fr, Sa, Su | 7 |\n * | Local day of week (formatting) | e | 2, 3, 4, ..., 1 | |\n * | | eo | 2nd, 3rd, ..., 1st | 7 |\n * | | ee | 02, 03, ..., 01 | |\n * | | eee | Mon, Tue, Wed, ..., Sun | |\n * | | eeee | Monday, Tuesday, ..., Sunday | 2 |\n * | | eeeee | M, T, W, T, F, S, S | |\n * | | eeeeee | Mo, Tu, We, Th, Fr, Sa, Su | |\n * | Local day of week (stand-alone) | c | 2, 3, 4, ..., 1 | |\n * | | co | 2nd, 3rd, ..., 1st | 7 |\n * | | cc | 02, 03, ..., 01 | |\n * | | ccc | Mon, Tue, Wed, ..., Sun | |\n * | | cccc | Monday, Tuesday, ..., Sunday | 2 |\n * | | ccccc | M, T, W, T, F, S, S | |\n * | | cccccc | Mo, Tu, We, Th, Fr, Sa, Su | |\n * | AM, PM | a..aa | AM, PM | |\n * | | aaa | am, pm | |\n * | | aaaa | a.m., p.m. | 2 |\n * | | aaaaa | a, p | |\n * | AM, PM, noon, midnight | b..bb | AM, PM, noon, midnight | |\n * | | bbb | am, pm, noon, midnight | |\n * | | bbbb | a.m., p.m., noon, midnight | 2 |\n * | | bbbbb | a, p, n, mi | |\n * | Flexible day period | B..BBB | at night, in the morning, ... | |\n * | | BBBB | at night, in the morning, ... | 2 |\n * | | BBBBB | at night, in the morning, ... | |\n * | Hour [1-12] | h | 1, 2, ..., 11, 12 | |\n * | | ho | 1st, 2nd, ..., 11th, 12th | 7 |\n * | | hh | 01, 02, ..., 11, 12 | |\n * | Hour [0-23] | H | 0, 1, 2, ..., 23 | |\n * | | Ho | 0th, 1st, 2nd, ..., 23rd | 7 |\n * | | HH | 00, 01, 02, ..., 23 | |\n * | Hour [0-11] | K | 1, 2, ..., 11, 0 | |\n * | | Ko | 1st, 2nd, ..., 11th, 0th | 7 |\n * | | KK | 01, 02, ..., 11, 00 | |\n * | Hour [1-24] | k | 24, 1, 2, ..., 23 | |\n * | | ko | 24th, 1st, 2nd, ..., 23rd | 7 |\n * | | kk | 24, 01, 02, ..., 23 | |\n * | Minute | m | 0, 1, ..., 59 | |\n * | | mo | 0th, 1st, ..., 59th | 7 |\n * | | mm | 00, 01, ..., 59 | |\n * | Second | s | 0, 1, ..., 59 | |\n * | | so | 0th, 1st, ..., 59th | 7 |\n * | | ss | 00, 01, ..., 59 | |\n * | Fraction of second | S | 0, 1, ..., 9 | |\n * | | SS | 00, 01, ..., 99 | |\n * | | SSS | 000, 001, ..., 999 | |\n * | | SSSS | ... | 3 |\n * | Timezone (ISO-8601 w/ Z) | X | -08, +0530, Z | |\n * | | XX | -0800, +0530, Z | |\n * | | XXX | -08:00, +05:30, Z | |\n * | | XXXX | -0800, +0530, Z, +123456 | 2 |\n * | | XXXXX | -08:00, +05:30, Z, +12:34:56 | |\n * | Timezone (ISO-8601 w/o Z) | x | -08, +0530, +00 | |\n * | | xx | -0800, +0530, +0000 | |\n * | | xxx | -08:00, +05:30, +00:00 | 2 |\n * | | xxxx | -0800, +0530, +0000, +123456 | |\n * | | xxxxx | -08:00, +05:30, +00:00, +12:34:56 | |\n * | Timezone (GMT) | O...OOO | GMT-8, GMT+5:30, GMT+0 | |\n * | | OOOO | GMT-08:00, GMT+05:30, GMT+00:00 | 2 |\n * | Timezone (specific non-locat.) | z...zzz | GMT-8, GMT+5:30, GMT+0 | 6 |\n * | | zzzz | GMT-08:00, GMT+05:30, GMT+00:00 | 2,6 |\n * | Seconds timestamp | t | 512969520 | 7 |\n * | | tt | ... | 3,7 |\n * | Milliseconds timestamp | T | 512969520900 | 7 |\n * | | TT | ... | 3,7 |\n * | Long localized date | P | 04/29/1453 | 7 |\n * | | PP | Apr 29, 1453 | 7 |\n * | | PPP | April 29th, 1453 | 7 |\n * | | PPPP | Friday, April 29th, 1453 | 2,7 |\n * | Long localized time | p | 12:00 AM | 7 |\n * | | pp | 12:00:00 AM | 7 |\n * | | ppp | 12:00:00 AM GMT+2 | 7 |\n * | | pppp | 12:00:00 AM GMT+02:00 | 2,7 |\n * | Combination of date and time | Pp | 04/29/1453, 12:00 AM | 7 |\n * | | PPpp | Apr 29, 1453, 12:00:00 AM | 7 |\n * | | PPPppp | April 29th, 1453 at ... | 7 |\n * | | PPPPpppp| Friday, April 29th, 1453 at ... | 2,7 |\n * Notes:\n * 1. \"Formatting\" units (e.g. formatting quarter) in the default en-US locale\n * are the same as \"stand-alone\" units, but are different in some languages.\n * \"Formatting\" units are declined according to the rules of the language\n * in the context of a date. \"Stand-alone\" units are always nominative singular:\n *\n * `format(new Date(2017, 10, 6), 'do LLLL', {locale: cs}) //=> '6. listopad'`\n *\n * `format(new Date(2017, 10, 6), 'do MMMM', {locale: cs}) //=> '6. listopadu'`\n *\n * 2. Any sequence of the identical letters is a pattern, unless it is escaped by\n * the single quote characters (see below).\n * If the sequence is longer than listed in table (e.g. `EEEEEEEEEEE`)\n * the output will be the same as default pattern for this unit, usually\n * the longest one (in case of ISO weekdays, `EEEE`). Default patterns for units\n * are marked with \"2\" in the last column of the table.\n *\n * `format(new Date(2017, 10, 6), 'MMM') //=> 'Nov'`\n *\n * `format(new Date(2017, 10, 6), 'MMMM') //=> 'November'`\n *\n * `format(new Date(2017, 10, 6), 'MMMMM') //=> 'N'`\n *\n * `format(new Date(2017, 10, 6), 'MMMMMM') //=> 'November'`\n *\n * `format(new Date(2017, 10, 6), 'MMMMMMM') //=> 'November'`\n *\n * 3. Some patterns could be unlimited length (such as `yyyyyyyy`).\n * The output will be padded with zeros to match the length of the pattern.\n *\n * `format(new Date(2017, 10, 6), 'yyyyyyyy') //=> '00002017'`\n *\n * 4. `QQQQQ` and `qqqqq` could be not strictly numerical in some locales.\n * These tokens represent the shortest form of the quarter.\n *\n * 5. The main difference between `y` and `u` patterns are B.C. years:\n *\n * | Year | `y` | `u` |\n * |------|-----|-----|\n * | AC 1 | 1 | 1 |\n * | BC 1 | 1 | 0 |\n * | BC 2 | 2 | -1 |\n *\n * Also `yy` always returns the last two digits of a year,\n * while `uu` pads single digit years to 2 characters and returns other years unchanged:\n *\n * | Year | `yy` | `uu` |\n * |------|------|------|\n * | 1 | 01 | 01 |\n * | 14 | 14 | 14 |\n * | 376 | 76 | 376 |\n * | 1453 | 53 | 1453 |\n *\n * The same difference is true for local and ISO week-numbering years (`Y` and `R`),\n * except local week-numbering years are dependent on `options.weekStartsOn`\n * and `options.firstWeekContainsDate` (compare [getISOWeekYear](https://date-fns.org/docs/getISOWeekYear)\n * and [getWeekYear](https://date-fns.org/docs/getWeekYear)).\n *\n * 6. Specific non-location timezones are currently unavailable in `date-fns`,\n * so right now these tokens fall back to GMT timezones.\n *\n * 7. These patterns are not in the Unicode Technical Standard #35:\n * - `i`: ISO day of week\n * - `I`: ISO week of year\n * - `R`: ISO week-numbering year\n * - `t`: seconds timestamp\n * - `T`: milliseconds timestamp\n * - `o`: ordinal number modifier\n * - `P`: long localized date\n * - `p`: long localized time\n *\n * 8. `YY` and `YYYY` tokens represent week-numbering years but they are often confused with years.\n * You should enable `options.useAdditionalWeekYearTokens` to use them. See: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n *\n * 9. `D` and `DD` tokens represent days of the year but they are often confused with days of the month.\n * You should enable `options.useAdditionalDayOfYearTokens` to use them. See: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n *\n * @param date - The original date\n * @param format - The string of tokens\n * @param options - An object with options\n *\n * @returns The formatted date string\n *\n * @throws `date` must not be Invalid Date\n * @throws `options.locale` must contain `localize` property\n * @throws `options.locale` must contain `formatLong` property\n * @throws use `yyyy` instead of `YYYY` for formatting years using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @throws use `yy` instead of `YY` for formatting years using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @throws use `d` instead of `D` for formatting days of the month using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @throws use `dd` instead of `DD` for formatting days of the month using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @throws format string contains an unescaped latin alphabet character\n *\n * @example\n * // Represent 11 February 2014 in middle-endian format:\n * const result = format(new Date(2014, 1, 11), 'MM/dd/yyyy')\n * //=> '02/11/2014'\n *\n * @example\n * // Represent 2 July 2014 in Esperanto:\n * import { eoLocale } from 'date-fns/locale/eo'\n * const result = format(new Date(2014, 6, 2), \"do 'de' MMMM yyyy\", {\n * locale: eoLocale\n * })\n * //=> '2-a de julio 2014'\n *\n * @example\n * // Escape string by single quote characters:\n * const result = format(new Date(2014, 6, 2, 15), \"h 'o''clock'\")\n * //=> \"3 o'clock\"\n */\nexport function format(date, formatStr, options) {\n const defaultOptions = getDefaultOptions();\n const locale = options?.locale ?? defaultOptions.locale ?? defaultLocale;\n\n const firstWeekContainsDate =\n options?.firstWeekContainsDate ??\n options?.locale?.options?.firstWeekContainsDate ??\n defaultOptions.firstWeekContainsDate ??\n defaultOptions.locale?.options?.firstWeekContainsDate ??\n 1;\n\n const weekStartsOn =\n options?.weekStartsOn ??\n options?.locale?.options?.weekStartsOn ??\n defaultOptions.weekStartsOn ??\n defaultOptions.locale?.options?.weekStartsOn ??\n 0;\n\n const originalDate = toDate(date, options?.in);\n\n if (!isValid(originalDate)) {\n throw new RangeError(\"Invalid time value\");\n }\n\n let parts = formatStr\n .match(longFormattingTokensRegExp)\n .map((substring) => {\n const firstCharacter = substring[0];\n if (firstCharacter === \"p\" || firstCharacter === \"P\") {\n const longFormatter = longFormatters[firstCharacter];\n return longFormatter(substring, locale.formatLong);\n }\n return substring;\n })\n .join(\"\")\n .match(formattingTokensRegExp)\n .map((substring) => {\n // Replace two single quote characters with one single quote character\n if (substring === \"''\") {\n return { isToken: false, value: \"'\" };\n }\n\n const firstCharacter = substring[0];\n if (firstCharacter === \"'\") {\n return { isToken: false, value: cleanEscapedString(substring) };\n }\n\n if (formatters[firstCharacter]) {\n return { isToken: true, value: substring };\n }\n\n if (firstCharacter.match(unescapedLatinCharacterRegExp)) {\n throw new RangeError(\n \"Format string contains an unescaped latin alphabet character `\" +\n firstCharacter +\n \"`\",\n );\n }\n\n return { isToken: false, value: substring };\n });\n\n // invoke localize preprocessor (only for french locales at the moment)\n if (locale.localize.preprocessor) {\n parts = locale.localize.preprocessor(originalDate, parts);\n }\n\n const formatterOptions = {\n firstWeekContainsDate,\n weekStartsOn,\n locale,\n };\n\n return parts\n .map((part) => {\n if (!part.isToken) return part.value;\n\n const token = part.value;\n\n if (\n (!options?.useAdditionalWeekYearTokens &&\n isProtectedWeekYearToken(token)) ||\n (!options?.useAdditionalDayOfYearTokens &&\n isProtectedDayOfYearToken(token))\n ) {\n warnOrThrowProtectedError(token, formatStr, String(date));\n }\n\n const formatter = formatters[token[0]];\n return formatter(originalDate, token, locale.localize, formatterOptions);\n })\n .join(\"\");\n}\n\nfunction cleanEscapedString(input) {\n const matched = input.match(escapedStringRegExp);\n\n if (!matched) {\n return input;\n }\n\n return matched[1].replace(doubleQuoteRegExp, \"'\");\n}\n\n// Fallback for modularized imports:\nexport default format;\n","import { defaultLocale } from \"./_lib/defaultLocale.js\";\nimport { getDefaultOptions } from \"./_lib/defaultOptions.js\";\nimport { getTimezoneOffsetInMilliseconds } from \"./_lib/getTimezoneOffsetInMilliseconds.js\";\nimport { normalizeDates } from \"./_lib/normalizeDates.js\";\nimport { compareAsc } from \"./compareAsc.js\";\nimport { minutesInDay, minutesInMonth } from \"./constants.js\";\nimport { differenceInMonths } from \"./differenceInMonths.js\";\nimport { differenceInSeconds } from \"./differenceInSeconds.js\";\n\n/**\n * The {@link formatDistance} function options.\n */\n\n/**\n * @name formatDistance\n * @category Common Helpers\n * @summary Return the distance between the given dates in words.\n *\n * @description\n * Return the distance between the given dates in words.\n *\n * | Distance between dates | Result |\n * |-------------------------------------------------------------------|---------------------|\n * | 0 ... 30 secs | less than a minute |\n * | 30 secs ... 1 min 30 secs | 1 minute |\n * | 1 min 30 secs ... 44 mins 30 secs | [2..44] minutes |\n * | 44 mins ... 30 secs ... 89 mins 30 secs | about 1 hour |\n * | 89 mins 30 secs ... 23 hrs 59 mins 30 secs | about [2..24] hours |\n * | 23 hrs 59 mins 30 secs ... 41 hrs 59 mins 30 secs | 1 day |\n * | 41 hrs 59 mins 30 secs ... 29 days 23 hrs 59 mins 30 secs | [2..30] days |\n * | 29 days 23 hrs 59 mins 30 secs ... 44 days 23 hrs 59 mins 30 secs | about 1 month |\n * | 44 days 23 hrs 59 mins 30 secs ... 59 days 23 hrs 59 mins 30 secs | about 2 months |\n * | 59 days 23 hrs 59 mins 30 secs ... 1 yr | [2..12] months |\n * | 1 yr ... 1 yr 3 months | about 1 year |\n * | 1 yr 3 months ... 1 yr 9 month s | over 1 year |\n * | 1 yr 9 months ... 2 yrs | almost 2 years |\n * | N yrs ... N yrs 3 months | about N years |\n * | N yrs 3 months ... N yrs 9 months | over N years |\n * | N yrs 9 months ... N+1 yrs | almost N+1 years |\n *\n * With `options.includeSeconds == true`:\n * | Distance between dates | Result |\n * |------------------------|----------------------|\n * | 0 secs ... 5 secs | less than 5 seconds |\n * | 5 secs ... 10 secs | less than 10 seconds |\n * | 10 secs ... 20 secs | less than 20 seconds |\n * | 20 secs ... 40 secs | half a minute |\n * | 40 secs ... 60 secs | less than a minute |\n * | 60 secs ... 90 secs | 1 minute |\n *\n * @param laterDate - The date\n * @param earlierDate - The date to compare with\n * @param options - An object with options\n *\n * @returns The distance in words\n *\n * @throws `date` must not be Invalid Date\n * @throws `baseDate` must not be Invalid Date\n * @throws `options.locale` must contain `formatDistance` property\n *\n * @example\n * // What is the distance between 2 July 2014 and 1 January 2015?\n * const result = formatDistance(new Date(2014, 6, 2), new Date(2015, 0, 1))\n * //=> '6 months'\n *\n * @example\n * // What is the distance between 1 January 2015 00:00:15\n * // and 1 January 2015 00:00:00, including seconds?\n * const result = formatDistance(\n * new Date(2015, 0, 1, 0, 0, 15),\n * new Date(2015, 0, 1, 0, 0, 0),\n * { includeSeconds: true }\n * )\n * //=> 'less than 20 seconds'\n *\n * @example\n * // What is the distance from 1 January 2016\n * // to 1 January 2015, with a suffix?\n * const result = formatDistance(new Date(2015, 0, 1), new Date(2016, 0, 1), {\n * addSuffix: true\n * })\n * //=> 'about 1 year ago'\n *\n * @example\n * // What is the distance between 1 August 2016 and 1 January 2015 in Esperanto?\n * import { eoLocale } from 'date-fns/locale/eo'\n * const result = formatDistance(new Date(2016, 7, 1), new Date(2015, 0, 1), {\n * locale: eoLocale\n * })\n * //=> 'pli ol 1 jaro'\n */\nexport function formatDistance(laterDate, earlierDate, options) {\n const defaultOptions = getDefaultOptions();\n const locale = options?.locale ?? defaultOptions.locale ?? defaultLocale;\n const minutesInAlmostTwoDays = 2520;\n\n const comparison = compareAsc(laterDate, earlierDate);\n\n if (isNaN(comparison)) throw new RangeError(\"Invalid time value\");\n\n const localizeOptions = Object.assign({}, options, {\n addSuffix: options?.addSuffix,\n comparison: comparison,\n });\n\n const [laterDate_, earlierDate_] = normalizeDates(\n options?.in,\n ...(comparison > 0 ? [earlierDate, laterDate] : [laterDate, earlierDate]),\n );\n\n const seconds = differenceInSeconds(earlierDate_, laterDate_);\n const offsetInSeconds =\n (getTimezoneOffsetInMilliseconds(earlierDate_) -\n getTimezoneOffsetInMilliseconds(laterDate_)) /\n 1000;\n const minutes = Math.round((seconds - offsetInSeconds) / 60);\n let months;\n\n // 0 up to 2 mins\n if (minutes < 2) {\n if (options?.includeSeconds) {\n if (seconds < 5) {\n return locale.formatDistance(\"lessThanXSeconds\", 5, localizeOptions);\n } else if (seconds < 10) {\n return locale.formatDistance(\"lessThanXSeconds\", 10, localizeOptions);\n } else if (seconds < 20) {\n return locale.formatDistance(\"lessThanXSeconds\", 20, localizeOptions);\n } else if (seconds < 40) {\n return locale.formatDistance(\"halfAMinute\", 0, localizeOptions);\n } else if (seconds < 60) {\n return locale.formatDistance(\"lessThanXMinutes\", 1, localizeOptions);\n } else {\n return locale.formatDistance(\"xMinutes\", 1, localizeOptions);\n }\n } else {\n if (minutes === 0) {\n return locale.formatDistance(\"lessThanXMinutes\", 1, localizeOptions);\n } else {\n return locale.formatDistance(\"xMinutes\", minutes, localizeOptions);\n }\n }\n\n // 2 mins up to 0.75 hrs\n } else if (minutes < 45) {\n return locale.formatDistance(\"xMinutes\", minutes, localizeOptions);\n\n // 0.75 hrs up to 1.5 hrs\n } else if (minutes < 90) {\n return locale.formatDistance(\"aboutXHours\", 1, localizeOptions);\n\n // 1.5 hrs up to 24 hrs\n } else if (minutes < minutesInDay) {\n const hours = Math.round(minutes / 60);\n return locale.formatDistance(\"aboutXHours\", hours, localizeOptions);\n\n // 1 day up to 1.75 days\n } else if (minutes < minutesInAlmostTwoDays) {\n return locale.formatDistance(\"xDays\", 1, localizeOptions);\n\n // 1.75 days up to 30 days\n } else if (minutes < minutesInMonth) {\n const days = Math.round(minutes / minutesInDay);\n return locale.formatDistance(\"xDays\", days, localizeOptions);\n\n // 1 month up to 2 months\n } else if (minutes < minutesInMonth * 2) {\n months = Math.round(minutes / minutesInMonth);\n return locale.formatDistance(\"aboutXMonths\", months, localizeOptions);\n }\n\n months = differenceInMonths(earlierDate_, laterDate_);\n\n // 2 months up to 12 months\n if (months < 12) {\n const nearestMonth = Math.round(minutes / minutesInMonth);\n return locale.formatDistance(\"xMonths\", nearestMonth, localizeOptions);\n\n // 1 year up to max Date\n } else {\n const monthsSinceStartOfYear = months % 12;\n const years = Math.trunc(months / 12);\n\n // N years up to 1 years 3 months\n if (monthsSinceStartOfYear < 3) {\n return locale.formatDistance(\"aboutXYears\", years, localizeOptions);\n\n // N years 3 months up to N years 9 months\n } else if (monthsSinceStartOfYear < 9) {\n return locale.formatDistance(\"overXYears\", years, localizeOptions);\n\n // N years 9 months up to N year 12 months\n } else {\n return locale.formatDistance(\"almostXYears\", years + 1, localizeOptions);\n }\n }\n}\n\n// Fallback for modularized imports:\nexport default formatDistance;\n","import { getDefaultOptions as getInternalDefaultOptions } from \"./_lib/defaultOptions.js\";\n\n/**\n * @name getDefaultOptions\n * @category Common Helpers\n * @summary Get default options.\n * @pure false\n *\n * @description\n * Returns an object that contains defaults for\n * `options.locale`, `options.weekStartsOn` and `options.firstWeekContainsDate`\n * arguments for all functions.\n *\n * You can change these with [setDefaultOptions](https://date-fns.org/docs/setDefaultOptions).\n *\n * @returns The default options\n *\n * @example\n * const result = getDefaultOptions()\n * //=> {}\n *\n * @example\n * setDefaultOptions({ weekStarsOn: 1, firstWeekContainsDate: 4 })\n * const result = getDefaultOptions()\n * //=> { weekStarsOn: 1, firstWeekContainsDate: 4 }\n */\nexport function getDefaultOptions() {\n return Object.assign({}, getInternalDefaultOptions());\n}\n\n// Fallback for modularized imports:\nexport default getDefaultOptions;\n","import { toDate } from \"./toDate.js\";\n\n/**\n * @name isBefore\n * @category Common Helpers\n * @summary Is the first date before the second one?\n *\n * @description\n * Is the first date before the second one?\n *\n * @param date - The date that should be before the other one to return true\n * @param dateToCompare - The date to compare with\n *\n * @returns The first date is before the second date\n *\n * @example\n * // Is 10 July 1989 before 11 February 1987?\n * const result = isBefore(new Date(1989, 6, 10), new Date(1987, 1, 11))\n * //=> false\n */\nexport function isBefore(date, dateToCompare) {\n return +toDate(date) < +toDate(dateToCompare);\n}\n\n// Fallback for modularized imports:\nexport default isBefore;\n","import { addDays } from \"./addDays.js\";\n\n/**\n * The {@link subDays} function options.\n */\n\n/**\n * @name subDays\n * @category Day Helpers\n * @summary Subtract the specified number of days from the given date.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param date - The date to be changed\n * @param amount - The amount of days to be subtracted.\n * @param options - An object with options\n *\n * @returns The new date with the days subtracted\n *\n * @example\n * // Subtract 10 days from 1 September 2014:\n * const result = subDays(new Date(2014, 8, 1), 10)\n * //=> Fri Aug 22 2014 00:00:00\n */\nexport function subDays(date, amount, options) {\n return addDays(date, -amount, options);\n}\n\n// Fallback for modularized imports:\nexport default subDays;\n","import {\n millisecondsInHour,\n millisecondsInMinute,\n} from \"./constants.js\";\nimport { constructFrom } from \"./constructFrom.js\";\nimport { toDate } from \"./toDate.js\";\n\n/**\n * The {@link parseISO} function options.\n */\n\n/**\n * @name parseISO\n * @category Common Helpers\n * @summary Parse ISO string\n *\n * @description\n * Parse the given string in ISO 8601 format and return an instance of Date.\n *\n * Function accepts complete ISO 8601 formats as well as partial implementations.\n * ISO 8601: http://en.wikipedia.org/wiki/ISO_8601\n *\n * If the argument isn't a string, the function cannot parse the string or\n * the values are invalid, it returns Invalid Date.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param argument - The value to convert\n * @param options - An object with options\n *\n * @returns The parsed date in the local time zone\n *\n * @example\n * // Convert string '2014-02-11T11:30:30' to date:\n * const result = parseISO('2014-02-11T11:30:30')\n * //=> Tue Feb 11 2014 11:30:30\n *\n * @example\n * // Convert string '+02014101' to date,\n * // if the additional number of digits in the extended year format is 1:\n * const result = parseISO('+02014101', { additionalDigits: 1 })\n * //=> Fri Apr 11 2014 00:00:00\n */\nexport function parseISO(argument, options) {\n const invalidDate = () => constructFrom(options?.in, NaN);\n\n const additionalDigits = options?.additionalDigits ?? 2;\n const dateStrings = splitDateString(argument);\n\n let date;\n if (dateStrings.date) {\n const parseYearResult = parseYear(dateStrings.date, additionalDigits);\n date = parseDate(parseYearResult.restDateString, parseYearResult.year);\n }\n\n if (!date || isNaN(+date)) return invalidDate();\n\n const timestamp = +date;\n let time = 0;\n let offset;\n\n if (dateStrings.time) {\n time = parseTime(dateStrings.time);\n if (isNaN(time)) return invalidDate();\n }\n\n if (dateStrings.timezone) {\n offset = parseTimezone(dateStrings.timezone);\n if (isNaN(offset)) return invalidDate();\n } else {\n const tmpDate = new Date(timestamp + time);\n const result = toDate(0, options?.in);\n result.setFullYear(\n tmpDate.getUTCFullYear(),\n tmpDate.getUTCMonth(),\n tmpDate.getUTCDate(),\n );\n result.setHours(\n tmpDate.getUTCHours(),\n tmpDate.getUTCMinutes(),\n tmpDate.getUTCSeconds(),\n tmpDate.getUTCMilliseconds(),\n );\n return result;\n }\n\n return toDate(timestamp + time + offset, options?.in);\n}\n\nconst patterns = {\n dateTimeDelimiter: /[T ]/,\n timeZoneDelimiter: /[Z ]/i,\n timezone: /([Z+-].*)$/,\n};\n\nconst dateRegex =\n /^-?(?:(\\d{3})|(\\d{2})(?:-?(\\d{2}))?|W(\\d{2})(?:-?(\\d{1}))?|)$/;\nconst timeRegex =\n /^(\\d{2}(?:[.,]\\d*)?)(?::?(\\d{2}(?:[.,]\\d*)?))?(?::?(\\d{2}(?:[.,]\\d*)?))?$/;\nconst timezoneRegex = /^([+-])(\\d{2})(?::?(\\d{2}))?$/;\n\nfunction splitDateString(dateString) {\n const dateStrings = {};\n const array = dateString.split(patterns.dateTimeDelimiter);\n let timeString;\n\n // The regex match should only return at maximum two array elements.\n // [date], [time], or [date, time].\n if (array.length > 2) {\n return dateStrings;\n }\n\n if (/:/.test(array[0])) {\n timeString = array[0];\n } else {\n dateStrings.date = array[0];\n timeString = array[1];\n if (patterns.timeZoneDelimiter.test(dateStrings.date)) {\n dateStrings.date = dateString.split(patterns.timeZoneDelimiter)[0];\n timeString = dateString.substr(\n dateStrings.date.length,\n dateString.length,\n );\n }\n }\n\n if (timeString) {\n const token = patterns.timezone.exec(timeString);\n if (token) {\n dateStrings.time = timeString.replace(token[1], \"\");\n dateStrings.timezone = token[1];\n } else {\n dateStrings.time = timeString;\n }\n }\n\n return dateStrings;\n}\n\nfunction parseYear(dateString, additionalDigits) {\n const regex = new RegExp(\n \"^(?:(\\\\d{4}|[+-]\\\\d{\" +\n (4 + additionalDigits) +\n \"})|(\\\\d{2}|[+-]\\\\d{\" +\n (2 + additionalDigits) +\n \"})$)\",\n );\n\n const captures = dateString.match(regex);\n // Invalid ISO-formatted year\n if (!captures) return { year: NaN, restDateString: \"\" };\n\n const year = captures[1] ? parseInt(captures[1]) : null;\n const century = captures[2] ? parseInt(captures[2]) : null;\n\n // either year or century is null, not both\n return {\n year: century === null ? year : century * 100,\n restDateString: dateString.slice((captures[1] || captures[2]).length),\n };\n}\n\nfunction parseDate(dateString, year) {\n // Invalid ISO-formatted year\n if (year === null) return new Date(NaN);\n\n const captures = dateString.match(dateRegex);\n // Invalid ISO-formatted string\n if (!captures) return new Date(NaN);\n\n const isWeekDate = !!captures[4];\n const dayOfYear = parseDateUnit(captures[1]);\n const month = parseDateUnit(captures[2]) - 1;\n const day = parseDateUnit(captures[3]);\n const week = parseDateUnit(captures[4]);\n const dayOfWeek = parseDateUnit(captures[5]) - 1;\n\n if (isWeekDate) {\n if (!validateWeekDate(year, week, dayOfWeek)) {\n return new Date(NaN);\n }\n return dayOfISOWeekYear(year, week, dayOfWeek);\n } else {\n const date = new Date(0);\n if (\n !validateDate(year, month, day) ||\n !validateDayOfYearDate(year, dayOfYear)\n ) {\n return new Date(NaN);\n }\n date.setUTCFullYear(year, month, Math.max(dayOfYear, day));\n return date;\n }\n}\n\nfunction parseDateUnit(value) {\n return value ? parseInt(value) : 1;\n}\n\nfunction parseTime(timeString) {\n const captures = timeString.match(timeRegex);\n if (!captures) return NaN; // Invalid ISO-formatted time\n\n const hours = parseTimeUnit(captures[1]);\n const minutes = parseTimeUnit(captures[2]);\n const seconds = parseTimeUnit(captures[3]);\n\n if (!validateTime(hours, minutes, seconds)) {\n return NaN;\n }\n\n return (\n hours * millisecondsInHour + minutes * millisecondsInMinute + seconds * 1000\n );\n}\n\nfunction parseTimeUnit(value) {\n return (value && parseFloat(value.replace(\",\", \".\"))) || 0;\n}\n\nfunction parseTimezone(timezoneString) {\n if (timezoneString === \"Z\") return 0;\n\n const captures = timezoneString.match(timezoneRegex);\n if (!captures) return 0;\n\n const sign = captures[1] === \"+\" ? -1 : 1;\n const hours = parseInt(captures[2]);\n const minutes = (captures[3] && parseInt(captures[3])) || 0;\n\n if (!validateTimezone(hours, minutes)) {\n return NaN;\n }\n\n return sign * (hours * millisecondsInHour + minutes * millisecondsInMinute);\n}\n\nfunction dayOfISOWeekYear(isoWeekYear, week, day) {\n const date = new Date(0);\n date.setUTCFullYear(isoWeekYear, 0, 4);\n const fourthOfJanuaryDay = date.getUTCDay() || 7;\n const diff = (week - 1) * 7 + day + 1 - fourthOfJanuaryDay;\n date.setUTCDate(date.getUTCDate() + diff);\n return date;\n}\n\n// Validation functions\n\n// February is null to handle the leap year (using ||)\nconst daysInMonths = [31, null, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];\n\nfunction isLeapYearIndex(year) {\n return year % 400 === 0 || (year % 4 === 0 && year % 100 !== 0);\n}\n\nfunction validateDate(year, month, date) {\n return (\n month >= 0 &&\n month <= 11 &&\n date >= 1 &&\n date <= (daysInMonths[month] || (isLeapYearIndex(year) ? 29 : 28))\n );\n}\n\nfunction validateDayOfYearDate(year, dayOfYear) {\n return dayOfYear >= 1 && dayOfYear <= (isLeapYearIndex(year) ? 366 : 365);\n}\n\nfunction validateWeekDate(_year, week, day) {\n return week >= 1 && week <= 53 && day >= 0 && day <= 6;\n}\n\nfunction validateTime(hours, minutes, seconds) {\n if (hours === 24) {\n return minutes === 0 && seconds === 0;\n }\n\n return (\n seconds >= 0 &&\n seconds < 60 &&\n minutes >= 0 &&\n minutes < 60 &&\n hours >= 0 &&\n hours < 25\n );\n}\n\nfunction validateTimezone(_hours, minutes) {\n return minutes >= 0 && minutes <= 59;\n}\n\n// Fallback for modularized imports:\nexport default parseISO;\n","import { getDefaultOptions } from 'date-fns';\n/**\n * Returns the formatted time zone name of the provided `timeZone` or the current\n * system time zone if omitted, accounting for DST according to the UTC value of\n * the date.\n */\nexport function tzIntlTimeZoneName(length, date, options) {\n const defaultOptions = getDefaultOptions();\n const dtf = getDTF(length, options.timeZone, options.locale ?? defaultOptions.locale);\n return 'formatToParts' in dtf ? partsTimeZone(dtf, date) : hackyTimeZone(dtf, date);\n}\nfunction partsTimeZone(dtf, date) {\n const formatted = dtf.formatToParts(date);\n for (let i = formatted.length - 1; i >= 0; --i) {\n if (formatted[i].type === 'timeZoneName') {\n return formatted[i].value;\n }\n }\n return undefined;\n}\nfunction hackyTimeZone(dtf, date) {\n const formatted = dtf.format(date).replace(/\\u200E/g, '');\n const tzNameMatch = / [\\w-+ ]+$/.exec(formatted);\n return tzNameMatch ? tzNameMatch[0].substr(1) : '';\n}\n// If a locale has been provided `en-US` is used as a fallback in case it is an\n// invalid locale, otherwise the locale is left undefined to use the system locale.\nfunction getDTF(length, timeZone, locale) {\n return new Intl.DateTimeFormat(locale ? [locale.code, 'en-US'] : undefined, {\n timeZone: timeZone,\n timeZoneName: length,\n });\n}\n","/**\n * Returns the [year, month, day, hour, minute, seconds] tokens of the provided\n * `date` as it will be rendered in the `timeZone`.\n */\nexport function tzTokenizeDate(date, timeZone) {\n const dtf = getDateTimeFormat(timeZone);\n return 'formatToParts' in dtf ? partsOffset(dtf, date) : hackyOffset(dtf, date);\n}\nconst typeToPos = {\n year: 0,\n month: 1,\n day: 2,\n hour: 3,\n minute: 4,\n second: 5,\n};\nfunction partsOffset(dtf, date) {\n try {\n const formatted = dtf.formatToParts(date);\n const filled = [];\n for (let i = 0; i < formatted.length; i++) {\n const pos = typeToPos[formatted[i].type];\n if (pos !== undefined) {\n filled[pos] = parseInt(formatted[i].value, 10);\n }\n }\n return filled;\n }\n catch (error) {\n if (error instanceof RangeError) {\n return [NaN];\n }\n throw error;\n }\n}\nfunction hackyOffset(dtf, date) {\n const formatted = dtf.format(date);\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n const parsed = /(\\d+)\\/(\\d+)\\/(\\d+),? (\\d+):(\\d+):(\\d+)/.exec(formatted);\n // const [, fMonth, fDay, fYear, fHour, fMinute, fSecond] = parsed\n // return [fYear, fMonth, fDay, fHour, fMinute, fSecond]\n return [\n parseInt(parsed[3], 10),\n parseInt(parsed[1], 10),\n parseInt(parsed[2], 10),\n parseInt(parsed[4], 10),\n parseInt(parsed[5], 10),\n parseInt(parsed[6], 10),\n ];\n}\n// Get a cached Intl.DateTimeFormat instance for the IANA `timeZone`. This can be used\n// to get deterministic local date/time output according to the `en-US` locale which\n// can be used to extract local time parts as necessary.\nconst dtfCache = {};\n// New browsers use `hourCycle`, IE and Chrome <73 does not support it and uses `hour12`\nconst testDateFormatted = new Intl.DateTimeFormat('en-US', {\n hourCycle: 'h23',\n timeZone: 'America/New_York',\n year: 'numeric',\n month: '2-digit',\n day: '2-digit',\n hour: '2-digit',\n minute: '2-digit',\n second: '2-digit',\n}).format(new Date('2014-06-25T04:00:00.123Z'));\nconst hourCycleSupported = testDateFormatted === '06/25/2014, 00:00:00' ||\n testDateFormatted === '‎06‎/‎25‎/‎2014‎ ‎00‎:‎00‎:‎00';\nfunction getDateTimeFormat(timeZone) {\n if (!dtfCache[timeZone]) {\n dtfCache[timeZone] = hourCycleSupported\n ? new Intl.DateTimeFormat('en-US', {\n hourCycle: 'h23',\n timeZone: timeZone,\n year: 'numeric',\n month: 'numeric',\n day: '2-digit',\n hour: '2-digit',\n minute: '2-digit',\n second: '2-digit',\n })\n : new Intl.DateTimeFormat('en-US', {\n hour12: false,\n timeZone: timeZone,\n year: 'numeric',\n month: 'numeric',\n day: '2-digit',\n hour: '2-digit',\n minute: '2-digit',\n second: '2-digit',\n });\n }\n return dtfCache[timeZone];\n}\n","/**\n * Use instead of `new Date(Date.UTC(...))` to support years below 100 which doesn't work\n * otherwise due to the nature of the\n * [`Date` constructor](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date#interpretation_of_two-digit_years.\n *\n * For `Date.UTC(...)`, use `newDateUTC(...).getTime()`.\n */\nexport function newDateUTC(fullYear, month, day, hour, minute, second, millisecond) {\n const utcDate = new Date(0);\n utcDate.setUTCFullYear(fullYear, month, day);\n utcDate.setUTCHours(hour, minute, second, millisecond);\n return utcDate;\n}\n","import { tzTokenizeDate } from '../tzTokenizeDate/index.js';\nimport { newDateUTC } from '../newDateUTC/index.js';\nconst MILLISECONDS_IN_HOUR = 3600000;\nconst MILLISECONDS_IN_MINUTE = 60000;\nconst patterns = {\n timezone: /([Z+-].*)$/,\n timezoneZ: /^(Z)$/,\n timezoneHH: /^([+-]\\d{2})$/,\n timezoneHHMM: /^([+-])(\\d{2}):?(\\d{2})$/,\n};\n// Parse constious time zone offset formats to an offset in milliseconds\nexport function tzParseTimezone(timezoneString, date, isUtcDate) {\n // Empty string\n if (!timezoneString) {\n return 0;\n }\n // Z\n let token = patterns.timezoneZ.exec(timezoneString);\n if (token) {\n return 0;\n }\n let hours;\n let absoluteOffset;\n // ±hh\n token = patterns.timezoneHH.exec(timezoneString);\n if (token) {\n hours = parseInt(token[1], 10);\n if (!validateTimezone(hours)) {\n return NaN;\n }\n return -(hours * MILLISECONDS_IN_HOUR);\n }\n // ±hh:mm or ±hhmm\n token = patterns.timezoneHHMM.exec(timezoneString);\n if (token) {\n hours = parseInt(token[2], 10);\n const minutes = parseInt(token[3], 10);\n if (!validateTimezone(hours, minutes)) {\n return NaN;\n }\n absoluteOffset = Math.abs(hours) * MILLISECONDS_IN_HOUR + minutes * MILLISECONDS_IN_MINUTE;\n return token[1] === '+' ? -absoluteOffset : absoluteOffset;\n }\n // IANA time zone\n if (isValidTimezoneIANAString(timezoneString)) {\n date = new Date(date || Date.now());\n const utcDate = isUtcDate ? date : toUtcDate(date);\n const offset = calcOffset(utcDate, timezoneString);\n const fixedOffset = isUtcDate ? offset : fixOffset(date, offset, timezoneString);\n return -fixedOffset;\n }\n return NaN;\n}\nfunction toUtcDate(date) {\n return newDateUTC(date.getFullYear(), date.getMonth(), date.getDate(), date.getHours(), date.getMinutes(), date.getSeconds(), date.getMilliseconds());\n}\nfunction calcOffset(date, timezoneString) {\n const tokens = tzTokenizeDate(date, timezoneString);\n // ms dropped because it's not provided by tzTokenizeDate\n const asUTC = newDateUTC(tokens[0], tokens[1] - 1, tokens[2], tokens[3] % 24, tokens[4], tokens[5], 0).getTime();\n let asTS = date.getTime();\n const over = asTS % 1000;\n asTS -= over >= 0 ? over : 1000 + over;\n return asUTC - asTS;\n}\nfunction fixOffset(date, offset, timezoneString) {\n const localTS = date.getTime();\n // Our UTC time is just a guess because our offset is just a guess\n let utcGuess = localTS - offset;\n // Test whether the zone matches the offset for this ts\n const o2 = calcOffset(new Date(utcGuess), timezoneString);\n // If so, offset didn't change, and we're done\n if (offset === o2) {\n return offset;\n }\n // If not, change the ts by the difference in the offset\n utcGuess -= o2 - offset;\n // If that gives us the local time we want, we're done\n const o3 = calcOffset(new Date(utcGuess), timezoneString);\n if (o2 === o3) {\n return o2;\n }\n // If it's different, we're in a hole time. The offset has changed, but we don't adjust the time\n return Math.max(o2, o3);\n}\nfunction validateTimezone(hours, minutes) {\n return -23 <= hours && hours <= 23 && (minutes == null || (0 <= minutes && minutes <= 59));\n}\nconst validIANATimezoneCache = {};\nfunction isValidTimezoneIANAString(timeZoneString) {\n if (validIANATimezoneCache[timeZoneString])\n return true;\n try {\n new Intl.DateTimeFormat(undefined, { timeZone: timeZoneString });\n validIANATimezoneCache[timeZoneString] = true;\n return true;\n }\n catch (error) {\n return false;\n }\n}\n","import { tzIntlTimeZoneName } from '../../_lib/tzIntlTimeZoneName/index.js';\nimport { tzParseTimezone } from '../../_lib/tzParseTimezone/index.js';\nconst MILLISECONDS_IN_MINUTE = 60 * 1000;\nexport const formatters = {\n // Timezone (ISO-8601. If offset is 0, output is always `'Z'`)\n X: function (date, token, options) {\n const timezoneOffset = getTimeZoneOffset(options.timeZone, date);\n if (timezoneOffset === 0) {\n return 'Z';\n }\n switch (token) {\n // Hours and optional minutes\n case 'X':\n return formatTimezoneWithOptionalMinutes(timezoneOffset);\n // Hours, minutes and optional seconds without `:` delimeter\n // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n // so this token always has the same output as `XX`\n case 'XXXX':\n case 'XX': // Hours and minutes without `:` delimeter\n return formatTimezone(timezoneOffset);\n // Hours, minutes and optional seconds with `:` delimeter\n // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n // so this token always has the same output as `XXX`\n case 'XXXXX':\n case 'XXX': // Hours and minutes with `:` delimeter\n default:\n return formatTimezone(timezoneOffset, ':');\n }\n },\n // Timezone (ISO-8601. If offset is 0, output is `'+00:00'` or equivalent)\n x: function (date, token, options) {\n const timezoneOffset = getTimeZoneOffset(options.timeZone, date);\n switch (token) {\n // Hours and optional minutes\n case 'x':\n return formatTimezoneWithOptionalMinutes(timezoneOffset);\n // Hours, minutes and optional seconds without `:` delimeter\n // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n // so this token always has the same output as `xx`\n case 'xxxx':\n case 'xx': // Hours and minutes without `:` delimeter\n return formatTimezone(timezoneOffset);\n // Hours, minutes and optional seconds with `:` delimeter\n // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n // so this token always has the same output as `xxx`\n case 'xxxxx':\n case 'xxx': // Hours and minutes with `:` delimeter\n default:\n return formatTimezone(timezoneOffset, ':');\n }\n },\n // Timezone (GMT)\n O: function (date, token, options) {\n const timezoneOffset = getTimeZoneOffset(options.timeZone, date);\n switch (token) {\n // Short\n case 'O':\n case 'OO':\n case 'OOO':\n return 'GMT' + formatTimezoneShort(timezoneOffset, ':');\n // Long\n case 'OOOO':\n default:\n return 'GMT' + formatTimezone(timezoneOffset, ':');\n }\n },\n // Timezone (specific non-location)\n z: function (date, token, options) {\n switch (token) {\n // Short\n case 'z':\n case 'zz':\n case 'zzz':\n return tzIntlTimeZoneName('short', date, options);\n // Long\n case 'zzzz':\n default:\n return tzIntlTimeZoneName('long', date, options);\n }\n },\n};\nfunction getTimeZoneOffset(timeZone, originalDate) {\n const timeZoneOffset = timeZone\n ? tzParseTimezone(timeZone, originalDate, true) / MILLISECONDS_IN_MINUTE\n : originalDate?.getTimezoneOffset() ?? 0;\n if (Number.isNaN(timeZoneOffset)) {\n throw new RangeError('Invalid time zone specified: ' + timeZone);\n }\n return timeZoneOffset;\n}\nfunction addLeadingZeros(number, targetLength) {\n const sign = number < 0 ? '-' : '';\n let output = Math.abs(number).toString();\n while (output.length < targetLength) {\n output = '0' + output;\n }\n return sign + output;\n}\nfunction formatTimezone(offset, delimiter = '') {\n const sign = offset > 0 ? '-' : '+';\n const absOffset = Math.abs(offset);\n const hours = addLeadingZeros(Math.floor(absOffset / 60), 2);\n const minutes = addLeadingZeros(Math.floor(absOffset % 60), 2);\n return sign + hours + delimiter + minutes;\n}\nfunction formatTimezoneWithOptionalMinutes(offset, delimiter) {\n if (offset % 60 === 0) {\n const sign = offset > 0 ? '-' : '+';\n return sign + addLeadingZeros(Math.abs(offset) / 60, 2);\n }\n return formatTimezone(offset, delimiter);\n}\nfunction formatTimezoneShort(offset, delimiter = '') {\n const sign = offset > 0 ? '-' : '+';\n const absOffset = Math.abs(offset);\n const hours = Math.floor(absOffset / 60);\n const minutes = absOffset % 60;\n if (minutes === 0) {\n return sign + String(hours);\n }\n return sign + String(hours) + delimiter + addLeadingZeros(minutes, 2);\n}\n","/**\n * Google Chrome as of 67.0.3396.87 introduced timezones with offset that includes seconds.\n * They usually appear for dates that denote time before the timezones were introduced\n * (e.g. for 'Europe/Prague' timezone the offset is GMT+00:57:44 before 1 October 1891\n * and GMT+01:00:00 after that date)\n *\n * Date#getTimezoneOffset returns the offset in minutes and would return 57 for the example above,\n * which would lead to incorrect calculations.\n *\n * This function returns the timezone offset in milliseconds that takes seconds in account.\n */\nexport function getTimezoneOffsetInMilliseconds(date) {\n const utcDate = new Date(Date.UTC(date.getFullYear(), date.getMonth(), date.getDate(), date.getHours(), date.getMinutes(), date.getSeconds(), date.getMilliseconds()));\n utcDate.setUTCFullYear(date.getFullYear());\n return +date - +utcDate;\n}\n","/** Regex to identify the presence of a time zone specifier in a date string */\nexport const tzPattern = /(Z|[+-]\\d{2}(?::?\\d{2})?| UTC| [a-zA-Z]+\\/[a-zA-Z_]+(?:\\/[a-zA-Z_]+)?)$/;\n","import { getTimezoneOffsetInMilliseconds } from '../_lib/getTimezoneOffsetInMilliseconds/index.js';\nimport { tzParseTimezone } from '../_lib/tzParseTimezone/index.js';\nimport { tzPattern } from '../_lib/tzPattern/index.js';\nconst MILLISECONDS_IN_HOUR = 3600000;\nconst MILLISECONDS_IN_MINUTE = 60000;\nconst DEFAULT_ADDITIONAL_DIGITS = 2;\nconst patterns = {\n dateTimePattern: /^([0-9W+-]+)(T| )(.*)/,\n datePattern: /^([0-9W+-]+)(.*)/,\n plainTime: /:/,\n // year tokens\n YY: /^(\\d{2})$/,\n YYY: [\n /^([+-]\\d{2})$/, // 0 additional digits\n /^([+-]\\d{3})$/, // 1 additional digit\n /^([+-]\\d{4})$/, // 2 additional digits\n ],\n YYYY: /^(\\d{4})/,\n YYYYY: [\n /^([+-]\\d{4})/, // 0 additional digits\n /^([+-]\\d{5})/, // 1 additional digit\n /^([+-]\\d{6})/, // 2 additional digits\n ],\n // date tokens\n MM: /^-(\\d{2})$/,\n DDD: /^-?(\\d{3})$/,\n MMDD: /^-?(\\d{2})-?(\\d{2})$/,\n Www: /^-?W(\\d{2})$/,\n WwwD: /^-?W(\\d{2})-?(\\d{1})$/,\n HH: /^(\\d{2}([.,]\\d*)?)$/,\n HHMM: /^(\\d{2}):?(\\d{2}([.,]\\d*)?)$/,\n HHMMSS: /^(\\d{2}):?(\\d{2}):?(\\d{2}([.,]\\d*)?)$/,\n // time zone tokens (to identify the presence of a tz)\n timeZone: tzPattern,\n};\n/**\n * @name toDate\n * @category Common Helpers\n * @summary Convert the given argument to an instance of Date.\n *\n * @description\n * Convert the given argument to an instance of Date.\n *\n * If the argument is an instance of Date, the function returns its clone.\n *\n * If the argument is a number, it is treated as a timestamp.\n *\n * If an argument is a string, the function tries to parse it.\n * Function accepts complete ISO 8601 formats as well as partial implementations.\n * ISO 8601: http://en.wikipedia.org/wiki/ISO_8601\n * If the function cannot parse the string or the values are invalid, it returns Invalid Date.\n *\n * If the argument is none of the above, the function returns Invalid Date.\n *\n * **Note**: *all* Date arguments passed to any *date-fns* function is processed by `toDate`.\n * All *date-fns* functions will throw `RangeError` if `options.additionalDigits` is not 0, 1, 2 or undefined.\n *\n * @param argument the value to convert\n * @param options the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - the additional number of digits in the extended year format\n * @param {string} [options.timeZone=''] - used to specify the IANA time zone offset of a date String.\n *\n * @returns the parsed date in the local time zone\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // Convert string '2014-02-11T11:30:30' to date:\n * const result = toDate('2014-02-11T11:30:30')\n * //=> Tue Feb 11 2014 11:30:30\n *\n * @example\n * // Convert string '+02014101' to date,\n * // if the additional number of digits in the extended year format is 1:\n * const result = toDate('+02014101', {additionalDigits: 1})\n * //=> Fri Apr 11 2014 00:00:00\n */\nexport function toDate(argument, options = {}) {\n if (arguments.length < 1) {\n throw new TypeError('1 argument required, but only ' + arguments.length + ' present');\n }\n if (argument === null) {\n return new Date(NaN);\n }\n const additionalDigits = options.additionalDigits == null ? DEFAULT_ADDITIONAL_DIGITS : Number(options.additionalDigits);\n if (additionalDigits !== 2 && additionalDigits !== 1 && additionalDigits !== 0) {\n throw new RangeError('additionalDigits must be 0, 1 or 2');\n }\n // Clone the date\n if (argument instanceof Date ||\n (typeof argument === 'object' && Object.prototype.toString.call(argument) === '[object Date]')) {\n // Prevent the date to lose the milliseconds when passed to new Date() in IE10\n return new Date(argument.getTime());\n }\n else if (typeof argument === 'number' ||\n Object.prototype.toString.call(argument) === '[object Number]') {\n return new Date(argument);\n }\n else if (!(Object.prototype.toString.call(argument) === '[object String]')) {\n return new Date(NaN);\n }\n const dateStrings = splitDateString(argument);\n const { year, restDateString } = parseYear(dateStrings.date, additionalDigits);\n const date = parseDate(restDateString, year);\n if (date === null || isNaN(date.getTime())) {\n return new Date(NaN);\n }\n if (date) {\n const timestamp = date.getTime();\n let time = 0;\n let offset;\n if (dateStrings.time) {\n time = parseTime(dateStrings.time);\n if (time === null || isNaN(time)) {\n return new Date(NaN);\n }\n }\n if (dateStrings.timeZone || options.timeZone) {\n offset = tzParseTimezone(dateStrings.timeZone || options.timeZone, new Date(timestamp + time));\n if (isNaN(offset)) {\n return new Date(NaN);\n }\n }\n else {\n // get offset accurate to hour in time zones that change offset\n offset = getTimezoneOffsetInMilliseconds(new Date(timestamp + time));\n offset = getTimezoneOffsetInMilliseconds(new Date(timestamp + time + offset));\n }\n return new Date(timestamp + time + offset);\n }\n else {\n return new Date(NaN);\n }\n}\nfunction splitDateString(dateString) {\n const dateStrings = {};\n let parts = patterns.dateTimePattern.exec(dateString);\n let timeString;\n if (!parts) {\n parts = patterns.datePattern.exec(dateString);\n if (parts) {\n dateStrings.date = parts[1];\n timeString = parts[2];\n }\n else {\n dateStrings.date = null;\n timeString = dateString;\n }\n }\n else {\n dateStrings.date = parts[1];\n timeString = parts[3];\n }\n if (timeString) {\n const token = patterns.timeZone.exec(timeString);\n if (token) {\n dateStrings.time = timeString.replace(token[1], '');\n dateStrings.timeZone = token[1].trim();\n }\n else {\n dateStrings.time = timeString;\n }\n }\n return dateStrings;\n}\nfunction parseYear(dateString, additionalDigits) {\n if (dateString) {\n const patternYYY = patterns.YYY[additionalDigits];\n const patternYYYYY = patterns.YYYYY[additionalDigits];\n // YYYY or ±YYYYY\n let token = patterns.YYYY.exec(dateString) || patternYYYYY.exec(dateString);\n if (token) {\n const yearString = token[1];\n return {\n year: parseInt(yearString, 10),\n restDateString: dateString.slice(yearString.length),\n };\n }\n // YY or ±YYY\n token = patterns.YY.exec(dateString) || patternYYY.exec(dateString);\n if (token) {\n const centuryString = token[1];\n return {\n year: parseInt(centuryString, 10) * 100,\n restDateString: dateString.slice(centuryString.length),\n };\n }\n }\n // Invalid ISO-formatted year\n return {\n year: null,\n };\n}\nfunction parseDate(dateString, year) {\n // Invalid ISO-formatted year\n if (year === null) {\n return null;\n }\n let date;\n let month;\n let week;\n // YYYY\n if (!dateString || !dateString.length) {\n date = new Date(0);\n date.setUTCFullYear(year);\n return date;\n }\n // YYYY-MM\n let token = patterns.MM.exec(dateString);\n if (token) {\n date = new Date(0);\n month = parseInt(token[1], 10) - 1;\n if (!validateDate(year, month)) {\n return new Date(NaN);\n }\n date.setUTCFullYear(year, month);\n return date;\n }\n // YYYY-DDD or YYYYDDD\n token = patterns.DDD.exec(dateString);\n if (token) {\n date = new Date(0);\n const dayOfYear = parseInt(token[1], 10);\n if (!validateDayOfYearDate(year, dayOfYear)) {\n return new Date(NaN);\n }\n date.setUTCFullYear(year, 0, dayOfYear);\n return date;\n }\n // yyyy-MM-dd or YYYYMMDD\n token = patterns.MMDD.exec(dateString);\n if (token) {\n date = new Date(0);\n month = parseInt(token[1], 10) - 1;\n const day = parseInt(token[2], 10);\n if (!validateDate(year, month, day)) {\n return new Date(NaN);\n }\n date.setUTCFullYear(year, month, day);\n return date;\n }\n // YYYY-Www or YYYYWww\n token = patterns.Www.exec(dateString);\n if (token) {\n week = parseInt(token[1], 10) - 1;\n if (!validateWeekDate(week)) {\n return new Date(NaN);\n }\n return dayOfISOWeekYear(year, week);\n }\n // YYYY-Www-D or YYYYWwwD\n token = patterns.WwwD.exec(dateString);\n if (token) {\n week = parseInt(token[1], 10) - 1;\n const dayOfWeek = parseInt(token[2], 10) - 1;\n if (!validateWeekDate(week, dayOfWeek)) {\n return new Date(NaN);\n }\n return dayOfISOWeekYear(year, week, dayOfWeek);\n }\n // Invalid ISO-formatted date\n return null;\n}\nfunction parseTime(timeString) {\n let hours;\n let minutes;\n // hh\n let token = patterns.HH.exec(timeString);\n if (token) {\n hours = parseFloat(token[1].replace(',', '.'));\n if (!validateTime(hours)) {\n return NaN;\n }\n return (hours % 24) * MILLISECONDS_IN_HOUR;\n }\n // hh:mm or hhmm\n token = patterns.HHMM.exec(timeString);\n if (token) {\n hours = parseInt(token[1], 10);\n minutes = parseFloat(token[2].replace(',', '.'));\n if (!validateTime(hours, minutes)) {\n return NaN;\n }\n return (hours % 24) * MILLISECONDS_IN_HOUR + minutes * MILLISECONDS_IN_MINUTE;\n }\n // hh:mm:ss or hhmmss\n token = patterns.HHMMSS.exec(timeString);\n if (token) {\n hours = parseInt(token[1], 10);\n minutes = parseInt(token[2], 10);\n const seconds = parseFloat(token[3].replace(',', '.'));\n if (!validateTime(hours, minutes, seconds)) {\n return NaN;\n }\n return (hours % 24) * MILLISECONDS_IN_HOUR + minutes * MILLISECONDS_IN_MINUTE + seconds * 1000;\n }\n // Invalid ISO-formatted time\n return null;\n}\nfunction dayOfISOWeekYear(isoWeekYear, week, day) {\n week = week || 0;\n day = day || 0;\n const date = new Date(0);\n date.setUTCFullYear(isoWeekYear, 0, 4);\n const fourthOfJanuaryDay = date.getUTCDay() || 7;\n const diff = week * 7 + day + 1 - fourthOfJanuaryDay;\n date.setUTCDate(date.getUTCDate() + diff);\n return date;\n}\n// Validation functions\nconst DAYS_IN_MONTH = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];\nconst DAYS_IN_MONTH_LEAP_YEAR = [31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];\nfunction isLeapYearIndex(year) {\n return year % 400 === 0 || (year % 4 === 0 && year % 100 !== 0);\n}\nfunction validateDate(year, month, date) {\n if (month < 0 || month > 11) {\n return false;\n }\n if (date != null) {\n if (date < 1) {\n return false;\n }\n const isLeapYear = isLeapYearIndex(year);\n if (isLeapYear && date > DAYS_IN_MONTH_LEAP_YEAR[month]) {\n return false;\n }\n if (!isLeapYear && date > DAYS_IN_MONTH[month]) {\n return false;\n }\n }\n return true;\n}\nfunction validateDayOfYearDate(year, dayOfYear) {\n if (dayOfYear < 1) {\n return false;\n }\n const isLeapYear = isLeapYearIndex(year);\n if (isLeapYear && dayOfYear > 366) {\n return false;\n }\n if (!isLeapYear && dayOfYear > 365) {\n return false;\n }\n return true;\n}\nfunction validateWeekDate(week, day) {\n if (week < 0 || week > 52) {\n return false;\n }\n if (day != null && (day < 0 || day > 6)) {\n return false;\n }\n return true;\n}\nfunction validateTime(hours, minutes, seconds) {\n if (hours < 0 || hours >= 25) {\n return false;\n }\n if (minutes != null && (minutes < 0 || minutes >= 60)) {\n return false;\n }\n if (seconds != null && (seconds < 0 || seconds >= 60)) {\n return false;\n }\n return true;\n}\n","import { format as dateFnsFormat } from 'date-fns/format';\nimport { formatters } from './formatters/index.js';\nimport { toDate } from '../toDate/index.js';\nconst tzFormattingTokensRegExp = /([xXOz]+)|''|'(''|[^'])+('|$)/g;\n/**\n * @name format\n * @category Common Helpers\n * @summary Format the date.\n *\n * @description\n * Return the formatted date string in the given format. The result may consty by locale.\n *\n * > ⚠️ Please note that the `format` tokens differ from Moment.js and other libraries.\n * > See: https://git.io/fxCyr\n *\n * The characters wrapped between two single quotes characters (') are escaped.\n * Two single quotes in a row, whether inside or outside a quoted sequence, represent a 'real' single quote.\n * (see the last example)\n *\n * Format of the string is based on Unicode Technical Standard #35:\n * https://www.unicode.org/reports/tr35/tr35-dates.html#Date_Field_Symbol_Table\n * with a few additions (see note 7 below the table).\n *\n * Accepted patterns:\n * | Unit | Pattern | Result examples | Notes |\n * |---------------------------------|---------|-----------------------------------|-------|\n * | Era | G..GGG | AD, BC | |\n * | | GGGG | Anno Domini, Before Christ | 2 |\n * | | GGGGG | A, B | |\n * | Calendar year | y | 44, 1, 1900, 2017 | 5 |\n * | | yo | 44th, 1st, 0th, 17th | 5,7 |\n * | | yy | 44, 01, 00, 17 | 5 |\n * | | yyy | 044, 001, 1900, 2017 | 5 |\n * | | yyyy | 0044, 0001, 1900, 2017 | 5 |\n * | | yyyyy | ... | 3,5 |\n * | Local week-numbering year | Y | 44, 1, 1900, 2017 | 5 |\n * | | Yo | 44th, 1st, 1900th, 2017th | 5,7 |\n * | | YY | 44, 01, 00, 17 | 5,8 |\n * | | YYY | 044, 001, 1900, 2017 | 5 |\n * | | YYYY | 0044, 0001, 1900, 2017 | 5,8 |\n * | | YYYYY | ... | 3,5 |\n * | ISO week-numbering year | R | -43, 0, 1, 1900, 2017 | 5,7 |\n * | | RR | -43, 00, 01, 1900, 2017 | 5,7 |\n * | | RRR | -043, 000, 001, 1900, 2017 | 5,7 |\n * | | RRRR | -0043, 0000, 0001, 1900, 2017 | 5,7 |\n * | | RRRRR | ... | 3,5,7 |\n * | Extended year | u | -43, 0, 1, 1900, 2017 | 5 |\n * | | uu | -43, 01, 1900, 2017 | 5 |\n * | | uuu | -043, 001, 1900, 2017 | 5 |\n * | | uuuu | -0043, 0001, 1900, 2017 | 5 |\n * | | uuuuu | ... | 3,5 |\n * | Quarter (formatting) | Q | 1, 2, 3, 4 | |\n * | | Qo | 1st, 2nd, 3rd, 4th | 7 |\n * | | QQ | 01, 02, 03, 04 | |\n * | | QQQ | Q1, Q2, Q3, Q4 | |\n * | | QQQQ | 1st quarter, 2nd quarter, ... | 2 |\n * | | QQQQQ | 1, 2, 3, 4 | 4 |\n * | Quarter (stand-alone) | q | 1, 2, 3, 4 | |\n * | | qo | 1st, 2nd, 3rd, 4th | 7 |\n * | | qq | 01, 02, 03, 04 | |\n * | | qqq | Q1, Q2, Q3, Q4 | |\n * | | qqqq | 1st quarter, 2nd quarter, ... | 2 |\n * | | qqqqq | 1, 2, 3, 4 | 4 |\n * | Month (formatting) | M | 1, 2, ..., 12 | |\n * | | Mo | 1st, 2nd, ..., 12th | 7 |\n * | | MM | 01, 02, ..., 12 | |\n * | | MMM | Jan, Feb, ..., Dec | |\n * | | MMMM | January, February, ..., December | 2 |\n * | | MMMMM | J, F, ..., D | |\n * | Month (stand-alone) | L | 1, 2, ..., 12 | |\n * | | Lo | 1st, 2nd, ..., 12th | 7 |\n * | | LL | 01, 02, ..., 12 | |\n * | | LLL | Jan, Feb, ..., Dec | |\n * | | LLLL | January, February, ..., December | 2 |\n * | | LLLLL | J, F, ..., D | |\n * | Local week of year | w | 1, 2, ..., 53 | |\n * | | wo | 1st, 2nd, ..., 53th | 7 |\n * | | ww | 01, 02, ..., 53 | |\n * | ISO week of year | I | 1, 2, ..., 53 | 7 |\n * | | Io | 1st, 2nd, ..., 53th | 7 |\n * | | II | 01, 02, ..., 53 | 7 |\n * | Day of month | d | 1, 2, ..., 31 | |\n * | | do | 1st, 2nd, ..., 31st | 7 |\n * | | dd | 01, 02, ..., 31 | |\n * | Day of year | D | 1, 2, ..., 365, 366 | 8 |\n * | | Do | 1st, 2nd, ..., 365th, 366th | 7 |\n * | | DD | 01, 02, ..., 365, 366 | 8 |\n * | | DDD | 001, 002, ..., 365, 366 | |\n * | | DDDD | ... | 3 |\n * | Day of week (formatting) | E..EEE | Mon, Tue, Wed, ..., Su | |\n * | | EEEE | Monday, Tuesday, ..., Sunday | 2 |\n * | | EEEEE | M, T, W, T, F, S, S | |\n * | | EEEEEE | Mo, Tu, We, Th, Fr, Su, Sa | |\n * | ISO day of week (formatting) | i | 1, 2, 3, ..., 7 | 7 |\n * | | io | 1st, 2nd, ..., 7th | 7 |\n * | | ii | 01, 02, ..., 07 | 7 |\n * | | iii | Mon, Tue, Wed, ..., Su | 7 |\n * | | iiii | Monday, Tuesday, ..., Sunday | 2,7 |\n * | | iiiii | M, T, W, T, F, S, S | 7 |\n * | | iiiiii | Mo, Tu, We, Th, Fr, Su, Sa | 7 |\n * | Local day of week (formatting) | e | 2, 3, 4, ..., 1 | |\n * | | eo | 2nd, 3rd, ..., 1st | 7 |\n * | | ee | 02, 03, ..., 01 | |\n * | | eee | Mon, Tue, Wed, ..., Su | |\n * | | eeee | Monday, Tuesday, ..., Sunday | 2 |\n * | | eeeee | M, T, W, T, F, S, S | |\n * | | eeeeee | Mo, Tu, We, Th, Fr, Su, Sa | |\n * | Local day of week (stand-alone) | c | 2, 3, 4, ..., 1 | |\n * | | co | 2nd, 3rd, ..., 1st | 7 |\n * | | cc | 02, 03, ..., 01 | |\n * | | ccc | Mon, Tue, Wed, ..., Su | |\n * | | cccc | Monday, Tuesday, ..., Sunday | 2 |\n * | | ccccc | M, T, W, T, F, S, S | |\n * | | cccccc | Mo, Tu, We, Th, Fr, Su, Sa | |\n * | AM, PM | a..aaa | AM, PM | |\n * | | aaaa | a.m., p.m. | 2 |\n * | | aaaaa | a, p | |\n * | AM, PM, noon, midnight | b..bbb | AM, PM, noon, midnight | |\n * | | bbbb | a.m., p.m., noon, midnight | 2 |\n * | | bbbbb | a, p, n, mi | |\n * | Flexible day period | B..BBB | at night, in the morning, ... | |\n * | | BBBB | at night, in the morning, ... | 2 |\n * | | BBBBB | at night, in the morning, ... | |\n * | Hour [1-12] | h | 1, 2, ..., 11, 12 | |\n * | | ho | 1st, 2nd, ..., 11th, 12th | 7 |\n * | | hh | 01, 02, ..., 11, 12 | |\n * | Hour [0-23] | H | 0, 1, 2, ..., 23 | |\n * | | Ho | 0th, 1st, 2nd, ..., 23rd | 7 |\n * | | HH | 00, 01, 02, ..., 23 | |\n * | Hour [0-11] | K | 1, 2, ..., 11, 0 | |\n * | | Ko | 1st, 2nd, ..., 11th, 0th | 7 |\n * | | KK | 1, 2, ..., 11, 0 | |\n * | Hour [1-24] | k | 24, 1, 2, ..., 23 | |\n * | | ko | 24th, 1st, 2nd, ..., 23rd | 7 |\n * | | kk | 24, 01, 02, ..., 23 | |\n * | Minute | m | 0, 1, ..., 59 | |\n * | | mo | 0th, 1st, ..., 59th | 7 |\n * | | mm | 00, 01, ..., 59 | |\n * | Second | s | 0, 1, ..., 59 | |\n * | | so | 0th, 1st, ..., 59th | 7 |\n * | | ss | 00, 01, ..., 59 | |\n * | Fraction of second | S | 0, 1, ..., 9 | |\n * | | SS | 00, 01, ..., 99 | |\n * | | SSS | 000, 0001, ..., 999 | |\n * | | SSSS | ... | 3 |\n * | Timezone (ISO-8601 w/ Z) | X | -08, +0530, Z | |\n * | | XX | -0800, +0530, Z | |\n * | | XXX | -08:00, +05:30, Z | |\n * | | XXXX | -0800, +0530, Z, +123456 | 2 |\n * | | XXXXX | -08:00, +05:30, Z, +12:34:56 | |\n * | Timezone (ISO-8601 w/o Z) | x | -08, +0530, +00 | |\n * | | xx | -0800, +0530, +0000 | |\n * | | xxx | -08:00, +05:30, +00:00 | 2 |\n * | | xxxx | -0800, +0530, +0000, +123456 | |\n * | | xxxxx | -08:00, +05:30, +00:00, +12:34:56 | |\n * | Timezone (GMT) | O...OOO | GMT-8, GMT+5:30, GMT+0 | |\n * | | OOOO | GMT-08:00, GMT+05:30, GMT+00:00 | 2 |\n * | Timezone (specific non-locat.) | z...zzz | PDT, EST, CEST | 6 |\n * | | zzzz | Pacific Daylight Time | 2,6 |\n * | Seconds timestamp | t | 512969520 | 7 |\n * | | tt | ... | 3,7 |\n * | Milliseconds timestamp | T | 512969520900 | 7 |\n * | | TT | ... | 3,7 |\n * | Long localized date | P | 05/29/1453 | 7 |\n * | | PP | May 29, 1453 | 7 |\n * | | PPP | May 29th, 1453 | 7 |\n * | | PPPP | Sunday, May 29th, 1453 | 2,7 |\n * | Long localized time | p | 12:00 AM | 7 |\n * | | pp | 12:00:00 AM | 7 |\n * | | ppp | 12:00:00 AM GMT+2 | 7 |\n * | | pppp | 12:00:00 AM GMT+02:00 | 2,7 |\n * | Combination of date and time | Pp | 05/29/1453, 12:00 AM | 7 |\n * | | PPpp | May 29, 1453, 12:00:00 AM | 7 |\n * | | PPPppp | May 29th, 1453 at ... | 7 |\n * | | PPPPpppp| Sunday, May 29th, 1453 at ... | 2,7 |\n * Notes:\n * 1. \"Formatting\" units (e.g. formatting quarter) in the default en-US locale\n * are the same as \"stand-alone\" units, but are different in some languages.\n * \"Formatting\" units are declined according to the rules of the language\n * in the context of a date. \"Stand-alone\" units are always nominative singular:\n *\n * `format(new Date(2017, 10, 6), 'do LLLL', {locale: cs}) //=> '6. listopad'`\n *\n * `format(new Date(2017, 10, 6), 'do MMMM', {locale: cs}) //=> '6. listopadu'`\n *\n * 2. Any sequence of the identical letters is a pattern, unless it is escaped by\n * the single quote characters (see below).\n * If the sequence is longer than listed in table (e.g. `EEEEEEEEEEE`)\n * the output will be the same as default pattern for this unit, usually\n * the longest one (in case of ISO weekdays, `EEEE`). Default patterns for units\n * are marked with \"2\" in the last column of the table.\n *\n * `format(new Date(2017, 10, 6), 'MMM') //=> 'Nov'`\n *\n * `format(new Date(2017, 10, 6), 'MMMM') //=> 'November'`\n *\n * `format(new Date(2017, 10, 6), 'MMMMM') //=> 'N'`\n *\n * `format(new Date(2017, 10, 6), 'MMMMMM') //=> 'November'`\n *\n * `format(new Date(2017, 10, 6), 'MMMMMMM') //=> 'November'`\n *\n * 3. Some patterns could be unlimited length (such as `yyyyyyyy`).\n * The output will be padded with zeros to match the length of the pattern.\n *\n * `format(new Date(2017, 10, 6), 'yyyyyyyy') //=> '00002017'`\n *\n * 4. `QQQQQ` and `qqqqq` could be not strictly numerical in some locales.\n * These tokens represent the shortest form of the quarter.\n *\n * 5. The main difference between `y` and `u` patterns are B.C. years:\n *\n * | Year | `y` | `u` |\n * |------|-----|-----|\n * | AC 1 | 1 | 1 |\n * | BC 1 | 1 | 0 |\n * | BC 2 | 2 | -1 |\n *\n * Also `yy` always returns the last two digits of a year,\n * while `uu` pads single digit years to 2 characters and returns other years unchanged:\n *\n * | Year | `yy` | `uu` |\n * |------|------|------|\n * | 1 | 01 | 01 |\n * | 14 | 14 | 14 |\n * | 376 | 76 | 376 |\n * | 1453 | 53 | 1453 |\n *\n * The same difference is true for local and ISO week-numbering years (`Y` and `R`),\n * except local week-numbering years are dependent on `options.weekStartsOn`\n * and `options.firstWeekContainsDate` (compare [getISOWeekYear]{@link https://date-fns.org/docs/getISOWeekYear}\n * and [getWeekYear]{@link https://date-fns.org/docs/getWeekYear}).\n *\n * 6. Specific non-location timezones are created using the Intl browser API. The output is determined by the\n * preferred standard of the current locale (en-US by default) which may not always give the expected result.\n * For this reason it is recommended to supply a `locale` in the format options when formatting a time zone name.\n *\n * 7. These patterns are not in the Unicode Technical Standard #35:\n * - `i`: ISO day of week\n * - `I`: ISO week of year\n * - `R`: ISO week-numbering year\n * - `t`: seconds timestamp\n * - `T`: milliseconds timestamp\n * - `o`: ordinal number modifier\n * - `P`: long localized date\n * - `p`: long localized time\n *\n * 8. These tokens are often confused with others. See: https://git.io/fxCyr\n *\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole\n * library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * - The second argument is now required for the sake of explicitness.\n *\n * ```javascript\n * // Before v2.0.0\n * format(new Date(2016, 0, 1))\n *\n * // v2.0.0 onward\n * format(new Date(2016, 0, 1), \"yyyy-MM-dd'T'HH:mm:ss.SSSxxx\")\n * ```\n *\n * - New format string API for `format` function\n * which is based on [Unicode Technical Standard\n * #35](https://www.unicode.org/reports/tr35/tr35-dates.html#Date_Field_Symbol_Table). See [this\n * post](https://blog.date-fns.org/post/unicode-tokens-in-date-fns-v2-sreatyki91jg) for more details.\n *\n * - Characters are now escaped using single quote symbols (`'`) instead of square brackets.\n *\n * @param date the original date\n * @param formatStr the string of tokens\n * @param options the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link\n * https://date-fns.org/docs/toDate}\n * @param {0|1|2|3|4|5|6} [options.weekStartsOn=0] - the index of the first day of the week (0 - Sunday)\n * @param {Number} [options.firstWeekContainsDate=1] - the day of January, which is\n * @param {Locale} [options.locale=defaultLocale] - the locale object. See\n * [Locale]{@link https://date-fns.org/docs/Locale}\n * @param {Boolean} [options.awareOfUnicodeTokens=false] - if true, allows usage of Unicode tokens causes confusion:\n * - Some of the day of year tokens (`D`, `DD`) that are confused with the day of month tokens (`d`, `dd`).\n * - Some of the local week-numbering year tokens (`YY`, `YYYY`) that are confused with the calendar year tokens\n * (`yy`, `yyyy`). See: https://git.io/fxCyr\n * @param {String} [options.timeZone=''] - used to specify the IANA time zone offset of a date String.\n * @param {Date|Number} [options.originalDate] - can be used to pass the original unmodified date to `format` to\n * improve correctness of the replaced timezone token close to the DST threshold.\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n * @throws {RangeError} `options.locale` must contain `localize` property\n * @throws {RangeError} `options.locale` must contain `formatLong` property\n * @throws {RangeError} `options.weekStartsOn` must be between 0 and 6\n * @throws {RangeError} `options.firstWeekContainsDate` must be between 1 and 7\n * @throws {RangeError} `options.awareOfUnicodeTokens` must be set to `true` to use `XX` token; see:\n * https://git.io/fxCyr\n *\n * @example\n * // Represent 11 February 2014 in middle-endian format:\n * const result = format(new Date(2014, 1, 11), 'MM/dd/yyyy')\n * //=> '02/11/2014'\n *\n * @example\n * // Represent 2 July 2014 in Esperanto:\n * import { eoLocale } from 'date-fns/locale/eo'\n * const result = format(new Date(2014, 6, 2), \"do 'de' MMMM yyyy\", {\n * locale: eoLocale\n * })\n * //=> '2-a de julio 2014'\n *\n * @example\n * // Escape string by single quote characters:\n * const result = format(new Date(2014, 6, 2, 15), \"h 'o''clock'\")\n * //=> \"3 o'clock\"\n */\nexport function format(date, formatStr, options = {}) {\n formatStr = String(formatStr);\n const matches = formatStr.match(tzFormattingTokensRegExp);\n if (matches) {\n const d = toDate(options.originalDate || date, options);\n // Work through each match and replace the tz token in the format string with the quoted\n // formatted time zone so the remaining tokens can be filled in by date-fns#format.\n formatStr = matches.reduce(function (result, token) {\n if (token[0] === \"'\") {\n return result; // This is a quoted portion, matched only to ensure we don't match inside it\n }\n const pos = result.indexOf(token);\n const precededByQuotedSection = result[pos - 1] === \"'\";\n const replaced = result.replace(token, \"'\" + formatters[token[0]](d, token, options) + \"'\");\n // If the replacement results in two adjoining quoted strings, the back to back quotes\n // are removed, so it doesn't look like an escaped quote.\n return precededByQuotedSection\n ? replaced.substring(0, pos - 1) + replaced.substring(pos + 1)\n : replaced;\n }, formatStr);\n }\n return dateFnsFormat(date, formatStr, options);\n}\n","import { tzParseTimezone } from '../_lib/tzParseTimezone/index.js';\nimport { toDate } from '../toDate/index.js';\n/**\n * @name toZonedTime\n * @category Time Zone Helpers\n * @summary Get a date/time representing local time in a given time zone from the UTC date\n *\n * @description\n * Returns a date instance with values representing the local time in the time zone\n * specified of the UTC time from the date provided. In other words, when the new date\n * is formatted it will show the equivalent hours in the target time zone regardless\n * of the current system time zone.\n *\n * @param date the date with the relevant UTC time\n * @param timeZone the time zone to get local time for, can be an offset or IANA time zone\n * @param options the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n *\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // In June 10am UTC is 6am in New York (-04:00)\n * const result = toZonedTime('2014-06-25T10:00:00.000Z', 'America/New_York')\n * //=> Jun 25 2014 06:00:00\n */\nexport function toZonedTime(date, timeZone, options) {\n date = toDate(date, options);\n const offsetMilliseconds = tzParseTimezone(timeZone, date, true);\n const d = new Date(date.getTime() - offsetMilliseconds);\n const resultDate = new Date(0);\n resultDate.setFullYear(d.getUTCFullYear(), d.getUTCMonth(), d.getUTCDate());\n resultDate.setHours(d.getUTCHours(), d.getUTCMinutes(), d.getUTCSeconds(), d.getUTCMilliseconds());\n return resultDate;\n}\n","/*\n * Copyright (C) 2023 Nethesis S.r.l.\n * SPDX-License-Identifier: GPL-3.0-or-later\n */\n\nimport { formatDistance, subDays, isBefore } from \"date-fns\";\nimport { parseISO } from \"date-fns\";\nimport { format, toZonedTime } from \"date-fns-tz\";\n\nexport const useDateTimeService = () => {\n const formatDate = format;\n const formatDateDistance = formatDistance;\n const subDaysFn = subDays;\n const parseIsoDate = parseISO;\n const dateIsBefore = isBefore;\n\n const formatInTimeZone = (date: Date | string, fmt: string, tz: string) => {\n return format(toZonedTime(date, tz), fmt, { timeZone: tz });\n };\n\n return {\n formatDate,\n formatDateDistance,\n subDays: subDaysFn,\n parseIsoDate,\n dateIsBefore,\n formatInTimeZone,\n };\n};\n","/*\n * Copyright (C) 2023 Nethesis S.r.l.\n * SPDX-License-Identifier: GPL-3.0-or-later\n */\n\nimport {\n X,\n ArrowRight,\n Bell,\n User,\n Search,\n Expand,\n Minimize2,\n RotateCcw,\n Download,\n ExternalLink,\n TrendingUp,\n Settings,\n ChevronDown,\n ChevronUp,\n ChevronLeft,\n ChevronRight,\n Info,\n Package,\n Plus,\n Rocket,\n Cpu,\n Save,\n Copy,\n Server,\n Box,\n Link,\n Edit,\n Key,\n Star,\n Check,\n ZoomIn,\n Calendar,\n AlertTriangle,\n Wrench,\n Network,\n Database,\n HardDrive,\n ArrowDown,\n Clock,\n Hourglass,\n CheckCircle,\n CircleX,\n Power,\n FileText,\n MoreVertical,\n RotateCw,\n Trash2,\n Eraser,\n Rows,\n Columns,\n Library,\n Users,\n Router,\n Shield,\n ServerCog,\n ShieldCheck,\n BookOpen,\n AtSign,\n User as UserIcon,\n HelpCircle,\n Mail,\n Lock,\n Folder,\n Asterisk,\n\n UserCheck,\n Ruler,\n Filter,\n XCircle,\n Award,\n FolderOpen,\n Inbox,\n CloudUpload\n} from \"lucide-vue-next\";\n\nexport const useIconService = () => {\n return {\n Close20: X,\n ArrowRight20: ArrowRight,\n ArrowRight32: ArrowRight,\n Notification20: Bell,\n UserAvatar20: User,\n UserAvatar32: User,\n Search20: Search,\n RowExpand20: Expand,\n RowCollapse20: Minimize2,\n Reset20: RotateCcw,\n Reset32: RotateCcw,\n Download20: Download,\n Launch20: ExternalLink,\n Upgrade20: TrendingUp,\n Upgrade32: TrendingUp,\n Settings16: Settings,\n Settings20: Settings,\n Settings32: Settings,\n ChevronDown20: ChevronDown,\n ChevronUp20: ChevronUp,\n ChevronLeft20: ChevronLeft,\n ChevronRight20: ChevronRight,\n Information16: Info,\n Information20: Info,\n InformationFilled16: Info,\n Application20: Package,\n Application32: Package,\n Add20: Plus,\n Rocket20: Rocket,\n Rocket32: Rocket,\n Chip20: Cpu,\n Chip32: Cpu,\n Save20: Save,\n Save32: Save,\n Copy20: Copy,\n EdgeNode20: Server,\n EdgeNode32: Server,\n Cube32: Box,\n EdgeCluster20: Box,\n EdgeCluster32: Box,\n Connect32: Link,\n Connect20: Link,\n Edit20: Edit,\n Password20: Key,\n Star20: Star,\n Checkmark20: Check,\n ZoomIn20: ZoomIn,\n Events32: Calendar,\n Events20: Calendar,\n Events16: Calendar,\n Link20: Link,\n Link32: Link,\n WarningAlt20: AlertTriangle,\n WarningAlt32: AlertTriangle,\n Tools20: Wrench,\n Tools32: Wrench,\n Network_220: Network,\n Network_232: Network,\n DataBase20: Database,\n DataBase32: Database,\n DataBackup20: HardDrive,\n DataBackup32: HardDrive,\n ArrowDown20: ArrowDown,\n ArrowDown32: ArrowDown,\n Time20: Clock,\n Time32: Clock,\n Hourglass20: Hourglass,\n Hourglass32: Hourglass,\n CheckmarkFilled16: CheckCircle,\n CheckmarkFilled20: CheckCircle,\n CheckmarkFilled32: CheckCircle,\n ErrorFilled16: CircleX,\n ErrorFilled20: CircleX,\n ErrorFilled32: CircleX,\n Warning16: AlertTriangle,\n Warning20: AlertTriangle,\n Warning32: AlertTriangle,\n Power16: Power,\n Power20: Power,\n Power32: Power,\n Document20: FileText,\n Document32: FileText,\n OverflowMenuVertical20: MoreVertical,\n OverflowMenuVertical32: MoreVertical,\n Restart20: RotateCw,\n Restart32: RotateCw,\n TrashCan20: Trash2,\n TrashCan32: Trash2,\n Erase20: Eraser,\n Erase32: Eraser,\n Row20: Rows,\n Column20: Columns,\n Catalog20: Library,\n Catalog32: Library,\n Group20: Users,\n Router32: Router,\n Router20: Router,\n Certificate32: ShieldCheck,\n Certificate20: ShieldCheck,\n BareMetalServer20: ServerCog,\n BareMetalServer32: ServerCog,\n Firewall20: Shield,\n Firewall32: Shield,\n Wikis32: BookOpen,\n Wikis20: BookOpen,\n Wikis16: BookOpen,\n At32: AtSign,\n At20: AtSign,\n User16: UserIcon,\n User20: UserIcon,\n User32: UserIcon,\n Unknown16: HelpCircle,\n Unknown20: HelpCircle,\n Unknown32: HelpCircle,\n Email16: Mail,\n Email20: Mail,\n Email32: Mail,\n Locked16: Lock,\n Locked20: Lock,\n Locked32: Lock,\n Folder16: Folder,\n Folder20: Folder,\n Folder32: Folder,\n Asterisk16: Asterisk,\n Asterisk20: Asterisk,\n Asterisk32: Asterisk,\n Box16: Box,\n Box20: Box,\n Box32: Box,\n UserMilitary32: UserCheck,\n Rule16: Ruler,\n Rule20: Ruler,\n Rule32: Ruler,\n Filter16: Filter,\n Filter20: Filter,\n Filter32: Filter,\n CloseFilled16: XCircle,\n CloseFilled20: XCircle,\n CloseFilled32: XCircle,\n Badge16: Award,\n Badge20: Award,\n Badge32: Award,\n FolderShared16: FolderOpen,\n FolderShared20: FolderOpen,\n FolderShared32: FolderOpen,\n MailAll16: Inbox,\n MailAll20: Inbox,\n MailAll32: Inbox,\n CloudUpload16: CloudUpload,\n CloudUpload20: CloudUpload,\n CloudUpload32: CloudUpload,\n };\n};\n","/*\n * Copyright (C) 2023 Nethesis S.r.l.\n * SPDX-License-Identifier: GPL-3.0-or-later\n */\n\nimport { onMounted } from \"vue\";\n\nexport const usePageTitleService = () => {\n const setPageTitle = (pageTitle: string | (() => string) | undefined) => {\n if (pageTitle) {\n const title = typeof pageTitle === \"function\" ? pageTitle() : pageTitle;\n\n if (title.includes(\".title\")) {\n const productName = (window as any).parent?.CONFIG?.PRODUCT_NAME || \"\";\n document.title = productName;\n if ((window as any).parent?.document) {\n (window as any).parent.document.title = productName;\n }\n } else {\n document.title = title;\n if ((window as any).parent?.document) {\n (window as any).parent.document.title = title;\n }\n }\n }\n };\n\n onMounted(() => {\n const meta = document.querySelector('meta[name=\"vue-page-title\"]') as HTMLMetaElement;\n if (meta) {\n setPageTitle(meta.content);\n }\n });\n\n return {\n setPageTitle,\n };\n};\n","/*\n * Copyright (C) 2023 Nethesis S.r.l.\n * SPDX-License-Identifier: GPL-3.0-or-later\n */\n\nimport { watch, onMounted, onUnmounted, Ref } from \"vue\";\nimport { RouteLocationNormalized, Router } from \"vue-router\";\n\nexport const useQueryParamService = () => {\n const getTypedValue = (stringValue: string): string | boolean => {\n if (stringValue === \"true\") {\n return true;\n }\n\n if (stringValue === \"false\") {\n return false;\n }\n\n return stringValue;\n };\n\n const getQueryParamsFromHash = (hash: string = window.location.hash) => {\n if (!hash.includes(\"?\") || hash.split(\"?\").length < 2) {\n return {};\n }\n\n const params = new URLSearchParams(hash.split(\"?\").pop() || \"\");\n const queryParams: Record<string, string> = {};\n\n params.forEach((value, key) => {\n if (key) {\n queryParams[key] = value;\n }\n });\n\n return queryParams;\n };\n\n const getQueryParams = () => {\n return getQueryParamsFromHash(window.location.hash);\n };\n\n const getQueryParamsForApp = () => {\n return getQueryParamsFromHash((window as any).parent?.location?.hash || \"\");\n };\n\n const queryParamsToData = (\n q: Ref<Record<string, any>>,\n queryParams: Record<string, string>\n ) => {\n if (q.value) {\n Object.keys(q.value).forEach((dataItem) => {\n if (typeof queryParams[dataItem] !== \"undefined\") {\n q.value[dataItem] = getTypedValue(queryParams[dataItem]);\n }\n });\n }\n };\n\n const dataToQueryParams = (q: Ref<Record<string, any>>, route: RouteLocationNormalized, router: Router) => {\n const queryParams: string[] = [];\n\n for (const [key, value] of Object.entries(q.value)) {\n queryParams.push(`${key}=${encodeURIComponent(String(value))}`);\n }\n\n const urlWithParams = route.path + \"?\" + queryParams.join(\"&\");\n\n if (route.fullPath !== urlWithParams) {\n router.replace(urlWithParams);\n }\n };\n\n const watchQueryData = (q: Ref<Record<string, any>>, route: RouteLocationNormalized, router: Router) => {\n if (q.value) {\n Object.keys(q.value).forEach((dataItem) => {\n watch(\n () => q.value[dataItem],\n () => {\n dataToQueryParams(q, route, router);\n }\n );\n });\n }\n };\n\n let urlCheckInterval: number | null = null;\n\n const initUrlBindingForApp = (q: Ref<Record<string, any>>, page: string, callback?: (page: string) => void) => {\n let currentUrl = (window as any).parent?.location?.href || \"\";\n\n const syncQueryParamsAndDataForApp = () => {\n const queryParams = getQueryParamsForApp();\n queryParamsToData(q, queryParams);\n dataToQueryParams(q, { path: \"\", fullPath: \"\", query: {} } as RouteLocationNormalized, {\n replace: () => {},\n } as unknown as Router);\n };\n\n const checkUrlChangeForApp = () => {\n const newUrl = (window as any).parent?.location?.href || \"\";\n\n if (newUrl !== currentUrl) {\n currentUrl = newUrl;\n const queryParams = getQueryParamsForApp();\n const requestedPage = queryParams.page || \"status\";\n\n if (callback) {\n callback(requestedPage);\n }\n\n if (requestedPage !== page) {\n window.dispatchEvent(\n new CustomEvent(\"changeRoute\", { detail: requestedPage })\n );\n } else {\n syncQueryParamsAndDataForApp();\n }\n }\n currentUrl = (window as any).parent?.location?.href || \"\";\n };\n\n const queryParams = getQueryParamsForApp();\n const requestedPage = queryParams.page || \"status\";\n\n if (requestedPage !== page) {\n return null;\n }\n\n syncQueryParamsAndDataForApp();\n urlCheckInterval = window.setInterval(checkUrlChangeForApp, 500);\n\n return urlCheckInterval;\n };\n\n const cleanupUrlBinding = () => {\n if (urlCheckInterval !== null) {\n clearInterval(urlCheckInterval);\n urlCheckInterval = null;\n }\n };\n\n const getPage = () => {\n const queryParams = getQueryParams();\n return queryParams.page || \"status\";\n };\n\n return {\n getTypedValue,\n getQueryParams,\n getQueryParamsForApp,\n queryParamsToData,\n dataToQueryParams,\n watchQueryData,\n initUrlBindingForApp,\n cleanupUrlBinding,\n getPage,\n };\n};\n","/*\n * Copyright (C) 2023 Nethesis S.r.l.\n * SPDX-License-Identifier: GPL-3.0-or-later\n */\n\nexport const useStorageService = () => {\n const getFromStorage = <T = any>(prop: string): T | null => {\n try {\n const item = localStorage.getItem(prop);\n return item ? JSON.parse(item) : null;\n } catch (err) {\n console.error(`Error reading from storage for key \"${prop}\":`, err);\n return null;\n }\n };\n\n const saveToStorage = (prop: string, object: any) => {\n try {\n localStorage.setItem(prop, JSON.stringify(object));\n } catch (err) {\n console.error(`Error saving to storage for key \"${prop}\":`, err);\n }\n };\n\n const deleteFromStorage = (prop: string) => {\n try {\n localStorage.removeItem(prop);\n } catch (err) {\n console.error(`Error deleting from storage for key \"${prop}\":`, err);\n }\n };\n\n return {\n getFromStorage,\n saveToStorage,\n deleteFromStorage,\n };\n};\n","'use strict';\n\n/**\n * Create a bound version of a function with a specified `this` context\n *\n * @param {Function} fn - The function to bind\n * @param {*} thisArg - The value to be passed as the `this` parameter\n * @returns {Function} A new function that will call the original function with the specified `this` context\n */\nexport default function bind(fn, thisArg) {\n return function wrap() {\n return fn.apply(thisArg, arguments);\n };\n}\n","'use strict';\n\nimport bind from './helpers/bind.js';\n\n// utils is a library of generic helper functions non-specific to axios\n\nconst {toString} = Object.prototype;\nconst {getPrototypeOf} = Object;\nconst {iterator, toStringTag} = Symbol;\n\nconst kindOf = (cache => thing => {\n const str = toString.call(thing);\n return cache[str] || (cache[str] = str.slice(8, -1).toLowerCase());\n})(Object.create(null));\n\nconst kindOfTest = (type) => {\n type = type.toLowerCase();\n return (thing) => kindOf(thing) === type\n}\n\nconst typeOfTest = type => thing => typeof thing === type;\n\n/**\n * Determine if a value is an Array\n *\n * @param {Object} val The value to test\n *\n * @returns {boolean} True if value is an Array, otherwise false\n */\nconst {isArray} = Array;\n\n/**\n * Determine if a value is undefined\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if the value is undefined, otherwise false\n */\nconst isUndefined = typeOfTest('undefined');\n\n/**\n * Determine if a value is a Buffer\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Buffer, otherwise false\n */\nfunction isBuffer(val) {\n return val !== null && !isUndefined(val) && val.constructor !== null && !isUndefined(val.constructor)\n && isFunction(val.constructor.isBuffer) && val.constructor.isBuffer(val);\n}\n\n/**\n * Determine if a value is an ArrayBuffer\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is an ArrayBuffer, otherwise false\n */\nconst isArrayBuffer = kindOfTest('ArrayBuffer');\n\n\n/**\n * Determine if a value is a view on an ArrayBuffer\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a view on an ArrayBuffer, otherwise false\n */\nfunction isArrayBufferView(val) {\n let result;\n if ((typeof ArrayBuffer !== 'undefined') && (ArrayBuffer.isView)) {\n result = ArrayBuffer.isView(val);\n } else {\n result = (val) && (val.buffer) && (isArrayBuffer(val.buffer));\n }\n return result;\n}\n\n/**\n * Determine if a value is a String\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a String, otherwise false\n */\nconst isString = typeOfTest('string');\n\n/**\n * Determine if a value is a Function\n *\n * @param {*} val The value to test\n * @returns {boolean} True if value is a Function, otherwise false\n */\nconst isFunction = typeOfTest('function');\n\n/**\n * Determine if a value is a Number\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Number, otherwise false\n */\nconst isNumber = typeOfTest('number');\n\n/**\n * Determine if a value is an Object\n *\n * @param {*} thing The value to test\n *\n * @returns {boolean} True if value is an Object, otherwise false\n */\nconst isObject = (thing) => thing !== null && typeof thing === 'object';\n\n/**\n * Determine if a value is a Boolean\n *\n * @param {*} thing The value to test\n * @returns {boolean} True if value is a Boolean, otherwise false\n */\nconst isBoolean = thing => thing === true || thing === false;\n\n/**\n * Determine if a value is a plain Object\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a plain Object, otherwise false\n */\nconst isPlainObject = (val) => {\n if (kindOf(val) !== 'object') {\n return false;\n }\n\n const prototype = getPrototypeOf(val);\n return (prototype === null || prototype === Object.prototype || Object.getPrototypeOf(prototype) === null) && !(toStringTag in val) && !(iterator in val);\n}\n\n/**\n * Determine if a value is an empty object (safely handles Buffers)\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is an empty object, otherwise false\n */\nconst isEmptyObject = (val) => {\n // Early return for non-objects or Buffers to prevent RangeError\n if (!isObject(val) || isBuffer(val)) {\n return false;\n }\n\n try {\n return Object.keys(val).length === 0 && Object.getPrototypeOf(val) === Object.prototype;\n } catch (e) {\n // Fallback for any other objects that might cause RangeError with Object.keys()\n return false;\n }\n}\n\n/**\n * Determine if a value is a Date\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Date, otherwise false\n */\nconst isDate = kindOfTest('Date');\n\n/**\n * Determine if a value is a File\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a File, otherwise false\n */\nconst isFile = kindOfTest('File');\n\n/**\n * Determine if a value is a Blob\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Blob, otherwise false\n */\nconst isBlob = kindOfTest('Blob');\n\n/**\n * Determine if a value is a FileList\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a File, otherwise false\n */\nconst isFileList = kindOfTest('FileList');\n\n/**\n * Determine if a value is a Stream\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Stream, otherwise false\n */\nconst isStream = (val) => isObject(val) && isFunction(val.pipe);\n\n/**\n * Determine if a value is a FormData\n *\n * @param {*} thing The value to test\n *\n * @returns {boolean} True if value is an FormData, otherwise false\n */\nconst isFormData = (thing) => {\n let kind;\n return thing && (\n (typeof FormData === 'function' && thing instanceof FormData) || (\n isFunction(thing.append) && (\n (kind = kindOf(thing)) === 'formdata' ||\n // detect form-data instance\n (kind === 'object' && isFunction(thing.toString) && thing.toString() === '[object FormData]')\n )\n )\n )\n}\n\n/**\n * Determine if a value is a URLSearchParams object\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a URLSearchParams object, otherwise false\n */\nconst isURLSearchParams = kindOfTest('URLSearchParams');\n\nconst [isReadableStream, isRequest, isResponse, isHeaders] = ['ReadableStream', 'Request', 'Response', 'Headers'].map(kindOfTest);\n\n/**\n * Trim excess whitespace off the beginning and end of a string\n *\n * @param {String} str The String to trim\n *\n * @returns {String} The String freed of excess whitespace\n */\nconst trim = (str) => str.trim ?\n str.trim() : str.replace(/^[\\s\\uFEFF\\xA0]+|[\\s\\uFEFF\\xA0]+$/g, '');\n\n/**\n * Iterate over an Array or an Object invoking a function for each item.\n *\n * If `obj` is an Array callback will be called passing\n * the value, index, and complete array for each item.\n *\n * If 'obj' is an Object callback will be called passing\n * the value, key, and complete object for each property.\n *\n * @param {Object|Array} obj The object to iterate\n * @param {Function} fn The callback to invoke for each item\n *\n * @param {Boolean} [allOwnKeys = false]\n * @returns {any}\n */\nfunction forEach(obj, fn, {allOwnKeys = false} = {}) {\n // Don't bother if no value provided\n if (obj === null || typeof obj === 'undefined') {\n return;\n }\n\n let i;\n let l;\n\n // Force an array if not already something iterable\n if (typeof obj !== 'object') {\n /*eslint no-param-reassign:0*/\n obj = [obj];\n }\n\n if (isArray(obj)) {\n // Iterate over array values\n for (i = 0, l = obj.length; i < l; i++) {\n fn.call(null, obj[i], i, obj);\n }\n } else {\n // Buffer check\n if (isBuffer(obj)) {\n return;\n }\n\n // Iterate over object keys\n const keys = allOwnKeys ? Object.getOwnPropertyNames(obj) : Object.keys(obj);\n const len = keys.length;\n let key;\n\n for (i = 0; i < len; i++) {\n key = keys[i];\n fn.call(null, obj[key], key, obj);\n }\n }\n}\n\nfunction findKey(obj, key) {\n if (isBuffer(obj)){\n return null;\n }\n\n key = key.toLowerCase();\n const keys = Object.keys(obj);\n let i = keys.length;\n let _key;\n while (i-- > 0) {\n _key = keys[i];\n if (key === _key.toLowerCase()) {\n return _key;\n }\n }\n return null;\n}\n\nconst _global = (() => {\n /*eslint no-undef:0*/\n if (typeof globalThis !== \"undefined\") return globalThis;\n return typeof self !== \"undefined\" ? self : (typeof window !== 'undefined' ? window : global)\n})();\n\nconst isContextDefined = (context) => !isUndefined(context) && context !== _global;\n\n/**\n * Accepts varargs expecting each argument to be an object, then\n * immutably merges the properties of each object and returns result.\n *\n * When multiple objects contain the same key the later object in\n * the arguments list will take precedence.\n *\n * Example:\n *\n * ```js\n * var result = merge({foo: 123}, {foo: 456});\n * console.log(result.foo); // outputs 456\n * ```\n *\n * @param {Object} obj1 Object to merge\n *\n * @returns {Object} Result of all merge properties\n */\nfunction merge(/* obj1, obj2, obj3, ... */) {\n const {caseless, skipUndefined} = isContextDefined(this) && this || {};\n const result = {};\n const assignValue = (val, key) => {\n const targetKey = caseless && findKey(result, key) || key;\n if (isPlainObject(result[targetKey]) && isPlainObject(val)) {\n result[targetKey] = merge(result[targetKey], val);\n } else if (isPlainObject(val)) {\n result[targetKey] = merge({}, val);\n } else if (isArray(val)) {\n result[targetKey] = val.slice();\n } else if (!skipUndefined || !isUndefined(val)) {\n result[targetKey] = val;\n }\n }\n\n for (let i = 0, l = arguments.length; i < l; i++) {\n arguments[i] && forEach(arguments[i], assignValue);\n }\n return result;\n}\n\n/**\n * Extends object a by mutably adding to it the properties of object b.\n *\n * @param {Object} a The object to be extended\n * @param {Object} b The object to copy properties from\n * @param {Object} thisArg The object to bind function to\n *\n * @param {Boolean} [allOwnKeys]\n * @returns {Object} The resulting value of object a\n */\nconst extend = (a, b, thisArg, {allOwnKeys}= {}) => {\n forEach(b, (val, key) => {\n if (thisArg && isFunction(val)) {\n a[key] = bind(val, thisArg);\n } else {\n a[key] = val;\n }\n }, {allOwnKeys});\n return a;\n}\n\n/**\n * Remove byte order marker. This catches EF BB BF (the UTF-8 BOM)\n *\n * @param {string} content with BOM\n *\n * @returns {string} content value without BOM\n */\nconst stripBOM = (content) => {\n if (content.charCodeAt(0) === 0xFEFF) {\n content = content.slice(1);\n }\n return content;\n}\n\n/**\n * Inherit the prototype methods from one constructor into another\n * @param {function} constructor\n * @param {function} superConstructor\n * @param {object} [props]\n * @param {object} [descriptors]\n *\n * @returns {void}\n */\nconst inherits = (constructor, superConstructor, props, descriptors) => {\n constructor.prototype = Object.create(superConstructor.prototype, descriptors);\n constructor.prototype.constructor = constructor;\n Object.defineProperty(constructor, 'super', {\n value: superConstructor.prototype\n });\n props && Object.assign(constructor.prototype, props);\n}\n\n/**\n * Resolve object with deep prototype chain to a flat object\n * @param {Object} sourceObj source object\n * @param {Object} [destObj]\n * @param {Function|Boolean} [filter]\n * @param {Function} [propFilter]\n *\n * @returns {Object}\n */\nconst toFlatObject = (sourceObj, destObj, filter, propFilter) => {\n let props;\n let i;\n let prop;\n const merged = {};\n\n destObj = destObj || {};\n // eslint-disable-next-line no-eq-null,eqeqeq\n if (sourceObj == null) return destObj;\n\n do {\n props = Object.getOwnPropertyNames(sourceObj);\n i = props.length;\n while (i-- > 0) {\n prop = props[i];\n if ((!propFilter || propFilter(prop, sourceObj, destObj)) && !merged[prop]) {\n destObj[prop] = sourceObj[prop];\n merged[prop] = true;\n }\n }\n sourceObj = filter !== false && getPrototypeOf(sourceObj);\n } while (sourceObj && (!filter || filter(sourceObj, destObj)) && sourceObj !== Object.prototype);\n\n return destObj;\n}\n\n/**\n * Determines whether a string ends with the characters of a specified string\n *\n * @param {String} str\n * @param {String} searchString\n * @param {Number} [position= 0]\n *\n * @returns {boolean}\n */\nconst endsWith = (str, searchString, position) => {\n str = String(str);\n if (position === undefined || position > str.length) {\n position = str.length;\n }\n position -= searchString.length;\n const lastIndex = str.indexOf(searchString, position);\n return lastIndex !== -1 && lastIndex === position;\n}\n\n\n/**\n * Returns new array from array like object or null if failed\n *\n * @param {*} [thing]\n *\n * @returns {?Array}\n */\nconst toArray = (thing) => {\n if (!thing) return null;\n if (isArray(thing)) return thing;\n let i = thing.length;\n if (!isNumber(i)) return null;\n const arr = new Array(i);\n while (i-- > 0) {\n arr[i] = thing[i];\n }\n return arr;\n}\n\n/**\n * Checking if the Uint8Array exists and if it does, it returns a function that checks if the\n * thing passed in is an instance of Uint8Array\n *\n * @param {TypedArray}\n *\n * @returns {Array}\n */\n// eslint-disable-next-line func-names\nconst isTypedArray = (TypedArray => {\n // eslint-disable-next-line func-names\n return thing => {\n return TypedArray && thing instanceof TypedArray;\n };\n})(typeof Uint8Array !== 'undefined' && getPrototypeOf(Uint8Array));\n\n/**\n * For each entry in the object, call the function with the key and value.\n *\n * @param {Object<any, any>} obj - The object to iterate over.\n * @param {Function} fn - The function to call for each entry.\n *\n * @returns {void}\n */\nconst forEachEntry = (obj, fn) => {\n const generator = obj && obj[iterator];\n\n const _iterator = generator.call(obj);\n\n let result;\n\n while ((result = _iterator.next()) && !result.done) {\n const pair = result.value;\n fn.call(obj, pair[0], pair[1]);\n }\n}\n\n/**\n * It takes a regular expression and a string, and returns an array of all the matches\n *\n * @param {string} regExp - The regular expression to match against.\n * @param {string} str - The string to search.\n *\n * @returns {Array<boolean>}\n */\nconst matchAll = (regExp, str) => {\n let matches;\n const arr = [];\n\n while ((matches = regExp.exec(str)) !== null) {\n arr.push(matches);\n }\n\n return arr;\n}\n\n/* Checking if the kindOfTest function returns true when passed an HTMLFormElement. */\nconst isHTMLForm = kindOfTest('HTMLFormElement');\n\nconst toCamelCase = str => {\n return str.toLowerCase().replace(/[-_\\s]([a-z\\d])(\\w*)/g,\n function replacer(m, p1, p2) {\n return p1.toUpperCase() + p2;\n }\n );\n};\n\n/* Creating a function that will check if an object has a property. */\nconst hasOwnProperty = (({hasOwnProperty}) => (obj, prop) => hasOwnProperty.call(obj, prop))(Object.prototype);\n\n/**\n * Determine if a value is a RegExp object\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a RegExp object, otherwise false\n */\nconst isRegExp = kindOfTest('RegExp');\n\nconst reduceDescriptors = (obj, reducer) => {\n const descriptors = Object.getOwnPropertyDescriptors(obj);\n const reducedDescriptors = {};\n\n forEach(descriptors, (descriptor, name) => {\n let ret;\n if ((ret = reducer(descriptor, name, obj)) !== false) {\n reducedDescriptors[name] = ret || descriptor;\n }\n });\n\n Object.defineProperties(obj, reducedDescriptors);\n}\n\n/**\n * Makes all methods read-only\n * @param {Object} obj\n */\n\nconst freezeMethods = (obj) => {\n reduceDescriptors(obj, (descriptor, name) => {\n // skip restricted props in strict mode\n if (isFunction(obj) && ['arguments', 'caller', 'callee'].indexOf(name) !== -1) {\n return false;\n }\n\n const value = obj[name];\n\n if (!isFunction(value)) return;\n\n descriptor.enumerable = false;\n\n if ('writable' in descriptor) {\n descriptor.writable = false;\n return;\n }\n\n if (!descriptor.set) {\n descriptor.set = () => {\n throw Error('Can not rewrite read-only method \\'' + name + '\\'');\n };\n }\n });\n}\n\nconst toObjectSet = (arrayOrString, delimiter) => {\n const obj = {};\n\n const define = (arr) => {\n arr.forEach(value => {\n obj[value] = true;\n });\n }\n\n isArray(arrayOrString) ? define(arrayOrString) : define(String(arrayOrString).split(delimiter));\n\n return obj;\n}\n\nconst noop = () => {}\n\nconst toFiniteNumber = (value, defaultValue) => {\n return value != null && Number.isFinite(value = +value) ? value : defaultValue;\n}\n\n\n\n/**\n * If the thing is a FormData object, return true, otherwise return false.\n *\n * @param {unknown} thing - The thing to check.\n *\n * @returns {boolean}\n */\nfunction isSpecCompliantForm(thing) {\n return !!(thing && isFunction(thing.append) && thing[toStringTag] === 'FormData' && thing[iterator]);\n}\n\nconst toJSONObject = (obj) => {\n const stack = new Array(10);\n\n const visit = (source, i) => {\n\n if (isObject(source)) {\n if (stack.indexOf(source) >= 0) {\n return;\n }\n\n //Buffer check\n if (isBuffer(source)) {\n return source;\n }\n\n if(!('toJSON' in source)) {\n stack[i] = source;\n const target = isArray(source) ? [] : {};\n\n forEach(source, (value, key) => {\n const reducedValue = visit(value, i + 1);\n !isUndefined(reducedValue) && (target[key] = reducedValue);\n });\n\n stack[i] = undefined;\n\n return target;\n }\n }\n\n return source;\n }\n\n return visit(obj, 0);\n}\n\nconst isAsyncFn = kindOfTest('AsyncFunction');\n\nconst isThenable = (thing) =>\n thing && (isObject(thing) || isFunction(thing)) && isFunction(thing.then) && isFunction(thing.catch);\n\n// original code\n// https://github.com/DigitalBrainJS/AxiosPromise/blob/16deab13710ec09779922131f3fa5954320f83ab/lib/utils.js#L11-L34\n\nconst _setImmediate = ((setImmediateSupported, postMessageSupported) => {\n if (setImmediateSupported) {\n return setImmediate;\n }\n\n return postMessageSupported ? ((token, callbacks) => {\n _global.addEventListener(\"message\", ({source, data}) => {\n if (source === _global && data === token) {\n callbacks.length && callbacks.shift()();\n }\n }, false);\n\n return (cb) => {\n callbacks.push(cb);\n _global.postMessage(token, \"*\");\n }\n })(`axios@${Math.random()}`, []) : (cb) => setTimeout(cb);\n})(\n typeof setImmediate === 'function',\n isFunction(_global.postMessage)\n);\n\nconst asap = typeof queueMicrotask !== 'undefined' ?\n queueMicrotask.bind(_global) : ( typeof process !== 'undefined' && process.nextTick || _setImmediate);\n\n// *********************\n\n\nconst isIterable = (thing) => thing != null && isFunction(thing[iterator]);\n\n\nexport default {\n isArray,\n isArrayBuffer,\n isBuffer,\n isFormData,\n isArrayBufferView,\n isString,\n isNumber,\n isBoolean,\n isObject,\n isPlainObject,\n isEmptyObject,\n isReadableStream,\n isRequest,\n isResponse,\n isHeaders,\n isUndefined,\n isDate,\n isFile,\n isBlob,\n isRegExp,\n isFunction,\n isStream,\n isURLSearchParams,\n isTypedArray,\n isFileList,\n forEach,\n merge,\n extend,\n trim,\n stripBOM,\n inherits,\n toFlatObject,\n kindOf,\n kindOfTest,\n endsWith,\n toArray,\n forEachEntry,\n matchAll,\n isHTMLForm,\n hasOwnProperty,\n hasOwnProp: hasOwnProperty, // an alias to avoid ESLint no-prototype-builtins detection\n reduceDescriptors,\n freezeMethods,\n toObjectSet,\n toCamelCase,\n noop,\n toFiniteNumber,\n findKey,\n global: _global,\n isContextDefined,\n isSpecCompliantForm,\n toJSONObject,\n isAsyncFn,\n isThenable,\n setImmediate: _setImmediate,\n asap,\n isIterable\n};\n","'use strict';\n\nimport utils from '../utils.js';\n\n/**\n * Create an Error with the specified message, config, error code, request and response.\n *\n * @param {string} message The error message.\n * @param {string} [code] The error code (for example, 'ECONNABORTED').\n * @param {Object} [config] The config.\n * @param {Object} [request] The request.\n * @param {Object} [response] The response.\n *\n * @returns {Error} The created error.\n */\nfunction AxiosError(message, code, config, request, response) {\n Error.call(this);\n\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, this.constructor);\n } else {\n this.stack = (new Error()).stack;\n }\n\n this.message = message;\n this.name = 'AxiosError';\n code && (this.code = code);\n config && (this.config = config);\n request && (this.request = request);\n if (response) {\n this.response = response;\n this.status = response.status ? response.status : null;\n }\n}\n\nutils.inherits(AxiosError, Error, {\n toJSON: function toJSON() {\n return {\n // Standard\n message: this.message,\n name: this.name,\n // Microsoft\n description: this.description,\n number: this.number,\n // Mozilla\n fileName: this.fileName,\n lineNumber: this.lineNumber,\n columnNumber: this.columnNumber,\n stack: this.stack,\n // Axios\n config: utils.toJSONObject(this.config),\n code: this.code,\n status: this.status\n };\n }\n});\n\nconst prototype = AxiosError.prototype;\nconst descriptors = {};\n\n[\n 'ERR_BAD_OPTION_VALUE',\n 'ERR_BAD_OPTION',\n 'ECONNABORTED',\n 'ETIMEDOUT',\n 'ERR_NETWORK',\n 'ERR_FR_TOO_MANY_REDIRECTS',\n 'ERR_DEPRECATED',\n 'ERR_BAD_RESPONSE',\n 'ERR_BAD_REQUEST',\n 'ERR_CANCELED',\n 'ERR_NOT_SUPPORT',\n 'ERR_INVALID_URL'\n// eslint-disable-next-line func-names\n].forEach(code => {\n descriptors[code] = {value: code};\n});\n\nObject.defineProperties(AxiosError, descriptors);\nObject.defineProperty(prototype, 'isAxiosError', {value: true});\n\n// eslint-disable-next-line func-names\nAxiosError.from = (error, code, config, request, response, customProps) => {\n const axiosError = Object.create(prototype);\n\n utils.toFlatObject(error, axiosError, function filter(obj) {\n return obj !== Error.prototype;\n }, prop => {\n return prop !== 'isAxiosError';\n });\n\n const msg = error && error.message ? error.message : 'Error';\n\n // Prefer explicit code; otherwise copy the low-level error's code (e.g. ECONNREFUSED)\n const errCode = code == null && error ? error.code : code;\n AxiosError.call(axiosError, msg, errCode, config, request, response);\n\n // Chain the original error on the standard field; non-enumerable to avoid JSON noise\n if (error && axiosError.cause == null) {\n Object.defineProperty(axiosError, 'cause', { value: error, configurable: true });\n }\n\n axiosError.name = (error && error.name) || 'Error';\n\n customProps && Object.assign(axiosError, customProps);\n\n return axiosError;\n};\n\nexport default AxiosError;\n","// eslint-disable-next-line strict\nexport default null;\n","'use strict';\n\nimport utils from '../utils.js';\nimport AxiosError from '../core/AxiosError.js';\n// temporary hotfix to avoid circular references until AxiosURLSearchParams is refactored\nimport PlatformFormData from '../platform/node/classes/FormData.js';\n\n/**\n * Determines if the given thing is a array or js object.\n *\n * @param {string} thing - The object or array to be visited.\n *\n * @returns {boolean}\n */\nfunction isVisitable(thing) {\n return utils.isPlainObject(thing) || utils.isArray(thing);\n}\n\n/**\n * It removes the brackets from the end of a string\n *\n * @param {string} key - The key of the parameter.\n *\n * @returns {string} the key without the brackets.\n */\nfunction removeBrackets(key) {\n return utils.endsWith(key, '[]') ? key.slice(0, -2) : key;\n}\n\n/**\n * It takes a path, a key, and a boolean, and returns a string\n *\n * @param {string} path - The path to the current key.\n * @param {string} key - The key of the current object being iterated over.\n * @param {string} dots - If true, the key will be rendered with dots instead of brackets.\n *\n * @returns {string} The path to the current key.\n */\nfunction renderKey(path, key, dots) {\n if (!path) return key;\n return path.concat(key).map(function each(token, i) {\n // eslint-disable-next-line no-param-reassign\n token = removeBrackets(token);\n return !dots && i ? '[' + token + ']' : token;\n }).join(dots ? '.' : '');\n}\n\n/**\n * If the array is an array and none of its elements are visitable, then it's a flat array.\n *\n * @param {Array<any>} arr - The array to check\n *\n * @returns {boolean}\n */\nfunction isFlatArray(arr) {\n return utils.isArray(arr) && !arr.some(isVisitable);\n}\n\nconst predicates = utils.toFlatObject(utils, {}, null, function filter(prop) {\n return /^is[A-Z]/.test(prop);\n});\n\n/**\n * Convert a data object to FormData\n *\n * @param {Object} obj\n * @param {?Object} [formData]\n * @param {?Object} [options]\n * @param {Function} [options.visitor]\n * @param {Boolean} [options.metaTokens = true]\n * @param {Boolean} [options.dots = false]\n * @param {?Boolean} [options.indexes = false]\n *\n * @returns {Object}\n **/\n\n/**\n * It converts an object into a FormData object\n *\n * @param {Object<any, any>} obj - The object to convert to form data.\n * @param {string} formData - The FormData object to append to.\n * @param {Object<string, any>} options\n *\n * @returns\n */\nfunction toFormData(obj, formData, options) {\n if (!utils.isObject(obj)) {\n throw new TypeError('target must be an object');\n }\n\n // eslint-disable-next-line no-param-reassign\n formData = formData || new (PlatformFormData || FormData)();\n\n // eslint-disable-next-line no-param-reassign\n options = utils.toFlatObject(options, {\n metaTokens: true,\n dots: false,\n indexes: false\n }, false, function defined(option, source) {\n // eslint-disable-next-line no-eq-null,eqeqeq\n return !utils.isUndefined(source[option]);\n });\n\n const metaTokens = options.metaTokens;\n // eslint-disable-next-line no-use-before-define\n const visitor = options.visitor || defaultVisitor;\n const dots = options.dots;\n const indexes = options.indexes;\n const _Blob = options.Blob || typeof Blob !== 'undefined' && Blob;\n const useBlob = _Blob && utils.isSpecCompliantForm(formData);\n\n if (!utils.isFunction(visitor)) {\n throw new TypeError('visitor must be a function');\n }\n\n function convertValue(value) {\n if (value === null) return '';\n\n if (utils.isDate(value)) {\n return value.toISOString();\n }\n\n if (utils.isBoolean(value)) {\n return value.toString();\n }\n\n if (!useBlob && utils.isBlob(value)) {\n throw new AxiosError('Blob is not supported. Use a Buffer instead.');\n }\n\n if (utils.isArrayBuffer(value) || utils.isTypedArray(value)) {\n return useBlob && typeof Blob === 'function' ? new Blob([value]) : Buffer.from(value);\n }\n\n return value;\n }\n\n /**\n * Default visitor.\n *\n * @param {*} value\n * @param {String|Number} key\n * @param {Array<String|Number>} path\n * @this {FormData}\n *\n * @returns {boolean} return true to visit the each prop of the value recursively\n */\n function defaultVisitor(value, key, path) {\n let arr = value;\n\n if (value && !path && typeof value === 'object') {\n if (utils.endsWith(key, '{}')) {\n // eslint-disable-next-line no-param-reassign\n key = metaTokens ? key : key.slice(0, -2);\n // eslint-disable-next-line no-param-reassign\n value = JSON.stringify(value);\n } else if (\n (utils.isArray(value) && isFlatArray(value)) ||\n ((utils.isFileList(value) || utils.endsWith(key, '[]')) && (arr = utils.toArray(value))\n )) {\n // eslint-disable-next-line no-param-reassign\n key = removeBrackets(key);\n\n arr.forEach(function each(el, index) {\n !(utils.isUndefined(el) || el === null) && formData.append(\n // eslint-disable-next-line no-nested-ternary\n indexes === true ? renderKey([key], index, dots) : (indexes === null ? key : key + '[]'),\n convertValue(el)\n );\n });\n return false;\n }\n }\n\n if (isVisitable(value)) {\n return true;\n }\n\n formData.append(renderKey(path, key, dots), convertValue(value));\n\n return false;\n }\n\n const stack = [];\n\n const exposedHelpers = Object.assign(predicates, {\n defaultVisitor,\n convertValue,\n isVisitable\n });\n\n function build(value, path) {\n if (utils.isUndefined(value)) return;\n\n if (stack.indexOf(value) !== -1) {\n throw Error('Circular reference detected in ' + path.join('.'));\n }\n\n stack.push(value);\n\n utils.forEach(value, function each(el, key) {\n const result = !(utils.isUndefined(el) || el === null) && visitor.call(\n formData, el, utils.isString(key) ? key.trim() : key, path, exposedHelpers\n );\n\n if (result === true) {\n build(el, path ? path.concat(key) : [key]);\n }\n });\n\n stack.pop();\n }\n\n if (!utils.isObject(obj)) {\n throw new TypeError('data must be an object');\n }\n\n build(obj);\n\n return formData;\n}\n\nexport default toFormData;\n","'use strict';\n\nimport toFormData from './toFormData.js';\n\n/**\n * It encodes a string by replacing all characters that are not in the unreserved set with\n * their percent-encoded equivalents\n *\n * @param {string} str - The string to encode.\n *\n * @returns {string} The encoded string.\n */\nfunction encode(str) {\n const charMap = {\n '!': '%21',\n \"'\": '%27',\n '(': '%28',\n ')': '%29',\n '~': '%7E',\n '%20': '+',\n '%00': '\\x00'\n };\n return encodeURIComponent(str).replace(/[!'()~]|%20|%00/g, function replacer(match) {\n return charMap[match];\n });\n}\n\n/**\n * It takes a params object and converts it to a FormData object\n *\n * @param {Object<string, any>} params - The parameters to be converted to a FormData object.\n * @param {Object<string, any>} options - The options object passed to the Axios constructor.\n *\n * @returns {void}\n */\nfunction AxiosURLSearchParams(params, options) {\n this._pairs = [];\n\n params && toFormData(params, this, options);\n}\n\nconst prototype = AxiosURLSearchParams.prototype;\n\nprototype.append = function append(name, value) {\n this._pairs.push([name, value]);\n};\n\nprototype.toString = function toString(encoder) {\n const _encode = encoder ? function(value) {\n return encoder.call(this, value, encode);\n } : encode;\n\n return this._pairs.map(function each(pair) {\n return _encode(pair[0]) + '=' + _encode(pair[1]);\n }, '').join('&');\n};\n\nexport default AxiosURLSearchParams;\n","'use strict';\n\nimport utils from '../utils.js';\nimport AxiosURLSearchParams from '../helpers/AxiosURLSearchParams.js';\n\n/**\n * It replaces all instances of the characters `:`, `$`, `,`, `+`, `[`, and `]` with their\n * URI encoded counterparts\n *\n * @param {string} val The value to be encoded.\n *\n * @returns {string} The encoded value.\n */\nfunction encode(val) {\n return encodeURIComponent(val).\n replace(/%3A/gi, ':').\n replace(/%24/g, '$').\n replace(/%2C/gi, ',').\n replace(/%20/g, '+');\n}\n\n/**\n * Build a URL by appending params to the end\n *\n * @param {string} url The base of the url (e.g., http://www.google.com)\n * @param {object} [params] The params to be appended\n * @param {?(object|Function)} options\n *\n * @returns {string} The formatted url\n */\nexport default function buildURL(url, params, options) {\n /*eslint no-param-reassign:0*/\n if (!params) {\n return url;\n }\n \n const _encode = options && options.encode || encode;\n\n if (utils.isFunction(options)) {\n options = {\n serialize: options\n };\n } \n\n const serializeFn = options && options.serialize;\n\n let serializedParams;\n\n if (serializeFn) {\n serializedParams = serializeFn(params, options);\n } else {\n serializedParams = utils.isURLSearchParams(params) ?\n params.toString() :\n new AxiosURLSearchParams(params, options).toString(_encode);\n }\n\n if (serializedParams) {\n const hashmarkIndex = url.indexOf(\"#\");\n\n if (hashmarkIndex !== -1) {\n url = url.slice(0, hashmarkIndex);\n }\n url += (url.indexOf('?') === -1 ? '?' : '&') + serializedParams;\n }\n\n return url;\n}\n","'use strict';\n\nimport utils from './../utils.js';\n\nclass InterceptorManager {\n constructor() {\n this.handlers = [];\n }\n\n /**\n * Add a new interceptor to the stack\n *\n * @param {Function} fulfilled The function to handle `then` for a `Promise`\n * @param {Function} rejected The function to handle `reject` for a `Promise`\n *\n * @return {Number} An ID used to remove interceptor later\n */\n use(fulfilled, rejected, options) {\n this.handlers.push({\n fulfilled,\n rejected,\n synchronous: options ? options.synchronous : false,\n runWhen: options ? options.runWhen : null\n });\n return this.handlers.length - 1;\n }\n\n /**\n * Remove an interceptor from the stack\n *\n * @param {Number} id The ID that was returned by `use`\n *\n * @returns {void}\n */\n eject(id) {\n if (this.handlers[id]) {\n this.handlers[id] = null;\n }\n }\n\n /**\n * Clear all interceptors from the stack\n *\n * @returns {void}\n */\n clear() {\n if (this.handlers) {\n this.handlers = [];\n }\n }\n\n /**\n * Iterate over all the registered interceptors\n *\n * This method is particularly useful for skipping over any\n * interceptors that may have become `null` calling `eject`.\n *\n * @param {Function} fn The function to call for each interceptor\n *\n * @returns {void}\n */\n forEach(fn) {\n utils.forEach(this.handlers, function forEachHandler(h) {\n if (h !== null) {\n fn(h);\n }\n });\n }\n}\n\nexport default InterceptorManager;\n","'use strict';\n\nexport default {\n silentJSONParsing: true,\n forcedJSONParsing: true,\n clarifyTimeoutError: false\n};\n","'use strict';\n\nimport AxiosURLSearchParams from '../../../helpers/AxiosURLSearchParams.js';\nexport default typeof URLSearchParams !== 'undefined' ? URLSearchParams : AxiosURLSearchParams;\n","'use strict';\n\nexport default typeof FormData !== 'undefined' ? FormData : null;\n","'use strict'\n\nexport default typeof Blob !== 'undefined' ? Blob : null\n","import URLSearchParams from './classes/URLSearchParams.js'\nimport FormData from './classes/FormData.js'\nimport Blob from './classes/Blob.js'\n\nexport default {\n isBrowser: true,\n classes: {\n URLSearchParams,\n FormData,\n Blob\n },\n protocols: ['http', 'https', 'file', 'blob', 'url', 'data']\n};\n","const hasBrowserEnv = typeof window !== 'undefined' && typeof document !== 'undefined';\n\nconst _navigator = typeof navigator === 'object' && navigator || undefined;\n\n/**\n * Determine if we're running in a standard browser environment\n *\n * This allows axios to run in a web worker, and react-native.\n * Both environments support XMLHttpRequest, but not fully standard globals.\n *\n * web workers:\n * typeof window -> undefined\n * typeof document -> undefined\n *\n * react-native:\n * navigator.product -> 'ReactNative'\n * nativescript\n * navigator.product -> 'NativeScript' or 'NS'\n *\n * @returns {boolean}\n */\nconst hasStandardBrowserEnv = hasBrowserEnv &&\n (!_navigator || ['ReactNative', 'NativeScript', 'NS'].indexOf(_navigator.product) < 0);\n\n/**\n * Determine if we're running in a standard browser webWorker environment\n *\n * Although the `isStandardBrowserEnv` method indicates that\n * `allows axios to run in a web worker`, the WebWorker will still be\n * filtered out due to its judgment standard\n * `typeof window !== 'undefined' && typeof document !== 'undefined'`.\n * This leads to a problem when axios post `FormData` in webWorker\n */\nconst hasStandardBrowserWebWorkerEnv = (() => {\n return (\n typeof WorkerGlobalScope !== 'undefined' &&\n // eslint-disable-next-line no-undef\n self instanceof WorkerGlobalScope &&\n typeof self.importScripts === 'function'\n );\n})();\n\nconst origin = hasBrowserEnv && window.location.href || 'http://localhost';\n\nexport {\n hasBrowserEnv,\n hasStandardBrowserWebWorkerEnv,\n hasStandardBrowserEnv,\n _navigator as navigator,\n origin\n}\n","import platform from './node/index.js';\nimport * as utils from './common/utils.js';\n\nexport default {\n ...utils,\n ...platform\n}\n","'use strict';\n\nimport utils from '../utils.js';\nimport toFormData from './toFormData.js';\nimport platform from '../platform/index.js';\n\nexport default function toURLEncodedForm(data, options) {\n return toFormData(data, new platform.classes.URLSearchParams(), {\n visitor: function(value, key, path, helpers) {\n if (platform.isNode && utils.isBuffer(value)) {\n this.append(key, value.toString('base64'));\n return false;\n }\n\n return helpers.defaultVisitor.apply(this, arguments);\n },\n ...options\n });\n}\n","'use strict';\n\nimport utils from '../utils.js';\n\n/**\n * It takes a string like `foo[x][y][z]` and returns an array like `['foo', 'x', 'y', 'z']\n *\n * @param {string} name - The name of the property to get.\n *\n * @returns An array of strings.\n */\nfunction parsePropPath(name) {\n // foo[x][y][z]\n // foo.x.y.z\n // foo-x-y-z\n // foo x y z\n return utils.matchAll(/\\w+|\\[(\\w*)]/g, name).map(match => {\n return match[0] === '[]' ? '' : match[1] || match[0];\n });\n}\n\n/**\n * Convert an array to an object.\n *\n * @param {Array<any>} arr - The array to convert to an object.\n *\n * @returns An object with the same keys and values as the array.\n */\nfunction arrayToObject(arr) {\n const obj = {};\n const keys = Object.keys(arr);\n let i;\n const len = keys.length;\n let key;\n for (i = 0; i < len; i++) {\n key = keys[i];\n obj[key] = arr[key];\n }\n return obj;\n}\n\n/**\n * It takes a FormData object and returns a JavaScript object\n *\n * @param {string} formData The FormData object to convert to JSON.\n *\n * @returns {Object<string, any> | null} The converted object.\n */\nfunction formDataToJSON(formData) {\n function buildPath(path, value, target, index) {\n let name = path[index++];\n\n if (name === '__proto__') return true;\n\n const isNumericKey = Number.isFinite(+name);\n const isLast = index >= path.length;\n name = !name && utils.isArray(target) ? target.length : name;\n\n if (isLast) {\n if (utils.hasOwnProp(target, name)) {\n target[name] = [target[name], value];\n } else {\n target[name] = value;\n }\n\n return !isNumericKey;\n }\n\n if (!target[name] || !utils.isObject(target[name])) {\n target[name] = [];\n }\n\n const result = buildPath(path, value, target[name], index);\n\n if (result && utils.isArray(target[name])) {\n target[name] = arrayToObject(target[name]);\n }\n\n return !isNumericKey;\n }\n\n if (utils.isFormData(formData) && utils.isFunction(formData.entries)) {\n const obj = {};\n\n utils.forEachEntry(formData, (name, value) => {\n buildPath(parsePropPath(name), value, obj, 0);\n });\n\n return obj;\n }\n\n return null;\n}\n\nexport default formDataToJSON;\n","'use strict';\n\nimport utils from '../utils.js';\nimport AxiosError from '../core/AxiosError.js';\nimport transitionalDefaults from './transitional.js';\nimport toFormData from '../helpers/toFormData.js';\nimport toURLEncodedForm from '../helpers/toURLEncodedForm.js';\nimport platform from '../platform/index.js';\nimport formDataToJSON from '../helpers/formDataToJSON.js';\n\n/**\n * It takes a string, tries to parse it, and if it fails, it returns the stringified version\n * of the input\n *\n * @param {any} rawValue - The value to be stringified.\n * @param {Function} parser - A function that parses a string into a JavaScript object.\n * @param {Function} encoder - A function that takes a value and returns a string.\n *\n * @returns {string} A stringified version of the rawValue.\n */\nfunction stringifySafely(rawValue, parser, encoder) {\n if (utils.isString(rawValue)) {\n try {\n (parser || JSON.parse)(rawValue);\n return utils.trim(rawValue);\n } catch (e) {\n if (e.name !== 'SyntaxError') {\n throw e;\n }\n }\n }\n\n return (encoder || JSON.stringify)(rawValue);\n}\n\nconst defaults = {\n\n transitional: transitionalDefaults,\n\n adapter: ['xhr', 'http', 'fetch'],\n\n transformRequest: [function transformRequest(data, headers) {\n const contentType = headers.getContentType() || '';\n const hasJSONContentType = contentType.indexOf('application/json') > -1;\n const isObjectPayload = utils.isObject(data);\n\n if (isObjectPayload && utils.isHTMLForm(data)) {\n data = new FormData(data);\n }\n\n const isFormData = utils.isFormData(data);\n\n if (isFormData) {\n return hasJSONContentType ? JSON.stringify(formDataToJSON(data)) : data;\n }\n\n if (utils.isArrayBuffer(data) ||\n utils.isBuffer(data) ||\n utils.isStream(data) ||\n utils.isFile(data) ||\n utils.isBlob(data) ||\n utils.isReadableStream(data)\n ) {\n return data;\n }\n if (utils.isArrayBufferView(data)) {\n return data.buffer;\n }\n if (utils.isURLSearchParams(data)) {\n headers.setContentType('application/x-www-form-urlencoded;charset=utf-8', false);\n return data.toString();\n }\n\n let isFileList;\n\n if (isObjectPayload) {\n if (contentType.indexOf('application/x-www-form-urlencoded') > -1) {\n return toURLEncodedForm(data, this.formSerializer).toString();\n }\n\n if ((isFileList = utils.isFileList(data)) || contentType.indexOf('multipart/form-data') > -1) {\n const _FormData = this.env && this.env.FormData;\n\n return toFormData(\n isFileList ? {'files[]': data} : data,\n _FormData && new _FormData(),\n this.formSerializer\n );\n }\n }\n\n if (isObjectPayload || hasJSONContentType ) {\n headers.setContentType('application/json', false);\n return stringifySafely(data);\n }\n\n return data;\n }],\n\n transformResponse: [function transformResponse(data) {\n const transitional = this.transitional || defaults.transitional;\n const forcedJSONParsing = transitional && transitional.forcedJSONParsing;\n const JSONRequested = this.responseType === 'json';\n\n if (utils.isResponse(data) || utils.isReadableStream(data)) {\n return data;\n }\n\n if (data && utils.isString(data) && ((forcedJSONParsing && !this.responseType) || JSONRequested)) {\n const silentJSONParsing = transitional && transitional.silentJSONParsing;\n const strictJSONParsing = !silentJSONParsing && JSONRequested;\n\n try {\n return JSON.parse(data, this.parseReviver);\n } catch (e) {\n if (strictJSONParsing) {\n if (e.name === 'SyntaxError') {\n throw AxiosError.from(e, AxiosError.ERR_BAD_RESPONSE, this, null, this.response);\n }\n throw e;\n }\n }\n }\n\n return data;\n }],\n\n /**\n * A timeout in milliseconds to abort a request. If set to 0 (default) a\n * timeout is not created.\n */\n timeout: 0,\n\n xsrfCookieName: 'XSRF-TOKEN',\n xsrfHeaderName: 'X-XSRF-TOKEN',\n\n maxContentLength: -1,\n maxBodyLength: -1,\n\n env: {\n FormData: platform.classes.FormData,\n Blob: platform.classes.Blob\n },\n\n validateStatus: function validateStatus(status) {\n return status >= 200 && status < 300;\n },\n\n headers: {\n common: {\n 'Accept': 'application/json, text/plain, */*',\n 'Content-Type': undefined\n }\n }\n};\n\nutils.forEach(['delete', 'get', 'head', 'post', 'put', 'patch'], (method) => {\n defaults.headers[method] = {};\n});\n\nexport default defaults;\n","'use strict';\n\nimport utils from './../utils.js';\n\n// RawAxiosHeaders whose duplicates are ignored by node\n// c.f. https://nodejs.org/api/http.html#http_message_headers\nconst ignoreDuplicateOf = utils.toObjectSet([\n 'age', 'authorization', 'content-length', 'content-type', 'etag',\n 'expires', 'from', 'host', 'if-modified-since', 'if-unmodified-since',\n 'last-modified', 'location', 'max-forwards', 'proxy-authorization',\n 'referer', 'retry-after', 'user-agent'\n]);\n\n/**\n * Parse headers into an object\n *\n * ```\n * Date: Wed, 27 Aug 2014 08:58:49 GMT\n * Content-Type: application/json\n * Connection: keep-alive\n * Transfer-Encoding: chunked\n * ```\n *\n * @param {String} rawHeaders Headers needing to be parsed\n *\n * @returns {Object} Headers parsed into an object\n */\nexport default rawHeaders => {\n const parsed = {};\n let key;\n let val;\n let i;\n\n rawHeaders && rawHeaders.split('\\n').forEach(function parser(line) {\n i = line.indexOf(':');\n key = line.substring(0, i).trim().toLowerCase();\n val = line.substring(i + 1).trim();\n\n if (!key || (parsed[key] && ignoreDuplicateOf[key])) {\n return;\n }\n\n if (key === 'set-cookie') {\n if (parsed[key]) {\n parsed[key].push(val);\n } else {\n parsed[key] = [val];\n }\n } else {\n parsed[key] = parsed[key] ? parsed[key] + ', ' + val : val;\n }\n });\n\n return parsed;\n};\n","'use strict';\n\nimport utils from '../utils.js';\nimport parseHeaders from '../helpers/parseHeaders.js';\n\nconst $internals = Symbol('internals');\n\nfunction normalizeHeader(header) {\n return header && String(header).trim().toLowerCase();\n}\n\nfunction normalizeValue(value) {\n if (value === false || value == null) {\n return value;\n }\n\n return utils.isArray(value) ? value.map(normalizeValue) : String(value);\n}\n\nfunction parseTokens(str) {\n const tokens = Object.create(null);\n const tokensRE = /([^\\s,;=]+)\\s*(?:=\\s*([^,;]+))?/g;\n let match;\n\n while ((match = tokensRE.exec(str))) {\n tokens[match[1]] = match[2];\n }\n\n return tokens;\n}\n\nconst isValidHeaderName = (str) => /^[-_a-zA-Z0-9^`|~,!#$%&'*+.]+$/.test(str.trim());\n\nfunction matchHeaderValue(context, value, header, filter, isHeaderNameFilter) {\n if (utils.isFunction(filter)) {\n return filter.call(this, value, header);\n }\n\n if (isHeaderNameFilter) {\n value = header;\n }\n\n if (!utils.isString(value)) return;\n\n if (utils.isString(filter)) {\n return value.indexOf(filter) !== -1;\n }\n\n if (utils.isRegExp(filter)) {\n return filter.test(value);\n }\n}\n\nfunction formatHeader(header) {\n return header.trim()\n .toLowerCase().replace(/([a-z\\d])(\\w*)/g, (w, char, str) => {\n return char.toUpperCase() + str;\n });\n}\n\nfunction buildAccessors(obj, header) {\n const accessorName = utils.toCamelCase(' ' + header);\n\n ['get', 'set', 'has'].forEach(methodName => {\n Object.defineProperty(obj, methodName + accessorName, {\n value: function(arg1, arg2, arg3) {\n return this[methodName].call(this, header, arg1, arg2, arg3);\n },\n configurable: true\n });\n });\n}\n\nclass AxiosHeaders {\n constructor(headers) {\n headers && this.set(headers);\n }\n\n set(header, valueOrRewrite, rewrite) {\n const self = this;\n\n function setHeader(_value, _header, _rewrite) {\n const lHeader = normalizeHeader(_header);\n\n if (!lHeader) {\n throw new Error('header name must be a non-empty string');\n }\n\n const key = utils.findKey(self, lHeader);\n\n if(!key || self[key] === undefined || _rewrite === true || (_rewrite === undefined && self[key] !== false)) {\n self[key || _header] = normalizeValue(_value);\n }\n }\n\n const setHeaders = (headers, _rewrite) =>\n utils.forEach(headers, (_value, _header) => setHeader(_value, _header, _rewrite));\n\n if (utils.isPlainObject(header) || header instanceof this.constructor) {\n setHeaders(header, valueOrRewrite)\n } else if(utils.isString(header) && (header = header.trim()) && !isValidHeaderName(header)) {\n setHeaders(parseHeaders(header), valueOrRewrite);\n } else if (utils.isObject(header) && utils.isIterable(header)) {\n let obj = {}, dest, key;\n for (const entry of header) {\n if (!utils.isArray(entry)) {\n throw TypeError('Object iterator must return a key-value pair');\n }\n\n obj[key = entry[0]] = (dest = obj[key]) ?\n (utils.isArray(dest) ? [...dest, entry[1]] : [dest, entry[1]]) : entry[1];\n }\n\n setHeaders(obj, valueOrRewrite)\n } else {\n header != null && setHeader(valueOrRewrite, header, rewrite);\n }\n\n return this;\n }\n\n get(header, parser) {\n header = normalizeHeader(header);\n\n if (header) {\n const key = utils.findKey(this, header);\n\n if (key) {\n const value = this[key];\n\n if (!parser) {\n return value;\n }\n\n if (parser === true) {\n return parseTokens(value);\n }\n\n if (utils.isFunction(parser)) {\n return parser.call(this, value, key);\n }\n\n if (utils.isRegExp(parser)) {\n return parser.exec(value);\n }\n\n throw new TypeError('parser must be boolean|regexp|function');\n }\n }\n }\n\n has(header, matcher) {\n header = normalizeHeader(header);\n\n if (header) {\n const key = utils.findKey(this, header);\n\n return !!(key && this[key] !== undefined && (!matcher || matchHeaderValue(this, this[key], key, matcher)));\n }\n\n return false;\n }\n\n delete(header, matcher) {\n const self = this;\n let deleted = false;\n\n function deleteHeader(_header) {\n _header = normalizeHeader(_header);\n\n if (_header) {\n const key = utils.findKey(self, _header);\n\n if (key && (!matcher || matchHeaderValue(self, self[key], key, matcher))) {\n delete self[key];\n\n deleted = true;\n }\n }\n }\n\n if (utils.isArray(header)) {\n header.forEach(deleteHeader);\n } else {\n deleteHeader(header);\n }\n\n return deleted;\n }\n\n clear(matcher) {\n const keys = Object.keys(this);\n let i = keys.length;\n let deleted = false;\n\n while (i--) {\n const key = keys[i];\n if(!matcher || matchHeaderValue(this, this[key], key, matcher, true)) {\n delete this[key];\n deleted = true;\n }\n }\n\n return deleted;\n }\n\n normalize(format) {\n const self = this;\n const headers = {};\n\n utils.forEach(this, (value, header) => {\n const key = utils.findKey(headers, header);\n\n if (key) {\n self[key] = normalizeValue(value);\n delete self[header];\n return;\n }\n\n const normalized = format ? formatHeader(header) : String(header).trim();\n\n if (normalized !== header) {\n delete self[header];\n }\n\n self[normalized] = normalizeValue(value);\n\n headers[normalized] = true;\n });\n\n return this;\n }\n\n concat(...targets) {\n return this.constructor.concat(this, ...targets);\n }\n\n toJSON(asStrings) {\n const obj = Object.create(null);\n\n utils.forEach(this, (value, header) => {\n value != null && value !== false && (obj[header] = asStrings && utils.isArray(value) ? value.join(', ') : value);\n });\n\n return obj;\n }\n\n [Symbol.iterator]() {\n return Object.entries(this.toJSON())[Symbol.iterator]();\n }\n\n toString() {\n return Object.entries(this.toJSON()).map(([header, value]) => header + ': ' + value).join('\\n');\n }\n\n getSetCookie() {\n return this.get(\"set-cookie\") || [];\n }\n\n get [Symbol.toStringTag]() {\n return 'AxiosHeaders';\n }\n\n static from(thing) {\n return thing instanceof this ? thing : new this(thing);\n }\n\n static concat(first, ...targets) {\n const computed = new this(first);\n\n targets.forEach((target) => computed.set(target));\n\n return computed;\n }\n\n static accessor(header) {\n const internals = this[$internals] = (this[$internals] = {\n accessors: {}\n });\n\n const accessors = internals.accessors;\n const prototype = this.prototype;\n\n function defineAccessor(_header) {\n const lHeader = normalizeHeader(_header);\n\n if (!accessors[lHeader]) {\n buildAccessors(prototype, _header);\n accessors[lHeader] = true;\n }\n }\n\n utils.isArray(header) ? header.forEach(defineAccessor) : defineAccessor(header);\n\n return this;\n }\n}\n\nAxiosHeaders.accessor(['Content-Type', 'Content-Length', 'Accept', 'Accept-Encoding', 'User-Agent', 'Authorization']);\n\n// reserved names hotfix\nutils.reduceDescriptors(AxiosHeaders.prototype, ({value}, key) => {\n let mapped = key[0].toUpperCase() + key.slice(1); // map `set` => `Set`\n return {\n get: () => value,\n set(headerValue) {\n this[mapped] = headerValue;\n }\n }\n});\n\nutils.freezeMethods(AxiosHeaders);\n\nexport default AxiosHeaders;\n","'use strict';\n\nimport utils from './../utils.js';\nimport defaults from '../defaults/index.js';\nimport AxiosHeaders from '../core/AxiosHeaders.js';\n\n/**\n * Transform the data for a request or a response\n *\n * @param {Array|Function} fns A single function or Array of functions\n * @param {?Object} response The response object\n *\n * @returns {*} The resulting transformed data\n */\nexport default function transformData(fns, response) {\n const config = this || defaults;\n const context = response || config;\n const headers = AxiosHeaders.from(context.headers);\n let data = context.data;\n\n utils.forEach(fns, function transform(fn) {\n data = fn.call(config, data, headers.normalize(), response ? response.status : undefined);\n });\n\n headers.normalize();\n\n return data;\n}\n","'use strict';\n\nexport default function isCancel(value) {\n return !!(value && value.__CANCEL__);\n}\n","'use strict';\n\nimport AxiosError from '../core/AxiosError.js';\nimport utils from '../utils.js';\n\n/**\n * A `CanceledError` is an object that is thrown when an operation is canceled.\n *\n * @param {string=} message The message.\n * @param {Object=} config The config.\n * @param {Object=} request The request.\n *\n * @returns {CanceledError} The created error.\n */\nfunction CanceledError(message, config, request) {\n // eslint-disable-next-line no-eq-null,eqeqeq\n AxiosError.call(this, message == null ? 'canceled' : message, AxiosError.ERR_CANCELED, config, request);\n this.name = 'CanceledError';\n}\n\nutils.inherits(CanceledError, AxiosError, {\n __CANCEL__: true\n});\n\nexport default CanceledError;\n","'use strict';\n\nimport AxiosError from './AxiosError.js';\n\n/**\n * Resolve or reject a Promise based on response status.\n *\n * @param {Function} resolve A function that resolves the promise.\n * @param {Function} reject A function that rejects the promise.\n * @param {object} response The response.\n *\n * @returns {object} The response.\n */\nexport default function settle(resolve, reject, response) {\n const validateStatus = response.config.validateStatus;\n if (!response.status || !validateStatus || validateStatus(response.status)) {\n resolve(response);\n } else {\n reject(new AxiosError(\n 'Request failed with status code ' + response.status,\n [AxiosError.ERR_BAD_REQUEST, AxiosError.ERR_BAD_RESPONSE][Math.floor(response.status / 100) - 4],\n response.config,\n response.request,\n response\n ));\n }\n}\n","'use strict';\n\nexport default function parseProtocol(url) {\n const match = /^([-+\\w]{1,25})(:?\\/\\/|:)/.exec(url);\n return match && match[1] || '';\n}\n","'use strict';\n\n/**\n * Calculate data maxRate\n * @param {Number} [samplesCount= 10]\n * @param {Number} [min= 1000]\n * @returns {Function}\n */\nfunction speedometer(samplesCount, min) {\n samplesCount = samplesCount || 10;\n const bytes = new Array(samplesCount);\n const timestamps = new Array(samplesCount);\n let head = 0;\n let tail = 0;\n let firstSampleTS;\n\n min = min !== undefined ? min : 1000;\n\n return function push(chunkLength) {\n const now = Date.now();\n\n const startedAt = timestamps[tail];\n\n if (!firstSampleTS) {\n firstSampleTS = now;\n }\n\n bytes[head] = chunkLength;\n timestamps[head] = now;\n\n let i = tail;\n let bytesCount = 0;\n\n while (i !== head) {\n bytesCount += bytes[i++];\n i = i % samplesCount;\n }\n\n head = (head + 1) % samplesCount;\n\n if (head === tail) {\n tail = (tail + 1) % samplesCount;\n }\n\n if (now - firstSampleTS < min) {\n return;\n }\n\n const passed = startedAt && now - startedAt;\n\n return passed ? Math.round(bytesCount * 1000 / passed) : undefined;\n };\n}\n\nexport default speedometer;\n","/**\n * Throttle decorator\n * @param {Function} fn\n * @param {Number} freq\n * @return {Function}\n */\nfunction throttle(fn, freq) {\n let timestamp = 0;\n let threshold = 1000 / freq;\n let lastArgs;\n let timer;\n\n const invoke = (args, now = Date.now()) => {\n timestamp = now;\n lastArgs = null;\n if (timer) {\n clearTimeout(timer);\n timer = null;\n }\n fn(...args);\n }\n\n const throttled = (...args) => {\n const now = Date.now();\n const passed = now - timestamp;\n if ( passed >= threshold) {\n invoke(args, now);\n } else {\n lastArgs = args;\n if (!timer) {\n timer = setTimeout(() => {\n timer = null;\n invoke(lastArgs)\n }, threshold - passed);\n }\n }\n }\n\n const flush = () => lastArgs && invoke(lastArgs);\n\n return [throttled, flush];\n}\n\nexport default throttle;\n","import speedometer from \"./speedometer.js\";\nimport throttle from \"./throttle.js\";\nimport utils from \"../utils.js\";\n\nexport const progressEventReducer = (listener, isDownloadStream, freq = 3) => {\n let bytesNotified = 0;\n const _speedometer = speedometer(50, 250);\n\n return throttle(e => {\n const loaded = e.loaded;\n const total = e.lengthComputable ? e.total : undefined;\n const progressBytes = loaded - bytesNotified;\n const rate = _speedometer(progressBytes);\n const inRange = loaded <= total;\n\n bytesNotified = loaded;\n\n const data = {\n loaded,\n total,\n progress: total ? (loaded / total) : undefined,\n bytes: progressBytes,\n rate: rate ? rate : undefined,\n estimated: rate && total && inRange ? (total - loaded) / rate : undefined,\n event: e,\n lengthComputable: total != null,\n [isDownloadStream ? 'download' : 'upload']: true\n };\n\n listener(data);\n }, freq);\n}\n\nexport const progressEventDecorator = (total, throttled) => {\n const lengthComputable = total != null;\n\n return [(loaded) => throttled[0]({\n lengthComputable,\n total,\n loaded\n }), throttled[1]];\n}\n\nexport const asyncDecorator = (fn) => (...args) => utils.asap(() => fn(...args));\n","import platform from '../platform/index.js';\n\nexport default platform.hasStandardBrowserEnv ? ((origin, isMSIE) => (url) => {\n url = new URL(url, platform.origin);\n\n return (\n origin.protocol === url.protocol &&\n origin.host === url.host &&\n (isMSIE || origin.port === url.port)\n );\n})(\n new URL(platform.origin),\n platform.navigator && /(msie|trident)/i.test(platform.navigator.userAgent)\n) : () => true;\n","import utils from './../utils.js';\nimport platform from '../platform/index.js';\n\nexport default platform.hasStandardBrowserEnv ?\n\n // Standard browser envs support document.cookie\n {\n write(name, value, expires, path, domain, secure, sameSite) {\n if (typeof document === 'undefined') return;\n\n const cookie = [`${name}=${encodeURIComponent(value)}`];\n\n if (utils.isNumber(expires)) {\n cookie.push(`expires=${new Date(expires).toUTCString()}`);\n }\n if (utils.isString(path)) {\n cookie.push(`path=${path}`);\n }\n if (utils.isString(domain)) {\n cookie.push(`domain=${domain}`);\n }\n if (secure === true) {\n cookie.push('secure');\n }\n if (utils.isString(sameSite)) {\n cookie.push(`SameSite=${sameSite}`);\n }\n\n document.cookie = cookie.join('; ');\n },\n\n read(name) {\n if (typeof document === 'undefined') return null;\n const match = document.cookie.match(new RegExp('(?:^|; )' + name + '=([^;]*)'));\n return match ? decodeURIComponent(match[1]) : null;\n },\n\n remove(name) {\n this.write(name, '', Date.now() - 86400000, '/');\n }\n }\n\n :\n\n // Non-standard browser env (web workers, react-native) lack needed support.\n {\n write() {},\n read() {\n return null;\n },\n remove() {}\n };\n\n","'use strict';\n\n/**\n * Determines whether the specified URL is absolute\n *\n * @param {string} url The URL to test\n *\n * @returns {boolean} True if the specified URL is absolute, otherwise false\n */\nexport default function isAbsoluteURL(url) {\n // A URL is considered absolute if it begins with \"<scheme>://\" or \"//\" (protocol-relative URL).\n // RFC 3986 defines scheme name as a sequence of characters beginning with a letter and followed\n // by any combination of letters, digits, plus, period, or hyphen.\n return /^([a-z][a-z\\d+\\-.]*:)?\\/\\//i.test(url);\n}\n","'use strict';\n\n/**\n * Creates a new URL by combining the specified URLs\n *\n * @param {string} baseURL The base URL\n * @param {string} relativeURL The relative URL\n *\n * @returns {string} The combined URL\n */\nexport default function combineURLs(baseURL, relativeURL) {\n return relativeURL\n ? baseURL.replace(/\\/?\\/$/, '') + '/' + relativeURL.replace(/^\\/+/, '')\n : baseURL;\n}\n","'use strict';\n\nimport isAbsoluteURL from '../helpers/isAbsoluteURL.js';\nimport combineURLs from '../helpers/combineURLs.js';\n\n/**\n * Creates a new URL by combining the baseURL with the requestedURL,\n * only when the requestedURL is not already an absolute URL.\n * If the requestURL is absolute, this function returns the requestedURL untouched.\n *\n * @param {string} baseURL The base URL\n * @param {string} requestedURL Absolute or relative URL to combine\n *\n * @returns {string} The combined full path\n */\nexport default function buildFullPath(baseURL, requestedURL, allowAbsoluteUrls) {\n let isRelativeUrl = !isAbsoluteURL(requestedURL);\n if (baseURL && (isRelativeUrl || allowAbsoluteUrls == false)) {\n return combineURLs(baseURL, requestedURL);\n }\n return requestedURL;\n}\n","'use strict';\n\nimport utils from '../utils.js';\nimport AxiosHeaders from \"./AxiosHeaders.js\";\n\nconst headersToObject = (thing) => thing instanceof AxiosHeaders ? { ...thing } : thing;\n\n/**\n * Config-specific merge-function which creates a new config-object\n * by merging two configuration objects together.\n *\n * @param {Object} config1\n * @param {Object} config2\n *\n * @returns {Object} New object resulting from merging config2 to config1\n */\nexport default function mergeConfig(config1, config2) {\n // eslint-disable-next-line no-param-reassign\n config2 = config2 || {};\n const config = {};\n\n function getMergedValue(target, source, prop, caseless) {\n if (utils.isPlainObject(target) && utils.isPlainObject(source)) {\n return utils.merge.call({caseless}, target, source);\n } else if (utils.isPlainObject(source)) {\n return utils.merge({}, source);\n } else if (utils.isArray(source)) {\n return source.slice();\n }\n return source;\n }\n\n // eslint-disable-next-line consistent-return\n function mergeDeepProperties(a, b, prop, caseless) {\n if (!utils.isUndefined(b)) {\n return getMergedValue(a, b, prop, caseless);\n } else if (!utils.isUndefined(a)) {\n return getMergedValue(undefined, a, prop, caseless);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function valueFromConfig2(a, b) {\n if (!utils.isUndefined(b)) {\n return getMergedValue(undefined, b);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function defaultToConfig2(a, b) {\n if (!utils.isUndefined(b)) {\n return getMergedValue(undefined, b);\n } else if (!utils.isUndefined(a)) {\n return getMergedValue(undefined, a);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function mergeDirectKeys(a, b, prop) {\n if (prop in config2) {\n return getMergedValue(a, b);\n } else if (prop in config1) {\n return getMergedValue(undefined, a);\n }\n }\n\n const mergeMap = {\n url: valueFromConfig2,\n method: valueFromConfig2,\n data: valueFromConfig2,\n baseURL: defaultToConfig2,\n transformRequest: defaultToConfig2,\n transformResponse: defaultToConfig2,\n paramsSerializer: defaultToConfig2,\n timeout: defaultToConfig2,\n timeoutMessage: defaultToConfig2,\n withCredentials: defaultToConfig2,\n withXSRFToken: defaultToConfig2,\n adapter: defaultToConfig2,\n responseType: defaultToConfig2,\n xsrfCookieName: defaultToConfig2,\n xsrfHeaderName: defaultToConfig2,\n onUploadProgress: defaultToConfig2,\n onDownloadProgress: defaultToConfig2,\n decompress: defaultToConfig2,\n maxContentLength: defaultToConfig2,\n maxBodyLength: defaultToConfig2,\n beforeRedirect: defaultToConfig2,\n transport: defaultToConfig2,\n httpAgent: defaultToConfig2,\n httpsAgent: defaultToConfig2,\n cancelToken: defaultToConfig2,\n socketPath: defaultToConfig2,\n responseEncoding: defaultToConfig2,\n validateStatus: mergeDirectKeys,\n headers: (a, b, prop) => mergeDeepProperties(headersToObject(a), headersToObject(b), prop, true)\n };\n\n utils.forEach(Object.keys({...config1, ...config2}), function computeConfigValue(prop) {\n const merge = mergeMap[prop] || mergeDeepProperties;\n const configValue = merge(config1[prop], config2[prop], prop);\n (utils.isUndefined(configValue) && merge !== mergeDirectKeys) || (config[prop] = configValue);\n });\n\n return config;\n}\n","import platform from \"../platform/index.js\";\nimport utils from \"../utils.js\";\nimport isURLSameOrigin from \"./isURLSameOrigin.js\";\nimport cookies from \"./cookies.js\";\nimport buildFullPath from \"../core/buildFullPath.js\";\nimport mergeConfig from \"../core/mergeConfig.js\";\nimport AxiosHeaders from \"../core/AxiosHeaders.js\";\nimport buildURL from \"./buildURL.js\";\n\nexport default (config) => {\n const newConfig = mergeConfig({}, config);\n\n let { data, withXSRFToken, xsrfHeaderName, xsrfCookieName, headers, auth } = newConfig;\n\n newConfig.headers = headers = AxiosHeaders.from(headers);\n\n newConfig.url = buildURL(buildFullPath(newConfig.baseURL, newConfig.url, newConfig.allowAbsoluteUrls), config.params, config.paramsSerializer);\n\n // HTTP basic authentication\n if (auth) {\n headers.set('Authorization', 'Basic ' +\n btoa((auth.username || '') + ':' + (auth.password ? unescape(encodeURIComponent(auth.password)) : ''))\n );\n }\n\n if (utils.isFormData(data)) {\n if (platform.hasStandardBrowserEnv || platform.hasStandardBrowserWebWorkerEnv) {\n headers.setContentType(undefined); // browser handles it\n } else if (utils.isFunction(data.getHeaders)) {\n // Node.js FormData (like form-data package)\n const formHeaders = data.getHeaders();\n // Only set safe headers to avoid overwriting security headers\n const allowedHeaders = ['content-type', 'content-length'];\n Object.entries(formHeaders).forEach(([key, val]) => {\n if (allowedHeaders.includes(key.toLowerCase())) {\n headers.set(key, val);\n }\n });\n }\n } \n\n // Add xsrf header\n // This is only done if running in a standard browser environment.\n // Specifically not if we're in a web worker, or react-native.\n\n if (platform.hasStandardBrowserEnv) {\n withXSRFToken && utils.isFunction(withXSRFToken) && (withXSRFToken = withXSRFToken(newConfig));\n\n if (withXSRFToken || (withXSRFToken !== false && isURLSameOrigin(newConfig.url))) {\n // Add xsrf header\n const xsrfValue = xsrfHeaderName && xsrfCookieName && cookies.read(xsrfCookieName);\n\n if (xsrfValue) {\n headers.set(xsrfHeaderName, xsrfValue);\n }\n }\n }\n\n return newConfig;\n}\n\n","import utils from './../utils.js';\nimport settle from './../core/settle.js';\nimport transitionalDefaults from '../defaults/transitional.js';\nimport AxiosError from '../core/AxiosError.js';\nimport CanceledError from '../cancel/CanceledError.js';\nimport parseProtocol from '../helpers/parseProtocol.js';\nimport platform from '../platform/index.js';\nimport AxiosHeaders from '../core/AxiosHeaders.js';\nimport {progressEventReducer} from '../helpers/progressEventReducer.js';\nimport resolveConfig from \"../helpers/resolveConfig.js\";\n\nconst isXHRAdapterSupported = typeof XMLHttpRequest !== 'undefined';\n\nexport default isXHRAdapterSupported && function (config) {\n return new Promise(function dispatchXhrRequest(resolve, reject) {\n const _config = resolveConfig(config);\n let requestData = _config.data;\n const requestHeaders = AxiosHeaders.from(_config.headers).normalize();\n let {responseType, onUploadProgress, onDownloadProgress} = _config;\n let onCanceled;\n let uploadThrottled, downloadThrottled;\n let flushUpload, flushDownload;\n\n function done() {\n flushUpload && flushUpload(); // flush events\n flushDownload && flushDownload(); // flush events\n\n _config.cancelToken && _config.cancelToken.unsubscribe(onCanceled);\n\n _config.signal && _config.signal.removeEventListener('abort', onCanceled);\n }\n\n let request = new XMLHttpRequest();\n\n request.open(_config.method.toUpperCase(), _config.url, true);\n\n // Set the request timeout in MS\n request.timeout = _config.timeout;\n\n function onloadend() {\n if (!request) {\n return;\n }\n // Prepare the response\n const responseHeaders = AxiosHeaders.from(\n 'getAllResponseHeaders' in request && request.getAllResponseHeaders()\n );\n const responseData = !responseType || responseType === 'text' || responseType === 'json' ?\n request.responseText : request.response;\n const response = {\n data: responseData,\n status: request.status,\n statusText: request.statusText,\n headers: responseHeaders,\n config,\n request\n };\n\n settle(function _resolve(value) {\n resolve(value);\n done();\n }, function _reject(err) {\n reject(err);\n done();\n }, response);\n\n // Clean up request\n request = null;\n }\n\n if ('onloadend' in request) {\n // Use onloadend if available\n request.onloadend = onloadend;\n } else {\n // Listen for ready state to emulate onloadend\n request.onreadystatechange = function handleLoad() {\n if (!request || request.readyState !== 4) {\n return;\n }\n\n // The request errored out and we didn't get a response, this will be\n // handled by onerror instead\n // With one exception: request that using file: protocol, most browsers\n // will return status as 0 even though it's a successful request\n if (request.status === 0 && !(request.responseURL && request.responseURL.indexOf('file:') === 0)) {\n return;\n }\n // readystate handler is calling before onerror or ontimeout handlers,\n // so we should call onloadend on the next 'tick'\n setTimeout(onloadend);\n };\n }\n\n // Handle browser request cancellation (as opposed to a manual cancellation)\n request.onabort = function handleAbort() {\n if (!request) {\n return;\n }\n\n reject(new AxiosError('Request aborted', AxiosError.ECONNABORTED, config, request));\n\n // Clean up request\n request = null;\n };\n\n // Handle low level network errors\n request.onerror = function handleError(event) {\n // Browsers deliver a ProgressEvent in XHR onerror\n // (message may be empty; when present, surface it)\n // See https://developer.mozilla.org/docs/Web/API/XMLHttpRequest/error_event\n const msg = event && event.message ? event.message : 'Network Error';\n const err = new AxiosError(msg, AxiosError.ERR_NETWORK, config, request);\n // attach the underlying event for consumers who want details\n err.event = event || null;\n reject(err);\n request = null;\n };\n \n // Handle timeout\n request.ontimeout = function handleTimeout() {\n let timeoutErrorMessage = _config.timeout ? 'timeout of ' + _config.timeout + 'ms exceeded' : 'timeout exceeded';\n const transitional = _config.transitional || transitionalDefaults;\n if (_config.timeoutErrorMessage) {\n timeoutErrorMessage = _config.timeoutErrorMessage;\n }\n reject(new AxiosError(\n timeoutErrorMessage,\n transitional.clarifyTimeoutError ? AxiosError.ETIMEDOUT : AxiosError.ECONNABORTED,\n config,\n request));\n\n // Clean up request\n request = null;\n };\n\n // Remove Content-Type if data is undefined\n requestData === undefined && requestHeaders.setContentType(null);\n\n // Add headers to the request\n if ('setRequestHeader' in request) {\n utils.forEach(requestHeaders.toJSON(), function setRequestHeader(val, key) {\n request.setRequestHeader(key, val);\n });\n }\n\n // Add withCredentials to request if needed\n if (!utils.isUndefined(_config.withCredentials)) {\n request.withCredentials = !!_config.withCredentials;\n }\n\n // Add responseType to request if needed\n if (responseType && responseType !== 'json') {\n request.responseType = _config.responseType;\n }\n\n // Handle progress if needed\n if (onDownloadProgress) {\n ([downloadThrottled, flushDownload] = progressEventReducer(onDownloadProgress, true));\n request.addEventListener('progress', downloadThrottled);\n }\n\n // Not all browsers support upload events\n if (onUploadProgress && request.upload) {\n ([uploadThrottled, flushUpload] = progressEventReducer(onUploadProgress));\n\n request.upload.addEventListener('progress', uploadThrottled);\n\n request.upload.addEventListener('loadend', flushUpload);\n }\n\n if (_config.cancelToken || _config.signal) {\n // Handle cancellation\n // eslint-disable-next-line func-names\n onCanceled = cancel => {\n if (!request) {\n return;\n }\n reject(!cancel || cancel.type ? new CanceledError(null, config, request) : cancel);\n request.abort();\n request = null;\n };\n\n _config.cancelToken && _config.cancelToken.subscribe(onCanceled);\n if (_config.signal) {\n _config.signal.aborted ? onCanceled() : _config.signal.addEventListener('abort', onCanceled);\n }\n }\n\n const protocol = parseProtocol(_config.url);\n\n if (protocol && platform.protocols.indexOf(protocol) === -1) {\n reject(new AxiosError('Unsupported protocol ' + protocol + ':', AxiosError.ERR_BAD_REQUEST, config));\n return;\n }\n\n\n // Send the request\n request.send(requestData || null);\n });\n}\n","import CanceledError from \"../cancel/CanceledError.js\";\nimport AxiosError from \"../core/AxiosError.js\";\nimport utils from '../utils.js';\n\nconst composeSignals = (signals, timeout) => {\n const {length} = (signals = signals ? signals.filter(Boolean) : []);\n\n if (timeout || length) {\n let controller = new AbortController();\n\n let aborted;\n\n const onabort = function (reason) {\n if (!aborted) {\n aborted = true;\n unsubscribe();\n const err = reason instanceof Error ? reason : this.reason;\n controller.abort(err instanceof AxiosError ? err : new CanceledError(err instanceof Error ? err.message : err));\n }\n }\n\n let timer = timeout && setTimeout(() => {\n timer = null;\n onabort(new AxiosError(`timeout ${timeout} of ms exceeded`, AxiosError.ETIMEDOUT))\n }, timeout)\n\n const unsubscribe = () => {\n if (signals) {\n timer && clearTimeout(timer);\n timer = null;\n signals.forEach(signal => {\n signal.unsubscribe ? signal.unsubscribe(onabort) : signal.removeEventListener('abort', onabort);\n });\n signals = null;\n }\n }\n\n signals.forEach((signal) => signal.addEventListener('abort', onabort));\n\n const {signal} = controller;\n\n signal.unsubscribe = () => utils.asap(unsubscribe);\n\n return signal;\n }\n}\n\nexport default composeSignals;\n","\nexport const streamChunk = function* (chunk, chunkSize) {\n let len = chunk.byteLength;\n\n if (!chunkSize || len < chunkSize) {\n yield chunk;\n return;\n }\n\n let pos = 0;\n let end;\n\n while (pos < len) {\n end = pos + chunkSize;\n yield chunk.slice(pos, end);\n pos = end;\n }\n}\n\nexport const readBytes = async function* (iterable, chunkSize) {\n for await (const chunk of readStream(iterable)) {\n yield* streamChunk(chunk, chunkSize);\n }\n}\n\nconst readStream = async function* (stream) {\n if (stream[Symbol.asyncIterator]) {\n yield* stream;\n return;\n }\n\n const reader = stream.getReader();\n try {\n for (;;) {\n const {done, value} = await reader.read();\n if (done) {\n break;\n }\n yield value;\n }\n } finally {\n await reader.cancel();\n }\n}\n\nexport const trackStream = (stream, chunkSize, onProgress, onFinish) => {\n const iterator = readBytes(stream, chunkSize);\n\n let bytes = 0;\n let done;\n let _onFinish = (e) => {\n if (!done) {\n done = true;\n onFinish && onFinish(e);\n }\n }\n\n return new ReadableStream({\n async pull(controller) {\n try {\n const {done, value} = await iterator.next();\n\n if (done) {\n _onFinish();\n controller.close();\n return;\n }\n\n let len = value.byteLength;\n if (onProgress) {\n let loadedBytes = bytes += len;\n onProgress(loadedBytes);\n }\n controller.enqueue(new Uint8Array(value));\n } catch (err) {\n _onFinish(err);\n throw err;\n }\n },\n cancel(reason) {\n _onFinish(reason);\n return iterator.return();\n }\n }, {\n highWaterMark: 2\n })\n}\n","import platform from \"../platform/index.js\";\nimport utils from \"../utils.js\";\nimport AxiosError from \"../core/AxiosError.js\";\nimport composeSignals from \"../helpers/composeSignals.js\";\nimport {trackStream} from \"../helpers/trackStream.js\";\nimport AxiosHeaders from \"../core/AxiosHeaders.js\";\nimport {progressEventReducer, progressEventDecorator, asyncDecorator} from \"../helpers/progressEventReducer.js\";\nimport resolveConfig from \"../helpers/resolveConfig.js\";\nimport settle from \"../core/settle.js\";\n\nconst DEFAULT_CHUNK_SIZE = 64 * 1024;\n\nconst {isFunction} = utils;\n\nconst globalFetchAPI = (({Request, Response}) => ({\n Request, Response\n}))(utils.global);\n\nconst {\n ReadableStream, TextEncoder\n} = utils.global;\n\n\nconst test = (fn, ...args) => {\n try {\n return !!fn(...args);\n } catch (e) {\n return false\n }\n}\n\nconst factory = (env) => {\n env = utils.merge.call({\n skipUndefined: true\n }, globalFetchAPI, env);\n\n const {fetch: envFetch, Request, Response} = env;\n const isFetchSupported = envFetch ? isFunction(envFetch) : typeof fetch === 'function';\n const isRequestSupported = isFunction(Request);\n const isResponseSupported = isFunction(Response);\n\n if (!isFetchSupported) {\n return false;\n }\n\n const isReadableStreamSupported = isFetchSupported && isFunction(ReadableStream);\n\n const encodeText = isFetchSupported && (typeof TextEncoder === 'function' ?\n ((encoder) => (str) => encoder.encode(str))(new TextEncoder()) :\n async (str) => new Uint8Array(await new Request(str).arrayBuffer())\n );\n\n const supportsRequestStream = isRequestSupported && isReadableStreamSupported && test(() => {\n let duplexAccessed = false;\n\n const hasContentType = new Request(platform.origin, {\n body: new ReadableStream(),\n method: 'POST',\n get duplex() {\n duplexAccessed = true;\n return 'half';\n },\n }).headers.has('Content-Type');\n\n return duplexAccessed && !hasContentType;\n });\n\n const supportsResponseStream = isResponseSupported && isReadableStreamSupported &&\n test(() => utils.isReadableStream(new Response('').body));\n\n const resolvers = {\n stream: supportsResponseStream && ((res) => res.body)\n };\n\n isFetchSupported && ((() => {\n ['text', 'arrayBuffer', 'blob', 'formData', 'stream'].forEach(type => {\n !resolvers[type] && (resolvers[type] = (res, config) => {\n let method = res && res[type];\n\n if (method) {\n return method.call(res);\n }\n\n throw new AxiosError(`Response type '${type}' is not supported`, AxiosError.ERR_NOT_SUPPORT, config);\n })\n });\n })());\n\n const getBodyLength = async (body) => {\n if (body == null) {\n return 0;\n }\n\n if (utils.isBlob(body)) {\n return body.size;\n }\n\n if (utils.isSpecCompliantForm(body)) {\n const _request = new Request(platform.origin, {\n method: 'POST',\n body,\n });\n return (await _request.arrayBuffer()).byteLength;\n }\n\n if (utils.isArrayBufferView(body) || utils.isArrayBuffer(body)) {\n return body.byteLength;\n }\n\n if (utils.isURLSearchParams(body)) {\n body = body + '';\n }\n\n if (utils.isString(body)) {\n return (await encodeText(body)).byteLength;\n }\n }\n\n const resolveBodyLength = async (headers, body) => {\n const length = utils.toFiniteNumber(headers.getContentLength());\n\n return length == null ? getBodyLength(body) : length;\n }\n\n return async (config) => {\n let {\n url,\n method,\n data,\n signal,\n cancelToken,\n timeout,\n onDownloadProgress,\n onUploadProgress,\n responseType,\n headers,\n withCredentials = 'same-origin',\n fetchOptions\n } = resolveConfig(config);\n\n let _fetch = envFetch || fetch;\n\n responseType = responseType ? (responseType + '').toLowerCase() : 'text';\n\n let composedSignal = composeSignals([signal, cancelToken && cancelToken.toAbortSignal()], timeout);\n\n let request = null;\n\n const unsubscribe = composedSignal && composedSignal.unsubscribe && (() => {\n composedSignal.unsubscribe();\n });\n\n let requestContentLength;\n\n try {\n if (\n onUploadProgress && supportsRequestStream && method !== 'get' && method !== 'head' &&\n (requestContentLength = await resolveBodyLength(headers, data)) !== 0\n ) {\n let _request = new Request(url, {\n method: 'POST',\n body: data,\n duplex: \"half\"\n });\n\n let contentTypeHeader;\n\n if (utils.isFormData(data) && (contentTypeHeader = _request.headers.get('content-type'))) {\n headers.setContentType(contentTypeHeader)\n }\n\n if (_request.body) {\n const [onProgress, flush] = progressEventDecorator(\n requestContentLength,\n progressEventReducer(asyncDecorator(onUploadProgress))\n );\n\n data = trackStream(_request.body, DEFAULT_CHUNK_SIZE, onProgress, flush);\n }\n }\n\n if (!utils.isString(withCredentials)) {\n withCredentials = withCredentials ? 'include' : 'omit';\n }\n\n // Cloudflare Workers throws when credentials are defined\n // see https://github.com/cloudflare/workerd/issues/902\n const isCredentialsSupported = isRequestSupported && \"credentials\" in Request.prototype;\n\n const resolvedOptions = {\n ...fetchOptions,\n signal: composedSignal,\n method: method.toUpperCase(),\n headers: headers.normalize().toJSON(),\n body: data,\n duplex: \"half\",\n credentials: isCredentialsSupported ? withCredentials : undefined\n };\n\n request = isRequestSupported && new Request(url, resolvedOptions);\n\n let response = await (isRequestSupported ? _fetch(request, fetchOptions) : _fetch(url, resolvedOptions));\n\n const isStreamResponse = supportsResponseStream && (responseType === 'stream' || responseType === 'response');\n\n if (supportsResponseStream && (onDownloadProgress || (isStreamResponse && unsubscribe))) {\n const options = {};\n\n ['status', 'statusText', 'headers'].forEach(prop => {\n options[prop] = response[prop];\n });\n\n const responseContentLength = utils.toFiniteNumber(response.headers.get('content-length'));\n\n const [onProgress, flush] = onDownloadProgress && progressEventDecorator(\n responseContentLength,\n progressEventReducer(asyncDecorator(onDownloadProgress), true)\n ) || [];\n\n response = new Response(\n trackStream(response.body, DEFAULT_CHUNK_SIZE, onProgress, () => {\n flush && flush();\n unsubscribe && unsubscribe();\n }),\n options\n );\n }\n\n responseType = responseType || 'text';\n\n let responseData = await resolvers[utils.findKey(resolvers, responseType) || 'text'](response, config);\n\n !isStreamResponse && unsubscribe && unsubscribe();\n\n return await new Promise((resolve, reject) => {\n settle(resolve, reject, {\n data: responseData,\n headers: AxiosHeaders.from(response.headers),\n status: response.status,\n statusText: response.statusText,\n config,\n request\n })\n })\n } catch (err) {\n unsubscribe && unsubscribe();\n\n if (err && err.name === 'TypeError' && /Load failed|fetch/i.test(err.message)) {\n throw Object.assign(\n new AxiosError('Network Error', AxiosError.ERR_NETWORK, config, request),\n {\n cause: err.cause || err\n }\n )\n }\n\n throw AxiosError.from(err, err && err.code, config, request);\n }\n }\n}\n\nconst seedCache = new Map();\n\nexport const getFetch = (config) => {\n let env = (config && config.env) || {};\n const {fetch, Request, Response} = env;\n const seeds = [\n Request, Response, fetch\n ];\n\n let len = seeds.length, i = len,\n seed, target, map = seedCache;\n\n while (i--) {\n seed = seeds[i];\n target = map.get(seed);\n\n target === undefined && map.set(seed, target = (i ? new Map() : factory(env)))\n\n map = target;\n }\n\n return target;\n};\n\nconst adapter = getFetch();\n\nexport default adapter;\n","import utils from '../utils.js';\nimport httpAdapter from './http.js';\nimport xhrAdapter from './xhr.js';\nimport * as fetchAdapter from './fetch.js';\nimport AxiosError from \"../core/AxiosError.js\";\n\n/**\n * Known adapters mapping.\n * Provides environment-specific adapters for Axios:\n * - `http` for Node.js\n * - `xhr` for browsers\n * - `fetch` for fetch API-based requests\n * \n * @type {Object<string, Function|Object>}\n */\nconst knownAdapters = {\n http: httpAdapter,\n xhr: xhrAdapter,\n fetch: {\n get: fetchAdapter.getFetch,\n }\n};\n\n// Assign adapter names for easier debugging and identification\nutils.forEach(knownAdapters, (fn, value) => {\n if (fn) {\n try {\n Object.defineProperty(fn, 'name', { value });\n } catch (e) {\n // eslint-disable-next-line no-empty\n }\n Object.defineProperty(fn, 'adapterName', { value });\n }\n});\n\n/**\n * Render a rejection reason string for unknown or unsupported adapters\n * \n * @param {string} reason\n * @returns {string}\n */\nconst renderReason = (reason) => `- ${reason}`;\n\n/**\n * Check if the adapter is resolved (function, null, or false)\n * \n * @param {Function|null|false} adapter\n * @returns {boolean}\n */\nconst isResolvedHandle = (adapter) => utils.isFunction(adapter) || adapter === null || adapter === false;\n\n/**\n * Get the first suitable adapter from the provided list.\n * Tries each adapter in order until a supported one is found.\n * Throws an AxiosError if no adapter is suitable.\n * \n * @param {Array<string|Function>|string|Function} adapters - Adapter(s) by name or function.\n * @param {Object} config - Axios request configuration\n * @throws {AxiosError} If no suitable adapter is available\n * @returns {Function} The resolved adapter function\n */\nfunction getAdapter(adapters, config) {\n adapters = utils.isArray(adapters) ? adapters : [adapters];\n\n const { length } = adapters;\n let nameOrAdapter;\n let adapter;\n\n const rejectedReasons = {};\n\n for (let i = 0; i < length; i++) {\n nameOrAdapter = adapters[i];\n let id;\n\n adapter = nameOrAdapter;\n\n if (!isResolvedHandle(nameOrAdapter)) {\n adapter = knownAdapters[(id = String(nameOrAdapter)).toLowerCase()];\n\n if (adapter === undefined) {\n throw new AxiosError(`Unknown adapter '${id}'`);\n }\n }\n\n if (adapter && (utils.isFunction(adapter) || (adapter = adapter.get(config)))) {\n break;\n }\n\n rejectedReasons[id || '#' + i] = adapter;\n }\n\n if (!adapter) {\n const reasons = Object.entries(rejectedReasons)\n .map(([id, state]) => `adapter ${id} ` +\n (state === false ? 'is not supported by the environment' : 'is not available in the build')\n );\n\n let s = length ?\n (reasons.length > 1 ? 'since :\\n' + reasons.map(renderReason).join('\\n') : ' ' + renderReason(reasons[0])) :\n 'as no adapter specified';\n\n throw new AxiosError(\n `There is no suitable adapter to dispatch the request ` + s,\n 'ERR_NOT_SUPPORT'\n );\n }\n\n return adapter;\n}\n\n/**\n * Exports Axios adapters and utility to resolve an adapter\n */\nexport default {\n /**\n * Resolve an adapter from a list of adapter names or functions.\n * @type {Function}\n */\n getAdapter,\n\n /**\n * Exposes all known adapters\n * @type {Object<string, Function|Object>}\n */\n adapters: knownAdapters\n};\n","'use strict';\n\nimport transformData from './transformData.js';\nimport isCancel from '../cancel/isCancel.js';\nimport defaults from '../defaults/index.js';\nimport CanceledError from '../cancel/CanceledError.js';\nimport AxiosHeaders from '../core/AxiosHeaders.js';\nimport adapters from \"../adapters/adapters.js\";\n\n/**\n * Throws a `CanceledError` if cancellation has been requested.\n *\n * @param {Object} config The config that is to be used for the request\n *\n * @returns {void}\n */\nfunction throwIfCancellationRequested(config) {\n if (config.cancelToken) {\n config.cancelToken.throwIfRequested();\n }\n\n if (config.signal && config.signal.aborted) {\n throw new CanceledError(null, config);\n }\n}\n\n/**\n * Dispatch a request to the server using the configured adapter.\n *\n * @param {object} config The config that is to be used for the request\n *\n * @returns {Promise} The Promise to be fulfilled\n */\nexport default function dispatchRequest(config) {\n throwIfCancellationRequested(config);\n\n config.headers = AxiosHeaders.from(config.headers);\n\n // Transform request data\n config.data = transformData.call(\n config,\n config.transformRequest\n );\n\n if (['post', 'put', 'patch'].indexOf(config.method) !== -1) {\n config.headers.setContentType('application/x-www-form-urlencoded', false);\n }\n\n const adapter = adapters.getAdapter(config.adapter || defaults.adapter, config);\n\n return adapter(config).then(function onAdapterResolution(response) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n response.data = transformData.call(\n config,\n config.transformResponse,\n response\n );\n\n response.headers = AxiosHeaders.from(response.headers);\n\n return response;\n }, function onAdapterRejection(reason) {\n if (!isCancel(reason)) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n if (reason && reason.response) {\n reason.response.data = transformData.call(\n config,\n config.transformResponse,\n reason.response\n );\n reason.response.headers = AxiosHeaders.from(reason.response.headers);\n }\n }\n\n return Promise.reject(reason);\n });\n}\n","export const VERSION = \"1.13.2\";","'use strict';\n\nimport {VERSION} from '../env/data.js';\nimport AxiosError from '../core/AxiosError.js';\n\nconst validators = {};\n\n// eslint-disable-next-line func-names\n['object', 'boolean', 'number', 'function', 'string', 'symbol'].forEach((type, i) => {\n validators[type] = function validator(thing) {\n return typeof thing === type || 'a' + (i < 1 ? 'n ' : ' ') + type;\n };\n});\n\nconst deprecatedWarnings = {};\n\n/**\n * Transitional option validator\n *\n * @param {function|boolean?} validator - set to false if the transitional option has been removed\n * @param {string?} version - deprecated version / removed since version\n * @param {string?} message - some message with additional info\n *\n * @returns {function}\n */\nvalidators.transitional = function transitional(validator, version, message) {\n function formatMessage(opt, desc) {\n return '[Axios v' + VERSION + '] Transitional option \\'' + opt + '\\'' + desc + (message ? '. ' + message : '');\n }\n\n // eslint-disable-next-line func-names\n return (value, opt, opts) => {\n if (validator === false) {\n throw new AxiosError(\n formatMessage(opt, ' has been removed' + (version ? ' in ' + version : '')),\n AxiosError.ERR_DEPRECATED\n );\n }\n\n if (version && !deprecatedWarnings[opt]) {\n deprecatedWarnings[opt] = true;\n // eslint-disable-next-line no-console\n console.warn(\n formatMessage(\n opt,\n ' has been deprecated since v' + version + ' and will be removed in the near future'\n )\n );\n }\n\n return validator ? validator(value, opt, opts) : true;\n };\n};\n\nvalidators.spelling = function spelling(correctSpelling) {\n return (value, opt) => {\n // eslint-disable-next-line no-console\n console.warn(`${opt} is likely a misspelling of ${correctSpelling}`);\n return true;\n }\n};\n\n/**\n * Assert object's properties type\n *\n * @param {object} options\n * @param {object} schema\n * @param {boolean?} allowUnknown\n *\n * @returns {object}\n */\n\nfunction assertOptions(options, schema, allowUnknown) {\n if (typeof options !== 'object') {\n throw new AxiosError('options must be an object', AxiosError.ERR_BAD_OPTION_VALUE);\n }\n const keys = Object.keys(options);\n let i = keys.length;\n while (i-- > 0) {\n const opt = keys[i];\n const validator = schema[opt];\n if (validator) {\n const value = options[opt];\n const result = value === undefined || validator(value, opt, options);\n if (result !== true) {\n throw new AxiosError('option ' + opt + ' must be ' + result, AxiosError.ERR_BAD_OPTION_VALUE);\n }\n continue;\n }\n if (allowUnknown !== true) {\n throw new AxiosError('Unknown option ' + opt, AxiosError.ERR_BAD_OPTION);\n }\n }\n}\n\nexport default {\n assertOptions,\n validators\n};\n","'use strict';\n\nimport utils from './../utils.js';\nimport buildURL from '../helpers/buildURL.js';\nimport InterceptorManager from './InterceptorManager.js';\nimport dispatchRequest from './dispatchRequest.js';\nimport mergeConfig from './mergeConfig.js';\nimport buildFullPath from './buildFullPath.js';\nimport validator from '../helpers/validator.js';\nimport AxiosHeaders from './AxiosHeaders.js';\n\nconst validators = validator.validators;\n\n/**\n * Create a new instance of Axios\n *\n * @param {Object} instanceConfig The default config for the instance\n *\n * @return {Axios} A new instance of Axios\n */\nclass Axios {\n constructor(instanceConfig) {\n this.defaults = instanceConfig || {};\n this.interceptors = {\n request: new InterceptorManager(),\n response: new InterceptorManager()\n };\n }\n\n /**\n * Dispatch a request\n *\n * @param {String|Object} configOrUrl The config specific for this request (merged with this.defaults)\n * @param {?Object} config\n *\n * @returns {Promise} The Promise to be fulfilled\n */\n async request(configOrUrl, config) {\n try {\n return await this._request(configOrUrl, config);\n } catch (err) {\n if (err instanceof Error) {\n let dummy = {};\n\n Error.captureStackTrace ? Error.captureStackTrace(dummy) : (dummy = new Error());\n\n // slice off the Error: ... line\n const stack = dummy.stack ? dummy.stack.replace(/^.+\\n/, '') : '';\n try {\n if (!err.stack) {\n err.stack = stack;\n // match without the 2 top stack lines\n } else if (stack && !String(err.stack).endsWith(stack.replace(/^.+\\n.+\\n/, ''))) {\n err.stack += '\\n' + stack\n }\n } catch (e) {\n // ignore the case where \"stack\" is an un-writable property\n }\n }\n\n throw err;\n }\n }\n\n _request(configOrUrl, config) {\n /*eslint no-param-reassign:0*/\n // Allow for axios('example/url'[, config]) a la fetch API\n if (typeof configOrUrl === 'string') {\n config = config || {};\n config.url = configOrUrl;\n } else {\n config = configOrUrl || {};\n }\n\n config = mergeConfig(this.defaults, config);\n\n const {transitional, paramsSerializer, headers} = config;\n\n if (transitional !== undefined) {\n validator.assertOptions(transitional, {\n silentJSONParsing: validators.transitional(validators.boolean),\n forcedJSONParsing: validators.transitional(validators.boolean),\n clarifyTimeoutError: validators.transitional(validators.boolean)\n }, false);\n }\n\n if (paramsSerializer != null) {\n if (utils.isFunction(paramsSerializer)) {\n config.paramsSerializer = {\n serialize: paramsSerializer\n }\n } else {\n validator.assertOptions(paramsSerializer, {\n encode: validators.function,\n serialize: validators.function\n }, true);\n }\n }\n\n // Set config.allowAbsoluteUrls\n if (config.allowAbsoluteUrls !== undefined) {\n // do nothing\n } else if (this.defaults.allowAbsoluteUrls !== undefined) {\n config.allowAbsoluteUrls = this.defaults.allowAbsoluteUrls;\n } else {\n config.allowAbsoluteUrls = true;\n }\n\n validator.assertOptions(config, {\n baseUrl: validators.spelling('baseURL'),\n withXsrfToken: validators.spelling('withXSRFToken')\n }, true);\n\n // Set config.method\n config.method = (config.method || this.defaults.method || 'get').toLowerCase();\n\n // Flatten headers\n let contextHeaders = headers && utils.merge(\n headers.common,\n headers[config.method]\n );\n\n headers && utils.forEach(\n ['delete', 'get', 'head', 'post', 'put', 'patch', 'common'],\n (method) => {\n delete headers[method];\n }\n );\n\n config.headers = AxiosHeaders.concat(contextHeaders, headers);\n\n // filter out skipped interceptors\n const requestInterceptorChain = [];\n let synchronousRequestInterceptors = true;\n this.interceptors.request.forEach(function unshiftRequestInterceptors(interceptor) {\n if (typeof interceptor.runWhen === 'function' && interceptor.runWhen(config) === false) {\n return;\n }\n\n synchronousRequestInterceptors = synchronousRequestInterceptors && interceptor.synchronous;\n\n requestInterceptorChain.unshift(interceptor.fulfilled, interceptor.rejected);\n });\n\n const responseInterceptorChain = [];\n this.interceptors.response.forEach(function pushResponseInterceptors(interceptor) {\n responseInterceptorChain.push(interceptor.fulfilled, interceptor.rejected);\n });\n\n let promise;\n let i = 0;\n let len;\n\n if (!synchronousRequestInterceptors) {\n const chain = [dispatchRequest.bind(this), undefined];\n chain.unshift(...requestInterceptorChain);\n chain.push(...responseInterceptorChain);\n len = chain.length;\n\n promise = Promise.resolve(config);\n\n while (i < len) {\n promise = promise.then(chain[i++], chain[i++]);\n }\n\n return promise;\n }\n\n len = requestInterceptorChain.length;\n\n let newConfig = config;\n\n while (i < len) {\n const onFulfilled = requestInterceptorChain[i++];\n const onRejected = requestInterceptorChain[i++];\n try {\n newConfig = onFulfilled(newConfig);\n } catch (error) {\n onRejected.call(this, error);\n break;\n }\n }\n\n try {\n promise = dispatchRequest.call(this, newConfig);\n } catch (error) {\n return Promise.reject(error);\n }\n\n i = 0;\n len = responseInterceptorChain.length;\n\n while (i < len) {\n promise = promise.then(responseInterceptorChain[i++], responseInterceptorChain[i++]);\n }\n\n return promise;\n }\n\n getUri(config) {\n config = mergeConfig(this.defaults, config);\n const fullPath = buildFullPath(config.baseURL, config.url, config.allowAbsoluteUrls);\n return buildURL(fullPath, config.params, config.paramsSerializer);\n }\n}\n\n// Provide aliases for supported request methods\nutils.forEach(['delete', 'get', 'head', 'options'], function forEachMethodNoData(method) {\n /*eslint func-names:0*/\n Axios.prototype[method] = function(url, config) {\n return this.request(mergeConfig(config || {}, {\n method,\n url,\n data: (config || {}).data\n }));\n };\n});\n\nutils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {\n /*eslint func-names:0*/\n\n function generateHTTPMethod(isForm) {\n return function httpMethod(url, data, config) {\n return this.request(mergeConfig(config || {}, {\n method,\n headers: isForm ? {\n 'Content-Type': 'multipart/form-data'\n } : {},\n url,\n data\n }));\n };\n }\n\n Axios.prototype[method] = generateHTTPMethod();\n\n Axios.prototype[method + 'Form'] = generateHTTPMethod(true);\n});\n\nexport default Axios;\n","'use strict';\n\nimport CanceledError from './CanceledError.js';\n\n/**\n * A `CancelToken` is an object that can be used to request cancellation of an operation.\n *\n * @param {Function} executor The executor function.\n *\n * @returns {CancelToken}\n */\nclass CancelToken {\n constructor(executor) {\n if (typeof executor !== 'function') {\n throw new TypeError('executor must be a function.');\n }\n\n let resolvePromise;\n\n this.promise = new Promise(function promiseExecutor(resolve) {\n resolvePromise = resolve;\n });\n\n const token = this;\n\n // eslint-disable-next-line func-names\n this.promise.then(cancel => {\n if (!token._listeners) return;\n\n let i = token._listeners.length;\n\n while (i-- > 0) {\n token._listeners[i](cancel);\n }\n token._listeners = null;\n });\n\n // eslint-disable-next-line func-names\n this.promise.then = onfulfilled => {\n let _resolve;\n // eslint-disable-next-line func-names\n const promise = new Promise(resolve => {\n token.subscribe(resolve);\n _resolve = resolve;\n }).then(onfulfilled);\n\n promise.cancel = function reject() {\n token.unsubscribe(_resolve);\n };\n\n return promise;\n };\n\n executor(function cancel(message, config, request) {\n if (token.reason) {\n // Cancellation has already been requested\n return;\n }\n\n token.reason = new CanceledError(message, config, request);\n resolvePromise(token.reason);\n });\n }\n\n /**\n * Throws a `CanceledError` if cancellation has been requested.\n */\n throwIfRequested() {\n if (this.reason) {\n throw this.reason;\n }\n }\n\n /**\n * Subscribe to the cancel signal\n */\n\n subscribe(listener) {\n if (this.reason) {\n listener(this.reason);\n return;\n }\n\n if (this._listeners) {\n this._listeners.push(listener);\n } else {\n this._listeners = [listener];\n }\n }\n\n /**\n * Unsubscribe from the cancel signal\n */\n\n unsubscribe(listener) {\n if (!this._listeners) {\n return;\n }\n const index = this._listeners.indexOf(listener);\n if (index !== -1) {\n this._listeners.splice(index, 1);\n }\n }\n\n toAbortSignal() {\n const controller = new AbortController();\n\n const abort = (err) => {\n controller.abort(err);\n };\n\n this.subscribe(abort);\n\n controller.signal.unsubscribe = () => this.unsubscribe(abort);\n\n return controller.signal;\n }\n\n /**\n * Returns an object that contains a new `CancelToken` and a function that, when called,\n * cancels the `CancelToken`.\n */\n static source() {\n let cancel;\n const token = new CancelToken(function executor(c) {\n cancel = c;\n });\n return {\n token,\n cancel\n };\n }\n}\n\nexport default CancelToken;\n","'use strict';\n\n/**\n * Syntactic sugar for invoking a function and expanding an array for arguments.\n *\n * Common use case would be to use `Function.prototype.apply`.\n *\n * ```js\n * function f(x, y, z) {}\n * var args = [1, 2, 3];\n * f.apply(null, args);\n * ```\n *\n * With `spread` this example can be re-written.\n *\n * ```js\n * spread(function(x, y, z) {})([1, 2, 3]);\n * ```\n *\n * @param {Function} callback\n *\n * @returns {Function}\n */\nexport default function spread(callback) {\n return function wrap(arr) {\n return callback.apply(null, arr);\n };\n}\n","'use strict';\n\nimport utils from './../utils.js';\n\n/**\n * Determines whether the payload is an error thrown by Axios\n *\n * @param {*} payload The value to test\n *\n * @returns {boolean} True if the payload is an error thrown by Axios, otherwise false\n */\nexport default function isAxiosError(payload) {\n return utils.isObject(payload) && (payload.isAxiosError === true);\n}\n","const HttpStatusCode = {\n Continue: 100,\n SwitchingProtocols: 101,\n Processing: 102,\n EarlyHints: 103,\n Ok: 200,\n Created: 201,\n Accepted: 202,\n NonAuthoritativeInformation: 203,\n NoContent: 204,\n ResetContent: 205,\n PartialContent: 206,\n MultiStatus: 207,\n AlreadyReported: 208,\n ImUsed: 226,\n MultipleChoices: 300,\n MovedPermanently: 301,\n Found: 302,\n SeeOther: 303,\n NotModified: 304,\n UseProxy: 305,\n Unused: 306,\n TemporaryRedirect: 307,\n PermanentRedirect: 308,\n BadRequest: 400,\n Unauthorized: 401,\n PaymentRequired: 402,\n Forbidden: 403,\n NotFound: 404,\n MethodNotAllowed: 405,\n NotAcceptable: 406,\n ProxyAuthenticationRequired: 407,\n RequestTimeout: 408,\n Conflict: 409,\n Gone: 410,\n LengthRequired: 411,\n PreconditionFailed: 412,\n PayloadTooLarge: 413,\n UriTooLong: 414,\n UnsupportedMediaType: 415,\n RangeNotSatisfiable: 416,\n ExpectationFailed: 417,\n ImATeapot: 418,\n MisdirectedRequest: 421,\n UnprocessableEntity: 422,\n Locked: 423,\n FailedDependency: 424,\n TooEarly: 425,\n UpgradeRequired: 426,\n PreconditionRequired: 428,\n TooManyRequests: 429,\n RequestHeaderFieldsTooLarge: 431,\n UnavailableForLegalReasons: 451,\n InternalServerError: 500,\n NotImplemented: 501,\n BadGateway: 502,\n ServiceUnavailable: 503,\n GatewayTimeout: 504,\n HttpVersionNotSupported: 505,\n VariantAlsoNegotiates: 506,\n InsufficientStorage: 507,\n LoopDetected: 508,\n NotExtended: 510,\n NetworkAuthenticationRequired: 511,\n WebServerIsDown: 521,\n ConnectionTimedOut: 522,\n OriginIsUnreachable: 523,\n TimeoutOccurred: 524,\n SslHandshakeFailed: 525,\n InvalidSslCertificate: 526,\n};\n\nObject.entries(HttpStatusCode).forEach(([key, value]) => {\n HttpStatusCode[value] = key;\n});\n\nexport default HttpStatusCode;\n","'use strict';\n\nimport utils from './utils.js';\nimport bind from './helpers/bind.js';\nimport Axios from './core/Axios.js';\nimport mergeConfig from './core/mergeConfig.js';\nimport defaults from './defaults/index.js';\nimport formDataToJSON from './helpers/formDataToJSON.js';\nimport CanceledError from './cancel/CanceledError.js';\nimport CancelToken from './cancel/CancelToken.js';\nimport isCancel from './cancel/isCancel.js';\nimport {VERSION} from './env/data.js';\nimport toFormData from './helpers/toFormData.js';\nimport AxiosError from './core/AxiosError.js';\nimport spread from './helpers/spread.js';\nimport isAxiosError from './helpers/isAxiosError.js';\nimport AxiosHeaders from \"./core/AxiosHeaders.js\";\nimport adapters from './adapters/adapters.js';\nimport HttpStatusCode from './helpers/HttpStatusCode.js';\n\n/**\n * Create an instance of Axios\n *\n * @param {Object} defaultConfig The default config for the instance\n *\n * @returns {Axios} A new instance of Axios\n */\nfunction createInstance(defaultConfig) {\n const context = new Axios(defaultConfig);\n const instance = bind(Axios.prototype.request, context);\n\n // Copy axios.prototype to instance\n utils.extend(instance, Axios.prototype, context, {allOwnKeys: true});\n\n // Copy context to instance\n utils.extend(instance, context, null, {allOwnKeys: true});\n\n // Factory for creating new instances\n instance.create = function create(instanceConfig) {\n return createInstance(mergeConfig(defaultConfig, instanceConfig));\n };\n\n return instance;\n}\n\n// Create the default instance to be exported\nconst axios = createInstance(defaults);\n\n// Expose Axios class to allow class inheritance\naxios.Axios = Axios;\n\n// Expose Cancel & CancelToken\naxios.CanceledError = CanceledError;\naxios.CancelToken = CancelToken;\naxios.isCancel = isCancel;\naxios.VERSION = VERSION;\naxios.toFormData = toFormData;\n\n// Expose AxiosError class\naxios.AxiosError = AxiosError;\n\n// alias for CanceledError for backward compatibility\naxios.Cancel = axios.CanceledError;\n\n// Expose all/spread\naxios.all = function all(promises) {\n return Promise.all(promises);\n};\n\naxios.spread = spread;\n\n// Expose isAxiosError\naxios.isAxiosError = isAxiosError;\n\n// Expose mergeConfig\naxios.mergeConfig = mergeConfig;\n\naxios.AxiosHeaders = AxiosHeaders;\n\naxios.formToJSON = thing => formDataToJSON(utils.isHTMLForm(thing) ? new FormData(thing) : thing);\n\naxios.getAdapter = adapters.getAdapter;\n\naxios.HttpStatusCode = HttpStatusCode;\n\naxios.default = axios;\n\n// this module should only have a default export\nexport default axios\n","import axios from './lib/axios.js';\n\n// This module is intended to unwrap Axios default export as named.\n// Keep top-level export same with static properties\n// so that it can keep same with es module or cjs\nconst {\n Axios,\n AxiosError,\n CanceledError,\n isCancel,\n CancelToken,\n VERSION,\n all,\n Cancel,\n isAxiosError,\n spread,\n toFormData,\n AxiosHeaders,\n HttpStatusCode,\n formToJSON,\n getAdapter,\n mergeConfig\n} = axios;\n\nexport {\n axios as default,\n Axios,\n AxiosError,\n CanceledError,\n isCancel,\n CancelToken,\n VERSION,\n all,\n Cancel,\n isAxiosError,\n spread,\n toFormData,\n AxiosHeaders,\n HttpStatusCode,\n formToJSON,\n getAdapter,\n mergeConfig\n}\n","/*\n * Copyright (C) 2023 Nethesis S.r.l.\n * SPDX-License-Identifier: GPL-3.0-or-later\n */\n\nimport axios from \"axios\";\nimport { CircleX, CheckCircle, AlertTriangle, Info } from \"lucide-vue-next\";\nimport { useStorageService } from \"./useStorageService\";\n\nexport const useTaskService = () => {\n const { getFromStorage } = useStorageService();\n\n const getTaskContext = (taskPath: string, apiUrl: string) => {\n const token = getFromStorage<{ token: string }>(\"loginInfo\")?.token || \"\";\n return axios.get(`${apiUrl}/${taskPath}/context`, {\n headers: {\n Authorization: `Bearer ${token}`,\n },\n });\n };\n\n const getTaskStatus = (taskPath: string, apiUrl: string) => {\n const token = getFromStorage<{ token: string }>(\"loginInfo\")?.token || \"\";\n return axios.get(`${apiUrl}/${taskPath}/status`, {\n headers: {\n Authorization: `Bearer ${token}`,\n },\n });\n };\n\n const getClusterTasks = (apiUrl: string) => {\n const token = getFromStorage<{ token: string }>(\"loginInfo\")?.token || \"\";\n return axios.get(`${apiUrl}/cluster/tasks`, {\n headers: {\n Authorization: `Bearer ${token}`,\n },\n });\n };\n\n const createClusterTask = (taskData: any, apiUrl: string) => {\n const token = getFromStorage<{ token: string }>(\"loginInfo\")?.token || \"\";\n return axios.post(`${apiUrl}/cluster/tasks`, taskData, {\n headers: {\n Authorization: `Bearer ${token}`,\n },\n });\n };\n\n const createClusterTaskForApp = (taskData: any) => {\n const token = getFromStorage<{ token: string }>(\"loginInfo\")?.token || \"\";\n const apiUrl = (window as any).parent?.core?.$root?.apiUrl;\n return axios.post(`${apiUrl}/cluster/tasks`, taskData, {\n headers: {\n Authorization: `Bearer ${token}`,\n },\n });\n };\n\n const createModuleTaskForApp = (moduleId: string, taskData: any) => {\n const token = getFromStorage<{ token: string }>(\"loginInfo\")?.token || \"\";\n const apiUrl = (window as any).parent?.core?.$root?.apiUrl;\n return axios.post(`${apiUrl}/module/${moduleId}/tasks`, taskData, {\n headers: {\n Authorization: `Bearer ${token}`,\n },\n });\n };\n\n const createNodeTask = (nodeId: string, taskData: any, apiUrl: string) => {\n const token = getFromStorage<{ token: string }>(\"loginInfo\")?.token || \"\";\n return axios.post(`${apiUrl}/node/${nodeId}/tasks`, taskData, {\n headers: {\n Authorization: `Bearer ${token}`,\n },\n });\n };\n\n const createNodeTaskForApp = (nodeId: string, taskData: any) => {\n const token = getFromStorage<{ token: string }>(\"loginInfo\")?.token || \"\";\n const apiUrl = (window as any).parent?.core?.$root?.apiUrl;\n return axios.post(`${apiUrl}/node/${nodeId}/tasks`, taskData, {\n headers: {\n Authorization: `Bearer ${token}`,\n },\n });\n };\n\n const getTaskTitle = (task: any): string => {\n if (\n task &&\n task.context &&\n task.context.extra &&\n task.context.extra.title\n ) {\n return task.context.extra.title;\n } else {\n return \"\";\n }\n };\n\n const getTaskKind = (task: any): \"error\" | \"success\" | \"warning\" | \"info\" => {\n switch (task.status) {\n case \"aborted\":\n case \"validation-failed\":\n return \"error\";\n case \"completed\":\n return \"success\";\n case \"pending\":\n return \"warning\";\n default:\n return \"info\";\n }\n };\n\n const getTaskIcon = (task: any) => {\n switch (task.status) {\n case \"aborted\":\n case \"validation-failed\":\n return CircleX;\n case \"completed\":\n return CheckCircle;\n case \"pending\":\n return AlertTriangle;\n default:\n return Info;\n }\n };\n\n const getTaskStatusDescription = (\n task: any,\n t: (key: string, args?: any) => string,\n rootTask: boolean = true\n ): string => {\n const agent = task.context?.queue\n ? task.context.queue.split(\"/tasks\")[0]\n : \"cluster\";\n const taskLabel = `${agent}/${task.context?.action}`;\n const taskOrSubtask = rootTask ? \"task\" : \"subtask\";\n\n switch (task.status) {\n case \"aborted\":\n return t(`task.${taskOrSubtask}_failed`, { task: taskLabel });\n case \"validation-failed\":\n return t(`task.${taskOrSubtask}_failed_validation`, { task: taskLabel });\n case \"completed\":\n return t(`task.${taskOrSubtask}_completed`, { task: taskLabel });\n case \"pending\":\n return t(`task.${taskOrSubtask}_pending`, { task: taskLabel });\n case \"running\":\n return t(`task.${taskOrSubtask}_running`, { task: taskLabel });\n default:\n return \"\";\n }\n };\n\n const createErrorNotification = (err: any, message: string, emit: (event: string, ...args: any[]) => void) => {\n console.error(err);\n emit(\"createErrorNotification\", err, message);\n };\n\n const createErrorNotificationForApp = (err: any, message: string) => {\n console.error(err);\n const core = (window as any).parent?.core;\n if (core?.$root) {\n core.$root.$emit(\"createErrorNotification\", err, message);\n }\n };\n\n const createNotificationForApp = (notification: any) => {\n const core = (window as any).parent?.core;\n if (core?.$root) {\n core.$root.$emit(\"createNotificationForApp\", notification);\n }\n };\n\n const deleteNotificationForApp = (notification: any) => {\n const core = (window as any).parent?.core;\n if (core?.$root) {\n core.$root.$emit(\"deleteNotificationForApp\", notification);\n }\n };\n\n return {\n getTaskContext,\n getTaskStatus,\n getClusterTasks,\n createClusterTask,\n createClusterTaskForApp,\n createModuleTaskForApp,\n createNodeTask,\n createNodeTaskForApp,\n getTaskTitle,\n getTaskKind,\n getTaskIcon,\n getTaskStatusDescription,\n createErrorNotification,\n createErrorNotificationForApp,\n createNotificationForApp,\n deleteNotificationForApp,\n };\n};\n","/*\n * Copyright (C) 2023 Nethesis S.r.l.\n * SPDX-License-Identifier: GPL-3.0-or-later\n */\n\nexport const useFilterService = () => {\n const byteFormat = (size: number | null | string): string => {\n if (size === null || size === \"\" || isNaN(Number(size))) {\n return \"-\";\n }\n\n const numSize = Number(size);\n\n switch (true) {\n case numSize >= 0 && numSize < 1024:\n return `${numSize} B`;\n case numSize >= 1024 && numSize < Math.pow(1024, 2):\n return `${Math.round((numSize / 1024) * 100) / 100} KiB`;\n case numSize >= Math.pow(1024, 2) && numSize < Math.pow(1024, 3):\n return `${Math.round((numSize / Math.pow(1024, 2)) * 100) / 100} MiB`;\n case numSize >= Math.pow(1024, 3) && numSize < Math.pow(1024, 4):\n return `${Math.round((numSize / Math.pow(1024, 3)) * 100) / 100} GiB`;\n default:\n return `${Math.round((numSize / Math.pow(1024, 4)) * 100) / 100} TiB`;\n }\n };\n\n const humanFormat = (number: number | null | string, decimals: boolean = false): string => {\n if (number === null || number === \"\" || isNaN(Number(number))) {\n return \"-\";\n }\n\n const numNumber = Number(number);\n\n switch (true) {\n case numNumber >= 0 && numNumber < 1000:\n return `${numNumber}`;\n case numNumber >= 1000 && numNumber < Math.pow(1000, 2):\n if (decimals) {\n return `${Math.round((numNumber / 1000) * 10) / 10} K`;\n } else {\n return `${Math.round(numNumber / 1000)} K`;\n }\n case numNumber >= Math.pow(1000, 2) && numNumber < Math.pow(1000, 3):\n if (decimals) {\n return `${Math.round((numNumber / Math.pow(1000, 2)) * 10) / 10} M`;\n } else {\n return `${Math.round(numNumber / Math.pow(1000, 2))} M`;\n }\n case numNumber >= Math.pow(1000, 3) && numNumber < Math.pow(1000, 4):\n if (decimals) {\n return `${Math.round((numNumber / Math.pow(1000, 3)) * 10) / 10} G`;\n } else {\n return `${Math.round(numNumber / Math.pow(1000, 3))} G`;\n }\n default:\n if (decimals) {\n return `${Math.round((numNumber / Math.pow(1000, 4)) * 10) / 10} T`;\n } else {\n return `${Math.round(numNumber / Math.pow(1000, 4))} T`;\n }\n }\n };\n\n const mibFormat = (size: number | null | string): string => {\n if (size === null || size === \"\" || isNaN(Number(size))) {\n return \"-\";\n }\n\n const numSize = Number(size);\n\n switch (true) {\n case numSize >= 0 && numSize < 1024:\n return `${numSize} MiB`;\n case numSize >= 1024 && numSize < Math.pow(1024, 2):\n return `${Math.round((numSize / 1024) * 100) / 100} GiB`;\n default:\n return `${Math.round((numSize / Math.pow(1024, 2)) * 100) / 100} TiB`;\n }\n };\n\n const gibFormat = (size: number | null | string): string => {\n if (size === null || size === \"\" || isNaN(Number(size))) {\n return \"-\";\n }\n\n const numSize = Number(size);\n\n switch (true) {\n case numSize >= 0 && numSize < 1024:\n return `${numSize} GiB`;\n default:\n return `${Math.round((numSize / 1024) * 100) / 100} TiB`;\n }\n };\n\n const secondsFormat = (value: number): string => {\n if (value < 0) {\n return \"-\";\n }\n\n const hours = Math.floor(value / 3600);\n const minutes = Math.floor((value - hours * 3600) / 60);\n const seconds = (value - (hours * 3600 + minutes * 60)) % 60;\n\n let duration = \"\";\n\n if (hours > 0) {\n duration += `${hours}h `;\n }\n\n if (minutes > 0) {\n duration += `${minutes}m `;\n }\n\n if (seconds > 0) {\n duration += `${seconds}s`;\n }\n\n if (!duration) {\n return \"0s\";\n }\n\n return duration.trim();\n };\n\n const secondsLongFormat = (value: number): string => {\n if (value < 0) {\n return \"-\";\n }\n\n const hours = Math.floor(value / 3600);\n const minutes = Math.floor((value - hours * 3600) / 60);\n const seconds = (value - (hours * 3600 + minutes * 60)) % 60;\n\n const dHours = hours > 9 ? hours : `0${hours}`;\n const dMins = minutes > 9 ? minutes : `0${minutes}`;\n const dSecs = seconds > 9 ? seconds : `0${seconds}`;\n\n return `${dHours}h ${dMins}m ${dSecs}s`;\n };\n\n return {\n byteFormat,\n humanFormat,\n mibFormat,\n gibFormat,\n secondsFormat,\n secondsLongFormat,\n };\n};\n","/*\n * Copyright (C) 2023 Nethesis S.r.l.\n * SPDX-License-Identifier: GPL-3.0-or-later\n */\n\n// Composables (Services)\nexport { useUtilService as UtilService } from \"./src/composables/useUtilService\";\nexport { useDateTimeService as DateTimeService } from \"./src/composables/useDateTimeService\";\nexport { useIconService as IconService } from \"./src/composables/useIconService\";\nexport { usePageTitleService as PageTitleService } from \"./src/composables/usePageTitleService\";\nexport { useQueryParamService as QueryParamService } from \"./src/composables/useQueryParamService\";\nexport { useStorageService as StorageService } from \"./src/composables/useStorageService\";\nexport { useTaskService as TaskService } from \"./src/composables/useTaskService\";\nexport { useFilterService as FilterService } from \"./src/composables/useFilterService\";\n\n// Install function for Vue app\nimport type { App } from \"vue\";\n\nconst Ns8UiLibNew = {\n install(app: App) {\n // No pictograms - using Lucide icons instead\n }\n};\n\nexport default Ns8UiLibNew;\n\n// Version\nexport const version = \"1.0.0\";\n"],"names":["byteToHex","i","unsafeStringify","arr","offset","getRandomValues","rnds8","rng","randomUUID","native","_v4","options","buf","rnds","v4","useUtilService","time24HourPattern","time24HourPatternString","time24HourPlaceholder","highlightAnchor","ipAddressPattern","cidrPattern","getErrorMessage","error","t","clearErrors","clearStrings","obj","key","property","a","b","instance1","instance2","instance1Name","instance1Number","instance2Name","instance2Number","s","elementRef","nextTick","element","app","locale","description","i18nCategories","category","schedule","file","resolve","reject","reader","uuidv4","node","token","base64","jsonPayload","c","message","msgBuffer","hashBuffer","millisecondsInWeek","millisecondsInDay","millisecondsInMinute","millisecondsInHour","minutesInMonth","minutesInDay","constructFromSymbol","constructFrom","date","value","toDate","argument","context","addDays","amount","_date","defaultOptions","getDefaultOptions","startOfWeek","weekStartsOn","day","diff","startOfISOWeek","getISOWeekYear","year","fourthOfJanuaryOfNextYear","startOfNextYear","fourthOfJanuaryOfThisYear","startOfThisYear","getTimezoneOffsetInMilliseconds","utcDate","normalizeDates","dates","normalize","startOfDay","differenceInCalendarDays","laterDate","earlierDate","laterDate_","earlierDate_","laterStartOfDay","earlierStartOfDay","laterTimestamp","earlierTimestamp","startOfISOWeekYear","fourthOfJanuary","compareAsc","dateLeft","dateRight","isDate","isValid","differenceInCalendarMonths","yearsDiff","monthsDiff","getRoundingMethod","method","number","result","differenceInMilliseconds","endOfDay","endOfMonth","month","isLastDayOfMonth","differenceInMonths","workingLaterDate","sign","difference","isLastMonthNotFull","differenceInSeconds","startOfYear","date_","formatDistanceLocale","formatDistance","count","tokenValue","buildFormatLongFn","args","width","dateFormats","timeFormats","dateTimeFormats","formatLong","formatRelativeLocale","formatRelative","_baseDate","_options","buildLocalizeFn","valuesArray","defaultWidth","index","eraValues","quarterValues","monthValues","dayValues","dayPeriodValues","formattingDayPeriodValues","ordinalNumber","dirtyNumber","rem100","localize","quarter","buildMatchFn","string","matchPattern","matchResult","matchedString","parsePatterns","findIndex","pattern","findKey","rest","object","predicate","array","buildMatchPatternFn","parseResult","matchOrdinalNumberPattern","parseOrdinalNumberPattern","matchEraPatterns","parseEraPatterns","matchQuarterPatterns","parseQuarterPatterns","matchMonthPatterns","parseMonthPatterns","matchDayPatterns","parseDayPatterns","matchDayPeriodPatterns","parseDayPeriodPatterns","match","enUS","getDayOfYear","getISOWeek","getWeekYear","firstWeekContainsDate","firstWeekOfNextYear","firstWeekOfThisYear","startOfWeekYear","firstWeek","getWeek","addLeadingZeros","targetLength","output","lightFormatters","signedYear","dayPeriodEnumValue","numberOfDigits","milliseconds","fractionalSeconds","dayPeriodEnum","formatters","era","signedWeekYear","weekYear","twoDigitYear","isoWeekYear","week","isoWeek","dayOfYear","dayOfWeek","localDayOfWeek","isoDayOfWeek","hours","_localize","timezoneOffset","formatTimezoneWithOptionalMinutes","formatTimezone","formatTimezoneShort","timestamp","delimiter","absOffset","minutes","dateLongFormatter","timeLongFormatter","dateTimeLongFormatter","datePattern","timePattern","dateTimeFormat","longFormatters","dayOfYearTokenRE","weekYearTokenRE","throwTokens","isProtectedDayOfYearToken","isProtectedWeekYearToken","warnOrThrowProtectedError","format","input","_message","subject","formattingTokensRegExp","longFormattingTokensRegExp","escapedStringRegExp","doubleQuoteRegExp","unescapedLatinCharacterRegExp","formatStr","defaultLocale","originalDate","parts","substring","firstCharacter","longFormatter","cleanEscapedString","formatterOptions","part","formatter","matched","minutesInAlmostTwoDays","comparison","localizeOptions","seconds","offsetInSeconds","months","days","nearestMonth","monthsSinceStartOfYear","years","getInternalDefaultOptions","isBefore","dateToCompare","subDays","parseISO","invalidDate","additionalDigits","dateStrings","splitDateString","parseYearResult","parseYear","parseDate","time","parseTime","parseTimezone","tmpDate","patterns","dateRegex","timeRegex","timezoneRegex","dateString","timeString","regex","captures","century","isWeekDate","parseDateUnit","validateWeekDate","dayOfISOWeekYear","validateDate","validateDayOfYearDate","parseTimeUnit","validateTime","timezoneString","validateTimezone","fourthOfJanuaryDay","daysInMonths","isLeapYearIndex","_year","_hours","tzIntlTimeZoneName","length","dtf","getDTF","partsTimeZone","hackyTimeZone","formatted","tzNameMatch","timeZone","tzTokenizeDate","getDateTimeFormat","partsOffset","hackyOffset","typeToPos","filled","pos","parsed","dtfCache","testDateFormatted","hourCycleSupported","newDateUTC","fullYear","hour","minute","second","millisecond","MILLISECONDS_IN_HOUR","MILLISECONDS_IN_MINUTE","tzParseTimezone","isUtcDate","absoluteOffset","isValidTimezoneIANAString","toUtcDate","calcOffset","fixOffset","tokens","asUTC","asTS","over","utcGuess","o2","o3","validIANATimezoneCache","timeZoneString","getTimeZoneOffset","timeZoneOffset","tzPattern","DEFAULT_ADDITIONAL_DIGITS","restDateString","patternYYY","patternYYYYY","yearString","centuryString","DAYS_IN_MONTH","DAYS_IN_MONTH_LEAP_YEAR","isLeapYear","tzFormattingTokensRegExp","matches","d","precededByQuotedSection","replaced","dateFnsFormat","toZonedTime","offsetMilliseconds","resultDate","useDateTimeService","fmt","tz","useIconService","X","ArrowRight","Bell","User","Search","Expand","Minimize2","RotateCcw","Download","ExternalLink","TrendingUp","Settings","ChevronDown","ChevronUp","ChevronLeft","ChevronRight","Info","Package","Plus","Rocket","Cpu","Save","Copy","Server","Box","Link","Edit","Key","Star","Check","ZoomIn","Calendar","AlertTriangle","Wrench","Network","Database","HardDrive","ArrowDown","Clock","Hourglass","CheckCircle","CircleX","Power","FileText","MoreVertical","RotateCw","Trash2","Eraser","Rows","Columns","Library","Users","Router","ShieldCheck","ServerCog","Shield","BookOpen","AtSign","UserIcon","HelpCircle","Mail","Lock","Folder","Asterisk","UserCheck","Ruler","Filter","XCircle","Award","FolderOpen","Inbox","CloudUpload","usePageTitleService","setPageTitle","pageTitle","title","productName","onMounted","meta","useQueryParamService","getTypedValue","stringValue","getQueryParamsFromHash","hash","params","queryParams","getQueryParams","getQueryParamsForApp","queryParamsToData","q","dataItem","dataToQueryParams","route","router","urlWithParams","watchQueryData","watch","urlCheckInterval","page","callback","currentUrl","syncQueryParamsAndDataForApp","checkUrlChangeForApp","newUrl","requestedPage","useStorageService","prop","item","err","bind","fn","thisArg","toString","getPrototypeOf","iterator","toStringTag","kindOf","cache","thing","str","kindOfTest","type","typeOfTest","isArray","isUndefined","isBuffer","val","isFunction","isArrayBuffer","isArrayBufferView","isString","isNumber","isObject","isBoolean","isPlainObject","prototype","isEmptyObject","isFile","isBlob","isFileList","isStream","isFormData","kind","isURLSearchParams","isReadableStream","isRequest","isResponse","isHeaders","trim","forEach","allOwnKeys","l","keys","len","_key","_global","isContextDefined","merge","caseless","skipUndefined","assignValue","targetKey","extend","stripBOM","content","inherits","constructor","superConstructor","props","descriptors","toFlatObject","sourceObj","destObj","filter","propFilter","merged","endsWith","searchString","position","lastIndex","toArray","isTypedArray","TypedArray","forEachEntry","_iterator","pair","matchAll","regExp","isHTMLForm","toCamelCase","m","p1","p2","hasOwnProperty","isRegExp","reduceDescriptors","reducer","reducedDescriptors","descriptor","name","ret","freezeMethods","toObjectSet","arrayOrString","define","noop","toFiniteNumber","defaultValue","isSpecCompliantForm","toJSONObject","stack","visit","source","target","reducedValue","isAsyncFn","isThenable","_setImmediate","setImmediateSupported","postMessageSupported","callbacks","data","cb","asap","isIterable","utils$1","AxiosError","code","config","request","response","utils","customProps","axiosError","msg","errCode","httpAdapter","isVisitable","removeBrackets","renderKey","path","dots","isFlatArray","predicates","toFormData","formData","option","metaTokens","visitor","defaultVisitor","indexes","useBlob","convertValue","el","exposedHelpers","build","encode","charMap","AxiosURLSearchParams","encoder","_encode","buildURL","url","serializeFn","serializedParams","hashmarkIndex","InterceptorManager","fulfilled","rejected","id","h","transitionalDefaults","URLSearchParams$1","FormData$1","Blob$1","platform$1","URLSearchParams","FormData","Blob","hasBrowserEnv","_navigator","hasStandardBrowserEnv","hasStandardBrowserWebWorkerEnv","origin","platform","toURLEncodedForm","helpers","parsePropPath","arrayToObject","formDataToJSON","buildPath","isNumericKey","isLast","stringifySafely","rawValue","parser","e","defaults","headers","contentType","hasJSONContentType","isObjectPayload","_FormData","transitional","forcedJSONParsing","JSONRequested","strictJSONParsing","status","ignoreDuplicateOf","parseHeaders","rawHeaders","line","$internals","normalizeHeader","header","normalizeValue","parseTokens","tokensRE","isValidHeaderName","matchHeaderValue","isHeaderNameFilter","formatHeader","w","char","buildAccessors","accessorName","methodName","arg1","arg2","arg3","AxiosHeaders$1","valueOrRewrite","rewrite","self","setHeader","_value","_header","_rewrite","lHeader","setHeaders","dest","entry","matcher","deleted","deleteHeader","normalized","targets","asStrings","first","computed","accessors","defineAccessor","AxiosHeaders","mapped","headerValue","transformData","fns","isCancel","CanceledError","settle","validateStatus","parseProtocol","speedometer","samplesCount","min","bytes","timestamps","head","tail","firstSampleTS","chunkLength","now","startedAt","bytesCount","passed","throttle","freq","threshold","lastArgs","timer","invoke","progressEventReducer","listener","isDownloadStream","bytesNotified","_speedometer","loaded","total","progressBytes","rate","inRange","progressEventDecorator","throttled","lengthComputable","asyncDecorator","isURLSameOrigin","isMSIE","cookies","expires","domain","secure","sameSite","cookie","isAbsoluteURL","combineURLs","baseURL","relativeURL","buildFullPath","requestedURL","allowAbsoluteUrls","isRelativeUrl","headersToObject","mergeConfig","config1","config2","getMergedValue","mergeDeepProperties","valueFromConfig2","defaultToConfig2","mergeDirectKeys","mergeMap","configValue","resolveConfig","newConfig","withXSRFToken","xsrfHeaderName","xsrfCookieName","auth","formHeaders","allowedHeaders","xsrfValue","isXHRAdapterSupported","xhrAdapter","_config","requestData","requestHeaders","responseType","onUploadProgress","onDownloadProgress","onCanceled","uploadThrottled","downloadThrottled","flushUpload","flushDownload","done","onloadend","responseHeaders","event","timeoutErrorMessage","cancel","protocol","composeSignals","signals","timeout","controller","aborted","onabort","reason","unsubscribe","signal","streamChunk","chunk","chunkSize","end","readBytes","iterable","readStream","stream","trackStream","onProgress","onFinish","_onFinish","loadedBytes","DEFAULT_CHUNK_SIZE","globalFetchAPI","Request","Response","ReadableStream","TextEncoder","test","factory","env","envFetch","isFetchSupported","isRequestSupported","isResponseSupported","isReadableStreamSupported","encodeText","supportsRequestStream","duplexAccessed","hasContentType","supportsResponseStream","resolvers","res","getBodyLength","body","resolveBodyLength","cancelToken","withCredentials","fetchOptions","_fetch","composedSignal","requestContentLength","_request","contentTypeHeader","flush","isCredentialsSupported","resolvedOptions","isStreamResponse","responseContentLength","responseData","seedCache","getFetch","fetch","seeds","seed","map","knownAdapters","fetchAdapter.getFetch","renderReason","isResolvedHandle","adapter","getAdapter","adapters","nameOrAdapter","rejectedReasons","reasons","state","throwIfCancellationRequested","dispatchRequest","VERSION","validators","deprecatedWarnings","validator","version","formatMessage","opt","desc","opts","correctSpelling","assertOptions","schema","allowUnknown","Axios$1","instanceConfig","configOrUrl","dummy","paramsSerializer","contextHeaders","requestInterceptorChain","synchronousRequestInterceptors","interceptor","responseInterceptorChain","promise","chain","onFulfilled","onRejected","fullPath","Axios","generateHTTPMethod","isForm","CancelToken$1","CancelToken","executor","resolvePromise","onfulfilled","_resolve","abort","spread","isAxiosError","payload","HttpStatusCode","createInstance","defaultConfig","instance","axios","promises","all","Cancel","formToJSON","useTaskService","getFromStorage","taskPath","apiUrl","taskData","moduleId","nodeId","task","rootTask","taskLabel","taskOrSubtask","emit","core","notification","useFilterService","size","numSize","decimals","numNumber","duration","dHours","dMins","dSecs","Ns8UiLibNew"],"mappings":"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","x_google_ignoreList":[0,1,2,3,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120]}