openvsx-webui-test 0.20.0-dev.4 → 0.20.1-rc.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.
- package/lib/components/scan-admin/scan-card/scan-card-expanded-content.d.ts +2 -1
- package/lib/components/scan-admin/scan-card/scan-card-expanded-content.d.ts.map +1 -1
- package/lib/components/scan-admin/scan-card/scan-card-expanded-content.js.map +1 -1
- package/lib/components/scan-admin/scan-card/scan-card-header.js +1 -1
- package/lib/components/scan-admin/scan-card/scan-card-header.js.map +1 -1
- package/lib/components/scan-admin/scan-card/utils.js +1 -1
- package/lib/components/scan-admin/scan-card/utils.js.map +1 -1
- package/lib/default/menu-content.d.ts +1 -1
- package/lib/default/menu-content.js +1 -1
- package/lib/default/menu-content.js.map +1 -1
- package/lib/main.d.ts.map +1 -1
- package/lib/main.js +5 -5
- package/lib/main.js.map +1 -1
- package/lib/other-pages.d.ts.map +1 -1
- package/lib/other-pages.js +7 -7
- package/lib/other-pages.js.map +1 -1
- package/lib/pages/admin-dashboard/{admin-routes.d.ts → admin-dashboard-routes.d.ts} +6 -9
- package/lib/pages/admin-dashboard/admin-dashboard-routes.d.ts.map +1 -0
- package/lib/pages/admin-dashboard/{admin-routes.js → admin-dashboard-routes.js} +6 -9
- package/lib/pages/admin-dashboard/admin-dashboard-routes.js.map +1 -0
- package/lib/pages/admin-dashboard/admin-dashboard.d.ts.map +1 -1
- package/lib/pages/admin-dashboard/admin-dashboard.js +9 -9
- package/lib/pages/admin-dashboard/admin-dashboard.js.map +1 -1
- package/lib/pages/admin-dashboard/customers/customer-member-list.js +1 -1
- package/lib/pages/admin-dashboard/customers/customer-member-list.js.map +1 -1
- package/lib/pages/admin-dashboard/customers/customers.js +1 -1
- package/lib/pages/admin-dashboard/customers/customers.js.map +1 -1
- package/lib/pages/admin-dashboard/publisher-admin.js +1 -1
- package/lib/pages/admin-dashboard/publisher-admin.js.map +1 -1
- package/lib/pages/admin-dashboard/usage-stats/usage-stats.js +1 -1
- package/lib/pages/admin-dashboard/usage-stats/usage-stats.js.map +1 -1
- package/lib/pages/admin-dashboard/welcome.js +1 -1
- package/lib/pages/admin-dashboard/welcome.js.map +1 -1
- package/lib/pages/extension-detail/extension-detail-changes.d.ts.map +1 -1
- package/lib/pages/extension-detail/extension-detail-changes.js +1 -4
- package/lib/pages/extension-detail/extension-detail-changes.js.map +1 -1
- package/lib/pages/extension-detail/extension-detail-overview.d.ts.map +1 -1
- package/lib/pages/extension-detail/extension-detail-overview.js +1 -6
- package/lib/pages/extension-detail/extension-detail-overview.js.map +1 -1
- package/lib/pages/extension-detail/extension-detail-routes.d.ts +0 -1
- package/lib/pages/extension-detail/extension-detail-routes.d.ts.map +1 -1
- package/lib/pages/extension-detail/extension-detail-routes.js +2 -3
- package/lib/pages/extension-detail/extension-detail-routes.js.map +1 -1
- package/lib/pages/extension-detail/extension-detail.d.ts.map +1 -1
- package/lib/pages/extension-detail/extension-detail.js +120 -247
- package/lib/pages/extension-detail/extension-detail.js.map +1 -1
- package/lib/pages/extension-detail/use-extension-details.d.ts +23 -0
- package/lib/pages/extension-detail/use-extension-details.d.ts.map +1 -0
- package/lib/pages/extension-detail/use-extension-details.js +80 -0
- package/lib/pages/extension-detail/use-extension-details.js.map +1 -0
- package/lib/pages/user/avatar.js +1 -1
- package/lib/pages/user/avatar.js.map +1 -1
- package/lib/pages/user/user-settings-namespace-detail.js +1 -1
- package/lib/pages/user/user-settings-namespace-detail.js.map +1 -1
- package/package.json +3 -1
- package/src/components/scan-admin/scan-card/scan-card-expanded-content.tsx +4 -4
- package/src/components/scan-admin/scan-card/scan-card-header.tsx +1 -1
- package/src/components/scan-admin/scan-card/utils.ts +1 -1
- package/src/default/menu-content.tsx +1 -1
- package/src/main.tsx +11 -6
- package/src/other-pages.tsx +20 -16
- package/src/pages/admin-dashboard/{admin-routes.ts → admin-dashboard-routes.ts} +5 -8
- package/src/pages/admin-dashboard/admin-dashboard.tsx +27 -23
- package/src/pages/admin-dashboard/customers/customer-member-list.tsx +1 -1
- package/src/pages/admin-dashboard/customers/customers.tsx +1 -1
- package/src/pages/admin-dashboard/publisher-admin.tsx +1 -1
- package/src/pages/admin-dashboard/usage-stats/usage-stats.tsx +1 -1
- package/src/pages/admin-dashboard/welcome.tsx +1 -1
- package/src/pages/extension-detail/extension-detail-changes.tsx +1 -5
- package/src/pages/extension-detail/extension-detail-overview.tsx +1 -7
- package/src/pages/extension-detail/extension-detail-routes.ts +2 -3
- package/src/pages/extension-detail/extension-detail.tsx +290 -407
- package/src/pages/extension-detail/use-extension-details.tsx +101 -0
- package/src/pages/user/avatar.tsx +1 -1
- package/src/pages/user/user-settings-namespace-detail.tsx +1 -1
- package/lib/pages/admin-dashboard/admin-routes.d.ts.map +0 -1
- package/lib/pages/admin-dashboard/admin-routes.js.map +0 -1
|
@@ -14,7 +14,7 @@ import { Box, Button, Link, Paper, Grid, Typography } from '@mui/material';
|
|
|
14
14
|
import { styled } from '@mui/material/styles';
|
|
15
15
|
import WarningIcon from '@mui/icons-material/Warning';
|
|
16
16
|
import { UserNamespaceExtensionListContainer } from './user-namespace-extension-list';
|
|
17
|
-
import { AdminDashboardRoutes } from '../admin-dashboard/admin-routes';
|
|
17
|
+
import { AdminDashboardRoutes } from '../admin-dashboard/admin-dashboard-routes';
|
|
18
18
|
import { NamespaceChangeDialog } from '../admin-dashboard/namespace-change-dialog';
|
|
19
19
|
import { UserNamespaceMemberList } from './user-namespace-member-list';
|
|
20
20
|
import { UserNamespaceDetails } from './user-namespace-details';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"user-settings-namespace-detail.js","sourceRoot":"","sources":["../../../src/pages/user/user-settings-namespace-detail.tsx"],"names":[],"mappings":";AAAA;;;;;;;;kFAQkF;AAElF,OAAO,EAAqB,aAAa,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AACnE,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC3E,OAAO,EAAE,MAAM,EAAS,MAAM,sBAAsB,CAAC;AACrD,OAAO,WAAW,MAAM,6BAA6B,CAAC;AACtD,OAAO,EAAE,mCAAmC,EAAE,MAAM,iCAAiC,CAAC;AACtF,OAAO,EAAE,oBAAoB,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"user-settings-namespace-detail.js","sourceRoot":"","sources":["../../../src/pages/user/user-settings-namespace-detail.tsx"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "openvsx-webui-test",
|
|
3
|
-
"version": "0.20.
|
|
3
|
+
"version": "0.20.1-rc.0",
|
|
4
4
|
"description": "User interface for Eclipse Open VSX",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"react",
|
|
@@ -107,6 +107,7 @@
|
|
|
107
107
|
"express-rate-limit": "^7.4.0",
|
|
108
108
|
"mocha": "^11.7.0",
|
|
109
109
|
"rimraf": "^6.1.0",
|
|
110
|
+
"rollup-plugin-visualizer": "^7.0.1",
|
|
110
111
|
"ts-mocha": "^11.1.0",
|
|
111
112
|
"ts-node": "^10.9.2",
|
|
112
113
|
"typescript": "^5.9.0",
|
|
@@ -125,6 +126,7 @@
|
|
|
125
126
|
"watch:default": "yarn build:server && vite build --watch",
|
|
126
127
|
"start:default": "node lib/default/server",
|
|
127
128
|
"dev": "vite dev",
|
|
129
|
+
"preview": "vite preview",
|
|
128
130
|
"link2server": "sh -c 'ln -sf $(realpath dist) ../server/build/resources/main/static'"
|
|
129
131
|
},
|
|
130
132
|
"packageManager": "yarn@4.9.1"
|
|
@@ -11,7 +11,7 @@
|
|
|
11
11
|
* SPDX-License-Identifier: EPL-2.0
|
|
12
12
|
********************************************************************************/
|
|
13
13
|
|
|
14
|
-
import { FC } from
|
|
14
|
+
import { FC } from 'react';
|
|
15
15
|
import { Box, Typography, Collapse, Chip } from '@mui/material';
|
|
16
16
|
import { useTheme, Theme } from '@mui/material/styles';
|
|
17
17
|
import { ScanResult, Threat, ValidationFailure, CheckResult } from '../../../context/scan-admin';
|
|
@@ -63,7 +63,7 @@ const ThreatItem: FC<ThreatItemProps> = ({ threat }) => {
|
|
|
63
63
|
/**
|
|
64
64
|
* A single validation failure item in the expanded content.
|
|
65
65
|
*/
|
|
66
|
-
const ValidationFailureItem:
|
|
66
|
+
const ValidationFailureItem: FC<ValidationFailureItemProps> = ({ failure }) => {
|
|
67
67
|
const theme = useTheme();
|
|
68
68
|
const isUnenforced = !failure.enforcedFlag;
|
|
69
69
|
|
|
@@ -119,7 +119,7 @@ const formatDuration = (ms: number | null): string | undefined => {
|
|
|
119
119
|
/**
|
|
120
120
|
* A single check result item showing what check was run and its outcome.
|
|
121
121
|
*/
|
|
122
|
-
const CheckResultItem:
|
|
122
|
+
const CheckResultItem: FC<CheckResultItemProps> = ({ checkResult }) => {
|
|
123
123
|
const theme = useTheme();
|
|
124
124
|
const colors = getCheckResultColor(checkResult.result, theme);
|
|
125
125
|
const isPassed = checkResult.result === 'PASSED';
|
|
@@ -182,7 +182,7 @@ const CheckResultItem: React.FC<CheckResultItemProps> = ({ checkResult }) => {
|
|
|
182
182
|
* The expanded content section showing threats, validation failures, and check results.
|
|
183
183
|
* Each item's enforcedFlag controls its individual striping effect.
|
|
184
184
|
*/
|
|
185
|
-
export const ScanCardExpandedContent:
|
|
185
|
+
export const ScanCardExpandedContent: FC<ScanCardExpandedContentProps> = ({ scan, expanded, onCollapseComplete }) => {
|
|
186
186
|
const theme = useTheme();
|
|
187
187
|
const hasThreats = scan.threats.length > 0;
|
|
188
188
|
const hasValidationFailures = scan.validationFailures.length > 0;
|
|
@@ -32,7 +32,7 @@ import {
|
|
|
32
32
|
getStatusColorSx,
|
|
33
33
|
} from './utils';
|
|
34
34
|
import { createRoute } from '../../../utils';
|
|
35
|
-
import { AdminDashboardRoutes } from '../../../pages/admin-dashboard/admin-routes';
|
|
35
|
+
import { AdminDashboardRoutes } from '../../../pages/admin-dashboard/admin-dashboard-routes';
|
|
36
36
|
import { ExtensionDetailRoutes } from '../../../pages/extension-detail/extension-detail-routes';
|
|
37
37
|
|
|
38
38
|
interface ScanCardHeaderProps {
|
|
@@ -189,7 +189,7 @@ export const shouldShowExpandButton = (scan: ScanResult): boolean => {
|
|
|
189
189
|
};
|
|
190
190
|
|
|
191
191
|
export const hasDownload = (scan: ScanResult): boolean => {
|
|
192
|
-
return scan.status === 'PASSED' || scan.status === 'QUARANTINED';
|
|
192
|
+
return scan.status === 'PASSED' || scan.status === 'QUARANTINED' || scan.status === 'ERROR';
|
|
193
193
|
};
|
|
194
194
|
|
|
195
195
|
export const getFileName = (url?: string): string => {
|
|
@@ -25,7 +25,7 @@ import { MainContext } from '../context';
|
|
|
25
25
|
import SettingsIcon from '@mui/icons-material/Settings';
|
|
26
26
|
import AdminPanelSettingsIcon from '@mui/icons-material/AdminPanelSettings';
|
|
27
27
|
import LogoutIcon from '@mui/icons-material/Logout';
|
|
28
|
-
import { AdminDashboardRoutes } from '../pages/admin-dashboard/admin-routes';
|
|
28
|
+
import { AdminDashboardRoutes } from '../pages/admin-dashboard/admin-dashboard-routes';
|
|
29
29
|
import { LogoutForm } from '../pages/user/logout';
|
|
30
30
|
import { LoginComponent } from './login';
|
|
31
31
|
|
package/src/main.tsx
CHANGED
|
@@ -8,11 +8,10 @@
|
|
|
8
8
|
* SPDX-License-Identifier: EPL-2.0
|
|
9
9
|
********************************************************************************/
|
|
10
10
|
|
|
11
|
-
import { FunctionComponent, ReactNode, useEffect, useState, useRef } from 'react';
|
|
11
|
+
import { FunctionComponent, ReactNode, useEffect, useState, useRef, lazy, Suspense } from 'react';
|
|
12
12
|
import { CssBaseline } from '@mui/material';
|
|
13
13
|
import { Route, Routes } from 'react-router-dom';
|
|
14
|
-
import {
|
|
15
|
-
import { AdminDashboardRoutes } from './pages/admin-dashboard/admin-routes';
|
|
14
|
+
import { AdminDashboardRoutes } from './pages/admin-dashboard/admin-dashboard-routes';
|
|
16
15
|
import { ErrorDialog } from './components/error-dialog';
|
|
17
16
|
import { handleError } from './utils';
|
|
18
17
|
import { ExtensionRegistryService } from './extension-registry-service';
|
|
@@ -20,9 +19,11 @@ import { UserData, isError, ReportedError, isSuccess, LoginProviders } from './e
|
|
|
20
19
|
import { MainContext } from './context';
|
|
21
20
|
import { PageSettings } from './page-settings';
|
|
22
21
|
import { ErrorResponse } from './server-request';
|
|
22
|
+
import { OtherPages } from './other-pages';
|
|
23
23
|
|
|
24
24
|
import '../src/main.css';
|
|
25
|
-
|
|
25
|
+
|
|
26
|
+
const AdminDashboard = lazy(() => import('./pages/admin-dashboard/admin-dashboard').then(m => ({ default: m.AdminDashboard })));
|
|
26
27
|
|
|
27
28
|
export const Main: FunctionComponent<MainProps> = props => {
|
|
28
29
|
const [user, setUser] = useState<UserData>();
|
|
@@ -98,8 +99,12 @@ export const Main: FunctionComponent<MainProps> = props => {
|
|
|
98
99
|
return <>
|
|
99
100
|
{ MainHeadTagsComponent ? <MainHeadTagsComponent pageSettings={props.pageSettings}/> : null }
|
|
100
101
|
<Routes>
|
|
101
|
-
<Route path={AdminDashboardRoutes.MAIN + '/*'} element={
|
|
102
|
-
|
|
102
|
+
<Route path={AdminDashboardRoutes.MAIN + '/*'} element={
|
|
103
|
+
<Suspense fallback={null}>
|
|
104
|
+
<AdminDashboard userLoading={userLoading} />
|
|
105
|
+
</Suspense>
|
|
106
|
+
} />
|
|
107
|
+
<Route path='*' element={<OtherPages user={user} userLoading={userLoading} />} />
|
|
103
108
|
</Routes>
|
|
104
109
|
{
|
|
105
110
|
error ?
|
package/src/other-pages.tsx
CHANGED
|
@@ -11,25 +11,27 @@
|
|
|
11
11
|
* SPDX-License-Identifier: EPL-2.0
|
|
12
12
|
*****************************************************************************/
|
|
13
13
|
|
|
14
|
-
import { FunctionComponent, useContext, useEffect, useState } from 'react';
|
|
14
|
+
import { FunctionComponent, useContext, useEffect, useState, lazy, Suspense } from 'react';
|
|
15
15
|
import { Routes, Route } from 'react-router-dom';
|
|
16
16
|
import { AppBar, Box, Toolbar } from '@mui/material';
|
|
17
17
|
import { styled, Theme } from '@mui/material/styles';
|
|
18
18
|
import { Banner } from './components/banner';
|
|
19
19
|
import { MainContext } from './context';
|
|
20
20
|
import { HeaderMenu } from './header-menu';
|
|
21
|
-
import {
|
|
22
|
-
import { ExtensionListRoutes } from "./pages/extension-list/extension-list-routes";
|
|
23
|
-
import { UserSettings } from './pages/user/user-settings';
|
|
21
|
+
import { ExtensionListRoutes } from './pages/extension-list/extension-list-routes';
|
|
24
22
|
import { UserSettingsRoutes } from './pages/user/user-settings-routes';
|
|
25
|
-
import { NamespaceDetail } from './pages/namespace-detail/namespace-detail';
|
|
26
23
|
import { NamespaceDetailRoutes } from './pages/namespace-detail/namespace-detail-routes';
|
|
27
|
-
import { ExtensionDetail } from './pages/extension-detail/extension-detail';
|
|
28
24
|
import { ExtensionDetailRoutes } from './pages/extension-detail/extension-detail-routes';
|
|
29
25
|
import { getCookieValueByKey, setCookie } from './utils';
|
|
30
26
|
import { UserData } from './extension-registry-types';
|
|
27
|
+
|
|
28
|
+
import { ExtensionDetail } from './pages/extension-detail/extension-detail';
|
|
29
|
+
import { ExtensionListContainer } from './pages/extension-list/extension-list-container';
|
|
30
|
+
import { NamespaceDetail } from './pages/namespace-detail/namespace-detail';
|
|
31
31
|
import { NotFound } from './not-found';
|
|
32
32
|
|
|
33
|
+
const UserSettings = lazy(() => import('./pages/user/user-settings').then(m => ({ default: m.UserSettings })));
|
|
34
|
+
|
|
33
35
|
const ToolbarItem = styled(Box)({
|
|
34
36
|
display: 'flex',
|
|
35
37
|
alignItems: 'center'
|
|
@@ -122,16 +124,18 @@ export const OtherPages: FunctionComponent<OtherPagesProps> = (props) => {
|
|
|
122
124
|
: null
|
|
123
125
|
}
|
|
124
126
|
<Box pb={`${getContentPadding()}px`}>
|
|
125
|
-
<
|
|
126
|
-
<
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
127
|
+
<Suspense fallback={null}>
|
|
128
|
+
<Routes>
|
|
129
|
+
<Route path={ExtensionListRoutes.MAIN} element={ <ExtensionListContainer /> } />
|
|
130
|
+
<Route path={UserSettingsRoutes.MAIN} element={<UserSettings userLoading={props.userLoading} />} />
|
|
131
|
+
<Route path={UserSettingsRoutes.DELETE_EXTENSION} element={<UserSettings userLoading={props.userLoading} />} />
|
|
132
|
+
<Route path={NamespaceDetailRoutes.MAIN} element={ <NamespaceDetail /> } />
|
|
133
|
+
<Route path={ExtensionDetailRoutes.MAIN} element={<ExtensionDetail />} />
|
|
134
|
+
<Route path={ExtensionDetailRoutes.MAIN_TARGET} element={<ExtensionDetail />} />
|
|
135
|
+
{AdditionalRoutes ?? null}
|
|
136
|
+
<Route path='*' element={<NotFound />} />
|
|
137
|
+
</Routes>
|
|
138
|
+
</Suspense>
|
|
135
139
|
</Box>
|
|
136
140
|
{
|
|
137
141
|
FooterComponent ?
|
|
@@ -1,15 +1,12 @@
|
|
|
1
|
-
|
|
2
|
-
* Copyright (c)
|
|
3
|
-
*
|
|
4
|
-
* See the NOTICE file(s) distributed with this work for additional
|
|
5
|
-
* information regarding copyright ownership.
|
|
1
|
+
/********************************************************************************
|
|
2
|
+
* Copyright (c) 2020 TypeFox and others
|
|
6
3
|
*
|
|
7
4
|
* 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
|
-
*
|
|
5
|
+
* terms of the Eclipse Public License v. 2.0 which is available at
|
|
6
|
+
* http://www.eclipse.org/legal/epl-2.0.
|
|
10
7
|
*
|
|
11
8
|
* SPDX-License-Identifier: EPL-2.0
|
|
12
|
-
|
|
9
|
+
********************************************************************************/
|
|
13
10
|
|
|
14
11
|
import { createRoute } from '../../utils';
|
|
15
12
|
|
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
* SPDX-License-Identifier: EPL-2.0
|
|
9
9
|
********************************************************************************/
|
|
10
10
|
|
|
11
|
-
import { FunctionComponent, ReactNode, useContext, useState } from 'react';
|
|
11
|
+
import { FunctionComponent, ReactNode, useContext, useState, lazy, Suspense } from 'react';
|
|
12
12
|
import {
|
|
13
13
|
Box,
|
|
14
14
|
Container,
|
|
@@ -35,22 +35,24 @@ import PersonIcon from '@mui/icons-material/Person';
|
|
|
35
35
|
import SecurityIcon from '@mui/icons-material/Security';
|
|
36
36
|
import SpeedIcon from '@mui/icons-material/Speed';
|
|
37
37
|
import StarIcon from '@mui/icons-material/Star';
|
|
38
|
-
import { CustomerDetails } from './customers/customer-details';
|
|
39
|
-
import { Customers } from './customers/customers';
|
|
40
38
|
import { DrawerHeader } from '../../components/sidepanel/drawer-header';
|
|
41
39
|
import { Sidepanel } from "../../components/sidepanel/sidepanel";
|
|
42
|
-
import { ExtensionAdmin } from './extension-admin';
|
|
43
40
|
import { LoginComponent } from "../../default/login";
|
|
44
|
-
import { Logs } from './logs/logs';
|
|
45
41
|
import { MainContext } from '../../context';
|
|
46
|
-
import { NamespaceAdmin } from './namespace-admin';
|
|
47
42
|
import { NavigationItem } from '../../components/sidepanel/navigation-item';
|
|
43
|
+
import { AdminDashboardRoutes } from './admin-dashboard-routes';
|
|
44
|
+
|
|
45
|
+
import { NamespaceAdmin } from './namespace-admin';
|
|
48
46
|
import { PublisherAdmin } from './publisher-admin';
|
|
49
47
|
import { ScanAdmin } from './scan-admin';
|
|
50
48
|
import { Tiers } from './tiers/tiers';
|
|
51
|
-
import {
|
|
49
|
+
import { Customers } from './customers/customers';
|
|
50
|
+
import { CustomerDetails } from './customers/customer-details';
|
|
51
|
+
import { Logs } from './logs/logs';
|
|
52
52
|
import { Welcome } from './welcome';
|
|
53
|
-
|
|
53
|
+
|
|
54
|
+
const ExtensionAdmin = lazy(() => import('./extension-admin').then(m => ({ default: m.ExtensionAdmin })));
|
|
55
|
+
const UsageStatsView = lazy(() => import('./usage-stats/usage-stats').then(m => ({ default: m.UsageStatsView })));
|
|
54
56
|
|
|
55
57
|
const Message: FunctionComponent<{message: string}> = ({ message }) => {
|
|
56
58
|
return (<Box sx={{
|
|
@@ -270,21 +272,23 @@ export const AdminDashboard: FunctionComponent<AdminDashboardProps> = props => {
|
|
|
270
272
|
}}
|
|
271
273
|
>
|
|
272
274
|
<Container sx={{ pt: 2, pb: 4, px: 3 }} maxWidth='xl'>
|
|
273
|
-
<
|
|
274
|
-
<
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
275
|
+
<Suspense fallback={null}>
|
|
276
|
+
<Routes>
|
|
277
|
+
<Route path='/namespaces' element={<NamespaceAdmin/>} />
|
|
278
|
+
<Route path='/extensions' element={<ExtensionAdmin/>} />
|
|
279
|
+
<Route path='/extensions/:namespace/:extension' element={<ExtensionAdmin/>} />
|
|
280
|
+
<Route path='/publisher' element={<PublisherAdmin/>} />
|
|
281
|
+
<Route path='/publisher/:publisher' element={<PublisherAdmin/>} />
|
|
282
|
+
<Route path='/scans' element={<ScanAdmin/>} />
|
|
283
|
+
<Route path='/tiers' element={<Tiers/>} />
|
|
284
|
+
<Route path='/customers' element={<Customers/>} />
|
|
285
|
+
<Route path='/customers/:customer' element={<CustomerDetails/>} />
|
|
286
|
+
<Route path='/usage' element={<UsageStatsView/>} />
|
|
287
|
+
<Route path='/usage/:customer' element={<UsageStatsView/>} />
|
|
288
|
+
<Route path='/logs' element={<Logs/>} />
|
|
289
|
+
<Route path='*' element={<Welcome/>} />
|
|
290
|
+
</Routes>
|
|
291
|
+
</Suspense>
|
|
288
292
|
</Container>
|
|
289
293
|
</Box>
|
|
290
294
|
</Main>
|
|
@@ -24,7 +24,7 @@ import {
|
|
|
24
24
|
ListItemText, IconButton, type PaperProps, Paper
|
|
25
25
|
} from '@mui/material';
|
|
26
26
|
import { Link as RouterLink } from 'react-router-dom';
|
|
27
|
-
import { AdminDashboardRoutes } from '../admin-routes';
|
|
27
|
+
import { AdminDashboardRoutes } from '../admin-dashboard-routes';
|
|
28
28
|
import { MainContext } from '../../../context';
|
|
29
29
|
import { CustomerMembership, Customer, UserData, isError } from '../../../extension-registry-types';
|
|
30
30
|
import { AddUserDialog } from '../../user/add-user-dialog';
|
|
@@ -34,7 +34,7 @@ import { CustomerFormDialog } from "./customer-form-dialog";
|
|
|
34
34
|
import { DeleteCustomerDialog } from "./delete-customer-dialog";
|
|
35
35
|
import { createRoute, handleError } from "../../../utils";
|
|
36
36
|
import { createMultiSelectFilterOperators, createArrayContainsFilterOperators } from "../components";
|
|
37
|
-
import { AdminDashboardRoutes } from "../admin-routes";
|
|
37
|
+
import { AdminDashboardRoutes } from "../admin-dashboard-routes";
|
|
38
38
|
import { Link } from "react-router-dom";
|
|
39
39
|
|
|
40
40
|
export const Customers: FC = () => {
|
|
@@ -16,7 +16,7 @@ import { MainContext } from '../../context';
|
|
|
16
16
|
import { StyledInput } from './namespace-input';
|
|
17
17
|
import { SearchListContainer } from './search-list-container';
|
|
18
18
|
import { PublisherDetails } from './publisher-details';
|
|
19
|
-
import { AdminDashboardRoutes } from './admin-routes';
|
|
19
|
+
import { AdminDashboardRoutes } from './admin-dashboard-routes';
|
|
20
20
|
|
|
21
21
|
// eslint-disable-next-line react-refresh/only-export-components
|
|
22
22
|
export const UpdateContext = createContext({ handleUpdate: () => { } });
|
|
@@ -17,7 +17,7 @@ import { useParams, useNavigate } from "react-router-dom";
|
|
|
17
17
|
import { MainContext } from "../../../context";
|
|
18
18
|
import type { Customer } from "../../../extension-registry-types";
|
|
19
19
|
import { handleError } from "../../../utils";
|
|
20
|
-
import { AdminDashboardRoutes } from "../admin-routes";
|
|
20
|
+
import { AdminDashboardRoutes } from "../admin-dashboard-routes";
|
|
21
21
|
import { SearchListContainer } from "../search-list-container";
|
|
22
22
|
import { CustomerSearch } from "./usage-stats-search";
|
|
23
23
|
import { UsageStatsChart } from "../../../components/rate-limiting/usage-stats/usage-stats-chart";
|
|
@@ -12,7 +12,7 @@ import { FunctionComponent } from 'react';
|
|
|
12
12
|
import { Typography, Grid, Paper } from '@mui/material';
|
|
13
13
|
import { styled, Theme } from '@mui/material/styles';
|
|
14
14
|
import { Link } from 'react-router-dom';
|
|
15
|
-
import { AdminDashboardRoutes } from './admin-routes';
|
|
15
|
+
import { AdminDashboardRoutes } from './admin-dashboard-routes';
|
|
16
16
|
|
|
17
17
|
export const Welcome: FunctionComponent = props => {
|
|
18
18
|
return <Grid container direction='column' spacing={2} sx={{ height: '100%' }}>
|
|
@@ -21,14 +21,10 @@ export const ExtensionDetailChanges: FunctionComponent<ExtensionDetailChangesPro
|
|
|
21
21
|
const context = useContext(MainContext);
|
|
22
22
|
const abortController = useRef<AbortController>(new AbortController());
|
|
23
23
|
|
|
24
|
-
useEffect(() => {
|
|
25
|
-
updateChanges();
|
|
26
|
-
return () => abortController.current.abort();
|
|
27
|
-
}, []);
|
|
28
|
-
|
|
29
24
|
useEffect(() => {
|
|
30
25
|
setLoading(true);
|
|
31
26
|
updateChanges();
|
|
27
|
+
return () => abortController.current.abort();
|
|
32
28
|
}, [props.extension.namespace, props.extension.name, props.extension.version]);
|
|
33
29
|
|
|
34
30
|
const updateChanges = async (): Promise<void> => {
|
|
@@ -78,16 +78,10 @@ export const ExtensionDetailOverview: FunctionComponent<ExtensionDetailOverviewP
|
|
|
78
78
|
</Grid>);
|
|
79
79
|
}, [props.extension.downloads]);
|
|
80
80
|
|
|
81
|
-
useEffect(() => {
|
|
82
|
-
updateReadme();
|
|
83
|
-
return () => {
|
|
84
|
-
abortController.current.abort();
|
|
85
|
-
};
|
|
86
|
-
}, []);
|
|
87
|
-
|
|
88
81
|
useEffect(() => {
|
|
89
82
|
setLoading(true);
|
|
90
83
|
updateReadme();
|
|
84
|
+
return () => abortController.current.abort();
|
|
91
85
|
}, [props.extension.namespace, props.extension.name, props.extension.version]);
|
|
92
86
|
|
|
93
87
|
const updateReadme = async (): Promise<void> => {
|
|
@@ -18,12 +18,11 @@ export namespace ExtensionDetailRoutes {
|
|
|
18
18
|
export const NAMESPACE = ':namespace';
|
|
19
19
|
export const NAME = ':name';
|
|
20
20
|
export const TARGET = `:target(${getTargetPlatforms().join('|')})`;
|
|
21
|
-
export const VERSION = ':version?';
|
|
22
21
|
}
|
|
23
22
|
|
|
24
23
|
export const ROOT = 'extension';
|
|
25
|
-
export const MAIN = createRoute([ROOT, Parameters.NAMESPACE, Parameters.NAME,
|
|
26
|
-
export const MAIN_TARGET = createRoute([ROOT, Parameters.NAMESPACE, Parameters.NAME, Parameters.TARGET,
|
|
24
|
+
export const MAIN = createRoute([ROOT, Parameters.NAMESPACE, Parameters.NAME, '*']);
|
|
25
|
+
export const MAIN_TARGET = createRoute([ROOT, Parameters.NAMESPACE, Parameters.NAME, Parameters.TARGET, '*']);
|
|
27
26
|
export const LATEST = createRoute([ROOT, Parameters.NAMESPACE, Parameters.NAME]);
|
|
28
27
|
export const LATEST_TARGET = createRoute([ROOT, Parameters.NAMESPACE, Parameters.NAME, Parameters.TARGET]);
|
|
29
28
|
export const PRE_RELEASE = createRoute([ROOT, Parameters.NAMESPACE, Parameters.NAME, 'pre-release']);
|