@verdaccio/ui-components 5.0.0-next-9.4 → 5.0.0-next-9.6

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 (565) hide show
  1. package/README.md +10 -10
  2. package/build/Theme/ResetStyles.js +1 -1
  3. package/build/Theme/ResetStyles.js.map +1 -1
  4. package/build/Theme/ResetStyles.mjs +2 -2
  5. package/build/Theme/ResetStyles.mjs.map +1 -1
  6. package/build/Theme/StyleBaseline.js +1 -1
  7. package/build/Theme/StyleBaseline.js.map +1 -1
  8. package/build/Theme/StyleBaseline.mjs +2 -2
  9. package/build/Theme/StyleBaseline.mjs.map +1 -1
  10. package/build/Theme/ThemeProvider.js +1 -1
  11. package/build/Theme/ThemeProvider.js.map +1 -1
  12. package/build/Theme/ThemeProvider.mjs +1 -1
  13. package/build/Theme/ThemeProvider.mjs.map +1 -1
  14. package/build/Theme/colors.js.map +1 -1
  15. package/build/Theme/colors.mjs.map +1 -1
  16. package/build/Theme/modes.js.map +1 -1
  17. package/build/Theme/modes.mjs.map +1 -1
  18. package/build/Theme/theme.js.map +1 -1
  19. package/build/Theme/theme.mjs.map +1 -1
  20. package/build/Theme/tokens.js.map +1 -1
  21. package/build/Theme/tokens.mjs.map +1 -1
  22. package/build/api/use-data-mutation.js.map +1 -1
  23. package/build/api/use-data-mutation.mjs.map +1 -1
  24. package/build/api/use-data.js.map +1 -1
  25. package/build/api/use-data.mjs.map +1 -1
  26. package/build/components/ActionBar/ActionBar.js +1 -1
  27. package/build/components/ActionBar/ActionBar.js.map +1 -1
  28. package/build/components/ActionBar/ActionBar.mjs +1 -1
  29. package/build/components/ActionBar/ActionBar.mjs.map +1 -1
  30. package/build/components/ActionBar/ActionBarAction.js +5 -8
  31. package/build/components/ActionBar/ActionBarAction.js.map +1 -1
  32. package/build/components/ActionBar/ActionBarAction.mjs +4 -7
  33. package/build/components/ActionBar/ActionBarAction.mjs.map +1 -1
  34. package/build/components/AppRoute/AppRoute.js +1 -1
  35. package/build/components/AppRoute/AppRoute.js.map +1 -1
  36. package/build/components/AppRoute/AppRoute.mjs +1 -1
  37. package/build/components/AppRoute/AppRoute.mjs.map +1 -1
  38. package/build/components/Author/Author.js +1 -1
  39. package/build/components/Author/Author.js.map +1 -1
  40. package/build/components/Author/Author.mjs +1 -1
  41. package/build/components/Author/Author.mjs.map +1 -1
  42. package/build/components/Author/styles.js +6 -19
  43. package/build/components/Author/styles.js.map +1 -1
  44. package/build/components/Author/styles.mjs +5 -18
  45. package/build/components/Author/styles.mjs.map +1 -1
  46. package/build/components/CopyClipboard/CopyToClipBoard.js +9 -21
  47. package/build/components/CopyClipboard/CopyToClipBoard.js.map +1 -1
  48. package/build/components/CopyClipboard/CopyToClipBoard.mjs +8 -20
  49. package/build/components/CopyClipboard/CopyToClipBoard.mjs.map +1 -1
  50. package/build/components/CopyClipboard/utils.js.map +1 -1
  51. package/build/components/CopyClipboard/utils.mjs.map +1 -1
  52. package/build/components/Dependencies/Dependencies.js +1 -1
  53. package/build/components/Dependencies/Dependencies.js.map +1 -1
  54. package/build/components/Dependencies/Dependencies.mjs +2 -2
  55. package/build/components/Dependencies/Dependencies.mjs.map +1 -1
  56. package/build/components/Dependencies/DependencyBlock.js +8 -17
  57. package/build/components/Dependencies/DependencyBlock.js.map +1 -1
  58. package/build/components/Dependencies/DependencyBlock.mjs +7 -16
  59. package/build/components/Dependencies/DependencyBlock.mjs.map +1 -1
  60. package/build/components/Dependencies/utits.js.map +1 -1
  61. package/build/components/Dependencies/utits.mjs.map +1 -1
  62. package/build/components/Deprecated/Deprecated.js +1 -1
  63. package/build/components/Deprecated/Deprecated.js.map +1 -1
  64. package/build/components/Deprecated/Deprecated.mjs +1 -1
  65. package/build/components/Deprecated/Deprecated.mjs.map +1 -1
  66. package/build/components/Developers/DeveloperType.js.map +1 -1
  67. package/build/components/Developers/DeveloperType.mjs.map +1 -1
  68. package/build/components/Developers/Developers.js +6 -22
  69. package/build/components/Developers/Developers.js.map +1 -1
  70. package/build/components/Developers/Developers.mjs +6 -22
  71. package/build/components/Developers/Developers.mjs.map +1 -1
  72. package/build/components/Developers/Title.js +5 -8
  73. package/build/components/Developers/Title.js.map +1 -1
  74. package/build/components/Developers/Title.mjs +4 -7
  75. package/build/components/Developers/Title.mjs.map +1 -1
  76. package/build/components/Developers/get-unique-developer-values.js.map +1 -1
  77. package/build/components/Developers/get-unique-developer-values.mjs.map +1 -1
  78. package/build/components/Distribution/Dist.js +1 -1
  79. package/build/components/Distribution/Dist.js.map +1 -1
  80. package/build/components/Distribution/Dist.mjs +2 -2
  81. package/build/components/Distribution/Dist.mjs.map +1 -1
  82. package/build/components/Distribution/styles.js +12 -30
  83. package/build/components/Distribution/styles.js.map +1 -1
  84. package/build/components/Distribution/styles.mjs +11 -29
  85. package/build/components/Distribution/styles.mjs.map +1 -1
  86. package/build/components/Engines/Engines.js +1 -1
  87. package/build/components/Engines/Engines.js.map +1 -1
  88. package/build/components/Engines/Engines.mjs +1 -1
  89. package/build/components/Engines/Engines.mjs.map +1 -1
  90. package/build/components/Engines/styles.js +5 -21
  91. package/build/components/Engines/styles.js.map +1 -1
  92. package/build/components/Engines/styles.mjs +4 -20
  93. package/build/components/Engines/styles.mjs.map +1 -1
  94. package/build/components/ErrorBoundary/ErrorBoundary.js +1 -1
  95. package/build/components/ErrorBoundary/ErrorBoundary.js.map +1 -1
  96. package/build/components/ErrorBoundary/ErrorBoundary.mjs +1 -1
  97. package/build/components/ErrorBoundary/ErrorBoundary.mjs.map +1 -1
  98. package/build/components/Forbidden/Forbidden.js +6 -22
  99. package/build/components/Forbidden/Forbidden.js.map +1 -1
  100. package/build/components/Forbidden/Forbidden.mjs +5 -21
  101. package/build/components/Forbidden/Forbidden.mjs.map +1 -1
  102. package/build/components/FundButton/FundButton.js +7 -26
  103. package/build/components/FundButton/FundButton.js.map +1 -1
  104. package/build/components/FundButton/FundButton.mjs +6 -25
  105. package/build/components/FundButton/FundButton.mjs.map +1 -1
  106. package/build/components/HeaderInfoDialog/HeaderInfoDialog.js +1 -1
  107. package/build/components/HeaderInfoDialog/HeaderInfoDialog.js.map +1 -1
  108. package/build/components/HeaderInfoDialog/HeaderInfoDialog.mjs +1 -1
  109. package/build/components/HeaderInfoDialog/HeaderInfoDialog.mjs.map +1 -1
  110. package/build/components/Heading/Heading.js +1 -1
  111. package/build/components/Heading/Heading.js.map +1 -1
  112. package/build/components/Heading/Heading.mjs +1 -1
  113. package/build/components/Heading/Heading.mjs.map +1 -1
  114. package/build/components/Help/Help.js +1 -1
  115. package/build/components/Help/Help.js.map +1 -1
  116. package/build/components/Help/Help.mjs +2 -2
  117. package/build/components/Help/Help.mjs.map +1 -1
  118. package/build/components/Help/styles.js +5 -15
  119. package/build/components/Help/styles.js.map +1 -1
  120. package/build/components/Help/styles.mjs +4 -14
  121. package/build/components/Help/styles.mjs.map +1 -1
  122. package/build/components/Icons/DevsIcons/CommonJS2.js +1 -1
  123. package/build/components/Icons/DevsIcons/CommonJS2.js.map +1 -1
  124. package/build/components/Icons/DevsIcons/CommonJS2.mjs +1 -1
  125. package/build/components/Icons/DevsIcons/CommonJS2.mjs.map +1 -1
  126. package/build/components/Icons/DevsIcons/ES6Module2.js +1 -1
  127. package/build/components/Icons/DevsIcons/ES6Module2.js.map +1 -1
  128. package/build/components/Icons/DevsIcons/ES6Module2.mjs +1 -1
  129. package/build/components/Icons/DevsIcons/ES6Module2.mjs.map +1 -1
  130. package/build/components/Icons/DevsIcons/Git2.js +1 -1
  131. package/build/components/Icons/DevsIcons/Git2.js.map +1 -1
  132. package/build/components/Icons/DevsIcons/Git2.mjs +1 -1
  133. package/build/components/Icons/DevsIcons/Git2.mjs.map +1 -1
  134. package/build/components/Icons/DevsIcons/NodeJS2.js +1 -1
  135. package/build/components/Icons/DevsIcons/NodeJS2.js.map +1 -1
  136. package/build/components/Icons/DevsIcons/NodeJS2.mjs +1 -1
  137. package/build/components/Icons/DevsIcons/NodeJS2.mjs.map +1 -1
  138. package/build/components/Icons/DevsIcons/TypeScript2.js +1 -1
  139. package/build/components/Icons/DevsIcons/TypeScript2.js.map +1 -1
  140. package/build/components/Icons/DevsIcons/TypeScript2.mjs +1 -1
  141. package/build/components/Icons/DevsIcons/TypeScript2.mjs.map +1 -1
  142. package/build/components/Icons/Earth.js +1 -1
  143. package/build/components/Icons/Earth.js.map +1 -1
  144. package/build/components/Icons/Earth.mjs +1 -1
  145. package/build/components/Icons/Earth.mjs.map +1 -1
  146. package/build/components/Icons/FileBinary.js +1 -1
  147. package/build/components/Icons/FileBinary.js.map +1 -1
  148. package/build/components/Icons/FileBinary.mjs +1 -1
  149. package/build/components/Icons/FileBinary.mjs.map +1 -1
  150. package/build/components/Icons/Law.js +1 -1
  151. package/build/components/Icons/Law.js.map +1 -1
  152. package/build/components/Icons/Law.mjs +1 -1
  153. package/build/components/Icons/Law.mjs.map +1 -1
  154. package/build/components/Icons/License.js +1 -1
  155. package/build/components/Icons/License.js.map +1 -1
  156. package/build/components/Icons/License.mjs +1 -1
  157. package/build/components/Icons/License.mjs.map +1 -1
  158. package/build/components/Icons/Managers/Npm2.js +1 -1
  159. package/build/components/Icons/Managers/Npm2.js.map +1 -1
  160. package/build/components/Icons/Managers/Npm2.mjs +1 -1
  161. package/build/components/Icons/Managers/Npm2.mjs.map +1 -1
  162. package/build/components/Icons/Managers/Pnpm2.js +1 -1
  163. package/build/components/Icons/Managers/Pnpm2.js.map +1 -1
  164. package/build/components/Icons/Managers/Pnpm2.mjs +1 -1
  165. package/build/components/Icons/Managers/Pnpm2.mjs.map +1 -1
  166. package/build/components/Icons/Managers/Yarn2.js +1 -1
  167. package/build/components/Icons/Managers/Yarn2.js.map +1 -1
  168. package/build/components/Icons/Managers/Yarn2.mjs +1 -1
  169. package/build/components/Icons/Managers/Yarn2.mjs.map +1 -1
  170. package/build/components/Icons/SvgIcon.js +4 -7
  171. package/build/components/Icons/SvgIcon.js.map +1 -1
  172. package/build/components/Icons/SvgIcon.mjs +3 -6
  173. package/build/components/Icons/SvgIcon.mjs.map +1 -1
  174. package/build/components/Icons/Time.js +1 -1
  175. package/build/components/Icons/Time.js.map +1 -1
  176. package/build/components/Icons/Time.mjs +1 -1
  177. package/build/components/Icons/Time.mjs.map +1 -1
  178. package/build/components/Icons/Version.js +1 -1
  179. package/build/components/Icons/Version.js.map +1 -1
  180. package/build/components/Icons/Version.mjs +1 -1
  181. package/build/components/Icons/Version.mjs.map +1 -1
  182. package/build/components/Icons/index.js.map +1 -1
  183. package/build/components/Icons/index.mjs.map +1 -1
  184. package/build/components/Install/Install.js +9 -21
  185. package/build/components/Install/Install.js.map +1 -1
  186. package/build/components/Install/Install.mjs +9 -21
  187. package/build/components/Install/Install.mjs.map +1 -1
  188. package/build/components/Install/InstallListItem.js +13 -36
  189. package/build/components/Install/InstallListItem.js.map +1 -1
  190. package/build/components/Install/InstallListItem.mjs +12 -35
  191. package/build/components/Install/InstallListItem.mjs.map +1 -1
  192. package/build/components/Keywords/KeywordListItems.js +1 -1
  193. package/build/components/Keywords/KeywordListItems.js.map +1 -1
  194. package/build/components/Keywords/KeywordListItems.mjs +1 -1
  195. package/build/components/Keywords/KeywordListItems.mjs.map +1 -1
  196. package/build/components/Keywords/Keywords.js +1 -1
  197. package/build/components/Keywords/Keywords.js.map +1 -1
  198. package/build/components/Keywords/Keywords.mjs +1 -1
  199. package/build/components/Keywords/Keywords.mjs.map +1 -1
  200. package/build/components/Label/Label.js +5 -8
  201. package/build/components/Label/Label.js.map +1 -1
  202. package/build/components/Label/Label.mjs +4 -7
  203. package/build/components/Label/Label.mjs.map +1 -1
  204. package/build/components/Link/Link.js +10 -17
  205. package/build/components/Link/Link.js.map +1 -1
  206. package/build/components/Link/Link.mjs +9 -16
  207. package/build/components/Link/Link.mjs.map +1 -1
  208. package/build/components/LinkExternal/LinkExternal.js +1 -1
  209. package/build/components/LinkExternal/LinkExternal.js.map +1 -1
  210. package/build/components/LinkExternal/LinkExternal.mjs +1 -1
  211. package/build/components/LinkExternal/LinkExternal.mjs.map +1 -1
  212. package/build/components/Loading/Loading.js +1 -1
  213. package/build/components/Loading/Loading.js.map +1 -1
  214. package/build/components/Loading/Loading.mjs +1 -1
  215. package/build/components/Loading/Loading.mjs.map +1 -1
  216. package/build/components/Loading/Spinner/Spinner.js +6 -12
  217. package/build/components/Loading/Spinner/Spinner.js.map +1 -1
  218. package/build/components/Loading/Spinner/Spinner.mjs +5 -11
  219. package/build/components/Loading/Spinner/Spinner.mjs.map +1 -1
  220. package/build/components/Loading/styles.js +9 -20
  221. package/build/components/Loading/styles.js.map +1 -1
  222. package/build/components/Loading/styles.mjs +8 -19
  223. package/build/components/Loading/styles.mjs.map +1 -1
  224. package/build/components/LoginDialog/LoginDialog.js +1 -1
  225. package/build/components/LoginDialog/LoginDialog.js.map +1 -1
  226. package/build/components/LoginDialog/LoginDialog.mjs +1 -1
  227. package/build/components/LoginDialog/LoginDialog.mjs.map +1 -1
  228. package/build/components/LoginDialog/LoginDialogCloseButton.js +5 -8
  229. package/build/components/LoginDialog/LoginDialogCloseButton.js.map +1 -1
  230. package/build/components/LoginDialog/LoginDialogCloseButton.mjs +4 -7
  231. package/build/components/LoginDialog/LoginDialogCloseButton.mjs.map +1 -1
  232. package/build/components/LoginDialog/LoginDialogForm.js +1 -1
  233. package/build/components/LoginDialog/LoginDialogForm.js.map +1 -1
  234. package/build/components/LoginDialog/LoginDialogForm.mjs +1 -1
  235. package/build/components/LoginDialog/LoginDialogForm.mjs.map +1 -1
  236. package/build/components/LoginDialog/LoginDialogFormError.js +7 -13
  237. package/build/components/LoginDialog/LoginDialogFormError.js.map +1 -1
  238. package/build/components/LoginDialog/LoginDialogFormError.mjs +6 -12
  239. package/build/components/LoginDialog/LoginDialogFormError.mjs.map +1 -1
  240. package/build/components/LoginForm/Login.js +5 -11
  241. package/build/components/LoginForm/Login.js.map +1 -1
  242. package/build/components/LoginForm/Login.mjs +4 -10
  243. package/build/components/LoginForm/Login.mjs.map +1 -1
  244. package/build/components/LoginForm/PasswordField.js +4 -7
  245. package/build/components/LoginForm/PasswordField.js.map +1 -1
  246. package/build/components/LoginForm/PasswordField.mjs +3 -6
  247. package/build/components/LoginForm/PasswordField.mjs.map +1 -1
  248. package/build/components/LoginForm/UsernameField.js +4 -7
  249. package/build/components/LoginForm/UsernameField.js.map +1 -1
  250. package/build/components/LoginForm/UsernameField.mjs +3 -6
  251. package/build/components/LoginForm/UsernameField.mjs.map +1 -1
  252. package/build/components/LoginForm/styles.js +7 -13
  253. package/build/components/LoginForm/styles.js.map +1 -1
  254. package/build/components/LoginForm/styles.mjs +6 -12
  255. package/build/components/LoginForm/styles.mjs.map +1 -1
  256. package/build/components/LoginForm/useLoginForm.js.map +1 -1
  257. package/build/components/LoginForm/useLoginForm.mjs.map +1 -1
  258. package/build/components/Logo/Logo.js +6 -22
  259. package/build/components/Logo/Logo.js.map +1 -1
  260. package/build/components/Logo/Logo.mjs +5 -21
  261. package/build/components/Logo/Logo.mjs.map +1 -1
  262. package/build/components/MenuItem/MenuItem.js +4 -17
  263. package/build/components/MenuItem/MenuItem.js.map +1 -1
  264. package/build/components/MenuItem/MenuItem.mjs +3 -16
  265. package/build/components/MenuItem/MenuItem.mjs.map +1 -1
  266. package/build/components/NoItems/NoItems.js +1 -1
  267. package/build/components/NoItems/NoItems.js.map +1 -1
  268. package/build/components/NoItems/NoItems.mjs +1 -1
  269. package/build/components/NoItems/NoItems.mjs.map +1 -1
  270. package/build/components/NotFound/NotFound.js +6 -22
  271. package/build/components/NotFound/NotFound.js.map +1 -1
  272. package/build/components/NotFound/NotFound.mjs +5 -21
  273. package/build/components/NotFound/NotFound.mjs.map +1 -1
  274. package/build/components/Package/Package.js +19 -20
  275. package/build/components/Package/Package.js.map +1 -1
  276. package/build/components/Package/Package.mjs +18 -19
  277. package/build/components/Package/Package.mjs.map +1 -1
  278. package/build/components/Package/styles.js +30 -107
  279. package/build/components/Package/styles.js.map +1 -1
  280. package/build/components/Package/styles.mjs +29 -106
  281. package/build/components/Package/styles.mjs.map +1 -1
  282. package/build/components/PackageList/PackageList.js +1 -1
  283. package/build/components/PackageList/PackageList.js.map +1 -1
  284. package/build/components/PackageList/PackageList.mjs +1 -1
  285. package/build/components/PackageList/PackageList.mjs.map +1 -1
  286. package/build/components/Person/Person.js +1 -1
  287. package/build/components/Person/Person.js.map +1 -1
  288. package/build/components/Person/Person.mjs +2 -2
  289. package/build/components/Person/Person.mjs.map +1 -1
  290. package/build/components/Person/PersonTooltip.js +1 -1
  291. package/build/components/Person/PersonTooltip.js.map +1 -1
  292. package/build/components/Person/PersonTooltip.mjs +1 -1
  293. package/build/components/Person/PersonTooltip.mjs.map +1 -1
  294. package/build/components/Person/utils.js.map +1 -1
  295. package/build/components/Person/utils.mjs.map +1 -1
  296. package/build/components/RawViewer/RawViewer.js +1 -1
  297. package/build/components/RawViewer/RawViewer.js.map +1 -1
  298. package/build/components/RawViewer/RawViewer.mjs +1 -1
  299. package/build/components/RawViewer/RawViewer.mjs.map +1 -1
  300. package/build/components/Readme/Readme.js +6 -16
  301. package/build/components/Readme/Readme.js.map +1 -1
  302. package/build/components/Readme/Readme.mjs +5 -15
  303. package/build/components/Readme/Readme.mjs.map +1 -1
  304. package/build/components/Readme/utils.js.map +1 -1
  305. package/build/components/Readme/utils.mjs.map +1 -1
  306. package/build/components/RegistryInfoDialog/RegistryInfoDialog.js +1 -1
  307. package/build/components/RegistryInfoDialog/RegistryInfoDialog.js.map +1 -1
  308. package/build/components/RegistryInfoDialog/RegistryInfoDialog.mjs +1 -1
  309. package/build/components/RegistryInfoDialog/RegistryInfoDialog.mjs.map +1 -1
  310. package/build/components/RegistryInfoDialog/styles.js +10 -13
  311. package/build/components/RegistryInfoDialog/styles.js.map +1 -1
  312. package/build/components/RegistryInfoDialog/styles.mjs +9 -12
  313. package/build/components/RegistryInfoDialog/styles.mjs.map +1 -1
  314. package/build/components/Repository/Repository.js +15 -41
  315. package/build/components/Repository/Repository.js.map +1 -1
  316. package/build/components/Repository/Repository.mjs +14 -40
  317. package/build/components/Repository/Repository.mjs.map +1 -1
  318. package/build/components/Search/AutoComplete/AutoComplete.d.ts +2 -2
  319. package/build/components/Search/AutoComplete/AutoComplete.js +1 -1
  320. package/build/components/Search/AutoComplete/AutoComplete.js.map +1 -1
  321. package/build/components/Search/AutoComplete/AutoComplete.mjs +1 -1
  322. package/build/components/Search/AutoComplete/AutoComplete.mjs.map +1 -1
  323. package/build/components/Search/AutoComplete/styles.js +6 -15
  324. package/build/components/Search/AutoComplete/styles.js.map +1 -1
  325. package/build/components/Search/AutoComplete/styles.mjs +5 -14
  326. package/build/components/Search/AutoComplete/styles.mjs.map +1 -1
  327. package/build/components/Search/Search.js +1 -1
  328. package/build/components/Search/Search.js.map +1 -1
  329. package/build/components/Search/Search.mjs +1 -1
  330. package/build/components/Search/Search.mjs.map +1 -1
  331. package/build/components/Search/SearchItem.js +15 -40
  332. package/build/components/Search/SearchItem.js.map +1 -1
  333. package/build/components/Search/SearchItem.mjs +14 -39
  334. package/build/components/Search/SearchItem.mjs.map +1 -1
  335. package/build/components/Search/styles.js +5 -11
  336. package/build/components/Search/styles.js.map +1 -1
  337. package/build/components/Search/styles.mjs +4 -10
  338. package/build/components/Search/styles.mjs.map +1 -1
  339. package/build/components/Search/utils.js.map +1 -1
  340. package/build/components/Search/utils.mjs.map +1 -1
  341. package/build/components/SettingsMenu/SettingsMenu.js +1 -1
  342. package/build/components/SettingsMenu/SettingsMenu.js.map +1 -1
  343. package/build/components/SettingsMenu/SettingsMenu.mjs +2 -2
  344. package/build/components/SettingsMenu/SettingsMenu.mjs.map +1 -1
  345. package/build/components/SideBarTitle/SideBarTitle.js +12 -35
  346. package/build/components/SideBarTitle/SideBarTitle.js.map +1 -1
  347. package/build/components/SideBarTitle/SideBarTitle.mjs +12 -35
  348. package/build/components/SideBarTitle/SideBarTitle.mjs.map +1 -1
  349. package/build/components/SideBarTitle/utils.js.map +1 -1
  350. package/build/components/SideBarTitle/utils.mjs.map +1 -1
  351. package/build/components/UpLinks/UpLinks.js +1 -1
  352. package/build/components/UpLinks/UpLinks.js.map +1 -1
  353. package/build/components/UpLinks/UpLinks.mjs +1 -1
  354. package/build/components/UpLinks/UpLinks.mjs.map +1 -1
  355. package/build/components/UpLinks/UplinkLink.js +1 -1
  356. package/build/components/UpLinks/UplinkLink.js.map +1 -1
  357. package/build/components/UpLinks/UplinkLink.mjs +2 -2
  358. package/build/components/UpLinks/UplinkLink.mjs.map +1 -1
  359. package/build/components/UpLinks/styles.js +7 -16
  360. package/build/components/UpLinks/styles.js.map +1 -1
  361. package/build/components/UpLinks/styles.mjs +6 -15
  362. package/build/components/UpLinks/styles.mjs.map +1 -1
  363. package/build/components/Versions/HistoryList.js +1 -1
  364. package/build/components/Versions/HistoryList.js.map +1 -1
  365. package/build/components/Versions/HistoryList.mjs +1 -1
  366. package/build/components/Versions/HistoryList.mjs.map +1 -1
  367. package/build/components/Versions/TagList.js +1 -1
  368. package/build/components/Versions/TagList.js.map +1 -1
  369. package/build/components/Versions/TagList.mjs +1 -1
  370. package/build/components/Versions/TagList.mjs.map +1 -1
  371. package/build/components/Versions/Versions.js +5 -8
  372. package/build/components/Versions/Versions.js.map +1 -1
  373. package/build/components/Versions/Versions.mjs +7 -10
  374. package/build/components/Versions/Versions.mjs.map +1 -1
  375. package/build/components/Versions/styles.js +6 -12
  376. package/build/components/Versions/styles.js.map +1 -1
  377. package/build/components/Versions/styles.mjs +5 -11
  378. package/build/components/Versions/styles.mjs.map +1 -1
  379. package/build/configuration.js.map +1 -1
  380. package/build/configuration.mjs.map +1 -1
  381. package/build/hooks/useLocalStorage.js.map +1 -1
  382. package/build/hooks/useLocalStorage.mjs.map +1 -1
  383. package/build/hooks/useOnClickOutside.js.map +1 -1
  384. package/build/hooks/useOnClickOutside.mjs.map +1 -1
  385. package/build/layouts/Security/Dialog.js +1 -1
  386. package/build/layouts/Security/Dialog.js.map +1 -1
  387. package/build/layouts/Security/Dialog.mjs +1 -1
  388. package/build/layouts/Security/Dialog.mjs.map +1 -1
  389. package/build/layouts/Version/Version.js +1 -1
  390. package/build/layouts/Version/Version.js.map +1 -1
  391. package/build/layouts/Version/Version.mjs +1 -1
  392. package/build/layouts/Version/Version.mjs.map +1 -1
  393. package/build/pages/Front/Home.js.map +1 -1
  394. package/build/pages/Front/Home.mjs.map +1 -1
  395. package/build/pages/Security/AddUser.js.map +1 -1
  396. package/build/pages/Security/AddUser.mjs.map +1 -1
  397. package/build/pages/Security/ChangePassword.js.map +1 -1
  398. package/build/pages/Security/ChangePassword.mjs.map +1 -1
  399. package/build/pages/Security/Login.js.map +1 -1
  400. package/build/pages/Security/Login.mjs.map +1 -1
  401. package/build/pages/Security/Success.js.map +1 -1
  402. package/build/pages/Security/Success.mjs.map +1 -1
  403. package/build/pages/Version/Version.js +1 -1
  404. package/build/pages/Version/Version.js.map +1 -1
  405. package/build/pages/Version/Version.mjs +1 -1
  406. package/build/pages/Version/Version.mjs.map +1 -1
  407. package/build/providers/AppConfigurationProvider/AppConfigurationProvider.js +1 -1
  408. package/build/providers/AppConfigurationProvider/AppConfigurationProvider.js.map +1 -1
  409. package/build/providers/AppConfigurationProvider/AppConfigurationProvider.mjs +1 -1
  410. package/build/providers/AppConfigurationProvider/AppConfigurationProvider.mjs.map +1 -1
  411. package/build/providers/AuthProvider/AuthProvider.js +1 -1
  412. package/build/providers/AuthProvider/AuthProvider.js.map +1 -1
  413. package/build/providers/AuthProvider/AuthProvider.mjs +1 -1
  414. package/build/providers/AuthProvider/AuthProvider.mjs.map +1 -1
  415. package/build/providers/AuthProvider/utils.js.map +1 -1
  416. package/build/providers/AuthProvider/utils.mjs.map +1 -1
  417. package/build/providers/DownloadProvider/DownloadProvider.js +1 -1
  418. package/build/providers/DownloadProvider/DownloadProvider.js.map +1 -1
  419. package/build/providers/DownloadProvider/DownloadProvider.mjs +1 -1
  420. package/build/providers/DownloadProvider/DownloadProvider.mjs.map +1 -1
  421. package/build/providers/ManifestsProvider/ManifestsProvider.js +1 -1
  422. package/build/providers/ManifestsProvider/ManifestsProvider.js.map +1 -1
  423. package/build/providers/ManifestsProvider/ManifestsProvider.mjs +1 -1
  424. package/build/providers/ManifestsProvider/ManifestsProvider.mjs.map +1 -1
  425. package/build/providers/PersistenceSettingProvider/PersistenceSettingProvider.js +1 -1
  426. package/build/providers/PersistenceSettingProvider/PersistenceSettingProvider.js.map +1 -1
  427. package/build/providers/PersistenceSettingProvider/PersistenceSettingProvider.mjs +1 -1
  428. package/build/providers/PersistenceSettingProvider/PersistenceSettingProvider.mjs.map +1 -1
  429. package/build/providers/SearchProvider/SearchProvider.js +1 -1
  430. package/build/providers/SearchProvider/SearchProvider.js.map +1 -1
  431. package/build/providers/SearchProvider/SearchProvider.mjs +1 -1
  432. package/build/providers/SearchProvider/SearchProvider.mjs.map +1 -1
  433. package/build/providers/TranslatorProvider/TranslatorProvider.js +1 -1
  434. package/build/providers/TranslatorProvider/TranslatorProvider.js.map +1 -1
  435. package/build/providers/TranslatorProvider/TranslatorProvider.mjs +1 -1
  436. package/build/providers/TranslatorProvider/TranslatorProvider.mjs.map +1 -1
  437. package/build/providers/VersionProvider/VersionProvider.js +1 -1
  438. package/build/providers/VersionProvider/VersionProvider.js.map +1 -1
  439. package/build/providers/VersionProvider/VersionProvider.mjs +1 -1
  440. package/build/providers/VersionProvider/VersionProvider.mjs.map +1 -1
  441. package/build/sections/Detail/ContainerContent.js +1 -1
  442. package/build/sections/Detail/ContainerContent.js.map +1 -1
  443. package/build/sections/Detail/ContainerContent.mjs +1 -1
  444. package/build/sections/Detail/ContainerContent.mjs.map +1 -1
  445. package/build/sections/Detail/Detail.js +1 -1
  446. package/build/sections/Detail/Detail.js.map +1 -1
  447. package/build/sections/Detail/Detail.mjs +1 -1
  448. package/build/sections/Detail/Detail.mjs.map +1 -1
  449. package/build/sections/Detail/ReadmeSection.js +1 -1
  450. package/build/sections/Detail/ReadmeSection.js.map +1 -1
  451. package/build/sections/Detail/ReadmeSection.mjs +1 -1
  452. package/build/sections/Detail/ReadmeSection.mjs.map +1 -1
  453. package/build/sections/Detail/Tabs.js +4 -17
  454. package/build/sections/Detail/Tabs.js.map +1 -1
  455. package/build/sections/Detail/Tabs.mjs +3 -16
  456. package/build/sections/Detail/Tabs.mjs.map +1 -1
  457. package/build/sections/Footer/Footer.js +26 -48
  458. package/build/sections/Footer/Footer.js.map +1 -1
  459. package/build/sections/Footer/Footer.mjs +25 -47
  460. package/build/sections/Footer/Footer.mjs.map +1 -1
  461. package/build/sections/Footer/styles.js +13 -35
  462. package/build/sections/Footer/styles.js.map +1 -1
  463. package/build/sections/Footer/styles.mjs +12 -34
  464. package/build/sections/Footer/styles.mjs.map +1 -1
  465. package/build/sections/Header/Header.js +41 -32
  466. package/build/sections/Header/Header.js.map +1 -1
  467. package/build/sections/Header/Header.mjs +42 -33
  468. package/build/sections/Header/Header.mjs.map +1 -1
  469. package/build/sections/Header/HeaderGreetings.js +1 -1
  470. package/build/sections/Header/HeaderGreetings.js.map +1 -1
  471. package/build/sections/Header/HeaderGreetings.mjs +2 -2
  472. package/build/sections/Header/HeaderGreetings.mjs.map +1 -1
  473. package/build/sections/Header/HeaderLeft.js +1 -1
  474. package/build/sections/Header/HeaderLeft.js.map +1 -1
  475. package/build/sections/Header/HeaderLeft.mjs +1 -1
  476. package/build/sections/Header/HeaderLeft.mjs.map +1 -1
  477. package/build/sections/Header/HeaderMenu.js +1 -1
  478. package/build/sections/Header/HeaderMenu.js.map +1 -1
  479. package/build/sections/Header/HeaderMenu.mjs +2 -2
  480. package/build/sections/Header/HeaderMenu.mjs.map +1 -1
  481. package/build/sections/Header/HeaderRight.js +1 -1
  482. package/build/sections/Header/HeaderRight.js.map +1 -1
  483. package/build/sections/Header/HeaderRight.mjs +2 -2
  484. package/build/sections/Header/HeaderRight.mjs.map +1 -1
  485. package/build/sections/Header/HeaderSettingsDialog.js +5 -8
  486. package/build/sections/Header/HeaderSettingsDialog.js.map +1 -1
  487. package/build/sections/Header/HeaderSettingsDialog.mjs +4 -7
  488. package/build/sections/Header/HeaderSettingsDialog.mjs.map +1 -1
  489. package/build/sections/Header/HeaderToolTip.js +1 -1
  490. package/build/sections/Header/HeaderToolTip.js.map +1 -1
  491. package/build/sections/Header/HeaderToolTip.mjs +1 -1
  492. package/build/sections/Header/HeaderToolTip.mjs.map +1 -1
  493. package/build/sections/Header/HeaderToolTipIcon.js +2 -1
  494. package/build/sections/Header/HeaderToolTipIcon.js.map +1 -1
  495. package/build/sections/Header/HeaderToolTipIcon.mjs +2 -1
  496. package/build/sections/Header/HeaderToolTipIcon.mjs.map +1 -1
  497. package/build/sections/Header/LanguageSwitch.js +7 -13
  498. package/build/sections/Header/LanguageSwitch.js.map +1 -1
  499. package/build/sections/Header/LanguageSwitch.mjs +7 -13
  500. package/build/sections/Header/LanguageSwitch.mjs.map +1 -1
  501. package/build/sections/Header/RegistryInfoContent/RegistryInfoContent.js +11 -37
  502. package/build/sections/Header/RegistryInfoContent/RegistryInfoContent.js.map +1 -1
  503. package/build/sections/Header/RegistryInfoContent/RegistryInfoContent.mjs +11 -37
  504. package/build/sections/Header/RegistryInfoContent/RegistryInfoContent.mjs.map +1 -1
  505. package/build/sections/Header/RegistryInfoContent/styles.js +6 -12
  506. package/build/sections/Header/RegistryInfoContent/styles.js.map +1 -1
  507. package/build/sections/Header/RegistryInfoContent/styles.mjs +5 -11
  508. package/build/sections/Header/RegistryInfoContent/styles.mjs.map +1 -1
  509. package/build/sections/Header/styles.js +56 -99
  510. package/build/sections/Header/styles.js.map +1 -1
  511. package/build/sections/Header/styles.mjs +55 -98
  512. package/build/sections/Header/styles.mjs.map +1 -1
  513. package/build/sections/Home/Home.js +1 -1
  514. package/build/sections/Home/Home.js.map +1 -1
  515. package/build/sections/Home/Home.mjs +1 -1
  516. package/build/sections/Home/Home.mjs.map +1 -1
  517. package/build/sections/Security/AddUser.js +1 -1
  518. package/build/sections/Security/AddUser.js.map +1 -1
  519. package/build/sections/Security/AddUser.mjs +1 -1
  520. package/build/sections/Security/AddUser.mjs.map +1 -1
  521. package/build/sections/Security/ChangePassword.js +1 -1
  522. package/build/sections/Security/ChangePassword.js.map +1 -1
  523. package/build/sections/Security/ChangePassword.mjs +1 -1
  524. package/build/sections/Security/ChangePassword.mjs.map +1 -1
  525. package/build/sections/Security/Login.js +1 -1
  526. package/build/sections/Security/Login.js.map +1 -1
  527. package/build/sections/Security/Login.mjs +1 -1
  528. package/build/sections/Security/Login.mjs.map +1 -1
  529. package/build/sections/Security/Success.js +1 -1
  530. package/build/sections/Security/Success.js.map +1 -1
  531. package/build/sections/Security/Success.mjs +1 -1
  532. package/build/sections/Security/Success.mjs.map +1 -1
  533. package/build/sections/Security/styles.js.map +1 -1
  534. package/build/sections/Security/styles.mjs.map +1 -1
  535. package/build/sections/Security/utils.js.map +1 -1
  536. package/build/sections/Security/utils.mjs.map +1 -1
  537. package/build/sections/SideBar/Sidebar.js +1 -1
  538. package/build/sections/SideBar/Sidebar.js.map +1 -1
  539. package/build/sections/SideBar/Sidebar.mjs +1 -1
  540. package/build/sections/SideBar/Sidebar.mjs.map +1 -1
  541. package/build/store/api.js.map +1 -1
  542. package/build/store/api.mjs.map +1 -1
  543. package/build/store/routes.js.map +1 -1
  544. package/build/store/routes.mjs.map +1 -1
  545. package/build/store/storage.js.map +1 -1
  546. package/build/store/storage.mjs.map +1 -1
  547. package/build/store/utils.js.map +1 -1
  548. package/build/store/utils.mjs.map +1 -1
  549. package/build/utils/cli-utils.js.map +1 -1
  550. package/build/utils/cli-utils.mjs.map +1 -1
  551. package/build/utils/loadable.js +1 -1
  552. package/build/utils/loadable.js.map +1 -1
  553. package/build/utils/loadable.mjs +1 -1
  554. package/build/utils/loadable.mjs.map +1 -1
  555. package/build/utils/routes.js.map +1 -1
  556. package/build/utils/routes.mjs.map +1 -1
  557. package/build/utils/schemas.js.map +1 -1
  558. package/build/utils/schemas.mjs.map +1 -1
  559. package/build/utils/token.js.map +1 -1
  560. package/build/utils/token.mjs.map +1 -1
  561. package/build/utils/url.js.map +1 -1
  562. package/build/utils/url.mjs.map +1 -1
  563. package/build/utils/utils.js.map +1 -1
  564. package/build/utils/utils.mjs.map +1 -1
  565. package/package.json +20 -22
