Use Knip for detecting dead code (#3426)

This commit is contained in:
Victor Bayas
2024-08-21 11:35:02 -05:00
committed by GitHub
parent 0b07cb3885
commit 4c432cd356
46 changed files with 449 additions and 370 deletions

26
web-app/knip.config.ts Normal file
View File

@@ -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;

View File

@@ -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": {

View File

@@ -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;

View File

@@ -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,

View File

@@ -16,7 +16,7 @@
import { ApplicationLogoProps } from "mds";
export const MinIOPlan =
const MinIOPlan =
(
document.head.querySelector(
"[name~=minio-license][content]",

View File

@@ -15,7 +15,6 @@
// along with this program. If not, see <http://www.gnu.org/licenses/>.
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(
</Provider>
</React.StrictMode>,
);
// 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();

View File

@@ -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) =>

View File

@@ -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: {

View File

@@ -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";
};

View File

@@ -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;

View File

@@ -42,7 +42,7 @@ interface IExtToIcon {
extensions: string[];
}
export const extensionToIcon: IExtToIcon[] = [
const extensionToIcon: IExtToIcon[] = [
{
icon: <FileVideoIcon />,
extensions: ["mp4", "mov", "avi", "mpeg", "mpg"],

View File

@@ -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",

View File

@@ -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[];
}

View File

@@ -22,7 +22,7 @@ export interface NewServiceAccount {
url?: string;
}
export interface ConsoleSA {
interface ConsoleSA {
accessKey: string;
secretKey: string;
url: string;

View File

@@ -17,7 +17,7 @@
import { SelectorTypes } from "../../../common/types";
import { EnvOverride } from "../../../api/consoleApi";
export type KVFieldType =
type KVFieldType =
| "string"
| "password"
| "number"

View File

@@ -108,7 +108,7 @@ const StatusCountBase = styled.div(({ theme }) => ({
},
}));
export const StatusCountCard = ({
const StatusCountCard = ({
onlineCount = 0,
offlineCount = 0,
icon = null,

View File

@@ -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";
}

View File

@@ -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;

View File

@@ -36,7 +36,7 @@ export interface IPieChartConfiguration {
strokeWidth?: number;
}
export interface ISinglePieConfiguration {
interface ISinglePieConfiguration {
colorList: string[];
startAngle?: number;
endAngle?: number;

View File

@@ -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: {

View File

@@ -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) {

View File

@@ -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: {

View File

@@ -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[],
) => {

View File

@@ -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(",");
};

View File

@@ -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: {

View File

@@ -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<string, status[]>[];
@@ -142,21 +142,21 @@ export interface services {
notifications: Map<string, Map<string, status[]>[]>;
}
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;

View File

@@ -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;

View File

@@ -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");
};

View File

@@ -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: {

View File

@@ -14,17 +14,17 @@
// You should have received a copy of the GNU Affero General Public License
// along with this program. If not, see <http://www.gnu.org/licenses/>.
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;
}

View File

@@ -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,

View File

@@ -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;

View File

@@ -24,7 +24,7 @@ export interface SpeedTestResponse {
GETStats?: STStats;
}
export interface STStats {
interface STStats {
throughputPerSec: number;
objectsPerSec: number;
servers: STServer[] | null;

View File

@@ -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,

View File

@@ -91,7 +91,7 @@ export const fetchLicenseInfo = createAsyncThunk(
},
);
export interface ClassRegisterArgs {
interface ClassRegisterArgs {
token: string;
account_id: string;
}

View File

@@ -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: {

View File

@@ -14,7 +14,7 @@
// You should have received a copy of the GNU Affero General Public License
// along with this program. If not, see <http://www.gnu.org/licenses/>.
export interface CallStats {
interface CallStats {
timeToFirstByte: string;
rx: number;
tx: number;

View File

@@ -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;

View File

@@ -31,7 +31,7 @@ export interface Bucket {
name: string;
}
export interface Details {
interface Details {
tags: object;
}

View File

@@ -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: {

View File

@@ -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: {

View File

@@ -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: {

View File

@@ -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();
});
}
}

View File

@@ -69,8 +69,6 @@ if (process.env.NODE_ENV !== "production" && module.hot) {
export type AppState = ReturnType<typeof rootReducer>;
export type AppDispatch = typeof store.dispatch;
export type RootState = ReturnType<typeof store.getState>;
type RootState = ReturnType<typeof store.getState>;
export const useAppDispatch = () => useDispatch<AppDispatch>();
export const useAppSelector: TypedUseSelectorHook<RootState> = useSelector;
export default store;

View File

@@ -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,

View File

@@ -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"