Merge branch 'develop' into fix/postform-footer-button-overflow
This commit is contained in:
commit
968e56ad4b
|
@ -12,6 +12,11 @@
|
||||||
|
|
||||||
-->
|
-->
|
||||||
|
|
||||||
|
## 202x.x.x (Unreleased)
|
||||||
|
|
||||||
|
### Client
|
||||||
|
- Enhance: ハッシュタグ入力時に、本文の末尾の行に何も書かれていない場合は新たにスペースを追加しないように
|
||||||
|
|
||||||
## 2023.12.2
|
## 2023.12.2
|
||||||
|
|
||||||
### General
|
### General
|
||||||
|
|
2
COPYING
2
COPYING
|
@ -1,5 +1,5 @@
|
||||||
Unless otherwise stated this repository is
|
Unless otherwise stated this repository is
|
||||||
Copyright © 2014-2023 syuilo and contributers
|
Copyright © 2014-2023 syuilo and contributors
|
||||||
|
|
||||||
And is distributed under The GNU Affero General Public License Version 3, you should have received a copy of the license file as LICENSE.
|
And is distributed under The GNU Affero General Public License Version 3, you should have received a copy of the license file as LICENSE.
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,20 @@
|
||||||
|
/*
|
||||||
|
* SPDX-FileCopyrightText: syuilo and other misskey contributors
|
||||||
|
* SPDX-License-Identifier: AGPL-3.0-only
|
||||||
|
*/
|
||||||
|
|
||||||
|
export class SupportTrueMailApi1703658526000 {
|
||||||
|
name = 'SupportTrueMailApi1703658526000'
|
||||||
|
|
||||||
|
async up(queryRunner) {
|
||||||
|
await queryRunner.query(`ALTER TABLE "meta" ADD "truemailInstance" character varying(1024)`);
|
||||||
|
await queryRunner.query(`ALTER TABLE "meta" ADD "truemailAuthKey" character varying(1024)`);
|
||||||
|
await queryRunner.query(`ALTER TABLE "meta" ADD "enableTruemailApi" boolean NOT NULL DEFAULT false`);
|
||||||
|
}
|
||||||
|
|
||||||
|
async down(queryRunner) {
|
||||||
|
await queryRunner.query(`ALTER TABLE "meta" DROP COLUMN "enableTruemailApi"`);
|
||||||
|
await queryRunner.query(`ALTER TABLE "meta" DROP COLUMN "truemailInstance"`);
|
||||||
|
await queryRunner.query(`ALTER TABLE "meta" DROP COLUMN "truemailAuthKey"`);
|
||||||
|
}
|
||||||
|
}
|
|
@ -74,6 +74,8 @@
|
||||||
"@fastify/multipart": "8.0.0",
|
"@fastify/multipart": "8.0.0",
|
||||||
"@fastify/static": "6.12.0",
|
"@fastify/static": "6.12.0",
|
||||||
"@fastify/view": "8.2.0",
|
"@fastify/view": "8.2.0",
|
||||||
|
"@misskey-dev/sharp-read-bmp": "^1.1.1",
|
||||||
|
"@misskey-dev/summaly": "^5.0.3",
|
||||||
"@nestjs/common": "10.2.10",
|
"@nestjs/common": "10.2.10",
|
||||||
"@nestjs/core": "10.2.10",
|
"@nestjs/core": "10.2.10",
|
||||||
"@nestjs/testing": "10.2.10",
|
"@nestjs/testing": "10.2.10",
|
||||||
|
@ -157,11 +159,9 @@
|
||||||
"sanitize-html": "2.11.0",
|
"sanitize-html": "2.11.0",
|
||||||
"secure-json-parse": "2.7.0",
|
"secure-json-parse": "2.7.0",
|
||||||
"sharp": "0.32.6",
|
"sharp": "0.32.6",
|
||||||
"sharp-read-bmp": "github:misskey-dev/sharp-read-bmp",
|
|
||||||
"slacc": "0.0.10",
|
"slacc": "0.0.10",
|
||||||
"strict-event-emitter-types": "2.0.0",
|
"strict-event-emitter-types": "2.0.0",
|
||||||
"stringz": "2.1.0",
|
"stringz": "2.1.0",
|
||||||
"summaly": "github:misskey-dev/summaly",
|
|
||||||
"systeminformation": "5.21.20",
|
"systeminformation": "5.21.20",
|
||||||
"tinycolor2": "1.6.0",
|
"tinycolor2": "1.6.0",
|
||||||
"tmp": "0.2.1",
|
"tmp": "0.2.1",
|
||||||
|
|
|
@ -7,7 +7,7 @@ import { randomUUID } from 'node:crypto';
|
||||||
import * as fs from 'node:fs';
|
import * as fs from 'node:fs';
|
||||||
import { Inject, Injectable } from '@nestjs/common';
|
import { Inject, Injectable } from '@nestjs/common';
|
||||||
import sharp from 'sharp';
|
import sharp from 'sharp';
|
||||||
import { sharpBmp } from 'sharp-read-bmp';
|
import { sharpBmp } from '@misskey-dev/sharp-read-bmp';
|
||||||
import { IsNull } from 'typeorm';
|
import { IsNull } from 'typeorm';
|
||||||
import { DeleteObjectCommandInput, PutObjectCommandInput, NoSuchKey } from '@aws-sdk/client-s3';
|
import { DeleteObjectCommandInput, PutObjectCommandInput, NoSuchKey } from '@aws-sdk/client-s3';
|
||||||
import { DI } from '@/di-symbols.js';
|
import { DI } from '@/di-symbols.js';
|
||||||
|
|
|
@ -156,7 +156,7 @@ export class EmailService {
|
||||||
@bindThis
|
@bindThis
|
||||||
public async validateEmailForAccount(emailAddress: string): Promise<{
|
public async validateEmailForAccount(emailAddress: string): Promise<{
|
||||||
available: boolean;
|
available: boolean;
|
||||||
reason: null | 'used' | 'format' | 'disposable' | 'mx' | 'smtp' | 'banned';
|
reason: null | 'used' | 'format' | 'disposable' | 'mx' | 'smtp' | 'banned' | 'network' | 'blacklist';
|
||||||
}> {
|
}> {
|
||||||
const meta = await this.metaService.fetch();
|
const meta = await this.metaService.fetch();
|
||||||
|
|
||||||
|
@ -173,6 +173,8 @@ export class EmailService {
|
||||||
if (meta.enableActiveEmailValidation) {
|
if (meta.enableActiveEmailValidation) {
|
||||||
if (meta.enableVerifymailApi && meta.verifymailAuthKey != null) {
|
if (meta.enableVerifymailApi && meta.verifymailAuthKey != null) {
|
||||||
validated = await this.verifyMail(emailAddress, meta.verifymailAuthKey);
|
validated = await this.verifyMail(emailAddress, meta.verifymailAuthKey);
|
||||||
|
} else if (meta.enableTruemailApi && meta.truemailInstance && meta.truemailAuthKey != null) {
|
||||||
|
validated = await this.trueMail(meta.truemailInstance, emailAddress, meta.truemailAuthKey);
|
||||||
} else {
|
} else {
|
||||||
validated = await validateEmail({
|
validated = await validateEmail({
|
||||||
email: emailAddress,
|
email: emailAddress,
|
||||||
|
@ -201,6 +203,8 @@ export class EmailService {
|
||||||
validated.reason === 'disposable' ? 'disposable' :
|
validated.reason === 'disposable' ? 'disposable' :
|
||||||
validated.reason === 'mx' ? 'mx' :
|
validated.reason === 'mx' ? 'mx' :
|
||||||
validated.reason === 'smtp' ? 'smtp' :
|
validated.reason === 'smtp' ? 'smtp' :
|
||||||
|
validated.reason === 'network' ? 'network' :
|
||||||
|
validated.reason === 'blacklist' ? 'blacklist' :
|
||||||
null,
|
null,
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
@ -265,4 +269,67 @@ export class EmailService {
|
||||||
reason: null,
|
reason: null,
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private async trueMail<T>(truemailInstance: string, emailAddress: string, truemailAuthKey: string): Promise<{
|
||||||
|
valid: boolean;
|
||||||
|
reason: 'used' | 'format' | 'blacklist' | 'mx' | 'smtp' | 'network' | T | null;
|
||||||
|
}> {
|
||||||
|
const endpoint = truemailInstance + '?email=' + emailAddress;
|
||||||
|
try {
|
||||||
|
const res = await this.httpRequestService.send(endpoint, {
|
||||||
|
method: 'POST',
|
||||||
|
headers: {
|
||||||
|
'Content-Type': 'application/json',
|
||||||
|
Accept: 'application/json',
|
||||||
|
Authorization: truemailAuthKey
|
||||||
|
},
|
||||||
|
});
|
||||||
|
|
||||||
|
const json = (await res.json()) as {
|
||||||
|
email: string;
|
||||||
|
success: boolean;
|
||||||
|
errors?: {
|
||||||
|
list_match?: string;
|
||||||
|
regex?: string;
|
||||||
|
mx?: string;
|
||||||
|
smtp?: string;
|
||||||
|
} | null;
|
||||||
|
};
|
||||||
|
|
||||||
|
if (json.email === undefined || (json.email !== undefined && json.errors?.regex)) {
|
||||||
|
return {
|
||||||
|
valid: false,
|
||||||
|
reason: 'format',
|
||||||
|
};
|
||||||
|
}
|
||||||
|
if (json.errors?.smtp) {
|
||||||
|
return {
|
||||||
|
valid: false,
|
||||||
|
reason: 'smtp',
|
||||||
|
};
|
||||||
|
}
|
||||||
|
if (json.errors?.mx) {
|
||||||
|
return {
|
||||||
|
valid: false,
|
||||||
|
reason: 'mx',
|
||||||
|
};
|
||||||
|
}
|
||||||
|
if (!json.success) {
|
||||||
|
return {
|
||||||
|
valid: false,
|
||||||
|
reason: json.errors?.list_match as T || 'blacklist',
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
return {
|
||||||
|
valid: true,
|
||||||
|
reason: null,
|
||||||
|
};
|
||||||
|
} catch (error) {
|
||||||
|
return {
|
||||||
|
valid: false,
|
||||||
|
reason: 'network',
|
||||||
|
};
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -457,6 +457,23 @@ export class MiMeta {
|
||||||
})
|
})
|
||||||
public verifymailAuthKey: string | null;
|
public verifymailAuthKey: string | null;
|
||||||
|
|
||||||
|
@Column('boolean', {
|
||||||
|
default: false,
|
||||||
|
})
|
||||||
|
public enableTruemailApi: boolean;
|
||||||
|
|
||||||
|
@Column('varchar', {
|
||||||
|
length: 1024,
|
||||||
|
nullable: true,
|
||||||
|
})
|
||||||
|
public truemailInstance: string | null;
|
||||||
|
|
||||||
|
@Column('varchar', {
|
||||||
|
length: 1024,
|
||||||
|
nullable: true,
|
||||||
|
})
|
||||||
|
public truemailAuthKey: string | null;
|
||||||
|
|
||||||
@Column('boolean', {
|
@Column('boolean', {
|
||||||
default: true,
|
default: true,
|
||||||
})
|
})
|
||||||
|
|
|
@ -9,7 +9,7 @@ import { dirname } from 'node:path';
|
||||||
import { Inject, Injectable } from '@nestjs/common';
|
import { Inject, Injectable } from '@nestjs/common';
|
||||||
import rename from 'rename';
|
import rename from 'rename';
|
||||||
import sharp from 'sharp';
|
import sharp from 'sharp';
|
||||||
import { sharpBmp } from 'sharp-read-bmp';
|
import { sharpBmp } from '@misskey-dev/sharp-read-bmp';
|
||||||
import type { Config } from '@/config.js';
|
import type { Config } from '@/config.js';
|
||||||
import type { MiDriveFile, DriveFilesRepository } from '@/models/_.js';
|
import type { MiDriveFile, DriveFilesRepository } from '@/models/_.js';
|
||||||
import { DI } from '@/di-symbols.js';
|
import { DI } from '@/di-symbols.js';
|
||||||
|
|
|
@ -284,6 +284,18 @@ export const meta = {
|
||||||
type: 'string',
|
type: 'string',
|
||||||
optional: false, nullable: true,
|
optional: false, nullable: true,
|
||||||
},
|
},
|
||||||
|
enableTruemailApi: {
|
||||||
|
type: 'boolean',
|
||||||
|
optional: false, nullable: false,
|
||||||
|
},
|
||||||
|
truemailInstance: {
|
||||||
|
type: 'string',
|
||||||
|
optional: false, nullable: true,
|
||||||
|
},
|
||||||
|
truemailAuthKey: {
|
||||||
|
type: 'string',
|
||||||
|
optional: false, nullable: true,
|
||||||
|
},
|
||||||
enableChartsForRemoteUser: {
|
enableChartsForRemoteUser: {
|
||||||
type: 'boolean',
|
type: 'boolean',
|
||||||
optional: false, nullable: false,
|
optional: false, nullable: false,
|
||||||
|
@ -520,6 +532,9 @@ export default class extends Endpoint<typeof meta, typeof paramDef> { // eslint-
|
||||||
enableActiveEmailValidation: instance.enableActiveEmailValidation,
|
enableActiveEmailValidation: instance.enableActiveEmailValidation,
|
||||||
enableVerifymailApi: instance.enableVerifymailApi,
|
enableVerifymailApi: instance.enableVerifymailApi,
|
||||||
verifymailAuthKey: instance.verifymailAuthKey,
|
verifymailAuthKey: instance.verifymailAuthKey,
|
||||||
|
enableTruemailApi: instance.enableTruemailApi,
|
||||||
|
truemailInstance: instance.truemailInstance,
|
||||||
|
truemailAuthKey: instance.truemailAuthKey,
|
||||||
enableChartsForRemoteUser: instance.enableChartsForRemoteUser,
|
enableChartsForRemoteUser: instance.enableChartsForRemoteUser,
|
||||||
enableChartsForFederatedInstances: instance.enableChartsForFederatedInstances,
|
enableChartsForFederatedInstances: instance.enableChartsForFederatedInstances,
|
||||||
enableServerMachineStats: instance.enableServerMachineStats,
|
enableServerMachineStats: instance.enableServerMachineStats,
|
||||||
|
|
|
@ -116,6 +116,9 @@ export const paramDef = {
|
||||||
enableActiveEmailValidation: { type: 'boolean' },
|
enableActiveEmailValidation: { type: 'boolean' },
|
||||||
enableVerifymailApi: { type: 'boolean' },
|
enableVerifymailApi: { type: 'boolean' },
|
||||||
verifymailAuthKey: { type: 'string', nullable: true },
|
verifymailAuthKey: { type: 'string', nullable: true },
|
||||||
|
enableTruemailApi: { type: 'boolean' },
|
||||||
|
truemailInstance: { type: 'string', nullable: true },
|
||||||
|
truemailAuthKey: { type: 'string', nullable: true },
|
||||||
enableChartsForRemoteUser: { type: 'boolean' },
|
enableChartsForRemoteUser: { type: 'boolean' },
|
||||||
enableChartsForFederatedInstances: { type: 'boolean' },
|
enableChartsForFederatedInstances: { type: 'boolean' },
|
||||||
enableServerMachineStats: { type: 'boolean' },
|
enableServerMachineStats: { type: 'boolean' },
|
||||||
|
@ -469,6 +472,26 @@ export default class extends Endpoint<typeof meta, typeof paramDef> { // eslint-
|
||||||
set.verifymailAuthKey = ps.verifymailAuthKey;
|
set.verifymailAuthKey = ps.verifymailAuthKey;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (ps.enableTruemailApi !== undefined) {
|
||||||
|
set.enableTruemailApi = ps.enableTruemailApi;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (ps.truemailInstance !== undefined) {
|
||||||
|
if (ps.truemailInstance === '') {
|
||||||
|
set.truemailInstance = null;
|
||||||
|
} else {
|
||||||
|
set.truemailInstance = ps.truemailInstance;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (ps.truemailAuthKey !== undefined) {
|
||||||
|
if (ps.truemailAuthKey === '') {
|
||||||
|
set.truemailAuthKey = null;
|
||||||
|
} else {
|
||||||
|
set.truemailAuthKey = ps.truemailAuthKey;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (ps.enableChartsForRemoteUser !== undefined) {
|
if (ps.enableChartsForRemoteUser !== undefined) {
|
||||||
set.enableChartsForRemoteUser = ps.enableChartsForRemoteUser;
|
set.enableChartsForRemoteUser = ps.enableChartsForRemoteUser;
|
||||||
|
|
|
@ -4,7 +4,7 @@
|
||||||
*/
|
*/
|
||||||
|
|
||||||
import { Inject, Injectable } from '@nestjs/common';
|
import { Inject, Injectable } from '@nestjs/common';
|
||||||
import { summaly } from 'summaly';
|
import { summaly } from '@misskey-dev/summaly';
|
||||||
import { DI } from '@/di-symbols.js';
|
import { DI } from '@/di-symbols.js';
|
||||||
import type { Config } from '@/config.js';
|
import type { Config } from '@/config.js';
|
||||||
import { MetaService } from '@/core/MetaService.js';
|
import { MetaService } from '@/core/MetaService.js';
|
||||||
|
|
|
@ -19,6 +19,7 @@
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@discordapp/twemoji": "15.0.2",
|
"@discordapp/twemoji": "15.0.2",
|
||||||
"@github/webauthn-json": "2.1.1",
|
"@github/webauthn-json": "2.1.1",
|
||||||
|
"@misskey-dev/browser-image-resizer": "2.2.1-misskey.10",
|
||||||
"@rollup/plugin-json": "6.1.0",
|
"@rollup/plugin-json": "6.1.0",
|
||||||
"@rollup/plugin-replace": "5.0.5",
|
"@rollup/plugin-replace": "5.0.5",
|
||||||
"@rollup/pluginutils": "5.1.0",
|
"@rollup/pluginutils": "5.1.0",
|
||||||
|
@ -30,7 +31,6 @@
|
||||||
"aiscript-vscode": "github:aiscript-dev/aiscript-vscode#v0.0.6",
|
"aiscript-vscode": "github:aiscript-dev/aiscript-vscode#v0.0.6",
|
||||||
"astring": "1.8.6",
|
"astring": "1.8.6",
|
||||||
"broadcast-channel": "7.0.0",
|
"broadcast-channel": "7.0.0",
|
||||||
"browser-image-resizer": "github:misskey-dev/browser-image-resizer#v2.2.1-misskey.3",
|
|
||||||
"buraha": "0.0.1",
|
"buraha": "0.0.1",
|
||||||
"canvas-confetti": "1.6.1",
|
"canvas-confetti": "1.6.1",
|
||||||
"chart.js": "4.4.1",
|
"chart.js": "4.4.1",
|
||||||
|
@ -74,6 +74,7 @@
|
||||||
"vuedraggable": "next"
|
"vuedraggable": "next"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
|
"@misskey-dev/summaly": "^5.0.3",
|
||||||
"@storybook/addon-actions": "7.6.5",
|
"@storybook/addon-actions": "7.6.5",
|
||||||
"@storybook/addon-essentials": "7.6.5",
|
"@storybook/addon-essentials": "7.6.5",
|
||||||
"@storybook/addon-interactions": "7.6.5",
|
"@storybook/addon-interactions": "7.6.5",
|
||||||
|
@ -127,7 +128,6 @@
|
||||||
"start-server-and-test": "2.0.3",
|
"start-server-and-test": "2.0.3",
|
||||||
"storybook": "7.6.5",
|
"storybook": "7.6.5",
|
||||||
"storybook-addon-misskey-theme": "github:misskey-dev/storybook-addon-misskey-theme",
|
"storybook-addon-misskey-theme": "github:misskey-dev/storybook-addon-misskey-theme",
|
||||||
"summaly": "github:misskey-dev/summaly",
|
|
||||||
"vite-plugin-turbosnap": "1.0.3",
|
"vite-plugin-turbosnap": "1.0.3",
|
||||||
"vitest": "0.34.6",
|
"vitest": "0.34.6",
|
||||||
"vitest-fetch-mock": "0.2.2",
|
"vitest-fetch-mock": "0.2.2",
|
||||||
|
|
|
@ -752,7 +752,17 @@ async function post(ev?: MouseEvent) {
|
||||||
|
|
||||||
if (withHashtags.value && hashtags.value && hashtags.value.trim() !== '') {
|
if (withHashtags.value && hashtags.value && hashtags.value.trim() !== '') {
|
||||||
const hashtags_ = hashtags.value.trim().split(' ').map(x => x.startsWith('#') ? x : '#' + x).join(' ');
|
const hashtags_ = hashtags.value.trim().split(' ').map(x => x.startsWith('#') ? x : '#' + x).join(' ');
|
||||||
postData.text = postData.text ? `${postData.text} ${hashtags_}` : hashtags_;
|
if (!postData.text) {
|
||||||
|
postData.text = hashtags_;
|
||||||
|
} else {
|
||||||
|
const postTextLines = postData.text.split('\n');
|
||||||
|
if (postTextLines[postTextLines.length - 1].trim() === '') {
|
||||||
|
postTextLines[postTextLines.length - 1] += hashtags_;
|
||||||
|
} else {
|
||||||
|
postTextLines[postTextLines.length - 1] += ' ' + hashtags_;
|
||||||
|
}
|
||||||
|
postData.text = postTextLines.join('\n');
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// plugin
|
// plugin
|
||||||
|
|
|
@ -84,7 +84,7 @@ SPDX-License-Identifier: AGPL-3.0-only
|
||||||
|
|
||||||
<script lang="ts" setup>
|
<script lang="ts" setup>
|
||||||
import { defineAsyncComponent, onUnmounted, ref } from 'vue';
|
import { defineAsyncComponent, onUnmounted, ref } from 'vue';
|
||||||
import type { summaly } from 'summaly';
|
import type { summaly } from '@misskey-dev/summaly';
|
||||||
import { url as local } from '@/config.js';
|
import { url as local } from '@/config.js';
|
||||||
import { i18n } from '@/i18n.js';
|
import { i18n } from '@/i18n.js';
|
||||||
import * as os from '@/os.js';
|
import * as os from '@/os.js';
|
||||||
|
|
|
@ -80,6 +80,17 @@ SPDX-License-Identifier: AGPL-3.0-only
|
||||||
<template #prefix><i class="ti ti-key"></i></template>
|
<template #prefix><i class="ti ti-key"></i></template>
|
||||||
<template #label>Verifymail.io API Auth Key</template>
|
<template #label>Verifymail.io API Auth Key</template>
|
||||||
</MkInput>
|
</MkInput>
|
||||||
|
<MkSwitch v-model="enableTruemailApi" @update:modelValue="save">
|
||||||
|
<template #label>Use TrueMail API</template>
|
||||||
|
</MkSwitch>
|
||||||
|
<MkInput v-model="truemailInstance" @update:modelValue="save">
|
||||||
|
<template #prefix><i class="ti ti-key"></i></template>
|
||||||
|
<template #label>TrueMail API Instance</template>
|
||||||
|
</MkInput>
|
||||||
|
<MkInput v-model="truemailAuthKey" @update:modelValue="save">
|
||||||
|
<template #prefix><i class="ti ti-key"></i></template>
|
||||||
|
<template #label>TrueMail API Auth Key</template>
|
||||||
|
</MkInput>
|
||||||
</div>
|
</div>
|
||||||
</MkFolder>
|
</MkFolder>
|
||||||
|
|
||||||
|
@ -153,6 +164,9 @@ const enableIpLogging = ref<boolean>(false);
|
||||||
const enableActiveEmailValidation = ref<boolean>(false);
|
const enableActiveEmailValidation = ref<boolean>(false);
|
||||||
const enableVerifymailApi = ref<boolean>(false);
|
const enableVerifymailApi = ref<boolean>(false);
|
||||||
const verifymailAuthKey = ref<string | null>(null);
|
const verifymailAuthKey = ref<string | null>(null);
|
||||||
|
const enableTruemailApi = ref<boolean>(false);
|
||||||
|
const truemailInstance = ref<string | null>(null);
|
||||||
|
const truemailAuthKey = ref<string | null>(null);
|
||||||
const bannedEmailDomains = ref<string>('');
|
const bannedEmailDomains = ref<string>('');
|
||||||
|
|
||||||
async function init() {
|
async function init() {
|
||||||
|
@ -194,6 +208,9 @@ function save() {
|
||||||
enableActiveEmailValidation: enableActiveEmailValidation.value,
|
enableActiveEmailValidation: enableActiveEmailValidation.value,
|
||||||
enableVerifymailApi: enableVerifymailApi.value,
|
enableVerifymailApi: enableVerifymailApi.value,
|
||||||
verifymailAuthKey: verifymailAuthKey.value,
|
verifymailAuthKey: verifymailAuthKey.value,
|
||||||
|
enableTruemailApi: enableTruemailApi.value,
|
||||||
|
truemailInstance: truemailInstance.value,
|
||||||
|
truemailAuthKey: truemailAuthKey.value,
|
||||||
bannedEmailDomains: bannedEmailDomains.value.split('\n'),
|
bannedEmailDomains: bannedEmailDomains.value.split('\n'),
|
||||||
}).then(() => {
|
}).then(() => {
|
||||||
fetchInstance();
|
fetchInstance();
|
||||||
|
|
|
@ -168,7 +168,7 @@ export class Storage<T extends StateDef> {
|
||||||
this.reactiveState[key].value = this.state[key] = rawValue;
|
this.reactiveState[key].value = this.state[key] = rawValue;
|
||||||
|
|
||||||
return this.addIdbSetJob(async () => {
|
return this.addIdbSetJob(async () => {
|
||||||
if (_DEV_) console.log(`set ${key} start`);
|
if (_DEV_) console.log(`set ${String(key)} start`);
|
||||||
switch (this.def[key].where) {
|
switch (this.def[key].where) {
|
||||||
case 'device': {
|
case 'device': {
|
||||||
this.pizzaxChannel.postMessage({
|
this.pizzaxChannel.postMessage({
|
||||||
|
@ -207,7 +207,7 @@ export class Storage<T extends StateDef> {
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (_DEV_) console.log(`set ${key} complete`);
|
if (_DEV_) console.log(`set ${String(key)} complete`);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -5,7 +5,7 @@
|
||||||
|
|
||||||
import { reactive, ref } from 'vue';
|
import { reactive, ref } from 'vue';
|
||||||
import * as Misskey from 'misskey-js';
|
import * as Misskey from 'misskey-js';
|
||||||
import { readAndCompressImage } from 'browser-image-resizer';
|
import { readAndCompressImage } from '@misskey-dev/browser-image-resizer';
|
||||||
import { getCompressionConfig } from './upload/compress-config.js';
|
import { getCompressionConfig } from './upload/compress-config.js';
|
||||||
import { defaultStore } from '@/store.js';
|
import { defaultStore } from '@/store.js';
|
||||||
import { apiUrl } from '@/config.js';
|
import { apiUrl } from '@/config.js';
|
||||||
|
|
|
@ -5,7 +5,7 @@
|
||||||
|
|
||||||
import isAnimated from 'is-file-animated';
|
import isAnimated from 'is-file-animated';
|
||||||
import { isWebpSupported } from './isWebpSupported.js';
|
import { isWebpSupported } from './isWebpSupported.js';
|
||||||
import type { BrowserImageResizerConfig } from 'browser-image-resizer';
|
import type { BrowserImageResizerConfigWithConvertedOutput } from '@misskey-dev/browser-image-resizer';
|
||||||
|
|
||||||
const compressTypeMap = {
|
const compressTypeMap = {
|
||||||
'image/jpeg': { quality: 0.90, mimeType: 'image/webp' },
|
'image/jpeg': { quality: 0.90, mimeType: 'image/webp' },
|
||||||
|
@ -21,7 +21,7 @@ const compressTypeMapFallback = {
|
||||||
'image/svg+xml': { quality: 1, mimeType: 'image/png' },
|
'image/svg+xml': { quality: 1, mimeType: 'image/png' },
|
||||||
} as const;
|
} as const;
|
||||||
|
|
||||||
export async function getCompressionConfig(file: File): Promise<BrowserImageResizerConfig | undefined> {
|
export async function getCompressionConfig(file: File): Promise<BrowserImageResizerConfigWithConvertedOutput | undefined> {
|
||||||
const imgConfig = (isWebpSupported() ? compressTypeMap : compressTypeMapFallback)[file.type];
|
const imgConfig = (isWebpSupported() ? compressTypeMap : compressTypeMapFallback)[file.type];
|
||||||
if (!imgConfig || await isAnimated(file)) {
|
if (!imgConfig || await isAnimated(file)) {
|
||||||
return;
|
return;
|
||||||
|
|
|
@ -6,7 +6,7 @@
|
||||||
import { describe, test, assert, afterEach } from 'vitest';
|
import { describe, test, assert, afterEach } from 'vitest';
|
||||||
import { render, cleanup, type RenderResult } from '@testing-library/vue';
|
import { render, cleanup, type RenderResult } from '@testing-library/vue';
|
||||||
import './init';
|
import './init';
|
||||||
import type { summaly } from 'summaly';
|
import type { summaly } from '@misskey-dev/summaly';
|
||||||
import { components } from '@/components/index.js';
|
import { components } from '@/components/index.js';
|
||||||
import { directives } from '@/directives/index.js';
|
import { directives } from '@/directives/index.js';
|
||||||
import MkUrlPreview from '@/components/MkUrlPreview.vue';
|
import MkUrlPreview from '@/components/MkUrlPreview.vue';
|
||||||
|
|
130
pnpm-lock.yaml
130
pnpm-lock.yaml
|
@ -101,6 +101,12 @@ importers:
|
||||||
'@fastify/view':
|
'@fastify/view':
|
||||||
specifier: 8.2.0
|
specifier: 8.2.0
|
||||||
version: 8.2.0
|
version: 8.2.0
|
||||||
|
'@misskey-dev/sharp-read-bmp':
|
||||||
|
specifier: ^1.1.1
|
||||||
|
version: 1.1.1
|
||||||
|
'@misskey-dev/summaly':
|
||||||
|
specifier: ^5.0.3
|
||||||
|
version: 5.0.3
|
||||||
'@nestjs/common':
|
'@nestjs/common':
|
||||||
specifier: 10.2.10
|
specifier: 10.2.10
|
||||||
version: 10.2.10(reflect-metadata@0.1.14)(rxjs@7.8.1)
|
version: 10.2.10(reflect-metadata@0.1.14)(rxjs@7.8.1)
|
||||||
|
@ -350,9 +356,6 @@ importers:
|
||||||
sharp:
|
sharp:
|
||||||
specifier: 0.32.6
|
specifier: 0.32.6
|
||||||
version: 0.32.6
|
version: 0.32.6
|
||||||
sharp-read-bmp:
|
|
||||||
specifier: github:misskey-dev/sharp-read-bmp
|
|
||||||
version: github.com/misskey-dev/sharp-read-bmp/02d9dc189fa7df0c4bea09330be26741772dac01
|
|
||||||
slacc:
|
slacc:
|
||||||
specifier: 0.0.10
|
specifier: 0.0.10
|
||||||
version: 0.0.10
|
version: 0.0.10
|
||||||
|
@ -362,9 +365,6 @@ importers:
|
||||||
stringz:
|
stringz:
|
||||||
specifier: 2.1.0
|
specifier: 2.1.0
|
||||||
version: 2.1.0
|
version: 2.1.0
|
||||||
summaly:
|
|
||||||
specifier: github:misskey-dev/summaly
|
|
||||||
version: github.com/misskey-dev/summaly/d2a3e07205c3c9769bc5a7b42031c8884b5a25c8
|
|
||||||
systeminformation:
|
systeminformation:
|
||||||
specifier: 5.21.20
|
specifier: 5.21.20
|
||||||
version: 5.21.20
|
version: 5.21.20
|
||||||
|
@ -658,6 +658,9 @@ importers:
|
||||||
'@github/webauthn-json':
|
'@github/webauthn-json':
|
||||||
specifier: 2.1.1
|
specifier: 2.1.1
|
||||||
version: 2.1.1
|
version: 2.1.1
|
||||||
|
'@misskey-dev/browser-image-resizer':
|
||||||
|
specifier: 2.2.1-misskey.10
|
||||||
|
version: 2.2.1-misskey.10
|
||||||
'@rollup/plugin-json':
|
'@rollup/plugin-json':
|
||||||
specifier: 6.1.0
|
specifier: 6.1.0
|
||||||
version: 6.1.0(rollup@4.9.1)
|
version: 6.1.0(rollup@4.9.1)
|
||||||
|
@ -691,9 +694,6 @@ importers:
|
||||||
broadcast-channel:
|
broadcast-channel:
|
||||||
specifier: 7.0.0
|
specifier: 7.0.0
|
||||||
version: 7.0.0
|
version: 7.0.0
|
||||||
browser-image-resizer:
|
|
||||||
specifier: github:misskey-dev/browser-image-resizer#v2.2.1-misskey.3
|
|
||||||
version: github.com/misskey-dev/browser-image-resizer/0227e860621e55cbed0aabe6dc601096a7748c4a
|
|
||||||
buraha:
|
buraha:
|
||||||
specifier: 0.0.1
|
specifier: 0.0.1
|
||||||
version: 0.0.1
|
version: 0.0.1
|
||||||
|
@ -818,6 +818,9 @@ importers:
|
||||||
specifier: next
|
specifier: next
|
||||||
version: 4.1.0(vue@3.3.12)
|
version: 4.1.0(vue@3.3.12)
|
||||||
devDependencies:
|
devDependencies:
|
||||||
|
'@misskey-dev/summaly':
|
||||||
|
specifier: ^5.0.3
|
||||||
|
version: 5.0.3
|
||||||
'@storybook/addon-actions':
|
'@storybook/addon-actions':
|
||||||
specifier: 7.6.5
|
specifier: 7.6.5
|
||||||
version: 7.6.5
|
version: 7.6.5
|
||||||
|
@ -977,9 +980,6 @@ importers:
|
||||||
storybook-addon-misskey-theme:
|
storybook-addon-misskey-theme:
|
||||||
specifier: github:misskey-dev/storybook-addon-misskey-theme
|
specifier: github:misskey-dev/storybook-addon-misskey-theme
|
||||||
version: github.com/misskey-dev/storybook-addon-misskey-theme/cf583db098365b2ccc81a82f63ca9c93bc32b640(@storybook/blocks@7.6.5)(@storybook/components@7.6.5)(@storybook/core-events@7.6.5)(@storybook/manager-api@7.6.5)(@storybook/preview-api@7.6.5)(@storybook/theming@7.6.5)(@storybook/types@7.6.5)(react-dom@18.2.0)(react@18.2.0)
|
version: github.com/misskey-dev/storybook-addon-misskey-theme/cf583db098365b2ccc81a82f63ca9c93bc32b640(@storybook/blocks@7.6.5)(@storybook/components@7.6.5)(@storybook/core-events@7.6.5)(@storybook/manager-api@7.6.5)(@storybook/preview-api@7.6.5)(@storybook/theming@7.6.5)(@storybook/types@7.6.5)(react-dom@18.2.0)(react@18.2.0)
|
||||||
summaly:
|
|
||||||
specifier: github:misskey-dev/summaly
|
|
||||||
version: github.com/misskey-dev/summaly/d2a3e07205c3c9769bc5a7b42031c8884b5a25c8
|
|
||||||
vite-plugin-turbosnap:
|
vite-plugin-turbosnap:
|
||||||
specifier: 1.0.3
|
specifier: 1.0.3
|
||||||
version: 1.0.3
|
version: 1.0.3
|
||||||
|
@ -4935,6 +4935,30 @@ packages:
|
||||||
resolution: {integrity: sha512-9b8mPpKrfeGRuhFH5iO1iwCLeIIsV6+H1sRfxbkoGXIyQE2BTsPd9zqSqQJ+pv5sJ/hT5M1zvOFL02MnEezFug==}
|
resolution: {integrity: sha512-9b8mPpKrfeGRuhFH5iO1iwCLeIIsV6+H1sRfxbkoGXIyQE2BTsPd9zqSqQJ+pv5sJ/hT5M1zvOFL02MnEezFug==}
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
|
/@misskey-dev/browser-image-resizer@2.2.1-misskey.10:
|
||||||
|
resolution: {integrity: sha512-Spjiwa8brffhz4FiYrZ8VoPRyPPRzcdaIzLVb8oMnD9YGU3uzcX/CcZ08okFhrUR/N6IlQM86r5dNH/yY5Uyjg==}
|
||||||
|
dev: false
|
||||||
|
|
||||||
|
/@misskey-dev/sharp-read-bmp@1.1.1:
|
||||||
|
resolution: {integrity: sha512-X52BQYL/I9mafypQ+wBhst+BUlYiPWnHhKGcF6ybcYSLl+zhcV0q5mezIXHozhM0Sv0A7xCdrWmR7TCNxHLrtQ==}
|
||||||
|
dependencies:
|
||||||
|
decode-bmp: 0.2.1
|
||||||
|
decode-ico: 0.4.1
|
||||||
|
sharp: 0.32.6
|
||||||
|
dev: false
|
||||||
|
|
||||||
|
/@misskey-dev/summaly@5.0.3:
|
||||||
|
resolution: {integrity: sha512-jVkuLEDrq2FaeHL8VY51LTqB6j0Jv5L7s0nmKGKMnE0jPBpSj6flswnZgntGmz5mbdCj47utEqu8FY43kH7PVg==}
|
||||||
|
dependencies:
|
||||||
|
cheerio: 1.0.0-rc.12
|
||||||
|
escape-regexp: 0.0.1
|
||||||
|
got: 12.6.1
|
||||||
|
html-entities: 2.3.2
|
||||||
|
iconv-lite: 0.6.3
|
||||||
|
jschardet: 3.0.0
|
||||||
|
private-ip: 2.3.3
|
||||||
|
trace-redirect: 1.0.6
|
||||||
|
|
||||||
/@mole-inc/bin-wrapper@8.0.1:
|
/@mole-inc/bin-wrapper@8.0.1:
|
||||||
resolution: {integrity: sha512-sTGoeZnjI8N4KS+sW2AN95gDBErhAguvkw/tWdCjeM8bvxpz5lqrnd0vOJABA1A+Ic3zED7PYoLP/RANLgVotA==}
|
resolution: {integrity: sha512-sTGoeZnjI8N4KS+sW2AN95gDBErhAguvkw/tWdCjeM8bvxpz5lqrnd0vOJABA1A+Ic3zED7PYoLP/RANLgVotA==}
|
||||||
engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
|
engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
|
||||||
|
@ -8002,10 +8026,10 @@ packages:
|
||||||
|
|
||||||
/@types/http-cache-semantics@4.0.1:
|
/@types/http-cache-semantics@4.0.1:
|
||||||
resolution: {integrity: sha512-SZs7ekbP8CN0txVG2xVRH6EgKmEm31BOxA07vkFaETzZz1xh+cbt8BcI0slpymvwhx5dlFnQG2rTlPVQn+iRPQ==}
|
resolution: {integrity: sha512-SZs7ekbP8CN0txVG2xVRH6EgKmEm31BOxA07vkFaETzZz1xh+cbt8BcI0slpymvwhx5dlFnQG2rTlPVQn+iRPQ==}
|
||||||
|
dev: false
|
||||||
|
|
||||||
/@types/http-cache-semantics@4.0.4:
|
/@types/http-cache-semantics@4.0.4:
|
||||||
resolution: {integrity: sha512-1m0bIFVc7eJWyve9S0RnuRgcQqF/Xd5QsUZAZeQFr1Q3/p9JWoQQEqmVy+DPTNpGXwhgIetAoYF8JSc33q29QA==}
|
resolution: {integrity: sha512-1m0bIFVc7eJWyve9S0RnuRgcQqF/Xd5QsUZAZeQFr1Q3/p9JWoQQEqmVy+DPTNpGXwhgIetAoYF8JSc33q29QA==}
|
||||||
dev: false
|
|
||||||
|
|
||||||
/@types/http-link-header@1.0.5:
|
/@types/http-link-header@1.0.5:
|
||||||
resolution: {integrity: sha512-AxhIKR8UbyoqCTNp9rRepkktHuUOw3DjfOfDCaO9kwI8AYzjhxyrvZq4+mRw/2daD3hYDknrtSeV6SsPwmc71w==}
|
resolution: {integrity: sha512-AxhIKR8UbyoqCTNp9rRepkktHuUOw3DjfOfDCaO9kwI8AYzjhxyrvZq4+mRw/2daD3hYDknrtSeV6SsPwmc71w==}
|
||||||
|
@ -9918,19 +9942,6 @@ packages:
|
||||||
mimic-response: 4.0.0
|
mimic-response: 4.0.0
|
||||||
normalize-url: 8.0.0
|
normalize-url: 8.0.0
|
||||||
responselike: 3.0.0
|
responselike: 3.0.0
|
||||||
dev: false
|
|
||||||
|
|
||||||
/cacheable-request@10.2.8:
|
|
||||||
resolution: {integrity: sha512-IDVO5MJ4LItE6HKFQTqT2ocAQsisOoCTUDu1ddCmnhyiwFQjXNPp4081Xj23N4tO+AFEFNzGuNEf/c8Gwwt15A==}
|
|
||||||
engines: {node: '>=14.16'}
|
|
||||||
dependencies:
|
|
||||||
'@types/http-cache-semantics': 4.0.1
|
|
||||||
get-stream: 6.0.1
|
|
||||||
http-cache-semantics: 4.1.1
|
|
||||||
keyv: 4.5.2
|
|
||||||
mimic-response: 4.0.0
|
|
||||||
normalize-url: 8.0.0
|
|
||||||
responselike: 3.0.0
|
|
||||||
|
|
||||||
/cacheable-request@7.0.2:
|
/cacheable-request@7.0.2:
|
||||||
resolution: {integrity: sha512-pouW8/FmiPQbuGpkXQ9BAPv/Mo5xDGANgSNXzTzJ8DrKGuXOssM4wIQRjfanNRh3Yu5cfYPvcorqbhg2KIJtew==}
|
resolution: {integrity: sha512-pouW8/FmiPQbuGpkXQ9BAPv/Mo5xDGANgSNXzTzJ8DrKGuXOssM4wIQRjfanNRh3Yu5cfYPvcorqbhg2KIJtew==}
|
||||||
|
@ -12807,18 +12818,18 @@ packages:
|
||||||
responselike: 2.0.1
|
responselike: 2.0.1
|
||||||
dev: false
|
dev: false
|
||||||
|
|
||||||
/got@12.6.0:
|
/got@12.6.1:
|
||||||
resolution: {integrity: sha512-WTcaQ963xV97MN3x0/CbAriXFZcXCfgxVp91I+Ze6pawQOa7SgzwSx2zIJJsX+kTajMnVs0xcFD1TxZKFqhdnQ==}
|
resolution: {integrity: sha512-mThBblvlAF1d4O5oqyvN+ZxLAYwIJK7bpMxgYqPD9okW0C3qm5FFn7k811QrcuEBwaogR3ngOFoCfs6mRv7teQ==}
|
||||||
engines: {node: '>=14.16'}
|
engines: {node: '>=14.16'}
|
||||||
dependencies:
|
dependencies:
|
||||||
'@sindresorhus/is': 5.3.0
|
'@sindresorhus/is': 5.3.0
|
||||||
'@szmarczak/http-timer': 5.0.1
|
'@szmarczak/http-timer': 5.0.1
|
||||||
cacheable-lookup: 7.0.0
|
cacheable-lookup: 7.0.0
|
||||||
cacheable-request: 10.2.8
|
cacheable-request: 10.2.14
|
||||||
decompress-response: 6.0.0
|
decompress-response: 6.0.0
|
||||||
form-data-encoder: 2.1.4
|
form-data-encoder: 2.1.4
|
||||||
get-stream: 6.0.1
|
get-stream: 6.0.1
|
||||||
http2-wrapper: 2.2.0
|
http2-wrapper: 2.2.1
|
||||||
lowercase-keys: 3.0.0
|
lowercase-keys: 3.0.0
|
||||||
p-cancelable: 3.0.0
|
p-cancelable: 3.0.0
|
||||||
responselike: 3.0.0
|
responselike: 3.0.0
|
||||||
|
@ -13089,20 +13100,12 @@ packages:
|
||||||
resolve-alpn: 1.2.1
|
resolve-alpn: 1.2.1
|
||||||
dev: false
|
dev: false
|
||||||
|
|
||||||
/http2-wrapper@2.2.0:
|
|
||||||
resolution: {integrity: sha512-kZB0wxMo0sh1PehyjJUWRFEd99KC5TLjZ2cULC4f9iqJBAmKQQXEICjxl5iPJRwP40dpeHFqqhm7tYCvODpqpQ==}
|
|
||||||
engines: {node: '>=10.19.0'}
|
|
||||||
dependencies:
|
|
||||||
quick-lru: 5.1.1
|
|
||||||
resolve-alpn: 1.2.1
|
|
||||||
|
|
||||||
/http2-wrapper@2.2.1:
|
/http2-wrapper@2.2.1:
|
||||||
resolution: {integrity: sha512-V5nVw1PAOgfI3Lmeaj2Exmeg7fenjhRUgz1lPSezy1CuhPYbgQtbQj4jZfEAEMlaL+vupsvhjqCyjzob0yxsmQ==}
|
resolution: {integrity: sha512-V5nVw1PAOgfI3Lmeaj2Exmeg7fenjhRUgz1lPSezy1CuhPYbgQtbQj4jZfEAEMlaL+vupsvhjqCyjzob0yxsmQ==}
|
||||||
engines: {node: '>=10.19.0'}
|
engines: {node: '>=10.19.0'}
|
||||||
dependencies:
|
dependencies:
|
||||||
quick-lru: 5.1.1
|
quick-lru: 5.1.1
|
||||||
resolve-alpn: 1.2.1
|
resolve-alpn: 1.2.1
|
||||||
dev: false
|
|
||||||
|
|
||||||
/http_ece@1.1.0:
|
/http_ece@1.1.0:
|
||||||
resolution: {integrity: sha512-bptAfCDdPJxOs5zYSe7Y3lpr772s1G346R4Td5LgRUeCwIGpCGDUTJxRrhTNcAXbx37spge0kWEIH7QAYWNTlA==}
|
resolution: {integrity: sha512-bptAfCDdPJxOs5zYSe7Y3lpr772s1G346R4Td5LgRUeCwIGpCGDUTJxRrhTNcAXbx37spge0kWEIH7QAYWNTlA==}
|
||||||
|
@ -14553,12 +14556,12 @@ packages:
|
||||||
resolution: {integrity: sha512-5MHbFaKn8cNSmVW7BYnijeAVlE4cYA/SVkifVgrh7yotnfhKmjuXpDKjrABLnT0SfHWV21P8ow07OGfRrNDg8g==}
|
resolution: {integrity: sha512-5MHbFaKn8cNSmVW7BYnijeAVlE4cYA/SVkifVgrh7yotnfhKmjuXpDKjrABLnT0SfHWV21P8ow07OGfRrNDg8g==}
|
||||||
dependencies:
|
dependencies:
|
||||||
json-buffer: 3.0.1
|
json-buffer: 3.0.1
|
||||||
|
dev: false
|
||||||
|
|
||||||
/keyv@4.5.4:
|
/keyv@4.5.4:
|
||||||
resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==}
|
resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==}
|
||||||
dependencies:
|
dependencies:
|
||||||
json-buffer: 3.0.1
|
json-buffer: 3.0.1
|
||||||
dev: false
|
|
||||||
|
|
||||||
/kind-of@6.0.3:
|
/kind-of@6.0.3:
|
||||||
resolution: {integrity: sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==}
|
resolution: {integrity: sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==}
|
||||||
|
@ -15432,10 +15435,6 @@ packages:
|
||||||
resolution: {integrity: sha512-AGK2yQKIjRuqnc6VkX2Xj5d+QW8xZ87pa1UK6yA6ouUyuxfHuMP6umE5QK7UmTeOAymo+Zx1Fxiuw9rVx8taHQ==}
|
resolution: {integrity: sha512-AGK2yQKIjRuqnc6VkX2Xj5d+QW8xZ87pa1UK6yA6ouUyuxfHuMP6umE5QK7UmTeOAymo+Zx1Fxiuw9rVx8taHQ==}
|
||||||
dev: false
|
dev: false
|
||||||
|
|
||||||
/node-addon-api@5.0.0:
|
|
||||||
resolution: {integrity: sha512-CvkDw2OEnme7ybCykJpVcKH+uAOLV2qLqiyla128dN9TkEWfrYmxG6C2boDe5KcNQqZF3orkqzGgOMvZ/JNekA==}
|
|
||||||
dev: false
|
|
||||||
|
|
||||||
/node-addon-api@6.1.0:
|
/node-addon-api@6.1.0:
|
||||||
resolution: {integrity: sha512-+eawOlIgy680F0kBzPUNFhMZGtJ1YmqM6l4+Crf4IkImjYrO/mqPwRMh352g23uIaQKFItcQ64I7KMaJxHgAVA==}
|
resolution: {integrity: sha512-+eawOlIgy680F0kBzPUNFhMZGtJ1YmqM6l4+Crf4IkImjYrO/mqPwRMh352g23uIaQKFItcQ64I7KMaJxHgAVA==}
|
||||||
|
|
||||||
|
@ -17919,21 +17918,6 @@ packages:
|
||||||
kind-of: 6.0.3
|
kind-of: 6.0.3
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
/sharp@0.31.3:
|
|
||||||
resolution: {integrity: sha512-XcR4+FCLBFKw1bdB+GEhnUNXNXvnt0tDo4WsBsraKymuo/IAuPuCBVAL2wIkUw2r/dwFW5Q5+g66Kwl2dgDFVg==}
|
|
||||||
engines: {node: '>=14.15.0'}
|
|
||||||
requiresBuild: true
|
|
||||||
dependencies:
|
|
||||||
color: 4.2.3
|
|
||||||
detect-libc: 2.0.2
|
|
||||||
node-addon-api: 5.0.0
|
|
||||||
prebuild-install: 7.1.1
|
|
||||||
semver: 7.5.4
|
|
||||||
simple-get: 4.0.1
|
|
||||||
tar-fs: 2.1.1
|
|
||||||
tunnel-agent: 0.6.0
|
|
||||||
dev: false
|
|
||||||
|
|
||||||
/sharp@0.32.6:
|
/sharp@0.32.6:
|
||||||
resolution: {integrity: sha512-KyLTWwgcR9Oe4d9HwCwNM2l7+J0dUQwn/yf7S0EnTtb0eVS4RxO0eUSvxPtzT4F3SY+C4K6fqdv/DO27sJ/v/w==}
|
resolution: {integrity: sha512-KyLTWwgcR9Oe4d9HwCwNM2l7+J0dUQwn/yf7S0EnTtb0eVS4RxO0eUSvxPtzT4F3SY+C4K6fqdv/DO27sJ/v/w==}
|
||||||
engines: {node: '>=14.15.0'}
|
engines: {node: '>=14.15.0'}
|
||||||
|
@ -20317,22 +20301,6 @@ packages:
|
||||||
engines: {vscode: ^1.83.0}
|
engines: {vscode: ^1.83.0}
|
||||||
dev: false
|
dev: false
|
||||||
|
|
||||||
github.com/misskey-dev/browser-image-resizer/0227e860621e55cbed0aabe6dc601096a7748c4a:
|
|
||||||
resolution: {tarball: https://codeload.github.com/misskey-dev/browser-image-resizer/tar.gz/0227e860621e55cbed0aabe6dc601096a7748c4a}
|
|
||||||
name: browser-image-resizer
|
|
||||||
version: 2.2.1-misskey.3
|
|
||||||
dev: false
|
|
||||||
|
|
||||||
github.com/misskey-dev/sharp-read-bmp/02d9dc189fa7df0c4bea09330be26741772dac01:
|
|
||||||
resolution: {tarball: https://codeload.github.com/misskey-dev/sharp-read-bmp/tar.gz/02d9dc189fa7df0c4bea09330be26741772dac01}
|
|
||||||
name: sharp-read-bmp
|
|
||||||
version: 1.0.0
|
|
||||||
dependencies:
|
|
||||||
decode-bmp: 0.2.1
|
|
||||||
decode-ico: 0.4.1
|
|
||||||
sharp: 0.31.3
|
|
||||||
dev: false
|
|
||||||
|
|
||||||
github.com/misskey-dev/storybook-addon-misskey-theme/cf583db098365b2ccc81a82f63ca9c93bc32b640(@storybook/blocks@7.6.5)(@storybook/components@7.6.5)(@storybook/core-events@7.6.5)(@storybook/manager-api@7.6.5)(@storybook/preview-api@7.6.5)(@storybook/theming@7.6.5)(@storybook/types@7.6.5)(react-dom@18.2.0)(react@18.2.0):
|
github.com/misskey-dev/storybook-addon-misskey-theme/cf583db098365b2ccc81a82f63ca9c93bc32b640(@storybook/blocks@7.6.5)(@storybook/components@7.6.5)(@storybook/core-events@7.6.5)(@storybook/manager-api@7.6.5)(@storybook/preview-api@7.6.5)(@storybook/theming@7.6.5)(@storybook/types@7.6.5)(react-dom@18.2.0)(react@18.2.0):
|
||||||
resolution: {tarball: https://codeload.github.com/misskey-dev/storybook-addon-misskey-theme/tar.gz/cf583db098365b2ccc81a82f63ca9c93bc32b640}
|
resolution: {tarball: https://codeload.github.com/misskey-dev/storybook-addon-misskey-theme/tar.gz/cf583db098365b2ccc81a82f63ca9c93bc32b640}
|
||||||
id: github.com/misskey-dev/storybook-addon-misskey-theme/cf583db098365b2ccc81a82f63ca9c93bc32b640
|
id: github.com/misskey-dev/storybook-addon-misskey-theme/cf583db098365b2ccc81a82f63ca9c93bc32b640
|
||||||
|
@ -20364,17 +20332,3 @@ packages:
|
||||||
react: 18.2.0
|
react: 18.2.0
|
||||||
react-dom: 18.2.0(react@18.2.0)
|
react-dom: 18.2.0(react@18.2.0)
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
github.com/misskey-dev/summaly/d2a3e07205c3c9769bc5a7b42031c8884b5a25c8:
|
|
||||||
resolution: {tarball: https://codeload.github.com/misskey-dev/summaly/tar.gz/d2a3e07205c3c9769bc5a7b42031c8884b5a25c8}
|
|
||||||
name: summaly
|
|
||||||
version: 4.0.2
|
|
||||||
dependencies:
|
|
||||||
cheerio: 1.0.0-rc.12
|
|
||||||
escape-regexp: 0.0.1
|
|
||||||
got: 12.6.0
|
|
||||||
html-entities: 2.3.2
|
|
||||||
iconv-lite: 0.6.3
|
|
||||||
jschardet: 3.0.0
|
|
||||||
private-ip: 2.3.3
|
|
||||||
trace-redirect: 1.0.6
|
|
||||||
|
|
Loading…
Reference in New Issue