openvsx-webui-test 0.18.0-security.5 → 0.19.0-dev.1

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 (535) hide show
  1. package/lib/components/banner.d.ts.map +1 -1
  2. package/lib/components/banner.js +10 -24
  3. package/lib/components/banner.js.map +1 -1
  4. package/lib/components/button-with-progress.d.ts.map +1 -1
  5. package/lib/components/button-with-progress.js +11 -22
  6. package/lib/components/button-with-progress.js.map +1 -1
  7. package/lib/components/copy-to-clipboard.d.ts.map +1 -1
  8. package/lib/components/copy-to-clipboard.js +3 -2
  9. package/lib/components/copy-to-clipboard.js.map +1 -1
  10. package/lib/components/delayed-load-indicator.d.ts.map +1 -1
  11. package/lib/components/delayed-load-indicator.js +4 -3
  12. package/lib/components/delayed-load-indicator.js.map +1 -1
  13. package/lib/components/error-dialog.d.ts.map +1 -1
  14. package/lib/components/error-dialog.js +8 -23
  15. package/lib/components/error-dialog.js.map +1 -1
  16. package/lib/components/hover-popover.d.ts.map +1 -1
  17. package/lib/components/hover-popover.js +9 -10
  18. package/lib/components/hover-popover.js.map +1 -1
  19. package/lib/components/info-dialog.d.ts.map +1 -1
  20. package/lib/components/info-dialog.js +3 -7
  21. package/lib/components/info-dialog.js.map +1 -1
  22. package/lib/components/sanitized-markdown.d.ts.map +1 -1
  23. package/lib/components/sanitized-markdown.js +3 -2
  24. package/lib/components/sanitized-markdown.js.map +1 -1
  25. package/lib/components/scan-admin/common/auto-refresh.d.ts.map +1 -1
  26. package/lib/components/scan-admin/common/auto-refresh.js +12 -30
  27. package/lib/components/scan-admin/common/auto-refresh.js.map +1 -1
  28. package/lib/components/scan-admin/common/conditional-tooltip.d.ts.map +1 -1
  29. package/lib/components/scan-admin/common/conditional-tooltip.js +6 -17
  30. package/lib/components/scan-admin/common/conditional-tooltip.js.map +1 -1
  31. package/lib/components/scan-admin/common/file-table.d.ts.map +1 -1
  32. package/lib/components/scan-admin/common/file-table.js +84 -144
  33. package/lib/components/scan-admin/common/file-table.js.map +1 -1
  34. package/lib/components/scan-admin/common/tab-panel.d.ts.map +1 -1
  35. package/lib/components/scan-admin/common/tab-panel.js +2 -14
  36. package/lib/components/scan-admin/common/tab-panel.js.map +1 -1
  37. package/lib/components/scan-admin/common/utils.d.ts.map +1 -1
  38. package/lib/components/scan-admin/common/utils.js.map +1 -1
  39. package/lib/components/scan-admin/dialogs/file-dialog.d.ts.map +1 -1
  40. package/lib/components/scan-admin/dialogs/file-dialog.js +31 -73
  41. package/lib/components/scan-admin/dialogs/file-dialog.js.map +1 -1
  42. package/lib/components/scan-admin/dialogs/quarantine-dialog.d.ts.map +1 -1
  43. package/lib/components/scan-admin/dialogs/quarantine-dialog.js +60 -120
  44. package/lib/components/scan-admin/dialogs/quarantine-dialog.js.map +1 -1
  45. package/lib/components/scan-admin/scan-card/scan-card-content.d.ts +3 -3
  46. package/lib/components/scan-admin/scan-card/scan-card-content.d.ts.map +1 -1
  47. package/lib/components/scan-admin/scan-card/scan-card-content.js +139 -204
  48. package/lib/components/scan-admin/scan-card/scan-card-content.js.map +1 -1
  49. package/lib/components/scan-admin/scan-card/scan-card-expand-strip-badges.d.ts +2 -2
  50. package/lib/components/scan-admin/scan-card/scan-card-expand-strip-badges.d.ts.map +1 -1
  51. package/lib/components/scan-admin/scan-card/scan-card-expand-strip-badges.js +28 -34
  52. package/lib/components/scan-admin/scan-card/scan-card-expand-strip-badges.js.map +1 -1
  53. package/lib/components/scan-admin/scan-card/scan-card-expand-strip.d.ts +2 -2
  54. package/lib/components/scan-admin/scan-card/scan-card-expand-strip.d.ts.map +1 -1
  55. package/lib/components/scan-admin/scan-card/scan-card-expand-strip.js +9 -12
  56. package/lib/components/scan-admin/scan-card/scan-card-expand-strip.js.map +1 -1
  57. package/lib/components/scan-admin/scan-card/scan-card-expanded-content.d.ts +0 -1
  58. package/lib/components/scan-admin/scan-card/scan-card-expanded-content.d.ts.map +1 -1
  59. package/lib/components/scan-admin/scan-card/scan-card-expanded-content.js +20 -51
  60. package/lib/components/scan-admin/scan-card/scan-card-expanded-content.js.map +1 -1
  61. package/lib/components/scan-admin/scan-card/scan-card-header.d.ts +2 -2
  62. package/lib/components/scan-admin/scan-card/scan-card-header.d.ts.map +1 -1
  63. package/lib/components/scan-admin/scan-card/scan-card-header.js +58 -61
  64. package/lib/components/scan-admin/scan-card/scan-card-header.js.map +1 -1
  65. package/lib/components/scan-admin/scan-card/scan-card.d.ts.map +1 -1
  66. package/lib/components/scan-admin/scan-card/scan-card.js +20 -25
  67. package/lib/components/scan-admin/scan-card/scan-card.js.map +1 -1
  68. package/lib/components/scan-admin/scan-card/scan-detail-card.d.ts.map +1 -1
  69. package/lib/components/scan-admin/scan-card/scan-detail-card.js +19 -43
  70. package/lib/components/scan-admin/scan-card/scan-detail-card.js.map +1 -1
  71. package/lib/components/scan-admin/scan-card/utils.d.ts +4 -4
  72. package/lib/components/scan-admin/scan-card/utils.d.ts.map +1 -1
  73. package/lib/components/scan-admin/scan-card/utils.js.map +1 -1
  74. package/lib/components/scan-admin/tab-contents/allow-list-tab-content.d.ts.map +1 -1
  75. package/lib/components/scan-admin/tab-contents/allow-list-tab-content.js +17 -39
  76. package/lib/components/scan-admin/tab-contents/allow-list-tab-content.js.map +1 -1
  77. package/lib/components/scan-admin/tab-contents/auto-rejected-tab-content.d.ts.map +1 -1
  78. package/lib/components/scan-admin/tab-contents/auto-rejected-tab-content.js +8 -30
  79. package/lib/components/scan-admin/tab-contents/auto-rejected-tab-content.js.map +1 -1
  80. package/lib/components/scan-admin/tab-contents/block-list-tab-content.d.ts.map +1 -1
  81. package/lib/components/scan-admin/tab-contents/block-list-tab-content.js +17 -39
  82. package/lib/components/scan-admin/tab-contents/block-list-tab-content.js.map +1 -1
  83. package/lib/components/scan-admin/tab-contents/quarantined-tab-content.d.ts.map +1 -1
  84. package/lib/components/scan-admin/tab-contents/quarantined-tab-content.js +26 -48
  85. package/lib/components/scan-admin/tab-contents/quarantined-tab-content.js.map +1 -1
  86. package/lib/components/scan-admin/tab-contents/scans-tab-content.d.ts.map +1 -1
  87. package/lib/components/scan-admin/tab-contents/scans-tab-content.js +15 -37
  88. package/lib/components/scan-admin/tab-contents/scans-tab-content.js.map +1 -1
  89. package/lib/components/scan-admin/toolbars/counts-toolbar.d.ts.map +1 -1
  90. package/lib/components/scan-admin/toolbars/counts-toolbar.js +70 -94
  91. package/lib/components/scan-admin/toolbars/counts-toolbar.js.map +1 -1
  92. package/lib/components/scan-admin/toolbars/search-toolbar.d.ts +5 -4
  93. package/lib/components/scan-admin/toolbars/search-toolbar.d.ts.map +1 -1
  94. package/lib/components/scan-admin/toolbars/search-toolbar.js +72 -98
  95. package/lib/components/scan-admin/toolbars/search-toolbar.js.map +1 -1
  96. package/lib/components/scan-admin/toolbars/tab-toolbar.d.ts +1 -1
  97. package/lib/components/scan-admin/toolbars/tab-toolbar.d.ts.map +1 -1
  98. package/lib/components/scan-admin/toolbars/tab-toolbar.js +3 -16
  99. package/lib/components/scan-admin/toolbars/tab-toolbar.js.map +1 -1
  100. package/lib/components/sidepanel/navigation-item.d.ts.map +1 -1
  101. package/lib/components/sidepanel/navigation-item.js +4 -9
  102. package/lib/components/sidepanel/navigation-item.js.map +1 -1
  103. package/lib/components/sidepanel/sidepanel.d.ts.map +1 -1
  104. package/lib/components/sidepanel/sidepanel.js +3 -13
  105. package/lib/components/sidepanel/sidepanel.js.map +1 -1
  106. package/lib/components/text-divider.d.ts.map +1 -1
  107. package/lib/components/text-divider.js +2 -11
  108. package/lib/components/text-divider.js.map +1 -1
  109. package/lib/components/timestamp.d.ts.map +1 -1
  110. package/lib/components/timestamp.js +2 -11
  111. package/lib/components/timestamp.js.map +1 -1
  112. package/lib/context/scan-admin/scan-actions.d.ts +2 -1
  113. package/lib/context/scan-admin/scan-actions.d.ts.map +1 -1
  114. package/lib/context/scan-admin/scan-actions.js.map +1 -1
  115. package/lib/context/scan-admin/scan-api-actions.d.ts +3 -3
  116. package/lib/context/scan-admin/scan-api-actions.d.ts.map +1 -1
  117. package/lib/context/scan-admin/scan-api-actions.js.map +1 -1
  118. package/lib/context/scan-admin/scan-api-effects.d.ts +7 -7
  119. package/lib/context/scan-admin/scan-api-effects.d.ts.map +1 -1
  120. package/lib/context/scan-admin/scan-api-effects.js.map +1 -1
  121. package/lib/context/scan-admin/scan-context-types.d.ts +9 -9
  122. package/lib/context/scan-admin/scan-context-types.d.ts.map +1 -1
  123. package/lib/context/scan-admin/scan-context.d.ts +2 -2
  124. package/lib/context/scan-admin/scan-context.d.ts.map +1 -1
  125. package/lib/context/scan-admin/scan-context.js +3 -2
  126. package/lib/context/scan-admin/scan-context.js.map +1 -1
  127. package/lib/context/scan-admin/scan-helpers.d.ts.map +1 -1
  128. package/lib/context/scan-admin/scan-helpers.js.map +1 -1
  129. package/lib/context/scan-admin/scan-reducer.d.ts.map +1 -1
  130. package/lib/context/scan-admin/scan-reducer.js.map +1 -1
  131. package/lib/context/scan-admin/scan-types.js +1 -1
  132. package/lib/context/scan-admin/scan-types.js.map +1 -1
  133. package/lib/context.d.ts +0 -1
  134. package/lib/context.d.ts.map +1 -1
  135. package/lib/default/about.d.ts.map +1 -1
  136. package/lib/default/about.js +2 -22
  137. package/lib/default/about.js.map +1 -1
  138. package/lib/default/default-app.js +13 -15
  139. package/lib/default/default-app.js.map +1 -1
  140. package/lib/default/login.d.ts.map +1 -1
  141. package/lib/default/login.js +3 -7
  142. package/lib/default/login.js.map +1 -1
  143. package/lib/default/menu-content.d.ts +5 -8
  144. package/lib/default/menu-content.d.ts.map +1 -1
  145. package/lib/default/menu-content.js +21 -91
  146. package/lib/default/menu-content.js.map +1 -1
  147. package/lib/default/openvsx-registry-logo.d.ts.map +1 -1
  148. package/lib/default/openvsx-registry-logo.js +2 -14
  149. package/lib/default/openvsx-registry-logo.js.map +1 -1
  150. package/lib/default/page-settings.js +18 -27
  151. package/lib/default/page-settings.js.map +1 -1
  152. package/lib/extension-registry-service.d.ts +24 -1
  153. package/lib/extension-registry-service.d.ts.map +1 -1
  154. package/lib/extension-registry-service.js +169 -2
  155. package/lib/extension-registry-service.js.map +1 -1
  156. package/lib/extension-registry-types.d.ts +57 -0
  157. package/lib/extension-registry-types.d.ts.map +1 -1
  158. package/lib/extension-registry-types.js +16 -0
  159. package/lib/extension-registry-types.js.map +1 -1
  160. package/lib/header-menu.d.ts.map +1 -1
  161. package/lib/header-menu.js +8 -11
  162. package/lib/header-menu.js.map +1 -1
  163. package/lib/hooks/scan-admin/use-auto-rejected-tab.d.ts +1 -2
  164. package/lib/hooks/scan-admin/use-auto-rejected-tab.d.ts.map +1 -1
  165. package/lib/hooks/scan-admin/use-dialogs.d.ts +1 -1
  166. package/lib/hooks/scan-admin/use-dialogs.d.ts.map +1 -1
  167. package/lib/hooks/scan-admin/use-file-list-tab.d.ts +0 -1
  168. package/lib/hooks/scan-admin/use-file-list-tab.d.ts.map +1 -1
  169. package/lib/hooks/scan-admin/use-pagination.js.map +1 -1
  170. package/lib/hooks/scan-admin/use-quarantined-tab.d.ts +1 -2
  171. package/lib/hooks/scan-admin/use-quarantined-tab.d.ts.map +1 -1
  172. package/lib/hooks/scan-admin/use-quarantined-tab.js +2 -3
  173. package/lib/hooks/scan-admin/use-quarantined-tab.js.map +1 -1
  174. package/lib/hooks/scan-admin/use-query-params-state.d.ts +15 -0
  175. package/lib/hooks/scan-admin/use-query-params-state.d.ts.map +1 -0
  176. package/lib/hooks/scan-admin/use-query-params-state.js +44 -0
  177. package/lib/hooks/scan-admin/use-query-params-state.js.map +1 -0
  178. package/lib/hooks/scan-admin/use-scan-card-state.d.ts +3 -3
  179. package/lib/hooks/scan-admin/use-scan-card-state.d.ts.map +1 -1
  180. package/lib/hooks/scan-admin/use-scan-card-state.js +1 -1
  181. package/lib/hooks/scan-admin/use-scan-card-state.js.map +1 -1
  182. package/lib/hooks/scan-admin/use-scan-filters.d.ts +3 -4
  183. package/lib/hooks/scan-admin/use-scan-filters.d.ts.map +1 -1
  184. package/lib/hooks/scan-admin/use-scans-tab.d.ts +1 -2
  185. package/lib/hooks/scan-admin/use-scans-tab.d.ts.map +1 -1
  186. package/lib/hooks/scan-admin/use-scans-tab.js.map +1 -1
  187. package/lib/hooks/scan-admin/use-search.d.ts +0 -1
  188. package/lib/hooks/scan-admin/use-search.d.ts.map +1 -1
  189. package/lib/hooks/scan-admin/use-tab-navigation.js.map +1 -1
  190. package/lib/hooks/scan-admin/use-url-sync.js.map +1 -1
  191. package/lib/main.d.ts.map +1 -1
  192. package/lib/main.js +15 -21
  193. package/lib/main.js.map +1 -1
  194. package/lib/not-found.d.ts.map +1 -1
  195. package/lib/not-found.js +2 -5
  196. package/lib/not-found.js.map +1 -1
  197. package/lib/other-pages.d.ts.map +1 -1
  198. package/lib/other-pages.js +7 -24
  199. package/lib/other-pages.js.map +1 -1
  200. package/lib/pages/admin-dashboard/admin-dashboard.d.ts +4 -0
  201. package/lib/pages/admin-dashboard/admin-dashboard.d.ts.map +1 -1
  202. package/lib/pages/admin-dashboard/admin-dashboard.js +43 -39
  203. package/lib/pages/admin-dashboard/admin-dashboard.js.map +1 -1
  204. package/lib/pages/admin-dashboard/components/data-grid-filter-operators.d.ts +40 -0
  205. package/lib/pages/admin-dashboard/components/data-grid-filter-operators.d.ts.map +1 -0
  206. package/lib/pages/admin-dashboard/components/data-grid-filter-operators.js +81 -0
  207. package/lib/pages/admin-dashboard/components/data-grid-filter-operators.js.map +1 -0
  208. package/lib/pages/admin-dashboard/components/index.d.ts +14 -0
  209. package/lib/pages/admin-dashboard/components/index.d.ts.map +1 -0
  210. package/lib/pages/admin-dashboard/components/index.js +14 -0
  211. package/lib/pages/admin-dashboard/components/index.js.map +1 -0
  212. package/lib/pages/admin-dashboard/customers/customer-form-dialog.d.ts +23 -0
  213. package/lib/pages/admin-dashboard/customers/customer-form-dialog.d.ts.map +1 -0
  214. package/lib/pages/admin-dashboard/customers/customer-form-dialog.js +206 -0
  215. package/lib/pages/admin-dashboard/customers/customer-form-dialog.js.map +1 -0
  216. package/lib/pages/admin-dashboard/customers/customers.d.ts +15 -0
  217. package/lib/pages/admin-dashboard/customers/customers.d.ts.map +1 -0
  218. package/lib/pages/admin-dashboard/customers/customers.js +156 -0
  219. package/lib/pages/admin-dashboard/customers/customers.js.map +1 -0
  220. package/lib/pages/admin-dashboard/customers/delete-customer-dialog.d.ts +23 -0
  221. package/lib/pages/admin-dashboard/customers/delete-customer-dialog.d.ts.map +1 -0
  222. package/lib/pages/admin-dashboard/customers/delete-customer-dialog.js +47 -0
  223. package/lib/pages/admin-dashboard/customers/delete-customer-dialog.js.map +1 -0
  224. package/lib/pages/admin-dashboard/extension-admin.d.ts.map +1 -1
  225. package/lib/pages/admin-dashboard/extension-admin.js +20 -18
  226. package/lib/pages/admin-dashboard/extension-admin.js.map +1 -1
  227. package/lib/pages/admin-dashboard/extension-remove-dialog.d.ts.map +1 -1
  228. package/lib/pages/admin-dashboard/extension-remove-dialog.js +13 -31
  229. package/lib/pages/admin-dashboard/extension-remove-dialog.js.map +1 -1
  230. package/lib/pages/admin-dashboard/extension-version-container.d.ts.map +1 -1
  231. package/lib/pages/admin-dashboard/extension-version-container.js +26 -53
  232. package/lib/pages/admin-dashboard/extension-version-container.js.map +1 -1
  233. package/lib/pages/admin-dashboard/logs/logs.d.ts +15 -0
  234. package/lib/pages/admin-dashboard/logs/logs.d.ts.map +1 -0
  235. package/lib/pages/admin-dashboard/logs/logs.js +133 -0
  236. package/lib/pages/admin-dashboard/logs/logs.js.map +1 -0
  237. package/lib/pages/admin-dashboard/namespace-admin.d.ts.map +1 -1
  238. package/lib/pages/admin-dashboard/namespace-admin.js +14 -22
  239. package/lib/pages/admin-dashboard/namespace-admin.js.map +1 -1
  240. package/lib/pages/admin-dashboard/namespace-change-dialog.d.ts.map +1 -1
  241. package/lib/pages/admin-dashboard/namespace-change-dialog.js +14 -24
  242. package/lib/pages/admin-dashboard/namespace-change-dialog.js.map +1 -1
  243. package/lib/pages/admin-dashboard/namespace-input.d.ts +1 -0
  244. package/lib/pages/admin-dashboard/namespace-input.d.ts.map +1 -1
  245. package/lib/pages/admin-dashboard/namespace-input.js +17 -19
  246. package/lib/pages/admin-dashboard/namespace-input.js.map +1 -1
  247. package/lib/pages/admin-dashboard/publisher-admin.d.ts +2 -2
  248. package/lib/pages/admin-dashboard/publisher-admin.d.ts.map +1 -1
  249. package/lib/pages/admin-dashboard/publisher-admin.js +18 -22
  250. package/lib/pages/admin-dashboard/publisher-admin.js.map +1 -1
  251. package/lib/pages/admin-dashboard/publisher-details.d.ts.map +1 -1
  252. package/lib/pages/admin-dashboard/publisher-details.js +5 -28
  253. package/lib/pages/admin-dashboard/publisher-details.js.map +1 -1
  254. package/lib/pages/admin-dashboard/publisher-revoke-dialog.d.ts.map +1 -1
  255. package/lib/pages/admin-dashboard/publisher-revoke-dialog.js +22 -51
  256. package/lib/pages/admin-dashboard/publisher-revoke-dialog.js.map +1 -1
  257. package/lib/pages/admin-dashboard/publisher-revoke-tokens-button.d.ts.map +1 -1
  258. package/lib/pages/admin-dashboard/publisher-revoke-tokens-button.js +12 -12
  259. package/lib/pages/admin-dashboard/publisher-revoke-tokens-button.js.map +1 -1
  260. package/lib/pages/admin-dashboard/scan-admin.d.ts.map +1 -1
  261. package/lib/pages/admin-dashboard/scan-admin.js +5 -32
  262. package/lib/pages/admin-dashboard/scan-admin.js.map +1 -1
  263. package/lib/pages/admin-dashboard/search-list-container.d.ts.map +1 -1
  264. package/lib/pages/admin-dashboard/search-list-container.js +4 -19
  265. package/lib/pages/admin-dashboard/search-list-container.js.map +1 -1
  266. package/lib/pages/admin-dashboard/tiers/delete-tier-dialog.d.ts +23 -0
  267. package/lib/pages/admin-dashboard/tiers/delete-tier-dialog.d.ts.map +1 -0
  268. package/lib/pages/admin-dashboard/tiers/delete-tier-dialog.js +45 -0
  269. package/lib/pages/admin-dashboard/tiers/delete-tier-dialog.js.map +1 -0
  270. package/lib/pages/admin-dashboard/tiers/tier-form-dialog.d.ts +23 -0
  271. package/lib/pages/admin-dashboard/tiers/tier-form-dialog.d.ts.map +1 -0
  272. package/lib/pages/admin-dashboard/tiers/tier-form-dialog.js +174 -0
  273. package/lib/pages/admin-dashboard/tiers/tier-form-dialog.js.map +1 -0
  274. package/lib/pages/admin-dashboard/tiers/tiers.d.ts +15 -0
  275. package/lib/pages/admin-dashboard/tiers/tiers.d.ts.map +1 -0
  276. package/lib/pages/admin-dashboard/tiers/tiers.js +159 -0
  277. package/lib/pages/admin-dashboard/tiers/tiers.js.map +1 -0
  278. package/lib/pages/admin-dashboard/usage-stats/usage-stats-chart.d.ts +23 -0
  279. package/lib/pages/admin-dashboard/usage-stats/usage-stats-chart.d.ts.map +1 -0
  280. package/lib/pages/admin-dashboard/usage-stats/usage-stats-chart.js +87 -0
  281. package/lib/pages/admin-dashboard/usage-stats/usage-stats-chart.js.map +1 -0
  282. package/lib/pages/admin-dashboard/usage-stats/usage-stats-search.d.ts +26 -0
  283. package/lib/pages/admin-dashboard/usage-stats/usage-stats-search.d.ts.map +1 -0
  284. package/lib/pages/admin-dashboard/usage-stats/usage-stats-search.js +35 -0
  285. package/lib/pages/admin-dashboard/usage-stats/usage-stats-search.js.map +1 -0
  286. package/lib/pages/admin-dashboard/usage-stats/usage-stats-utils.d.ts +14 -0
  287. package/lib/pages/admin-dashboard/usage-stats/usage-stats-utils.d.ts.map +1 -0
  288. package/lib/pages/admin-dashboard/usage-stats/usage-stats-utils.js +16 -0
  289. package/lib/pages/admin-dashboard/usage-stats/usage-stats-utils.js.map +1 -0
  290. package/lib/pages/admin-dashboard/usage-stats/usage-stats.d.ts +15 -0
  291. package/lib/pages/admin-dashboard/usage-stats/usage-stats.d.ts.map +1 -0
  292. package/lib/pages/admin-dashboard/usage-stats/usage-stats.js +102 -0
  293. package/lib/pages/admin-dashboard/usage-stats/usage-stats.js.map +1 -0
  294. package/lib/pages/admin-dashboard/welcome.d.ts.map +1 -1
  295. package/lib/pages/admin-dashboard/welcome.js +3 -27
  296. package/lib/pages/admin-dashboard/welcome.js.map +1 -1
  297. package/lib/pages/extension-detail/extension-detail-changes.d.ts.map +1 -1
  298. package/lib/pages/extension-detail/extension-detail-changes.js +27 -33
  299. package/lib/pages/extension-detail/extension-detail-changes.js.map +1 -1
  300. package/lib/pages/extension-detail/extension-detail-downloads-menu.d.ts.map +1 -1
  301. package/lib/pages/extension-detail/extension-detail-downloads-menu.js +6 -9
  302. package/lib/pages/extension-detail/extension-detail-downloads-menu.js.map +1 -1
  303. package/lib/pages/extension-detail/extension-detail-overview.d.ts.map +1 -1
  304. package/lib/pages/extension-detail/extension-detail-overview.js +66 -133
  305. package/lib/pages/extension-detail/extension-detail-overview.js.map +1 -1
  306. package/lib/pages/extension-detail/extension-detail-reviews.d.ts.map +1 -1
  307. package/lib/pages/extension-detail/extension-detail-reviews.js +53 -75
  308. package/lib/pages/extension-detail/extension-detail-reviews.js.map +1 -1
  309. package/lib/pages/extension-detail/extension-detail.d.ts.map +1 -1
  310. package/lib/pages/extension-detail/extension-detail.js +56 -129
  311. package/lib/pages/extension-detail/extension-detail.js.map +1 -1
  312. package/lib/pages/extension-detail/extension-rating-star-setter.d.ts.map +1 -1
  313. package/lib/pages/extension-detail/extension-rating-star-setter.js +4 -3
  314. package/lib/pages/extension-detail/extension-rating-star-setter.js.map +1 -1
  315. package/lib/pages/extension-detail/extension-rating-stars.d.ts.map +1 -1
  316. package/lib/pages/extension-detail/extension-rating-stars.js +5 -16
  317. package/lib/pages/extension-detail/extension-rating-stars.js.map +1 -1
  318. package/lib/pages/extension-detail/extension-review-dialog.d.ts.map +1 -1
  319. package/lib/pages/extension-detail/extension-review-dialog.js +15 -28
  320. package/lib/pages/extension-detail/extension-review-dialog.js.map +1 -1
  321. package/lib/pages/extension-list/extension-list-container.d.ts.map +1 -1
  322. package/lib/pages/extension-list/extension-list-container.js +3 -4
  323. package/lib/pages/extension-list/extension-list-container.js.map +1 -1
  324. package/lib/pages/extension-list/extension-list-header.d.ts.map +1 -1
  325. package/lib/pages/extension-list/extension-list-header.js +55 -74
  326. package/lib/pages/extension-list/extension-list-header.js.map +1 -1
  327. package/lib/pages/extension-list/extension-list-item.d.ts.map +1 -1
  328. package/lib/pages/extension-list/extension-list-item.js +13 -29
  329. package/lib/pages/extension-list/extension-list-item.js.map +1 -1
  330. package/lib/pages/extension-list/extension-list-searchfield.d.ts.map +1 -1
  331. package/lib/pages/extension-list/extension-list-searchfield.js +17 -20
  332. package/lib/pages/extension-list/extension-list-searchfield.js.map +1 -1
  333. package/lib/pages/extension-list/extension-list.d.ts.map +1 -1
  334. package/lib/pages/extension-list/extension-list.js +15 -19
  335. package/lib/pages/extension-list/extension-list.js.map +1 -1
  336. package/lib/pages/namespace-detail/namespace-detail.d.ts.map +1 -1
  337. package/lib/pages/namespace-detail/namespace-detail.js +50 -87
  338. package/lib/pages/namespace-detail/namespace-detail.js.map +1 -1
  339. package/lib/pages/user/add-namespace-member-dialog.d.ts.map +1 -1
  340. package/lib/pages/user/add-namespace-member-dialog.js +27 -40
  341. package/lib/pages/user/add-namespace-member-dialog.js.map +1 -1
  342. package/lib/pages/user/avatar.d.ts.map +1 -1
  343. package/lib/pages/user/avatar.js +12 -28
  344. package/lib/pages/user/avatar.js.map +1 -1
  345. package/lib/pages/user/create-namespace-dialog.d.ts.map +1 -1
  346. package/lib/pages/user/create-namespace-dialog.js +12 -20
  347. package/lib/pages/user/create-namespace-dialog.js.map +1 -1
  348. package/lib/pages/user/generate-token-dialog.d.ts.map +1 -1
  349. package/lib/pages/user/generate-token-dialog.js +18 -31
  350. package/lib/pages/user/generate-token-dialog.js.map +1 -1
  351. package/lib/pages/user/logout.d.ts +3 -2
  352. package/lib/pages/user/logout.d.ts.map +1 -1
  353. package/lib/pages/user/logout.js +15 -15
  354. package/lib/pages/user/logout.js.map +1 -1
  355. package/lib/pages/user/publish-extension-dialog.d.ts.map +1 -1
  356. package/lib/pages/user/publish-extension-dialog.js +25 -46
  357. package/lib/pages/user/publish-extension-dialog.js.map +1 -1
  358. package/lib/pages/user/user-extension-list.d.ts.map +1 -1
  359. package/lib/pages/user/user-extension-list.js +5 -16
  360. package/lib/pages/user/user-extension-list.js.map +1 -1
  361. package/lib/pages/user/user-namespace-details.d.ts.map +1 -1
  362. package/lib/pages/user/user-namespace-details.js +53 -136
  363. package/lib/pages/user/user-namespace-details.js.map +1 -1
  364. package/lib/pages/user/user-namespace-extension-list-item.d.ts.map +1 -1
  365. package/lib/pages/user/user-namespace-extension-list-item.js +14 -39
  366. package/lib/pages/user/user-namespace-extension-list-item.js.map +1 -1
  367. package/lib/pages/user/user-namespace-extension-list.d.ts.map +1 -1
  368. package/lib/pages/user/user-namespace-extension-list.js +14 -15
  369. package/lib/pages/user/user-namespace-extension-list.js.map +1 -1
  370. package/lib/pages/user/user-namespace-member-component.d.ts.map +1 -1
  371. package/lib/pages/user/user-namespace-member-component.js +24 -34
  372. package/lib/pages/user/user-namespace-member-component.js.map +1 -1
  373. package/lib/pages/user/user-namespace-member-list.d.ts.map +1 -1
  374. package/lib/pages/user/user-namespace-member-list.js +20 -24
  375. package/lib/pages/user/user-namespace-member-list.js.map +1 -1
  376. package/lib/pages/user/user-publisher-agreement.d.ts.map +1 -1
  377. package/lib/pages/user/user-publisher-agreement.js +21 -52
  378. package/lib/pages/user/user-publisher-agreement.js.map +1 -1
  379. package/lib/pages/user/user-setting-tabs.d.ts.map +1 -1
  380. package/lib/pages/user/user-setting-tabs.js +2 -15
  381. package/lib/pages/user/user-setting-tabs.js.map +1 -1
  382. package/lib/pages/user/user-settings-delete-extension.d.ts.map +1 -1
  383. package/lib/pages/user/user-settings-delete-extension.js +14 -15
  384. package/lib/pages/user/user-settings-delete-extension.js.map +1 -1
  385. package/lib/pages/user/user-settings-extensions.d.ts.map +1 -1
  386. package/lib/pages/user/user-settings-extensions.js +22 -30
  387. package/lib/pages/user/user-settings-extensions.js.map +1 -1
  388. package/lib/pages/user/user-settings-namespace-detail.d.ts +2 -2
  389. package/lib/pages/user/user-settings-namespace-detail.d.ts.map +1 -1
  390. package/lib/pages/user/user-settings-namespace-detail.js +27 -45
  391. package/lib/pages/user/user-settings-namespace-detail.js.map +1 -1
  392. package/lib/pages/user/user-settings-namespaces.d.ts.map +1 -1
  393. package/lib/pages/user/user-settings-namespaces.js +33 -46
  394. package/lib/pages/user/user-settings-namespaces.js.map +1 -1
  395. package/lib/pages/user/user-settings-profile.d.ts.map +1 -1
  396. package/lib/pages/user/user-settings-profile.js +10 -29
  397. package/lib/pages/user/user-settings-profile.js.map +1 -1
  398. package/lib/pages/user/user-settings-tokens.d.ts.map +1 -1
  399. package/lib/pages/user/user-settings-tokens.js +24 -62
  400. package/lib/pages/user/user-settings-tokens.js.map +1 -1
  401. package/lib/pages/user/user-settings.d.ts.map +1 -1
  402. package/lib/pages/user/user-settings.js +18 -35
  403. package/lib/pages/user/user-settings.js.map +1 -1
  404. package/lib/server-request.d.ts +1 -1
  405. package/lib/server-request.d.ts.map +1 -1
  406. package/lib/server-request.js +10 -6
  407. package/lib/server-request.js.map +1 -1
  408. package/lib/utils.d.ts.map +1 -1
  409. package/lib/utils.js +48 -20
  410. package/lib/utils.js.map +1 -1
  411. package/package.json +44 -38
  412. package/src/components/banner.tsx +1 -1
  413. package/src/components/button-with-progress.tsx +1 -1
  414. package/src/components/copy-to-clipboard.tsx +2 -1
  415. package/src/components/delayed-load-indicator.tsx +2 -2
  416. package/src/components/error-dialog.tsx +1 -1
  417. package/src/components/hover-popover.tsx +1 -1
  418. package/src/components/info-dialog.tsx +1 -1
  419. package/src/components/sanitized-markdown.tsx +1 -1
  420. package/src/components/scan-admin/common/auto-refresh.tsx +1 -1
  421. package/src/components/scan-admin/common/conditional-tooltip.tsx +3 -3
  422. package/src/components/scan-admin/common/file-table.tsx +1 -1
  423. package/src/components/scan-admin/common/tab-panel.tsx +1 -1
  424. package/src/components/scan-admin/dialogs/file-dialog.tsx +1 -1
  425. package/src/components/scan-admin/dialogs/quarantine-dialog.tsx +1 -1
  426. package/src/components/scan-admin/scan-card/scan-card-content.tsx +380 -408
  427. package/src/components/scan-admin/scan-card/scan-card-expand-strip-badges.tsx +2 -2
  428. package/src/components/scan-admin/scan-card/scan-card-expand-strip.tsx +2 -2
  429. package/src/components/scan-admin/scan-card/scan-card-expanded-content.tsx +2 -2
  430. package/src/components/scan-admin/scan-card/scan-card-header.tsx +37 -8
  431. package/src/components/scan-admin/scan-card/scan-card.tsx +5 -5
  432. package/src/components/scan-admin/scan-card/scan-detail-card.tsx +1 -1
  433. package/src/components/scan-admin/tab-contents/allow-list-tab-content.tsx +1 -1
  434. package/src/components/scan-admin/tab-contents/auto-rejected-tab-content.tsx +1 -1
  435. package/src/components/scan-admin/tab-contents/block-list-tab-content.tsx +1 -1
  436. package/src/components/scan-admin/tab-contents/quarantined-tab-content.tsx +1 -1
  437. package/src/components/scan-admin/tab-contents/scans-tab-content.tsx +1 -1
  438. package/src/components/scan-admin/toolbars/counts-toolbar.tsx +1 -1
  439. package/src/components/scan-admin/toolbars/search-toolbar.tsx +6 -6
  440. package/src/components/scan-admin/toolbars/tab-toolbar.tsx +1 -1
  441. package/src/components/sidepanel/navigation-item.tsx +1 -1
  442. package/src/components/sidepanel/sidepanel.tsx +1 -1
  443. package/src/components/text-divider.tsx +1 -1
  444. package/src/components/timestamp.tsx +1 -1
  445. package/src/context/scan-admin/scan-actions.ts +8 -7
  446. package/src/context/scan-admin/scan-api-actions.ts +5 -4
  447. package/src/context/scan-admin/scan-api-effects.ts +12 -11
  448. package/src/context/scan-admin/scan-context-types.ts +9 -9
  449. package/src/context/scan-admin/scan-context.tsx +2 -2
  450. package/src/default/about.tsx +1 -1
  451. package/src/default/default-app.tsx +1 -1
  452. package/src/default/login.tsx +2 -1
  453. package/src/default/menu-content.tsx +70 -96
  454. package/src/default/openvsx-registry-logo.tsx +1 -1
  455. package/src/default/page-settings.tsx +1 -1
  456. package/src/default/server.ts +1 -1
  457. package/src/extension-registry-service.ts +180 -2
  458. package/src/extension-registry-types.ts +68 -0
  459. package/src/header-menu.tsx +1 -1
  460. package/src/hooks/scan-admin/use-dialogs.ts +1 -1
  461. package/src/hooks/scan-admin/use-quarantined-tab.ts +2 -3
  462. package/src/hooks/scan-admin/use-query-params-state.ts +55 -0
  463. package/src/hooks/scan-admin/use-scan-card-state.ts +3 -2
  464. package/src/hooks/scan-admin/use-url-sync.ts +1 -1
  465. package/src/main.tsx +1 -1
  466. package/src/not-found.tsx +1 -1
  467. package/src/other-pages.tsx +1 -1
  468. package/src/pages/admin-dashboard/admin-dashboard.tsx +52 -3
  469. package/src/pages/admin-dashboard/components/data-grid-filter-operators.tsx +127 -0
  470. package/src/pages/admin-dashboard/components/index.ts +18 -0
  471. package/src/pages/admin-dashboard/customers/customer-form-dialog.tsx +347 -0
  472. package/src/pages/admin-dashboard/customers/customers.tsx +278 -0
  473. package/src/pages/admin-dashboard/customers/delete-customer-dialog.tsx +93 -0
  474. package/src/pages/admin-dashboard/extension-admin.tsx +5 -3
  475. package/src/pages/admin-dashboard/extension-remove-dialog.tsx +1 -1
  476. package/src/pages/admin-dashboard/extension-version-container.tsx +1 -1
  477. package/src/pages/admin-dashboard/logs/logs.tsx +213 -0
  478. package/src/pages/admin-dashboard/namespace-admin.tsx +1 -1
  479. package/src/pages/admin-dashboard/namespace-change-dialog.tsx +1 -1
  480. package/src/pages/admin-dashboard/namespace-input.tsx +4 -2
  481. package/src/pages/admin-dashboard/publisher-admin.tsx +5 -5
  482. package/src/pages/admin-dashboard/publisher-details.tsx +1 -1
  483. package/src/pages/admin-dashboard/publisher-revoke-dialog.tsx +1 -1
  484. package/src/pages/admin-dashboard/publisher-revoke-tokens-button.tsx +1 -1
  485. package/src/pages/admin-dashboard/scan-admin.tsx +3 -2
  486. package/src/pages/admin-dashboard/search-list-container.tsx +1 -1
  487. package/src/pages/admin-dashboard/tiers/delete-tier-dialog.tsx +83 -0
  488. package/src/pages/admin-dashboard/tiers/tier-form-dialog.tsx +373 -0
  489. package/src/pages/admin-dashboard/tiers/tiers.tsx +254 -0
  490. package/src/pages/admin-dashboard/usage-stats/usage-stats-chart.tsx +189 -0
  491. package/src/pages/admin-dashboard/usage-stats/usage-stats-search.tsx +83 -0
  492. package/src/pages/admin-dashboard/usage-stats/usage-stats-utils.ts +16 -0
  493. package/src/pages/admin-dashboard/usage-stats/usage-stats.tsx +127 -0
  494. package/src/pages/admin-dashboard/welcome.tsx +5 -1
  495. package/src/pages/extension-detail/extension-detail-changes.tsx +1 -1
  496. package/src/pages/extension-detail/extension-detail-downloads-menu.tsx +1 -1
  497. package/src/pages/extension-detail/extension-detail-overview.tsx +17 -3
  498. package/src/pages/extension-detail/extension-detail-reviews.tsx +53 -41
  499. package/src/pages/extension-detail/extension-detail.tsx +0 -1
  500. package/src/pages/extension-detail/extension-rating-star-setter.tsx +1 -1
  501. package/src/pages/extension-detail/extension-rating-stars.tsx +2 -2
  502. package/src/pages/extension-detail/extension-review-dialog.tsx +1 -1
  503. package/src/pages/extension-list/extension-list-container.tsx +1 -1
  504. package/src/pages/extension-list/extension-list-header.tsx +1 -1
  505. package/src/pages/extension-list/extension-list-item.tsx +1 -1
  506. package/src/pages/extension-list/extension-list-searchfield.tsx +1 -1
  507. package/src/pages/extension-list/extension-list.tsx +2 -2
  508. package/src/pages/namespace-detail/namespace-detail.tsx +1 -1
  509. package/src/pages/user/add-namespace-member-dialog.tsx +1 -1
  510. package/src/pages/user/avatar.tsx +31 -36
  511. package/src/pages/user/create-namespace-dialog.tsx +1 -1
  512. package/src/pages/user/generate-token-dialog.tsx +1 -1
  513. package/src/pages/user/logout.tsx +6 -4
  514. package/src/pages/user/publish-extension-dialog.tsx +1 -1
  515. package/src/pages/user/user-extension-list.tsx +1 -1
  516. package/src/pages/user/user-namespace-details.tsx +1 -1
  517. package/src/pages/user/user-namespace-extension-list-item.tsx +2 -1
  518. package/src/pages/user/user-namespace-extension-list.tsx +1 -1
  519. package/src/pages/user/user-namespace-member-component.tsx +1 -1
  520. package/src/pages/user/user-namespace-member-list.tsx +1 -1
  521. package/src/pages/user/user-publisher-agreement.tsx +1 -1
  522. package/src/pages/user/user-setting-tabs.tsx +1 -1
  523. package/src/pages/user/user-settings-delete-extension.tsx +1 -1
  524. package/src/pages/user/user-settings-extensions.tsx +2 -2
  525. package/src/pages/user/user-settings-namespace-detail.tsx +1 -1
  526. package/src/pages/user/user-settings-namespaces.tsx +1 -1
  527. package/src/pages/user/user-settings-profile.tsx +1 -1
  528. package/src/pages/user/user-settings-tokens.tsx +3 -4
  529. package/src/pages/user/user-settings.tsx +1 -1
  530. package/src/server-request.ts +8 -4
  531. package/src/utils.ts +39 -16
  532. package/lib/default/server.d.ts +0 -11
  533. package/lib/default/server.d.ts.map +0 -1
  534. package/lib/default/server.js +0 -50
  535. package/lib/default/server.js.map +0 -1
