Merge branch 'develop' into feat/scylladb

This commit is contained in:
Namekuji 2023-09-20 01:56:34 -04:00
commit 19d7dc8b84
No known key found for this signature in database
GPG key ID: 1D62332C07FBA532
23 changed files with 195 additions and 88 deletions

View file

@ -675,7 +675,7 @@ emptyToDisableSmtpAuth: "Leave username and password empty to disable SMTP verif
smtpSecure: "Use implicit SSL/TLS for SMTP connections"
smtpSecureInfo: "Turn this off when using STARTTLS"
testEmail: "Test email delivery"
wordMute: "Word mute"
wordMute: "Word and language mutes"
regexpError: "Regular Expression error"
regexpErrorDescription: "An error occurred in the regular expression on line {line}
of your {tab} word mutes:"
@ -1375,14 +1375,19 @@ _menuDisplay:
hide: "Hide"
_wordMute:
muteWords: "Muted words"
muteLangs: "Muted Languages"
muteWordsDescription: "Separate with spaces for an AND condition or with line breaks
for an OR condition."
muteWordsDescription2: "Surround keywords with slashes to use regular expressions."
muteLangsDescription: "Separate with spaces or line breaks for an OR condition."
muteLangsDescription2: "Use language code e.g. en, fr, ja, zh."
softDescription: "Hide posts that fulfil the set conditions from the timeline."
langDescription: "Hide posts that match set language from the timeline."
hardDescription: "Prevents posts fulfilling the set conditions from being added
to the timeline. In addition, these posts will not be added to the timeline even
if the conditions are changed."
soft: "Soft"
lang: "Language"
hard: "Hard"
mutedNotes: "Muted posts"
_instanceMute:

View file

@ -1200,11 +1200,16 @@ _menuDisplay:
hide: "隠す"
_wordMute:
muteWords: "ミュートするワード"
muteLangs: "ミュートされた言語"
muteWordsDescription: "スペースで区切るとAND指定になり、改行で区切るとOR指定になります。"
muteWordsDescription2: "キーワードをスラッシュで囲むと正規表現になります。"
muteLangsDescription: "OR 条件の場合はスペースまたは改行で区切ります。"
muteLangsDescription2: "言語コードを使用します。例: en, fr, ja, zh."
softDescription: "指定した条件の投稿をタイムラインから隠します。"
langDescription: "設定した言語に一致する投稿をタイムラインから非表示にします。"
hardDescription: "指定した条件の投稿をタイムラインに追加しないようにします。追加されなかった投稿は、条件を変更しても除外されたままになります。"
soft: "ソフト"
lang: "言語"
hard: "ハード"
mutedNotes: "ミュートされた投稿"
_instanceMute:

View file

@ -1110,11 +1110,16 @@ _menuDisplay:
hide: "隐藏"
_wordMute:
muteWords: "过滤词"
muteLangs: "过滤语言"
muteWordsDescription: "AND 条件用空格分隔OR 条件用换行符分隔。"
muteWordsDescription2: "将关键字用斜线括起来表示正则表达式。"
muteLangsDescription: "OR 条件用空格,换行符分隔"
muteLangsDescription2: "使用语言代码。例: en, fr, ja, zh."
softDescription: "隐藏时间线中指定条件的帖子。"
langDescription: "从时间线中隐藏与设置语言匹配的帖子。"
hardDescription: "防止将具有指定条件的帖子添加到时间线。 即使您更改条件,原先未添加的帖文也会被排除在外。"
soft: "软过滤"
lang: "语言"
hard: "硬过滤"
mutedNotes: "已过滤的帖子"
_instanceMute:

View file

