Open source
commit
18efd30a26
@ -0,0 +1,2 @@
|
||||
data
|
||||
config.yml
|
@ -0,0 +1,8 @@
|
||||
# Default ignored files
|
||||
/shelf/
|
||||
/workspace.xml
|
||||
# Editor-based HTTP Client requests
|
||||
/httpRequests/
|
||||
# Datasource local storage ignored files
|
||||
/dataSources/
|
||||
/dataSources.local.xml
|
@ -0,0 +1,12 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<module type="WEB_MODULE" version="4">
|
||||
<component name="NewModuleRootManager">
|
||||
<content url="file://$MODULE_DIR$">
|
||||
<excludeFolder url="file://$MODULE_DIR$/temp" />
|
||||
<excludeFolder url="file://$MODULE_DIR$/.tmp" />
|
||||
<excludeFolder url="file://$MODULE_DIR$/tmp" />
|
||||
</content>
|
||||
<orderEntry type="inheritedJdk" />
|
||||
<orderEntry type="sourceFolder" forTests="false" />
|
||||
</component>
|
||||
</module>
|
@ -0,0 +1,7 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="DiscordProjectSettings">
|
||||
<option name="show" value="PROJECT_FILES" />
|
||||
<option name="description" value="" />
|
||||
</component>
|
||||
</project>
|
@ -0,0 +1,8 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="ProjectModuleManager">
|
||||
<modules>
|
||||
<module fileurl="file://$PROJECT_DIR$/.idea/autoreport.iml" filepath="$PROJECT_DIR$/.idea/autoreport.iml" />
|
||||
</modules>
|
||||
</component>
|
||||
</project>
|
@ -0,0 +1,6 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="VcsDirectoryMappings">
|
||||
<mapping directory="$PROJECT_DIR$" vcs="Git" />
|
||||
</component>
|
||||
</project>
|
@ -0,0 +1,14 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="WebResourcesPaths">
|
||||
<contentEntries>
|
||||
<entry url="file://$PROJECT_DIR$">
|
||||
<entryData>
|
||||
<resourceRoots>
|
||||
<path value="file://$PROJECT_DIR$/assets" />
|
||||
</resourceRoots>
|
||||
</entryData>
|
||||
</entry>
|
||||
</contentEntries>
|
||||
</component>
|
||||
</project>
|
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@ -0,0 +1,198 @@
|
||||
"use strict";
|
||||
var __importDefault = (this && this.__importDefault) || function (mod) {
|
||||
return (mod && mod.__esModule) ? mod : { "default": mod };
|
||||
};
|
||||
Object.defineProperty(exports, "__esModule", { value: true });
|
||||
exports.ReportEndpoint = void 0;
|
||||
const AutoreportBase_1 = __importDefault(require("./AutoreportBase"));
|
||||
const Authentication_1 = __importDefault(require("./Authentication"));
|
||||
const Report_1 = require("../types/Report");
|
||||
const node_fs_1 = require("node:fs");
|
||||
const UUID_1 = __importDefault(require("../types/UUID"));
|
||||
const Notification_1 = __importDefault(require("./Notification"));
|
||||
class APIEndpoint extends AutoreportBase_1.default {
|
||||
}
|
||||
class ReportEndpoint extends APIEndpoint {
|
||||
static refresh(req, res) {
|
||||
ReportEndpoint.reports = JSON.parse((0, node_fs_1.readFileSync)("./data/reports.json").toString());
|
||||
return res.status(200).json({
|
||||
code: 200,
|
||||
message: "OK."
|
||||
});
|
||||
}
|
||||
static post(req, res) {
|
||||
if ([null, undefined, ""].includes(req.body.service) ||
|
||||
[null, undefined, ""].includes(req.body.time) ||
|
||||
[null, undefined, ""].includes(req.body.severity) ||
|
||||
[null, undefined, "", {}].includes(req.body.error) ||
|
||||
[null, undefined, "", {}].includes(req.body.systemInfo)) {
|
||||
return res.status(400).json({
|
||||
code: 400,
|
||||
message: "Report information is missing."
|
||||
});
|
||||
}
|
||||
if ([null, undefined, ""].includes(req.body.error.message) ||
|
||||
[null, undefined, ""].includes(req.body.error.stacktrace)) {
|
||||
return res.status(400).json({
|
||||
code: 400,
|
||||
message: "Error information is missing."
|
||||
});
|
||||
}
|
||||
if ([null, undefined, ""].includes(req.body.systemInfo.pid) ||
|
||||
[null, undefined, ""].includes(req.body.systemInfo.user) ||
|
||||
[null, undefined, ""].includes(req.body.systemInfo.executable) ||
|
||||
[null, undefined, ""].includes(req.body.systemInfo.memoryUsed) ||
|
||||
[null, undefined, ""].includes(req.body.systemInfo.cpuTimes) ||
|
||||
[null, undefined, ""].includes(req.body.systemInfo.uptime) ||
|
||||
[null, undefined, ""].includes(req.body.systemInfo.systemUptime) ||
|
||||
[null, undefined, ""].includes(req.body.systemInfo.os)) {
|
||||
return res.status(400).json({
|
||||
code: 400,
|
||||
message: "System information is missing."
|
||||
});
|
||||
}
|
||||
let severity = Report_1.ReportSeverity.Medium;
|
||||
switch (req.body.severity.toString().toLowerCase()) {
|
||||
case "low":
|
||||
case "0":
|
||||
severity = Report_1.ReportSeverity.Low;
|
||||
break;
|
||||
case "medium":
|
||||
case "1":
|
||||
severity = Report_1.ReportSeverity.Medium;
|
||||
break;
|
||||
case "high":
|
||||
case "2":
|
||||
severity = Report_1.ReportSeverity.High;
|
||||
break;
|
||||
case "critical":
|
||||
case "3":
|
||||
severity = Report_1.ReportSeverity.Critical;
|
||||
break;
|
||||
case "fatal":
|
||||
case "4":
|
||||
severity = Report_1.ReportSeverity.Fatal;
|
||||
break;
|
||||
default:
|
||||
severity = Report_1.ReportSeverity.Medium;
|
||||
break;
|
||||
}
|
||||
let reportError = {
|
||||
message: req.body.error.message,
|
||||
stacktrace: req.body.error.stacktrace,
|
||||
logs: req.body.error.logs ?? null,
|
||||
potentialFix: null
|
||||
};
|
||||
let systemInfo = req.body.systemInfo;
|
||||
let report = {
|
||||
id: new UUID_1.default(),
|
||||
service: req.body.service,
|
||||
time: new Date(req.body.time),
|
||||
severity,
|
||||
response: Report_1.ReportResponse.None,
|
||||
error: reportError,
|
||||
systemInfo
|
||||
};
|
||||
ReportEndpoint.reports.push(report);
|
||||
(0, node_fs_1.writeFileSync)(AutoreportBase_1.default.getRoot() + "/data/reports.json", JSON.stringify(ReportEndpoint.reports));
|
||||
let notification = new Notification_1.default(report);
|
||||
notification.send().then(() => {
|
||||
res.status(201).json({
|
||||
code: 201,
|
||||
message: "Created."
|
||||
});
|
||||
});
|
||||
}
|
||||
static get(req, res) {
|
||||
if (!Authentication_1.default.checkAuthentication(req))
|
||||
return res.redirect("/oauth2/start");
|
||||
if ([null, undefined, ""].includes(req.query.id)) {
|
||||
return res.status(400).json({
|
||||
code: 400,
|
||||
message: "An ID must be provided."
|
||||
});
|
||||
}
|
||||
if (!ReportEndpoint.reports.some(report => report.id === req.query.id)) {
|
||||
return res.status(404).json({
|
||||
code: 404,
|
||||
message: "Report with that ID does not exist."
|
||||
});
|
||||
}
|
||||
res.status(200).json(ReportEndpoint.reports.find(report => report.id === req.query.id));
|
||||
}
|
||||
static getMany(req, res) {
|
||||
if (!Authentication_1.default.checkAuthentication(req))
|
||||
return res.redirect("/oauth2/start");
|
||||
let page = parseInt(req.query.page ?? 0);
|
||||
let size = parseInt(req.query.size ?? 10);
|
||||
if (isNaN(page)) {
|
||||
return res.status(400).json({
|
||||
code: 400,
|
||||
message: "Page must be a number."
|
||||
});
|
||||
}
|
||||
if (isNaN(size)) {
|
||||
return res.status(400).json({
|
||||
code: 400,
|
||||
message: "Size must be a number."
|
||||
});
|
||||
}
|
||||
// task: split the array into chunks of `size`
|
||||
// good luck <3
|
||||
let reportsRequested = ReportEndpoint.reports.slice((size * page), size);
|
||||
res.status(200).json({
|
||||
reports: reportsRequested,
|
||||
page: page,
|
||||
pageCount: Math.ceil(ReportEndpoint.reports.length / size)
|
||||
});
|
||||
}
|
||||
static patch(req, res) {
|
||||
if (!Authentication_1.default.checkAuthentication(req))
|
||||
return res.redirect("/oauth2/start");
|
||||
if ([null, undefined, ""].includes(req.query.id) ||
|
||||
[null, undefined, ""].includes(req.query.response)) {
|
||||
return res.status(400).json({
|
||||
code: 400,
|
||||
message: "Report infomation is missing."
|
||||
});
|
||||
}
|
||||
if (!ReportEndpoint.reports.some(report => report.id === req.query.id)) {
|
||||
return res.status(404).json({
|
||||
code: 404,
|
||||
message: "That report does not exist."
|
||||
});
|
||||
}
|
||||
let reportIndex = ReportEndpoint.reports.findIndex(report => report.id === req.query.id);
|
||||
let response;
|
||||
switch (req.query.response.toString().toLowerCase()) {
|
||||
case "none":
|
||||
case "0":
|
||||
response = Report_1.ReportResponse.None;
|
||||
break;
|
||||
case "acknowledged":
|
||||
case "1":
|
||||
response = Report_1.ReportResponse.Acknowledged;
|
||||
break;
|
||||
case "ignored":
|
||||
case "2":
|
||||
response = Report_1.ReportResponse.Ignored;
|
||||
break;
|
||||
case "stfu":
|
||||
case "3":
|
||||
response = Report_1.ReportResponse.STFU;
|
||||
break;
|
||||
default:
|
||||
response = Report_1.ReportResponse.None;
|
||||
break;
|
||||
}
|
||||
ReportEndpoint.reports[reportIndex].response = response;
|
||||
(0, node_fs_1.writeFileSync)(AutoreportBase_1.default.getRoot() + "/data/reports.json", JSON.stringify(ReportEndpoint.reports));
|
||||
res.status(200).json({
|
||||
code: 200,
|
||||
message: "Updated."
|
||||
});
|
||||
}
|
||||
}
|
||||
exports.ReportEndpoint = ReportEndpoint;
|
||||
ReportEndpoint.reports = JSON.parse((0, node_fs_1.readFileSync)("./data/reports.json").toString());
|
||||
//# sourceMappingURL=API.js.map
|
File diff suppressed because one or more lines are too long
@ -0,0 +1,86 @@
|
||||
"use strict";
|
||||
var __importDefault = (this && this.__importDefault) || function (mod) {
|
||||
return (mod && mod.__esModule) ? mod : { "default": mod };
|
||||
};
|
||||
Object.defineProperty(exports, "__esModule", { value: true });
|
||||
const AutoreportBase_1 = __importDefault(require("./AutoreportBase"));
|
||||
const axios_1 = __importDefault(require("axios"));
|
||||
const node_fs_1 = require("node:fs");
|
||||
const crypto_1 = require("crypto");
|
||||
class Authentication extends AutoreportBase_1.default {
|
||||
static getToken(token) {
|
||||
let tokens = JSON.parse((0, node_fs_1.readFileSync)(AutoreportBase_1.default.getRoot() + "/data/tokens.json").toString());
|
||||
if (Object.keys(tokens).includes(token) && new Date(tokens[token].date).getTime() - new Date().getTime() <= 31000000) {
|
||||
return tokens[token].info;
|
||||
}
|
||||
else {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
static saveToken(userInfo) {
|
||||
let tokens = JSON.parse((0, node_fs_1.readFileSync)(AutoreportBase_1.default.getRoot() + "/data/tokens.json").toString());
|
||||
let token = (0, crypto_1.randomBytes)(64).toString("base64url");
|
||||
tokens[token] = {
|
||||
date: new Date().getTime(),
|
||||
info: userInfo
|
||||
};
|
||||
(0, node_fs_1.writeFileSync)(AutoreportBase_1.default.getRoot() + "/data/tokens.json", JSON.stringify(tokens));
|
||||
return token;
|
||||
}
|
||||
static startFlow(req, res) {
|
||||
res.redirect(`${AutoreportBase_1.default.config.authentication.server}/api/rest/oauth2/auth?client_id=${AutoreportBase_1.default.config.authentication.id}&response_type=code&redirect_uri=${AutoreportBase_1.default.config.authentication.redirect}&scope=Hub&request_credentials=default&access_type=offline`);
|
||||
}
|
||||
static checkAuthentication(req) {
|
||||
let _cookies = req.headers.cookie ?? "";
|
||||
let _tokens = _cookies.split(";").map(i => i.trim().split("=")).filter(i => i[0] === "AutoreportToken");
|
||||
let __tokens = _tokens[0] ?? [];
|
||||
let token = __tokens[1] ?? null;
|
||||
return !(!token || !this.getToken(token));
|
||||
}
|
||||
static async callback(req, res) {
|
||||
if (!req.query.code) {
|
||||
res.redirect("/");
|
||||
}
|
||||
let token = (await axios_1.default.post(`${AutoreportBase_1.default.config.authentication.server}/api/rest/oauth2/token`, `grant_type=authorization_code&redirect_uri=${encodeURIComponent(AutoreportBase_1.default.config.authentication.redirect)}&code=${req.query.code}`, {
|
||||
headers: {
|
||||
'Authorization': `Basic ${Buffer.from(`${AutoreportBase_1.default.config.authentication.id}:${AutoreportBase_1.default.config.authentication.secret}`).toString("base64")}`,
|
||||
'Accept': "application/json",
|
||||
'Content-Type': "application/x-www-form-urlencoded"
|
||||
}
|
||||
})).data.access_token;
|
||||
let userInfo = (await axios_1.default.get(`${AutoreportBase_1.default.config.authentication.server}/api/rest/users/me`, {
|
||||
headers: {
|
||||
'Authorization': `Bearer ${token}`,
|
||||
'Accept': "application/json"
|
||||
}
|
||||
})).data;
|
||||
let userToken = Authentication.saveToken(userInfo);
|
||||
res.cookie('AutoreportToken', userToken, { maxAge: 31000000, httpOnly: true });
|
||||
res.redirect("/");
|
||||
}
|
||||
static testEndpoint(req, res) {
|
||||
if (Authentication.checkAuthentication(req)) {
|
||||
res.send("Authenticated");
|
||||
}
|
||||
else {
|
||||
res.send("NOT authenticated");
|
||||
}
|
||||
}
|
||||
static protectedAPI(req, res, next) {
|
||||
if ([null, undefined, ""].includes(req.get("authorization"))) {
|
||||
return res.status(401).json({
|
||||
code: 401,
|
||||
message: "Please provide an Authorization header."
|
||||
});
|
||||
}
|
||||
if (req.get("authorization") !== AutoreportBase_1.default.config.api.token) {
|
||||
return res.status(403).json({
|
||||
code: 403,
|
||||
message: "You do not have permission to use this endpoint."
|
||||
});
|
||||
}
|
||||
next();
|
||||
}
|
||||
}
|
||||
exports.default = Authentication;
|
||||
//# sourceMappingURL=Authentication.js.map
|
@ -0,0 +1 @@
|
||||
{"version":3,"file":"Authentication.js","sourceRoot":"","sources":["../../src/core/Authentication.ts"],"names":[],"mappings":"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"}
|
@ -0,0 +1,86 @@
|
||||
"use strict";
|
||||
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
||||
if (k2 === undefined) k2 = k;
|
||||
var desc = Object.getOwnPropertyDescriptor(m, k);
|
||||
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
||||
desc = { enumerable: true, get: function() { return m[k]; } };
|
||||
}
|
||||
Object.defineProperty(o, k2, desc);
|
||||
}) : (function(o, m, k, k2) {
|
||||
if (k2 === undefined) k2 = k;
|
||||
o[k2] = m[k];
|
||||
}));
|
||||
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
||||
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
||||
}) : function(o, v) {
|
||||
o["default"] = v;
|
||||
});
|
||||
var __importStar = (this && this.__importStar) || function (mod) {
|
||||
if (mod && mod.__esModule) return mod;
|
||||
var result = {};
|
||||
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
||||
__setModuleDefault(result, mod);
|
||||
return result;
|
||||
};
|
||||
var __importDefault = (this && this.__importDefault) || function (mod) {
|
||||
return (mod && mod.__esModule) ? mod : { "default": mod };
|
||||
};
|
||||
Object.defineProperty(exports, "__esModule", { value: true });
|
||||
const AutoreportBase_1 = __importDefault(require("./AutoreportBase"));
|
||||
const express_1 = __importDefault(require("express"));
|
||||
const Authentication_1 = __importDefault(require("./Authentication"));
|
||||
const node_fs_1 = require("node:fs");
|
||||
const API = __importStar(require("./API"));
|
||||
class Autoreport extends AutoreportBase_1.default {
|
||||
constructor() {
|
||||
const app = (0, express_1.default)();
|
||||
app.use(express_1.default.static(AutoreportBase_1.default.getRoot() + "/assets"));
|
||||
app.use(express_1.default.json());
|
||||
app.set('view engine', 'ejs');
|
||||
app.get("/", (req, res) => {
|
||||
if (!Authentication_1.default.checkAuthentication(req))
|
||||
return res.redirect("/oauth2/start");
|
||||
let reports = JSON.parse((0, node_fs_1.readFileSync)("./data/reports.json").toString());
|
||||
res.render("index", { reports });
|
||||
});
|
||||
app.get("/oauth2/start", (req, res) => {
|
||||
Authentication_1.default.startFlow(req, res);
|
||||
});
|
||||
app.get("/oauth2/callback", (req, res) => {
|
||||
Authentication_1.default.callback(req, res);
|
||||
});
|
||||
app.post("/api/reports/refresh", (req, res) => {
|
||||
API.ReportEndpoint.refresh(req, res);
|
||||
});
|
||||
// API methods (public)
|
||||
app.get("/api/report", (req, res) => {
|
||||
API.ReportEndpoint.get(req, res);
|
||||
});
|
||||
app.get("/api/reports", (req, res) => {
|
||||
API.ReportEndpoint.getMany(req, res);
|
||||
});
|
||||
// API methods (private, need privateauth.equestria.dev authentication)
|
||||
app.patch("/api/report", (req, res) => {
|
||||
API.ReportEndpoint.patch(req, res);
|
||||
});
|
||||
// API methods (private, need token authentication)
|
||||
app.post("/api/report", Authentication_1.default.protectedAPI, (req, res) => {
|
||||
API.ReportEndpoint.post(req, res);
|
||||
});
|
||||
app.get("/oauth2/test", (req, res) => {
|
||||
Authentication_1.default.testEndpoint(req, res);
|
||||
});
|
||||
app.listen(34512);
|
||||
// To setup port forwarding:
|
||||
// - Ctrl+Shift+K/Cmd+Shift+K
|
||||
// - "Forward port"
|
||||
// - "34512:34512"
|
||||
// - You can now access it from http://localhost:34512
|
||||
console.log("Listening!");
|
||||
console.log(" - Public URL: http://localhost:34512");
|
||||
console.log(" - OAuth2 test: http://localhost:34512/oauth2/start");
|
||||
super();
|
||||
}
|
||||
}
|
||||
exports.default = Autoreport;
|
||||
//# sourceMappingURL=Autoreport.js.map
|
@ -0,0 +1 @@
|
||||
{"version":3,"file":"Autoreport.js","sourceRoot":"","sources":["../../src/core/Autoreport.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,sEAA8C;AAC9C,sDAA8B;AAC9B,sEAA8C;AAE9C,qCAAqC;AAErC,2CAA6B;AAE7B,MAAqB,UAAW,SAAQ,wBAAc;IAClD;QACI,MAAM,GAAG,GAAG,IAAA,iBAAO,GAAE,CAAC;QAEtB,GAAG,CAAC,GAAG,CAAC,iBAAO,CAAC,MAAM,CAAC,wBAAc,CAAC,OAAO,EAAE,GAAG,SAAS,CAAC,CAAC,CAAC;QAC9D,GAAG,CAAC,GAAG,CAAC,iBAAO,CAAC,IAAI,EAAE,CAAC,CAAC;QACxB,GAAG,CAAC,GAAG,CAAC,aAAa,EAAE,KAAK,CAAC,CAAC;QAE9B,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;YACtB,IAAI,CAAC,wBAAc,CAAC,mBAAmB,CAAC,GAAG,CAAC;gBAAE,OAAO,GAAG,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC;YAEnF,IAAI,OAAO,GAAa,IAAI,CAAC,KAAK,CAAC,IAAA,sBAAY,EAAC,qBAAqB,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAA;YAElF,GAAG,CAAC,MAAM,CAAC,OAAO,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC;QACrC,CAAC,CAAC,CAAC;QAEH,GAAG,CAAC,GAAG,CAAC,eAAe,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;YAClC,wBAAc,CAAC,SAAS,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;QACvC,CAAC,CAAC,CAAC;QAEH,GAAG,CAAC,GAAG,CAAC,kBAAkB,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;YACrC,wBAAc,CAAC,QAAQ,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;QACtC,CAAC,CAAC,CAAC;QAEH,GAAG,CAAC,IAAI,CAAC,sBAAsB,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;YAC1C,GAAG,CAAC,cAAc,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;QACzC,CAAC,CAAC,CAAA;QAEF,uBAAuB;QACvB,GAAG,CAAC,GAAG,CAAC,aAAa,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;YAChC,GAAG,CAAC,cAAc,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;QACrC,CAAC,CAAC,CAAC;QAEH,GAAG,CAAC,GAAG,CAAC,cAAc,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;YACjC,GAAG,CAAC,cAAc,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;QACzC,CAAC,CAAC,CAAC;QAEH,uEAAuE;QACvE,GAAG,CAAC,KAAK,CAAC,aAAa,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;YAClC,GAAG,CAAC,cAAc,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;QACvC,CAAC,CAAC,CAAC;QAEH,mDAAmD;QACnD,GAAG,CAAC,IAAI,CAAC,aAAa,EAAE,wBAAc,CAAC,YAAY,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;YAC9D,GAAG,CAAC,cAAc,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;QACtC,CAAC,CAAC,CAAC;QAEH,GAAG,CAAC,GAAG,CAAC,cAAc,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;YACjC,wBAAc,CAAC,YAAY,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;QAC1C,CAAC,CAAC,CAAA;QAEF,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAElB,4BAA4B;QAC5B,6BAA6B;QAC7B,mBAAmB;QACnB,kBAAkB;QAClB,sDAAsD;QAEtD,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;QAC1B,OAAO,CAAC,GAAG,CAAC,yCAAyC,CAAC,CAAC;QACvD,OAAO,CAAC,GAAG,CAAC,sDAAsD,CAAC,CAAC;QAEpE,KAAK,EAAE,CAAC;IACZ,CAAC;CACJ;AAjED,6BAiEC"}
|
@ -0,0 +1,15 @@
|
||||
"use strict";
|
||||
var __importDefault = (this && this.__importDefault) || function (mod) {
|
||||
return (mod && mod.__esModule) ? mod : { "default": mod };
|
||||
};
|
||||
Object.defineProperty(exports, "__esModule", { value: true });
|
||||
const yaml_1 = __importDefault(require("yaml"));
|
||||
const node_fs_1 = require("node:fs");
|
||||
class AutoreportBase {
|
||||
static getRoot() {
|
||||
return __dirname + "/../../";
|
||||
}
|
||||
}
|
||||
exports.default = AutoreportBase;
|
||||
AutoreportBase.config = yaml_1.default.parse((0, node_fs_1.readFileSync)(AutoreportBase.getRoot() + "/config.yml").toString());
|
||||
//# sourceMappingURL=AutoreportBase.js.map
|
@ -0,0 +1 @@
|
||||
{"version":3,"file":"AutoreportBase.js","sourceRoot":"","sources":["../../src/core/AutoreportBase.ts"],"names":[],"mappings":";;;;;AAAA,gDAAwB;AACxB,qCAAuC;AAEvC,MAAqB,cAAc;IACxB,MAAM,CAAC,OAAO;QACjB,OAAO,SAAS,GAAG,SAAS,CAAC;IACjC,CAAC;;AAHL,iCAMC;AADiB,qBAAM,GAAG,cAAI,CAAC,KAAK,CAAC,IAAA,sBAAY,EAAC,cAAc,CAAC,OAAO,EAAE,GAAG,aAAa,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC"}
|
@ -0,0 +1,51 @@
|
||||
"use strict";
|
||||
var __importDefault = (this && this.__importDefault) || function (mod) {
|
||||
return (mod && mod.__esModule) ? mod : { "default": mod };
|
||||
};
|
||||
Object.defineProperty(exports, "__esModule", { value: true });
|
||||
const AutoreportBase_1 = __importDefault(require("./AutoreportBase"));
|
||||
const Report_1 = require("../types/Report");
|
||||
class Notification extends AutoreportBase_1.default {
|
||||
constructor(report) {
|
||||
super();
|
||||
this.service = report.service;
|
||||
this.report = report;
|
||||
}
|
||||
async send() {
|
||||
let message;
|
||||
switch (this.report.severity) {
|
||||
case Report_1.ReportSeverity.Low:
|
||||
message = "Service " + this.service + " has encountered a minor error";
|
||||
break;
|
||||
case Report_1.ReportSeverity.Medium:
|
||||
message = "Service " + this.service + " has encountered an error";
|
||||
break;
|
||||
case Report_1.ReportSeverity.High:
|
||||
message = "Service " + this.service + " has encountered a major error";
|
||||
break;
|
||||
case Report_1.ReportSeverity.Critical:
|
||||
message = "Service " + this.service + " has encountered a critical error";
|
||||
break;
|
||||
case Report_1.ReportSeverity.Fatal:
|
||||
message = "Service " + this.service + " has encountered a fatal error";
|
||||
break;
|
||||
}
|
||||
await fetch("https://" + AutoreportBase_1.default.config.notifications.server, {
|
||||
method: "POST",
|
||||
body: JSON.stringify({
|
||||
topic: AutoreportBase_1.default.config.notifications.topic,
|
||||
message,
|
||||
title: "A service encountered an error",
|
||||
tags: ["crash", "service:" + this.service],
|
||||
priority: 3,
|
||||
actions: [{ "action": "view", "label": "Open report", "url": AutoreportBase_1.default.config.base + "/#/report/" + this.report.id }]
|
||||
}),
|
||||
headers: {
|
||||
"Authorization": "Basic " + Buffer.from(AutoreportBase_1.default.config.notifications.user + ":" + AutoreportBase_1.default.config.notifications.password).toString("base64"),
|
||||
"Content-Type": "application/json"
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
exports.default = Notification;
|
||||
//# sourceMappingURL=Notification.js.map
|
@ -0,0 +1 @@
|
||||
{"version":3,"file":"Notification.js","sourceRoot":"","sources":["../../src/core/Notification.ts"],"names":[],"mappings":";;;;;AAAA,sEAA8C;AAC9C,4CAAuD;AAEvD,MAAqB,YAAa,SAAQ,wBAAc;IAIpD,YAAY,MAAc;QACtB,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC;QAC9B,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACzB,CAAC;IAEM,KAAK,CAAC,IAAI;QACb,IAAI,OAAe,CAAC;QAEpB,QAAQ,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE;YAC1B,KAAK,uBAAc,CAAC,GAAG;gBAAE,OAAO,GAAG,UAAU,GAAG,IAAI,CAAC,OAAO,GAAG,gCAAgC,CAAC;gBAAC,MAAM;YACvG,KAAK,uBAAc,CAAC,MAAM;gBAAE,OAAO,GAAG,UAAU,GAAG,IAAI,CAAC,OAAO,GAAG,2BAA2B,CAAC;gBAAC,MAAM;YACrG,KAAK,uBAAc,CAAC,IAAI;gBAAE,OAAO,GAAG,UAAU,GAAG,IAAI,CAAC,OAAO,GAAG,gCAAgC,CAAC;gBAAC,MAAM;YACxG,KAAK,uBAAc,CAAC,QAAQ;gBAAE,OAAO,GAAG,UAAU,GAAG,IAAI,CAAC,OAAO,GAAG,mCAAmC,CAAC;gBAAC,MAAM;YAC/G,KAAK,uBAAc,CAAC,KAAK;gBAAE,OAAO,GAAG,UAAU,GAAG,IAAI,CAAC,OAAO,GAAG,gCAAgC,CAAC;gBAAC,MAAM;SAC5G;QAED,MAAM,KAAK,CAAC,UAAU,GAAG,wBAAc,CAAC,MAAM,CAAC,aAAa,CAAC,MAAM,EAAE;YACjE,MAAM,EAAE,MAAM;YACd,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;gBACjB,KAAK,EAAE,wBAAc,CAAC,MAAM,CAAC,aAAa,CAAC,KAAK;gBAChD,OAAO;gBACP,KAAK,EAAE,gCAAgC;gBACvC,IAAI,EAAE,CAAE,OAAO,EAAE,UAAU,GAAG,IAAI,CAAC,OAAO,CAAE;gBAC5C,QAAQ,EAAE,CAAC;gBACX,OAAO,EAAE,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,aAAa,EAAE,KAAK,EAAE,wBAAc,CAAC,MAAM,CAAC,IAAI,GAAG,YAAY,GAAG,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC;aAC7H,CAAC;YACF,OAAO,EAAE;gBACL,eAAe,EAAE,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,wBAAc,CAAC,MAAM,CAAC,aAAa,CAAC,IAAI,GAAG,GAAG,GAAG,wBAAc,CAAC,MAAM,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC;gBACzJ,cAAc,EAAE,kBAAkB;aACrC;SACJ,CAAC,CAAA;IACN,CAAC;CACJ;AArCD,+BAqCC"}
|
@ -0,0 +1,33 @@
|
||||
"use strict";
|
||||
var __importDefault = (this && this.__importDefault) || function (mod) {
|
||||
return (mod && mod.__esModule) ? mod : { "default": mod };
|
||||
};
|
||||
Object.defineProperty(exports, "__esModule", { value: true });
|
||||
const Autoreport_1 = __importDefault(require("./core/Autoreport"));
|
||||
new Autoreport_1.default();
|
||||
// you need to add topic "crashes" to ntfy (make sure you select use another server)
|
||||
// mhm!
|
||||
// done
|
||||
// so when we'll test it it should work
|
||||
// mhm!
|
||||
// don't we need ejs?
|
||||
// probably, installing it
|
||||
// epic hehe
|
||||
// installed
|
||||
// is there a module you use to interface with the notifications?
|
||||
// it's just HTTP requests
|
||||
// okay, so here's the requirements
|
||||
// express, superagent, why not axios instead?
|
||||
// sure hehe
|
||||
// installed all that
|
||||
// epic, server time
|
||||
// oh wait we need dotenv to store the api token in .env
|
||||
// why not just use a config file
|
||||
// don't want to push the config file to the repo
|
||||
// add it to .gitignore
|
||||
// which i currently cannot see
|
||||
// because it doesn't exist -c-
|
||||
// oh
|
||||
// trying to not have a coughing fit while programming rn
|
||||
// .c.
|
||||
//# sourceMappingURL=index.js.map
|
@ -0,0 +1 @@
|
||||
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;AAAA,mEAA2C;AAE3C,IAAI,oBAAU,EAAE,CAAC;AAEjB,oFAAoF;AACpF,OAAO;AACP,OAAO;AACP,uCAAuC;AACvC,OAAO;AAGP,qBAAqB;AACrB,0BAA0B;AAC1B,YAAY;AACZ,YAAY;AAEZ,iEAAiE;AACjE,0BAA0B;AAC1B,mCAAmC;AACnC,8CAA8C;AAC9C,YAAY;AACZ,qBAAqB;AACrB,oBAAoB;AACpB,wDAAwD;AACxD,iCAAiC;AACjC,iDAAiD;AACjD,uBAAuB;AACvB,+BAA+B;AAC/B,+BAA+B;AAC/B,KAAK;AACL,yDAAyD;AACzD,MAAM"}
|
@ -0,0 +1,37 @@
|
||||
"use strict";
|
||||
Object.defineProperty(exports, "__esModule", { value: true });
|
||||
exports.ProcessState = exports.ReportResponse = exports.ReportSeverity = void 0;
|
||||
var ReportSeverity;
|
||||
(function (ReportSeverity) {
|
||||
// Low - something went wrong where it shouldn't, but it's not that bad
|
||||
// Medium - something went wrong where it shouldn't, should be looked into
|
||||
// High - something went wrong where it shouldn't, must be looked into
|
||||
// Critical - something went wrong where it really shouldn't of, must be looked into right that moment
|
||||
// Fatal - something went so wrong that the service will not recover without help, must be looked into right that moment
|
||||
ReportSeverity[ReportSeverity["Low"] = 0] = "Low";
|
||||
ReportSeverity[ReportSeverity["Medium"] = 1] = "Medium";
|
||||
ReportSeverity[ReportSeverity["High"] = 2] = "High";
|
||||
ReportSeverity[ReportSeverity["Critical"] = 3] = "Critical";
|
||||
ReportSeverity[ReportSeverity["Fatal"] = 4] = "Fatal";
|
||||
})(ReportSeverity = exports.ReportSeverity || (exports.ReportSeverity = {}));
|
||||
var ReportResponse;
|
||||
(function (ReportResponse) {
|
||||
// None - not been responded to yet
|
||||
// Acknowledged - report has been acknowledged
|
||||
// Ignored - report has been ignored
|
||||
// STFU - "Shut The Fuck Up", we're already aware of this please stop telling us
|
||||
ReportResponse[ReportResponse["None"] = 0] = "None";
|
||||
ReportResponse[ReportResponse["Acknowledged"] = 1] = "Acknowledged";
|
||||
ReportResponse[ReportResponse["Ignored"] = 2] = "Ignored";
|
||||
ReportResponse[ReportResponse["STFU"] = 3] = "STFU";
|
||||
})(ReportResponse = exports.ReportResponse || (exports.ReportResponse = {}));
|
||||
var ProcessState;
|
||||
(function (ProcessState) {
|
||||
ProcessState[ProcessState["Stopped"] = 0] = "Stopped";
|
||||
ProcessState[ProcessState["Running"] = 1] = "Running";
|
||||
ProcessState[ProcessState["Starting"] = 2] = "Starting";
|
||||
ProcessState[ProcessState["Idle"] = 3] = "Idle";
|
||||
ProcessState[ProcessState["Blocked"] = 4] = "Blocked";
|
||||
ProcessState[ProcessState["Stopping"] = 5] = "Stopping";
|
||||
})(ProcessState = exports.ProcessState || (exports.ProcessState = {}));
|
||||
//# sourceMappingURL=Report.js.map
|
@ -0,0 +1 @@
|
||||
{"version":3,"file":"Report.js","sourceRoot":"","sources":["../../src/types/Report.ts"],"names":[],"mappings":";;;AAkCA,IAAY,cAYX;AAZD,WAAY,cAAc;IACtB,4EAA4E;IAC5E,4EAA4E;IAC5E,0EAA0E;IAC1E,sGAAsG;IACtG,2HAA2H;IAE3H,iDAAG,CAAA;IACH,uDAAM,CAAA;IACN,mDAAI,CAAA;IACJ,2DAAQ,CAAA;IACR,qDAAK,CAAA;AACT,CAAC,EAZW,cAAc,GAAd,sBAAc,KAAd,sBAAc,QAYzB;AAED,IAAY,cAUX;AAVD,WAAY,cAAc;IACtB,2CAA2C;IAC3C,8CAA8C;IAC9C,yCAAyC;IACzC,wFAAwF;IAExF,mDAAI,CAAA;IACJ,mEAAY,CAAA;IACZ,yDAAO,CAAA;IACP,mDAAI,CAAA;AACR,CAAC,EAVW,cAAc,GAAd,sBAAc,KAAd,sBAAc,QAUzB;AAED,IAAY,YAOX;AAPD,WAAY,YAAY;IACpB,qDAAO,CAAA;IACP,qDAAO,CAAA;IACP,uDAAQ,CAAA;IACR,+CAAI,CAAA;IACJ,qDAAO,CAAA;IACP,uDAAQ,CAAA;AACZ,CAAC,EAPW,YAAY,GAAZ,oBAAY,KAAZ,oBAAY,QAOvB"}
|
@ -0,0 +1,13 @@
|
||||
"use strict";
|
||||
var __importDefault = (this && this.__importDefault) || function (mod) {
|
||||
return (mod && mod.__esModule) ? mod : { "default": mod };
|
||||
};
|
||||
Object.defineProperty(exports, "__esModule", { value: true });
|
||||
const uuid_v4_1 = __importDefault(require("uuid-v4"));
|
||||
class UUID extends String {
|
||||
constructor() {
|
||||
super((0, uuid_v4_1.default)());
|
||||
}
|
||||
}
|
||||
exports.default = UUID;
|
||||
//# sourceMappingURL=UUID.js.map
|
@ -0,0 +1 @@
|
||||
{"version":3,"file":"UUID.js","sourceRoot":"","sources":["../../src/types/UUID.ts"],"names":[],"mappings":";;;;;AAAA,sDAA2B;AAE3B,MAAqB,IAAK,SAAQ,MAAM;IACpC;QACI,KAAK,CAAC,IAAA,iBAAI,GAAE,CAAC,CAAC;IAClB,CAAC;CACJ;AAJD,uBAIC"}
|
@ -0,0 +1 @@
|
||||
../ejs/bin/cli.js
|
@ -0,0 +1 @@
|
||||
../jake/bin/cli.js
|
@ -0,0 +1 @@
|
||||
../mime/cli.js
|
@ -0,0 +1 @@
|
||||
../typescript/bin/tsc
|
@ -0,0 +1 @@
|
||||
../typescript/bin/tsserver
|
@ -0,0 +1,845 @@
|
||||
{
|
||||
"name": "autoreport",
|
||||
"version": "0.0.0",
|
||||
"lockfileVersion": 2,
|
||||
"requires": true,
|
||||
"packages": {
|
||||
"node_modules/@types/node": {
|
||||
"version": "18.11.3",
|
||||
"resolved": "https://registry.npmjs.org/@types/node/-/node-18.11.3.tgz",
|
||||
"integrity": "sha512-fNjDQzzOsZeKZu5NATgXUPsaFaTxeRgFXoosrHivTl8RGeV733OLawXsGfEk9a8/tySyZUyiZ6E8LcjPFZ2y1A=="
|
||||
},
|
||||
"node_modules/accepts": {
|
||||
"version": "1.3.8",
|
||||
"resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz",
|
||||
"integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==",
|
||||
"dependencies": {
|
||||
"mime-types": "~2.1.34",
|
||||
"negotiator": "0.6.3"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">= 0.6"
|
||||
}
|
||||
},
|
||||
"node_modules/ansi-styles": {
|
||||
"version": "4.3.0",
|
||||
"resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
|
||||
"integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
|
||||
"dependencies": {
|
||||
"color-convert": "^2.0.1"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=8"
|
||||
},
|
||||
"funding": {
|
||||
"url": "https://github.com/chalk/ansi-styles?sponsor=1"
|
||||
}
|
||||
},
|
||||
"node_modules/array-flatten": {
|
||||
"version": "1.1.1",
|
||||
"resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz",
|
||||
"integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg=="
|
||||
},
|
||||
"node_modules/async": {
|
||||
"version": "3.2.4",
|
||||
"resolved": "https://registry.npmjs.org/async/-/async-3.2.4.tgz",
|
||||
"integrity": "sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ=="
|
||||
},
|
||||
"node_modules/asynckit": {
|
||||
"version": "0.4.0",
|
||||
"resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz",
|
||||
"integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q=="
|
||||
},
|
||||
"node_modules/axios": {
|
||||
"version": "1.1.3",
|
||||
"resolved": "https://registry.npmjs.org/axios/-/axios-1.1.3.tgz",
|
||||
"integrity": "sha512-00tXVRwKx/FZr/IDVFt4C+f9FYairX517WoGCL6dpOntqLkZofjhu43F/Xl44UOpqa+9sLFDrG/XAnFsUYgkDA==",
|
||||
"dependencies": {
|
||||
"follow-redirects": "^1.15.0",
|
||||
"form-data": "^4.0.0",
|
||||
"proxy-from-env": "^1.1.0"
|
||||
}
|
||||
},
|
||||
"node_modules/balanced-match": {
|
||||
"version": "1.0.2",
|
||||
"resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
|
||||
"integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw=="
|
||||
},
|
||||
"node_modules/body-parser": {
|
||||
"version": "1.20.1",
|
||||
"resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.1.tgz",
|
||||
"integrity": "sha512-jWi7abTbYwajOytWCQc37VulmWiRae5RyTpaCyDcS5/lMdtwSz5lOpDE67srw/HYe35f1z3fDQw+3txg7gNtWw==",
|
||||
"dependencies": {
|
||||
"bytes": "3.1.2",
|
||||
"content-type": "~1.0.4",
|
||||
"debug": "2.6.9",
|
||||
"depd": "2.0.0",
|
||||
"destroy": "1.2.0",
|
||||
"http-errors": "2.0.0",
|
||||
"iconv-lite": "0.4.24",
|
||||
"on-finished": "2.4.1",
|
||||
"qs": "6.11.0",
|
||||
"raw-body": "2.5.1",
|
||||
"type-is": "~1.6.18",
|
||||
"unpipe": "1.0.0"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">= 0.8",
|
||||
"npm": "1.2.8000 || >= 1.4.16"
|
||||
}
|
||||
},
|
||||
"node_modules/brace-expansion": {
|
||||
"version": "1.1.11",
|
||||
"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
|
||||
"integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
|
||||
"dependencies": {
|
||||
"balanced-match": "^1.0.0",
|
||||
"concat-map": "0.0.1"
|
||||
}
|
||||
},
|
||||
"node_modules/bytes": {
|
||||
"version": "3.1.2",
|
||||
"resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz",
|
||||
"integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==",
|
||||
"engines": {
|
||||
"node": ">= 0.8"
|
||||
}
|
||||
},
|
||||
"node_modules/call-bind": {
|
||||
"version": "1.0.2",
|
||||
"resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz",
|
||||
"integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==",
|
||||
"dependencies": {
|
||||
"function-bind": "^1.1.1",
|
||||
"get-intrinsic": "^1.0.2"
|
||||
},
|
||||
"funding": {
|
||||
"url": "https://github.com/sponsors/ljharb"
|
||||
}
|
||||
},
|
||||
"node_modules/chalk": {
|
||||
"version": "4.1.2",
|
||||
"resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
|
||||
"integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
|
||||
"dependencies": {
|
||||
"ansi-styles": "^4.1.0",
|
||||
"supports-color": "^7.1.0"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=10"
|
||||
},
|
||||
"funding": {
|
||||
"url": "https://github.com/chalk/chalk?sponsor=1"
|
||||
}
|
||||
},
|
||||
"node_modules/color-convert": {
|
||||
"version": "2.0.1",
|
||||
"resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
|
||||
"integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
|
||||
"dependencies": {
|
||||
"color-name": "~1.1.4"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=7.0.0"
|
||||
}
|
||||
},
|
||||
"node_modules/color-name": {
|
||||
"version": "1.1.4",
|
||||
"resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
|
||||
"integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA=="
|
||||
},
|
||||
"node_modules/combined-stream": {
|
||||
"version": "1.0.8",
|
||||
"resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz",
|
||||
"integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==",
|
||||
"dependencies": {
|
||||
"delayed-stream": "~1.0.0"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">= 0.8"
|
||||
}
|
||||
},
|
||||
"node_modules/concat-map": {
|
||||
"version": "0.0.1",
|
||||
"resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
|
||||
"integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg=="
|
||||
},
|
||||
"node_modules/content-disposition": {
|
||||
"version": "0.5.4",
|
||||
"resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz",
|
||||
"integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==",
|
||||
"dependencies": {
|
||||
"safe-buffer": "5.2.1"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">= 0.6"
|
||||
}
|
||||
},
|
||||
"node_modules/content-type": {
|
||||
"version": "1.0.4",
|
||||
"resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz",
|
||||
"integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==",
|
||||
"engines": {
|
||||
"node": ">= 0.6"
|
||||
}
|
||||
},
|
||||
"node_modules/cookie": {
|
||||
"version": "0.5.0",
|
||||
"resolved": "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz",
|
||||
"integrity": "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==",
|
||||
"engines": {
|
||||
"node": ">= 0.6"
|
||||
}
|
||||
},
|
||||
"node_modules/cookie-signature": {
|
||||
"version": "1.0.6",
|
||||
"resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz",
|
||||
"integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ=="
|
||||
},
|
||||
"node_modules/debug": {
|
||||
"version": "2.6.9",
|
||||
"resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
|
||||
"integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
|
||||
"dependencies": {
|
||||
"ms": "2.0.0"
|
||||
}
|
||||
},
|
||||
"node_modules/delayed-stream": {
|
||||
"version": "1.0.0",
|
||||
"resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz",
|
||||
"integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==",
|
||||
"engines": {
|
||||
"node": ">=0.4.0"
|
||||
}
|
||||
},
|
||||
"node_modules/depd": {
|
||||
"version": "2.0.0",
|
||||
"resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz",
|
||||
"integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==",
|
||||
"engines": {
|
||||
"node": ">= 0.8"
|
||||
}
|
||||
},
|
||||
"node_modules/destroy": {
|
||||
"version": "1.2.0",
|
||||
"resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz",
|
||||
"integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==",
|
||||
"engines": {
|
||||
"node": ">= 0.8",
|
||||
"npm": "1.2.8000 || >= 1.4.16"
|
||||
}
|
||||
},
|
||||
"node_modules/ee-first": {
|
||||
"version": "1.1.1",
|
||||
"resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz",
|
||||
"integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow=="
|
||||
},
|
||||
"node_modules/ejs": {
|
||||
"version": "3.1.8",
|
||||
"resolved": "https://registry.npmjs.org/ejs/-/ejs-3.1.8.tgz",
|
||||
"integrity": "sha512-/sXZeMlhS0ArkfX2Aw780gJzXSMPnKjtspYZv+f3NiKLlubezAHDU5+9xz6gd3/NhG3txQCo6xlglmTS+oTGEQ==",
|
||||
"dependencies": {
|
||||
"jake": "^10.8.5"
|
||||
},
|
||||
"bin": {
|
||||
"ejs": "bin/cli.js"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=0.10.0"
|
||||
}
|
||||
},
|
||||
"node_modules/encodeurl": {
|
||||
"version": "1.0.2",
|
||||
"resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz",
|
||||
"integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==",
|
||||
"engines": {
|
||||
"node": ">= 0.8"
|
||||
}
|
||||
},
|
||||
"node_modules/escape-html": {
|
||||
"version": "1.0.3",
|
||||
"resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz",
|
||||
"integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow=="
|
||||
},
|
||||
"node_modules/etag": {
|
||||
"version": "1.8.1",
|
||||
"resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz",
|
||||
"integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==",
|
||||
"engines": {
|
||||
"node": ">= 0.6"
|
||||
}
|
||||
},
|
||||
"node_modules/express": {
|
||||
"version": "4.18.2",
|
||||
"resolved": "https://registry.npmjs.org/express/-/express-4.18.2.tgz",
|
||||
"integrity": "sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ==",
|
||||
"dependencies": {
|
||||
"accepts": "~1.3.8",
|
||||
"array-flatten": "1.1.1",
|
||||
"body-parser": "1.20.1",
|
||||
"content-disposition": "0.5.4",
|
||||
"content-type": "~1.0.4",
|
||||
"cookie": "0.5.0",
|
||||
"cookie-signature": "1.0.6",
|
||||
"debug": "2.6.9",
|
||||
"depd": "2.0.0",
|
||||
"encodeurl": "~1.0.2",
|
||||
"escape-html": "~1.0.3",
|
||||
"etag": "~1.8.1",
|
||||
"finalhandler": "1.2.0",
|
||||
"fresh": "0.5.2",
|
||||
"http-errors": "2.0.0",
|
||||
"merge-descriptors": "1.0.1",
|
||||
"methods": "~1.1.2",
|
||||
"on-finished": "2.4.1",
|
||||
"parseurl": "~1.3.3",
|
||||
"path-to-regexp": "0.1.7",
|
||||
"proxy-addr": "~2.0.7",
|
||||
"qs": "6.11.0",
|
||||
"range-parser": "~1.2.1",
|
||||
"safe-buffer": "5.2.1",
|
||||
"send": "0.18.0",
|
||||
"serve-static": "1.15.0",
|
||||
"setprototypeof": "1.2.0",
|
||||
"statuses": "2.0.1",
|
||||
"type-is": "~1.6.18",
|
||||
"utils-merge": "1.0.1",
|
||||
"vary": "~1.1.2"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">= 0.10.0"
|
||||
}
|
||||
},
|
||||
"node_modules/filelist": {
|
||||
"version": "1.0.4",
|
||||
"resolved": "https://registry.npmjs.org/filelist/-/filelist-1.0.4.tgz",
|
||||
"integrity": "sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q==",
|
||||
"dependencies": {
|
||||
"minimatch": "^5.0.1"
|
||||
}
|
||||
},
|
||||
"node_modules/filelist/node_modules/brace-expansion": {
|
||||
"version": "2.0.1",
|
||||
"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz",
|
||||
"integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==",
|
||||
"dependencies": {
|
||||
"balanced-match": "^1.0.0"
|
||||
}
|
||||
},
|
||||
"node_modules/filelist/node_modules/minimatch": {
|
||||
"version": "5.1.0",
|
||||
"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.0.tgz",
|
||||
"integrity": "sha512-9TPBGGak4nHfGZsPBohm9AWg6NoT7QTCehS3BIJABslyZbzxfV78QM2Y6+i741OPZIafFAaiiEMh5OyIrJPgtg==",
|
||||
"dependencies": {
|
||||
"brace-expansion": "^2.0.1"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=10"
|
||||
}
|
||||
},
|
||||
"node_modules/finalhandler": {
|
||||
"version": "1.2.0",
|
||||
"resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz",
|
||||
"integrity": "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==",
|
||||
"dependencies": {
|
||||
"debug": "2.6.9",
|
||||
"encodeurl": "~1.0.2",
|
||||
"escape-html": "~1.0.3",
|
||||
"on-finished": "2.4.1",
|
||||
"parseurl": "~1.3.3",
|
||||
"statuses": "2.0.1",
|
||||
"unpipe": "~1.0.0"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">= 0.8"
|
||||
}
|
||||
},
|
||||
"node_modules/follow-redirects": {
|
||||
"version": "1.15.2",
|
||||
"resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.2.tgz",
|
||||
"integrity": "sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==",
|
||||
"funding": [
|
||||
{
|
||||
"type": "individual",
|
||||
"url": "https://github.com/sponsors/RubenVerborgh"
|
||||
}
|
||||
],
|
||||
"engines": {
|
||||
"node": ">=4.0"
|
||||
},
|
||||
"peerDependenciesMeta": {
|
||||
"debug": {
|
||||
"optional": true
|
||||
}
|
||||
}
|
||||
},
|
||||
"node_modules/form-data": {
|
||||
"version": "4.0.0",
|
||||
"resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz",
|
||||
"integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==",
|
||||
"dependencies": {
|
||||
"asynckit": "^0.4.0",
|
||||
"combined-stream": "^1.0.8",
|
||||
"mime-types": "^2.1.12"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">= 6"
|
||||
}
|
||||
},
|
||||
"node_modules/forwarded": {
|
||||
"version": "0.2.0",
|
||||
"resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz",
|
||||
"integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==",
|
||||
"engines": {
|
||||
"node": ">= 0.6"
|
||||
}
|
||||
},
|
||||
"node_modules/fresh": {
|
||||
"version": "0.5.2",
|
||||
"resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz",
|
||||
"integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==",
|
||||
"engines": {
|
||||
"node": ">= 0.6"
|
||||
}
|
||||
},
|
||||
"node_modules/function-bind": {
|
||||
"version": "1.1.1",
|
||||
"resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz",
|
||||
"integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A=="
|
||||
},
|
||||
"node_modules/get-intrinsic": {
|
||||
"version": "1.1.3",
|
||||
"resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.3.tgz",
|
||||
"integrity": "sha512-QJVz1Tj7MS099PevUG5jvnt9tSkXN8K14dxQlikJuPt4uD9hHAHjLyLBiLR5zELelBdD9QNRAXZzsJx0WaDL9A==",
|
||||
"dependencies": {
|
||||
"function-bind": "^1.1.1",
|
||||
"has": "^1.0.3",
|
||||
"has-symbols": "^1.0.3"
|
||||
},
|
||||
"funding": {
|
||||
"url": "https://github.com/sponsors/ljharb"
|
||||
}
|
||||
},
|
||||
"node_modules/has": {
|
||||
"version": "1.0.3",
|
||||
"resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz",
|
||||
"integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==",
|
||||
"dependencies": {
|
||||
"function-bind": "^1.1.1"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">= 0.4.0"
|
||||
}
|
||||
},
|
||||
"node_modules/has-flag": {
|
||||
"version": "4.0.0",
|
||||
"resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
|
||||
"integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
|
||||
"engines": {
|
||||
"node": ">=8"
|
||||
}
|
||||
},
|
||||
"node_modules/has-symbols": {
|
||||
"version": "1.0.3",
|
||||
"resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz",
|
||||
"integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==",
|
||||
"engines": {
|
||||
"node": ">= 0.4"
|
||||
},
|
||||
"funding": {
|
||||
"url": "https://github.com/sponsors/ljharb"
|
||||
}
|
||||
},
|
||||
"node_modules/http-errors": {
|
||||
"version": "2.0.0",
|
||||
"resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz",
|
||||
"integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==",
|
||||
"dependencies": {
|
||||
"depd": "2.0.0",
|
||||
"inherits": "2.0.4",
|
||||
"setprototypeof": "1.2.0",
|
||||
"statuses": "2.0.1",
|
||||
"toidentifier": "1.0.1"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">= 0.8"
|
||||
}
|
||||
},
|
||||
"node_modules/iconv-lite": {
|
||||
"version": "0.4.24",
|
||||
"resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz",
|
||||
"integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==",
|
||||
"dependencies": {
|
||||
"safer-buffer": ">= 2.1.2 < 3"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=0.10.0"
|
||||
}
|
||||
},
|
||||
"node_modules/inherits": {
|
||||
"version": "2.0.4",
|
||||
"resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
|
||||
"integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ=="
|
||||
},
|
||||
"node_modules/ipaddr.js": {
|
||||
"version": "1.9.1",
|
||||
"resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz",
|
||||
"integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==",
|
||||
"engines": {
|
||||
"node": ">= 0.10"
|
||||
}
|
||||
},
|
||||
"node_modules/jake": {
|
||||
"version": "10.8.5",
|
||||
"resolved": "https://registry.npmjs.org/jake/-/jake-10.8.5.tgz",
|
||||
"integrity": "sha512-sVpxYeuAhWt0OTWITwT98oyV0GsXyMlXCF+3L1SuafBVUIr/uILGRB+NqwkzhgXKvoJpDIpQvqkUALgdmQsQxw==",
|
||||
"dependencies": {
|
||||
"async": "^3.2.3",
|
||||
"chalk": "^4.0.2",
|
||||
"filelist": "^1.0.1",
|
||||
"minimatch": "^3.0.4"
|
||||
},
|
||||
"bin": {
|
||||
"jake": "bin/cli.js"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=10"
|
||||
}
|
||||
},
|
||||
"node_modules/media-typer": {
|
||||
"version": "0.3.0",
|
||||
"resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz",
|
||||
"integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==",
|
||||
"engines": {
|
||||
"node": ">= 0.6"
|
||||
}
|
||||
},
|
||||
"node_modules/merge-descriptors": {
|
||||
"version": "1.0.1",
|
||||
"resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz",
|
||||
"integrity": "sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w=="
|
||||
},
|
||||
"node_modules/methods": {
|
||||
"version": "1.1.2",
|
||||
"resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz",
|
||||
"integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==",
|
||||
"engines": {
|
||||
"node": ">= 0.6"
|
||||
}
|
||||
},
|
||||
"node_modules/mime": {
|
||||
"version": "1.6.0",
|
||||
"resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz",
|
||||
"integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==",
|
||||
"bin": {
|
||||
"mime": "cli.js"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=4"
|
||||
}
|
||||
},
|
||||
"node_modules/mime-db": {
|
||||
"version": "1.52.0",
|
||||
"resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz",
|
||||
"integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==",
|
||||
"engines": {
|
||||
"node": ">= 0.6"
|
||||
}
|
||||
},
|
||||
"node_modules/mime-types": {
|
||||
"version": "2.1.35",
|
||||
"resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz",
|
||||
"integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==",
|
||||
"dependencies": {
|
||||
"mime-db": "1.52.0"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">= 0.6"
|
||||
}
|
||||
},
|
||||
"node_modules/minimatch": {
|
||||
"version": "3.1.2",
|
||||
"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
|
||||
"integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
|
||||
"dependencies": {
|
||||
"brace-expansion": "^1.1.7"
|
||||
},
|
||||
"engines": {
|
||||
"node": "*"
|
||||
}
|
||||
},
|
||||
"node_modules/ms": {
|
||||
"version": "2.0.0",
|
||||
"resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
|
||||
"integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A=="
|
||||
},
|
||||
"node_modules/negotiator": {
|
||||
"version": "0.6.3",
|
||||
"resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz",
|
||||
"integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==",
|
||||
"engines": {
|
||||
"node": ">= 0.6"
|
||||
}
|
||||
},
|
||||
"node_modules/object-inspect": {
|
||||
"version": "1.12.2",
|
||||
"resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.2.tgz",
|
||||
"integrity": "sha512-z+cPxW0QGUp0mcqcsgQyLVRDoXFQbXOwBaqyF7VIgI4TWNQsDHrBpUQslRmIfAoYWdYzs6UlKJtB2XJpTaNSpQ==",
|
||||
"funding": {
|
||||
"url": "https://github.com/sponsors/ljharb"
|
||||
}
|
||||
},
|
||||
"node_modules/on-finished": {
|
||||
"version": "2.4.1",
|
||||
"resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz",
|
||||
"integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==",
|
||||
"dependencies": {
|
||||
"ee-first": "1.1.1"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">= 0.8"
|
||||
}
|
||||
},
|
||||
"node_modules/parseurl": {
|
||||
"version": "1.3.3",
|
||||
"resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz",
|
||||
"integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==",
|
||||
"engines": {
|
||||
"node": ">= 0.8"
|
||||
}
|
||||
},
|
||||
"node_modules/path-to-regexp": {
|
||||
"version": "0.1.7",
|
||||
"resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz",
|
||||
"integrity": "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ=="
|
||||
},
|
||||
"node_modules/proxy-addr": {
|
||||
"version": "2.0.7",
|
||||
"resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz",
|
||||
"integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==",
|
||||
"dependencies": {
|
||||
"forwarded": "0.2.0",
|
||||
"ipaddr.js": "1.9.1"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">= 0.10"
|
||||
}
|
||||
},
|
||||
"node_modules/proxy-from-env": {
|
||||
"version": "1.1.0",
|
||||
"resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz",
|
||||
"integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg=="
|
||||
},
|
||||
"node_modules/qs": {
|
||||
"version": "6.11.0",
|
||||
"resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz",
|
||||
"integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==",
|
||||
"dependencies": {
|
||||
"side-channel": "^1.0.4"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=0.6"
|
||||
},
|
||||
"funding": {
|
||||
"url": "https://github.com/sponsors/ljharb"
|
||||
}
|
||||
},
|
||||
"node_modules/range-parser": {
|
||||
"version": "1.2.1",
|
||||
"resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz",
|
||||
"integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==",
|
||||
"engines": {
|
||||
"node": ">= 0.6"
|
||||
}
|
||||
},
|
||||
"node_modules/raw-body": {
|
||||
"version": "2.5.1",
|
||||
"resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.1.tgz",
|
||||
"integrity": "sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==",
|
||||
"dependencies": {
|
||||
"bytes": "3.1.2",
|
||||
"http-errors": "2.0.0",
|
||||
"iconv-lite": "0.4.24",
|
||||
"unpipe": "1.0.0"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">= 0.8"
|
||||
}
|
||||
},
|
||||
"node_modules/safe-buffer": {
|
||||
"version": "5.2.1",
|
||||
"resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz",
|
||||
"integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==",
|
||||
"funding": [
|
||||
{
|
||||
"type": "github",
|
||||
"url": "https://github.com/sponsors/feross"
|
||||
},
|
||||
{
|
||||
"type": "patreon",
|
||||
"url": "https://www.patreon.com/feross"
|
||||
},
|
||||
{
|
||||
"type": "consulting",
|
||||
"url": "https://feross.org/support"
|
||||
}
|
||||
]
|
||||
},
|
||||
"node_modules/safer-buffer": {
|
||||
"version": "2.1.2",
|
||||
"resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
|
||||
"integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg=="
|
||||
},
|
||||
"node_modules/send": {
|
||||
"version": "0.18.0",
|
||||
"resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz",
|
||||
"integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==",
|
||||
"dependencies": {
|
||||
"debug": "2.6.9",
|
||||
"depd": "2.0.0",
|
||||
"destroy": "1.2.0",
|
||||
"encodeurl": "~1.0.2",
|
||||
"escape-html": "~1.0.3",
|
||||
"etag": "~1.8.1",
|
||||
"fresh": "0.5.2",
|
||||
"http-errors": "2.0.0",
|
||||
"mime": "1.6.0",
|
||||
"ms": "2.1.3",
|
||||
"on-finished": "2.4.1",
|
||||
"range-parser": "~1.2.1",
|
||||
"statuses": "2.0.1"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">= 0.8.0"
|
||||
}
|
||||
},
|
||||
"node_modules/send/node_modules/ms": {
|
||||
"version": "2.1.3",
|
||||
"resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
|
||||
"integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA=="
|
||||
},
|
||||
"node_modules/serve-static": {
|
||||
"version": "1.15.0",
|
||||
"resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz",
|
||||
"integrity": "sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==",
|
||||
"dependencies": {
|
||||
"encodeurl": "~1.0.2",
|
||||
"escape-html": "~1.0.3",
|
||||
"parseurl": "~1.3.3",
|
||||
"send": "0.18.0"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">= 0.8.0"
|
||||
}
|
||||
},
|
||||
"node_modules/setprototypeof": {
|
||||
"version": "1.2.0",
|
||||
"resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz",
|
||||
"integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw=="
|
||||
},
|
||||
"node_modules/side-channel": {
|
||||
"version": "1.0.4",
|
||||
"resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz",
|
||||
"integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==",
|
||||
"dependencies": {
|
||||
"call-bind": "^1.0.0",
|
||||
"get-intrinsic": "^1.0.2",
|
||||
"object-inspect": "^1.9.0"
|
||||