update README.md

This commit is contained in:
mattyatea 2024-02-16 19:07:52 +09:00
parent 3e9b3e5a3a
commit e074d975e1
7 changed files with 130 additions and 50 deletions

View file

@ -150,6 +150,7 @@
"pkce-challenge": "4.1.0",
"probe-image-size": "7.2.3",
"promise-limit": "2.7.0",
"proxycheck-ts": "^0.0.9",
"pug": "3.0.2",
"punycode": "2.3.1",
"pureimage": "0.3.17",

View file

@ -611,4 +611,15 @@ export class MiMeta {
default: false,
})
public enableGDPRMode: boolean;
@Column('boolean', {
default: false,
})
public enableProxyCheckio: boolean;
@Column('varchar', {
length: 32,
nullable: true,
})
public proxyCheckioApiKey: string;
}

View file

@ -6,6 +6,7 @@
import { Inject, Injectable } from '@nestjs/common';
import bcrypt from 'bcryptjs';
import { IsNull } from 'typeorm';
import ProxyCheck from 'proxycheck-ts';
import { DI } from '@/di-symbols.js';
import type { RegistrationTicketsRepository, UsedUsernamesRepository, UserPendingsRepository, UserProfilesRepository, UsersRepository, MiRegistrationTicket } from '@/models/_.js';
import type { Config } from '@/config.js';
@ -74,6 +75,14 @@ export class SignupApiService {
const instance = await this.metaService.fetch(true);
if (instance.enableProxyCheckio) {
if (instance.proxyCheckioApiKey == null) throw new FastifyReplyError(400, 'PROXY_CHECKIO_API_KEY_NOT_SET');
const proxyCheck = new ProxyCheck({ api_key: instance.proxyCheckioApiKey });
const result = await proxyCheck.check(request.headers['x-real-ip'] ?? request.ip, {
vpn: 1,
});
if (result[request.headers['x-real-ip'] ?? request.ip].proxy === 'yes') throw new FastifyReplyError(400, 'PROXY_DETECTED');
}
// Verify *Captcha
// ただしテスト時はこの機構は障害となるため無効にする
if (process.env.NODE_ENV !== 'test') {

View file

@ -459,6 +459,14 @@ export const meta = {
type: 'string',
optional: false, nullable: true,
},
enableProxyCheckio: {
type: 'boolean',
optional: false, nullable: false,
},
proxyCheckioApiKey: {
type: 'string',
optional: false, nullable: true,
},
},
},
} as const;
@ -590,6 +598,8 @@ export default class extends Endpoint<typeof meta, typeof paramDef> { // eslint-
EmojiBotToken: instance.EmojiBotToken,
ApiBase: instance.ApiBase,
enableGDPRMode: instance.enableGDPRMode,
enableProxyCheckio: instance.enableProxyCheckio,
proxyCheckioApiKey: instance.proxyCheckioApiKey,
};
});
}

View file