@ -1,6 +1,6 @@
{
"name": "firefish",
"version": "1.0.5-dev13",
"version": "1.0.5-dev14",
"codename": "aqua",
"repository": {
"type": "git",

View file

@ -133,6 +133,7 @@
"tar-stream": "^3.1.6",
"tesseract.js": "^4.1.1",
"tinycolor2": "1.6.0",
"tinyld": "^1.3.4",
"tmp": "0.2.1",
"twemoji-parser": "14.0.0",
"typeorm": "0.3.17",
@ -144,7 +145,7 @@
},
"devDependencies": {
"@swc/cli": "^0.1.62",
"@swc/core": "^1.3.75",
"@swc/core": "1.3.82",
"@types/adm-zip": "^0.5.0",
"@types/bcryptjs": "2.4.2",
"@types/escape-regexp": "0.0.1",

View file

@ -0,0 +1,7 @@
declare module "langdetect" {
interface DetectResult {
lang: string;
prob: number;
}
export function detect(words: string): DetectResult[];
}

View file

@ -38,6 +38,7 @@ import {
} from "@/db/scylla.js";
import { LocalFollowingsCache } from "@/misc/cache.js";
import { userByIdCache } from "@/services/user-cache.js";
import { detect as detectLanguage_ } from "tinyld";
export async function populatePoll(
note: Note | ScyllaNote,
@ -302,6 +303,8 @@ export const NoteRepository = db.getRepository(Note).extend({
note.emojis.concat(reactionEmojiNames),
host,
);
const lang = detectLanguage_(`${note.cw ?? ''}\n${note.text ?? ''}`) ?? "unknown"
const reactionEmoji = await populateEmojis(reactionEmojiNames, host);
const packed: Packed<"Note"> = await awaitAll({
id: note.id,
@ -376,6 +379,7 @@ export const NoteRepository = db.getRepository(Note).extend({
: undefined,
}
: {}),
lang: lang,
});
if (packed.user.isCat && packed.user.speakAsCat && packed.text) {

View file

@ -193,8 +193,12 @@ export default define(meta, paramDef, async (ps, user) => {
.andWhere(
new Brackets((qb) => {
qb.where("note.userId = :meId", { meId: user.id });
if (hasFollowing)
qb.orWhere(`note.userId IN (${followingQuery.getQuery()})`);
if (hasFollowing) {
qb.orWhere(
`note.userId IN (${followingQuery.getQuery()})`,
followingQuery.getParameters(),
);
}
}),
)
.leftJoinAndSelect("note.reply", "reply")

View file

@ -354,7 +354,12 @@ const isMyRenote = $i && $i.id === note.value.userId;
const showContent = ref(false);
const isDeleted = ref(false);
const muted = ref(
getWordSoftMute(note.value, $i, defaultStore.state.mutedWords),
getWordSoftMute(
note.value,
$i,
defaultStore.state.mutedWords,
defaultStore.state.mutedLangs,
),
);
const translation = ref(null);
const translating = ref(false);

View file

@ -210,7 +210,12 @@ const reactButton = ref<HTMLElement>();
const showContent = ref(false);
const isDeleted = ref(false);
const muted = ref(
getWordSoftMute(note.value, $i, defaultStore.state.mutedWords),
getWordSoftMute(
note.value,
$i,
defaultStore.state.mutedWords,
defaultStore.state.mutedLangs,
),
);
const translation = ref(null);
const translating = ref(false);

View file

@ -266,7 +266,12 @@ const appearNote = computed(() =>
);
const isDeleted = ref(false);
const muted = ref(
getWordSoftMute(note.value, $i, defaultStore.state.mutedWords),
getWordSoftMute(
note.value,
$i,
defaultStore.state.mutedWords,
defaultStore.state.mutedLangs,
),
);
const translation = ref(null);
const translating = ref(false);

View file

@ -29,7 +29,7 @@
>{{ maxTextLength - textLength }}</span
>
<span v-if="localOnly" class="local-only"
><i class="ph-hand-fist ph-bold ph-lg"></i
><i class="ph-users ph-bold ph-lg"></i
></span>
<button
ref="visibilityButton"

View file

@ -195,7 +195,7 @@ const renote = (viaKeyboard = false, ev?: MouseEvent) => {
if (canRenote.value) {
buttonActions.push({
text: `${i18n.ts.renote} (${i18n.ts.local})`,
icon: "ph-hand-fist ph-bold ph-lg",
icon: "ph-users ph-bold ph-lg",
danger: false,
action: () => {
vibrate([30, 30, 60]);

View file

@ -19,7 +19,7 @@
<span v-if="note.localOnly" :class="$style.localOnly"
><i
v-tooltip="i18n.ts._visibility.localOnly"
class="ph-hand-fist ph-bold ph-lg"
class="ph-users ph-bold ph-lg"
></i
></span>
</template>

View file

@ -97,7 +97,7 @@
@click="localOnly = !localOnly"
>
<div :class="$style.icon">
<i class="ph-hand-fist ph-bold ph-lg"></i>
<i class="ph-users ph-bold ph-lg"></i>
</div>
<div :class="$style.body">
<span :class="$style.itemTitle">{{

View file

@ -431,7 +431,7 @@ const headerActions = computed(() => [
const headerTabs = computed(() => [
{
key: "local",
icon: "ph-hand-fist ph-bold ph-lg",
icon: "ph-users ph-bold ph-lg",
title: i18n.ts.local,
},
{

View file

@ -9,7 +9,7 @@
<template #empty
><FormInfo>{{ i18n.ts.noUsers }}</FormInfo></template
>
<template #default="{ items }">
<template #default="{ items }" class="_formlinks">
<FormLink
v-for="mute in items"
:key="mute.id"
@ -25,7 +25,7 @@
<template #empty
><FormInfo>{{ i18n.ts.noUsers }}</FormInfo></template
>
<template #default="{ items }">
<template #default="{ items }" class="_formlinks">
<FormLink
v-for="block in items"
:key="block.id"

View file

@ -17,6 +17,17 @@
}}</template
>
</FormTextarea>
<MkInfo class="_formBlock">{{
i18n.ts._wordMute.langDescription
}}</MkInfo>
<FormTextarea v-model="softMutedLangs" class="_formBlock">
<span>{{ i18n.ts._wordMute.muteLangs }}</span>
<template #caption
>{{ i18n.ts._wordMute.muteLangsDescription }}<br />{{
i18n.ts._wordMute.muteLangsDescription2
}}</template
>
</FormTextarea>
</div>
<div v-show="tab === 'hard'">
<MkInfo class="_formBlock"
@ -76,6 +87,7 @@ const render = (mutedWords) =>
const tab = ref("soft");
const softMutedWords = ref(render(defaultStore.state.mutedWords));
const softMutedLangs = ref(render(defaultStore.state.mutedLangs));
const hardMutedWords = ref(render($i!.mutedWords));
const hardWordMutedNotesCount = ref(null);
const changed = ref(false);
@ -88,6 +100,10 @@ watch(softMutedWords, () => {
changed.value = true;
});
watch(softMutedLangs, () => {
changed.value = true;
});
watch(hardMutedWords, () => {
changed.value = true;
});
@ -134,9 +150,10 @@ async function save() {
return lines;
};
let softMutes, hardMutes;
let softMutes, softMLangs, hardMutes;
try {
softMutes = parseMutes(softMutedWords.value, i18n.ts._wordMute.soft);
softMLangs = parseMutes(softMutedLangs.value, i18n.ts._wordMute.lang);
hardMutes = parseMutes(hardMutedWords.value, i18n.ts._wordMute.hard);
} catch (err) {
// already displayed error message in parseMutes
@ -144,6 +161,7 @@ async function save() {
}
defaultStore.set("mutedWords", softMutes);
defaultStore.set("mutedLangs", softMLangs);
await os.api("i/update", {
mutedWords: hardMutes,
});

View file

@ -6,6 +6,19 @@ export interface Muted {
const NotMuted = { muted: false, matched: [] };
function checkLangMute(
note: NoteLike,
mutedLangs: Array<string | string[]>,
): Muted {
const mutedLangList = new Set(
mutedLangs.reduce((arr, x) => [...arr, ...(Array.isArray(x) ? x : [x])]),
);
if (mutedLangList.has((note.lang?.[0]?.lang || "").split("-")[0])) {
return { muted: true, matched: [note.lang?.[0]?.lang] };
}
return NotMuted;
}
function checkWordMute(
note: NoteLike,
mutedWords: Array<string | string[]>,
@ -62,6 +75,7 @@ export function getWordSoftMute(
note: Record<string, any>,
me: Record<string, any> | null | undefined,
mutedWords: Array<string | string[]>,
mutedLangs: Array<string | string[]>,
): Muted {
// 自分自身
if (me && note.userId === me.id) {
@ -91,6 +105,29 @@ export function getWordSoftMute(
}
}
}
if (mutedLangs.length > 0) {
let noteLangMuted = checkLangMute(note, mutedLangs);
if (noteLangMuted.muted) {
noteLangMuted.what = "note";
return noteLangMuted;
}
if (note.renote) {
let renoteLangMuted = checkLangMute(note, mutedLangs);
if (renoteLangMuted.muted) {
renoteLangMuted.what = note.text == null ? "renote" : "quote";
return renoteLangMuted;
}
}
if (note.reply) {
let replyLangMuted = checkLangMute(note, mutedLangs);
if (replyLangMuted.muted) {
replyLangMuted.what = "reply";
return replyLangMuted;
}
}
}
return NotMuted;
}

View file

@ -101,6 +101,10 @@ export const defaultStore = markRaw(
where: "account",
default: [],
},
mutedLangs: {
where: "account",
default: [],
},
mutedAds: {
where: "account",
default: [] as string[],

View file

@ -25,7 +25,7 @@
"@microsoft/api-extractor": "^7.36.0",
"@microsoft/api-documenter": "^7.22.21",
"@swc/cli": "^0.1.62",
"@swc/core": "^1.3.62",
"@swc/core": "1.3.82",
"@types/jest": "^27.4.0",
"@types/node": "20.3.1",
"jest": "^27.4.5",

View file

@ -10,7 +10,7 @@
},
"devDependencies": {
"@swc/cli": "^0.1.62",
"@swc/core": "^1.3.62",
"@swc/core": "1.3.82",
"@swc/core-android-arm64": "1.3.11",
"firefish-js": "workspace:*",
"idb-keyval": "^6.2.1",

View file

@ -414,6 +414,9 @@ importers:
tinycolor2:
specifier: 1.6.0
version: 1.6.0
tinyld:
specifier: ^1.3.4
version: 1.3.4
tmp:
specifier: 0.2.1
version: 0.2.1
@ -448,10 +451,10 @@ importers:
devDependencies:
'@swc/cli':
specifier: ^0.1.62
version: 0.1.62(@swc/core@1.3.85)(chokidar@3.5.3)
version: 0.1.62(@swc/core@1.3.82)(chokidar@3.5.3)
'@swc/core':
specifier: ^1.3.75
version: 1.3.85
specifier: 1.3.82
version: 1.3.82
'@types/adm-zip':
specifier: ^0.5.0
version: 0.5.1
@ -598,13 +601,13 @@ importers:
version: 2.0.0
swc-loader:
specifier: ^0.2.3
version: 0.2.3(@swc/core@1.3.85)(webpack@5.88.2)
version: 0.2.3(@swc/core@1.3.82)(webpack@5.88.2)
ts-loader:
specifier: 9.4.4
version: 9.4.4(typescript@5.1.6)(webpack@5.88.2)
ts-node:
specifier: 10.9.1
version: 10.9.1(@swc/core@1.3.85)(@types/node@18.11.18)(typescript@5.1.6)
version: 10.9.1(@swc/core@1.3.82)(@types/node@18.11.18)(typescript@5.1.6)
tsconfig-paths:
specifier: 4.2.0
version: 4.2.0
@ -613,7 +616,7 @@ importers:
version: 5.1.6
webpack:
specifier: ^5.88.2
version: 5.88.2(@swc/core@1.3.85)(webpack-cli@5.1.4)
version: 5.88.2(@swc/core@1.3.82)(webpack-cli@5.1.4)
ws:
specifier: 8.13.0
version: 8.13.0
@ -912,10 +915,10 @@ importers:
version: 7.37.0(@types/node@20.3.1)
'@swc/cli':
specifier: ^0.1.62
version: 0.1.62(@swc/core@1.3.85)(chokidar@3.5.3)
version: 0.1.62(@swc/core@1.3.82)(chokidar@3.5.3)
'@swc/core':
specifier: ^1.3.62
version: 1.3.85
specifier: 1.3.82
version: 1.3.82
'@types/jest':
specifier: ^27.4.0
version: 27.5.2
@ -939,7 +942,7 @@ importers:
version: 27.1.5(@babel/core@7.22.20)(@types/jest@27.5.2)(jest@27.5.1)(typescript@5.1.3)
ts-node:
specifier: 10.4.0
version: 10.4.0(@swc/core@1.3.85)(@types/node@20.3.1)(typescript@5.1.3)
version: 10.4.0(@swc/core@1.3.82)(@types/node@20.3.1)(typescript@5.1.3)
tsd:
specifier: ^0.28.1
version: 0.28.1
@ -1069,10 +1072,10 @@ importers:
devDependencies:
'@swc/cli':
specifier: ^0.1.62
version: 0.1.62(@swc/core@1.3.85)(chokidar@3.5.3)
version: 0.1.62(@swc/core@1.3.82)(chokidar@3.5.3)
'@swc/core':
specifier: ^1.3.62
version: 1.3.85
specifier: 1.3.82
version: 1.3.82
'@swc/core-android-arm64':
specifier: 1.3.11
version: 1.3.11
@ -1084,10 +1087,10 @@ importers:
version: 6.2.1
swc-loader:
specifier: ^0.2.3
version: 0.2.3(@swc/core@1.3.85)(webpack@5.88.2)
version: 0.2.3(@swc/core@1.3.82)(webpack@5.88.2)
webpack:
specifier: ^5.85.1
version: 5.88.2(@swc/core@1.3.85)(webpack-cli@5.1.4)
version: 5.88.2(@swc/core@1.3.82)(webpack-cli@5.1.4)
webpack-cli:
specifier: ^5.1.3
version: 5.1.4(webpack@5.88.2)
@ -3277,7 +3280,7 @@ packages:
resolution: {integrity: sha512-Uy0+khmZqUrUGm5dmMqVlnvufZRSK0FbYzVgp0UMstm+F5+W2/jnEEQyc9vo1ZR/E5ZI/B1WjjoTqBqwJL6Krw==}
dev: false
/@swc/cli@0.1.62(@swc/core@1.3.85)(chokidar@3.5.3):
/@swc/cli@0.1.62(@swc/core@1.3.82)(chokidar@3.5.3):
resolution: {integrity: sha512-kOFLjKY3XH1DWLfXL1/B5MizeNorHR8wHKEi92S/Zi9Md/AK17KSqR8MgyRJ6C1fhKHvbBCl8wboyKAFXStkYw==}
engines: {node: '>= 12.13'}
hasBin: true
@ -3289,7 +3292,7 @@ packages:
optional: true
dependencies:
'@mole-inc/bin-wrapper': 8.0.1
'@swc/core': 1.3.85
'@swc/core': 1.3.82
chokidar: 3.5.3
commander: 7.2.0
fast-glob: 3.3.1
@ -3306,88 +3309,88 @@ packages:
dependencies:
'@swc/wasm': 1.2.130
/@swc/core-darwin-arm64@1.3.85:
resolution: {integrity: sha512-jTikp+i4nO4Ofe6qGm4I3sFeebD1OvueBCHITux5tQKD6umN1c2z4CRGv6K49NIz/qEpUcdr6Qny6K+3yibVFQ==}
/@swc/core-darwin-arm64@1.3.82:
resolution: {integrity: sha512-JfsyDW34gVKD3uE0OUpUqYvAD3yseEaicnFP6pB292THtLJb0IKBBnK50vV/RzEJtc1bR3g1kNfxo2PeurZTrA==}
engines: {node: '>=10'}
cpu: [arm64]
os: [darwin]
requiresBuild: true
optional: true
/@swc/core-darwin-x64@1.3.85:
resolution: {integrity: sha512-3uHYkjVU+2F+YbVYtq5rH0uCJIztFTALaS3mQEfQUZKXZ5/8jD5titTCRqFKtSlQg0CzaFZgsYsuqwYBmgN0mA==}
/@swc/core-darwin-x64@1.3.82:
resolution: {integrity: sha512-ogQWgNMq7qTpITjcP3dnzkFNj7bh6SwMr859GvtOTrE75H7L7jDWxESfH4f8foB/LGxBKiDNmxKhitCuAsZK4A==}
engines: {node: '>=10'}
cpu: [x64]
os: [darwin]
requiresBuild: true
optional: true
/@swc/core-linux-arm-gnueabihf@1.3.85:
resolution: {integrity: sha512-ouHzAHsFaEOkRuoTAOI/8n2m8BQAAnb4vr/xbMhhDOmix0lp5eNsW5Iac/EcJ2uG6B3n7P2K8oycj9SWkj+pfw==}
/@swc/core-linux-arm-gnueabihf@1.3.82:
resolution: {integrity: sha512-7TMXG1lXlNhD0kUiEqs+YlGV4irAdBa2quuy+XI3oJf2fBK6dQfEq4xBy65B3khrorzQS3O0oDGQ+cmdpHExHA==}
engines: {node: '>=10'}
cpu: [arm]
os: [linux]
requiresBuild: true
optional: true
/@swc/core-linux-arm64-gnu@1.3.85:
resolution: {integrity: sha512-/Z1CZOWiO+NqJEh1J20PIxQFHMH43upQJ1l7FJ5Z7+MyuYF8WkeJ7OSovau729pBR+38vvvccEJrMZIztfv7hQ==}
/@swc/core-linux-arm64-gnu@1.3.82:
resolution: {integrity: sha512-26JkOujbzcItPAmIbD5vHJxQVy5ihcSu3YHTKwope1h28sApZdtE7S3e2G3gsZRTIdsCQkXUtAQeqHxGWWR3pw==}
engines: {node: '>=10'}
cpu: [arm64]
os: [linux]
requiresBuild: true
optional: true
/@swc/core-linux-arm64-musl@1.3.85:
resolution: {integrity: sha512-gfh7CfKavi076dbMBTzfdawSGcYfZ4+1Q+8aRkSesqepKHcIWIJti8Cf3zB4a6CHNhJe+VN0Gb7DEfumydAm1w==}
/@swc/core-linux-arm64-musl@1.3.82:
resolution: {integrity: sha512-8Izj9tuuMpoc3cqiPBRtwqpO1BZ/+sfZVsEhLxrbOFlcSb8LnKyMle1g3JMMUwI4EU75RGVIzZMn8A6GOKdJbA==}
engines: {node: '>=10'}
cpu: [arm64]
os: [linux]
requiresBuild: true
optional: true
/@swc/core-linux-x64-gnu@1.3.85:
resolution: {integrity: sha512-lWVqjHKzofb9q1qrBM4dLqO7CIisp08/xMS5Hz9DWex1gTc5F2b6yJO6Ceqwa256GMweJcdP6A5EvEFQAiZ5dg==}
/@swc/core-linux-x64-gnu@1.3.82:
resolution: {integrity: sha512-0GSrIBScQwTaPv46T2qB7XnDYxndRCpwH4HMjh6FN+I+lfPUhTSJKW8AonqrqT1TbpFIgvzQs7EnTsD7AnSCow==}
engines: {node: '>=10'}
cpu: [x64]
os: [linux]
requiresBuild: true
optional: true
/@swc/core-linux-x64-musl@1.3.85:
resolution: {integrity: sha512-EPJmlfqC05TUetnlErxNRyIp7Nc3B2w9abET6oQ/EgldeAeQnZ3M6svMViET/c2QSomgrU3rdP+Qcozkt62/4A==}
/@swc/core-linux-x64-musl@1.3.82:
resolution: {integrity: sha512-KJUnaaepDKNzrEbwz4jv0iC3/t9x0NSoe06fnkAlhh2+NFKWKKJhVCOBTrpds8n7eylBDIXUlK34XQafjVMUdg==}
engines: {node: '>=10'}
cpu: [x64]
os: [linux]
requiresBuild: true
optional: true
/@swc/core-win32-arm64-msvc@1.3.85:
resolution: {integrity: sha512-ibckJDZw8kNosciMexwk0z75ZyUhwtiFMV9rSBpup0opa7NNCUCoERCJ1e9LRyMdhsVUoLpZg/KZiHCdTw96hQ==}
/@swc/core-win32-arm64-msvc@1.3.82:
resolution: {integrity: sha512-TR3MHKhDYIyGyFcyl2d/p1ftceXcubAhX5wRSOdtOyr5+K/v3jbyCCqN7bbqO5o43wQVCwwR/drHleYyDZvg8Q==}
engines: {node: '>=10'}
cpu: [arm64]
os: [win32]
requiresBuild: true
optional: true
/@swc/core-win32-ia32-msvc@1.3.85:
resolution: {integrity: sha512-hY4MpHGUVQHL1T2kgRXOigDho4DTIpVPYzJ4uyy8VQRbS7GzN5XtvdGP/fA4zp8+2BQjcig+6J7Y92SY15ouNQ==}
/@swc/core-win32-ia32-msvc@1.3.82:
resolution: {integrity: sha512-ZX4HzVVt6hs84YUg70UvyBJnBOIspmQQM0iXSzBvOikk3zRoN7BnDwQH4GScvevCEBuou60+i4I6d5kHLOfh8Q==}
engines: {node: '>=10'}
cpu: [ia32]
os: [win32]
requiresBuild: true
optional: true
/@swc/core-win32-x64-msvc@1.3.85:
resolution: {integrity: sha512-ktxWOMFJ0iqKn6WUHtXqi4CS7xkyHmrRtjllGRuGqxmLmDX/HSOfuQ55Tm1KXKk5oHLacJkUbOSF2kBrpZ8dpg==}
/@swc/core-win32-x64-msvc@1.3.82:
resolution: {integrity: sha512-4mJMnex21kbQoaHeAmHnVwQN9/XAfPszJ6n9HI7SVH+aAHnbBIR0M59/b50/CJMjTj5niUGk7EwQ3nhVNOG32g==}
engines: {node: '>=10'}
cpu: [x64]
os: [win32]
requiresBuild: true
optional: true
/@swc/core@1.3.85:
resolution: {integrity: sha512-qnoxp+2O0GtvRdYnXgR1v8J7iymGGYpx6f6yCK9KxipOZOjrlKILFANYlghQxZyPUfXwK++TFxfSlX4r9wK+kg==}
/@swc/core@1.3.82:
resolution: {integrity: sha512-jpC1a18HMH67018Ij2jh+hT7JBFu7ZKcQVfrZ8K6JuEY+kjXmbea07P9MbQUZbAe0FB+xi3CqEVCP73MebodJQ==}
engines: {node: '>=10'}
requiresBuild: true
peerDependencies:
@ -3398,16 +3401,16 @@ packages:
dependencies:
'@swc/types': 0.1.4
optionalDependencies:
'@swc/core-darwin-arm64': 1.3.85
'@swc/core-darwin-x64': 1.3.85
'@swc/core-linux-arm-gnueabihf': 1.3.85
'@swc/core-linux-arm64-gnu': 1.3.85
'@swc/core-linux-arm64-musl': 1.3.85
'@swc/core-linux-x64-gnu': 1.3.85
'@swc/core-linux-x64-musl': 1.3.85
'@swc/core-win32-arm64-msvc': 1.3.85
'@swc/core-win32-ia32-msvc': 1.3.85
'@swc/core-win32-x64-msvc': 1.3.85
'@swc/core-darwin-arm64': 1.3.82
'@swc/core-darwin-x64': 1.3.82
'@swc/core-linux-arm-gnueabihf': 1.3.82
'@swc/core-linux-arm64-gnu': 1.3.82
'@swc/core-linux-arm64-musl': 1.3.82
'@swc/core-linux-x64-gnu': 1.3.82
'@swc/core-linux-x64-musl': 1.3.82
'@swc/core-win32-arm64-msvc': 1.3.82
'@swc/core-win32-ia32-msvc': 1.3.82
'@swc/core-win32-x64-msvc': 1.3.82
/@swc/types@0.1.4:
resolution: {integrity: sha512-z/G02d+59gyyUb7KYhKi9jOhicek6QD2oMaotUyG+lUkybpXoV49dY9bj7Ah5Q+y7knK2jU67UTX9FyfGzaxQg==}
@ -5000,7 +5003,7 @@ packages:
webpack: 5.x.x
webpack-cli: 5.x.x
dependencies:
webpack: 5.88.2(@swc/core@1.3.85)(webpack-cli@5.1.4)
webpack: 5.88.2(@swc/core@1.3.82)(webpack-cli@5.1.4)
webpack-cli: 5.1.4(webpack@5.88.2)
dev: true
@ -5011,7 +5014,7 @@ packages:
webpack: 5.x.x
webpack-cli: 5.x.x
dependencies:
webpack: 5.88.2(@swc/core@1.3.85)(webpack-cli@5.1.4)
webpack: 5.88.2(@swc/core@1.3.82)(webpack-cli@5.1.4)
webpack-cli: 5.1.4(webpack@5.88.2)
dev: true
@ -5026,7 +5029,7 @@ packages:
webpack-dev-server:
optional: true
dependencies:
webpack: 5.88.2(@swc/core@1.3.85)(webpack-cli@5.1.4)
webpack: 5.88.2(@swc/core@1.3.82)(webpack-cli@5.1.4)
webpack-cli: 5.1.4(webpack@5.88.2)
dev: true
@ -11589,7 +11592,7 @@ packages:
pretty-format: 27.5.1
slash: 3.0.0
strip-json-comments: 3.1.1
ts-node: 10.4.0(@swc/core@1.3.85)(@types/node@20.3.1)(typescript@5.1.3)
ts-node: 10.4.0(@swc/core@1.3.82)(@types/node@20.3.1)(typescript@5.1.3)
transitivePeerDependencies:
- bufferutil
- canvas
@ -12552,7 +12555,7 @@ packages:
json5: 2.2.3
loader-utils: 2.0.4
schema-utils: 3.3.0
webpack: 5.88.2(@swc/core@1.3.85)(webpack-cli@5.1.4)
webpack: 5.88.2(@swc/core@1.3.82)(webpack-cli@5.1.4)
dev: true
/json5@1.0.2:
@ -17108,14 +17111,14 @@ packages:
whet.extend: 0.9.9
dev: true
/swc-loader@0.2.3(@swc/core@1.3.85)(webpack@5.88.2):
/swc-loader@0.2.3(@swc/core@1.3.82)(webpack@5.88.2):
resolution: {integrity: sha512-D1p6XXURfSPleZZA/Lipb3A8pZ17fP4NObZvFCDjK/OKljroqDpPmsBdTraWhVBqUNpcWBQY1imWdoPScRlQ7A==}
peerDependencies:
'@swc/core': ^1.2.147
webpack: '>=2'
dependencies:
'@swc/core': 1.3.85
webpack: 5.88.2(@swc/core@1.3.85)(webpack-cli@5.1.4)
'@swc/core': 1.3.82
webpack: 5.88.2(@swc/core@1.3.82)(webpack-cli@5.1.4)
dev: true
/swiper@10.2.0:
@ -17251,7 +17254,7 @@ packages:
supports-hyperlinks: 2.3.0
dev: true
/terser-webpack-plugin@5.3.9(@swc/core@1.3.85)(webpack@5.88.2):
/terser-webpack-plugin@5.3.9(@swc/core@1.3.82)(webpack@5.88.2):
resolution: {integrity: sha512-ZuXsqE07EcggTWQjXUj+Aot/OMcD0bMKGgF63f7UxYcu5/AJF53aIpK1YoP5xR9l6s/Hy2b+t1AM0bLNPRuhwA==}
engines: {node: '>= 10.13.0'}
peerDependencies:
@ -17268,12 +17271,12 @@ packages:
optional: true
dependencies:
'@jridgewell/trace-mapping': 0.3.19
'@swc/core': 1.3.85
'@swc/core': 1.3.82
jest-worker: 27.5.1
schema-utils: 3.3.0
serialize-javascript: 6.0.1
terser: 5.19.4
webpack: 5.88.2(@swc/core@1.3.85)(webpack-cli@5.1.4)
webpack: 5.88.2(@swc/core@1.3.82)(webpack-cli@5.1.4)
dev: true
/terser@5.19.4:
@ -17402,7 +17405,6 @@ packages:
resolution: {integrity: sha512-u26CNoaInA4XpDU+8s/6Cq8xHc2T5M4fXB3ICfXPokUQoLzmPgSZU02TAkFwFMJCWTjk53gtkS8pETTreZwCqw==}
engines: {node: '>= 12.10.0', npm: '>= 6.12.0', yarn: '>= 1.20.0'}
hasBin: true
dev: true
/titleize@3.0.0:
resolution: {integrity: sha512-KxVu8EYHDPBdUYdKZdKtU2aj2XfEx9AfjXxE/Aj0vT06w2icA09Vus1rh6eSu1y01akYg6BjIK/hxyLJINoMLQ==}
@ -17621,10 +17623,10 @@ packages:
micromatch: 4.0.5
semver: 7.5.4
typescript: 5.1.6
webpack: 5.88.2(@swc/core@1.3.85)(webpack-cli@5.1.4)
webpack: 5.88.2(@swc/core@1.3.82)(webpack-cli@5.1.4)
dev: true
/ts-node@10.4.0(@swc/core@1.3.85)(@types/node@20.3.1)(typescript@5.1.3):
/ts-node@10.4.0(@swc/core@1.3.82)(@types/node@20.3.1)(typescript@5.1.3):
resolution: {integrity: sha512-g0FlPvvCXSIO1JDF6S232P5jPYqBkRL9qly81ZgAOSU7rwI0stphCgd2kLiCrU9DjQCrJMWEqcNSjQL02s6d8A==}
hasBin: true
peerDependencies:
@ -17639,7 +17641,7 @@ packages:
optional: true
dependencies:
'@cspotcode/source-map-support': 0.7.0
'@swc/core': 1.3.85
'@swc/core': 1.3.82
'@tsconfig/node10': 1.0.9
'@tsconfig/node12': 1.0.11
'@tsconfig/node14': 1.0.3
@ -17655,7 +17657,7 @@ packages:
yn: 3.1.1
dev: true
/ts-node@10.9.1(@swc/core@1.3.85)(@types/node@18.11.18)(typescript@5.1.6):
/ts-node@10.9.1(@swc/core@1.3.82)(@types/node@18.11.18)(typescript@5.1.6):
resolution: {integrity: sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==}
hasBin: true
peerDependencies:
@ -17670,7 +17672,7 @@ packages:
optional: true
dependencies:
'@cspotcode/source-map-support': 0.8.1
'@swc/core': 1.3.85
'@swc/core': 1.3.82
'@tsconfig/node10': 1.0.9
'@tsconfig/node12': 1.0.11
'@tsconfig/node14': 1.0.3
@ -17960,7 +17962,7 @@ packages:
pg: 8.11.3
reflect-metadata: 0.1.13
sha.js: 2.4.11
ts-node: 10.9.1(@swc/core@1.3.85)(@types/node@18.11.18)(typescript@5.1.6)
ts-node: 10.9.1(@swc/core@1.3.82)(@types/node@18.11.18)(typescript@5.1.6)
tslib: 2.6.2
uuid: 9.0.0
yargs: 17.7.2
@ -18593,7 +18595,7 @@ packages:
import-local: 3.1.0
interpret: 3.1.1
rechoir: 0.8.0
webpack: 5.88.2(@swc/core@1.3.85)(webpack-cli@5.1.4)
webpack: 5.88.2(@swc/core@1.3.82)(webpack-cli@5.1.4)
webpack-merge: 5.9.0
dev: true
@ -18610,7 +18612,7 @@ packages:
engines: {node: '>=10.13.0'}
dev: true
/webpack@5.88.2(@swc/core@1.3.85)(webpack-cli@5.1.4):
/webpack@5.88.2(@swc/core@1.3.82)(webpack-cli@5.1.4):
resolution: {integrity: sha512-JmcgNZ1iKj+aiR0OvTYtWQqJwq37Pf683dY9bVORwVbUrDhLhdn/PlO2sHsFHPkj7sHNQF3JwaAkp49V+Sq1tQ==}
engines: {node: '>=10.13.0'}
hasBin: true
@ -18641,7 +18643,7 @@ packages:
neo-async: 2.6.2
schema-utils: 3.3.0
tapable: 2.2.1
terser-webpack-plugin: 5.3.9(@swc/core@1.3.85)(webpack@5.88.2)
terser-webpack-plugin: 5.3.9(@swc/core@1.3.82)(webpack@5.88.2)
watchpack: 2.4.0
webpack-cli: 5.1.4(webpack@5.88.2)
webpack-sources: 3.2.3