-
+
URL
@@ -82,14 +85,14 @@ SPDX-License-Identifier: AGPL-3.0-only
+
+
diff --git a/packages/frontend/src/scripts/media-has-audio.ts b/packages/frontend/src/scripts/media-has-audio.ts
new file mode 100644
index 0000000000..3421a38a76
--- /dev/null
+++ b/packages/frontend/src/scripts/media-has-audio.ts
@@ -0,0 +1,9 @@
+export default async function hasAudio(media: HTMLMediaElement) {
+ const cloned = media.cloneNode() as HTMLMediaElement;
+ cloned.muted = (cloned as typeof cloned & Partial).playsInline = true;
+ cloned.play();
+ await new Promise((resolve) => cloned.addEventListener('playing', resolve));
+ const result = !!(cloned as any).audioTracks?.length || (cloned as any).mozHasAudio || !!(cloned as any).webkitAudioDecodedByteCount;
+ cloned.remove();
+ return result;
+}
diff --git a/packages/frontend/src/scripts/sound.ts b/packages/frontend/src/scripts/sound.ts
index 4b0cd0bb39..a3cddba1f4 100644
--- a/packages/frontend/src/scripts/sound.ts
+++ b/packages/frontend/src/scripts/sound.ts
@@ -5,8 +5,9 @@
import { defaultStore } from '@/store.js';
-const ctx = new AudioContext();
+let ctx: AudioContext;
const cache = new Map();
+let canPlay = true;
export const soundsTypes = [
null,
@@ -38,6 +39,8 @@ export const soundsTypes = [
'syuilo/waon',
'syuilo/popo',
'syuilo/triple',
+ 'syuilo/bubble1',
+ 'syuilo/bubble2',
'syuilo/poi1',
'syuilo/poi2',
'syuilo/pirori',
@@ -61,7 +64,10 @@ export const soundsTypes = [
'noizenecio/kick_gaba7',
] as const;
-export async function getAudio(file: string, useCache = true) {
+export async function loadAudio(file: string, useCache = true) {
+ if (ctx == null) {
+ ctx = new AudioContext();
+ }
if (useCache && cache.has(file)) {
return cache.get(file)!;
}
@@ -77,30 +83,52 @@ export async function getAudio(file: string, useCache = true) {
return audioBuffer;
}
-export function setVolume(audio: HTMLAudioElement, volume: number): HTMLAudioElement {
- const masterVolume = defaultStore.state.sound_masterVolume;
- audio.volume = masterVolume - ((1 - volume) * masterVolume);
- return audio;
-}
-
-export function play(type: 'noteMy' | 'note' | 'antenna' | 'channel' | 'notification') {
+export function play(type: 'noteMy' | 'note' | 'antenna' | 'channel' | 'notification' | 'reaction') {
const sound = defaultStore.state[`sound_${type}`];
if (_DEV_) console.log('play', type, sound);
- if (sound.type == null) return;
- playFile(sound.type, sound.volume);
+ if (sound.type == null || !canPlay) return;
+
+ canPlay = false;
+ playFile(sound.type, sound.volume).then(() => {
+ // ごく短時間に音が重複しないように
+ setTimeout(() => {
+ canPlay = true;
+ }, 25);
+ });
}
export async function playFile(file: string, volume: number) {
+ const buffer = await loadAudio(file);
+ createSourceNode(buffer, volume)?.start();
+}
+
+export function createSourceNode(buffer: AudioBuffer, volume: number) : AudioBufferSourceNode | null {
const masterVolume = defaultStore.state.sound_masterVolume;
- if (masterVolume === 0 || volume === 0) {
- return;
+ if (isMute() || masterVolume === 0 || volume === 0) {
+ return null;
}
const gainNode = ctx.createGain();
gainNode.gain.value = masterVolume * volume;
const soundSource = ctx.createBufferSource();
- soundSource.buffer = await getAudio(file);
+ soundSource.buffer = buffer;
soundSource.connect(gainNode).connect(ctx.destination);
- soundSource.start();
+
+ return soundSource;
+}
+
+export function isMute(): boolean {
+ if (defaultStore.state.sound_notUseSound) {
+ // サウンドを出力しない
+ return true;
+ }
+
+ // noinspection RedundantIfStatementJS
+ if (defaultStore.state.sound_useSoundOnlyWhenActive && document.visibilityState === 'hidden') {
+ // ブラウザがアクティブな時のみサウンドを出力する
+ return true;
+ }
+
+ return false;
}
diff --git a/packages/frontend/src/store.ts b/packages/frontend/src/store.ts
index 6d95ddba35..40fb1dde76 100644
--- a/packages/frontend/src/store.ts
+++ b/packages/frontend/src/store.ts
@@ -330,6 +330,10 @@ export const defaultStore = markRaw(new Storage('base', {
where: 'device',
default: 'medium' as 'small' | 'medium' | 'large',
},
+ limitWidthOfReaction: {
+ where: 'device',
+ default: true,
+ },
forceShowAds: {
where: 'device',
default: false,
@@ -387,6 +391,14 @@ export const defaultStore = markRaw(new Storage('base', {
where: 'device',
default: 0.3,
},
+ sound_notUseSound: {
+ where: 'device',
+ default: false,
+ },
+ sound_useSoundOnlyWhenActive: {
+ where: 'device',
+ default: false,
+ },
sound_note: {
where: 'device',
default: { type: 'syuilo/n-aec', volume: 1 },
@@ -407,6 +419,10 @@ export const defaultStore = markRaw(new Storage('base', {
where: 'device',
default: { type: 'syuilo/square-pico', volume: 1 },
},
+ sound_reaction: {
+ where: 'device',
+ default: { type: 'syuilo/bubble2', volume: 1 },
+ },
}));
// TODO: 他のタブと永続化されたstateを同期
diff --git a/packages/frontend/src/widgets/WidgetJobQueue.vue b/packages/frontend/src/widgets/WidgetJobQueue.vue
index 89770b2216..8c990e8e49 100644
--- a/packages/frontend/src/widgets/WidgetJobQueue.vue
+++ b/packages/frontend/src/widgets/WidgetJobQueue.vue
@@ -58,6 +58,7 @@ import { useStream } from '@/stream.js';
import number from '@/filters/number.js';
import * as sound from '@/scripts/sound.js';
import { deepClone } from '@/scripts/clone.js';
+import { defaultStore } from '@/store.js';
const name = 'jobQueue';
@@ -99,7 +100,12 @@ const current = reactive({
},
});
const prev = reactive({} as typeof current);
-const jammedSound = sound.setVolume(sound.getAudio('syuilo/queue-jammed'), 1);
+let jammedAudioBuffer: AudioBuffer | null = $ref(null);
+let jammedSoundNodePlaying: boolean = $ref(false);
+
+if (defaultStore.state.sound_masterVolume) {
+ sound.loadAudio('syuilo/queue-jammed').then(buf => jammedAudioBuffer = buf);
+}
for (const domain of ['inbox', 'deliver']) {
prev[domain] = deepClone(current[domain]);
@@ -113,8 +119,13 @@ const onStats = (stats) => {
current[domain].waiting = stats[domain].waiting;
current[domain].delayed = stats[domain].delayed;
- if (current[domain].waiting > 0 && widgetProps.sound && jammedSound.paused) {
- jammedSound.play();
+ if (current[domain].waiting > 0 && widgetProps.sound && jammedAudioBuffer && !jammedSoundNodePlaying) {
+ const soundNode = sound.createSourceNode(jammedAudioBuffer, 1);
+ if (soundNode) {
+ jammedSoundNodePlaying = true;
+ soundNode.onended = () => jammedSoundNodePlaying = false;
+ soundNode.start();
+ }
}
}
};
diff --git a/packages/frontend/test/init.ts b/packages/frontend/test/init.ts
index 986fa99c17..ab5e84b53c 100644
--- a/packages/frontend/test/init.ts
+++ b/packages/frontend/test/init.ts
@@ -25,3 +25,21 @@ vi.mock('@/store.js', () => {
},
};
});
+
+// Add mocks for Web Audio API
+const AudioNodeMock = vi.fn(() => ({
+ connect: vi.fn(() => ({ connect: vi.fn() })),
+ start: vi.fn(),
+}));
+
+const GainNodeMock = vi.fn(() => ({
+ gain: vi.fn(),
+}));
+
+const AudioContextMock = vi.fn(() => ({
+ createBufferSource: vi.fn(() => new AudioNodeMock()),
+ createGain: vi.fn(() => new GainNodeMock()),
+ decodeAudioData: vi.fn(),
+}));
+
+vi.stubGlobal('AudioContext', AudioContextMock);
diff --git a/packages/frontend/test/url-preview.test.ts b/packages/frontend/test/url-preview.test.ts
index 811f07d9c7..f760de9274 100644
--- a/packages/frontend/test/url-preview.test.ts
+++ b/packages/frontend/test/url-preview.test.ts
@@ -150,7 +150,7 @@ describe('MkUrlPreview', () => {
});
assert.exists(iframe, 'iframe should exist');
assert.strictEqual(iframe?.getAttribute('allow'), 'fullscreen;web-share');
- assert.strictEqual(iframe?.getAttribute('sandbox'), 'allow-popups allow-scripts allow-same-origin');
+ assert.strictEqual(iframe?.getAttribute('sandbox'), 'allow-popups allow-popups-to-escape-sandbox allow-scripts allow-same-origin');
});
test('Loading a post in iframe', async () => {
@@ -159,6 +159,6 @@ describe('MkUrlPreview', () => {
});
assert.exists(iframe, 'iframe should exist');
assert.strictEqual(iframe?.getAttribute('allow'), 'fullscreen;web-share');
- assert.strictEqual(iframe?.getAttribute('sandbox'), 'allow-popups allow-scripts allow-same-origin');
+ assert.strictEqual(iframe?.getAttribute('sandbox'), 'allow-popups allow-popups-to-escape-sandbox allow-scripts allow-same-origin');
});
});
diff --git a/packages/misskey-js/etc/misskey-js.api.md b/packages/misskey-js/etc/misskey-js.api.md
index 85907de665..dc93c4be3b 100644
--- a/packages/misskey-js/etc/misskey-js.api.md
+++ b/packages/misskey-js/etc/misskey-js.api.md
@@ -1565,7 +1565,8 @@ export type Endpoints = {
injectFeaturedNote?: boolean;
receiveAnnouncementEmail?: boolean;
alwaysMarkNsfw?: boolean;
- mutedWords?: string[][];
+ mutedWords?: (string[] | string)[];
+ hardMutedWords?: (string[] | string)[];
notificationRecieveConfig?: any;
emailNotificationTypes?: string[];
alsoKnownAs?: string[];
@@ -2516,7 +2517,8 @@ type MeDetailed = UserDetailed & {
integrations: Record;
isDeleted: boolean;
isExplorable: boolean;
- mutedWords: string[][];
+ mutedWords: (string[] | string)[];
+ hardMutedWords: (string[] | string)[];
notificationRecieveConfig: {
[notificationType in typeof notificationTypes_2[number]]?: {
type: 'all';
@@ -2685,10 +2687,16 @@ type ModerationLog = {
} | {
type: 'resolveAbuseReport';
info: ModerationLogPayloads['resolveAbuseReport'];
+} | {
+ type: 'unsetUserAvatar';
+ info: ModerationLogPayloads['unsetUserAvatar'];
+} | {
+ type: 'unsetUserBanner';
+ info: ModerationLogPayloads['unsetUserBanner'];
});
// @public (undocumented)
-export const moderationLogTypes: readonly ["updateServerSettings", "suspend", "unsuspend", "updateUserNote", "addCustomEmoji", "updateCustomEmoji", "deleteCustomEmoji", "assignRole", "unassignRole", "createRole", "updateRole", "deleteRole", "clearQueue", "promoteQueue", "deleteDriveFile", "deleteNote", "createGlobalAnnouncement", "createUserAnnouncement", "updateGlobalAnnouncement", "updateUserAnnouncement", "deleteGlobalAnnouncement", "deleteUserAnnouncement", "resetPassword", "suspendRemoteInstance", "unsuspendRemoteInstance", "markSensitiveDriveFile", "unmarkSensitiveDriveFile", "resolveAbuseReport", "createInvitation", "createAd", "updateAd", "deleteAd", "createAvatarDecoration", "updateAvatarDecoration", "deleteAvatarDecoration"];
+export const moderationLogTypes: readonly ["updateServerSettings", "suspend", "unsuspend", "updateUserNote", "addCustomEmoji", "updateCustomEmoji", "deleteCustomEmoji", "assignRole", "unassignRole", "createRole", "updateRole", "deleteRole", "clearQueue", "promoteQueue", "deleteDriveFile", "deleteNote", "createGlobalAnnouncement", "createUserAnnouncement", "updateGlobalAnnouncement", "updateUserAnnouncement", "deleteGlobalAnnouncement", "deleteUserAnnouncement", "resetPassword", "suspendRemoteInstance", "unsuspendRemoteInstance", "markSensitiveDriveFile", "unmarkSensitiveDriveFile", "resolveAbuseReport", "createInvitation", "createAd", "updateAd", "deleteAd", "createAvatarDecoration", "updateAvatarDecoration", "deleteAvatarDecoration", "unsetUserAvatar", "unsetUserBanner"];
// @public (undocumented)
export const mutedNoteReasons: readonly ["word", "manual", "spam", "other"];
@@ -3046,10 +3054,10 @@ type UserSorting = '+follower' | '-follower' | '+createdAt' | '-createdAt' | '+u
// Warnings were encountered during analysis:
//
// src/api.types.ts:16:32 - (ae-forgotten-export) The symbol "TODO" needs to be exported by the entry point index.d.ts
-// src/api.types.ts:18:25 - (ae-forgotten-export) The symbol "NoParams" needs to be exported by the entry point index.d.ts
-// src/api.types.ts:632:18 - (ae-forgotten-export) The symbol "ShowUserReq" needs to be exported by the entry point index.d.ts
-// src/entities.ts:116:2 - (ae-forgotten-export) The symbol "notificationTypes_2" needs to be exported by the entry point index.d.ts
-// src/entities.ts:627:2 - (ae-forgotten-export) The symbol "ModerationLogPayloads" needs to be exported by the entry point index.d.ts
+// src/api.types.ts:20:25 - (ae-forgotten-export) The symbol "NoParams" needs to be exported by the entry point index.d.ts
+// src/api.types.ts:635:18 - (ae-forgotten-export) The symbol "ShowUserReq" needs to be exported by the entry point index.d.ts
+// src/entities.ts:117:2 - (ae-forgotten-export) The symbol "notificationTypes_2" needs to be exported by the entry point index.d.ts
+// src/entities.ts:628:2 - (ae-forgotten-export) The symbol "ModerationLogPayloads" needs to be exported by the entry point index.d.ts
// src/streaming.types.ts:33:4 - (ae-forgotten-export) The symbol "FIXME" needs to be exported by the entry point index.d.ts
// (No @packageDocumentation comment for this package)
diff --git a/packages/misskey-js/package.json b/packages/misskey-js/package.json
index 0a4855874f..69ce173bf4 100644
--- a/packages/misskey-js/package.json
+++ b/packages/misskey-js/package.json
@@ -32,7 +32,7 @@
"jest-websocket-mock": "2.5.0",
"mock-socket": "9.3.1",
"tsd": "0.29.0",
- "typescript": "5.2.2"
+ "typescript": "5.3.2"
},
"files": [
"built"
diff --git a/packages/misskey-js/src/api.types.ts b/packages/misskey-js/src/api.types.ts
index 1a75b7cf57..ba333231e5 100644
--- a/packages/misskey-js/src/api.types.ts
+++ b/packages/misskey-js/src/api.types.ts
@@ -432,7 +432,8 @@ export type Endpoints = {
injectFeaturedNote?: boolean;
receiveAnnouncementEmail?: boolean;
alwaysMarkNsfw?: boolean;
- mutedWords?: string[][];
+ mutedWords?: (string[] | string)[];
+ hardMutedWords?: (string[] | string)[];
notificationRecieveConfig?: any;
emailNotificationTypes?: string[];
alsoKnownAs?: string[];
diff --git a/packages/misskey-js/src/entities.ts b/packages/misskey-js/src/entities.ts
index a51315b13b..2ddcf93f5d 100644
--- a/packages/misskey-js/src/entities.ts
+++ b/packages/misskey-js/src/entities.ts
@@ -112,7 +112,8 @@ export type MeDetailed = UserDetailed & {
integrations: Record;
isDeleted: boolean;
isExplorable: boolean;
- mutedWords: string[][];
+ mutedWords: (string[] | string)[];
+ hardMutedWords: (string[] | string)[];
notificationRecieveConfig: {
[notificationType in typeof notificationTypes[number]]?: {
type: 'all';
diff --git a/packages/sw/package.json b/packages/sw/package.json
index 3259cae879..3c74ee8c78 100644
--- a/packages/sw/package.json
+++ b/packages/sw/package.json
@@ -18,7 +18,7 @@
"@typescript/lib-webworker": "npm:@types/serviceworker@0.0.67",
"eslint": "8.53.0",
"eslint-plugin-import": "2.29.0",
- "typescript": "5.2.2"
+ "typescript": "5.3.2"
},
"type": "module"
}
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 904150b075..7373d5f10b 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -28,8 +28,8 @@ importers:
specifier: 5.24.0
version: 5.24.0
typescript:
- specifier: 5.2.2
- version: 5.2.2
+ specifier: 5.3.2
+ version: 5.3.2
optionalDependencies:
'@tensorflow/tfjs-core':
specifier: 4.4.0
@@ -37,10 +37,10 @@ importers:
devDependencies:
'@typescript-eslint/eslint-plugin':
specifier: 6.11.0
- version: 6.11.0(@typescript-eslint/parser@6.11.0)(eslint@8.53.0)(typescript@5.2.2)
+ version: 6.11.0(@typescript-eslint/parser@6.11.0)(eslint@8.53.0)(typescript@5.3.2)
'@typescript-eslint/parser':
specifier: 6.11.0
- version: 6.11.0(eslint@8.53.0)(typescript@5.2.2)
+ version: 6.11.0(eslint@8.53.0)(typescript@5.3.2)
cross-env:
specifier: 7.0.3
version: 7.0.3
@@ -381,8 +381,8 @@ importers:
specifier: 0.3.17
version: 0.3.17(ioredis@5.3.2)(pg@8.11.3)
typescript:
- specifier: 5.2.2
- version: 5.2.2
+ specifier: 5.3.2
+ version: 5.3.2
ulid:
specifier: 2.3.0
version: 2.3.0
@@ -615,10 +615,10 @@ importers:
version: 8.5.9
'@typescript-eslint/eslint-plugin':
specifier: 6.11.0
- version: 6.11.0(@typescript-eslint/parser@6.11.0)(eslint@8.53.0)(typescript@5.2.2)
+ version: 6.11.0(@typescript-eslint/parser@6.11.0)(eslint@8.53.0)(typescript@5.3.2)
'@typescript-eslint/parser':
specifier: 6.11.0
- version: 6.11.0(eslint@8.53.0)(typescript@5.2.2)
+ version: 6.11.0(eslint@8.53.0)(typescript@5.3.2)
aws-sdk-client-mock:
specifier: 3.0.0
version: 3.0.0
@@ -806,8 +806,8 @@ importers:
specifier: 14.0.0
version: 14.0.0
typescript:
- specifier: 5.2.2
- version: 5.2.2
+ specifier: 5.3.2
+ version: 5.3.2
uuid:
specifier: 9.0.1
version: 9.0.1
@@ -822,7 +822,7 @@ importers:
version: 4.5.0(@types/node@20.9.1)(sass@1.69.5)(terser@5.24.0)
vue:
specifier: 3.3.8
- version: 3.3.8(typescript@5.2.2)
+ version: 3.3.8(typescript@5.3.2)
vuedraggable:
specifier: next
version: 4.1.0(vue@3.3.8)
@@ -862,10 +862,10 @@ importers:
version: 7.5.3
'@storybook/react':
specifier: 7.5.3
- version: 7.5.3(react-dom@18.2.0)(react@18.2.0)(typescript@5.2.2)
+ version: 7.5.3(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.2)
'@storybook/react-vite':
specifier: 7.5.3
- version: 7.5.3(react-dom@18.2.0)(react@18.2.0)(rollup@4.4.1)(typescript@5.2.2)(vite@4.5.0)
+ version: 7.5.3(react-dom@18.2.0)(react@18.2.0)(rollup@4.4.1)(typescript@5.3.2)(vite@4.5.0)
'@storybook/testing-library':
specifier: 0.2.2
version: 0.2.2
@@ -880,7 +880,7 @@ importers:
version: 7.5.3(@vue/compiler-core@3.3.8)(vue@3.3.8)
'@storybook/vue3-vite':
specifier: 7.5.3
- version: 7.5.3(@vue/compiler-core@3.3.8)(react-dom@18.2.0)(react@18.2.0)(typescript@5.2.2)(vite@4.5.0)(vue@3.3.8)
+ version: 7.5.3(@vue/compiler-core@3.3.8)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.2)(vite@4.5.0)(vue@3.3.8)
'@testing-library/vue':
specifier: 8.0.0
version: 8.0.0(@vue/compiler-sfc@3.3.8)(vue@3.3.8)
@@ -922,10 +922,10 @@ importers:
version: 8.5.9
'@typescript-eslint/eslint-plugin':
specifier: 6.11.0
- version: 6.11.0(@typescript-eslint/parser@6.11.0)(eslint@8.53.0)(typescript@5.2.2)
+ version: 6.11.0(@typescript-eslint/parser@6.11.0)(eslint@8.53.0)(typescript@5.3.2)
'@typescript-eslint/parser':
specifier: 6.11.0
- version: 6.11.0(eslint@8.53.0)(typescript@5.2.2)
+ version: 6.11.0(eslint@8.53.0)(typescript@5.3.2)
'@vitest/coverage-v8':
specifier: 0.34.6
version: 0.34.6(vitest@0.34.6)
@@ -961,7 +961,7 @@ importers:
version: 4.0.5
msw:
specifier: 1.3.2
- version: 1.3.2(typescript@5.2.2)
+ version: 1.3.2(typescript@5.3.2)
msw-storybook-addon:
specifier: 1.10.0
version: 1.10.0(msw@1.3.2)
@@ -1003,7 +1003,7 @@ importers:
version: 9.3.2(eslint@8.53.0)
vue-tsc:
specifier: 1.8.22
- version: 1.8.22(typescript@5.2.2)
+ version: 1.8.22(typescript@5.3.2)
packages/misskey-js:
dependencies:
@@ -1034,10 +1034,10 @@ importers:
version: 20.9.1
'@typescript-eslint/eslint-plugin':
specifier: 6.11.0
- version: 6.11.0(@typescript-eslint/parser@6.11.0)(eslint@8.53.0)(typescript@5.2.2)
+ version: 6.11.0(@typescript-eslint/parser@6.11.0)(eslint@8.53.0)(typescript@5.3.2)
'@typescript-eslint/parser':
specifier: 6.11.0
- version: 6.11.0(eslint@8.53.0)(typescript@5.2.2)
+ version: 6.11.0(eslint@8.53.0)(typescript@5.3.2)
eslint:
specifier: 8.53.0
version: 8.53.0
@@ -1057,8 +1057,8 @@ importers:
specifier: 0.29.0
version: 0.29.0
typescript:
- specifier: 5.2.2
- version: 5.2.2
+ specifier: 5.3.2
+ version: 5.3.2
packages/sw:
dependencies:
@@ -1074,7 +1074,7 @@ importers:
devDependencies:
'@typescript-eslint/parser':
specifier: 6.11.0
- version: 6.11.0(eslint@8.53.0)(typescript@5.2.2)
+ version: 6.11.0(eslint@8.53.0)(typescript@5.3.2)
'@typescript/lib-webworker':
specifier: npm:@types/serviceworker@0.0.67
version: /@types/serviceworker@0.0.67
@@ -1085,8 +1085,8 @@ importers:
specifier: 2.29.0
version: 2.29.0(@typescript-eslint/parser@6.11.0)(eslint@8.53.0)
typescript:
- specifier: 5.2.2
- version: 5.2.2
+ specifier: 5.3.2
+ version: 5.3.2
packages:
@@ -4254,7 +4254,7 @@ packages:
chalk: 4.1.2
dev: true
- /@joshwooding/vite-plugin-react-docgen-typescript@0.3.0(typescript@5.2.2)(vite@4.5.0):
+ /@joshwooding/vite-plugin-react-docgen-typescript@0.3.0(typescript@5.3.2)(vite@4.5.0):
resolution: {integrity: sha512-2D6y7fNvFmsLmRt6UCOFJPvFoPMJGT0Uh1Wg0RaigUp7kdQPs6yYn8Dmx6GZkOH/NW0yMTwRz/p0SRMMRo50vA==}
peerDependencies:
typescript: '>= 4.3.x'
@@ -4266,8 +4266,8 @@ packages:
glob: 7.2.3
glob-promise: 4.2.2(glob@7.2.3)
magic-string: 0.27.0
- react-docgen-typescript: 2.2.2(typescript@5.2.2)
- typescript: 5.2.2
+ react-docgen-typescript: 2.2.2(typescript@5.3.2)
+ typescript: 5.3.2
vite: 4.5.0(@types/node@20.9.1)(sass@1.69.5)(terser@5.24.0)
dev: true
@@ -6348,7 +6348,7 @@ packages:
- supports-color
dev: true
- /@storybook/builder-vite@7.5.3(typescript@5.2.2)(vite@4.5.0):
+ /@storybook/builder-vite@7.5.3(typescript@5.3.2)(vite@4.5.0):
resolution: {integrity: sha512-c104V3O75OCVnfZj0Jr70V09g0KSbPGvQK2Zh31omXGvakG8XrhWolYxkmjOcForJmAqsXnKs/nw3F75Gp853g==}
peerDependencies:
'@preact/preset-vite': '*'
@@ -6379,7 +6379,7 @@ packages:
fs-extra: 11.1.1
magic-string: 0.30.5
rollup: 3.29.4
- typescript: 5.2.2
+ typescript: 5.3.2
vite: 4.5.0(@types/node@20.9.1)(sass@1.69.5)(terser@5.24.0)
transitivePeerDependencies:
- encoding
@@ -6750,7 +6750,7 @@ packages:
react-dom: 18.2.0(react@18.2.0)
dev: true
- /@storybook/react-vite@7.5.3(react-dom@18.2.0)(react@18.2.0)(rollup@4.4.1)(typescript@5.2.2)(vite@4.5.0):
+ /@storybook/react-vite@7.5.3(react-dom@18.2.0)(react@18.2.0)(rollup@4.4.1)(typescript@5.3.2)(vite@4.5.0):
resolution: {integrity: sha512-ArPyHgiPbT5YvcyK4xK/DfqBOpn4R4/EP3kfIGhx8QKJyOtxPEYFdkLIZ5xu3KnPX7/z7GT+4a6Rb+8sk9gliA==}
engines: {node: '>=16'}
peerDependencies:
@@ -6758,10 +6758,10 @@ packages:
react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0
vite: ^3.0.0 || ^4.0.0 || ^5.0.0
dependencies:
- '@joshwooding/vite-plugin-react-docgen-typescript': 0.3.0(typescript@5.2.2)(vite@4.5.0)
+ '@joshwooding/vite-plugin-react-docgen-typescript': 0.3.0(typescript@5.3.2)(vite@4.5.0)
'@rollup/pluginutils': 5.0.5(rollup@4.4.1)
- '@storybook/builder-vite': 7.5.3(typescript@5.2.2)(vite@4.5.0)
- '@storybook/react': 7.5.3(react-dom@18.2.0)(react@18.2.0)(typescript@5.2.2)
+ '@storybook/builder-vite': 7.5.3(typescript@5.3.2)(vite@4.5.0)
+ '@storybook/react': 7.5.3(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.2)
'@vitejs/plugin-react': 3.1.0(vite@4.5.0)
magic-string: 0.30.5
react: 18.2.0
@@ -6777,7 +6777,7 @@ packages:
- vite-plugin-glimmerx
dev: true
- /@storybook/react@7.5.3(react-dom@18.2.0)(react@18.2.0)(typescript@5.2.2):
+ /@storybook/react@7.5.3(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.2):
resolution: {integrity: sha512-dZILdM36xMFDjdmmy421G5X+sOIncB2qF3IPTooniG1i1Z6v/dVNo57ovdID9lDTNa+AWr2fLB9hANiISMqmjQ==}
engines: {node: '>=16.0.0'}
peerDependencies:
@@ -6810,7 +6810,7 @@ packages:
react-element-to-jsx-string: 15.0.0(react-dom@18.2.0)(react@18.2.0)
ts-dedent: 2.2.0
type-fest: 2.19.0
- typescript: 5.2.2
+ typescript: 5.3.2
util-deprecate: 1.0.2
transitivePeerDependencies:
- encoding
@@ -6892,7 +6892,7 @@ packages:
file-system-cache: 2.3.0
dev: true
- /@storybook/vue3-vite@7.5.3(@vue/compiler-core@3.3.8)(react-dom@18.2.0)(react@18.2.0)(typescript@5.2.2)(vite@4.5.0)(vue@3.3.8):
+ /@storybook/vue3-vite@7.5.3(@vue/compiler-core@3.3.8)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.2)(vite@4.5.0)(vue@3.3.8):
resolution: {integrity: sha512-gkNwDDn2AKthAtaoPrHb0+2gi33UluxpfSq/M5COoMEVFphj6y/jyDa+OEYlceXgnD8g2xvX4/yv2TbTNDzmcQ==}
engines: {node: ^14.18 || >=16}
peerDependencies:
@@ -6900,7 +6900,7 @@ packages:
react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0
vite: ^3.0.0 || ^4.0.0 || ^5.0.0
dependencies:
- '@storybook/builder-vite': 7.5.3(typescript@5.2.2)(vite@4.5.0)
+ '@storybook/builder-vite': 7.5.3(typescript@5.3.2)(vite@4.5.0)
'@storybook/core-server': 7.5.3
'@storybook/vue3': 7.5.3(@vue/compiler-core@3.3.8)(vue@3.3.8)
'@vitejs/plugin-vue': 4.5.0(vite@4.5.0)(vue@3.3.8)
@@ -6937,7 +6937,7 @@ packages:
lodash: 4.17.21
ts-dedent: 2.2.0
type-fest: 2.19.0
- vue: 3.3.8(typescript@5.2.2)
+ vue: 3.3.8(typescript@5.3.2)
vue-component-type-helpers: 1.8.22
transitivePeerDependencies:
- encoding
@@ -7432,7 +7432,7 @@ packages:
'@testing-library/dom': 9.3.3
'@vue/compiler-sfc': 3.3.8
'@vue/test-utils': 2.4.1(vue@3.3.8)
- vue: 3.3.8(typescript@5.2.2)
+ vue: 3.3.8(typescript@5.3.2)
transitivePeerDependencies:
- '@vue/server-renderer'
dev: true
@@ -8073,7 +8073,7 @@ packages:
dev: true
optional: true
- /@typescript-eslint/eslint-plugin@6.11.0(@typescript-eslint/parser@6.11.0)(eslint@8.53.0)(typescript@5.2.2):
+ /@typescript-eslint/eslint-plugin@6.11.0(@typescript-eslint/parser@6.11.0)(eslint@8.53.0)(typescript@5.3.2):
resolution: {integrity: sha512-uXnpZDc4VRjY4iuypDBKzW1rz9T5YBBK0snMn8MaTSNd2kMlj50LnLBABELjJiOL5YHk7ZD8hbSpI9ubzqYI0w==}
engines: {node: ^16.0.0 || >=18.0.0}
peerDependencies:
@@ -8085,10 +8085,10 @@ packages:
optional: true
dependencies:
'@eslint-community/regexpp': 4.6.2
- '@typescript-eslint/parser': 6.11.0(eslint@8.53.0)(typescript@5.2.2)
+ '@typescript-eslint/parser': 6.11.0(eslint@8.53.0)(typescript@5.3.2)
'@typescript-eslint/scope-manager': 6.11.0
- '@typescript-eslint/type-utils': 6.11.0(eslint@8.53.0)(typescript@5.2.2)
- '@typescript-eslint/utils': 6.11.0(eslint@8.53.0)(typescript@5.2.2)
+ '@typescript-eslint/type-utils': 6.11.0(eslint@8.53.0)(typescript@5.3.2)
+ '@typescript-eslint/utils': 6.11.0(eslint@8.53.0)(typescript@5.3.2)
'@typescript-eslint/visitor-keys': 6.11.0
debug: 4.3.4(supports-color@8.1.1)
eslint: 8.53.0
@@ -8096,13 +8096,13 @@ packages:
ignore: 5.2.4
natural-compare: 1.4.0
semver: 7.5.4
- ts-api-utils: 1.0.1(typescript@5.2.2)
- typescript: 5.2.2
+ ts-api-utils: 1.0.1(typescript@5.3.2)
+ typescript: 5.3.2
transitivePeerDependencies:
- supports-color
dev: true
- /@typescript-eslint/parser@6.11.0(eslint@8.53.0)(typescript@5.2.2):
+ /@typescript-eslint/parser@6.11.0(eslint@8.53.0)(typescript@5.3.2):
resolution: {integrity: sha512-+whEdjk+d5do5nxfxx73oanLL9ghKO3EwM9kBCkUtWMRwWuPaFv9ScuqlYfQ6pAD6ZiJhky7TZ2ZYhrMsfMxVQ==}
engines: {node: ^16.0.0 || >=18.0.0}
peerDependencies:
@@ -8114,11 +8114,11 @@ packages:
dependencies:
'@typescript-eslint/scope-manager': 6.11.0
'@typescript-eslint/types': 6.11.0
- '@typescript-eslint/typescript-estree': 6.11.0(typescript@5.2.2)
+ '@typescript-eslint/typescript-estree': 6.11.0(typescript@5.3.2)
'@typescript-eslint/visitor-keys': 6.11.0
debug: 4.3.4(supports-color@8.1.1)
eslint: 8.53.0
- typescript: 5.2.2
+ typescript: 5.3.2
transitivePeerDependencies:
- supports-color
dev: true
@@ -8131,7 +8131,7 @@ packages:
'@typescript-eslint/visitor-keys': 6.11.0
dev: true
- /@typescript-eslint/type-utils@6.11.0(eslint@8.53.0)(typescript@5.2.2):
+ /@typescript-eslint/type-utils@6.11.0(eslint@8.53.0)(typescript@5.3.2):
resolution: {integrity: sha512-nA4IOXwZtqBjIoYrJcYxLRO+F9ri+leVGoJcMW1uqr4r1Hq7vW5cyWrA43lFbpRvQ9XgNrnfLpIkO3i1emDBIA==}
engines: {node: ^16.0.0 || >=18.0.0}
peerDependencies:
@@ -8141,12 +8141,12 @@ packages:
typescript:
optional: true
dependencies:
- '@typescript-eslint/typescript-estree': 6.11.0(typescript@5.2.2)
- '@typescript-eslint/utils': 6.11.0(eslint@8.53.0)(typescript@5.2.2)
+ '@typescript-eslint/typescript-estree': 6.11.0(typescript@5.3.2)
+ '@typescript-eslint/utils': 6.11.0(eslint@8.53.0)(typescript@5.3.2)
debug: 4.3.4(supports-color@8.1.1)
eslint: 8.53.0
- ts-api-utils: 1.0.1(typescript@5.2.2)
- typescript: 5.2.2
+ ts-api-utils: 1.0.1(typescript@5.3.2)
+ typescript: 5.3.2
transitivePeerDependencies:
- supports-color
dev: true
@@ -8156,7 +8156,7 @@ packages:
engines: {node: ^16.0.0 || >=18.0.0}
dev: true
- /@typescript-eslint/typescript-estree@6.11.0(typescript@5.2.2):
+ /@typescript-eslint/typescript-estree@6.11.0(typescript@5.3.2):
resolution: {integrity: sha512-Aezzv1o2tWJwvZhedzvD5Yv7+Lpu1by/U1LZ5gLc4tCx8jUmuSCMioPFRjliN/6SJIvY6HpTtJIWubKuYYYesQ==}
engines: {node: ^16.0.0 || >=18.0.0}
peerDependencies:
@@ -8171,13 +8171,13 @@ packages:
globby: 11.1.0
is-glob: 4.0.3
semver: 7.5.4
- ts-api-utils: 1.0.1(typescript@5.2.2)
- typescript: 5.2.2
+ ts-api-utils: 1.0.1(typescript@5.3.2)
+ typescript: 5.3.2
transitivePeerDependencies:
- supports-color
dev: true
- /@typescript-eslint/utils@6.11.0(eslint@8.53.0)(typescript@5.2.2):
+ /@typescript-eslint/utils@6.11.0(eslint@8.53.0)(typescript@5.3.2):
resolution: {integrity: sha512-p23ibf68fxoZy605dc0dQAEoUsoiNoP3MD9WQGiHLDuTSOuqoTsa4oAy+h3KDkTcxbbfOtUjb9h3Ta0gT4ug2g==}
engines: {node: ^16.0.0 || >=18.0.0}
peerDependencies:
@@ -8188,7 +8188,7 @@ packages:
'@types/semver': 7.5.5
'@typescript-eslint/scope-manager': 6.11.0
'@typescript-eslint/types': 6.11.0
- '@typescript-eslint/typescript-estree': 6.11.0(typescript@5.2.2)
+ '@typescript-eslint/typescript-estree': 6.11.0(typescript@5.3.2)
eslint: 8.53.0
semver: 7.5.4
transitivePeerDependencies:
@@ -8232,7 +8232,7 @@ packages:
vue: ^3.2.25
dependencies:
vite: 4.5.0(@types/node@20.9.1)(sass@1.69.5)(terser@5.24.0)
- vue: 3.3.8(typescript@5.2.2)
+ vue: 3.3.8(typescript@5.3.2)
/@vitest/coverage-v8@0.34.6(vitest@0.34.6):
resolution: {integrity: sha512-fivy/OK2d/EsJFoEoxHFEnNGTg+MmdZBAVK9Ka4qhXR2K3J0DS08vcGVwzDtXSuUMabLv4KtPcpSKkcMXFDViw==}
@@ -8327,7 +8327,7 @@ packages:
ast-kit: 0.11.2(rollup@4.4.1)
local-pkg: 0.5.0
magic-string-ast: 0.3.0
- vue: 3.3.8(typescript@5.2.2)
+ vue: 3.3.8(typescript@5.3.2)
transitivePeerDependencies:
- rollup
dev: false
@@ -8344,7 +8344,7 @@ packages:
'@vue/shared': 3.3.8
magic-string: 0.30.5
unplugin: 1.5.1
- vue: 3.3.8(typescript@5.2.2)
+ vue: 3.3.8(typescript@5.3.2)
transitivePeerDependencies:
- rollup
dev: false
@@ -8415,7 +8415,7 @@ packages:
'@vue/compiler-dom': 3.3.8
'@vue/shared': 3.3.8
- /@vue/language-core@1.8.22(typescript@5.2.2):
+ /@vue/language-core@1.8.22(typescript@5.3.2):
resolution: {integrity: sha512-bsMoJzCrXZqGsxawtUea1cLjUT9dZnDsy5TuZ+l1fxRMzUGQUG9+Ypq4w//CqpWmrx7nIAJpw2JVF/t258miRw==}
peerDependencies:
typescript: '*'
@@ -8430,7 +8430,7 @@ packages:
computeds: 0.0.1
minimatch: 9.0.3
muggle-string: 0.3.1
- typescript: 5.2.2
+ typescript: 5.3.2
vue-template-compiler: 2.7.14
dev: true
@@ -8468,7 +8468,7 @@ packages:
dependencies:
'@vue/compiler-ssr': 3.3.8
'@vue/shared': 3.3.8
- vue: 3.3.8(typescript@5.2.2)
+ vue: 3.3.8(typescript@5.3.2)
/@vue/shared@3.3.6:
resolution: {integrity: sha512-Xno5pEqg8SVhomD0kTSmfh30ZEmV/+jZtyh39q6QflrjdJCXah5lrnOLi9KB6a5k5aAHXMXjoMnxlzUkCNfWLQ==}
@@ -8491,7 +8491,7 @@ packages:
optional: true
dependencies:
js-beautify: 1.14.9
- vue: 3.3.8(typescript@5.2.2)
+ vue: 3.3.8(typescript@5.3.2)
vue-component-type-helpers: 1.8.4
dev: true
@@ -11158,7 +11158,7 @@ packages:
eslint-import-resolver-webpack:
optional: true
dependencies:
- '@typescript-eslint/parser': 6.11.0(eslint@8.53.0)(typescript@5.2.2)
+ '@typescript-eslint/parser': 6.11.0(eslint@8.53.0)(typescript@5.3.2)
debug: 3.2.7(supports-color@5.5.0)
eslint: 8.53.0
eslint-import-resolver-node: 0.3.9
@@ -11176,7 +11176,7 @@ packages:
'@typescript-eslint/parser':
optional: true
dependencies:
- '@typescript-eslint/parser': 6.11.0(eslint@8.53.0)(typescript@5.2.2)
+ '@typescript-eslint/parser': 6.11.0(eslint@8.53.0)(typescript@5.3.2)
array-includes: 3.1.7
array.prototype.findlastindex: 1.2.3
array.prototype.flat: 1.3.2
@@ -14852,10 +14852,10 @@ packages:
msw: '>=0.35.0 <2.0.0'
dependencies:
is-node-process: 1.2.0
- msw: 1.3.2(typescript@5.2.2)
+ msw: 1.3.2(typescript@5.3.2)
dev: true
- /msw@1.3.2(typescript@5.2.2):
+ /msw@1.3.2(typescript@5.3.2):
resolution: {integrity: sha512-wKLhFPR+NitYTkQl5047pia0reNGgf0P6a1eTnA5aNlripmiz0sabMvvHcicE8kQ3/gZcI0YiPFWmYfowfm3lA==}
engines: {node: '>=14'}
hasBin: true
@@ -14884,7 +14884,7 @@ packages:
path-to-regexp: 6.2.1
strict-event-emitter: 0.4.6
type-fest: 2.19.0
- typescript: 5.2.2
+ typescript: 5.3.2
yargs: 17.6.2
transitivePeerDependencies:
- encoding
@@ -16773,12 +16773,12 @@ packages:
react-dom: 18.2.0(react@18.2.0)
dev: true
- /react-docgen-typescript@2.2.2(typescript@5.2.2):
+ /react-docgen-typescript@2.2.2(typescript@5.3.2):
resolution: {integrity: sha512-tvg2ZtOpOi6QDwsb3GZhOjDkkX0h8Z2gipvTg6OVMUyoYoURhEiRNePT8NZItTVCDh39JJHnLdfCOkzoLbFnTg==}
peerDependencies:
typescript: '>= 4.3.x'
dependencies:
- typescript: 5.2.2
+ typescript: 5.3.2
dev: true
/react-docgen@6.0.4:
@@ -18627,13 +18627,13 @@ packages:
escape-string-regexp: 5.0.0
dev: false
- /ts-api-utils@1.0.1(typescript@5.2.2):
+ /ts-api-utils@1.0.1(typescript@5.3.2):
resolution: {integrity: sha512-lC/RGlPmwdrIBFTX59wwNzqh7aR2otPNPR/5brHZm/XKFYKsfqxihXUe9pU3JI+3vGkl+vyCoNNnPhJn3aLK1A==}
engines: {node: '>=16.13.0'}
peerDependencies:
typescript: '>=4.2.0'
dependencies:
- typescript: 5.2.2
+ typescript: 5.3.2
dev: true
/ts-dedent@2.2.0:
@@ -18897,8 +18897,8 @@ packages:
hasBin: true
dev: true
- /typescript@5.2.2:
- resolution: {integrity: sha512-mI4WrpHsbCIcwT9cF4FZvr80QUeKvsUsUvKDoR+X/7XHQH98xYD8YHZg7ANtz2GtZt/CBq2QJ0thkGJMHfqc1w==}
+ /typescript@5.3.2:
+ resolution: {integrity: sha512-6l+RyNy7oAHDfxC4FzSJcz9vnjTKxrLpDG5M2Vu4SHRVNg6xzqZp6LYSR9zjqQTu8DU/f5xwxUdADOkbrIX2gQ==}
engines: {node: '>=14.17'}
hasBin: true
@@ -19186,7 +19186,7 @@ packages:
diff: 5.1.0
diff-match-patch: 1.0.5
highlight.js: 11.8.0
- vue: 3.3.8(typescript@5.2.2)
+ vue: 3.3.8(typescript@5.3.2)
vue-demi: 0.13.11(vue@3.3.8)
dev: false
@@ -19400,7 +19400,7 @@ packages:
'@vue/composition-api':
optional: true
dependencies:
- vue: 3.3.8(typescript@5.2.2)
+ vue: 3.3.8(typescript@5.3.2)
dev: false
/vue-docgen-api@4.64.1(vue@3.3.8):
@@ -19444,7 +19444,7 @@ packages:
peerDependencies:
vue: '>=2'
dependencies:
- vue: 3.3.8(typescript@5.2.2)
+ vue: 3.3.8(typescript@5.3.2)
dev: true
/vue-template-compiler@2.7.14:
@@ -19454,19 +19454,19 @@ packages:
he: 1.2.0
dev: true
- /vue-tsc@1.8.22(typescript@5.2.2):
+ /vue-tsc@1.8.22(typescript@5.3.2):
resolution: {integrity: sha512-j9P4kHtW6eEE08aS5McFZE/ivmipXy0JzrnTgbomfABMaVKx37kNBw//irL3+LlE3kOo63XpnRigyPC3w7+z+A==}
hasBin: true
peerDependencies:
typescript: '*'
dependencies:
'@volar/typescript': 1.10.7
- '@vue/language-core': 1.8.22(typescript@5.2.2)
+ '@vue/language-core': 1.8.22(typescript@5.3.2)
semver: 7.5.4
- typescript: 5.2.2
+ typescript: 5.3.2
dev: true
- /vue@3.3.8(typescript@5.2.2):
+ /vue@3.3.8(typescript@5.3.2):
resolution: {integrity: sha512-5VSX/3DabBikOXMsxzlW8JyfeLKlG9mzqnWgLQLty88vdZL7ZJgrdgBOmrArwxiLtmS+lNNpPcBYqrhE6TQW5w==}
peerDependencies:
typescript: '*'
@@ -19479,7 +19479,7 @@ packages:
'@vue/runtime-dom': 3.3.8
'@vue/server-renderer': 3.3.8(vue@3.3.8)
'@vue/shared': 3.3.8
- typescript: 5.2.2
+ typescript: 5.3.2
/vuedraggable@4.1.0(vue@3.3.8):
resolution: {integrity: sha512-FU5HCWBmsf20GpP3eudURW3WdWTKIbEIQxh9/8GE806hydR9qZqRRxRE3RjqX7PkuLuMQG/A7n3cfj9rCEchww==}
@@ -19487,7 +19487,7 @@ packages:
vue: ^3.0.1
dependencies:
sortablejs: 1.14.0
- vue: 3.3.8(typescript@5.2.2)
+ vue: 3.3.8(typescript@5.3.2)
dev: false
/w3c-xmlserializer@4.0.0: