update deps (#15311)
* wip * bump misskey-dev/eslint-plugin * lint fixes (backend) * lint fixes (frontend) * lint fixes (frontend-embed) * rollback nsfwjs to 4.2.0 ref: infinitered/nsfwjs#904 * rollback openapi-typescript to v6 v7でOpenAPIのバリデーションが入るようになった関係でスコープ外での変更が避けられないため一時的に戻した * lint fixes (misskey-js) * temporarily disable errored lint rule (frontend-shared) * fix lint * temporarily ignore errored file for lint (frontend-shared) * rollback simplewebauthn/server to 12.0.0 v13 contains breaking changes that require some decision making * lint fixes (frontend-shared) * build misskey-js with types * fix(backend): migrate simplewebauthn/server to v12 * fix(misskey-js/autogen): ignore indent rules to generate consistent output * attempt to fix test changes due to capricorn86/happy-dom#1617 (XMLSerializer now produces valid XML) * attempt to fix test changes due to capricorn86/happy-dom#1617 (XMLSerializer now produces valid XML) * fix test * fix test * fix test * Apply suggestions from code review Co-authored-by: anatawa12 <anatawa12@icloud.com> * bump summaly to v5.2.0 * update tabler-icons to v3.30.0-based --------- Co-authored-by: かっこかり <67428053+kakkokari-gtyih@users.noreply.github.com> Co-authored-by: anatawa12 <anatawa12@icloud.com>
This commit is contained in:
@@ -47,6 +47,8 @@ export default [
|
||||
'@typescript-eslint/no-empty-interface': ['error', {
|
||||
allowSingleExtends: true,
|
||||
}],
|
||||
// defineExposeが誤検知されてしまう
|
||||
'@typescript-eslint/no-unused-expressions': 'off',
|
||||
'import/consistent-type-specifier-style': ['error', 'prefer-top-level'],
|
||||
// window の禁止理由: グローバルスコープと衝突し、予期せぬ結果を招くため
|
||||
// e の禁止理由: error や event など、複数のキーワードの頭文字であり分かりにくいため
|
||||
|
@@ -22,23 +22,23 @@
|
||||
"@misskey-dev/browser-image-resizer": "2024.1.0",
|
||||
"@rollup/plugin-json": "6.1.0",
|
||||
"@rollup/plugin-replace": "5.0.7",
|
||||
"@rollup/pluginutils": "5.1.3",
|
||||
"@rollup/pluginutils": "5.1.4",
|
||||
"@syuilo/aiscript": "0.19.0",
|
||||
"@tabler/icons-webfont": "https://github.com/misskey-dev/tabler-icons/archive/refs/tags/3.29.0-mi.1913+5921534bc.tar.gz",
|
||||
"@tabler/icons-webfont": "https://github.com/misskey-dev/tabler-icons/archive/refs/tags/3.30.0-mi.1932+ab127beee.tar.gz",
|
||||
"@twemoji/parser": "15.1.1",
|
||||
"@vitejs/plugin-vue": "5.2.0",
|
||||
"@vue/compiler-sfc": "3.5.12",
|
||||
"@vitejs/plugin-vue": "5.2.1",
|
||||
"@vue/compiler-sfc": "3.5.13",
|
||||
"aiscript-vscode": "github:aiscript-dev/aiscript-vscode#v0.1.15",
|
||||
"astring": "1.9.0",
|
||||
"broadcast-channel": "7.0.0",
|
||||
"buraha": "0.0.1",
|
||||
"canvas-confetti": "1.9.3",
|
||||
"chart.js": "4.4.6",
|
||||
"chart.js": "4.4.7",
|
||||
"chartjs-adapter-date-fns": "3.0.0",
|
||||
"chartjs-chart-matrix": "2.0.1",
|
||||
"chartjs-plugin-gradient": "0.6.1",
|
||||
"chartjs-plugin-zoom": "2.0.1",
|
||||
"chromatic": "11.18.1",
|
||||
"chartjs-plugin-zoom": "2.2.0",
|
||||
"chromatic": "11.25.0",
|
||||
"compare-versions": "6.1.1",
|
||||
"cropperjs": "2.0.0-rc.2",
|
||||
"date-fns": "2.30.0",
|
||||
@@ -56,50 +56,50 @@
|
||||
"misskey-reversi": "workspace:*",
|
||||
"photoswipe": "5.4.4",
|
||||
"punycode.js": "2.3.1",
|
||||
"rollup": "4.26.0",
|
||||
"sanitize-html": "2.13.1",
|
||||
"sass": "1.79.3",
|
||||
"shiki": "1.22.2",
|
||||
"rollup": "4.31.0",
|
||||
"sanitize-html": "2.14.0",
|
||||
"sass": "1.83.4",
|
||||
"shiki": "1.27.2",
|
||||
"strict-event-emitter-types": "2.0.0",
|
||||
"textarea-caret": "3.1.0",
|
||||
"three": "0.169.0",
|
||||
"three": "0.172.0",
|
||||
"throttle-debounce": "5.0.2",
|
||||
"tinycolor2": "1.6.0",
|
||||
"tsc-alias": "1.8.10",
|
||||
"tsconfig-paths": "4.2.0",
|
||||
"typescript": "5.6.3",
|
||||
"uuid": "10.0.0",
|
||||
"typescript": "5.7.3",
|
||||
"uuid": "11.0.5",
|
||||
"v-code-diff": "1.13.1",
|
||||
"vite": "5.4.11",
|
||||
"vue": "3.5.12",
|
||||
"vite": "6.0.7",
|
||||
"vue": "3.5.13",
|
||||
"vuedraggable": "next"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@misskey-dev/summaly": "5.1.0",
|
||||
"@storybook/addon-actions": "8.4.4",
|
||||
"@storybook/addon-essentials": "8.4.4",
|
||||
"@storybook/addon-interactions": "8.4.4",
|
||||
"@storybook/addon-links": "8.4.4",
|
||||
"@storybook/addon-mdx-gfm": "8.4.4",
|
||||
"@storybook/addon-storysource": "8.4.4",
|
||||
"@storybook/blocks": "8.4.4",
|
||||
"@storybook/components": "8.4.4",
|
||||
"@storybook/core-events": "8.4.4",
|
||||
"@storybook/manager-api": "8.4.4",
|
||||
"@storybook/preview-api": "8.4.4",
|
||||
"@storybook/react": "8.4.4",
|
||||
"@storybook/react-vite": "8.4.4",
|
||||
"@storybook/test": "8.4.4",
|
||||
"@storybook/theming": "8.4.4",
|
||||
"@storybook/types": "8.4.4",
|
||||
"@storybook/vue3": "8.4.4",
|
||||
"@storybook/vue3-vite": "8.4.4",
|
||||
"@misskey-dev/summaly": "5.2.0",
|
||||
"@storybook/addon-actions": "8.5.0",
|
||||
"@storybook/addon-essentials": "8.5.0",
|
||||
"@storybook/addon-interactions": "8.5.0",
|
||||
"@storybook/addon-links": "8.5.0",
|
||||
"@storybook/addon-mdx-gfm": "8.5.0",
|
||||
"@storybook/addon-storysource": "8.5.0",
|
||||
"@storybook/blocks": "8.5.0",
|
||||
"@storybook/components": "8.5.0",
|
||||
"@storybook/core-events": "8.5.0",
|
||||
"@storybook/manager-api": "8.5.0",
|
||||
"@storybook/preview-api": "8.5.0",
|
||||
"@storybook/react": "8.5.0",
|
||||
"@storybook/react-vite": "8.5.0",
|
||||
"@storybook/test": "8.5.0",
|
||||
"@storybook/theming": "8.5.0",
|
||||
"@storybook/types": "8.5.0",
|
||||
"@storybook/vue3": "8.5.0",
|
||||
"@storybook/vue3-vite": "8.5.0",
|
||||
"@testing-library/vue": "8.1.0",
|
||||
"@types/canvas-confetti": "^1.6.4",
|
||||
"@types/canvas-confetti": "1.6.4",
|
||||
"@types/estree": "1.0.6",
|
||||
"@types/matter-js": "0.19.7",
|
||||
"@types/micromatch": "4.0.9",
|
||||
"@types/node": "22.9.0",
|
||||
"@types/node": "22.10.7",
|
||||
"@types/punycode.js": "npm:@types/punycode@2.1.4",
|
||||
"@types/sanitize-html": "2.13.0",
|
||||
"@types/seedrandom": "3.0.8",
|
||||
@@ -107,34 +107,34 @@
|
||||
"@types/tinycolor2": "1.4.6",
|
||||
"@types/uuid": "10.0.0",
|
||||
"@types/ws": "8.5.13",
|
||||
"@typescript-eslint/eslint-plugin": "7.17.0",
|
||||
"@typescript-eslint/parser": "7.17.0",
|
||||
"@typescript-eslint/eslint-plugin": "8.20.0",
|
||||
"@typescript-eslint/parser": "8.20.0",
|
||||
"@vitest/coverage-v8": "1.6.0",
|
||||
"@vue/runtime-core": "3.5.12",
|
||||
"@vue/runtime-core": "3.5.13",
|
||||
"acorn": "8.14.0",
|
||||
"cross-env": "7.0.3",
|
||||
"cypress": "13.15.2",
|
||||
"cypress": "14.0.0",
|
||||
"eslint-plugin-import": "2.31.0",
|
||||
"eslint-plugin-vue": "9.31.0",
|
||||
"fast-glob": "3.3.2",
|
||||
"happy-dom": "10.0.3",
|
||||
"eslint-plugin-vue": "9.32.0",
|
||||
"fast-glob": "3.3.3",
|
||||
"happy-dom": "16.6.0",
|
||||
"intersection-observer": "0.12.2",
|
||||
"micromatch": "4.0.8",
|
||||
"msw": "2.6.4",
|
||||
"msw": "2.7.0",
|
||||
"msw-storybook-addon": "2.0.4",
|
||||
"nodemon": "3.1.7",
|
||||
"prettier": "3.3.3",
|
||||
"nodemon": "3.1.9",
|
||||
"prettier": "3.4.2",
|
||||
"react": "18.3.1",
|
||||
"react-dom": "18.3.1",
|
||||
"seedrandom": "3.0.5",
|
||||
"start-server-and-test": "2.0.8",
|
||||
"storybook": "8.4.4",
|
||||
"start-server-and-test": "2.0.10",
|
||||
"storybook": "8.5.0",
|
||||
"storybook-addon-misskey-theme": "github:misskey-dev/storybook-addon-misskey-theme",
|
||||
"vite-plugin-turbosnap": "1.0.3",
|
||||
"vitest": "1.6.0",
|
||||
"vitest-fetch-mock": "0.2.2",
|
||||
"vue-component-type-helpers": "2.1.10",
|
||||
"vue-component-type-helpers": "2.2.0",
|
||||
"vue-eslint-parser": "9.4.3",
|
||||
"vue-tsc": "2.1.10"
|
||||
"vue-tsc": "2.2.0"
|
||||
}
|
||||
}
|
||||
|
@@ -50,6 +50,8 @@ type CaptchaContainer = {
|
||||
};
|
||||
|
||||
declare global {
|
||||
// Window を拡張してるため、空ではない
|
||||
// eslint-disable-next-line @typescript-eslint/no-empty-object-type
|
||||
interface Window extends CaptchaContainer { }
|
||||
}
|
||||
|
||||
|
@@ -142,6 +142,7 @@ const okButtonDisabledReason = computed<null | 'charactersExceeded' | 'character
|
||||
// overload function を使いたいので lint エラーを無視する
|
||||
function done(canceled: true): void;
|
||||
function done(canceled: false, result: Result): void; // eslint-disable-line no-redeclare
|
||||
|
||||
function done(canceled: boolean, result?: Result): void { // eslint-disable-line no-redeclare
|
||||
emit('done', { canceled, result } as { canceled: true } | { canceled: false, result: Result });
|
||||
modal.value?.close();
|
||||
|
@@ -39,7 +39,7 @@ import MkModalWindow from '@/components/MkModalWindow.vue';
|
||||
import { notificationTypes } from '@@/js/const.js';
|
||||
import { i18n } from '@/i18n.js';
|
||||
|
||||
type TypesMap = Record<typeof notificationTypes[number], Ref<boolean>>
|
||||
type TypesMap = Record<typeof notificationTypes[number], Ref<boolean>>;
|
||||
|
||||
const emit = defineEmits<{
|
||||
(ev: 'done', v: { excludeTypes: string[] }): void,
|
||||
|
@@ -3,9 +3,9 @@
|
||||
* SPDX-License-Identifier: AGPL-3.0-only
|
||||
*/
|
||||
|
||||
export type SortOrderDirection = '+' | '-'
|
||||
export type SortOrderDirection = '+' | '-';
|
||||
|
||||
export type SortOrder<T extends string> = {
|
||||
key: T;
|
||||
direction: SortOrderDirection;
|
||||
}
|
||||
};
|
||||
|
@@ -114,7 +114,7 @@ type EventType = {
|
||||
userCreated: boolean;
|
||||
inactiveModeratorsWarning: boolean;
|
||||
inactiveModeratorsInvitationOnlyChanged: boolean;
|
||||
}
|
||||
};
|
||||
|
||||
const emit = defineEmits<{
|
||||
(ev: 'submitted', result: MkSystemWebhookResult): void;
|
||||
|
@@ -57,15 +57,15 @@ provide('tl_withSensitive', computed(() => props.withSensitive));
|
||||
provide('inChannel', computed(() => props.src === 'channel'));
|
||||
|
||||
type TimelineQueryType = {
|
||||
antennaId?: string,
|
||||
withRenotes?: boolean,
|
||||
withReplies?: boolean,
|
||||
withFiles?: boolean,
|
||||
visibility?: string,
|
||||
listId?: string,
|
||||
channelId?: string,
|
||||
roleId?: string
|
||||
}
|
||||
antennaId?: string,
|
||||
withRenotes?: boolean,
|
||||
withReplies?: boolean,
|
||||
withFiles?: boolean,
|
||||
visibility?: string,
|
||||
listId?: string,
|
||||
channelId?: string,
|
||||
roleId?: string
|
||||
};
|
||||
|
||||
const prComponent = shallowRef<InstanceType<typeof MkPullToRefresh>>();
|
||||
const tlComponent = shallowRef<InstanceType<typeof MkNotes>>();
|
||||
|
@@ -62,7 +62,7 @@ import MkTextarea from '@/components/MkTextarea.vue';
|
||||
import MkSwitch from '@/components/MkSwitch.vue';
|
||||
import MkRadios from '@/components/MkRadios.vue';
|
||||
|
||||
type AdminAnnouncementType = Misskey.entities.AdminAnnouncementsCreateRequest & { id: string; }
|
||||
type AdminAnnouncementType = Misskey.entities.AdminAnnouncementsCreateRequest & { id: string; };
|
||||
|
||||
const props = defineProps<{
|
||||
user: Misskey.entities.User,
|
||||
|
@@ -79,7 +79,7 @@ type RowHolder = {
|
||||
row: GridRow,
|
||||
cells: GridCell[],
|
||||
origin: DataSource,
|
||||
}
|
||||
};
|
||||
|
||||
const emit = defineEmits<{
|
||||
(ev: 'event', event: GridEvent, context: GridContext): void;
|
||||
|
@@ -18,25 +18,25 @@ export type ValidatorParams = {
|
||||
export type ValidatorResult = {
|
||||
valid: boolean;
|
||||
message?: string;
|
||||
}
|
||||
};
|
||||
|
||||
export type GridCellValidator = {
|
||||
name?: string;
|
||||
ignoreViolation?: boolean;
|
||||
validate: (params: ValidatorParams) => ValidatorResult;
|
||||
}
|
||||
};
|
||||
|
||||
export type ValidateViolation = {
|
||||
valid: boolean;
|
||||
params: ValidatorParams;
|
||||
violations: ValidateViolationItem[];
|
||||
}
|
||||
};
|
||||
|
||||
export type ValidateViolationItem = {
|
||||
valid: boolean;
|
||||
validator: GridCellValidator;
|
||||
result: ValidatorResult;
|
||||
}
|
||||
};
|
||||
|
||||
export function cellValidation(allCells: GridCell[], cell: GridCell, newValue: CellValue): ValidateViolation {
|
||||
const { column, row } = cell;
|
||||
|
@@ -15,7 +15,7 @@ export type CellValue = string | boolean | number | undefined | null | Array<unk
|
||||
export type CellAddress = {
|
||||
row: number;
|
||||
col: number;
|
||||
}
|
||||
};
|
||||
|
||||
export const CELL_ADDRESS_NONE: CellAddress = {
|
||||
row: -1,
|
||||
@@ -32,13 +32,13 @@ export type GridCell = {
|
||||
contentSize: Size;
|
||||
setting: GridCellSetting;
|
||||
violation: ValidateViolation;
|
||||
}
|
||||
};
|
||||
|
||||
export type GridCellContextMenuFactory = (col: GridColumn, row: GridRow, value: CellValue, context: GridContext) => MenuItem[];
|
||||
|
||||
export type GridCellSetting = {
|
||||
contextMenuFactory?: GridCellContextMenuFactory;
|
||||
}
|
||||
};
|
||||
|
||||
export function createCell(
|
||||
column: GridColumn,
|
||||
|
@@ -40,7 +40,7 @@ export type GridColumn = {
|
||||
setting: GridColumnSetting;
|
||||
width: string;
|
||||
contentSize: Size;
|
||||
}
|
||||
};
|
||||
|
||||
export function createColumn(setting: GridColumnSetting, index: number): GridColumn {
|
||||
return {
|
||||
|
@@ -21,7 +21,7 @@ export type GridSetting = {
|
||||
|
||||
export type DataSource = Record<string, CellValue>;
|
||||
|
||||
export type GridState =
|
||||
export type GridState = (
|
||||
'normal' |
|
||||
'cellSelecting' |
|
||||
'cellEditing' |
|
||||
@@ -29,19 +29,19 @@ export type GridState =
|
||||
'colSelecting' |
|
||||
'rowSelecting' |
|
||||
'hidden'
|
||||
;
|
||||
);
|
||||
|
||||
export type Size = {
|
||||
width: number;
|
||||
height: number;
|
||||
}
|
||||
};
|
||||
|
||||
export type SizeStyle = number | 'auto' | undefined;
|
||||
|
||||
export type AdditionalStyle = {
|
||||
className?: string;
|
||||
style?: Record<string, string | number>;
|
||||
}
|
||||
};
|
||||
|
||||
export class GridEventEmitter extends EventEmitter<{
|
||||
'forceRefreshContentSize': void;
|
||||
|
@@ -27,7 +27,7 @@ export type GridRowStyleRuleConditionParams = {
|
||||
export type GridRowStyleRule = {
|
||||
condition: (params: GridRowStyleRuleConditionParams) => boolean;
|
||||
applyStyle: AdditionalStyle;
|
||||
}
|
||||
};
|
||||
|
||||
export type GridRowContextMenuFactory = (row: GridRow, context: GridContext) => MenuItem[];
|
||||
|
||||
@@ -40,7 +40,7 @@ export type GridRowSetting = {
|
||||
events?: {
|
||||
delete?: (rows: GridRow[]) => void;
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
export type GridRow = {
|
||||
index: number;
|
||||
@@ -48,7 +48,7 @@ export type GridRow = {
|
||||
using: boolean;
|
||||
setting: GridRowSetting;
|
||||
additionalStyles: AdditionalStyle[];
|
||||
}
|
||||
};
|
||||
|
||||
export function createRow(index: number, using: boolean, setting: GridRowSetting): GridRow {
|
||||
return {
|
||||
|
@@ -3,7 +3,7 @@
|
||||
* SPDX-License-Identifier: AGPL-3.0-only
|
||||
*/
|
||||
|
||||
export type Keys =
|
||||
export type Keys = (
|
||||
'v' |
|
||||
'lastVersion' |
|
||||
'instance' |
|
||||
@@ -40,6 +40,7 @@ export type Keys =
|
||||
'emojis' | // DEPRECATED, stored in indexeddb (13.9.0~);
|
||||
`channelLastReadedAt:${string}` |
|
||||
`idbfallback::${string}`
|
||||
);
|
||||
|
||||
// セッション毎に廃棄されるLocalStorage代替(セーフモードなどで使用できそう)
|
||||
//const safeSessionStorage = new Map<Keys, string>();
|
||||
|
@@ -65,7 +65,7 @@ export type RouterEvent = {
|
||||
key: string;
|
||||
}) => void;
|
||||
same: () => void;
|
||||
}
|
||||
};
|
||||
|
||||
export type Resolved = {
|
||||
route: RouteDef;
|
||||
|
@@ -109,7 +109,7 @@ type GridItem = {
|
||||
publicUrl?: string | null;
|
||||
originalUrl?: string | null;
|
||||
type: string | null;
|
||||
}
|
||||
};
|
||||
|
||||
function setupGrid(): GridSetting {
|
||||
const $style = useCssModule();
|
||||
|
@@ -124,7 +124,7 @@ type GridItem = {
|
||||
localOnly: boolean;
|
||||
roleIdsThatCanBeUsedThisEmojiAsReaction: { id: string, name: string }[];
|
||||
type: string | null;
|
||||
}
|
||||
};
|
||||
|
||||
function setupGrid(): GridSetting {
|
||||
const $style = useCssModule();
|
||||
|
@@ -168,7 +168,7 @@ type GridItem = {
|
||||
url: string;
|
||||
name: string;
|
||||
host: string;
|
||||
}
|
||||
};
|
||||
|
||||
function setupGrid(): GridSetting {
|
||||
const $style = useCssModule();
|
||||
|
@@ -93,7 +93,7 @@ const noteSearchableScope = instance.noteSearchableScope ?? 'local';
|
||||
|
||||
const hostSelect = ref<'all' | 'local' | 'specified'>('all');
|
||||
|
||||
const setHostSelectWithInput = (after:string|undefined|null, before:string|undefined|null) => {
|
||||
const setHostSelectWithInput = (after: string | undefined | null, before: string | undefined | null) => {
|
||||
if (before === after) return;
|
||||
if (after === '') hostSelect.value = 'all';
|
||||
else hostSelect.value = 'specified';
|
||||
|
@@ -76,7 +76,7 @@ export function createAiScriptEnv(opts: { storageKey: string, token?: string })
|
||||
// バグがあればundefinedもあり得るため念のため
|
||||
if (typeof token.value !== 'string') throw new Error('invalid token');
|
||||
}
|
||||
const actualToken: string|null = token?.value ?? opts.token ?? null;
|
||||
const actualToken: string | null = token?.value ?? opts.token ?? null;
|
||||
if (param == null) {
|
||||
throw new errors.AiScriptRuntimeError('expected param');
|
||||
}
|
||||
|
@@ -15,7 +15,7 @@ export type DroppedDirectory = {
|
||||
isFile: false;
|
||||
path: string;
|
||||
children: DroppedItem[];
|
||||
}
|
||||
};
|
||||
|
||||
export async function extractDroppedItems(ev: DragEvent): Promise<DroppedItem[]> {
|
||||
const dropItems = ev.dataTransfer?.items;
|
||||
|
@@ -3,7 +3,7 @@
|
||||
* SPDX-License-Identifier: AGPL-3.0-only
|
||||
*/
|
||||
|
||||
const defaultLocaleStringFormats: {[index: string]: string} = {
|
||||
const defaultLocaleStringFormats: { [index: string]: string } = {
|
||||
'weekday': 'narrow',
|
||||
'era': 'narrow',
|
||||
'year': 'numeric',
|
||||
|
@@ -7,7 +7,7 @@
|
||||
* {@link KeyboardEvent.code} の値を表す文字列。不足分は適宜追加する
|
||||
* @see https://developer.mozilla.org/en-US/docs/Web/API/UI_Events/Keyboard_event_code_values
|
||||
*/
|
||||
export type KeyCode =
|
||||
export type KeyCode = (
|
||||
| 'Backspace'
|
||||
| 'Tab'
|
||||
| 'Enter'
|
||||
@@ -94,32 +94,32 @@ export type KeyCode =
|
||||
| 'Quote'
|
||||
| 'Meta'
|
||||
| 'AltGraph'
|
||||
;
|
||||
);
|
||||
|
||||
/**
|
||||
* 修飾キーを表す文字列。不足分は適宜追加する。
|
||||
*/
|
||||
export type KeyModifier =
|
||||
export type KeyModifier = (
|
||||
| 'Shift'
|
||||
| 'Control'
|
||||
| 'Alt'
|
||||
| 'Meta'
|
||||
;
|
||||
);
|
||||
|
||||
/**
|
||||
* 押下されたキー以外の状態を表す文字列。不足分は適宜追加する。
|
||||
*/
|
||||
export type KeyState =
|
||||
export type KeyState = (
|
||||
| 'composing'
|
||||
| 'repeat'
|
||||
;
|
||||
);
|
||||
|
||||
export type KeyEventHandler = {
|
||||
modifiers?: KeyModifier[];
|
||||
states?: KeyState[];
|
||||
code: KeyCode | 'any';
|
||||
handler: (event: KeyboardEvent) => void;
|
||||
}
|
||||
};
|
||||
|
||||
export function handleKeyEvent(event: KeyboardEvent, handlers: KeyEventHandler[]) {
|
||||
function checkModifier(ev: KeyboardEvent, modifiers? : KeyModifier[]) {
|
||||
|
@@ -37,9 +37,9 @@ export class StreamMock extends EventEmitter<StreamEvents> implements IStream {
|
||||
// do nothing
|
||||
}
|
||||
|
||||
public send(typeOrPayload: string): void
|
||||
public send(typeOrPayload: string, payload: any): void
|
||||
public send(typeOrPayload: Record<string, any> | any[]): void
|
||||
public send(typeOrPayload: string): void;
|
||||
public send(typeOrPayload: string, payload: any): void;
|
||||
public send(typeOrPayload: Record<string, any> | any[]): void;
|
||||
public send(typeOrPayload: string | Record<string, any> | any[], payload?: any): void {
|
||||
// do nothing
|
||||
}
|
||||
|
@@ -56,7 +56,7 @@ export type SoundStore = {
|
||||
fileUrl: string;
|
||||
|
||||
volume: number;
|
||||
}
|
||||
};
|
||||
|
||||
export const postFormActions: PostFormAction[] = [];
|
||||
export const userActions: UserAction[] = [];
|
||||
|
@@ -6,7 +6,7 @@
|
||||
import * as Misskey from 'misskey-js';
|
||||
import type { ComputedRef, Ref } from 'vue';
|
||||
|
||||
interface MenuRadioOptionsDef extends Record<string, any> { }
|
||||
type MenuRadioOptionsDef = Record<string, any>;
|
||||
|
||||
export type MenuAction = (ev: MouseEvent) => void;
|
||||
|
||||
|
Reference in New Issue
Block a user