feat
This commit is contained in:
parent
4ff47f5cf2
commit
309b259515
|
@ -730,6 +730,14 @@ export interface Locale extends ILocale {
|
||||||
* にゃにゃにゃ??
|
* にゃにゃにゃ??
|
||||||
*/
|
*/
|
||||||
"flagAsCatDescription": string;
|
"flagAsCatDescription": string;
|
||||||
|
/**
|
||||||
|
* 自動TTS機能が欲しい。
|
||||||
|
*/
|
||||||
|
"flagAsVI": string;
|
||||||
|
/**
|
||||||
|
* 自動TTS機能が必要な場合は有効にしてください。 権限のあるユーザーグループに所属している場合、特定の範囲で自動TTS機能を有効にします。
|
||||||
|
*/
|
||||||
|
"flagAsVIDescription": string;
|
||||||
/**
|
/**
|
||||||
* タイムラインにノートへの返信を表示する
|
* タイムラインにノートへの返信を表示する
|
||||||
*/
|
*/
|
||||||
|
@ -6913,6 +6921,10 @@ export interface Locale extends ILocale {
|
||||||
* botユーザー
|
* botユーザー
|
||||||
*/
|
*/
|
||||||
"isBot": string;
|
"isBot": string;
|
||||||
|
/**
|
||||||
|
* TTSユーザー
|
||||||
|
*/
|
||||||
|
"isVI": string;
|
||||||
/**
|
/**
|
||||||
* サスペンド済みユーザー
|
* サスペンド済みユーザー
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -178,6 +178,8 @@ flagAsBot: "Botとして設定"
|
||||||
flagAsBotDescription: "このアカウントがプログラムによって運用される場合は、このフラグをオンにします。オンにすると、反応の連鎖を防ぐためのフラグとして他の開発者に役立ったり、Misskeyのシステム上での扱いがBotに合ったものになります。"
|
flagAsBotDescription: "このアカウントがプログラムによって運用される場合は、このフラグをオンにします。オンにすると、反応の連鎖を防ぐためのフラグとして他の開発者に役立ったり、Misskeyのシステム上での扱いがBotに合ったものになります。"
|
||||||
flagAsCat: "にゃああああああああああああああ!!!!!!!!!!!!"
|
flagAsCat: "にゃああああああああああああああ!!!!!!!!!!!!"
|
||||||
flagAsCatDescription: "にゃにゃにゃ??"
|
flagAsCatDescription: "にゃにゃにゃ??"
|
||||||
|
flagAsVI: "自動TTS機能が欲しい。"
|
||||||
|
flagAsVIDescription: "自動TTS機能が必要な場合は有効にしてください。 権限のあるユーザーグループに所属している場合、特定の範囲で自動TTS機能を有効にします。"
|
||||||
flagShowTimelineReplies: "タイムラインにノートへの返信を表示する"
|
flagShowTimelineReplies: "タイムラインにノートへの返信を表示する"
|
||||||
flagShowTimelineRepliesDescription: "オンにすると、タイムラインにユーザーのノート以外にもそのユーザーの他のノートへの返信を表示します。"
|
flagShowTimelineRepliesDescription: "オンにすると、タイムラインにユーザーのノート以外にもそのユーザーの他のノートへの返信を表示します。"
|
||||||
autoAcceptFollowed: "フォロー中ユーザーからのフォロリクを自動承認"
|
autoAcceptFollowed: "フォロー中ユーザーからのフォロリクを自動承認"
|
||||||
|
@ -1786,6 +1788,7 @@ _role:
|
||||||
isRemote: "リモートユーザー"
|
isRemote: "リモートユーザー"
|
||||||
isCat: "猫ユーザー"
|
isCat: "猫ユーザー"
|
||||||
isBot: "botユーザー"
|
isBot: "botユーザー"
|
||||||
|
isVI: "TTSユーザー"
|
||||||
isSuspended: "サスペンド済みユーザー"
|
isSuspended: "サスペンド済みユーザー"
|
||||||
isLocked: "鍵アカウントユーザー"
|
isLocked: "鍵アカウントユーザー"
|
||||||
isExplorable: "「アカウントを見つけやすくする」が有効なユーザー"
|
isExplorable: "「アカウントを見つけやすくする」が有効なユーザー"
|
||||||
|
|
|
@ -7,10 +7,13 @@ export class TTSIntegration1724683952000 {
|
||||||
constructor() {
|
constructor() {
|
||||||
this.name = 'TTSIntegration1724683952000';
|
this.name = 'TTSIntegration1724683952000';
|
||||||
}
|
}
|
||||||
|
|
||||||
async up(queryRunner) {
|
async up(queryRunner) {
|
||||||
await queryRunner.query(`ALTER TABLE "meta" ADD "hfAuthKey" character varying(128)`);
|
await queryRunner.query(`ALTER TABLE "meta" ADD "hfAuthKey" character varying(128)`);
|
||||||
}
|
}
|
||||||
|
|
||||||
async down(queryRunner) {
|
async down(queryRunner) {
|
||||||
await queryRunner.query(`ALTER TABLE "meta" DROP COLUMN "hfAuthKey"`);
|
await queryRunner.query(`ALTER TABLE "meta" DROP COLUMN "hfAuthKey"`);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,45 @@
|
||||||
|
/*
|
||||||
|
* SPDX-FileCopyrightText: syuilo and misskey-project
|
||||||
|
* SPDX-License-Identifier: AGPL-3.0-only
|
||||||
|
*/
|
||||||
|
|
||||||
|
export class TTSIntegration1724683962000 {
|
||||||
|
constructor() {
|
||||||
|
this.name = 'TTSIntegration1724683962000';
|
||||||
|
}
|
||||||
|
|
||||||
|
async up(queryRunner) {
|
||||||
|
await queryRunner.query(`ALTER TABLE "user" ADD "isVI" boolean NOT NULL DEFAULT false`);
|
||||||
|
await queryRunner.query(`COMMENT ON COLUMN "user"."isVI" IS 'Whether the User needs auto TTS.'`);
|
||||||
|
await queryRunner.query(`ALTER TABLE "meta" ADD "hfSpace" boolean NOT NULL DEFAULT false`);
|
||||||
|
await queryRunner.query(`ALTER TABLE "meta" ADD "hfSpaceName" character varying(128)`);
|
||||||
|
await queryRunner.query(`ALTER TABLE "meta" ADD "hfexampleAudioURL" character varying(128)`);
|
||||||
|
await queryRunner.query(`ALTER TABLE "meta" ADD "hfexampleText" character varying(128)`);
|
||||||
|
await queryRunner.query(`ALTER TABLE "meta" ADD "hfexampleLang" character varying(128)`);
|
||||||
|
await queryRunner.query(`ALTER TABLE "meta" ADD "hfslice" character varying(128) DEFAULT 'Slice once every 4 sentences'`);
|
||||||
|
await queryRunner.query(`ALTER TABLE "meta" ADD "hftopK" INTEGER DEFAULT 15`);
|
||||||
|
await queryRunner.query(`ALTER TABLE "meta" ADD "hftopP" NUMERIC(4, 2) DEFAULT 1.00`);
|
||||||
|
await queryRunner.query(`ALTER TABLE "meta" ADD "hfTemperature" NUMERIC(4, 2) DEFAULT 1.00`);
|
||||||
|
await queryRunner.query(`ALTER TABLE "meta" ADD "hfnrm" boolean NOT NULL DEFAULT false`);
|
||||||
|
await queryRunner.query(`ALTER TABLE "meta" ADD "hfSpeedRate" NUMERIC(4, 2) DEFAULT 1.25`);
|
||||||
|
await queryRunner.query(`ALTER TABLE "meta" ADD "hfdas" boolean NOT NULL DEFAULT false`);
|
||||||
|
}
|
||||||
|
|
||||||
|
async down(queryRunner) {
|
||||||
|
await queryRunner.query(`COMMENT ON COLUMN "user"."isVI" IS NULL`);
|
||||||
|
await queryRunner.query(`ALTER TABLE "user" DROP COLUMN "isVI"`);
|
||||||
|
await queryRunner.query(`ALTER TABLE "meta" DROP COLUMN "hfSpace"`);
|
||||||
|
await queryRunner.query(`ALTER TABLE "meta" DROP COLUMN "hfSpaceName"`);
|
||||||
|
await queryRunner.query(`ALTER TABLE "meta" DROP COLUMN "hfexampleAudioURL"`);
|
||||||
|
await queryRunner.query(`ALTER TABLE "meta" DROP COLUMN "hfexampleText"`);
|
||||||
|
await queryRunner.query(`ALTER TABLE "meta" DROP COLUMN "hfexampleLang"`);
|
||||||
|
await queryRunner.query(`ALTER TABLE "meta" DROP COLUMN "hfslice"`);
|
||||||
|
await queryRunner.query(`ALTER TABLE "meta" DROP COLUMN "hftopK"`);
|
||||||
|
await queryRunner.query(`ALTER TABLE "meta" DROP COLUMN "hftopP"`);
|
||||||
|
await queryRunner.query(`ALTER TABLE "meta" DROP COLUMN "hfTemperature"`);
|
||||||
|
await queryRunner.query(`ALTER TABLE "meta" DROP COLUMN "hfnrm"`);
|
||||||
|
await queryRunner.query(`ALTER TABLE "meta" DROP COLUMN "hfSpeedRate"`);
|
||||||
|
await queryRunner.query(`ALTER TABLE "meta" DROP COLUMN "hfdas"`);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
|
@ -79,6 +79,7 @@
|
||||||
"@fastify/multipart": "9.0.1",
|
"@fastify/multipart": "9.0.1",
|
||||||
"@fastify/static": "8.0.1",
|
"@fastify/static": "8.0.1",
|
||||||
"@fastify/view": "10.0.1",
|
"@fastify/view": "10.0.1",
|
||||||
|
"@gradio/client": "1.6.0-beta.3",
|
||||||
"@misskey-dev/sharp-read-bmp": "1.2.0",
|
"@misskey-dev/sharp-read-bmp": "1.2.0",
|
||||||
"@misskey-dev/summaly": "5.1.0",
|
"@misskey-dev/summaly": "5.1.0",
|
||||||
"@napi-rs/canvas": "0.1.56",
|
"@napi-rs/canvas": "0.1.56",
|
||||||
|
@ -132,8 +133,8 @@
|
||||||
"json5": "2.2.3",
|
"json5": "2.2.3",
|
||||||
"jsonld": "8.3.2",
|
"jsonld": "8.3.2",
|
||||||
"jsrsasign": "11.1.0",
|
"jsrsasign": "11.1.0",
|
||||||
"meilisearch": "0.42.0",
|
|
||||||
"juice": "11.0.0",
|
"juice": "11.0.0",
|
||||||
|
"meilisearch": "0.42.0",
|
||||||
"mfm-js": "0.24.0",
|
"mfm-js": "0.24.0",
|
||||||
"microformats-parser": "2.0.2",
|
"microformats-parser": "2.0.2",
|
||||||
"mime-types": "2.1.35",
|
"mime-types": "2.1.35",
|
||||||
|
|
|
@ -256,6 +256,10 @@ export class RoleService implements OnApplicationShutdown, OnModuleInit {
|
||||||
case 'isCat': {
|
case 'isCat': {
|
||||||
return user.isCat;
|
return user.isCat;
|
||||||
}
|
}
|
||||||
|
// Auto TTS
|
||||||
|
case 'isVI': {
|
||||||
|
return user.isVI;
|
||||||
|
}
|
||||||
// 「ユーザを見つけやすくする」が有効なアカウント
|
// 「ユーザを見つけやすくする」が有効なアカウント
|
||||||
case 'isExplorable': {
|
case 'isExplorable': {
|
||||||
return user.isExplorable;
|
return user.isExplorable;
|
||||||
|
|
|
@ -490,6 +490,7 @@ export class UserEntityService implements OnModuleInit {
|
||||||
}))) : [],
|
}))) : [],
|
||||||
isBot: user.isBot,
|
isBot: user.isBot,
|
||||||
isCat: user.isCat,
|
isCat: user.isCat,
|
||||||
|
isVI: user.isVI,
|
||||||
instance: user.host ? this.federatedInstanceService.federatedInstanceCache.fetch(user.host).then(instance => instance ? {
|
instance: user.host ? this.federatedInstanceService.federatedInstanceCache.fetch(user.host).then(instance => instance ? {
|
||||||
name: instance.name,
|
name: instance.name,
|
||||||
softwareName: instance.softwareName,
|
softwareName: instance.softwareName,
|
||||||
|
|
|
@ -355,6 +355,72 @@ export class MiMeta {
|
||||||
})
|
})
|
||||||
public hfAuthKey: string | null;
|
public hfAuthKey: string | null;
|
||||||
|
|
||||||
|
@Column('boolean', {
|
||||||
|
default: false,
|
||||||
|
})
|
||||||
|
public hfSpace: boolean;
|
||||||
|
|
||||||
|
@Column('varchar', {
|
||||||
|
length: 1024,
|
||||||
|
nullable: true,
|
||||||
|
})
|
||||||
|
public hfSpaceName: string | null;
|
||||||
|
|
||||||
|
@Column('varchar', {
|
||||||
|
length: 1024,
|
||||||
|
nullable: true,
|
||||||
|
})
|
||||||
|
public hfexampleAudioURL: string;
|
||||||
|
|
||||||
|
@Column('varchar', {
|
||||||
|
length: 1024,
|
||||||
|
nullable: true,
|
||||||
|
})
|
||||||
|
public hfexampleText: string | null;
|
||||||
|
|
||||||
|
@Column('varchar', {
|
||||||
|
length: 1024,
|
||||||
|
nullable: true,
|
||||||
|
})
|
||||||
|
public hfexampleLang: string;
|
||||||
|
|
||||||
|
@Column('varchar', {
|
||||||
|
length: 1024,
|
||||||
|
default: 'Slice once every 4 sentences',
|
||||||
|
nullable: true,
|
||||||
|
})
|
||||||
|
public hfslice: string;
|
||||||
|
|
||||||
|
@Column('varchar', {
|
||||||
|
default: 15,
|
||||||
|
})
|
||||||
|
public hftopK: number;
|
||||||
|
|
||||||
|
@Column('varchar', {
|
||||||
|
default: 1.00,
|
||||||
|
})
|
||||||
|
public hftopP: number;
|
||||||
|
|
||||||
|
@Column('varchar', {
|
||||||
|
default: 1.00,
|
||||||
|
})
|
||||||
|
public hfTemperature: number;
|
||||||
|
|
||||||
|
@Column('varchar', {
|
||||||
|
default: false,
|
||||||
|
})
|
||||||
|
public hfnrm: boolean;
|
||||||
|
|
||||||
|
@Column('varchar', {
|
||||||
|
default: 1.25,
|
||||||
|
})
|
||||||
|
public hfSpeedRate: number;
|
||||||
|
|
||||||
|
@Column('varchar', {
|
||||||
|
default: false,
|
||||||
|
})
|
||||||
|
public hfdas: boolean;
|
||||||
|
|
||||||
@Column('varchar', {
|
@Column('varchar', {
|
||||||
length: 1024,
|
length: 1024,
|
||||||
nullable: true,
|
nullable: true,
|
||||||
|
|
|
@ -83,6 +83,13 @@ type CondFormulaValueIsCat = {
|
||||||
type: 'isCat';
|
type: 'isCat';
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Auto TTS
|
||||||
|
*/
|
||||||
|
type CondFormulaValueIsVI = {
|
||||||
|
type: 'isVI';
|
||||||
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 「ユーザを見つけやすくする」が有効なアカウントの場合のみ成立とする
|
* 「ユーザを見つけやすくする」が有効なアカウントの場合のみ成立とする
|
||||||
*/
|
*/
|
||||||
|
@ -164,6 +171,7 @@ export type RoleCondFormulaValue = { id: string } & (
|
||||||
CondFormulaValueIsLocked |
|
CondFormulaValueIsLocked |
|
||||||
CondFormulaValueIsBot |
|
CondFormulaValueIsBot |
|
||||||
CondFormulaValueIsCat |
|
CondFormulaValueIsCat |
|
||||||
|
CondFormulaValueIsVI |
|
||||||
CondFormulaValueIsExplorable |
|
CondFormulaValueIsExplorable |
|
||||||
CondFormulaValueRoleAssignedTo |
|
CondFormulaValueRoleAssignedTo |
|
||||||
CondFormulaValueCreatedLessThan |
|
CondFormulaValueCreatedLessThan |
|
||||||
|
|
|
@ -184,6 +184,12 @@ export class MiUser {
|
||||||
})
|
})
|
||||||
public isCat: boolean;
|
public isCat: boolean;
|
||||||
|
|
||||||
|
@Column('boolean', {
|
||||||
|
default: false,
|
||||||
|
comment: 'Whether the User needs auto TTS.',
|
||||||
|
})
|
||||||
|
public isVI: boolean;
|
||||||
|
|
||||||
@Column('boolean', {
|
@Column('boolean', {
|
||||||
default: false,
|
default: false,
|
||||||
comment: 'Whether the User is the root.',
|
comment: 'Whether the User is the root.',
|
||||||
|
|
|
@ -66,7 +66,7 @@ export const packedRoleCondFormulaValueUserSettingBooleanSchema = {
|
||||||
type: {
|
type: {
|
||||||
type: 'string',
|
type: 'string',
|
||||||
nullable: false, optional: false,
|
nullable: false, optional: false,
|
||||||
enum: ['isSuspended', 'isLocked', 'isBot', 'isCat', 'isExplorable'],
|
enum: ['isSuspended', 'isLocked', 'isBot', 'isCat','isVI' , 'isExplorable'],
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
} as const;
|
} as const;
|
||||||
|
|
|
@ -115,6 +115,10 @@ export const packedUserLiteSchema = {
|
||||||
type: 'boolean',
|
type: 'boolean',
|
||||||
nullable: false, optional: true,
|
nullable: false, optional: true,
|
||||||
},
|
},
|
||||||
|
isVI: {
|
||||||
|
type: 'boolean',
|
||||||
|
nullable: false, optional: true,
|
||||||
|
},
|
||||||
instance: {
|
instance: {
|
||||||
type: 'object',
|
type: 'object',
|
||||||
nullable: false, optional: true,
|
nullable: false, optional: true,
|
||||||
|
|
|
@ -93,6 +93,18 @@ export const paramDef = {
|
||||||
deeplAuthKey: { type: 'string', nullable: true },
|
deeplAuthKey: { type: 'string', nullable: true },
|
||||||
deeplIsPro: { type: 'boolean' },
|
deeplIsPro: { type: 'boolean' },
|
||||||
hfAuthKey: { type: 'string', nullable: true },
|
hfAuthKey: { type: 'string', nullable: true },
|
||||||
|
hfSpace: { type: 'boolean', default: false },
|
||||||
|
hfSpaceName: { type: 'string', length: 1024, nullable: true },
|
||||||
|
hfexampleAudioURL: { type: 'string', length: 1024, nullable: true },
|
||||||
|
hfexampleText: { type: 'string', length: 1024, nullable: true },
|
||||||
|
hfexampleLang: { type: 'string', length: 1024, nullable: true },
|
||||||
|
hfslice: { type: 'string', length: 1024, default: 'Slice once every 4 sentences', nullable: true },
|
||||||
|
hftopK: { type: 'integer', default: 15 },
|
||||||
|
hftopP: { type: 'numeric', precision: 4, scale: 2, default: 1.00 },
|
||||||
|
hfTemperature: { type: 'numeric', precision: 4, scale: 2, default: 1.00 },
|
||||||
|
hfnrm: { type: 'boolean', default: false },
|
||||||
|
hfSpeedRate: { type: 'numeric', precision: 4, scale: 2, default: 1.25 },
|
||||||
|
hfdas: { type: 'boolean', default: false },
|
||||||
enableEmail: { type: 'boolean' },
|
enableEmail: { type: 'boolean' },
|
||||||
email: { type: 'string', nullable: true },
|
email: { type: 'string', nullable: true },
|
||||||
smtpSecure: { type: 'boolean' },
|
smtpSecure: { type: 'boolean' },
|
||||||
|
@ -526,6 +538,74 @@ export default class extends Endpoint<typeof meta, typeof paramDef> { // eslint-
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (ps.hfSpace !== undefined) {
|
||||||
|
set.hfSpace = ps.hfSpace;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (ps.hfSpaceName !== undefined) {
|
||||||
|
if (ps.hfSpaceName === '') {
|
||||||
|
set.hfSpaceName = null;
|
||||||
|
} else {
|
||||||
|
set.hfSpaceName = ps.hfSpaceName;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (ps.hfexampleAudioURL !== undefined) {
|
||||||
|
if (ps.hfexampleAudioURL === '') {
|
||||||
|
set.hfexampleAudioURL = null;
|
||||||
|
} else {
|
||||||
|
set.hfexampleAudioURL = ps.hfexampleAudioURL;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (ps.hfexampleText !== undefined) {
|
||||||
|
if (ps.hfexampleText === '') {
|
||||||
|
set.hfexampleText = null;
|
||||||
|
} else {
|
||||||
|
set.hfexampleText = ps.hfexampleText;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (ps.hfexampleLang !== undefined) {
|
||||||
|
if (ps.hfexampleLang === '') {
|
||||||
|
set.hfexampleLang = null;
|
||||||
|
} else {
|
||||||
|
set.hfexampleLang = ps.hfexampleLang;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (ps.hfslice !== undefined) {
|
||||||
|
if (ps.hfslice === '') {
|
||||||
|
set.hfslice = null;
|
||||||
|
} else {
|
||||||
|
set.hfslice = ps.hfslice;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (ps.hftopK !== undefined) {
|
||||||
|
set.hftopK = ps.hftopK;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (ps.hftopP !== undefined) {
|
||||||
|
set.hftopP = ps.hftopP;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (ps.hfTemperature !== undefined) {
|
||||||
|
set.hfTemperature = ps.hfTemperature;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (ps.hfnrm !== undefined) {
|
||||||
|
set.hfnrm = ps.hfnrm;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (ps.hfSpeedRate !== undefined) {
|
||||||
|
set.hfSpeedRate = ps.hfSpeedRate;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (ps.hfdas !== undefined) {
|
||||||
|
set.hfdas = ps.hfdas;
|
||||||
|
}
|
||||||
|
|
||||||
if (ps.enableIpLogging !== undefined) {
|
if (ps.enableIpLogging !== undefined) {
|
||||||
set.enableIpLogging = ps.enableIpLogging;
|
set.enableIpLogging = ps.enableIpLogging;
|
||||||
}
|
}
|
||||||
|
|
|
@ -173,6 +173,7 @@ export const paramDef = {
|
||||||
preventAiLearning: { type: 'boolean' },
|
preventAiLearning: { type: 'boolean' },
|
||||||
isBot: { type: 'boolean' },
|
isBot: { type: 'boolean' },
|
||||||
isCat: { type: 'boolean' },
|
isCat: { type: 'boolean' },
|
||||||
|
isVI: { type: 'boolean' },
|
||||||
injectFeaturedNote: { type: 'boolean' },
|
injectFeaturedNote: { type: 'boolean' },
|
||||||
receiveAnnouncementEmail: { type: 'boolean' },
|
receiveAnnouncementEmail: { type: 'boolean' },
|
||||||
alwaysMarkNsfw: { type: 'boolean' },
|
alwaysMarkNsfw: { type: 'boolean' },
|
||||||
|
@ -323,6 +324,7 @@ export default class extends Endpoint<typeof meta, typeof paramDef> { // eslint-
|
||||||
if (typeof ps.noCrawle === 'boolean') profileUpdates.noCrawle = ps.noCrawle;
|
if (typeof ps.noCrawle === 'boolean') profileUpdates.noCrawle = ps.noCrawle;
|
||||||
if (typeof ps.preventAiLearning === 'boolean') profileUpdates.preventAiLearning = ps.preventAiLearning;
|
if (typeof ps.preventAiLearning === 'boolean') profileUpdates.preventAiLearning = ps.preventAiLearning;
|
||||||
if (typeof ps.isCat === 'boolean') updates.isCat = ps.isCat;
|
if (typeof ps.isCat === 'boolean') updates.isCat = ps.isCat;
|
||||||
|
if (typeof ps.isVI === 'boolean') updates.isVI = ps.isVI;
|
||||||
if (typeof ps.injectFeaturedNote === 'boolean') profileUpdates.injectFeaturedNote = ps.injectFeaturedNote;
|
if (typeof ps.injectFeaturedNote === 'boolean') profileUpdates.injectFeaturedNote = ps.injectFeaturedNote;
|
||||||
if (typeof ps.receiveAnnouncementEmail === 'boolean') profileUpdates.receiveAnnouncementEmail = ps.receiveAnnouncementEmail;
|
if (typeof ps.receiveAnnouncementEmail === 'boolean') profileUpdates.receiveAnnouncementEmail = ps.receiveAnnouncementEmail;
|
||||||
if (typeof ps.alwaysMarkNsfw === 'boolean') {
|
if (typeof ps.alwaysMarkNsfw === 'boolean') {
|
||||||
|
|
|
@ -4,6 +4,7 @@
|
||||||
*/
|
*/
|
||||||
|
|
||||||
import { Injectable } from '@nestjs/common';
|
import { Injectable } from '@nestjs/common';
|
||||||
|
import { Client } from "@gradio/client";
|
||||||
import { Endpoint } from '@/server/api/endpoint-base.js';
|
import { Endpoint } from '@/server/api/endpoint-base.js';
|
||||||
import { NoteEntityService } from '@/core/entities/NoteEntityService.js';
|
import { NoteEntityService } from '@/core/entities/NoteEntityService.js';
|
||||||
import { MetaService } from '@/core/MetaService.js';
|
import { MetaService } from '@/core/MetaService.js';
|
||||||
|
@ -25,6 +26,11 @@ export const meta = {
|
||||||
},
|
},
|
||||||
|
|
||||||
errors: {
|
errors: {
|
||||||
|
incorrectconfig: {
|
||||||
|
message: 'Incorrect configuration.',
|
||||||
|
code: 'INCORRECT_CONFIG',
|
||||||
|
id: '8d171e60-83b8-11ef-b98c-a7506d6c1de4',
|
||||||
|
},
|
||||||
unavailable: {
|
unavailable: {
|
||||||
message: 'Convert of notes unavailable.',
|
message: 'Convert of notes unavailable.',
|
||||||
code: 'UNAVAILABLE',
|
code: 'UNAVAILABLE',
|
||||||
|
@ -85,29 +91,85 @@ export default class extends Endpoint<typeof meta, typeof paramDef> { // eslint-
|
||||||
throw new ApiError(meta.errors.unavailable);
|
throw new ApiError(meta.errors.unavailable);
|
||||||
}
|
}
|
||||||
|
|
||||||
const endpoint = 'https://api-inference.huggingface.co/models/suno/bark';
|
if (instance.hfSpace) {
|
||||||
|
const langlist = ['Chinese', 'English', 'Japanese', 'Yue', 'Korean', 'Chinese-English Mixed', 'Japanese-English Mixed', 'Yue-English Mixed', 'Korean-English Mixed', 'Multilingual Mixed', 'Multilingual Mixed(Yue)'];
|
||||||
|
const slicelist = ['No slice', 'Slice once every 4 sentences', 'Slice per 50 characters', 'Slice by Chinese punct', 'Slice by English punct', 'Slice by every punct'];
|
||||||
|
let exampleAudio;
|
||||||
|
let app;
|
||||||
|
|
||||||
const res = await this.httpRequestService.send(endpoint, {
|
try {
|
||||||
method: 'POST',
|
const example = await fetch(instance.hfexampleAudioURL);
|
||||||
headers: {
|
exampleAudio = await example.blob();
|
||||||
'Content-Type': 'application/json',
|
} catch {
|
||||||
'Authorization': 'Bearer ' + instance.hfAuthKey,
|
throw new ApiError(meta.errors.unavailable);
|
||||||
Accept: 'audio/flac, */*',
|
}
|
||||||
},
|
|
||||||
body: JSON.stringify({
|
|
||||||
inputs: note.text,
|
|
||||||
}),
|
|
||||||
timeout: 60000,
|
|
||||||
});
|
|
||||||
|
|
||||||
let contentType = res.headers.get('Content-Type') || 'application/octet-stream';
|
if (((!instance.hfnrm) && (!instance.hfexampleText)) || (!langlist.includes(instance.hfexampleLang)) || (!slicelist.includes(instance.hfslice)) || (!instance.hfSpaceName) || (!(instance.hfSpeedRate >= 0.6 && instance.hfSpeedRate <= 1.65)) || (!(instance.hfTemperature >= 0 && instance.hfTemperature <= 1)) || (!(instance.hftopK >= 0 && instance.hftopK <= 100)) || (!(instance.hftopP >= 0 && instance.hftopP <= 1))) {
|
||||||
|
throw new ApiError(meta.errors.incorrectconfig);
|
||||||
|
}
|
||||||
|
|
||||||
if (contentType === 'audio/flac') {
|
try {
|
||||||
return res.body;
|
app = await Client.connect(instance.hfSpaceName, { hf_token: instance.hfAuthKey });
|
||||||
|
} catch {
|
||||||
|
throw new ApiError(meta.errors.unavailable);
|
||||||
|
}
|
||||||
|
|
||||||
|
const result = await app.predict("/get_tts_wav", [
|
||||||
|
exampleAudio,
|
||||||
|
instance.hfexampleText,
|
||||||
|
instance.hfexampleLang,
|
||||||
|
note.text,
|
||||||
|
"Multilingual Mixed",
|
||||||
|
instance.hfslice,
|
||||||
|
instance.hftopK,
|
||||||
|
instance.hftopP,
|
||||||
|
instance.hfTemperature,
|
||||||
|
instance.hfnrm,
|
||||||
|
instance.hfSpeedRate,
|
||||||
|
instance.hfdas,
|
||||||
|
]);
|
||||||
|
|
||||||
|
let resurl = JSON.parse(result)[0].url;
|
||||||
|
|
||||||
|
const res = await this.httpRequestService.send(resurl, {
|
||||||
|
method: 'POST',
|
||||||
|
headers: {
|
||||||
|
'Authorization': 'Bearer ' + instance.hfAuthKey,
|
||||||
|
},
|
||||||
|
timeout: 60000,
|
||||||
|
});
|
||||||
|
|
||||||
|
let contentType = res.headers.get('Content-Type') || 'application/octet-stream';
|
||||||
|
|
||||||
|
if (contentType === 'audio/flac') {
|
||||||
|
return res.body;
|
||||||
|
} else {
|
||||||
|
throw new ApiError(meta.errors.unavailable);
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
throw new ApiError(meta.errors.unavailable);
|
const endpoint = 'https://api-inference.huggingface.co/models/suno/bark';
|
||||||
}
|
|
||||||
|
|
||||||
|
const res = await this.httpRequestService.send(endpoint, {
|
||||||
|
method: 'POST',
|
||||||
|
headers: {
|
||||||
|
'Content-Type': 'application/json',
|
||||||
|
'Authorization': 'Bearer ' + instance.hfAuthKey,
|
||||||
|
Accept: 'audio/flac, */*',
|
||||||
|
},
|
||||||
|
body: JSON.stringify({
|
||||||
|
inputs: note.text,
|
||||||
|
}),
|
||||||
|
timeout: 60000,
|
||||||
|
});
|
||||||
|
|
||||||
|
let contentType = res.headers.get('Content-Type') || 'application/octet-stream';
|
||||||
|
|
||||||
|
if (contentType === 'audio/flac') {
|
||||||
|
return res.body;
|
||||||
|
} else {
|
||||||
|
throw new ApiError(meta.errors.unavailable);
|
||||||
|
}
|
||||||
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -52,6 +52,7 @@ const exampleNote = reactive<Misskey.entities.Note>({
|
||||||
avatarBlurhash: 'eiKmhHIByXxZ~qWXs:-pR*NbR*s:xuRjoL-oR*WCt6WWf6WVf6oeWB',
|
avatarBlurhash: 'eiKmhHIByXxZ~qWXs:-pR*NbR*s:xuRjoL-oR*WCt6WWf6WVf6oeWB',
|
||||||
isBot: false,
|
isBot: false,
|
||||||
isCat: true,
|
isCat: true,
|
||||||
|
isVI: false,
|
||||||
emojis: {},
|
emojis: {},
|
||||||
onlineStatus: 'unknown',
|
onlineStatus: 'unknown',
|
||||||
badgeRoles: [],
|
badgeRoles: [],
|
||||||
|
|
|
@ -13,6 +13,7 @@ SPDX-License-Identifier: AGPL-3.0-only
|
||||||
<option value="isLocked">{{ i18n.ts._role._condition.isLocked }}</option>
|
<option value="isLocked">{{ i18n.ts._role._condition.isLocked }}</option>
|
||||||
<option value="isBot">{{ i18n.ts._role._condition.isBot }}</option>
|
<option value="isBot">{{ i18n.ts._role._condition.isBot }}</option>
|
||||||
<option value="isCat">{{ i18n.ts._role._condition.isCat }}</option>
|
<option value="isCat">{{ i18n.ts._role._condition.isCat }}</option>
|
||||||
|
<option value="isVI">{{ i18n.ts._role._condition.isVI }}</option>
|
||||||
<option value="isExplorable">{{ i18n.ts._role._condition.isExplorable }}</option>
|
<option value="isExplorable">{{ i18n.ts._role._condition.isExplorable }}</option>
|
||||||
<option value="roleAssignedTo">{{ i18n.ts._role._condition.roleAssignedTo }}</option>
|
<option value="roleAssignedTo">{{ i18n.ts._role._condition.roleAssignedTo }}</option>
|
||||||
<option value="createdLessThan">{{ i18n.ts._role._condition.createdLessThan }}</option>
|
<option value="createdLessThan">{{ i18n.ts._role._condition.createdLessThan }}</option>
|
||||||
|
|
|
@ -5,36 +5,123 @@ SPDX-License-Identifier: AGPL-3.0-only
|
||||||
|
|
||||||
<template>
|
<template>
|
||||||
<MkStickyContainer>
|
<MkStickyContainer>
|
||||||
<template #header><XHeader :actions="headerActions" :tabs="headerTabs"/></template>
|
<template #header><XHeader :actions="headerActions" :tabs="headerTabs"/></template>
|
||||||
<MkSpacer :contentMax="700" :marginMin="16" :marginMax="32">
|
<MkSpacer :contentMax="700" :marginMin="16" :marginMax="32">
|
||||||
<FormSuspense :p="init">
|
<FormSuspense :p="init">
|
||||||
<MkFolder>
|
<MkFolder>
|
||||||
<template #label>DeepL Translation</template>
|
<template #label>DeepL Translation</template>
|
||||||
|
|
||||||
<div class="_gaps_m">
|
<div class="_gaps_m">
|
||||||
<MkInput v-model="deeplAuthKey">
|
<MkInput v-model="deeplAuthKey">
|
||||||
<template #prefix><i class="ti ti-key"></i></template>
|
<template #prefix><i class="ti ti-key"></i></template>
|
||||||
<template #label>DeepL Auth Key</template>
|
<template #label>DeepL Auth Key</template>
|
||||||
</MkInput>
|
</MkInput>
|
||||||
<MkSwitch v-model="deeplIsPro">
|
<MkSwitch v-model="deeplIsPro">
|
||||||
<template #label>Pro account</template>
|
<template #label>Pro account</template>
|
||||||
</MkSwitch>
|
</MkSwitch>
|
||||||
<MkButton primary @click="save_deepl">Save</MkButton>
|
<MkButton primary @click="save_deepl">Save</MkButton>
|
||||||
</div>
|
</div>
|
||||||
</MkFolder>
|
</MkFolder>
|
||||||
<br />
|
<br />
|
||||||
<MkFolder>
|
<MkFolder>
|
||||||
<template #label>Text-To-Speech</template>
|
<template #label>Text-To-Speech</template>
|
||||||
<div class="_gaps_m">
|
<div class="_gaps_m">
|
||||||
<MkInput v-model="hfAuthKey">
|
<MkInput v-model="hfAuthKey">
|
||||||
<template #prefix><i class="ti ti-key"></i></template>
|
<template #prefix><i class="ti ti-key"></i></template>
|
||||||
<template #label>HuggingFace Auth Key</template>
|
<template #label>HuggingFace Auth Key</template>
|
||||||
</MkInput>
|
</MkInput>
|
||||||
<MkButton primary @click="save_deepl">Save</MkButton>
|
<MkSwitch v-model="hfSpace">
|
||||||
</div>
|
<template #label>HuggingFace Space</template>
|
||||||
</MkFolder>
|
</MkSwitch>
|
||||||
</FormSuspense>
|
<div v-if="hfSpace">
|
||||||
</MkSpacer>
|
<MkInput v-model="hfSpaceName">
|
||||||
|
<template #label>Space Name</template>
|
||||||
|
</MkInput>
|
||||||
|
<MkInput v-model="hfexampleAudioURL">
|
||||||
|
<template #label>Example Audio URL</template>
|
||||||
|
</MkInput>
|
||||||
|
<MkSwitch v-model="hfnrm">
|
||||||
|
<template #label>Enable no reference mode</template>
|
||||||
|
</MkSwitch>
|
||||||
|
<div v-if="!hfnrm">
|
||||||
|
<MkInput v-model="hfexampleText">
|
||||||
|
<template #label>Example Text</template>
|
||||||
|
</MkInput>
|
||||||
|
</div>
|
||||||
|
<label for="exampleLanguage">Example Language</label>
|
||||||
|
<select v-model="hfexampleLang" id="exampleLanguage">
|
||||||
|
<option value="" disabled> </option>
|
||||||
|
<option value="Chinese">中文</option>
|
||||||
|
<option value="English">English</option>
|
||||||
|
<option value="Japanese">日本語</option>
|
||||||
|
<option value="Yue">中文 (粤语)</option>
|
||||||
|
<option value="Korean">한국어</option>
|
||||||
|
<option value="Chinese-English Mixed">中文 - English</option>
|
||||||
|
<option value="Japanese-English Mixed">日本語 - English</option>
|
||||||
|
<option value="Yue-English Mixed">中文 (粤语) - English</option>
|
||||||
|
<option value="Korean-English Mixed">한국어 - English</option>
|
||||||
|
<option value="Multilingual Mixed">Multilingual Mixed</option>
|
||||||
|
<option value="Multilingual Mixed(Yue)">Multilingual Mixed (Yue)</option>
|
||||||
|
</select>
|
||||||
|
<MkSwitch v-model="hfdas">
|
||||||
|
<template #label>Whether to directly adjust the speech rate and timebre of the last synthesis result to prevent randomness</template>
|
||||||
|
</MkSwitch>
|
||||||
|
<label for="ttsslice">Slice</label>
|
||||||
|
<select v-model="hfslice" id="ttsslice">
|
||||||
|
<option value="" disabled> </option>
|
||||||
|
<option value="No slice">No slice</option>
|
||||||
|
<option value="Slice once every 4 sentences">Slice once every 4 sentences</option>
|
||||||
|
<option value="Slice per 50 characters">Slice per 50 characters</option>
|
||||||
|
<option value="Slice by Chinese punct">Slice by Chinese punct</option>
|
||||||
|
<option value="Slice by English punct">Slice by English punct</option>
|
||||||
|
<option value="Slice by every punct">Slice by every punct</option>
|
||||||
|
</select>
|
||||||
|
<label>Set top_k Value: {{ value }}</label>
|
||||||
|
<input
|
||||||
|
type="range"
|
||||||
|
v-model="hftopK"
|
||||||
|
:value="value = 15"
|
||||||
|
:min="0"
|
||||||
|
:max="100"
|
||||||
|
:step="1"
|
||||||
|
@input="value"
|
||||||
|
/>
|
||||||
|
<label>Set top_p Value: {{ value.toFixed(2) }}</label>
|
||||||
|
<input
|
||||||
|
type="range"
|
||||||
|
v-model="hftopP"
|
||||||
|
:value="value = 1"
|
||||||
|
:min="0"
|
||||||
|
:max="1"
|
||||||
|
:step="0.05"
|
||||||
|
@input="value = (Math.round(event.target.value / step) * step).toFixed(2)"
|
||||||
|
/>
|
||||||
|
<label>Set Temperature Value: {{ value.toFixed(2) }}</label>
|
||||||
|
<input
|
||||||
|
type="range"
|
||||||
|
v-model="hfTemperature"
|
||||||
|
:value="value = 1"
|
||||||
|
:min="0"
|
||||||
|
:max="1"
|
||||||
|
:step="0.05"
|
||||||
|
@input="value = (Math.round(event.target.value / step) * step).toFixed(2)"
|
||||||
|
/>
|
||||||
|
<label>Set Speed Rate Value: {{ value.toFixed(2) }}</label>
|
||||||
|
<input
|
||||||
|
type="range"
|
||||||
|
v-model="hfSpeedRate"
|
||||||
|
:value="value = 1.2"
|
||||||
|
:min="0.6"
|
||||||
|
:max="1.65"
|
||||||
|
:step="0.05"
|
||||||
|
@input="value = (Math.round(event.target.value / step) * step).toFixed(2)"
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
<MkButton primary @click="save_tts">Save</MkButton>
|
||||||
|
</div>
|
||||||
|
</MkFolder>
|
||||||
|
</FormSuspense>
|
||||||
|
</MkSpacer>
|
||||||
</MkStickyContainer>
|
</MkStickyContainer>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
|
@ -55,22 +142,66 @@ import MkFolder from '@/components/MkFolder.vue';
|
||||||
const deeplAuthKey = ref<string>('');
|
const deeplAuthKey = ref<string>('');
|
||||||
const deeplIsPro = ref<boolean>(false);
|
const deeplIsPro = ref<boolean>(false);
|
||||||
const hfAuthKey = ref<string>('');
|
const hfAuthKey = ref<string>('');
|
||||||
|
const hfSpace = ref<boolean>(false);
|
||||||
|
const hfSpaceName = ref<string | null>(null);
|
||||||
|
const hfexampleAudioURL = ref<string | null>(null);
|
||||||
|
const hfexampleText = ref<string | null>(null);
|
||||||
|
const hfexampleLang = ref<string | null>(null);
|
||||||
|
const hfslice = ref<string | null>('Slice once every 4 sentences');
|
||||||
|
const hftopK = ref<number>(15);
|
||||||
|
const hftopP = ref<number>(1.00);
|
||||||
|
const hfTemperature = ref<number>(1.00);
|
||||||
|
const hfnrm = ref<boolean>(false);
|
||||||
|
const hfSpeedRate = ref<number>(1.25);
|
||||||
|
const hfdas = ref<boolean>(false);
|
||||||
|
|
||||||
|
|
||||||
async function init() {
|
async function init() {
|
||||||
const meta = await misskeyApi('admin/meta');
|
const meta = await misskeyApi('admin/meta');
|
||||||
deeplAuthKey.value = meta.deeplAuthKey;
|
deeplAuthKey.value = meta.deeplAuthKey;
|
||||||
deeplIsPro.value = meta.deeplIsPro;
|
deeplIsPro.value = meta.deeplIsPro;
|
||||||
hfAuthKey.value = meta.hfAuthkey;
|
hfAuthKey.value = meta.hfAuthkey;
|
||||||
|
hfSpace.value = meta.hfSpace,
|
||||||
|
hfSpaceName.value = meta.hfSpaceName,
|
||||||
|
hfexampleAudioURL.value = meta.hfexampleAudioURL,
|
||||||
|
hfexampleText.value = meta.hfexampleText,
|
||||||
|
hfexampleLang.value = meta.hfexampleLang,
|
||||||
|
hfslice.value = meta.hfslice,
|
||||||
|
hftopK.value = meta.hftopK,
|
||||||
|
hftopP.value = meta.hftopP,
|
||||||
|
hfTemperature.value = meta.hfTemperature,
|
||||||
|
hfnrm.value = meta.hfnrm,
|
||||||
|
hfSpeedRate.value = meta.hfSpeedRate,
|
||||||
|
hfdas.value = meta.hfdas,
|
||||||
}
|
}
|
||||||
|
|
||||||
function save_deepl() {
|
function save_deepl() {
|
||||||
os.apiWithDialog('admin/update-meta', {
|
os.apiWithDialog('admin/update-meta', {
|
||||||
deeplAuthKey: deeplAuthKey.value,
|
deeplAuthKey: deeplAuthKey.value,
|
||||||
deeplIsPro: deeplIsPro.value,
|
deeplIsPro: deeplIsPro.value,
|
||||||
hfAuthKey: hfAuthKey.value,
|
}).then(() => {
|
||||||
}).then(() => {
|
fetchInstance(true);
|
||||||
fetchInstance(true);
|
});
|
||||||
});
|
}
|
||||||
|
|
||||||
|
function save_tts() {
|
||||||
|
os.apiWithDialog('admin/update-meta', {
|
||||||
|
hfAuthKey: hfAuthKey.value,
|
||||||
|
hfSpace: hfSpace.value,
|
||||||
|
hfSpaceName: hfSpaceName.value,
|
||||||
|
hfexampleAudioURL: hfexampleAudioURL.value,
|
||||||
|
hfexampleText: hfexampleText.value,
|
||||||
|
hfexampleLang: hfexampleLang.value,
|
||||||
|
hfslice: hfslice.value,
|
||||||
|
hftopK: hftopK.value,
|
||||||
|
hftopP: hftopP.value,
|
||||||
|
hfTemperature: hfTemperature.value,
|
||||||
|
hfnrm: hfnrm.value,
|
||||||
|
hfSpeedRate: hfSpeedRate.value,
|
||||||
|
hfdas: hfdas.value,
|
||||||
|
}).then(() => {
|
||||||
|
fetchInstance(true);
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
const headerActions = computed(() => []);
|
const headerActions = computed(() => []);
|
||||||
|
@ -78,7 +209,7 @@ const headerActions = computed(() => []);
|
||||||
const headerTabs = computed(() => []);
|
const headerTabs = computed(() => []);
|
||||||
|
|
||||||
definePageMetadata(() => ({
|
definePageMetadata(() => ({
|
||||||
title: i18n.ts.externalServices,
|
title: i18n.ts.externalServices,
|
||||||
icon: 'ti ti-link',
|
icon: 'ti ti-link',
|
||||||
}));
|
}));
|
||||||
</script>
|
</script>
|
||||||
|
|
|
@ -110,6 +110,7 @@ SPDX-License-Identifier: AGPL-3.0-only
|
||||||
<div class="_gaps_m">
|
<div class="_gaps_m">
|
||||||
<MkSwitch v-model="profile.isCat">{{ i18n.ts.flagAsCat }}<template #caption>{{ i18n.ts.flagAsCatDescription }}</template></MkSwitch>
|
<MkSwitch v-model="profile.isCat">{{ i18n.ts.flagAsCat }}<template #caption>{{ i18n.ts.flagAsCatDescription }}</template></MkSwitch>
|
||||||
<MkSwitch v-model="profile.isBot">{{ i18n.ts.flagAsBot }}<template #caption>{{ i18n.ts.flagAsBotDescription }}</template></MkSwitch>
|
<MkSwitch v-model="profile.isBot">{{ i18n.ts.flagAsBot }}<template #caption>{{ i18n.ts.flagAsBotDescription }}</template></MkSwitch>
|
||||||
|
<MkSwitch v-model="profile.isVI">{{ i18n.ts.flagAsVI }}<template #caption>{{ i18n.ts.flagAsVIDescription }}</template></MkSwitch>
|
||||||
</div>
|
</div>
|
||||||
</MkFolder>
|
</MkFolder>
|
||||||
</div>
|
</div>
|
||||||
|
@ -151,6 +152,7 @@ const profile = reactive({
|
||||||
lang: $i.lang,
|
lang: $i.lang,
|
||||||
isBot: $i.isBot ?? false,
|
isBot: $i.isBot ?? false,
|
||||||
isCat: $i.isCat ?? false,
|
isCat: $i.isCat ?? false,
|
||||||
|
isVI: $i.isVI ?? false,
|
||||||
});
|
});
|
||||||
|
|
||||||
watch(() => profile, () => {
|
watch(() => profile, () => {
|
||||||
|
@ -202,6 +204,7 @@ function save() {
|
||||||
lang: profile.lang || null,
|
lang: profile.lang || null,
|
||||||
isBot: !!profile.isBot,
|
isBot: !!profile.isBot,
|
||||||
isCat: !!profile.isCat,
|
isCat: !!profile.isCat,
|
||||||
|
isVI: !!profile.isVI,
|
||||||
});
|
});
|
||||||
globalEvents.emit('requestClearPageCache');
|
globalEvents.emit('requestClearPageCache');
|
||||||
claimAchievement('profileFilled');
|
claimAchievement('profileFilled');
|
||||||
|
|
135
pnpm-lock.yaml
135
pnpm-lock.yaml
|
@ -125,6 +125,9 @@ importers:
|
||||||
'@fastify/view':
|
'@fastify/view':
|
||||||
specifier: 10.0.1
|
specifier: 10.0.1
|
||||||
version: 10.0.1
|
version: 10.0.1
|
||||||
|
'@gradio/client':
|
||||||
|
specifier: 1.6.0-beta.3
|
||||||
|
version: 1.6.0-beta.3(utf-8-validate@6.0.3)
|
||||||
'@misskey-dev/sharp-read-bmp':
|
'@misskey-dev/sharp-read-bmp':
|
||||||
specifier: 1.2.0
|
specifier: 1.2.0
|
||||||
version: 1.2.0
|
version: 1.2.0
|
||||||
|
@ -1163,7 +1166,7 @@ importers:
|
||||||
version: 7.17.0(eslint@9.11.0)(typescript@5.6.2)
|
version: 7.17.0(eslint@9.11.0)(typescript@5.6.2)
|
||||||
'@vitest/coverage-v8':
|
'@vitest/coverage-v8':
|
||||||
specifier: 1.6.0
|
specifier: 1.6.0
|
||||||
version: 1.6.0(vitest@1.6.0(@types/node@20.14.12)(happy-dom@10.0.3)(jsdom@24.1.1(bufferutil@4.0.8)(utf-8-validate@6.0.4))(sass@1.79.4)(terser@5.33.0))
|
version: 1.6.0(vitest@1.6.0(@types/node@20.14.12)(happy-dom@10.0.3)(jsdom@24.1.1)(sass@1.79.4)(terser@5.33.0))
|
||||||
'@vue/runtime-core':
|
'@vue/runtime-core':
|
||||||
specifier: 3.5.11
|
specifier: 3.5.11
|
||||||
version: 3.5.11
|
version: 3.5.11
|
||||||
|
@ -2772,6 +2775,10 @@ packages:
|
||||||
resolution: {integrity: sha512-XrftRn4z75SnaJOmZQbt7Mk+IIjqVHw+glDGOxuHwXkZBZh/MBoRS7MHjSZMDaLhT4RjN2VqiEU7EOYleuJWSQ==}
|
resolution: {integrity: sha512-XrftRn4z75SnaJOmZQbt7Mk+IIjqVHw+glDGOxuHwXkZBZh/MBoRS7MHjSZMDaLhT4RjN2VqiEU7EOYleuJWSQ==}
|
||||||
hasBin: true
|
hasBin: true
|
||||||
|
|
||||||
|
'@gradio/client@1.6.0-beta.3':
|
||||||
|
resolution: {integrity: sha512-mJZVQ4UpfrSu71J4SkbSrpnbRotmB5ziy4fg7zqZhqXwXGZM3cHR9fUGkTFM0eXYnsaeBoiqn+1bcUh32Zcgkg==}
|
||||||
|
engines: {node: '>=18.0.0'}
|
||||||
|
|
||||||
'@hapi/boom@10.0.1':
|
'@hapi/boom@10.0.1':
|
||||||
resolution: {integrity: sha512-ERcCZaEjdH3OgSJlyjVk8pHIFeus91CjKP3v+MpgBNp5IvGzP2l/bRiD78nqYcKPaZdbKkK5vDBVPd2ohHBlsA==}
|
resolution: {integrity: sha512-ERcCZaEjdH3OgSJlyjVk8pHIFeus91CjKP3v+MpgBNp5IvGzP2l/bRiD78nqYcKPaZdbKkK5vDBVPd2ohHBlsA==}
|
||||||
|
|
||||||
|
@ -4633,6 +4640,9 @@ packages:
|
||||||
'@types/estree@1.0.6':
|
'@types/estree@1.0.6':
|
||||||
resolution: {integrity: sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==}
|
resolution: {integrity: sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==}
|
||||||
|
|
||||||
|
'@types/eventsource@1.1.15':
|
||||||
|
resolution: {integrity: sha512-XQmGcbnxUNa06HR3VBVkc9+A2Vpi9ZyLJcdS5dwaQQ/4ZMWFO+5c90FnMUpbtMZwB/FChoYHwuVg8TvkECacTA==}
|
||||||
|
|
||||||
'@types/express-serve-static-core@4.17.33':
|
'@types/express-serve-static-core@4.17.33':
|
||||||
resolution: {integrity: sha512-TPBqmR/HRYI3eC2E5hmiivIzv+bidAfXofM+sbonAGvyDhySGw9/PQZFt2BLOrjUUR++4eJVpx6KnLQK1Fk9tA==}
|
resolution: {integrity: sha512-TPBqmR/HRYI3eC2E5hmiivIzv+bidAfXofM+sbonAGvyDhySGw9/PQZFt2BLOrjUUR++4eJVpx6KnLQK1Fk9tA==}
|
||||||
|
|
||||||
|
@ -6833,6 +6843,10 @@ packages:
|
||||||
resolution: {integrity: sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==}
|
resolution: {integrity: sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==}
|
||||||
engines: {node: '>=0.8.x'}
|
engines: {node: '>=0.8.x'}
|
||||||
|
|
||||||
|
eventsource@2.0.2:
|
||||||
|
resolution: {integrity: sha512-IzUmBGPR3+oUG9dUeXynyNmf91/3zUSJg1lCktzKw47OXuhco54U3r9B7O4XX+Rb1Itm9OZ2b0RkTs10bICOxA==}
|
||||||
|
engines: {node: '>=12.0.0'}
|
||||||
|
|
||||||
execa@0.7.0:
|
execa@0.7.0:
|
||||||
resolution: {integrity: sha512-RztN09XglpYI7aBBrJCPW95jEH7YF1UEPOoX9yDhUTPdp7mK+CQvnLTuD10BNXZ3byLTu2uehZ8EcKT/4CGiFw==}
|
resolution: {integrity: sha512-RztN09XglpYI7aBBrJCPW95jEH7YF1UEPOoX9yDhUTPdp7mK+CQvnLTuD10BNXZ3byLTu2uehZ8EcKT/4CGiFw==}
|
||||||
engines: {node: '>=4'}
|
engines: {node: '>=4'}
|
||||||
|
@ -6975,6 +6989,9 @@ packages:
|
||||||
resolution: {integrity: sha512-7yAQpD2UMJzLi1Dqv7qFYnPbaPx7ZfFK6PiIxQ4PfkGPyNyl2Ugx+a/umUonmKqjhM4DnfbMvdX6otXq83soQQ==}
|
resolution: {integrity: sha512-7yAQpD2UMJzLi1Dqv7qFYnPbaPx7ZfFK6PiIxQ4PfkGPyNyl2Ugx+a/umUonmKqjhM4DnfbMvdX6otXq83soQQ==}
|
||||||
engines: {node: ^12.20 || >= 14.13}
|
engines: {node: ^12.20 || >= 14.13}
|
||||||
|
|
||||||
|
fetch-event-stream@0.1.5:
|
||||||
|
resolution: {integrity: sha512-V1PWovkspxQfssq/NnxoEyQo1DV+MRK/laPuPblIZmSjMN8P5u46OhlFQznSr9p/t0Sp8Uc6SbM3yCMfr0KU8g==}
|
||||||
|
|
||||||
figures@3.2.0:
|
figures@3.2.0:
|
||||||
resolution: {integrity: sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==}
|
resolution: {integrity: sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==}
|
||||||
engines: {node: '>=8'}
|
engines: {node: '>=8'}
|
||||||
|
@ -10236,6 +10253,10 @@ packages:
|
||||||
seedrandom@3.0.5:
|
seedrandom@3.0.5:
|
||||||
resolution: {integrity: sha512-8OwmbklUNzwezjGInmZ+2clQmExQPvomqjL7LFqOYqtmuxRgQYqOD3mHaU+MvZn5FLUeVxVfQjwLZW/n/JFuqg==}
|
resolution: {integrity: sha512-8OwmbklUNzwezjGInmZ+2clQmExQPvomqjL7LFqOYqtmuxRgQYqOD3mHaU+MvZn5FLUeVxVfQjwLZW/n/JFuqg==}
|
||||||
|
|
||||||
|
semiver@1.1.0:
|
||||||
|
resolution: {integrity: sha512-QNI2ChmuioGC1/xjyYwyZYADILWyW6AmS1UH6gDj/SFUUUS4MBAWs/7mxnkRPc/F4iHezDP+O8t0dO8WHiEOdg==}
|
||||||
|
engines: {node: '>=6'}
|
||||||
|
|
||||||
semver-regex@4.0.5:
|
semver-regex@4.0.5:
|
||||||
resolution: {integrity: sha512-hunMQrEy1T6Jr2uEVjrAIqjwWcQTgOAcIM52C8MY1EZSD3DDNft04XzvYKPqjED65bNVVko0YI38nYeEHCX3yw==}
|
resolution: {integrity: sha512-hunMQrEy1T6Jr2uEVjrAIqjwWcQTgOAcIM52C8MY1EZSD3DDNft04XzvYKPqjED65bNVVko0YI38nYeEHCX3yw==}
|
||||||
engines: {node: '>=12'}
|
engines: {node: '>=12'}
|
||||||
|
@ -10806,6 +10827,9 @@ packages:
|
||||||
textarea-caret@3.1.0:
|
textarea-caret@3.1.0:
|
||||||
resolution: {integrity: sha512-cXAvzO9pP5CGa6NKx0WYHl+8CHKZs8byMkt3PCJBCmq2a34YA9pO1NrQET5pzeqnBjBdToF5No4rrmkDUgQC2Q==}
|
resolution: {integrity: sha512-cXAvzO9pP5CGa6NKx0WYHl+8CHKZs8byMkt3PCJBCmq2a34YA9pO1NrQET5pzeqnBjBdToF5No4rrmkDUgQC2Q==}
|
||||||
|
|
||||||
|
textlinestream@1.1.1:
|
||||||
|
resolution: {integrity: sha512-iBHbi7BQxrFmwZUQJsT0SjNzlLLsXhvW/kg7EyOMVMBIrlnj/qYofwo1LVLZi+3GbUEo96Iu2eqToI2+lZoAEQ==}
|
||||||
|
|
||||||
thenify-all@1.6.0:
|
thenify-all@1.6.0:
|
||||||
resolution: {integrity: sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==}
|
resolution: {integrity: sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==}
|
||||||
engines: {node: '>=0.8'}
|
engines: {node: '>=0.8'}
|
||||||
|
@ -13245,6 +13269,20 @@ snapshots:
|
||||||
|
|
||||||
'@github/webauthn-json@2.1.1': {}
|
'@github/webauthn-json@2.1.1': {}
|
||||||
|
|
||||||
|
'@gradio/client@1.6.0-beta.3(utf-8-validate@6.0.3)':
|
||||||
|
dependencies:
|
||||||
|
'@types/eventsource': 1.1.15
|
||||||
|
bufferutil: 4.0.7
|
||||||
|
eventsource: 2.0.2
|
||||||
|
fetch-event-stream: 0.1.5
|
||||||
|
msw: 2.4.9(typescript@5.6.2)
|
||||||
|
semiver: 1.1.0
|
||||||
|
textlinestream: 1.1.1
|
||||||
|
typescript: 5.6.2
|
||||||
|
ws: 8.18.0(bufferutil@4.0.7)(utf-8-validate@6.0.3)
|
||||||
|
transitivePeerDependencies:
|
||||||
|
- utf-8-validate
|
||||||
|
|
||||||
'@hapi/boom@10.0.1':
|
'@hapi/boom@10.0.1':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@hapi/hoek': 11.0.4
|
'@hapi/hoek': 11.0.4
|
||||||
|
@ -15573,6 +15611,8 @@ snapshots:
|
||||||
|
|
||||||
'@types/estree@1.0.6': {}
|
'@types/estree@1.0.6': {}
|
||||||
|
|
||||||
|
'@types/eventsource@1.1.15': {}
|
||||||
|
|
||||||
'@types/express-serve-static-core@4.17.33':
|
'@types/express-serve-static-core@4.17.33':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@types/node': 20.14.12
|
'@types/node': 20.14.12
|
||||||
|
@ -15962,7 +16002,7 @@ snapshots:
|
||||||
'@typescript-eslint/types': 7.17.0
|
'@typescript-eslint/types': 7.17.0
|
||||||
'@typescript-eslint/typescript-estree': 7.17.0(typescript@5.5.4)
|
'@typescript-eslint/typescript-estree': 7.17.0(typescript@5.5.4)
|
||||||
'@typescript-eslint/visitor-keys': 7.17.0
|
'@typescript-eslint/visitor-keys': 7.17.0
|
||||||
debug: 4.3.5(supports-color@5.5.0)
|
debug: 4.3.5(supports-color@8.1.1)
|
||||||
eslint: 9.11.0
|
eslint: 9.11.0
|
||||||
optionalDependencies:
|
optionalDependencies:
|
||||||
typescript: 5.5.4
|
typescript: 5.5.4
|
||||||
|
@ -15975,7 +16015,7 @@ snapshots:
|
||||||
'@typescript-eslint/types': 7.17.0
|
'@typescript-eslint/types': 7.17.0
|
||||||
'@typescript-eslint/typescript-estree': 7.17.0(typescript@5.6.2)
|
'@typescript-eslint/typescript-estree': 7.17.0(typescript@5.6.2)
|
||||||
'@typescript-eslint/visitor-keys': 7.17.0
|
'@typescript-eslint/visitor-keys': 7.17.0
|
||||||
debug: 4.3.5(supports-color@5.5.0)
|
debug: 4.3.5(supports-color@8.1.1)
|
||||||
eslint: 9.11.0
|
eslint: 9.11.0
|
||||||
optionalDependencies:
|
optionalDependencies:
|
||||||
typescript: 5.6.2
|
typescript: 5.6.2
|
||||||
|
@ -15988,7 +16028,7 @@ snapshots:
|
||||||
'@typescript-eslint/types': 7.17.0
|
'@typescript-eslint/types': 7.17.0
|
||||||
'@typescript-eslint/typescript-estree': 7.17.0(typescript@5.6.2)
|
'@typescript-eslint/typescript-estree': 7.17.0(typescript@5.6.2)
|
||||||
'@typescript-eslint/visitor-keys': 7.17.0
|
'@typescript-eslint/visitor-keys': 7.17.0
|
||||||
debug: 4.3.5(supports-color@5.5.0)
|
debug: 4.3.5(supports-color@8.1.1)
|
||||||
eslint: 9.8.0
|
eslint: 9.8.0
|
||||||
optionalDependencies:
|
optionalDependencies:
|
||||||
typescript: 5.6.2
|
typescript: 5.6.2
|
||||||
|
@ -16009,7 +16049,7 @@ snapshots:
|
||||||
dependencies:
|
dependencies:
|
||||||
'@typescript-eslint/typescript-estree': 7.1.0(typescript@5.3.3)
|
'@typescript-eslint/typescript-estree': 7.1.0(typescript@5.3.3)
|
||||||
'@typescript-eslint/utils': 7.1.0(eslint@9.11.0)(typescript@5.3.3)
|
'@typescript-eslint/utils': 7.1.0(eslint@9.11.0)(typescript@5.3.3)
|
||||||
debug: 4.3.5(supports-color@5.5.0)
|
debug: 4.3.5(supports-color@8.1.1)
|
||||||
eslint: 9.11.0
|
eslint: 9.11.0
|
||||||
ts-api-utils: 1.0.1(typescript@5.3.3)
|
ts-api-utils: 1.0.1(typescript@5.3.3)
|
||||||
optionalDependencies:
|
optionalDependencies:
|
||||||
|
@ -16021,7 +16061,7 @@ snapshots:
|
||||||
dependencies:
|
dependencies:
|
||||||
'@typescript-eslint/typescript-estree': 7.17.0(typescript@5.5.4)
|
'@typescript-eslint/typescript-estree': 7.17.0(typescript@5.5.4)
|
||||||
'@typescript-eslint/utils': 7.17.0(eslint@9.11.0)(typescript@5.5.4)
|
'@typescript-eslint/utils': 7.17.0(eslint@9.11.0)(typescript@5.5.4)
|
||||||
debug: 4.3.5(supports-color@5.5.0)
|
debug: 4.3.5(supports-color@8.1.1)
|
||||||
eslint: 9.11.0
|
eslint: 9.11.0
|
||||||
ts-api-utils: 1.3.0(typescript@5.5.4)
|
ts-api-utils: 1.3.0(typescript@5.5.4)
|
||||||
optionalDependencies:
|
optionalDependencies:
|
||||||
|
@ -16033,7 +16073,7 @@ snapshots:
|
||||||
dependencies:
|
dependencies:
|
||||||
'@typescript-eslint/typescript-estree': 7.17.0(typescript@5.6.2)
|
'@typescript-eslint/typescript-estree': 7.17.0(typescript@5.6.2)
|
||||||
'@typescript-eslint/utils': 7.17.0(eslint@9.11.0)(typescript@5.6.2)
|
'@typescript-eslint/utils': 7.17.0(eslint@9.11.0)(typescript@5.6.2)
|
||||||
debug: 4.3.5(supports-color@5.5.0)
|
debug: 4.3.5(supports-color@8.1.1)
|
||||||
eslint: 9.11.0
|
eslint: 9.11.0
|
||||||
ts-api-utils: 1.3.0(typescript@5.6.2)
|
ts-api-utils: 1.3.0(typescript@5.6.2)
|
||||||
optionalDependencies:
|
optionalDependencies:
|
||||||
|
@ -16045,7 +16085,7 @@ snapshots:
|
||||||
dependencies:
|
dependencies:
|
||||||
'@typescript-eslint/typescript-estree': 7.17.0(typescript@5.6.2)
|
'@typescript-eslint/typescript-estree': 7.17.0(typescript@5.6.2)
|
||||||
'@typescript-eslint/utils': 7.17.0(eslint@9.8.0)(typescript@5.6.2)
|
'@typescript-eslint/utils': 7.17.0(eslint@9.8.0)(typescript@5.6.2)
|
||||||
debug: 4.3.5(supports-color@5.5.0)
|
debug: 4.3.5(supports-color@8.1.1)
|
||||||
eslint: 9.8.0
|
eslint: 9.8.0
|
||||||
ts-api-utils: 1.3.0(typescript@5.6.2)
|
ts-api-utils: 1.3.0(typescript@5.6.2)
|
||||||
optionalDependencies:
|
optionalDependencies:
|
||||||
|
@ -16061,7 +16101,7 @@ snapshots:
|
||||||
dependencies:
|
dependencies:
|
||||||
'@typescript-eslint/types': 7.1.0
|
'@typescript-eslint/types': 7.1.0
|
||||||
'@typescript-eslint/visitor-keys': 7.1.0
|
'@typescript-eslint/visitor-keys': 7.1.0
|
||||||
debug: 4.3.5(supports-color@5.5.0)
|
debug: 4.3.5(supports-color@8.1.1)
|
||||||
globby: 11.1.0
|
globby: 11.1.0
|
||||||
is-glob: 4.0.3
|
is-glob: 4.0.3
|
||||||
minimatch: 9.0.3
|
minimatch: 9.0.3
|
||||||
|
@ -16076,7 +16116,7 @@ snapshots:
|
||||||
dependencies:
|
dependencies:
|
||||||
'@typescript-eslint/types': 7.17.0
|
'@typescript-eslint/types': 7.17.0
|
||||||
'@typescript-eslint/visitor-keys': 7.17.0
|
'@typescript-eslint/visitor-keys': 7.17.0
|
||||||
debug: 4.3.5(supports-color@5.5.0)
|
debug: 4.3.5(supports-color@8.1.1)
|
||||||
globby: 11.1.0
|
globby: 11.1.0
|
||||||
is-glob: 4.0.3
|
is-glob: 4.0.3
|
||||||
minimatch: 9.0.4
|
minimatch: 9.0.4
|
||||||
|
@ -16091,7 +16131,7 @@ snapshots:
|
||||||
dependencies:
|
dependencies:
|
||||||
'@typescript-eslint/types': 7.17.0
|
'@typescript-eslint/types': 7.17.0
|
||||||
'@typescript-eslint/visitor-keys': 7.17.0
|
'@typescript-eslint/visitor-keys': 7.17.0
|
||||||
debug: 4.3.5(supports-color@5.5.0)
|
debug: 4.3.5(supports-color@8.1.1)
|
||||||
globby: 11.1.0
|
globby: 11.1.0
|
||||||
is-glob: 4.0.3
|
is-glob: 4.0.3
|
||||||
minimatch: 9.0.4
|
minimatch: 9.0.4
|
||||||
|
@ -16175,7 +16215,7 @@ snapshots:
|
||||||
dependencies:
|
dependencies:
|
||||||
'@ampproject/remapping': 2.2.1
|
'@ampproject/remapping': 2.2.1
|
||||||
'@bcoe/v8-coverage': 0.2.3
|
'@bcoe/v8-coverage': 0.2.3
|
||||||
debug: 4.3.5(supports-color@5.5.0)
|
debug: 4.3.5(supports-color@8.1.1)
|
||||||
istanbul-lib-coverage: 3.2.2
|
istanbul-lib-coverage: 3.2.2
|
||||||
istanbul-lib-report: 3.0.1
|
istanbul-lib-report: 3.0.1
|
||||||
istanbul-lib-source-maps: 5.0.4
|
istanbul-lib-source-maps: 5.0.4
|
||||||
|
@ -16190,11 +16230,11 @@ snapshots:
|
||||||
transitivePeerDependencies:
|
transitivePeerDependencies:
|
||||||
- supports-color
|
- supports-color
|
||||||
|
|
||||||
'@vitest/coverage-v8@1.6.0(vitest@1.6.0(@types/node@20.14.12)(happy-dom@10.0.3)(jsdom@24.1.1(bufferutil@4.0.8)(utf-8-validate@6.0.4))(sass@1.79.4)(terser@5.33.0))':
|
'@vitest/coverage-v8@1.6.0(vitest@1.6.0(@types/node@20.14.12)(happy-dom@10.0.3)(jsdom@24.1.1)(sass@1.79.4)(terser@5.33.0))':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@ampproject/remapping': 2.2.1
|
'@ampproject/remapping': 2.2.1
|
||||||
'@bcoe/v8-coverage': 0.2.3
|
'@bcoe/v8-coverage': 0.2.3
|
||||||
debug: 4.3.5(supports-color@5.5.0)
|
debug: 4.3.5(supports-color@8.1.1)
|
||||||
istanbul-lib-coverage: 3.2.2
|
istanbul-lib-coverage: 3.2.2
|
||||||
istanbul-lib-report: 3.0.1
|
istanbul-lib-report: 3.0.1
|
||||||
istanbul-lib-source-maps: 5.0.4
|
istanbul-lib-source-maps: 5.0.4
|
||||||
|
@ -16205,7 +16245,7 @@ snapshots:
|
||||||
std-env: 3.7.0
|
std-env: 3.7.0
|
||||||
strip-literal: 2.1.0
|
strip-literal: 2.1.0
|
||||||
test-exclude: 6.0.0
|
test-exclude: 6.0.0
|
||||||
vitest: 1.6.0(@types/node@20.14.12)(happy-dom@10.0.3)(jsdom@24.1.1(bufferutil@4.0.8)(utf-8-validate@6.0.4))(sass@1.79.4)(terser@5.33.0)
|
vitest: 1.6.0(@types/node@20.14.12)(happy-dom@10.0.3)(jsdom@24.1.1)(sass@1.79.4)(terser@5.33.0)
|
||||||
transitivePeerDependencies:
|
transitivePeerDependencies:
|
||||||
- supports-color
|
- supports-color
|
||||||
|
|
||||||
|
@ -16515,7 +16555,7 @@ snapshots:
|
||||||
|
|
||||||
agent-base@7.1.0:
|
agent-base@7.1.0:
|
||||||
dependencies:
|
dependencies:
|
||||||
debug: 4.3.5(supports-color@5.5.0)
|
debug: 4.3.5(supports-color@8.1.1)
|
||||||
transitivePeerDependencies:
|
transitivePeerDependencies:
|
||||||
- supports-color
|
- supports-color
|
||||||
|
|
||||||
|
@ -17001,7 +17041,6 @@ snapshots:
|
||||||
bufferutil@4.0.7:
|
bufferutil@4.0.7:
|
||||||
dependencies:
|
dependencies:
|
||||||
node-gyp-build: 4.6.0
|
node-gyp-build: 4.6.0
|
||||||
optional: true
|
|
||||||
|
|
||||||
bufferutil@4.0.8:
|
bufferutil@4.0.8:
|
||||||
dependencies:
|
dependencies:
|
||||||
|
@ -18638,6 +18677,8 @@ snapshots:
|
||||||
|
|
||||||
events@3.3.0: {}
|
events@3.3.0: {}
|
||||||
|
|
||||||
|
eventsource@2.0.2: {}
|
||||||
|
|
||||||
execa@0.7.0:
|
execa@0.7.0:
|
||||||
dependencies:
|
dependencies:
|
||||||
cross-spawn: 5.1.0
|
cross-spawn: 5.1.0
|
||||||
|
@ -18885,6 +18926,8 @@ snapshots:
|
||||||
node-domexception: 1.0.0
|
node-domexception: 1.0.0
|
||||||
web-streams-polyfill: 3.2.1
|
web-streams-polyfill: 3.2.1
|
||||||
|
|
||||||
|
fetch-event-stream@0.1.5: {}
|
||||||
|
|
||||||
figures@3.2.0:
|
figures@3.2.0:
|
||||||
dependencies:
|
dependencies:
|
||||||
escape-string-regexp: 1.0.5
|
escape-string-regexp: 1.0.5
|
||||||
|
@ -19487,7 +19530,7 @@ snapshots:
|
||||||
http-proxy-agent@7.0.2:
|
http-proxy-agent@7.0.2:
|
||||||
dependencies:
|
dependencies:
|
||||||
agent-base: 7.1.0
|
agent-base: 7.1.0
|
||||||
debug: 4.3.5(supports-color@5.5.0)
|
debug: 4.3.5(supports-color@8.1.1)
|
||||||
transitivePeerDependencies:
|
transitivePeerDependencies:
|
||||||
- supports-color
|
- supports-color
|
||||||
|
|
||||||
|
@ -19526,7 +19569,7 @@ snapshots:
|
||||||
https-proxy-agent@5.0.1:
|
https-proxy-agent@5.0.1:
|
||||||
dependencies:
|
dependencies:
|
||||||
agent-base: 6.0.2
|
agent-base: 6.0.2
|
||||||
debug: 4.3.5(supports-color@5.5.0)
|
debug: 4.3.5(supports-color@8.1.1)
|
||||||
transitivePeerDependencies:
|
transitivePeerDependencies:
|
||||||
- supports-color
|
- supports-color
|
||||||
optional: true
|
optional: true
|
||||||
|
@ -19534,14 +19577,14 @@ snapshots:
|
||||||
https-proxy-agent@7.0.2:
|
https-proxy-agent@7.0.2:
|
||||||
dependencies:
|
dependencies:
|
||||||
agent-base: 7.1.0
|
agent-base: 7.1.0
|
||||||
debug: 4.3.5(supports-color@5.5.0)
|
debug: 4.3.5(supports-color@8.1.1)
|
||||||
transitivePeerDependencies:
|
transitivePeerDependencies:
|
||||||
- supports-color
|
- supports-color
|
||||||
|
|
||||||
https-proxy-agent@7.0.5:
|
https-proxy-agent@7.0.5:
|
||||||
dependencies:
|
dependencies:
|
||||||
agent-base: 7.1.0
|
agent-base: 7.1.0
|
||||||
debug: 4.3.5(supports-color@5.5.0)
|
debug: 4.3.5(supports-color@8.1.1)
|
||||||
transitivePeerDependencies:
|
transitivePeerDependencies:
|
||||||
- supports-color
|
- supports-color
|
||||||
|
|
||||||
|
@ -19914,7 +19957,7 @@ snapshots:
|
||||||
istanbul-lib-source-maps@5.0.4:
|
istanbul-lib-source-maps@5.0.4:
|
||||||
dependencies:
|
dependencies:
|
||||||
'@jridgewell/trace-mapping': 0.3.25
|
'@jridgewell/trace-mapping': 0.3.25
|
||||||
debug: 4.3.5(supports-color@5.5.0)
|
debug: 4.3.5(supports-color@8.1.1)
|
||||||
istanbul-lib-coverage: 3.2.2
|
istanbul-lib-coverage: 3.2.2
|
||||||
transitivePeerDependencies:
|
transitivePeerDependencies:
|
||||||
- supports-color
|
- supports-color
|
||||||
|
@ -20315,6 +20358,35 @@ snapshots:
|
||||||
|
|
||||||
jsdoc-type-pratt-parser@4.1.0: {}
|
jsdoc-type-pratt-parser@4.1.0: {}
|
||||||
|
|
||||||
|
jsdom@24.1.1:
|
||||||
|
dependencies:
|
||||||
|
cssstyle: 4.0.1
|
||||||
|
data-urls: 5.0.0
|
||||||
|
decimal.js: 10.4.3
|
||||||
|
form-data: 4.0.0
|
||||||
|
html-encoding-sniffer: 4.0.0
|
||||||
|
http-proxy-agent: 7.0.2
|
||||||
|
https-proxy-agent: 7.0.5
|
||||||
|
is-potential-custom-element-name: 1.0.1
|
||||||
|
nwsapi: 2.2.12
|
||||||
|
parse5: 7.1.2
|
||||||
|
rrweb-cssom: 0.7.1
|
||||||
|
saxes: 6.0.0
|
||||||
|
symbol-tree: 3.2.4
|
||||||
|
tough-cookie: 4.1.4
|
||||||
|
w3c-xmlserializer: 5.0.0
|
||||||
|
webidl-conversions: 7.0.0
|
||||||
|
whatwg-encoding: 3.1.1
|
||||||
|
whatwg-mimetype: 4.0.0
|
||||||
|
whatwg-url: 14.0.0
|
||||||
|
ws: 8.18.0(bufferutil@4.0.8)(utf-8-validate@6.0.4)
|
||||||
|
xml-name-validator: 5.0.0
|
||||||
|
transitivePeerDependencies:
|
||||||
|
- bufferutil
|
||||||
|
- supports-color
|
||||||
|
- utf-8-validate
|
||||||
|
optional: true
|
||||||
|
|
||||||
jsdom@24.1.1(bufferutil@4.0.7)(utf-8-validate@6.0.3):
|
jsdom@24.1.1(bufferutil@4.0.7)(utf-8-validate@6.0.3):
|
||||||
dependencies:
|
dependencies:
|
||||||
cssstyle: 4.0.1
|
cssstyle: 4.0.1
|
||||||
|
@ -21361,8 +21433,7 @@ snapshots:
|
||||||
node-gyp-build-optional-packages@5.0.7:
|
node-gyp-build-optional-packages@5.0.7:
|
||||||
optional: true
|
optional: true
|
||||||
|
|
||||||
node-gyp-build@4.6.0:
|
node-gyp-build@4.6.0: {}
|
||||||
optional: true
|
|
||||||
|
|
||||||
node-gyp@10.2.0:
|
node-gyp@10.2.0:
|
||||||
dependencies:
|
dependencies:
|
||||||
|
@ -22741,6 +22812,8 @@ snapshots:
|
||||||
|
|
||||||
seedrandom@3.0.5: {}
|
seedrandom@3.0.5: {}
|
||||||
|
|
||||||
|
semiver@1.1.0: {}
|
||||||
|
|
||||||
semver-regex@4.0.5: {}
|
semver-regex@4.0.5: {}
|
||||||
|
|
||||||
semver-truncate@2.0.0:
|
semver-truncate@2.0.0:
|
||||||
|
@ -22889,7 +22962,7 @@ snapshots:
|
||||||
dependencies:
|
dependencies:
|
||||||
'@hapi/hoek': 11.0.4
|
'@hapi/hoek': 11.0.4
|
||||||
'@hapi/wreck': 18.0.1
|
'@hapi/wreck': 18.0.1
|
||||||
debug: 4.3.5(supports-color@5.5.0)
|
debug: 4.3.5(supports-color@8.1.1)
|
||||||
joi: 17.11.0
|
joi: 17.11.0
|
||||||
transitivePeerDependencies:
|
transitivePeerDependencies:
|
||||||
- supports-color
|
- supports-color
|
||||||
|
@ -23376,6 +23449,8 @@ snapshots:
|
||||||
|
|
||||||
textarea-caret@3.1.0: {}
|
textarea-caret@3.1.0: {}
|
||||||
|
|
||||||
|
textlinestream@1.1.1: {}
|
||||||
|
|
||||||
thenify-all@1.6.0:
|
thenify-all@1.6.0:
|
||||||
dependencies:
|
dependencies:
|
||||||
thenify: 3.3.1
|
thenify: 3.3.1
|
||||||
|
@ -23849,7 +23924,7 @@ snapshots:
|
||||||
vite-node@1.6.0(@types/node@20.14.12)(sass@1.79.3)(terser@5.33.0):
|
vite-node@1.6.0(@types/node@20.14.12)(sass@1.79.3)(terser@5.33.0):
|
||||||
dependencies:
|
dependencies:
|
||||||
cac: 6.7.14
|
cac: 6.7.14
|
||||||
debug: 4.3.5(supports-color@5.5.0)
|
debug: 4.3.5(supports-color@8.1.1)
|
||||||
pathe: 1.1.2
|
pathe: 1.1.2
|
||||||
picocolors: 1.0.1
|
picocolors: 1.0.1
|
||||||
vite: 5.4.8(@types/node@20.14.12)(sass@1.79.3)(terser@5.33.0)
|
vite: 5.4.8(@types/node@20.14.12)(sass@1.79.3)(terser@5.33.0)
|
||||||
|
@ -23867,7 +23942,7 @@ snapshots:
|
||||||
vite-node@1.6.0(@types/node@20.14.12)(sass@1.79.4)(terser@5.33.0):
|
vite-node@1.6.0(@types/node@20.14.12)(sass@1.79.4)(terser@5.33.0):
|
||||||
dependencies:
|
dependencies:
|
||||||
cac: 6.7.14
|
cac: 6.7.14
|
||||||
debug: 4.3.5(supports-color@5.5.0)
|
debug: 4.3.5(supports-color@8.1.1)
|
||||||
pathe: 1.1.2
|
pathe: 1.1.2
|
||||||
picocolors: 1.0.1
|
picocolors: 1.0.1
|
||||||
vite: 5.4.8(@types/node@20.14.12)(sass@1.79.4)(terser@5.33.0)
|
vite: 5.4.8(@types/node@20.14.12)(sass@1.79.4)(terser@5.33.0)
|
||||||
|
@ -23949,7 +24024,7 @@ snapshots:
|
||||||
- supports-color
|
- supports-color
|
||||||
- terser
|
- terser
|
||||||
|
|
||||||
vitest@1.6.0(@types/node@20.14.12)(happy-dom@10.0.3)(jsdom@24.1.1(bufferutil@4.0.8)(utf-8-validate@6.0.4))(sass@1.79.4)(terser@5.33.0):
|
vitest@1.6.0(@types/node@20.14.12)(happy-dom@10.0.3)(jsdom@24.1.1)(sass@1.79.4)(terser@5.33.0):
|
||||||
dependencies:
|
dependencies:
|
||||||
'@vitest/expect': 1.6.0
|
'@vitest/expect': 1.6.0
|
||||||
'@vitest/runner': 1.6.0
|
'@vitest/runner': 1.6.0
|
||||||
|
@ -23974,7 +24049,7 @@ snapshots:
|
||||||
optionalDependencies:
|
optionalDependencies:
|
||||||
'@types/node': 20.14.12
|
'@types/node': 20.14.12
|
||||||
happy-dom: 10.0.3
|
happy-dom: 10.0.3
|
||||||
jsdom: 24.1.1(bufferutil@4.0.8)(utf-8-validate@6.0.4)
|
jsdom: 24.1.1
|
||||||
transitivePeerDependencies:
|
transitivePeerDependencies:
|
||||||
- less
|
- less
|
||||||
- lightningcss
|
- lightningcss
|
||||||
|
@ -24046,7 +24121,7 @@ snapshots:
|
||||||
|
|
||||||
vue-eslint-parser@9.4.3(eslint@9.11.0):
|
vue-eslint-parser@9.4.3(eslint@9.11.0):
|
||||||
dependencies:
|
dependencies:
|
||||||
debug: 4.3.5(supports-color@5.5.0)
|
debug: 4.3.5(supports-color@8.1.1)
|
||||||
eslint: 9.11.0
|
eslint: 9.11.0
|
||||||
eslint-scope: 7.2.2
|
eslint-scope: 7.2.2
|
||||||
eslint-visitor-keys: 3.4.3
|
eslint-visitor-keys: 3.4.3
|
||||||
|
|
Loading…
Reference in New Issue