From ad3f9a4e46d328ae3dd38f6d4c64d86c96f66a35 Mon Sep 17 00:00:00 2001 From: joseph le Date: Fri, 15 Sep 2023 10:09:33 +0700 Subject: [PATCH] update image for message zulip --- app/public/uploads/a.html | 1 + app/utils/runtimeCheckLogs.ts | 26 +- app/utils/screenShot.ts | 21 + app/utils/screenshot.png | Bin 0 -> 109173 bytes app/utils/uploadFileZulip.ts | 44 + app/utils/zuliprc | 4 + download | 4 + manage-view/src/App.js | 2 + .../src/components/ScreenShot/ScreenShot.css | 33 + .../src/components/ScreenShot/ScreenShot.jsx | 99 + .../src/components/ShowLog/ShowLog.jsx | 4 +- package-lock.json | 1643 ++++++++++++++++- package.json | 3 + providers/AppProvider.ts | 1 + screenshot.js | 146 ++ start/kernel.ts | 3 +- start/routes.ts | 14 + uploads/abc.txt | 3 + 18 files changed, 2029 insertions(+), 22 deletions(-) create mode 100644 app/public/uploads/a.html create mode 100644 app/utils/screenShot.ts create mode 100644 app/utils/screenshot.png create mode 100644 app/utils/uploadFileZulip.ts create mode 100644 app/utils/zuliprc create mode 100644 download create mode 100644 manage-view/src/components/ScreenShot/ScreenShot.css create mode 100644 manage-view/src/components/ScreenShot/ScreenShot.jsx create mode 100644 screenshot.js create mode 100644 uploads/abc.txt diff --git a/app/public/uploads/a.html b/app/public/uploads/a.html new file mode 100644 index 0000000..c312dd8 --- /dev/null +++ b/app/public/uploads/a.html @@ -0,0 +1 @@ +

fjshdkf

\ No newline at end of file diff --git a/app/utils/runtimeCheckLogs.ts b/app/utils/runtimeCheckLogs.ts index 9f4ec20..04d666e 100644 --- a/app/utils/runtimeCheckLogs.ts +++ b/app/utils/runtimeCheckLogs.ts @@ -7,6 +7,8 @@ import KeyValue from "App/Models/KeyValue"; import Database from "@ioc:Adonis/Lucid/Database"; import { sendMessToZulip } from "./sendMessToZulip"; import { getListLineByItem } from "./getListLineByItem"; +import { screenShot } from "./screenShot"; +import { uploadFileToZulip } from "./uploadFileZulip"; // export default class loggerAPI { export async function runtimeCheckLogs(folderPath) { @@ -175,7 +177,11 @@ export async function runtimeCheckLogs(folderPath) { fileDetect?.id_ldf ); - let listReport = await getListLineByItem(logsDetect[0].filter((l)=>l.line>lastLine)); + await screenShot(fileName); + const uriImage = await uploadFileToZulip(); + let listReport = await getListLineByItem( + logsDetect[0].filter((l) => l.line > lastLine) + ); let content = "| |Last updated at | Item/error | Line | Report \n|---|:---:|:---|:---|:-----------:\n"; let spoiler = ""; @@ -195,7 +201,9 @@ export async function runtimeCheckLogs(folderPath) { log.line + "|[View](https://logs.danielvu.com/logs/" + fileName + - "#"+log.line+")\n"; + "#" + + log.line + + ")\n"; }); // } // setTimeout(() => { @@ -203,24 +211,30 @@ export async function runtimeCheckLogs(folderPath) { "stream", "Result test - auto.nswteam.net", "Log Alert", - ":warning: :warning: **" + + "------------\n\n:warning: :warning: **" + fileName + "**\n\n" + content + "\n\n" + - spoiler + spoiler + + "\n\n[image](" + + uriImage + + ")\n" ); sendMessToZulip( "stream", "AUS_VN_Test", "Test Log Alerts", - ":warning: :warning: **" + + "------------\n\n:warning: :warning: **" + fileName + "**\n\n" + content + "\n\n" + - spoiler + spoiler + + "\n\n[image](" + + uriImage + + ")\n" ); // }, 3000); } diff --git a/app/utils/screenShot.ts b/app/utils/screenShot.ts new file mode 100644 index 0000000..fa4be5c --- /dev/null +++ b/app/utils/screenShot.ts @@ -0,0 +1,21 @@ +import puppeteer from 'puppeteer'; + +export const screenShot = async (filename) => { + const browser = await puppeteer.launch(); + + try { + // Open a new page + const page = await browser.newPage(); + await page.goto("https://logs.danielvu.com/screenShot/" + filename); + const bodyHandle = await page.$("body"); + const { height } = await bodyHandle.boundingBox(); + await bodyHandle.dispose(); + await page.setViewport({ width: 1920, height: 500 }); + setTimeout(async () => { + await page.screenshot({ path: "app/utils/screenshot.png" }); + browser.close(); + }, 5000); + } catch (error) { + console.log(error); + } +}; diff --git a/app/utils/screenshot.png b/app/utils/screenshot.png new file mode 100644 index 0000000000000000000000000000000000000000..a715f7b4aaceb8d1d3db3b4bce7714d4f4d74f75 GIT binary patch literal 109173 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,cv~rFUVV!&9+O<2_n?q75R9~Hdwi|N;IUl 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

|z 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 literal 0 HcmV?d00001 diff --git a/app/utils/uploadFileZulip.ts b/app/utils/uploadFileZulip.ts new file mode 100644 index 0000000..7e36f0d --- /dev/null +++ b/app/utils/uploadFileZulip.ts @@ -0,0 +1,44 @@ +import { FormData } from "zulip-js/lib/helper"; +import axios from "axios"; +import fs from "fs"; + +export const uploadFileToZulip = async () => { + // try { + const ZULIP_API_URL = "https://zulip.ipsupply.com.au/api/v1"; + const ZULIP_API_KEY = "0jMAmOuhfLvBqKJikv5oAkyNM4RIEoAM"; + const BOT_EMAIL = "networktool-bot@zulip.ipsupply.com.au"; + // const ZULIP_API_URL = "https://zulip.ipsupply.com.au/api/v1"; + // const ZULIP_API_KEY = "7XGrpwzFtQyUVDQzdwL3hjdVSbLx55yt"; + // const BOT_EMAIL = "joseph.le@apactech.io"; + try { + + + const fileStream = fs.createReadStream("app/utils/screenshot.png"); + const formData = new FormData(); + formData.append("file", fileStream); + + const response = await axios.post( + `${ZULIP_API_URL}/user_uploads`, + formData, + { + headers: { + "Content-Type": "application/octet-stream", + Authorization: `Basic ${Buffer.from( + `${BOT_EMAIL}:${ZULIP_API_KEY}` + ).toString("base64")}`, + }, + } + ); + + if (response.status === 200) { + const uploadedFile = response.data.uri; + return uploadedFile; + } else { + console.error("Failed to upload file:", response.statusText); + return null; + } + + } catch (error) { + console.error("Error uploading file:", error.message); + } +}; diff --git a/app/utils/zuliprc b/app/utils/zuliprc new file mode 100644 index 0000000..382d7b7 --- /dev/null +++ b/app/utils/zuliprc @@ -0,0 +1,4 @@ +[api] +email=networktool-bot@zulip.ipsupply.com.au +key=0jMAmOuhfLvBqKJikv5oAkyNM4RIEoAM +site=https://zulip.ipsupply.com.au diff --git a/download b/download new file mode 100644 index 0000000..e7eea02 --- /dev/null +++ b/download @@ -0,0 +1,4 @@ +[api] +email=joseph.le@apactech.io +key=7XGrpwzFtQyUVDQzdwL3hjdVSbLx55yt +site=https://zulip.ipsupply.com.au diff --git a/manage-view/src/App.js b/manage-view/src/App.js index d1c8e7d..8aa3945 100644 --- a/manage-view/src/App.js +++ b/manage-view/src/App.js @@ -5,6 +5,7 @@ import ManageValues from "./pages/ManageValues"; import { Routes, Route, Switch, useParams } from "react-router-dom"; import ShowLog from "./components/ShowLog/ShowLog"; import ListLog from "./components/ListLog/ListLog"; +import ScreenShot from "./components/ScreenShot/ScreenShot"; function App() { return (

); diff --git a/manage-view/src/components/ScreenShot/ScreenShot.css b/manage-view/src/components/ScreenShot/ScreenShot.css new file mode 100644 index 0000000..8933a0f --- /dev/null +++ b/manage-view/src/components/ScreenShot/ScreenShot.css @@ -0,0 +1,33 @@ +#bodyScreen { + height: 100%; + padding: 5px; + word-wrap: break-word; + border: solid gray 5px; + white-space: pre; + overflow: auto; + font-family: monospace; + text-rendering: auto; + color: fieldtext; + letter-spacing: normal; + word-spacing: normal; + line-height: normal; + text-transform: none; + text-indent: 0px; + text-shadow: none; + display: inline-block; + text-align: start; + appearance: auto; + -webkit-rtl-ordering: logical; + resize: vertical; + cursor: text; + background-color: field; + column-count: initial !important; + writing-mode: horizontal-tb !important; + /* box-sizing: border-box; */ + margin: 0em; + /* border-width: 1px; */ + /* border-style: solid;/ */ + /* border-color: -internal-light-dark(rgb(118, 118, 118), rgb(133, 133, 133)); */ + /* border-image: initial; */ + padding: 5px; + } \ No newline at end of file diff --git a/manage-view/src/components/ScreenShot/ScreenShot.jsx b/manage-view/src/components/ScreenShot/ScreenShot.jsx new file mode 100644 index 0000000..bf89a87 --- /dev/null +++ b/manage-view/src/components/ScreenShot/ScreenShot.jsx @@ -0,0 +1,99 @@ +import axios from "axios"; +import React, { useEffect, useState } from "react"; +import { Link, Navigate, useParams } from "react-router-dom"; +import { getLog } from "../../api/apiLog"; +import "./ScreenShot.css"; +const ScreenShot = () => { + let { name } = useParams(); + const [log, setLog] = useState({}); + const [status, setStatus] = useState(200); + const getContentLog = async () => { + try { + const res = await axios.get(getLog + "/" + name); + setLog(res.data); + setStatus(res.status); + } catch (error) { + console.log(error); + } + }; + function scrollToBottom() { + const targetDiv = document.getElementById('bodyScreen'); + targetDiv.scrollTop = targetDiv.scrollHeight; + } + + // Call the function to scroll to the end of the page + + useEffect(() => { + getContentLog(); + // setTimeout(() => { + // scrollToBottom(); + // }, 2000); + }, []); + // console.log(window.location.hash); + if (status === 200) { + return ( +
+
+

+ No errors were found in the file +

+

+ Extra items: +

