feat(client): Cloud Translation - Advanced(v3)のサポート追加
This commit is contained in:
parent
39f53b64b6
commit
6b435876e0
|
@ -54,6 +54,7 @@
|
|||
- 업데이트 팝업 개선 (Misskey와 CherryPick의 변경 사항을 직관적으로 볼 수 있도록)
|
||||
- 서버 통계 위젯의 원 그래프 디자인 개선
|
||||
- 새로운 서버 통계 위젯 추가
|
||||
- Cloud Translation - Advanced(v3) 지원 추가
|
||||
- Fix: (Friendly) 위젯 영역에 safe-area-inset-bottom이 적용되지 않음
|
||||
- Fix: (Friendly) 플로팅 메뉴를 길게 눌렀을 때 프로필 이미지를 드래그 할 수 있는 문제
|
||||
- Fix: 위젯 편집 시 헤더 이외의 영역을 눌렀을 때 위젯 설정이 뜨는 문제
|
||||
|
|
|
@ -0,0 +1,19 @@
|
|||
export class MultipleTranslationServices1685378242713 {
|
||||
name = 'MultipleTranslationServices1685378242713'
|
||||
|
||||
async up(queryRunner) {
|
||||
await queryRunner.query(`ALTER TABLE "meta" ADD "ctav3SaKey" character varying(5120)`);
|
||||
await queryRunner.query(`ALTER TABLE "meta" ADD "ctav3ProjectId" character varying(1024)`);
|
||||
await queryRunner.query(`ALTER TABLE "meta" ADD "ctav3Location" character varying(1024)`);
|
||||
await queryRunner.query(`ALTER TABLE "meta" ADD "ctav3Model" character varying(1024)`);
|
||||
await queryRunner.query(`ALTER TABLE "meta" ADD "ctav3Glossary" character varying(1024)`);
|
||||
}
|
||||
|
||||
async down(queryRunner) {
|
||||
await queryRunner.query(`ALTER TABLE "meta" DROP COLUMN "ctav3SaKey"`);
|
||||
await queryRunner.query(`ALTER TABLE "meta" DROP COLUMN "ctav3ProjectId"`);
|
||||
await queryRunner.query(`ALTER TABLE "meta" DROP COLUMN "ctav3Location"`);
|
||||
await queryRunner.query(`ALTER TABLE "meta" DROP COLUMN "ctav3Model"`);
|
||||
await queryRunner.query(`ALTER TABLE "meta" DROP COLUMN "ctav3Glossary"`);
|
||||
}
|
||||
}
|
|
@ -65,6 +65,7 @@
|
|||
"@fastify/multipart": "7.6.0",
|
||||
"@fastify/static": "6.10.1",
|
||||
"@fastify/view": "7.4.1",
|
||||
"@google-cloud/translate": "^7.2.1",
|
||||
"@nestjs/common": "9.4.2",
|
||||
"@nestjs/core": "9.4.2",
|
||||
"@nestjs/testing": "9.4.2",
|
||||
|
|
|
@ -283,6 +283,36 @@ export class Meta {
|
|||
})
|
||||
public deeplIsPro: boolean;
|
||||
|
||||
@Column('varchar', {
|
||||
length: 5120,
|
||||
nullable: true,
|
||||
})
|
||||
public ctav3SaKey: string | null;
|
||||
|
||||
@Column('varchar', {
|
||||
length: 1024,
|
||||
nullable: true,
|
||||
})
|
||||
public ctav3ProjectId: string | null;
|
||||
|
||||
@Column('varchar', {
|
||||
length: 1024,
|
||||
nullable: true,
|
||||
})
|
||||
public ctav3Location: string | null;
|
||||
|
||||
@Column('varchar', {
|
||||
length: 1024,
|
||||
nullable: true,
|
||||
})
|
||||
public ctav3Model: string | null;
|
||||
|
||||
@Column('varchar', {
|
||||
length: 1024,
|
||||
nullable: true,
|
||||
})
|
||||
public ctav3Glossary: string | null;
|
||||
|
||||
@Column('varchar', {
|
||||
length: 1024,
|
||||
nullable: true,
|
||||
|
|
|
@ -363,6 +363,11 @@ export default class extends Endpoint<typeof meta, typeof paramDef> {
|
|||
objectStorageS3ForcePathStyle: instance.objectStorageS3ForcePathStyle,
|
||||
deeplAuthKey: instance.deeplAuthKey,
|
||||
deeplIsPro: instance.deeplIsPro,
|
||||
ctav3SaKey: instance.ctav3SaKey,
|
||||
ctav3ProjectId: instance.ctav3ProjectId,
|
||||
ctav3Location: instance.ctav3Location,
|
||||
ctav3Model: instance.ctav3Model,
|
||||
ctav3Glossary: instance.ctav3Glossary,
|
||||
enableIpLogging: instance.enableIpLogging,
|
||||
enableActiveEmailValidation: instance.enableActiveEmailValidation,
|
||||
enableChartsForRemoteUser: instance.enableChartsForRemoteUser,
|
||||
|
|
|
@ -65,6 +65,11 @@ export const paramDef = {
|
|||
translatorType: { type: 'string', nullable: true },
|
||||
deeplAuthKey: { type: 'string', nullable: true },
|
||||
deeplIsPro: { type: 'boolean' },
|
||||
ctav3SaKey: { type: 'string', nullable: true },
|
||||
ctav3ProjectId: { type: 'string', nullable: true },
|
||||
ctav3Location: { type: 'string', nullable: true },
|
||||
ctav3Model: { type: 'string', nullable: true },
|
||||
ctav3Glossary: { type: 'string', nullable: true },
|
||||
enableEmail: { type: 'boolean' },
|
||||
email: { type: 'string', nullable: true },
|
||||
smtpSecure: { type: 'boolean' },
|
||||
|
@ -382,6 +387,26 @@ export default class extends Endpoint<typeof meta, typeof paramDef> {
|
|||
set.deeplIsPro = ps.deeplIsPro;
|
||||
}
|
||||
|
||||
if (ps.ctav3SaKey !== undefined) {
|
||||
set.ctav3SaKey = ps.ctav3SaKey;
|
||||
}
|
||||
|
||||
if (ps.ctav3ProjectId !== undefined) {
|
||||
set.ctav3ProjectId = ps.ctav3ProjectId;
|
||||
}
|
||||
|
||||
if (ps.ctav3Location !== undefined) {
|
||||
set.ctav3Location = ps.ctav3Location;
|
||||
}
|
||||
|
||||
if (ps.ctav3Model !== undefined) {
|
||||
set.ctav3Model = ps.ctav3Model;
|
||||
}
|
||||
|
||||
if (ps.ctav3Glossary !== undefined) {
|
||||
set.ctav3Glossary = ps.ctav3Glossary;
|
||||
}
|
||||
|
||||
if (ps.enableIpLogging !== undefined) {
|
||||
set.enableIpLogging = ps.enableIpLogging;
|
||||
}
|
||||
|
|
|
@ -1,6 +1,8 @@
|
|||
import { URLSearchParams } from 'node:url';
|
||||
import { translate } from '@vitalets/google-translate-api';
|
||||
import fs from 'node:fs';
|
||||
import { Inject, Injectable } from '@nestjs/common';
|
||||
import { translate } from '@vitalets/google-translate-api';
|
||||
import { TranslationServiceClient } from '@google-cloud/translate';
|
||||
import type { NotesRepository } from '@/models/index.js';
|
||||
import { Endpoint } from '@/server/api/endpoint-base.js';
|
||||
import type { Config } from '@/config.js';
|
||||
|
@ -9,6 +11,7 @@ import { NoteEntityService } from '@/core/entities/NoteEntityService.js';
|
|||
import { MetaService } from '@/core/MetaService.js';
|
||||
import { HttpRequestService } from '@/core/HttpRequestService.js';
|
||||
import { GetterService } from '@/server/api/GetterService.js';
|
||||
import { createTemp } from '@/misc/create-temp.js';
|
||||
import { ApiError } from '../../error.js';
|
||||
|
||||
export const meta = {
|
||||
|
@ -64,10 +67,6 @@ export default class extends Endpoint<typeof meta, typeof paramDef> {
|
|||
if (err.id === '9725d0ce-ba28-4dde-95a7-2cbb2c15de24') throw new ApiError(meta.errors.noSuchNote);
|
||||
throw err;
|
||||
});
|
||||
const translatorServices = [
|
||||
'DeepL',
|
||||
'GoogleNoAPI',
|
||||
];
|
||||
|
||||
if (!(await this.noteEntityService.isVisibleForMe(note, me ? me.id : null))) {
|
||||
return 204; // TODO: 良い感じのエラー返す
|
||||
|
@ -79,56 +78,131 @@ export default class extends Endpoint<typeof meta, typeof paramDef> {
|
|||
|
||||
const instance = await this.metaService.fetch();
|
||||
|
||||
if (instance.translatorType === 'DeepL') {
|
||||
const translatorServices = [
|
||||
'deepl',
|
||||
'google_no_api',
|
||||
'ctav3',
|
||||
];
|
||||
|
||||
if (instance.translatorType == null || !translatorServices.includes(instance.translatorType)) {
|
||||
throw new ApiError(meta.errors.noTranslateService);
|
||||
}
|
||||
|
||||
let targetLang = ps.targetLang;
|
||||
if (targetLang.includes('-')) targetLang = targetLang.split('-')[0];
|
||||
|
||||
let translationResult;
|
||||
if (instance.translatorType === 'deepl') {
|
||||
if (instance.deeplAuthKey == null) {
|
||||
return 204; // TODO: 良い感じのエラー返す
|
||||
}
|
||||
|
||||
translationResult = await this.translateDeepL(note.text, targetLang, instance.deeplAuthKey, instance.deeplIsPro, instance.translatorType);
|
||||
} else if (instance.translatorType === 'google_no_api') {
|
||||
let targetLang = ps.targetLang;
|
||||
if (targetLang.includes('-')) targetLang = targetLang.split('-')[0];
|
||||
|
||||
const params = new URLSearchParams();
|
||||
params.append('auth_key', instance.deeplAuthKey);
|
||||
params.append('text', note.text);
|
||||
params.append('target_lang', targetLang);
|
||||
|
||||
const endpoint = instance.deeplIsPro ? 'https://api.deepl.com/v2/translate' : 'https://api-free.deepl.com/v2/translate';
|
||||
|
||||
const res = await this.httpRequestService.send(endpoint, {
|
||||
method: 'POST',
|
||||
headers: {
|
||||
'Content-Type': 'application/x-www-form-urlencoded',
|
||||
Accept: 'application/json, */*',
|
||||
},
|
||||
body: params.toString(),
|
||||
});
|
||||
|
||||
const json = (await res.json()) as {
|
||||
translations: {
|
||||
detected_source_language: string;
|
||||
text: string;
|
||||
}[];
|
||||
};
|
||||
|
||||
return {
|
||||
sourceLang: json.translations[0].detected_source_language,
|
||||
text: json.translations[0].text,
|
||||
translator: translatorServices,
|
||||
};
|
||||
} else if (instance.translatorType === 'GoogleNoAPI') {
|
||||
let targetLang = ps.targetLang;
|
||||
if (targetLang.includes('-')) targetLang = targetLang.split('-')[0];
|
||||
|
||||
const { text, raw } = await translate(note.text, { to: targetLang });
|
||||
|
||||
|
||||
return {
|
||||
sourceLang: raw.src,
|
||||
text: text,
|
||||
translator: translatorServices,
|
||||
};
|
||||
} else if (instance.translatorType === 'ctav3') {
|
||||
if (instance.ctav3SaKey == null) { return 204; } else if (instance.ctav3ProjectId == null) { return 204; }
|
||||
else if (instance.ctav3Location == null) { return 204; }
|
||||
translationResult = await this.apiCloudTranslationAdvanced(
|
||||
note.text, targetLang, instance.ctav3SaKey, instance.ctav3ProjectId, instance.ctav3Location, instance.ctav3Model, instance.ctav3Glossary, instance.translatorType,
|
||||
);
|
||||
} else {
|
||||
throw new ApiError(meta.errors.noTranslateService);
|
||||
throw new Error('Unsupported translator type');
|
||||
}
|
||||
|
||||
return {
|
||||
sourceLang: translationResult.sourceLang,
|
||||
text: translationResult.text,
|
||||
translator: translationResult.translator,
|
||||
};
|
||||
});
|
||||
}
|
||||
|
||||
private async translateDeepL(text: string, targetLang: string, authKey: string, isPro: boolean, provider: string) {
|
||||
const params = new URLSearchParams();
|
||||
params.append('auth_key', authKey);
|
||||
params.append('text', text);
|
||||
params.append('target_lang', targetLang);
|
||||
|
||||
const endpoint = isPro ? 'https://api.deepl.com/v2/translate' : 'https://api-free.deepl.com/v2/translate';
|
||||
|
||||
const res = await this.httpRequestService.send(endpoint, {
|
||||
method: 'POST',
|
||||
headers: {
|
||||
'Content-Type': 'application/x-www-form-urlencoded',
|
||||
Accept: 'application/json, */*',
|
||||
},
|
||||
body: params.toString(),
|
||||
});
|
||||
|
||||
const json = (await res.json()) as {
|
||||
translations: {
|
||||
detected_source_language: string;
|
||||
text: string;
|
||||
}[];
|
||||
};
|
||||
|
||||
return {
|
||||
sourceLang: json.translations[0].detected_source_language,
|
||||
text: json.translations[0].text,
|
||||
translator: provider,
|
||||
};
|
||||
}
|
||||
|
||||
private async apiCloudTranslationAdvanced(text: string, targetLang: string, saKey: string, projectId: string, location: string, model: string | null, glossary: string | null, provider: string) {
|
||||
const [path, cleanup] = await createTemp();
|
||||
fs.writeFileSync(path, saKey);
|
||||
process.env.GOOGLE_APPLICATION_CREDENTIALS = path;
|
||||
|
||||
const translationClient = new TranslationServiceClient();
|
||||
|
||||
const detectRequest = {
|
||||
parent: `projects/${projectId}/locations/${location}`,
|
||||
content: text,
|
||||
};
|
||||
|
||||
let detectedLanguage = null;
|
||||
let glossaryConfig = null;
|
||||
if (glossary !== '' && glossary !== null) {
|
||||
glossaryConfig = {
|
||||
glossary: `projects/${projectId}/locations/${location}/glossaries/${glossary}`,
|
||||
};
|
||||
const [detectResponse] = await translationClient.detectLanguage(detectRequest);
|
||||
detectedLanguage = detectResponse.languages && detectResponse.languages[0]?.languageCode;
|
||||
}
|
||||
|
||||
let modelConfig = null;
|
||||
if (model !== '' && model !== null) {
|
||||
modelConfig = `projects/${projectId}/locations/${location}/models/${model}`;
|
||||
}
|
||||
|
||||
const translateRequest = {
|
||||
parent: `projects/${projectId}/locations/${location}`,
|
||||
contents: [text],
|
||||
mimeType: 'text/plain',
|
||||
sourceLanguageCode: null,
|
||||
targetLanguageCode: detectedLanguage !== null ? detectedLanguage : targetLang,
|
||||
model: modelConfig,
|
||||
glossaryConfig: glossaryConfig,
|
||||
};
|
||||
const [translateResponse] = await translationClient.translateText(translateRequest);
|
||||
const translatedText = translateResponse.translations && translateResponse.translations[0]?.translatedText;
|
||||
const detectedLanguageCode = translateResponse.translations && translateResponse.translations[0]?.detectedLanguageCode;
|
||||
|
||||
delete process.env.GOOGLE_APPLICATION_CREDENTIALS;
|
||||
cleanup();
|
||||
return {
|
||||
sourceLang: detectedLanguage !== null ? detectedLanguage : detectedLanguageCode,
|
||||
text: translatedText,
|
||||
translator: provider,
|
||||
};
|
||||
}
|
||||
}
|
||||
|
|
22
packages/frontend/assets/color-short.svg
Normal file
22
packages/frontend/assets/color-short.svg
Normal file
|
@ -0,0 +1,22 @@
|
|||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<svg width="122px" height="16px" viewBox="0 0 122 16" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:sketch="http://www.bohemiancoding.com/sketch/ns">
|
||||
<!-- Generator: Sketch 3.3.3 (12081) - http://www.bohemiancoding.com/sketch -->
|
||||
<title>Imported Layers Copy + translated by@3x</title>
|
||||
<desc>Created with Sketch.</desc>
|
||||
<defs></defs>
|
||||
<g id="Page-1" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd" sketch:type="MSPage">
|
||||
<g id="Imported-Layers-Copy-+-translated-by" sketch:type="MSLayerGroup">
|
||||
<g id="Imported-Layers-Copy" transform="translate(73.000000, 0.127273)" sketch:type="MSShapeGroup">
|
||||
<path d="M6.16,5.45866667 L6.16,7.09733333 L10.082,7.09733333 C9.96466667,8.01933333 9.65733333,8.69266667 9.18933333,9.16066667 C8.618,9.73133333 7.72533333,10.3606667 6.16,10.3606667 C3.74466667,10.3606667 1.85733333,8.41466667 1.85733333,6 C1.85733333,3.58533333 3.74466667,1.63933333 6.16,1.63933333 C7.462,1.63933333 8.41333333,2.15133333 9.116,2.81 L10.272,1.65333333 C9.29133333,0.717333333 7.98933333,0 6.16,0 C2.85266667,0 0.072,2.69266667 0.072,6 C0.072,9.30733333 2.85266667,12 6.16,12 C7.94466667,12 9.29133333,11.4146667 10.3453333,10.3173333 C11.428,9.234 11.7646667,7.712 11.7646667,6.48266667 C11.7646667,6.10266667 11.7353333,5.75133333 11.6766667,5.45866667 L6.16,5.45866667" id="Fill-10" fill="#4285F4"></path>
|
||||
<path d="M16.6666667,4.12733333 C14.5253333,4.12733333 12.7793333,5.756 12.7793333,8 C12.7793333,10.2293333 14.5253333,11.8726667 16.6666667,11.8726667 C18.8086667,11.8726667 20.554,10.2293333 20.554,8 C20.554,5.756 18.8086667,4.12733333 16.6666667,4.12733333 L16.6666667,4.12733333 Z M16.6666667,10.3466667 C15.4933333,10.3466667 14.4806667,9.37866667 14.4806667,8 C14.4806667,6.60666667 15.4933333,5.65266667 16.6666667,5.65266667 C17.84,5.65266667 18.8526667,6.60666667 18.8526667,8 C18.8526667,9.37866667 17.84,10.3466667 16.6666667,10.3466667 L16.6666667,10.3466667 Z" id="Fill-11" fill="#EB4335"></path>
|
||||
<path d="M35.72,4.99333333 L35.6613333,4.99333333 C35.2793333,4.538 34.546,4.12733333 33.622,4.12733333 C31.686,4.12733333 30,5.814 30,8 C30,10.1706667 31.686,11.8726667 33.622,11.8726667 C34.546,11.8726667 35.2793333,11.462 35.6613333,10.9926667 L35.72,10.9926667 L35.72,11.534 C35.72,13.0153333 34.928,13.8073333 33.6513333,13.8073333 C32.61,13.8073333 31.9646667,13.0593333 31.7006667,12.4286667 L30.2193333,13.0446667 C30.6446667,14.0713333 31.774,15.3333333 33.6513333,15.3333333 C35.6466667,15.3333333 37.3333333,14.16 37.3333333,11.2993333 L37.3333333,4.32666667 L35.72,4.32666667 L35.72,4.99333333 L35.72,4.99333333 Z M33.7693333,10.3466667 C32.596,10.3466667 31.702,9.34933333 31.702,8 C31.702,6.636 32.596,5.65266667 33.7693333,5.65266667 C34.9286667,5.65266667 35.8373333,6.65066667 35.8373333,8.01466667 C35.8373333,9.364 34.9286667,10.3466667 33.7693333,10.3466667 L33.7693333,10.3466667 Z" id="Fill-12" fill="#4285F4"></path>
|
||||
<path d="M25.3333333,4.12733333 C23.192,4.12733333 21.446,5.756 21.446,8 C21.446,10.2293333 23.192,11.8726667 25.3333333,11.8726667 C27.4753333,11.8726667 29.2206667,10.2293333 29.2206667,8 C29.2206667,5.756 27.4753333,4.12733333 25.3333333,4.12733333 L25.3333333,4.12733333 Z M25.3333333,10.3466667 C24.16,10.3466667 23.148,9.37866667 23.148,8 C23.148,6.60666667 24.16,5.65266667 25.3333333,5.65266667 C26.5066667,5.65266667 27.5193333,6.60666667 27.5193333,8 C27.5193333,9.37866667 26.5066667,10.3466667 25.3333333,10.3466667 L25.3333333,10.3466667 Z" id="Fill-13" fill="#FBBC05"></path>
|
||||
<path d="M38.6666667,0.16 L40.34,0.16 L40.34,11.8726667 L38.6666667,11.8726667 L38.6666667,0.16 Z" id="Fill-14" fill="#34A853"></path>
|
||||
<path d="M45.51,10.3466667 C44.6446667,10.3466667 44.0286667,9.95133333 43.632,9.174 L48.81,7.032 L48.634,6.592 C48.3113333,5.72666667 47.3286667,4.12733333 45.3193333,4.12733333 C43.324,4.12733333 41.6666667,5.69733333 41.6666667,8 C41.6666667,10.1713333 43.3093333,11.8726667 45.51,11.8726667 C47.2846667,11.8726667 48.3113333,10.7873333 48.7366667,10.156 L47.4166667,9.276 C46.9766667,9.922 46.3753333,10.3466667 45.51,10.3466667 L45.51,10.3466667 Z M45.384,5.57866667 C46.0726667,5.57866667 46.656,5.92933333 46.8506667,6.43266667 L43.3533333,7.88266667 C43.3533333,6.25 44.508,5.57866667 45.384,5.57866667 L45.384,5.57866667 Z" id="Fill-15" fill="#EB4335"></path>
|
||||
</g>
|
||||
<text id="translated-by" opacity="0.54" sketch:type="MSTextLayer" font-family="Roboto" font-size="12" font-weight="normal" fill="#000000">
|
||||
<tspan x="0" y="12">translated by</tspan>
|
||||
</text>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
After Width: | Height: | Size: 4.7 KiB |
22
packages/frontend/assets/white-short.svg
Normal file
22
packages/frontend/assets/white-short.svg
Normal file
|
@ -0,0 +1,22 @@
|
|||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<svg width="122px" height="16px" viewBox="0 0 122 16" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:sketch="http://www.bohemiancoding.com/sketch/ns">
|
||||
<!-- Generator: Sketch 3.3.3 (12081) - http://www.bohemiancoding.com/sketch -->
|
||||
<title>white-short@3x</title>
|
||||
<desc>Created with Sketch.</desc>
|
||||
<defs></defs>
|
||||
<g id="Page-1" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd" sketch:type="MSPage">
|
||||
<g id="white-short" sketch:type="MSLayerGroup" fill="#FFFFFF">
|
||||
<g id="Imported-Layers-Copy-4" transform="translate(73.000000, 0.127273)" sketch:type="MSShapeGroup">
|
||||
<path d="M6.16,5.45866667 L6.16,7.09733333 L10.082,7.09733333 C9.96466667,8.01933333 9.65733333,8.69266667 9.18933333,9.16066667 C8.618,9.73133333 7.72533333,10.3606667 6.16,10.3606667 C3.74466667,10.3606667 1.85733333,8.41466667 1.85733333,6 C1.85733333,3.58533333 3.74466667,1.63933333 6.16,1.63933333 C7.462,1.63933333 8.41333333,2.15133333 9.116,2.81 L10.272,1.65333333 C9.29133333,0.717333333 7.98933333,0 6.16,0 C2.85266667,0 0.072,2.69266667 0.072,6 C0.072,9.30733333 2.85266667,12 6.16,12 C7.94466667,12 9.29133333,11.4146667 10.3453333,10.3173333 C11.428,9.234 11.7646667,7.712 11.7646667,6.48266667 C11.7646667,6.10266667 11.7353333,5.75133333 11.6766667,5.45866667 L6.16,5.45866667" id="Fill-10"></path>
|
||||
<path d="M16.6666667,4.12733333 C14.5253333,4.12733333 12.7793333,5.756 12.7793333,8 C12.7793333,10.2293333 14.5253333,11.8726667 16.6666667,11.8726667 C18.8086667,11.8726667 20.554,10.2293333 20.554,8 C20.554,5.756 18.8086667,4.12733333 16.6666667,4.12733333 L16.6666667,4.12733333 Z M16.6666667,10.3466667 C15.4933333,10.3466667 14.4806667,9.37866667 14.4806667,8 C14.4806667,6.60666667 15.4933333,5.65266667 16.6666667,5.65266667 C17.84,5.65266667 18.8526667,6.60666667 18.8526667,8 C18.8526667,9.37866667 17.84,10.3466667 16.6666667,10.3466667 L16.6666667,10.3466667 Z" id="Fill-11"></path>
|
||||
<path d="M35.72,4.99333333 L35.6613333,4.99333333 C35.2793333,4.538 34.546,4.12733333 33.622,4.12733333 C31.686,4.12733333 30,5.814 30,8 C30,10.1706667 31.686,11.8726667 33.622,11.8726667 C34.546,11.8726667 35.2793333,11.462 35.6613333,10.9926667 L35.72,10.9926667 L35.72,11.534 C35.72,13.0153333 34.928,13.8073333 33.6513333,13.8073333 C32.61,13.8073333 31.9646667,13.0593333 31.7006667,12.4286667 L30.2193333,13.0446667 C30.6446667,14.0713333 31.774,15.3333333 33.6513333,15.3333333 C35.6466667,15.3333333 37.3333333,14.16 37.3333333,11.2993333 L37.3333333,4.32666667 L35.72,4.32666667 L35.72,4.99333333 L35.72,4.99333333 Z M33.7693333,10.3466667 C32.596,10.3466667 31.702,9.34933333 31.702,8 C31.702,6.636 32.596,5.65266667 33.7693333,5.65266667 C34.9286667,5.65266667 35.8373333,6.65066667 35.8373333,8.01466667 C35.8373333,9.364 34.9286667,10.3466667 33.7693333,10.3466667 L33.7693333,10.3466667 Z" id="Fill-12"></path>
|
||||
<path d="M25.3333333,4.12733333 C23.192,4.12733333 21.446,5.756 21.446,8 C21.446,10.2293333 23.192,11.8726667 25.3333333,11.8726667 C27.4753333,11.8726667 29.2206667,10.2293333 29.2206667,8 C29.2206667,5.756 27.4753333,4.12733333 25.3333333,4.12733333 L25.3333333,4.12733333 Z M25.3333333,10.3466667 C24.16,10.3466667 23.148,9.37866667 23.148,8 C23.148,6.60666667 24.16,5.65266667 25.3333333,5.65266667 C26.5066667,5.65266667 27.5193333,6.60666667 27.5193333,8 C27.5193333,9.37866667 26.5066667,10.3466667 25.3333333,10.3466667 L25.3333333,10.3466667 Z" id="Fill-13"></path>
|
||||
<path d="M38.6666667,0.16 L40.34,0.16 L40.34,11.8726667 L38.6666667,11.8726667 L38.6666667,0.16 Z" id="Fill-14"></path>
|
||||
<path d="M45.51,10.3466667 C44.6446667,10.3466667 44.0286667,9.95133333 43.632,9.174 L48.81,7.032 L48.634,6.592 C48.3113333,5.72666667 47.3286667,4.12733333 45.3193333,4.12733333 C43.324,4.12733333 41.6666667,5.69733333 41.6666667,8 C41.6666667,10.1713333 43.3093333,11.8726667 45.51,11.8726667 C47.2846667,11.8726667 48.3113333,10.7873333 48.7366667,10.156 L47.4166667,9.276 C46.9766667,9.922 46.3753333,10.3466667 45.51,10.3466667 L45.51,10.3466667 Z M45.384,5.57866667 C46.0726667,5.57866667 46.656,5.92933333 46.8506667,6.43266667 L43.3533333,7.88266667 C43.3533333,6.25 44.508,5.57866667 45.384,5.57866667 L45.384,5.57866667 Z" id="Fill-15"></path>
|
||||
</g>
|
||||
<text id="translated-by-copy-2" opacity="0.87" sketch:type="MSTextLayer" font-family="Roboto" font-size="12" font-weight="normal">
|
||||
<tspan x="0" y="12">translated by</tspan>
|
||||
</text>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
After Width: | Height: | Size: 4.6 KiB |
|
@ -59,8 +59,13 @@
|
|||
<div v-if="translating || translation" :class="$style.translation">
|
||||
<MkLoading v-if="translating" mini/>
|
||||
<div v-else>
|
||||
<b>{{ i18n.t('translatedFrom', { x: translation.sourceLang }) }}: </b>
|
||||
<b>{{ i18n.t('translatedFrom', { x: translation.sourceLang }) }}:</b><hr style="margin: 10px 0;">
|
||||
<Mfm :text="translation.text" :author="appearNote.user" :i="$i" :emojiUrls="appearNote.emojis"/>
|
||||
<div v-if="translation.translator == 'ctav3'">
|
||||
<hr>
|
||||
<img v-if="defaultStore.state.darkMode == false" src="/client-assets/color-short.svg" alt="">
|
||||
<img v-else src="/client-assets/white-short.svg" alt=""/>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
@ -67,8 +67,13 @@
|
|||
<div v-if="translating || translation" :class="$style.translation">
|
||||
<MkLoading v-if="translating" mini/>
|
||||
<div v-else>
|
||||
<b>{{ i18n.t('translatedFrom', { x: translation.sourceLang }) }}: </b>
|
||||
<b>{{ i18n.t('translatedFrom', { x: translation.sourceLang }) }}:</b><hr style="margin: 10px 0;">
|
||||
<Mfm :text="translation.text" :author="appearNote.user" :i="$i" :emojiUrls="appearNote.emojis"/>
|
||||
<div v-if="translation.translator == 'ctav3'">
|
||||
<hr>
|
||||
<img v-if="defaultStore.state.darkMode == false" src="/client-assets/color-short.svg">
|
||||
<img v-else src="/client-assets/white-short.svg"/>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div v-if="appearNote.files.length > 0">
|
||||
|
|
|
@ -114,14 +114,15 @@
|
|||
-->
|
||||
|
||||
<template #label>Translation</template>
|
||||
<MkRadios v-model="translatorType">
|
||||
<MkRadios v-model="provider">
|
||||
<template #label>Translator type</template>
|
||||
<option :value="null">{{ i18n.ts.none }}</option>
|
||||
<option value="DeepL">DeepL</option>
|
||||
<option value="GoogleNoAPI">Google Translate(without API)</option>
|
||||
<option value="deepl">DeepL</option>
|
||||
<option value="google_no_api">Google Translate(without API)</option>
|
||||
<option value="ctav3">Cloud Translation - Advanced(v3)</option>
|
||||
</MkRadios>
|
||||
|
||||
<template v-if="translatorType === 'DeepL'">
|
||||
<template v-if="provider === 'deepl'">
|
||||
<div class="_gaps_m">
|
||||
<MkInput v-model="deeplAuthKey">
|
||||
<template #prefix><i class="ti ti-key"></i></template>
|
||||
|
@ -132,6 +133,24 @@
|
|||
</MkSwitch>
|
||||
</div>
|
||||
</template>
|
||||
<template v-else-if="provider === 'ctav3'">
|
||||
<MkInput v-model="ctav3SaKey" type="password">
|
||||
<template #prefix><i class="ti ti-key"></i></template>
|
||||
<template #label>Service account key</template>
|
||||
</MkInput>
|
||||
<MkInput v-model="ctav3ProjectId">
|
||||
<template #label>Project ID</template>
|
||||
</MkInput>
|
||||
<MkInput v-model="ctav3Location">
|
||||
<template #label>Location</template>
|
||||
</MkInput>
|
||||
<MkInput v-model="ctav3Model">
|
||||
<template #label>Model ID</template>
|
||||
</MkInput>
|
||||
<MkInput v-model="ctav3Glossary">
|
||||
<template #label>Glossary ID</template>
|
||||
</MkInput>
|
||||
</template>
|
||||
</FormSection>
|
||||
</div>
|
||||
</FormSuspense>
|
||||
|
@ -154,7 +173,6 @@ import MkSwitch from '@/components/MkSwitch.vue';
|
|||
import MkInput from '@/components/MkInput.vue';
|
||||
import MkTextarea from '@/components/MkTextarea.vue';
|
||||
import MkRadios from '@/components/MkRadios.vue';
|
||||
import FormInfo from '@/components/MkInfo.vue';
|
||||
import FormSection from '@/components/form/section.vue';
|
||||
import FormSplit from '@/components/form/split.vue';
|
||||
import FormSuspense from '@/components/form/suspense.vue';
|
||||
|
@ -180,9 +198,14 @@ let cacheRemoteFiles: boolean = $ref(false);
|
|||
let enableServiceWorker: boolean = $ref(false);
|
||||
let swPublicKey: any = $ref(null);
|
||||
let swPrivateKey: any = $ref(null);
|
||||
let translatorType: string | null = $ref(null);
|
||||
let provider: string | null = $ref(null);
|
||||
let deeplAuthKey: string = $ref('');
|
||||
let deeplIsPro: boolean = $ref(false);
|
||||
let ctav3SaKey: string = $ref('');
|
||||
let ctav3ProjectId: string = $ref('');
|
||||
let ctav3Location: string = $ref('');
|
||||
let ctav3Model: string = $ref('');
|
||||
let ctav3Glossary: string = $ref('');
|
||||
|
||||
async function init() {
|
||||
const meta = await os.api('admin/meta');
|
||||
|
@ -201,9 +224,14 @@ async function init() {
|
|||
enableServiceWorker = meta.enableServiceWorker;
|
||||
swPublicKey = meta.swPublickey;
|
||||
swPrivateKey = meta.swPrivateKey;
|
||||
translatorType = meta.translatorType;
|
||||
provider = meta.translatorType;
|
||||
deeplAuthKey = meta.deeplAuthKey;
|
||||
deeplIsPro = meta.deeplIsPro;
|
||||
ctav3SaKey = meta.ctav3SaKey;
|
||||
ctav3ProjectId = meta.ctav3ProjectId;
|
||||
ctav3Location = meta.ctav3Location;
|
||||
ctav3Model = meta.ctav3Model;
|
||||
ctav3Glossary = meta.ctav3Glossary;
|
||||
}
|
||||
|
||||
function save() {
|
||||
|
@ -223,9 +251,14 @@ function save() {
|
|||
enableServiceWorker,
|
||||
swPublicKey,
|
||||
swPrivateKey,
|
||||
translatorType,
|
||||
translatorType: provider,
|
||||
deeplAuthKey,
|
||||
deeplIsPro,
|
||||
ctav3SaKey,
|
||||
ctav3ProjectId,
|
||||
ctav3Location,
|
||||
ctav3Model,
|
||||
ctav3Glossary,
|
||||
}).then(() => {
|
||||
fetchInstance();
|
||||
});
|
||||
|
|
499
pnpm-lock.yaml
499
pnpm-lock.yaml
|
@ -113,6 +113,9 @@ importers:
|
|||
'@fastify/view':
|
||||
specifier: 7.4.1
|
||||
version: 7.4.1
|
||||
'@google-cloud/translate':
|
||||
specifier: ^7.2.1
|
||||
version: 7.2.1
|
||||
'@nestjs/common':
|
||||
specifier: 9.4.2
|
||||
version: 9.4.2(reflect-metadata@0.1.13)(rxjs@7.8.1)
|
||||
|
@ -4908,6 +4911,69 @@ packages:
|
|||
resolution: {integrity: sha512-k2Ty1JcVojjJFwrg/ThKi2ujJ7XNLYaFGNB/bWT9wGR+oSMJHMa5w+CUq6p/pVrKeNNgA7pCqEcjSnHVoqJQFw==}
|
||||
dev: false
|
||||
|
||||
/@google-cloud/common@4.0.3:
|
||||
resolution: {integrity: sha512-fUoMo5b8iAKbrYpneIRV3z95AlxVJPrjpevxs4SKoclngWZvTXBSGpNisF5+x5m+oNGve7jfB1e6vNBZBUs7Fw==}
|
||||
engines: {node: '>=12.0.0'}
|
||||
dependencies:
|
||||
'@google-cloud/projectify': 3.0.0
|
||||
'@google-cloud/promisify': 3.0.1
|
||||
arrify: 2.0.1
|
||||
duplexify: 4.1.2
|
||||
ent: 2.2.0
|
||||
extend: 3.0.2
|
||||
google-auth-library: 8.8.0
|
||||
retry-request: 5.0.2
|
||||
teeny-request: 8.0.3
|
||||
transitivePeerDependencies:
|
||||
- encoding
|
||||
- supports-color
|
||||
dev: false
|
||||
|
||||
/@google-cloud/projectify@3.0.0:
|
||||
resolution: {integrity: sha512-HRkZsNmjScY6Li8/kb70wjGlDDyLkVk3KvoEo9uIoxSjYLJasGiCch9+PqRVDOCGUFvEIqyogl+BeqILL4OJHA==}
|
||||
engines: {node: '>=12.0.0'}
|
||||
dev: false
|
||||
|
||||
/@google-cloud/promisify@3.0.1:
|
||||
resolution: {integrity: sha512-z1CjRjtQyBOYL+5Qr9DdYIfrdLBe746jRTYfaYU6MeXkqp7UfYs/jX16lFFVzZ7PGEJvqZNqYUEtb1mvDww4pA==}
|
||||
engines: {node: '>=12'}
|
||||
dev: false
|
||||
|
||||
/@google-cloud/translate@7.2.1:
|
||||
resolution: {integrity: sha512-VXmEvMF8qa4c7p5drjUZ06B8v0DxoUfFPyjhFp/wbgoe0GWaD1y1gGk6rUZxGKD/pB19kFU+0LMMSCgBW+a0iA==}
|
||||
engines: {node: '>=12.0.0'}
|
||||
dependencies:
|
||||
'@google-cloud/common': 4.0.3
|
||||
'@google-cloud/promisify': 3.0.1
|
||||
arrify: 2.0.1
|
||||
extend: 3.0.2
|
||||
google-gax: 3.6.0
|
||||
is-html: 2.0.0
|
||||
transitivePeerDependencies:
|
||||
- encoding
|
||||
- supports-color
|
||||
dev: false
|
||||
|
||||
/@grpc/grpc-js@1.8.14:
|
||||
resolution: {integrity: sha512-w84maJ6CKl5aApCMzFll0hxtFNT6or9WwMslobKaqWUEf1K+zhlL43bSQhFreyYWIWR+Z0xnVFC1KtLm4ZpM/A==}
|
||||
engines: {node: ^8.13.0 || >=10.10.0}
|
||||
dependencies:
|
||||
'@grpc/proto-loader': 0.7.7
|
||||
'@types/node': 20.2.5
|
||||
dev: false
|
||||
|
||||
/@grpc/proto-loader@0.7.7:
|
||||
resolution: {integrity: sha512-1TIeXOi8TuSCQprPItwoMymZXxWT0CPxUhkrkeCUH+D8U7QDwQ6b7SUz2MaLuWM2llT+J/TVFLmQI5KtML3BhQ==}
|
||||
engines: {node: '>=6'}
|
||||
hasBin: true
|
||||
dependencies:
|
||||
'@types/long': 4.0.2
|
||||
lodash.camelcase: 4.3.0
|
||||
long: 4.0.0
|
||||
protobufjs: 7.2.3
|
||||
yargs: 17.7.2
|
||||
dev: false
|
||||
|
||||
/@hapi/hoek@9.3.0:
|
||||
resolution: {integrity: sha512-/c6rf4UJlmHlC9b5BaNvzAcFv7HZ2QHaV0D4/HNlBdvFnvQq8RI4kYdhyPCl7Xj+oWvTWQ8ujhqS53LIgAe6KQ==}
|
||||
dev: true
|
||||
|
@ -5245,6 +5311,13 @@ packages:
|
|||
'@jridgewell/resolve-uri': 3.1.0
|
||||
'@jridgewell/sourcemap-codec': 1.4.14
|
||||
|
||||
/@jsdoc/salty@0.2.5:
|
||||
resolution: {integrity: sha512-TfRP53RqunNe2HBobVBJ0VLhK1HbfvBYeTC1ahnN64PWvyYyGebmMiPkuwvD9fpw2ZbkoPb8Q7mwy0aR8Z9rvw==}
|
||||
engines: {node: '>=v12.0.0'}
|
||||
dependencies:
|
||||
lodash: 4.17.21
|
||||
dev: false
|
||||
|
||||
/@juggle/resize-observer@3.4.0:
|
||||
resolution: {integrity: sha512-dfLbk+PwWvFzSxwk3n5ySL0hfBog779o8h68wK/7/APo/7cgyWp5jcXockbxdk5kFRkbeXWm4Fbi9FrdN381sA==}
|
||||
dev: true
|
||||
|
@ -5578,6 +5651,49 @@ packages:
|
|||
sshpk: 1.17.0
|
||||
dev: false
|
||||
|
||||
/@protobufjs/aspromise@1.1.2:
|
||||
resolution: {integrity: sha512-j+gKExEuLmKwvz3OgROXtrJ2UG2x8Ch2YZUxahh+s1F2HZ+wAceUNLkvy6zKCPVRkU++ZWQrdxsUeQXmcg4uoQ==}
|
||||
dev: false
|
||||
|
||||
/@protobufjs/base64@1.1.2:
|
||||
resolution: {integrity: sha512-AZkcAA5vnN/v4PDqKyMR5lx7hZttPDgClv83E//FMNhR2TMcLUhfRUBHCmSl0oi9zMgDDqRUJkSxO3wm85+XLg==}
|
||||
dev: false
|
||||
|
||||
/@protobufjs/codegen@2.0.4:
|
||||
resolution: {integrity: sha512-YyFaikqM5sH0ziFZCN3xDC7zeGaB/d0IUb9CATugHWbd1FRFwWwt4ld4OYMPWu5a3Xe01mGAULCdqhMlPl29Jg==}
|
||||
dev: false
|
||||
|
||||
/@protobufjs/eventemitter@1.1.0:
|
||||
resolution: {integrity: sha512-j9ednRT81vYJ9OfVuXG6ERSTdEL1xVsNgqpkxMsbIabzSo3goCjDIveeGv5d03om39ML71RdmrGNjG5SReBP/Q==}
|
||||
dev: false
|
||||
|
||||
/@protobufjs/fetch@1.1.0:
|
||||
resolution: {integrity: sha512-lljVXpqXebpsijW71PZaCYeIcE5on1w5DlQy5WH6GLbFryLUrBD4932W/E2BSpfRJWseIL4v/KPgBFxDOIdKpQ==}
|
||||
dependencies:
|
||||
'@protobufjs/aspromise': 1.1.2
|
||||
'@protobufjs/inquire': 1.1.0
|
||||
dev: false
|
||||
|
||||
/@protobufjs/float@1.0.2:
|
||||
resolution: {integrity: sha512-Ddb+kVXlXst9d+R9PfTIxh1EdNkgoRe5tOX6t01f1lYWOvJnSPDBlG241QLzcyPdoNTsblLUdujGSE4RzrTZGQ==}
|
||||
dev: false
|
||||
|
||||
/@protobufjs/inquire@1.1.0:
|
||||
resolution: {integrity: sha512-kdSefcPdruJiFMVSbn801t4vFK7KB/5gd2fYvrxhuJYg8ILrmn9SKSX2tZdV6V+ksulWqS7aXjBcRXl3wHoD9Q==}
|
||||
dev: false
|
||||
|
||||
/@protobufjs/path@1.1.2:
|
||||
resolution: {integrity: sha512-6JOcJ5Tm08dOHAbdR3GrvP+yUUfkjG5ePsHYczMFLq3ZmMkAD98cDgcT2iA1lJ9NVwFd4tH/iSSoe44YWkltEA==}
|
||||
dev: false
|
||||
|
||||
/@protobufjs/pool@1.1.0:
|
||||
resolution: {integrity: sha512-0kELaGSIDBKvcgS4zkjz1PeddatrjYcmMWOlAuAPwAeccUrPHdUqo/J6LiymHHEiJT5NrF1UVwxY14f+fy4WQw==}
|
||||
dev: false
|
||||
|
||||
/@protobufjs/utf8@1.1.0:
|
||||
resolution: {integrity: sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw==}
|
||||
dev: false
|
||||
|
||||
/@redis/bloom@1.1.0(@redis/client@1.4.2):
|
||||
resolution: {integrity: sha512-9QovlxmpRtvxVbN0UBcv8WfdSMudNZZTFqCsnBszcQXqaZb/TVe30ScgGEO7u1EAIacTPAo7/oCYjYAxiHLanQ==}
|
||||
peerDependencies:
|
||||
|
@ -7654,7 +7770,6 @@ packages:
|
|||
dependencies:
|
||||
'@types/minimatch': 5.1.2
|
||||
'@types/node': 20.2.5
|
||||
dev: true
|
||||
|
||||
/@types/graceful-fs@4.1.6:
|
||||
resolution: {integrity: sha512-Sig0SNORX9fdW+bQuTEovKj3uHcUL6LQKbCrrqb1X7J6/ReAbhCXRAhc+SMejhLELFj2QcyuxmUooZ4bt5ReSw==}
|
||||
|
@ -7758,6 +7873,10 @@ packages:
|
|||
'@types/node': 20.2.5
|
||||
dev: false
|
||||
|
||||
/@types/linkify-it@3.0.2:
|
||||
resolution: {integrity: sha512-HZQYqbiFVWufzCwexrvh694SOim8z2d+xJl5UNamcvQFejLY/2YUtzXHYi3cHdI7PMlS8ejH2slRAOJQ32aNbA==}
|
||||
dev: false
|
||||
|
||||
/@types/lodash@4.14.191:
|
||||
resolution: {integrity: sha512-BdZ5BCCvho3EIXw6wUCXHe7rS53AIDPLE+JzwgT+OsJk53oBfbSmZZ7CX4VaRoN78N+TJpFi9QPlfIVNmJYWxQ==}
|
||||
dev: true
|
||||
|
@ -7766,10 +7885,21 @@ packages:
|
|||
resolution: {integrity: sha512-MqTGEo5bj5t157U6fA/BiDynNkn0YknVdh48CMPkTSpFTVmvao5UQmm7uEF6xBEo7qIMAlY/JSleYaE6VOdpaA==}
|
||||
dev: false
|
||||
|
||||
/@types/markdown-it@12.2.3:
|
||||
resolution: {integrity: sha512-GKMHFfv3458yYy+v/N8gjufHO6MSZKCOXpZc5GXIWWy8uldwfmPn98vp81gZ5f9SVw8YYBctgfJ22a2d7AOMeQ==}
|
||||
dependencies:
|
||||
'@types/linkify-it': 3.0.2
|
||||
'@types/mdurl': 1.0.2
|
||||
dev: false
|
||||
|
||||
/@types/matter-js@0.18.5:
|
||||
resolution: {integrity: sha512-CV8m/FUmjmFNFcI7fUnsKcCLeqbf0kzWdKOTLGrpfKwWwrF6ggLaQlHNsg8267TkkiUAPoXY/7q6H9qwmR5TZg==}
|
||||
dev: true
|
||||
|
||||
/@types/mdurl@1.0.2:
|
||||
resolution: {integrity: sha512-eC4U9MlIcu2q0KQmXszyn5Akca/0jrQmwDRgpAMJai7qBWq4amIQhZyNau4VYGtCeALvW1/NtjzJJ567aZxfKA==}
|
||||
dev: false
|
||||
|
||||
/@types/mdx@2.0.3:
|
||||
resolution: {integrity: sha512-IgHxcT3RC8LzFLhKwP3gbMPeaK7BM9eBH46OdapPA7yvuIUJ8H6zHZV53J8hGZcTSnt95jANt+rTBNUUc22ACQ==}
|
||||
dev: true
|
||||
|
@ -7790,7 +7920,6 @@ packages:
|
|||
|
||||
/@types/minimatch@5.1.2:
|
||||
resolution: {integrity: sha512-K0VQKziLUWkVKiRVrx4a40iPaxTUefQmjtkQofBkYRcoaaL/8rhwDWww9qWbrgicNOgnpIsMxyNIUM4+n6dUIA==}
|
||||
dev: true
|
||||
|
||||
/@types/minimist@1.2.2:
|
||||
resolution: {integrity: sha512-jhuKLIRrhvCPLqwPcx6INqmKeiA5EWrsCOPhrlFSrbrmU4ZMPjj5Ul/oLCMDO98XRUIwVm78xICz4EPCektzeQ==}
|
||||
|
@ -7946,6 +8075,13 @@ packages:
|
|||
'@types/node': 20.2.5
|
||||
dev: false
|
||||
|
||||
/@types/rimraf@3.0.2:
|
||||
resolution: {integrity: sha512-F3OznnSLAUxFrCEu/L5PY8+ny8DtcFRjx7fZZ9bycvXRi3KPTRS9HOitGZwvPg0juRhXFWIeKX58cnX5YqLohQ==}
|
||||
dependencies:
|
||||
'@types/glob': 8.1.0
|
||||
'@types/node': 20.2.5
|
||||
dev: false
|
||||
|
||||
/@types/sanitize-html@2.9.0:
|
||||
resolution: {integrity: sha512-4fP/kEcKNj2u39IzrxWYuf/FnCCwwQCpif6wwY6ROUS1EPRIfWJjGkY3HIowY1EX/VbX5e86yq8AAE7UPMgATg==}
|
||||
dependencies:
|
||||
|
@ -8688,7 +8824,6 @@ packages:
|
|||
acorn: ^6.0.0 || ^7.0.0 || ^8.0.0
|
||||
dependencies:
|
||||
acorn: 8.8.2
|
||||
dev: true
|
||||
|
||||
/acorn-walk@7.2.0:
|
||||
resolution: {integrity: sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==}
|
||||
|
@ -9081,6 +9216,11 @@ packages:
|
|||
engines: {node: '>=0.10.0'}
|
||||
dev: true
|
||||
|
||||
/arrify@2.0.1:
|
||||
resolution: {integrity: sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug==}
|
||||
engines: {node: '>=8'}
|
||||
dev: false
|
||||
|
||||
/asap@2.0.6:
|
||||
resolution: {integrity: sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==}
|
||||
|
||||
|
@ -9501,6 +9641,10 @@ packages:
|
|||
resolution: {integrity: sha512-GPEid2Y9QU1Exl1rpO9B2IPJGHPSupF5GnVIP0blYvNOMer2bTvSWs1jGOUg04hTmu67nmLsQ9TBo1puaotBHg==}
|
||||
engines: {node: '>=0.6'}
|
||||
|
||||
/bignumber.js@9.1.1:
|
||||
resolution: {integrity: sha512-pHm4LsMJ6lzgNGVfZHjMoO8sdoRhOzOH4MLmY65Jg70bpxCKu5iOHNJyfF6OyvYw7t8Fpf35RuzUyqnQsj8Vig==}
|
||||
dev: false
|
||||
|
||||
/bin-check@4.1.0:
|
||||
resolution: {integrity: sha512-b6weQyEUKsDGFlACWSIOfveEnImkJyK/FGW6FAG42loyoquvjdtOIqO6yBFzHyqyVVhNgNkQxxx09SFLK28YnA==}
|
||||
engines: {node: '>=4'}
|
||||
|
@ -9564,7 +9708,6 @@ packages:
|
|||
|
||||
/bluebird@3.7.2:
|
||||
resolution: {integrity: sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==}
|
||||
dev: true
|
||||
|
||||
/blueimp-md5@2.19.0:
|
||||
resolution: {integrity: sha512-DRQrD6gJyy8FbiE4s+bDoXS9hiW3Vbx5uCdwvcCf3zLHL+Iv7LtGHLpr+GZV8rHG8tK766FGYBwRbu8pELTt+w==}
|
||||
|
@ -9965,6 +10108,13 @@ packages:
|
|||
/caseless@0.12.0:
|
||||
resolution: {integrity: sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw==}
|
||||
|
||||
/catharsis@0.9.0:
|
||||
resolution: {integrity: sha512-prMTQVpcns/tzFgFVkVp6ak6RykZyWb3gu8ckUpd6YkTlacOd3DXGJjIpD4Q6zJirizvaiAjSSHlOsA+6sNh2A==}
|
||||
engines: {node: '>= 10'}
|
||||
dependencies:
|
||||
lodash: 4.17.21
|
||||
dev: false
|
||||
|
||||
/cbor@8.1.0:
|
||||
resolution: {integrity: sha512-DwGjNW9omn6EwP70aXsn7FQJx5kO12tX0bZkaTjzdVFM6/7nhA4t0EENocKGx6D2Bch9PE2KzCUf5SceBdeijg==}
|
||||
engines: {node: '>=12.19'}
|
||||
|
@ -11303,6 +11453,15 @@ packages:
|
|||
readable-stream: 2.3.7
|
||||
stream-shift: 1.0.1
|
||||
|
||||
/duplexify@4.1.2:
|
||||
resolution: {integrity: sha512-fz3OjcNCHmRP12MJoZMPglx8m4rrFP8rovnk4vT8Fs+aonZoCwGg10dSsQsfP/E62eZcPTMSMP6686fu9Qlqtw==}
|
||||
dependencies:
|
||||
end-of-stream: 1.4.4
|
||||
inherits: 2.0.4
|
||||
readable-stream: 3.6.0
|
||||
stream-shift: 1.0.1
|
||||
dev: false
|
||||
|
||||
/each-props@1.3.2:
|
||||
resolution: {integrity: sha512-vV0Hem3zAGkJAyU7JSjixeU66rwdynTAa1vofCrSA5fEln+m67Az9CcnkVD776/fsN/UjIWmBDoNRS6t6G9RfA==}
|
||||
dependencies:
|
||||
|
@ -11393,6 +11552,14 @@ packages:
|
|||
ansi-colors: 4.1.3
|
||||
dev: true
|
||||
|
||||
/ent@2.2.0:
|
||||
resolution: {integrity: sha512-GHrMyVZQWvTIdDtpiEXdHZnFQKzeO09apj8Cbl4pKWy4i0Oprcq17usfDt5aO63swf0JOeMWjWQE/LzgSRuWpA==}
|
||||
dev: false
|
||||
|
||||
/entities@2.1.0:
|
||||
resolution: {integrity: sha512-hCx1oky9PFrJ611mf0ifBLBRW8lUUVRlFolb5gWRfIELabBlbp9xZvrqZLZAs+NxFnbfQoeGd8wDkygjg7U85w==}
|
||||
dev: false
|
||||
|
||||
/entities@2.2.0:
|
||||
resolution: {integrity: sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==}
|
||||
dev: false
|
||||
|
@ -11595,7 +11762,6 @@ packages:
|
|||
/escape-string-regexp@2.0.0:
|
||||
resolution: {integrity: sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==}
|
||||
engines: {node: '>=8'}
|
||||
dev: true
|
||||
|
||||
/escape-string-regexp@4.0.0:
|
||||
resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==}
|
||||
|
@ -11606,6 +11772,19 @@ packages:
|
|||
engines: {node: '>=12'}
|
||||
dev: false
|
||||
|
||||
/escodegen@1.14.3:
|
||||
resolution: {integrity: sha512-qFcX0XJkdg+PB3xjZZG/wKSuT1PnQWx57+TVSjIMmILd2yC/6ByYElPwJnslDsuWuSAp4AwJGumarAAmJch5Kw==}
|
||||
engines: {node: '>=4.0'}
|
||||
hasBin: true
|
||||
dependencies:
|
||||
esprima: 4.0.1
|
||||
estraverse: 4.3.0
|
||||
esutils: 2.0.3
|
||||
optionator: 0.8.3
|
||||
optionalDependencies:
|
||||
source-map: 0.6.1
|
||||
dev: false
|
||||
|
||||
/escodegen@2.0.0:
|
||||
resolution: {integrity: sha512-mmHKys/C8BFUGI+MAWNcSYoORYLMdPzjrknd2Vc+bUsjN5bXcr8EhrNB+UTqfL1y3I9c4fw2ihgtMPQLBRiQxw==}
|
||||
engines: {node: '>=6.0'}
|
||||
|
@ -11761,7 +11940,6 @@ packages:
|
|||
/eslint-visitor-keys@3.4.1:
|
||||
resolution: {integrity: sha512-pZnmmLwYzf+kWaM/Qgrvpen51upAktaaiI01nsJD/Yr3lMOdNtq0cxkrrg16w64VtisN6okbs7Q8AfGqj4c9fA==}
|
||||
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
|
||||
dev: true
|
||||
|
||||
/eslint@8.40.0:
|
||||
resolution: {integrity: sha512-bvR+TsP9EHL3TqNtj9sCNJVAFK3fBN8Q7g5waghxyRsPLIMwL73XSKnZFK0hk/O2ANC+iAoq6PWMQ+IfBAJIiQ==}
|
||||
|
@ -11819,7 +11997,6 @@ packages:
|
|||
acorn: 8.8.2
|
||||
acorn-jsx: 5.3.2(acorn@8.8.2)
|
||||
eslint-visitor-keys: 3.4.1
|
||||
dev: true
|
||||
|
||||
/esprima@2.7.3:
|
||||
resolution: {integrity: sha512-OarPfz0lFCiW4/AV2Oy1Rp9qu0iusTKqykwTspGCZtPxmF81JR4MmIebvF1F9+UOKth2ZubLQ4XGGaU+hSn99A==}
|
||||
|
@ -11849,7 +12026,6 @@ packages:
|
|||
/estraverse@4.3.0:
|
||||
resolution: {integrity: sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==}
|
||||
engines: {node: '>=4.0'}
|
||||
dev: true
|
||||
|
||||
/estraverse@5.3.0:
|
||||
resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==}
|
||||
|
@ -12228,6 +12404,10 @@ packages:
|
|||
resolution: {integrity: sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA==}
|
||||
dev: false
|
||||
|
||||
/fast-text-encoding@1.0.6:
|
||||
resolution: {integrity: sha512-VhXlQgj9ioXCqGstD37E/HBeqEGV/qOD/kmbVG8h5xKBYvM1L3lR1Zn4555cQ8GkYbJa8aJSipLPndE1k6zK2w==}
|
||||
dev: false
|
||||
|
||||
/fast-uri@2.2.0:
|
||||
resolution: {integrity: sha512-cIusKBIt/R/oI6z/1nyfe2FvGKVTohVRfvkOhvx0nCEW+xf5NoCXjAHcWp93uOUBchzYcsvPlrapAdX1uW+YGg==}
|
||||
dev: false
|
||||
|
@ -12764,6 +12944,30 @@ packages:
|
|||
wide-align: 1.1.5
|
||||
dev: false
|
||||
|
||||
/gaxios@5.1.0:
|
||||
resolution: {integrity: sha512-aezGIjb+/VfsJtIcHGcBSerNEDdfdHeMros+RbYbGpmonKWQCOVOes0LVZhn1lDtIgq55qq0HaxymIoae3Fl/A==}
|
||||
engines: {node: '>=12'}
|
||||
dependencies:
|
||||
extend: 3.0.2
|
||||
https-proxy-agent: 5.0.1
|
||||
is-stream: 2.0.1
|
||||
node-fetch: 2.6.11
|
||||
transitivePeerDependencies:
|
||||
- encoding
|
||||
- supports-color
|
||||
dev: false
|
||||
|
||||
/gcp-metadata@5.2.0:
|
||||
resolution: {integrity: sha512-aFhhvvNycky2QyhG+dcfEdHBF0FRbYcf39s6WNHUDysKSrbJ5vuFbjydxBcmewtXeV248GP8dWT3ByPNxsyHCw==}
|
||||
engines: {node: '>=12'}
|
||||
dependencies:
|
||||
gaxios: 5.1.0
|
||||
json-bigint: 1.0.0
|
||||
transitivePeerDependencies:
|
||||
- encoding
|
||||
- supports-color
|
||||
dev: false
|
||||
|
||||
/generic-pool@3.9.0:
|
||||
resolution: {integrity: sha512-hymDOu5B53XvN4QT9dBmZxPX4CWhBPPLguTZ9MMFeFa/Kg0xWVfylOVNlJji/E7yTZWFd/q9GO5TxDLq156D7g==}
|
||||
engines: {node: '>= 4'}
|
||||
|
@ -13043,6 +13247,57 @@ packages:
|
|||
sparkles: 1.0.1
|
||||
dev: false
|
||||
|
||||
/google-auth-library@8.8.0:
|
||||
resolution: {integrity: sha512-0iJn7IDqObDG5Tu9Tn2WemmJ31ksEa96IyK0J0OZCpTh6CrC6FrattwKX87h3qKVuprCJpdOGKc1Xi8V0kMh8Q==}
|
||||
engines: {node: '>=12'}
|
||||
dependencies:
|
||||
arrify: 2.0.1
|
||||
base64-js: 1.5.1
|
||||
ecdsa-sig-formatter: 1.0.11
|
||||
fast-text-encoding: 1.0.6
|
||||
gaxios: 5.1.0
|
||||
gcp-metadata: 5.2.0
|
||||
gtoken: 6.1.2
|
||||
jws: 4.0.0
|
||||
lru-cache: 6.0.0
|
||||
transitivePeerDependencies:
|
||||
- encoding
|
||||
- supports-color
|
||||
dev: false
|
||||
|
||||
/google-gax@3.6.0:
|
||||
resolution: {integrity: sha512-2fyb61vWxUonHiArRNJQmE4tx5oY1ni8VPo08fzII409vDSCWG7apDX4qNOQ2GXXT82gLBn3d3P1Dydh7pWjyw==}
|
||||
engines: {node: '>=12'}
|
||||
hasBin: true
|
||||
dependencies:
|
||||
'@grpc/grpc-js': 1.8.14
|
||||
'@grpc/proto-loader': 0.7.7
|
||||
'@types/long': 4.0.2
|
||||
'@types/rimraf': 3.0.2
|
||||
abort-controller: 3.0.0
|
||||
duplexify: 4.1.2
|
||||
fast-text-encoding: 1.0.6
|
||||
google-auth-library: 8.8.0
|
||||
is-stream-ended: 0.1.4
|
||||
node-fetch: 2.6.11
|
||||
object-hash: 3.0.0
|
||||
proto3-json-serializer: 1.1.1
|
||||
protobufjs: 7.2.3
|
||||
protobufjs-cli: 1.1.1(protobufjs@7.2.3)
|
||||
retry-request: 5.0.2
|
||||
transitivePeerDependencies:
|
||||
- encoding
|
||||
- supports-color
|
||||
dev: false
|
||||
|
||||
/google-p12-pem@4.0.1:
|
||||
resolution: {integrity: sha512-WPkN4yGtz05WZ5EhtlxNDWPhC4JIic6G8ePitwUWy4l+XPVYec+a0j0Ts47PDtW59y3RwAhUd9/h9ZZ63px6RQ==}
|
||||
engines: {node: '>=12.0.0'}
|
||||
hasBin: true
|
||||
dependencies:
|
||||
node-forge: 1.3.1
|
||||
dev: false
|
||||
|
||||
/google-protobuf@3.21.2:
|
||||
resolution: {integrity: sha512-3MSOYFO5U9mPGikIYCzK0SaThypfGgS6bHqrUGXG3DPHCrb+txNqeEcns1W0lkGfk0rCyNXm7xB9rMxnCiZOoA==}
|
||||
dev: false
|
||||
|
@ -13106,6 +13361,18 @@ packages:
|
|||
resolution: {integrity: sha512-Q89nKCLgoX5xUjznh9LcaIUkz54k1voNucT1Rpf9SJNFIQznBwFqt5qUUQbeVInFyN/n18OUJkpeI6CNEDt74w==}
|
||||
dev: false
|
||||
|
||||
/gtoken@6.1.2:
|
||||
resolution: {integrity: sha512-4ccGpzz7YAr7lxrT2neugmXQ3hP9ho2gcaityLVkiUecAiwiy60Ii8gRbZeOsXV19fYaRjgBSshs8kXw+NKCPQ==}
|
||||
engines: {node: '>=12.0.0'}
|
||||
dependencies:
|
||||
gaxios: 5.1.0
|
||||
google-p12-pem: 4.0.1
|
||||
jws: 4.0.0
|
||||
transitivePeerDependencies:
|
||||
- encoding
|
||||
- supports-color
|
||||
dev: false
|
||||
|
||||
/gulp-cli@2.3.0:
|
||||
resolution: {integrity: sha512-zzGBl5fHo0EKSXsHzjspp3y5CONegCm8ErO5Qh0UzFzk2y4tMvzLWhoDokADbarfZRL2pGpRp7yt6gfJX4ph7A==}
|
||||
engines: {node: '>= 0.10'}
|
||||
|
@ -13403,7 +13670,6 @@ packages:
|
|||
/html-tags@3.2.0:
|
||||
resolution: {integrity: sha512-vy7ClnArOZwCnqZgvv+ddgHgJiAFXe3Ge9ML5/mBctVJoUoYPCdxVucOywjDARn6CVoh3dRSFdPHy2sX80L0Wg==}
|
||||
engines: {node: '>=8'}
|
||||
dev: true
|
||||
|
||||
/htmlparser2@8.0.1:
|
||||
resolution: {integrity: sha512-4lVbmc1diZC7GUJQtRQ5yBAeUCL1exyMwmForWkRLnwyzWBFxN633SALPMGYaWZvKe9j1pRZJpauvmxENSp/EA==}
|
||||
|
@ -13948,6 +14214,13 @@ packages:
|
|||
resolution: {integrity: sha512-gyPJuv83bHMpocVYoqof5VDiZveEoGoFL8m3BXNb2VW8Xs+rz9kqO8LOQ5DH6EsuvilT1ApazU0pyl+ytbPtlw==}
|
||||
dev: true
|
||||
|
||||
/is-html@2.0.0:
|
||||
resolution: {integrity: sha512-S+OpgB5i7wzIue/YSE5hg0e5ZYfG3hhpNh9KGl6ayJ38p7ED6wxQLd1TV91xHpcTvw90KMJ9EwN3F/iNflHBVg==}
|
||||
engines: {node: '>=8'}
|
||||
dependencies:
|
||||
html-tags: 3.2.0
|
||||
dev: false
|
||||
|
||||
/is-installed-globally@0.4.0:
|
||||
resolution: {integrity: sha512-iwGqO3J21aaSkC7jWnHP/difazwS7SFeIqxv6wEtLU8Y5KlzFTjyqcSIT0d8s4+dDhKytsk9PJZ2BkS5eZwQRQ==}
|
||||
engines: {node: '>=10'}
|
||||
|
@ -14078,6 +14351,10 @@ packages:
|
|||
call-bind: 1.0.2
|
||||
dev: true
|
||||
|
||||
/is-stream-ended@0.1.4:
|
||||
resolution: {integrity: sha512-xj0XPvmr7bQFTvirqnFr50o0hQIh6ZItDqloxt5aJrR4NQsYeSsyFQERYGCAzfindAcnKjINnwEEgLx4IqVzQw==}
|
||||
dev: false
|
||||
|
||||
/is-stream@1.1.0:
|
||||
resolution: {integrity: sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ==}
|
||||
engines: {node: '>=0.10.0'}
|
||||
|
@ -14943,6 +15220,12 @@ packages:
|
|||
dependencies:
|
||||
argparse: 2.0.1
|
||||
|
||||
/js2xmlparser@4.0.2:
|
||||
resolution: {integrity: sha512-6n4D8gLlLf1n5mNLQPRfViYzu9RATblzPEtm1SthMX1Pjao0r9YI9nw7ZIfRxQMERS87mcswrg+r/OYrPRX6jA==}
|
||||
dependencies:
|
||||
xmlcreate: 2.0.4
|
||||
dev: false
|
||||
|
||||
/jsbn@0.1.1:
|
||||
resolution: {integrity: sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg==}
|
||||
|
||||
|
@ -14984,6 +15267,28 @@ packages:
|
|||
- supports-color
|
||||
dev: true
|
||||
|
||||
/jsdoc@4.0.2:
|
||||
resolution: {integrity: sha512-e8cIg2z62InH7azBBi3EsSEqrKx+nUtAS5bBcYTSpZFA+vhNPyhv8PTFZ0WsjOPDj04/dOLlm08EDcQJDqaGQg==}
|
||||
engines: {node: '>=12.0.0'}
|
||||
hasBin: true
|
||||
dependencies:
|
||||
'@babel/parser': 7.22.4
|
||||
'@jsdoc/salty': 0.2.5
|
||||
'@types/markdown-it': 12.2.3
|
||||
bluebird: 3.7.2
|
||||
catharsis: 0.9.0
|
||||
escape-string-regexp: 2.0.0
|
||||
js2xmlparser: 4.0.2
|
||||
klaw: 3.0.0
|
||||
markdown-it: 12.3.2
|
||||
markdown-it-anchor: 8.6.7(@types/markdown-it@12.2.3)(markdown-it@12.3.2)
|
||||
marked: 4.3.0
|
||||
mkdirp: 1.0.4
|
||||
requizzle: 0.2.4
|
||||
strip-json-comments: 3.1.1
|
||||
underscore: 1.13.6
|
||||
dev: false
|
||||
|
||||
/jsdom@21.1.1(bufferutil@4.0.7)(utf-8-validate@6.0.3):
|
||||
resolution: {integrity: sha512-Jjgdmw48RKcdAIQyUD1UdBh2ecH7VqwaXPN3ehoZN6MqgVbMn+lRm1aAT1AsdJRAJpwfa4IpwgzySn61h2qu3w==}
|
||||
engines: {node: '>=14'}
|
||||
|
@ -15036,6 +15341,12 @@ packages:
|
|||
hasBin: true
|
||||
dev: true
|
||||
|
||||
/json-bigint@1.0.0:
|
||||
resolution: {integrity: sha512-SiPv/8VpZuWbvLSMtTDU8hEfrZWg/mH/nV/b4o0CYbSxu1UIQPLdwKOCIyLQX+VIPO5vrLX3i8qtqFyhdPSUSQ==}
|
||||
dependencies:
|
||||
bignumber.js: 9.1.1
|
||||
dev: false
|
||||
|
||||
/json-buffer@3.0.1:
|
||||
resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==}
|
||||
|
||||
|
@ -15200,6 +15511,12 @@ packages:
|
|||
resolution: {integrity: sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==}
|
||||
engines: {node: '>=0.10.0'}
|
||||
|
||||
/klaw@3.0.0:
|
||||
resolution: {integrity: sha512-0Fo5oir+O9jnXu5EefYbVK+mHMBeEVEy2cmctR1O1NECcCkPRreJKrS6Qt/j3KC2C148Dfo9i3pCmCMsdqGr0g==}
|
||||
dependencies:
|
||||
graceful-fs: 4.2.11
|
||||
dev: false
|
||||
|
||||
/kleur@3.0.3:
|
||||
resolution: {integrity: sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==}
|
||||
engines: {node: '>=6'}
|
||||
|
@ -15316,6 +15633,12 @@ packages:
|
|||
resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==}
|
||||
dev: true
|
||||
|
||||
/linkify-it@3.0.3:
|
||||
resolution: {integrity: sha512-ynTsyrFSdE5oZ/O9GEf00kPngmOfVwazR5GKDq6EYfhlpFug3J2zybX56a2PRRpc9P+FuSoGNAwjlbDs9jJBPQ==}
|
||||
dependencies:
|
||||
uc.micro: 1.0.6
|
||||
dev: false
|
||||
|
||||
/listenercount@1.0.1:
|
||||
resolution: {integrity: sha512-3mk/Zag0+IJxeDrxSgaDPy4zZ3w05PRZeJNnlWhzFz5OkX49J4krc+A8X2d2M69vGMBEX0uyl8M+W+8gH+kBqQ==}
|
||||
dev: false
|
||||
|
@ -15376,6 +15699,10 @@ packages:
|
|||
p-locate: 5.0.0
|
||||
dev: true
|
||||
|
||||
/lodash.camelcase@4.3.0:
|
||||
resolution: {integrity: sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA==}
|
||||
dev: false
|
||||
|
||||
/lodash.clone@4.5.0:
|
||||
resolution: {integrity: sha512-GhrVeweiTD6uTmmn5hV/lzgCQhccwReIVRLHp7LT4SopOjqEZ5BbX8b5WWEtAKasjmy8hR7ZPwsYlxRCku5odg==}
|
||||
dev: false
|
||||
|
@ -15523,6 +15850,10 @@ packages:
|
|||
resolution: {integrity: sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA==}
|
||||
dev: false
|
||||
|
||||
/long@5.2.3:
|
||||
resolution: {integrity: sha512-lcHwpNoggQTObv5apGNCTdJrO69eHOZMi4BNC+rTLER8iHAqGrUVeLh/irVIM7zTw2bOXA8T6uNPeujwOLg/2Q==}
|
||||
dev: false
|
||||
|
||||
/loose-envify@1.4.0:
|
||||
resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==}
|
||||
hasBin: true
|
||||
|
@ -15693,6 +16024,27 @@ packages:
|
|||
dependencies:
|
||||
object-visit: 1.0.1
|
||||
|
||||
/markdown-it-anchor@8.6.7(@types/markdown-it@12.2.3)(markdown-it@12.3.2):
|
||||
resolution: {integrity: sha512-FlCHFwNnutLgVTflOYHPW2pPcl2AACqVzExlkGQNsi4CJgqOHN7YTgDd4LuhgN1BFO3TS0vLAruV1Td6dwWPJA==}
|
||||
peerDependencies:
|
||||
'@types/markdown-it': '*'
|
||||
markdown-it: '*'
|
||||
dependencies:
|
||||
'@types/markdown-it': 12.2.3
|
||||
markdown-it: 12.3.2
|
||||
dev: false
|
||||
|
||||
/markdown-it@12.3.2:
|
||||
resolution: {integrity: sha512-TchMembfxfNVpHkbtriWltGWc+m3xszaRD0CZup7GFFhzIgQqxIfn3eGj1yZpfuflzPvfkt611B2Q/Bsk1YnGg==}
|
||||
hasBin: true
|
||||
dependencies:
|
||||
argparse: 2.0.1
|
||||
entities: 2.1.0
|
||||
linkify-it: 3.0.3
|
||||
mdurl: 1.0.1
|
||||
uc.micro: 1.0.6
|
||||
dev: false
|
||||
|
||||
/markdown-to-jsx@7.2.0(react@18.2.0):
|
||||
resolution: {integrity: sha512-3l4/Bigjm4bEqjCR6Xr+d4DtM1X6vvtGsMGSjJYyep8RjjIvcWtrXBS8Wbfe1/P+atKNMccpsraESIaWVplzVg==}
|
||||
engines: {node: '>= 10'}
|
||||
|
@ -15702,6 +16054,12 @@ packages:
|
|||
react: 18.2.0
|
||||
dev: true
|
||||
|
||||
/marked@4.3.0:
|
||||
resolution: {integrity: sha512-PRsaiG84bK+AMvxziE/lCFss8juXjNaWzVbN5tXAm4XjeaS9NAHhop+PjQxz2A9h8Q4M/xGmzP8vqNwy6JeK0A==}
|
||||
engines: {node: '>= 12'}
|
||||
hasBin: true
|
||||
dev: false
|
||||
|
||||
/matchdep@2.0.0:
|
||||
resolution: {integrity: sha512-LFgVbaHIHMqCRuCZyfCtUOq9/Lnzhi7Z0KFUE2fhD54+JN2jLh3hC02RLkqauJ3U4soU6H1J3tfj/Byk7GoEjA==}
|
||||
engines: {node: '>= 0.10.0'}
|
||||
|
@ -15739,6 +16097,10 @@ packages:
|
|||
resolution: {integrity: sha512-jVU0Nr2B9X3MU4tSK7JP1CMkSvOj7X5l/GboG1tKRw52lLF1x2Ju92Ms9tNetCcbfX3hzlM73zYo2NKkWSfF/A==}
|
||||
dev: true
|
||||
|
||||
/mdurl@1.0.1:
|
||||
resolution: {integrity: sha512-/sKlQJCBYVY9Ers9hqzKou4H6V5UWc/M59TH2dvkt+84itfnq7uFOMLpOiOS4ujvHP4etln18fmIxA5R5fll0g==}
|
||||
dev: false
|
||||
|
||||
/media-typer@0.3.0:
|
||||
resolution: {integrity: sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==}
|
||||
engines: {node: '>= 0.6'}
|
||||
|
@ -16335,6 +16697,11 @@ packages:
|
|||
fetch-blob: 3.2.0
|
||||
formdata-polyfill: 4.0.10
|
||||
|
||||
/node-forge@1.3.1:
|
||||
resolution: {integrity: sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA==}
|
||||
engines: {node: '>= 6.13.0'}
|
||||
dev: false
|
||||
|
||||
/node-gyp-build-optional-packages@5.0.7:
|
||||
resolution: {integrity: sha512-YlCCc6Wffkx0kHkmam79GKvDQ6x+QZkMjFGrIMxgFNILFvGSbCp2fCBC55pGTT9gVaz8Na5CLmxt/urtzRv36w==}
|
||||
hasBin: true
|
||||
|
@ -17805,6 +18172,52 @@ packages:
|
|||
resolution: {integrity: sha512-vtK/94akxsTMhe0/cbfpR+syPuszcuwhqVjJq26CuNDgFGj682oRBXOP5MJpv2r7JtE8MsiepGIqvvOTBwn2vA==}
|
||||
dev: true
|
||||
|
||||
/proto3-json-serializer@1.1.1:
|
||||
resolution: {integrity: sha512-AwAuY4g9nxx0u52DnSMkqqgyLHaW/XaPLtaAo3y/ZCfeaQB/g4YDH4kb8Wc/mWzWvu0YjOznVnfn373MVZZrgw==}
|
||||
engines: {node: '>=12.0.0'}
|
||||
dependencies:
|
||||
protobufjs: 7.2.3
|
||||
dev: false
|
||||
|
||||
/protobufjs-cli@1.1.1(protobufjs@7.2.3):
|
||||
resolution: {integrity: sha512-VPWMgIcRNyQwWUv8OLPyGQ/0lQY/QTQAVN5fh+XzfDwsVw1FZ2L3DM/bcBf8WPiRz2tNpaov9lPZfNcmNo6LXA==}
|
||||
engines: {node: '>=12.0.0'}
|
||||
hasBin: true
|
||||
peerDependencies:
|
||||
protobufjs: ^7.0.0
|
||||
dependencies:
|
||||
chalk: 4.1.2
|
||||
escodegen: 1.14.3
|
||||
espree: 9.5.2
|
||||
estraverse: 5.3.0
|
||||
glob: 8.1.0
|
||||
jsdoc: 4.0.2
|
||||
minimist: 1.2.8
|
||||
protobufjs: 7.2.3
|
||||
semver: 7.5.1
|
||||
tmp: 0.2.1
|
||||
uglify-js: 3.17.4
|
||||
dev: false
|
||||
|
||||
/protobufjs@7.2.3:
|
||||
resolution: {integrity: sha512-TtpvOqwB5Gdz/PQmOjgsrGH1nHjAQVCN7JG4A6r1sXRWESL5rNMAiRcBQlCAdKxZcAbstExQePYG8xof/JVRgg==}
|
||||
engines: {node: '>=12.0.0'}
|
||||
requiresBuild: true
|
||||
dependencies:
|
||||
'@protobufjs/aspromise': 1.1.2
|
||||
'@protobufjs/base64': 1.1.2
|
||||
'@protobufjs/codegen': 2.0.4
|
||||
'@protobufjs/eventemitter': 1.1.0
|
||||
'@protobufjs/fetch': 1.1.0
|
||||
'@protobufjs/float': 1.0.2
|
||||
'@protobufjs/inquire': 1.1.0
|
||||
'@protobufjs/path': 1.1.2
|
||||
'@protobufjs/pool': 1.1.0
|
||||
'@protobufjs/utf8': 1.1.0
|
||||
'@types/node': 20.2.5
|
||||
long: 5.2.3
|
||||
dev: false
|
||||
|
||||
/proxy-addr@2.0.7:
|
||||
resolution: {integrity: sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==}
|
||||
engines: {node: '>= 0.10'}
|
||||
|
@ -18612,6 +19025,12 @@ packages:
|
|||
resolution: {integrity: sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==}
|
||||
dev: false
|
||||
|
||||
/requizzle@0.2.4:
|
||||
resolution: {integrity: sha512-JRrFk1D4OQ4SqovXOgdav+K8EAhSB/LJZqCz8tbX0KObcdeM15Ss59ozWMBWmmINMagCwmqn4ZNryUGpBsl6Jw==}
|
||||
dependencies:
|
||||
lodash: 4.17.21
|
||||
dev: false
|
||||
|
||||
/resolve-alpn@1.2.1:
|
||||
resolution: {integrity: sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g==}
|
||||
|
||||
|
@ -18700,6 +19119,16 @@ packages:
|
|||
engines: {node: '>=4'}
|
||||
dev: false
|
||||
|
||||
/retry-request@5.0.2:
|
||||
resolution: {integrity: sha512-wfI3pk7EE80lCIXprqh7ym48IHYdwmAAzESdbU8Q9l7pnRCk9LEhpbOTNKjz6FARLm/Bl5m+4F0ABxOkYUujSQ==}
|
||||
engines: {node: '>=12'}
|
||||
dependencies:
|
||||
debug: 4.3.4(supports-color@8.1.1)
|
||||
extend: 3.0.2
|
||||
transitivePeerDependencies:
|
||||
- supports-color
|
||||
dev: false
|
||||
|
||||
/retry@0.12.0:
|
||||
resolution: {integrity: sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow==}
|
||||
engines: {node: '>= 4'}
|
||||
|
@ -19591,6 +20020,12 @@ packages:
|
|||
duplexer: 0.1.2
|
||||
dev: true
|
||||
|
||||
/stream-events@1.0.5:
|
||||
resolution: {integrity: sha512-E1GUzBSgvct8Jsb3v2X15pjzN1tYebtbLaMg+eBOUOAxgbLoSbT2NS91ckc5lJD1KfLjId+jXJRgo0qnV5Nerg==}
|
||||
dependencies:
|
||||
stubs: 3.0.0
|
||||
dev: false
|
||||
|
||||
/stream-exhaust@1.0.2:
|
||||
resolution: {integrity: sha512-b/qaq/GlBK5xaq1yrK9/zFcyRSTNxmcZwFLGSTG0mXgZl/4Z6GgiyYOXOvY7N3eEvFRAG1bkDRz5EPGSvPYQlw==}
|
||||
|
||||
|
@ -19787,7 +20222,6 @@ packages:
|
|||
/strip-json-comments@3.1.1:
|
||||
resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==}
|
||||
engines: {node: '>=8'}
|
||||
dev: true
|
||||
|
||||
/strip-literal@1.0.1:
|
||||
resolution: {integrity: sha512-QZTsipNpa2Ppr6v1AmJHESqJ3Uz247MUS0OjrnnZjFAvEoWqxuyFuXn2xLgMtRnijJShAa1HL0gtJyUs7u7n3Q==}
|
||||
|
@ -19812,6 +20246,10 @@ packages:
|
|||
peek-readable: 5.0.0
|
||||
dev: false
|
||||
|
||||
/stubs@3.0.0:
|
||||
resolution: {integrity: sha512-PdHt7hHUJKxvTCgbKX9C1V/ftOcjJQgz8BZwNfV5c4B6dcGqlpelTbJ999jBGZ2jYiPAwcX5dP6oBwVlBlUbxw==}
|
||||
dev: false
|
||||
|
||||
/supports-color@2.0.0:
|
||||
resolution: {integrity: sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g==}
|
||||
engines: {node: '>=0.8.0'}
|
||||
|
@ -19937,6 +20375,20 @@ packages:
|
|||
mkdirp: 1.0.4
|
||||
yallist: 4.0.0
|
||||
|
||||
/teeny-request@8.0.3:
|
||||
resolution: {integrity: sha512-jJZpA5He2y52yUhA7pyAGZlgQpcB+xLjcN0eUFxr9c8hP/H7uOXbBNVo/O0C/xVfJLJs680jvkFgVJEEvk9+ww==}
|
||||
engines: {node: '>=12'}
|
||||
dependencies:
|
||||
http-proxy-agent: 5.0.0
|
||||
https-proxy-agent: 5.0.1
|
||||
node-fetch: 2.6.11
|
||||
stream-events: 1.0.5
|
||||
uuid: 9.0.0
|
||||
transitivePeerDependencies:
|
||||
- encoding
|
||||
- supports-color
|
||||
dev: false
|
||||
|
||||
/telejson@7.0.4:
|
||||
resolution: {integrity: sha512-J4QEuCnYGXAI9KSN7RXK0a0cOW2ONpjc4IQbInGZ6c3stvplLAYyZjTnScrRd8deXVjNCFV1wXcLC7SObDuQYA==}
|
||||
dependencies:
|
||||
|
@ -20486,6 +20938,10 @@ packages:
|
|||
engines: {node: '>=12.20'}
|
||||
hasBin: true
|
||||
|
||||
/uc.micro@1.0.6:
|
||||
resolution: {integrity: sha512-8Y75pvTYkLJW2hWQHXxoqRgV7qb9B+9vFEtidML+7koHUFapnVJAZ6cKs+Qjz5Aw3aZWHMC6u0wJE3At+nSGwA==}
|
||||
dev: false
|
||||
|
||||
/ufo@1.1.1:
|
||||
resolution: {integrity: sha512-MvlCc4GHrmZdAllBc0iUDowff36Q9Ndw/UzqmEKyrfSzokTd9ZCy1i+IIk5hrYKkjoYVQyNbrw7/F8XJ2rEwTg==}
|
||||
dev: true
|
||||
|
@ -20495,8 +20951,6 @@ packages:
|
|||
engines: {node: '>=0.8.0'}
|
||||
hasBin: true
|
||||
requiresBuild: true
|
||||
dev: true
|
||||
optional: true
|
||||
|
||||
/uid@2.0.2:
|
||||
resolution: {integrity: sha512-u3xV3X7uzvi5b1MncmZo3i2Aw222Zk1keqLA1YkHldREkAhAqi65wuPfe7lHx8H/Wzy+8CE7S7uS3jekIM5s8g==}
|
||||
|
@ -20523,6 +20977,10 @@ packages:
|
|||
engines: {node: '>=0.10.0'}
|
||||
dev: false
|
||||
|
||||
/underscore@1.13.6:
|
||||
resolution: {integrity: sha512-+A5Sja4HP1M08MaXya7p5LvjuM7K6q/2EaC0+iovj/wOcMsTzMvDFbasi/oSapiwOlt252IqsKqPjCl7huKS0A==}
|
||||
dev: false
|
||||
|
||||
/undertaker-registry@1.0.1:
|
||||
resolution: {integrity: sha512-UR1khWeAjugW3548EfQmL9Z7pGMlBgXteQpr1IZeZBtnkCJQJIJ1Scj0mb9wQaPvUZ9Q17XqW6TIaPchJkyfqw==}
|
||||
engines: {node: '>= 0.10'}
|
||||
|
@ -21464,6 +21922,10 @@ packages:
|
|||
resolution: {integrity: sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==}
|
||||
dev: false
|
||||
|
||||
/xmlcreate@2.0.4:
|
||||
resolution: {integrity: sha512-nquOebG4sngPmGPICTS5EnxqhKbCmz5Ox5hsszI2T6U5qdrJizBc+0ilYSEjTSzU0yZcmvppztXe/5Al5fUwdg==}
|
||||
dev: false
|
||||
|
||||
/xtend@4.0.2:
|
||||
resolution: {integrity: sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==}
|
||||
engines: {node: '>=0.4'}
|
||||
|
@ -21574,6 +22036,19 @@ packages:
|
|||
y18n: 5.0.8
|
||||
yargs-parser: 21.1.1
|
||||
|
||||
/yargs@17.7.2:
|
||||
resolution: {integrity: sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==}
|
||||
engines: {node: '>=12'}
|
||||
dependencies:
|
||||
cliui: 8.0.1
|
||||
escalade: 3.1.1
|
||||
get-caller-file: 2.0.5
|
||||
require-directory: 2.1.1
|
||||
string-width: 4.2.3
|
||||
y18n: 5.0.8
|
||||
yargs-parser: 21.1.1
|
||||
dev: false
|
||||
|
||||
/yargs@7.1.2:
|
||||
resolution: {integrity: sha512-ZEjj/dQYQy0Zx0lgLMLR8QuaqTihnxirir7EwUHp1Axq4e3+k8jXU5K0VLbNvedv1f4EWtBonDIZm0NUr+jCcA==}
|
||||
dependencies:
|
||||
|
|
Loading…
Reference in a new issue