@ -91,7 +91,7 @@ export const paramDef = {
},
},
summalyProxy: { type: 'string', nullable: true },
DiscordWebhookUrl:{ type: 'string', nullable: true},
DiscordWebhookUrl: { type: 'string', nullable: true },
deeplAuthKey: { type: 'string', nullable: true },
deeplIsPro: { type: 'boolean' },
enableEmail: { type: 'boolean' },
@ -152,9 +152,15 @@ export const paramDef = {
type: 'string',
},
},
EmojiBotToken:{ type: 'string', nullable: true},
ApiBase:{ type: 'string',nullable:true},
EmojiBotToken: { type: 'string', nullable: true },
ApiBase: { type: 'string', nullable: true },
enableGDPRMode: { type: 'boolean' },
enableProxyCheckio: {
type: 'boolean', nullable: true,
},
proxyCheckioApiKey: {
type: 'string', nullable: true,
},
},
required: [],
} as const;
@ -201,14 +207,14 @@ export default class extends Endpoint<typeof meta, typeof paramDef> { // eslint-
if (ps.themeColor !== undefined) {
set.themeColor = ps.themeColor;
}
if (ps.DiscordWebhookUrl !== undefined){
set.DiscordWebhookUrl = ps.DiscordWebhookUrl
if (ps.DiscordWebhookUrl !== undefined) {
set.DiscordWebhookUrl = ps.DiscordWebhookUrl;
}
if (ps.EmojiBotToken !== undefined){
set.EmojiBotToken = ps.EmojiBotToken
if (ps.EmojiBotToken !== undefined) {
set.EmojiBotToken = ps.EmojiBotToken;
}
if (ps.ApiBase !== undefined){
set.ApiBase = ps.ApiBase
if (ps.ApiBase !== undefined) {
set.ApiBase = ps.ApiBase;
}
if (ps.mascotImageUrl !== undefined) {
set.mascotImageUrl = ps.mascotImageUrl;
@ -234,10 +240,18 @@ export default class extends Endpoint<typeof meta, typeof paramDef> { // eslint-
set.serverErrorImageUrl = ps.serverErrorImageUrl;
}
if (ps.enableProxyCheckio !== undefined) {
set.enableProxyCheckio = ps.enableProxyCheckio;
}
if (ps.proxyCheckioApiKey !== undefined) {
set.proxyCheckioApiKey = ps.proxyCheckioApiKey;
}
if (ps.infoImageUrl !== undefined) {
set.infoImageUrl = ps.infoImageUrl;
}
console.log(ps.enableGDPRMode);
if (ps.enableGDPRMode !== undefined) {
set.enableGDPRMode = ps.enableGDPRMode;
}

View file

@ -103,6 +103,22 @@ SPDX-License-Identifier: AGPL-3.0-only
<MkTextarea v-model="bannedEmailDomains">
<template #label>Banned Email Domains List</template>
</MkTextarea>
<MkButton primary @click="save"><i class="ti ti-device-floppy"></i> {{ i18n.ts.save }}</MkButton>
</div>
</MkFolder>
<MkFolder>
<template #label> Signup Protection</template>
<div class="_gaps_m">
<MkSwitch v-model="enableProxyCheckio">
<template #label>Use ProxyCheck.io API</template>
</MkSwitch>
<MkInput v-model="proxyCheckioApiKey">
<template #prefix><i class="ti ti-key"></i></template>
<template #label>ProxyCheck.io API Key</template>
</MkInput>
<MkButton primary @click="save"><i class="ti ti-device-floppy"></i> {{ i18n.ts.save }}</MkButton>
</div>
</MkFolder>
@ -167,11 +183,13 @@ const enableSensitiveMediaDetectionForVideos = ref<boolean>(false);
const enableIpLogging = ref<boolean>(false);
const enableActiveEmailValidation = ref<boolean>(false);
const enableVerifymailApi = ref<boolean>(false);
const enableProxyCheckio = ref<boolean>(false);
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 proxyCheckioApiKey = ref<string | null>(null);
async function init() {
const meta = await misskeyApi('admin/meta');
@ -196,7 +214,9 @@ async function init() {
enableTruemailApi.value = meta.enableTruemailApi;
truemailInstance.value = meta.truemailInstance;
truemailAuthKey.value = meta.truemailAuthKey;
bannedEmailDomains.value = meta.bannedEmailDomains?.join('\n') || "";
bannedEmailDomains.value = meta.bannedEmailDomains?.join('\n') || '';
enableProxyCheckio.value = meta.enableProxyCheckio;
proxyCheckioApiKey.value = meta.proxyCheckioApiKey;
}
function save() {
@ -220,6 +240,8 @@ function save() {
truemailInstance: truemailInstance.value,
truemailAuthKey: truemailAuthKey.value,
bannedEmailDomains: bannedEmailDomains.value.split('\n'),
enableProxyCheckio: enableProxyCheckio.value,
proxyCheckioApiKey: proxyCheckioApiKey.value,
}).then(() => {
fetchInstance();
});

View file

@ -323,6 +323,9 @@ importers:
promise-limit:
specifier: 2.7.0
version: 2.7.0
proxycheck-ts:
specifier: ^0.0.9
version: 0.0.9
pug:
specifier: 3.0.2
version: 3.0.2
@ -1918,7 +1921,7 @@ packages:
'@babel/traverse': 7.22.11
'@babel/types': 7.22.17
convert-source-map: 1.9.0
debug: 4.3.4(supports-color@5.5.0)
debug: 4.3.4(supports-color@8.1.1)
gensync: 1.0.0-beta.2
json5: 2.2.3
semver: 6.3.1
@ -1941,7 +1944,7 @@ packages:
'@babel/traverse': 7.23.5
'@babel/types': 7.23.5
convert-source-map: 2.0.0
debug: 4.3.4(supports-color@5.5.0)
debug: 4.3.4(supports-color@8.1.1)
gensync: 1.0.0-beta.2
json5: 2.2.3
semver: 6.3.1
@ -2043,7 +2046,7 @@ packages:
'@babel/core': 7.23.5
'@babel/helper-compilation-targets': 7.22.15
'@babel/helper-plugin-utils': 7.22.5
debug: 4.3.4(supports-color@5.5.0)
debug: 4.3.4(supports-color@8.1.1)
lodash.debounce: 4.0.8
resolve: 1.22.8
transitivePeerDependencies:
@ -3442,7 +3445,7 @@ packages:
'@babel/helper-split-export-declaration': 7.22.6
'@babel/parser': 7.23.9
'@babel/types': 7.23.5
debug: 4.3.4(supports-color@5.5.0)
debug: 4.3.4(supports-color@8.1.1)
globals: 11.12.0
transitivePeerDependencies:
- supports-color
@ -3460,7 +3463,7 @@ packages:
'@babel/helper-split-export-declaration': 7.22.6
'@babel/parser': 7.23.9
'@babel/types': 7.23.5
debug: 4.3.4(supports-color@5.5.0)
debug: 4.3.4(supports-color@8.1.1)
globals: 11.12.0
transitivePeerDependencies:
- supports-color
@ -4161,7 +4164,7 @@ packages:
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
dependencies:
ajv: 6.12.6
debug: 4.3.4(supports-color@5.5.0)
debug: 4.3.4(supports-color@8.1.1)
espree: 9.6.1
globals: 13.19.0
ignore: 5.2.4
@ -4178,7 +4181,7 @@ packages:
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
dependencies:
ajv: 6.12.6
debug: 4.3.4(supports-color@5.5.0)
debug: 4.3.4(supports-color@8.1.1)
espree: 9.6.1
globals: 13.19.0
ignore: 5.2.4
@ -4413,7 +4416,7 @@ packages:
engines: {node: '>=10.10.0'}
dependencies:
'@humanwhocodes/object-schema': 2.0.1
debug: 4.3.4(supports-color@5.5.0)
debug: 4.3.4(supports-color@8.1.1)
minimatch: 3.1.2
transitivePeerDependencies:
- supports-color
@ -8595,7 +8598,7 @@ packages:
'@typescript-eslint/type-utils': 6.11.0(eslint@8.53.0)(typescript@5.3.3)
'@typescript-eslint/utils': 6.11.0(eslint@8.53.0)(typescript@5.3.3)
'@typescript-eslint/visitor-keys': 6.11.0
debug: 4.3.4(supports-color@5.5.0)
debug: 4.3.4(supports-color@8.1.1)
eslint: 8.53.0
graphemer: 1.4.0
ignore: 5.2.4
@ -8624,7 +8627,7 @@ packages:
'@typescript-eslint/type-utils': 6.18.1(eslint@8.56.0)(typescript@5.3.3)
'@typescript-eslint/utils': 6.18.1(eslint@8.56.0)(typescript@5.3.3)
'@typescript-eslint/visitor-keys': 6.18.1
debug: 4.3.4(supports-color@5.5.0)
debug: 4.3.4(supports-color@8.1.1)
eslint: 8.56.0
graphemer: 1.4.0
ignore: 5.2.4
@ -8650,7 +8653,7 @@ packages:
'@typescript-eslint/types': 6.11.0
'@typescript-eslint/typescript-estree': 6.11.0(typescript@5.3.3)
'@typescript-eslint/visitor-keys': 6.11.0
debug: 4.3.4(supports-color@5.5.0)
debug: 4.3.4(supports-color@8.1.1)
eslint: 8.53.0
typescript: 5.3.3
transitivePeerDependencies:
@ -8671,7 +8674,7 @@ packages:
'@typescript-eslint/types': 6.18.1
'@typescript-eslint/typescript-estree': 6.18.1(typescript@5.3.3)
'@typescript-eslint/visitor-keys': 6.18.1
debug: 4.3.4(supports-color@5.5.0)
debug: 4.3.4(supports-color@8.1.1)
eslint: 8.56.0
typescript: 5.3.3
transitivePeerDependencies:
@ -8706,7 +8709,7 @@ packages:
dependencies:
'@typescript-eslint/typescript-estree': 6.11.0(typescript@5.3.3)
'@typescript-eslint/utils': 6.11.0(eslint@8.53.0)(typescript@5.3.3)
debug: 4.3.4(supports-color@5.5.0)
debug: 4.3.4(supports-color@8.1.1)
eslint: 8.53.0
ts-api-utils: 1.0.1(typescript@5.3.3)
typescript: 5.3.3
@ -8726,7 +8729,7 @@ packages:
dependencies:
'@typescript-eslint/typescript-estree': 6.18.1(typescript@5.3.3)
'@typescript-eslint/utils': 6.18.1(eslint@8.56.0)(typescript@5.3.3)
debug: 4.3.4(supports-color@5.5.0)
debug: 4.3.4(supports-color@8.1.1)
eslint: 8.56.0
ts-api-utils: 1.0.1(typescript@5.3.3)
typescript: 5.3.3
@ -8755,7 +8758,7 @@ packages:
dependencies:
'@typescript-eslint/types': 6.11.0
'@typescript-eslint/visitor-keys': 6.11.0
debug: 4.3.4(supports-color@5.5.0)
debug: 4.3.4(supports-color@8.1.1)
globby: 11.1.0
is-glob: 4.0.3
semver: 7.5.4
@ -8776,7 +8779,7 @@ packages:
dependencies:
'@typescript-eslint/types': 6.18.1
'@typescript-eslint/visitor-keys': 6.18.1
debug: 4.3.4(supports-color@5.5.0)
debug: 4.3.4(supports-color@8.1.1)
globby: 11.1.0
is-glob: 4.0.3
minimatch: 9.0.3
@ -9252,7 +9255,7 @@ packages:
engines: {node: '>= 6.0.0'}
requiresBuild: true
dependencies:
debug: 4.3.4(supports-color@5.5.0)
debug: 4.3.4(supports-color@8.1.1)
transitivePeerDependencies:
- supports-color
@ -9260,7 +9263,7 @@ packages:
resolution: {integrity: sha512-o/zjMZRhJxny7OyEF+Op8X+efiELC7k7yOjMzgfzVqOzXqkBkWI79YoTdOtsuWd5BWhAGAuOY/Xa6xpiaWXiNg==}
engines: {node: '>= 14'}
dependencies:
debug: 4.3.4(supports-color@5.5.0)
debug: 4.3.4(supports-color@8.1.1)
transitivePeerDependencies:
- supports-color
dev: false
@ -9642,7 +9645,7 @@ packages:
resolution: {integrity: sha512-TAlMYvOuwGyLK3PfBb5WKBXZmXz2fVCgv23d6zZFdle/q3gPjmxBaeuC0pY0Dzs5PWMSgfqqEZkrye19GlDTgw==}
dependencies:
archy: 1.0.0
debug: 4.3.4(supports-color@5.5.0)
debug: 4.3.4(supports-color@8.1.1)
fastq: 1.15.0
transitivePeerDependencies:
- supports-color
@ -11144,6 +11147,7 @@ packages:
dependencies:
ms: 2.1.2
supports-color: 5.5.0
dev: true
/debug@4.3.4(supports-color@8.1.1):
resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==}
@ -11156,7 +11160,6 @@ packages:
dependencies:
ms: 2.1.2
supports-color: 8.1.1
dev: true
/decamelize-keys@1.1.1:
resolution: {integrity: sha512-WiPxgEirIV0/eIOMcnFBA3/IJZAZqKnwAwWyvvdi4lsr1WCN22nhdf/3db3DoZcUjTV2SqfzIwNyp6y2xs3nmg==}
@ -11373,7 +11376,7 @@ packages:
hasBin: true
dependencies:
address: 1.2.2
debug: 4.3.4(supports-color@5.5.0)
debug: 4.3.4(supports-color@8.1.1)
transitivePeerDependencies:
- supports-color
dev: true
@ -11697,7 +11700,7 @@ packages:
peerDependencies:
esbuild: '>=0.12 <1'
dependencies:
debug: 4.3.4(supports-color@5.5.0)
debug: 4.3.4(supports-color@8.1.1)
esbuild: 0.18.20
transitivePeerDependencies:
- supports-color
@ -12006,7 +12009,7 @@ packages:
ajv: 6.12.6
chalk: 4.1.2
cross-spawn: 7.0.3
debug: 4.3.4(supports-color@5.5.0)
debug: 4.3.4(supports-color@8.1.1)
doctrine: 3.0.0
escape-string-regexp: 4.0.0
eslint-scope: 7.2.2
@ -12053,7 +12056,7 @@ packages:
ajv: 6.12.6
chalk: 4.1.2
cross-spawn: 7.0.3
debug: 4.3.4(supports-color@5.5.0)
debug: 4.3.4(supports-color@8.1.1)
doctrine: 3.0.0
escape-string-regexp: 4.0.0
eslint-scope: 7.2.2
@ -12684,7 +12687,7 @@ packages:
debug:
optional: true
dependencies:
debug: 4.3.4(supports-color@5.5.0)
debug: 4.3.4(supports-color@8.1.1)
/for-each@0.3.3:
resolution: {integrity: sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==}
@ -13240,6 +13243,7 @@ packages:
/has-flag@3.0.0:
resolution: {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==}
engines: {node: '>=4'}
dev: true
/has-flag@4.0.0:
resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==}
@ -13377,7 +13381,7 @@ packages:
engines: {node: '>= 14'}
dependencies:
agent-base: 7.1.0
debug: 4.3.4(supports-color@5.5.0)
debug: 4.3.4(supports-color@8.1.1)
transitivePeerDependencies:
- supports-color
dev: false
@ -13437,7 +13441,7 @@ packages:
engines: {node: '>= 6.0.0'}
dependencies:
agent-base: 5.1.1
debug: 4.3.4(supports-color@5.5.0)
debug: 4.3.4(supports-color@8.1.1)
transitivePeerDependencies:
- supports-color
dev: true
@ -13447,7 +13451,7 @@ packages:
engines: {node: '>= 6'}
dependencies:
agent-base: 6.0.2
debug: 4.3.4(supports-color@5.5.0)
debug: 4.3.4(supports-color@8.1.1)
transitivePeerDependencies:
- supports-color
@ -13456,7 +13460,7 @@ packages:
engines: {node: '>= 14'}
dependencies:
agent-base: 7.1.0
debug: 4.3.4(supports-color@5.5.0)
debug: 4.3.4(supports-color@8.1.1)
transitivePeerDependencies:
- supports-color
dev: false
@ -13623,7 +13627,7 @@ packages:
dependencies:
'@ioredis/commands': 1.2.0
cluster-key-slot: 1.1.2
debug: 4.3.4(supports-color@5.5.0)
debug: 4.3.4(supports-color@8.1.1)
denque: 2.1.0
lodash.defaults: 4.2.0
lodash.isarguments: 3.1.0
@ -14069,7 +14073,7 @@ packages:
resolution: {integrity: sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==}
engines: {node: '>=10'}
dependencies:
debug: 4.3.4(supports-color@5.5.0)
debug: 4.3.4(supports-color@8.1.1)
istanbul-lib-coverage: 3.2.2
source-map: 0.6.1
transitivePeerDependencies:
@ -17253,6 +17257,14 @@ packages:
resolution: {integrity: sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==}
dev: true
/proxycheck-ts@0.0.9:
resolution: {integrity: sha512-qxdMgLB01kPksBAeAHI2Zt5q/fW0glZKZK9d9eNm0/KyowKuKzVmvirF2ztsGcIzU7r6s6YvPwXJuPTeQ+LBTg==}
dependencies:
cross-fetch: 4.0.0
transitivePeerDependencies:
- encoding
dev: false
/ps-list@8.1.1:
resolution: {integrity: sha512-OPS9kEJYVmiO48u/B9qneqhkMvgCxT+Tm28VCEJpheTpl8cJ0ffZRRNgS5mrQRTrX5yRTpaJ+hRDeefXYmmorQ==}
engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
@ -17386,7 +17398,7 @@ packages:
engines: {node: '>=8.16.0'}
dependencies:
'@types/mime-types': 2.1.4
debug: 4.3.4(supports-color@5.5.0)
debug: 4.3.4(supports-color@8.1.1)
extract-zip: 1.7.0
https-proxy-agent: 4.0.0
mime: 2.6.0
@ -18387,7 +18399,7 @@ packages:
dependencies:
'@hapi/hoek': 10.0.1
'@hapi/wreck': 18.0.1
debug: 4.3.4(supports-color@5.5.0)
debug: 4.3.4(supports-color@8.1.1)
joi: 17.7.0
transitivePeerDependencies:
- supports-color
@ -18587,7 +18599,7 @@ packages:
engines: {node: '>= 14'}
dependencies:
agent-base: 7.1.0
debug: 4.3.4(supports-color@5.5.0)
debug: 4.3.4(supports-color@8.1.1)
socks: 2.7.1
transitivePeerDependencies:
- supports-color
@ -18740,7 +18752,7 @@ packages:
arg: 5.0.2
bluebird: 3.7.2
check-more-types: 2.24.0
debug: 4.3.4(supports-color@5.5.0)
debug: 4.3.4(supports-color@8.1.1)
execa: 5.1.1
lazy-ass: 1.6.0
ps-tree: 1.2.0
@ -18998,6 +19010,7 @@ packages:
engines: {node: '>=4'}
dependencies:
has-flag: 3.0.0
dev: true
/supports-color@7.2.0:
resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==}
@ -19630,7 +19643,7 @@ packages:
chalk: 4.1.2
cli-highlight: 2.1.11
dayjs: 1.11.10
debug: 4.3.4(supports-color@5.5.0)
debug: 4.3.4(supports-color@8.1.1)
dotenv: 16.0.3
glob: 10.3.10
ioredis: 5.3.2
@ -19990,7 +20003,7 @@ packages:
hasBin: true
dependencies:
cac: 6.7.14
debug: 4.3.4(supports-color@5.5.0)
debug: 4.3.4(supports-color@8.1.1)
mlly: 1.5.0
pathe: 1.1.2
picocolors: 1.0.0
@ -20102,7 +20115,7 @@ packages:
acorn-walk: 8.3.2
cac: 6.7.14
chai: 4.3.10
debug: 4.3.4(supports-color@5.5.0)
debug: 4.3.4(supports-color@8.1.1)
happy-dom: 10.0.3
local-pkg: 0.4.3
magic-string: 0.30.5
@ -20212,7 +20225,7 @@ packages:
peerDependencies:
eslint: '>=6.0.0'
dependencies:
debug: 4.3.4(supports-color@5.5.0)
debug: 4.3.4(supports-color@8.1.1)
eslint: 8.56.0
eslint-scope: 7.2.2
eslint-visitor-keys: 3.4.3