@@ -1 +1 @@
1
- {"version":3,"file":"routes.js","names":["Route","ROOT","DETAIL","SCOPE_PACKAGE","SCOPE_PACKAGE_VERSION","PACKAGE","PACKAGE_VERSION","LOGIN","SUCCESS","ADD_USER","CHANGE_PASSWORD","LOGIN_API","CHANGE_PASSWORD_API","APIRoute","RESET_PASSWORD","CONFIG","PACKAGES","SEARCH","SIDEBAR","README"],"sources":["../../src/utils/routes.ts"],"sourcesContent":["export enum Route {\n ROOT = '/',\n DETAIL = '/-/web/detail/',\n SCOPE_PACKAGE = '/-/web/detail/:scope/:package',\n SCOPE_PACKAGE_VERSION = '/-/web/detail/:scope/:package/v/:version',\n PACKAGE = '/-/web/detail/:package',\n PACKAGE_VERSION = '/-/web/detail/:package/v/:version',\n // Security UI routes\n LOGIN = '/-/web/login',\n SUCCESS = '/-/web/success',\n ADD_USER = '/-/web/add-user',\n CHANGE_PASSWORD = '/-/web/change-password',\n // Security API routes\n LOGIN_API = '/-/v1/login_cli',\n CHANGE_PASSWORD_API = '/-/npm/v1/user',\n}\n\n// Example API request:\n// http://localhost:8000/-/verdaccio/data/package/readme/jquery\nexport enum APIRoute {\n LOGIN = '/-/verdaccio/sec/login',\n RESET_PASSWORD = '/-/verdaccio/sec/reset_password',\n CONFIG = '/-/verdaccio/packages',\n PACKAGES = '/-/verdaccio/data/packages',\n SEARCH = '/-/verdaccio/data/search/', // :value\n SIDEBAR = '/-/verdaccio/data/sidebar/', // :packageName?v=version\n README = '/-/verdaccio/data/package/readme/', // :packageName?v=version\n}\n"],"mappings":";AAAA,IAAYA,QAAL,yBAAA,OAAA;AACLC,OAAAA,UAAAA;AACAC,OAAAA,YAAAA;AACAC,OAAAA,mBAAAA;AACAC,OAAAA,2BAAAA;AACAC,OAAAA,aAAAA;AACAC,OAAAA,qBAAAA;AAEAC,OAAAA,WAAAA;AACAC,OAAAA,aAAAA;AACAC,OAAAA,cAAAA;AACAC,OAAAA,qBAAAA;AAEAC,OAAAA,eAAAA;AACAC,OAAAA,yBAAAA;;KACF;AAIA,IAAYC,WAAL,yBAAA,UAAA;AACLN,UAAAA,WAAAA;AACAO,UAAAA,oBAAAA;AACAC,UAAAA,YAAAA;AACAC,UAAAA,cAAAA;AACAC,UAAAA,YAAAA;AACAC,UAAAA,aAAAA;AACAC,UAAAA,YAAAA"}
1
+ {"version":3,"file":"routes.js","names":[],"sources":["../../src/utils/routes.ts"],"sourcesContent":["export enum Route {\n ROOT = '/',\n DETAIL = '/-/web/detail/',\n SCOPE_PACKAGE = '/-/web/detail/:scope/:package',\n SCOPE_PACKAGE_VERSION = '/-/web/detail/:scope/:package/v/:version',\n PACKAGE = '/-/web/detail/:package',\n PACKAGE_VERSION = '/-/web/detail/:package/v/:version',\n // Security UI routes\n LOGIN = '/-/web/login',\n SUCCESS = '/-/web/success',\n ADD_USER = '/-/web/add-user',\n CHANGE_PASSWORD = '/-/web/change-password',\n // Security API routes\n LOGIN_API = '/-/v1/login_cli',\n CHANGE_PASSWORD_API = '/-/npm/v1/user',\n}\n\n// Example API request:\n// http://localhost:8000/-/verdaccio/data/package/readme/jquery\nexport enum APIRoute {\n LOGIN = '/-/verdaccio/sec/login',\n RESET_PASSWORD = '/-/verdaccio/sec/reset_password',\n CONFIG = '/-/verdaccio/packages',\n PACKAGES = '/-/verdaccio/data/packages',\n SEARCH = '/-/verdaccio/data/search/', // :value\n SIDEBAR = '/-/verdaccio/data/sidebar/', // :packageName?v=version\n README = '/-/verdaccio/data/package/readme/', // :packageName?v=version\n}\n"],"mappings":";AAAA,IAAY,QAAL,yBAAA,OAAA;AACL,OAAA,UAAA;AACA,OAAA,YAAA;AACA,OAAA,mBAAA;AACA,OAAA,2BAAA;AACA,OAAA,aAAA;AACA,OAAA,qBAAA;AAEA,OAAA,WAAA;AACA,OAAA,aAAA;AACA,OAAA,cAAA;AACA,OAAA,qBAAA;AAEA,OAAA,eAAA;AACA,OAAA,yBAAA;;KACD;AAID,IAAY,WAAL,yBAAA,UAAA;AACL,UAAA,WAAA;AACA,UAAA,oBAAA;AACA,UAAA,YAAA;AACA,UAAA,cAAA;AACA,UAAA,YAAA;AACA,UAAA,aAAA;AACA,UAAA,YAAA;;KACD"}
@@ -1 +1 @@
1
- {"version":3,"file":"routes.mjs","names":["Route","ROOT","DETAIL","SCOPE_PACKAGE","SCOPE_PACKAGE_VERSION","PACKAGE","PACKAGE_VERSION","LOGIN","SUCCESS","ADD_USER","CHANGE_PASSWORD","LOGIN_API","CHANGE_PASSWORD_API","APIRoute","RESET_PASSWORD","CONFIG","PACKAGES","SEARCH","SIDEBAR","README"],"sources":["../../src/utils/routes.ts"],"sourcesContent":["export enum Route {\n ROOT = '/',\n DETAIL = '/-/web/detail/',\n SCOPE_PACKAGE = '/-/web/detail/:scope/:package',\n SCOPE_PACKAGE_VERSION = '/-/web/detail/:scope/:package/v/:version',\n PACKAGE = '/-/web/detail/:package',\n PACKAGE_VERSION = '/-/web/detail/:package/v/:version',\n // Security UI routes\n LOGIN = '/-/web/login',\n SUCCESS = '/-/web/success',\n ADD_USER = '/-/web/add-user',\n CHANGE_PASSWORD = '/-/web/change-password',\n // Security API routes\n LOGIN_API = '/-/v1/login_cli',\n CHANGE_PASSWORD_API = '/-/npm/v1/user',\n}\n\n// Example API request:\n// http://localhost:8000/-/verdaccio/data/package/readme/jquery\nexport enum APIRoute {\n LOGIN = '/-/verdaccio/sec/login',\n RESET_PASSWORD = '/-/verdaccio/sec/reset_password',\n CONFIG = '/-/verdaccio/packages',\n PACKAGES = '/-/verdaccio/data/packages',\n SEARCH = '/-/verdaccio/data/search/', // :value\n SIDEBAR = '/-/verdaccio/data/sidebar/', // :packageName?v=version\n README = '/-/verdaccio/data/package/readme/', // :packageName?v=version\n}\n"],"mappings":";AAAA,IAAYA,QAAL,yBAAA,OAAA;AACLC,OAAAA,UAAAA;AACAC,OAAAA,YAAAA;AACAC,OAAAA,mBAAAA;AACAC,OAAAA,2BAAAA;AACAC,OAAAA,aAAAA;AACAC,OAAAA,qBAAAA;AAEAC,OAAAA,WAAAA;AACAC,OAAAA,aAAAA;AACAC,OAAAA,cAAAA;AACAC,OAAAA,qBAAAA;AAEAC,OAAAA,eAAAA;AACAC,OAAAA,yBAAAA;;KACF;AAIA,IAAYC,WAAL,yBAAA,UAAA;AACLN,UAAAA,WAAAA;AACAO,UAAAA,oBAAAA;AACAC,UAAAA,YAAAA;AACAC,UAAAA,cAAAA;AACAC,UAAAA,YAAAA;AACAC,UAAAA,aAAAA;AACAC,UAAAA,YAAAA"}
1
+ {"version":3,"file":"routes.mjs","names":[],"sources":["../../src/utils/routes.ts"],"sourcesContent":["export enum Route {\n ROOT = '/',\n DETAIL = '/-/web/detail/',\n SCOPE_PACKAGE = '/-/web/detail/:scope/:package',\n SCOPE_PACKAGE_VERSION = '/-/web/detail/:scope/:package/v/:version',\n PACKAGE = '/-/web/detail/:package',\n PACKAGE_VERSION = '/-/web/detail/:package/v/:version',\n // Security UI routes\n LOGIN = '/-/web/login',\n SUCCESS = '/-/web/success',\n ADD_USER = '/-/web/add-user',\n CHANGE_PASSWORD = '/-/web/change-password',\n // Security API routes\n LOGIN_API = '/-/v1/login_cli',\n CHANGE_PASSWORD_API = '/-/npm/v1/user',\n}\n\n// Example API request:\n// http://localhost:8000/-/verdaccio/data/package/readme/jquery\nexport enum APIRoute {\n LOGIN = '/-/verdaccio/sec/login',\n RESET_PASSWORD = '/-/verdaccio/sec/reset_password',\n CONFIG = '/-/verdaccio/packages',\n PACKAGES = '/-/verdaccio/data/packages',\n SEARCH = '/-/verdaccio/data/search/', // :value\n SIDEBAR = '/-/verdaccio/data/sidebar/', // :packageName?v=version\n README = '/-/verdaccio/data/package/readme/', // :packageName?v=version\n}\n"],"mappings":";AAAA,IAAY,QAAL,yBAAA,OAAA;AACL,OAAA,UAAA;AACA,OAAA,YAAA;AACA,OAAA,mBAAA;AACA,OAAA,2BAAA;AACA,OAAA,aAAA;AACA,OAAA,qBAAA;AAEA,OAAA,WAAA;AACA,OAAA,aAAA;AACA,OAAA,cAAA;AACA,OAAA,qBAAA;AAEA,OAAA,eAAA;AACA,OAAA,yBAAA;;KACD;AAID,IAAY,WAAL,yBAAA,UAAA;AACL,UAAA,WAAA;AACA,UAAA,oBAAA;AACA,UAAA,YAAA;AACA,UAAA,cAAA;AACA,UAAA,YAAA;AACA,UAAA,aAAA;AACA,UAAA,YAAA;;KACD"}
@@ -1 +1 @@
1
- {"version":3,"file":"schemas.js","names":["yup","USERNAME_MIN_LENGTH","usernameSchema","string","required","min","matches","passwordSchema","loginSchema","object","username","password","LoginFormValues","InferType","addUserSchema","email","AddUserFormValues","changePasswordSchema","oldPassword","newPassword","confirmPassword","oneOf","ref","ChangePasswordFormValues"],"sources":["../../src/utils/schemas.ts"],"sourcesContent":["import * as yup from 'yup';\n\nexport const USERNAME_MIN_LENGTH = 2;\n\n// Matches your current logic\nexport const usernameSchema = yup\n .string()\n .required()\n .min(USERNAME_MIN_LENGTH)\n .matches(/^[-a-zA-Z0-9_.!~*'()@]+$/, 'security.error.username-must-be-url-safe');\n\nexport const passwordSchema = yup.string().required().min(2);\n\nexport const loginSchema = yup.object({\n username: usernameSchema,\n password: passwordSchema,\n});\n\nexport type LoginFormValues = yup.InferType<typeof loginSchema>;\n\nexport const addUserSchema = yup.object({\n username: usernameSchema,\n password: passwordSchema,\n email: yup.string().email().required(),\n});\n\nexport type AddUserFormValues = yup.InferType<typeof addUserSchema>;\n\nexport const changePasswordSchema = yup.object({\n username: usernameSchema,\n oldPassword: passwordSchema,\n newPassword: passwordSchema,\n confirmPassword: yup\n .string()\n .required()\n .oneOf([yup.ref('newPassword')], 'security.error.password-mismatch'),\n});\n\nexport type ChangePasswordFormValues = yup.InferType<typeof changePasswordSchema>;\n"],"mappings":";;;AAKA,IAAaE,iBAAiBF,IAC3BG,QAAQ,CACRC,UAAU,CACVC,IAAAA,EAAwB,CACxBC,QAAQ,4BAA4B,2CAA2C;AAElF,IAAaC,iBAAiBP,IAAIG,QAAQ,CAACC,UAAU,CAACC,IAAI,EAAE;AAE5D,IAAaG,cAAcR,IAAIS,OAAO;CACpCC,UAAUR;CACVS,UAAUJ;CACX,CAAC;AAIF,IAAaO,gBAAgBd,IAAIS,OAAO;CACtCC,UAAUR;CACVS,UAAUJ;CACVQ,OAAOf,IAAIG,QAAQ,CAACY,OAAO,CAACX,UAAS;CACtC,CAAC;AAIF,IAAaa,uBAAuBjB,IAAIS,OAAO;CAC7CC,UAAUR;CACVgB,aAAaX;CACbY,aAAaZ;CACba,iBAAiBpB,IACdG,QAAQ,CACRC,UAAU,CACViB,MAAM,CAACrB,IAAIsB,IAAI,cAAc,CAAC,EAAE,mCAAkC;CACtE,CAAC"}
1
+ {"version":3,"file":"schemas.js","names":[],"sources":["../../src/utils/schemas.ts"],"sourcesContent":["import * as yup from 'yup';\n\nexport const USERNAME_MIN_LENGTH = 2;\n\n// Matches your current logic\nexport const usernameSchema = yup\n .string()\n .required()\n .min(USERNAME_MIN_LENGTH)\n .matches(/^[-a-zA-Z0-9_.!~*'()@]+$/, 'security.error.username-must-be-url-safe');\n\nexport const passwordSchema = yup.string().required().min(2);\n\nexport const loginSchema = yup.object({\n username: usernameSchema,\n password: passwordSchema,\n});\n\nexport type LoginFormValues = yup.InferType<typeof loginSchema>;\n\nexport const addUserSchema = yup.object({\n username: usernameSchema,\n password: passwordSchema,\n email: yup.string().email().required(),\n});\n\nexport type AddUserFormValues = yup.InferType<typeof addUserSchema>;\n\nexport const changePasswordSchema = yup.object({\n username: usernameSchema,\n oldPassword: passwordSchema,\n newPassword: passwordSchema,\n confirmPassword: yup\n .string()\n .required()\n .oneOf([yup.ref('newPassword')], 'security.error.password-mismatch'),\n});\n\nexport type ChangePasswordFormValues = yup.InferType<typeof changePasswordSchema>;\n"],"mappings":";;;AAKA,IAAa,iBAAiB,IAC3B,QAAQ,CACR,UAAU,CACV,IAAA,EAAwB,CACxB,QAAQ,4BAA4B,2CAA2C;AAElF,IAAa,iBAAiB,IAAI,QAAQ,CAAC,UAAU,CAAC,IAAI,EAAE;AAE5D,IAAa,cAAc,IAAI,OAAO;CACpC,UAAU;CACV,UAAU;CACX,CAAC;AAIF,IAAa,gBAAgB,IAAI,OAAO;CACtC,UAAU;CACV,UAAU;CACV,OAAO,IAAI,QAAQ,CAAC,OAAO,CAAC,UAAU;CACvC,CAAC;AAIF,IAAa,uBAAuB,IAAI,OAAO;CAC7C,UAAU;CACV,aAAa;CACb,aAAa;CACb,iBAAiB,IACd,QAAQ,CACR,UAAU,CACV,MAAM,CAAC,IAAI,IAAI,cAAc,CAAC,EAAE,mCAAmC;CACvE,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"schemas.mjs","names":["yup","USERNAME_MIN_LENGTH","usernameSchema","string","required","min","matches","passwordSchema","loginSchema","object","username","password","LoginFormValues","InferType","addUserSchema","email","AddUserFormValues","changePasswordSchema","oldPassword","newPassword","confirmPassword","oneOf","ref","ChangePasswordFormValues"],"sources":["../../src/utils/schemas.ts"],"sourcesContent":["import * as yup from 'yup';\n\nexport const USERNAME_MIN_LENGTH = 2;\n\n// Matches your current logic\nexport const usernameSchema = yup\n .string()\n .required()\n .min(USERNAME_MIN_LENGTH)\n .matches(/^[-a-zA-Z0-9_.!~*'()@]+$/, 'security.error.username-must-be-url-safe');\n\nexport const passwordSchema = yup.string().required().min(2);\n\nexport const loginSchema = yup.object({\n username: usernameSchema,\n password: passwordSchema,\n});\n\nexport type LoginFormValues = yup.InferType<typeof loginSchema>;\n\nexport const addUserSchema = yup.object({\n username: usernameSchema,\n password: passwordSchema,\n email: yup.string().email().required(),\n});\n\nexport type AddUserFormValues = yup.InferType<typeof addUserSchema>;\n\nexport const changePasswordSchema = yup.object({\n username: usernameSchema,\n oldPassword: passwordSchema,\n newPassword: passwordSchema,\n confirmPassword: yup\n .string()\n .required()\n .oneOf([yup.ref('newPassword')], 'security.error.password-mismatch'),\n});\n\nexport type ChangePasswordFormValues = yup.InferType<typeof changePasswordSchema>;\n"],"mappings":";AAKA,IAAaE,iBAAiBF,IAC3BG,QAAQ,CACRC,UAAU,CACVC,IAAAA,EAAwB,CACxBC,QAAQ,4BAA4B,2CAA2C;AAElF,IAAaC,iBAAiBP,IAAIG,QAAQ,CAACC,UAAU,CAACC,IAAI,EAAE;AAE5D,IAAaG,cAAcR,IAAIS,OAAO;CACpCC,UAAUR;CACVS,UAAUJ;CACX,CAAC;AAIF,IAAaO,gBAAgBd,IAAIS,OAAO;CACtCC,UAAUR;CACVS,UAAUJ;CACVQ,OAAOf,IAAIG,QAAQ,CAACY,OAAO,CAACX,UAAS;CACtC,CAAC;AAIF,IAAaa,uBAAuBjB,IAAIS,OAAO;CAC7CC,UAAUR;CACVgB,aAAaX;CACbY,aAAaZ;CACba,iBAAiBpB,IACdG,QAAQ,CACRC,UAAU,CACViB,MAAM,CAACrB,IAAIsB,IAAI,cAAc,CAAC,EAAE,mCAAkC;CACtE,CAAC"}
1
+ {"version":3,"file":"schemas.mjs","names":[],"sources":["../../src/utils/schemas.ts"],"sourcesContent":["import * as yup from 'yup';\n\nexport const USERNAME_MIN_LENGTH = 2;\n\n// Matches your current logic\nexport const usernameSchema = yup\n .string()\n .required()\n .min(USERNAME_MIN_LENGTH)\n .matches(/^[-a-zA-Z0-9_.!~*'()@]+$/, 'security.error.username-must-be-url-safe');\n\nexport const passwordSchema = yup.string().required().min(2);\n\nexport const loginSchema = yup.object({\n username: usernameSchema,\n password: passwordSchema,\n});\n\nexport type LoginFormValues = yup.InferType<typeof loginSchema>;\n\nexport const addUserSchema = yup.object({\n username: usernameSchema,\n password: passwordSchema,\n email: yup.string().email().required(),\n});\n\nexport type AddUserFormValues = yup.InferType<typeof addUserSchema>;\n\nexport const changePasswordSchema = yup.object({\n username: usernameSchema,\n oldPassword: passwordSchema,\n newPassword: passwordSchema,\n confirmPassword: yup\n .string()\n .required()\n .oneOf([yup.ref('newPassword')], 'security.error.password-mismatch'),\n});\n\nexport type ChangePasswordFormValues = yup.InferType<typeof changePasswordSchema>;\n"],"mappings":";AAKA,IAAa,iBAAiB,IAC3B,QAAQ,CACR,UAAU,CACV,IAAA,EAAwB,CACxB,QAAQ,4BAA4B,2CAA2C;AAElF,IAAa,iBAAiB,IAAI,QAAQ,CAAC,UAAU,CAAC,IAAI,EAAE;AAE5D,IAAa,cAAc,IAAI,OAAO;CACpC,UAAU;CACV,UAAU;CACX,CAAC;AAIF,IAAa,gBAAgB,IAAI,OAAO;CACtC,UAAU;CACV,UAAU;CACV,OAAO,IAAI,QAAQ,CAAC,OAAO,CAAC,UAAU;CACvC,CAAC;AAIF,IAAa,uBAAuB,IAAI,OAAO;CAC7C,UAAU;CACV,aAAa;CACb,aAAa;CACb,iBAAiB,IACd,QAAQ,CACR,UAAU,CACV,MAAM,CAAC,IAAI,IAAI,cAAc,CAAC,EAAE,mCAAmC;CACvE,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"token.js","names":["Base64","isNumber","isString","isTokenExpire","token","payload","split","exp","JSON","parse","decode","error","console","jsTimestamp","expired","Date","now"],"sources":["../../src/utils/token.ts"],"sourcesContent":["import { Base64 } from 'js-base64';\nimport isNumber from 'lodash/isNumber';\nimport isString from 'lodash/isString';\n\nexport function isTokenExpire(token: string | null): boolean {\n if (!isString(token)) {\n return true;\n }\n\n const [, payload] = token.split('.');\n\n if (!payload) {\n return true;\n }\n\n let exp: number;\n try {\n exp = JSON.parse(Base64.decode(payload)).exp;\n } catch (error: unknown) {\n console.error('Invalid token:', error, token);\n return true;\n }\n\n if (!exp || !isNumber(exp)) {\n return true;\n }\n // Report as expire before (real expire time - 30s)\n const jsTimestamp = exp * 1000 - 30000;\n const expired = Date.now() >= jsTimestamp;\n\n return expired;\n}\n"],"mappings":";;;;;;;AAIA,SAAgBG,cAAcC,OAA+B;AAC3D,KAAI,EAAA,GAAA,gBAAA,SAAUA,MAAM,CAClB,QAAO;CAGT,MAAM,GAAGC,WAAWD,MAAME,MAAM,IAAI;AAEpC,KAAI,CAACD,QACH,QAAO;CAGT,IAAIE;AACJ,KAAI;AACFA,QAAMC,KAAKC,MAAMT,UAAAA,OAAOU,OAAOL,QAAQ,CAAC,CAACE;UAClCI,OAAgB;AACvBC,UAAQD,MAAM,kBAAkBA,OAAOP,MAAM;AAC7C,SAAO;;AAGT,KAAI,CAACG,OAAO,EAAA,GAAA,gBAAA,SAAUA,IAAI,CACxB,QAAO;CAGT,MAAMM,cAAcN,MAAM,MAAO;AAGjC,QAFgBQ,KAAKC,KAAK,IAAIH"}
1
+ {"version":3,"file":"token.js","names":[],"sources":["../../src/utils/token.ts"],"sourcesContent":["import { Base64 } from 'js-base64';\nimport isNumber from 'lodash/isNumber';\nimport isString from 'lodash/isString';\n\nexport function isTokenExpire(token: string | null): boolean {\n if (!isString(token)) {\n return true;\n }\n\n const [, payload] = token.split('.');\n\n if (!payload) {\n return true;\n }\n\n let exp: number;\n try {\n exp = JSON.parse(Base64.decode(payload)).exp;\n } catch (error: unknown) {\n console.error('Invalid token:', error, token);\n return true;\n }\n\n if (!exp || !isNumber(exp)) {\n return true;\n }\n // Report as expire before (real expire time - 30s)\n const jsTimestamp = exp * 1000 - 30000;\n const expired = Date.now() >= jsTimestamp;\n\n return expired;\n}\n"],"mappings":";;;;;;;AAIA,SAAgB,cAAc,OAA+B;AAC3D,KAAI,EAAA,GAAA,gBAAA,SAAU,MAAM,CAClB,QAAO;CAGT,MAAM,GAAG,WAAW,MAAM,MAAM,IAAI;AAEpC,KAAI,CAAC,QACH,QAAO;CAGT,IAAI;AACJ,KAAI;AACF,QAAM,KAAK,MAAM,UAAA,OAAO,OAAO,QAAQ,CAAC,CAAC;UAClC,OAAgB;AACvB,UAAQ,MAAM,kBAAkB,OAAO,MAAM;AAC7C,SAAO;;AAGT,KAAI,CAAC,OAAO,EAAA,GAAA,gBAAA,SAAU,IAAI,CACxB,QAAO;CAGT,MAAM,cAAc,MAAM,MAAO;AAGjC,QAFgB,KAAK,KAAK,IAAI"}
@@ -1 +1 @@
1
- {"version":3,"file":"token.mjs","names":["Base64","isNumber","isString","isTokenExpire","token","payload","split","exp","JSON","parse","decode","error","console","jsTimestamp","expired","Date","now"],"sources":["../../src/utils/token.ts"],"sourcesContent":["import { Base64 } from 'js-base64';\nimport isNumber from 'lodash/isNumber';\nimport isString from 'lodash/isString';\n\nexport function isTokenExpire(token: string | null): boolean {\n if (!isString(token)) {\n return true;\n }\n\n const [, payload] = token.split('.');\n\n if (!payload) {\n return true;\n }\n\n let exp: number;\n try {\n exp = JSON.parse(Base64.decode(payload)).exp;\n } catch (error: unknown) {\n console.error('Invalid token:', error, token);\n return true;\n }\n\n if (!exp || !isNumber(exp)) {\n return true;\n }\n // Report as expire before (real expire time - 30s)\n const jsTimestamp = exp * 1000 - 30000;\n const expired = Date.now() >= jsTimestamp;\n\n return expired;\n}\n"],"mappings":";;;;AAIA,SAAgBG,cAAcC,OAA+B;AAC3D,KAAI,CAACF,SAASE,MAAM,CAClB,QAAO;CAGT,MAAM,GAAGC,WAAWD,MAAME,MAAM,IAAI;AAEpC,KAAI,CAACD,QACH,QAAO;CAGT,IAAIE;AACJ,KAAI;AACFA,QAAMC,KAAKC,MAAMT,OAAOU,OAAOL,QAAQ,CAAC,CAACE;UAClCI,OAAgB;AACvBC,UAAQD,MAAM,kBAAkBA,OAAOP,MAAM;AAC7C,SAAO;;AAGT,KAAI,CAACG,OAAO,CAACN,SAASM,IAAI,CACxB,QAAO;CAGT,MAAMM,cAAcN,MAAM,MAAO;AAGjC,QAFgBQ,KAAKC,KAAK,IAAIH"}
1
+ {"version":3,"file":"token.mjs","names":[],"sources":["../../src/utils/token.ts"],"sourcesContent":["import { Base64 } from 'js-base64';\nimport isNumber from 'lodash/isNumber';\nimport isString from 'lodash/isString';\n\nexport function isTokenExpire(token: string | null): boolean {\n if (!isString(token)) {\n return true;\n }\n\n const [, payload] = token.split('.');\n\n if (!payload) {\n return true;\n }\n\n let exp: number;\n try {\n exp = JSON.parse(Base64.decode(payload)).exp;\n } catch (error: unknown) {\n console.error('Invalid token:', error, token);\n return true;\n }\n\n if (!exp || !isNumber(exp)) {\n return true;\n }\n // Report as expire before (real expire time - 30s)\n const jsTimestamp = exp * 1000 - 30000;\n const expired = Date.now() >= jsTimestamp;\n\n return expired;\n}\n"],"mappings":";;;;AAIA,SAAgB,cAAc,OAA+B;AAC3D,KAAI,CAAC,SAAS,MAAM,CAClB,QAAO;CAGT,MAAM,GAAG,WAAW,MAAM,MAAM,IAAI;AAEpC,KAAI,CAAC,QACH,QAAO;CAGT,IAAI;AACJ,KAAI;AACF,QAAM,KAAK,MAAM,OAAO,OAAO,QAAQ,CAAC,CAAC;UAClC,OAAgB;AACvB,UAAQ,MAAM,kBAAkB,OAAO,MAAM;AAC7C,SAAO;;AAGT,KAAI,CAAC,OAAO,CAAC,SAAS,IAAI,CACxB,QAAO;CAGT,MAAM,cAAc,MAAM,MAAO;AAGjC,QAFgB,KAAK,KAAK,IAAI"}
@@ -1 +1 @@
1
- {"version":3,"file":"url.js","names":["isEmailValidator","isURLValidator","isURL","url","protocols","require_protocol","require_tld","isEmail","email","extractFileName","substring","lastIndexOf","NavigatorWithMSSaveBlob","Navigator","msSaveBlob","blob","Blob","fileName","blobToFile","File","fileProperties","lastModified","Date","now","name","Object","assign","downloadFile","fileStream","file","nav","navigator","type","objectURL","URL","createObjectURL","fileLink","document","createElement","href","download","isTestEnvironment","window","userAgent","includes","documentElement","appendChild","click","setTimeout","revokeObjectURL","removeChild"],"sources":["../../src/utils/url.ts"],"sourcesContent":["import isEmailValidator from 'validator/lib/isEmail';\nimport isURLValidator from 'validator/lib/isURL';\n\nexport function isURL(url: string): boolean {\n return isURLValidator(url || '', {\n protocols: ['http', 'https', 'git+https', 'git'],\n require_protocol: true,\n require_tld: false,\n });\n}\n\nexport function isEmail(email: string): boolean {\n return isEmailValidator(email || '');\n}\n\nexport function extractFileName(url: string): string {\n return url.substring(url.lastIndexOf('/') + 1);\n}\n\n// Legacy Edge support for file downloads\ninterface NavigatorWithMSSaveBlob extends Navigator {\n msSaveBlob?: (blob: Blob, fileName: string) => boolean;\n}\n\nfunction blobToFile(blob: Blob, fileName: string): File {\n // Create a proper File object by extending the Blob with File properties\n const fileProperties = {\n lastModified: Date.now(),\n name: fileName,\n };\n\n // Use Object.assign to copy properties while maintaining the Blob prototype\n return Object.assign(blob, fileProperties) as File;\n}\n\nexport function downloadFile(fileStream: Blob, fileName: string): void {\n let file: File;\n // File constructor is not supported by Edge\n // https://developer.mozilla.org/en-US/docs/Web/API/File#Browser_compatibility\n const nav = navigator as NavigatorWithMSSaveBlob;\n if (nav.msSaveBlob) {\n // Detect if Edge\n file = blobToFile(new Blob([fileStream], { type: 'application/octet-stream' }), fileName);\n } else {\n file = new File([fileStream], fileName, {\n type: 'application/octet-stream',\n lastModified: Date.now(),\n });\n }\n\n const objectURL = URL.createObjectURL(file);\n const fileLink = document.createElement('a');\n fileLink.href = objectURL;\n fileLink.download = fileName;\n\n // Skip actual download in test environment to avoid JSDOM navigation error\n // Check if we're in a test environment (JSDOM)\n const isTestEnvironment =\n (typeof window !== 'undefined' &&\n window.navigator &&\n window.navigator.userAgent &&\n window.navigator.userAgent.includes('Node.js')) ||\n window.navigator.userAgent.includes('jsdom');\n\n if (!isTestEnvironment) {\n // Without appending to an HTML Element, download dialog does not show up on Firefox\n // https://github.com/verdaccio/ui/issues/119\n document.documentElement.appendChild(fileLink);\n fileLink.click();\n // firefox requires remove the object url\n setTimeout(() => {\n URL.revokeObjectURL(objectURL);\n document.documentElement.removeChild(fileLink);\n }, 150);\n } else {\n // In test environment, just clean up without triggering navigation\n setTimeout(() => {\n URL.revokeObjectURL(objectURL);\n }, 150);\n }\n}\n"],"mappings":";;;;;;;;;;;;AAGA,SAAgBE,MAAMC,KAAsB;AAC1C,SAAA,GAAA,oBAAA,SAAsBA,OAAO,IAAI;EAC/BC,WAAW;GAAC;GAAQ;GAAS;GAAa;GAAM;EAChDC,kBAAkB;EAClBC,aAAa;EACd,CAAC;;AAGJ,SAAgBC,QAAQC,OAAwB;AAC9C,SAAA,GAAA,sBAAA,SAAwBA,SAAS,GAAG;;AAGtC,SAAgBC,gBAAgBN,KAAqB;AACnD,QAAOA,IAAIO,UAAUP,IAAIQ,YAAY,IAAI,GAAG,EAAE;;AAQhD,SAASO,WAAWH,MAAYE,UAAwB;CAEtD,MAAMG,iBAAiB;EACrBC,cAAcC,KAAKC,KAAK;EACxBC,MAAMP;EACP;AAGD,QAAOQ,OAAOC,OAAOX,MAAMK,eAAe;;AAG5C,SAAgBO,aAAaC,YAAkBX,UAAwB;CACrE,IAAIY;AAIJ,KADYE,UACJjB,WAENe,QAAOX,WAAW,IAAIF,KAAK,CAACY,WAAW,EAAE,EAAEI,MAAM,4BAA4B,CAAC,EAAEf,SAAS;KAEzFY,QAAO,IAAIV,KAAK,CAACS,WAAW,EAAEX,UAAU;EACtCe,MAAM;EACNX,cAAcC,KAAKC,KAAI;EACxB,CAAC;CAGJ,MAAMU,YAAYC,IAAIC,gBAAgBN,KAAK;CAC3C,MAAMO,WAAWC,SAASC,cAAc,IAAI;AAC5CF,UAASG,OAAON;AAChBG,UAASI,WAAWvB;AAWpB,KAAI,EAND,OAAOyB,WAAW,eACjBA,OAAOX,aACPW,OAAOX,UAAUY,aACjBD,OAAOX,UAAUY,UAAUC,SAAS,UAAU,IAChDF,OAAOX,UAAUY,UAAUC,SAAS,QAAQ,GAEtB;AAGtBP,WAASQ,gBAAgBC,YAAYV,SAAS;AAC9CA,WAASW,OAAO;AAEhBC,mBAAiB;AACfd,OAAIe,gBAAgBhB,UAAU;AAC9BI,YAASQ,gBAAgBK,YAAYd,SAAS;KAC7C,IAAI;OAGPY,kBAAiB;AACfd,MAAIe,gBAAgBhB,UAAU;IAC7B,IAAI"}
1
+ {"version":3,"file":"url.js","names":[],"sources":["../../src/utils/url.ts"],"sourcesContent":["import isEmailValidator from 'validator/lib/isEmail';\nimport isURLValidator from 'validator/lib/isURL';\n\nexport function isURL(url: string): boolean {\n return isURLValidator(url || '', {\n protocols: ['http', 'https', 'git+https', 'git'],\n require_protocol: true,\n require_tld: false,\n });\n}\n\nexport function isEmail(email: string): boolean {\n return isEmailValidator(email || '');\n}\n\nexport function extractFileName(url: string): string {\n return url.substring(url.lastIndexOf('/') + 1);\n}\n\n// Legacy Edge support for file downloads\ninterface NavigatorWithMSSaveBlob extends Navigator {\n msSaveBlob?: (blob: Blob, fileName: string) => boolean;\n}\n\nfunction blobToFile(blob: Blob, fileName: string): File {\n // Create a proper File object by extending the Blob with File properties\n const fileProperties = {\n lastModified: Date.now(),\n name: fileName,\n };\n\n // Use Object.assign to copy properties while maintaining the Blob prototype\n return Object.assign(blob, fileProperties) as File;\n}\n\nexport function downloadFile(fileStream: Blob, fileName: string): void {\n let file: File;\n // File constructor is not supported by Edge\n // https://developer.mozilla.org/en-US/docs/Web/API/File#Browser_compatibility\n const nav = navigator as NavigatorWithMSSaveBlob;\n if (nav.msSaveBlob) {\n // Detect if Edge\n file = blobToFile(new Blob([fileStream], { type: 'application/octet-stream' }), fileName);\n } else {\n file = new File([fileStream], fileName, {\n type: 'application/octet-stream',\n lastModified: Date.now(),\n });\n }\n\n const objectURL = URL.createObjectURL(file);\n const fileLink = document.createElement('a');\n fileLink.href = objectURL;\n fileLink.download = fileName;\n\n // Skip actual download in test environment to avoid JSDOM navigation error\n // Check if we're in a test environment (JSDOM)\n const isTestEnvironment =\n (typeof window !== 'undefined' &&\n window.navigator &&\n window.navigator.userAgent &&\n window.navigator.userAgent.includes('Node.js')) ||\n window.navigator.userAgent.includes('jsdom');\n\n if (!isTestEnvironment) {\n // Without appending to an HTML Element, download dialog does not show up on Firefox\n // https://github.com/verdaccio/ui/issues/119\n document.documentElement.appendChild(fileLink);\n fileLink.click();\n // firefox requires remove the object url\n setTimeout(() => {\n URL.revokeObjectURL(objectURL);\n document.documentElement.removeChild(fileLink);\n }, 150);\n } else {\n // In test environment, just clean up without triggering navigation\n setTimeout(() => {\n URL.revokeObjectURL(objectURL);\n }, 150);\n }\n}\n"],"mappings":";;;;;;;;;;;;AAGA,SAAgB,MAAM,KAAsB;AAC1C,SAAA,GAAA,oBAAA,SAAsB,OAAO,IAAI;EAC/B,WAAW;GAAC;GAAQ;GAAS;GAAa;GAAM;EAChD,kBAAkB;EAClB,aAAa;EACd,CAAC;;AAGJ,SAAgB,QAAQ,OAAwB;AAC9C,SAAA,GAAA,sBAAA,SAAwB,SAAS,GAAG;;AAGtC,SAAgB,gBAAgB,KAAqB;AACnD,QAAO,IAAI,UAAU,IAAI,YAAY,IAAI,GAAG,EAAE;;AAQhD,SAAS,WAAW,MAAY,UAAwB;CAEtD,MAAM,iBAAiB;EACrB,cAAc,KAAK,KAAK;EACxB,MAAM;EACP;AAGD,QAAO,OAAO,OAAO,MAAM,eAAe;;AAG5C,SAAgB,aAAa,YAAkB,UAAwB;CACrE,IAAI;AAIJ,KADY,UACJ,WAEN,QAAO,WAAW,IAAI,KAAK,CAAC,WAAW,EAAE,EAAE,MAAM,4BAA4B,CAAC,EAAE,SAAS;KAEzF,QAAO,IAAI,KAAK,CAAC,WAAW,EAAE,UAAU;EACtC,MAAM;EACN,cAAc,KAAK,KAAK;EACzB,CAAC;CAGJ,MAAM,YAAY,IAAI,gBAAgB,KAAK;CAC3C,MAAM,WAAW,SAAS,cAAc,IAAI;AAC5C,UAAS,OAAO;AAChB,UAAS,WAAW;AAWpB,KAAI,EAND,OAAO,WAAW,eACjB,OAAO,aACP,OAAO,UAAU,aACjB,OAAO,UAAU,UAAU,SAAS,UAAU,IAChD,OAAO,UAAU,UAAU,SAAS,QAAQ,GAEtB;AAGtB,WAAS,gBAAgB,YAAY,SAAS;AAC9C,WAAS,OAAO;AAEhB,mBAAiB;AACf,OAAI,gBAAgB,UAAU;AAC9B,YAAS,gBAAgB,YAAY,SAAS;KAC7C,IAAI;OAGP,kBAAiB;AACf,MAAI,gBAAgB,UAAU;IAC7B,IAAI"}
@@ -1 +1 @@
1
- {"version":3,"file":"url.mjs","names":["isEmailValidator","isURLValidator","isURL","url","protocols","require_protocol","require_tld","isEmail","email","extractFileName","substring","lastIndexOf","NavigatorWithMSSaveBlob","Navigator","msSaveBlob","blob","Blob","fileName","blobToFile","File","fileProperties","lastModified","Date","now","name","Object","assign","downloadFile","fileStream","file","nav","navigator","type","objectURL","URL","createObjectURL","fileLink","document","createElement","href","download","isTestEnvironment","window","userAgent","includes","documentElement","appendChild","click","setTimeout","revokeObjectURL","removeChild"],"sources":["../../src/utils/url.ts"],"sourcesContent":["import isEmailValidator from 'validator/lib/isEmail';\nimport isURLValidator from 'validator/lib/isURL';\n\nexport function isURL(url: string): boolean {\n return isURLValidator(url || '', {\n protocols: ['http', 'https', 'git+https', 'git'],\n require_protocol: true,\n require_tld: false,\n });\n}\n\nexport function isEmail(email: string): boolean {\n return isEmailValidator(email || '');\n}\n\nexport function extractFileName(url: string): string {\n return url.substring(url.lastIndexOf('/') + 1);\n}\n\n// Legacy Edge support for file downloads\ninterface NavigatorWithMSSaveBlob extends Navigator {\n msSaveBlob?: (blob: Blob, fileName: string) => boolean;\n}\n\nfunction blobToFile(blob: Blob, fileName: string): File {\n // Create a proper File object by extending the Blob with File properties\n const fileProperties = {\n lastModified: Date.now(),\n name: fileName,\n };\n\n // Use Object.assign to copy properties while maintaining the Blob prototype\n return Object.assign(blob, fileProperties) as File;\n}\n\nexport function downloadFile(fileStream: Blob, fileName: string): void {\n let file: File;\n // File constructor is not supported by Edge\n // https://developer.mozilla.org/en-US/docs/Web/API/File#Browser_compatibility\n const nav = navigator as NavigatorWithMSSaveBlob;\n if (nav.msSaveBlob) {\n // Detect if Edge\n file = blobToFile(new Blob([fileStream], { type: 'application/octet-stream' }), fileName);\n } else {\n file = new File([fileStream], fileName, {\n type: 'application/octet-stream',\n lastModified: Date.now(),\n });\n }\n\n const objectURL = URL.createObjectURL(file);\n const fileLink = document.createElement('a');\n fileLink.href = objectURL;\n fileLink.download = fileName;\n\n // Skip actual download in test environment to avoid JSDOM navigation error\n // Check if we're in a test environment (JSDOM)\n const isTestEnvironment =\n (typeof window !== 'undefined' &&\n window.navigator &&\n window.navigator.userAgent &&\n window.navigator.userAgent.includes('Node.js')) ||\n window.navigator.userAgent.includes('jsdom');\n\n if (!isTestEnvironment) {\n // Without appending to an HTML Element, download dialog does not show up on Firefox\n // https://github.com/verdaccio/ui/issues/119\n document.documentElement.appendChild(fileLink);\n fileLink.click();\n // firefox requires remove the object url\n setTimeout(() => {\n URL.revokeObjectURL(objectURL);\n document.documentElement.removeChild(fileLink);\n }, 150);\n } else {\n // In test environment, just clean up without triggering navigation\n setTimeout(() => {\n URL.revokeObjectURL(objectURL);\n }, 150);\n }\n}\n"],"mappings":";;;;;;;;;;AAGA,SAAgBE,MAAMC,KAAsB;AAC1C,QAAOF,eAAeE,OAAO,IAAI;EAC/BC,WAAW;GAAC;GAAQ;GAAS;GAAa;GAAM;EAChDC,kBAAkB;EAClBC,aAAa;EACd,CAAC;;AAGJ,SAAgBC,QAAQC,OAAwB;AAC9C,QAAOR,iBAAiBQ,SAAS,GAAG;;AAGtC,SAAgBC,gBAAgBN,KAAqB;AACnD,QAAOA,IAAIO,UAAUP,IAAIQ,YAAY,IAAI,GAAG,EAAE;;AAQhD,SAASO,WAAWH,MAAYE,UAAwB;CAEtD,MAAMG,iBAAiB;EACrBC,cAAcC,KAAKC,KAAK;EACxBC,MAAMP;EACP;AAGD,QAAOQ,OAAOC,OAAOX,MAAMK,eAAe;;AAG5C,SAAgBO,aAAaC,YAAkBX,UAAwB;CACrE,IAAIY;AAIJ,KADYE,UACJjB,WAENe,QAAOX,WAAW,IAAIF,KAAK,CAACY,WAAW,EAAE,EAAEI,MAAM,4BAA4B,CAAC,EAAEf,SAAS;KAEzFY,QAAO,IAAIV,KAAK,CAACS,WAAW,EAAEX,UAAU;EACtCe,MAAM;EACNX,cAAcC,KAAKC,KAAI;EACxB,CAAC;CAGJ,MAAMU,YAAYC,IAAIC,gBAAgBN,KAAK;CAC3C,MAAMO,WAAWC,SAASC,cAAc,IAAI;AAC5CF,UAASG,OAAON;AAChBG,UAASI,WAAWvB;AAWpB,KAAI,EAND,OAAOyB,WAAW,eACjBA,OAAOX,aACPW,OAAOX,UAAUY,aACjBD,OAAOX,UAAUY,UAAUC,SAAS,UAAU,IAChDF,OAAOX,UAAUY,UAAUC,SAAS,QAAQ,GAEtB;AAGtBP,WAASQ,gBAAgBC,YAAYV,SAAS;AAC9CA,WAASW,OAAO;AAEhBC,mBAAiB;AACfd,OAAIe,gBAAgBhB,UAAU;AAC9BI,YAASQ,gBAAgBK,YAAYd,SAAS;KAC7C,IAAI;OAGPY,kBAAiB;AACfd,MAAIe,gBAAgBhB,UAAU;IAC7B,IAAI"}
1
+ {"version":3,"file":"url.mjs","names":[],"sources":["../../src/utils/url.ts"],"sourcesContent":["import isEmailValidator from 'validator/lib/isEmail';\nimport isURLValidator from 'validator/lib/isURL';\n\nexport function isURL(url: string): boolean {\n return isURLValidator(url || '', {\n protocols: ['http', 'https', 'git+https', 'git'],\n require_protocol: true,\n require_tld: false,\n });\n}\n\nexport function isEmail(email: string): boolean {\n return isEmailValidator(email || '');\n}\n\nexport function extractFileName(url: string): string {\n return url.substring(url.lastIndexOf('/') + 1);\n}\n\n// Legacy Edge support for file downloads\ninterface NavigatorWithMSSaveBlob extends Navigator {\n msSaveBlob?: (blob: Blob, fileName: string) => boolean;\n}\n\nfunction blobToFile(blob: Blob, fileName: string): File {\n // Create a proper File object by extending the Blob with File properties\n const fileProperties = {\n lastModified: Date.now(),\n name: fileName,\n };\n\n // Use Object.assign to copy properties while maintaining the Blob prototype\n return Object.assign(blob, fileProperties) as File;\n}\n\nexport function downloadFile(fileStream: Blob, fileName: string): void {\n let file: File;\n // File constructor is not supported by Edge\n // https://developer.mozilla.org/en-US/docs/Web/API/File#Browser_compatibility\n const nav = navigator as NavigatorWithMSSaveBlob;\n if (nav.msSaveBlob) {\n // Detect if Edge\n file = blobToFile(new Blob([fileStream], { type: 'application/octet-stream' }), fileName);\n } else {\n file = new File([fileStream], fileName, {\n type: 'application/octet-stream',\n lastModified: Date.now(),\n });\n }\n\n const objectURL = URL.createObjectURL(file);\n const fileLink = document.createElement('a');\n fileLink.href = objectURL;\n fileLink.download = fileName;\n\n // Skip actual download in test environment to avoid JSDOM navigation error\n // Check if we're in a test environment (JSDOM)\n const isTestEnvironment =\n (typeof window !== 'undefined' &&\n window.navigator &&\n window.navigator.userAgent &&\n window.navigator.userAgent.includes('Node.js')) ||\n window.navigator.userAgent.includes('jsdom');\n\n if (!isTestEnvironment) {\n // Without appending to an HTML Element, download dialog does not show up on Firefox\n // https://github.com/verdaccio/ui/issues/119\n document.documentElement.appendChild(fileLink);\n fileLink.click();\n // firefox requires remove the object url\n setTimeout(() => {\n URL.revokeObjectURL(objectURL);\n document.documentElement.removeChild(fileLink);\n }, 150);\n } else {\n // In test environment, just clean up without triggering navigation\n setTimeout(() => {\n URL.revokeObjectURL(objectURL);\n }, 150);\n }\n}\n"],"mappings":";;;;;;;;;;AAGA,SAAgB,MAAM,KAAsB;AAC1C,QAAO,eAAe,OAAO,IAAI;EAC/B,WAAW;GAAC;GAAQ;GAAS;GAAa;GAAM;EAChD,kBAAkB;EAClB,aAAa;EACd,CAAC;;AAGJ,SAAgB,QAAQ,OAAwB;AAC9C,QAAO,iBAAiB,SAAS,GAAG;;AAGtC,SAAgB,gBAAgB,KAAqB;AACnD,QAAO,IAAI,UAAU,IAAI,YAAY,IAAI,GAAG,EAAE;;AAQhD,SAAS,WAAW,MAAY,UAAwB;CAEtD,MAAM,iBAAiB;EACrB,cAAc,KAAK,KAAK;EACxB,MAAM;EACP;AAGD,QAAO,OAAO,OAAO,MAAM,eAAe;;AAG5C,SAAgB,aAAa,YAAkB,UAAwB;CACrE,IAAI;AAIJ,KADY,UACJ,WAEN,QAAO,WAAW,IAAI,KAAK,CAAC,WAAW,EAAE,EAAE,MAAM,4BAA4B,CAAC,EAAE,SAAS;KAEzF,QAAO,IAAI,KAAK,CAAC,WAAW,EAAE,UAAU;EACtC,MAAM;EACN,cAAc,KAAK,KAAK;EACzB,CAAC;CAGJ,MAAM,YAAY,IAAI,gBAAgB,KAAK;CAC3C,MAAM,WAAW,SAAS,cAAc,IAAI;AAC5C,UAAS,OAAO;AAChB,UAAS,WAAW;AAWpB,KAAI,EAND,OAAO,WAAW,eACjB,OAAO,aACP,OAAO,UAAU,aACjB,OAAO,UAAU,UAAU,SAAS,UAAU,IAChD,OAAO,UAAU,UAAU,SAAS,QAAQ,GAEtB;AAGtB,WAAS,gBAAgB,YAAY,SAAS;AAC9C,WAAS,OAAO;AAEhB,mBAAiB;AACf,OAAI,gBAAgB,UAAU;AAC9B,YAAS,gBAAgB,YAAY,SAAS;KAC7C,IAAI;OAGP,kBAAiB;AACf,MAAI,gBAAgB,UAAU;IAC7B,IAAI"}
@@ -1 +1 @@
1
- {"version":3,"file":"utils.js","names":["dayjs","localizedFormat","relativeTime","i18next","isString","UpLinks","Time","TIMEFORMAT","extend","formatLicense","license","type","undefined","Repository","url","formatRepository","repository","formatDate","lastUpdate","Date","format","formatDateDistance","fromNow","getLastUpdatedPackageTime","uplinks","Object","keys","forEach","computeUplink","upLinkName","status","fetched","getRecentReleases","time","recent","map","version","slice","length","reverse","getAuthorName","authorName","t","toLowerCase","getUplink","packageName","fileSizeSI","a","b","Math","c","p","d","e","log","size","pow","floor","toFixed"],"sources":["../../src/utils/utils.ts"],"sourcesContent":["import dayjs from 'dayjs';\nimport localizedFormat from 'dayjs/plugin/localizedFormat';\nimport relativeTime from 'dayjs/plugin/relativeTime';\nimport i18next from 'i18next';\nimport isString from 'lodash/isString';\n\nimport type { UpLinks } from '@verdaccio/types';\n\nimport type { Time } from '../types/packageMeta';\n\nexport const TIMEFORMAT = 'L LTS';\n\ndayjs.extend(relativeTime);\ndayjs.extend(localizedFormat);\n\n/**\n * Formats license field for webui.\n * @see https://docs.npmjs.com/files/package.json#license\n */\nexport function formatLicense(license: string | { type?: string } | unknown): string | undefined {\n if (isString(license)) {\n return license;\n }\n\n if (\n license &&\n typeof license === 'object' &&\n 'type' in license &&\n typeof license.type === 'string'\n ) {\n return license.type;\n }\n\n return undefined;\n}\n\nexport interface Repository {\n readonly type: string;\n readonly url: string;\n}\n\n/**\n * Formats repository field for webui.\n * @see https://docs.npmjs.com/files/package.json#repository\n */\nexport function formatRepository(repository: string | { url?: string } | unknown): string | null {\n if (isString(repository)) {\n return repository;\n }\n\n if (\n repository &&\n typeof repository === 'object' &&\n 'url' in repository &&\n typeof repository.url === 'string'\n ) {\n return repository.url;\n }\n\n return null;\n}\n\nexport function formatDate(lastUpdate: string | number): string {\n return dayjs(new Date(lastUpdate)).format(TIMEFORMAT);\n}\n\nexport function formatDateDistance(lastUpdate: Date | string | number): string {\n return dayjs(new Date(lastUpdate)).fromNow();\n}\n\n/**\n * For <LastSync /> component\n * @param {array} uplinks\n */\nexport function getLastUpdatedPackageTime(uplinks: UpLinks = {}): string {\n let lastUpdate = 0;\n Object.keys(uplinks).forEach(function computeUplink(upLinkName): void {\n const status = uplinks[upLinkName];\n if (status.fetched > lastUpdate) {\n lastUpdate = status.fetched;\n }\n });\n\n return lastUpdate ? formatDate(lastUpdate) : '';\n}\n\n/**\n * For <LastSync /> component\n * @param {Object} time\n * @returns {Array} last 3 releases\n */\nexport function getRecentReleases(time: Time = {}): Time[] {\n const recent = Object.keys(time).map((version) => ({\n version,\n time: formatDate(time[version]),\n }));\n\n return recent.slice(recent.length - 3, recent.length).reverse();\n}\n\nexport function getAuthorName(authorName?: string): string {\n if (!authorName) {\n return i18next.t('author-unknown');\n }\n\n if (authorName.toLowerCase() === 'anonymous') {\n return i18next.t('author-anonymous');\n }\n\n return authorName;\n}\n\nexport function getUplink(upLinkName: string, packageName: string): string | null {\n // TODO: make this a config like \"uplinks: npmjs: web: https://www.npmjs.com/package/\"\n switch (upLinkName) {\n case 'npmjs':\n return `https://www.npmjs.com/package/${packageName}`;\n }\n return null;\n}\n\nexport function fileSizeSI(\n a: number,\n b?: typeof Math,\n c?: (p: number) => number,\n d?: number,\n e?: number\n): string {\n b = Math;\n c = b.log;\n d = 1e3;\n e = (c(a) / c(d)) | 0;\n const size = a / b.pow(d, e);\n // no decimals for Bytes\n if (e === 0) {\n return Math.floor(size) + ' Bytes';\n } else {\n return size.toFixed(1) + ' ' + 'kMGTPEZY'[--e] + 'B';\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;AAUA,IAAaO,aAAa;AAE1BP,MAAAA,QAAMQ,OAAON,0BAAAA,QAAa;AAC1BF,MAAAA,QAAMQ,OAAOP,6BAAAA,QAAgB;;;;;AAM7B,SAAgBQ,cAAcC,SAAmE;AAC/F,MAAA,GAAA,gBAAA,SAAaA,QAAQ,CACnB,QAAOA;AAGT,KACEA,WACA,OAAOA,YAAY,YACnB,UAAUA,WACV,OAAOA,QAAQC,SAAS,SAExB,QAAOD,QAAQC;;;;;;AAenB,SAAgBI,iBAAiBC,YAAgE;AAC/F,MAAA,GAAA,gBAAA,SAAaA,WAAW,CACtB,QAAOA;AAGT,KACEA,cACA,OAAOA,eAAe,YACtB,SAASA,cACT,OAAOA,WAAWF,QAAQ,SAE1B,QAAOE,WAAWF;AAGpB,QAAO;;AAGT,SAAgBG,WAAWC,YAAqC;AAC9D,SAAA,GAAA,MAAA,SAAa,IAAIC,KAAKD,WAAW,CAAC,CAACE,OAAOb,WAAW;;AAGvD,SAAgBc,mBAAmBH,YAA4C;AAC7E,SAAA,GAAA,MAAA,SAAa,IAAIC,KAAKD,WAAW,CAAC,CAACI,SAAS;;;;;;AAO9C,SAAgBC,0BAA0BC,UAAmB,EAAE,EAAU;CACvE,IAAIN,aAAa;AACjBO,QAAOC,KAAKF,QAAQ,CAACG,QAAQ,SAASC,cAAcC,YAAkB;EACpE,MAAMC,SAASN,QAAQK;AACvB,MAAIC,OAAOC,UAAUb,WACnBA,cAAaY,OAAOC;GAEtB;AAEF,QAAOb,aAAaD,WAAWC,WAAW,GAAG;;;;;;;AAQ/C,SAAgBc,kBAAkBC,OAAa,EAAE,EAAU;CACzD,MAAMC,SAAST,OAAOC,KAAKO,KAAK,CAACE,KAAKC,aAAa;EACjDA;EACAH,MAAMhB,WAAWgB,KAAKG,SAAQ;EAC/B,EAAE;AAEH,QAAOF,OAAOG,MAAMH,OAAOI,SAAS,GAAGJ,OAAOI,OAAO,CAACC,SAAS;;AAGjE,SAAgBC,cAAcC,YAA6B;AACzD,KAAI,CAACA,WACH,QAAOtC,QAAAA,QAAQuC,EAAE,iBAAiB;AAGpC,KAAID,WAAWE,aAAa,KAAK,YAC/B,QAAOxC,QAAAA,QAAQuC,EAAE,mBAAmB;AAGtC,QAAOD;;AAGT,SAAgBG,UAAUf,YAAoBgB,aAAoC;AAEhF,SAAQhB,YAAR;EACE,KAAK,QACH,QAAO,iCAAiCgB;;AAE5C,QAAO;;AAGT,SAAgBC,WACdC,GACAC,GACAE,GACAE,GACAC,GACQ;AACRL,KAAIC;AACJC,KAAIF,EAAEM;AACNF,KAAI;AACJC,KAAKH,EAAEH,EAAE,GAAGG,EAAEE,EAAE,GAAI;CACpB,MAAMG,OAAOR,IAAIC,EAAEQ,IAAIJ,GAAGC,EAAE;AAE5B,KAAIA,MAAM,EACR,QAAOJ,KAAKQ,MAAMF,KAAK,GAAG;KAE1B,QAAOA,KAAKG,QAAQ,EAAE,GAAG,MAAM,WAAW,EAAEL,KAAK"}
1
+ {"version":3,"file":"utils.js","names":[],"sources":["../../src/utils/utils.ts"],"sourcesContent":["import dayjs from 'dayjs';\nimport localizedFormat from 'dayjs/plugin/localizedFormat';\nimport relativeTime from 'dayjs/plugin/relativeTime';\nimport i18next from 'i18next';\nimport isString from 'lodash/isString';\n\nimport type { UpLinks } from '@verdaccio/types';\n\nimport type { Time } from '../types/packageMeta';\n\nexport const TIMEFORMAT = 'L LTS';\n\ndayjs.extend(relativeTime);\ndayjs.extend(localizedFormat);\n\n/**\n * Formats license field for webui.\n * @see https://docs.npmjs.com/files/package.json#license\n */\nexport function formatLicense(license: string | { type?: string } | unknown): string | undefined {\n if (isString(license)) {\n return license;\n }\n\n if (\n license &&\n typeof license === 'object' &&\n 'type' in license &&\n typeof license.type === 'string'\n ) {\n return license.type;\n }\n\n return undefined;\n}\n\nexport interface Repository {\n readonly type: string;\n readonly url: string;\n}\n\n/**\n * Formats repository field for webui.\n * @see https://docs.npmjs.com/files/package.json#repository\n */\nexport function formatRepository(repository: string | { url?: string } | unknown): string | null {\n if (isString(repository)) {\n return repository;\n }\n\n if (\n repository &&\n typeof repository === 'object' &&\n 'url' in repository &&\n typeof repository.url === 'string'\n ) {\n return repository.url;\n }\n\n return null;\n}\n\nexport function formatDate(lastUpdate: string | number): string {\n return dayjs(new Date(lastUpdate)).format(TIMEFORMAT);\n}\n\nexport function formatDateDistance(lastUpdate: Date | string | number): string {\n return dayjs(new Date(lastUpdate)).fromNow();\n}\n\n/**\n * For <LastSync /> component\n * @param {array} uplinks\n */\nexport function getLastUpdatedPackageTime(uplinks: UpLinks = {}): string {\n let lastUpdate = 0;\n Object.keys(uplinks).forEach(function computeUplink(upLinkName): void {\n const status = uplinks[upLinkName];\n if (status.fetched > lastUpdate) {\n lastUpdate = status.fetched;\n }\n });\n\n return lastUpdate ? formatDate(lastUpdate) : '';\n}\n\n/**\n * For <LastSync /> component\n * @param {Object} time\n * @returns {Array} last 3 releases\n */\nexport function getRecentReleases(time: Time = {}): Time[] {\n const recent = Object.keys(time).map((version) => ({\n version,\n time: formatDate(time[version]),\n }));\n\n return recent.slice(recent.length - 3, recent.length).reverse();\n}\n\nexport function getAuthorName(authorName?: string): string {\n if (!authorName) {\n return i18next.t('author-unknown');\n }\n\n if (authorName.toLowerCase() === 'anonymous') {\n return i18next.t('author-anonymous');\n }\n\n return authorName;\n}\n\nexport function getUplink(upLinkName: string, packageName: string): string | null {\n // TODO: make this a config like \"uplinks: npmjs: web: https://www.npmjs.com/package/\"\n switch (upLinkName) {\n case 'npmjs':\n return `https://www.npmjs.com/package/${packageName}`;\n }\n return null;\n}\n\nexport function fileSizeSI(\n a: number,\n b?: typeof Math,\n c?: (p: number) => number,\n d?: number,\n e?: number\n): string {\n b = Math;\n c = b.log;\n d = 1e3;\n e = (c(a) / c(d)) | 0;\n const size = a / b.pow(d, e);\n // no decimals for Bytes\n if (e === 0) {\n return Math.floor(size) + ' Bytes';\n } else {\n return size.toFixed(1) + ' ' + 'kMGTPEZY'[--e] + 'B';\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;AAUA,IAAa,aAAa;AAE1B,MAAA,QAAM,OAAO,0BAAA,QAAa;AAC1B,MAAA,QAAM,OAAO,6BAAA,QAAgB;;;;;AAM7B,SAAgB,cAAc,SAAmE;AAC/F,MAAA,GAAA,gBAAA,SAAa,QAAQ,CACnB,QAAO;AAGT,KACE,WACA,OAAO,YAAY,YACnB,UAAU,WACV,OAAO,QAAQ,SAAS,SAExB,QAAO,QAAQ;;;;;;AAenB,SAAgB,iBAAiB,YAAgE;AAC/F,MAAA,GAAA,gBAAA,SAAa,WAAW,CACtB,QAAO;AAGT,KACE,cACA,OAAO,eAAe,YACtB,SAAS,cACT,OAAO,WAAW,QAAQ,SAE1B,QAAO,WAAW;AAGpB,QAAO;;AAGT,SAAgB,WAAW,YAAqC;AAC9D,SAAA,GAAA,MAAA,SAAa,IAAI,KAAK,WAAW,CAAC,CAAC,OAAO,WAAW;;AAGvD,SAAgB,mBAAmB,YAA4C;AAC7E,SAAA,GAAA,MAAA,SAAa,IAAI,KAAK,WAAW,CAAC,CAAC,SAAS;;;;;;AAO9C,SAAgB,0BAA0B,UAAmB,EAAE,EAAU;CACvE,IAAI,aAAa;AACjB,QAAO,KAAK,QAAQ,CAAC,QAAQ,SAAS,cAAc,YAAkB;EACpE,MAAM,SAAS,QAAQ;AACvB,MAAI,OAAO,UAAU,WACnB,cAAa,OAAO;GAEtB;AAEF,QAAO,aAAa,WAAW,WAAW,GAAG;;;;;;;AAQ/C,SAAgB,kBAAkB,OAAa,EAAE,EAAU;CACzD,MAAM,SAAS,OAAO,KAAK,KAAK,CAAC,KAAK,aAAa;EACjD;EACA,MAAM,WAAW,KAAK,SAAS;EAChC,EAAE;AAEH,QAAO,OAAO,MAAM,OAAO,SAAS,GAAG,OAAO,OAAO,CAAC,SAAS;;AAGjE,SAAgB,cAAc,YAA6B;AACzD,KAAI,CAAC,WACH,QAAO,QAAA,QAAQ,EAAE,iBAAiB;AAGpC,KAAI,WAAW,aAAa,KAAK,YAC/B,QAAO,QAAA,QAAQ,EAAE,mBAAmB;AAGtC,QAAO;;AAGT,SAAgB,UAAU,YAAoB,aAAoC;AAEhF,SAAQ,YAAR;EACE,KAAK,QACH,QAAO,iCAAiC;;AAE5C,QAAO;;AAGT,SAAgB,WACd,GACA,GACA,GACA,GACA,GACQ;AACR,KAAI;AACJ,KAAI,EAAE;AACN,KAAI;AACJ,KAAK,EAAE,EAAE,GAAG,EAAE,EAAE,GAAI;CACpB,MAAM,OAAO,IAAI,EAAE,IAAI,GAAG,EAAE;AAE5B,KAAI,MAAM,EACR,QAAO,KAAK,MAAM,KAAK,GAAG;KAE1B,QAAO,KAAK,QAAQ,EAAE,GAAG,MAAM,WAAW,EAAE,KAAK"}
@@ -1 +1 @@
1
- {"version":3,"file":"utils.mjs","names":["dayjs","localizedFormat","relativeTime","i18next","isString","UpLinks","Time","TIMEFORMAT","extend","formatLicense","license","type","undefined","Repository","url","formatRepository","repository","formatDate","lastUpdate","Date","format","formatDateDistance","fromNow","getLastUpdatedPackageTime","uplinks","Object","keys","forEach","computeUplink","upLinkName","status","fetched","getRecentReleases","time","recent","map","version","slice","length","reverse","getAuthorName","authorName","t","toLowerCase","getUplink","packageName","fileSizeSI","a","b","Math","c","p","d","e","log","size","pow","floor","toFixed"],"sources":["../../src/utils/utils.ts"],"sourcesContent":["import dayjs from 'dayjs';\nimport localizedFormat from 'dayjs/plugin/localizedFormat';\nimport relativeTime from 'dayjs/plugin/relativeTime';\nimport i18next from 'i18next';\nimport isString from 'lodash/isString';\n\nimport type { UpLinks } from '@verdaccio/types';\n\nimport type { Time } from '../types/packageMeta';\n\nexport const TIMEFORMAT = 'L LTS';\n\ndayjs.extend(relativeTime);\ndayjs.extend(localizedFormat);\n\n/**\n * Formats license field for webui.\n * @see https://docs.npmjs.com/files/package.json#license\n */\nexport function formatLicense(license: string | { type?: string } | unknown): string | undefined {\n if (isString(license)) {\n return license;\n }\n\n if (\n license &&\n typeof license === 'object' &&\n 'type' in license &&\n typeof license.type === 'string'\n ) {\n return license.type;\n }\n\n return undefined;\n}\n\nexport interface Repository {\n readonly type: string;\n readonly url: string;\n}\n\n/**\n * Formats repository field for webui.\n * @see https://docs.npmjs.com/files/package.json#repository\n */\nexport function formatRepository(repository: string | { url?: string } | unknown): string | null {\n if (isString(repository)) {\n return repository;\n }\n\n if (\n repository &&\n typeof repository === 'object' &&\n 'url' in repository &&\n typeof repository.url === 'string'\n ) {\n return repository.url;\n }\n\n return null;\n}\n\nexport function formatDate(lastUpdate: string | number): string {\n return dayjs(new Date(lastUpdate)).format(TIMEFORMAT);\n}\n\nexport function formatDateDistance(lastUpdate: Date | string | number): string {\n return dayjs(new Date(lastUpdate)).fromNow();\n}\n\n/**\n * For <LastSync /> component\n * @param {array} uplinks\n */\nexport function getLastUpdatedPackageTime(uplinks: UpLinks = {}): string {\n let lastUpdate = 0;\n Object.keys(uplinks).forEach(function computeUplink(upLinkName): void {\n const status = uplinks[upLinkName];\n if (status.fetched > lastUpdate) {\n lastUpdate = status.fetched;\n }\n });\n\n return lastUpdate ? formatDate(lastUpdate) : '';\n}\n\n/**\n * For <LastSync /> component\n * @param {Object} time\n * @returns {Array} last 3 releases\n */\nexport function getRecentReleases(time: Time = {}): Time[] {\n const recent = Object.keys(time).map((version) => ({\n version,\n time: formatDate(time[version]),\n }));\n\n return recent.slice(recent.length - 3, recent.length).reverse();\n}\n\nexport function getAuthorName(authorName?: string): string {\n if (!authorName) {\n return i18next.t('author-unknown');\n }\n\n if (authorName.toLowerCase() === 'anonymous') {\n return i18next.t('author-anonymous');\n }\n\n return authorName;\n}\n\nexport function getUplink(upLinkName: string, packageName: string): string | null {\n // TODO: make this a config like \"uplinks: npmjs: web: https://www.npmjs.com/package/\"\n switch (upLinkName) {\n case 'npmjs':\n return `https://www.npmjs.com/package/${packageName}`;\n }\n return null;\n}\n\nexport function fileSizeSI(\n a: number,\n b?: typeof Math,\n c?: (p: number) => number,\n d?: number,\n e?: number\n): string {\n b = Math;\n c = b.log;\n d = 1e3;\n e = (c(a) / c(d)) | 0;\n const size = a / b.pow(d, e);\n // no decimals for Bytes\n if (e === 0) {\n return Math.floor(size) + ' Bytes';\n } else {\n return size.toFixed(1) + ' ' + 'kMGTPEZY'[--e] + 'B';\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;AAUA,IAAaO,aAAa;AAE1BP,MAAMQ,OAAON,aAAa;AAC1BF,MAAMQ,OAAOP,gBAAgB;;;;;AAM7B,SAAgBQ,cAAcC,SAAmE;AAC/F,KAAIN,SAASM,QAAQ,CACnB,QAAOA;AAGT,KACEA,WACA,OAAOA,YAAY,YACnB,UAAUA,WACV,OAAOA,QAAQC,SAAS,SAExB,QAAOD,QAAQC;;;;;;AAenB,SAAgBI,iBAAiBC,YAAgE;AAC/F,KAAIZ,SAASY,WAAW,CACtB,QAAOA;AAGT,KACEA,cACA,OAAOA,eAAe,YACtB,SAASA,cACT,OAAOA,WAAWF,QAAQ,SAE1B,QAAOE,WAAWF;AAGpB,QAAO;;AAGT,SAAgBG,WAAWC,YAAqC;AAC9D,QAAOlB,MAAM,IAAImB,KAAKD,WAAW,CAAC,CAACE,OAAOb,WAAW;;AAGvD,SAAgBc,mBAAmBH,YAA4C;AAC7E,QAAOlB,MAAM,IAAImB,KAAKD,WAAW,CAAC,CAACI,SAAS;;;;;;AAO9C,SAAgBC,0BAA0BC,UAAmB,EAAE,EAAU;CACvE,IAAIN,aAAa;AACjBO,QAAOC,KAAKF,QAAQ,CAACG,QAAQ,SAASC,cAAcC,YAAkB;EACpE,MAAMC,SAASN,QAAQK;AACvB,MAAIC,OAAOC,UAAUb,WACnBA,cAAaY,OAAOC;GAEtB;AAEF,QAAOb,aAAaD,WAAWC,WAAW,GAAG;;;;;;;AAQ/C,SAAgBc,kBAAkBC,OAAa,EAAE,EAAU;CACzD,MAAMC,SAAST,OAAOC,KAAKO,KAAK,CAACE,KAAKC,aAAa;EACjDA;EACAH,MAAMhB,WAAWgB,KAAKG,SAAQ;EAC/B,EAAE;AAEH,QAAOF,OAAOG,MAAMH,OAAOI,SAAS,GAAGJ,OAAOI,OAAO,CAACC,SAAS;;AAGjE,SAAgBC,cAAcC,YAA6B;AACzD,KAAI,CAACA,WACH,QAAOtC,QAAQuC,EAAE,iBAAiB;AAGpC,KAAID,WAAWE,aAAa,KAAK,YAC/B,QAAOxC,QAAQuC,EAAE,mBAAmB;AAGtC,QAAOD;;AAGT,SAAgBG,UAAUf,YAAoBgB,aAAoC;AAEhF,SAAQhB,YAAR;EACE,KAAK,QACH,QAAO,iCAAiCgB;;AAE5C,QAAO;;AAGT,SAAgBC,WACdC,GACAC,GACAE,GACAE,GACAC,GACQ;AACRL,KAAIC;AACJC,KAAIF,EAAEM;AACNF,KAAI;AACJC,KAAKH,EAAEH,EAAE,GAAGG,EAAEE,EAAE,GAAI;CACpB,MAAMG,OAAOR,IAAIC,EAAEQ,IAAIJ,GAAGC,EAAE;AAE5B,KAAIA,MAAM,EACR,QAAOJ,KAAKQ,MAAMF,KAAK,GAAG;KAE1B,QAAOA,KAAKG,QAAQ,EAAE,GAAG,MAAM,WAAW,EAAEL,KAAK"}
1
+ {"version":3,"file":"utils.mjs","names":[],"sources":["../../src/utils/utils.ts"],"sourcesContent":["import dayjs from 'dayjs';\nimport localizedFormat from 'dayjs/plugin/localizedFormat';\nimport relativeTime from 'dayjs/plugin/relativeTime';\nimport i18next from 'i18next';\nimport isString from 'lodash/isString';\n\nimport type { UpLinks } from '@verdaccio/types';\n\nimport type { Time } from '../types/packageMeta';\n\nexport const TIMEFORMAT = 'L LTS';\n\ndayjs.extend(relativeTime);\ndayjs.extend(localizedFormat);\n\n/**\n * Formats license field for webui.\n * @see https://docs.npmjs.com/files/package.json#license\n */\nexport function formatLicense(license: string | { type?: string } | unknown): string | undefined {\n if (isString(license)) {\n return license;\n }\n\n if (\n license &&\n typeof license === 'object' &&\n 'type' in license &&\n typeof license.type === 'string'\n ) {\n return license.type;\n }\n\n return undefined;\n}\n\nexport interface Repository {\n readonly type: string;\n readonly url: string;\n}\n\n/**\n * Formats repository field for webui.\n * @see https://docs.npmjs.com/files/package.json#repository\n */\nexport function formatRepository(repository: string | { url?: string } | unknown): string | null {\n if (isString(repository)) {\n return repository;\n }\n\n if (\n repository &&\n typeof repository === 'object' &&\n 'url' in repository &&\n typeof repository.url === 'string'\n ) {\n return repository.url;\n }\n\n return null;\n}\n\nexport function formatDate(lastUpdate: string | number): string {\n return dayjs(new Date(lastUpdate)).format(TIMEFORMAT);\n}\n\nexport function formatDateDistance(lastUpdate: Date | string | number): string {\n return dayjs(new Date(lastUpdate)).fromNow();\n}\n\n/**\n * For <LastSync /> component\n * @param {array} uplinks\n */\nexport function getLastUpdatedPackageTime(uplinks: UpLinks = {}): string {\n let lastUpdate = 0;\n Object.keys(uplinks).forEach(function computeUplink(upLinkName): void {\n const status = uplinks[upLinkName];\n if (status.fetched > lastUpdate) {\n lastUpdate = status.fetched;\n }\n });\n\n return lastUpdate ? formatDate(lastUpdate) : '';\n}\n\n/**\n * For <LastSync /> component\n * @param {Object} time\n * @returns {Array} last 3 releases\n */\nexport function getRecentReleases(time: Time = {}): Time[] {\n const recent = Object.keys(time).map((version) => ({\n version,\n time: formatDate(time[version]),\n }));\n\n return recent.slice(recent.length - 3, recent.length).reverse();\n}\n\nexport function getAuthorName(authorName?: string): string {\n if (!authorName) {\n return i18next.t('author-unknown');\n }\n\n if (authorName.toLowerCase() === 'anonymous') {\n return i18next.t('author-anonymous');\n }\n\n return authorName;\n}\n\nexport function getUplink(upLinkName: string, packageName: string): string | null {\n // TODO: make this a config like \"uplinks: npmjs: web: https://www.npmjs.com/package/\"\n switch (upLinkName) {\n case 'npmjs':\n return `https://www.npmjs.com/package/${packageName}`;\n }\n return null;\n}\n\nexport function fileSizeSI(\n a: number,\n b?: typeof Math,\n c?: (p: number) => number,\n d?: number,\n e?: number\n): string {\n b = Math;\n c = b.log;\n d = 1e3;\n e = (c(a) / c(d)) | 0;\n const size = a / b.pow(d, e);\n // no decimals for Bytes\n if (e === 0) {\n return Math.floor(size) + ' Bytes';\n } else {\n return size.toFixed(1) + ' ' + 'kMGTPEZY'[--e] + 'B';\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;AAUA,IAAa,aAAa;AAE1B,MAAM,OAAO,aAAa;AAC1B,MAAM,OAAO,gBAAgB;;;;;AAM7B,SAAgB,cAAc,SAAmE;AAC/F,KAAI,SAAS,QAAQ,CACnB,QAAO;AAGT,KACE,WACA,OAAO,YAAY,YACnB,UAAU,WACV,OAAO,QAAQ,SAAS,SAExB,QAAO,QAAQ;;;;;;AAenB,SAAgB,iBAAiB,YAAgE;AAC/F,KAAI,SAAS,WAAW,CACtB,QAAO;AAGT,KACE,cACA,OAAO,eAAe,YACtB,SAAS,cACT,OAAO,WAAW,QAAQ,SAE1B,QAAO,WAAW;AAGpB,QAAO;;AAGT,SAAgB,WAAW,YAAqC;AAC9D,QAAO,MAAM,IAAI,KAAK,WAAW,CAAC,CAAC,OAAO,WAAW;;AAGvD,SAAgB,mBAAmB,YAA4C;AAC7E,QAAO,MAAM,IAAI,KAAK,WAAW,CAAC,CAAC,SAAS;;;;;;AAO9C,SAAgB,0BAA0B,UAAmB,EAAE,EAAU;CACvE,IAAI,aAAa;AACjB,QAAO,KAAK,QAAQ,CAAC,QAAQ,SAAS,cAAc,YAAkB;EACpE,MAAM,SAAS,QAAQ;AACvB,MAAI,OAAO,UAAU,WACnB,cAAa,OAAO;GAEtB;AAEF,QAAO,aAAa,WAAW,WAAW,GAAG;;;;;;;AAQ/C,SAAgB,kBAAkB,OAAa,EAAE,EAAU;CACzD,MAAM,SAAS,OAAO,KAAK,KAAK,CAAC,KAAK,aAAa;EACjD;EACA,MAAM,WAAW,KAAK,SAAS;EAChC,EAAE;AAEH,QAAO,OAAO,MAAM,OAAO,SAAS,GAAG,OAAO,OAAO,CAAC,SAAS;;AAGjE,SAAgB,cAAc,YAA6B;AACzD,KAAI,CAAC,WACH,QAAO,QAAQ,EAAE,iBAAiB;AAGpC,KAAI,WAAW,aAAa,KAAK,YAC/B,QAAO,QAAQ,EAAE,mBAAmB;AAGtC,QAAO;;AAGT,SAAgB,UAAU,YAAoB,aAAoC;AAEhF,SAAQ,YAAR;EACE,KAAK,QACH,QAAO,iCAAiC;;AAE5C,QAAO;;AAGT,SAAgB,WACd,GACA,GACA,GACA,GACA,GACQ;AACR,KAAI;AACJ,KAAI,EAAE;AACN,KAAI;AACJ,KAAK,EAAE,EAAE,GAAG,EAAE,EAAE,GAAI;CACpB,MAAM,OAAO,IAAI,EAAE,IAAI,GAAG,EAAE;AAE5B,KAAI,MAAM,EACR,QAAO,KAAK,MAAM,KAAK,GAAG;KAE1B,QAAO,KAAK,QAAQ,EAAE,GAAG,MAAM,WAAW,EAAE,KAAK"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@verdaccio/ui-components",
3
- "version": "5.0.0-next-9.4",
3
+ "version": "5.0.0-next-9.6",
4
4
  "description": "Verdaccio UI Components",
5
5
  "author": "Juan Picado <juanpicado19@gmail.com>",
6
6
  "license": "MIT",
@@ -22,48 +22,46 @@
22
22
  "./build/*": "./build/*"
23
23
  },
24
24
  "dependencies": {
25
- "@emotion/react": "11.11.4",
26
- "@emotion/styled": "11.11.5",
25
+ "@emotion/react": "11.14.0",
26
+ "@emotion/styled": "11.14.1",
27
27
  "@hookform/resolvers": "5.2.2",
28
28
  "@microlink/react-json-view": "1.31.12",
29
- "@mui/icons-material": "7.3.4",
30
- "@mui/material": "7.3.7",
29
+ "@mui/icons-material": "7.3.9",
30
+ "@mui/material": "7.3.9",
31
31
  "@verdaccio/ui-i18n": "10.0.0-next-9.2",
32
- "country-flag-icons": "1.5.21",
33
- "dayjs": "1.11.18",
34
- "dompurify": "3.3.1",
32
+ "country-flag-icons": "1.6.15",
33
+ "dayjs": "1.11.20",
34
+ "dompurify": "3.3.3",
35
35
  "highlight.js": "11.11.1",
36
- "i18next": "25.8.0",
36
+ "i18next": "25.8.18",
37
37
  "js-base64": "3.7.8",
38
38
  "localstorage-memory": "1.0.3",
39
39
  "lodash": "4.17.23",
40
- "marked": "17.0.1",
40
+ "marked": "17.0.4",
41
41
  "marked-highlight": "2.2.3",
42
42
  "normalize.css": "8.0.1",
43
- "react": "19.2.3",
44
- "react-dom": "19.2.3",
45
- "react-hook-form": "7.71.1",
46
- "react-i18next": "16.5.4",
43
+ "react": "19.2.4",
44
+ "react-dom": "19.2.4",
45
+ "react-hook-form": "7.71.2",
46
+ "react-i18next": "16.5.8",
47
47
  "react-markdown": "10.1.0",
48
- "react-router": "7.13.0",
48
+ "react-router": "7.13.1",
49
49
  "react-virtualized": "9.22.6",
50
50
  "semver": "7.7.4",
51
- "swr": "2.3.8",
51
+ "swr": "2.4.1",
52
52
  "validator": "13.15.26",
53
53
  "yup": "1.7.1"
54
54
  },
55
55
  "devDependencies": {
56
- "@babel/core": "7.28.4",
57
- "@emotion/babel-plugin": "11.13.5",
58
56
  "@storybook/addon-docs": "10.2.17",
59
57
  "@storybook/addon-links": "10.2.17",
60
58
  "@storybook/react-vite": "10.2.17",
61
59
  "@testing-library/dom": "10.4.1",
62
- "@testing-library/jest-dom": "6.8.0",
63
- "@testing-library/react": "16.3.0",
60
+ "@testing-library/jest-dom": "6.9.1",
61
+ "@testing-library/react": "16.3.2",
64
62
  "@types/node": "24.10.13",
65
- "@verdaccio/types": "14.0.0-next-9.2",
66
- "@vitejs/plugin-react": "5.0.4",
63
+ "@verdaccio/types": "14.0.0-next-9.4",
64
+ "@vitejs/plugin-react": "6.0.1",
67
65
  "vite": "^8.0.0",
68
66
  "eslint-plugin-storybook": "10.2.17",
69
67
  "eslint-plugin-verdaccio": "10.0.0",