openvsx-webui-test 0.19.0-dev.2 → 0.20.0-dev.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (350) hide show
  1. package/lib/components/banner.js +1 -2
  2. package/lib/components/banner.js.map +1 -1
  3. package/lib/components/copy-to-clipboard.js +1 -2
  4. package/lib/components/copy-to-clipboard.js.map +1 -1
  5. package/lib/components/delayed-load-indicator.js +2 -4
  6. package/lib/components/delayed-load-indicator.js.map +1 -1
  7. package/lib/components/error-dialog.d.ts.map +1 -1
  8. package/lib/components/error-dialog.js +5 -3
  9. package/lib/components/error-dialog.js.map +1 -1
  10. package/lib/components/rate-limiting/customer/general-details.d.ts +20 -0
  11. package/lib/components/rate-limiting/customer/general-details.d.ts.map +1 -0
  12. package/lib/components/rate-limiting/customer/general-details.js +8 -0
  13. package/lib/components/rate-limiting/customer/general-details.js.map +1 -0
  14. package/lib/components/rate-limiting/customer/index.d.ts +17 -0
  15. package/lib/components/rate-limiting/customer/index.d.ts.map +1 -0
  16. package/lib/components/rate-limiting/customer/index.js +15 -0
  17. package/lib/components/rate-limiting/customer/index.js.map +1 -0
  18. package/lib/components/rate-limiting/customer/usage-stats.d.ts +24 -0
  19. package/lib/components/rate-limiting/customer/usage-stats.d.ts.map +1 -0
  20. package/lib/components/rate-limiting/customer/usage-stats.js +6 -0
  21. package/lib/components/rate-limiting/customer/usage-stats.js.map +1 -0
  22. package/lib/{pages/admin-dashboard → components/rate-limiting}/usage-stats/usage-stats-chart.d.ts +5 -2
  23. package/lib/components/rate-limiting/usage-stats/usage-stats-chart.d.ts.map +1 -0
  24. package/lib/{pages/admin-dashboard → components/rate-limiting}/usage-stats/usage-stats-chart.js +25 -18
  25. package/lib/components/rate-limiting/usage-stats/usage-stats-chart.js.map +1 -0
  26. package/lib/components/rate-limiting/usage-stats/usage-stats-utils.d.ts +15 -0
  27. package/lib/components/rate-limiting/usage-stats/usage-stats-utils.d.ts.map +1 -0
  28. package/{src/pages/admin-dashboard/usage-stats/usage-stats-utils.ts → lib/components/rate-limiting/usage-stats/usage-stats-utils.js} +4 -3
  29. package/lib/components/rate-limiting/usage-stats/usage-stats-utils.js.map +1 -0
  30. package/lib/components/rate-limiting/usage-stats/use-usage-stats.d.ts +22 -0
  31. package/lib/components/rate-limiting/usage-stats/use-usage-stats.d.ts.map +1 -0
  32. package/lib/components/rate-limiting/usage-stats/use-usage-stats.js +58 -0
  33. package/lib/components/rate-limiting/usage-stats/use-usage-stats.js.map +1 -0
  34. package/lib/components/scan-admin/common/conditional-tooltip.js +4 -16
  35. package/lib/components/scan-admin/common/conditional-tooltip.js.map +1 -1
  36. package/lib/components/scan-admin/common/file-table.js +24 -13
  37. package/lib/components/scan-admin/common/file-table.js.map +1 -1
  38. package/lib/components/scan-admin/dialogs/quarantine-dialog.js +4 -8
  39. package/lib/components/scan-admin/dialogs/quarantine-dialog.js.map +1 -1
  40. package/lib/components/scan-admin/scan-card/scan-card-content.js +2 -2
  41. package/lib/components/scan-admin/scan-card/scan-card-content.js.map +1 -1
  42. package/lib/components/scan-admin/scan-card/scan-card-expand-strip-badges.js +21 -16
  43. package/lib/components/scan-admin/scan-card/scan-card-expand-strip-badges.js.map +1 -1
  44. package/lib/components/scan-admin/scan-card/scan-card-expanded-content.js +1 -2
  45. package/lib/components/scan-admin/scan-card/scan-card-expanded-content.js.map +1 -1
  46. package/lib/components/scan-admin/scan-card/scan-card-header.js +10 -5
  47. package/lib/components/scan-admin/scan-card/scan-card-header.js.map +1 -1
  48. package/lib/components/scan-admin/scan-card/utils.js +1 -2
  49. package/lib/components/scan-admin/scan-card/utils.js.map +1 -1
  50. package/lib/components/scan-admin/tab-contents/quarantined-tab-content.js +4 -6
  51. package/lib/components/scan-admin/tab-contents/quarantined-tab-content.js.map +1 -1
  52. package/lib/components/sidepanel/drawer-header.d.ts +14 -0
  53. package/lib/components/sidepanel/drawer-header.d.ts.map +1 -0
  54. package/lib/components/sidepanel/drawer-header.js +22 -0
  55. package/lib/components/sidepanel/drawer-header.js.map +1 -0
  56. package/lib/components/sidepanel/navigation-item.d.ts.map +1 -1
  57. package/lib/components/sidepanel/navigation-item.js +3 -3
  58. package/lib/components/sidepanel/navigation-item.js.map +1 -1
  59. package/lib/components/sidepanel/sidepanel.d.ts +7 -1
  60. package/lib/components/sidepanel/sidepanel.d.ts.map +1 -1
  61. package/lib/components/sidepanel/sidepanel.js +12 -13
  62. package/lib/components/sidepanel/sidepanel.js.map +1 -1
  63. package/lib/components/text-divider.js +1 -2
  64. package/lib/components/text-divider.js.map +1 -1
  65. package/lib/components/timestamp.d.ts +0 -1
  66. package/lib/components/timestamp.d.ts.map +1 -1
  67. package/lib/components/timestamp.js +2 -4
  68. package/lib/components/timestamp.js.map +1 -1
  69. package/lib/context/scan-admin/scan-api-actions.js +7 -16
  70. package/lib/context/scan-admin/scan-api-actions.js.map +1 -1
  71. package/lib/context/scan-admin/scan-api-effects.js +77 -93
  72. package/lib/context/scan-admin/scan-api-effects.js.map +1 -1
  73. package/lib/context/scan-admin/scan-context.d.ts.map +1 -1
  74. package/lib/context/scan-admin/scan-context.js +1 -0
  75. package/lib/context/scan-admin/scan-context.js.map +1 -1
  76. package/lib/context/scan-admin/scan-reducer.js +134 -53
  77. package/lib/context/scan-admin/scan-reducer.js.map +1 -1
  78. package/lib/default/default-app.d.ts +1 -1
  79. package/lib/default/default-app.d.ts.map +1 -1
  80. package/lib/default/default-app.js +11 -22
  81. package/lib/default/default-app.js.map +1 -1
  82. package/lib/default/menu-content.d.ts.map +1 -1
  83. package/lib/default/menu-content.js +7 -3
  84. package/lib/default/menu-content.js.map +1 -1
  85. package/lib/default/page-settings.js +13 -18
  86. package/lib/default/page-settings.js.map +1 -1
  87. package/lib/extension-registry-service.d.ts +11 -1
  88. package/lib/extension-registry-service.d.ts.map +1 -1
  89. package/lib/extension-registry-service.js +618 -629
  90. package/lib/extension-registry-service.js.map +1 -1
  91. package/lib/extension-registry-types.d.ts +7 -0
  92. package/lib/extension-registry-types.d.ts.map +1 -1
  93. package/lib/hooks/scan-admin/use-auto-rejected-tab.js +5 -7
  94. package/lib/hooks/scan-admin/use-auto-rejected-tab.js.map +1 -1
  95. package/lib/hooks/scan-admin/use-quarantined-tab.js +5 -7
  96. package/lib/hooks/scan-admin/use-quarantined-tab.js.map +1 -1
  97. package/lib/main.d.ts.map +1 -1
  98. package/lib/main.js +8 -16
  99. package/lib/main.js.map +1 -1
  100. package/lib/other-pages.d.ts +12 -0
  101. package/lib/other-pages.d.ts.map +1 -1
  102. package/lib/other-pages.js +25 -12
  103. package/lib/other-pages.js.map +1 -1
  104. package/lib/pages/admin-dashboard/admin-dashboard.d.ts +0 -12
  105. package/lib/pages/admin-dashboard/admin-dashboard.d.ts.map +1 -1
  106. package/lib/pages/admin-dashboard/admin-dashboard.js +136 -49
  107. package/lib/pages/admin-dashboard/admin-dashboard.js.map +1 -1
  108. package/lib/pages/admin-dashboard/admin-routes.d.ts +25 -0
  109. package/lib/pages/admin-dashboard/admin-routes.d.ts.map +1 -0
  110. package/lib/pages/admin-dashboard/admin-routes.js +27 -0
  111. package/lib/pages/admin-dashboard/admin-routes.js.map +1 -0
  112. package/lib/pages/admin-dashboard/components/data-grid-filter-operators.d.ts +1 -9
  113. package/lib/pages/admin-dashboard/components/data-grid-filter-operators.d.ts.map +1 -1
  114. package/lib/pages/admin-dashboard/components/data-grid-filter-operators.js +17 -15
  115. package/lib/pages/admin-dashboard/components/data-grid-filter-operators.js.map +1 -1
  116. package/lib/pages/admin-dashboard/components/data-grid-filter.d.ts +22 -0
  117. package/lib/pages/admin-dashboard/components/data-grid-filter.d.ts.map +1 -0
  118. package/lib/pages/admin-dashboard/components/data-grid-filter.js +13 -0
  119. package/lib/pages/admin-dashboard/components/data-grid-filter.js.map +1 -0
  120. package/lib/pages/admin-dashboard/components/index.d.ts +2 -1
  121. package/lib/pages/admin-dashboard/components/index.d.ts.map +1 -1
  122. package/lib/pages/admin-dashboard/components/index.js +2 -1
  123. package/lib/pages/admin-dashboard/components/index.js.map +1 -1
  124. package/lib/pages/admin-dashboard/{usage-stats/usage-stats-utils.d.ts → customers/customer-details.d.ts} +3 -2
  125. package/lib/pages/admin-dashboard/customers/customer-details.d.ts.map +1 -0
  126. package/lib/pages/admin-dashboard/customers/customer-details.js +77 -0
  127. package/lib/pages/admin-dashboard/customers/customer-details.js.map +1 -0
  128. package/lib/pages/admin-dashboard/customers/customer-form-dialog.d.ts +1 -1
  129. package/lib/pages/admin-dashboard/customers/customer-form-dialog.d.ts.map +1 -1
  130. package/lib/pages/admin-dashboard/customers/customer-form-dialog.js +33 -34
  131. package/lib/pages/admin-dashboard/customers/customer-form-dialog.js.map +1 -1
  132. package/lib/pages/admin-dashboard/customers/customer-member-list.d.ts +19 -0
  133. package/lib/pages/admin-dashboard/customers/customer-member-list.d.ts.map +1 -0
  134. package/lib/pages/admin-dashboard/customers/customer-member-list.js +88 -0
  135. package/lib/pages/admin-dashboard/customers/customer-member-list.js.map +1 -0
  136. package/lib/pages/admin-dashboard/customers/customers.d.ts +1 -1
  137. package/lib/pages/admin-dashboard/customers/customers.js +20 -29
  138. package/lib/pages/admin-dashboard/customers/customers.js.map +1 -1
  139. package/lib/pages/admin-dashboard/customers/delete-customer-dialog.js +4 -14
  140. package/lib/pages/admin-dashboard/customers/delete-customer-dialog.js.map +1 -1
  141. package/lib/pages/admin-dashboard/extension-admin.js +7 -16
  142. package/lib/pages/admin-dashboard/extension-admin.js.map +1 -1
  143. package/lib/pages/admin-dashboard/extension-remove-dialog.js +3 -12
  144. package/lib/pages/admin-dashboard/extension-remove-dialog.js.map +1 -1
  145. package/lib/pages/admin-dashboard/extension-version-container.js +3 -5
  146. package/lib/pages/admin-dashboard/extension-version-container.js.map +1 -1
  147. package/lib/pages/admin-dashboard/logs/logs.d.ts.map +1 -1
  148. package/lib/pages/admin-dashboard/logs/logs.js +6 -24
  149. package/lib/pages/admin-dashboard/logs/logs.js.map +1 -1
  150. package/lib/pages/admin-dashboard/namespace-admin.js +7 -16
  151. package/lib/pages/admin-dashboard/namespace-admin.js.map +1 -1
  152. package/lib/pages/admin-dashboard/namespace-change-dialog.js +3 -12
  153. package/lib/pages/admin-dashboard/namespace-change-dialog.js.map +1 -1
  154. package/lib/pages/admin-dashboard/namespace-input.js +1 -1
  155. package/lib/pages/admin-dashboard/namespace-input.js.map +1 -1
  156. package/lib/pages/admin-dashboard/publisher-admin.d.ts.map +1 -1
  157. package/lib/pages/admin-dashboard/publisher-admin.js +28 -22
  158. package/lib/pages/admin-dashboard/publisher-admin.js.map +1 -1
  159. package/lib/pages/admin-dashboard/publisher-revoke-dialog.js +5 -15
  160. package/lib/pages/admin-dashboard/publisher-revoke-dialog.js.map +1 -1
  161. package/lib/pages/admin-dashboard/publisher-revoke-tokens-button.js +3 -12
  162. package/lib/pages/admin-dashboard/publisher-revoke-tokens-button.js.map +1 -1
  163. package/lib/pages/admin-dashboard/tiers/delete-tier-dialog.js +4 -13
  164. package/lib/pages/admin-dashboard/tiers/delete-tier-dialog.js.map +1 -1
  165. package/lib/pages/admin-dashboard/tiers/tier-form-dialog.js +34 -23
  166. package/lib/pages/admin-dashboard/tiers/tier-form-dialog.js.map +1 -1
  167. package/lib/pages/admin-dashboard/tiers/tiers.js +12 -21
  168. package/lib/pages/admin-dashboard/tiers/tiers.js.map +1 -1
  169. package/lib/pages/admin-dashboard/usage-stats/usage-stats-search.js +3 -14
  170. package/lib/pages/admin-dashboard/usage-stats/usage-stats-search.js.map +1 -1
  171. package/lib/pages/admin-dashboard/usage-stats/usage-stats.d.ts.map +1 -1
  172. package/lib/pages/admin-dashboard/usage-stats/usage-stats.js +11 -45
  173. package/lib/pages/admin-dashboard/usage-stats/usage-stats.js.map +1 -1
  174. package/lib/pages/admin-dashboard/usage-stats/use-usage-stats.d.ts +22 -0
  175. package/lib/pages/admin-dashboard/usage-stats/use-usage-stats.d.ts.map +1 -0
  176. package/lib/pages/admin-dashboard/usage-stats/use-usage-stats.js +58 -0
  177. package/lib/pages/admin-dashboard/usage-stats/use-usage-stats.js.map +1 -0
  178. package/lib/pages/admin-dashboard/welcome.js +1 -1
  179. package/lib/pages/admin-dashboard/welcome.js.map +1 -1
  180. package/lib/pages/extension-detail/extension-detail-changes.js +3 -12
  181. package/lib/pages/extension-detail/extension-detail-changes.js.map +1 -1
  182. package/lib/pages/extension-detail/extension-detail-overview.js +6 -16
  183. package/lib/pages/extension-detail/extension-detail-overview.js.map +1 -1
  184. package/lib/pages/extension-detail/extension-detail-reviews.js +12 -24
  185. package/lib/pages/extension-detail/extension-detail-reviews.js.map +1 -1
  186. package/lib/pages/extension-detail/extension-detail-routes.d.ts +32 -0
  187. package/lib/pages/extension-detail/extension-detail-routes.d.ts.map +1 -0
  188. package/lib/pages/extension-detail/extension-detail-routes.js +35 -0
  189. package/lib/pages/extension-detail/extension-detail-routes.js.map +1 -0
  190. package/lib/pages/extension-detail/extension-detail.d.ts +0 -19
  191. package/lib/pages/extension-detail/extension-detail.d.ts.map +1 -1
  192. package/lib/pages/extension-detail/extension-detail.js +28 -50
  193. package/lib/pages/extension-detail/extension-detail.js.map +1 -1
  194. package/lib/pages/extension-detail/extension-rating-stars.js +1 -2
  195. package/lib/pages/extension-detail/extension-rating-stars.js.map +1 -1
  196. package/lib/pages/extension-detail/extension-review-dialog.js +4 -14
  197. package/lib/pages/extension-detail/extension-review-dialog.js.map +1 -1
  198. package/lib/pages/extension-list/extension-list-container.d.ts +0 -3
  199. package/lib/pages/extension-list/extension-list-container.d.ts.map +1 -1
  200. package/lib/pages/extension-list/extension-list-container.js +5 -10
  201. package/lib/pages/extension-list/extension-list-container.js.map +1 -1
  202. package/lib/pages/extension-list/extension-list-header.js +3 -6
  203. package/lib/pages/extension-list/extension-list-header.js.map +1 -1
  204. package/lib/pages/extension-list/extension-list-item.js +7 -17
  205. package/lib/pages/extension-list/extension-list-item.js.map +1 -1
  206. package/lib/pages/extension-list/extension-list-routes.d.ts +16 -0
  207. package/lib/pages/extension-list/extension-list-routes.d.ts.map +1 -0
  208. package/lib/pages/extension-list/extension-list-routes.js +18 -0
  209. package/lib/pages/extension-list/extension-list-routes.js.map +1 -0
  210. package/lib/pages/extension-list/extension-list-searchfield.js +4 -7
  211. package/lib/pages/extension-list/extension-list-searchfield.js.map +1 -1
  212. package/lib/pages/extension-list/extension-list.js +8 -19
  213. package/lib/pages/extension-list/extension-list.js.map +1 -1
  214. package/lib/pages/namespace-detail/namespace-detail-routes.d.ts +20 -0
  215. package/lib/pages/namespace-detail/namespace-detail-routes.d.ts.map +1 -0
  216. package/lib/pages/namespace-detail/namespace-detail-routes.js +23 -0
  217. package/lib/pages/namespace-detail/namespace-detail-routes.js.map +1 -0
  218. package/lib/pages/namespace-detail/namespace-detail.d.ts +0 -7
  219. package/lib/pages/namespace-detail/namespace-detail.d.ts.map +1 -1
  220. package/lib/pages/namespace-detail/namespace-detail.js +4 -24
  221. package/lib/pages/namespace-detail/namespace-detail.js.map +1 -1
  222. package/lib/pages/user/add-namespace-member-dialog.d.ts.map +1 -1
  223. package/lib/pages/user/add-namespace-member-dialog.js +8 -67
  224. package/lib/pages/user/add-namespace-member-dialog.js.map +1 -1
  225. package/lib/pages/user/add-user-dialog.d.ts +25 -0
  226. package/lib/pages/user/add-user-dialog.d.ts.map +1 -0
  227. package/lib/pages/user/add-user-dialog.js +66 -0
  228. package/lib/pages/user/add-user-dialog.js.map +1 -0
  229. package/lib/pages/user/avatar.js +3 -3
  230. package/lib/pages/user/avatar.js.map +1 -1
  231. package/lib/pages/user/create-namespace-dialog.js +3 -12
  232. package/lib/pages/user/create-namespace-dialog.js.map +1 -1
  233. package/lib/pages/user/generate-token-dialog.js +3 -12
  234. package/lib/pages/user/generate-token-dialog.js.map +1 -1
  235. package/lib/pages/user/logout.js +3 -12
  236. package/lib/pages/user/logout.js.map +1 -1
  237. package/lib/pages/user/publish-extension-dialog.js +12 -21
  238. package/lib/pages/user/publish-extension-dialog.js.map +1 -1
  239. package/lib/pages/user/user-namespace-details.js +29 -42
  240. package/lib/pages/user/user-namespace-details.js.map +1 -1
  241. package/lib/pages/user/user-namespace-extension-list-item.js +6 -8
  242. package/lib/pages/user/user-namespace-extension-list-item.js.map +1 -1
  243. package/lib/pages/user/user-namespace-extension-list.js +6 -15
  244. package/lib/pages/user/user-namespace-extension-list.js.map +1 -1
  245. package/lib/pages/user/user-namespace-member-component.js +1 -1
  246. package/lib/pages/user/user-namespace-member-component.js.map +1 -1
  247. package/lib/pages/user/user-namespace-member-list.js +9 -18
  248. package/lib/pages/user/user-namespace-member-list.js.map +1 -1
  249. package/lib/pages/user/user-publisher-agreement.js +8 -18
  250. package/lib/pages/user/user-publisher-agreement.js.map +1 -1
  251. package/lib/pages/user/user-setting-tabs.d.ts.map +1 -1
  252. package/lib/pages/user/user-setting-tabs.js +2 -2
  253. package/lib/pages/user/user-setting-tabs.js.map +1 -1
  254. package/lib/pages/user/user-settings-customer-detail.d.ts +19 -0
  255. package/lib/pages/user/user-settings-customer-detail.d.ts.map +1 -0
  256. package/lib/pages/user/user-settings-customer-detail.js +9 -0
  257. package/lib/pages/user/user-settings-customer-detail.js.map +1 -0
  258. package/lib/pages/user/user-settings-customers.d.ts +15 -0
  259. package/lib/pages/user/user-settings-customers.d.ts.map +1 -0
  260. package/lib/pages/user/user-settings-customers.js +66 -0
  261. package/lib/pages/user/user-settings-customers.js.map +1 -0
  262. package/lib/pages/user/user-settings-delete-extension.js +8 -17
  263. package/lib/pages/user/user-settings-delete-extension.js.map +1 -1
  264. package/lib/pages/user/user-settings-extensions.js +3 -12
  265. package/lib/pages/user/user-settings-extensions.js.map +1 -1
  266. package/lib/pages/user/user-settings-namespace-detail.d.ts.map +1 -1
  267. package/lib/pages/user/user-settings-namespace-detail.js +4 -12
  268. package/lib/pages/user/user-settings-namespace-detail.js.map +1 -1
  269. package/lib/pages/user/user-settings-namespaces.js +6 -15
  270. package/lib/pages/user/user-settings-namespaces.js.map +1 -1
  271. package/lib/pages/user/user-settings-profile.js +1 -2
  272. package/lib/pages/user/user-settings-profile.js.map +1 -1
  273. package/lib/pages/user/user-settings-routes.d.ts +23 -0
  274. package/lib/pages/user/user-settings-routes.d.ts.map +1 -0
  275. package/lib/pages/user/user-settings-routes.js +25 -0
  276. package/lib/pages/user/user-settings-routes.js.map +1 -0
  277. package/lib/pages/user/user-settings-tokens.d.ts +0 -7
  278. package/lib/pages/user/user-settings-tokens.d.ts.map +1 -1
  279. package/lib/pages/user/user-settings-tokens.js +14 -24
  280. package/lib/pages/user/user-settings-tokens.js.map +1 -1
  281. package/lib/pages/user/user-settings.d.ts +0 -9
  282. package/lib/pages/user/user-settings.d.ts.map +1 -1
  283. package/lib/pages/user/user-settings.js +4 -12
  284. package/lib/pages/user/user-settings.js.map +1 -1
  285. package/lib/server-request.js +64 -76
  286. package/lib/server-request.js.map +1 -1
  287. package/lib/utils.d.ts +1 -1
  288. package/lib/utils.d.ts.map +1 -1
  289. package/lib/utils.js +7 -14
  290. package/lib/utils.js.map +1 -1
  291. package/package.json +4 -2
  292. package/src/components/error-dialog.tsx +5 -3
  293. package/src/components/rate-limiting/customer/general-details.tsx +106 -0
  294. package/src/components/rate-limiting/customer/index.ts +18 -0
  295. package/src/components/rate-limiting/customer/usage-stats.tsx +50 -0
  296. package/src/{pages/admin-dashboard → components/rate-limiting}/usage-stats/usage-stats-chart.tsx +46 -26
  297. package/{lib/pages/admin-dashboard/usage-stats/usage-stats-utils.js → src/components/rate-limiting/usage-stats/usage-stats-utils.ts} +4 -2
  298. package/src/components/rate-limiting/usage-stats/use-usage-stats.ts +70 -0
  299. package/src/components/scan-admin/scan-card/scan-card-header.tsx +2 -2
  300. package/src/components/sidepanel/drawer-header.tsx +23 -0
  301. package/src/components/sidepanel/navigation-item.tsx +3 -2
  302. package/src/components/sidepanel/sidepanel.tsx +29 -17
  303. package/src/components/timestamp.tsx +1 -3
  304. package/src/context/scan-admin/scan-context.tsx +1 -0
  305. package/src/default/default-app.tsx +1 -1
  306. package/src/default/menu-content.tsx +6 -2
  307. package/src/default/page-settings.tsx +1 -1
  308. package/src/extension-registry-service.ts +105 -26
  309. package/src/extension-registry-types.ts +9 -0
  310. package/src/main.tsx +2 -1
  311. package/src/other-pages.tsx +21 -4
  312. package/src/pages/admin-dashboard/admin-dashboard.tsx +260 -83
  313. package/src/pages/admin-dashboard/admin-routes.ts +27 -0
  314. package/src/pages/admin-dashboard/components/data-grid-filter-operators.tsx +1 -31
  315. package/src/pages/admin-dashboard/components/data-grid-filter.tsx +45 -0
  316. package/src/pages/admin-dashboard/components/index.ts +1 -1
  317. package/src/pages/admin-dashboard/customers/customer-details.tsx +129 -0
  318. package/src/pages/admin-dashboard/customers/customer-form-dialog.tsx +3 -4
  319. package/src/pages/admin-dashboard/customers/customer-member-list.tsx +174 -0
  320. package/src/pages/admin-dashboard/customers/customers.tsx +8 -8
  321. package/src/pages/admin-dashboard/logs/logs.tsx +1 -10
  322. package/src/pages/admin-dashboard/publisher-admin.tsx +29 -11
  323. package/src/pages/admin-dashboard/usage-stats/usage-stats.tsx +10 -39
  324. package/src/pages/admin-dashboard/usage-stats/use-usage-stats.ts +70 -0
  325. package/src/pages/admin-dashboard/welcome.tsx +1 -1
  326. package/src/pages/extension-detail/extension-detail-overview.tsx +2 -2
  327. package/src/pages/extension-detail/extension-detail-routes.ts +35 -0
  328. package/src/pages/extension-detail/extension-detail.tsx +3 -23
  329. package/src/pages/extension-list/extension-list-container.tsx +1 -5
  330. package/src/pages/extension-list/extension-list-item.tsx +1 -1
  331. package/src/pages/extension-list/extension-list-routes.ts +18 -0
  332. package/src/pages/namespace-detail/namespace-detail-routes.ts +23 -0
  333. package/src/pages/namespace-detail/namespace-detail.tsx +0 -10
  334. package/src/pages/user/add-namespace-member-dialog.tsx +17 -116
  335. package/src/pages/user/add-user-dialog.tsx +141 -0
  336. package/src/pages/user/avatar.tsx +2 -2
  337. package/src/pages/user/user-namespace-extension-list-item.tsx +2 -2
  338. package/src/pages/user/user-setting-tabs.tsx +2 -1
  339. package/src/pages/user/user-settings-customer-detail.tsx +39 -0
  340. package/src/pages/user/user-settings-customers.tsx +120 -0
  341. package/src/pages/user/user-settings-delete-extension.tsx +1 -1
  342. package/src/pages/user/user-settings-namespace-detail.tsx +3 -1
  343. package/src/pages/user/user-settings-routes.ts +25 -0
  344. package/src/pages/user/user-settings-tokens.tsx +2 -9
  345. package/src/pages/user/user-settings.tsx +4 -12
  346. package/src/utils.ts +5 -9
  347. package/lib/pages/admin-dashboard/usage-stats/usage-stats-chart.d.ts.map +0 -1
  348. package/lib/pages/admin-dashboard/usage-stats/usage-stats-chart.js.map +0 -1
  349. package/lib/pages/admin-dashboard/usage-stats/usage-stats-utils.d.ts.map +0 -1
  350. package/lib/pages/admin-dashboard/usage-stats/usage-stats-utils.js.map +0 -1
