1
0
Fork 0
mirror of https://github.com/paricafe/misskey.git synced 2025-03-25 10:19:26 -05:00

Merge branch 'develop' into pari

This commit is contained in:
FLY_MC 2025-02-23 03:39:39 +08:00
commit 82548a0c6c
18 changed files with 1135 additions and 849 deletions

View file

@ -1,4 +1,4 @@
## Unreleased
## 2025.2.1
### General
- Feat: アクセストークン発行時に通知するように
@ -12,17 +12,19 @@
- Enhance: 開発者モードでメニューからファイルIDをコピー出来るように `#15441'
- Enhance: ノートに埋め込まれたメディアのコンテキストメニューから管理者用のファイル管理画面を開けるように ( #15440 )
- Enhance: リアクションする際に確認ダイアログを表示できるように
- Enhance: CWの注釈で入力済みの文字数を表示
- Fix: コンディショナルロールを手動で割り当てできる導線を削除 `#13529`
- Fix: 埋め込みプレイヤーから外部ページに移動できない問題を修正
- Fix: Play の再読込時に UI が以前の状態を引き継いでしまう問題を修正 `#14378`
- Fix: カスタム絵文字管理画面(beta)にてisSensitive/localOnlyの絞り込みが上手くいかない問題の修正 ( #15445 )
- Fix: CWの注釈が100文字を超えている場合、ート投稿ボタンを非アクティブに
### Server
- Fix: `following/invalidate`でフォロワーを解除しようとしているユーザーの情報を返すように
- Fix: オブジェクトストレージの設定でPrefixを設定していなかった場合nullまたは空文字になる問題を修正
- Fix: pgroongaでの検索時にはじめのキーワードのみが検索に使用される問題を修正
(Cherry-picked from https://activitypub.software/TransFem-org/Sharkey/-/merge_requests/886)
- Fix: メールアドレスの形式が正しくなければ以降の処理を行わないように
## 2025.2.0

View file

@ -1,6 +1,6 @@
{
"name": "misskey",
"version": "2025.2.0-pari.4",
"version": "2025.2.0-pari.5",
"codename": "nasubi",
"repository": {
"type": "git",

View file

@ -103,7 +103,7 @@
"bcryptjs": "2.4.3",
"blurhash": "2.0.5",
"body-parser": "1.20.3",
"bullmq": "5.41.0",
"bullmq": "5.41.1",
"cacheable-lookup": "7.0.0",
"cbor": "9.0.2",
"chalk": "5.4.1",

View file

@ -165,6 +165,13 @@ export class EmailService {
available: boolean;
reason: null | 'used' | 'format' | 'disposable' | 'mx' | 'smtp' | 'banned' | 'network' | 'blacklist';
}> {
if (!this.utilityService.validateEmailFormat(emailAddress)) {
return {
available: false,
reason: 'format',
};
}
const exist = await this.userProfilesRepository.countBy({
emailVerified: true,
email: emailAddress,

View file

@ -38,6 +38,14 @@ export class UtilityService {
return this.punyHost(uri) === this.toPuny(this.config.host);
}
// メールアドレスのバリデーションを行う
// https://html.spec.whatwg.org/multipage/input.html#valid-e-mail-address
@bindThis
public validateEmailFormat(email: string): boolean {
const regexp = /^[a-zA-Z0-9.!#$%&'*+\/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/;
return regexp.test(email);
}
@bindThis
public isBlockedHost(blockedHosts: string[], host: string | null): boolean {
if (host == null) return false;

View file

@ -107,12 +107,12 @@ export class InboxProcessorService implements OnApplicationShutdown {
// それでもわからなければ終了
if (authUser == null) {
throw new Bull.UnrecoverableError('skip: failed to resolve user');
throw new Bull.UnrecoverableError(`skip: failed to resolve user ${getApId(activity.actor)}`);
}
// publicKey がなくても終了
if (authUser.key == null) {
throw new Bull.UnrecoverableError('skip: failed to resolve user publicKey');
throw new Bull.UnrecoverableError(`skip: failed to resolve user publicKey ${getApId(activity.actor)}`);
}
// HTTP-Signatureの検証

View file

@ -27,7 +27,7 @@
"punycode.js": "2.3.1",
"rollup": "4.34.7",
"sass": "1.85.0",
"shiki": "2.3.2",
"shiki": "2.4.1",
"tinycolor2": "1.6.0",
"tsc-alias": "1.8.10",
"tsconfig-paths": "4.2.0",
@ -63,8 +63,8 @@
"prettier": "3.5.1",
"start-server-and-test": "2.0.10",
"vite-plugin-turbosnap": "1.0.3",
"vue-component-type-helpers": "2.2.0",
"vue-component-type-helpers": "2.2.2",
"vue-eslint-parser": "9.4.3",
"vue-tsc": "2.2.0"
"vue-tsc": "2.2.2"
}
}

View file

@ -103,6 +103,7 @@ export default [
// TODO: Error while loading rule '@typescript-eslint/naming-convention': Cannot use 'in' operator to search for 'type' in undefined のため一時的に無効化
// See https://github.com/misskey-dev/misskey/pull/15311
'js/i18n.ts',
'js-built/',
],
},
];

View file

@ -134,7 +134,6 @@ export function scrollToBottom(
export function isTopVisible(el: HTMLElement, tolerance = 1): boolean {
const scrollTop = getScrollPosition(el);
if (_DEV_) console.log(scrollTop, tolerance, scrollTop <= tolerance);
return scrollTop <= tolerance;
}

View file

@ -60,7 +60,7 @@
"rollup": "4.34.7",
"sanitize-html": "2.14.0",
"sass": "1.85.0",
"shiki": "2.3.2",
"shiki": "2.4.1",
"strict-event-emitter-types": "2.0.0",
"textarea-caret": "3.1.0",
"three": "0.173.0",
@ -135,8 +135,8 @@
"vite-plugin-turbosnap": "1.0.3",
"vitest": "3.0.5",
"vitest-fetch-mock": "0.4.3",
"vue-component-type-helpers": "2.2.0",
"vue-component-type-helpers": "2.2.2",
"vue-eslint-parser": "9.4.3",
"vue-tsc": "2.2.0"
"vue-tsc": "2.2.2"
}
}

View file

@ -103,19 +103,19 @@ SPDX-License-Identifier: AGPL-3.0-only
<script lang="ts" setup>
import { inject, watch, nextTick, onMounted, defineAsyncComponent, provide, shallowRef, ref, computed } from 'vue';
import type { ShallowRef } from 'vue';
import * as mfm from 'mfm-js';
import * as Misskey from 'misskey-js';
import insertTextAtCursor from 'insert-text-at-cursor';
import { toASCII } from 'punycode.js';
import autosize from 'autosize';
import { host, url } from '@@/js/config.js';
import type { ShallowRef } from 'vue';
import type { PostFormProps } from '@/types/post-form.js';
import type { PollEditorModelValue } from '@/components/MkPollEditor.vue';
import MkNoteSimple from '@/components/MkNoteSimple.vue';
import MkNotePreview from '@/components/MkNotePreview.vue';
import XPostFormAttaches from '@/components/MkPostFormAttaches.vue';
import MkPollEditor from '@/components/MkPollEditor.vue';
import type { PollEditorModelValue } from '@/components/MkPollEditor.vue';
import { erase, unique } from '@/scripts/array.js';
import { extractMentions } from '@/scripts/extract-mentions.js';
import { formatTimeString } from '@/scripts/format-time-string.js';

View file

@ -15,9 +15,9 @@ export type MkABehavior = 'window' | 'browser' | null;
<script lang="ts" setup>
import { computed, inject, shallowRef } from 'vue';
import { url } from '@@/js/config.js';
import * as os from '@/os.js';
import { copyToClipboard } from '@/scripts/copy-to-clipboard.js';
import { url } from '@@/js/config.js';
import { i18n } from '@/i18n.js';
import { useRouter } from '@/router/supplier.js';

View file

@ -242,8 +242,6 @@ export class Router extends EventEmitter<RouterEvent> implements IRouter {
hash,
};
if (_DEV_) console.log('Routing: ', path, queryString);
function check(routes: RouteDef[], _parts: string[]): Resolved | null {
forEachRouteLoop:
for (const route of routes) {

View file

@ -6,8 +6,8 @@
// PIZZAX --- A lightweight store
import { onUnmounted, ref, watch } from 'vue';
import type { Ref } from 'vue';
import { BroadcastChannel } from 'broadcast-channel';
import type { Ref } from 'vue';
import { $i } from '@/account.js';
import { misskeyApi } from '@/scripts/misskey-api.js';
import { get, set } from '@/scripts/idb-proxy.js';
@ -113,7 +113,6 @@ export class Storage<T extends StateDef> {
this.reactiveState[k].value = this.state[k] = this.mergeState<T[keyof T]['default']>(deviceAccountState[k], v.default);
} else {
this.reactiveState[k].value = this.state[k] = v.default;
if (_DEV_) console.log('Use default value', k, v.default);
}
}
@ -180,12 +179,9 @@ export class Storage<T extends StateDef> {
// (JSON.parse(JSON.stringify(value))の代わり)
const rawValue = deepClone(value);
if (_DEV_) console.log('set', key, rawValue, value);
this.reactiveState[key].value = this.state[key] = rawValue;
return this.addIdbSetJob(async () => {
if (_DEV_) console.log(`set ${String(key)} start`);
switch (this.def[key].where) {
case 'device': {
this.pizzaxChannel.postMessage({
@ -224,7 +220,6 @@ export class Storage<T extends StateDef> {
break;
}
}
if (_DEV_) console.log(`set ${String(key)} complete`);
});
}
@ -247,9 +242,9 @@ export class Storage<T extends StateDef> {
getter?: (v: T[K]['default']) => R,
setter?: (v: R) => T[K]['default'],
): {
get: () => R;
set: (value: R) => void;
} {
get: () => R;
set: (value: R) => void;
} {
const valueRef = ref(this.state[key]);
const stop = watch(this.reactiveState[key], val => {

View file

@ -1,7 +1,7 @@
{
"type": "module",
"name": "misskey-js",
"version": "2025.2.0",
"version": "2025.2.1-alpha.0",
"description": "Misskey SDK for JavaScript",
"license": "MIT",
"main": "./built/index.js",

154
pnpm-lock.yaml generated
View file

@ -192,8 +192,8 @@ importers:
specifier: 1.20.3
version: 1.20.3
bullmq:
specifier: 5.41.0
version: 5.41.0
specifier: 5.41.1
version: 5.41.1
cacheable-lookup:
specifier: 7.0.0
version: 7.0.0
@ -818,8 +818,8 @@ importers:
specifier: 1.85.0
version: 1.85.0
shiki:
specifier: 2.3.2
version: 2.3.2
specifier: 2.4.1
version: 2.4.1
strict-event-emitter-types:
specifier: 2.0.0
version: 2.0.0
@ -1038,14 +1038,14 @@ importers:
specifier: 0.4.3
version: 0.4.3(vitest@3.0.5(@types/debug@4.1.12)(@types/node@22.13.4)(happy-dom@17.1.0)(jsdom@26.0.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(msw@2.7.0(@types/node@22.13.4)(typescript@5.7.3))(sass@1.85.0)(terser@5.39.0)(tsx@4.19.2))
vue-component-type-helpers:
specifier: 2.2.0
version: 2.2.0
specifier: 2.2.2
version: 2.2.2
vue-eslint-parser:
specifier: 9.4.3
version: 9.4.3(eslint@9.20.1)
vue-tsc:
specifier: 2.2.0
version: 2.2.0(typescript@5.7.3)
specifier: 2.2.2
version: 2.2.2(typescript@5.7.3)
packages/frontend-embed:
dependencies:
@ -1104,8 +1104,8 @@ importers:
specifier: 1.85.0
version: 1.85.0
shiki:
specifier: 2.3.2
version: 2.3.2
specifier: 2.4.1
version: 2.4.1
tinycolor2:
specifier: 1.6.0
version: 1.6.0
@ -1204,14 +1204,14 @@ importers:
specifier: 1.0.3
version: 1.0.3
vue-component-type-helpers:
specifier: 2.2.0
version: 2.2.0
specifier: 2.2.2
version: 2.2.2
vue-eslint-parser:
specifier: 9.4.3
version: 9.4.3(eslint@9.20.1)
vue-tsc:
specifier: 2.2.0
version: 2.2.0(typescript@5.7.3)
specifier: 2.2.2
version: 2.2.2(typescript@5.7.3)
packages/frontend-shared:
dependencies:
@ -3634,26 +3634,26 @@ packages:
engines: {node: '>=14.18'}
hasBin: true
'@shikijs/core@2.3.2':
resolution: {integrity: sha512-s7vyL3LzUKm3Qwf36zRWlavX9BQMZTIq9B1almM63M5xBuSldnsTHCmsXzoF/Kyw4k7Xgas7yAyJz9VR/vcP1A==}
'@shikijs/core@2.4.1':
resolution: {integrity: sha512-c7AkRsCpSVjKHsTwuvRVMEAdADq4Z1KoodcS4LaIqMzBTM0+Q572VRk1PIxtzaMtdiHlRPO6mH5iPdJoTV59mQ==}
'@shikijs/engine-javascript@2.3.2':
resolution: {integrity: sha512-w3IEMu5HfL/OaJTsMbIfZ1HRPnWVYRANeDtmsdIIEgUOcLjzFJFQwlnkckGjKHekEzNqlMLbgB/twnfZ/EEAGg==}
'@shikijs/engine-javascript@2.4.1':
resolution: {integrity: sha512-2DnVilsUCgA81lnxt67dEZf2C6hdRzDYIs7yG33yWQIjljAxlXi3MKt7n0BXKr6uT5sZ0JdtX/+Pq2FN31YVdQ==}
'@shikijs/engine-oniguruma@2.3.2':
resolution: {integrity: sha512-vikMY1TroyZXUHIXbMnvY/mjtOxMn+tavcfAeQPgWS9FHcgFSUoEtywF5B5sOLb9NXb8P2vb7odkh3nj15/00A==}
'@shikijs/engine-oniguruma@2.4.1':
resolution: {integrity: sha512-PvN76WM2HjmSbNQmLl8Jzm3h8Hsf/g9kKs3jPWKD6uMpCfk+M3HalWONz85zQF4lqrI3lamMTV5pHcOVSswpqg==}
'@shikijs/langs@2.3.2':
resolution: {integrity: sha512-UqI6bSxFzhexIJficZLKeB1L2Sc3xoNiAV0yHpfbg5meck93du+EKQtsGbBv66Ki53XZPhnR/kYkOr85elIuFw==}
'@shikijs/langs@2.4.1':
resolution: {integrity: sha512-MLpCfw8gqWAgYvkV4Qsh/yjJirGhqwBQqtNgNrYOES7IoMTsthQ2x/8+JEO1hIDyS3qJPSooxCGQpX7EXsiFpQ==}
'@shikijs/themes@2.3.2':
resolution: {integrity: sha512-QAh7D/hhfYKHibkG2tti8vxNt3ekAH5EqkXJeJbTh7FGvTCWEI7BHqNCtMdjFvZ0vav5nvUgdvA7/HI7pfsB4w==}
'@shikijs/themes@2.4.1':
resolution: {integrity: sha512-U+Yt03Qfy9251BjQkPf9IkbiRypCqLcxfeCkk9cjqAuAhgM6G+v8GRHB+7VR1OQu92sWkhmk+zdbJAhgAnnL8g==}
'@shikijs/types@2.3.2':
resolution: {integrity: sha512-CBaMY+a3pepyC4SETi7+bSzO0f6hxEQJUUuS4uD7zppzjmrN4ZRtBqxaT+wOan26CR9eeJ5iBhc4qvWEwn7Eeg==}
'@shikijs/types@2.4.1':
resolution: {integrity: sha512-fE73tqCjiHIDUq7SYU8i4d9TyOcJh2u2J8aQGqQs0KkFg6FbBEQoDiBASMM5Vxqag1VS58y+MHLBuSQmwtB4Og==}
'@shikijs/vscode-textmate@10.0.1':
resolution: {integrity: sha512-fTIQwLF+Qhuws31iw7Ncl1R3HUDtGwIipiJ9iU+UsDUwMhegFcQKQHd51nZjb7CArq0MvON8rbgCGQYWHUKAdg==}
'@shikijs/vscode-textmate@10.0.2':
resolution: {integrity: sha512-83yeghZ2xxin3Nj8z1NMd/NCuca+gsYXswywDy5bHvwlWL8tpTQmzGeUuHd9FC3E/SBEMvzJRwWEOz5gGes9Qg==}
'@sideway/address@4.1.5':
resolution: {integrity: sha512-IqO/DUQHUkPeixNQ8n0JA6102hT9CmaljNTPmQ1u8MEhBo/R4Q8eKLN/vGZxuebwOroDB4cbpjheD4+/sKFK4Q==}
@ -4833,6 +4833,14 @@ packages:
typescript:
optional: true
'@vue/language-core@2.2.2':
resolution: {integrity: sha512-QotO41kurE5PLf3vrNgGTk3QswO2PdUFjBwNiOi7zMmGhwb25PSTh9hD1MCgKC06AVv+8sZQvlL3Do4TTVHSiQ==}
peerDependencies:
typescript: '*'
peerDependenciesMeta:
typescript:
optional: true
'@vue/reactivity@3.5.13':
resolution: {integrity: sha512-NaCwtw8o48B9I6L1zl2p41OHo/2Z4wqYGGIK1Khu5T7yxrn+ATOixn/Udn2m+6kZKB/J7cuT9DbWWhRxqixACg==}
@ -4998,6 +5006,9 @@ packages:
alien-signals@0.4.14:
resolution: {integrity: sha512-itUAVzhczTmP2U5yX67xVpsbbOiquusbWVyA9N+sy6+r6YVbFkahXvNCeEPWEOMhwDYwbVbGHFkVL03N9I5g+Q==}
alien-signals@1.0.4:
resolution: {integrity: sha512-DJqqQD3XcsaQcQ1s+iE2jDUZmmQpXwHiR6fCAim/w87luaW+vmLY8fMlrdkmRwzaFXhkxf3rqPCR59tKVv1MDw==}
ansi-colors@4.1.3:
resolution: {integrity: sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==}
engines: {node: '>=6'}
@ -5339,8 +5350,8 @@ packages:
resolution: {integrity: sha512-WDtdLmJvAuNNPzByAYpRo2rF1Mmradw6gvWsQKf63476DDXmomT9zUiGypLcG4ibIM67vhAj8jJRdbmEws2Aqw==}
engines: {node: '>=6.14.2'}
bullmq@5.41.0:
resolution: {integrity: sha512-GGfKu2DHGIvbnMtQjR/82wvWsdCaGxN5JGR3pvKd1mkDI9DsWn8r0+pAzZ6Y4ImWXFaetaAqywOhv2Ik0R2m3g==}
bullmq@5.41.1:
resolution: {integrity: sha512-bVQGR4ARM+wRJSw66114AKwO8SwS2ZF5TIvwQ9NL6Iepq6f8jnG8EjMMXL8J1pyR1eNz5bOikPeED/8ErLU6FQ==}
buraha@0.0.1:
resolution: {integrity: sha512-G563A0mTbzknm2jDaNxfZuNKIdeArs8T+XQN6t+KbmgnOoevXSXhKDkyf8Md/36Jrx99ikwbCag37VGe3myExQ==}
@ -9458,8 +9469,8 @@ packages:
resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==}
engines: {node: '>=8'}
shiki@2.3.2:
resolution: {integrity: sha512-UZhz/gsUz7DHFbQBOJP7eXqvKyYvMGramxQiSDc83M/7OkWm6OdVHAReEc3vMLh6L6TRhgL9dvhXz9XDkCDaaw==}
shiki@2.4.1:
resolution: {integrity: sha512-1MmgQgSSx04OSUPqTg7deJudOL4vXpkNEJHlzKEoVNOLFUmXPB/vRvJoLxzy/Un+UIp4zryXJcWDUAUTOSbDyw==}
shimmer@1.2.1:
resolution: {integrity: sha512-sQTKC1Re/rM6XyFM6fIAGHRPVGvyXfgzIDvzoq608vM+jeyVD0Tu1E6Np0Kc2zAIFWIj963V2800iF/9LPieQw==}
@ -10541,8 +10552,8 @@ packages:
peerDependencies:
vue: '>=2'
vue-tsc@2.2.0:
resolution: {integrity: sha512-gtmM1sUuJ8aSb0KoAFmK9yMxb8TxjewmxqTJ1aKphD5Cbu0rULFY6+UQT51zW7SpUcenfPUuflKyVwyx9Qdnxg==}
vue-tsc@2.2.2:
resolution: {integrity: sha512-1icPKkxAA5KTAaSwg0wVWdE48EdsH8fgvcbAiqojP4jXKl6LEM3soiW1aG/zrWrFt8Mw1ncG2vG1PvpZpVfehA==}
hasBin: true
peerDependencies:
typescript: '>=5.0.0'
@ -13320,40 +13331,40 @@ snapshots:
transitivePeerDependencies:
- supports-color
'@shikijs/core@2.3.2':
'@shikijs/core@2.4.1':
dependencies:
'@shikijs/engine-javascript': 2.3.2
'@shikijs/engine-oniguruma': 2.3.2
'@shikijs/types': 2.3.2
'@shikijs/vscode-textmate': 10.0.1
'@shikijs/engine-javascript': 2.4.1
'@shikijs/engine-oniguruma': 2.4.1
'@shikijs/types': 2.4.1
'@shikijs/vscode-textmate': 10.0.2
'@types/hast': 3.0.4
hast-util-to-html: 9.0.4
'@shikijs/engine-javascript@2.3.2':
'@shikijs/engine-javascript@2.4.1':
dependencies:
'@shikijs/types': 2.3.2
'@shikijs/vscode-textmate': 10.0.1
'@shikijs/types': 2.4.1
'@shikijs/vscode-textmate': 10.0.2
oniguruma-to-es: 3.1.0
'@shikijs/engine-oniguruma@2.3.2':
'@shikijs/engine-oniguruma@2.4.1':
dependencies:
'@shikijs/types': 2.3.2
'@shikijs/vscode-textmate': 10.0.1
'@shikijs/types': 2.4.1
'@shikijs/vscode-textmate': 10.0.2
'@shikijs/langs@2.3.2':
'@shikijs/langs@2.4.1':
dependencies:
'@shikijs/types': 2.3.2
'@shikijs/types': 2.4.1
'@shikijs/themes@2.3.2':
'@shikijs/themes@2.4.1':
dependencies:
'@shikijs/types': 2.3.2
'@shikijs/types': 2.4.1
'@shikijs/types@2.3.2':
'@shikijs/types@2.4.1':
dependencies:
'@shikijs/vscode-textmate': 10.0.1
'@shikijs/vscode-textmate': 10.0.2
'@types/hast': 3.0.4
'@shikijs/vscode-textmate@10.0.1': {}
'@shikijs/vscode-textmate@10.0.2': {}
'@sideway/address@4.1.5':
dependencies:
@ -14880,6 +14891,19 @@ snapshots:
optionalDependencies:
typescript: 5.7.3
'@vue/language-core@2.2.2(typescript@5.7.3)':
dependencies:
'@volar/language-core': 2.4.11
'@vue/compiler-dom': 3.5.13
'@vue/compiler-vue2': 2.7.16
'@vue/shared': 3.5.13
alien-signals: 1.0.4
minimatch: 9.0.5
muggle-string: 0.4.1
path-browserify: 1.0.1
optionalDependencies:
typescript: 5.7.3
'@vue/reactivity@3.5.13':
dependencies:
'@vue/shared': 3.5.13
@ -14907,7 +14931,7 @@ snapshots:
'@vue/test-utils@2.4.6':
dependencies:
js-beautify: 1.15.3
vue-component-type-helpers: 2.2.0
vue-component-type-helpers: 2.2.2
'@webgpu/types@0.1.38': {}
@ -15087,6 +15111,8 @@ snapshots:
alien-signals@0.4.14: {}
alien-signals@1.0.4: {}
ansi-colors@4.1.3: {}
ansi-escapes@4.3.2:
@ -15487,7 +15513,7 @@ snapshots:
node-gyp-build: 4.8.4
optional: true
bullmq@5.41.0:
bullmq@5.41.1:
dependencies:
cron-parser: 4.9.0
ioredis: 5.5.0
@ -20472,15 +20498,15 @@ snapshots:
shebang-regex@3.0.0: {}
shiki@2.3.2:
shiki@2.4.1:
dependencies:
'@shikijs/core': 2.3.2
'@shikijs/engine-javascript': 2.3.2
'@shikijs/engine-oniguruma': 2.3.2
'@shikijs/langs': 2.3.2
'@shikijs/themes': 2.3.2
'@shikijs/types': 2.3.2
'@shikijs/vscode-textmate': 10.0.1
'@shikijs/core': 2.4.1
'@shikijs/engine-javascript': 2.4.1
'@shikijs/engine-oniguruma': 2.4.1
'@shikijs/langs': 2.4.1
'@shikijs/themes': 2.4.1
'@shikijs/types': 2.4.1
'@shikijs/vscode-textmate': 10.0.2
'@types/hast': 3.0.4
shimmer@1.2.1: {}
@ -21532,10 +21558,10 @@ snapshots:
dependencies:
vue: 3.5.13(typescript@5.7.3)
vue-tsc@2.2.0(typescript@5.7.3):
vue-tsc@2.2.2(typescript@5.7.3):
dependencies:
'@volar/typescript': 2.4.11
'@vue/language-core': 2.2.0(typescript@5.7.3)
'@vue/language-core': 2.2.2(typescript@5.7.3)
typescript: 5.7.3
vue@3.5.13(typescript@5.7.3):

File diff suppressed because it is too large Load diff

View file

@ -11,14 +11,14 @@
"devDependencies": {
"@types/mdast": "4.0.4",
"@types/node": "22.13.4",
"@vitest/coverage-v8": "1.6.1",
"@vitest/coverage-v8": "3.0.5",
"mdast-util-to-string": "4.0.0",
"remark": "15.0.1",
"remark-parse": "11.0.0",
"typescript": "5.7.3",
"unified": "11.0.5",
"vite": "5.4.14",
"vite-node": "1.6.1",
"vitest": "1.6.1"
"vite": "6.1.0",
"vite-node": "3.0.5",
"vitest": "3.0.5"
}
}