refactor(frontend): widgets/server-metric内の型エラーを除去 (#12937)

This commit is contained in:
zyoshoka 2024-01-07 23:56:46 +09:00 committed by GitHub
parent fd519f5def
commit 0e536bdd86
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
13 changed files with 103 additions and 30 deletions

View file

@ -37,7 +37,7 @@ export class ServerStatsService implements OnApplicationShutdown {
const log = [] as any[]; const log = [] as any[];
ev.on('requestServerStatsLog', x => { ev.on('requestServerStatsLog', x => {
ev.emit(`serverStatsLog:${x.id}`, log.slice(0, x.length ?? 50)); ev.emit(`serverStatsLog:${x.id}`, log.slice(0, x.length));
}); });
const tick = async () => { const tick = async () => {

View file

@ -80,13 +80,13 @@ import * as Misskey from 'misskey-js';
import { v4 as uuid } from 'uuid'; import { v4 as uuid } from 'uuid';
const props = defineProps<{ const props = defineProps<{
connection: any, connection: Misskey.ChannelConnection<Misskey.Channels['serverStats']>,
meta: Misskey.entities.ServerInfoResponse meta: Misskey.entities.ServerInfoResponse
}>(); }>();
const viewBoxX = ref<number>(50); const viewBoxX = ref<number>(50);
const viewBoxY = ref<number>(30); const viewBoxY = ref<number>(30);
const stats = ref<any[]>([]); const stats = ref<Misskey.entities.ServerStats[]>([]);
const cpuGradientId = uuid(); const cpuGradientId = uuid();
const cpuMaskId = uuid(); const cpuMaskId = uuid();
const memGradientId = uuid(); const memGradientId = uuid();
@ -107,6 +107,7 @@ onMounted(() => {
props.connection.on('statsLog', onStatsLog); props.connection.on('statsLog', onStatsLog);
props.connection.send('requestLog', { props.connection.send('requestLog', {
id: Math.random().toString().substring(2, 10), id: Math.random().toString().substring(2, 10),
length: 50,
}); });
}); });
@ -115,7 +116,7 @@ onBeforeUnmount(() => {
props.connection.off('statsLog', onStatsLog); props.connection.off('statsLog', onStatsLog);
}); });
function onStats(connStats) { function onStats(connStats: Misskey.entities.ServerStats) {
stats.value.push(connStats); stats.value.push(connStats);
if (stats.value.length > 50) stats.value.shift(); if (stats.value.length > 50) stats.value.shift();
@ -136,8 +137,8 @@ function onStats(connStats) {
memP.value = (connStats.mem.active / props.meta.mem.total * 100).toFixed(0); memP.value = (connStats.mem.active / props.meta.mem.total * 100).toFixed(0);
} }
function onStatsLog(statsLog) { function onStatsLog(statsLog: Misskey.entities.ServerStatsLog) {
for (const revStats of [...statsLog].reverse()) { for (const revStats of statsLog.reverse()) {
onStats(revStats); onStats(revStats);
} }
} }

View file

@ -20,13 +20,13 @@ import * as Misskey from 'misskey-js';
import XPie from './pie.vue'; import XPie from './pie.vue';
const props = defineProps<{ const props = defineProps<{
connection: any, connection: Misskey.ChannelConnection<Misskey.Channels['serverStats']>,
meta: Misskey.entities.ServerInfoResponse meta: Misskey.entities.ServerInfoResponse
}>(); }>();
const usage = ref<number>(0); const usage = ref<number>(0);
function onStats(stats) { function onStats(stats: Misskey.entities.ServerStats) {
usage.value = stats.cpu; usage.value = stats.cpu;
} }

View file

@ -22,7 +22,7 @@ SPDX-License-Identifier: AGPL-3.0-only
<script lang="ts" setup> <script lang="ts" setup>
import { onUnmounted, ref } from 'vue'; import { onUnmounted, ref } from 'vue';
import * as Misskey from 'misskey-js'; import * as Misskey from 'misskey-js';
import { useWidgetPropsManager, Widget, WidgetComponentExpose } from '../widget.js'; import { useWidgetPropsManager, WidgetComponentEmits, WidgetComponentExpose, WidgetComponentProps } from '../widget.js';
import XCpuMemory from './cpu-mem.vue'; import XCpuMemory from './cpu-mem.vue';
import XNet from './net.vue'; import XNet from './net.vue';
import XCpu from './cpu.vue'; import XCpu from './cpu.vue';
@ -54,11 +54,8 @@ const widgetPropsDef = {
type WidgetProps = GetFormResultType<typeof widgetPropsDef>; type WidgetProps = GetFormResultType<typeof widgetPropsDef>;
// vueimporttype const props = defineProps<WidgetComponentProps<WidgetProps>>();
//const props = defineProps<WidgetComponentProps<WidgetProps>>(); const emit = defineEmits<WidgetComponentEmits<WidgetProps>>();
//const emit = defineEmits<WidgetComponentEmits<WidgetProps>>();
const props = defineProps<{ widget?: Widget<WidgetProps>; }>();
const emit = defineEmits<{ (ev: 'updateProps', props: WidgetProps); }>();
const { widgetProps, configure, save } = useWidgetPropsManager(name, const { widgetProps, configure, save } = useWidgetPropsManager(name,
widgetPropsDef, widgetPropsDef,

View file

@ -22,7 +22,7 @@ import XPie from './pie.vue';
import bytes from '@/filters/bytes.js'; import bytes from '@/filters/bytes.js';
const props = defineProps<{ const props = defineProps<{
connection: any, connection: Misskey.ChannelConnection<Misskey.Channels['serverStats']>,
meta: Misskey.entities.ServerInfoResponse meta: Misskey.entities.ServerInfoResponse
}>(); }>();
@ -31,7 +31,7 @@ const total = ref<number>(0);
const used = ref<number>(0); const used = ref<number>(0);
const free = ref<number>(0); const free = ref<number>(0);
function onStats(stats) { function onStats(stats: Misskey.entities.ServerStats) {
usage.value = stats.mem.active / props.meta.mem.total; usage.value = stats.mem.active / props.meta.mem.total;
total.value = props.meta.mem.total; total.value = props.meta.mem.total;
used.value = stats.mem.active; used.value = stats.mem.active;

View file

@ -54,13 +54,13 @@ import * as Misskey from 'misskey-js';
import bytes from '@/filters/bytes.js'; import bytes from '@/filters/bytes.js';
const props = defineProps<{ const props = defineProps<{
connection: any, connection: Misskey.ChannelConnection<Misskey.Channels['serverStats']>,
meta: Misskey.entities.ServerInfoResponse meta: Misskey.entities.ServerInfoResponse
}>(); }>();
const viewBoxX = ref<number>(50); const viewBoxX = ref<number>(50);
const viewBoxY = ref<number>(30); const viewBoxY = ref<number>(30);
const stats = ref<any[]>([]); const stats = ref<Misskey.entities.ServerStats[]>([]);
const inPolylinePoints = ref<string>(''); const inPolylinePoints = ref<string>('');
const outPolylinePoints = ref<string>(''); const outPolylinePoints = ref<string>('');
const inPolygonPoints = ref<string>(''); const inPolygonPoints = ref<string>('');
@ -77,6 +77,7 @@ onMounted(() => {
props.connection.on('statsLog', onStatsLog); props.connection.on('statsLog', onStatsLog);
props.connection.send('requestLog', { props.connection.send('requestLog', {
id: Math.random().toString().substring(2, 10), id: Math.random().toString().substring(2, 10),
length: 50,
}); });
}); });
@ -85,7 +86,7 @@ onBeforeUnmount(() => {
props.connection.off('statsLog', onStatsLog); props.connection.off('statsLog', onStatsLog);
}); });
function onStats(connStats) { function onStats(connStats: Misskey.entities.ServerStats) {
stats.value.push(connStats); stats.value.push(connStats);
if (stats.value.length > 50) stats.value.shift(); if (stats.value.length > 50) stats.value.shift();
@ -109,8 +110,8 @@ function onStats(connStats) {
outRecent.value = connStats.net.tx; outRecent.value = connStats.net.tx;
} }
function onStatsLog(statsLog) { function onStatsLog(statsLog: Misskey.entities.ServerStatsLog) {
for (const revStats of [...statsLog].reverse()) { for (const revStats of statsLog.reverse()) {
onStats(revStats); onStats(revStats);
} }
} }

View file

@ -2554,7 +2554,7 @@ type QueueStats = {
}; };
// @public (undocumented) // @public (undocumented)
type QueueStatsLog = string[]; type QueueStatsLog = QueueStats[];
// @public (undocumented) // @public (undocumented)
type RenoteMuteCreateRequest = operations['renote-mute/create']['requestBody']['content']['application/json']; type RenoteMuteCreateRequest = operations['renote-mute/create']['requestBody']['content']['application/json'];
@ -2628,7 +2628,7 @@ type ServerStats = {
}; };
// @public (undocumented) // @public (undocumented)
type ServerStatsLog = string[]; type ServerStatsLog = ServerStats[];
// @public (undocumented) // @public (undocumented)
type Signin = components['schemas']['Signin']; type Signin = components['schemas']['Signin'];

View file

@ -1,6 +1,6 @@
/* /*
* version: 2023.12.2 * version: 2023.12.2
* generatedAt: 2024-01-04T18:10:15.096Z * generatedAt: 2024-01-07T09:49:34.543Z
*/ */
import type { SwitchCaseResponseType } from '../api.js'; import type { SwitchCaseResponseType } from '../api.js';
@ -2249,6 +2249,18 @@ declare module '../api.js' {
credential?: string | null, credential?: string | null,
): Promise<SwitchCaseResponseType<E, P>>; ): Promise<SwitchCaseResponseType<E, P>>;
/**
* No description provided.
*
* **Internal Endpoint**: This endpoint is an API for the misskey mainframe and is not intended for use by third parties.
* **Credential required**: *Yes*
*/
request<E extends 'i/export-clips', P extends Endpoints[E]['req']>(
endpoint: E,
params: P,
credential?: string | null,
): Promise<SwitchCaseResponseType<E, P>>;
/** /**
* No description provided. * No description provided.
* *

View file

@ -1,6 +1,6 @@
/* /*
* version: 2023.12.2 * version: 2023.12.2
* generatedAt: 2024-01-04T18:10:15.094Z * generatedAt: 2024-01-07T09:49:34.533Z
*/ */
import type { import type {
@ -745,6 +745,7 @@ export type Endpoints = {
'i/export-following': { req: IExportFollowingRequest; res: EmptyResponse }; 'i/export-following': { req: IExportFollowingRequest; res: EmptyResponse };
'i/export-mute': { req: EmptyRequest; res: EmptyResponse }; 'i/export-mute': { req: EmptyRequest; res: EmptyResponse };
'i/export-notes': { req: EmptyRequest; res: EmptyResponse }; 'i/export-notes': { req: EmptyRequest; res: EmptyResponse };
'i/export-clips': { req: EmptyRequest; res: EmptyResponse };
'i/export-favorites': { req: EmptyRequest; res: EmptyResponse }; 'i/export-favorites': { req: EmptyRequest; res: EmptyResponse };
'i/export-user-lists': { req: EmptyRequest; res: EmptyResponse }; 'i/export-user-lists': { req: EmptyRequest; res: EmptyResponse };
'i/export-antennas': { req: EmptyRequest; res: EmptyResponse }; 'i/export-antennas': { req: EmptyRequest; res: EmptyResponse };

View file

@ -1,6 +1,6 @@
/* /*
* version: 2023.12.2 * version: 2023.12.2
* generatedAt: 2024-01-04T18:10:15.093Z * generatedAt: 2024-01-07T09:49:34.526Z
*/ */
import { operations } from './types.js'; import { operations } from './types.js';

View file

@ -1,6 +1,6 @@
/* /*
* version: 2023.12.2 * version: 2023.12.2
* generatedAt: 2024-01-04T18:10:15.091Z * generatedAt: 2024-01-07T09:49:34.518Z
*/ */
import { components } from './types.js'; import { components } from './types.js';

View file

@ -3,7 +3,7 @@
/* /*
* version: 2023.12.2 * version: 2023.12.2
* generatedAt: 2024-01-04T18:10:15.023Z * generatedAt: 2024-01-07T09:49:34.268Z
*/ */
/** /**
@ -1966,6 +1966,16 @@ export type paths = {
*/ */
post: operations['i/export-notes']; post: operations['i/export-notes'];
}; };
'/i/export-clips': {
/**
* i/export-clips
* @description No description provided.
*
* **Internal Endpoint**: This endpoint is an API for the misskey mainframe and is not intended for use by third parties.
* **Credential required**: *Yes*
*/
post: operations['i/export-clips'];
};
'/i/export-favorites': { '/i/export-favorites': {
/** /**
* i/export-favorites * i/export-favorites
@ -16243,6 +16253,57 @@ export type operations = {
}; };
}; };
}; };
/**
* i/export-clips
* @description No description provided.
*
* **Internal Endpoint**: This endpoint is an API for the misskey mainframe and is not intended for use by third parties.
* **Credential required**: *Yes*
*/
'i/export-clips': {
responses: {
/** @description OK (without any results) */
204: {
content: never;
};
/** @description Client error */
400: {
content: {
'application/json': components['schemas']['Error'];
};
};
/** @description Authentication error */
401: {
content: {
'application/json': components['schemas']['Error'];
};
};
/** @description Forbidden error */
403: {
content: {
'application/json': components['schemas']['Error'];
};
};
/** @description I'm Ai */
418: {
content: {
'application/json': components['schemas']['Error'];
};
};
/** @description To many requests */
429: {
content: {
'application/json': components['schemas']['Error'];
};
};
/** @description Internal server error */
500: {
content: {
'application/json': components['schemas']['Error'];
};
};
};
};
/** /**
* i/export-favorites * i/export-favorites
* @description No description provided. * @description No description provided.

View file

@ -149,7 +149,7 @@ export type ServerStats = {
} }
}; };
export type ServerStatsLog = string[]; export type ServerStatsLog = ServerStats[];
export type QueueStats = { export type QueueStats = {
deliver: { deliver: {
@ -166,7 +166,7 @@ export type QueueStats = {
}; };
}; };
export type QueueStatsLog = string[]; export type QueueStatsLog = QueueStats[];
export type EmojiAdded = { export type EmojiAdded = {
emoji: EmojiDetailed emoji: EmojiDetailed