@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":"ChangePassword.mjs","names":["yupResolver","Button","Typography","React","useCallback","useEffect","useForm","useTranslation","useNavigate","useDataMutation","LoginDialogFormError","getConfiguration","SecurityLayout","normalizeAuthError","stripTrailingSlash","Route","APIRoute","ChangePasswordFormValues","changePasswordSchema","MessageType","SecurityContainer","SecurityForm","SecurityTextField","ChangePassword","FC","t","navigate","configuration","basePath","base","changePasswordEnabled","flags","changePassword","form","mode","defaultValues","username","oldPassword","newPassword","confirmPassword","resolver","setError","handleSubmit","register","formState","isValid","errors","trigger","ok","RESET_PASSWORD","handleChangePassword","body","password","old","new","err","onSubmit","data","SUCCESS","type","message","root","mt"],"sources":["../../../src/sections/Security/ChangePassword.tsx"],"sourcesContent":["import { yupResolver } from '@hookform/resolvers/yup';\nimport { Button, Typography } from '@mui/material';\nimport React, { useCallback, useEffect } from 'react';\nimport { useForm } from 'react-hook-form';\nimport { useTranslation } from 'react-i18next';\nimport { useNavigate } from 'react-router';\n\nimport { useDataMutation } from '../../api/use-data-mutation';\nimport LoginDialogFormError from '../../components/LoginDialog/LoginDialogFormError';\nimport { getConfiguration } from '../../configuration';\nimport SecurityLayout from '../../layouts/Security/Dialog';\nimport { normalizeAuthError } from '../../providers/AuthProvider/utils';\nimport { stripTrailingSlash } from '../../store/utils';\nimport { Route } from '../../utils';\nimport { APIRoute } from '../../utils/routes';\nimport type { ChangePasswordFormValues } from '../../utils/schemas';\nimport { changePasswordSchema } from '../../utils/schemas';\nimport { MessageType } from './Success';\nimport { SecurityContainer, SecurityForm, SecurityTextField } from './styles';\n\nconst ChangePassword: React.FC = () => {\n const { t } = useTranslation();\n const navigate = useNavigate();\n const configuration = getConfiguration();\n const basePath = stripTrailingSlash(configuration.base);\n const changePasswordEnabled = configuration?.flags?.changePassword;\n\n const form = useForm<ChangePasswordFormValues>({\n mode: 'onChange',\n defaultValues: {\n username: '',\n oldPassword: '',\n newPassword: '',\n confirmPassword: '',\n },\n resolver: yupResolver(changePasswordSchema),\n });\n\n const {\n setError,\n handleSubmit,\n register,\n formState: { isValid, errors },\n } = form;\n\n const { trigger } = useDataMutation<{ ok: string }>(basePath, APIRoute.RESET_PASSWORD, 'PUT');\n\n const handleChangePassword = useCallback(\n async (body: { password: { old: string; new: string } }) => {\n try {\n await trigger(body);\n } catch (err) {\n throw normalizeAuthError(err);\n }\n },\n [trigger]\n );\n\n const onSubmit = useCallback(\n async (data: ChangePasswordFormValues) => {\n try {\n await handleChangePassword({\n password: {\n old: data.oldPassword,\n new: data.newPassword,\n },\n });\n navigate(`${Route.SUCCESS}?messageType=${MessageType.ChangePassword}`);\n } catch {\n setError('root', {\n type: 'server',\n message: 'Failed to change password',\n });\n }\n },\n [handleChangePassword, setError, navigate]\n );\n\n useEffect(() => {\n if (!changePasswordEnabled) {\n navigate('/');\n }\n }, [changePasswordEnabled, navigate]);\n\n return changePasswordEnabled ? (\n <SecurityLayout>\n <SecurityContainer>\n <SecurityForm component=\"form\" onSubmit={handleSubmit(onSubmit)}>\n <Typography align=\"center\" component=\"h1\" gutterBottom={true} variant=\"h4\">\n {t('security.changePassword.title')}\n </Typography>\n <SecurityTextField\n error={!!errors.username}\n helperText={errors.username?.message}\n label={t('security.changePassword.username')}\n {...register('username')}\n required={true}\n />\n <SecurityTextField\n error={!!errors.oldPassword}\n helperText={errors.oldPassword?.message}\n label={t('security.changePassword.oldPassword')}\n {...register('oldPassword')}\n required={true}\n type=\"password\"\n />\n <SecurityTextField\n error={!!errors.newPassword}\n helperText={errors.newPassword?.message}\n label={t('security.changePassword.newPassword')}\n {...register('newPassword')}\n required={true}\n type=\"password\"\n />\n <SecurityTextField\n error={!!errors.confirmPassword}\n helperText={errors.confirmPassword?.message}\n label={t('security.changePassword.confirmPassword')}\n {...register('confirmPassword')}\n required={true}\n type=\"password\"\n />\n {errors.root && <LoginDialogFormError error={errors.root} />}\n <Button\n color=\"primary\"\n disabled={!isValid}\n fullWidth={true}\n sx={{ mt: 2 }}\n type=\"submit\"\n variant=\"contained\"\n >\n {t('security.changePassword.submit')}\n </Button>\n </SecurityForm>\n </SecurityContainer>\n </SecurityLayout>\n ) : null;\n};\n\nexport default ChangePassword;\n"],"mappings":";;;;;;;;;;;;;;;;;;;AAoBA,IAAMuB,uBAAiC;CACrC,MAAM,EAAEE,MAAMlB,gBAAgB;CAC9B,MAAMmB,WAAWlB,aAAa;CAC9B,MAAMmB,gBAAgBhB,kBAAkB;CACxC,MAAMiB,WAAWd,mBAAmBa,cAAcE,KAAK;CACvD,MAAMC,wBAAwBH,eAAeI,OAAOC;CAapD,MAAM,EACJS,UACAC,cACAC,UACAC,WAAW,EAAEC,SAASC,aAfXxC,QAAkC;EAC7C4B,MAAM;EACNC,eAAe;GACbC,UAAU;GACVC,aAAa;GACbC,aAAa;GACbC,iBAAiB;GAClB;EACDC,UAAUxC,YAAYkB,qBAAoB;EAC3C,CAAC;CASF,MAAM,EAAE6B,YAAYtC,gBAAgCmB,UAAUZ,SAASiC,gBAAgB,MAAM;CAE7F,MAAMC,uBAAuB9C,YAC3B,OAAO+C,SAAqD;AAC1D,MAAI;AACF,SAAMJ,QAAQI,KAAK;WACZI,KAAK;AACZ,SAAM1C,mBAAmB0C,IAAI;;IAGjC,CAACR,QACH,CAAC;CAED,MAAMS,WAAWpD,YACf,OAAOqD,SAAmC;AACxC,MAAI;AACF,SAAMP,qBAAqB,EACzBE,UAAU;IACRC,KAAKI,KAAKpB;IACViB,KAAKG,KAAKnB;IACZ,EACD,CAAC;AACFZ,YAAS,GAAGX,QAAM2C,QAAO,eAAgBvC,YAAYI,iBAAiB;UAChE;AACNkB,YAAS,QAAQ;IACfkB,MAAM;IACNC,SAAS;IACV,CAAC;;IAGN;EAACV;EAAsBT;EAAUf;EACnC,CAAC;AAEDrB,iBAAgB;AACd,MAAI,CAACyB,sBACHJ,UAAS,IAAI;IAEd,CAACI,uBAAuBJ,SAAS,CAAC;AAErC,QAAOI,wBACL,oBAAC,gBAAD,EAAA,UACE,oBAAC,mBAAD,EAAA,UACE,qBAAC,cAAD;EAAc,WAAU;EAAO,UAAUY,aAAac,SAAS;YAA/D;GACE,oBAAC,YAAD;IAAY,OAAM;IAAS,WAAU;IAAK,cAAc;IAAM,SAAQ;cACnE/B,EAAE,gCAAgC;IACzB,CAAA;GACZ,oBAAC,mBAAD;IACE,OAAO,CAAC,CAACqB,OAAOV;IAChB,YAAYU,OAAOV,UAAUwB;IAC7B,OAAOnC,EAAE,mCAAmC;IAC5C,GAAIkB,SAAS,WAAW;IACxB,UAAU;IAAK,CAAA;GAEjB,oBAAC,mBAAD;IACE,OAAO,CAAC,CAACG,OAAOT;IAChB,YAAYS,OAAOT,aAAauB;IAChC,OAAOnC,EAAE,sCAAsC;IAC/C,GAAIkB,SAAS,cAAc;IAC3B,UAAU;IACV,MAAK;IAAU,CAAA;GAEjB,oBAAC,mBAAD;IACE,OAAO,CAAC,CAACG,OAAOR;IAChB,YAAYQ,OAAOR,aAAasB;IAChC,OAAOnC,EAAE,sCAAsC;IAC/C,GAAIkB,SAAS,cAAc;IAC3B,UAAU;IACV,MAAK;IAAU,CAAA;GAEjB,oBAAC,mBAAD;IACE,OAAO,CAAC,CAACG,OAAOP;IAChB,YAAYO,OAAOP,iBAAiBqB;IACpC,OAAOnC,EAAE,0CAA0C;IACnD,GAAIkB,SAAS,kBAAkB;IAC/B,UAAU;IACV,MAAK;IAAU,CAAA;GAEhBG,OAAOe,QAAQ,oBAAC,sBAAD,EAAsB,OAAOf,OAAOe,MAAQ,CAAA;GAC5D,oBAAC,QAAD;IACE,OAAM;IACN,UAAU,CAAChB;IACX,WAAW;IACX,IAAI,EAAEiB,IAAI,GAAG;IACb,MAAK;IACL,SAAQ;cAEPrC,EAAE,iCAAiC;IAC9B,CAAA;GACI;KACG,CAAA,EACJ,CAAA,GACf"}
1
+ {"version":3,"file":"ChangePassword.mjs","names":[],"sources":["../../../src/sections/Security/ChangePassword.tsx"],"sourcesContent":["import { yupResolver } from '@hookform/resolvers/yup';\nimport { Button, Typography } from '@mui/material';\nimport React, { useCallback, useEffect } from 'react';\nimport { useForm } from 'react-hook-form';\nimport { useTranslation } from 'react-i18next';\nimport { useNavigate } from 'react-router';\n\nimport { useDataMutation } from '../../api/use-data-mutation';\nimport LoginDialogFormError from '../../components/LoginDialog/LoginDialogFormError';\nimport { getConfiguration } from '../../configuration';\nimport SecurityLayout from '../../layouts/Security/Dialog';\nimport { normalizeAuthError } from '../../providers/AuthProvider/utils';\nimport { stripTrailingSlash } from '../../store/utils';\nimport { Route } from '../../utils';\nimport { APIRoute } from '../../utils/routes';\nimport type { ChangePasswordFormValues } from '../../utils/schemas';\nimport { changePasswordSchema } from '../../utils/schemas';\nimport { MessageType } from './Success';\nimport { SecurityContainer, SecurityForm, SecurityTextField } from './styles';\n\nconst ChangePassword: React.FC = () => {\n const { t } = useTranslation();\n const navigate = useNavigate();\n const configuration = getConfiguration();\n const basePath = stripTrailingSlash(configuration.base);\n const changePasswordEnabled = configuration?.flags?.changePassword;\n\n const form = useForm<ChangePasswordFormValues>({\n mode: 'onChange',\n defaultValues: {\n username: '',\n oldPassword: '',\n newPassword: '',\n confirmPassword: '',\n },\n resolver: yupResolver(changePasswordSchema),\n });\n\n const {\n setError,\n handleSubmit,\n register,\n formState: { isValid, errors },\n } = form;\n\n const { trigger } = useDataMutation<{ ok: string }>(basePath, APIRoute.RESET_PASSWORD, 'PUT');\n\n const handleChangePassword = useCallback(\n async (body: { password: { old: string; new: string } }) => {\n try {\n await trigger(body);\n } catch (err) {\n throw normalizeAuthError(err);\n }\n },\n [trigger]\n );\n\n const onSubmit = useCallback(\n async (data: ChangePasswordFormValues) => {\n try {\n await handleChangePassword({\n password: {\n old: data.oldPassword,\n new: data.newPassword,\n },\n });\n navigate(`${Route.SUCCESS}?messageType=${MessageType.ChangePassword}`);\n } catch {\n setError('root', {\n type: 'server',\n message: 'Failed to change password',\n });\n }\n },\n [handleChangePassword, setError, navigate]\n );\n\n useEffect(() => {\n if (!changePasswordEnabled) {\n navigate('/');\n }\n }, [changePasswordEnabled, navigate]);\n\n return changePasswordEnabled ? (\n <SecurityLayout>\n <SecurityContainer>\n <SecurityForm component=\"form\" onSubmit={handleSubmit(onSubmit)}>\n <Typography align=\"center\" component=\"h1\" gutterBottom={true} variant=\"h4\">\n {t('security.changePassword.title')}\n </Typography>\n <SecurityTextField\n error={!!errors.username}\n helperText={errors.username?.message}\n label={t('security.changePassword.username')}\n {...register('username')}\n required={true}\n />\n <SecurityTextField\n error={!!errors.oldPassword}\n helperText={errors.oldPassword?.message}\n label={t('security.changePassword.oldPassword')}\n {...register('oldPassword')}\n required={true}\n type=\"password\"\n />\n <SecurityTextField\n error={!!errors.newPassword}\n helperText={errors.newPassword?.message}\n label={t('security.changePassword.newPassword')}\n {...register('newPassword')}\n required={true}\n type=\"password\"\n />\n <SecurityTextField\n error={!!errors.confirmPassword}\n helperText={errors.confirmPassword?.message}\n label={t('security.changePassword.confirmPassword')}\n {...register('confirmPassword')}\n required={true}\n type=\"password\"\n />\n {errors.root && <LoginDialogFormError error={errors.root} />}\n <Button\n color=\"primary\"\n disabled={!isValid}\n fullWidth={true}\n sx={{ mt: 2 }}\n type=\"submit\"\n variant=\"contained\"\n >\n {t('security.changePassword.submit')}\n </Button>\n </SecurityForm>\n </SecurityContainer>\n </SecurityLayout>\n ) : null;\n};\n\nexport default ChangePassword;\n"],"mappings":";;;;;;;;;;;;;;;;;;;AAoBA,IAAM,uBAAiC;CACrC,MAAM,EAAE,MAAM,gBAAgB;CAC9B,MAAM,WAAW,aAAa;CAC9B,MAAM,gBAAgB,kBAAkB;CACxC,MAAM,WAAW,mBAAmB,cAAc,KAAK;CACvD,MAAM,wBAAwB,eAAe,OAAO;CAapD,MAAM,EACJ,UACA,cACA,UACA,WAAW,EAAE,SAAS,aAfX,QAAkC;EAC7C,MAAM;EACN,eAAe;GACb,UAAU;GACV,aAAa;GACb,aAAa;GACb,iBAAiB;GAClB;EACD,UAAU,YAAY,qBAAqB;EAC5C,CAAC;CASF,MAAM,EAAE,YAAY,gBAAgC,UAAU,SAAS,gBAAgB,MAAM;CAE7F,MAAM,uBAAuB,YAC3B,OAAO,SAAqD;AAC1D,MAAI;AACF,SAAM,QAAQ,KAAK;WACZ,KAAK;AACZ,SAAM,mBAAmB,IAAI;;IAGjC,CAAC,QAAQ,CACV;CAED,MAAM,WAAW,YACf,OAAO,SAAmC;AACxC,MAAI;AACF,SAAM,qBAAqB,EACzB,UAAU;IACR,KAAK,KAAK;IACV,KAAK,KAAK;IACX,EACF,CAAC;AACF,YAAS,GAAG,QAAM,QAAQ,eAAe,YAAY,iBAAiB;UAChE;AACN,YAAS,QAAQ;IACf,MAAM;IACN,SAAS;IACV,CAAC;;IAGN;EAAC;EAAsB;EAAU;EAAS,CAC3C;AAED,iBAAgB;AACd,MAAI,CAAC,sBACH,UAAS,IAAI;IAEd,CAAC,uBAAuB,SAAS,CAAC;AAErC,QAAO,wBACL,oBAAC,gBAAD,EAAA,UACE,oBAAC,mBAAD,EAAA,UACE,qBAAC,cAAD;EAAc,WAAU;EAAO,UAAU,aAAa,SAAS;YAA/D;GACE,oBAAC,YAAD;IAAY,OAAM;IAAS,WAAU;IAAK,cAAc;IAAM,SAAQ;cACnE,EAAE,gCAAgC;IACxB,CAAA;GACb,oBAAC,mBAAD;IACE,OAAO,CAAC,CAAC,OAAO;IAChB,YAAY,OAAO,UAAU;IAC7B,OAAO,EAAE,mCAAmC;IAC5C,GAAI,SAAS,WAAW;IACxB,UAAU;IACV,CAAA;GACF,oBAAC,mBAAD;IACE,OAAO,CAAC,CAAC,OAAO;IAChB,YAAY,OAAO,aAAa;IAChC,OAAO,EAAE,sCAAsC;IAC/C,GAAI,SAAS,cAAc;IAC3B,UAAU;IACV,MAAK;IACL,CAAA;GACF,oBAAC,mBAAD;IACE,OAAO,CAAC,CAAC,OAAO;IAChB,YAAY,OAAO,aAAa;IAChC,OAAO,EAAE,sCAAsC;IAC/C,GAAI,SAAS,cAAc;IAC3B,UAAU;IACV,MAAK;IACL,CAAA;GACF,oBAAC,mBAAD;IACE,OAAO,CAAC,CAAC,OAAO;IAChB,YAAY,OAAO,iBAAiB;IACpC,OAAO,EAAE,0CAA0C;IACnD,GAAI,SAAS,kBAAkB;IAC/B,UAAU;IACV,MAAK;IACL,CAAA;GACD,OAAO,QAAQ,oBAAC,sBAAD,EAAsB,OAAO,OAAO,MAAQ,CAAA;GAC5D,oBAAC,QAAD;IACE,OAAM;IACN,UAAU,CAAC;IACX,WAAW;IACX,IAAI,EAAE,IAAI,GAAG;IACb,MAAK;IACL,SAAQ;cAEP,EAAE,iCAAiC;IAC7B,CAAA;GACI;KACG,CAAA,EACL,CAAA,GACf"}
@@ -15,9 +15,9 @@ const require_Dialog = require("../../layouts/Security/Dialog.js");
15
15
  const require_styles$1 = require("./styles.js");
16
16
  const require_Success = require("./Success.js");
17
17
  const require_utils$2 = require("./utils.js");
18
- let react_jsx_runtime = require("react/jsx-runtime");
19
18
  let react = require("react");
20
19
  react = require_runtime.__toESM(react);
20
+ let react_jsx_runtime = require("react/jsx-runtime");
21
21
  let react_i18next = require("react-i18next");
22
22
  let react_router = require("react-router");
23
23
  let _mui_material = require("@mui/material");