+ {log?.modelSpecial?.split("\n")?.map((line) => ( + + {line.split("|-|")[0]} + {line.split("|-|")[1]} + +
+ {line.split("|-|")[2]} + + + {line.split("|-|")[3]} +

+ + ))} +

+ Issue found: +

+ {log?.issueItem?.split("\n")?.reverse().map((line) => ( + + {line.split("|-|")[0]} + {line.split("|-|")[1]} + + + {line.split("|-|")[2]} + + + {line.split("|-|")[3]} +

+
+ ))} +
+
+ ); + } else { + return ( +
+

+ The file was not found. +

+
+ ); + } +}; + +export default ScreenShot; diff --git a/manage-view/src/components/ShowLog/ShowLog.jsx b/manage-view/src/components/ShowLog/ShowLog.jsx index 6bef7f7..49288fa 100644 --- a/manage-view/src/components/ShowLog/ShowLog.jsx +++ b/manage-view/src/components/ShowLog/ShowLog.jsx @@ -76,7 +76,7 @@ const ShowLog = () => {

Extra items:

- {log?.modelSpecial?.split("\n")?.map((line) => ( + {log?.modelSpecial?.split("\n")?.reverse().map((line) => ( {line.split("|-|")[0]} {line.split("|-|")[1]} @@ -95,7 +95,7 @@ const ShowLog = () => {

Issue found:

- {log?.issueItem?.split("\n")?.map((line) => ( + {log?.issueItem?.split("\n")?.reverse().map((line) => ( {line.split("|-|")[0]} {line.split("|-|")[1]} diff --git a/package-lock.json b/package-lock.json index 5649f8b..95965d8 100644 --- a/package-lock.json +++ b/package-lock.json @@ -18,11 +18,14 @@ "child_process": "^1.0.2", "chokidar": "^3.5.3", "fs": "^0.0.1-security", + "helpers": "^0.0.6", "jsonwebtoken": "^9.0.1", "luxon": "^3.4.0", "moment": "^2.29.4", "mysql2": "^3.6.0", + "path": "^0.12.7", "proxy-addr": "^2.0.7", + "puppeteer": "^21.2.1", "reflect-metadata": "^0.1.13", "source-map-support": "^0.5.21", "zulip-js": "^2.0.9" @@ -667,6 +670,156 @@ "node": ">=4" } }, + "node_modules/@babel/code-frame": { + "version": "7.22.13", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.22.13.tgz", + "integrity": "sha512-XktuhWlJ5g+3TJXc5upd9Ks1HutSArik6jf2eAjYFyIOf4ej3RN+184cZbzDvbPnuTJIUhPKKJE3cIsYTiAT3w==", + "dependencies": { + "@babel/highlight": "^7.22.13", + "chalk": "^2.4.2" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/code-frame/node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/code-frame/node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/code-frame/node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/@babel/code-frame/node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==" + }, + "node_modules/@babel/code-frame/node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/code-frame/node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/helper-validator-identifier": { + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.15.tgz", + "integrity": "sha512-4E/F9IIEi8WR94324mbDUMo074YTheJmd7eZF5vITTeYchqAi6sYXRLHUVsmkdmY4QjfKTcB2jB7dVP3NaBElQ==", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/highlight": { + "version": "7.22.13", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.22.13.tgz", + "integrity": "sha512-C/BaXcnnvBCmHTpz/VGZ8jgtE2aYlW4hxDhseJAWZb7gqGM/qtCK6iZUb0TyKFf7BOUsBH7Q7fkRsDRhg1XklQ==", + "dependencies": { + "@babel/helper-validator-identifier": "^7.22.5", + "chalk": "^2.4.2", + "js-tokens": "^4.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/highlight/node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/highlight/node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/highlight/node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/@babel/highlight/node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==" + }, + "node_modules/@babel/highlight/node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/highlight/node_modules/js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" + }, + "node_modules/@babel/highlight/node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, "node_modules/@babel/runtime": { "version": "7.22.10", "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.22.10.tgz", @@ -1154,6 +1307,26 @@ "truncatise": "0.0.8" } }, + "node_modules/@puppeteer/browsers": { + "version": "1.7.1", + "resolved": "https://registry.npmjs.org/@puppeteer/browsers/-/browsers-1.7.1.tgz", + "integrity": "sha512-nIb8SOBgDEMFY2iS2MdnUZOg2ikcYchRrBoF+wtdjieRFKR2uGRipHY/oFLo+2N6anDualyClPzGywTHRGrLfw==", + "dependencies": { + "debug": "4.3.4", + "extract-zip": "2.0.1", + "progress": "2.0.3", + "proxy-agent": "6.3.1", + "tar-fs": "3.0.4", + "unbzip2-stream": "1.4.3", + "yargs": "17.7.1" + }, + "bin": { + "browsers": "lib/cjs/main-cli.js" + }, + "engines": { + "node": ">=16.3.0" + } + }, "node_modules/@sinclair/typebox": { "version": "0.27.8", "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.27.8.tgz", @@ -1165,6 +1338,11 @@ "resolved": "https://registry.npmjs.org/@tokenizer/token/-/token-0.3.0.tgz", "integrity": "sha512-OvjF+z51L3ov0OyAU0duzsYuvO01PH7x4t6DJx+guahgTnBHkhJdG7soQeTSFLWN3efnHyibZ4Z8l2EuWwJN3A==" }, + "node_modules/@tootallnate/quickjs-emscripten": { + "version": "0.23.0", + "resolved": "https://registry.npmjs.org/@tootallnate/quickjs-emscripten/-/quickjs-emscripten-0.23.0.tgz", + "integrity": "sha512-C5Mc6rdnsaJDjO3UpGW/CQTHtCKaYlScZTly4JIu97Jxo/odCiH0ITnDXSJPTOrEKk/ycSZ0AOgTmkDtkOsvIA==" + }, "node_modules/@types/bytes": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/@types/bytes/-/bytes-3.1.1.tgz", @@ -1329,6 +1507,15 @@ "integrity": "sha512-iO9ZQHkZxHn4mSakYV0vFHAVDyEOIJQrV2uZ06HxEPcx+mt8swXoZHIbaaJ2crJYFfErySgktuTZ3BeLz+XmFA==", "dev": true }, + "node_modules/@types/yauzl": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/@types/yauzl/-/yauzl-2.10.0.tgz", + "integrity": "sha512-Cn6WYCm0tXv8p6k+A8PvbDG763EDpBoTzHdA+Q/MF6H3sapGjCm9NzoaJncJS9tUKSuCoDs9XHxYYsQDgxR6kw==", + "optional": true, + "dependencies": { + "@types/node": "*" + } + }, "node_modules/abort-controller": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz", @@ -1435,6 +1622,17 @@ "integrity": "sha512-cQH/NP250gOF9k3TTDhVsTOPSAvyH4MhKVZ4ryYiihA+vnP27sut1gVIrRas3Evl5d2wEgWVGI5DgdP/ZFSk0w==", "dev": true }, + "node_modules/agent-base": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.0.tgz", + "integrity": "sha512-o/zjMZRhJxny7OyEF+Op8X+efiELC7k7yOjMzgfzVqOzXqkBkWI79YoTdOtsuWd5BWhAGAuOY/Xa6xpiaWXiNg==", + "dependencies": { + "debug": "^4.3.4" + }, + "engines": { + "node": ">= 14" + } + }, "node_modules/aggregate-error": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", @@ -1752,6 +1950,17 @@ "node": ">=0.10.0" } }, + "node_modules/ast-types": { + "version": "0.13.4", + "resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.13.4.tgz", + "integrity": "sha512-x1FCFnFifvYDDzTaLII71vG5uvDwgtmDTEVWAxrgeiR8VjMONcCXJx7E+USjDtHlwFmt9MysbqgF9b9Vjr6w+w==", + "dependencies": { + "tslib": "^2.0.1" + }, + "engines": { + "node": ">=4" + } + }, "node_modules/astral-regex": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz", @@ -1812,6 +2021,11 @@ "proxy-from-env": "^1.1.0" } }, + "node_modules/b4a": { + "version": "1.6.4", + "resolved": "https://registry.npmjs.org/b4a/-/b4a-1.6.4.tgz", + "integrity": "sha512-fpWrvyVHEKyeEvbKZTVOeZF3VSKKWtJxFIxX/jaVPf+cLbGUSitjb49pHLqPV2BUNNZ0LcoeEGfE/YCpyDYHIw==" + }, "node_modules/babel-code-frame": { "version": "6.26.0", "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz", @@ -1932,6 +2146,14 @@ } ] }, + "node_modules/basic-ftp": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/basic-ftp/-/basic-ftp-5.0.3.tgz", + "integrity": "sha512-QHX8HLlncOLpy54mh+k/sWIFd0ThmRqwe9ZjELybGZK+tZ8rUb9VO0saKJUROTbE+KhzDUT7xziGpGrW8Kmd+g==", + "engines": { + "node": ">=10.0.0" + } + }, "node_modules/binary-extensions": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", @@ -1998,6 +2220,14 @@ "resolved": "https://registry.npmjs.org/buffer-alloc-unsafe/-/buffer-alloc-unsafe-1.1.0.tgz", "integrity": "sha512-TEM2iMIEQdJ2yjPJoSIsldnleVaAk1oW3DBVUykyOLsEsFmEc9kn+SFFPz+gl54KQNxlDnAwCXosOS9Okx2xAg==" }, + "node_modules/buffer-crc32": { + "version": "0.2.13", + "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", + "integrity": "sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==", + "engines": { + "node": "*" + } + }, "node_modules/buffer-equal-constant-time": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz", @@ -2081,7 +2311,6 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", - "dev": true, "engines": { "node": ">=6" } @@ -2227,6 +2456,17 @@ "node": ">= 6" } }, + "node_modules/chromium-bidi": { + "version": "0.4.26", + "resolved": "https://registry.npmjs.org/chromium-bidi/-/chromium-bidi-0.4.26.tgz", + "integrity": "sha512-lukBGfogAI4T0y3acc86RaacqgKQve47/8pV2c+Hr1PjcICj2K4OkL3qfX3qrqxxnd4ddurFC0WBA3VCQqYeUQ==", + "dependencies": { + "mitt": "3.0.1" + }, + "peerDependencies": { + "devtools-protocol": "*" + } + }, "node_modules/class-utils": { "version": "0.3.6", "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz", @@ -2370,6 +2610,35 @@ "@colors/colors": "1.5.0" } }, + "node_modules/cliui": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", + "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.1", + "wrap-ansi": "^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/cliui/node_modules/wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, "node_modules/clone": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz", @@ -2618,6 +2887,14 @@ "node": ">=8" } }, + "node_modules/cross-fetch": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-4.0.0.tgz", + "integrity": "sha512-e4a5N8lVvuLgAWgnCrLr2PP0YyDOTHa9H/Rj54dirp61qXnNq46m82bRhNqIA5VccJtWBvPTFRV3TtvHUKPB1g==", + "dependencies": { + "node-fetch": "^2.6.12" + } + }, "node_modules/cross-spawn": { "version": "7.0.3", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", @@ -2767,6 +3044,19 @@ "node": ">=0.10.0" } }, + "node_modules/degenerator": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/degenerator/-/degenerator-5.0.1.tgz", + "integrity": "sha512-TllpMR/t0M5sqCXfj85i4XaAzxmS5tVA16dqvdkMwGmzI+dXLXnw3J+3Vdv7VKw+ThlTMboK6i9rnZ6Nntj5CQ==", + "dependencies": { + "ast-types": "^0.13.4", + "escodegen": "^2.1.0", + "esprima": "^4.0.1" + }, + "engines": { + "node": ">= 14" + } + }, "node_modules/delayed-stream": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", @@ -2809,6 +3099,11 @@ "node": ">=8" } }, + "node_modules/devtools-protocol": { + "version": "0.0.1159816", + "resolved": "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.1159816.tgz", + "integrity": "sha512-2cZlHxC5IlgkIWe2pSDmCrDiTzbSJWywjbDDnupOImEBcG31CQgBLV8wWE+5t+C4rimcjHsbzy7CBzf9oFjboA==" + }, "node_modules/dezalgo": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/dezalgo/-/dezalgo-1.0.4.tgz", @@ -3030,6 +3325,14 @@ "node": ">=8.6" } }, + "node_modules/error-ex": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "dependencies": { + "is-arrayish": "^0.2.1" + } + }, "node_modules/es-module-lexer": { "version": "0.3.26", "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-0.3.26.tgz", @@ -3060,11 +3363,30 @@ "version": "1.0.5", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", - "dev": true, "engines": { "node": ">=0.8.0" } }, + "node_modules/escodegen": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-2.1.0.tgz", + "integrity": "sha512-2NlIDTwUWJN0mRPQOdtQBzbUHvdGY2P1VXSyU83Q3xKxM7WHX2Ql8dKq782Q9TgQUNOLEzEYu9bzLNj1q88I5w==", + "dependencies": { + "esprima": "^4.0.1", + "estraverse": "^5.2.0", + "esutils": "^2.0.2" + }, + "bin": { + "escodegen": "bin/escodegen.js", + "esgenerate": "bin/esgenerate.js" + }, + "engines": { + "node": ">=6.0" + }, + "optionalDependencies": { + "source-map": "~0.6.1" + } + }, "node_modules/esm": { "version": "3.2.25", "resolved": "https://registry.npmjs.org/esm/-/esm-3.2.25.tgz", @@ -3077,7 +3399,6 @@ "version": "4.0.1", "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", - "dev": true, "bin": { "esparse": "bin/esparse.js", "esvalidate": "bin/esvalidate.js" @@ -3086,11 +3407,18 @@ "node": ">=4" } }, + "node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "engines": { + "node": ">=4.0" + } + }, "node_modules/esutils": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", - "dev": true, "engines": { "node": ">=0.10.0" } @@ -3350,6 +3678,39 @@ "node": ">=0.10.0" } }, + "node_modules/extract-zip": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-2.0.1.tgz", + "integrity": "sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg==", + "dependencies": { + "debug": "^4.1.1", + "get-stream": "^5.1.0", + "yauzl": "^2.10.0" + }, + "bin": { + "extract-zip": "cli.js" + }, + "engines": { + "node": ">= 10.17.0" + }, + "optionalDependencies": { + "@types/yauzl": "^2.9.1" + } + }, + "node_modules/extract-zip/node_modules/get-stream": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", + "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", + "dependencies": { + "pump": "^3.0.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/fast-copy": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/fast-copy/-/fast-copy-3.0.1.tgz", @@ -3360,6 +3721,11 @@ "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==" }, + "node_modules/fast-fifo": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/fast-fifo/-/fast-fifo-1.3.2.tgz", + "integrity": "sha512-/d9sfos4yxzpwkDkuN7k2SqFKtYNmCTzgfEpz82x34IM9/zc8KGxQoXg1liNC/izpRM/MBdt44Nmx41ZWqk+FQ==" + }, "node_modules/fast-glob": { "version": "2.2.7", "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-2.2.7.tgz", @@ -3427,6 +3793,14 @@ "reusify": "^1.0.4" } }, + "node_modules/fd-slicer": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz", + "integrity": "sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==", + "dependencies": { + "pend": "~1.2.0" + } + }, "node_modules/file-type": { "version": "16.5.4", "resolved": "https://registry.npmjs.org/file-type/-/file-type-16.5.4.tgz", @@ -3640,6 +4014,14 @@ "is-property": "^1.0.2" } }, + "node_modules/get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "engines": { + "node": "6.* || 8.* || >= 10.*" + } + }, "node_modules/get-func-name": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.0.tgz", @@ -3705,6 +4087,57 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/get-uri": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/get-uri/-/get-uri-6.0.1.tgz", + "integrity": "sha512-7ZqONUVqaabogsYNWlYj0t3YZaL6dhuEueZXGF+/YVmf6dHmaFg8/6psJKqhx9QykIDKzpGcy2cn4oV4YC7V/Q==", + "dependencies": { + "basic-ftp": "^5.0.2", + "data-uri-to-buffer": "^5.0.1", + "debug": "^4.3.4", + "fs-extra": "^8.1.0" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/get-uri/node_modules/data-uri-to-buffer": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-5.0.1.tgz", + "integrity": "sha512-a9l6T1qqDogvvnw0nKlfZzqsyikEBZBClF39V3TFoKhDtGBqHu2HkuomJc02j5zft8zrUaXEuoicLeW54RkzPg==", + "engines": { + "node": ">= 14" + } + }, + "node_modules/get-uri/node_modules/fs-extra": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", + "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + }, + "engines": { + "node": ">=6 <7 || >=8" + } + }, + "node_modules/get-uri/node_modules/jsonfile": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", + "integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==", + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/get-uri/node_modules/universalify": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", + "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", + "engines": { + "node": ">= 4.0.0" + } + }, "node_modules/get-value": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", @@ -4014,6 +4447,11 @@ "node": ">= 6" } }, + "node_modules/helpers": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/helpers/-/helpers-0.0.6.tgz", + "integrity": "sha512-oi7CoWXnvnqmdiofPw5XG9ePBKr0w9TqBkS97a2/yvfRLInWb250XbKqvGJ5rQchn2fielYGY9cMAXGweWjCxg==" + }, "node_modules/hexoid": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/hexoid/-/hexoid-1.0.0.tgz", @@ -4038,6 +4476,30 @@ "node": ">= 0.8" } }, + "node_modules/http-proxy-agent": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-7.0.0.tgz", + "integrity": "sha512-+ZT+iBxVUQ1asugqnD6oWoRiS25AkjNfG085dKJGtGxkdwLQrMKU5wJr2bOOFAXzKcTuqq+7fZlTMgG3SRfIYQ==", + "dependencies": { + "agent-base": "^7.1.0", + "debug": "^4.3.4" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/https-proxy-agent": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.2.tgz", + "integrity": "sha512-NmLNjm6ucYwtcUmL7JQC1ZQ57LmHP4lT15FQ8D61nak1rO6DH+fz5qNK2Ap5UN4ZapYICE3/0KodcLYSPsPbaA==", + "dependencies": { + "agent-base": "^7.0.2", + "debug": "4" + }, + "engines": { + "node": ">= 14" + } + }, "node_modules/human-signals": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", @@ -4094,6 +4556,40 @@ "node": ">= 4" } }, + "node_modules/import-fresh": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", + "dependencies": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/import-fresh/node_modules/parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "dependencies": { + "callsites": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/import-fresh/node_modules/resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "engines": { + "node": ">=4" + } + }, "node_modules/inclusion": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/inclusion/-/inclusion-1.0.1.tgz", @@ -4147,6 +4643,11 @@ "node": ">= 0.10" } }, + "node_modules/ip": { + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.8.tgz", + "integrity": "sha512-PuExPYUiu6qMBQb4l06ecm6T6ujzhmh+MeJcW9wa89PoAz5pvd4zPgN5WJV104mb6S2T1AwNIAaB70JNrLQWhg==" + }, "node_modules/ipaddr.js": { "version": "1.9.1", "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", @@ -4167,6 +4668,11 @@ "node": ">=0.10.0" } }, + "node_modules/is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==" + }, "node_modules/is-binary-path": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", @@ -4636,6 +5142,11 @@ "js-yaml": "bin/js-yaml.js" } }, + "node_modules/json-parse-even-better-errors": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", + "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==" + }, "node_modules/json-schema-deref-sync": { "version": "0.14.0", "resolved": "https://registry.npmjs.org/json-schema-deref-sync/-/json-schema-deref-sync-0.14.0.tgz", @@ -4814,6 +5325,11 @@ "node": ">=6" } }, + "node_modules/lines-and-columns": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", + "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==" + }, "node_modules/listify": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/listify/-/listify-1.0.3.tgz", @@ -5291,6 +5807,11 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/mitt": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/mitt/-/mitt-3.0.1.tgz", + "integrity": "sha512-vKivATfr97l2/QBCYAkXYDbrIWPM2IIKEl7YPhjCvKlG3kE2gm+uBo6nEXK3M5/Ffh/FLpKExzOQ3JJoJGFKBw==" + }, "node_modules/mixin-deep": { "version": "1.3.2", "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.2.tgz", @@ -5304,6 +5825,11 @@ "node": ">=0.10.0" } }, + "node_modules/mkdirp-classic": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz", + "integrity": "sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==" + }, "node_modules/moment": { "version": "2.29.4", "resolved": "https://registry.npmjs.org/moment/-/moment-2.29.4.tgz", @@ -5498,6 +6024,14 @@ "integrity": "sha512-9iN1ka/9zmX1ZvLV9ewJYEk9h7RyRRtqdK0woXcqohu8EWIerfPUjYJPg0ULy0UqP7cslmdGc8xKDJcojlKiaw==", "dev": true }, + "node_modules/netmask": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/netmask/-/netmask-2.0.2.tgz", + "integrity": "sha512-dBpDMdxv9Irdq66304OLfEmQ9tbNRFnFTuZiLo+bD+r332bBmMJ8GBLXklIXXgxd3+v9+KUnZaUR5PJMa75Gsg==", + "engines": { + "node": ">= 0.4.0" + } + }, "node_modules/no-case": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/no-case/-/no-case-3.0.4.tgz", @@ -5911,6 +6445,37 @@ "node": ">=6" } }, + "node_modules/pac-proxy-agent": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/pac-proxy-agent/-/pac-proxy-agent-7.0.1.tgz", + "integrity": "sha512-ASV8yU4LLKBAjqIPMbrgtaKIvxQri/yh2OpI+S6hVa9JRkUI3Y3NPFbfngDtY7oFtSMD3w31Xns89mDa3Feo5A==", + "dependencies": { + "@tootallnate/quickjs-emscripten": "^0.23.0", + "agent-base": "^7.0.2", + "debug": "^4.3.4", + "get-uri": "^6.0.1", + "http-proxy-agent": "^7.0.0", + "https-proxy-agent": "^7.0.2", + "pac-resolver": "^7.0.0", + "socks-proxy-agent": "^8.0.2" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/pac-resolver": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/pac-resolver/-/pac-resolver-7.0.0.tgz", + "integrity": "sha512-Fd9lT9vJbHYRACT8OhCbZBbxr6KRSawSovFpy8nDGshaK99S/EBhVIHp9+crhxrsZOuvLpgL1n23iyPg6Rl2hg==", + "dependencies": { + "degenerator": "^5.0.0", + "ip": "^1.1.8", + "netmask": "^2.0.2" + }, + "engines": { + "node": ">= 14" + } + }, "node_modules/param-case": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/param-case/-/param-case-3.0.4.tgz", @@ -5944,6 +6509,23 @@ "node": ">= 10" } }, + "node_modules/parse-json": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", + "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", + "dependencies": { + "@babel/code-frame": "^7.0.0", + "error-ex": "^1.3.1", + "json-parse-even-better-errors": "^2.3.0", + "lines-and-columns": "^1.1.6" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/parseurl": { "version": "1.3.3", "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", @@ -5970,6 +6552,15 @@ "node": ">=0.10.0" } }, + "node_modules/path": { + "version": "0.12.7", + "resolved": "https://registry.npmjs.org/path/-/path-0.12.7.tgz", + "integrity": "sha512-aXXC6s+1w7otVF9UletFkFcDsJeO7lSZBPUQhtb5O0xJe8LtYhj/GxldoL09bBj9+ZmE2hNoHqQSFMN5fikh4Q==", + "dependencies": { + "process": "^0.11.1", + "util": "^0.10.3" + } + }, "node_modules/path-case": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/path-case/-/path-case-3.0.4.tgz", @@ -6059,6 +6650,11 @@ "url": "https://github.com/sponsors/Borewit" } }, + "node_modules/pend": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz", + "integrity": "sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==" + }, "node_modules/pg-connection-string": { "version": "2.6.1", "resolved": "https://registry.npmjs.org/pg-connection-string/-/pg-connection-string-2.6.1.tgz", @@ -6252,6 +6848,14 @@ "resolved": "https://registry.npmjs.org/process-warning/-/process-warning-1.0.0.tgz", "integrity": "sha512-du4wfLyj4yCZq1VupnVSZmRsPJsNuxoDQFdCFHLaYiEbFBD7QE0a+I4D7hOxrVnh78QE/YipFAj9lXHiXocV+Q==" }, + "node_modules/progress": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", + "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", + "engines": { + "node": ">=0.4.0" + } + }, "node_modules/prop-ini": { "version": "0.0.2", "resolved": "https://registry.npmjs.org/prop-ini/-/prop-ini-0.0.2.tgz", @@ -6273,6 +6877,32 @@ "node": ">= 0.10" } }, + "node_modules/proxy-agent": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/proxy-agent/-/proxy-agent-6.3.1.tgz", + "integrity": "sha512-Rb5RVBy1iyqOtNl15Cw/llpeLH8bsb37gM1FUfKQ+Wck6xHlbAhWGUFiTRHtkjqGTA5pSHz6+0hrPW/oECihPQ==", + "dependencies": { + "agent-base": "^7.0.2", + "debug": "^4.3.4", + "http-proxy-agent": "^7.0.0", + "https-proxy-agent": "^7.0.2", + "lru-cache": "^7.14.1", + "pac-proxy-agent": "^7.0.1", + "proxy-from-env": "^1.1.0", + "socks-proxy-agent": "^8.0.2" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/proxy-agent/node_modules/lru-cache": { + "version": "7.18.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz", + "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==", + "engines": { + "node": ">=12" + } + }, "node_modules/proxy-from-env": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", @@ -6302,6 +6932,99 @@ "node": ">=6" } }, + "node_modules/puppeteer": { + "version": "21.2.1", + "resolved": "https://registry.npmjs.org/puppeteer/-/puppeteer-21.2.1.tgz", + "integrity": "sha512-bgY/lYBH3rR+m5EP1FxzY2MRMrau7Pyq+N5YlspA63sF+cBkUiTn5WZXwXm7mEHwkkOSVi5LiS74T5QIgrSklg==", + "hasInstallScript": true, + "dependencies": { + "@puppeteer/browsers": "1.7.1", + "cosmiconfig": "8.3.5", + "puppeteer-core": "21.2.1" + }, + "engines": { + "node": ">=16.3.0" + } + }, + "node_modules/puppeteer-core": { + "version": "21.2.1", + "resolved": "https://registry.npmjs.org/puppeteer-core/-/puppeteer-core-21.2.1.tgz", + "integrity": "sha512-+I8EjpWFeeFKScpQiTEnC4jGve2Wr4eA9qUMoa8S317DJPm9h7wzrT4YednZK2TQZMyPtPQ2Disb/Tg02+4Naw==", + "dependencies": { + "@puppeteer/browsers": "1.7.1", + "chromium-bidi": "0.4.26", + "cross-fetch": "4.0.0", + "debug": "4.3.4", + "devtools-protocol": "0.0.1159816", + "ws": "8.14.1" + }, + "engines": { + "node": ">=16.3.0" + } + }, + "node_modules/puppeteer/node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==" + }, + "node_modules/puppeteer/node_modules/cosmiconfig": { + "version": "8.3.5", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-8.3.5.tgz", + "integrity": "sha512-A5Xry3xfS96wy2qbiLkQLAg4JUrR2wvfybxj6yqLmrUfMAvhS3MZxIP2oQn0grgYIvJqzpeTEWu4vK0t+12NNw==", + "dependencies": { + "import-fresh": "^3.3.0", + "js-yaml": "^4.1.0", + "parse-json": "^5.2.0", + "path-type": "^4.0.0" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/d-fischer" + }, + "peerDependencies": { + "typescript": ">=4.9.5" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/puppeteer/node_modules/js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/puppeteer/node_modules/path-type": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "engines": { + "node": ">=8" + } + }, + "node_modules/puppeteer/node_modules/typescript": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.2.2.tgz", + "integrity": "sha512-mI4WrpHsbCIcwT9cF4FZvr80QUeKvsUsUvKDoR+X/7XHQH98xYD8YHZg7ANtz2GtZt/CBq2QJ0thkGJMHfqc1w==", + "optional": true, + "peer": true, + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=14.17" + } + }, "node_modules/qs": { "version": "6.11.2", "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.2.tgz", @@ -6336,6 +7059,11 @@ } ] }, + "node_modules/queue-tick": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/queue-tick/-/queue-tick-1.0.1.tgz", + "integrity": "sha512-kJt5qhMxoszgU/62PLP1CJytzd2NKetjSRnyuj31fDd3Rlcz3fzlFdFLD1SItunPwyqEOkca6GbV612BWfaBag==" + }, "node_modules/quick-format-unescaped": { "version": "4.0.4", "resolved": "https://registry.npmjs.org/quick-format-unescaped/-/quick-format-unescaped-4.0.4.tgz", @@ -6533,6 +7261,14 @@ "node": ">= 0.8" } }, + "node_modules/require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/resolve": { "version": "1.22.4", "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.4.tgz", @@ -6910,6 +7646,15 @@ "node": ">=8.0.0" } }, + "node_modules/smart-buffer": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz", + "integrity": "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==", + "engines": { + "node": ">= 6.0.0", + "npm": ">= 3.0.0" + } + }, "node_modules/smpltmpl": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/smpltmpl/-/smpltmpl-1.0.2.tgz", @@ -7128,6 +7873,37 @@ "node": ">=0.10.0" } }, + "node_modules/socks": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/socks/-/socks-2.7.1.tgz", + "integrity": "sha512-7maUZy1N7uo6+WVEX6psASxtNlKaNVMlGQKkG/63nEDdLOWNbiUMoLK7X4uYoLhQstau72mLgfEWcXcwsaHbYQ==", + "dependencies": { + "ip": "^2.0.0", + "smart-buffer": "^4.2.0" + }, + "engines": { + "node": ">= 10.13.0", + "npm": ">= 3.0.0" + } + }, + "node_modules/socks-proxy-agent": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-8.0.2.tgz", + "integrity": "sha512-8zuqoLv1aP/66PHF5TqwJ7Czm3Yv32urJQHrVyhD7mmA6d61Zv8cIXQYPTWwmg6qlupnPvs/QKDmfa4P/qct2g==", + "dependencies": { + "agent-base": "^7.0.2", + "debug": "^4.3.4", + "socks": "^2.7.1" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/socks/node_modules/ip": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ip/-/ip-2.0.0.tgz", + "integrity": "sha512-WKa+XuLG1A1R0UWhl2+1XQSi+fZWMsYKffMZTTYsiZaUD8k2yDAj5atimTUD2TZkyCkNEeYE5NhFZmupOGtjYQ==" + }, "node_modules/sonic-boom": { "version": "2.8.0", "resolved": "https://registry.npmjs.org/sonic-boom/-/sonic-boom-2.8.0.tgz", @@ -7334,6 +8110,15 @@ "node": ">= 0.8" } }, + "node_modules/streamx": { + "version": "2.15.1", + "resolved": "https://registry.npmjs.org/streamx/-/streamx-2.15.1.tgz", + "integrity": "sha512-fQMzy2O/Q47rgwErk/eGeLu/roaFWV0jVsogDmrszM9uIw8L5OA+t+V93MgYlufNptfjmYR1tOMWhei/Eh7TQA==", + "dependencies": { + "fast-fifo": "^1.1.0", + "queue-tick": "^1.0.1" + } + }, "node_modules/string_decoder": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", @@ -7547,6 +8332,26 @@ "integrity": "sha512-rCC0NWGKr/IJhtRuPq/t37qvZHI/mH4I4sxflVM+qgVe5Z2uOCivzWaVbuioJaB61kvm5UvB7b49E+oBY0M8jA==", "dev": true }, + "node_modules/tar-fs": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-3.0.4.tgz", + "integrity": "sha512-5AFQU8b9qLfZCX9zp2duONhPmZv0hGYiBPJsyUdqMjzq/mqVpy/rEUSeHk1+YitmxugaptgBh5oDGU3VsAJq4w==", + "dependencies": { + "mkdirp-classic": "^0.5.2", + "pump": "^3.0.0", + "tar-stream": "^3.1.5" + } + }, + "node_modules/tar-stream": { + "version": "3.1.6", + "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-3.1.6.tgz", + "integrity": "sha512-B/UyjYwPpMBv+PaFSWAmtYjwdrlEaZQEhMIBFNC5oEG8lpiW8XjcSdmEaClj28ArfKScKHs2nshz3k2le6crsg==", + "dependencies": { + "b4a": "^1.6.4", + "fast-fifo": "^1.2.0", + "streamx": "^2.15.0" + } + }, "node_modules/tarn": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/tarn/-/tarn-3.0.2.tgz", @@ -7566,6 +8371,11 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/through": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", + "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==" + }, "node_modules/tildify": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/tildify/-/tildify-2.0.0.tgz", @@ -7767,6 +8577,38 @@ "node": ">= 0.8" } }, + "node_modules/unbzip2-stream": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/unbzip2-stream/-/unbzip2-stream-1.4.3.tgz", + "integrity": "sha512-mlExGW4w71ebDJviH16lQLtZS32VKqsSfk80GCfUlwT/4/hNRFsoscrF/c++9xinkMzECL1uL9DDwXqFWkruPg==", + "dependencies": { + "buffer": "^5.2.1", + "through": "^2.3.8" + } + }, + "node_modules/unbzip2-stream/node_modules/buffer": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.1.13" + } + }, "node_modules/union-value": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.1.tgz", @@ -7896,11 +8738,24 @@ "node": ">=0.10.0" } }, + "node_modules/util": { + "version": "0.10.4", + "resolved": "https://registry.npmjs.org/util/-/util-0.10.4.tgz", + "integrity": "sha512-0Pm9hTQ3se5ll1XihRic3FDIku70C+iHUdT/W926rSgHV5QgXsYbKZN8MSC3tJtSkhuROzvsQjAaFENRXr+19A==", + "dependencies": { + "inherits": "2.0.3" + } + }, "node_modules/util-deprecate": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" }, + "node_modules/util/node_modules/inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==" + }, "node_modules/valid-url": { "version": "1.0.9", "resolved": "https://registry.npmjs.org/valid-url/-/valid-url-1.0.9.tgz", @@ -8008,6 +8863,34 @@ "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" }, + "node_modules/ws": { + "version": "8.14.1", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.14.1.tgz", + "integrity": "sha512-4OOseMUq8AzRBI/7SLMUwO+FEDnguetSk7KMb1sHwvF2w2Wv5Hoj0nlifx8vtGsftE/jWHojPy8sMMzYLJ2G/A==", + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": ">=5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, + "node_modules/y18n": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "engines": { + "node": ">=10" + } + }, "node_modules/yallist": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", @@ -8023,6 +8906,40 @@ "node": ">= 14" } }, + "node_modules/yargs": { + "version": "17.7.1", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.1.tgz", + "integrity": "sha512-cwiTb08Xuv5fqF4AovYacTFNxk62th7LKJ6BL9IGUpTJrWoU7/7WdQGTP2SjKf1dUNBGzDd28p/Yfs/GI6JrLw==", + "dependencies": { + "cliui": "^8.0.1", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.3", + "y18n": "^5.0.5", + "yargs-parser": "^21.1.1" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/yargs-parser": { + "version": "21.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", + "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", + "engines": { + "node": ">=12" + } + }, + "node_modules/yauzl": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz", + "integrity": "sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g==", + "dependencies": { + "buffer-crc32": "~0.2.3", + "fd-slicer": "~1.1.0" + } + }, "node_modules/youch": { "version": "3.2.3", "resolved": "https://registry.npmjs.org/youch/-/youch-3.2.3.tgz", @@ -8634,6 +9551,127 @@ "resolved": "https://registry.npmjs.org/@arr/every/-/every-1.0.1.tgz", "integrity": "sha512-UQFQ6SgyJ6LX42W8rHCs8KVc0JS0tzVL9ct4XYedJukskYVWTo49tNiMEK9C2HTyarbNiT/RVIRSY82vH+6sTg==" }, + "@babel/code-frame": { + "version": "7.22.13", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.22.13.tgz", + "integrity": "sha512-XktuhWlJ5g+3TJXc5upd9Ks1HutSArik6jf2eAjYFyIOf4ej3RN+184cZbzDvbPnuTJIUhPKKJE3cIsYTiAT3w==", + "requires": { + "@babel/highlight": "^7.22.13", + "chalk": "^2.4.2" + }, + "dependencies": { + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "requires": { + "color-convert": "^1.9.0" + } + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==" + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==" + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "@babel/helper-validator-identifier": { + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.15.tgz", + "integrity": "sha512-4E/F9IIEi8WR94324mbDUMo074YTheJmd7eZF5vITTeYchqAi6sYXRLHUVsmkdmY4QjfKTcB2jB7dVP3NaBElQ==" + }, + "@babel/highlight": { + "version": "7.22.13", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.22.13.tgz", + "integrity": "sha512-C/BaXcnnvBCmHTpz/VGZ8jgtE2aYlW4hxDhseJAWZb7gqGM/qtCK6iZUb0TyKFf7BOUsBH7Q7fkRsDRhg1XklQ==", + "requires": { + "@babel/helper-validator-identifier": "^7.22.5", + "chalk": "^2.4.2", + "js-tokens": "^4.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "requires": { + "color-convert": "^1.9.0" + } + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==" + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==" + }, + "js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, "@babel/runtime": { "version": "7.22.10", "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.22.10.tgz", @@ -9048,6 +10086,20 @@ "truncatise": "0.0.8" } }, + "@puppeteer/browsers": { + "version": "1.7.1", + "resolved": "https://registry.npmjs.org/@puppeteer/browsers/-/browsers-1.7.1.tgz", + "integrity": "sha512-nIb8SOBgDEMFY2iS2MdnUZOg2ikcYchRrBoF+wtdjieRFKR2uGRipHY/oFLo+2N6anDualyClPzGywTHRGrLfw==", + "requires": { + "debug": "4.3.4", + "extract-zip": "2.0.1", + "progress": "2.0.3", + "proxy-agent": "6.3.1", + "tar-fs": "3.0.4", + "unbzip2-stream": "1.4.3", + "yargs": "17.7.1" + } + }, "@sinclair/typebox": { "version": "0.27.8", "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.27.8.tgz", @@ -9059,6 +10111,11 @@ "resolved": "https://registry.npmjs.org/@tokenizer/token/-/token-0.3.0.tgz", "integrity": "sha512-OvjF+z51L3ov0OyAU0duzsYuvO01PH7x4t6DJx+guahgTnBHkhJdG7soQeTSFLWN3efnHyibZ4Z8l2EuWwJN3A==" }, + "@tootallnate/quickjs-emscripten": { + "version": "0.23.0", + "resolved": "https://registry.npmjs.org/@tootallnate/quickjs-emscripten/-/quickjs-emscripten-0.23.0.tgz", + "integrity": "sha512-C5Mc6rdnsaJDjO3UpGW/CQTHtCKaYlScZTly4JIu97Jxo/odCiH0ITnDXSJPTOrEKk/ycSZ0AOgTmkDtkOsvIA==" + }, "@types/bytes": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/@types/bytes/-/bytes-3.1.1.tgz", @@ -9221,6 +10278,15 @@ "integrity": "sha512-iO9ZQHkZxHn4mSakYV0vFHAVDyEOIJQrV2uZ06HxEPcx+mt8swXoZHIbaaJ2crJYFfErySgktuTZ3BeLz+XmFA==", "dev": true }, + "@types/yauzl": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/@types/yauzl/-/yauzl-2.10.0.tgz", + "integrity": "sha512-Cn6WYCm0tXv8p6k+A8PvbDG763EDpBoTzHdA+Q/MF6H3sapGjCm9NzoaJncJS9tUKSuCoDs9XHxYYsQDgxR6kw==", + "optional": true, + "requires": { + "@types/node": "*" + } + }, "abort-controller": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz", @@ -9289,6 +10355,14 @@ "integrity": "sha512-cQH/NP250gOF9k3TTDhVsTOPSAvyH4MhKVZ4ryYiihA+vnP27sut1gVIrRas3Evl5d2wEgWVGI5DgdP/ZFSk0w==", "dev": true }, + "agent-base": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.0.tgz", + "integrity": "sha512-o/zjMZRhJxny7OyEF+Op8X+efiELC7k7yOjMzgfzVqOzXqkBkWI79YoTdOtsuWd5BWhAGAuOY/Xa6xpiaWXiNg==", + "requires": { + "debug": "^4.3.4" + } + }, "aggregate-error": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", @@ -9529,6 +10603,14 @@ "integrity": "sha512-Q+JC7Whu8HhmTdBph/Tq59IoRtoy6KAm5zzPv00WdujX82lbAL8K7WVjne7vdCsAmbF4AYaDOPyO3k0kl8qIrw==", "dev": true }, + "ast-types": { + "version": "0.13.4", + "resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.13.4.tgz", + "integrity": "sha512-x1FCFnFifvYDDzTaLII71vG5uvDwgtmDTEVWAxrgeiR8VjMONcCXJx7E+USjDtHlwFmt9MysbqgF9b9Vjr6w+w==", + "requires": { + "tslib": "^2.0.1" + } + }, "astral-regex": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz", @@ -9574,6 +10656,11 @@ "proxy-from-env": "^1.1.0" } }, + "b4a": { + "version": "1.6.4", + "resolved": "https://registry.npmjs.org/b4a/-/b4a-1.6.4.tgz", + "integrity": "sha512-fpWrvyVHEKyeEvbKZTVOeZF3VSKKWtJxFIxX/jaVPf+cLbGUSitjb49pHLqPV2BUNNZ0LcoeEGfE/YCpyDYHIw==" + }, "babel-code-frame": { "version": "6.26.0", "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz", @@ -9663,6 +10750,11 @@ "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==" }, + "basic-ftp": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/basic-ftp/-/basic-ftp-5.0.3.tgz", + "integrity": "sha512-QHX8HLlncOLpy54mh+k/sWIFd0ThmRqwe9ZjELybGZK+tZ8rUb9VO0saKJUROTbE+KhzDUT7xziGpGrW8Kmd+g==" + }, "binary-extensions": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", @@ -9709,6 +10801,11 @@ "resolved": "https://registry.npmjs.org/buffer-alloc-unsafe/-/buffer-alloc-unsafe-1.1.0.tgz", "integrity": "sha512-TEM2iMIEQdJ2yjPJoSIsldnleVaAk1oW3DBVUykyOLsEsFmEc9kn+SFFPz+gl54KQNxlDnAwCXosOS9Okx2xAg==" }, + "buffer-crc32": { + "version": "0.2.13", + "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", + "integrity": "sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==" + }, "buffer-equal-constant-time": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz", @@ -9776,8 +10873,7 @@ "callsites": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", - "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", - "dev": true + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==" }, "camel-case": { "version": "4.1.2", @@ -9890,6 +10986,14 @@ } } }, + "chromium-bidi": { + "version": "0.4.26", + "resolved": "https://registry.npmjs.org/chromium-bidi/-/chromium-bidi-0.4.26.tgz", + "integrity": "sha512-lukBGfogAI4T0y3acc86RaacqgKQve47/8pV2c+Hr1PjcICj2K4OkL3qfX3qrqxxnd4ddurFC0WBA3VCQqYeUQ==", + "requires": { + "mitt": "3.0.1" + } + }, "class-utils": { "version": "0.3.6", "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz", @@ -9998,6 +11102,28 @@ "string-width": "^4.2.0" } }, + "cliui": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", + "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", + "requires": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.1", + "wrap-ansi": "^7.0.0" + }, + "dependencies": { + "wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "requires": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + } + } + } + }, "clone": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz", @@ -10197,6 +11323,14 @@ } } }, + "cross-fetch": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-4.0.0.tgz", + "integrity": "sha512-e4a5N8lVvuLgAWgnCrLr2PP0YyDOTHa9H/Rj54dirp61qXnNq46m82bRhNqIA5VccJtWBvPTFRV3TtvHUKPB1g==", + "requires": { + "node-fetch": "^2.6.12" + } + }, "cross-spawn": { "version": "7.0.3", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", @@ -10311,6 +11445,16 @@ "isobject": "^3.0.1" } }, + "degenerator": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/degenerator/-/degenerator-5.0.1.tgz", + "integrity": "sha512-TllpMR/t0M5sqCXfj85i4XaAzxmS5tVA16dqvdkMwGmzI+dXLXnw3J+3Vdv7VKw+ThlTMboK6i9rnZ6Nntj5CQ==", + "requires": { + "ast-types": "^0.13.4", + "escodegen": "^2.1.0", + "esprima": "^4.0.1" + } + }, "delayed-stream": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", @@ -10337,6 +11481,11 @@ "integrity": "sha512-reYkTUJAZb9gUuZ2RvVCNhVHdg62RHnJ7WJl8ftMi4diZ6NWlciOzQN88pUhSELEwflJht4oQDv0F0BMlwaYtA==", "dev": true }, + "devtools-protocol": { + "version": "0.0.1159816", + "resolved": "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.1159816.tgz", + "integrity": "sha512-2cZlHxC5IlgkIWe2pSDmCrDiTzbSJWywjbDDnupOImEBcG31CQgBLV8wWE+5t+C4rimcjHsbzy7CBzf9oFjboA==" + }, "dezalgo": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/dezalgo/-/dezalgo-1.0.4.tgz", @@ -10538,6 +11687,14 @@ "strip-ansi": "^6.0.1" } }, + "error-ex": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "requires": { + "is-arrayish": "^0.2.1" + } + }, "es-module-lexer": { "version": "0.3.26", "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-0.3.26.tgz", @@ -10561,8 +11718,18 @@ "escape-string-regexp": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", - "dev": true + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==" + }, + "escodegen": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-2.1.0.tgz", + "integrity": "sha512-2NlIDTwUWJN0mRPQOdtQBzbUHvdGY2P1VXSyU83Q3xKxM7WHX2Ql8dKq782Q9TgQUNOLEzEYu9bzLNj1q88I5w==", + "requires": { + "esprima": "^4.0.1", + "estraverse": "^5.2.0", + "esutils": "^2.0.2", + "source-map": "~0.6.1" + } }, "esm": { "version": "3.2.25", @@ -10572,14 +11739,17 @@ "esprima": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", - "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", - "dev": true + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==" + }, + "estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==" }, "esutils": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", - "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", - "dev": true + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==" }, "etag": { "version": "1.8.1", @@ -10784,6 +11954,27 @@ } } }, + "extract-zip": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-2.0.1.tgz", + "integrity": "sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg==", + "requires": { + "@types/yauzl": "^2.9.1", + "debug": "^4.1.1", + "get-stream": "^5.1.0", + "yauzl": "^2.10.0" + }, + "dependencies": { + "get-stream": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", + "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", + "requires": { + "pump": "^3.0.0" + } + } + } + }, "fast-copy": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/fast-copy/-/fast-copy-3.0.1.tgz", @@ -10794,6 +11985,11 @@ "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==" }, + "fast-fifo": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/fast-fifo/-/fast-fifo-1.3.2.tgz", + "integrity": "sha512-/d9sfos4yxzpwkDkuN7k2SqFKtYNmCTzgfEpz82x34IM9/zc8KGxQoXg1liNC/izpRM/MBdt44Nmx41ZWqk+FQ==" + }, "fast-glob": { "version": "2.2.7", "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-2.2.7.tgz", @@ -10856,6 +12052,14 @@ "reusify": "^1.0.4" } }, + "fd-slicer": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz", + "integrity": "sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==", + "requires": { + "pend": "~1.2.0" + } + }, "file-type": { "version": "16.5.4", "resolved": "https://registry.npmjs.org/file-type/-/file-type-16.5.4.tgz", @@ -11006,6 +12210,11 @@ "is-property": "^1.0.2" } }, + "get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==" + }, "get-func-name": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.0.tgz", @@ -11050,6 +12259,47 @@ "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", "dev": true }, + "get-uri": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/get-uri/-/get-uri-6.0.1.tgz", + "integrity": "sha512-7ZqONUVqaabogsYNWlYj0t3YZaL6dhuEueZXGF+/YVmf6dHmaFg8/6psJKqhx9QykIDKzpGcy2cn4oV4YC7V/Q==", + "requires": { + "basic-ftp": "^5.0.2", + "data-uri-to-buffer": "^5.0.1", + "debug": "^4.3.4", + "fs-extra": "^8.1.0" + }, + "dependencies": { + "data-uri-to-buffer": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-5.0.1.tgz", + "integrity": "sha512-a9l6T1qqDogvvnw0nKlfZzqsyikEBZBClF39V3TFoKhDtGBqHu2HkuomJc02j5zft8zrUaXEuoicLeW54RkzPg==" + }, + "fs-extra": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", + "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", + "requires": { + "graceful-fs": "^4.2.0", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + } + }, + "jsonfile": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", + "integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==", + "requires": { + "graceful-fs": "^4.1.6" + } + }, + "universalify": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", + "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==" + } + } + }, "get-value": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", @@ -11291,6 +12541,11 @@ } } }, + "helpers": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/helpers/-/helpers-0.0.6.tgz", + "integrity": "sha512-oi7CoWXnvnqmdiofPw5XG9ePBKr0w9TqBkS97a2/yvfRLInWb250XbKqvGJ5rQchn2fielYGY9cMAXGweWjCxg==" + }, "hexoid": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/hexoid/-/hexoid-1.0.0.tgz", @@ -11309,6 +12564,24 @@ "toidentifier": "1.0.1" } }, + "http-proxy-agent": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-7.0.0.tgz", + "integrity": "sha512-+ZT+iBxVUQ1asugqnD6oWoRiS25AkjNfG085dKJGtGxkdwLQrMKU5wJr2bOOFAXzKcTuqq+7fZlTMgG3SRfIYQ==", + "requires": { + "agent-base": "^7.1.0", + "debug": "^4.3.4" + } + }, + "https-proxy-agent": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.2.tgz", + "integrity": "sha512-NmLNjm6ucYwtcUmL7JQC1ZQ57LmHP4lT15FQ8D61nak1rO6DH+fz5qNK2Ap5UN4ZapYICE3/0KodcLYSPsPbaA==", + "requires": { + "agent-base": "^7.0.2", + "debug": "4" + } + }, "human-signals": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", @@ -11339,6 +12612,30 @@ "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", "dev": true }, + "import-fresh": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", + "requires": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + }, + "dependencies": { + "parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "requires": { + "callsites": "^3.0.0" + } + }, + "resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==" + } + } + }, "inclusion": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/inclusion/-/inclusion-1.0.1.tgz", @@ -11383,6 +12680,11 @@ "resolved": "https://registry.npmjs.org/interpret/-/interpret-2.2.0.tgz", "integrity": "sha512-Ju0Bz/cEia55xDwUWEa8+olFpCiQoypjnQySseKtmjNrnps3P+xfpUmGr90T7yjlVJmOtybRvPXhKMbHr+fWnw==" }, + "ip": { + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.8.tgz", + "integrity": "sha512-PuExPYUiu6qMBQb4l06ecm6T6ujzhmh+MeJcW9wa89PoAz5pvd4zPgN5WJV104mb6S2T1AwNIAaB70JNrLQWhg==" + }, "ipaddr.js": { "version": "1.9.1", "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", @@ -11397,6 +12699,11 @@ "kind-of": "^6.0.0" } }, + "is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==" + }, "is-binary-path": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", @@ -11759,6 +13066,11 @@ "esprima": "^4.0.0" } }, + "json-parse-even-better-errors": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", + "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==" + }, "json-schema-deref-sync": { "version": "0.14.0", "resolved": "https://registry.npmjs.org/json-schema-deref-sync/-/json-schema-deref-sync-0.14.0.tgz", @@ -11883,6 +13195,11 @@ "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==" }, + "lines-and-columns": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", + "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==" + }, "listify": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/listify/-/listify-1.0.3.tgz", @@ -12250,6 +13567,11 @@ "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==" }, + "mitt": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/mitt/-/mitt-3.0.1.tgz", + "integrity": "sha512-vKivATfr97l2/QBCYAkXYDbrIWPM2IIKEl7YPhjCvKlG3kE2gm+uBo6nEXK3M5/Ffh/FLpKExzOQ3JJoJGFKBw==" + }, "mixin-deep": { "version": "1.3.2", "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.2.tgz", @@ -12260,6 +13582,11 @@ "is-extendable": "^1.0.1" } }, + "mkdirp-classic": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz", + "integrity": "sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==" + }, "moment": { "version": "2.29.4", "resolved": "https://registry.npmjs.org/moment/-/moment-2.29.4.tgz", @@ -12418,6 +13745,11 @@ "integrity": "sha512-9iN1ka/9zmX1ZvLV9ewJYEk9h7RyRRtqdK0woXcqohu8EWIerfPUjYJPg0ULy0UqP7cslmdGc8xKDJcojlKiaw==", "dev": true }, + "netmask": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/netmask/-/netmask-2.0.2.tgz", + "integrity": "sha512-dBpDMdxv9Irdq66304OLfEmQ9tbNRFnFTuZiLo+bD+r332bBmMJ8GBLXklIXXgxd3+v9+KUnZaUR5PJMa75Gsg==" + }, "no-case": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/no-case/-/no-case-3.0.4.tgz", @@ -12728,6 +14060,31 @@ "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", "dev": true }, + "pac-proxy-agent": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/pac-proxy-agent/-/pac-proxy-agent-7.0.1.tgz", + "integrity": "sha512-ASV8yU4LLKBAjqIPMbrgtaKIvxQri/yh2OpI+S6hVa9JRkUI3Y3NPFbfngDtY7oFtSMD3w31Xns89mDa3Feo5A==", + "requires": { + "@tootallnate/quickjs-emscripten": "^0.23.0", + "agent-base": "^7.0.2", + "debug": "^4.3.4", + "get-uri": "^6.0.1", + "http-proxy-agent": "^7.0.0", + "https-proxy-agent": "^7.0.2", + "pac-resolver": "^7.0.0", + "socks-proxy-agent": "^8.0.2" + } + }, + "pac-resolver": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/pac-resolver/-/pac-resolver-7.0.0.tgz", + "integrity": "sha512-Fd9lT9vJbHYRACT8OhCbZBbxr6KRSawSovFpy8nDGshaK99S/EBhVIHp9+crhxrsZOuvLpgL1n23iyPg6Rl2hg==", + "requires": { + "degenerator": "^5.0.0", + "ip": "^1.1.8", + "netmask": "^2.0.2" + } + }, "param-case": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/param-case/-/param-case-3.0.4.tgz", @@ -12755,6 +14112,17 @@ "slashes": "2.0.2" } }, + "parse-json": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", + "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", + "requires": { + "@babel/code-frame": "^7.0.0", + "error-ex": "^1.3.1", + "json-parse-even-better-errors": "^2.3.0", + "lines-and-columns": "^1.1.6" + } + }, "parseurl": { "version": "1.3.3", "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", @@ -12775,6 +14143,15 @@ "integrity": "sha512-XHXfu/yOQRy9vYOtUDVMN60OEJjW013GoObG1o+xwQTpB9eYJX/BjXMsdW13ZDPruFhYYn0AG22w0xgQMwl3Nw==", "dev": true }, + "path": { + "version": "0.12.7", + "resolved": "https://registry.npmjs.org/path/-/path-0.12.7.tgz", + "integrity": "sha512-aXXC6s+1w7otVF9UletFkFcDsJeO7lSZBPUQhtb5O0xJe8LtYhj/GxldoL09bBj9+ZmE2hNoHqQSFMN5fikh4Q==", + "requires": { + "process": "^0.11.1", + "util": "^0.10.3" + } + }, "path-case": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/path-case/-/path-case-3.0.4.tgz", @@ -12841,6 +14218,11 @@ "resolved": "https://registry.npmjs.org/peek-readable/-/peek-readable-4.1.0.tgz", "integrity": "sha512-ZI3LnwUv5nOGbQzD9c2iDG6toheuXSZP5esSHBjopsXH4dg19soufvpUGA3uohi5anFtGb2lhAVdHzH6R/Evvg==" }, + "pend": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz", + "integrity": "sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==" + }, "pg-connection-string": { "version": "2.6.1", "resolved": "https://registry.npmjs.org/pg-connection-string/-/pg-connection-string-2.6.1.tgz", @@ -12998,6 +14380,11 @@ "resolved": "https://registry.npmjs.org/process-warning/-/process-warning-1.0.0.tgz", "integrity": "sha512-du4wfLyj4yCZq1VupnVSZmRsPJsNuxoDQFdCFHLaYiEbFBD7QE0a+I4D7hOxrVnh78QE/YipFAj9lXHiXocV+Q==" }, + "progress": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", + "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==" + }, "prop-ini": { "version": "0.0.2", "resolved": "https://registry.npmjs.org/prop-ini/-/prop-ini-0.0.2.tgz", @@ -13016,6 +14403,28 @@ "ipaddr.js": "1.9.1" } }, + "proxy-agent": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/proxy-agent/-/proxy-agent-6.3.1.tgz", + "integrity": "sha512-Rb5RVBy1iyqOtNl15Cw/llpeLH8bsb37gM1FUfKQ+Wck6xHlbAhWGUFiTRHtkjqGTA5pSHz6+0hrPW/oECihPQ==", + "requires": { + "agent-base": "^7.0.2", + "debug": "^4.3.4", + "http-proxy-agent": "^7.0.0", + "https-proxy-agent": "^7.0.2", + "lru-cache": "^7.14.1", + "pac-proxy-agent": "^7.0.1", + "proxy-from-env": "^1.1.0", + "socks-proxy-agent": "^8.0.2" + }, + "dependencies": { + "lru-cache": { + "version": "7.18.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz", + "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==" + } + } + }, "proxy-from-env": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", @@ -13042,6 +14451,67 @@ "integrity": "sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==", "dev": true }, + "puppeteer": { + "version": "21.2.1", + "resolved": "https://registry.npmjs.org/puppeteer/-/puppeteer-21.2.1.tgz", + "integrity": "sha512-bgY/lYBH3rR+m5EP1FxzY2MRMrau7Pyq+N5YlspA63sF+cBkUiTn5WZXwXm7mEHwkkOSVi5LiS74T5QIgrSklg==", + "requires": { + "@puppeteer/browsers": "1.7.1", + "cosmiconfig": "8.3.5", + "puppeteer-core": "21.2.1" + }, + "dependencies": { + "argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==" + }, + "cosmiconfig": { + "version": "8.3.5", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-8.3.5.tgz", + "integrity": "sha512-A5Xry3xfS96wy2qbiLkQLAg4JUrR2wvfybxj6yqLmrUfMAvhS3MZxIP2oQn0grgYIvJqzpeTEWu4vK0t+12NNw==", + "requires": { + "import-fresh": "^3.3.0", + "js-yaml": "^4.1.0", + "parse-json": "^5.2.0", + "path-type": "^4.0.0" + } + }, + "js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "requires": { + "argparse": "^2.0.1" + } + }, + "path-type": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==" + }, + "typescript": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.2.2.tgz", + "integrity": "sha512-mI4WrpHsbCIcwT9cF4FZvr80QUeKvsUsUvKDoR+X/7XHQH98xYD8YHZg7ANtz2GtZt/CBq2QJ0thkGJMHfqc1w==", + "optional": true, + "peer": true + } + } + }, + "puppeteer-core": { + "version": "21.2.1", + "resolved": "https://registry.npmjs.org/puppeteer-core/-/puppeteer-core-21.2.1.tgz", + "integrity": "sha512-+I8EjpWFeeFKScpQiTEnC4jGve2Wr4eA9qUMoa8S317DJPm9h7wzrT4YednZK2TQZMyPtPQ2Disb/Tg02+4Naw==", + "requires": { + "@puppeteer/browsers": "1.7.1", + "chromium-bidi": "0.4.26", + "cross-fetch": "4.0.0", + "debug": "4.3.4", + "devtools-protocol": "0.0.1159816", + "ws": "8.14.1" + } + }, "qs": { "version": "6.11.2", "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.2.tgz", @@ -13056,6 +14526,11 @@ "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", "dev": true }, + "queue-tick": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/queue-tick/-/queue-tick-1.0.1.tgz", + "integrity": "sha512-kJt5qhMxoszgU/62PLP1CJytzd2NKetjSRnyuj31fDd3Rlcz3fzlFdFLD1SItunPwyqEOkca6GbV612BWfaBag==" + }, "quick-format-unescaped": { "version": "4.0.4", "resolved": "https://registry.npmjs.org/quick-format-unescaped/-/quick-format-unescaped-4.0.4.tgz", @@ -13211,6 +14686,11 @@ "resolved": "https://registry.npmjs.org/require-all/-/require-all-3.0.0.tgz", "integrity": "sha512-jPGN876lc5exWYrMcgZSd7U42P0PmVQzxnQB13fCSzmyGnqQWW4WUz5DosZ/qe24hz+5o9lSvW2epBNZ1xa6Fw==" }, + "require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==" + }, "resolve": { "version": "1.22.4", "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.4.tgz", @@ -13494,6 +14974,11 @@ "resolved": "https://registry.npmjs.org/slugify/-/slugify-1.6.6.tgz", "integrity": "sha512-h+z7HKHYXj6wJU+AnS/+IH8Uh9fdcX1Lrhg1/VMdf9PwoBQXFcXiAdsy2tSK0P6gKwJLXp02r90ahUCqHk9rrw==" }, + "smart-buffer": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz", + "integrity": "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==" + }, "smpltmpl": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/smpltmpl/-/smpltmpl-1.0.2.tgz", @@ -13674,6 +15159,32 @@ } } }, + "socks": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/socks/-/socks-2.7.1.tgz", + "integrity": "sha512-7maUZy1N7uo6+WVEX6psASxtNlKaNVMlGQKkG/63nEDdLOWNbiUMoLK7X4uYoLhQstau72mLgfEWcXcwsaHbYQ==", + "requires": { + "ip": "^2.0.0", + "smart-buffer": "^4.2.0" + }, + "dependencies": { + "ip": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ip/-/ip-2.0.0.tgz", + "integrity": "sha512-WKa+XuLG1A1R0UWhl2+1XQSi+fZWMsYKffMZTTYsiZaUD8k2yDAj5atimTUD2TZkyCkNEeYE5NhFZmupOGtjYQ==" + } + } + }, + "socks-proxy-agent": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-8.0.2.tgz", + "integrity": "sha512-8zuqoLv1aP/66PHF5TqwJ7Czm3Yv32urJQHrVyhD7mmA6d61Zv8cIXQYPTWwmg6qlupnPvs/QKDmfa4P/qct2g==", + "requires": { + "agent-base": "^7.0.2", + "debug": "^4.3.4", + "socks": "^2.7.1" + } + }, "sonic-boom": { "version": "2.8.0", "resolved": "https://registry.npmjs.org/sonic-boom/-/sonic-boom-2.8.0.tgz", @@ -13839,6 +15350,15 @@ "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==" }, + "streamx": { + "version": "2.15.1", + "resolved": "https://registry.npmjs.org/streamx/-/streamx-2.15.1.tgz", + "integrity": "sha512-fQMzy2O/Q47rgwErk/eGeLu/roaFWV0jVsogDmrszM9uIw8L5OA+t+V93MgYlufNptfjmYR1tOMWhei/Eh7TQA==", + "requires": { + "fast-fifo": "^1.1.0", + "queue-tick": "^1.0.1" + } + }, "string_decoder": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", @@ -13997,6 +15517,26 @@ "integrity": "sha512-rCC0NWGKr/IJhtRuPq/t37qvZHI/mH4I4sxflVM+qgVe5Z2uOCivzWaVbuioJaB61kvm5UvB7b49E+oBY0M8jA==", "dev": true }, + "tar-fs": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-3.0.4.tgz", + "integrity": "sha512-5AFQU8b9qLfZCX9zp2duONhPmZv0hGYiBPJsyUdqMjzq/mqVpy/rEUSeHk1+YitmxugaptgBh5oDGU3VsAJq4w==", + "requires": { + "mkdirp-classic": "^0.5.2", + "pump": "^3.0.0", + "tar-stream": "^3.1.5" + } + }, + "tar-stream": { + "version": "3.1.6", + "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-3.1.6.tgz", + "integrity": "sha512-B/UyjYwPpMBv+PaFSWAmtYjwdrlEaZQEhMIBFNC5oEG8lpiW8XjcSdmEaClj28ArfKScKHs2nshz3k2le6crsg==", + "requires": { + "b4a": "^1.6.4", + "fast-fifo": "^1.2.0", + "streamx": "^2.15.0" + } + }, "tarn": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/tarn/-/tarn-3.0.2.tgz", @@ -14007,6 +15547,11 @@ "resolved": "https://registry.npmjs.org/term-size/-/term-size-2.2.1.tgz", "integrity": "sha512-wK0Ri4fOGjv/XPy8SBHZChl8CM7uMc5VML7SqiQ0zG7+J5Vr+RMQDoHa2CNT6KHUnTGIXH34UDMkPzAUyapBZg==" }, + "through": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", + "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==" + }, "tildify": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/tildify/-/tildify-2.0.0.tgz", @@ -14149,6 +15694,26 @@ "random-bytes": "~1.0.0" } }, + "unbzip2-stream": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/unbzip2-stream/-/unbzip2-stream-1.4.3.tgz", + "integrity": "sha512-mlExGW4w71ebDJviH16lQLtZS32VKqsSfk80GCfUlwT/4/hNRFsoscrF/c++9xinkMzECL1uL9DDwXqFWkruPg==", + "requires": { + "buffer": "^5.2.1", + "through": "^2.3.8" + }, + "dependencies": { + "buffer": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", + "requires": { + "base64-js": "^1.3.1", + "ieee754": "^1.1.13" + } + } + } + }, "union-value": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.1.tgz", @@ -14256,6 +15821,21 @@ "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==", "dev": true }, + "util": { + "version": "0.10.4", + "resolved": "https://registry.npmjs.org/util/-/util-0.10.4.tgz", + "integrity": "sha512-0Pm9hTQ3se5ll1XihRic3FDIku70C+iHUdT/W926rSgHV5QgXsYbKZN8MSC3tJtSkhuROzvsQjAaFENRXr+19A==", + "requires": { + "inherits": "2.0.3" + }, + "dependencies": { + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==" + } + } + }, "util-deprecate": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", @@ -14353,6 +15933,17 @@ "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" }, + "ws": { + "version": "8.14.1", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.14.1.tgz", + "integrity": "sha512-4OOseMUq8AzRBI/7SLMUwO+FEDnguetSk7KMb1sHwvF2w2Wv5Hoj0nlifx8vtGsftE/jWHojPy8sMMzYLJ2G/A==", + "requires": {} + }, + "y18n": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==" + }, "yallist": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", @@ -14365,6 +15956,34 @@ "integrity": "sha512-2eHWfjaoXgTBC2jNM1LRef62VQa0umtvRiDSk6HSzW7RvS5YtkabJrwYLLEKWBc8a5U2PTSCs+dJjUTJdlHsWQ==", "dev": true }, + "yargs": { + "version": "17.7.1", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.1.tgz", + "integrity": "sha512-cwiTb08Xuv5fqF4AovYacTFNxk62th7LKJ6BL9IGUpTJrWoU7/7WdQGTP2SjKf1dUNBGzDd28p/Yfs/GI6JrLw==", + "requires": { + "cliui": "^8.0.1", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.3", + "y18n": "^5.0.5", + "yargs-parser": "^21.1.1" + } + }, + "yargs-parser": { + "version": "21.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", + "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==" + }, + "yauzl": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz", + "integrity": "sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g==", + "requires": { + "buffer-crc32": "~0.2.3", + "fd-slicer": "~1.1.0" + } + }, "youch": { "version": "3.2.3", "resolved": "https://registry.npmjs.org/youch/-/youch-3.2.3.tgz", diff --git a/package.json b/package.json index 0499792..34f6e18 100644 --- a/package.json +++ b/package.json @@ -31,11 +31,14 @@ "child_process": "^1.0.2", "chokidar": "^3.5.3", "fs": "^0.0.1-security", + "helpers": "^0.0.6", "jsonwebtoken": "^9.0.1", "luxon": "^3.4.0", "moment": "^2.29.4", "mysql2": "^3.6.0", + "path": "^0.12.7", "proxy-addr": "^2.0.7", + "puppeteer": "^21.2.1", "reflect-metadata": "^0.1.13", "source-map-support": "^0.5.21", "zulip-js": "^2.0.9" diff --git a/providers/AppProvider.ts b/providers/AppProvider.ts index 88869cf..b4aa103 100644 --- a/providers/AppProvider.ts +++ b/providers/AppProvider.ts @@ -10,6 +10,7 @@ export default class AppProvider { public async boot () { // IoC container is ready + } public async ready () { diff --git a/screenshot.js b/screenshot.js new file mode 100644 index 0000000..b8627c9 --- /dev/null +++ b/screenshot.js @@ -0,0 +1,146 @@ +// const puppeteer = require("puppeteer"); + +// (async () => { +// // Launch a headless browser +// const browser = await puppeteer.launch(); + +// // Open a new page +// const page = await browser.newPage(); +// await page.goto( +// "http://localhost:3000/screenShot/20230913-TEST01-Session.Port4-6-172.16.20.7.log" +// ); +// const bodyHandle = await page.$('body'); +// const { height } = await bodyHandle.boundingBox(); +// await bodyHandle.dispose(); +// await page.setViewport({ width: 1920, height: 500 }); +// setTimeout(async () => { +// await page.screenshot({ path: "screenshot.png" }); +// await browser.close(); +// }, 5000); +// // } else { +// // console.error(`Element with class name '${className}' not found.`); +// // } +// // Close the browser +// })(); + +// const zulip = require("zulip-js"); + +// const config = { +// zuliprc: "./download", +// zulipVersion: "v2", +// }; + +// async function deleteMessages() { +// const client = await zulip(config); + +// // Thay thế "stream-name", "topic-name", và các mốc thời gian cụ thể +// const streamName = "Result test - auto.nswteam.net"; +// const topicName = "Log Alert"; +// const startTime = Date.parse("2023-09-11T00:00:00Z"); +// const endTime = Date.parse("2023-09-11T23:59:59Z"); + +// try { +// const messages = await client.messages.retrieve({ +// anchor: "oldest", +// num_before: 0, +// num_after: 5000, // Điều chỉnh theo nhu cầu của bạn +// narrow: [ +// { operator: "stream", operand: streamName }, +// { operator: "topic", operand: topicName }, +// // { +// // operator: , +// // operand: `169457100,1694571399`, +// // }, +// ], +// }); +// console.log(messages.messages.length) +// // for (const message of messages.messages) { +// // const res = await client.messages.deleteById({ message_id: message.id }); +// // console.log(`Deleted message ID ${message.id}`); +// // console.log(res) +// // } +// } catch (error) { +// console.error("Error:", error); +// } +// } + +// deleteMessages(); + +// const zulip = require("zulip-js"); +// const fs = require("fs"); + +// const config = { +// zuliprc: "./download", +// zulipVersion: "v2", // Use the appropriate API version +// }; +// const imageFilePath = "./screenshot.png"; +// const imageBase64 = fs.readFileSync(imageFilePath, { encoding: "base64" }); + +// async function send() { +// const client = await zulip(config); + +// try { +// const message = { +// type: "stream", +// to: "Result test - auto.nswteam.net", // Replace with the target stream name or recipient email +// topic: "AU-dev", // Replace with the message topic +// content: "Check out this image:", +// filename: "asakfga", +// file: imageBase64 +// }; +// client.messages.sendFile(message).then((response) => { +// console.log("Message sent successfully:", response); +// }); +// } catch (error) { +// console.error("Error:", error); +// } +// } + +// send(); + + + +// Usage example +const filePath = __dirname+'\\screenshot.png'; +uploadFileToZulip(filePath); + +// const zulip = require('zulip-js'); + +// // Configure your Zulip API details +// const config = { +// username: 'joseph.le@apactech.io', +// apiKey: '7XGrpwzFtQyUVDQzdwL3hjdVSbLx55yt', +// realm: 'https://zulip.ipsupply.com.au', +// }; + +// async function uploadFileToZulip(filePath) { +// try { +// const client = await zulip(config); + +// // Read the file as binary data +// const fs = require('fs'); +// const fileData = fs.readFileSync(filePath); + +// // Create a FormData object +// const formData = new FormData(); +// formData.append('file', fileData); + +// // Upload the file +// const response = await client.callEndpoint('POST', 'user_uploads', formData, {headers:{ +// 'Content-Type': 'multipart/form-data', +// // other headers if needed +// }}); + +// // if (response.result === 'success') { +// // const uploadedFileURL = response.uri; +// // console.log('File uploaded successfully. URL:', uploadedFileURL); +// // } else { +// // console.error('Failed to upload file:', response.msg); +// // } +// } catch (error) { +// console.error('Error uploading file:', error); +// } +// } +// const filePath = 'screenshot.png'; // Replace with your file path + +// uploadFileToZulip(filePath); diff --git a/start/kernel.ts b/start/kernel.ts index 6c70c54..72bd5c2 100644 --- a/start/kernel.ts +++ b/start/kernel.ts @@ -10,7 +10,6 @@ */ import Server from '@ioc:Adonis/Core/Server' - /* |-------------------------------------------------------------------------- | Global middleware @@ -21,7 +20,7 @@ import Server from '@ioc:Adonis/Core/Server' | */ Server.middleware.register([ - () => import('@ioc:Adonis/Core/BodyParser'), + () => import('@ioc:Adonis/Core/BodyParser') ]) /* diff --git a/start/routes.ts b/start/routes.ts index 8aeb852..faadd55 100644 --- a/start/routes.ts +++ b/start/routes.ts @@ -1,3 +1,4 @@ +import fs from 'fs'; import axios from "axios"; /* |-------------------------------------------------------------------------- @@ -28,6 +29,9 @@ import ErpsController from "App/Controllers/Http/ErpsController"; import LogReport from "App/Models/LogReport"; import Database from "@ioc:Adonis/Lucid/Database"; import { exec } from "child_process"; +import ImagesController from 'App/Controllers/Http/ImagesController'; +import { uploadFileToZulip } from 'App/utils/uploadFileZulip'; +import { screenShot } from 'App/utils/screenShot'; runtimeCheckLogs(Env.get("FOLDER_LOGS")); @@ -201,3 +205,13 @@ Route.post("/api/gitea-webhook", ({ request, response }) => { } ); }); + +Route.get('/api/images/:filename', "ImagesController.getImage"); + +Route.get('/api/test', async ({ request, response }) => { + await screenShot("20230915-HELEN1-Session.US2-11-3-127.0.0.1.log") + const test = await uploadFileToZulip(); + // setTimeout(() => { + console.log(test) + // }, 10000); +}); \ No newline at end of file diff --git a/uploads/abc.txt b/uploads/abc.txt new file mode 100644 index 0000000..1bff6cd --- /dev/null +++ b/uploads/abc.txt @@ -0,0 +1,3 @@ +sdfsdf +dfgdfg +dfgdf \ No newline at end of file