diff --git a/web-app/knip.config.ts b/web-app/knip.config.ts
new file mode 100644
index 000000000..99f3c5c38
--- /dev/null
+++ b/web-app/knip.config.ts
@@ -0,0 +1,26 @@
+import type { KnipConfig } from "knip";
+
+export default {
+ entry: ["src/**/{index,main}.{ts,tsx}", "e2e/**/*.ts", "test/**/*.ts"],
+ project: [
+ "src/**/*.{ts,tsx}",
+ "!src/api/**/*",
+ "e2e/**/*.{ts,tsx}",
+ "test/**/*.ts",
+ ],
+ rules: {
+ binaries: "error",
+ classMembers: "error",
+ dependencies: "error",
+ devDependencies: "off",
+ duplicates: "error",
+ files: "error",
+ nsExports: "error",
+ nsTypes: "error",
+ unlisted: "error",
+ unresolved: "error",
+ types: "error",
+ exports: "error",
+ enumMembers: "off",
+ },
+} satisfies KnipConfig;
diff --git a/web-app/package.json b/web-app/package.json
index 5508fd46f..2e86c81dd 100644
--- a/web-app/package.json
+++ b/web-app/package.json
@@ -6,6 +6,8 @@
"private": true,
"dependencies": {
"@reduxjs/toolkit": "^1.9.7",
+ "clsx": "^2.1.1",
+ "http-status-codes": "^2.3.0",
"kbar": "^0.1.0-beta.45",
"local-storage-fallback": "^4.1.2",
"lodash": "^4.17.21",
@@ -36,7 +38,8 @@
"test": "react-scripts test",
"eject": "react-scripts eject",
"playwright": "PORT=5005 USE_BABEL_PLUGIN_ISTANBUL=1 react-app-rewired start",
- "find-deadcode": "ts-prune -s consoleApi.ts | sh -c '(! grep -v \"used in module\")'"
+ "find-deadcode": "knip",
+ "format": "prettier . --write --log-level warn"
},
"eslintConfig": {
"extends": "react-app",
@@ -60,6 +63,7 @@
"devDependencies": {
"@babel/plugin-proposal-private-property-in-object": "^7.21.11",
"@playwright/test": "^1.45.2",
+ "@types/jest": "^29.5.12",
"@types/lodash": "^4.17.7",
"@types/luxon": "^3.4.2",
"@types/node": "20.14.11",
@@ -75,6 +79,7 @@
"@types/webpack-env": "^1.18.5",
"babel-plugin-istanbul": "^6.1.1",
"customize-cra": "^1.0.0",
+ "knip": "^5.27.2",
"minio": "^8.0.1",
"nyc": "^15.1.0",
"prettier": "3.3.3",
@@ -82,7 +87,6 @@
"react-app-rewired": "^2.2.1",
"react-scripts": "5.0.1",
"testcafe": "3.6.2",
- "ts-prune": "^0.10.3",
"typescript": "^5.5.3"
},
"resolutions": {
diff --git a/web-app/src/common/types.ts b/web-app/src/common/types.ts
index 7b4a32781..04ea3093e 100644
--- a/web-app/src/common/types.ts
+++ b/web-app/src/common/types.ts
@@ -41,7 +41,7 @@ export interface IBytesCalc {
unit: string;
}
-export interface IEmbeddedCustomButton {
+interface IEmbeddedCustomButton {
backgroundColor: string;
textColor: string;
hoverColor: string;
@@ -52,7 +52,7 @@ export interface IEmbeddedCustomButton {
disabledText: string;
}
-export interface IEmbeddedCustomTable {
+interface IEmbeddedCustomTable {
border: string;
disabledBorder: string;
disabledBG: string;
@@ -61,14 +61,14 @@ export interface IEmbeddedCustomTable {
hoverColor: string;
}
-export interface IEmbeddedInputBox {
+interface IEmbeddedInputBox {
border: string;
hoverBorder: string;
textColor: string;
backgroundColor: string;
}
-export interface IEmbeddedSwitch {
+interface IEmbeddedSwitch {
switchBackground: string;
bulletBorderColor: string;
bulletBGColor: string;
diff --git a/web-app/src/common/utils.ts b/web-app/src/common/utils.ts
index 0c4df0a8b..b02e65985 100644
--- a/web-app/src/common/utils.ts
+++ b/web-app/src/common/utils.ts
@@ -32,8 +32,8 @@ export const units = [
"ZiB",
"YiB",
];
-export const k8sUnits = ["Ki", "Mi", "Gi", "Ti", "Pi", "Ei"];
-export const k8sCalcUnits = ["B", ...k8sUnits];
+const k8sUnits = ["Ki", "Mi", "Gi", "Ti", "Pi", "Ei"];
+const k8sCalcUnits = ["B", ...k8sUnits];
export const niceBytes = (x: string, showK8sUnits: boolean = false) => {
let n = parseInt(x, 10) || 0;
@@ -97,7 +97,7 @@ export const getBytes = (
};
//getBytesNumber, converts from a value and a unit from units array to bytes
-export const getBytesNumber = (
+const getBytesNumber = (
value: string,
unit: string,
fromk8s: boolean = false,
diff --git a/web-app/src/config.ts b/web-app/src/config.ts
index 2807e67e4..f3ae22f2e 100644
--- a/web-app/src/config.ts
+++ b/web-app/src/config.ts
@@ -16,7 +16,7 @@
import { ApplicationLogoProps } from "mds";
-export const MinIOPlan =
+const MinIOPlan =
(
document.head.querySelector(
"[name~=minio-license][content]",
diff --git a/web-app/src/index.tsx b/web-app/src/index.tsx
index 61109e3e1..fa7afd846 100644
--- a/web-app/src/index.tsx
+++ b/web-app/src/index.tsx
@@ -15,7 +15,6 @@
// along with this program. If not, see .
import React from "react";
-import * as serviceWorker from "./serviceWorker";
import ReactDOM from "react-dom/client";
import { Provider } from "react-redux";
import { store } from "./store";
@@ -35,8 +34,3 @@ root.render(
,
);
-
-// If you want your app to work offline and load faster, you can change
-// unregister() to register() below. Note this comes with some pitfalls.
-// Learn more about service workers: https://bit.ly/CRA-PWA
-serviceWorker.unregister();
diff --git a/web-app/src/screens/Console/Buckets/BucketDetails/bucketDetailsSlice.ts b/web-app/src/screens/Console/Buckets/BucketDetails/bucketDetailsSlice.ts
index db55c7508..4613b1c3c 100644
--- a/web-app/src/screens/Console/Buckets/BucketDetails/bucketDetailsSlice.ts
+++ b/web-app/src/screens/Console/Buckets/BucketDetails/bucketDetailsSlice.ts
@@ -18,7 +18,7 @@ import { createSlice, PayloadAction } from "@reduxjs/toolkit";
import { AppState } from "../../../../store";
import { Bucket } from "api/consoleApi";
-export interface BucketDetailsState {
+interface BucketDetailsState {
selectedTab: string;
loadingBucket: boolean;
bucketInfo: Bucket | null;
@@ -30,7 +30,7 @@ const initialState: BucketDetailsState = {
bucketInfo: null,
};
-export const bucketDetailsSlice = createSlice({
+const bucketDetailsSlice = createSlice({
name: "bucketDetails",
initialState,
reducers: {
@@ -46,7 +46,7 @@ export const bucketDetailsSlice = createSlice({
},
});
-export const { setBucketDetailsTab, setBucketInfo, setBucketDetailsLoad } =
+export const { setBucketInfo, setBucketDetailsLoad } =
bucketDetailsSlice.actions;
export const selBucketDetailsLoading = (state: AppState) =>
diff --git a/web-app/src/screens/Console/Buckets/ListBuckets/AddBucket/addBucketsSlice.ts b/web-app/src/screens/Console/Buckets/ListBuckets/AddBucket/addBucketsSlice.ts
index 1f1c238f4..0135f4ccb 100644
--- a/web-app/src/screens/Console/Buckets/ListBuckets/AddBucket/addBucketsSlice.ts
+++ b/web-app/src/screens/Console/Buckets/ListBuckets/AddBucket/addBucketsSlice.ts
@@ -18,7 +18,7 @@ import { createSlice, PayloadAction } from "@reduxjs/toolkit";
import { addBucketAsync } from "./addBucketThunks";
import { ObjectRetentionMode } from "api/consoleApi";
-export interface AddBucketState {
+interface AddBucketState {
loading: boolean;
isDirty: boolean;
invalidFields: string[];
@@ -58,7 +58,7 @@ const initialState: AddBucketState = {
excludedPrefixes: "",
};
-export const addBucketsSlice = createSlice({
+const addBucketsSlice = createSlice({
name: "addBuckets",
initialState,
reducers: {
diff --git a/web-app/src/screens/Console/Buckets/ListBuckets/Objects/ListObjects/ListObjectsHelpers.tsx b/web-app/src/screens/Console/Buckets/ListBuckets/Objects/ListObjects/ListObjectsHelpers.tsx
index 511643086..ab675fd2a 100644
--- a/web-app/src/screens/Console/Buckets/ListBuckets/Objects/ListObjects/ListObjectsHelpers.tsx
+++ b/web-app/src/screens/Console/Buckets/ListBuckets/Objects/ListObjects/ListObjectsHelpers.tsx
@@ -21,7 +21,7 @@ import { displayFileIconName } from "./utils";
// Functions
-export const displayParsedDate = (object: BucketObjectItem) => {
+const displayParsedDate = (object: BucketObjectItem) => {
if (object.name.endsWith("/")) {
return "";
}
@@ -41,14 +41,14 @@ export const displayParsedDate = (object: BucketObjectItem) => {
return objectTime.toFormat("ccc, LLL dd yyyy HH:mm (ZZZZ)");
};
-export const displayNiceBytes = (object: BucketObjectItem) => {
+const displayNiceBytes = (object: BucketObjectItem) => {
if (object.name.endsWith("/") || !object.size) {
return "-";
}
return niceBytes(String(object.size));
};
-export const displayDeleteFlag = (state: boolean) => {
+const displayDeleteFlag = (state: boolean) => {
return state ? "Yes" : "No";
};
diff --git a/web-app/src/screens/Console/Buckets/ListBuckets/Objects/ListObjects/types.tsx b/web-app/src/screens/Console/Buckets/ListBuckets/Objects/ListObjects/types.tsx
index e44792463..89014da80 100644
--- a/web-app/src/screens/Console/Buckets/ListBuckets/Objects/ListObjects/types.tsx
+++ b/web-app/src/screens/Console/Buckets/ListBuckets/Objects/ListObjects/types.tsx
@@ -45,12 +45,12 @@ export interface WebsocketResponse {
bucketName?: string;
}
-export interface WebsocketErrorResponse {
+interface WebsocketErrorResponse {
Code: number;
APIError: ApiError;
}
-export interface ObjectResponse {
+interface ObjectResponse {
name: string;
last_modified: string;
size: number;
diff --git a/web-app/src/screens/Console/Buckets/ListBuckets/Objects/ListObjects/utils.tsx b/web-app/src/screens/Console/Buckets/ListBuckets/Objects/ListObjects/utils.tsx
index 4d22aa072..a0139f54b 100644
--- a/web-app/src/screens/Console/Buckets/ListBuckets/Objects/ListObjects/utils.tsx
+++ b/web-app/src/screens/Console/Buckets/ListBuckets/Objects/ListObjects/utils.tsx
@@ -42,7 +42,7 @@ interface IExtToIcon {
extensions: string[];
}
-export const extensionToIcon: IExtToIcon[] = [
+const extensionToIcon: IExtToIcon[] = [
{
icon: ,
extensions: ["mp4", "mov", "avi", "mpeg", "mpg"],
diff --git a/web-app/src/screens/Console/Buckets/ListBuckets/Objects/utils.ts b/web-app/src/screens/Console/Buckets/ListBuckets/Objects/utils.ts
index 7030f07ec..64550b0de 100644
--- a/web-app/src/screens/Console/Buckets/ListBuckets/Objects/utils.ts
+++ b/web-app/src/screens/Console/Buckets/ListBuckets/Objects/utils.ts
@@ -16,7 +16,7 @@
import { BucketObjectItem } from "./ListObjects/types";
import { removeTrace } from "../../../ObjectBrowser/transferManager";
-import store from "../../../../../store";
+import { store } from "../../../../../store";
import { ContentType, PermissionResource } from "api/consoleApi";
import { api } from "../../../../../api";
import { setErrorSnackMessage } from "../../../../../systemSlice";
@@ -199,7 +199,7 @@ class BrowserDownload {
}
export type AllowedPreviews = "image" | "pdf" | "audio" | "video" | "none";
-export const contentTypePreview = (contentType: string): AllowedPreviews => {
+const contentTypePreview = (contentType: string): AllowedPreviews => {
if (contentType) {
const mimeObjectType = (contentType || "").toLowerCase();
@@ -221,7 +221,7 @@ export const contentTypePreview = (contentType: string): AllowedPreviews => {
};
// Review file extension by name & returns the type of preview browser that can be used
-export const extensionPreview = (fileName: string): AllowedPreviews => {
+const extensionPreview = (fileName: string): AllowedPreviews => {
const imageExtensions = [
"jif",
"jfif",
diff --git a/web-app/src/screens/Console/Buckets/types.tsx b/web-app/src/screens/Console/Buckets/types.tsx
index b8f1ab8b1..07a75447f 100644
--- a/web-app/src/screens/Console/Buckets/types.tsx
+++ b/web-app/src/screens/Console/Buckets/types.tsx
@@ -63,12 +63,12 @@ export interface LifeCycleItem {
status?: string;
}
-export interface MultiBucketResult {
+interface MultiBucketResult {
bucketName: string;
error?: string;
}
-export interface MultiBucketResult {
+interface MultiBucketResult {
results: MultiBucketResult[];
}
diff --git a/web-app/src/screens/Console/Common/CredentialsPrompt/types.ts b/web-app/src/screens/Console/Common/CredentialsPrompt/types.ts
index c85a050be..2ac10fb90 100644
--- a/web-app/src/screens/Console/Common/CredentialsPrompt/types.ts
+++ b/web-app/src/screens/Console/Common/CredentialsPrompt/types.ts
@@ -22,7 +22,7 @@ export interface NewServiceAccount {
url?: string;
}
-export interface ConsoleSA {
+interface ConsoleSA {
accessKey: string;
secretKey: string;
url: string;
diff --git a/web-app/src/screens/Console/Configurations/types.ts b/web-app/src/screens/Console/Configurations/types.ts
index 5f3c7643e..a913e5ec4 100644
--- a/web-app/src/screens/Console/Configurations/types.ts
+++ b/web-app/src/screens/Console/Configurations/types.ts
@@ -17,7 +17,7 @@
import { SelectorTypes } from "../../../common/types";
import { EnvOverride } from "../../../api/consoleApi";
-export type KVFieldType =
+type KVFieldType =
| "string"
| "password"
| "number"
diff --git a/web-app/src/screens/Console/Dashboard/BasicDashboard/StatusCountCard.tsx b/web-app/src/screens/Console/Dashboard/BasicDashboard/StatusCountCard.tsx
index 33740677b..6ab6dd756 100644
--- a/web-app/src/screens/Console/Dashboard/BasicDashboard/StatusCountCard.tsx
+++ b/web-app/src/screens/Console/Dashboard/BasicDashboard/StatusCountCard.tsx
@@ -108,7 +108,7 @@ const StatusCountBase = styled.div(({ theme }) => ({
},
}));
-export const StatusCountCard = ({
+const StatusCountCard = ({
onlineCount = 0,
offlineCount = 0,
icon = null,
diff --git a/web-app/src/screens/Console/Dashboard/CommonCard.tsx b/web-app/src/screens/Console/Dashboard/CommonCard.tsx
index b0425a579..9985083e1 100644
--- a/web-app/src/screens/Console/Dashboard/CommonCard.tsx
+++ b/web-app/src/screens/Console/Dashboard/CommonCard.tsx
@@ -21,7 +21,7 @@ import { Box } from "mds";
import { Link } from "react-router-dom";
import { widgetCommon } from "../Common/FormComponents/common/styleLibrary";
-export interface ISubInterface {
+interface ISubInterface {
message: string;
fontWeight?: "normal" | "bold";
}
diff --git a/web-app/src/screens/Console/Dashboard/Prometheus/Widgets/UptimeActivityRenderer.tsx b/web-app/src/screens/Console/Dashboard/Prometheus/Widgets/UptimeActivityRenderer.tsx
index a0d3e5f5d..fd0fa7827 100644
--- a/web-app/src/screens/Console/Dashboard/Prometheus/Widgets/UptimeActivityRenderer.tsx
+++ b/web-app/src/screens/Console/Dashboard/Prometheus/Widgets/UptimeActivityRenderer.tsx
@@ -18,7 +18,7 @@ import React from "react";
import { Box } from "mds";
import TimeStatItem from "../../TimeStatItem";
-export type SimpleWidgetRenderProps = {
+type SimpleWidgetRenderProps = {
valueToRender?: any;
loading?: boolean;
title?: any;
diff --git a/web-app/src/screens/Console/Dashboard/Prometheus/Widgets/types.ts b/web-app/src/screens/Console/Dashboard/Prometheus/Widgets/types.ts
index cf4a09208..fc00801fe 100644
--- a/web-app/src/screens/Console/Dashboard/Prometheus/Widgets/types.ts
+++ b/web-app/src/screens/Console/Dashboard/Prometheus/Widgets/types.ts
@@ -36,7 +36,7 @@ export interface IPieChartConfiguration {
strokeWidth?: number;
}
-export interface ISinglePieConfiguration {
+interface ISinglePieConfiguration {
colorList: string[];
startAngle?: number;
endAngle?: number;
diff --git a/web-app/src/screens/Console/Dashboard/dashboardSlice.ts b/web-app/src/screens/Console/Dashboard/dashboardSlice.ts
index 383181b80..fab1c4c5d 100644
--- a/web-app/src/screens/Console/Dashboard/dashboardSlice.ts
+++ b/web-app/src/screens/Console/Dashboard/dashboardSlice.ts
@@ -20,7 +20,7 @@ import { IDashboardPanel } from "./Prometheus/types";
import { getUsageAsync } from "./dashboardThunks";
import { AdminInfoResponse } from "api/consoleApi";
-export interface DashboardState {
+interface DashboardState {
zoom: zoomState;
usage: AdminInfoResponse | null;
status: "idle" | "loading" | "failed";
@@ -36,7 +36,7 @@ const initialState: DashboardState = {
usage: null,
widgetLoadVersion: 0,
};
-export const dashboardSlice = createSlice({
+const dashboardSlice = createSlice({
name: "dashboard",
initialState,
reducers: {
diff --git a/web-app/src/screens/Console/EventDestinations/ConfTargetGeneric.tsx b/web-app/src/screens/Console/EventDestinations/ConfTargetGeneric.tsx
index 5d23d943d..701ee968a 100644
--- a/web-app/src/screens/Console/EventDestinations/ConfTargetGeneric.tsx
+++ b/web-app/src/screens/Console/EventDestinations/ConfTargetGeneric.tsx
@@ -37,11 +37,7 @@ interface IConfGenericProps {
// Function to get defined values,
//we make this because the backed sometimes don't return all the keys when there is an initial configuration
-export const valueDef = (
- key: string,
- type: string,
- defaults: IElementValue[],
-) => {
+const valueDef = (key: string, type: string, defaults: IElementValue[]) => {
let defValue = type === "on|off" ? "off" : "";
if (defaults.length > 0) {
diff --git a/web-app/src/screens/Console/EventDestinations/destinationsSlice.ts b/web-app/src/screens/Console/EventDestinations/destinationsSlice.ts
index 2796d8fb6..c765390f0 100644
--- a/web-app/src/screens/Console/EventDestinations/destinationsSlice.ts
+++ b/web-app/src/screens/Console/EventDestinations/destinationsSlice.ts
@@ -16,7 +16,7 @@
import { createSlice, PayloadAction } from "@reduxjs/toolkit";
-export interface DestinationState {
+interface DestinationState {
loading: boolean;
}
@@ -24,7 +24,7 @@ const initialState: DestinationState = {
loading: true,
};
-export const destinationSlice = createSlice({
+const destinationSlice = createSlice({
name: "destination",
initialState,
reducers: {
diff --git a/web-app/src/screens/Console/EventDestinations/utils.ts b/web-app/src/screens/Console/EventDestinations/utils.ts
index 48d1a475b..45d64e537 100644
--- a/web-app/src/screens/Console/EventDestinations/utils.ts
+++ b/web-app/src/screens/Console/EventDestinations/utils.ts
@@ -20,14 +20,14 @@ import { TransformedEndpointItem } from "./types";
export const notifyPostgres = "notify_postgres";
export const notifyMysql = "notify_mysql";
-export const notifyKafka = "notify_kafka";
-export const notifyAmqp = "notify_amqp";
-export const notifyMqtt = "notify_mqtt";
-export const notifyRedis = "notify_redis";
-export const notifyNats = "notify_nats";
-export const notifyElasticsearch = "notify_elasticsearch";
-export const notifyWebhooks = "notify_webhook";
-export const notifyNsq = "notify_nsq";
+const notifyKafka = "notify_kafka";
+const notifyAmqp = "notify_amqp";
+const notifyMqtt = "notify_mqtt";
+const notifyRedis = "notify_redis";
+const notifyNats = "notify_nats";
+const notifyElasticsearch = "notify_elasticsearch";
+const notifyWebhooks = "notify_webhook";
+const notifyNsq = "notify_nsq";
export const notificationTransform = (
notificationElements: NotificationEndpointItem[],
) => {
diff --git a/web-app/src/screens/Console/Groups/GroupsDetails.tsx b/web-app/src/screens/Console/Groups/GroupsDetails.tsx
index db77ea190..fd9ba0c0a 100644
--- a/web-app/src/screens/Console/Groups/GroupsDetails.tsx
+++ b/web-app/src/screens/Console/Groups/GroupsDetails.tsx
@@ -64,7 +64,7 @@ import TooltipWrapper from "../Common/TooltipWrapper/TooltipWrapper";
import HelpMenu from "../HelpMenu";
import PageHeaderWrapper from "../Common/PageHeaderWrapper/PageHeaderWrapper";
-export const formatPolicy = (policy: string = ""): string[] => {
+const formatPolicy = (policy: string = ""): string[] => {
if (policy.length <= 0) return [];
return policy.split(",");
};
diff --git a/web-app/src/screens/Console/HealthInfo/healthInfoSlice.ts b/web-app/src/screens/Console/HealthInfo/healthInfoSlice.ts
index 9cf03e459..ac9d504ec 100644
--- a/web-app/src/screens/Console/HealthInfo/healthInfoSlice.ts
+++ b/web-app/src/screens/Console/HealthInfo/healthInfoSlice.ts
@@ -16,7 +16,7 @@
import { createSlice, PayloadAction } from "@reduxjs/toolkit";
import { HealthInfoMessage } from "./types";
-export interface HealthInfoState {
+interface HealthInfoState {
message: HealthInfoMessage;
}
@@ -24,7 +24,7 @@ const initialState: HealthInfoState = {
message: {} as HealthInfoMessage,
};
-export const healthInfoSlice = createSlice({
+const healthInfoSlice = createSlice({
name: "trace",
initialState,
reducers: {
diff --git a/web-app/src/screens/Console/HealthInfo/types.ts b/web-app/src/screens/Console/HealthInfo/types.ts
index ef2522953..1637b31fd 100644
--- a/web-app/src/screens/Console/HealthInfo/types.ts
+++ b/web-app/src/screens/Console/HealthInfo/types.ts
@@ -32,28 +32,28 @@ export interface ReportMessage {
subnetResponse: string;
}
-export interface perfInfo {
+interface perfInfo {
drives: serverDrivesInfo[];
net: serverNetHealthInfo[];
net_parallel: serverNetHealthInfo;
error: string;
}
-export interface serverDrivesInfo {
+interface serverDrivesInfo {
addr: string;
serial: drivePerfInfo[];
parallel: drivePerfInfo[];
error: string;
}
-export interface drivePerfInfo {
+interface drivePerfInfo {
endpoint: string;
latency: diskLatency;
throughput: diskThroughput;
error: string;
}
-export interface diskLatency {
+interface diskLatency {
avg_secs: number;
percentile50_secs: number;
percentile90_secs: number;
@@ -62,7 +62,7 @@ export interface diskLatency {
max_secs: number;
}
-export interface diskThroughput {
+interface diskThroughput {
avg_bytes_per_sec: number;
percentile50_bytes_per_sec: number;
percentile90_bytes_per_sec: number;
@@ -71,20 +71,20 @@ export interface diskThroughput {
max_bytes_per_sec: number;
}
-export interface serverNetHealthInfo {
+interface serverNetHealthInfo {
addr: string;
net: netPerfInfo[];
error: string;
}
-export interface netPerfInfo {
+interface netPerfInfo {
remote: string;
latency: netLatency;
throughput: netThroughput;
error: string;
}
-export interface netLatency {
+interface netLatency {
avg_secs: number;
percentile50_secs: number;
percentile90_secs: number;
@@ -93,7 +93,7 @@ export interface netLatency {
max_secs: number;
}
-export interface netThroughput {
+interface netThroughput {
avg_bytes_per_sec: number;
percentile50_bytes_per_sec: number;
percentile90_bytes_per_sec: number;
@@ -102,13 +102,13 @@ export interface netThroughput {
max_bytes_per_sec: number;
}
-export interface minioHealthInfo {
+interface minioHealthInfo {
info: infoMessage;
config: any;
error: string;
}
-export interface infoMessage {
+interface infoMessage {
mode: string;
domain: string[];
region: string;
@@ -122,19 +122,19 @@ export interface infoMessage {
servers: serverProperties[];
}
-export interface buckets {
+interface buckets {
count: number;
}
-export interface objects {
+interface objects {
count: number;
}
-export interface usage {
+interface usage {
size: number;
}
-export interface services {
+interface services {
vault: vault;
ldap: ldap;
logger: Map[];
@@ -142,21 +142,21 @@ export interface services {
notifications: Map[]>;
}
-export interface vault {
+interface vault {
status: string;
encrypt: string;
decrypt: string;
}
-export interface ldap {
+interface ldap {
status: string;
}
-export interface status {
+interface status {
status: string;
}
-export interface serverProperties {
+interface serverProperties {
state: string;
endpoint: string;
uptime: number;
@@ -166,7 +166,7 @@ export interface serverProperties {
drives: disk[];
}
-export interface disk {
+interface disk {
endpoint: string;
rootDisk: boolean;
path: string;
@@ -184,7 +184,7 @@ export interface disk {
utilization: number;
}
-export interface sysHealthInfo {
+interface sysHealthInfo {
cpus: serverCpuInfo[];
drives: serverDiskHwInfo[];
osinfos: serverOsInfo[];
@@ -193,14 +193,14 @@ export interface sysHealthInfo {
error: string;
}
-export interface serverCpuInfo {
+interface serverCpuInfo {
addr: string;
cpu: cpuInfoStat[];
time: cpuTimeStat[];
error: string;
}
-export interface cpuInfoStat {
+interface cpuInfoStat {
cpu: number;
vendorId: string;
family: string;
@@ -216,7 +216,7 @@ export interface cpuInfoStat {
microcode: string;
}
-export interface cpuTimeStat {
+interface cpuTimeStat {
cpu: string;
user: number;
system: number;
@@ -230,7 +230,7 @@ export interface cpuTimeStat {
guestNice: number;
}
-export interface serverDiskHwInfo {
+interface serverDiskHwInfo {
addr: string;
usages: diskUsageStat[];
partitions: partitionStat[];
@@ -238,7 +238,7 @@ export interface serverDiskHwInfo {
error: string;
}
-export interface diskUsageStat {
+interface diskUsageStat {
path: string;
fstype: string;
total: number;
@@ -251,7 +251,7 @@ export interface diskUsageStat {
inodesUsedPercent: number;
}
-export interface partitionStat {
+interface partitionStat {
device: string;
mountpoint: string;
fstype: string;
@@ -259,7 +259,7 @@ export interface partitionStat {
smartInfo: smartInfo;
}
-export interface smartInfo {
+interface smartInfo {
device: string;
scsi: scsiInfo;
nvme: nvmeInfo;
@@ -267,7 +267,7 @@ export interface smartInfo {
error: string;
}
-export interface scsiInfo {
+interface scsiInfo {
scsiCapacityBytes: number;
scsiModeSenseBuf: string;
scsirespLen: number;
@@ -276,7 +276,7 @@ export interface scsiInfo {
sciRpm: number;
}
-export interface nvmeInfo {
+interface nvmeInfo {
serialNum: string;
vendorId: string;
firmwareVersion: string;
@@ -297,7 +297,7 @@ export interface nvmeInfo {
hostWriteCommands: number;
}
-export interface ataInfo {
+interface ataInfo {
scsiLuWWNDeviceID: string;
serialNum: string;
modelNum: string;
@@ -311,7 +311,7 @@ export interface ataInfo {
transport: string;
}
-export interface diskIOCountersStat {
+interface diskIOCountersStat {
readCount: number;
mergedReadCount: number;
DriteCount: number;
@@ -328,7 +328,7 @@ export interface diskIOCountersStat {
label: string;
}
-export interface serverOsInfo {
+interface serverOsInfo {
addr: string;
info: infoStat;
sensors: temperatureStat[];
@@ -336,7 +336,7 @@ export interface serverOsInfo {
error: string;
}
-export interface infoStat {
+interface infoStat {
hostname: string;
uptime: number;
bootTime: number;
@@ -352,26 +352,26 @@ export interface infoStat {
hostid: string;
}
-export interface temperatureStat {
+interface temperatureStat {
sensorKey: string;
sensorTemperature: number;
}
-export interface userStat {
+interface userStat {
user: string;
terminal: string;
host: string;
started: number;
}
-export interface serverMemInfo {
+interface serverMemInfo {
addr: string;
swap: swapMemoryStat;
virtualmem: virtualMemoryStat;
error: string;
}
-export interface swapMemoryStat {
+interface swapMemoryStat {
total: number;
used: number;
free: number;
@@ -384,7 +384,7 @@ export interface swapMemoryStat {
pgmajfault: number;
}
-export interface virtualMemoryStat {
+interface virtualMemoryStat {
total: number;
available: number;
used: number;
@@ -422,13 +422,13 @@ export interface virtualMemoryStat {
hugepagesize: number;
}
-export interface serverProcInfo {
+interface serverProcInfo {
addr: string;
processes: sysProcess[];
error: string;
}
-export interface sysProcess {
+interface sysProcess {
pid: number;
background: boolean;
cpupercent: number;
@@ -461,7 +461,7 @@ export interface sysProcess {
username: string;
}
-export interface nethwConnectionStat {
+interface nethwConnectionStat {
fd: number;
family: number;
type: number;
@@ -472,19 +472,19 @@ export interface nethwConnectionStat {
pid: number;
}
-export interface netAddr {
+interface netAddr {
ip: string;
port: number;
}
-export interface processIOCountersStat {
+interface processIOCountersStat {
readCount: number;
writeCount: number;
readBytes: number;
writeBytes: number;
}
-export interface memoryInfoStat {
+interface memoryInfoStat {
rss: number;
vms: number;
hwm: number;
@@ -494,7 +494,7 @@ export interface memoryInfoStat {
swap: number;
}
-export interface nethwIOCounterStat {
+interface nethwIOCounterStat {
name: string;
bytesSent: number;
bytesRecv: number;
@@ -508,19 +508,19 @@ export interface nethwIOCounterStat {
fifoout: number;
}
-export interface processNmCtxSwitchesStat {
+interface processNmCtxSwitchesStat {
voluntary: number;
involuntary: number;
}
-export interface processPageFaultsStat {
+interface processPageFaultsStat {
minorFaults: number;
majorFaults: number;
childMinorFaults: number;
childMajorFaults: number;
}
-export interface processRLimitStat {
+interface processRLimitStat {
resource: number;
soft: number;
hard: number;
diff --git a/web-app/src/screens/Console/License/licenseSlice.ts b/web-app/src/screens/Console/License/licenseSlice.ts
index c2bc54dd1..314f13dca 100644
--- a/web-app/src/screens/Console/License/licenseSlice.ts
+++ b/web-app/src/screens/Console/License/licenseSlice.ts
@@ -16,7 +16,7 @@
import { createSlice } from "@reduxjs/toolkit";
-export interface IAddPool {
+interface IAddPool {
faqModalOpen: boolean;
}
@@ -24,7 +24,7 @@ const initialState: IAddPool = {
faqModalOpen: false,
};
-export const licenseSlice = createSlice({
+const licenseSlice = createSlice({
name: "license",
initialState,
reducers: {
@@ -37,6 +37,4 @@ export const licenseSlice = createSlice({
},
});
-export const { openFAQModal, closeFAQModal } = licenseSlice.actions;
-
export default licenseSlice.reducer;
diff --git a/web-app/src/screens/Console/License/utils.tsx b/web-app/src/screens/Console/License/utils.tsx
index 811f61140..173d007a6 100644
--- a/web-app/src/screens/Console/License/utils.tsx
+++ b/web-app/src/screens/Console/License/utils.tsx
@@ -17,7 +17,7 @@
import React from "react";
import { ApplicationLogo } from "mds";
-export interface LicensePlanOption {
+interface LicensePlanOption {
planId: string;
planName: string;
planType: "commercial" | "open-source";
@@ -25,7 +25,7 @@ export interface LicensePlanOption {
planDescription: React.ReactNode;
}
-export interface FeatureElementObject {
+interface FeatureElementObject {
[name: string]: FeatureItem;
}
@@ -34,7 +34,7 @@ export interface FeatureItem {
isCheck?: boolean;
}
-export interface PlansFeatures {
+interface PlansFeatures {
featureLabel: string;
featurePlans: FeatureElementObject;
}
@@ -225,7 +225,7 @@ export const LICENSE_PLANS_INFORMATION: LicensePlanOption[] = [
},
];
-export const LICENSE_CONSENT_STORE_KEY = "agpl_minio_license_consent";
+const LICENSE_CONSENT_STORE_KEY = "agpl_minio_license_consent";
export const setLicenseConsent = () => {
localStorage.setItem(LICENSE_CONSENT_STORE_KEY, "true");
};
diff --git a/web-app/src/screens/Console/Logs/logsSlice.ts b/web-app/src/screens/Console/Logs/logsSlice.ts
index 83d4601ee..e2e2d6f30 100644
--- a/web-app/src/screens/Console/Logs/logsSlice.ts
+++ b/web-app/src/screens/Console/Logs/logsSlice.ts
@@ -18,7 +18,7 @@ import { createSlice, PayloadAction } from "@reduxjs/toolkit";
import { LogMessage } from "./types";
import { DateTime } from "luxon";
-export interface LogState {
+interface LogState {
logMessages: LogMessage[];
logsStarted: boolean;
}
@@ -28,7 +28,7 @@ const initialState: LogState = {
logsStarted: false,
};
-export const logsSlice = createSlice({
+const logsSlice = createSlice({
name: "logs",
initialState,
reducers: {
diff --git a/web-app/src/screens/Console/Logs/types.ts b/web-app/src/screens/Console/Logs/types.ts
index e1e3c4db0..86469fff2 100644
--- a/web-app/src/screens/Console/Logs/types.ts
+++ b/web-app/src/screens/Console/Logs/types.ts
@@ -14,17 +14,17 @@
// You should have received a copy of the GNU Affero General Public License
// along with this program. If not, see .
-export interface logError {
+interface logError {
message: string;
source: string[];
}
-export interface logErrorApiArgs {
+interface logErrorApiArgs {
bucket: string;
object: string;
}
-export interface logErrorApi {
+interface logErrorApi {
name: string;
args: logErrorApiArgs;
}
diff --git a/web-app/src/screens/Console/ObjectBrowser/objectBrowserSlice.ts b/web-app/src/screens/Console/ObjectBrowser/objectBrowserSlice.ts
index 6a7f838d0..2e59505eb 100644
--- a/web-app/src/screens/Console/ObjectBrowser/objectBrowserSlice.ts
+++ b/web-app/src/screens/Console/ObjectBrowser/objectBrowserSlice.ts
@@ -80,7 +80,7 @@ const initialState: ObjectBrowserState = {
maxShareLinkExpTime: 0,
};
-export const objectBrowserSlice = createSlice({
+const objectBrowserSlice = createSlice({
name: "objectBrowser",
initialState,
reducers: {
@@ -398,7 +398,6 @@ export const {
cleanList,
toggleList,
openList,
- closeList,
setSearchObjects,
setRequestInProgress,
cancelObjectInList,
diff --git a/web-app/src/screens/Console/ObjectBrowser/types.ts b/web-app/src/screens/Console/ObjectBrowser/types.ts
index db2f84fe5..de1db4c89 100644
--- a/web-app/src/screens/Console/ObjectBrowser/types.ts
+++ b/web-app/src/screens/Console/ObjectBrowser/types.ts
@@ -20,7 +20,7 @@ import {
GetBucketRetentionConfig,
} from "api/consoleApi";
-export interface RewindItem {
+interface RewindItem {
rewindEnabled: boolean;
bucketToRewind: string;
dateToRewind: string | null;
@@ -60,7 +60,7 @@ export interface ObjectBrowserState {
maxShareLinkExpTime: number;
}
-export interface ObjectManager {
+interface ObjectManager {
objectsToManage: IFileItem[];
managerOpen: boolean;
newItems: boolean;
diff --git a/web-app/src/screens/Console/Speedtest/types.ts b/web-app/src/screens/Console/Speedtest/types.ts
index 9d3158ef8..58292857a 100644
--- a/web-app/src/screens/Console/Speedtest/types.ts
+++ b/web-app/src/screens/Console/Speedtest/types.ts
@@ -24,7 +24,7 @@ export interface SpeedTestResponse {
GETStats?: STStats;
}
-export interface STStats {
+interface STStats {
throughputPerSec: number;
objectsPerSec: number;
servers: STServer[] | null;
diff --git a/web-app/src/screens/Console/Support/registerSlice.ts b/web-app/src/screens/Console/Support/registerSlice.ts
index 389901d69..015ed2a20 100644
--- a/web-app/src/screens/Console/Support/registerSlice.ts
+++ b/web-app/src/screens/Console/Support/registerSlice.ts
@@ -17,7 +17,7 @@
import { createSlice, PayloadAction } from "@reduxjs/toolkit";
import { SubnetInfo, SubnetOrganization } from "../License/types";
-export interface RegisterState {
+interface RegisterState {
license: string;
subnetPassword: string;
subnetEmail: string;
@@ -51,7 +51,7 @@ const initialState: RegisterState = {
curTab: "simple-tab-0",
};
-export const registerSlice = createSlice({
+const registerSlice = createSlice({
name: "register",
initialState,
reducers: {
@@ -106,7 +106,6 @@ export const registerSlice = createSlice({
// Action creators are generated for each case reducer function
export const {
- setLicense,
setSubnetPassword,
setSubnetEmail,
setSubnetMFAToken,
diff --git a/web-app/src/screens/Console/Support/registerThunks.ts b/web-app/src/screens/Console/Support/registerThunks.ts
index ec95c5c84..f20b3e477 100644
--- a/web-app/src/screens/Console/Support/registerThunks.ts
+++ b/web-app/src/screens/Console/Support/registerThunks.ts
@@ -91,7 +91,7 @@ export const fetchLicenseInfo = createAsyncThunk(
},
);
-export interface ClassRegisterArgs {
+interface ClassRegisterArgs {
token: string;
account_id: string;
}
diff --git a/web-app/src/screens/Console/Trace/traceSlice.ts b/web-app/src/screens/Console/Trace/traceSlice.ts
index b8bbda568..356e183eb 100644
--- a/web-app/src/screens/Console/Trace/traceSlice.ts
+++ b/web-app/src/screens/Console/Trace/traceSlice.ts
@@ -17,7 +17,7 @@
import { createSlice, PayloadAction } from "@reduxjs/toolkit";
import { TraceMessage } from "./types";
-export interface TraceState {
+interface TraceState {
messages: TraceMessage[];
traceStarted: boolean;
}
@@ -27,7 +27,7 @@ const initialState: TraceState = {
traceStarted: false,
};
-export const traceSlice = createSlice({
+const traceSlice = createSlice({
name: "trace",
initialState,
reducers: {
diff --git a/web-app/src/screens/Console/Trace/types.ts b/web-app/src/screens/Console/Trace/types.ts
index 2d3a4fb2e..9c9937564 100644
--- a/web-app/src/screens/Console/Trace/types.ts
+++ b/web-app/src/screens/Console/Trace/types.ts
@@ -14,7 +14,7 @@
// You should have received a copy of the GNU Affero General Public License
// along with this program. If not, see .
-export interface CallStats {
+interface CallStats {
timeToFirstByte: string;
rx: number;
tx: number;
diff --git a/web-app/src/screens/Console/Users/AddUsersSlice.tsx b/web-app/src/screens/Console/Users/AddUsersSlice.tsx
index 9c6999e2c..c183ec3e3 100644
--- a/web-app/src/screens/Console/Users/AddUsersSlice.tsx
+++ b/web-app/src/screens/Console/Users/AddUsersSlice.tsx
@@ -17,7 +17,7 @@
import { createSlice, PayloadAction } from "@reduxjs/toolkit";
import { createUserAsync, resetFormAsync } from "./thunk/AddUsersThunk";
-export interface ICreateUser {
+interface ICreateUser {
userName: string;
secretKey: string;
selectedGroups: string[];
@@ -39,7 +39,7 @@ const initialState: ICreateUser = {
secretKeylength: 0,
};
-export const createUserSlice = createSlice({
+const createUserSlice = createSlice({
name: "createUser",
initialState,
reducers: {
@@ -93,7 +93,6 @@ export const {
setSelectedPolicies,
setAddLoading,
setSendEnabled,
- setApinoerror,
} = createUserSlice.actions;
export default createUserSlice.reducer;
diff --git a/web-app/src/screens/Console/Watch/types.ts b/web-app/src/screens/Console/Watch/types.ts
index 7c392c87b..9d6c8462b 100644
--- a/web-app/src/screens/Console/Watch/types.ts
+++ b/web-app/src/screens/Console/Watch/types.ts
@@ -31,7 +31,7 @@ export interface Bucket {
name: string;
}
-export interface Details {
+interface Details {
tags: object;
}
diff --git a/web-app/src/screens/Console/Watch/watchSlice.ts b/web-app/src/screens/Console/Watch/watchSlice.ts
index d324dc358..4bc71a4e6 100644
--- a/web-app/src/screens/Console/Watch/watchSlice.ts
+++ b/web-app/src/screens/Console/Watch/watchSlice.ts
@@ -17,7 +17,7 @@
import { createSlice, PayloadAction } from "@reduxjs/toolkit";
import { EventInfo } from "./types";
-export interface WatchState {
+interface WatchState {
messages: EventInfo[];
}
@@ -25,7 +25,7 @@ const initialState: WatchState = {
messages: [],
};
-export const watchSlice = createSlice({
+const watchSlice = createSlice({
name: "trace",
initialState,
reducers: {
diff --git a/web-app/src/screens/Console/consoleSlice.ts b/web-app/src/screens/Console/consoleSlice.ts
index 627402911..0f93874ae 100644
--- a/web-app/src/screens/Console/consoleSlice.ts
+++ b/web-app/src/screens/Console/consoleSlice.ts
@@ -20,7 +20,7 @@ import { AppState } from "../../store";
import { fetchSession } from "../../screens/LoginPage/sessionThunk";
import { SessionCallStates } from "./consoleSlice.types";
-export interface ConsoleState {
+interface ConsoleState {
session: SessionResponse;
sessionLoadingState: SessionCallStates;
}
@@ -30,7 +30,7 @@ const initialState: ConsoleState = {
sessionLoadingState: SessionCallStates.Initial,
};
-export const consoleSlice = createSlice({
+const consoleSlice = createSlice({
name: "console",
initialState,
reducers: {
diff --git a/web-app/src/screens/LoginPage/loginSlice.ts b/web-app/src/screens/LoginPage/loginSlice.ts
index dd4de6f9c..b3451a6b1 100644
--- a/web-app/src/screens/LoginPage/loginSlice.ts
+++ b/web-app/src/screens/LoginPage/loginSlice.ts
@@ -18,7 +18,7 @@ import { createSlice, PayloadAction } from "@reduxjs/toolkit";
import { LoginDetails } from "api/consoleApi";
import { doLoginAsync, getFetchConfigurationAsync } from "./loginThunks";
-export interface LoginState {
+interface LoginState {
accessKey: string;
secretKey: string;
sts: string;
@@ -49,7 +49,7 @@ const initialState: LoginState = {
ssoEmbeddedIDPDisplay: false,
};
-export const loginSlice = createSlice({
+const loginSlice = createSlice({
name: "login",
initialState,
reducers: {
diff --git a/web-app/src/serviceWorker.ts b/web-app/src/serviceWorker.ts
deleted file mode 100644
index 16eaf8af9..000000000
--- a/web-app/src/serviceWorker.ts
+++ /dev/null
@@ -1,143 +0,0 @@
-// This optional code is used to register a service worker.
-// register() is not called by default.
-
-// This lets the app load faster on subsequent visits in production, and gives
-// it offline capabilities. However, it also means that developers (and users)
-// will only see deployed updates on subsequent visits to a page, after all the
-// existing tabs open on the page have been closed, since previously cached
-// resources are updated in the background.
-
-// To learn more about the benefits of this model and instructions on how to
-// opt-in, read https://bit.ly/CRA-PWA
-
-const isLocalhost = Boolean(
- window.location.hostname === "localhost" ||
- // [::1] is the IPv6 localhost address.
- window.location.hostname === "[::1]" ||
- // 127.0.0.1/8 is considered localhost for IPv4.
- window.location.hostname.match(
- /^127(?:\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/,
- ),
-);
-
-type Config = {
- onSuccess?: (registration: ServiceWorkerRegistration) => void;
- onUpdate?: (registration: ServiceWorkerRegistration) => void;
-};
-
-export function register(config?: Config) {
- if (process.env.NODE_ENV === "production" && "serviceWorker" in navigator) {
- // The URL constructor is available in all browsers that support SW.
- const publicUrl = new URL(
- (process as { env: { [key: string]: string } }).env.PUBLIC_URL,
- window.location.href,
- );
- if (publicUrl.origin !== window.location.origin) {
- // Our service worker won't work if PUBLIC_URL is on a different origin
- // from what our page is served on. This might happen if a CDN is used to
- // serve assets; see https://github.com/facebook/create-react-app/issues/2374
- return;
- }
-
- window.addEventListener("load", () => {
- const swUrl = `${process.env.PUBLIC_URL}/service-worker.js`;
-
- if (isLocalhost) {
- // This is running on localhost. Let's check if a service worker still exists or not.
- checkValidServiceWorker(swUrl, config);
-
- // Add some additional logging to localhost, pointing developers to the
- // service worker/PWA documentation.
- navigator.serviceWorker.ready.then(() => {
- console.log(
- "This web app is being served cache-first by a service " +
- "worker. To learn more, visit https://bit.ly/CRA-PWA",
- );
- });
- } else {
- // Is not localhost. Just register service worker
- registerValidSW(swUrl, config);
- }
- });
- }
-}
-
-function registerValidSW(swUrl: string, config?: Config) {
- navigator.serviceWorker
- .register(swUrl)
- .then((registration) => {
- registration.onupdatefound = () => {
- const installingWorker = registration.installing;
- if (installingWorker === null) {
- return;
- }
- installingWorker.onstatechange = () => {
- if (installingWorker.state === "installed") {
- if (navigator.serviceWorker.controller) {
- // At this point, the updated precached content has been fetched,
- // but the previous service worker will still serve the older
- // content until all client tabs are closed.
- console.log(
- "New content is available and will be used when all " +
- "tabs for this page are closed. See https://bit.ly/CRA-PWA.",
- );
-
- // Execute callback
- if (config && config.onUpdate) {
- config.onUpdate(registration);
- }
- } else {
- // At this point, everything has been precached.
- // It's the perfect time to display a
- // "Content is cached for offline use." message.
- console.log("Content is cached for offline use.");
-
- // Execute callback
- if (config && config.onSuccess) {
- config.onSuccess(registration);
- }
- }
- }
- };
- };
- })
- .catch((error) => {
- console.error("Error during service worker registration:", error);
- });
-}
-
-function checkValidServiceWorker(swUrl: string, config?: Config) {
- // Check if the service worker can be found. If it can't reload the page.
- fetch(swUrl)
- .then((response) => {
- // Ensure service worker exists, and that we really are getting a JS file.
- const contentType = response.headers.get("content-type");
- if (
- response.status === 404 ||
- (contentType !== null && contentType.indexOf("javascript") === -1)
- ) {
- // No service worker found. Probably a different app. Reload the page.
- navigator.serviceWorker.ready.then((registration) => {
- registration.unregister().then(() => {
- window.location.reload();
- });
- });
- } else {
- // Service worker found. Proceed as normal.
- registerValidSW(swUrl, config);
- }
- })
- .catch(() => {
- console.log(
- "No internet connection found. App is running in offline mode.",
- );
- });
-}
-
-export function unregister() {
- if ("serviceWorker" in navigator) {
- navigator.serviceWorker.ready.then((registration) => {
- registration.unregister();
- });
- }
-}
diff --git a/web-app/src/store.ts b/web-app/src/store.ts
index de966a0f7..a266d9875 100644
--- a/web-app/src/store.ts
+++ b/web-app/src/store.ts
@@ -69,8 +69,6 @@ if (process.env.NODE_ENV !== "production" && module.hot) {
export type AppState = ReturnType;
export type AppDispatch = typeof store.dispatch;
-export type RootState = ReturnType;
+type RootState = ReturnType;
export const useAppDispatch = () => useDispatch();
export const useAppSelector: TypedUseSelectorHook = useSelector;
-
-export default store;
diff --git a/web-app/src/systemSlice.ts b/web-app/src/systemSlice.ts
index abefbd4f3..2bda456ee 100644
--- a/web-app/src/systemSlice.ts
+++ b/web-app/src/systemSlice.ts
@@ -25,7 +25,7 @@ const initSideBarOpen = localStorage.getItem("sidebarOpen")
? JSON.parse(localStorage.getItem("sidebarOpen")!)["open"]
: true;
-export interface SystemState {
+interface SystemState {
value: number;
loggedIn: boolean;
showMarketplace: boolean;
@@ -81,7 +81,7 @@ const initialState: SystemState = {
darkMode: isDarkModeOn(),
};
-export const systemSlice = createSlice({
+const systemSlice = createSlice({
name: "system",
initialState,
reducers: {
@@ -189,11 +189,9 @@ export const systemSlice = createSlice({
// Action creators are generated for each case reducer function
export const {
userLogged,
- showMarketplace,
menuOpen,
setServerNeedsRestart,
serverIsLoading,
- setLoadingProgress,
setSnackBarMessage,
setErrorSnackMessage,
setModalErrorSnackMessage,
@@ -201,7 +199,6 @@ export const {
setServerDiagStat,
globalSetDistributedSetup,
setSiteReplicationInfo,
- setSystemLicenseInfo,
setOverrideStyles,
setAnonymousMode,
resetSystem,
diff --git a/web-app/yarn.lock b/web-app/yarn.lock
index e5e5e4ec5..6502e5260 100644
--- a/web-app/yarn.lock
+++ b/web-app/yarn.lock
@@ -2163,6 +2163,15 @@ __metadata:
languageName: node
linkType: hard
+"@jest/expect-utils@npm:^29.7.0":
+ version: 29.7.0
+ resolution: "@jest/expect-utils@npm:29.7.0"
+ dependencies:
+ jest-get-type: "npm:^29.6.3"
+ checksum: 10c0/60b79d23a5358dc50d9510d726443316253ecda3a7fb8072e1526b3e0d3b14f066ee112db95699b7a43ad3f0b61b750c72e28a5a1cac361d7a2bb34747fa938a
+ languageName: node
+ linkType: hard
+
"@jest/fake-timers@npm:^27.5.1":
version: 27.5.1
resolution: "@jest/fake-timers@npm:27.5.1"
@@ -2341,6 +2350,20 @@ __metadata:
languageName: node
linkType: hard
+"@jest/types@npm:^29.6.3":
+ version: 29.6.3
+ resolution: "@jest/types@npm:29.6.3"
+ dependencies:
+ "@jest/schemas": "npm:^29.6.3"
+ "@types/istanbul-lib-coverage": "npm:^2.0.0"
+ "@types/istanbul-reports": "npm:^3.0.0"
+ "@types/node": "npm:*"
+ "@types/yargs": "npm:^17.0.8"
+ chalk: "npm:^4.0.0"
+ checksum: 10c0/ea4e493dd3fb47933b8ccab201ae573dcc451f951dc44ed2a86123cd8541b82aa9d2b1031caf9b1080d6673c517e2dcc25a44b2dc4f3fbc37bfc965d444888c0
+ languageName: node
+ linkType: hard
+
"@jridgewell/gen-mapping@npm:^0.3.2, @jridgewell/gen-mapping@npm:^0.3.5":
version: 0.3.5
resolution: "@jridgewell/gen-mapping@npm:0.3.5"
@@ -2445,7 +2468,7 @@ __metadata:
languageName: node
linkType: hard
-"@nodelib/fs.walk@npm:^1.2.3, @nodelib/fs.walk@npm:^1.2.8":
+"@nodelib/fs.walk@npm:1.2.8, @nodelib/fs.walk@npm:^1.2.3, @nodelib/fs.walk@npm:^1.2.8":
version: 1.2.8
resolution: "@nodelib/fs.walk@npm:1.2.8"
dependencies:
@@ -2734,6 +2757,19 @@ __metadata:
languageName: node
linkType: hard
+"@snyk/github-codeowners@npm:1.1.0":
+ version: 1.1.0
+ resolution: "@snyk/github-codeowners@npm:1.1.0"
+ dependencies:
+ commander: "npm:^4.1.1"
+ ignore: "npm:^5.1.8"
+ p-map: "npm:^4.0.0"
+ bin:
+ github-codeowners: dist/cli.js
+ checksum: 10c0/92d860a904a1e67f8563d4ac4d540cc613f71193f7968933b4a4b1526e80a97f536f52d27762c158e3e39d48c2f3db4906ec78846309351c741abb1a28653af9
+ languageName: node
+ linkType: hard
+
"@storybook/csf@npm:0.1.11":
version: 0.1.11
resolution: "@storybook/csf@npm:0.1.11"
@@ -2996,18 +3032,6 @@ __metadata:
languageName: node
linkType: hard
-"@ts-morph/common@npm:~0.12.3":
- version: 0.12.3
- resolution: "@ts-morph/common@npm:0.12.3"
- dependencies:
- fast-glob: "npm:^3.2.7"
- minimatch: "npm:^3.0.4"
- mkdirp: "npm:^1.0.4"
- path-browserify: "npm:^1.0.1"
- checksum: 10c0/2a0b25128eca547cfdf4795d39e7d6e15c81008b74867ccdda9d0d9c1b0eaca534d6d729220572e726a811786efa3c38f3b6a482d3fc970d3bf0acea39a7248f
- languageName: node
- linkType: hard
-
"@types/aria-query@npm:^5.0.1":
version: 5.0.4
resolution: "@types/aria-query@npm:5.0.4"
@@ -3355,6 +3379,16 @@ __metadata:
languageName: node
linkType: hard
+"@types/jest@npm:^29.5.12":
+ version: 29.5.12
+ resolution: "@types/jest@npm:29.5.12"
+ dependencies:
+ expect: "npm:^29.0.0"
+ pretty-format: "npm:^29.0.0"
+ checksum: 10c0/25fc8e4c611fa6c4421e631432e9f0a6865a8cb07c9815ec9ac90d630271cad773b2ee5fe08066f7b95bebd18bb967f8ce05d018ee9ab0430f9dfd1d84665b6f
+ languageName: node
+ linkType: hard
+
"@types/json-schema@npm:*, @types/json-schema@npm:^7.0.4, @types/json-schema@npm:^7.0.5, @types/json-schema@npm:^7.0.8, @types/json-schema@npm:^7.0.9":
version: 7.0.15
resolution: "@types/json-schema@npm:7.0.15"
@@ -5605,6 +5639,13 @@ __metadata:
languageName: node
linkType: hard
+"clone@npm:^1.0.2":
+ version: 1.0.4
+ resolution: "clone@npm:1.0.4"
+ checksum: 10c0/2176952b3649293473999a95d7bebfc9dc96410f6cbd3d2595cf12fd401f63a4bf41a7adbfd3ab2ff09ed60cb9870c58c6acdd18b87767366fabfc163700f13b
+ languageName: node
+ linkType: hard
+
"clsx@npm:^1.0.4":
version: 1.2.1
resolution: "clsx@npm:1.2.1"
@@ -5612,7 +5653,7 @@ __metadata:
languageName: node
linkType: hard
-"clsx@npm:^2.0.0":
+"clsx@npm:^2.0.0, clsx@npm:^2.1.1":
version: 2.1.1
resolution: "clsx@npm:2.1.1"
checksum: 10c0/c4c8eb865f8c82baab07e71bfa8897c73454881c4f99d6bc81585aecd7c441746c1399d08363dc096c550cceaf97bd4ce1e8854e1771e9998d9f94c4fe075839
@@ -5637,13 +5678,6 @@ __metadata:
languageName: node
linkType: hard
-"code-block-writer@npm:^11.0.0":
- version: 11.0.3
- resolution: "code-block-writer@npm:11.0.3"
- checksum: 10c0/12fe4c02152a2b607e8913b39dcc31dcb5240f7c8933a3335d4e42a5418af409bf7ed454c80d6d8c12f9c59bb685dd88f9467874b46be62236dfbed446d03fd6
- languageName: node
- linkType: hard
-
"coffeescript@npm:^2.3.1":
version: 2.7.0
resolution: "coffeescript@npm:2.7.0"
@@ -5746,7 +5780,7 @@ __metadata:
languageName: node
linkType: hard
-"commander@npm:^4.0.0":
+"commander@npm:^4.0.0, commander@npm:^4.1.1":
version: 4.1.1
resolution: "commander@npm:4.1.1"
checksum: 10c0/84a76c08fe6cc08c9c93f62ac573d2907d8e79138999312c92d4155bc2325d487d64d13f669b2000c9f8caf70493c1be2dac74fec3c51d5a04f8bc3ae1830bab
@@ -5760,13 +5794,6 @@ __metadata:
languageName: node
linkType: hard
-"commander@npm:^6.2.1":
- version: 6.2.1
- resolution: "commander@npm:6.2.1"
- checksum: 10c0/85748abd9d18c8bc88febed58b98f66b7c591d9b5017cad459565761d7b29ca13b7783ea2ee5ce84bf235897333706c4ce29adf1ce15c8252780e7000e2ce9ea
- languageName: node
- linkType: hard
-
"commander@npm:^7.2.0":
version: 7.2.0
resolution: "commander@npm:7.2.0"
@@ -5964,7 +5991,7 @@ __metadata:
languageName: node
linkType: hard
-"cosmiconfig@npm:^7.0.0, cosmiconfig@npm:^7.0.1":
+"cosmiconfig@npm:^7.0.0":
version: 7.1.0
resolution: "cosmiconfig@npm:7.1.0"
dependencies:
@@ -6625,6 +6652,15 @@ __metadata:
languageName: node
linkType: hard
+"defaults@npm:^1.0.3":
+ version: 1.0.4
+ resolution: "defaults@npm:1.0.4"
+ dependencies:
+ clone: "npm:^1.0.2"
+ checksum: 10c0/9cfbe498f5c8ed733775db62dfd585780387d93c17477949e1670bfcfb9346e0281ce8c4bf9f4ac1fc0f9b851113bd6dc9e41182ea1644ccd97de639fa13c35a
+ languageName: node
+ linkType: hard
+
"define-data-property@npm:^1.0.1, define-data-property@npm:^1.1.4":
version: 1.1.4
resolution: "define-data-property@npm:1.1.4"
@@ -7035,6 +7071,19 @@ __metadata:
languageName: node
linkType: hard
+"easy-table@npm:1.2.0":
+ version: 1.2.0
+ resolution: "easy-table@npm:1.2.0"
+ dependencies:
+ ansi-regex: "npm:^5.0.1"
+ wcwidth: "npm:^1.0.1"
+ dependenciesMeta:
+ wcwidth:
+ optional: true
+ checksum: 10c0/2d37937cd608586ba02e1ec479f90ccec581d366b3b0d1bb26b99ee6005f8d724e32a07a873759893461ca45b99e2d08c30326529d967ce9eedc1e9b68d4aa63
+ languageName: node
+ linkType: hard
+
"ee-first@npm:1.1.1":
version: 1.1.1
resolution: "ee-first@npm:1.1.1"
@@ -7151,6 +7200,16 @@ __metadata:
languageName: node
linkType: hard
+"enhanced-resolve@npm:^5.17.1":
+ version: 5.17.1
+ resolution: "enhanced-resolve@npm:5.17.1"
+ dependencies:
+ graceful-fs: "npm:^4.2.4"
+ tapable: "npm:^2.2.0"
+ checksum: 10c0/81a0515675eca17efdba2cf5bad87abc91a528fc1191aad50e275e74f045b41506167d420099022da7181c8d787170ea41e4a11a0b10b7a16f6237daecb15370
+ languageName: node
+ linkType: hard
+
"entities@npm:^2.0.0":
version: 2.2.0
resolution: "entities@npm:2.2.0"
@@ -7893,6 +7952,19 @@ __metadata:
languageName: node
linkType: hard
+"expect@npm:^29.0.0":
+ version: 29.7.0
+ resolution: "expect@npm:29.7.0"
+ dependencies:
+ "@jest/expect-utils": "npm:^29.7.0"
+ jest-get-type: "npm:^29.6.3"
+ jest-matcher-utils: "npm:^29.7.0"
+ jest-message-util: "npm:^29.7.0"
+ jest-util: "npm:^29.7.0"
+ checksum: 10c0/2eddeace66e68b8d8ee5f7be57f3014b19770caaf6815c7a08d131821da527fb8c8cb7b3dcd7c883d2d3d8d184206a4268984618032d1e4b16dc8d6596475d41
+ languageName: node
+ linkType: hard
+
"exponential-backoff@npm:^3.1.1":
version: 3.1.1
resolution: "exponential-backoff@npm:3.1.1"
@@ -7967,7 +8039,7 @@ __metadata:
languageName: node
linkType: hard
-"fast-glob@npm:^3.0.3, fast-glob@npm:^3.2.7, fast-glob@npm:^3.2.9, fast-glob@npm:^3.3.0":
+"fast-glob@npm:^3.0.3, fast-glob@npm:^3.2.9, fast-glob@npm:^3.3.0, fast-glob@npm:^3.3.2":
version: 3.3.2
resolution: "fast-glob@npm:3.3.2"
dependencies:
@@ -9278,7 +9350,7 @@ __metadata:
languageName: node
linkType: hard
-"http-status-codes@npm:^2.2.0":
+"http-status-codes@npm:^2.2.0, http-status-codes@npm:^2.3.0":
version: 2.3.0
resolution: "http-status-codes@npm:2.3.0"
checksum: 10c0/c2412188929e8eed6623eef468c62d0c3c082919c03e9b74fd79cfd060d11783dba44603e38a3cee52d26563fe32005913eaf6120aa8ba907da1238f3eaad5fe
@@ -9404,6 +9476,13 @@ __metadata:
languageName: node
linkType: hard
+"ignore@npm:^5.1.8":
+ version: 5.3.2
+ resolution: "ignore@npm:5.3.2"
+ checksum: 10c0/f9f652c957983634ded1e7f02da3b559a0d4cc210fca3792cb67f1b153623c9c42efdc1c4121af171e295444459fc4a9201101fb041b1104a3c000bccb188337
+ languageName: node
+ linkType: hard
+
"immer@npm:^9.0.21, immer@npm:^9.0.7":
version: 9.0.21
resolution: "immer@npm:9.0.21"
@@ -10300,6 +10379,18 @@ __metadata:
languageName: node
linkType: hard
+"jest-diff@npm:^29.7.0":
+ version: 29.7.0
+ resolution: "jest-diff@npm:29.7.0"
+ dependencies:
+ chalk: "npm:^4.0.0"
+ diff-sequences: "npm:^29.6.3"
+ jest-get-type: "npm:^29.6.3"
+ pretty-format: "npm:^29.7.0"
+ checksum: 10c0/89a4a7f182590f56f526443dde69acefb1f2f0c9e59253c61d319569856c4931eae66b8a3790c443f529267a0ddba5ba80431c585deed81827032b2b2a1fc999
+ languageName: node
+ linkType: hard
+
"jest-docblock@npm:^27.5.1":
version: 27.5.1
resolution: "jest-docblock@npm:27.5.1"
@@ -10358,6 +10449,13 @@ __metadata:
languageName: node
linkType: hard
+"jest-get-type@npm:^29.6.3":
+ version: 29.6.3
+ resolution: "jest-get-type@npm:29.6.3"
+ checksum: 10c0/552e7a97a983d3c2d4e412a44eb7de0430ff773dd99f7500962c268d6dfbfa431d7d08f919c9d960530e5f7f78eb47f267ad9b318265e5092b3ff9ede0db7c2b
+ languageName: node
+ linkType: hard
+
"jest-haste-map@npm:^27.5.1":
version: 27.5.1
resolution: "jest-haste-map@npm:27.5.1"
@@ -10429,6 +10527,18 @@ __metadata:
languageName: node
linkType: hard
+"jest-matcher-utils@npm:^29.7.0":
+ version: 29.7.0
+ resolution: "jest-matcher-utils@npm:29.7.0"
+ dependencies:
+ chalk: "npm:^4.0.0"
+ jest-diff: "npm:^29.7.0"
+ jest-get-type: "npm:^29.6.3"
+ pretty-format: "npm:^29.7.0"
+ checksum: 10c0/0d0e70b28fa5c7d4dce701dc1f46ae0922102aadc24ed45d594dd9b7ae0a8a6ef8b216718d1ab79e451291217e05d4d49a82666e1a3cc2b428b75cd9c933244e
+ languageName: node
+ linkType: hard
+
"jest-message-util@npm:^27.5.1":
version: 27.5.1
resolution: "jest-message-util@npm:27.5.1"
@@ -10463,6 +10573,23 @@ __metadata:
languageName: node
linkType: hard
+"jest-message-util@npm:^29.7.0":
+ version: 29.7.0
+ resolution: "jest-message-util@npm:29.7.0"
+ dependencies:
+ "@babel/code-frame": "npm:^7.12.13"
+ "@jest/types": "npm:^29.6.3"
+ "@types/stack-utils": "npm:^2.0.0"
+ chalk: "npm:^4.0.0"
+ graceful-fs: "npm:^4.2.9"
+ micromatch: "npm:^4.0.4"
+ pretty-format: "npm:^29.7.0"
+ slash: "npm:^3.0.0"
+ stack-utils: "npm:^2.0.3"
+ checksum: 10c0/850ae35477f59f3e6f27efac5215f706296e2104af39232bb14e5403e067992afb5c015e87a9243ec4d9df38525ef1ca663af9f2f4766aa116f127247008bd22
+ languageName: node
+ linkType: hard
+
"jest-mock@npm:^27.5.1":
version: 27.5.1
resolution: "jest-mock@npm:27.5.1"
@@ -10655,6 +10782,20 @@ __metadata:
languageName: node
linkType: hard
+"jest-util@npm:^29.7.0":
+ version: 29.7.0
+ resolution: "jest-util@npm:29.7.0"
+ dependencies:
+ "@jest/types": "npm:^29.6.3"
+ "@types/node": "npm:*"
+ chalk: "npm:^4.0.0"
+ ci-info: "npm:^3.2.0"
+ graceful-fs: "npm:^4.2.9"
+ picomatch: "npm:^2.2.3"
+ checksum: 10c0/bc55a8f49fdbb8f51baf31d2a4f312fb66c9db1483b82f602c9c990e659cdd7ec529c8e916d5a89452ecbcfae4949b21b40a7a59d4ffc0cd813a973ab08c8150
+ languageName: node
+ linkType: hard
+
"jest-validate@npm:^27.5.1":
version: 27.5.1
resolution: "jest-validate@npm:27.5.1"
@@ -10777,6 +10918,15 @@ __metadata:
languageName: node
linkType: hard
+"jiti@npm:^1.21.6":
+ version: 1.21.6
+ resolution: "jiti@npm:1.21.6"
+ bin:
+ jiti: bin/jiti.js
+ checksum: 10c0/05b9ed58cd30d0c3ccd3c98209339e74f50abd9a17e716f65db46b6a35812103f6bde6e134be7124d01745586bca8cc5dae1d0d952267c3ebe55171949c32e56
+ languageName: node
+ linkType: hard
+
"js-md4@npm:^0.3.2":
version: 0.3.2
resolution: "js-md4@npm:0.3.2"
@@ -10939,7 +11089,7 @@ __metadata:
languageName: node
linkType: hard
-"json5@npm:^2.1.2, json5@npm:^2.1.3, json5@npm:^2.2.0, json5@npm:^2.2.2, json5@npm:^2.2.3":
+"json5@npm:^2.1.2, json5@npm:^2.2.0, json5@npm:^2.2.2, json5@npm:^2.2.3":
version: 2.2.3
resolution: "json5@npm:2.2.3"
bin:
@@ -11069,6 +11219,36 @@ __metadata:
languageName: node
linkType: hard
+"knip@npm:^5.27.2":
+ version: 5.27.2
+ resolution: "knip@npm:5.27.2"
+ dependencies:
+ "@nodelib/fs.walk": "npm:1.2.8"
+ "@snyk/github-codeowners": "npm:1.1.0"
+ easy-table: "npm:1.2.0"
+ enhanced-resolve: "npm:^5.17.1"
+ fast-glob: "npm:^3.3.2"
+ jiti: "npm:^1.21.6"
+ js-yaml: "npm:^4.1.0"
+ minimist: "npm:^1.2.8"
+ picocolors: "npm:^1.0.0"
+ picomatch: "npm:^4.0.1"
+ pretty-ms: "npm:^9.0.0"
+ smol-toml: "npm:^1.1.4"
+ strip-json-comments: "npm:5.0.1"
+ summary: "npm:2.1.0"
+ zod: "npm:^3.22.4"
+ zod-validation-error: "npm:^3.0.3"
+ peerDependencies:
+ "@types/node": ">=18"
+ typescript: ">=5.0.4"
+ bin:
+ knip: bin/knip.js
+ knip-bun: bin/knip-bun.js
+ checksum: 10c0/24bc334edbd705cfd0d78dc66517d806161974b45f707555ddc88887772022bc949dca84b06f42573a8fd49ede206f7611e6753349a9f98086fe29ee15ca3f5e
+ languageName: node
+ linkType: hard
+
"language-subtag-registry@npm:^0.3.20":
version: 0.3.23
resolution: "language-subtag-registry@npm:0.3.23"
@@ -12042,7 +12222,7 @@ __metadata:
languageName: node
linkType: hard
-"minimist@npm:^1.1.0, minimist@npm:^1.2.0, minimist@npm:^1.2.6":
+"minimist@npm:^1.1.0, minimist@npm:^1.2.0, minimist@npm:^1.2.6, minimist@npm:^1.2.8":
version: 1.2.8
resolution: "minimist@npm:1.2.8"
checksum: 10c0/19d3fcdca050087b84c2029841a093691a91259a47def2f18222f41e7645a0b7c44ef4b40e88a1e58a40c84d2ef0ee6047c55594d298146d0eb3f6b737c20ce6
@@ -12166,7 +12346,7 @@ __metadata:
languageName: node
linkType: hard
-"mkdirp@npm:^1.0.3, mkdirp@npm:^1.0.4":
+"mkdirp@npm:^1.0.3":
version: 1.0.4
resolution: "mkdirp@npm:1.0.4"
bin:
@@ -12860,6 +13040,13 @@ __metadata:
languageName: node
linkType: hard
+"parse-ms@npm:^4.0.0":
+ version: 4.0.0
+ resolution: "parse-ms@npm:4.0.0"
+ checksum: 10c0/a7900f4f1ebac24cbf5e9708c16fb2fd482517fad353aecd7aefb8c2ba2f85ce017913ccb8925d231770404780df46244ea6fec598b3bde6490882358b4d2d16
+ languageName: node
+ linkType: hard
+
"parse-numeric-range@npm:^1.3.0":
version: 1.3.0
resolution: "parse-numeric-range@npm:1.3.0"
@@ -12914,13 +13101,6 @@ __metadata:
languageName: node
linkType: hard
-"path-browserify@npm:^1.0.1":
- version: 1.0.1
- resolution: "path-browserify@npm:1.0.1"
- checksum: 10c0/8b8c3fd5c66bd340272180590ae4ff139769e9ab79522e2eb82e3d571a89b8117c04147f65ad066dccfb42fcad902e5b7d794b3d35e0fd840491a8ddbedf8c66
- languageName: node
- linkType: hard
-
"path-exists@npm:^3.0.0":
version: 3.0.0
resolution: "path-exists@npm:3.0.0"
@@ -13037,6 +13217,13 @@ __metadata:
languageName: node
linkType: hard
+"picomatch@npm:^4.0.1":
+ version: 4.0.2
+ resolution: "picomatch@npm:4.0.2"
+ checksum: 10c0/7c51f3ad2bb42c776f49ebf964c644958158be30d0a510efd5a395e8d49cb5acfed5b82c0c5b365523ce18e6ab85013c9ebe574f60305892ec3fa8eee8304ccc
+ languageName: node
+ linkType: hard
+
"pify@npm:^2.0.0, pify@npm:^2.2.0, pify@npm:^2.3.0":
version: 2.3.0
resolution: "pify@npm:2.3.0"
@@ -14040,7 +14227,7 @@ __metadata:
languageName: node
linkType: hard
-"pretty-format@npm:^29.7.0":
+"pretty-format@npm:^29.0.0, pretty-format@npm:^29.7.0":
version: 29.7.0
resolution: "pretty-format@npm:29.7.0"
dependencies:
@@ -14058,6 +14245,15 @@ __metadata:
languageName: node
linkType: hard
+"pretty-ms@npm:^9.0.0":
+ version: 9.1.0
+ resolution: "pretty-ms@npm:9.1.0"
+ dependencies:
+ parse-ms: "npm:^4.0.0"
+ checksum: 10c0/fd111aad8800a04dfd654e6016da69bdaa6fc6a4c280f8e727cffd8b5960558e94942f1a94d4aa6e4d179561a0fbb0366a9ebe0ccefbbb0f8ff853b129cdefb9
+ languageName: node
+ linkType: hard
+
"proc-log@npm:^3.0.0":
version: 3.0.0
resolution: "proc-log@npm:3.0.0"
@@ -15740,6 +15936,13 @@ __metadata:
languageName: node
linkType: hard
+"smol-toml@npm:^1.1.4":
+ version: 1.3.0
+ resolution: "smol-toml@npm:1.3.0"
+ checksum: 10c0/442b4d033236ff6dd05bf91d57695fd9070a8221af080a5b2782cb2d9fad8bc31f698c61de5308a351907c1200202ba3ee51d52c5704f5349149e7c374f5fe90
+ languageName: node
+ linkType: hard
+
"sockjs@npm:^0.3.24":
version: 0.3.24
resolution: "sockjs@npm:0.3.24"
@@ -16199,6 +16402,13 @@ __metadata:
languageName: node
linkType: hard
+"strip-json-comments@npm:5.0.1":
+ version: 5.0.1
+ resolution: "strip-json-comments@npm:5.0.1"
+ checksum: 10c0/c9d9d55a0167c57aa688df3aa20628cf6f46f0344038f189eaa9d159978e80b2bfa6da541a40d83f7bde8a3554596259bf6b70578b2172356536a0e3fa5a0982
+ languageName: node
+ linkType: hard
+
"strip-json-comments@npm:^3.1.1":
version: 3.1.1
resolution: "strip-json-comments@npm:3.1.1"
@@ -16283,6 +16493,13 @@ __metadata:
languageName: node
linkType: hard
+"summary@npm:2.1.0":
+ version: 2.1.0
+ resolution: "summary@npm:2.1.0"
+ checksum: 10c0/2743c1f940fb303c496ef1b085e654704a6c16872957b6b76648c34bd32c8f0b7a3c5ec4e0f8bfb71dcb8473e34d172fef31026b85562af589cf220aa901698d
+ languageName: node
+ linkType: hard
+
"superagent@npm:^9.0.2":
version: 9.0.2
resolution: "superagent@npm:9.0.2"
@@ -16979,13 +17196,6 @@ __metadata:
languageName: node
linkType: hard
-"true-myth@npm:^4.1.0":
- version: 4.1.1
- resolution: "true-myth@npm:4.1.1"
- checksum: 10c0/ac83ac82f969129d5f002dcc489b86e28e59ee4149641b341b0176e9407786823c83702fe4b9ae9c0f9593f29a98c931ee175789d33e884f99c47e9c16e80adb
- languageName: node
- linkType: hard
-
"truncate-utf8-bytes@npm:^1.0.0":
version: 1.0.2
resolution: "truncate-utf8-bytes@npm:1.0.2"
@@ -17009,32 +17219,6 @@ __metadata:
languageName: node
linkType: hard
-"ts-morph@npm:^13.0.1":
- version: 13.0.3
- resolution: "ts-morph@npm:13.0.3"
- dependencies:
- "@ts-morph/common": "npm:~0.12.3"
- code-block-writer: "npm:^11.0.0"
- checksum: 10c0/9d7fa1a29be3996b209e19d3e0c80eacd088afa76cd7c12b4b3d8a6a08d282d5f17e01cedf8bd841ad549a5df6580b876ea10597b3273e2bb49b85ffa2044d99
- languageName: node
- linkType: hard
-
-"ts-prune@npm:^0.10.3":
- version: 0.10.3
- resolution: "ts-prune@npm:0.10.3"
- dependencies:
- commander: "npm:^6.2.1"
- cosmiconfig: "npm:^7.0.1"
- json5: "npm:^2.1.3"
- lodash: "npm:^4.17.21"
- true-myth: "npm:^4.1.0"
- ts-morph: "npm:^13.0.1"
- bin:
- ts-prune: lib/index.js
- checksum: 10c0/fecb609e4c1f207a23f8d82946cd654242a818ca28d078cebf7b8408f0b20c2245e1482019745117b7ae0e015b76aaba8d7382cd5429ee9fa48829253981b448
- languageName: node
- linkType: hard
-
"tsconfig-paths@npm:^3.15.0":
version: 3.15.0
resolution: "tsconfig-paths@npm:3.15.0"
@@ -17807,6 +17991,15 @@ __metadata:
languageName: node
linkType: hard
+"wcwidth@npm:^1.0.1":
+ version: 1.0.1
+ resolution: "wcwidth@npm:1.0.1"
+ dependencies:
+ defaults: "npm:^1.0.3"
+ checksum: 10c0/5b61ca583a95e2dd85d7078400190efd452e05751a64accb8c06ce4db65d7e0b0cde9917d705e826a2e05cc2548f61efde115ffa374c3e436d04be45c889e5b4
+ languageName: node
+ linkType: hard
+
"web-app@workspace:.":
version: 0.0.0-use.local
resolution: "web-app@workspace:."
@@ -17814,6 +18007,7 @@ __metadata:
"@babel/plugin-proposal-private-property-in-object": "npm:^7.21.11"
"@playwright/test": "npm:^1.45.2"
"@reduxjs/toolkit": "npm:^1.9.7"
+ "@types/jest": "npm:^29.5.12"
"@types/lodash": "npm:^4.17.7"
"@types/luxon": "npm:^3.4.2"
"@types/node": "npm:20.14.11"
@@ -17828,8 +18022,11 @@ __metadata:
"@types/superagent": "npm:^4.1.24"
"@types/webpack-env": "npm:^1.18.5"
babel-plugin-istanbul: "npm:^6.1.1"
+ clsx: "npm:^2.1.1"
customize-cra: "npm:^1.0.0"
+ http-status-codes: "npm:^2.3.0"
kbar: "npm:^0.1.0-beta.45"
+ knip: "npm:^5.27.2"
local-storage-fallback: "npm:^4.1.2"
lodash: "npm:^4.17.21"
luxon: "npm:^3.4.4"
@@ -17858,7 +18055,6 @@ __metadata:
superagent: "npm:^9.0.2"
testcafe: "npm:3.6.2"
tinycolor2: "npm:^1.6.0"
- ts-prune: "npm:^0.10.3"
typescript: "npm:^5.5.3"
languageName: unknown
linkType: soft
@@ -18676,6 +18872,22 @@ __metadata:
languageName: node
linkType: hard
+"zod-validation-error@npm:^3.0.3":
+ version: 3.3.1
+ resolution: "zod-validation-error@npm:3.3.1"
+ peerDependencies:
+ zod: ^3.18.0
+ checksum: 10c0/53869a8478f42cd38f51e159431fe7af9e0b456e8078c6d9d906adb212753788defa9c8bd7374e9ecd4a688b6736fcfa091aebac65054328b8cfdecce9395d8e
+ languageName: node
+ linkType: hard
+
+"zod@npm:^3.22.4":
+ version: 3.23.8
+ resolution: "zod@npm:3.23.8"
+ checksum: 10c0/8f14c87d6b1b53c944c25ce7a28616896319d95bc46a9660fe441adc0ed0a81253b02b5abdaeffedbeb23bdd25a0bf1c29d2c12dd919aef6447652dd295e3e69
+ languageName: node
+ linkType: hard
+
"zwitch@npm:^2.0.0, zwitch@npm:^2.0.4":
version: 2.0.4
resolution: "zwitch@npm:2.0.4"