@@ -1 +1 @@
1
- {"version":3,"file":"Login.js","names":["yupResolver","Link","Typography","React","useCallback","useEffect","useForm","useTranslation","useLocation","useNavigate","useDataMutation","LoginFormValues","LoginForm","LoginFormHeader","NotFound","getConfiguration","SecurityLayout","LoginBody","normalizeAuthError","saveAuth","stripTrailingSlash","Route","loginSchema","MessageType","SecurityContainer","SecurityForm","getSecurityUrlParams","configuration","basePath","base","Login","FC","t","location","navigate","next","createUserEnabled","flags","createUser","addUserLink","ADD_USER","data","isMutating","trigger","form","mode","resolver","setError","handleSubmit","register","formState","isValid","errors","handleLogin","body","username","password","err","onSuccess","SUCCESS","onSubmit","type","message","token","mt","fontSize","ml"],"sources":["../../../src/sections/Security/Login.tsx"],"sourcesContent":["import { yupResolver } from '@hookform/resolvers/yup';\nimport { Link, Typography } from '@mui/material';\nimport React, { useCallback, useEffect } from 'react';\nimport { useForm } from 'react-hook-form';\nimport { useTranslation } from 'react-i18next';\nimport { useLocation, useNavigate } from 'react-router';\n\nimport { useDataMutation } from '../../api/use-data-mutation';\nimport type { LoginFormValues } from '../../components/LoginForm/Login';\nimport LoginForm from '../../components/LoginForm/Login';\nimport LoginFormHeader from '../../components/LoginForm/styles';\nimport NotFound from '../../components/NotFound';\nimport { getConfiguration } from '../../configuration';\nimport SecurityLayout from '../../layouts/Security/Dialog';\nimport type { LoginBody } from '../../providers/AuthProvider/types';\nimport { normalizeAuthError } from '../../providers/AuthProvider/utils';\nimport { saveAuth } from '../../store/storage';\nimport { stripTrailingSlash } from '../../store/utils';\nimport { Route } from '../../utils';\nimport { loginSchema } from '../../utils/schemas';\nimport { MessageType } from './Success';\nimport { SecurityContainer, SecurityForm } from './styles';\nimport { getSecurityUrlParams } from './utils';\n\nconst configuration = getConfiguration();\nconst basePath = stripTrailingSlash(configuration.base);\n\nconst Login: React.FC = () => {\n const { t } = useTranslation();\n const location = useLocation();\n const navigate = useNavigate();\n const { next } = getSecurityUrlParams(location);\n const createUserEnabled = configuration?.flags?.createUser;\n const addUserLink = Route.ADD_USER + (next ? '?next=' + next : '');\n\n const { data, isMutating, trigger } = useDataMutation<LoginBody>(basePath, next, 'POST');\n\n const form = useForm<LoginFormValues>({\n mode: 'onChange',\n resolver: yupResolver(loginSchema),\n });\n\n const {\n setError,\n handleSubmit,\n register,\n formState: { isValid, errors },\n } = form;\n\n const handleLogin = async (body: { username: string; password: string }) => {\n try {\n await trigger(body);\n } catch (err) {\n throw normalizeAuthError(err);\n }\n };\n\n const onSuccess = useCallback(() => {\n navigate(`${Route.SUCCESS}?messageType=${MessageType.Login}`);\n }, [navigate]);\n\n const onSubmit = useCallback(\n async (data: LoginFormValues) => {\n try {\n await handleLogin?.(data);\n onSuccess();\n } catch {\n setError('root', {\n type: 'server',\n // TODO: add translation key\n message: 'Invalid username or password',\n });\n }\n },\n [handleLogin, setError, onSuccess]\n );\n\n useEffect(() => {\n if (data && !isMutating && data.username && data.token) {\n saveAuth(data.username, data.token);\n }\n }, [data, isMutating]);\n\n return !next ? (\n <NotFound />\n ) : (\n <SecurityLayout>\n <SecurityContainer>\n <SecurityForm>\n <LoginFormHeader />\n <LoginForm\n errors={errors}\n handleSubmit={handleSubmit}\n isValid={isValid}\n onSubmit={onSubmit}\n register={register}\n />\n {createUserEnabled && (\n <Typography align=\"center\" sx={{ mt: 2, fontSize: 12 }} variant=\"body2\">\n {t('security.login.noUserQuestion')}\n <Link href={addUserLink} sx={{ ml: 1 }}>\n {t('security.login.createUser')}\n </Link>\n </Typography>\n )}\n </SecurityForm>\n </SecurityContainer>\n </SecurityLayout>\n );\n};\n\nexport default Login;\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAwBA,IAAM2B,gBAAgBZ,sBAAAA,kBAAkB;AACxC,IAAMa,WAAWR,cAAAA,mBAAmBO,cAAcE,KAAK;AAEvD,IAAMC,cAAwB;CAC5B,MAAM,EAAEE,OAAAA,GAAAA,cAAAA,iBAAsB;CAC9B,MAAMC,YAAAA,GAAAA,aAAAA,cAAwB;CAC9B,MAAMC,YAAAA,GAAAA,aAAAA,cAAwB;CAC9B,MAAM,EAAEC,SAAST,gBAAAA,qBAAqBO,SAAS;CAC/C,MAAMG,oBAAoBT,eAAeU,OAAOC;CAChD,MAAMC,cAAclB,eAAAA,MAAMmB,YAAYL,OAAO,WAAWA,OAAO;CAE/D,MAAM,EAAEM,MAAMC,YAAYC,YAAYjC,0BAAAA,gBAA2BkB,UAAUO,MAAM,OAAO;CAOxF,MAAM,EACJY,UACAC,cACAC,UACAC,WAAW,EAAEC,SAASC,cAAAA,GAAAA,gBAAAA,SATc;EACpCP,MAAM;EACNC,WAAAA,GAAAA,wBAAAA,aAAsBxB,gBAAAA,YAAW;EAClC,CAAC;CASF,MAAM+B,cAAc,OAAOC,SAAiD;AAC1E,MAAI;AACF,SAAMX,QAAQW,KAAK;WACZG,KAAK;AACZ,SAAMvC,gBAAAA,mBAAmBuC,IAAI;;;CAIjC,MAAMC,aAAAA,GAAAA,MAAAA,mBAA8B;AAClCxB,WAAS,GAAGb,eAAAA,MAAMsC,QAAO,eAAgBpC,gBAAAA,YAAYO,QAAQ;IAC5D,CAACI,SAAS,CAAC;CAEd,MAAM0B,YAAAA,GAAAA,MAAAA,aACJ,OAAOnB,SAA0B;AAC/B,MAAI;AACF,SAAMY,cAAcZ,KAAK;AACzBiB,cAAW;UACL;AACNX,YAAS,QAAQ;IACfc,MAAM;IAENC,SAAS;IACV,CAAC;;IAGN;EAACT;EAAaN;EAAUW;EAC1B,CAAC;AAEDrD,EAAAA,GAAAA,MAAAA,iBAAgB;AACd,MAAIoC,QAAQ,CAACC,cAAcD,KAAKc,YAAYd,KAAKsB,MAC/C5C,iBAAAA,SAASsB,KAAKc,UAAUd,KAAKsB,MAAM;IAEpC,CAACtB,MAAMC,WAAW,CAAC;AAEtB,QAAO,CAACP,OACN,iBAAA,GAAA,kBAAA,KAAC,iBAAA,SAAD,EAAY,CAAA,GAEZ,iBAAA,GAAA,kBAAA,KAAC,eAAA,SAAD,EAAA,UACE,iBAAA,GAAA,kBAAA,KAAC,iBAAA,mBAAD,EAAA,UACE,iBAAA,GAAA,kBAAA,MAAC,iBAAA,cAAD,EAAA,UAAA;EACE,iBAAA,GAAA,kBAAA,KAAC,eAAA,SAAD,EAAgB,CAAA;EAChB,iBAAA,GAAA,kBAAA,KAAC,cAAA,SAAD;GACUiB;GACMJ;GACLG;GACCS;GACAX;GAAS,CAAA;EAEpBb,qBACC,iBAAA,GAAA,kBAAA,MAAC,cAAA,YAAD;GAAY,OAAM;GAAS,IAAI;IAAE4B,IAAI;IAAGC,UAAU;IAAI;GAAE,SAAQ;aAAhE,CACGjC,EAAE,gCAAgC,EACnC,iBAAA,GAAA,kBAAA,KAAC,cAAA,MAAD;IAAM,MAAMO;IAAa,IAAI,EAAE2B,IAAI,GAAG;cACnClC,EAAE,4BAA4B;IAC3B,CAAA,CAET;;EACW,EAAA,CAAA,EACG,CAAA,EAEtB,CAAA"}
1
+ {"version":3,"file":"Login.js","names":[],"sources":["../../../src/sections/Security/Login.tsx"],"sourcesContent":["import { yupResolver } from '@hookform/resolvers/yup';\nimport { Link, Typography } from '@mui/material';\nimport React, { useCallback, useEffect } from 'react';\nimport { useForm } from 'react-hook-form';\nimport { useTranslation } from 'react-i18next';\nimport { useLocation, useNavigate } from 'react-router';\n\nimport { useDataMutation } from '../../api/use-data-mutation';\nimport type { LoginFormValues } from '../../components/LoginForm/Login';\nimport LoginForm from '../../components/LoginForm/Login';\nimport LoginFormHeader from '../../components/LoginForm/styles';\nimport NotFound from '../../components/NotFound';\nimport { getConfiguration } from '../../configuration';\nimport SecurityLayout from '../../layouts/Security/Dialog';\nimport type { LoginBody } from '../../providers/AuthProvider/types';\nimport { normalizeAuthError } from '../../providers/AuthProvider/utils';\nimport { saveAuth } from '../../store/storage';\nimport { stripTrailingSlash } from '../../store/utils';\nimport { Route } from '../../utils';\nimport { loginSchema } from '../../utils/schemas';\nimport { MessageType } from './Success';\nimport { SecurityContainer, SecurityForm } from './styles';\nimport { getSecurityUrlParams } from './utils';\n\nconst configuration = getConfiguration();\nconst basePath = stripTrailingSlash(configuration.base);\n\nconst Login: React.FC = () => {\n const { t } = useTranslation();\n const location = useLocation();\n const navigate = useNavigate();\n const { next } = getSecurityUrlParams(location);\n const createUserEnabled = configuration?.flags?.createUser;\n const addUserLink = Route.ADD_USER + (next ? '?next=' + next : '');\n\n const { data, isMutating, trigger } = useDataMutation<LoginBody>(basePath, next, 'POST');\n\n const form = useForm<LoginFormValues>({\n mode: 'onChange',\n resolver: yupResolver(loginSchema),\n });\n\n const {\n setError,\n handleSubmit,\n register,\n formState: { isValid, errors },\n } = form;\n\n const handleLogin = async (body: { username: string; password: string }) => {\n try {\n await trigger(body);\n } catch (err) {\n throw normalizeAuthError(err);\n }\n };\n\n const onSuccess = useCallback(() => {\n navigate(`${Route.SUCCESS}?messageType=${MessageType.Login}`);\n }, [navigate]);\n\n const onSubmit = useCallback(\n async (data: LoginFormValues) => {\n try {\n await handleLogin?.(data);\n onSuccess();\n } catch {\n setError('root', {\n type: 'server',\n // TODO: add translation key\n message: 'Invalid username or password',\n });\n }\n },\n [handleLogin, setError, onSuccess]\n );\n\n useEffect(() => {\n if (data && !isMutating && data.username && data.token) {\n saveAuth(data.username, data.token);\n }\n }, [data, isMutating]);\n\n return !next ? (\n <NotFound />\n ) : (\n <SecurityLayout>\n <SecurityContainer>\n <SecurityForm>\n <LoginFormHeader />\n <LoginForm\n errors={errors}\n handleSubmit={handleSubmit}\n isValid={isValid}\n onSubmit={onSubmit}\n register={register}\n />\n {createUserEnabled && (\n <Typography align=\"center\" sx={{ mt: 2, fontSize: 12 }} variant=\"body2\">\n {t('security.login.noUserQuestion')}\n <Link href={addUserLink} sx={{ ml: 1 }}>\n {t('security.login.createUser')}\n </Link>\n </Typography>\n )}\n </SecurityForm>\n </SecurityContainer>\n </SecurityLayout>\n );\n};\n\nexport default Login;\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAwBA,IAAM,gBAAgB,sBAAA,kBAAkB;AACxC,IAAM,WAAW,cAAA,mBAAmB,cAAc,KAAK;AAEvD,IAAM,cAAwB;CAC5B,MAAM,EAAE,OAAA,GAAA,cAAA,iBAAsB;CAC9B,MAAM,YAAA,GAAA,aAAA,cAAwB;CAC9B,MAAM,YAAA,GAAA,aAAA,cAAwB;CAC9B,MAAM,EAAE,SAAS,gBAAA,qBAAqB,SAAS;CAC/C,MAAM,oBAAoB,eAAe,OAAO;CAChD,MAAM,cAAc,eAAA,MAAM,YAAY,OAAO,WAAW,OAAO;CAE/D,MAAM,EAAE,MAAM,YAAY,YAAY,0BAAA,gBAA2B,UAAU,MAAM,OAAO;CAOxF,MAAM,EACJ,UACA,cACA,UACA,WAAW,EAAE,SAAS,cAAA,GAAA,gBAAA,SATc;EACpC,MAAM;EACN,WAAA,GAAA,wBAAA,aAAsB,gBAAA,YAAY;EACnC,CAAC;CASF,MAAM,cAAc,OAAO,SAAiD;AAC1E,MAAI;AACF,SAAM,QAAQ,KAAK;WACZ,KAAK;AACZ,SAAM,gBAAA,mBAAmB,IAAI;;;CAIjC,MAAM,aAAA,GAAA,MAAA,mBAA8B;AAClC,WAAS,GAAG,eAAA,MAAM,QAAQ,eAAe,gBAAA,YAAY,QAAQ;IAC5D,CAAC,SAAS,CAAC;CAEd,MAAM,YAAA,GAAA,MAAA,aACJ,OAAO,SAA0B;AAC/B,MAAI;AACF,SAAM,cAAc,KAAK;AACzB,cAAW;UACL;AACN,YAAS,QAAQ;IACf,MAAM;IAEN,SAAS;IACV,CAAC;;IAGN;EAAC;EAAa;EAAU;EAAU,CACnC;AAED,EAAA,GAAA,MAAA,iBAAgB;AACd,MAAI,QAAQ,CAAC,cAAc,KAAK,YAAY,KAAK,MAC/C,iBAAA,SAAS,KAAK,UAAU,KAAK,MAAM;IAEpC,CAAC,MAAM,WAAW,CAAC;AAEtB,QAAO,CAAC,OACN,iBAAA,GAAA,kBAAA,KAAC,iBAAA,SAAD,EAAY,CAAA,GAEZ,iBAAA,GAAA,kBAAA,KAAC,eAAA,SAAD,EAAA,UACE,iBAAA,GAAA,kBAAA,KAAC,iBAAA,mBAAD,EAAA,UACE,iBAAA,GAAA,kBAAA,MAAC,iBAAA,cAAD,EAAA,UAAA;EACE,iBAAA,GAAA,kBAAA,KAAC,eAAA,SAAD,EAAmB,CAAA;EACnB,iBAAA,GAAA,kBAAA,KAAC,cAAA,SAAD;GACU;GACM;GACL;GACC;GACA;GACV,CAAA;EACD,qBACC,iBAAA,GAAA,kBAAA,MAAC,cAAA,YAAD;GAAY,OAAM;GAAS,IAAI;IAAE,IAAI;IAAG,UAAU;IAAI;GAAE,SAAQ;aAAhE,CACG,EAAE,gCAAgC,EACnC,iBAAA,GAAA,kBAAA,KAAC,cAAA,MAAD;IAAM,MAAM;IAAa,IAAI,EAAE,IAAI,GAAG;cACnC,EAAE,4BAA4B;IAC1B,CAAA,CACI;;EAEF,EAAA,CAAA,EACG,CAAA,EACL,CAAA"}
@@ -14,8 +14,8 @@ import SecurityLayout from "../../layouts/Security/Dialog.mjs";
14
14
  import { SecurityContainer, SecurityForm } from "./styles.mjs";
15
15
  import { MessageType } from "./Success.mjs";
16
16
  import { getSecurityUrlParams } from "./utils.mjs";
17
- import { jsx, jsxs } from "react/jsx-runtime";
18
17
  import { useCallback, useEffect } from "react";
18
+ import { jsx, jsxs } from "react/jsx-runtime";
19
19
  import { useTranslation } from "react-i18next";
20
20
  import { useLocation, useNavigate } from "react-router";
21
21
  import { Link as Link$1, Typography } from "@mui/material";
@@ -1 +1 @@
1
- {"version":3,"file":"Login.mjs","names":["yupResolver","Link","Typography","React","useCallback","useEffect","useForm","useTranslation","useLocation","useNavigate","useDataMutation","LoginFormValues","LoginForm","LoginFormHeader","NotFound","getConfiguration","SecurityLayout","LoginBody","normalizeAuthError","saveAuth","stripTrailingSlash","Route","loginSchema","MessageType","SecurityContainer","SecurityForm","getSecurityUrlParams","configuration","basePath","base","Login","FC","t","location","navigate","next","createUserEnabled","flags","createUser","addUserLink","ADD_USER","data","isMutating","trigger","form","mode","resolver","setError","handleSubmit","register","formState","isValid","errors","handleLogin","body","username","password","err","onSuccess","SUCCESS","onSubmit","type","message","token","mt","fontSize","ml"],"sources":["../../../src/sections/Security/Login.tsx"],"sourcesContent":["import { yupResolver } from '@hookform/resolvers/yup';\nimport { Link, Typography } from '@mui/material';\nimport React, { useCallback, useEffect } from 'react';\nimport { useForm } from 'react-hook-form';\nimport { useTranslation } from 'react-i18next';\nimport { useLocation, useNavigate } from 'react-router';\n\nimport { useDataMutation } from '../../api/use-data-mutation';\nimport type { LoginFormValues } from '../../components/LoginForm/Login';\nimport LoginForm from '../../components/LoginForm/Login';\nimport LoginFormHeader from '../../components/LoginForm/styles';\nimport NotFound from '../../components/NotFound';\nimport { getConfiguration } from '../../configuration';\nimport SecurityLayout from '../../layouts/Security/Dialog';\nimport type { LoginBody } from '../../providers/AuthProvider/types';\nimport { normalizeAuthError } from '../../providers/AuthProvider/utils';\nimport { saveAuth } from '../../store/storage';\nimport { stripTrailingSlash } from '../../store/utils';\nimport { Route } from '../../utils';\nimport { loginSchema } from '../../utils/schemas';\nimport { MessageType } from './Success';\nimport { SecurityContainer, SecurityForm } from './styles';\nimport { getSecurityUrlParams } from './utils';\n\nconst configuration = getConfiguration();\nconst basePath = stripTrailingSlash(configuration.base);\n\nconst Login: React.FC = () => {\n const { t } = useTranslation();\n const location = useLocation();\n const navigate = useNavigate();\n const { next } = getSecurityUrlParams(location);\n const createUserEnabled = configuration?.flags?.createUser;\n const addUserLink = Route.ADD_USER + (next ? '?next=' + next : '');\n\n const { data, isMutating, trigger } = useDataMutation<LoginBody>(basePath, next, 'POST');\n\n const form = useForm<LoginFormValues>({\n mode: 'onChange',\n resolver: yupResolver(loginSchema),\n });\n\n const {\n setError,\n handleSubmit,\n register,\n formState: { isValid, errors },\n } = form;\n\n const handleLogin = async (body: { username: string; password: string }) => {\n try {\n await trigger(body);\n } catch (err) {\n throw normalizeAuthError(err);\n }\n };\n\n const onSuccess = useCallback(() => {\n navigate(`${Route.SUCCESS}?messageType=${MessageType.Login}`);\n }, [navigate]);\n\n const onSubmit = useCallback(\n async (data: LoginFormValues) => {\n try {\n await handleLogin?.(data);\n onSuccess();\n } catch {\n setError('root', {\n type: 'server',\n // TODO: add translation key\n message: 'Invalid username or password',\n });\n }\n },\n [handleLogin, setError, onSuccess]\n );\n\n useEffect(() => {\n if (data && !isMutating && data.username && data.token) {\n saveAuth(data.username, data.token);\n }\n }, [data, isMutating]);\n\n return !next ? (\n <NotFound />\n ) : (\n <SecurityLayout>\n <SecurityContainer>\n <SecurityForm>\n <LoginFormHeader />\n <LoginForm\n errors={errors}\n handleSubmit={handleSubmit}\n isValid={isValid}\n onSubmit={onSubmit}\n register={register}\n />\n {createUserEnabled && (\n <Typography align=\"center\" sx={{ mt: 2, fontSize: 12 }} variant=\"body2\">\n {t('security.login.noUserQuestion')}\n <Link href={addUserLink} sx={{ ml: 1 }}>\n {t('security.login.createUser')}\n </Link>\n </Typography>\n )}\n </SecurityForm>\n </SecurityContainer>\n </SecurityLayout>\n );\n};\n\nexport default Login;\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;AAwBA,IAAM2B,gBAAgBZ,kBAAkB;AACxC,IAAMa,WAAWR,mBAAmBO,cAAcE,KAAK;AAEvD,IAAMC,cAAwB;CAC5B,MAAM,EAAEE,MAAMzB,gBAAgB;CAC9B,MAAM0B,WAAWzB,aAAa;CAC9B,MAAM0B,WAAWzB,aAAa;CAC9B,MAAM,EAAE0B,SAAST,qBAAqBO,SAAS;CAC/C,MAAMG,oBAAoBT,eAAeU,OAAOC;CAChD,MAAMC,cAAclB,QAAMmB,YAAYL,OAAO,WAAWA,OAAO;CAE/D,MAAM,EAAEM,MAAMC,YAAYC,YAAYjC,gBAA2BkB,UAAUO,MAAM,OAAO;CAOxF,MAAM,EACJY,UACAC,cACAC,UACAC,WAAW,EAAEC,SAASC,aATX9C,QAAyB;EACpCuC,MAAM;EACNC,UAAU9C,YAAYsB,YAAW;EAClC,CAAC;CASF,MAAM+B,cAAc,OAAOC,SAAiD;AAC1E,MAAI;AACF,SAAMX,QAAQW,KAAK;WACZG,KAAK;AACZ,SAAMvC,mBAAmBuC,IAAI;;;CAIjC,MAAMC,YAAYtD,kBAAkB;AAClC8B,WAAS,GAAGb,QAAMsC,QAAO,eAAgBpC,YAAYO,QAAQ;IAC5D,CAACI,SAAS,CAAC;CAEd,MAAM0B,WAAWxD,YACf,OAAOqC,SAA0B;AAC/B,MAAI;AACF,SAAMY,cAAcZ,KAAK;AACzBiB,cAAW;UACL;AACNX,YAAS,QAAQ;IACfc,MAAM;IAENC,SAAS;IACV,CAAC;;IAGN;EAACT;EAAaN;EAAUW;EAC1B,CAAC;AAEDrD,iBAAgB;AACd,MAAIoC,QAAQ,CAACC,cAAcD,KAAKc,YAAYd,KAAKsB,MAC/C5C,UAASsB,KAAKc,UAAUd,KAAKsB,MAAM;IAEpC,CAACtB,MAAMC,WAAW,CAAC;AAEtB,QAAO,CAACP,OACN,oBAAC,UAAD,EAAY,CAAA,GAEZ,oBAAC,gBAAD,EAAA,UACE,oBAAC,mBAAD,EAAA,UACE,qBAAC,cAAD,EAAA,UAAA;EACE,oBAAC,iBAAD,EAAgB,CAAA;EAChB,oBAAC,WAAD;GACUiB;GACMJ;GACLG;GACCS;GACAX;GAAS,CAAA;EAEpBb,qBACC,qBAAC,YAAD;GAAY,OAAM;GAAS,IAAI;IAAE4B,IAAI;IAAGC,UAAU;IAAI;GAAE,SAAQ;aAAhE,CACGjC,EAAE,gCAAgC,EACnC,oBAAC,QAAD;IAAM,MAAMO;IAAa,IAAI,EAAE2B,IAAI,GAAG;cACnClC,EAAE,4BAA4B;IAC3B,CAAA,CAET;;EACW,EAAA,CAAA,EACG,CAAA,EAEtB,CAAA"}
1
+ {"version":3,"file":"Login.mjs","names":[],"sources":["../../../src/sections/Security/Login.tsx"],"sourcesContent":["import { yupResolver } from '@hookform/resolvers/yup';\nimport { Link, Typography } from '@mui/material';\nimport React, { useCallback, useEffect } from 'react';\nimport { useForm } from 'react-hook-form';\nimport { useTranslation } from 'react-i18next';\nimport { useLocation, useNavigate } from 'react-router';\n\nimport { useDataMutation } from '../../api/use-data-mutation';\nimport type { LoginFormValues } from '../../components/LoginForm/Login';\nimport LoginForm from '../../components/LoginForm/Login';\nimport LoginFormHeader from '../../components/LoginForm/styles';\nimport NotFound from '../../components/NotFound';\nimport { getConfiguration } from '../../configuration';\nimport SecurityLayout from '../../layouts/Security/Dialog';\nimport type { LoginBody } from '../../providers/AuthProvider/types';\nimport { normalizeAuthError } from '../../providers/AuthProvider/utils';\nimport { saveAuth } from '../../store/storage';\nimport { stripTrailingSlash } from '../../store/utils';\nimport { Route } from '../../utils';\nimport { loginSchema } from '../../utils/schemas';\nimport { MessageType } from './Success';\nimport { SecurityContainer, SecurityForm } from './styles';\nimport { getSecurityUrlParams } from './utils';\n\nconst configuration = getConfiguration();\nconst basePath = stripTrailingSlash(configuration.base);\n\nconst Login: React.FC = () => {\n const { t } = useTranslation();\n const location = useLocation();\n const navigate = useNavigate();\n const { next } = getSecurityUrlParams(location);\n const createUserEnabled = configuration?.flags?.createUser;\n const addUserLink = Route.ADD_USER + (next ? '?next=' + next : '');\n\n const { data, isMutating, trigger } = useDataMutation<LoginBody>(basePath, next, 'POST');\n\n const form = useForm<LoginFormValues>({\n mode: 'onChange',\n resolver: yupResolver(loginSchema),\n });\n\n const {\n setError,\n handleSubmit,\n register,\n formState: { isValid, errors },\n } = form;\n\n const handleLogin = async (body: { username: string; password: string }) => {\n try {\n await trigger(body);\n } catch (err) {\n throw normalizeAuthError(err);\n }\n };\n\n const onSuccess = useCallback(() => {\n navigate(`${Route.SUCCESS}?messageType=${MessageType.Login}`);\n }, [navigate]);\n\n const onSubmit = useCallback(\n async (data: LoginFormValues) => {\n try {\n await handleLogin?.(data);\n onSuccess();\n } catch {\n setError('root', {\n type: 'server',\n // TODO: add translation key\n message: 'Invalid username or password',\n });\n }\n },\n [handleLogin, setError, onSuccess]\n );\n\n useEffect(() => {\n if (data && !isMutating && data.username && data.token) {\n saveAuth(data.username, data.token);\n }\n }, [data, isMutating]);\n\n return !next ? (\n <NotFound />\n ) : (\n <SecurityLayout>\n <SecurityContainer>\n <SecurityForm>\n <LoginFormHeader />\n <LoginForm\n errors={errors}\n handleSubmit={handleSubmit}\n isValid={isValid}\n onSubmit={onSubmit}\n register={register}\n />\n {createUserEnabled && (\n <Typography align=\"center\" sx={{ mt: 2, fontSize: 12 }} variant=\"body2\">\n {t('security.login.noUserQuestion')}\n <Link href={addUserLink} sx={{ ml: 1 }}>\n {t('security.login.createUser')}\n </Link>\n </Typography>\n )}\n </SecurityForm>\n </SecurityContainer>\n </SecurityLayout>\n );\n};\n\nexport default Login;\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;AAwBA,IAAM,gBAAgB,kBAAkB;AACxC,IAAM,WAAW,mBAAmB,cAAc,KAAK;AAEvD,IAAM,cAAwB;CAC5B,MAAM,EAAE,MAAM,gBAAgB;CAC9B,MAAM,WAAW,aAAa;CAC9B,MAAM,WAAW,aAAa;CAC9B,MAAM,EAAE,SAAS,qBAAqB,SAAS;CAC/C,MAAM,oBAAoB,eAAe,OAAO;CAChD,MAAM,cAAc,QAAM,YAAY,OAAO,WAAW,OAAO;CAE/D,MAAM,EAAE,MAAM,YAAY,YAAY,gBAA2B,UAAU,MAAM,OAAO;CAOxF,MAAM,EACJ,UACA,cACA,UACA,WAAW,EAAE,SAAS,aATX,QAAyB;EACpC,MAAM;EACN,UAAU,YAAY,YAAY;EACnC,CAAC;CASF,MAAM,cAAc,OAAO,SAAiD;AAC1E,MAAI;AACF,SAAM,QAAQ,KAAK;WACZ,KAAK;AACZ,SAAM,mBAAmB,IAAI;;;CAIjC,MAAM,YAAY,kBAAkB;AAClC,WAAS,GAAG,QAAM,QAAQ,eAAe,YAAY,QAAQ;IAC5D,CAAC,SAAS,CAAC;CAEd,MAAM,WAAW,YACf,OAAO,SAA0B;AAC/B,MAAI;AACF,SAAM,cAAc,KAAK;AACzB,cAAW;UACL;AACN,YAAS,QAAQ;IACf,MAAM;IAEN,SAAS;IACV,CAAC;;IAGN;EAAC;EAAa;EAAU;EAAU,CACnC;AAED,iBAAgB;AACd,MAAI,QAAQ,CAAC,cAAc,KAAK,YAAY,KAAK,MAC/C,UAAS,KAAK,UAAU,KAAK,MAAM;IAEpC,CAAC,MAAM,WAAW,CAAC;AAEtB,QAAO,CAAC,OACN,oBAAC,UAAD,EAAY,CAAA,GAEZ,oBAAC,gBAAD,EAAA,UACE,oBAAC,mBAAD,EAAA,UACE,qBAAC,cAAD,EAAA,UAAA;EACE,oBAAC,iBAAD,EAAmB,CAAA;EACnB,oBAAC,WAAD;GACU;GACM;GACL;GACC;GACA;GACV,CAAA;EACD,qBACC,qBAAC,YAAD;GAAY,OAAM;GAAS,IAAI;IAAE,IAAI;IAAG,UAAU;IAAI;GAAE,SAAQ;aAAhE,CACG,EAAE,gCAAgC,EACnC,oBAAC,QAAD;IAAM,MAAM;IAAa,IAAI,EAAE,IAAI,GAAG;cACnC,EAAE,4BAA4B;IAC1B,CAAA,CACI;;EAEF,EAAA,CAAA,EACG,CAAA,EACL,CAAA"}
@@ -1,9 +1,9 @@
1
1
  const require_runtime = require("../../_virtual/_rolldown/runtime.js");
2
2
  const require_Dialog = require("../../layouts/Security/Dialog.js");
3
3
  const require_styles = require("./styles.js");
4
- let react_jsx_runtime = require("react/jsx-runtime");
5
4
  let react = require("react");
6
5
  react = require_runtime.__toESM(react);
6
+ let react_jsx_runtime = require("react/jsx-runtime");
7
7
  let react_i18next = require("react-i18next");
8
8
  let react_router = require("react-router");
9
9
  let _mui_material = require("@mui/material");
@@ -1 +1 @@
1
- {"version":3,"file":"Success.js","names":["CheckCircleIcon","Button","Typography","React","useTranslation","useLocation","SecurityLayout","SecurityContainer","SecurityForm","MessageType","Login","ChangePassword","AddUser","Success","FC","t","location","queryParams","URLSearchParams","search","messageType","get","message","handleClose","window","href","mt"],"sources":["../../../src/sections/Security/Success.tsx"],"sourcesContent":["import CheckCircleIcon from '@mui/icons-material/CheckCircle';\nimport { Button, Typography } from '@mui/material';\nimport React from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { useLocation } from 'react-router';\n\nimport SecurityLayout from '../../layouts/Security/Dialog';\nimport { SecurityContainer, SecurityForm } from './styles';\n\nexport enum MessageType {\n Login = 'Login',\n ChangePassword = 'ChangePassword',\n AddUser = 'AddUser',\n Success = 'Success',\n}\n\nconst Success: React.FC = () => {\n const { t } = useTranslation();\n const location = useLocation();\n const queryParams = new URLSearchParams(location.search);\n const messageType = queryParams.get('messageType') as MessageType;\n const message = !messageType\n ? t('security.success.messageSuccess')\n : t(`security.success.message${messageType}`);\n\n const handleClose = () => {\n window.location.href = '/';\n };\n\n return (\n <SecurityLayout>\n <SecurityContainer>\n <SecurityForm>\n <CheckCircleIcon color=\"success\" />\n <Typography component=\"h1\" gutterBottom={true} variant=\"h4\">\n {t('security.success.title')}\n </Typography>\n <Typography color=\"text.secondary\" paragraph={true} variant=\"body1\">\n {message}\n </Typography>\n <Button color=\"primary\" onClick={handleClose} sx={{ mt: 2 }} variant=\"contained\">\n {t('security.success.submit')}\n </Button>\n </SecurityForm>\n </SecurityContainer>\n </SecurityLayout>\n );\n};\n\nexport default Success;\n"],"mappings":";;;;;;;;;;;;AASA,IAAYS,cAAL,yBAAA,aAAA;AACLC,aAAAA,WAAAA;AACAC,aAAAA,oBAAAA;AACAC,aAAAA,aAAAA;AACAC,aAAAA,aAAAA;;KACF;AAEA,IAAMA,gBAA0B;CAC9B,MAAM,EAAEE,OAAAA,GAAAA,cAAAA,iBAAsB;CAC9B,MAAMC,YAAAA,GAAAA,aAAAA,cAAwB;CAE9B,MAAMI,cADc,IAAIF,gBAAgBF,SAASG,OAAO,CACxBE,IAAI,cAAc;CAClD,MAAMC,UAAU,CAACF,cACbL,EAAE,kCAAkC,GACpCA,EAAE,2BAA2BK,cAAc;CAE/C,MAAMG,oBAAoB;AACxBC,SAAOR,SAASS,OAAO;;AAGzB,QACE,iBAAA,GAAA,kBAAA,KAAC,eAAA,SAAD,EAAA,UACE,iBAAA,GAAA,kBAAA,KAAC,eAAA,mBAAD,EAAA,UACE,iBAAA,GAAA,kBAAA,MAAC,eAAA,cAAD,EAAA,UAAA;EACE,iBAAA,GAAA,kBAAA,KAAC,gCAAA,SAAD,EAAiB,OAAM,WAAS,CAAA;EAChC,iBAAA,GAAA,kBAAA,KAAC,cAAA,YAAD;GAAY,WAAU;GAAK,cAAc;GAAM,SAAQ;aACpDV,EAAE,yBAAyB;GAClB,CAAA;EACZ,iBAAA,GAAA,kBAAA,KAAC,cAAA,YAAD;GAAY,OAAM;GAAiB,WAAW;GAAM,SAAQ;aACzDO;GACS,CAAA;EACZ,iBAAA,GAAA,kBAAA,KAAC,cAAA,QAAD;GAAQ,OAAM;GAAU,SAASC;GAAa,IAAI,EAAEG,IAAI,GAAG;GAAE,SAAQ;aAClEX,EAAE,0BAA0B;GACvB,CAAA;EACI,EAAA,CAAA,EACG,CAAA,EACJ,CAAA"}
1
+ {"version":3,"file":"Success.js","names":[],"sources":["../../../src/sections/Security/Success.tsx"],"sourcesContent":["import CheckCircleIcon from '@mui/icons-material/CheckCircle';\nimport { Button, Typography } from '@mui/material';\nimport React from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { useLocation } from 'react-router';\n\nimport SecurityLayout from '../../layouts/Security/Dialog';\nimport { SecurityContainer, SecurityForm } from './styles';\n\nexport enum MessageType {\n Login = 'Login',\n ChangePassword = 'ChangePassword',\n AddUser = 'AddUser',\n Success = 'Success',\n}\n\nconst Success: React.FC = () => {\n const { t } = useTranslation();\n const location = useLocation();\n const queryParams = new URLSearchParams(location.search);\n const messageType = queryParams.get('messageType') as MessageType;\n const message = !messageType\n ? t('security.success.messageSuccess')\n : t(`security.success.message${messageType}`);\n\n const handleClose = () => {\n window.location.href = '/';\n };\n\n return (\n <SecurityLayout>\n <SecurityContainer>\n <SecurityForm>\n <CheckCircleIcon color=\"success\" />\n <Typography component=\"h1\" gutterBottom={true} variant=\"h4\">\n {t('security.success.title')}\n </Typography>\n <Typography color=\"text.secondary\" paragraph={true} variant=\"body1\">\n {message}\n </Typography>\n <Button color=\"primary\" onClick={handleClose} sx={{ mt: 2 }} variant=\"contained\">\n {t('security.success.submit')}\n </Button>\n </SecurityForm>\n </SecurityContainer>\n </SecurityLayout>\n );\n};\n\nexport default Success;\n"],"mappings":";;;;;;;;;;;;AASA,IAAY,cAAL,yBAAA,aAAA;AACL,aAAA,WAAA;AACA,aAAA,oBAAA;AACA,aAAA,aAAA;AACA,aAAA,aAAA;;KACD;AAED,IAAM,gBAA0B;CAC9B,MAAM,EAAE,OAAA,GAAA,cAAA,iBAAsB;CAC9B,MAAM,YAAA,GAAA,aAAA,cAAwB;CAE9B,MAAM,cADc,IAAI,gBAAgB,SAAS,OAAO,CACxB,IAAI,cAAc;CAClD,MAAM,UAAU,CAAC,cACb,EAAE,kCAAkC,GACpC,EAAE,2BAA2B,cAAc;CAE/C,MAAM,oBAAoB;AACxB,SAAO,SAAS,OAAO;;AAGzB,QACE,iBAAA,GAAA,kBAAA,KAAC,eAAA,SAAD,EAAA,UACE,iBAAA,GAAA,kBAAA,KAAC,eAAA,mBAAD,EAAA,UACE,iBAAA,GAAA,kBAAA,MAAC,eAAA,cAAD,EAAA,UAAA;EACE,iBAAA,GAAA,kBAAA,KAAC,gCAAA,SAAD,EAAiB,OAAM,WAAY,CAAA;EACnC,iBAAA,GAAA,kBAAA,KAAC,cAAA,YAAD;GAAY,WAAU;GAAK,cAAc;GAAM,SAAQ;aACpD,EAAE,yBAAyB;GACjB,CAAA;EACb,iBAAA,GAAA,kBAAA,KAAC,cAAA,YAAD;GAAY,OAAM;GAAiB,WAAW;GAAM,SAAQ;aACzD;GACU,CAAA;EACb,iBAAA,GAAA,kBAAA,KAAC,cAAA,QAAD;GAAQ,OAAM;GAAU,SAAS;GAAa,IAAI,EAAE,IAAI,GAAG;GAAE,SAAQ;aAClE,EAAE,0BAA0B;GACtB,CAAA;EACI,EAAA,CAAA,EACG,CAAA,EACL,CAAA"}
@@ -1,7 +1,7 @@
1
1
  import SecurityLayout from "../../layouts/Security/Dialog.mjs";
2
2
  import { SecurityContainer, SecurityForm } from "./styles.mjs";
3
- import { jsx, jsxs } from "react/jsx-runtime";
4
3
  import "react";
4
+ import { jsx, jsxs } from "react/jsx-runtime";
5
5
  import { useTranslation } from "react-i18next";
6
6
  import { useLocation } from "react-router";
7
7
  import { Button, Typography } from "@mui/material";
@@ -1 +1 @@
1
- {"version":3,"file":"Success.mjs","names":["CheckCircleIcon","Button","Typography","React","useTranslation","useLocation","SecurityLayout","SecurityContainer","SecurityForm","MessageType","Login","ChangePassword","AddUser","Success","FC","t","location","queryParams","URLSearchParams","search","messageType","get","message","handleClose","window","href","mt"],"sources":["../../../src/sections/Security/Success.tsx"],"sourcesContent":["import CheckCircleIcon from '@mui/icons-material/CheckCircle';\nimport { Button, Typography } from '@mui/material';\nimport React from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { useLocation } from 'react-router';\n\nimport SecurityLayout from '../../layouts/Security/Dialog';\nimport { SecurityContainer, SecurityForm } from './styles';\n\nexport enum MessageType {\n Login = 'Login',\n ChangePassword = 'ChangePassword',\n AddUser = 'AddUser',\n Success = 'Success',\n}\n\nconst Success: React.FC = () => {\n const { t } = useTranslation();\n const location = useLocation();\n const queryParams = new URLSearchParams(location.search);\n const messageType = queryParams.get('messageType') as MessageType;\n const message = !messageType\n ? t('security.success.messageSuccess')\n : t(`security.success.message${messageType}`);\n\n const handleClose = () => {\n window.location.href = '/';\n };\n\n return (\n <SecurityLayout>\n <SecurityContainer>\n <SecurityForm>\n <CheckCircleIcon color=\"success\" />\n <Typography component=\"h1\" gutterBottom={true} variant=\"h4\">\n {t('security.success.title')}\n </Typography>\n <Typography color=\"text.secondary\" paragraph={true} variant=\"body1\">\n {message}\n </Typography>\n <Button color=\"primary\" onClick={handleClose} sx={{ mt: 2 }} variant=\"contained\">\n {t('security.success.submit')}\n </Button>\n </SecurityForm>\n </SecurityContainer>\n </SecurityLayout>\n );\n};\n\nexport default Success;\n"],"mappings":";;;;;;;;;AASA,IAAYS,cAAL,yBAAA,aAAA;AACLC,aAAAA,WAAAA;AACAC,aAAAA,oBAAAA;AACAC,aAAAA,aAAAA;AACAC,aAAAA,aAAAA;;KACF;AAEA,IAAMA,gBAA0B;CAC9B,MAAM,EAAEE,MAAMX,gBAAgB;CAC9B,MAAMY,WAAWX,aAAa;CAE9B,MAAMe,cADc,IAAIF,gBAAgBF,SAASG,OAAO,CACxBE,IAAI,cAAc;CAClD,MAAMC,UAAU,CAACF,cACbL,EAAE,kCAAkC,GACpCA,EAAE,2BAA2BK,cAAc;CAE/C,MAAMG,oBAAoB;AACxBC,SAAOR,SAASS,OAAO;;AAGzB,QACE,oBAAC,gBAAD,EAAA,UACE,oBAAC,mBAAD,EAAA,UACE,qBAAC,cAAD,EAAA,UAAA;EACE,oBAAC,iBAAD,EAAiB,OAAM,WAAS,CAAA;EAChC,oBAAC,YAAD;GAAY,WAAU;GAAK,cAAc;GAAM,SAAQ;aACpDV,EAAE,yBAAyB;GAClB,CAAA;EACZ,oBAAC,YAAD;GAAY,OAAM;GAAiB,WAAW;GAAM,SAAQ;aACzDO;GACS,CAAA;EACZ,oBAAC,QAAD;GAAQ,OAAM;GAAU,SAASC;GAAa,IAAI,EAAEG,IAAI,GAAG;GAAE,SAAQ;aAClEX,EAAE,0BAA0B;GACvB,CAAA;EACI,EAAA,CAAA,EACG,CAAA,EACJ,CAAA"}
1
+ {"version":3,"file":"Success.mjs","names":[],"sources":["../../../src/sections/Security/Success.tsx"],"sourcesContent":["import CheckCircleIcon from '@mui/icons-material/CheckCircle';\nimport { Button, Typography } from '@mui/material';\nimport React from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { useLocation } from 'react-router';\n\nimport SecurityLayout from '../../layouts/Security/Dialog';\nimport { SecurityContainer, SecurityForm } from './styles';\n\nexport enum MessageType {\n Login = 'Login',\n ChangePassword = 'ChangePassword',\n AddUser = 'AddUser',\n Success = 'Success',\n}\n\nconst Success: React.FC = () => {\n const { t } = useTranslation();\n const location = useLocation();\n const queryParams = new URLSearchParams(location.search);\n const messageType = queryParams.get('messageType') as MessageType;\n const message = !messageType\n ? t('security.success.messageSuccess')\n : t(`security.success.message${messageType}`);\n\n const handleClose = () => {\n window.location.href = '/';\n };\n\n return (\n <SecurityLayout>\n <SecurityContainer>\n <SecurityForm>\n <CheckCircleIcon color=\"success\" />\n <Typography component=\"h1\" gutterBottom={true} variant=\"h4\">\n {t('security.success.title')}\n </Typography>\n <Typography color=\"text.secondary\" paragraph={true} variant=\"body1\">\n {message}\n </Typography>\n <Button color=\"primary\" onClick={handleClose} sx={{ mt: 2 }} variant=\"contained\">\n {t('security.success.submit')}\n </Button>\n </SecurityForm>\n </SecurityContainer>\n </SecurityLayout>\n );\n};\n\nexport default Success;\n"],"mappings":";;;;;;;;;AASA,IAAY,cAAL,yBAAA,aAAA;AACL,aAAA,WAAA;AACA,aAAA,oBAAA;AACA,aAAA,aAAA;AACA,aAAA,aAAA;;KACD;AAED,IAAM,gBAA0B;CAC9B,MAAM,EAAE,MAAM,gBAAgB;CAC9B,MAAM,WAAW,aAAa;CAE9B,MAAM,cADc,IAAI,gBAAgB,SAAS,OAAO,CACxB,IAAI,cAAc;CAClD,MAAM,UAAU,CAAC,cACb,EAAE,kCAAkC,GACpC,EAAE,2BAA2B,cAAc;CAE/C,MAAM,oBAAoB;AACxB,SAAO,SAAS,OAAO;;AAGzB,QACE,oBAAC,gBAAD,EAAA,UACE,oBAAC,mBAAD,EAAA,UACE,qBAAC,cAAD,EAAA,UAAA;EACE,oBAAC,iBAAD,EAAiB,OAAM,WAAY,CAAA;EACnC,oBAAC,YAAD;GAAY,WAAU;GAAK,cAAc;GAAM,SAAQ;aACpD,EAAE,yBAAyB;GACjB,CAAA;EACb,oBAAC,YAAD;GAAY,OAAM;GAAiB,WAAW;GAAM,SAAQ;aACzD;GACU,CAAA;EACb,oBAAC,QAAD;GAAQ,OAAM;GAAU,SAAS;GAAa,IAAI,EAAE,IAAI,GAAG;GAAE,SAAQ;aAClE,EAAE,0BAA0B;GACtB,CAAA;EACI,EAAA,CAAA,EACG,CAAA,EACL,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"styles.js","names":["Box","TextField","styled","SecurityContainer","theme","display","flexDirection","alignItems","justifyContent","minHeight","padding","spacing","backgroundColor","palette","background","default","SecurityForm","width","maxWidth","paper","borderRadius","shape","boxShadow","shadows","SecurityTextField","marginTop","marginBottom"],"sources":["../../../src/sections/Security/styles.ts"],"sourcesContent":["import { Box, TextField } from '@mui/material';\nimport { styled } from '@mui/material/styles';\n\nexport const SecurityContainer = styled(Box)(({ theme }) => ({\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'center',\n justifyContent: 'center',\n minHeight: '100%',\n padding: theme.spacing(2),\n backgroundColor: theme.palette.background.default,\n}));\n\nexport const SecurityForm = styled(Box)(({ theme }) => ({\n width: '100%',\n maxWidth: 420,\n padding: theme.spacing(4),\n backgroundColor: theme.palette.background.paper,\n borderRadius: theme.shape.borderRadius,\n boxShadow: theme.shadows[3],\n}));\n\nexport const SecurityTextField = styled(TextField)(({ theme }) => ({\n width: '100%',\n marginTop: theme.spacing(1),\n marginBottom: theme.spacing(1),\n}));\n"],"mappings":";;;;AAGA,IAAaG,qBAAAA,GAAAA,qBAAAA,QAA2BH,cAAAA,IAAI,EAAE,EAAEI,aAAa;CAC3DC,SAAS;CACTC,eAAe;CACfC,YAAY;CACZC,gBAAgB;CAChBC,WAAW;CACXC,SAASN,MAAMO,QAAQ,EAAE;CACzBC,iBAAiBR,MAAMS,QAAQC,WAAWC;CAC3C,EAAE;AAEH,IAAaC,gBAAAA,GAAAA,qBAAAA,QAAsBhB,cAAAA,IAAI,EAAE,EAAEI,aAAa;CACtDa,OAAO;CACPC,UAAU;CACVR,SAASN,MAAMO,QAAQ,EAAE;CACzBC,iBAAiBR,MAAMS,QAAQC,WAAWK;CAC1CC,cAAchB,MAAMiB,MAAMD;CAC1BE,WAAWlB,MAAMmB,QAAQ;CAC1B,EAAE;AAEH,IAAaC,qBAAAA,GAAAA,qBAAAA,QAA2BvB,cAAAA,UAAU,EAAE,EAAEG,aAAa;CACjEa,OAAO;CACPQ,WAAWrB,MAAMO,QAAQ,EAAE;CAC3Be,cAActB,MAAMO,QAAQ,EAAC;CAC9B,EAAE"}
1
+ {"version":3,"file":"styles.js","names":[],"sources":["../../../src/sections/Security/styles.ts"],"sourcesContent":["import { Box, TextField } from '@mui/material';\nimport { styled } from '@mui/material/styles';\n\nexport const SecurityContainer = styled(Box)(({ theme }) => ({\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'center',\n justifyContent: 'center',\n minHeight: '100%',\n padding: theme.spacing(2),\n backgroundColor: theme.palette.background.default,\n}));\n\nexport const SecurityForm = styled(Box)(({ theme }) => ({\n width: '100%',\n maxWidth: 420,\n padding: theme.spacing(4),\n backgroundColor: theme.palette.background.paper,\n borderRadius: theme.shape.borderRadius,\n boxShadow: theme.shadows[3],\n}));\n\nexport const SecurityTextField = styled(TextField)(({ theme }) => ({\n width: '100%',\n marginTop: theme.spacing(1),\n marginBottom: theme.spacing(1),\n}));\n"],"mappings":";;;;AAGA,IAAa,qBAAA,GAAA,qBAAA,QAA2B,cAAA,IAAI,EAAE,EAAE,aAAa;CAC3D,SAAS;CACT,eAAe;CACf,YAAY;CACZ,gBAAgB;CAChB,WAAW;CACX,SAAS,MAAM,QAAQ,EAAE;CACzB,iBAAiB,MAAM,QAAQ,WAAW;CAC3C,EAAE;AAEH,IAAa,gBAAA,GAAA,qBAAA,QAAsB,cAAA,IAAI,EAAE,EAAE,aAAa;CACtD,OAAO;CACP,UAAU;CACV,SAAS,MAAM,QAAQ,EAAE;CACzB,iBAAiB,MAAM,QAAQ,WAAW;CAC1C,cAAc,MAAM,MAAM;CAC1B,WAAW,MAAM,QAAQ;CAC1B,EAAE;AAEH,IAAa,qBAAA,GAAA,qBAAA,QAA2B,cAAA,UAAU,EAAE,EAAE,aAAa;CACjE,OAAO;CACP,WAAW,MAAM,QAAQ,EAAE;CAC3B,cAAc,MAAM,QAAQ,EAAE;CAC/B,EAAE"}
@@ -1 +1 @@
1
- {"version":3,"file":"styles.mjs","names":["Box","TextField","styled","SecurityContainer","theme","display","flexDirection","alignItems","justifyContent","minHeight","padding","spacing","backgroundColor","palette","background","default","SecurityForm","width","maxWidth","paper","borderRadius","shape","boxShadow","shadows","SecurityTextField","marginTop","marginBottom"],"sources":["../../../src/sections/Security/styles.ts"],"sourcesContent":["import { Box, TextField } from '@mui/material';\nimport { styled } from '@mui/material/styles';\n\nexport const SecurityContainer = styled(Box)(({ theme }) => ({\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'center',\n justifyContent: 'center',\n minHeight: '100%',\n padding: theme.spacing(2),\n backgroundColor: theme.palette.background.default,\n}));\n\nexport const SecurityForm = styled(Box)(({ theme }) => ({\n width: '100%',\n maxWidth: 420,\n padding: theme.spacing(4),\n backgroundColor: theme.palette.background.paper,\n borderRadius: theme.shape.borderRadius,\n boxShadow: theme.shadows[3],\n}));\n\nexport const SecurityTextField = styled(TextField)(({ theme }) => ({\n width: '100%',\n marginTop: theme.spacing(1),\n marginBottom: theme.spacing(1),\n}));\n"],"mappings":";;;AAGA,IAAaG,oBAAoBD,OAAOF,IAAI,EAAE,EAAEI,aAAa;CAC3DC,SAAS;CACTC,eAAe;CACfC,YAAY;CACZC,gBAAgB;CAChBC,WAAW;CACXC,SAASN,MAAMO,QAAQ,EAAE;CACzBC,iBAAiBR,MAAMS,QAAQC,WAAWC;CAC3C,EAAE;AAEH,IAAaC,eAAed,OAAOF,IAAI,EAAE,EAAEI,aAAa;CACtDa,OAAO;CACPC,UAAU;CACVR,SAASN,MAAMO,QAAQ,EAAE;CACzBC,iBAAiBR,MAAMS,QAAQC,WAAWK;CAC1CC,cAAchB,MAAMiB,MAAMD;CAC1BE,WAAWlB,MAAMmB,QAAQ;CAC1B,EAAE;AAEH,IAAaC,oBAAoBtB,OAAOD,UAAU,EAAE,EAAEG,aAAa;CACjEa,OAAO;CACPQ,WAAWrB,MAAMO,QAAQ,EAAE;CAC3Be,cAActB,MAAMO,QAAQ,EAAC;CAC9B,EAAE"}
1
+ {"version":3,"file":"styles.mjs","names":[],"sources":["../../../src/sections/Security/styles.ts"],"sourcesContent":["import { Box, TextField } from '@mui/material';\nimport { styled } from '@mui/material/styles';\n\nexport const SecurityContainer = styled(Box)(({ theme }) => ({\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'center',\n justifyContent: 'center',\n minHeight: '100%',\n padding: theme.spacing(2),\n backgroundColor: theme.palette.background.default,\n}));\n\nexport const SecurityForm = styled(Box)(({ theme }) => ({\n width: '100%',\n maxWidth: 420,\n padding: theme.spacing(4),\n backgroundColor: theme.palette.background.paper,\n borderRadius: theme.shape.borderRadius,\n boxShadow: theme.shadows[3],\n}));\n\nexport const SecurityTextField = styled(TextField)(({ theme }) => ({\n width: '100%',\n marginTop: theme.spacing(1),\n marginBottom: theme.spacing(1),\n}));\n"],"mappings":";;;AAGA,IAAa,oBAAoB,OAAO,IAAI,EAAE,EAAE,aAAa;CAC3D,SAAS;CACT,eAAe;CACf,YAAY;CACZ,gBAAgB;CAChB,WAAW;CACX,SAAS,MAAM,QAAQ,EAAE;CACzB,iBAAiB,MAAM,QAAQ,WAAW;CAC3C,EAAE;AAEH,IAAa,eAAe,OAAO,IAAI,EAAE,EAAE,aAAa;CACtD,OAAO;CACP,UAAU;CACV,SAAS,MAAM,QAAQ,EAAE;CACzB,iBAAiB,MAAM,QAAQ,WAAW;CAC1C,cAAc,MAAM,MAAM;CAC1B,WAAW,MAAM,QAAQ;CAC1B,EAAE;AAEH,IAAa,oBAAoB,OAAO,UAAU,EAAE,EAAE,aAAa;CACjE,OAAO;CACP,WAAW,MAAM,QAAQ,EAAE;CAC3B,cAAc,MAAM,QAAQ,EAAE;CAC/B,EAAE"}
@@ -1 +1 @@
1
- {"version":3,"file":"utils.js","names":["isEmpty","Route","SecurityUrlParams","next","user","LocationLike","search","getSecurityUrlParams","location","queryParams","URLSearchParams","get","length","startsWith","LOGIN_API","match","TranslationFunction","key","options","Record","DispatchAction","payload","type","description","validateCredentials","username","password","t","dispatchAction"],"sources":["../../../src/sections/Security/utils.ts"],"sourcesContent":["import isEmpty from 'lodash/isEmpty';\n\nimport { Route } from '../../utils';\n\nexport interface SecurityUrlParams {\n readonly next: string;\n readonly user: string;\n}\n\nexport interface LocationLike {\n readonly search: string;\n}\n\nexport function getSecurityUrlParams(location: LocationLike): SecurityUrlParams {\n const queryParams = new URLSearchParams(location.search);\n\n // Get next parameter to match v1 URLs\n let next = queryParams.get('next') || '';\n if (next.length > 0 && (!next.startsWith(Route.LOGIN_API) || !next.match(/\\/[-0-9a-f]{36}$/))) {\n next = '';\n }\n\n // Ignore user parameter if it does not match expected format (prevent XSS attacks)\n let user = queryParams.get('user') || '';\n if (user.length > 0 && !user.match(/^[a-zA-Z0-9-_]{1,255}$/)) {\n user = '';\n }\n\n return { next, user };\n}\n\nexport interface TranslationFunction {\n (key: string, options?: Record<string, unknown>): string;\n}\n\nexport interface DispatchAction {\n (payload: { type: string; description: string }): void;\n}\n\nexport const validateCredentials = (\n username: string,\n password: string,\n t: TranslationFunction,\n dispatchAction: DispatchAction\n): boolean => {\n if (!username || !password || isEmpty(username) || isEmpty(password)) {\n dispatchAction({\n type: 'error',\n description: t('security.error.username-or-password-cant-be-empty'),\n });\n return false;\n }\n\n if (username.length < 2) {\n dispatchAction({\n type: 'error',\n description: t('security.error.username-min-length', { length: 2 }),\n });\n return false;\n }\n\n // Validate username contains only url-safe characters\n if (!username.match(/^[-a-zA-Z0-9_.!~*'()@]+$/)) {\n dispatchAction({\n type: 'error',\n description: t('security.error.username-must-be-url-safe'),\n });\n return false;\n }\n\n // Note: password rules should be checked in auth plugin\n return true;\n};\n"],"mappings":";;;;;AAaA,SAAgBO,qBAAqBC,UAA2C;CAC9E,MAAMC,cAAc,IAAIC,gBAAgBF,SAASF,OAAO;CAGxD,IAAIH,OAAOM,YAAYE,IAAI,OAAO,IAAI;AACtC,KAAIR,KAAKS,SAAS,MAAM,CAACT,KAAKU,WAAWZ,eAAAA,MAAMa,UAAU,IAAI,CAACX,KAAKY,MAAM,mBAAmB,EAC1FZ,QAAO;CAIT,IAAIC,OAAOK,YAAYE,IAAI,OAAO,IAAI;AACtC,KAAIP,KAAKQ,SAAS,KAAK,CAACR,KAAKW,MAAM,yBAAyB,CAC1DX,QAAO;AAGT,QAAO;EAAED;EAAMC;EAAM"}
1
+ {"version":3,"file":"utils.js","names":[],"sources":["../../../src/sections/Security/utils.ts"],"sourcesContent":["import isEmpty from 'lodash/isEmpty';\n\nimport { Route } from '../../utils';\n\nexport interface SecurityUrlParams {\n readonly next: string;\n readonly user: string;\n}\n\nexport interface LocationLike {\n readonly search: string;\n}\n\nexport function getSecurityUrlParams(location: LocationLike): SecurityUrlParams {\n const queryParams = new URLSearchParams(location.search);\n\n // Get next parameter to match v1 URLs\n let next = queryParams.get('next') || '';\n if (next.length > 0 && (!next.startsWith(Route.LOGIN_API) || !next.match(/\\/[-0-9a-f]{36}$/))) {\n next = '';\n }\n\n // Ignore user parameter if it does not match expected format (prevent XSS attacks)\n let user = queryParams.get('user') || '';\n if (user.length > 0 && !user.match(/^[a-zA-Z0-9-_]{1,255}$/)) {\n user = '';\n }\n\n return { next, user };\n}\n\nexport interface TranslationFunction {\n (key: string, options?: Record<string, unknown>): string;\n}\n\nexport interface DispatchAction {\n (payload: { type: string; description: string }): void;\n}\n\nexport const validateCredentials = (\n username: string,\n password: string,\n t: TranslationFunction,\n dispatchAction: DispatchAction\n): boolean => {\n if (!username || !password || isEmpty(username) || isEmpty(password)) {\n dispatchAction({\n type: 'error',\n description: t('security.error.username-or-password-cant-be-empty'),\n });\n return false;\n }\n\n if (username.length < 2) {\n dispatchAction({\n type: 'error',\n description: t('security.error.username-min-length', { length: 2 }),\n });\n return false;\n }\n\n // Validate username contains only url-safe characters\n if (!username.match(/^[-a-zA-Z0-9_.!~*'()@]+$/)) {\n dispatchAction({\n type: 'error',\n description: t('security.error.username-must-be-url-safe'),\n });\n return false;\n }\n\n // Note: password rules should be checked in auth plugin\n return true;\n};\n"],"mappings":";;;;;AAaA,SAAgB,qBAAqB,UAA2C;CAC9E,MAAM,cAAc,IAAI,gBAAgB,SAAS,OAAO;CAGxD,IAAI,OAAO,YAAY,IAAI,OAAO,IAAI;AACtC,KAAI,KAAK,SAAS,MAAM,CAAC,KAAK,WAAW,eAAA,MAAM,UAAU,IAAI,CAAC,KAAK,MAAM,mBAAmB,EAC1F,QAAO;CAIT,IAAI,OAAO,YAAY,IAAI,OAAO,IAAI;AACtC,KAAI,KAAK,SAAS,KAAK,CAAC,KAAK,MAAM,yBAAyB,CAC1D,QAAO;AAGT,QAAO;EAAE;EAAM;EAAM"}
@@ -1 +1 @@
1
- {"version":3,"file":"utils.mjs","names":["isEmpty","Route","SecurityUrlParams","next","user","LocationLike","search","getSecurityUrlParams","location","queryParams","URLSearchParams","get","length","startsWith","LOGIN_API","match","TranslationFunction","key","options","Record","DispatchAction","payload","type","description","validateCredentials","username","password","t","dispatchAction"],"sources":["../../../src/sections/Security/utils.ts"],"sourcesContent":["import isEmpty from 'lodash/isEmpty';\n\nimport { Route } from '../../utils';\n\nexport interface SecurityUrlParams {\n readonly next: string;\n readonly user: string;\n}\n\nexport interface LocationLike {\n readonly search: string;\n}\n\nexport function getSecurityUrlParams(location: LocationLike): SecurityUrlParams {\n const queryParams = new URLSearchParams(location.search);\n\n // Get next parameter to match v1 URLs\n let next = queryParams.get('next') || '';\n if (next.length > 0 && (!next.startsWith(Route.LOGIN_API) || !next.match(/\\/[-0-9a-f]{36}$/))) {\n next = '';\n }\n\n // Ignore user parameter if it does not match expected format (prevent XSS attacks)\n let user = queryParams.get('user') || '';\n if (user.length > 0 && !user.match(/^[a-zA-Z0-9-_]{1,255}$/)) {\n user = '';\n }\n\n return { next, user };\n}\n\nexport interface TranslationFunction {\n (key: string, options?: Record<string, unknown>): string;\n}\n\nexport interface DispatchAction {\n (payload: { type: string; description: string }): void;\n}\n\nexport const validateCredentials = (\n username: string,\n password: string,\n t: TranslationFunction,\n dispatchAction: DispatchAction\n): boolean => {\n if (!username || !password || isEmpty(username) || isEmpty(password)) {\n dispatchAction({\n type: 'error',\n description: t('security.error.username-or-password-cant-be-empty'),\n });\n return false;\n }\n\n if (username.length < 2) {\n dispatchAction({\n type: 'error',\n description: t('security.error.username-min-length', { length: 2 }),\n });\n return false;\n }\n\n // Validate username contains only url-safe characters\n if (!username.match(/^[-a-zA-Z0-9_.!~*'()@]+$/)) {\n dispatchAction({\n type: 'error',\n description: t('security.error.username-must-be-url-safe'),\n });\n return false;\n }\n\n // Note: password rules should be checked in auth plugin\n return true;\n};\n"],"mappings":";;;;AAaA,SAAgBO,qBAAqBC,UAA2C;CAC9E,MAAMC,cAAc,IAAIC,gBAAgBF,SAASF,OAAO;CAGxD,IAAIH,OAAOM,YAAYE,IAAI,OAAO,IAAI;AACtC,KAAIR,KAAKS,SAAS,MAAM,CAACT,KAAKU,WAAWZ,MAAMa,UAAU,IAAI,CAACX,KAAKY,MAAM,mBAAmB,EAC1FZ,QAAO;CAIT,IAAIC,OAAOK,YAAYE,IAAI,OAAO,IAAI;AACtC,KAAIP,KAAKQ,SAAS,KAAK,CAACR,KAAKW,MAAM,yBAAyB,CAC1DX,QAAO;AAGT,QAAO;EAAED;EAAMC;EAAM"}
1
+ {"version":3,"file":"utils.mjs","names":[],"sources":["../../../src/sections/Security/utils.ts"],"sourcesContent":["import isEmpty from 'lodash/isEmpty';\n\nimport { Route } from '../../utils';\n\nexport interface SecurityUrlParams {\n readonly next: string;\n readonly user: string;\n}\n\nexport interface LocationLike {\n readonly search: string;\n}\n\nexport function getSecurityUrlParams(location: LocationLike): SecurityUrlParams {\n const queryParams = new URLSearchParams(location.search);\n\n // Get next parameter to match v1 URLs\n let next = queryParams.get('next') || '';\n if (next.length > 0 && (!next.startsWith(Route.LOGIN_API) || !next.match(/\\/[-0-9a-f]{36}$/))) {\n next = '';\n }\n\n // Ignore user parameter if it does not match expected format (prevent XSS attacks)\n let user = queryParams.get('user') || '';\n if (user.length > 0 && !user.match(/^[a-zA-Z0-9-_]{1,255}$/)) {\n user = '';\n }\n\n return { next, user };\n}\n\nexport interface TranslationFunction {\n (key: string, options?: Record<string, unknown>): string;\n}\n\nexport interface DispatchAction {\n (payload: { type: string; description: string }): void;\n}\n\nexport const validateCredentials = (\n username: string,\n password: string,\n t: TranslationFunction,\n dispatchAction: DispatchAction\n): boolean => {\n if (!username || !password || isEmpty(username) || isEmpty(password)) {\n dispatchAction({\n type: 'error',\n description: t('security.error.username-or-password-cant-be-empty'),\n });\n return false;\n }\n\n if (username.length < 2) {\n dispatchAction({\n type: 'error',\n description: t('security.error.username-min-length', { length: 2 }),\n });\n return false;\n }\n\n // Validate username contains only url-safe characters\n if (!username.match(/^[-a-zA-Z0-9_.!~*'()@]+$/)) {\n dispatchAction({\n type: 'error',\n description: t('security.error.username-must-be-url-safe'),\n });\n return false;\n }\n\n // Note: password rules should be checked in auth plugin\n return true;\n};\n"],"mappings":";;;;AAaA,SAAgB,qBAAqB,UAA2C;CAC9E,MAAM,cAAc,IAAI,gBAAgB,SAAS,OAAO;CAGxD,IAAI,OAAO,YAAY,IAAI,OAAO,IAAI;AACtC,KAAI,KAAK,SAAS,MAAM,CAAC,KAAK,WAAW,MAAM,UAAU,IAAI,CAAC,KAAK,MAAM,mBAAmB,EAC1F,QAAO;CAIT,IAAI,OAAO,YAAY,IAAI,OAAO,IAAI;AACtC,KAAI,KAAK,SAAS,KAAK,CAAC,KAAK,MAAM,yBAAyB,CAC1D,QAAO;AAGT,QAAO;EAAE;EAAM;EAAM"}
@@ -24,9 +24,9 @@ const require_SideBarTitle = require("../../components/SideBarTitle/SideBarTitle
24
24
  require("../../components/SideBarTitle/index.js");
25
25
  const require_Repository = require("../../components/Repository/Repository.js");
26
26
  require("../../components/Repository/index.js");
27
- let react_jsx_runtime = require("react/jsx-runtime");
28
27
  let react = require("react");
29
28
  react = require_runtime.__toESM(react);
29
+ let react_jsx_runtime = require("react/jsx-runtime");
30
30
  let _mui_material_Paper = require("@mui/material/Paper");
31
31
  _mui_material_Paper = require_runtime.__toESM(_mui_material_Paper);
32
32
  //#region src/sections/SideBar/Sidebar.tsx
@@ -1 +1 @@
1
- {"version":3,"file":"Sidebar.js","names":["Paper","React","ActionBar","Author","Developers","DeveloperType","Dist","Engines","FundButton","Install","Keywords","Repository","SideBarTitle","DownloadProvider","useConfig","useVersion","ModuleType","PackageMetaInterface","getModuleTypes","manifest","latest","moduleTypes","type","main","push","Array","from","Set","DetailSidebar","FC","packageMeta","packageName","packageVersion","configOptions","version","time","position","top","p","ml","xs","md","description","types","showDownloadTarball","showRaw","MAINTAINERS","CONTRIBUTORS"],"sources":["../../../src/sections/SideBar/Sidebar.tsx"],"sourcesContent":["import Paper from '@mui/material/Paper';\nimport React from 'react';\n\nimport ActionBar from '../../components/ActionBar';\nimport Author from '../../components/Author';\nimport Developers, { DeveloperType } from '../../components/Developers';\nimport Dist from '../../components/Distribution';\nimport Engines from '../../components/Engines';\nimport FundButton from '../../components/FundButton';\nimport Install from '../../components/Install';\nimport Keywords from '../../components/Keywords';\nimport Repository from '../../components/Repository';\nimport SideBarTitle from '../../components/SideBarTitle';\nimport { DownloadProvider, useConfig, useVersion } from '../../providers';\nimport type { ModuleType, PackageMetaInterface } from '../../types/packageMeta';\n\nconst getModuleTypes = (manifest: PackageMetaInterface) => {\n if (!manifest.latest) return [];\n\n const moduleTypes: ModuleType[] = [manifest.latest.type || 'commonjs'];\n\n if (manifest.latest.main) {\n moduleTypes.push('commonjs');\n }\n\n return Array.from(new Set(moduleTypes));\n};\n\nconst DetailSidebar: React.FC = () => {\n const { packageMeta, packageName, packageVersion } = useVersion();\n\n const { configOptions } = useConfig();\n const version = packageVersion || packageMeta?.latest.version || '';\n const time = packageMeta?.time ? packageMeta.time[version] : '';\n if (!packageMeta || !packageName) {\n return null;\n }\n\n return (\n <Paper data-testid=\"sidebar\" sx={{ position: 'sticky', top: 0, p: 2, ml: { xs: 0, md: 2 } }}>\n <SideBarTitle\n description={packageMeta.latest?.description}\n hasTypes={typeof packageMeta.latest?.types === 'string'}\n isLatest={typeof packageVersion === 'undefined'}\n moduleTypes={getModuleTypes(packageMeta)}\n packageName={packageName}\n time={time}\n version={version}\n />\n <DownloadProvider>\n <ActionBar\n packageMeta={packageMeta}\n showDownloadTarball={configOptions.showDownloadTarball}\n showRaw={configOptions.showRaw}\n />\n </DownloadProvider>\n <FundButton packageMeta={packageMeta} />\n <Install configOptions={configOptions} packageMeta={packageMeta} packageName={packageName} />\n <Repository packageMeta={packageMeta} />\n <Engines packageMeta={packageMeta} />\n <Dist packageMeta={packageMeta} />\n <Keywords packageMeta={packageMeta} />\n <Author packageMeta={packageMeta} />\n <Developers packageMeta={packageMeta} type={DeveloperType.MAINTAINERS} />\n <Developers packageMeta={packageMeta} type={DeveloperType.CONTRIBUTORS} />\n </Paper>\n );\n};\n\nexport default DetailSidebar;\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAgBA,IAAMkB,kBAAkBC,aAAmC;AACzD,KAAI,CAACA,SAASC,OAAQ,QAAO,EAAE;CAE/B,MAAMC,cAA4B,CAACF,SAASC,OAAOE,QAAQ,WAAW;AAEtE,KAAIH,SAASC,OAAOG,KAClBF,aAAYG,KAAK,WAAW;AAG9B,QAAOC,MAAMC,KAAK,IAAIC,IAAIN,YAAY,CAAC;;AAGzC,IAAMO,sBAAgC;CACpC,MAAM,EAAEE,aAAaC,aAAaC,mBAAmBjB,wBAAAA,YAAY;CAEjE,MAAM,EAAEkB,kBAAkBnB,iCAAAA,WAAW;CACrC,MAAMoB,UAAUF,kBAAkBF,aAAaV,OAAOc,WAAW;CACjE,MAAMC,OAAOL,aAAaK,OAAOL,YAAYK,KAAKD,WAAW;AAC7D,KAAI,CAACJ,eAAe,CAACC,YACnB,QAAO;AAGT,QACE,iBAAA,GAAA,kBAAA,MAAC,oBAAA,SAAD;EAAO,eAAY;EAAU,IAAI;GAAEK,UAAU;GAAUC,KAAK;GAAGC,GAAG;GAAGC,IAAI;IAAEC,IAAI;IAAGC,IAAI;IAAE;GAAG;YAA3F;GACE,iBAAA,GAAA,kBAAA,KAAC,qBAAA,SAAD;IACE,aAAaX,YAAYV,QAAQsB;IACjC,UAAU,OAAOZ,YAAYV,QAAQuB,UAAU;IAC/C,UAAU,OAAOX,mBAAmB;IACpC,aAAad,eAAeY,YAAY;IAC3BC;IACPI;IACGD;IAAQ,CAAA;GAEnB,iBAAA,GAAA,kBAAA,KAAC,yBAAA,kBAAD,EAAA,UACE,iBAAA,GAAA,kBAAA,KAAC,kBAAA,SAAD;IACeJ;IACb,qBAAqBG,cAAcW;IACnC,SAASX,cAAcY;IAAQ,CAAA,EAEjB,CAAA;GAClB,iBAAA,GAAA,kBAAA,KAAC,mBAAA,SAAD,EAAyBf,aAAY,CAAA;GACrC,iBAAA,GAAA,kBAAA,KAAC,gBAAA,SAAD;IAAwBG;IAA4BH;IAA0BC;IAAY,CAAA;GAC1F,iBAAA,GAAA,kBAAA,KAAC,mBAAA,SAAD,EAAyBD,aAAY,CAAA;GACrC,iBAAA,GAAA,kBAAA,KAAC,gBAAA,SAAD,EAAsBA,aAAY,CAAA;GAClC,iBAAA,GAAA,kBAAA,KAAC,aAAA,SAAD,EAAmBA,aAAY,CAAA;GAC/B,iBAAA,GAAA,kBAAA,KAAC,iBAAA,SAAD,EAAuBA,aAAY,CAAA;GACnC,iBAAA,GAAA,kBAAA,KAAC,eAAA,SAAD,EAAqBA,aAAY,CAAA;GACjC,iBAAA,GAAA,kBAAA,KAAC,mBAAA,SAAD;IAAyBA;IAAa,MAAMzB,sBAAAA,cAAcyC;IAAY,CAAA;GACtE,iBAAA,GAAA,kBAAA,KAAC,mBAAA,SAAD;IAAyBhB;IAAa,MAAMzB,sBAAAA,cAAc0C;IAAa,CAAA;GACjE"}
1
+ {"version":3,"file":"Sidebar.js","names":[],"sources":["../../../src/sections/SideBar/Sidebar.tsx"],"sourcesContent":["import Paper from '@mui/material/Paper';\nimport React from 'react';\n\nimport ActionBar from '../../components/ActionBar';\nimport Author from '../../components/Author';\nimport Developers, { DeveloperType } from '../../components/Developers';\nimport Dist from '../../components/Distribution';\nimport Engines from '../../components/Engines';\nimport FundButton from '../../components/FundButton';\nimport Install from '../../components/Install';\nimport Keywords from '../../components/Keywords';\nimport Repository from '../../components/Repository';\nimport SideBarTitle from '../../components/SideBarTitle';\nimport { DownloadProvider, useConfig, useVersion } from '../../providers';\nimport type { ModuleType, PackageMetaInterface } from '../../types/packageMeta';\n\nconst getModuleTypes = (manifest: PackageMetaInterface) => {\n if (!manifest.latest) return [];\n\n const moduleTypes: ModuleType[] = [manifest.latest.type || 'commonjs'];\n\n if (manifest.latest.main) {\n moduleTypes.push('commonjs');\n }\n\n return Array.from(new Set(moduleTypes));\n};\n\nconst DetailSidebar: React.FC = () => {\n const { packageMeta, packageName, packageVersion } = useVersion();\n\n const { configOptions } = useConfig();\n const version = packageVersion || packageMeta?.latest.version || '';\n const time = packageMeta?.time ? packageMeta.time[version] : '';\n if (!packageMeta || !packageName) {\n return null;\n }\n\n return (\n <Paper data-testid=\"sidebar\" sx={{ position: 'sticky', top: 0, p: 2, ml: { xs: 0, md: 2 } }}>\n <SideBarTitle\n description={packageMeta.latest?.description}\n hasTypes={typeof packageMeta.latest?.types === 'string'}\n isLatest={typeof packageVersion === 'undefined'}\n moduleTypes={getModuleTypes(packageMeta)}\n packageName={packageName}\n time={time}\n version={version}\n />\n <DownloadProvider>\n <ActionBar\n packageMeta={packageMeta}\n showDownloadTarball={configOptions.showDownloadTarball}\n showRaw={configOptions.showRaw}\n />\n </DownloadProvider>\n <FundButton packageMeta={packageMeta} />\n <Install configOptions={configOptions} packageMeta={packageMeta} packageName={packageName} />\n <Repository packageMeta={packageMeta} />\n <Engines packageMeta={packageMeta} />\n <Dist packageMeta={packageMeta} />\n <Keywords packageMeta={packageMeta} />\n <Author packageMeta={packageMeta} />\n <Developers packageMeta={packageMeta} type={DeveloperType.MAINTAINERS} />\n <Developers packageMeta={packageMeta} type={DeveloperType.CONTRIBUTORS} />\n </Paper>\n );\n};\n\nexport default DetailSidebar;\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAgBA,IAAM,kBAAkB,aAAmC;AACzD,KAAI,CAAC,SAAS,OAAQ,QAAO,EAAE;CAE/B,MAAM,cAA4B,CAAC,SAAS,OAAO,QAAQ,WAAW;AAEtE,KAAI,SAAS,OAAO,KAClB,aAAY,KAAK,WAAW;AAG9B,QAAO,MAAM,KAAK,IAAI,IAAI,YAAY,CAAC;;AAGzC,IAAM,sBAAgC;CACpC,MAAM,EAAE,aAAa,aAAa,mBAAmB,wBAAA,YAAY;CAEjE,MAAM,EAAE,kBAAkB,iCAAA,WAAW;CACrC,MAAM,UAAU,kBAAkB,aAAa,OAAO,WAAW;CACjE,MAAM,OAAO,aAAa,OAAO,YAAY,KAAK,WAAW;AAC7D,KAAI,CAAC,eAAe,CAAC,YACnB,QAAO;AAGT,QACE,iBAAA,GAAA,kBAAA,MAAC,oBAAA,SAAD;EAAO,eAAY;EAAU,IAAI;GAAE,UAAU;GAAU,KAAK;GAAG,GAAG;GAAG,IAAI;IAAE,IAAI;IAAG,IAAI;IAAG;GAAE;YAA3F;GACE,iBAAA,GAAA,kBAAA,KAAC,qBAAA,SAAD;IACE,aAAa,YAAY,QAAQ;IACjC,UAAU,OAAO,YAAY,QAAQ,UAAU;IAC/C,UAAU,OAAO,mBAAmB;IACpC,aAAa,eAAe,YAAY;IAC3B;IACP;IACG;IACT,CAAA;GACF,iBAAA,GAAA,kBAAA,KAAC,yBAAA,kBAAD,EAAA,UACE,iBAAA,GAAA,kBAAA,KAAC,kBAAA,SAAD;IACe;IACb,qBAAqB,cAAc;IACnC,SAAS,cAAc;IACvB,CAAA,EACe,CAAA;GACnB,iBAAA,GAAA,kBAAA,KAAC,mBAAA,SAAD,EAAyB,aAAe,CAAA;GACxC,iBAAA,GAAA,kBAAA,KAAC,gBAAA,SAAD;IAAwB;IAA4B;IAA0B;IAAe,CAAA;GAC7F,iBAAA,GAAA,kBAAA,KAAC,mBAAA,SAAD,EAAyB,aAAe,CAAA;GACxC,iBAAA,GAAA,kBAAA,KAAC,gBAAA,SAAD,EAAsB,aAAe,CAAA;GACrC,iBAAA,GAAA,kBAAA,KAAC,aAAA,SAAD,EAAmB,aAAe,CAAA;GAClC,iBAAA,GAAA,kBAAA,KAAC,iBAAA,SAAD,EAAuB,aAAe,CAAA;GACtC,iBAAA,GAAA,kBAAA,KAAC,eAAA,SAAD,EAAqB,aAAe,CAAA;GACpC,iBAAA,GAAA,kBAAA,KAAC,mBAAA,SAAD;IAAyB;IAAa,MAAM,sBAAA,cAAc;IAAe,CAAA;GACzE,iBAAA,GAAA,kBAAA,KAAC,mBAAA,SAAD;IAAyB;IAAa,MAAM,sBAAA,cAAc;IAAgB,CAAA;GACpE"}
@@ -23,8 +23,8 @@ import DetailSidebarTitle from "../../components/SideBarTitle/SideBarTitle.mjs";
23
23
  import "../../components/SideBarTitle/index.mjs";
24
24
  import Repository from "../../components/Repository/Repository.mjs";
25
25
  import "../../components/Repository/index.mjs";
26
- import { jsx, jsxs } from "react/jsx-runtime";
27
26
  import "react";
27
+ import { jsx, jsxs } from "react/jsx-runtime";
28
28
  import Paper from "@mui/material/Paper";
29
29
  //#region src/sections/SideBar/Sidebar.tsx
30
30
  var getModuleTypes = (manifest) => {
@@ -1 +1 @@
1
- {"version":3,"file":"Sidebar.mjs","names":["Paper","React","ActionBar","Author","Developers","DeveloperType","Dist","Engines","FundButton","Install","Keywords","Repository","SideBarTitle","DownloadProvider","useConfig","useVersion","ModuleType","PackageMetaInterface","getModuleTypes","manifest","latest","moduleTypes","type","main","push","Array","from","Set","DetailSidebar","FC","packageMeta","packageName","packageVersion","configOptions","version","time","position","top","p","ml","xs","md","description","types","showDownloadTarball","showRaw","MAINTAINERS","CONTRIBUTORS"],"sources":["../../../src/sections/SideBar/Sidebar.tsx"],"sourcesContent":["import Paper from '@mui/material/Paper';\nimport React from 'react';\n\nimport ActionBar from '../../components/ActionBar';\nimport Author from '../../components/Author';\nimport Developers, { DeveloperType } from '../../components/Developers';\nimport Dist from '../../components/Distribution';\nimport Engines from '../../components/Engines';\nimport FundButton from '../../components/FundButton';\nimport Install from '../../components/Install';\nimport Keywords from '../../components/Keywords';\nimport Repository from '../../components/Repository';\nimport SideBarTitle from '../../components/SideBarTitle';\nimport { DownloadProvider, useConfig, useVersion } from '../../providers';\nimport type { ModuleType, PackageMetaInterface } from '../../types/packageMeta';\n\nconst getModuleTypes = (manifest: PackageMetaInterface) => {\n if (!manifest.latest) return [];\n\n const moduleTypes: ModuleType[] = [manifest.latest.type || 'commonjs'];\n\n if (manifest.latest.main) {\n moduleTypes.push('commonjs');\n }\n\n return Array.from(new Set(moduleTypes));\n};\n\nconst DetailSidebar: React.FC = () => {\n const { packageMeta, packageName, packageVersion } = useVersion();\n\n const { configOptions } = useConfig();\n const version = packageVersion || packageMeta?.latest.version || '';\n const time = packageMeta?.time ? packageMeta.time[version] : '';\n if (!packageMeta || !packageName) {\n return null;\n }\n\n return (\n <Paper data-testid=\"sidebar\" sx={{ position: 'sticky', top: 0, p: 2, ml: { xs: 0, md: 2 } }}>\n <SideBarTitle\n description={packageMeta.latest?.description}\n hasTypes={typeof packageMeta.latest?.types === 'string'}\n isLatest={typeof packageVersion === 'undefined'}\n moduleTypes={getModuleTypes(packageMeta)}\n packageName={packageName}\n time={time}\n version={version}\n />\n <DownloadProvider>\n <ActionBar\n packageMeta={packageMeta}\n showDownloadTarball={configOptions.showDownloadTarball}\n showRaw={configOptions.showRaw}\n />\n </DownloadProvider>\n <FundButton packageMeta={packageMeta} />\n <Install configOptions={configOptions} packageMeta={packageMeta} packageName={packageName} />\n <Repository packageMeta={packageMeta} />\n <Engines packageMeta={packageMeta} />\n <Dist packageMeta={packageMeta} />\n <Keywords packageMeta={packageMeta} />\n <Author packageMeta={packageMeta} />\n <Developers packageMeta={packageMeta} type={DeveloperType.MAINTAINERS} />\n <Developers packageMeta={packageMeta} type={DeveloperType.CONTRIBUTORS} />\n </Paper>\n );\n};\n\nexport default DetailSidebar;\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAgBA,IAAMkB,kBAAkBC,aAAmC;AACzD,KAAI,CAACA,SAASC,OAAQ,QAAO,EAAE;CAE/B,MAAMC,cAA4B,CAACF,SAASC,OAAOE,QAAQ,WAAW;AAEtE,KAAIH,SAASC,OAAOG,KAClBF,aAAYG,KAAK,WAAW;AAG9B,QAAOC,MAAMC,KAAK,IAAIC,IAAIN,YAAY,CAAC;;AAGzC,IAAMO,sBAAgC;CACpC,MAAM,EAAEE,aAAaC,aAAaC,mBAAmBjB,YAAY;CAEjE,MAAM,EAAEkB,kBAAkBnB,WAAW;CACrC,MAAMoB,UAAUF,kBAAkBF,aAAaV,OAAOc,WAAW;CACjE,MAAMC,OAAOL,aAAaK,OAAOL,YAAYK,KAAKD,WAAW;AAC7D,KAAI,CAACJ,eAAe,CAACC,YACnB,QAAO;AAGT,QACE,qBAAC,OAAD;EAAO,eAAY;EAAU,IAAI;GAAEK,UAAU;GAAUC,KAAK;GAAGC,GAAG;GAAGC,IAAI;IAAEC,IAAI;IAAGC,IAAI;IAAE;GAAG;YAA3F;GACE,oBAAC,oBAAD;IACE,aAAaX,YAAYV,QAAQsB;IACjC,UAAU,OAAOZ,YAAYV,QAAQuB,UAAU;IAC/C,UAAU,OAAOX,mBAAmB;IACpC,aAAad,eAAeY,YAAY;IAC3BC;IACPI;IACGD;IAAQ,CAAA;GAEnB,oBAAC,kBAAD,EAAA,UACE,oBAAC,WAAD;IACeJ;IACb,qBAAqBG,cAAcW;IACnC,SAASX,cAAcY;IAAQ,CAAA,EAEjB,CAAA;GAClB,oBAAC,YAAD,EAAyBf,aAAY,CAAA;GACrC,oBAAC,SAAD;IAAwBG;IAA4BH;IAA0BC;IAAY,CAAA;GAC1F,oBAAC,YAAD,EAAyBD,aAAY,CAAA;GACrC,oBAAC,QAAD,EAAsBA,aAAY,CAAA;GAClC,oBAAC,MAAD,EAAmBA,aAAY,CAAA;GAC/B,oBAAC,UAAD,EAAuBA,aAAY,CAAA;GACnC,oBAAC,QAAD,EAAqBA,aAAY,CAAA;GACjC,oBAAC,YAAD;IAAyBA;IAAa,MAAMzB,cAAcyC;IAAY,CAAA;GACtE,oBAAC,YAAD;IAAyBhB;IAAa,MAAMzB,cAAc0C;IAAa,CAAA;GACjE"}
1
+ {"version":3,"file":"Sidebar.mjs","names":[],"sources":["../../../src/sections/SideBar/Sidebar.tsx"],"sourcesContent":["import Paper from '@mui/material/Paper';\nimport React from 'react';\n\nimport ActionBar from '../../components/ActionBar';\nimport Author from '../../components/Author';\nimport Developers, { DeveloperType } from '../../components/Developers';\nimport Dist from '../../components/Distribution';\nimport Engines from '../../components/Engines';\nimport FundButton from '../../components/FundButton';\nimport Install from '../../components/Install';\nimport Keywords from '../../components/Keywords';\nimport Repository from '../../components/Repository';\nimport SideBarTitle from '../../components/SideBarTitle';\nimport { DownloadProvider, useConfig, useVersion } from '../../providers';\nimport type { ModuleType, PackageMetaInterface } from '../../types/packageMeta';\n\nconst getModuleTypes = (manifest: PackageMetaInterface) => {\n if (!manifest.latest) return [];\n\n const moduleTypes: ModuleType[] = [manifest.latest.type || 'commonjs'];\n\n if (manifest.latest.main) {\n moduleTypes.push('commonjs');\n }\n\n return Array.from(new Set(moduleTypes));\n};\n\nconst DetailSidebar: React.FC = () => {\n const { packageMeta, packageName, packageVersion } = useVersion();\n\n const { configOptions } = useConfig();\n const version = packageVersion || packageMeta?.latest.version || '';\n const time = packageMeta?.time ? packageMeta.time[version] : '';\n if (!packageMeta || !packageName) {\n return null;\n }\n\n return (\n <Paper data-testid=\"sidebar\" sx={{ position: 'sticky', top: 0, p: 2, ml: { xs: 0, md: 2 } }}>\n <SideBarTitle\n description={packageMeta.latest?.description}\n hasTypes={typeof packageMeta.latest?.types === 'string'}\n isLatest={typeof packageVersion === 'undefined'}\n moduleTypes={getModuleTypes(packageMeta)}\n packageName={packageName}\n time={time}\n version={version}\n />\n <DownloadProvider>\n <ActionBar\n packageMeta={packageMeta}\n showDownloadTarball={configOptions.showDownloadTarball}\n showRaw={configOptions.showRaw}\n />\n </DownloadProvider>\n <FundButton packageMeta={packageMeta} />\n <Install configOptions={configOptions} packageMeta={packageMeta} packageName={packageName} />\n <Repository packageMeta={packageMeta} />\n <Engines packageMeta={packageMeta} />\n <Dist packageMeta={packageMeta} />\n <Keywords packageMeta={packageMeta} />\n <Author packageMeta={packageMeta} />\n <Developers packageMeta={packageMeta} type={DeveloperType.MAINTAINERS} />\n <Developers packageMeta={packageMeta} type={DeveloperType.CONTRIBUTORS} />\n </Paper>\n );\n};\n\nexport default DetailSidebar;\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAgBA,IAAM,kBAAkB,aAAmC;AACzD,KAAI,CAAC,SAAS,OAAQ,QAAO,EAAE;CAE/B,MAAM,cAA4B,CAAC,SAAS,OAAO,QAAQ,WAAW;AAEtE,KAAI,SAAS,OAAO,KAClB,aAAY,KAAK,WAAW;AAG9B,QAAO,MAAM,KAAK,IAAI,IAAI,YAAY,CAAC;;AAGzC,IAAM,sBAAgC;CACpC,MAAM,EAAE,aAAa,aAAa,mBAAmB,YAAY;CAEjE,MAAM,EAAE,kBAAkB,WAAW;CACrC,MAAM,UAAU,kBAAkB,aAAa,OAAO,WAAW;CACjE,MAAM,OAAO,aAAa,OAAO,YAAY,KAAK,WAAW;AAC7D,KAAI,CAAC,eAAe,CAAC,YACnB,QAAO;AAGT,QACE,qBAAC,OAAD;EAAO,eAAY;EAAU,IAAI;GAAE,UAAU;GAAU,KAAK;GAAG,GAAG;GAAG,IAAI;IAAE,IAAI;IAAG,IAAI;IAAG;GAAE;YAA3F;GACE,oBAAC,oBAAD;IACE,aAAa,YAAY,QAAQ;IACjC,UAAU,OAAO,YAAY,QAAQ,UAAU;IAC/C,UAAU,OAAO,mBAAmB;IACpC,aAAa,eAAe,YAAY;IAC3B;IACP;IACG;IACT,CAAA;GACF,oBAAC,kBAAD,EAAA,UACE,oBAAC,WAAD;IACe;IACb,qBAAqB,cAAc;IACnC,SAAS,cAAc;IACvB,CAAA,EACe,CAAA;GACnB,oBAAC,YAAD,EAAyB,aAAe,CAAA;GACxC,oBAAC,SAAD;IAAwB;IAA4B;IAA0B;IAAe,CAAA;GAC7F,oBAAC,YAAD,EAAyB,aAAe,CAAA;GACxC,oBAAC,QAAD,EAAsB,aAAe,CAAA;GACrC,oBAAC,MAAD,EAAmB,aAAe,CAAA;GAClC,oBAAC,UAAD,EAAuB,aAAe,CAAA;GACtC,oBAAC,QAAD,EAAqB,aAAe,CAAA;GACpC,oBAAC,YAAD;IAAyB;IAAa,MAAM,cAAc;IAAe,CAAA;GACzE,oBAAC,YAAD;IAAyB;IAAa,MAAM,cAAc;IAAgB,CAAA;GACpE"}
@@ -1 +1 @@
1
- {"version":3,"file":"api.js","names":["storage","CustomError","Error","code","constructor","message","name","handleResponseType","response","Response","Promise","headers","contentType","get","includes","all","ok","blob","status","json","text","url","endsWith","AuthHeader","API","request","method","options","RequestInit","T","token","getItem","Headers","has","set","resolve","reject","fetch","credentials","signal","then","data","error","catch"],"sources":["../../src/store/api.ts"],"sourcesContent":["import storage from './storage';\n\nexport class CustomError extends Error {\n code: number;\n\n constructor(message: string, code?: number) {\n super(message);\n this.name = 'CustomError';\n this.code = code ?? 500;\n }\n}\n\n/**\n * Handles response according to content type\n * @param {object} response\n * @returns {promise}\n */\nexport function handleResponseType(response: Response): Promise<[boolean, any, number]> {\n if (response.headers) {\n const contentType = response.headers.get('Content-Type');\n if (contentType?.includes('application/pdf')) {\n return Promise.all([response.ok, response.blob(), response.status]);\n }\n if (contentType?.includes('application/json')) {\n return Promise.all([response.ok, response.json(), response.status]);\n }\n // it includes all text types\n if (contentType?.includes('text/')) {\n return Promise.all([response.ok, response.text(), response.status]);\n }\n\n // unfortunately on download files there is no header available\n if (response.url && response.url.endsWith('.tgz') === true) {\n return Promise.all([response.ok, response.blob(), response.status]);\n }\n }\n\n // error handling\n return Promise.all([response.ok, response.text(), response.status]);\n}\n\nconst AuthHeader = 'Authorization';\n\nclass API {\n public request<T>(\n url: string,\n method = 'GET',\n options: RequestInit = { headers: {} }\n ): Promise<T> {\n const token = storage.getItem('token');\n const headers = new Headers(options.headers);\n\n if (token && headers.has(AuthHeader) === false) {\n headers.set(AuthHeader, `Bearer ${token}`);\n options.headers = headers;\n }\n\n headers.set('x-client', 'verdaccio-ui');\n\n return new Promise((resolve, reject) => {\n fetch(url, {\n method,\n credentials: 'same-origin',\n signal: options.signal,\n ...options,\n })\n .then(handleResponseType)\n .then((response) => {\n const [ok, data, status] = response;\n if (ok === true) {\n resolve(data);\n } else {\n const message =\n typeof data === 'string' ? data : (data?.error ?? data?.message ?? 'Unknown error');\n reject(new CustomError(message, status));\n }\n })\n .catch((error) => {\n reject(error);\n });\n });\n }\n}\n\nexport default new API();\n"],"mappings":";;AAEA,IAAaC,cAAb,cAAiCC,MAAM;CACrCC;CAEAC,YAAYC,SAAiBF,MAAe;AAC1C,QAAME,QAAQ;AACd,OAAKC,OAAO;AACZ,OAAKH,OAAOA,QAAQ;;;;;;;;AASxB,SAAgBI,mBAAmBC,UAAqD;AACtF,KAAIA,SAASG,SAAS;EACpB,MAAMC,cAAcJ,SAASG,QAAQE,IAAI,eAAe;AACxD,MAAID,aAAaE,SAAS,kBAAkB,CAC1C,QAAOJ,QAAQK,IAAI;GAACP,SAASQ;GAAIR,SAASS,MAAM;GAAET,SAASU;GAAO,CAAC;AAErE,MAAIN,aAAaE,SAAS,mBAAmB,CAC3C,QAAOJ,QAAQK,IAAI;GAACP,SAASQ;GAAIR,SAASW,MAAM;GAAEX,SAASU;GAAO,CAAC;AAGrE,MAAIN,aAAaE,SAAS,QAAQ,CAChC,QAAOJ,QAAQK,IAAI;GAACP,SAASQ;GAAIR,SAASY,MAAM;GAAEZ,SAASU;GAAO,CAAC;AAIrE,MAAIV,SAASa,OAAOb,SAASa,IAAIC,SAAS,OAAO,KAAK,KACpD,QAAOZ,QAAQK,IAAI;GAACP,SAASQ;GAAIR,SAASS,MAAM;GAAET,SAASU;GAAO,CAAC;;AAKvE,QAAOR,QAAQK,IAAI;EAACP,SAASQ;EAAIR,SAASY,MAAM;EAAEZ,SAASU;EAAO,CAAC;;AAGrE,IAAMK,aAAa;AAEnB,IAAMC,MAAN,MAAU;CACR,QACEH,KACAK,SAAS,OACTC,UAAuB,EAAEhB,SAAS,EAAC,EAAG,EAC1B;EACZ,MAAMmB,QAAQ9B,gBAAAA,QAAQ+B,QAAQ,QAAQ;EACtC,MAAMpB,UAAU,IAAIqB,QAAQL,QAAQhB,QAAQ;AAE5C,MAAImB,SAASnB,QAAQsB,IAAIV,WAAW,KAAK,OAAO;AAC9CZ,WAAQuB,IAAIX,YAAY,UAAUO,QAAQ;AAC1CH,WAAQhB,UAAUA;;AAGpBA,UAAQuB,IAAI,YAAY,eAAe;AAEvC,SAAO,IAAIxB,SAASyB,SAASC,WAAW;AACtCC,SAAMhB,KAAK;IACTK;IACAY,aAAa;IACbC,QAAQZ,QAAQY;IAChB,GAAGZ;IACJ,CAAC,CACCa,KAAKjC,mBAAmB,CACxBiC,MAAMhC,aAAa;IAClB,MAAM,CAACQ,IAAIyB,MAAMvB,UAAUV;AAC3B,QAAIQ,OAAO,KACTmB,SAAQM,KAAK;QAIbL,QAAO,IAAInC,YADT,OAAOwC,SAAS,WAAWA,OAAQA,MAAMC,SAASD,MAAMpC,WAAW,iBACrCa,OAAO,CAAC;KAE1C,CACDyB,OAAOD,UAAU;AAChBN,WAAOM,MAAM;KACb;IACJ;;;AAIN,IAAA,cAAe,IAAIlB,KAAK"}
1
+ {"version":3,"file":"api.js","names":[],"sources":["../../src/store/api.ts"],"sourcesContent":["import storage from './storage';\n\nexport class CustomError extends Error {\n code: number;\n\n constructor(message: string, code?: number) {\n super(message);\n this.name = 'CustomError';\n this.code = code ?? 500;\n }\n}\n\n/**\n * Handles response according to content type\n * @param {object} response\n * @returns {promise}\n */\nexport function handleResponseType(response: Response): Promise<[boolean, any, number]> {\n if (response.headers) {\n const contentType = response.headers.get('Content-Type');\n if (contentType?.includes('application/pdf')) {\n return Promise.all([response.ok, response.blob(), response.status]);\n }\n if (contentType?.includes('application/json')) {\n return Promise.all([response.ok, response.json(), response.status]);\n }\n // it includes all text types\n if (contentType?.includes('text/')) {\n return Promise.all([response.ok, response.text(), response.status]);\n }\n\n // unfortunately on download files there is no header available\n if (response.url && response.url.endsWith('.tgz') === true) {\n return Promise.all([response.ok, response.blob(), response.status]);\n }\n }\n\n // error handling\n return Promise.all([response.ok, response.text(), response.status]);\n}\n\nconst AuthHeader = 'Authorization';\n\nclass API {\n public request<T>(\n url: string,\n method = 'GET',\n options: RequestInit = { headers: {} }\n ): Promise<T> {\n const token = storage.getItem('token');\n const headers = new Headers(options.headers);\n\n if (token && headers.has(AuthHeader) === false) {\n headers.set(AuthHeader, `Bearer ${token}`);\n options.headers = headers;\n }\n\n headers.set('x-client', 'verdaccio-ui');\n\n return new Promise((resolve, reject) => {\n fetch(url, {\n method,\n credentials: 'same-origin',\n signal: options.signal,\n ...options,\n })\n .then(handleResponseType)\n .then((response) => {\n const [ok, data, status] = response;\n if (ok === true) {\n resolve(data);\n } else {\n const message =\n typeof data === 'string' ? data : (data?.error ?? data?.message ?? 'Unknown error');\n reject(new CustomError(message, status));\n }\n })\n .catch((error) => {\n reject(error);\n });\n });\n }\n}\n\nexport default new API();\n"],"mappings":";;AAEA,IAAa,cAAb,cAAiC,MAAM;CACrC;CAEA,YAAY,SAAiB,MAAe;AAC1C,QAAM,QAAQ;AACd,OAAK,OAAO;AACZ,OAAK,OAAO,QAAQ;;;;;;;;AASxB,SAAgB,mBAAmB,UAAqD;AACtF,KAAI,SAAS,SAAS;EACpB,MAAM,cAAc,SAAS,QAAQ,IAAI,eAAe;AACxD,MAAI,aAAa,SAAS,kBAAkB,CAC1C,QAAO,QAAQ,IAAI;GAAC,SAAS;GAAI,SAAS,MAAM;GAAE,SAAS;GAAO,CAAC;AAErE,MAAI,aAAa,SAAS,mBAAmB,CAC3C,QAAO,QAAQ,IAAI;GAAC,SAAS;GAAI,SAAS,MAAM;GAAE,SAAS;GAAO,CAAC;AAGrE,MAAI,aAAa,SAAS,QAAQ,CAChC,QAAO,QAAQ,IAAI;GAAC,SAAS;GAAI,SAAS,MAAM;GAAE,SAAS;GAAO,CAAC;AAIrE,MAAI,SAAS,OAAO,SAAS,IAAI,SAAS,OAAO,KAAK,KACpD,QAAO,QAAQ,IAAI;GAAC,SAAS;GAAI,SAAS,MAAM;GAAE,SAAS;GAAO,CAAC;;AAKvE,QAAO,QAAQ,IAAI;EAAC,SAAS;EAAI,SAAS,MAAM;EAAE,SAAS;EAAO,CAAC;;AAGrE,IAAM,aAAa;AAEnB,IAAM,MAAN,MAAU;CACR,QACE,KACA,SAAS,OACT,UAAuB,EAAE,SAAS,EAAE,EAAE,EAC1B;EACZ,MAAM,QAAQ,gBAAA,QAAQ,QAAQ,QAAQ;EACtC,MAAM,UAAU,IAAI,QAAQ,QAAQ,QAAQ;AAE5C,MAAI,SAAS,QAAQ,IAAI,WAAW,KAAK,OAAO;AAC9C,WAAQ,IAAI,YAAY,UAAU,QAAQ;AAC1C,WAAQ,UAAU;;AAGpB,UAAQ,IAAI,YAAY,eAAe;AAEvC,SAAO,IAAI,SAAS,SAAS,WAAW;AACtC,SAAM,KAAK;IACT;IACA,aAAa;IACb,QAAQ,QAAQ;IAChB,GAAG;IACJ,CAAC,CACC,KAAK,mBAAmB,CACxB,MAAM,aAAa;IAClB,MAAM,CAAC,IAAI,MAAM,UAAU;AAC3B,QAAI,OAAO,KACT,SAAQ,KAAK;QAIb,QAAO,IAAI,YADT,OAAO,SAAS,WAAW,OAAQ,MAAM,SAAS,MAAM,WAAW,iBACrC,OAAO,CAAC;KAE1C,CACD,OAAO,UAAU;AAChB,WAAO,MAAM;KACb;IACJ;;;AAIN,IAAA,cAAe,IAAI,KAAK"}
@@ -1 +1 @@
1
- {"version":3,"file":"api.mjs","names":["storage","CustomError","Error","code","constructor","message","name","handleResponseType","response","Response","Promise","headers","contentType","get","includes","all","ok","blob","status","json","text","url","endsWith","AuthHeader","API","request","method","options","RequestInit","T","token","getItem","Headers","has","set","resolve","reject","fetch","credentials","signal","then","data","error","catch"],"sources":["../../src/store/api.ts"],"sourcesContent":["import storage from './storage';\n\nexport class CustomError extends Error {\n code: number;\n\n constructor(message: string, code?: number) {\n super(message);\n this.name = 'CustomError';\n this.code = code ?? 500;\n }\n}\n\n/**\n * Handles response according to content type\n * @param {object} response\n * @returns {promise}\n */\nexport function handleResponseType(response: Response): Promise<[boolean, any, number]> {\n if (response.headers) {\n const contentType = response.headers.get('Content-Type');\n if (contentType?.includes('application/pdf')) {\n return Promise.all([response.ok, response.blob(), response.status]);\n }\n if (contentType?.includes('application/json')) {\n return Promise.all([response.ok, response.json(), response.status]);\n }\n // it includes all text types\n if (contentType?.includes('text/')) {\n return Promise.all([response.ok, response.text(), response.status]);\n }\n\n // unfortunately on download files there is no header available\n if (response.url && response.url.endsWith('.tgz') === true) {\n return Promise.all([response.ok, response.blob(), response.status]);\n }\n }\n\n // error handling\n return Promise.all([response.ok, response.text(), response.status]);\n}\n\nconst AuthHeader = 'Authorization';\n\nclass API {\n public request<T>(\n url: string,\n method = 'GET',\n options: RequestInit = { headers: {} }\n ): Promise<T> {\n const token = storage.getItem('token');\n const headers = new Headers(options.headers);\n\n if (token && headers.has(AuthHeader) === false) {\n headers.set(AuthHeader, `Bearer ${token}`);\n options.headers = headers;\n }\n\n headers.set('x-client', 'verdaccio-ui');\n\n return new Promise((resolve, reject) => {\n fetch(url, {\n method,\n credentials: 'same-origin',\n signal: options.signal,\n ...options,\n })\n .then(handleResponseType)\n .then((response) => {\n const [ok, data, status] = response;\n if (ok === true) {\n resolve(data);\n } else {\n const message =\n typeof data === 'string' ? data : (data?.error ?? data?.message ?? 'Unknown error');\n reject(new CustomError(message, status));\n }\n })\n .catch((error) => {\n reject(error);\n });\n });\n }\n}\n\nexport default new API();\n"],"mappings":";;AAEA,IAAaC,cAAb,cAAiCC,MAAM;CACrCC;CAEAC,YAAYC,SAAiBF,MAAe;AAC1C,QAAME,QAAQ;AACd,OAAKC,OAAO;AACZ,OAAKH,OAAOA,QAAQ;;;;;;;;AASxB,SAAgBI,mBAAmBC,UAAqD;AACtF,KAAIA,SAASG,SAAS;EACpB,MAAMC,cAAcJ,SAASG,QAAQE,IAAI,eAAe;AACxD,MAAID,aAAaE,SAAS,kBAAkB,CAC1C,QAAOJ,QAAQK,IAAI;GAACP,SAASQ;GAAIR,SAASS,MAAM;GAAET,SAASU;GAAO,CAAC;AAErE,MAAIN,aAAaE,SAAS,mBAAmB,CAC3C,QAAOJ,QAAQK,IAAI;GAACP,SAASQ;GAAIR,SAASW,MAAM;GAAEX,SAASU;GAAO,CAAC;AAGrE,MAAIN,aAAaE,SAAS,QAAQ,CAChC,QAAOJ,QAAQK,IAAI;GAACP,SAASQ;GAAIR,SAASY,MAAM;GAAEZ,SAASU;GAAO,CAAC;AAIrE,MAAIV,SAASa,OAAOb,SAASa,IAAIC,SAAS,OAAO,KAAK,KACpD,QAAOZ,QAAQK,IAAI;GAACP,SAASQ;GAAIR,SAASS,MAAM;GAAET,SAASU;GAAO,CAAC;;AAKvE,QAAOR,QAAQK,IAAI;EAACP,SAASQ;EAAIR,SAASY,MAAM;EAAEZ,SAASU;EAAO,CAAC;;AAGrE,IAAMK,aAAa;AAEnB,IAAMC,MAAN,MAAU;CACR,QACEH,KACAK,SAAS,OACTC,UAAuB,EAAEhB,SAAS,EAAC,EAAG,EAC1B;EACZ,MAAMmB,QAAQ9B,gBAAQ+B,QAAQ,QAAQ;EACtC,MAAMpB,UAAU,IAAIqB,QAAQL,QAAQhB,QAAQ;AAE5C,MAAImB,SAASnB,QAAQsB,IAAIV,WAAW,KAAK,OAAO;AAC9CZ,WAAQuB,IAAIX,YAAY,UAAUO,QAAQ;AAC1CH,WAAQhB,UAAUA;;AAGpBA,UAAQuB,IAAI,YAAY,eAAe;AAEvC,SAAO,IAAIxB,SAASyB,SAASC,WAAW;AACtCC,SAAMhB,KAAK;IACTK;IACAY,aAAa;IACbC,QAAQZ,QAAQY;IAChB,GAAGZ;IACJ,CAAC,CACCa,KAAKjC,mBAAmB,CACxBiC,MAAMhC,aAAa;IAClB,MAAM,CAACQ,IAAIyB,MAAMvB,UAAUV;AAC3B,QAAIQ,OAAO,KACTmB,SAAQM,KAAK;QAIbL,QAAO,IAAInC,YADT,OAAOwC,SAAS,WAAWA,OAAQA,MAAMC,SAASD,MAAMpC,WAAW,iBACrCa,OAAO,CAAC;KAE1C,CACDyB,OAAOD,UAAU;AAChBN,WAAOM,MAAM;KACb;IACJ;;;AAIN,IAAA,cAAe,IAAIlB,KAAK"}
1
+ {"version":3,"file":"api.mjs","names":[],"sources":["../../src/store/api.ts"],"sourcesContent":["import storage from './storage';\n\nexport class CustomError extends Error {\n code: number;\n\n constructor(message: string, code?: number) {\n super(message);\n this.name = 'CustomError';\n this.code = code ?? 500;\n }\n}\n\n/**\n * Handles response according to content type\n * @param {object} response\n * @returns {promise}\n */\nexport function handleResponseType(response: Response): Promise<[boolean, any, number]> {\n if (response.headers) {\n const contentType = response.headers.get('Content-Type');\n if (contentType?.includes('application/pdf')) {\n return Promise.all([response.ok, response.blob(), response.status]);\n }\n if (contentType?.includes('application/json')) {\n return Promise.all([response.ok, response.json(), response.status]);\n }\n // it includes all text types\n if (contentType?.includes('text/')) {\n return Promise.all([response.ok, response.text(), response.status]);\n }\n\n // unfortunately on download files there is no header available\n if (response.url && response.url.endsWith('.tgz') === true) {\n return Promise.all([response.ok, response.blob(), response.status]);\n }\n }\n\n // error handling\n return Promise.all([response.ok, response.text(), response.status]);\n}\n\nconst AuthHeader = 'Authorization';\n\nclass API {\n public request<T>(\n url: string,\n method = 'GET',\n options: RequestInit = { headers: {} }\n ): Promise<T> {\n const token = storage.getItem('token');\n const headers = new Headers(options.headers);\n\n if (token && headers.has(AuthHeader) === false) {\n headers.set(AuthHeader, `Bearer ${token}`);\n options.headers = headers;\n }\n\n headers.set('x-client', 'verdaccio-ui');\n\n return new Promise((resolve, reject) => {\n fetch(url, {\n method,\n credentials: 'same-origin',\n signal: options.signal,\n ...options,\n })\n .then(handleResponseType)\n .then((response) => {\n const [ok, data, status] = response;\n if (ok === true) {\n resolve(data);\n } else {\n const message =\n typeof data === 'string' ? data : (data?.error ?? data?.message ?? 'Unknown error');\n reject(new CustomError(message, status));\n }\n })\n .catch((error) => {\n reject(error);\n });\n });\n }\n}\n\nexport default new API();\n"],"mappings":";;AAEA,IAAa,cAAb,cAAiC,MAAM;CACrC;CAEA,YAAY,SAAiB,MAAe;AAC1C,QAAM,QAAQ;AACd,OAAK,OAAO;AACZ,OAAK,OAAO,QAAQ;;;;;;;;AASxB,SAAgB,mBAAmB,UAAqD;AACtF,KAAI,SAAS,SAAS;EACpB,MAAM,cAAc,SAAS,QAAQ,IAAI,eAAe;AACxD,MAAI,aAAa,SAAS,kBAAkB,CAC1C,QAAO,QAAQ,IAAI;GAAC,SAAS;GAAI,SAAS,MAAM;GAAE,SAAS;GAAO,CAAC;AAErE,MAAI,aAAa,SAAS,mBAAmB,CAC3C,QAAO,QAAQ,IAAI;GAAC,SAAS;GAAI,SAAS,MAAM;GAAE,SAAS;GAAO,CAAC;AAGrE,MAAI,aAAa,SAAS,QAAQ,CAChC,QAAO,QAAQ,IAAI;GAAC,SAAS;GAAI,SAAS,MAAM;GAAE,SAAS;GAAO,CAAC;AAIrE,MAAI,SAAS,OAAO,SAAS,IAAI,SAAS,OAAO,KAAK,KACpD,QAAO,QAAQ,IAAI;GAAC,SAAS;GAAI,SAAS,MAAM;GAAE,SAAS;GAAO,CAAC;;AAKvE,QAAO,QAAQ,IAAI;EAAC,SAAS;EAAI,SAAS,MAAM;EAAE,SAAS;EAAO,CAAC;;AAGrE,IAAM,aAAa;AAEnB,IAAM,MAAN,MAAU;CACR,QACE,KACA,SAAS,OACT,UAAuB,EAAE,SAAS,EAAE,EAAE,EAC1B;EACZ,MAAM,QAAQ,gBAAQ,QAAQ,QAAQ;EACtC,MAAM,UAAU,IAAI,QAAQ,QAAQ,QAAQ;AAE5C,MAAI,SAAS,QAAQ,IAAI,WAAW,KAAK,OAAO;AAC9C,WAAQ,IAAI,YAAY,UAAU,QAAQ;AAC1C,WAAQ,UAAU;;AAGpB,UAAQ,IAAI,YAAY,eAAe;AAEvC,SAAO,IAAI,SAAS,SAAS,WAAW;AACtC,SAAM,KAAK;IACT;IACA,aAAa;IACb,QAAQ,QAAQ;IAChB,GAAG;IACJ,CAAC,CACC,KAAK,mBAAmB,CACxB,MAAM,aAAa;IAClB,MAAM,CAAC,IAAI,MAAM,UAAU;AAC3B,QAAI,OAAO,KACT,SAAQ,KAAK;QAIb,QAAO,IAAI,YADT,OAAO,SAAS,WAAW,OAAQ,MAAM,SAAS,MAAM,WAAW,iBACrC,OAAO,CAAC;KAE1C,CACD,OAAO,UAAU;AAChB,WAAO,MAAM;KACb;IACJ;;;AAIN,IAAA,cAAe,IAAI,KAAK"}
@@ -1 +1 @@
1
- {"version":3,"file":"routes.js","names":["APIRoute","LOGIN","SIGNUP","CONFIG","PACKAGES","SEARCH","SIDEBAR","README"],"sources":["../../src/store/routes.ts"],"sourcesContent":["// Example API request:\n// http://localhost:8000/-/verdaccio/data/package/readme/jquery\n/**\n * @deprecated use APIRoute in utils/routes.ts\n */\nexport enum APIRoute {\n LOGIN = '/-/verdaccio/sec/login',\n SIGNUP = '/-/verdaccio/sec/signup',\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":";;;;AAKA,IAAYA,WAAL,yBAAA,UAAA;AACLC,UAAAA,WAAAA;AACAC,UAAAA,YAAAA;AACAC,UAAAA,YAAAA;AACAC,UAAAA,cAAAA;AACAC,UAAAA,YAAAA;AACAC,UAAAA,aAAAA;AACAC,UAAAA,YAAAA"}
1
+ {"version":3,"file":"routes.js","names":[],"sources":["../../src/store/routes.ts"],"sourcesContent":["// Example API request:\n// http://localhost:8000/-/verdaccio/data/package/readme/jquery\n/**\n * @deprecated use APIRoute in utils/routes.ts\n */\nexport enum APIRoute {\n LOGIN = '/-/verdaccio/sec/login',\n SIGNUP = '/-/verdaccio/sec/signup',\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":";;;;AAKA,IAAY,WAAL,yBAAA,UAAA;AACL,UAAA,WAAA;AACA,UAAA,YAAA;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":["APIRoute","LOGIN","SIGNUP","CONFIG","PACKAGES","SEARCH","SIDEBAR","README"],"sources":["../../src/store/routes.ts"],"sourcesContent":["// Example API request:\n// http://localhost:8000/-/verdaccio/data/package/readme/jquery\n/**\n * @deprecated use APIRoute in utils/routes.ts\n */\nexport enum APIRoute {\n LOGIN = '/-/verdaccio/sec/login',\n SIGNUP = '/-/verdaccio/sec/signup',\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":";;;;AAKA,IAAYA,WAAL,yBAAA,UAAA;AACLC,UAAAA,WAAAA;AACAC,UAAAA,YAAAA;AACAC,UAAAA,YAAAA;AACAC,UAAAA,cAAAA;AACAC,UAAAA,YAAAA;AACAC,UAAAA,aAAAA;AACAC,UAAAA,YAAAA"}
1
+ {"version":3,"file":"routes.mjs","names":[],"sources":["../../src/store/routes.ts"],"sourcesContent":["// Example API request:\n// http://localhost:8000/-/verdaccio/data/package/readme/jquery\n/**\n * @deprecated use APIRoute in utils/routes.ts\n */\nexport enum APIRoute {\n LOGIN = '/-/verdaccio/sec/login',\n SIGNUP = '/-/verdaccio/sec/signup',\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":";;;;AAKA,IAAY,WAAL,yBAAA,UAAA;AACL,UAAA,WAAA;AACA,UAAA,YAAA;AACA,UAAA,YAAA;AACA,UAAA,cAAA;AACA,UAAA,YAAA;AACA,UAAA,aAAA;AACA,UAAA,YAAA;;KACD"}
@@ -1 +1 @@
1
- {"version":3,"file":"storage.js","names":["memoryStorage","storage","Storage","localStorage","setItem","removeItem","saveAuth","username","token","clearAuth","getAuth","getItem"],"sources":["../../src/store/storage.ts"],"sourcesContent":["import memoryStorage from 'localstorage-memory';\n\nlet storage: Storage;\ntry {\n localStorage.setItem('__TEST__', '');\n localStorage.removeItem('__TEST__');\n storage = localStorage;\n} catch {\n // Fall back to memory storage if localStorage is not available\n storage = memoryStorage;\n}\n\nexport function saveAuth(username: string, token: string): void {\n storage.setItem('username', username);\n storage.setItem('token', token);\n}\n\nexport function clearAuth(): void {\n storage.removeItem('username');\n storage.removeItem('token');\n}\n\nexport function getAuth(): { username: string | null; token: string | null } {\n return {\n username: storage.getItem('username'),\n token: storage.getItem('token'),\n };\n}\n\nexport default storage;\n"],"mappings":";;;;AAEA,IAAIC;AACJ,IAAI;AACFE,cAAaC,QAAQ,YAAY,GAAG;AACpCD,cAAaE,WAAW,WAAW;AACnCJ,WAAUE;QACJ;AAENF,WAAUD,oBAAAA;;AAGZ,SAAgBM,SAASC,UAAkBC,OAAqB;AAC9DP,SAAQG,QAAQ,YAAYG,SAAS;AACrCN,SAAQG,QAAQ,SAASI,MAAM;;AAGjC,SAAgBC,YAAkB;AAChCR,SAAQI,WAAW,WAAW;AAC9BJ,SAAQI,WAAW,QAAQ;;AAG7B,SAAgBK,UAA6D;AAC3E,QAAO;EACLH,UAAUN,QAAQU,QAAQ,WAAW;EACrCH,OAAOP,QAAQU,QAAQ,QAAO;EAC/B;;AAGH,IAAA,kBAAeV"}
1
+ {"version":3,"file":"storage.js","names":[],"sources":["../../src/store/storage.ts"],"sourcesContent":["import memoryStorage from 'localstorage-memory';\n\nlet storage: Storage;\ntry {\n localStorage.setItem('__TEST__', '');\n localStorage.removeItem('__TEST__');\n storage = localStorage;\n} catch {\n // Fall back to memory storage if localStorage is not available\n storage = memoryStorage;\n}\n\nexport function saveAuth(username: string, token: string): void {\n storage.setItem('username', username);\n storage.setItem('token', token);\n}\n\nexport function clearAuth(): void {\n storage.removeItem('username');\n storage.removeItem('token');\n}\n\nexport function getAuth(): { username: string | null; token: string | null } {\n return {\n username: storage.getItem('username'),\n token: storage.getItem('token'),\n };\n}\n\nexport default storage;\n"],"mappings":";;;;AAEA,IAAI;AACJ,IAAI;AACF,cAAa,QAAQ,YAAY,GAAG;AACpC,cAAa,WAAW,WAAW;AACnC,WAAU;QACJ;AAEN,WAAU,oBAAA;;AAGZ,SAAgB,SAAS,UAAkB,OAAqB;AAC9D,SAAQ,QAAQ,YAAY,SAAS;AACrC,SAAQ,QAAQ,SAAS,MAAM;;AAGjC,SAAgB,YAAkB;AAChC,SAAQ,WAAW,WAAW;AAC9B,SAAQ,WAAW,QAAQ;;AAG7B,SAAgB,UAA6D;AAC3E,QAAO;EACL,UAAU,QAAQ,QAAQ,WAAW;EACrC,OAAO,QAAQ,QAAQ,QAAQ;EAChC;;AAGH,IAAA,kBAAe"}
@@ -1 +1 @@
1
- {"version":3,"file":"storage.mjs","names":["memoryStorage","storage","Storage","localStorage","setItem","removeItem","saveAuth","username","token","clearAuth","getAuth","getItem"],"sources":["../../src/store/storage.ts"],"sourcesContent":["import memoryStorage from 'localstorage-memory';\n\nlet storage: Storage;\ntry {\n localStorage.setItem('__TEST__', '');\n localStorage.removeItem('__TEST__');\n storage = localStorage;\n} catch {\n // Fall back to memory storage if localStorage is not available\n storage = memoryStorage;\n}\n\nexport function saveAuth(username: string, token: string): void {\n storage.setItem('username', username);\n storage.setItem('token', token);\n}\n\nexport function clearAuth(): void {\n storage.removeItem('username');\n storage.removeItem('token');\n}\n\nexport function getAuth(): { username: string | null; token: string | null } {\n return {\n username: storage.getItem('username'),\n token: storage.getItem('token'),\n };\n}\n\nexport default storage;\n"],"mappings":";;AAEA,IAAIC;AACJ,IAAI;AACFE,cAAaC,QAAQ,YAAY,GAAG;AACpCD,cAAaE,WAAW,WAAW;AACnCJ,WAAUE;QACJ;AAENF,WAAUD;;AAGZ,SAAgBM,SAASC,UAAkBC,OAAqB;AAC9DP,SAAQG,QAAQ,YAAYG,SAAS;AACrCN,SAAQG,QAAQ,SAASI,MAAM;;AAGjC,SAAgBC,YAAkB;AAChCR,SAAQI,WAAW,WAAW;AAC9BJ,SAAQI,WAAW,QAAQ;;AAG7B,SAAgBK,UAA6D;AAC3E,QAAO;EACLH,UAAUN,QAAQU,QAAQ,WAAW;EACrCH,OAAOP,QAAQU,QAAQ,QAAO;EAC/B;;AAGH,IAAA,kBAAeV"}
1
+ {"version":3,"file":"storage.mjs","names":[],"sources":["../../src/store/storage.ts"],"sourcesContent":["import memoryStorage from 'localstorage-memory';\n\nlet storage: Storage;\ntry {\n localStorage.setItem('__TEST__', '');\n localStorage.removeItem('__TEST__');\n storage = localStorage;\n} catch {\n // Fall back to memory storage if localStorage is not available\n storage = memoryStorage;\n}\n\nexport function saveAuth(username: string, token: string): void {\n storage.setItem('username', username);\n storage.setItem('token', token);\n}\n\nexport function clearAuth(): void {\n storage.removeItem('username');\n storage.removeItem('token');\n}\n\nexport function getAuth(): { username: string | null; token: string | null } {\n return {\n username: storage.getItem('username'),\n token: storage.getItem('token'),\n };\n}\n\nexport default storage;\n"],"mappings":";;AAEA,IAAI;AACJ,IAAI;AACF,cAAa,QAAQ,YAAY,GAAG;AACpC,cAAa,WAAW,WAAW;AACnC,WAAU;QACJ;AAEN,WAAU;;AAGZ,SAAgB,SAAS,UAAkB,OAAqB;AAC9D,SAAQ,QAAQ,YAAY,SAAS;AACrC,SAAQ,QAAQ,SAAS,MAAM;;AAGjC,SAAgB,YAAkB;AAChC,SAAQ,WAAW,WAAW;AAC9B,SAAQ,WAAW,QAAQ;;AAG7B,SAAgB,UAA6D;AAC3E,QAAO;EACL,UAAU,QAAQ,QAAQ,WAAW;EACrC,OAAO,QAAQ,QAAQ,QAAQ;EAChC;;AAGH,IAAA,kBAAe"}
@@ -1 +1 @@
1
- {"version":3,"file":"utils.js","names":["HEADERS","JSON","const","stripTrailingSlash","url","replace"],"sources":["../../src/store/utils.ts"],"sourcesContent":["export const HEADERS = {\n JSON: 'application/json',\n} as const;\n\nexport function stripTrailingSlash(url: string): string {\n return url.replace(/\\/$/, '');\n}\n"],"mappings":";AAAA,IAAaA,UAAU,EACrBC,MAAM,oBACP;AAED,SAAgBE,mBAAmBC,KAAqB;AACtD,QAAOA,IAAIC,QAAQ,OAAO,GAAG"}
1
+ {"version":3,"file":"utils.js","names":[],"sources":["../../src/store/utils.ts"],"sourcesContent":["export const HEADERS = {\n JSON: 'application/json',\n} as const;\n\nexport function stripTrailingSlash(url: string): string {\n return url.replace(/\\/$/, '');\n}\n"],"mappings":";AAAA,IAAa,UAAU,EACrB,MAAM,oBACP;AAED,SAAgB,mBAAmB,KAAqB;AACtD,QAAO,IAAI,QAAQ,OAAO,GAAG"}
@@ -1 +1 @@
1
- {"version":3,"file":"utils.mjs","names":["HEADERS","JSON","const","stripTrailingSlash","url","replace"],"sources":["../../src/store/utils.ts"],"sourcesContent":["export const HEADERS = {\n JSON: 'application/json',\n} as const;\n\nexport function stripTrailingSlash(url: string): string {\n return url.replace(/\\/$/, '');\n}\n"],"mappings":";AAAA,IAAaA,UAAU,EACrBC,MAAM,oBACP;AAED,SAAgBE,mBAAmBC,KAAqB;AACtD,QAAOA,IAAIC,QAAQ,OAAO,GAAG"}
1
+ {"version":3,"file":"utils.mjs","names":[],"sources":["../../src/store/utils.ts"],"sourcesContent":["export const HEADERS = {\n JSON: 'application/json',\n} as const;\n\nexport function stripTrailingSlash(url: string): string {\n return url.replace(/\\/$/, '');\n}\n"],"mappings":";AAAA,IAAa,UAAU,EACrB,MAAM,oBACP;AAED,SAAgB,mBAAmB,KAAqB;AACtD,QAAO,IAAI,QAAQ,OAAO,GAAG"}
@@ -1 +1 @@
1
- {"version":3,"file":"cli-utils.js","names":["SyntheticEvent","copyToClipBoardUtility","str","e","HTMLElement","event","preventDefault","node","document","createElement","innerText","body","appendChild","range","createRange","selection","window","getSelection","Selection","selectNodeContents","removeAllRanges","addRange","execCommand","removeChild","getCLISetConfigRegistry","command","scope","registryUrl","getCLISetRegistry","getCLIChangePassword","getCLISBerryYamlRegistry","URL","host","replace"],"sources":["../../src/utils/cli-utils.ts"],"sourcesContent":["import type { SyntheticEvent } from 'react';\n\nexport const copyToClipBoardUtility =\n (str: string): ((e: SyntheticEvent<HTMLElement>) => void) =>\n (event: SyntheticEvent<HTMLElement>): void => {\n event.preventDefault();\n\n const node = document.createElement('div');\n node.innerText = str;\n if (document.body) {\n document.body.appendChild(node);\n\n const range = document.createRange();\n const selection = window.getSelection() as Selection;\n range.selectNodeContents(node);\n selection.removeAllRanges();\n selection.addRange(range);\n document.execCommand('copy');\n document.body.removeChild(node);\n }\n };\n\nexport function getCLISetConfigRegistry(\n command: string,\n scope: string | undefined,\n registryUrl: string\n): string {\n // if there is a scope defined there needs to be a \":\" separator between the scope and the registry\n return `${command} ${scope ? `${scope}:` : ''}registry ${registryUrl}`;\n}\n\nexport function getCLISetRegistry(command: string, registryUrl: string): string {\n return `${command} --registry ${registryUrl}`;\n}\n\nexport function getCLIChangePassword(command: string, registryUrl: string): string {\n return `${command} profile set password --registry ${registryUrl}`;\n}\n\nexport function getCLISBerryYamlRegistry(scope: string | undefined, registryUrl: string): string {\n return !scope\n ? `// .yarnrc.yml \nnpmRegistryServer: \"${registryUrl}\"\nunsafeHttpWhitelist:\n - ${new URL(registryUrl).host}`\n : `\n// .yarnrc.yml\nnpmRegistryServer: \"${registryUrl}\"\nnpmScopes:\n ${scope.replace('@', '')}:\n npmRegistryServer: ${registryUrl}\n npmPublishRegistry: ${registryUrl}`;\n}\n"],"mappings":";AAsBA,SAAgBwB,wBACdC,SACAC,OACAC,aACQ;AAER,QAAO,GAAGF,QAAO,GAAIC,QAAQ,GAAGA,MAAK,KAAM,GAAE,WAAYC;;AAG3D,SAAgBC,kBAAkBH,SAAiBE,aAA6B;AAC9E,QAAO,GAAGF,QAAO,cAAeE;;AAGlC,SAAgBE,qBAAqBJ,SAAiBE,aAA6B;AACjF,QAAO,GAAGF,QAAO,mCAAoCE;;AAGvD,SAAgBG,yBAAyBJ,OAA2BC,aAA6B;AAC/F,QAAO,CAACD,QACJ;sBACgBC,YAAW;;MAE3B,IAAII,IAAIJ,YAAY,CAACK,SACrB;;sBAEgBL,YAAW;;IAE7BD,MAAMO,QAAQ,KAAK,GAAG,CAAA;yBACDN,YAAW;0BACVA"}
1
+ {"version":3,"file":"cli-utils.js","names":[],"sources":["../../src/utils/cli-utils.ts"],"sourcesContent":["import type { SyntheticEvent } from 'react';\n\nexport const copyToClipBoardUtility =\n (str: string): ((e: SyntheticEvent<HTMLElement>) => void) =>\n (event: SyntheticEvent<HTMLElement>): void => {\n event.preventDefault();\n\n const node = document.createElement('div');\n node.innerText = str;\n if (document.body) {\n document.body.appendChild(node);\n\n const range = document.createRange();\n const selection = window.getSelection() as Selection;\n range.selectNodeContents(node);\n selection.removeAllRanges();\n selection.addRange(range);\n document.execCommand('copy');\n document.body.removeChild(node);\n }\n };\n\nexport function getCLISetConfigRegistry(\n command: string,\n scope: string | undefined,\n registryUrl: string\n): string {\n // if there is a scope defined there needs to be a \":\" separator between the scope and the registry\n return `${command} ${scope ? `${scope}:` : ''}registry ${registryUrl}`;\n}\n\nexport function getCLISetRegistry(command: string, registryUrl: string): string {\n return `${command} --registry ${registryUrl}`;\n}\n\nexport function getCLIChangePassword(command: string, registryUrl: string): string {\n return `${command} profile set password --registry ${registryUrl}`;\n}\n\nexport function getCLISBerryYamlRegistry(scope: string | undefined, registryUrl: string): string {\n return !scope\n ? `// .yarnrc.yml \nnpmRegistryServer: \"${registryUrl}\"\nunsafeHttpWhitelist:\n - ${new URL(registryUrl).host}`\n : `\n// .yarnrc.yml\nnpmRegistryServer: \"${registryUrl}\"\nnpmScopes:\n ${scope.replace('@', '')}:\n npmRegistryServer: ${registryUrl}\n npmPublishRegistry: ${registryUrl}`;\n}\n"],"mappings":";AAsBA,SAAgB,wBACd,SACA,OACA,aACQ;AAER,QAAO,GAAG,QAAQ,GAAG,QAAQ,GAAG,MAAM,KAAK,GAAG,WAAW;;AAG3D,SAAgB,kBAAkB,SAAiB,aAA6B;AAC9E,QAAO,GAAG,QAAQ,cAAc;;AAGlC,SAAgB,qBAAqB,SAAiB,aAA6B;AACjF,QAAO,GAAG,QAAQ,mCAAmC;;AAGvD,SAAgB,yBAAyB,OAA2B,aAA6B;AAC/F,QAAO,CAAC,QACJ;sBACgB,YAAY;;MAE5B,IAAI,IAAI,YAAY,CAAC,SACrB;;sBAEgB,YAAY;;IAE9B,MAAM,QAAQ,KAAK,GAAG,CAAC;yBACF,YAAY;0BACX"}
@@ -1 +1 @@
1
- {"version":3,"file":"cli-utils.mjs","names":["SyntheticEvent","copyToClipBoardUtility","str","e","HTMLElement","event","preventDefault","node","document","createElement","innerText","body","appendChild","range","createRange","selection","window","getSelection","Selection","selectNodeContents","removeAllRanges","addRange","execCommand","removeChild","getCLISetConfigRegistry","command","scope","registryUrl","getCLISetRegistry","getCLIChangePassword","getCLISBerryYamlRegistry","URL","host","replace"],"sources":["../../src/utils/cli-utils.ts"],"sourcesContent":["import type { SyntheticEvent } from 'react';\n\nexport const copyToClipBoardUtility =\n (str: string): ((e: SyntheticEvent<HTMLElement>) => void) =>\n (event: SyntheticEvent<HTMLElement>): void => {\n event.preventDefault();\n\n const node = document.createElement('div');\n node.innerText = str;\n if (document.body) {\n document.body.appendChild(node);\n\n const range = document.createRange();\n const selection = window.getSelection() as Selection;\n range.selectNodeContents(node);\n selection.removeAllRanges();\n selection.addRange(range);\n document.execCommand('copy');\n document.body.removeChild(node);\n }\n };\n\nexport function getCLISetConfigRegistry(\n command: string,\n scope: string | undefined,\n registryUrl: string\n): string {\n // if there is a scope defined there needs to be a \":\" separator between the scope and the registry\n return `${command} ${scope ? `${scope}:` : ''}registry ${registryUrl}`;\n}\n\nexport function getCLISetRegistry(command: string, registryUrl: string): string {\n return `${command} --registry ${registryUrl}`;\n}\n\nexport function getCLIChangePassword(command: string, registryUrl: string): string {\n return `${command} profile set password --registry ${registryUrl}`;\n}\n\nexport function getCLISBerryYamlRegistry(scope: string | undefined, registryUrl: string): string {\n return !scope\n ? `// .yarnrc.yml \nnpmRegistryServer: \"${registryUrl}\"\nunsafeHttpWhitelist:\n - ${new URL(registryUrl).host}`\n : `\n// .yarnrc.yml\nnpmRegistryServer: \"${registryUrl}\"\nnpmScopes:\n ${scope.replace('@', '')}:\n npmRegistryServer: ${registryUrl}\n npmPublishRegistry: ${registryUrl}`;\n}\n"],"mappings":";AAsBA,SAAgBwB,wBACdC,SACAC,OACAC,aACQ;AAER,QAAO,GAAGF,QAAO,GAAIC,QAAQ,GAAGA,MAAK,KAAM,GAAE,WAAYC;;AAG3D,SAAgBC,kBAAkBH,SAAiBE,aAA6B;AAC9E,QAAO,GAAGF,QAAO,cAAeE;;AAGlC,SAAgBE,qBAAqBJ,SAAiBE,aAA6B;AACjF,QAAO,GAAGF,QAAO,mCAAoCE;;AAGvD,SAAgBG,yBAAyBJ,OAA2BC,aAA6B;AAC/F,QAAO,CAACD,QACJ;sBACgBC,YAAW;;MAE3B,IAAII,IAAIJ,YAAY,CAACK,SACrB;;sBAEgBL,YAAW;;IAE7BD,MAAMO,QAAQ,KAAK,GAAG,CAAA;yBACDN,YAAW;0BACVA"}
1
+ {"version":3,"file":"cli-utils.mjs","names":[],"sources":["../../src/utils/cli-utils.ts"],"sourcesContent":["import type { SyntheticEvent } from 'react';\n\nexport const copyToClipBoardUtility =\n (str: string): ((e: SyntheticEvent<HTMLElement>) => void) =>\n (event: SyntheticEvent<HTMLElement>): void => {\n event.preventDefault();\n\n const node = document.createElement('div');\n node.innerText = str;\n if (document.body) {\n document.body.appendChild(node);\n\n const range = document.createRange();\n const selection = window.getSelection() as Selection;\n range.selectNodeContents(node);\n selection.removeAllRanges();\n selection.addRange(range);\n document.execCommand('copy');\n document.body.removeChild(node);\n }\n };\n\nexport function getCLISetConfigRegistry(\n command: string,\n scope: string | undefined,\n registryUrl: string\n): string {\n // if there is a scope defined there needs to be a \":\" separator between the scope and the registry\n return `${command} ${scope ? `${scope}:` : ''}registry ${registryUrl}`;\n}\n\nexport function getCLISetRegistry(command: string, registryUrl: string): string {\n return `${command} --registry ${registryUrl}`;\n}\n\nexport function getCLIChangePassword(command: string, registryUrl: string): string {\n return `${command} profile set password --registry ${registryUrl}`;\n}\n\nexport function getCLISBerryYamlRegistry(scope: string | undefined, registryUrl: string): string {\n return !scope\n ? `// .yarnrc.yml \nnpmRegistryServer: \"${registryUrl}\"\nunsafeHttpWhitelist:\n - ${new URL(registryUrl).host}`\n : `\n// .yarnrc.yml\nnpmRegistryServer: \"${registryUrl}\"\nnpmScopes:\n ${scope.replace('@', '')}:\n npmRegistryServer: ${registryUrl}\n npmPublishRegistry: ${registryUrl}`;\n}\n"],"mappings":";AAsBA,SAAgB,wBACd,SACA,OACA,aACQ;AAER,QAAO,GAAG,QAAQ,GAAG,QAAQ,GAAG,MAAM,KAAK,GAAG,WAAW;;AAG3D,SAAgB,kBAAkB,SAAiB,aAA6B;AAC9E,QAAO,GAAG,QAAQ,cAAc;;AAGlC,SAAgB,qBAAqB,SAAiB,aAA6B;AACjF,QAAO,GAAG,QAAQ,mCAAmC;;AAGvD,SAAgB,yBAAyB,OAA2B,aAA6B;AAC/F,QAAO,CAAC,QACJ;sBACgB,YAAY;;MAE5B,IAAI,IAAI,YAAY,CAAC,SACrB;;sBAEgB,YAAY;;IAE9B,MAAM,QAAQ,KAAK,GAAG,CAAC;yBACF,YAAY;0BACX"}
@@ -1,7 +1,7 @@
1
1
  const require_runtime = require("../_virtual/_rolldown/runtime.js");
2
- let react_jsx_runtime = require("react/jsx-runtime");
3
2
  let react = require("react");
4
3
  react = require_runtime.__toESM(react);
4
+ let react_jsx_runtime = require("react/jsx-runtime");
5
5
  //#region src/utils/loadable.tsx
6
6
  /**
7
7
  * With the combination of a bundler, enable to code split a package.
@@ -1 +1 @@
1
- {"version":3,"file":"loadable.js","names":["React","Suspense","lazy","importCallback","TargetComponent","props"],"sources":["../../src/utils/loadable.tsx"],"sourcesContent":["import React, { Suspense, lazy } from 'react';\n\n/**\n * With the combination of a bundler, enable to code split a package.\n * \n * @example\n ```jsx\n const VersionPage = loadable(() => import(/'../pages/Version'));\n ```\n @category HOC\n */\nexport default (importCallback: any) => {\n const TargetComponent = lazy(importCallback);\n return (props: any) => (\n <Suspense fallback={null}>\n <TargetComponent {...props} />\n </Suspense>\n );\n};\n"],"mappings":";;;;;;;;;;;;;;AAWA,IAAA,oBAAgBG,mBAAwB;CACtC,MAAMC,mBAAAA,GAAAA,MAAAA,MAAuBD,eAAe;AAC5C,SAAQE,UACN,iBAAA,GAAA,kBAAA,KAAC,MAAA,UAAD;EAAU,UAAU;YAClB,iBAAA,GAAA,kBAAA,KAAC,iBAAD,EAAiB,GAAIA,OAAM,CAAA;EAE9B,CAAA"}
1
+ {"version":3,"file":"loadable.js","names":[],"sources":["../../src/utils/loadable.tsx"],"sourcesContent":["import React, { Suspense, lazy } from 'react';\n\n/**\n * With the combination of a bundler, enable to code split a package.\n * \n * @example\n ```jsx\n const VersionPage = loadable(() => import(/'../pages/Version'));\n ```\n @category HOC\n */\nexport default (importCallback: any) => {\n const TargetComponent = lazy(importCallback);\n return (props: any) => (\n <Suspense fallback={null}>\n <TargetComponent {...props} />\n </Suspense>\n );\n};\n"],"mappings":";;;;;;;;;;;;;;AAWA,IAAA,oBAAgB,mBAAwB;CACtC,MAAM,mBAAA,GAAA,MAAA,MAAuB,eAAe;AAC5C,SAAQ,UACN,iBAAA,GAAA,kBAAA,KAAC,MAAA,UAAD;EAAU,UAAU;YAClB,iBAAA,GAAA,kBAAA,KAAC,iBAAD,EAAiB,GAAI,OAAS,CAAA;EACrB,CAAA"}
@@ -1,5 +1,5 @@
1
- import { jsx } from "react/jsx-runtime";
2
1
  import { Suspense, lazy } from "react";
2
+ import { jsx } from "react/jsx-runtime";
3
3
  //#region src/utils/loadable.tsx
4
4
  /**
5
5
  * With the combination of a bundler, enable to code split a package.
@@ -1 +1 @@
1
- {"version":3,"file":"loadable.mjs","names":["React","Suspense","lazy","importCallback","TargetComponent","props"],"sources":["../../src/utils/loadable.tsx"],"sourcesContent":["import React, { Suspense, lazy } from 'react';\n\n/**\n * With the combination of a bundler, enable to code split a package.\n * \n * @example\n ```jsx\n const VersionPage = loadable(() => import(/'../pages/Version'));\n ```\n @category HOC\n */\nexport default (importCallback: any) => {\n const TargetComponent = lazy(importCallback);\n return (props: any) => (\n <Suspense fallback={null}>\n <TargetComponent {...props} />\n </Suspense>\n );\n};\n"],"mappings":";;;;;;;;;;;;AAWA,IAAA,oBAAgBG,mBAAwB;CACtC,MAAMC,kBAAkBF,KAAKC,eAAe;AAC5C,SAAQE,UACN,oBAAC,UAAD;EAAU,UAAU;YAClB,oBAAC,iBAAD,EAAiB,GAAIA,OAAM,CAAA;EAE9B,CAAA"}
1
+ {"version":3,"file":"loadable.mjs","names":[],"sources":["../../src/utils/loadable.tsx"],"sourcesContent":["import React, { Suspense, lazy } from 'react';\n\n/**\n * With the combination of a bundler, enable to code split a package.\n * \n * @example\n ```jsx\n const VersionPage = loadable(() => import(/'../pages/Version'));\n ```\n @category HOC\n */\nexport default (importCallback: any) => {\n const TargetComponent = lazy(importCallback);\n return (props: any) => (\n <Suspense fallback={null}>\n <TargetComponent {...props} />\n </Suspense>\n );\n};\n"],"mappings":";;;;;;;;;;;;AAWA,IAAA,oBAAgB,mBAAwB;CACtC,MAAM,kBAAkB,KAAK,eAAe;AAC5C,SAAQ,UACN,oBAAC,UAAD;EAAU,UAAU;YAClB,oBAAC,iBAAD,EAAiB,GAAI,OAAS,CAAA;EACrB,CAAA"}