@@ -8,10 +8,9 @@
8
8
  * SPDX-License-Identifier: EPL-2.0
9
9
  ********************************************************************************/
10
10
 
11
- import React, { FunctionComponent, PropsWithChildren, useContext } from 'react';
11
+ import { FunctionComponent, PropsWithChildren, useContext, useRef } from 'react';
12
12
  import { Typography, MenuItem, Link, Button, IconButton, Accordion, AccordionSummary, Avatar, AccordionDetails } from '@mui/material';
13
- import { useLocation } from 'react-router-dom';
14
- import { Link as RouteLink } from 'react-router-dom';
13
+ import { useLocation, Link as RouteLink } from 'react-router-dom';
15
14
  import ExpandMoreIcon from '@mui/icons-material/ExpandMore';
16
15
  import GitHubIcon from '@mui/icons-material/GitHub';
17
16
  import MenuBookIcon from '@mui/icons-material/MenuBook';
@@ -31,21 +30,13 @@ import { LogoutForm } from '../pages/user/logout';
31
30
  import { LoginComponent } from './login';
32
31
 
33
32
  //-------------------- Mobile View --------------------//
34
-
35
- export const MobileMenuItem = styled(MenuItem)({
36
- cursor: 'auto',
37
- '&>a': {
38
- textDecoration: 'none'
39
- }
40
- });
41
-
42
33
  export const itemIcon = {
43
34
  mr: 1,
44
35
  width: '16px',
45
36
  height: '16px',
46
37
  };