@@ -15,7 +15,7 @@ import {
15
15
  LoginProviders, ScanResultJson, ScanCounts, ScanResultsResponse, ScanFilterOptions,
16
16
  FilesResponse, FileDecisionCountsJson, ScanDecisionRequest, ScanDecisionResponse,
17
17
  FileDecisionRequest, FileDecisionResponse, FileDecisionDeleteRequest, FileDecisionDeleteResponse,
18
- Tier, TierList, Customer, CustomerList, UsageStatsList, LogPageableList,
18
+ Tier, TierList, Customer, CustomerList, UsageStatsList, LogPageableList, CustomerMembershipList,
19
19
  } from './extension-registry-types';
20
20
  import { createAbsoluteURL, addQuery } from './utils';
21
21
  import { sendRequest, ErrorResponse } from './server-request';
@@ -28,7 +28,7 @@ export class ExtensionRegistryService {
28
28
  this.admin = new AdminConstructor(this);
29
29
  }
30
30
 
31
- getLoginProviders(abortController: AbortController): Promise<Readonly<LoginProviders|SuccessResult>> {
31
+ async getLoginProviders(abortController: AbortController): Promise<Readonly<LoginProviders|SuccessResult>> {
32
32
  const endpoint = createAbsoluteURL([this.serverUrl, 'login-providers']);
33
33
  return sendRequest({ abortController, endpoint });
34
34
  }
@@ -49,7 +49,7 @@ export class ExtensionRegistryService {
49
49
  return createAbsoluteURL(arr);
50
50
  }
51
51
 
52
- getNamespaceDetails(abortController: AbortController, name: string): Promise<Readonly<NamespaceDetails>> {
52
+ async getNamespaceDetails(abortController: AbortController, name: string): Promise<Readonly<NamespaceDetails>> {
53
53
  const endpoint = createAbsoluteURL([this.serverUrl, 'api', name, 'details']);
54
54
  return sendRequest({ abortController, endpoint });
55
55
  }
@@ -95,7 +95,7 @@ export class ExtensionRegistryService {
95
95
  });
96
96
  }
