Merge branch 'main' into v8.0.0
This commit is contained in:
commit
14ab8a7a60
@ -1,6 +1,6 @@
|
|||||||
# Cookie Monster Dialog
|
# Cookie Monster Dialog
|
||||||
|
|
||||||
Cookie Monster Dialog is a browser extension that hides cookie consent dialogs without changing user preferences. By default, we do NOT accept cookies (except in [a few cases](https://github.com/wanhose/cookie-dialog-monster/blob/main/database.json#L248) where the pages do not function without accepting them). You can report broken sites with a single click, which will create an issue in this repository to be fixed promptly.
|
Cookie Monster Dialog is a browser extension that hides cookie consent dialogs without changing user preferences. By default, we do NOT accept cookies (except in [a few cases](https://gitlab.com/wanhose/cookie-dialog-monster/blob/main/database.json#L248) where the pages do not function without accepting them). You can report broken sites with a single click, which will create an issue in this repository to be fixed promptly.
|
||||||
|
|
||||||
## Repositories
|
## Repositories
|
||||||
|
|
||||||
|
@ -1 +1,3 @@
|
|||||||
GITHUB_TOKEN=?
|
GITLAB_PROJECT_ID=?
|
||||||
|
GITLAB_RAW=?
|
||||||
|
GITLAB_TOKEN=?
|
||||||
|
@ -12,7 +12,6 @@
|
|||||||
"@fastify/rate-limit": "^9.1.0",
|
"@fastify/rate-limit": "^9.1.0",
|
||||||
"fastify": "^4.26.2",
|
"fastify": "^4.26.2",
|
||||||
"node-fetch": "^2.7.0",
|
"node-fetch": "^2.7.0",
|
||||||
"octokit": "^3.2.1",
|
|
||||||
"ua-parser-js": "^1.0.37",
|
"ua-parser-js": "^1.0.37",
|
||||||
"yup": "^1.4.0"
|
"yup": "^1.4.0"
|
||||||
},
|
},
|
||||||
|
@ -26,8 +26,6 @@ server.register(cors, {
|
|||||||
|
|
||||||
server.register(rateLimit, {
|
server.register(rateLimit, {
|
||||||
global: false,
|
global: false,
|
||||||
max: 1,
|
|
||||||
timeWindow: 30000,
|
|
||||||
});
|
});
|
||||||
|
|
||||||
server.register(v1EntriesRoutes, { prefix: '/rest/v1' });
|
server.register(v1EntriesRoutes, { prefix: '/rest/v1' });
|
||||||
|
@ -1,15 +1,24 @@
|
|||||||
import { FastifyInstance, RouteShorthandOptions } from 'fastify';
|
import { FastifyInstance, RouteShorthandOptions } from 'fastify';
|
||||||
|
import { RATE_LIMIT_1_PER_HOUR } from 'services/rateLimit';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @deprecated This API route is no longer supported. Please use a newer version
|
* @deprecated This API route is no longer supported. Please use a newer version
|
||||||
*/
|
*/
|
||||||
export default (server: FastifyInstance, _options: RouteShorthandOptions, done: () => void) => {
|
export default (server: FastifyInstance, _options: RouteShorthandOptions, done: () => void) => {
|
||||||
server.get('/entries/', async (_request, reply) => {
|
server.get(
|
||||||
|
'/entries/',
|
||||||
|
{
|
||||||
|
config: {
|
||||||
|
rateLimit: RATE_LIMIT_1_PER_HOUR,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
async (_request, reply) => {
|
||||||
reply.send({
|
reply.send({
|
||||||
success: false,
|
success: false,
|
||||||
errors: ['This API route is no longer supported. Please use a newer version'],
|
errors: ['This API route is no longer supported. Please use a newer version'],
|
||||||
});
|
});
|
||||||
});
|
}
|
||||||
|
);
|
||||||
|
|
||||||
done();
|
done();
|
||||||
};
|
};
|
||||||
|
@ -1,15 +1,24 @@
|
|||||||
import { FastifyInstance, RouteShorthandOptions } from 'fastify';
|
import { FastifyInstance, RouteShorthandOptions } from 'fastify';
|
||||||
|
import { RATE_LIMIT_1_PER_HOUR } from 'services/rateLimit';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @deprecated This API route is no longer supported. Please use a newer version
|
* @deprecated This API route is no longer supported. Please use a newer version
|
||||||
*/
|
*/
|
||||||
export default (server: FastifyInstance, _options: RouteShorthandOptions, done: () => void) => {
|
export default (server: FastifyInstance, _options: RouteShorthandOptions, done: () => void) => {
|
||||||
server.post('/report/', {}, async (_request, reply) => {
|
server.post(
|
||||||
|
'/report/',
|
||||||
|
{
|
||||||
|
config: {
|
||||||
|
rateLimit: RATE_LIMIT_1_PER_HOUR,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
async (_request, reply) => {
|
||||||
reply.send({
|
reply.send({
|
||||||
success: false,
|
success: false,
|
||||||
errors: ['This API route is no longer supported. Please use a newer version'],
|
errors: ['This API route is no longer supported. Please use a newer version'],
|
||||||
});
|
});
|
||||||
});
|
}
|
||||||
|
);
|
||||||
|
|
||||||
done();
|
done();
|
||||||
};
|
};
|
||||||
|
@ -2,11 +2,19 @@ import { FastifyInstance, RouteShorthandOptions } from 'fastify';
|
|||||||
import fetch from 'node-fetch';
|
import fetch from 'node-fetch';
|
||||||
import { parseNewFix } from 'services/compatibility';
|
import { parseNewFix } from 'services/compatibility';
|
||||||
import environment from 'services/environment';
|
import environment from 'services/environment';
|
||||||
|
import { RATE_LIMIT_10_PER_MIN } from 'services/rateLimit';
|
||||||
|
|
||||||
export default (server: FastifyInstance, _options: RouteShorthandOptions, done: () => void) => {
|
export default (server: FastifyInstance, _options: RouteShorthandOptions, done: () => void) => {
|
||||||
server.get('/data/', async (_request, reply) => {
|
server.get(
|
||||||
|
'/data/',
|
||||||
|
{
|
||||||
|
config: {
|
||||||
|
rateLimit: RATE_LIMIT_10_PER_MIN,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
async (_request, reply) => {
|
||||||
try {
|
try {
|
||||||
const url = `${environment.github.files}/database.json`;
|
const url = `${environment.gitlab.raw}/database.json`;
|
||||||
const result = await (await fetch(url)).json();
|
const result = await (await fetch(url)).json();
|
||||||
|
|
||||||
reply.send({
|
reply.send({
|
||||||
@ -20,11 +28,14 @@ export default (server: FastifyInstance, _options: RouteShorthandOptions, done:
|
|||||||
},
|
},
|
||||||
success: true,
|
success: true,
|
||||||
});
|
});
|
||||||
} catch (e) {
|
} catch (error) {
|
||||||
console.error(e);
|
reply.send({
|
||||||
reply.send({ success: false });
|
errors: [error.message],
|
||||||
}
|
success: false,
|
||||||
});
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
);
|
||||||
|
|
||||||
done();
|
done();
|
||||||
};
|
};
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
import { FastifyInstance, RouteShorthandOptions } from 'fastify';
|
import { FastifyInstance, RouteShorthandOptions } from 'fastify';
|
||||||
import environment from 'services/environment';
|
import { formatMessage } from 'services/format';
|
||||||
import { octokit } from 'services/octokit';
|
import { createIssue, createIssueComment, getIssue, updateIssue } from 'services/git';
|
||||||
|
import { RATE_LIMIT_1_PER_MIN } from 'services/rateLimit';
|
||||||
import { validatorCompiler } from 'services/validation';
|
import { validatorCompiler } from 'services/validation';
|
||||||
import { UAParser } from 'ua-parser-js';
|
import { UAParser } from 'ua-parser-js';
|
||||||
import * as yup from 'yup';
|
import * as yup from 'yup';
|
||||||
@ -22,6 +23,9 @@ export default (server: FastifyInstance, _options: RouteShorthandOptions, done:
|
|||||||
server.post<{ Body: PostReportBody }>(
|
server.post<{ Body: PostReportBody }>(
|
||||||
'/report/',
|
'/report/',
|
||||||
{
|
{
|
||||||
|
config: {
|
||||||
|
rateLimit: RATE_LIMIT_1_PER_MIN,
|
||||||
|
},
|
||||||
schema: {
|
schema: {
|
||||||
body: PostReportBodySchema,
|
body: PostReportBodySchema,
|
||||||
},
|
},
|
||||||
@ -29,45 +33,46 @@ export default (server: FastifyInstance, _options: RouteShorthandOptions, done:
|
|||||||
},
|
},
|
||||||
async (request, reply) => {
|
async (request, reply) => {
|
||||||
try {
|
try {
|
||||||
const issues = await octokit.request('GET /repos/{owner}/{repo}/issues', {
|
const { reason, url, userAgent, version } = request.body;
|
||||||
owner: environment.github.owner,
|
const hostname = new URL(url).hostname.split('.').slice(-3).join('.').replace('www.', '');
|
||||||
repo: environment.github.repo,
|
const issue = await getIssue({ title: hostname });
|
||||||
});
|
const ua = new UAParser(userAgent ?? '').getResult();
|
||||||
const ua = new UAParser(request.body.userAgent ?? '').getResult();
|
|
||||||
const url = new URL(request.body.url).hostname
|
|
||||||
.split('.')
|
|
||||||
.slice(-3)
|
|
||||||
.join('.')
|
|
||||||
.replace('www.', '');
|
|
||||||
|
|
||||||
if (issues.data.some((issue) => issue.title.includes(url))) {
|
if (issue) {
|
||||||
throw new Error();
|
if (issue.state === 'closed') {
|
||||||
|
await updateIssue({
|
||||||
|
event: 'reopen',
|
||||||
|
iid: issue.iid,
|
||||||
|
labels: ['bug'],
|
||||||
|
labelsToRemove: issue.labels,
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
await octokit.request('POST /repos/{owner}/{repo}/issues', {
|
await createIssueComment({
|
||||||
assignees: [environment.github.owner],
|
description: formatMessage({ reason, ua, url, version }),
|
||||||
body: [
|
iid: issue.iid,
|
||||||
'## Specifications',
|
|
||||||
'#### Browser',
|
|
||||||
`${ua.browser.name ? `${ua.browser.name} ${ua.browser.version || ''}` : '-'}`,
|
|
||||||
'#### Device',
|
|
||||||
`${ua.device.type && ua.device.vendor ? `${ua.device.vendor} (${ua.device.type})` : '-'}`,
|
|
||||||
'#### Reason',
|
|
||||||
request.body.reason ?? '-',
|
|
||||||
'#### URL',
|
|
||||||
request.body.url,
|
|
||||||
'#### Version',
|
|
||||||
request.body.version,
|
|
||||||
].join('\n'),
|
|
||||||
labels: ['bug'],
|
|
||||||
owner: environment.github.owner,
|
|
||||||
repo: environment.github.repo,
|
|
||||||
title: url,
|
|
||||||
});
|
});
|
||||||
|
|
||||||
reply.send({ success: true });
|
reply.send({
|
||||||
|
success: true,
|
||||||
|
});
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
await createIssue({
|
||||||
|
description: formatMessage({ reason, ua, url, version }),
|
||||||
|
labels: ['bug'],
|
||||||
|
title: hostname,
|
||||||
|
});
|
||||||
|
|
||||||
|
reply.send({
|
||||||
|
success: true,
|
||||||
|
});
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
reply.send({ errors: [error.message], success: false });
|
reply.send({
|
||||||
|
errors: [error.message],
|
||||||
|
success: false,
|
||||||
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
|
@ -2,11 +2,19 @@ import { FastifyInstance, RouteShorthandOptions } from 'fastify';
|
|||||||
import fetch from 'node-fetch';
|
import fetch from 'node-fetch';
|
||||||
import { parseNewFix } from 'services/compatibility';
|
import { parseNewFix } from 'services/compatibility';
|
||||||
import environment from 'services/environment';
|
import environment from 'services/environment';
|
||||||
|
import { RATE_LIMIT_3_PER_MIN } from 'services/rateLimit';
|
||||||
|
|
||||||
export default (server: FastifyInstance, _options: RouteShorthandOptions, done: () => void) => {
|
export default (server: FastifyInstance, _options: RouteShorthandOptions, done: () => void) => {
|
||||||
server.get('/data/', async (_request, reply) => {
|
server.get(
|
||||||
|
'/data/',
|
||||||
|
{
|
||||||
|
config: {
|
||||||
|
rateLimit: RATE_LIMIT_3_PER_MIN,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
async (_request, reply) => {
|
||||||
try {
|
try {
|
||||||
const url = `${environment.github.files}/database.json`;
|
const url = `${environment.gitlab.raw}/database.json`;
|
||||||
const result = await (await fetch(url)).json();
|
const result = await (await fetch(url)).json();
|
||||||
|
|
||||||
reply.send({
|
reply.send({
|
||||||
@ -22,7 +30,8 @@ export default (server: FastifyInstance, _options: RouteShorthandOptions, done:
|
|||||||
success: false,
|
success: false,
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
});
|
}
|
||||||
|
);
|
||||||
|
|
||||||
done();
|
done();
|
||||||
};
|
};
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
import { FastifyInstance, RouteShorthandOptions } from 'fastify';
|
import { FastifyInstance, RouteShorthandOptions } from 'fastify';
|
||||||
import environment from 'services/environment';
|
import { formatMessage } from 'services/format';
|
||||||
import { octokit } from 'services/octokit';
|
import { createIssue, createIssueComment, getIssue, updateIssue } from 'services/git';
|
||||||
|
import { RATE_LIMIT_1_PER_MIN } from 'services/rateLimit';
|
||||||
import { validatorCompiler } from 'services/validation';
|
import { validatorCompiler } from 'services/validation';
|
||||||
import { UAParser } from 'ua-parser-js';
|
import { UAParser } from 'ua-parser-js';
|
||||||
import * as yup from 'yup';
|
import * as yup from 'yup';
|
||||||
@ -22,63 +23,51 @@ export default (server: FastifyInstance, _options: RouteShorthandOptions, done:
|
|||||||
server.post<{ Body: PostReportBody }>(
|
server.post<{ Body: PostReportBody }>(
|
||||||
'/report/',
|
'/report/',
|
||||||
{
|
{
|
||||||
|
config: {
|
||||||
|
rateLimit: RATE_LIMIT_1_PER_MIN,
|
||||||
|
},
|
||||||
schema: {
|
schema: {
|
||||||
body: PostReportBodySchema,
|
body: PostReportBodySchema,
|
||||||
},
|
},
|
||||||
validatorCompiler,
|
validatorCompiler,
|
||||||
},
|
},
|
||||||
async (request, reply) => {
|
async (request, reply) => {
|
||||||
const { url, userAgent } = request.body;
|
|
||||||
const ua = new UAParser(userAgent ?? '').getResult();
|
|
||||||
const hostname = new URL(url).hostname.split('.').slice(-3).join('.').replace('www.', '');
|
|
||||||
const existingIssues = await octokit.request('GET /search/issues', {
|
|
||||||
per_page: 50,
|
|
||||||
q: `in:title+is:issue+repo:${environment.github.owner}/${environment.github.repo}+${hostname}`,
|
|
||||||
});
|
|
||||||
const existingIssue = existingIssues.data.items.find(
|
|
||||||
(issue) =>
|
|
||||||
hostname === issue.title &&
|
|
||||||
(issue.state === 'open' ||
|
|
||||||
(issue.state === 'closed' && issue.labels.some((label) => label.name === 'wontfix')))
|
|
||||||
);
|
|
||||||
|
|
||||||
try {
|
try {
|
||||||
if (existingIssue) {
|
const { reason, url, userAgent, version } = request.body;
|
||||||
if (existingIssue.state === 'closed') {
|
const hostname = new URL(url).hostname.split('.').slice(-3).join('.').replace('www.', '');
|
||||||
await octokit.request('PATCH /repos/{owner}/{repo}/issues/{issue_number}', {
|
const issue = await getIssue({ title: hostname });
|
||||||
issue_number: existingIssue.number,
|
const ua = new UAParser(userAgent ?? '').getResult();
|
||||||
|
|
||||||
|
if (issue) {
|
||||||
|
if (issue.state === 'closed') {
|
||||||
|
await updateIssue({
|
||||||
|
event: 'reopen',
|
||||||
|
iid: issue.iid,
|
||||||
labels: ['bug'],
|
labels: ['bug'],
|
||||||
owner: environment.github.owner,
|
labelsToRemove: issue.labels,
|
||||||
repo: environment.github.repo,
|
|
||||||
state: 'open',
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
await octokit.request('POST /repos/{owner}/{repo}/issues/{issue_number}/comments', {
|
await createIssueComment({
|
||||||
body: generateText(request.body, ua),
|
description: formatMessage({ reason, ua, url, version }),
|
||||||
issue_number: existingIssue.number,
|
iid: issue.iid,
|
||||||
owner: environment.github.owner,
|
|
||||||
repo: environment.github.repo,
|
|
||||||
});
|
});
|
||||||
|
|
||||||
reply.send({
|
reply.send({
|
||||||
data: existingIssue.html_url,
|
data: issue.web_url,
|
||||||
success: true,
|
success: true,
|
||||||
});
|
});
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
const response = await octokit.request('POST /repos/{owner}/{repo}/issues', {
|
const newIssue = await createIssue({
|
||||||
assignees: [environment.github.owner],
|
description: formatMessage({ reason, ua, url, version }),
|
||||||
body: generateText(request.body, ua),
|
|
||||||
labels: ['bug'],
|
labels: ['bug'],
|
||||||
owner: environment.github.owner,
|
|
||||||
repo: environment.github.repo,
|
|
||||||
title: hostname,
|
title: hostname,
|
||||||
});
|
});
|
||||||
|
|
||||||
reply.send({
|
reply.send({
|
||||||
data: response.data.html_url,
|
data: newIssue.web_url,
|
||||||
success: true,
|
success: true,
|
||||||
});
|
});
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
@ -92,21 +81,3 @@ export default (server: FastifyInstance, _options: RouteShorthandOptions, done:
|
|||||||
|
|
||||||
done();
|
done();
|
||||||
};
|
};
|
||||||
|
|
||||||
function generateText(body: PostReportBody, ua: UAParser.IResult): string {
|
|
||||||
return [
|
|
||||||
'## Issue information',
|
|
||||||
...(ua.browser.name && ua.browser.version
|
|
||||||
? ['#### 🖥️ Browser', `${ua.browser.name} (${ua.browser.version})`]
|
|
||||||
: []),
|
|
||||||
...(ua.device.type && ua.device.vendor
|
|
||||||
? ['#### 📱 Device', `${ua.device.vendor} (${ua.device.type})`]
|
|
||||||
: []),
|
|
||||||
'#### 📝 Reason',
|
|
||||||
body.reason,
|
|
||||||
'#### 🔗 URL',
|
|
||||||
body.url,
|
|
||||||
'#### 🏷️ Version',
|
|
||||||
body.version,
|
|
||||||
].join('\n');
|
|
||||||
}
|
|
||||||
|
@ -1,12 +1,20 @@
|
|||||||
import { FastifyInstance, RouteShorthandOptions } from 'fastify';
|
import { FastifyInstance, RouteShorthandOptions } from 'fastify';
|
||||||
import fetch from 'node-fetch';
|
import fetch from 'node-fetch';
|
||||||
import environment from 'services/environment';
|
import environment from 'services/environment';
|
||||||
|
import { RATE_LIMIT_3_PER_MIN } from 'services/rateLimit';
|
||||||
|
|
||||||
export default (server: FastifyInstance, _options: RouteShorthandOptions, done: () => void) => {
|
export default (server: FastifyInstance, _options: RouteShorthandOptions, done: () => void) => {
|
||||||
server.get('/data/', async (_request, reply) => {
|
server.get(
|
||||||
|
'/data/',
|
||||||
|
{
|
||||||
|
config: {
|
||||||
|
rateLimit: RATE_LIMIT_3_PER_MIN,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
async (_request, reply) => {
|
||||||
try {
|
try {
|
||||||
const options = { headers: { 'Cache-Control': 'no-cache' } };
|
const options = { headers: { 'Cache-Control': 'no-cache' } };
|
||||||
const url = `${environment.github.files}/database.json`;
|
const url = `${environment.gitlab.raw}/database.json`;
|
||||||
const { rules, ...result } = await (await fetch(url, options)).json();
|
const { rules, ...result } = await (await fetch(url, options)).json();
|
||||||
|
|
||||||
reply.send({
|
reply.send({
|
||||||
@ -22,7 +30,8 @@ export default (server: FastifyInstance, _options: RouteShorthandOptions, done:
|
|||||||
success: false,
|
success: false,
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
});
|
}
|
||||||
|
);
|
||||||
|
|
||||||
done();
|
done();
|
||||||
};
|
};
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
import { FastifyInstance, RouteShorthandOptions } from 'fastify';
|
import { FastifyInstance, RouteShorthandOptions } from 'fastify';
|
||||||
import environment from 'services/environment';
|
import { getIssue } from 'services/git';
|
||||||
import { octokit } from 'services/octokit';
|
import { RATE_LIMIT_10_PER_MIN } from 'services/rateLimit';
|
||||||
import { validatorCompiler } from 'services/validation';
|
import { validatorCompiler } from 'services/validation';
|
||||||
import * as yup from 'yup';
|
import * as yup from 'yup';
|
||||||
|
|
||||||
@ -14,6 +14,9 @@ export default (server: FastifyInstance, _options: RouteShorthandOptions, done:
|
|||||||
server.get<{ Params: GetIssuesParams }>(
|
server.get<{ Params: GetIssuesParams }>(
|
||||||
'/issues/:hostname',
|
'/issues/:hostname',
|
||||||
{
|
{
|
||||||
|
config: {
|
||||||
|
rateLimit: RATE_LIMIT_10_PER_MIN,
|
||||||
|
},
|
||||||
schema: {
|
schema: {
|
||||||
params: GetIssuesParamsSchema,
|
params: GetIssuesParamsSchema,
|
||||||
},
|
},
|
||||||
@ -22,30 +25,22 @@ export default (server: FastifyInstance, _options: RouteShorthandOptions, done:
|
|||||||
async (request, reply) => {
|
async (request, reply) => {
|
||||||
try {
|
try {
|
||||||
const { hostname } = request.params;
|
const { hostname } = request.params;
|
||||||
const existingIssues = await octokit.request('GET /search/issues', {
|
const issue = await getIssue({ title: hostname });
|
||||||
per_page: 50,
|
|
||||||
q: `in:title+is:issue+repo:${environment.github.owner}/${environment.github.repo}+${hostname}`,
|
|
||||||
});
|
|
||||||
const existingIssue = existingIssues.data.items.find(
|
|
||||||
(issue) =>
|
|
||||||
hostname === issue.title &&
|
|
||||||
(issue.state === 'open' ||
|
|
||||||
(issue.state === 'closed' && issue.labels.some((label) => label.name === 'wontfix')))
|
|
||||||
);
|
|
||||||
|
|
||||||
if (existingIssue) {
|
if (
|
||||||
|
issue &&
|
||||||
|
((issue.state === 'closed' && issue.labels.includes('wontfix')) ||
|
||||||
|
issue.state === 'opened')
|
||||||
|
) {
|
||||||
reply.send({
|
reply.send({
|
||||||
data: {
|
data: {
|
||||||
flags: existingIssue.labels.map((label) => label.name),
|
flags: issue.labels,
|
||||||
url: existingIssue.html_url,
|
url: issue.web_url,
|
||||||
},
|
},
|
||||||
success: true,
|
success: true,
|
||||||
});
|
});
|
||||||
} else {
|
} else {
|
||||||
reply.send({
|
throw new Error('Failed to find issue');
|
||||||
data: {},
|
|
||||||
success: true,
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
reply.send({
|
reply.send({
|
||||||
|
@ -1,8 +1,12 @@
|
|||||||
import { FastifyInstance, RouteShorthandOptions } from 'fastify';
|
import { FastifyInstance, RouteShorthandOptions } from 'fastify';
|
||||||
import environment from 'services/environment';
|
import { formatMessage } from 'services/format';
|
||||||
import { octokit } from 'services/octokit';
|
import { createIssue, getIssue, updateIssue } from 'services/git';
|
||||||
|
import { RATE_LIMIT_1_PER_MIN } from 'services/rateLimit';
|
||||||
|
// import environment from 'services/environment';
|
||||||
|
// import { octokit } from 'services/octokit';
|
||||||
import { validatorCompiler } from 'services/validation';
|
import { validatorCompiler } from 'services/validation';
|
||||||
import { UAParser } from 'ua-parser-js';
|
import { UAParser } from 'ua-parser-js';
|
||||||
|
// import { UAParser } from 'ua-parser-js';
|
||||||
import * as yup from 'yup';
|
import * as yup from 'yup';
|
||||||
|
|
||||||
const PostReportBodySchema = yup.object().shape({
|
const PostReportBodySchema = yup.object().shape({
|
||||||
@ -22,35 +26,34 @@ export default (server: FastifyInstance, _options: RouteShorthandOptions, done:
|
|||||||
server.post<{ Body: PostReportBody }>(
|
server.post<{ Body: PostReportBody }>(
|
||||||
'/report/',
|
'/report/',
|
||||||
{
|
{
|
||||||
|
config: {
|
||||||
|
rateLimit: RATE_LIMIT_1_PER_MIN,
|
||||||
|
},
|
||||||
schema: {
|
schema: {
|
||||||
body: PostReportBodySchema,
|
body: PostReportBodySchema,
|
||||||
},
|
},
|
||||||
validatorCompiler,
|
validatorCompiler,
|
||||||
},
|
},
|
||||||
async (request, reply) => {
|
async (request, reply) => {
|
||||||
const { reason, url, userAgent, version } = request.body;
|
|
||||||
const ua = new UAParser(userAgent ?? '').getResult();
|
|
||||||
const hostname = new URL(url).hostname.split('.').slice(-3).join('.').replace('www.', '');
|
|
||||||
const existingIssues = await octokit.request('GET /search/issues', {
|
|
||||||
per_page: 50,
|
|
||||||
q: `in:title+is:issue+repo:${environment.github.owner}/${environment.github.repo}+${hostname}`,
|
|
||||||
});
|
|
||||||
const existingIssue = existingIssues.data.items.find((issue) => hostname === issue.title);
|
|
||||||
|
|
||||||
try {
|
try {
|
||||||
if (existingIssue) {
|
const { reason, url, userAgent, version } = request.body;
|
||||||
if (existingIssue.labels.some((label) => label.name === 'wontfix')) {
|
const hostname = new URL(url).hostname.split('.').slice(-3).join('.').replace('www.', '');
|
||||||
|
const issue = await getIssue({ title: hostname });
|
||||||
|
const ua = new UAParser(userAgent ?? '').getResult();
|
||||||
|
|
||||||
|
if (issue) {
|
||||||
|
if (issue.labels.some((label) => label === 'wontfix')) {
|
||||||
reply.send({
|
reply.send({
|
||||||
data: existingIssue.html_url,
|
data: issue.web_url,
|
||||||
errors: ['This issue has been marked as "wontfix" and will not be addressed.'],
|
errors: ['This issue has been marked as "wontfix" and will not be addressed.'],
|
||||||
success: false,
|
success: false,
|
||||||
});
|
});
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (existingIssue.state === 'open') {
|
if (issue.state === 'opened') {
|
||||||
reply.send({
|
reply.send({
|
||||||
data: existingIssue.html_url,
|
data: issue.web_url,
|
||||||
errors: [
|
errors: [
|
||||||
'This issue already exists. Please refer to the existing issue for updates.',
|
'This issue already exists. Please refer to the existing issue for updates.',
|
||||||
],
|
],
|
||||||
@ -59,46 +62,28 @@ export default (server: FastifyInstance, _options: RouteShorthandOptions, done:
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
await octokit.request('PATCH /repos/{owner}/{repo}/issues/{issue_number}', {
|
await updateIssue({
|
||||||
issue_number: existingIssue.number,
|
event: 'reopen',
|
||||||
|
iid: issue.iid,
|
||||||
labels: ['bug'],
|
labels: ['bug'],
|
||||||
owner: environment.github.owner,
|
labelsToRemove: issue.labels,
|
||||||
repo: environment.github.repo,
|
|
||||||
state: 'open',
|
|
||||||
});
|
});
|
||||||
|
|
||||||
reply.send({
|
reply.send({
|
||||||
data: existingIssue.html_url,
|
data: issue.web_url,
|
||||||
success: true,
|
success: true,
|
||||||
});
|
});
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
const response = await octokit.request('POST /repos/{owner}/{repo}/issues', {
|
const newIssue = await createIssue({
|
||||||
assignees: [environment.github.owner],
|
description: formatMessage({ reason, ua, url, version }),
|
||||||
body: [
|
|
||||||
'## Issue information',
|
|
||||||
...(ua.browser.name && ua.browser.version
|
|
||||||
? ['#### 🖥️ Browser', `${ua.browser.name} (${ua.browser.version})`]
|
|
||||||
: []),
|
|
||||||
...(ua.device.type && ua.device.vendor
|
|
||||||
? ['#### 📱 Device', `${ua.device.vendor} (${ua.device.type})`]
|
|
||||||
: []),
|
|
||||||
'#### 📝 Reason',
|
|
||||||
reason,
|
|
||||||
'#### 🔗 URL',
|
|
||||||
url,
|
|
||||||
'#### 🏷️ Version',
|
|
||||||
version,
|
|
||||||
].join('\n'),
|
|
||||||
labels: ['bug'],
|
labels: ['bug'],
|
||||||
owner: environment.github.owner,
|
|
||||||
repo: environment.github.repo,
|
|
||||||
title: hostname,
|
title: hostname,
|
||||||
});
|
});
|
||||||
|
|
||||||
reply.send({
|
reply.send({
|
||||||
data: response.data.html_url,
|
data: newIssue.web_url,
|
||||||
success: true,
|
success: true,
|
||||||
});
|
});
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
|
@ -1,9 +1,8 @@
|
|||||||
export default {
|
export default {
|
||||||
github: {
|
gitlab: {
|
||||||
files: 'https://raw.githubusercontent.com/wanhose/cookie-dialog-monster/main',
|
projectId: process.env.GITLAB_PROJECT_ID ?? '',
|
||||||
owner: 'wanhose',
|
raw: process.env.GITLAB_RAW ?? '',
|
||||||
repo: 'cookie-dialog-monster',
|
token: process.env.GITLAB_TOKEN ?? '',
|
||||||
token: process.env.GITHUB_TOKEN ?? '',
|
|
||||||
},
|
},
|
||||||
port: (process.env.PORT ? Number(process.env.PORT) : undefined) ?? 8080,
|
port: (process.env.PORT ? Number(process.env.PORT) : undefined) ?? 8080,
|
||||||
};
|
};
|
||||||
|
28
packages/api/src/services/format.ts
Normal file
28
packages/api/src/services/format.ts
Normal file
@ -0,0 +1,28 @@
|
|||||||
|
import type { IResult as UAParserResult } from 'ua-parser-js';
|
||||||
|
|
||||||
|
export function formatMessage(params: FormatMessageParams): string {
|
||||||
|
const { reason = '-', ua, url, version } = params;
|
||||||
|
|
||||||
|
return [
|
||||||
|
'## Issue information',
|
||||||
|
...(ua.browser.name && ua.browser.version
|
||||||
|
? ['#### 🖥️ Browser', `${ua.browser.name} (${ua.browser.version})`]
|
||||||
|
: []),
|
||||||
|
...(ua.device.type && ua.device.vendor
|
||||||
|
? ['#### 📱 Device', `${ua.device.vendor} (${ua.device.type})`]
|
||||||
|
: []),
|
||||||
|
'#### 📝 Reason',
|
||||||
|
reason,
|
||||||
|
'#### 🔗 URL',
|
||||||
|
url,
|
||||||
|
'#### 🏷️ Version',
|
||||||
|
version,
|
||||||
|
].join('\n');
|
||||||
|
}
|
||||||
|
|
||||||
|
export interface FormatMessageParams {
|
||||||
|
readonly reason?: string;
|
||||||
|
readonly ua: UAParserResult;
|
||||||
|
readonly url: string;
|
||||||
|
readonly version: string;
|
||||||
|
}
|
140
packages/api/src/services/git.ts
Normal file
140
packages/api/src/services/git.ts
Normal file
@ -0,0 +1,140 @@
|
|||||||
|
import environment from './environment';
|
||||||
|
|
||||||
|
const API_URL = `https://gitlab.com/api/v4/projects/${environment.gitlab.projectId}`;
|
||||||
|
|
||||||
|
export async function createIssue(params: CreateIssueParams): Promise<Issue> {
|
||||||
|
const { description, labels, title } = params;
|
||||||
|
const body: { [key: string]: string } = {
|
||||||
|
description,
|
||||||
|
title,
|
||||||
|
};
|
||||||
|
const headers = new Headers({
|
||||||
|
'Content-Type': 'application/json',
|
||||||
|
'PRIVATE-TOKEN': environment.gitlab.token,
|
||||||
|
});
|
||||||
|
|
||||||
|
if (labels) {
|
||||||
|
body['labels'] = `${labels}`;
|
||||||
|
}
|
||||||
|
|
||||||
|
const response = await fetch(`${API_URL}/issues`, {
|
||||||
|
body: JSON.stringify(body),
|
||||||
|
headers,
|
||||||
|
method: 'POST',
|
||||||
|
});
|
||||||
|
const issue = await response.json();
|
||||||
|
|
||||||
|
return issue as unknown as Issue;
|
||||||
|
}
|
||||||
|
|
||||||
|
export async function createIssueComment(params: CreateIssueCommentParams): Promise<Issue | null> {
|
||||||
|
const { description, iid } = params;
|
||||||
|
const headers = new Headers({
|
||||||
|
'Content-Type': 'application/json',
|
||||||
|
'PRIVATE-TOKEN': environment.gitlab.token,
|
||||||
|
});
|
||||||
|
|
||||||
|
const response = await fetch(`${API_URL}/issues/${iid}/discussions`, {
|
||||||
|
body: JSON.stringify({ body: description }),
|
||||||
|
headers,
|
||||||
|
method: 'POST',
|
||||||
|
});
|
||||||
|
const issue = await response.json();
|
||||||
|
|
||||||
|
return issue as unknown as Issue | null;
|
||||||
|
}
|
||||||
|
|
||||||
|
export async function getIssue(params: GetIssueParams): Promise<Issue | null> {
|
||||||
|
const { labels, not, state, title } = params;
|
||||||
|
const headers = new Headers({
|
||||||
|
'Content-Type': 'application/json',
|
||||||
|
'PRIVATE-TOKEN': environment.gitlab.token,
|
||||||
|
});
|
||||||
|
const search = new URLSearchParams({ in: 'title', title });
|
||||||
|
|
||||||
|
if (labels) {
|
||||||
|
search.append('labels', `${labels}`);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (not) {
|
||||||
|
if (not.labels) {
|
||||||
|
search.append('not[labels]', `${not.labels}`);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (not.state) {
|
||||||
|
search.append('not[state]', not.state);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (state) {
|
||||||
|
search.append('state', state);
|
||||||
|
}
|
||||||
|
|
||||||
|
const response = await fetch(`${API_URL}/issues?${search}`, { headers });
|
||||||
|
const issues: readonly Issue[] = (await response.json()) as unknown as readonly Issue[];
|
||||||
|
|
||||||
|
return issues.find((issue) => issue.title === title) || null;
|
||||||
|
}
|
||||||
|
|
||||||
|
export async function updateIssue(params: UpdateIssueParams): Promise<Issue | null> {
|
||||||
|
const { event, iid, labels, labelsToRemove } = params;
|
||||||
|
const body: { [key: string]: string } = {};
|
||||||
|
const headers = new Headers({
|
||||||
|
'Content-Type': 'application/json',
|
||||||
|
'PRIVATE-TOKEN': environment.gitlab.token,
|
||||||
|
});
|
||||||
|
|
||||||
|
if (event) {
|
||||||
|
body['state_event'] = event;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (labels) {
|
||||||
|
body['labels'] = `${labels}`;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (labelsToRemove) {
|
||||||
|
body['remove_labels'] = `${labelsToRemove}`;
|
||||||
|
}
|
||||||
|
|
||||||
|
const response = await fetch(`${API_URL}/issues/${iid}`, {
|
||||||
|
body: JSON.stringify(body),
|
||||||
|
headers,
|
||||||
|
method: 'PUT',
|
||||||
|
});
|
||||||
|
const issue = await response.json();
|
||||||
|
|
||||||
|
return issue as unknown as Issue | null;
|
||||||
|
}
|
||||||
|
|
||||||
|
export interface CreateIssueParams {
|
||||||
|
readonly description: string;
|
||||||
|
readonly labels?: readonly string[];
|
||||||
|
readonly title: string;
|
||||||
|
}
|
||||||
|
|
||||||
|
export interface CreateIssueCommentParams {
|
||||||
|
readonly description: string;
|
||||||
|
readonly iid: number;
|
||||||
|
}
|
||||||
|
|
||||||
|
export interface GetIssueParams {
|
||||||
|
readonly labels?: readonly string[];
|
||||||
|
readonly not?: Omit<GetIssueParams, 'not' | 'title'>;
|
||||||
|
readonly state?: string;
|
||||||
|
readonly title: string;
|
||||||
|
}
|
||||||
|
|
||||||
|
export interface Issue {
|
||||||
|
readonly iid: number;
|
||||||
|
readonly labels: readonly string[];
|
||||||
|
readonly state: string;
|
||||||
|
readonly title: string;
|
||||||
|
readonly web_url: string;
|
||||||
|
}
|
||||||
|
|
||||||
|
export interface UpdateIssueParams {
|
||||||
|
readonly event?: 'close' | 'reopen';
|
||||||
|
readonly iid: number;
|
||||||
|
readonly labels?: readonly string[];
|
||||||
|
readonly labelsToRemove?: readonly string[];
|
||||||
|
}
|
@ -1,4 +0,0 @@
|
|||||||
import { Octokit } from 'octokit';
|
|
||||||
import environment from './environment';
|
|
||||||
|
|
||||||
export const octokit = new Octokit({ auth: environment.github.token });
|
|
19
packages/api/src/services/rateLimit.ts
Normal file
19
packages/api/src/services/rateLimit.ts
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
export const RATE_LIMIT_1_PER_HOUR = {
|
||||||
|
max: 1,
|
||||||
|
timeWindow: '1 hour',
|
||||||
|
};
|
||||||
|
|
||||||
|
export const RATE_LIMIT_1_PER_MIN = {
|
||||||
|
max: 1,
|
||||||
|
timeWindow: '1 minute',
|
||||||
|
};
|
||||||
|
|
||||||
|
export const RATE_LIMIT_10_PER_MIN = {
|
||||||
|
max: 10,
|
||||||
|
timeWindow: '1 minute',
|
||||||
|
};
|
||||||
|
|
||||||
|
export const RATE_LIMIT_3_PER_MIN = {
|
||||||
|
max: 3,
|
||||||
|
timeWindow: '1 minute',
|
||||||
|
};
|
@ -86,33 +86,36 @@
|
|||||||
<div class="flex gap-4 text-white">
|
<div class="flex gap-4 text-white">
|
||||||
<a class="contents" href="mailto:hello@wanhose.dev" title="Email">
|
<a class="contents" href="mailto:hello@wanhose.dev" title="Email">
|
||||||
<svg
|
<svg
|
||||||
xmlns="http://www.w3.org/2000/svg"
|
class="h-6 shrink-0 w-6"
|
||||||
class="h-6 w-6"
|
fill="none"
|
||||||
viewBox="0 0 20 20"
|
stroke-linecap="round"
|
||||||
fill="currentColor"
|
stroke-linejoin="round"
|
||||||
|
stroke-width="2"
|
||||||
|
stroke="currentColor"
|
||||||
|
viewBox="0 0 24 24"
|
||||||
>
|
>
|
||||||
<path
|
<circle cx="12" cy="12" r="4"></circle>
|
||||||
fill-rule="evenodd"
|
<path d="M16 8v5a3 3 0 0 0 6 0v-1a10 10 0 1 0-3.92 7.94"></path>
|
||||||
d="M14.243 5.757a6 6 0 10-.986 9.284 1 1 0 111.087 1.678A8 8 0 1118 10a3 3 0 01-4.8 2.401A4 4 0 1114 10a1 1 0 102 0c0-1.537-.586-3.07-1.757-4.243zM12 10a2 2 0 10-4 0 2 2 0 004 0z"
|
|
||||||
clip-rule="evenodd"
|
|
||||||
/>
|
|
||||||
</svg>
|
</svg>
|
||||||
</a>
|
</a>
|
||||||
<a
|
<a
|
||||||
class="contents"
|
class="contents"
|
||||||
href="https://github.com/wanhose/cookie-dialog-monster"
|
href="https://gitlab.com/wanhose/cookie-dialog-monster"
|
||||||
target="_blank"
|
target="_blank"
|
||||||
title="GitHub"
|
title="GitLab"
|
||||||
>
|
>
|
||||||
<svg
|
<svg
|
||||||
class="h-6 w-6"
|
class="h-6 shrink-0 w-6"
|
||||||
xmlns="http://www.w3.org/2000/svg"
|
fill="none"
|
||||||
|
stroke-linecap="round"
|
||||||
|
stroke-linejoin="round"
|
||||||
|
stroke-width="2"
|
||||||
|
stroke="currentColor"
|
||||||
viewBox="0 0 24 24"
|
viewBox="0 0 24 24"
|
||||||
fill="currentColor"
|
|
||||||
>
|
>
|
||||||
<path
|
<path
|
||||||
d="M10.9,2.1c-4.6,0.5-8.3,4.2-8.8,8.7c-0.5,4.7,2.2,8.9,6.3,10.5C8.7,21.4,9,21.2,9,20.8v-1.6c0,0-0.4,0.1-0.9,0.1 c-1.4,0-2-1.2-2.1-1.9c-0.1-0.4-0.3-0.7-0.6-1C5.1,16.3,5,16.3,5,16.2C5,16,5.3,16,5.4,16c0.6,0,1.1,0.7,1.3,1c0.5,0.8,1.1,1,1.4,1 c0.4,0,0.7-0.1,0.9-0.2c0.1-0.7,0.4-1.4,1-1.8c-2.3-0.5-4-1.8-4-4c0-1.1,0.5-2.2,1.2-3C7.1,8.8,7,8.3,7,7.6C7,7.2,7,6.6,7.3,6 c0,0,1.4,0,2.8,1.3C10.6,7.1,11.3,7,12,7s1.4,0.1,2,0.3C15.3,6,16.8,6,16.8,6C17,6.6,17,7.2,17,7.6c0,0.8-0.1,1.2-0.2,1.4 c0.7,0.8,1.2,1.8,1.2,3c0,2.2-1.7,3.5-4,4c0.6,0.5,1,1.4,1,2.3v2.6c0,0.3,0.3,0.6,0.7,0.5c3.7-1.5,6.3-5.1,6.3-9.3 C22,6.1,16.9,1.4,10.9,2.1z"
|
d="M22.65 14.39L12 22.13 1.35 14.39a.84.84 0 0 1-.3-.94l1.22-3.78 2.44-7.51A.42.42 0 0 1 4.82 2a.43.43 0 0 1 .58 0 .42.42 0 0 1 .11.18l2.44 7.49h8.1l2.44-7.51A.42.42 0 0 1 18.6 2a.43.43 0 0 1 .58 0 .42.42 0 0 1 .11.18l2.44 7.51L23 13.45a.84.84 0 0 1-.35.94z"
|
||||||
/>
|
></path>
|
||||||
</svg>
|
</svg>
|
||||||
</a>
|
</a>
|
||||||
</div>
|
</div>
|
||||||
@ -341,8 +344,8 @@
|
|||||||
<h3 class="font-medium mt-4 text-lg text-secondary">Open source</h3>
|
<h3 class="font-medium mt-4 text-lg text-secondary">Open source</h3>
|
||||||
<p class="mt-2 text-gray-500">
|
<p class="mt-2 text-gray-500">
|
||||||
Feel free to contribute to our
|
Feel free to contribute to our
|
||||||
<a href="https://github.com/wanhose/cookie-dialog-monster/pulls" target="_blank">
|
<a href="https://gitlab.com/wanhose/cookie-dialog-monster/pulls" target="_blank">
|
||||||
GitHub repository
|
GitLab repository
|
||||||
</a>
|
</a>
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
@ -492,7 +495,7 @@
|
|||||||
version following
|
version following
|
||||||
<a
|
<a
|
||||||
class="underline"
|
class="underline"
|
||||||
href="https://github.com/wanhose/cookie-dialog-monster/tree/main/packages/browser-extension#installation-for-mozilla-firefox-users"
|
href="https://gitlab.com/wanhose/cookie-dialog-monster/tree/main/packages/browser-extension#installation-for-mozilla-firefox-users"
|
||||||
id="firefox-guide-link"
|
id="firefox-guide-link"
|
||||||
target="_blank"
|
target="_blank"
|
||||||
>
|
>
|
||||||
@ -506,7 +509,7 @@
|
|||||||
the extension. We recommend you to follow
|
the extension. We recommend you to follow
|
||||||
<a
|
<a
|
||||||
class="underline"
|
class="underline"
|
||||||
href="https://github.com/wanhose/cookie-dialog-monster/tree/main/packages/browser-extension#installation-for-advanced-and-non-listed-browser-users"
|
href="https://gitlab.com/wanhose/cookie-dialog-monster/tree/main/packages/browser-extension#installation-for-advanced-and-non-listed-browser-users"
|
||||||
target="_blank"
|
target="_blank"
|
||||||
>
|
>
|
||||||
this guide</a
|
this guide</a
|
||||||
@ -518,7 +521,7 @@
|
|||||||
<div class="max-w-5xl mx-auto">
|
<div class="max-w-5xl mx-auto">
|
||||||
<p class="text-center text-white text-sm">
|
<p class="text-center text-white text-sm">
|
||||||
An open source project built by you and
|
An open source project built by you and
|
||||||
<a class="underline" href="https://github.com/wanhose" target="_blank"> wanhose</a>
|
<a class="underline" href="https://gitlab.com/wanhose" target="_blank"> wanhose</a>
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
</footer>
|
</footer>
|
||||||
@ -530,7 +533,7 @@
|
|||||||
|
|
||||||
if (isMobile) {
|
if (isMobile) {
|
||||||
firefoxGuideLink.href =
|
firefoxGuideLink.href =
|
||||||
'https://github.com/wanhose/cookie-dialog-monster/tree/main/packages/browser-extension#installation-for-mozilla-firefox-mobile-users';
|
'https://gitlab.com/wanhose/cookie-dialog-monster/tree/main/packages/browser-extension#installation-for-mozilla-firefox-mobile-users';
|
||||||
firefoxLink.href = '/releases/latest-mozilla-mobile.xpi';
|
firefoxLink.href = '/releases/latest-mozilla-mobile.xpi';
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
507
yarn.lock
507
yarn.lock
@ -498,316 +498,6 @@ __metadata:
|
|||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
linkType: hard
|
||||||
|
|
||||||
"@octokit/app@npm:^14.0.2":
|
|
||||||
version: 14.1.0
|
|
||||||
resolution: "@octokit/app@npm:14.1.0"
|
|
||||||
dependencies:
|
|
||||||
"@octokit/auth-app": "npm:^6.0.0"
|
|
||||||
"@octokit/auth-unauthenticated": "npm:^5.0.0"
|
|
||||||
"@octokit/core": "npm:^5.0.0"
|
|
||||||
"@octokit/oauth-app": "npm:^6.0.0"
|
|
||||||
"@octokit/plugin-paginate-rest": "npm:^9.0.0"
|
|
||||||
"@octokit/types": "npm:^12.0.0"
|
|
||||||
"@octokit/webhooks": "npm:^12.0.4"
|
|
||||||
checksum: 10c0/c115209f3c8dd05ec5acb5897f9e914177a07e335a7ffb985133d51302112be98122a1c3e3de05018885657ca4e5c9d42949eeb24b39d5881e80ed6411b81857
|
|
||||||
languageName: node
|
|
||||||
linkType: hard
|
|
||||||
|
|
||||||
"@octokit/auth-app@npm:^6.0.0":
|
|
||||||
version: 6.1.1
|
|
||||||
resolution: "@octokit/auth-app@npm:6.1.1"
|
|
||||||
dependencies:
|
|
||||||
"@octokit/auth-oauth-app": "npm:^7.1.0"
|
|
||||||
"@octokit/auth-oauth-user": "npm:^4.1.0"
|
|
||||||
"@octokit/request": "npm:^8.3.1"
|
|
||||||
"@octokit/request-error": "npm:^5.1.0"
|
|
||||||
"@octokit/types": "npm:^13.1.0"
|
|
||||||
deprecation: "npm:^2.3.1"
|
|
||||||
lru-cache: "npm:^10.0.0"
|
|
||||||
universal-github-app-jwt: "npm:^1.1.2"
|
|
||||||
universal-user-agent: "npm:^6.0.0"
|
|
||||||
checksum: 10c0/633fa49ef1d688f1db050fd359d224f5529f0df20e2a5f8f7e78d5f81f33d18cbcde735ea5222b0bcf058b5b93bff88d1dd6f614b9c9443bda5fa0921757cf4f
|
|
||||||
languageName: node
|
|
||||||
linkType: hard
|
|
||||||
|
|
||||||
"@octokit/auth-oauth-app@npm:^7.0.0, @octokit/auth-oauth-app@npm:^7.1.0":
|
|
||||||
version: 7.1.0
|
|
||||||
resolution: "@octokit/auth-oauth-app@npm:7.1.0"
|
|
||||||
dependencies:
|
|
||||||
"@octokit/auth-oauth-device": "npm:^6.1.0"
|
|
||||||
"@octokit/auth-oauth-user": "npm:^4.1.0"
|
|
||||||
"@octokit/request": "npm:^8.3.1"
|
|
||||||
"@octokit/types": "npm:^13.0.0"
|
|
||||||
"@types/btoa-lite": "npm:^1.0.0"
|
|
||||||
btoa-lite: "npm:^1.0.0"
|
|
||||||
universal-user-agent: "npm:^6.0.0"
|
|
||||||
checksum: 10c0/e23c5968426949181beea3ca89bb193885f4ec481b194a0c3bb252b02b1ff3f78908541f4ee6381563cfe6f23ed07e0c0eb33a842b1a6f85301a8266d4d46649
|
|
||||||
languageName: node
|
|
||||||
linkType: hard
|
|
||||||
|
|
||||||
"@octokit/auth-oauth-device@npm:^6.1.0":
|
|
||||||
version: 6.1.0
|
|
||||||
resolution: "@octokit/auth-oauth-device@npm:6.1.0"
|
|
||||||
dependencies:
|
|
||||||
"@octokit/oauth-methods": "npm:^4.1.0"
|
|
||||||
"@octokit/request": "npm:^8.3.1"
|
|
||||||
"@octokit/types": "npm:^13.0.0"
|
|
||||||
universal-user-agent: "npm:^6.0.0"
|
|
||||||
checksum: 10c0/74e17b76f55c8503dc1b4d95e4f52ee49900f7f720983d1725ad29361c9f413d22aa7621e8809ea644bb225686b3ee70f147a9e5944f3c1c1cccba55fa414422
|
|
||||||
languageName: node
|
|
||||||
linkType: hard
|
|
||||||
|
|
||||||
"@octokit/auth-oauth-user@npm:^4.0.0, @octokit/auth-oauth-user@npm:^4.1.0":
|
|
||||||
version: 4.1.0
|
|
||||||
resolution: "@octokit/auth-oauth-user@npm:4.1.0"
|
|
||||||
dependencies:
|
|
||||||
"@octokit/auth-oauth-device": "npm:^6.1.0"
|
|
||||||
"@octokit/oauth-methods": "npm:^4.1.0"
|
|
||||||
"@octokit/request": "npm:^8.3.1"
|
|
||||||
"@octokit/types": "npm:^13.0.0"
|
|
||||||
btoa-lite: "npm:^1.0.0"
|
|
||||||
universal-user-agent: "npm:^6.0.0"
|
|
||||||
checksum: 10c0/5d17d1e86ca89d4f2c440de4e5a648a1646818f0683a6230558279d71151a6b01f1228ccc4fc6e3ae24da92fa18810fac7b2bb6e019646f1f46be3928f522e7f
|
|
||||||
languageName: node
|
|
||||||
linkType: hard
|
|
||||||
|
|
||||||
"@octokit/auth-token@npm:^4.0.0":
|
|
||||||
version: 4.0.0
|
|
||||||
resolution: "@octokit/auth-token@npm:4.0.0"
|
|
||||||
checksum: 10c0/57acaa6c394c5abab2f74e8e1dcf4e7a16b236f713c77a54b8f08e2d14114de94b37946259e33ec2aab0566b26f724c2b71d2602352b59e541a9854897618f3c
|
|
||||||
languageName: node
|
|
||||||
linkType: hard
|
|
||||||
|
|
||||||
"@octokit/auth-unauthenticated@npm:^5.0.0":
|
|
||||||
version: 5.0.1
|
|
||||||
resolution: "@octokit/auth-unauthenticated@npm:5.0.1"
|
|
||||||
dependencies:
|
|
||||||
"@octokit/request-error": "npm:^5.0.0"
|
|
||||||
"@octokit/types": "npm:^12.0.0"
|
|
||||||
checksum: 10c0/c9cad429981a34021ec9f1fdc238c39eba36807683859a3bffb9dd66abf1ce016c9a2ff31fe09313458e59b37f8fa91522c0e34a1daecefdabcdf23a494fbcc2
|
|
||||||
languageName: node
|
|
||||||
linkType: hard
|
|
||||||
|
|
||||||
"@octokit/core@npm:^5.0.0":
|
|
||||||
version: 5.2.0
|
|
||||||
resolution: "@octokit/core@npm:5.2.0"
|
|
||||||
dependencies:
|
|
||||||
"@octokit/auth-token": "npm:^4.0.0"
|
|
||||||
"@octokit/graphql": "npm:^7.1.0"
|
|
||||||
"@octokit/request": "npm:^8.3.1"
|
|
||||||
"@octokit/request-error": "npm:^5.1.0"
|
|
||||||
"@octokit/types": "npm:^13.0.0"
|
|
||||||
before-after-hook: "npm:^2.2.0"
|
|
||||||
universal-user-agent: "npm:^6.0.0"
|
|
||||||
checksum: 10c0/9dc5cf55b335da382f340ef74c8009c06a1f7157b0530d3ff6cacf179887811352dcd405448e37849d73f17b28970b7817995be2260ce902dad52b91905542f0
|
|
||||||
languageName: node
|
|
||||||
linkType: hard
|
|
||||||
|
|
||||||
"@octokit/endpoint@npm:^9.0.1":
|
|
||||||
version: 9.0.5
|
|
||||||
resolution: "@octokit/endpoint@npm:9.0.5"
|
|
||||||
dependencies:
|
|
||||||
"@octokit/types": "npm:^13.1.0"
|
|
||||||
universal-user-agent: "npm:^6.0.0"
|
|
||||||
checksum: 10c0/e9bbb2111abe691c146075abb1b6f724a9b77fa8bfefdaaa82b8ebad6c8790e949f2367bb0b79800fef93ad72807513333e83e8ffba389bc85215535f63534d9
|
|
||||||
languageName: node
|
|
||||||
linkType: hard
|
|
||||||
|
|
||||||
"@octokit/graphql@npm:^7.1.0":
|
|
||||||
version: 7.1.0
|
|
||||||
resolution: "@octokit/graphql@npm:7.1.0"
|
|
||||||
dependencies:
|
|
||||||
"@octokit/request": "npm:^8.3.0"
|
|
||||||
"@octokit/types": "npm:^13.0.0"
|
|
||||||
universal-user-agent: "npm:^6.0.0"
|
|
||||||
checksum: 10c0/6d50a013d151f416fc837644e394e8b8872da7b17b181da119842ca569b0971e4dfacda55af6c329b51614e436945415dd5bd75eb3652055fdb754bbcd20d9d1
|
|
||||||
languageName: node
|
|
||||||
linkType: hard
|
|
||||||
|
|
||||||
"@octokit/oauth-app@npm:^6.0.0":
|
|
||||||
version: 6.1.0
|
|
||||||
resolution: "@octokit/oauth-app@npm:6.1.0"
|
|
||||||
dependencies:
|
|
||||||
"@octokit/auth-oauth-app": "npm:^7.0.0"
|
|
||||||
"@octokit/auth-oauth-user": "npm:^4.0.0"
|
|
||||||
"@octokit/auth-unauthenticated": "npm:^5.0.0"
|
|
||||||
"@octokit/core": "npm:^5.0.0"
|
|
||||||
"@octokit/oauth-authorization-url": "npm:^6.0.2"
|
|
||||||
"@octokit/oauth-methods": "npm:^4.0.0"
|
|
||||||
"@types/aws-lambda": "npm:^8.10.83"
|
|
||||||
universal-user-agent: "npm:^6.0.0"
|
|
||||||
checksum: 10c0/9d67ca196eabbb397c677e006d28148d6c5185f88d86e5444c219e43b95e0ecaee5d31807ea24aedb64a76d61c0a53acd8091613e15d10733f41960bd981463c
|
|
||||||
languageName: node
|
|
||||||
linkType: hard
|
|
||||||
|
|
||||||
"@octokit/oauth-authorization-url@npm:^6.0.2":
|
|
||||||
version: 6.0.2
|
|
||||||
resolution: "@octokit/oauth-authorization-url@npm:6.0.2"
|
|
||||||
checksum: 10c0/8c06e538b3e392f0fa68f3347078c32f92c03474eb214e4e82774513a54c164bac14c228f7dbd79d22a920df1a8b2e0765dd6ee45929bda0b77e5cf7f0d92c71
|
|
||||||
languageName: node
|
|
||||||
linkType: hard
|
|
||||||
|
|
||||||
"@octokit/oauth-methods@npm:^4.0.0, @octokit/oauth-methods@npm:^4.1.0":
|
|
||||||
version: 4.1.0
|
|
||||||
resolution: "@octokit/oauth-methods@npm:4.1.0"
|
|
||||||
dependencies:
|
|
||||||
"@octokit/oauth-authorization-url": "npm:^6.0.2"
|
|
||||||
"@octokit/request": "npm:^8.3.1"
|
|
||||||
"@octokit/request-error": "npm:^5.1.0"
|
|
||||||
"@octokit/types": "npm:^13.0.0"
|
|
||||||
btoa-lite: "npm:^1.0.0"
|
|
||||||
checksum: 10c0/3ab7ab41e82faebb662bfc4cc20756f008adb37b447386c29ddb09cbac5d1867b1b23f2f8dd268e06dca5ff1c874162e01d475f15634b42e6ab0a95471dcc365
|
|
||||||
languageName: node
|
|
||||||
linkType: hard
|
|
||||||
|
|
||||||
"@octokit/openapi-types@npm:^20.0.0":
|
|
||||||
version: 20.0.0
|
|
||||||
resolution: "@octokit/openapi-types@npm:20.0.0"
|
|
||||||
checksum: 10c0/5176dcc3b9d182ede3d446750cfa5cf31139624785a73fcf3511e3102a802b4d7cc45e999c27ed91d73fe8b7d718c8c406facb48688926921a71fe603b7db95d
|
|
||||||
languageName: node
|
|
||||||
linkType: hard
|
|
||||||
|
|
||||||
"@octokit/openapi-types@npm:^22.2.0":
|
|
||||||
version: 22.2.0
|
|
||||||
resolution: "@octokit/openapi-types@npm:22.2.0"
|
|
||||||
checksum: 10c0/a45bfc735611e836df0729f5922bbd5811d401052b972d1e3bc1278a2d2403e00f4552ce9d1f2793f77f167d212da559c5cb9f1b02c935114ad6d898779546ee
|
|
||||||
languageName: node
|
|
||||||
linkType: hard
|
|
||||||
|
|
||||||
"@octokit/plugin-paginate-graphql@npm:^4.0.0":
|
|
||||||
version: 4.0.1
|
|
||||||
resolution: "@octokit/plugin-paginate-graphql@npm:4.0.1"
|
|
||||||
peerDependencies:
|
|
||||||
"@octokit/core": ">=5"
|
|
||||||
checksum: 10c0/d559cdc2b5de107a7da5384b5241d1dfdc1038db1c4a70aca8a450c996315936844e0a1888216fb568c7a272bc6adf6667f897e0976b01e68085663b166cc533
|
|
||||||
languageName: node
|
|
||||||
linkType: hard
|
|
||||||
|
|
||||||
"@octokit/plugin-paginate-rest@npm:11.3.1":
|
|
||||||
version: 11.3.1
|
|
||||||
resolution: "@octokit/plugin-paginate-rest@npm:11.3.1"
|
|
||||||
dependencies:
|
|
||||||
"@octokit/types": "npm:^13.5.0"
|
|
||||||
peerDependencies:
|
|
||||||
"@octokit/core": 5
|
|
||||||
checksum: 10c0/72107ff7e459c49d1f13bbe44ac07b073497692eba28cb5ac6dbfa41e0ebc059ad7bccfa3dd45d3165348adcc2ede8ac159f8a9b637389b8e335af16aaa01469
|
|
||||||
languageName: node
|
|
||||||
linkType: hard
|
|
||||||
|
|
||||||
"@octokit/plugin-paginate-rest@npm:^9.0.0":
|
|
||||||
version: 9.2.1
|
|
||||||
resolution: "@octokit/plugin-paginate-rest@npm:9.2.1"
|
|
||||||
dependencies:
|
|
||||||
"@octokit/types": "npm:^12.6.0"
|
|
||||||
peerDependencies:
|
|
||||||
"@octokit/core": 5
|
|
||||||
checksum: 10c0/1dc55032a9e0c3e6440080a319975c9e4f189913fbc8870a48048d0c712473ea3d902ba247a37a46d45d502859b2728731a0d285107e4b0fa628d380f87163b4
|
|
||||||
languageName: node
|
|
||||||
linkType: hard
|
|
||||||
|
|
||||||
"@octokit/plugin-rest-endpoint-methods@npm:13.2.2":
|
|
||||||
version: 13.2.2
|
|
||||||
resolution: "@octokit/plugin-rest-endpoint-methods@npm:13.2.2"
|
|
||||||
dependencies:
|
|
||||||
"@octokit/types": "npm:^13.5.0"
|
|
||||||
peerDependencies:
|
|
||||||
"@octokit/core": ^5
|
|
||||||
checksum: 10c0/0f2b14b7a185b49908bcc01bcae9849aae2da46c88f500c143d230caa3cd35540839b916e88a4642c60a5499d33e7a37faf1aa42c5bab270cefc10f5d6202893
|
|
||||||
languageName: node
|
|
||||||
linkType: hard
|
|
||||||
|
|
||||||
"@octokit/plugin-retry@npm:^6.0.0":
|
|
||||||
version: 6.0.1
|
|
||||||
resolution: "@octokit/plugin-retry@npm:6.0.1"
|
|
||||||
dependencies:
|
|
||||||
"@octokit/request-error": "npm:^5.0.0"
|
|
||||||
"@octokit/types": "npm:^12.0.0"
|
|
||||||
bottleneck: "npm:^2.15.3"
|
|
||||||
peerDependencies:
|
|
||||||
"@octokit/core": ">=5"
|
|
||||||
checksum: 10c0/721b5a7949e3defdec5f1b451850ab924162fd2712c9ab59a2aaaad5b9ed6ee2a9447fe82ec1f91086cf23aaaceb14ff4e74de67ba3c63c5029e59c67b50979c
|
|
||||||
languageName: node
|
|
||||||
linkType: hard
|
|
||||||
|
|
||||||
"@octokit/plugin-throttling@npm:^8.0.0":
|
|
||||||
version: 8.2.0
|
|
||||||
resolution: "@octokit/plugin-throttling@npm:8.2.0"
|
|
||||||
dependencies:
|
|
||||||
"@octokit/types": "npm:^12.2.0"
|
|
||||||
bottleneck: "npm:^2.15.3"
|
|
||||||
peerDependencies:
|
|
||||||
"@octokit/core": ^5.0.0
|
|
||||||
checksum: 10c0/e65de9958ac5f29ba473bb969d25738f7466dad1b64e8181199c71438c06a6333ba655bd5194581a24199ca06fc9a6e752d0a4782b554ef603b0acffe9f8bfbd
|
|
||||||
languageName: node
|
|
||||||
linkType: hard
|
|
||||||
|
|
||||||
"@octokit/request-error@npm:^5.0.0, @octokit/request-error@npm:^5.1.0":
|
|
||||||
version: 5.1.0
|
|
||||||
resolution: "@octokit/request-error@npm:5.1.0"
|
|
||||||
dependencies:
|
|
||||||
"@octokit/types": "npm:^13.1.0"
|
|
||||||
deprecation: "npm:^2.0.0"
|
|
||||||
once: "npm:^1.4.0"
|
|
||||||
checksum: 10c0/61e688abce17dd020ea1e343470b9758f294bfe5432c5cb24bdb5b9b10f90ecec1ecaaa13b48df9288409e0da14252f6579a20f609af155bd61dc778718b7738
|
|
||||||
languageName: node
|
|
||||||
linkType: hard
|
|
||||||
|
|
||||||
"@octokit/request@npm:^8.3.0, @octokit/request@npm:^8.3.1":
|
|
||||||
version: 8.4.0
|
|
||||||
resolution: "@octokit/request@npm:8.4.0"
|
|
||||||
dependencies:
|
|
||||||
"@octokit/endpoint": "npm:^9.0.1"
|
|
||||||
"@octokit/request-error": "npm:^5.1.0"
|
|
||||||
"@octokit/types": "npm:^13.1.0"
|
|
||||||
universal-user-agent: "npm:^6.0.0"
|
|
||||||
checksum: 10c0/b857782ac2ff5387e9cc502759de73ea642c498c97d06ad2ecd8a395e4b9532d9f3bc3fc460e0d3d0e8f0d43c917a90c493e43766d37782b3979d3afffbf1b4b
|
|
||||||
languageName: node
|
|
||||||
linkType: hard
|
|
||||||
|
|
||||||
"@octokit/types@npm:^12.0.0, @octokit/types@npm:^12.2.0, @octokit/types@npm:^12.6.0":
|
|
||||||
version: 12.6.0
|
|
||||||
resolution: "@octokit/types@npm:12.6.0"
|
|
||||||
dependencies:
|
|
||||||
"@octokit/openapi-types": "npm:^20.0.0"
|
|
||||||
checksum: 10c0/0bea58bda46c93287f5a80a0e52bc60e7dc7136b8a38c3569d63d073fb9df4a56acdb9d9bdba9978f37c374a4a6e3e52886ef5b08cace048adb0012cacef942c
|
|
||||||
languageName: node
|
|
||||||
linkType: hard
|
|
||||||
|
|
||||||
"@octokit/types@npm:^13.0.0, @octokit/types@npm:^13.1.0, @octokit/types@npm:^13.5.0":
|
|
||||||
version: 13.5.0
|
|
||||||
resolution: "@octokit/types@npm:13.5.0"
|
|
||||||
dependencies:
|
|
||||||
"@octokit/openapi-types": "npm:^22.2.0"
|
|
||||||
checksum: 10c0/355ebc6776ce23feace1b1be0927cdda758790fda83068109c4f27b354dcd43d0447d4dc24e5eafdb596465469ea1baed23f3fd63adfec508cc375ccd1dcb0a3
|
|
||||||
languageName: node
|
|
||||||
linkType: hard
|
|
||||||
|
|
||||||
"@octokit/webhooks-methods@npm:^4.1.0":
|
|
||||||
version: 4.1.0
|
|
||||||
resolution: "@octokit/webhooks-methods@npm:4.1.0"
|
|
||||||
checksum: 10c0/153b344b4b20b48fdf89225f482bd9aa612998c28e43d032756d5a2ec7ebf117922fb6a95ee7c0a985cab6924fa4de3378c60e9ff41e384498b8cb7aad3771f2
|
|
||||||
languageName: node
|
|
||||||
linkType: hard
|
|
||||||
|
|
||||||
"@octokit/webhooks-types@npm:7.4.0":
|
|
||||||
version: 7.4.0
|
|
||||||
resolution: "@octokit/webhooks-types@npm:7.4.0"
|
|
||||||
checksum: 10c0/c2f06bdee4cb3f8f9e685a5a0289bd59673954b9bd25701480ba204ea23333f9bcc4a6f757f563ae5a1490f58eace8ebbc7aa8a1737c276ccc1cf5c3e2fe2ebe
|
|
||||||
languageName: node
|
|
||||||
linkType: hard
|
|
||||||
|
|
||||||
"@octokit/webhooks@npm:^12.0.4":
|
|
||||||
version: 12.2.0
|
|
||||||
resolution: "@octokit/webhooks@npm:12.2.0"
|
|
||||||
dependencies:
|
|
||||||
"@octokit/request-error": "npm:^5.0.0"
|
|
||||||
"@octokit/webhooks-methods": "npm:^4.1.0"
|
|
||||||
"@octokit/webhooks-types": "npm:7.4.0"
|
|
||||||
aggregate-error: "npm:^3.1.0"
|
|
||||||
checksum: 10c0/d22c55e99726c32d55b9faf8cde02274c3f6cd82992a5cedf795de401656cc716ff151b0dd6e4173d12dc335583944415613132a9dbf18ee6ffa0d550479a1c2
|
|
||||||
languageName: node
|
|
||||||
linkType: hard
|
|
||||||
|
|
||||||
"@pkgjs/parseargs@npm:^0.11.0":
|
"@pkgjs/parseargs@npm:^0.11.0":
|
||||||
version: 0.11.0
|
version: 0.11.0
|
||||||
resolution: "@pkgjs/parseargs@npm:0.11.0"
|
resolution: "@pkgjs/parseargs@npm:0.11.0"
|
||||||
@ -857,20 +547,6 @@ __metadata:
|
|||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
linkType: hard
|
||||||
|
|
||||||
"@types/aws-lambda@npm:^8.10.83":
|
|
||||||
version: 8.10.137
|
|
||||||
resolution: "@types/aws-lambda@npm:8.10.137"
|
|
||||||
checksum: 10c0/32272f8e9dfa88987cbc68e999554225d07282c3a884d769cdec7116fcec1f7e716914a9ac0d8afd79cf6c955b09e7bcfa6258dda6daa3f532c7eb97bf47bff1
|
|
||||||
languageName: node
|
|
||||||
linkType: hard
|
|
||||||
|
|
||||||
"@types/btoa-lite@npm:^1.0.0":
|
|
||||||
version: 1.0.2
|
|
||||||
resolution: "@types/btoa-lite@npm:1.0.2"
|
|
||||||
checksum: 10c0/daffbb47e4fe6493df70d83878b550adab48bab2f02b3591a59367af3ecebf34c971e070479ab68d83ca59cbeefbc61a50d9a7552f639dc908706183e0222bab
|
|
||||||
languageName: node
|
|
||||||
linkType: hard
|
|
||||||
|
|
||||||
"@types/conventional-commits-parser@npm:^5.0.0":
|
"@types/conventional-commits-parser@npm:^5.0.0":
|
||||||
version: 5.0.0
|
version: 5.0.0
|
||||||
resolution: "@types/conventional-commits-parser@npm:5.0.0"
|
resolution: "@types/conventional-commits-parser@npm:5.0.0"
|
||||||
@ -894,15 +570,6 @@ __metadata:
|
|||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
linkType: hard
|
||||||
|
|
||||||
"@types/jsonwebtoken@npm:^9.0.0":
|
|
||||||
version: 9.0.6
|
|
||||||
resolution: "@types/jsonwebtoken@npm:9.0.6"
|
|
||||||
dependencies:
|
|
||||||
"@types/node": "npm:*"
|
|
||||||
checksum: 10c0/9c29e3896e5fb6056e54d87514643e59e0cfb966ae25171a107776270195bba955f0373e98c8ed6450c145b18984f5df9cf0fcac360f382cec3c7c4d3510b202
|
|
||||||
languageName: node
|
|
||||||
linkType: hard
|
|
||||||
|
|
||||||
"@types/node-fetch@npm:2.6.11":
|
"@types/node-fetch@npm:2.6.11":
|
||||||
version: 2.6.11
|
version: 2.6.11
|
||||||
resolution: "@types/node-fetch@npm:2.6.11"
|
resolution: "@types/node-fetch@npm:2.6.11"
|
||||||
@ -1159,7 +826,7 @@ __metadata:
|
|||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
linkType: hard
|
||||||
|
|
||||||
"aggregate-error@npm:^3.0.0, aggregate-error@npm:^3.1.0":
|
"aggregate-error@npm:^3.0.0":
|
||||||
version: 3.1.0
|
version: 3.1.0
|
||||||
resolution: "aggregate-error@npm:3.1.0"
|
resolution: "aggregate-error@npm:3.1.0"
|
||||||
dependencies:
|
dependencies:
|
||||||
@ -1323,7 +990,6 @@ __metadata:
|
|||||||
fastify: "npm:^4.26.2"
|
fastify: "npm:^4.26.2"
|
||||||
node-fetch: "npm:^2.7.0"
|
node-fetch: "npm:^2.7.0"
|
||||||
nodemon: "npm:^3.1.0"
|
nodemon: "npm:^3.1.0"
|
||||||
octokit: "npm:^3.2.1"
|
|
||||||
rimraf: "npm:^5.0.5"
|
rimraf: "npm:^5.0.5"
|
||||||
ts-node: "npm:^10.9.2"
|
ts-node: "npm:^10.9.2"
|
||||||
tsconfig-paths: "npm:^4.2.0"
|
tsconfig-paths: "npm:^4.2.0"
|
||||||
@ -1422,13 +1088,6 @@ __metadata:
|
|||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
linkType: hard
|
||||||
|
|
||||||
"before-after-hook@npm:^2.2.0":
|
|
||||||
version: 2.2.3
|
|
||||||
resolution: "before-after-hook@npm:2.2.3"
|
|
||||||
checksum: 10c0/0488c4ae12df758ca9d49b3bb27b47fd559677965c52cae7b335784724fb8bf96c42b6e5ba7d7afcbc31facb0e294c3ef717cc41c5bc2f7bd9e76f8b90acd31c
|
|
||||||
languageName: node
|
|
||||||
linkType: hard
|
|
||||||
|
|
||||||
"binary-extensions@npm:^2.0.0":
|
"binary-extensions@npm:^2.0.0":
|
||||||
version: 2.3.0
|
version: 2.3.0
|
||||||
resolution: "binary-extensions@npm:2.3.0"
|
resolution: "binary-extensions@npm:2.3.0"
|
||||||
@ -1436,13 +1095,6 @@ __metadata:
|
|||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
linkType: hard
|
||||||
|
|
||||||
"bottleneck@npm:^2.15.3":
|
|
||||||
version: 2.19.5
|
|
||||||
resolution: "bottleneck@npm:2.19.5"
|
|
||||||
checksum: 10c0/b0f72e45b2e0f56a21ba720183f16bef8e693452fb0495d997fa354e42904353a94bd8fd429868e6751bc85e54b6755190519eed5a0ae0a94a5185209ae7c6d0
|
|
||||||
languageName: node
|
|
||||||
linkType: hard
|
|
||||||
|
|
||||||
"boxen@npm:7.0.0":
|
"boxen@npm:7.0.0":
|
||||||
version: 7.0.0
|
version: 7.0.0
|
||||||
resolution: "boxen@npm:7.0.0"
|
resolution: "boxen@npm:7.0.0"
|
||||||
@ -1500,20 +1152,6 @@ __metadata:
|
|||||||
languageName: unknown
|
languageName: unknown
|
||||||
linkType: soft
|
linkType: soft
|
||||||
|
|
||||||
"btoa-lite@npm:^1.0.0":
|
|
||||||
version: 1.0.0
|
|
||||||
resolution: "btoa-lite@npm:1.0.0"
|
|
||||||
checksum: 10c0/7a4f0568ae3c915464650f98fde7901ae07b13a333a614515a0c86876b3528670fafece28dfef9745d971a613bb83341823afb0c20c6f318b384c1e364b9eb95
|
|
||||||
languageName: node
|
|
||||||
linkType: hard
|
|
||||||
|
|
||||||
"buffer-equal-constant-time@npm:1.0.1":
|
|
||||||
version: 1.0.1
|
|
||||||
resolution: "buffer-equal-constant-time@npm:1.0.1"
|
|
||||||
checksum: 10c0/fb2294e64d23c573d0dd1f1e7a466c3e978fe94a4e0f8183937912ca374619773bef8e2aceb854129d2efecbbc515bbd0cc78d2734a3e3031edb0888531bbc8e
|
|
||||||
languageName: node
|
|
||||||
linkType: hard
|
|
||||||
|
|
||||||
"buffer-from@npm:^1.0.0":
|
"buffer-from@npm:^1.0.0":
|
||||||
version: 1.1.2
|
version: 1.1.2
|
||||||
resolution: "buffer-from@npm:1.1.2"
|
resolution: "buffer-from@npm:1.1.2"
|
||||||
@ -2013,13 +1651,6 @@ __metadata:
|
|||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
linkType: hard
|
||||||
|
|
||||||
"deprecation@npm:^2.0.0, deprecation@npm:^2.3.1":
|
|
||||||
version: 2.3.1
|
|
||||||
resolution: "deprecation@npm:2.3.1"
|
|
||||||
checksum: 10c0/23d688ba66b74d09b908c40a76179418acbeeb0bfdf218c8075c58ad8d0c315130cb91aa3dffb623aa3a411a3569ce56c6460de6c8d69071c17fe6dd2442f032
|
|
||||||
languageName: node
|
|
||||||
linkType: hard
|
|
||||||
|
|
||||||
"didyoumean@npm:^1.2.2":
|
"didyoumean@npm:^1.2.2":
|
||||||
version: 1.2.2
|
version: 1.2.2
|
||||||
resolution: "didyoumean@npm:1.2.2"
|
resolution: "didyoumean@npm:1.2.2"
|
||||||
@ -2085,15 +1716,6 @@ __metadata:
|
|||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
linkType: hard
|
||||||
|
|
||||||
"ecdsa-sig-formatter@npm:1.0.11":
|
|
||||||
version: 1.0.11
|
|
||||||
resolution: "ecdsa-sig-formatter@npm:1.0.11"
|
|
||||||
dependencies:
|
|
||||||
safe-buffer: "npm:^5.0.1"
|
|
||||||
checksum: 10c0/ebfbf19d4b8be938f4dd4a83b8788385da353d63307ede301a9252f9f7f88672e76f2191618fd8edfc2f24679236064176fab0b78131b161ee73daa37125408c
|
|
||||||
languageName: node
|
|
||||||
linkType: hard
|
|
||||||
|
|
||||||
"emoji-regex@npm:^10.3.0":
|
"emoji-regex@npm:^10.3.0":
|
||||||
version: 10.3.0
|
version: 10.3.0
|
||||||
resolution: "emoji-regex@npm:10.3.0"
|
resolution: "emoji-regex@npm:10.3.0"
|
||||||
@ -3276,45 +2898,6 @@ __metadata:
|
|||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
linkType: hard
|
||||||
|
|
||||||
"jsonwebtoken@npm:^9.0.2":
|
|
||||||
version: 9.0.2
|
|
||||||
resolution: "jsonwebtoken@npm:9.0.2"
|
|
||||||
dependencies:
|
|
||||||
jws: "npm:^3.2.2"
|
|
||||||
lodash.includes: "npm:^4.3.0"
|
|
||||||
lodash.isboolean: "npm:^3.0.3"
|
|
||||||
lodash.isinteger: "npm:^4.0.4"
|
|
||||||
lodash.isnumber: "npm:^3.0.3"
|
|
||||||
lodash.isplainobject: "npm:^4.0.6"
|
|
||||||
lodash.isstring: "npm:^4.0.1"
|
|
||||||
lodash.once: "npm:^4.0.0"
|
|
||||||
ms: "npm:^2.1.1"
|
|
||||||
semver: "npm:^7.5.4"
|
|
||||||
checksum: 10c0/d287a29814895e866db2e5a0209ce730cbc158441a0e5a70d5e940eb0d28ab7498c6bf45029cc8b479639bca94056e9a7f254e2cdb92a2f5750c7f358657a131
|
|
||||||
languageName: node
|
|
||||||
linkType: hard
|
|
||||||
|
|
||||||
"jwa@npm:^1.4.1":
|
|
||||||
version: 1.4.1
|
|
||||||
resolution: "jwa@npm:1.4.1"
|
|
||||||
dependencies:
|
|
||||||
buffer-equal-constant-time: "npm:1.0.1"
|
|
||||||
ecdsa-sig-formatter: "npm:1.0.11"
|
|
||||||
safe-buffer: "npm:^5.0.1"
|
|
||||||
checksum: 10c0/5c533540bf38702e73cf14765805a94027c66a0aa8b16bc3e89d8d905e61a4ce2791e87e21be97d1293a5ee9d4f3e5e47737e671768265ca4f25706db551d5e9
|
|
||||||
languageName: node
|
|
||||||
linkType: hard
|
|
||||||
|
|
||||||
"jws@npm:^3.2.2":
|
|
||||||
version: 3.2.2
|
|
||||||
resolution: "jws@npm:3.2.2"
|
|
||||||
dependencies:
|
|
||||||
jwa: "npm:^1.4.1"
|
|
||||||
safe-buffer: "npm:^5.0.1"
|
|
||||||
checksum: 10c0/e770704533d92df358adad7d1261fdecad4d7b66fa153ba80d047e03ca0f1f73007ce5ed3fbc04d2eba09ba6e7e6e645f351e08e5ab51614df1b0aa4f384dfff
|
|
||||||
languageName: node
|
|
||||||
linkType: hard
|
|
||||||
|
|
||||||
"keyv@npm:^4.5.3":
|
"keyv@npm:^4.5.3":
|
||||||
version: 4.5.4
|
version: 4.5.4
|
||||||
resolution: "keyv@npm:4.5.4"
|
resolution: "keyv@npm:4.5.4"
|
||||||
@ -3432,34 +3015,6 @@ __metadata:
|
|||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
linkType: hard
|
||||||
|
|
||||||
"lodash.includes@npm:^4.3.0":
|
|
||||||
version: 4.3.0
|
|
||||||
resolution: "lodash.includes@npm:4.3.0"
|
|
||||||
checksum: 10c0/7ca498b9b75bf602d04e48c0adb842dfc7d90f77bcb2a91a2b2be34a723ad24bc1c8b3683ec6b2552a90f216c723cdea530ddb11a3320e08fa38265703978f4b
|
|
||||||
languageName: node
|
|
||||||
linkType: hard
|
|
||||||
|
|
||||||
"lodash.isboolean@npm:^3.0.3":
|
|
||||||
version: 3.0.3
|
|
||||||
resolution: "lodash.isboolean@npm:3.0.3"
|
|
||||||
checksum: 10c0/0aac604c1ef7e72f9a6b798e5b676606042401dd58e49f051df3cc1e3adb497b3d7695635a5cbec4ae5f66456b951fdabe7d6b387055f13267cde521f10ec7f7
|
|
||||||
languageName: node
|
|
||||||
linkType: hard
|
|
||||||
|
|
||||||
"lodash.isinteger@npm:^4.0.4":
|
|
||||||
version: 4.0.4
|
|
||||||
resolution: "lodash.isinteger@npm:4.0.4"
|
|
||||||
checksum: 10c0/4c3e023a2373bf65bf366d3b8605b97ec830bca702a926939bcaa53f8e02789b6a176e7f166b082f9365bfec4121bfeb52e86e9040cb8d450e64c858583f61b7
|
|
||||||
languageName: node
|
|
||||||
linkType: hard
|
|
||||||
|
|
||||||
"lodash.isnumber@npm:^3.0.3":
|
|
||||||
version: 3.0.3
|
|
||||||
resolution: "lodash.isnumber@npm:3.0.3"
|
|
||||||
checksum: 10c0/2d01530513a1ee4f72dd79528444db4e6360588adcb0e2ff663db2b3f642d4bb3d687051ae1115751ca9082db4fdef675160071226ca6bbf5f0c123dbf0aa12d
|
|
||||||
languageName: node
|
|
||||||
linkType: hard
|
|
||||||
|
|
||||||
"lodash.isplainobject@npm:^4.0.6":
|
"lodash.isplainobject@npm:^4.0.6":
|
||||||
version: 4.0.6
|
version: 4.0.6
|
||||||
resolution: "lodash.isplainobject@npm:4.0.6"
|
resolution: "lodash.isplainobject@npm:4.0.6"
|
||||||
@ -3467,13 +3022,6 @@ __metadata:
|
|||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
linkType: hard
|
||||||
|
|
||||||
"lodash.isstring@npm:^4.0.1":
|
|
||||||
version: 4.0.1
|
|
||||||
resolution: "lodash.isstring@npm:4.0.1"
|
|
||||||
checksum: 10c0/09eaf980a283f9eef58ef95b30ec7fee61df4d6bf4aba3b5f096869cc58f24c9da17900febc8ffd67819b4e29de29793190e88dc96983db92d84c95fa85d1c92
|
|
||||||
languageName: node
|
|
||||||
linkType: hard
|
|
||||||
|
|
||||||
"lodash.kebabcase@npm:^4.1.1":
|
"lodash.kebabcase@npm:^4.1.1":
|
||||||
version: 4.1.1
|
version: 4.1.1
|
||||||
resolution: "lodash.kebabcase@npm:4.1.1"
|
resolution: "lodash.kebabcase@npm:4.1.1"
|
||||||
@ -3495,13 +3043,6 @@ __metadata:
|
|||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
linkType: hard
|
||||||
|
|
||||||
"lodash.once@npm:^4.0.0":
|
|
||||||
version: 4.1.1
|
|
||||||
resolution: "lodash.once@npm:4.1.1"
|
|
||||||
checksum: 10c0/46a9a0a66c45dd812fcc016e46605d85ad599fe87d71a02f6736220554b52ffbe82e79a483ad40f52a8a95755b0d1077fba259da8bfb6694a7abbf4a48f1fc04
|
|
||||||
languageName: node
|
|
||||||
linkType: hard
|
|
||||||
|
|
||||||
"lodash.snakecase@npm:^4.1.1":
|
"lodash.snakecase@npm:^4.1.1":
|
||||||
version: 4.1.1
|
version: 4.1.1
|
||||||
resolution: "lodash.snakecase@npm:4.1.1"
|
resolution: "lodash.snakecase@npm:4.1.1"
|
||||||
@ -3552,7 +3093,7 @@ __metadata:
|
|||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
linkType: hard
|
||||||
|
|
||||||
"lru-cache@npm:^10.0.0, lru-cache@npm:^10.0.1, lru-cache@npm:^10.2.0":
|
"lru-cache@npm:^10.0.1, lru-cache@npm:^10.2.0":
|
||||||
version: 10.2.2
|
version: 10.2.2
|
||||||
resolution: "lru-cache@npm:10.2.2"
|
resolution: "lru-cache@npm:10.2.2"
|
||||||
checksum: 10c0/402d31094335851220d0b00985084288136136992979d0e015f0f1697e15d1c86052d7d53ae86b614e5b058425606efffc6969a31a091085d7a2b80a8a1e26d6
|
checksum: 10c0/402d31094335851220d0b00985084288136136992979d0e015f0f1697e15d1c86052d7d53ae86b614e5b058425606efffc6969a31a091085d7a2b80a8a1e26d6
|
||||||
@ -3833,13 +3374,6 @@ __metadata:
|
|||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
linkType: hard
|
||||||
|
|
||||||
"ms@npm:^2.1.1":
|
|
||||||
version: 2.1.3
|
|
||||||
resolution: "ms@npm:2.1.3"
|
|
||||||
checksum: 10c0/d924b57e7312b3b63ad21fc5b3dc0af5e78d61a1fc7cfb5457edaf26326bf62be5307cc87ffb6862ef1c2b33b0233cdb5d4f01c4c958cc0d660948b65a287a48
|
|
||||||
languageName: node
|
|
||||||
linkType: hard
|
|
||||||
|
|
||||||
"mz@npm:^2.7.0":
|
"mz@npm:^2.7.0":
|
||||||
version: 2.7.0
|
version: 2.7.0
|
||||||
resolution: "mz@npm:2.7.0"
|
resolution: "mz@npm:2.7.0"
|
||||||
@ -4006,24 +3540,6 @@ __metadata:
|
|||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
linkType: hard
|
||||||
|
|
||||||
"octokit@npm:^3.2.1":
|
|
||||||
version: 3.2.1
|
|
||||||
resolution: "octokit@npm:3.2.1"
|
|
||||||
dependencies:
|
|
||||||
"@octokit/app": "npm:^14.0.2"
|
|
||||||
"@octokit/core": "npm:^5.0.0"
|
|
||||||
"@octokit/oauth-app": "npm:^6.0.0"
|
|
||||||
"@octokit/plugin-paginate-graphql": "npm:^4.0.0"
|
|
||||||
"@octokit/plugin-paginate-rest": "npm:11.3.1"
|
|
||||||
"@octokit/plugin-rest-endpoint-methods": "npm:13.2.2"
|
|
||||||
"@octokit/plugin-retry": "npm:^6.0.0"
|
|
||||||
"@octokit/plugin-throttling": "npm:^8.0.0"
|
|
||||||
"@octokit/request-error": "npm:^5.0.0"
|
|
||||||
"@octokit/types": "npm:^13.0.0"
|
|
||||||
checksum: 10c0/475575a30b351f2578f19f4d7c284c3928a0fd87f553a903436a6728d4d647ce93c8633e1f93cc4efe84ef9fcbfd9740f4198ec573323890084aa39ccf392a87
|
|
||||||
languageName: node
|
|
||||||
linkType: hard
|
|
||||||
|
|
||||||
"on-exit-leak-free@npm:^2.1.0":
|
"on-exit-leak-free@npm:^2.1.0":
|
||||||
version: 2.1.2
|
version: 2.1.2
|
||||||
resolution: "on-exit-leak-free@npm:2.1.2"
|
resolution: "on-exit-leak-free@npm:2.1.2"
|
||||||
@ -4038,7 +3554,7 @@ __metadata:
|
|||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
linkType: hard
|
||||||
|
|
||||||
"once@npm:^1.3.0, once@npm:^1.4.0":
|
"once@npm:^1.3.0":
|
||||||
version: 1.4.0
|
version: 1.4.0
|
||||||
resolution: "once@npm:1.4.0"
|
resolution: "once@npm:1.4.0"
|
||||||
dependencies:
|
dependencies:
|
||||||
@ -5473,23 +4989,6 @@ __metadata:
|
|||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
linkType: hard
|
||||||
|
|
||||||
"universal-github-app-jwt@npm:^1.1.2":
|
|
||||||
version: 1.1.2
|
|
||||||
resolution: "universal-github-app-jwt@npm:1.1.2"
|
|
||||||
dependencies:
|
|
||||||
"@types/jsonwebtoken": "npm:^9.0.0"
|
|
||||||
jsonwebtoken: "npm:^9.0.2"
|
|
||||||
checksum: 10c0/061d2a52c25f0a09a5ae40167e6006ba89510df9934070996d8ca3019afd34f7f28fbb74a93d1627beb4209faf04ec9173f0dc9ff351ee2ec42ab76cff389a80
|
|
||||||
languageName: node
|
|
||||||
linkType: hard
|
|
||||||
|
|
||||||
"universal-user-agent@npm:^6.0.0":
|
|
||||||
version: 6.0.1
|
|
||||||
resolution: "universal-user-agent@npm:6.0.1"
|
|
||||||
checksum: 10c0/5c9c46ffe19a975e11e6443640ed4c9e0ce48fcc7203325757a8414ac49940ebb0f4667f2b1fa561489d1eb22cb2d05a0f7c82ec20c5cba42e58e188fb19b187
|
|
||||||
languageName: node
|
|
||||||
linkType: hard
|
|
||||||
|
|
||||||
"update-check@npm:1.5.4":
|
"update-check@npm:1.5.4":
|
||||||
version: 1.5.4
|
version: 1.5.4
|
||||||
resolution: "update-check@npm:1.5.4"
|
resolution: "update-check@npm:1.5.4"
|
||||||
|
Loading…
Reference in New Issue
Block a user