47
38
 
48
- export const MobileMenuItemText: FunctionComponent<PropsWithChildren> = ({ children }) => {
39
+ export const MenuItemText: FunctionComponent<PropsWithChildren> = ({ children }) => {
49
40
  return (
50
41
  <Typography variant='body2' color='text.primary' sx={{ display: 'flex', alignItems: 'center', textTransform: 'none' }}>
51
42
  {children}
@@ -56,6 +47,7 @@ export const MobileMenuItemText: FunctionComponent<PropsWithChildren> = ({ child
56
47
  export const MobileUserAvatar: FunctionComponent = () => {
57
48
  const context = useContext(MainContext);
58
49
  const user = context.user;
50
+ const logoutFormRef = useRef<HTMLFormElement>(null);
59
51
  if (!user) {
60
52
  return null;
61
53
  }
@@ -66,52 +58,46 @@ export const MobileUserAvatar: FunctionComponent = () => {
66
58
  aria-controls='user-actions'
67
59
  id='user-avatar'
68
60
  >
69
- <MobileMenuItemText>
61
+ <MenuItemText>
70
62
  <Avatar
71
63
  src={user.avatarUrl}
72
64
  alt={user.loginName}
73
65
  variant='rounded'
74
66
  sx={itemIcon} />
75
67
  {user.loginName}
76
- </MobileMenuItemText>
68
+ </MenuItemText>
77
69
  </AccordionSummary>
78
70
  <AccordionDetails>
79
- <MobileMenuItem>
80
- <Link href={user.homepage}>
81
- <MobileMenuItemText>
82
- <GitHubIcon sx={itemIcon} />
83
- {user.loginName}
84
- </MobileMenuItemText>
85
- </Link>
86
- </MobileMenuItem>
87
- <MobileMenuItem>
88
- <RouteLink to={UserSettingsRoutes.PROFILE}>
89
- <MobileMenuItemText>
90
- <SettingsIcon sx={itemIcon} />
91
- Settings
92
- </MobileMenuItemText>
93
- </RouteLink>
94
- </MobileMenuItem>
71
+ <MenuItem component={Link} href={user.homepage}>
72
+ <MenuItemText>
73
+ <GitHubIcon sx={itemIcon} />
74
+ {user.loginName}
75
+ </MenuItemText>
76
+ </MenuItem>
77
+ <MenuItem component={RouteLink} to={UserSettingsRoutes.PROFILE}>
78
+ <MenuItemText>
79
+ <SettingsIcon sx={itemIcon} />
80
+ Settings
81
+ </MenuItemText>
82
+ </MenuItem>
95
83
  {
96
84
  user.role === 'admin'
97
- ? <MobileMenuItem>
98
- <RouteLink to={AdminDashboardRoutes.MAIN}>
99
- <MobileMenuItemText>
100
- <AdminPanelSettingsIcon sx={itemIcon} />
101
- Admin Dashboard
102
- </MobileMenuItemText>
103
- </RouteLink>
104
- </MobileMenuItem>
85
+ ? <MenuItem component={RouteLink} to={AdminDashboardRoutes.MAIN}>
86
+ <MenuItemText>
87
+ <AdminPanelSettingsIcon sx={itemIcon} />
88
+ Admin Dashboard
89
+ </MenuItemText>
90
+ </MenuItem>
105
91
  : null
106
92
  }
107
- <MobileMenuItem>
108
- <LogoutForm>
109
- <MobileMenuItemText>
93
+ <MenuItem onClick={() => logoutFormRef.current?.submit()}>
94
+ <LogoutForm ref={logoutFormRef}>
95
+ <MenuItemText>
110
96
  <LogoutIcon sx={itemIcon} />
111
97
  Log Out
112
- </MobileMenuItemText>
98
+ </MenuItemText>
113
99
  </LogoutForm>
114
- </MobileMenuItem>
100
+ </MenuItem>
115
101
  </AccordionDetails>
116
102
  </Accordion>;
117
103
  };
@@ -125,63 +111,51 @@ export const MobileMenuContent: FunctionComponent = () => {
125
111
  user ? (
126
112
  <MobileUserAvatar />
127
113
  ) : (
128
- <MobileMenuItem>
129
- <LoginComponent
130
- loginProviders={loginProviders}
131
- renderButton={(href, onClick) => {
132
- return (<Link href={href} onClick={onClick}>
133
- <MobileMenuItemText>
134
- <AccountBoxIcon sx={itemIcon} />
135
- Log In
136
- </MobileMenuItemText>
137
- </Link>);
138
- }}
139
- />
140
- </MobileMenuItem>
114
+ <LoginComponent
115
+ loginProviders={loginProviders}
116
+ renderButton={(href, onClick) => (
117
+ <MenuItem component={Link} href={href} onClick={onClick}>
118
+ <MenuItemText>
119
+ <AccountBoxIcon sx={itemIcon} />
120
+ Log In
121
+ </MenuItemText>
122
+ </MenuItem>
123
+ )}
124
+ />
141
125
  )
142
126
  )}
143
127
  {loginProviders && !location.pathname.startsWith(UserSettingsRoutes.ROOT) && (
144
- <MobileMenuItem>
145
- <RouteLink to='/user-settings/extensions'>
146
- <MobileMenuItemText>
147
- <PublishIcon sx={itemIcon} />
148
- Publish Extension
149
- </MobileMenuItemText>
150
- </RouteLink>
151
- </MobileMenuItem>
128
+ <MenuItem component={RouteLink} to='/user-settings/extensions'>
129
+ <MenuItemText>
130
+ <PublishIcon sx={itemIcon} />
131
+ Publish Extension
132
+ </MenuItemText>
133
+ </MenuItem>
152
134
  )}
153
- <MobileMenuItem>
154
- <Link target='_blank' href='https://github.com/eclipse/openvsx'>
155
- <MobileMenuItemText>
156
- <GitHubIcon sx={itemIcon} />
157
- Source Code
158
- </MobileMenuItemText>
159
- </Link>
160
- </MobileMenuItem>
161
- <MobileMenuItem>
162
- <Link href='https://github.com/eclipse/openvsx/wiki'>
163
- <MobileMenuItemText>
164
- <MenuBookIcon sx={itemIcon} />
165
- Documentation
166
- </MobileMenuItemText>
167
- </Link>
168
- </MobileMenuItem>
169
- <MobileMenuItem>
170
- <Link href='https://join.slack.com/t/openvsxworkinggroup/shared_invite/zt-2y07y1ggy-ct3IfJljjGI6xWUQ9llv6A'>
171
- <MobileMenuItemText>
172
- <ForumIcon sx={itemIcon} />
173
- Slack Workspace
174
- </MobileMenuItemText>
175
- </Link>
176
- </MobileMenuItem>
177
- <MobileMenuItem>
178
- <RouteLink to='/about'>
179
- <MobileMenuItemText>
180
- <InfoIcon sx={itemIcon} />
181
- About This Service
182
- </MobileMenuItemText>
183
- </RouteLink>
184
- </MobileMenuItem>
135
+ <MenuItem component={Link} href='https://github.com/eclipse/openvsx' target='_blank'>
136
+ <MenuItemText>
137
+ <GitHubIcon sx={itemIcon} />
138
+ Source Code
139
+ </MenuItemText>
140
+ </MenuItem>
141
+ <MenuItem component={Link} href='https://github.com/eclipse/openvsx/wiki'>
142
+ <MenuItemText>
143
+ <MenuBookIcon sx={itemIcon} />
144
+ Documentation
145
+ </MenuItemText>
146
+ </MenuItem>
147
+ <MenuItem component={Link} href='https://join.slack.com/t/openvsxworkinggroup/shared_invite/zt-2y07y1ggy-ct3IfJljjGI6xWUQ9llv6A'>
148
+ <MenuItemText>
149
+ <ForumIcon sx={itemIcon} />
150
+ Slack Workspace
151
+ </MenuItemText>
152
+ </MenuItem>
153
+ <MenuItem component={RouteLink} to='/about'>
154
+ <MenuItemText>
155
+ <InfoIcon sx={itemIcon} />
156
+ About This Service
157
+ </MenuItemText>
158
+ </MenuItem>
185
159
  </>;
186
160
  };
187
161
 
@@ -8,7 +8,7 @@
8
8
  * SPDX-License-Identifier: EPL-2.0
9
9
  ********************************************************************************/
10
10
 
11
- import React, { FunctionComponent } from 'react';
11
+ import { FunctionComponent } from 'react';
12
12
 
13
13
  const OpenVSXLogo: FunctionComponent<{width: string, height: string, marginTop: string, prefersDarkMode: boolean }> = props => {
14
14
  return (
@@ -8,7 +8,7 @@
8
8
  * SPDX-License-Identifier: EPL-2.0
9
9
  ********************************************************************************/
10
10
 
11
- import React, { FunctionComponent, ReactNode, Suspense, lazy } from 'react';
11
+ import { FunctionComponent, ReactNode, Suspense, lazy } from 'react';
12
12
  import { Helmet } from 'react-helmet-async';
13
13
  import { styled, Theme } from '@mui/material/styles';
14
14
  import { Link, Typography, Box } from '@mui/material';
@@ -44,7 +44,7 @@ if (args.indexOf('-ratelimit') != -1) {
44
44
  }
45
45
 
46
46
  // Serve static resources
47
- const staticPath = path.join(__dirname, '..', '..', 'static');
47
+ const staticPath = path.join(__dirname, '..', '..', 'dist');
48
48
  app.use(express.static(staticPath));
49
49
 
50
50
  // Enable react-router by forwarding the main page to all paths that don't match a resource
@@ -14,7 +14,8 @@ import {
14
14
  SortOrder, UrlString, NamespaceMembershipList, PublisherInfo, SearchEntry, RegistryVersion,
15
15
  LoginProviders, ScanResultJson, ScanCounts, ScanResultsResponse, ScanFilterOptions,
16
16
  FilesResponse, FileDecisionCountsJson, ScanDecisionRequest, ScanDecisionResponse,
17
- FileDecisionRequest, FileDecisionResponse, FileDecisionDeleteRequest, FileDecisionDeleteResponse
17
+ FileDecisionRequest, FileDecisionResponse, FileDecisionDeleteRequest, FileDecisionDeleteResponse,
18
+ Tier, TierList, Customer, CustomerList, UsageStatsList, LogPageableList,
18
19
  } from './extension-registry-types';
19
20
  import { createAbsoluteURL, addQuery } from './utils';
20
21
  import { sendRequest, ErrorResponse } from './server-request';
@@ -396,7 +397,7 @@ export class ExtensionRegistryService {
396
397
  payload: extensionPackage,
397
398
  headers: headers,
398
399
  endpoint: createAbsoluteURL([this.serverUrl, 'api', 'user', 'publish'])
399
- });
400
+ }, false); // do not retry publishing an extension but show the explicit error received
400
401
  }
401
402
 
402
403
  async createNamespace(abortController: AbortController, name: string): Promise<Readonly<SuccessResult | ErrorResult>> {
@@ -499,6 +500,16 @@ export interface AdminService {
499
500
  makeScanDecision(abortController: AbortController, request: ScanDecisionRequest): Promise<Readonly<ScanDecisionResponse>>
500
501
  makeFileDecision(abortController: AbortController, request: FileDecisionRequest): Promise<Readonly<FileDecisionResponse>>
501
502
  deleteFileDecisions(abortController: AbortController, request: FileDecisionDeleteRequest): Promise<Readonly<FileDecisionDeleteResponse>>
503
+ getTiers(abortController: AbortController): Promise<Readonly<TierList>>;
504
+ createTier(abortController: AbortController, tier: Tier): Promise<Readonly<Tier>>;
505
+ updateTier(abortController: AbortController, name: string, tier: Tier): Promise<Readonly<Tier>>;
506
+ deleteTier(abortController: AbortController, name: string): Promise<Readonly<SuccessResult | ErrorResult>>;
507
+ getCustomers(abortController: AbortController): Promise<Readonly<CustomerList>>;
508
+ createCustomer(abortController: AbortController, customer: Customer): Promise<Readonly<Customer>>;
509
+ updateCustomer(abortController: AbortController, name: string, customer: Customer): Promise<Readonly<Customer>>;
510
+ deleteCustomer(abortController: AbortController, name: string): Promise<Readonly<SuccessResult | ErrorResult>>;
511
+ getUsageStats(abortController: AbortController, customerName: string, date: Date): Promise<Readonly<UsageStatsList>>;
512
+ getLogs(abortController: AbortController, page?: number, size?: number, period?: string): Promise<Readonly<LogPageableList>>;
502
513
  }
503
514
 
504
515
  export interface AdminServiceConstructor {
@@ -808,6 +819,173 @@ export class AdminServiceImpl implements AdminService {
808
819
  payload: request
809
820
  });
810
821
  }
822
+
823
+ async getTiers(abortController: AbortController): Promise<Readonly<TierList>> {
824
+ return sendRequest({
825
+ abortController,
826
+ endpoint: createAbsoluteURL([this.registry.serverUrl, 'admin', 'ratelimit', 'tiers']),
827
+ credentials: true
828
+ }, false);
829
+ }
830
+
831
+ async createTier(abortController: AbortController, tier: Tier): Promise<Readonly<Tier>> {
832
+ const csrfResponse = await this.registry.getCsrfToken(abortController);
833
+ const headers: Record<string, string> = {
834
+ 'Content-Type': 'application/json;charset=UTF-8'
835
+ };
836
+ if (!isError(csrfResponse)) {
837
+ const csrfToken = csrfResponse as CsrfTokenJson;
838
+ headers[csrfToken.header] = csrfToken.value;
839
+ }
840
+ return sendRequest({
841
+ abortController,
842
+ method: 'POST',
843
+ payload: tier,
844
+ credentials: true,
845
+ endpoint: createAbsoluteURL([this.registry.serverUrl, 'admin', 'ratelimit', 'tiers', 'create']),
846
+ headers
847
+ }, false);
848
+ }
849
+
850
+ async updateTier(abortController: AbortController, name: string, tier: Tier): Promise<Readonly<Tier>> {
851
+ const csrfResponse = await this.registry.getCsrfToken(abortController);
852
+ const headers: Record<string, string> = {
853
+ 'Content-Type': 'application/json;charset=UTF-8'
854
+ };
855
+ if (!isError(csrfResponse)) {
856
+ const csrfToken = csrfResponse as CsrfTokenJson;
857
+ headers[csrfToken.header] = csrfToken.value;
858
+ }
859
+ return sendRequest({
860
+ abortController,
861
+ method: 'PUT',
862
+ payload: tier,
863
+ credentials: true,
864
+ endpoint: createAbsoluteURL([this.registry.serverUrl, 'admin', 'ratelimit', 'tiers', name]),
865
+ headers
866
+ }, false);
867
+ }
868
+
869
+ async deleteTier(abortController: AbortController, name: string): Promise<SuccessResult | ErrorResult> {
870
+ const csrfResponse = await this.registry.getCsrfToken(abortController);
871
+ const headers: Record<string, string> = {
872
+ 'Content-Type': 'application/json;charset=UTF-8'
873
+ };
874
+ if (!isError(csrfResponse)) {
875
+ const csrfToken = csrfResponse as CsrfTokenJson;
876
+ headers[csrfToken.header] = csrfToken.value;
877
+ }
878
+ return sendRequest({
879
+ abortController,
880
+ method: 'DELETE',
881
+ credentials: true,
882
+ endpoint: createAbsoluteURL([this.registry.serverUrl, 'admin', 'ratelimit', 'tiers', name]),
883
+ headers
884
+ }, false);
885
+ }
886
+
887
+ async getCustomers(abortController: AbortController): Promise<Readonly<CustomerList>> {
888
+ return sendRequest({
889
+ abortController,
890
+ endpoint: createAbsoluteURL([this.registry.serverUrl, 'admin', 'ratelimit', 'customers']),
891
+ credentials: true
892
+ }, false);
893
+ }
894
+
895
+ async createCustomer(abortController: AbortController, customer: Customer): Promise<Readonly<Customer>> {
896
+ const csrfResponse = await this.registry.getCsrfToken(abortController);
897
+ const headers: Record<string, string> = {
898
+ 'Content-Type': 'application/json;charset=UTF-8'
899
+ };
900
+ if (!isError(csrfResponse)) {
901
+ const csrfToken = csrfResponse as CsrfTokenJson;
902
+ headers[csrfToken.header] = csrfToken.value;
903
+ }
904
+ return sendRequest({
905
+ abortController,
906
+ method: 'POST',
907
+ payload: customer,
908
+ credentials: true,
909
+ endpoint: createAbsoluteURL([this.registry.serverUrl, 'admin', 'ratelimit', 'customers', 'create']),
910
+ headers
911
+ }, false);
912
+ }
913
+
914
+ async updateCustomer(abortController: AbortController, name: string, customer: Customer): Promise<Readonly<Customer>> {
915
+ const csrfResponse = await this.registry.getCsrfToken(abortController);
916
+ const headers: Record<string, string> = {
917
+ 'Content-Type': 'application/json;charset=UTF-8'
918
+ };
919
+ if (!isError(csrfResponse)) {
920
+ const csrfToken = csrfResponse as CsrfTokenJson;
921
+ headers[csrfToken.header] = csrfToken.value;
922
+ }
923
+ return sendRequest({
924
+ abortController,
925
+ method: 'PUT',
926
+ payload: customer,
927
+ credentials: true,
928
+ endpoint: createAbsoluteURL([this.registry.serverUrl, 'admin', 'ratelimit', 'customers', name]),
929
+ headers
930
+ }, false);
931
+ }
932
+
933
+ async deleteCustomer(abortController: AbortController, name: string): Promise<SuccessResult | ErrorResult> {
934
+ const csrfResponse = await this.registry.getCsrfToken(abortController);
935
+ const headers: Record<string, string> = {
936
+ 'Content-Type': 'application/json;charset=UTF-8'
937
+ };
938
+ if (!isError(csrfResponse)) {
939
+ const csrfToken = csrfResponse as CsrfTokenJson;
940
+ headers[csrfToken.header] = csrfToken.value;
941
+ }
942
+ return sendRequest({
943
+ abortController,
944
+ method: 'DELETE',
945
+ credentials: true,
946
+ endpoint: createAbsoluteURL([this.registry.serverUrl, 'admin', 'ratelimit', 'customers', name]),
947
+ headers
948
+ }, false);
949
+ }
950
+
951
+ /**
952
+ * Get usage stats for a customer within an optional date range.
953
+ */
954
+ async getUsageStats(
955
+ abortController: AbortController,
956
+ customerName: string,
957
+ date: Date,
958
+ ): Promise<Readonly<UsageStatsList>> {
959
+ const query: { key: string, value: string | number }[] = [];
960
+ query.push({ key: 'date', value: date.toISOString() });
961
+
962
+ return sendRequest({
963
+ abortController,
964
+ endpoint: createAbsoluteURL([this.registry.serverUrl, 'admin', 'ratelimit', 'customers', customerName, 'usage'], query),
965
+ credentials: true
966
+ }, false);
967
+ }
968
+
969
+ async getLogs(
970
+ abortController: AbortController,
971
+ page: number = 0,
972
+ size: number = 20,
973
+ period?: string
974
+ ): Promise<Readonly<LogPageableList>> {
975
+ const query: { key: string, value: string | number }[] = [
976
+ { key: 'page', value: page },
977
+ { key: 'size', value: size }
978
+ ];
979
+ if (period) {
980
+ query.push({ key: 'period', value: period });
981
+ }
982
+ const endpoint = addQuery(createAbsoluteURL([this.registry.serverUrl, 'admin', 'logs']), query);
983
+ return sendRequest({
984
+ abortController,
985
+ endpoint,
986
+ credentials: true
987
+ }, false);
988
+ }
811
989
  }
812
990
 
813
991
  export interface ExtensionFilter {
@@ -180,6 +180,8 @@ export interface PersonalAccessToken {
180
180
  value?: string;
181
181
  createdTimestamp: TimestampString;
182
182
  accessedTimestamp?: TimestampString;
183
+ expiresTimestamp?: TimestampString;
184
+ notified?: boolean;
183
185
  description: string;
184
186
  deleteTokenUrl: UrlString;
185
187
  }
@@ -415,3 +417,69 @@ export interface FileDecisionDeleteResponse {
415
417
  failed: number;
416
418
  results: FileDecisionDeleteResult[];
417
419
  }
420
+
421
+ export enum TierType {
422
+ FREE = 'FREE',
423
+ SAFETY = 'SAFETY',
424
+ NON_FREE = 'NON_FREE'
425
+ }
426
+
427
+ export enum RefillStrategy {
428
+ GREEDY = 'GREEDY',
429
+ INTERVAL = 'INTERVAL'
430
+ }
431
+
432
+ export interface Tier {
433
+ name: string;
434
+ description?: string;
435
+ tierType: TierType;
436
+ capacity: number;
437
+ duration: number;
438
+ refillStrategy: RefillStrategy;
439
+ }
440
+
441
+ export interface TierList {
442
+ tiers: Tier[];
443
+ }
444
+
445
+ export enum EnforcementState {
446
+ EVALUATION = 'EVALUATION',
447
+ ENFORCEMENT = 'ENFORCEMENT'
448
+ }
449
+
450
+ export interface Customer {
451
+ name: string;
452
+ tier?: Tier;
453
+ state: EnforcementState;
454
+ cidrBlocks: string[];
455
+ }
456
+
457
+ export interface CustomerList {
458
+ customers: Customer[];
459
+ }
460
+
461
+ export interface UsageStats {
462
+ windowStart: number; // epoch seconds in UTC
463
+ duration: number; // in seconds
464
+ count: number;
465
+ }
466
+
467
+ export interface UsageStatsList {
468
+ stats: UsageStats[];
469
+ }
470
+
471
+ export interface Log {
472
+ timestamp: string;
473
+ user: string;
474
+ message: string;
475
+ }
476
+
477
+ export interface LogPageableList {
478
+ content: Log[];
479
+ page: {
480
+ size: number;
481
+ number: number;
482
+ totalElements: number;
483
+ totalPages: number;
484
+ };
485
+ }
@@ -8,7 +8,7 @@
8
8
  * SPDX-License-Identifier: EPL-2.0
9
9
  ********************************************************************************/
10
10
 
11
- import React, { ComponentType, FunctionComponent, useContext, useEffect, useState } from 'react';
11
+ import { ComponentType, FunctionComponent, useContext, useEffect, useState } from 'react';
12
12
  import { Menu, IconButton, useTheme } from '@mui/material';
13
13
  import useMediaQuery from '@mui/material/useMediaQuery';
14
14
  import MenuIcon from '@mui/icons-material/Menu';
@@ -13,7 +13,7 @@
13
13
 
14
14
  import { useMemo } from 'react';
15
15
  import { useScanContext } from '../../context/scan-admin';
16
- import { ConfirmActionType, FileActionType, ScanResult, FileDecision } from '../../context/scan-admin/scan-types';
16
+ import { ConfirmActionType, FileActionType, ScanResult, FileDecision } from '../../context/scan-admin';
17
17
 
18
18
  /**
19
19
  * Return type for the useDialogs hook
@@ -11,7 +11,7 @@
11
11
  * SPDX-License-Identifier: EPL-2.0
12
12
  ********************************************************************************/
13
13
 
14
- import { useMemo, useCallback } from 'react';
14
+ import { useCallback, useMemo } from 'react';
15
15
  import { useScanContext } from '../../context/scan-admin';
16
16
  import { useScanFilters } from './use-scan-filters';
17
17
  import { usePagination } from './use-pagination';
@@ -35,8 +35,7 @@ export const useQuarantinedTab = () => {
35
35
  const selectableScans = useMemo(() => {
36
36
  return quarantinedScans.filter(scan => {
37
37
  const hasEnforcedThreat = scan.threats.some(t => t.enforcedFlag);
38
- const needsReview = !scan.adminDecision?.decision && hasEnforcedThreat;
39
- return needsReview;
38
+ return !scan.adminDecision?.decision && hasEnforcedThreat;
40
39
  });
41
40
  }, [quarantinedScans]);
42
41
 
@@ -0,0 +1,55 @@
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
+
14
+ import { useState } from 'react';
15
+
16
+ const getQuery = () => {
17
+ if (typeof window !== 'undefined') {
18
+ return new URLSearchParams(window.location.search);
19
+ }
20
+ return new URLSearchParams();
21
+ };
22
+
23
+ const getQueryStringVal = (key: string): string | null => {
24
+ return getQuery().get(key);
25
+ };
26
+
27
+ const useQueryParam = (
28
+ key: string,
29
+ defaultVal: string
30
+ ): [string, (val: string) => void] => {
31
+ const [query, setQuery] = useState(getQueryStringVal(key) || defaultVal);
32
+
33
+ const updateUrl = (newVal: string) => {
34
+ setQuery(newVal);
35
+
36
+ const query = getQuery();
37
+
38
+ if (newVal.trim() !== '') {
39
+ query.set(key, newVal);
40
+ } else {
41
+ query.delete(key);
42
+ }
43
+
44
+ // This check is necessary if using the hook with Gatsby
45
+ if (typeof window !== 'undefined') {
46
+ const { protocol, pathname, host } = window.location;
47
+ const newUrl = `${protocol}//${host}${pathname}?${query.toString()}`;
48
+ window.history.pushState({}, '', newUrl);
49
+ }
50
+ };
51
+
52
+ return [query, updateUrl];
53
+ };
54
+
55
+ export default useQueryParam;
@@ -11,6 +11,7 @@
11
11
  * SPDX-License-Identifier: EPL-2.0
12
12
  ********************************************************************************/
13
13
 
14
+ import type { RefObject } from "react";
14
15
  import { useState, useEffect, useRef, useMemo } from 'react';
15
16
  import { ScanResult } from '../../context/scan-admin';
16
17
  import { formatDuration } from '../../components/scan-admin/common';
@@ -19,7 +20,7 @@ import {
19
20
  shouldShowExpandButton,
20
21
  getDetailBadges,
21
22
  DetailBadge,
22
- } from '../../components/scan-admin/scan-card/utils';
23
+ } from '../../components/scan-admin';
23
24
 
24
25
  interface UseScanCardStateReturn {
25
26
  expanded: boolean;
@@ -28,7 +29,7 @@ interface UseScanCardStateReturn {
28
29
  badges: DetailBadge[];
29
30
  liveDuration: string;
30
31
  // Card ref for height tracking
31
- cardRef: React.RefObject<HTMLDivElement>;
32
+ cardRef: RefObject<HTMLDivElement>;
32
33
  }
33
34
 
34
35
  /**