97
97
 
98
- search(abortController: AbortController, filter?: ExtensionFilter): Promise<Readonly<SearchResult | ErrorResult>> {
98
+ async search(abortController: AbortController, filter?: ExtensionFilter): Promise<Readonly<SearchResult | ErrorResult>> {
99
99
  const query: { key: string, value: string | number }[] = [];
100
100
  if (filter) {
101
101
  if (filter.query)
@@ -115,11 +115,11 @@ export class ExtensionRegistryService {
115
115
  return sendRequest({ abortController, endpoint });
116
116
  }
117
117
 
118
- getExtensionDetail(abortController: AbortController, extensionUrl: UrlString): Promise<Readonly<Extension | ErrorResult>> {
118
+ async getExtensionDetail(abortController: AbortController, extensionUrl: UrlString): Promise<Readonly<Extension | ErrorResult>> {
119
119
  return sendRequest({ abortController, endpoint: extensionUrl });
120
120
  }
121
121
 
122
- getExtensionReadme(abortController: AbortController, extension: Extension): Promise<string> {
122
+ async getExtensionReadme(abortController: AbortController, extension: Extension): Promise<string> {
123
123
  return sendRequest({
124
124
  abortController,
125
125
  endpoint: extension.files.readme,
@@ -128,7 +128,7 @@ export class ExtensionRegistryService {
128
128
  });
129
129
  }
130
130
 
131
- getExtensionChangelog(abortController: AbortController, extension: Extension): Promise<string> {
131
+ async getExtensionChangelog(abortController: AbortController, extension: Extension): Promise<string> {
132
132
  return sendRequest({
133
133
  abortController,
134
134
  endpoint: extension.files.changelog,
@@ -137,7 +137,7 @@ export class ExtensionRegistryService {
137
137
  });
138
138
  }
139
139
 
140
- getExtensionIcon(abortController: AbortController, extension: Extension | SearchEntry): Promise<string | undefined> {
140
+ async getExtensionIcon(abortController: AbortController, extension: Extension | SearchEntry): Promise<string | undefined> {
141
141
  if (!extension.files.icon) {
142
142
  return Promise.resolve(undefined);
143
143
  }
@@ -173,7 +173,7 @@ export class ExtensionRegistryService {
173
173
  ];
174
174
  }
175
175
 
176
- getExtensionReviews(abortController: AbortController, extension: Extension): Promise<Readonly<ExtensionReviewList>> {
176
+ async getExtensionReviews(abortController: AbortController, extension: Extension): Promise<Readonly<ExtensionReviewList>> {
177
177
  return sendRequest({ abortController, endpoint: extension.reviewsUrl });
178
178
  }
179
179
 
@@ -228,7 +228,7 @@ export class ExtensionRegistryService {
228
228
  });
229
229
  }
230
230
 
231
- getUser(abortController: AbortController): Promise<Readonly<UserData | ErrorResult>> {
231
+ async getUser(abortController: AbortController): Promise<Readonly<UserData | ErrorResult>> {
232
232
  return sendRequest({
233
233
  abortController,
234
234
  endpoint: createAbsoluteURL([this.serverUrl, 'user']),
@@ -236,7 +236,7 @@ export class ExtensionRegistryService {
236
236
  });
237
237
  }
238
238
 
239
- getUserAuthError(abortController: AbortController): Promise<Readonly<ErrorResponse>> {
239
+ async getUserAuthError(abortController: AbortController): Promise<Readonly<ErrorResponse>> {
240
240
  return sendRequest({
241
241
  abortController,
242
242
  endpoint: createAbsoluteURL([this.serverUrl, 'user', 'auth-error']),
@@ -244,7 +244,7 @@ export class ExtensionRegistryService {
244
244
  });
245
245
  }
246
246
 
247
- getUserByName(abortController: AbortController, name: string): Promise<Readonly<UserData>[]> {
247
+ async getUserByName(abortController: AbortController, name: string): Promise<Readonly<UserData>[]> {
248
248
  return sendRequest({
249
249
  abortController,
250
250
  endpoint: createAbsoluteURL([this.serverUrl, 'user', 'search', name]),
@@ -252,7 +252,7 @@ export class ExtensionRegistryService {
252
252
  });
253
253
  }
254
254
 
255
- getAccessTokens(abortController: AbortController, user: UserData): Promise<Readonly<PersonalAccessToken>[]> {
255
+ async getAccessTokens(abortController: AbortController, user: UserData): Promise<Readonly<PersonalAccessToken>[]> {
256
256
  return sendRequest({
257
257
  abortController,
258
258
  credentials: true,
@@ -310,7 +310,7 @@ export class ExtensionRegistryService {
310
310
  })));
311
311
  }
312
312
 
313
- getCsrfToken(abortController: AbortController): Promise<Readonly<CsrfTokenJson | ErrorResult>> {
313
+ async getCsrfToken(abortController: AbortController): Promise<Readonly<CsrfTokenJson | ErrorResult>> {
314
314
  return sendRequest({
315
315
  abortController,
316
316
  credentials: true,
@@ -318,7 +318,7 @@ export class ExtensionRegistryService {
318
318
  });
319
319
  }
320
320
 
321
- getNamespaces(abortController: AbortController): Promise<Readonly<Namespace>[]> {
321
+ async getNamespaces(abortController: AbortController): Promise<Readonly<Namespace>[]> {
322
322
  return sendRequest({
323
323
  abortController,
324
324
  credentials: true,
@@ -326,7 +326,26 @@ export class ExtensionRegistryService {
326
326
  });
327
327
  }
328
328
 
329
- getNamespaceMembers(abortController: AbortController, namespace: Namespace): Promise<Readonly<NamespaceMembershipList>> {
329
+ async getCustomers(abortController: AbortController): Promise<Readonly<Customer>[]> {
330
+ return sendRequest({
331
+ abortController,
332
+ credentials: true,
333
+ endpoint: createAbsoluteURL([this.serverUrl, 'user', 'customers'])
334
+ });
335
+ }
336
+
337
+ async getUsageStats(abortController: AbortController, customerName: string, date: Date): Promise<Readonly<UsageStatsList>> {
338
+ const query: { key: string, value: string | number }[] = [];
339
+ query.push({ key: 'date', value: date.toISOString() });
340
+
341
+ return sendRequest({
342
+ abortController,
343
+ endpoint: createAbsoluteURL([this.serverUrl, 'user', 'customers', customerName, 'usage'], query),
344
+ credentials: true
345
+ }, false);
346
+ }
347
+
348
+ async getNamespaceMembers(abortController: AbortController, namespace: Namespace): Promise<Readonly<NamespaceMembershipList>> {
330
349
  return sendRequest({
331
350
  abortController,
332
351
  credentials: true,
@@ -371,7 +390,7 @@ export class ExtensionRegistryService {
371
390
  });
372
391
  }
373
392
 
374
- getStaticContent(abortController: AbortController, url: string): Promise<string> {
393
+ async getStaticContent(abortController: AbortController, url: string): Promise<string> {
375
394
  return sendRequest({
376
395
  abortController,
377
396
  endpoint: url,
@@ -505,9 +524,13 @@ export interface AdminService {
505
524
  updateTier(abortController: AbortController, name: string, tier: Tier): Promise<Readonly<Tier>>;
506
525
  deleteTier(abortController: AbortController, name: string): Promise<Readonly<SuccessResult | ErrorResult>>;
507
526
  getCustomers(abortController: AbortController): Promise<Readonly<CustomerList>>;
527
+ getCustomer(abortController: AbortController, name: string): Promise<Readonly<Customer>>;
508
528
  createCustomer(abortController: AbortController, customer: Customer): Promise<Readonly<Customer>>;
509
529
  updateCustomer(abortController: AbortController, name: string, customer: Customer): Promise<Readonly<Customer>>;
510
530
  deleteCustomer(abortController: AbortController, name: string): Promise<Readonly<SuccessResult | ErrorResult>>;
531
+ getCustomerMembers(abortController: AbortController, name: string): Promise<Readonly<CustomerMembershipList>>;
532
+ addCustomerMember(abortController: AbortController, name: string, user: UserData): Promise<Readonly<SuccessResult | ErrorResult>>;
533
+ removeCustomerMember(abortController: AbortController, name: string, user: UserData): Promise<Readonly<SuccessResult | ErrorResult>>;
511
534
  getUsageStats(abortController: AbortController, customerName: string, date: Date): Promise<Readonly<UsageStatsList>>;
512
535
  getLogs(abortController: AbortController, page?: number, size?: number, period?: string): Promise<Readonly<LogPageableList>>;
513
536
  }
@@ -520,7 +543,7 @@ export class AdminServiceImpl implements AdminService {
520
543
 
521
544
  constructor(readonly registry: ExtensionRegistryService) {}
522
545
 
523
- getExtension(abortController: AbortController, namespace: string, extension: string): Promise<Readonly<Extension>> {
546
+ async getExtension(abortController: AbortController, namespace: string, extension: string): Promise<Readonly<Extension>> {
524
547
  return sendRequest({
525
548
  abortController,
526
549
  credentials: true,
@@ -548,7 +571,7 @@ export class AdminServiceImpl implements AdminService {
548
571
  });
549
572
  }
550
573
 
551
- getNamespace(abortController: AbortController, name: string): Promise<Readonly<Namespace>> {
574
+ async getNamespace(abortController: AbortController, name: string): Promise<Readonly<Namespace>> {
552
575
  return sendRequest({
553
576
  abortController,
554
577
  credentials: true,
@@ -634,7 +657,7 @@ export class AdminServiceImpl implements AdminService {
634
657
  });
635
658
  }
636
659
 
637
- getAllScans(abortController: AbortController, params?: { size?: number; offset?: number; status?: string | string[]; publisher?: string; namespace?: string; name?: string; validationType?: string[]; threatScannerName?: string[]; dateStartedFrom?: string; dateStartedTo?: string; enforcement?: 'enforced' | 'notEnforced' | 'all'; adminDecision?: string[] }): Promise<Readonly<ScanResultsResponse>> {
660
+ async getAllScans(abortController: AbortController, params?: { size?: number; offset?: number; status?: string | string[]; publisher?: string; namespace?: string; name?: string; validationType?: string[]; threatScannerName?: string[]; dateStartedFrom?: string; dateStartedTo?: string; enforcement?: 'enforced' | 'notEnforced' | 'all'; adminDecision?: string[] }): Promise<Readonly<ScanResultsResponse>> {
638
661
  const query: { key: string, value: string | number }[] = [];
639
662
  if (params) {
640
663
  if (params.size !== undefined)
@@ -672,7 +695,7 @@ export class AdminServiceImpl implements AdminService {
672
695
  });
673
696
  }
674
697
 
675
- getScan(abortController: AbortController, scanId: string): Promise<Readonly<ScanResultJson>> {
698
+ async getScan(abortController: AbortController, scanId: string): Promise<Readonly<ScanResultJson>> {
676
699
  return sendRequest({
677
700
  abortController,
678
701
  credentials: true,
@@ -680,7 +703,7 @@ export class AdminServiceImpl implements AdminService {
680
703
  });
681
704
  }
682
705
 
683
- getScanCounts(abortController: AbortController, params?: { dateStartedFrom?: string; dateStartedTo?: string; enforcement?: 'enforced' | 'notEnforced' | 'all'; threatScannerName?: string[]; validationType?: string[] }): Promise<Readonly<ScanCounts>> {
706
+ async getScanCounts(abortController: AbortController, params?: { dateStartedFrom?: string; dateStartedTo?: string; enforcement?: 'enforced' | 'notEnforced' | 'all'; threatScannerName?: string[]; validationType?: string[] }): Promise<Readonly<ScanCounts>> {
684
707
  const query: { key: string, value: string | number }[] = [];
685
708
  if (params) {
686
709
  if (params.dateStartedFrom)
@@ -704,7 +727,7 @@ export class AdminServiceImpl implements AdminService {
704
727
  });
705
728
  }
706
729
 
707
- getScanFilterOptions(abortController: AbortController): Promise<Readonly<ScanFilterOptions>> {
730
+ async getScanFilterOptions(abortController: AbortController): Promise<Readonly<ScanFilterOptions>> {
708
731
  return sendRequest({
709
732
  abortController,
710
733
  credentials: true,
@@ -712,7 +735,7 @@ export class AdminServiceImpl implements AdminService {
712
735
  });
713
736
  }
714
737
 
715
- getFiles(abortController: AbortController, params?: { size?: number; offset?: number; decision?: string; publisher?: string; namespace?: string; name?: string; dateDecidedFrom?: string; dateDecidedTo?: string; sortBy?: string; sortOrder?: 'asc' | 'desc' }): Promise<Readonly<FilesResponse>> {
738
+ async getFiles(abortController: AbortController, params?: { size?: number; offset?: number; decision?: string; publisher?: string; namespace?: string; name?: string; dateDecidedFrom?: string; dateDecidedTo?: string; sortBy?: string; sortOrder?: 'asc' | 'desc' }): Promise<Readonly<FilesResponse>> {
716
739
  const query: { key: string, value: string | number }[] = [];
717
740
  if (params) {
718
741
  if (params.size !== undefined)
@@ -744,7 +767,7 @@ export class AdminServiceImpl implements AdminService {
744
767
  });
745
768
  }
746
769
 
747
- getFileCounts(abortController: AbortController, params?: { dateDecidedFrom?: string; dateDecidedTo?: string }): Promise<Readonly<FileDecisionCountsJson>> {
770
+ async getFileCounts(abortController: AbortController, params?: { dateDecidedFrom?: string; dateDecidedTo?: string }): Promise<Readonly<FileDecisionCountsJson>> {
748
771
  const query: { key: string, value: string | number }[] = [];
749
772
  if (params) {
750
773
  if (params.dateDecidedFrom)
@@ -885,13 +908,21 @@ export class AdminServiceImpl implements AdminService {
885
908
  }
886
909
 
887
910
  async getCustomers(abortController: AbortController): Promise<Readonly<CustomerList>> {
888
- return sendRequest({
911
+ return await sendRequest({
889
912
  abortController,
890
913
  endpoint: createAbsoluteURL([this.registry.serverUrl, 'admin', 'ratelimit', 'customers']),
891
914
  credentials: true
892
915
  }, false);
893
916
  }
894
917
 
918
+ async getCustomer(abortController: AbortController, name: string): Promise<Readonly<Customer>> {
919
+ return await sendRequest({
920
+ abortController,
921
+ endpoint: createAbsoluteURL([this.registry.serverUrl, 'admin', 'ratelimit', 'customers', name]),
922
+ credentials: true
923
+ }, false);
924
+ }
925
+
895
926
  async createCustomer(abortController: AbortController, customer: Customer): Promise<Readonly<Customer>> {
896
927
  const csrfResponse = await this.registry.getCsrfToken(abortController);
897
928
  const headers: Record<string, string> = {
@@ -948,6 +979,54 @@ export class AdminServiceImpl implements AdminService {
948
979
  }, false);
949
980
  }
950
981
 
982
+ async getCustomerMembers(abortController: AbortController, name: string): Promise<Readonly<CustomerMembershipList>> {
983
+ return sendRequest({
984
+ abortController,
985
+ credentials: true,
986
+ endpoint: createAbsoluteURL([this.registry.serverUrl, 'admin', 'ratelimit', 'customers', name, "members"]),
987
+ }, false);
988
+ }
989
+
990
+ async addCustomerMember(abortController: AbortController, name: string, user: UserData): Promise<Readonly<SuccessResult | ErrorResult>> {
991
+ const csrfResponse = await this.registry.getCsrfToken(abortController);
992
+ const headers: Record<string, string> = {};
993
+ if (!isError(csrfResponse)) {
994
+ const csrfToken = csrfResponse as CsrfTokenJson;
995
+ headers[csrfToken.header] = csrfToken.value;
996
+ }
997
+ const query = [
998
+ { key: 'user', value: user.loginName },
999
+ { key: 'provider', value: user.provider },
1000
+ ];
1001
+ return sendRequest({
1002
+ abortController,
1003
+ headers,
1004
+ method: 'POST',
1005
+ credentials: true,
1006
+ endpoint: addQuery(createAbsoluteURL([this.registry.serverUrl, 'admin', 'ratelimit', 'customers', name, "add-member"]), query),
1007
+ }, false);
1008
+ }
1009
+
1010
+ async removeCustomerMember(abortController: AbortController, name: string, user: UserData): Promise<Readonly<SuccessResult | ErrorResult>> {
1011
+ const csrfResponse = await this.registry.getCsrfToken(abortController);
1012
+ const headers: Record<string, string> = {};
1013
+ if (!isError(csrfResponse)) {
1014
+ const csrfToken = csrfResponse as CsrfTokenJson;
1015
+ headers[csrfToken.header] = csrfToken.value;
1016
+ }
1017
+ const query = [
1018
+ { key: 'user', value: user.loginName },
1019
+ { key: 'provider', value: user.provider },
1020
+ ];
1021
+ return sendRequest({
1022
+ abortController,
1023
+ headers,
1024
+ method: 'POST',
1025
+ credentials: true,
1026
+ endpoint: addQuery(createAbsoluteURL([this.registry.serverUrl, 'admin', 'ratelimit', 'customers', name, "remove-member"]), query),
1027
+ }, false);
1028
+ }
1029
+
951
1030
  /**
952
1031
  * Get usage stats for a customer within an optional date range.
953
1032
  */
@@ -458,6 +458,15 @@ export interface CustomerList {
458
458
  customers: Customer[];
459
459
  }
460
460
 
461
+ export interface CustomerMembership {
462
+ customer: string;
463
+ user: UserData;
464
+ }
465
+
466
+ export interface CustomerMembershipList {
467
+ customerMemberships: CustomerMembership[];
468
+ }
469
+
461
470
  export interface UsageStats {
462
471
  windowStart: number; // epoch seconds in UTC
463
472
  duration: number; // in seconds
package/src/main.tsx CHANGED
@@ -11,7 +11,8 @@
11
11
  import { FunctionComponent, ReactNode, useEffect, useState, useRef } from 'react';
12
12
  import { CssBaseline } from '@mui/material';
13
13
  import { Route, Routes } from 'react-router-dom';
14
- import { AdminDashboard, AdminDashboardRoutes } from './pages/admin-dashboard/admin-dashboard';
14
+ import { AdminDashboard } from './pages/admin-dashboard/admin-dashboard';
15
+ import { AdminDashboardRoutes } from './pages/admin-dashboard/admin-routes';
15
16
  import { ErrorDialog } from './components/error-dialog';
16
17
  import { handleError } from './utils';
17
18
  import { ExtensionRegistryService } from './extension-registry-service';
@@ -1,3 +1,16 @@
1
+ /******************************************************************************
2
+ * Copyright (c) 2026 Contributors to the Eclipse Foundation.
3
+ *
4
+ * See the NOTICE file(s) distributed with this work for additional
5
+ * information regarding copyright ownership.
6
+ *
7
+ * This program and the accompanying materials are made available under the
8
+ * terms of the Eclipse Public License 2.0 which is available at
9
+ * https://www.eclipse.org/legal/epl-2.0.
10
+ *
11
+ * SPDX-License-Identifier: EPL-2.0
12
+ *****************************************************************************/
13
+
1
14
  import { FunctionComponent, useContext, useEffect, useState } from 'react';
2
15
  import { Routes, Route } from 'react-router-dom';
3
16
  import { AppBar, Box, Toolbar } from '@mui/material';
@@ -5,10 +18,14 @@ import { styled, Theme } from '@mui/material/styles';
5
18
  import { Banner } from './components/banner';
6
19
  import { MainContext } from './context';
7
20
  import { HeaderMenu } from './header-menu';
8
- import { ExtensionListContainer, ExtensionListRoutes } from './pages/extension-list/extension-list-container';
9
- import { UserSettings, UserSettingsRoutes } from './pages/user/user-settings';
10
- import { NamespaceDetail, NamespaceDetailRoutes } from './pages/namespace-detail/namespace-detail';
11
- import { ExtensionDetail, ExtensionDetailRoutes } from './pages/extension-detail/extension-detail';
21
+ import { ExtensionListContainer } from './pages/extension-list/extension-list-container';
22
+ import { ExtensionListRoutes } from "./pages/extension-list/extension-list-routes";
23
+ import { UserSettings } from './pages/user/user-settings';
24
+ import { UserSettingsRoutes } from './pages/user/user-settings-routes';
25
+ import { NamespaceDetail } from './pages/namespace-detail/namespace-detail';
26
+ import { NamespaceDetailRoutes } from './pages/namespace-detail/namespace-detail-routes';
27
+ import { ExtensionDetail } from './pages/extension-detail/extension-detail';
28
+ import { ExtensionDetailRoutes } from './pages/extension-detail/extension-detail-routes';
12
29
  import { getCookieValueByKey, setCookie } from './utils';
13
30
  import { UserData } from './extension-registry-types';
14
31
  import { NotFound } from './not-found';