From de8d6f103861db6f123e3497f91e1d4c8ece944b Mon Sep 17 00:00:00 2001 From: Matteo Cargnelutti Date: Thu, 24 Nov 2022 02:20:30 -0500 Subject: [PATCH] v0.0.2 New features: - `t.co` urls resolution map as attachment (CSV file) - PDF filenames based on twitter url and creation date Dev "quality of life" updates: - Basic integration tests and GitHub CI - HTML 404s - PDF "producer" field now contains the app's version number - Better checkbox field name - Documentation edits --- .github/workflows/deploy.yml | 2 +- .github/workflows/tests.yml | 33 + .gitignore | 15 +- README.md | 18 +- app/const.js | 16 +- app/server.js | 122 +- app/server.test.js | 259 + app/templates/404.njk | 27 + app/templates/index.njk | 10 +- app/utils/AccessKeys.js | 2 - app/utils/TwitterCapture.js | 92 +- docs/const.md | 70 +- docs/server.md | 99 +- docs/utils/TwitterCapture.md | 72 +- fixtures/README.md | 2 + fixtures/certs/.keep | 0 fixtures/data/.keep | 0 fixtures/data/access-keys.json | 4 + fixtures/data/signing-certs-history.json | 9 + fixtures/data/timestamping-certs-history.json | 9 + github.png | Bin 0 -> 156697 bytes package-lock.json | 6915 ++++++++++++++++- package.json | 11 +- scripts/generate-test-cert.sh | 3 + 24 files changed, 7603 insertions(+), 187 deletions(-) create mode 100644 .github/workflows/tests.yml create mode 100644 app/server.test.js create mode 100644 app/templates/404.njk create mode 100644 fixtures/README.md create mode 100644 fixtures/certs/.keep create mode 100644 fixtures/data/.keep create mode 100644 fixtures/data/access-keys.json create mode 100644 fixtures/data/signing-certs-history.json create mode 100644 fixtures/data/timestamping-certs-history.json create mode 100644 github.png create mode 100755 scripts/generate-test-cert.sh diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml index d49c629..f777ffe 100644 --- a/.github/workflows/deploy.yml +++ b/.github/workflows/deploy.yml @@ -1,4 +1,4 @@ -name: Tests +name: Deploy to prod on: [push] diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml new file mode 100644 index 0000000..df2fac4 --- /dev/null +++ b/.github/workflows/tests.yml @@ -0,0 +1,33 @@ +name: Test suite +on: + pull_request: + workflow_dispatch: + +jobs: + test: + timeout-minutes: 60 + runs-on: ubuntu-20.04 + + steps: + - uses: actions/checkout@v2 + - uses: actions/setup-node@v2 + with: + node-version: '18.x' + cache: 'npm' + + - uses: actions/setup-python@v4 + with: + python-version: '3.10' + cache: 'pip' + + - name: Install system dependencies + run: sudo apt-get install -y bash gcc g++ python3-dev zlib1g zlib1g-dev libjpeg-dev libssl-dev libffi-dev ghostscript poppler-utils + + - name: Install app dependencies + run: npm install + + - name: Install Playwright Browser + run: npx playwright install --with-deps chrome + + - name: Run tests + run: npm run test diff --git a/.gitignore b/.gitignore index a4f0d99..d2b8eb4 100644 --- a/.gitignore +++ b/.gitignore @@ -1,11 +1,16 @@ node_modules -*.p12 -*.pem test.js .DS_Store -app/data/*.json -app/data/*.tsv +.nyc_output + yt-dlp + +*.p12 +*.pem + app/tmp/*.pdf app/tmp/*.mp4 -public-keys.txt \ No newline at end of file +app/data/*.json +app/data/*.tsv + +fixtures/data/*.tsv \ No newline at end of file diff --git a/README.md b/README.md index 7c546b2..aa93e9e 100644 --- a/README.md +++ b/README.md @@ -1,10 +1,13 @@ -# "Save Your Threads" - thread-keeper 📚 +# thread-keeper 📚 -High-fidelity capture of Twitter threads as sealed PDFs: [social.perma.cc](https://social.perma.cc). +High-fidelity capture of Twitter threads as sealed PDFs @ [social.perma.cc](https://social.perma.cc). + +[![](github.png)](https://social.perma.cc) An experiment of the [Harvard Library Innovation Lab](https://lil.law.harvard.edu). -> 🚧 Experimental / Prototype. Early release to be consolidated. +> 🚧 Experimental - Prototype. +> Early release to be consolidated. --- @@ -127,5 +130,14 @@ npm run docgen Generates JSDoc-based code documentation under `/docs`. +### test +```bash +npm run test +``` + +Runs the test suite. Requires test fixtures _(see `fixtures` folder)_. + +> ⚠️ At the moment, this codebase only features a very limited set of high-level integration tests. + [☝️ Back to summary](#summary) diff --git a/app/const.js b/app/const.js index df24eea..8f393c7 100644 --- a/app/const.js +++ b/app/const.js @@ -1,9 +1,10 @@ /** * thread-keeper - * @module const.js + * @module const * @author The Harvard Library Innovation Lab * @license MIT */ +import fs from "fs"; /** * Path to the folder holding the certificates used for signing the PDFs. @@ -51,4 +52,15 @@ export const MAX_PARALLEL_CAPTURES_TOTAL = 200; * Maximum capture processes that can be run in parallel for a given key. * @constant */ -export const MAX_PARALLEL_CAPTURES_PER_ACCESS_KEY = 20; \ No newline at end of file +export const MAX_PARALLEL_CAPTURES_PER_ACCESS_KEY = 20; + +/** + * APP version. Pulled from `package.json` by default. + * @constant + */ +export const APP_VERSION = (() => { + const appPackage = JSON.parse(fs.readFileSync("./package.json")); + return appPackage?.version ? appPackage.version : "0.0.0"; +})(); + +console.log(APP_VERSION); \ No newline at end of file diff --git a/app/server.js b/app/server.js index 7b3fb32..53cc9df 100644 --- a/app/server.js +++ b/app/server.js @@ -1,6 +1,6 @@ /** * thread-keeper - * @module server.js + * @module server * @author The Harvard Library Innovation Lab * @license MIT */ @@ -16,10 +16,11 @@ import { MAX_PARALLEL_CAPTURES_PER_ACCESS_KEY, } from "./const.js"; + /** * @type {SuccessLog} */ -const successLog = new SuccessLog(); +export const successLog = new SuccessLog(); /** * @type {AccessKeys} @@ -39,17 +40,41 @@ const accessKeys = new AccessKeys(); * maxPerAccessKey: number * }} */ -const CAPTURES_WATCH = { +export const CAPTURES_WATCH = { currentTotal: 0, maxTotal: MAX_PARALLEL_CAPTURES_TOTAL, currentByAccessKey: {}, maxPerAccessKey: MAX_PARALLEL_CAPTURES_PER_ACCESS_KEY, } +export default async function (fastify, opts) { + // Adds support for `application/x-www-form-urlencoded` + fastify.register(import('@fastify/formbody')); + + fastify.register(import("@fastify/static"), { + root: STATIC_PATH, + prefix: "/static/", + }); + + fastify.setNotFoundHandler((request, reply) => { + reply + .code(404) + .type('text/html') + .send(nunjucks.render(`${TEMPLATES_PATH}404.njk`)); + }); + + fastify.get('/', index); + fastify.post('/', capture); + + fastify.get('/check', check); + + fastify.get('/api/v1/hashes/check/:hash', checkHash); +}; + /** - * [GET] / - * Shows the landing page / form. + * [GET] / + * Shows the landing page and capture form. * Assumes `fastify` is in scope. * * @param {fastify.FastifyRequest} request @@ -65,32 +90,18 @@ async function index(request, reply) { .send(html); } -/** - * [GET] /check - * Shows the "check" page /check form. Loads certificates history files in the process. - * Assumes `fastify` is in scope. - * - * @param {fastify.FastifyRequest} request - * @param {fastify.FastifyReply} reply - * @returns {Promise} - */ - async function check(request, reply) { - const html = nunjucks.render(`${TEMPLATES_PATH}check.njk`, { - signingCertsHistory: CertsHistory.load("signing"), - timestampsCertsHistory: CertsHistory.load("timestamping") - }); - - return reply - .code(200) - .header('Content-Type', 'text/html; charset=utf-8') - .send(html); -} - /** * [POST] `/` * Processes a request to capture a `twitter.com` url. * Serves PDF bytes directly if operation is successful. * Returns to form with specific error code, passed as `errorReason`, otherwise. + * Subject to captures rate limiting (see `CAPTURES_WATCH`). + * + * Body is expected as `application/x-www-form-urlencoded` with the following fields: + * - access-key + * - url + * - unfold-thread (optional) + * * Assumes `fastify` is in scope. * * @param {fastify.FastifyRequest} request @@ -171,6 +182,7 @@ async function capture(request, reply) { // Process capture request // try { + // Add request to total and per-key counter CAPTURES_WATCH.currentTotal += 1; if (accessKey in CAPTURES_WATCH.currentByAccessKey) { @@ -180,15 +192,27 @@ async function capture(request, reply) { CAPTURES_WATCH.currentByAccessKey[accessKey] = 1; } - const tweets = new TwitterCapture(data.url, {runBrowserBehaviors: "auto-scroll" in data}); + const tweets = new TwitterCapture(data.url, {runBrowserBehaviors: "unfold-thread" in data}); const pdf = await tweets.capture(); successLog.add(accessKey, pdf); + // Generate a filename for the PDF based on url. + // Example: harvardlil-status-123456789-2022-11-25.pdf + const filename = (() => { + const url = new URL(tweets.url); + + let filename = "twitter.com"; + filename += `${url.pathname}-`; + filename += `${(new Date()).toISOString().substring(0, 10)}`; // YYYY-MM-DD + filename = filename.replace(/[^a-z0-9]/gi, "-").toLowerCase(); + return `${filename}.pdf`; + })(); + return reply .code(200) .header('Content-Type', 'application/pdf') - .header('Content-Disposition', 'attachment; filename="capture.pdf"') + .header('Content-Disposition', `attachment; filename="${filename}"`) .send(pdf); } catch(err) { @@ -212,7 +236,27 @@ async function capture(request, reply) { CAPTURES_WATCH.currentByAccessKey[data["access-key"]] -= 1; } } +} +/** + * [GET] /check + * Shows the "check" page /check form. Loads certificates history files in the process. + * Assumes `fastify` is in scope. + * + * @param {fastify.FastifyRequest} request + * @param {fastify.FastifyReply} reply + * @returns {Promise} + */ + async function check(request, reply) { + const html = nunjucks.render(`${TEMPLATES_PATH}check.njk`, { + signingCertsHistory: CertsHistory.load("signing"), + timestampsCertsHistory: CertsHistory.load("timestamping") + }); + + return reply + .code(200) + .header('Content-Type', 'text/html; charset=utf-8') + .send(html); } /** @@ -238,25 +282,3 @@ async function checkHash(request, reply) { return reply.code(found ? 200 : 404).send(); } -export default async function (fastify, opts) { - // Adds support for `application/x-www-form-urlencoded` - fastify.register(import('@fastify/formbody')); - - // Serves files from `STATIC_PATH` - fastify.register(import('@fastify/static'), { - root: STATIC_PATH, - prefix: '/static/', - }); - - // [GET] / - fastify.get('/', index); - - // [GET] /check - fastify.get('/check', check); - - // [POST] / - fastify.post('/', capture); - - // [GET] /api/v1/hashes/check/:hash - fastify.get('/api/v1/hashes/check/:hash', checkHash); -}; diff --git a/app/server.test.js b/app/server.test.js new file mode 100644 index 0000000..09dee59 --- /dev/null +++ b/app/server.test.js @@ -0,0 +1,259 @@ +/** + * thread-keeper + * @module server.test + * @author The Harvard Library Innovation Lab + * @license MIT + */ +import fs from "fs"; +import assert from "assert"; +import crypto from "crypto"; + +import { test } from "tap"; +import Fastify from "fastify"; +import isHtml from "is-html"; + +import { AccessKeys } from "./utils/index.js"; + +import server, { CAPTURES_WATCH, successLog } from "./server.js"; +import { DATA_PATH, CERTS_PATH } from "./const.js"; + +/** + * Access keys fixture. + * @type {{active: string[], inactive: string[]}} + */ +const ACCESS_KEYS = (() => { + const rawAccessKeys = JSON.parse(fs.readFileSync(AccessKeys.filepath)); + + const out = { active: [], inactive: [] }; + + for (let [key, value] of Object.entries(rawAccessKeys)) { + value === true ? out.active.push(key) : out.inactive.push(key); + } + + return out; +})(); + +/** + * Dummy url of a thread to capture. + */ +const THREAD_URL = "https://twitter.com/HarvardLIL/status/1595150565428039680"; + +test("Integration tests for server.js", async(t) => { + + // Do not run tests if `CERTS_PATH` and `DATA_PATH` do not point to a `fixtures` folder + t.before((t) => { + try { + assert(DATA_PATH.includes("/fixtures/")); + assert(CERTS_PATH.includes("/fixtures/")); + } + catch(err) { + throw new Error("Test must be run against fixtures. Set CERTS_PATH and DATA_PATH env vars accordingly."); + } + }); + + test("[GET] / returns HTTP 200 + HTML", async (t) => { + const app = Fastify({logger: false}); + await server(app, {}); + + const response = await app.inject({ + method: "GET", + url: "/", + }); + + t.equal(response.statusCode, 200, "Server returns HTTP 200."); + t.type(isHtml(response.body), true, "Server serves HTML."); + }); + + test("[POST] / returns HTTP 401 + HTML on failed access key check.", async (t) => { + const app = Fastify({logger: false}); + await server(app, {}); + + const scenarios = [ + "FOO-BAR", // Invalid key + ACCESS_KEYS.inactive[0], // Inactive key + null // No key + ] + + for (const accessKey of scenarios) { + const params = new URLSearchParams(); + + if (accessKey) { + params.append("access-key", accessKey); + } + + const response = await app.inject({ + method: "POST", + url: "/", + headers: { "Content-Type": "application/x-www-form-urlencoded" }, + body: params.toString(), + }); + + t.equal(response.statusCode, 401, "Server returns HTTP 401."); + + const body = `${response.body}`; + t.type(isHtml(body), true, "Server serves HTML"); + t.equal(body.includes(`data-reason="ACCESS-KEY"`), true, "With error message."); + } + }); + + test("[POST] / returns HTTP 400 + HTML on failed url check.", async (t) => { + const app = Fastify({logger: false}); + await server(app, {}); + + const scenarios = [ + "https://lil.law.harvard.edu", // Non-twitter + "twitter.com/harvardlil", // Non-url + 12, + null // Nothing + ] + + for (const url of scenarios) { + const params = new URLSearchParams(); + + params.append("access-key", ACCESS_KEYS.active[0]); + + if (url) { + params.append("url", url); + } + + const response = await app.inject({ + method: "POST", + url: "/", + headers: { "Content-Type": "application/x-www-form-urlencoded" }, + body: params.toString(), + }); + + t.equal(response.statusCode, 400, "Server returns HTTP 401."); + + const body = `${response.body}`; + t.type(isHtml(body), true, "Server serves HTML"); + t.equal(body.includes(`data-reason="URL"`), true, "With error message."); + } + }); + + test("[POST] / returns HTTP 503 + HTML on failed server capacity check.", async (t) => { + const app = Fastify({logger: false}); + await server(app, {}); + + CAPTURES_WATCH.currentTotal = CAPTURES_WATCH.maxTotal; // Simulate peak + + const params = new URLSearchParams(); + params.append("access-key", ACCESS_KEYS.active[0]); + params.append("url", THREAD_URL); + + const response = await app.inject({ + method: "POST", + url: "/", + headers: { "Content-Type": "application/x-www-form-urlencoded" }, + body: params.toString(), + }); + + t.equal(response.statusCode, 503, "Server returns HTTP 503"); + + const body = `${response.body}`; + t.type(isHtml(body), true, "Server serves HTML"); + t.equal(body.includes(`TOO-MANY-CAPTURES-TOTAL`), true, "With error message."); + + CAPTURES_WATCH.currentTotal = 0; + }); + + test("[POST] / returns HTTP 429 + HTML on user over parallel capture allowance.", async (t) => { + const app = Fastify({logger: false}); + await server(app, {}); + + const userKey = ACCESS_KEYS.active[0]; + + CAPTURES_WATCH.currentByAccessKey[userKey] = CAPTURES_WATCH.maxPerAccessKey; + + const params = new URLSearchParams(); + params.append("access-key", userKey); + params.append("url", THREAD_URL); + + const response = await app.inject({ + method: "POST", + url: "/", + headers: { "Content-Type": "application/x-www-form-urlencoded" }, + body: params.toString(), + }); + + t.equal(response.statusCode, 429, "Server returns HTTP 503."); + + const body = `${response.body}`; + t.type(isHtml(body), true, "Server serves HTML"); + t.equal(body.includes(`TOO-MANY-CAPTURES-USER`), true, "With error message."); + + delete CAPTURES_WATCH.currentByAccessKey[userKey]; + }); + + test("[POST] / returns HTTP 200 + PDF", async (t) => { + const app = Fastify({logger: false}); + await server(app, {}); + + const params = new URLSearchParams(); + params.append("access-key", ACCESS_KEYS.active[0]); + params.append("url", THREAD_URL); + params.append("unfold-thread", "on"); + + const response = await app.inject({ + method: "POST", + url: "/", + headers: { "Content-Type": "application/x-www-form-urlencoded" }, + body: params.toString(), + }); + + t.equal(response.statusCode, 200, "Server returns HTTP 200."); + t.equal(response.headers["content-type"], "application/pdf"); + t.equal(response.headers["content-disposition"].startsWith("attachment"), true); + t.equal(response.body.substring(0, 8), "%PDF-1.7", "Server returns a PDF as attachment."); + + // Check filename processing + const contentDisposition = response.headers["content-disposition"]; + const filename = contentDisposition.substring(22, contentDisposition.length - 1); + t.match(filename, /^twitter-com-[a-z0-9-]+-[0-9]{4}-[0-9]{2}-[0-9]{2}\.pdf$/); + }); + + test("[GET] /check returns HTTP 200 + HTML", async (t) => { + const app = Fastify({logger: false}); + await server(app, {}); + + const response = await app.inject({ + method: "GET", + url: "/check", + }); + + t.equal(response.statusCode, 200, "Server returns HTTP 200."); + t.type(isHtml(response.body), true, "Server serves HTML."); + }); + + test("[GET] /api/v1/hashes/check/ returns HTTP 404 on failed hash check.", async (t) => { + const app = Fastify({logger: false}); + await server(app, {}); + + const randomHash = crypto.createHash('sha512').update(Buffer.from("HELLO WORLD")).digest('base64'); + + const response = await app.inject({ + method: "GET", + url: `/api/v1/hashes/check/${encodeURIComponent(randomHash)}`, + }); + + t.equal(response.statusCode, 404, "Server returns HTTP 404."); + }); + + test("[GET] /api/v1/hashes/check/ returns HTTP 200 on successful hash check.", async (t) => { + const app = Fastify({logger: false}); + await server(app, {}); + + // Add entry to success logs + const toHash = Buffer.from(`${Date.now()}`); + const hash = crypto.createHash('sha512').update(toHash).digest('base64'); + successLog.add(ACCESS_KEYS.active[0], toHash); + + const response = await app.inject({ + method: "GET", + url: `/api/v1/hashes/check/${encodeURIComponent(hash)}`, + }); + + t.equal(response.statusCode, 200, "Server returns HTTP 200."); + }); + +}); \ No newline at end of file diff --git a/app/templates/404.njk b/app/templates/404.njk new file mode 100644 index 0000000..87c713f --- /dev/null +++ b/app/templates/404.njk @@ -0,0 +1,27 @@ + + + + Page not found + + + + + + + + + + +
+ + {% include "./modules/header-pic.njk" %} + +
+

404 Not found

+

The page you requested could not be found.

+

Go back to the homepage

+
+ +
+ + diff --git a/app/templates/index.njk b/app/templates/index.njk index 3c4e10d..ddd38fb 100644 --- a/app/templates/index.njk +++ b/app/templates/index.njk @@ -43,8 +43,8 @@
- - + + @@ -63,7 +63,7 @@ {% if error %} - +

Something went wrong

{% if errorReason and errorReason == "ACCESS-KEY" %} @@ -103,7 +103,9 @@

There are lots of screenshots of Twitter threads going around. Some are real, some are fake. You can't tell who made them, or when they were made.

-

PDFs let us apply document signatures and timestamps so anyone can check, in the future, that a PDF you download with this site really came from the Harvard Library Innovation Lab and hasn't been edited. PDFs also let us bundle in additional media as attachments. Each signed PDF currently includes all images in the page (so you can see full size images that are cropped in the PDF view) and the primary video on the page if any.

+

PDFs let us apply document signatures and timestamps so anyone can check, in the future, that a PDF you download with this site really came from the Harvard Library Innovation Lab and hasn't been edited.

+ +

PDFs also let us bundle in additional media as attachments. Each signed PDF currently includes all images in the page (so you can see full size images that are cropped in the PDF view), the primary video on the page if any, as well as a list of all the t.co links on the thread and their actual destination.

Why not make a PDF archiving tool for Twitter?

diff --git a/app/utils/AccessKeys.js b/app/utils/AccessKeys.js index 2ebbf58..818fb0b 100644 --- a/app/utils/AccessKeys.js +++ b/app/utils/AccessKeys.js @@ -16,14 +16,12 @@ import { DATA_PATH } from "../const.js"; * [!] For alpha launch only. */ export class AccessKeys { - /** * Complete path to `access-keys.json`. * @type {string} */ static filepath = `${DATA_PATH}access-keys.json`; - /** * Frozen hashmap of available access keys * (app needs to be restarted for new keys to be taken into account, for now). diff --git a/app/utils/TwitterCapture.js b/app/utils/TwitterCapture.js index e33fc54..ce6becd 100644 --- a/app/utils/TwitterCapture.js +++ b/app/utils/TwitterCapture.js @@ -10,8 +10,9 @@ import { chromium } from "playwright"; import { v4 as uuidv4 } from "uuid"; import { PDFDocument } from "pdf-lib"; +import nunjucks from "nunjucks"; -import { CERTS_PATH, TMP_PATH, EXECUTABLES_FOLDER } from "../const.js"; +import { CERTS_PATH, TMP_PATH, EXECUTABLES_FOLDER, TEMPLATES_PATH, APP_VERSION } from "../const.js"; /** * Generates a "sealed" PDF out of a twitter.com url using Playwright. @@ -26,10 +27,12 @@ import { CERTS_PATH, TMP_PATH, EXECUTABLES_FOLDER } from "../const.js"; export class TwitterCapture { /** * Defaults for options that can be passed to `TwitterCapture`. + * @property {string} appVersion * @property {string} privateKeyPath - Path to `.pem` file containing a private key. * @property {string} certPath - Path to a `.pem` file containing a certificate. * @property {string} tmpFolderPath - Path to a folder in which temporary file can be written. * @property {string} ytDlpPath - Path to the `yt-dlp` executable. + * @property {string} templatesFolderPath - Path to the templates folder (t.co resolver summary feature). * @property {string} timestampServerUrl - Timestamping server. * @property {number} networkidleTimeout - Time to wait for "networkidle" state. * @property {boolean} runBrowserBehaviors - If `true`, will try to auto-scroll and open more responses. Set to `false` automatically when trying to capture a profile url. @@ -38,9 +41,11 @@ export class TwitterCapture { * @property {number} renderTimeout - Time to wait for re-renders. */ static defaults = { + appVersion: APP_VERSION, privateKeyPath: `${CERTS_PATH}key.pem`, certPath: `${CERTS_PATH}cert.pem`, tmpFolderPath: `${TMP_PATH}`, + templatesFolderPath: `${TEMPLATES_PATH}pdf-attachments/`, ytDlpPath: `${EXECUTABLES_FOLDER}yt-dlp`, timestampServerUrl: "http://timestamp.digicert.com", networkidleTimeout: 5000, @@ -145,24 +150,27 @@ export class TwitterCapture { rawPDF = await this.generateRawPDF(); editablePDF = await PDFDocument.load(rawPDF); - // Add intercepted JPEGs as attachments - await this.addInterceptedJPEGsToPDF(editablePDF); - // Remove extraneous page, add metadata try { editablePDF.setTitle(`Capture of ${this.url} by thread-keeper on ${new Date().toISOString()}`); editablePDF.setCreationDate(new Date()); editablePDF.setModificationDate(new Date()); - editablePDF.setProducer("thread-keeper"); - editablePDF.removePage(1); + editablePDF.setProducer(`thread-keeper ${this.options.appVersion}`); + editablePDF.removePage(1); // This step may throw if there's only 1 page. } - catch { - //console.log(err); + catch { + // console.log(error); } // Try to crop remaining white space await this.cropMarginsOnPDF(editablePDF); + // Add intercepted JPEGs as attachments + await this.addInterceptedJPEGsToPDF(editablePDF); + + // Try to capture t.co to full urls map, and add it as attachment + await this.captureAndAddUrlMapToPDF(editablePDF); + // Try to capture video, if any, and add it as attachment await this.captureAndAddVideoToPDF(editablePDF); @@ -327,6 +335,7 @@ export class TwitterCapture { } catch(err) { // Ignore behavior errors. + // console.log(err); } } @@ -439,6 +448,69 @@ export class TwitterCapture { } } + /** + * Tries to list and resolve all the `t.co` urls on the page, and add the resulting map as an attachment. + * + * Attachment filename: `url-map.csv`. + * Playwright needs to be ready. + * + * @param {PDFDocument} - Editable PDF object from `pdf-lib`. + * @returns {Promise} + */ + captureAndAddUrlMapToPDF = async(editablePDF) => { + if (this.playwright.ready !== true) { + throw new Error("Playwright is not ready."); + } + + /** @type {object} */ + const map = {}; + const filename = "url-map.csv"; + let output = ""; + + // Capture urls to resolve + const shortUrls = await this.playwright.page.evaluate(() => { + const urls = {}; + + for (let a of document.querySelectorAll("a[href^='https://t.co']")) { + urls[a.getAttribute("href")] = true; + } + + return Object.keys(urls); + }); + + if (shortUrls.length < 1) { + return; + } + + for (const url of shortUrls) { + map[url] = false; + } + + // Try to resolve urls (in parallel) + async function resolveShortUrl(url) { + try { + const response = await fetch(url, { method: "HEAD" }); + map[url] = response.url; + } + catch(err) { /* console.log(err); */} + } + + await Promise.allSettled(shortUrls.map(url => resolveShortUrl(url))); + + // Generate and attach CSV + output = "short;long\n"; + for (let [short, long] of Object.entries(map)) { + output += `"${short}";"${long ? long : ''}"\n`; + } + + await editablePDF.attach(Buffer.from(output), filename, { + mimeType: 'text/csv', + description: `t.co links from ${this.url}`, + creationDate: new Date(), + modificationDate: new Date(), + }); + } + /** * Tries to capture main video from current Twitter url and add it as attachment to the PDF. * @param {PDFDocument} - Editable PDF object from `pdf-lib`. @@ -614,9 +686,7 @@ export class TwitterCapture { /** @type {?string} */ let urlType = null; - // // Determine if `url` is a valid `twitter.com` and remove known tracking params - // try { parsedUrl = new URL(url); // Will throw if not a valid url. @@ -632,9 +702,7 @@ export class TwitterCapture { throw new Error(`${url} is not a valid Twitter url.`); } - // // Determine Twitter url "type" - // if (parsedUrl.pathname.includes("/status/")) { urlType = "status"; } diff --git a/docs/const.md b/docs/const.md index 108b5ba..8eec2f4 100644 --- a/docs/const.md +++ b/docs/const.md @@ -1,66 +1,66 @@ - + -## js +## const thread-keeper **Author**: The Harvard Library Innovation Lab **License**: MIT -* [js](#const.module_js) - * [.CERTS_PATH](#const.module_js.CERTS_PATH) - * [.DATA_PATH](#const.module_js.DATA_PATH) - * [.TMP_PATH](#const.module_js.TMP_PATH) - * [.TEMPLATES_PATH](#const.module_js.TEMPLATES_PATH) - * [.EXECUTABLES_FOLDER](#const.module_js.EXECUTABLES_FOLDER) - * [.STATIC_PATH](#const.module_js.STATIC_PATH) - * [.MAX_PARALLEL_CAPTURES_TOTAL](#const.module_js.MAX_PARALLEL_CAPTURES_TOTAL) - * [.MAX_PARALLEL_CAPTURES_PER_ACCESS_KEY](#const.module_js.MAX_PARALLEL_CAPTURES_PER_ACCESS_KEY) +* [const](#module_const) + * [.CERTS_PATH](#module_const.CERTS_PATH) + * [.DATA_PATH](#module_const.DATA_PATH) + * [.TMP_PATH](#module_const.TMP_PATH) + * [.TEMPLATES_PATH](#module_const.TEMPLATES_PATH) + * [.EXECUTABLES_FOLDER](#module_const.EXECUTABLES_FOLDER) + * [.STATIC_PATH](#module_const.STATIC_PATH) + * [.MAX_PARALLEL_CAPTURES_TOTAL](#module_const.MAX_PARALLEL_CAPTURES_TOTAL) + * [.MAX_PARALLEL_CAPTURES_PER_ACCESS_KEY](#module_const.MAX_PARALLEL_CAPTURES_PER_ACCESS_KEY) - + -### js.CERTS\_PATH +### const.CERTS\_PATH Path to the folder holding the certificates used for signing the PDFs. -**Kind**: static constant of [js](#const.module_js) - +**Kind**: static constant of [const](#module_const) + -### js.DATA\_PATH +### const.DATA\_PATH Path to the "data" folder. -**Kind**: static constant of [js](#const.module_js) - +**Kind**: static constant of [const](#module_const) + -### js.TMP\_PATH +### const.TMP\_PATH Path to the folder in which temporary files will be written by the app. -**Kind**: static constant of [js](#const.module_js) - +**Kind**: static constant of [const](#module_const) + -### js.TEMPLATES\_PATH +### const.TEMPLATES\_PATH Path to the "templates" folder. -**Kind**: static constant of [js](#const.module_js) - +**Kind**: static constant of [const](#module_const) + -### js.EXECUTABLES\_FOLDER +### const.EXECUTABLES\_FOLDER Path to the "executables" folder, for dependencies that are meant to be executed directly, such as `yt-dlp`. -**Kind**: static constant of [js](#const.module_js) - +**Kind**: static constant of [const](#module_const) + -### js.STATIC\_PATH +### const.STATIC\_PATH Path to the "static" folder. -**Kind**: static constant of [js](#const.module_js) - +**Kind**: static constant of [const](#module_const) + -### js.MAX\_PARALLEL\_CAPTURES\_TOTAL +### const.MAX\_PARALLEL\_CAPTURES\_TOTAL Maximum capture processes that can be run in parallel. -**Kind**: static constant of [js](#const.module_js) - +**Kind**: static constant of [const](#module_const) + -### js.MAX\_PARALLEL\_CAPTURES\_PER\_ACCESS\_KEY +### const.MAX\_PARALLEL\_CAPTURES\_PER\_ACCESS\_KEY Maximum capture processes that can be run in parallel for a given key. -**Kind**: static constant of [js](#const.module_js) +**Kind**: static constant of [const](#module_const) diff --git a/docs/server.md b/docs/server.md index 8f86120..e660a0f 100644 --- a/docs/server.md +++ b/docs/server.md @@ -1,84 +1,93 @@ - + -## js +## server thread-keeper **Author**: The Harvard Library Innovation Lab **License**: MIT -* [js](#server.module_js) - * [~successLog](#server.module_js..successLog) : SuccessLog - * [~accessKeys](#server.module_js..accessKeys) : AccessKeys - * [~CAPTURES_WATCH](#server.module_js..CAPTURES_WATCH) : Object - * [~index(request, reply)](#server.module_js..index) ⇒ Promise.<fastify.FastifyReply> - * [~check(request, reply)](#server.module_js..check) ⇒ Promise.<fastify.FastifyReply> - * [~capture(request, reply)](#server.module_js..capture) ⇒ Promise.<fastify.FastifyReply> - * [~checkHash(request, reply)](#server.module_js..checkHash) ⇒ Promise.<fastify.FastifyReply> +* [server](#module_server) + * _static_ + * [.successLog](#module_server.successLog) : SuccessLog + * [.CAPTURES_WATCH](#module_server.CAPTURES_WATCH) : Object + * _inner_ + * [~accessKeys](#module_server..accessKeys) : AccessKeys + * [~index(request, reply)](#module_server..index) ⇒ Promise.<fastify.FastifyReply> + * [~capture(request, reply)](#module_server..capture) ⇒ Promise.<fastify.FastifyReply> + * [~check(request, reply)](#module_server..check) ⇒ Promise.<fastify.FastifyReply> + * [~checkHash(request, reply)](#module_server..checkHash) ⇒ Promise.<fastify.FastifyReply> - + -### js~successLog : SuccessLog -**Kind**: inner constant of [js](#server.module_js) - +### server.successLog : SuccessLog +**Kind**: static constant of [server](#module_server) + -### js~accessKeys : AccessKeys -**Kind**: inner constant of [js](#server.module_js) - - -### js~CAPTURES\_WATCH : Object +### server.CAPTURES\_WATCH : Object Keeps track of how many capture processes are currently running. May be used to redirect users if over capacity. [!] Only good for early prototyping. -**Kind**: inner constant of [js](#server.module_js) - +**Kind**: static constant of [server](#module_server) + -### js~index(request, reply) ⇒ Promise.<fastify.FastifyReply> -[GET] / -Shows the landing page / form. +### server~accessKeys : AccessKeys +**Kind**: inner constant of [server](#module_server) + + +### server~index(request, reply) ⇒ Promise.<fastify.FastifyReply> +[GET] / +Shows the landing page and capture form. Assumes `fastify` is in scope. -**Kind**: inner method of [js](#server.module_js) +**Kind**: inner method of [server](#module_server) | Param | Type | | --- | --- | | request | fastify.FastifyRequest | | reply | fastify.FastifyReply | - + -### js~check(request, reply) ⇒ Promise.<fastify.FastifyReply> -[GET] /check -Shows the "check" page /check form. Loads certificates history files in the process. -Assumes `fastify` is in scope. - -**Kind**: inner method of [js](#server.module_js) - -| Param | Type | -| --- | --- | -| request | fastify.FastifyRequest | -| reply | fastify.FastifyReply | - - - -### js~capture(request, reply) ⇒ Promise.<fastify.FastifyReply> +### server~capture(request, reply) ⇒ Promise.<fastify.FastifyReply> [POST] `/` Processes a request to capture a `twitter.com` url. Serves PDF bytes directly if operation is successful. Returns to form with specific error code, passed as `errorReason`, otherwise. +Subject to captures rate limiting (see `CAPTURES_WATCH`). + +Body is expected as `application/x-www-form-urlencoded` with the following fields: +- access-key +- url +- unfold-thread (optional) + Assumes `fastify` is in scope. -**Kind**: inner method of [js](#server.module_js) +**Kind**: inner method of [server](#module_server) | Param | Type | | --- | --- | | request | fastify.FastifyRequest | | reply | fastify.FastifyReply | - + -### js~checkHash(request, reply) ⇒ Promise.<fastify.FastifyReply> +### server~check(request, reply) ⇒ Promise.<fastify.FastifyReply> +[GET] /check +Shows the "check" page /check form. Loads certificates history files in the process. +Assumes `fastify` is in scope. + +**Kind**: inner method of [server](#module_server) + +| Param | Type | +| --- | --- | +| request | fastify.FastifyRequest | +| reply | fastify.FastifyReply | + + + +### server~checkHash(request, reply) ⇒ Promise.<fastify.FastifyReply> [GET] `/api/v1/hashes/check/`. Checks if a given SHA512 hash is in the "success" logs, meaning this app created it. Hash is passed as the last parameter, url encoded. @@ -86,7 +95,7 @@ Assumes `fastify` is in scope. Returns HTTP 200 if found, HTTP 404 if not. -**Kind**: inner method of [js](#server.module_js) +**Kind**: inner method of [server](#module_server) | Param | Type | | --- | --- | diff --git a/docs/utils/TwitterCapture.md b/docs/utils/TwitterCapture.md index 1bcf17c..3451408 100644 --- a/docs/utils/TwitterCapture.md +++ b/docs/utils/TwitterCapture.md @@ -7,29 +7,33 @@ thread-keeper **License**: MIT * [TwitterCapture](#utils.module_TwitterCapture) - * [.TwitterCapture](#utils.module_TwitterCapture.TwitterCapture) - * [new exports.TwitterCapture(url, options)](#new_utils.module_TwitterCapture.TwitterCapture_new) - * [.defaults](#utils.module_TwitterCapture.TwitterCapture+defaults) - * [.options](#utils.module_TwitterCapture.TwitterCapture+options) : object - * [.url](#utils.module_TwitterCapture.TwitterCapture+url) : string - * [.urlType](#utils.module_TwitterCapture.TwitterCapture+urlType) : string - * [.playwright](#utils.module_TwitterCapture.TwitterCapture+playwright) : Object - * [.interceptedJPEGs](#utils.module_TwitterCapture.TwitterCapture+interceptedJPEGs) : object.<string, Buffer> - * [.capture](#utils.module_TwitterCapture.TwitterCapture+capture) ⇒ Promise.<Buffer> - * [.setup](#utils.module_TwitterCapture.TwitterCapture+setup) ⇒ Promise.<void> - * [.teardown](#utils.module_TwitterCapture.TwitterCapture+teardown) - * [.adjustUIForCapture](#utils.module_TwitterCapture.TwitterCapture+adjustUIForCapture) ⇒ Promise.<void> - * [.runBrowserBehaviors](#utils.module_TwitterCapture.TwitterCapture+runBrowserBehaviors) ⇒ Promise.<void> - * [.resizeViewportToFitDocument](#utils.module_TwitterCapture.TwitterCapture+resizeViewportToFitDocument) ⇒ Promise.<void> - * [.getDocumentDimensions](#utils.module_TwitterCapture.TwitterCapture+getDocumentDimensions) ⇒ Promise.<{width: number, height: number}> - * [.interceptJpegs](#utils.module_TwitterCapture.TwitterCapture+interceptJpegs) ⇒ Promise.<void> - * [.generateRawPDF](#utils.module_TwitterCapture.TwitterCapture+generateRawPDF) ⇒ Promise.<Buffer> - * [.addInterceptedJPEGsToPDF](#utils.module_TwitterCapture.TwitterCapture+addInterceptedJPEGsToPDF) ⇒ Promise.<void> - * [.captureAndAddVideoToPDF](#utils.module_TwitterCapture.TwitterCapture+captureAndAddVideoToPDF) ⇒ Promise.<void> - * [.cropMarginsOnPDF](#utils.module_TwitterCapture.TwitterCapture+cropMarginsOnPDF) - * [.signPDF](#utils.module_TwitterCapture.TwitterCapture+signPDF) ⇒ Buffer - * [.filterOptions](#utils.module_TwitterCapture.TwitterCapture+filterOptions) - * [.filterUrl](#utils.module_TwitterCapture.TwitterCapture+filterUrl) ⇒ bool + * _static_ + * [.TwitterCapture](#utils.module_TwitterCapture.TwitterCapture) + * [new exports.TwitterCapture(url, options)](#new_utils.module_TwitterCapture.TwitterCapture_new) + * [.defaults](#utils.module_TwitterCapture.TwitterCapture+defaults) + * [.options](#utils.module_TwitterCapture.TwitterCapture+options) : object + * [.url](#utils.module_TwitterCapture.TwitterCapture+url) : string + * [.urlType](#utils.module_TwitterCapture.TwitterCapture+urlType) : string + * [.playwright](#utils.module_TwitterCapture.TwitterCapture+playwright) : Object + * [.interceptedJPEGs](#utils.module_TwitterCapture.TwitterCapture+interceptedJPEGs) : object.<string, Buffer> + * [.capture](#utils.module_TwitterCapture.TwitterCapture+capture) ⇒ Promise.<Buffer> + * [.setup](#utils.module_TwitterCapture.TwitterCapture+setup) ⇒ Promise.<void> + * [.teardown](#utils.module_TwitterCapture.TwitterCapture+teardown) + * [.adjustUIForCapture](#utils.module_TwitterCapture.TwitterCapture+adjustUIForCapture) ⇒ Promise.<void> + * [.runBrowserBehaviors](#utils.module_TwitterCapture.TwitterCapture+runBrowserBehaviors) ⇒ Promise.<void> + * [.resizeViewportToFitDocument](#utils.module_TwitterCapture.TwitterCapture+resizeViewportToFitDocument) ⇒ Promise.<void> + * [.getDocumentDimensions](#utils.module_TwitterCapture.TwitterCapture+getDocumentDimensions) ⇒ Promise.<{width: number, height: number}> + * [.interceptJpegs](#utils.module_TwitterCapture.TwitterCapture+interceptJpegs) ⇒ Promise.<void> + * [.generateRawPDF](#utils.module_TwitterCapture.TwitterCapture+generateRawPDF) ⇒ Promise.<Buffer> + * [.addInterceptedJPEGsToPDF](#utils.module_TwitterCapture.TwitterCapture+addInterceptedJPEGsToPDF) ⇒ Promise.<void> + * [.captureAndAddUrlMapToPDF](#utils.module_TwitterCapture.TwitterCapture+captureAndAddUrlMapToPDF) ⇒ Promise.<void> + * [.captureAndAddVideoToPDF](#utils.module_TwitterCapture.TwitterCapture+captureAndAddVideoToPDF) ⇒ Promise.<void> + * [.cropMarginsOnPDF](#utils.module_TwitterCapture.TwitterCapture+cropMarginsOnPDF) + * [.signPDF](#utils.module_TwitterCapture.TwitterCapture+signPDF) ⇒ Buffer + * [.filterOptions](#utils.module_TwitterCapture.TwitterCapture+filterOptions) + * [.filterUrl](#utils.module_TwitterCapture.TwitterCapture+filterUrl) ⇒ bool + * _inner_ + * [~URL_MAP_TEMPLATE](#utils.module_TwitterCapture..URL_MAP_TEMPLATE) @@ -63,6 +67,7 @@ fs.writeFileSync("tweet.pdf", pdf); * [.interceptJpegs](#utils.module_TwitterCapture.TwitterCapture+interceptJpegs) ⇒ Promise.<void> * [.generateRawPDF](#utils.module_TwitterCapture.TwitterCapture+generateRawPDF) ⇒ Promise.<Buffer> * [.addInterceptedJPEGsToPDF](#utils.module_TwitterCapture.TwitterCapture+addInterceptedJPEGsToPDF) ⇒ Promise.<void> + * [.captureAndAddUrlMapToPDF](#utils.module_TwitterCapture.TwitterCapture+captureAndAddUrlMapToPDF) ⇒ Promise.<void> * [.captureAndAddVideoToPDF](#utils.module_TwitterCapture.TwitterCapture+captureAndAddVideoToPDF) ⇒ Promise.<void> * [.cropMarginsOnPDF](#utils.module_TwitterCapture.TwitterCapture+cropMarginsOnPDF) * [.signPDF](#utils.module_TwitterCapture.TwitterCapture+signPDF) ⇒ Buffer @@ -92,6 +97,7 @@ Defaults for options that can be passed to `TwitterCapture`. | certPath | string | Path to a `.pem` file containing a certificate. | | tmpFolderPath | string | Path to a folder in which temporary file can be written. | | ytDlpPath | string | Path to the `yt-dlp` executable. | +| templatesFolderPath | string | Path to the templates folder (t.co resolver summary feature). | | timestampServerUrl | string | Timestamping server. | | networkidleTimeout | number | Time to wait for "networkidle" state. | | runBrowserBehaviors | boolean | If `true`, will try to auto-scroll and open more responses. Set to `false` automatically when trying to capture a profile url. | @@ -202,6 +208,20 @@ Adds entries from `this.interceptedJPEGs` | --- | --- | | PDFDocument | Editable PDF object from `pdf-lib`. | + + +#### twitterCapture.captureAndAddUrlMapToPDF ⇒ Promise.<void> +Tries to list and resolve all the `t.co` urls on the page, and add the resulting map as an attachment. + +Attachment filename: `url-map.html`. +Playwright needs to be ready. + +**Kind**: instance property of [TwitterCapture](#utils.module_TwitterCapture.TwitterCapture) + +| Type | Description | +| --- | --- | +| PDFDocument | Editable PDF object from `pdf-lib`. | + #### twitterCapture.captureAndAddVideoToPDF ⇒ Promise.<void> @@ -261,3 +281,9 @@ Automatically populates `this.url` and `this.urlType`. | --- | --- | | url | string | + + +### TwitterCapture~URL\_MAP\_TEMPLATE +Nunjucks template used by `TwitterCapture.captureAndAddUrlMapToPDF`. + +**Kind**: inner constant of [TwitterCapture](#utils.module_TwitterCapture) diff --git a/fixtures/README.md b/fixtures/README.md new file mode 100644 index 0000000..1c7eebd --- /dev/null +++ b/fixtures/README.md @@ -0,0 +1,2 @@ +## About this folder +This folder contains fixtures used by the testing suite. \ No newline at end of file diff --git a/fixtures/certs/.keep b/fixtures/certs/.keep new file mode 100644 index 0000000..e69de29 diff --git a/fixtures/data/.keep b/fixtures/data/.keep new file mode 100644 index 0000000..e69de29 diff --git a/fixtures/data/access-keys.json b/fixtures/data/access-keys.json new file mode 100644 index 0000000..321c960 --- /dev/null +++ b/fixtures/data/access-keys.json @@ -0,0 +1,4 @@ +{ + "a9c2b7b6-0652-4207-bdce-0527ad28f3f9": true, + "60e605ec-3510-4358-a0a7-33f25b3d7b74": false +} \ No newline at end of file diff --git a/fixtures/data/signing-certs-history.json b/fixtures/data/signing-certs-history.json new file mode 100644 index 0000000..846c853 --- /dev/null +++ b/fixtures/data/signing-certs-history.json @@ -0,0 +1,9 @@ +[ + { + "from": "2022-11-22 13:07:56 UTC", + "to": "present", + "domain": "lil.law.harvard.edu", + "info": "https://search.censys.io/certificates/320ec76aeebeb86440f574f877723484ff6826bbed6e15e77f68acc8e2c0db4e", + "cert": "https://search.censys.io/certificates/320ec76aeebeb86440f574f877723484ff6826bbed6e15e77f68acc8e2c0db4e/pem" + } +] \ No newline at end of file diff --git a/fixtures/data/timestamping-certs-history.json b/fixtures/data/timestamping-certs-history.json new file mode 100644 index 0000000..6846bc8 --- /dev/null +++ b/fixtures/data/timestamping-certs-history.json @@ -0,0 +1,9 @@ +[ + { + "from": "2022-11-18 13:07:56 UTC", + "to": "present", + "domain": "timestamp.digicert.com", + "info": "https://knowledge.digicert.com/generalinformation/INFO4231.html", + "cert": "https://knowledge.digicert.com/content/dam/digicertknowledgebase/attachments/time-stamp/TSACertificate.cer" + } +] \ No newline at end of file diff --git a/github.png b/github.png new file mode 100644 index 0000000000000000000000000000000000000000..2c37b05a2633589ab4003188fe8c0aa10f89e850 GIT binary patch literal 156697 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 PAG(y~)#XZMUVZo<)uG*< literal 0 HcmV?d00001 diff --git a/package-lock.json b/package-lock.json index 90cd99f..5ec038d 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "thread-keeper", - "version": "0.0.1", + "version": "0.0.2", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "thread-keeper", - "version": "0.0.1", + "version": "0.0.2", "hasInstallScript": true, "license": "ISC", "dependencies": { @@ -73,6 +73,354 @@ "uri-js": "^4.4.1", "uuid": "^9.0.0", "yallist": "^4.0.0" + }, + "devDependencies": { + "is-html": "^3.0.0", + "pino-pretty": "^9.1.1", + "tap": "^16.3.2" + } + }, + "node_modules/@ampproject/remapping": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.0.tgz", + "integrity": "sha512-qRmjj8nj9qmLTQXXmaR1cck3UXSRMPrbsLJAasZpF+t3riI71BXed5ebIOYwQntykeZuhjsdweEc9BxH5Jc26w==", + "dev": true, + "dependencies": { + "@jridgewell/gen-mapping": "^0.1.0", + "@jridgewell/trace-mapping": "^0.3.9" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/code-frame": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.18.6.tgz", + "integrity": "sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==", + "dev": true, + "dependencies": { + "@babel/highlight": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/compat-data": { + "version": "7.20.1", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.20.1.tgz", + "integrity": "sha512-EWZ4mE2diW3QALKvDMiXnbZpRvlj+nayZ112nK93SnhqOtpdsbVD4W+2tEoT3YNBAG9RBR0ISY758ZkOgsn6pQ==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/core": { + "version": "7.20.2", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.20.2.tgz", + "integrity": "sha512-w7DbG8DtMrJcFOi4VrLm+8QM4az8Mo+PuLBKLp2zrYRCow8W/f9xiXm5sN53C8HksCyDQwCKha9JiDoIyPjT2g==", + "dev": true, + "dependencies": { + "@ampproject/remapping": "^2.1.0", + "@babel/code-frame": "^7.18.6", + "@babel/generator": "^7.20.2", + "@babel/helper-compilation-targets": "^7.20.0", + "@babel/helper-module-transforms": "^7.20.2", + "@babel/helpers": "^7.20.1", + "@babel/parser": "^7.20.2", + "@babel/template": "^7.18.10", + "@babel/traverse": "^7.20.1", + "@babel/types": "^7.20.2", + "convert-source-map": "^1.7.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.2.1", + "semver": "^6.3.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/babel" + } + }, + "node_modules/@babel/core/node_modules/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/generator": { + "version": "7.20.4", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.20.4.tgz", + "integrity": "sha512-luCf7yk/cm7yab6CAW1aiFnmEfBJplb/JojV56MYEK7ziWfGmFlTfmL9Ehwfy4gFhbjBfWO1wj7/TuSbVNEEtA==", + "dev": true, + "dependencies": { + "@babel/types": "^7.20.2", + "@jridgewell/gen-mapping": "^0.3.2", + "jsesc": "^2.5.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/generator/node_modules/@jridgewell/gen-mapping": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz", + "integrity": "sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==", + "dev": true, + "dependencies": { + "@jridgewell/set-array": "^1.0.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.9" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/helper-compilation-targets": { + "version": "7.20.0", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.20.0.tgz", + "integrity": "sha512-0jp//vDGp9e8hZzBc6N/KwA5ZK3Wsm/pfm4CrY7vzegkVxc65SgSn6wYOnwHe9Js9HRQ1YTCKLGPzDtaS3RoLQ==", + "dev": true, + "dependencies": { + "@babel/compat-data": "^7.20.0", + "@babel/helper-validator-option": "^7.18.6", + "browserslist": "^4.21.3", + "semver": "^6.3.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-compilation-targets/node_modules/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/helper-environment-visitor": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.9.tgz", + "integrity": "sha512-3r/aACDJ3fhQ/EVgFy0hpj8oHyHpQc+LPtJoY9SzTThAsStm4Ptegq92vqKoE3vD706ZVFWITnMnxucw+S9Ipg==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-function-name": { + "version": "7.19.0", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.19.0.tgz", + "integrity": "sha512-WAwHBINyrpqywkUH0nTnNgI5ina5TFn85HKS0pbPDfxFfhyR/aNQEn4hGi1P1JyT//I0t4OgXUlofzWILRvS5w==", + "dev": true, + "dependencies": { + "@babel/template": "^7.18.10", + "@babel/types": "^7.19.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-hoist-variables": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.18.6.tgz", + "integrity": "sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q==", + "dev": true, + "dependencies": { + "@babel/types": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-imports": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.18.6.tgz", + "integrity": "sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA==", + "dev": true, + "dependencies": { + "@babel/types": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-transforms": { + "version": "7.20.2", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.20.2.tgz", + "integrity": "sha512-zvBKyJXRbmK07XhMuujYoJ48B5yvvmM6+wcpv6Ivj4Yg6qO7NOZOSnvZN9CRl1zz1Z4cKf8YejmCMh8clOoOeA==", + "dev": true, + "dependencies": { + "@babel/helper-environment-visitor": "^7.18.9", + "@babel/helper-module-imports": "^7.18.6", + "@babel/helper-simple-access": "^7.20.2", + "@babel/helper-split-export-declaration": "^7.18.6", + "@babel/helper-validator-identifier": "^7.19.1", + "@babel/template": "^7.18.10", + "@babel/traverse": "^7.20.1", + "@babel/types": "^7.20.2" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-simple-access": { + "version": "7.20.2", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.20.2.tgz", + "integrity": "sha512-+0woI/WPq59IrqDYbVGfshjT5Dmk/nnbdpcF8SnMhhXObpTq2KNBdLFRFrkVdbDOyUmHBCxzm5FHV1rACIkIbA==", + "dev": true, + "dependencies": { + "@babel/types": "^7.20.2" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-split-export-declaration": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.18.6.tgz", + "integrity": "sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA==", + "dev": true, + "dependencies": { + "@babel/types": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-string-parser": { + "version": "7.19.4", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.19.4.tgz", + "integrity": "sha512-nHtDoQcuqFmwYNYPz3Rah5ph2p8PFeFCsZk9A/48dPc/rGocJ5J3hAAZ7pb76VWX3fZKu+uEr/FhH5jLx7umrw==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-identifier": { + "version": "7.19.1", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz", + "integrity": "sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-option": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.18.6.tgz", + "integrity": "sha512-XO7gESt5ouv/LRJdrVjkShckw6STTaB7l9BrpBaAHDeF5YZT+01PCwmR0SJHnkW6i8OwW/EVWRShfi4j2x+KQw==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helpers": { + "version": "7.20.1", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.20.1.tgz", + "integrity": "sha512-J77mUVaDTUJFZ5BpP6mMn6OIl3rEWymk2ZxDBQJUG3P+PbmyMcF3bYWvz0ma69Af1oobDqT/iAsvzhB58xhQUg==", + "dev": true, + "dependencies": { + "@babel/template": "^7.18.10", + "@babel/traverse": "^7.20.1", + "@babel/types": "^7.20.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/highlight": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.18.6.tgz", + "integrity": "sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==", + "dev": true, + "dependencies": { + "@babel/helper-validator-identifier": "^7.18.6", + "chalk": "^2.0.0", + "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==", + "dev": true, + "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==", + "dev": true, + "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==", + "dev": true, + "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==", + "dev": true + }, + "node_modules/@babel/highlight/node_modules/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, + "engines": { + "node": ">=0.8.0" + } + }, + "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==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "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==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" } }, "node_modules/@babel/parser": { @@ -86,6 +434,55 @@ "node": ">=6.0.0" } }, + "node_modules/@babel/template": { + "version": "7.18.10", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.18.10.tgz", + "integrity": "sha512-TI+rCtooWHr3QJ27kJxfjutghu44DLnasDMwpDqCXVTal9RLp3RSYNh4NdBrRP2cQAoG9A8juOQl6P6oZG4JxA==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.18.6", + "@babel/parser": "^7.18.10", + "@babel/types": "^7.18.10" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/traverse": { + "version": "7.20.1", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.20.1.tgz", + "integrity": "sha512-d3tN8fkVJwFLkHkBN479SOsw4DMZnz8cdbL/gvuDuzy3TS6Nfw80HuQqhw1pITbIruHyh7d1fMA47kWzmcUEGA==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.18.6", + "@babel/generator": "^7.20.1", + "@babel/helper-environment-visitor": "^7.18.9", + "@babel/helper-function-name": "^7.19.0", + "@babel/helper-hoist-variables": "^7.18.6", + "@babel/helper-split-export-declaration": "^7.18.6", + "@babel/parser": "^7.20.1", + "@babel/types": "^7.20.0", + "debug": "^4.1.0", + "globals": "^11.1.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/types": { + "version": "7.20.2", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.20.2.tgz", + "integrity": "sha512-FnnvsNWgZCr232sqtXggapvlkk/tuwR/qhGzcmxI0GXLCjmPYQPzio2FbdlWuY6y1sHFfQKk+rRbUZ9VStQMog==", + "dev": true, + "dependencies": { + "@babel/helper-string-parser": "^7.19.4", + "@babel/helper-validator-identifier": "^7.19.1", + "to-fast-properties": "^2.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, "node_modules/@fastify/accept-negotiator": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/@fastify/accept-negotiator/-/accept-negotiator-1.0.0.tgz", @@ -159,6 +556,124 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/@istanbuljs/load-nyc-config": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz", + "integrity": "sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==", + "dev": true, + "dependencies": { + "camelcase": "^5.3.1", + "find-up": "^4.1.0", + "get-package-type": "^0.1.0", + "js-yaml": "^3.13.1", + "resolve-from": "^5.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@istanbuljs/load-nyc-config/node_modules/find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@istanbuljs/load-nyc-config/node_modules/locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "dependencies": { + "p-locate": "^4.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@istanbuljs/load-nyc-config/node_modules/p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "dependencies": { + "p-limit": "^2.2.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@istanbuljs/load-nyc-config/node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@istanbuljs/schema": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz", + "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@jridgewell/gen-mapping": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.1.1.tgz", + "integrity": "sha512-sQXCasFk+U8lWYEe66WxRDOE9PjVz4vSM51fTu3Hw+ClTpUSQb718772vH3pyS5pShp6lvQM7SxgIDXXXmOX7w==", + "dev": true, + "dependencies": { + "@jridgewell/set-array": "^1.0.0", + "@jridgewell/sourcemap-codec": "^1.4.10" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz", + "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==", + "dev": true, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/set-array": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz", + "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==", + "dev": true, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.4.14", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz", + "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==", + "dev": true + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.17", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.17.tgz", + "integrity": "sha512-MCNzAp77qzKca9+W/+I0+sEpaUnZoeasnghNeVc41VZCEKaCH73Vq3BZZ/SzWIgrqE4H4ceI+p+b6C0mHf9T4g==", + "dev": true, + "dependencies": { + "@jridgewell/resolve-uri": "3.1.0", + "@jridgewell/sourcemap-codec": "1.4.14" + } + }, "node_modules/@pdf-lib/standard-fonts": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/@pdf-lib/standard-fonts/-/standard-fonts-1.0.0.tgz", @@ -215,6 +730,19 @@ "resolved": "https://registry.npmjs.org/abstract-logging/-/abstract-logging-2.0.1.tgz", "integrity": "sha512-2BjRTZxTPvheOvGbBslFSYOUkr+SjPtOnrLP33f+VIWLzezQpZcqVg7ja3L4dBXmzzgwT+a029jRx5PCi3JuiA==" }, + "node_modules/aggregate-error": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", + "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", + "dev": true, + "dependencies": { + "clean-stack": "^2.0.0", + "indent-string": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/ajv": { "version": "8.11.2", "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.11.2.tgz", @@ -265,6 +793,15 @@ "node": ">=6" } }, + "node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, "node_modules/ansi-styles": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", @@ -291,6 +828,18 @@ "node": ">= 8" } }, + "node_modules/append-transform": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/append-transform/-/append-transform-2.0.0.tgz", + "integrity": "sha512-7yeyCEurROLQJFv5Xj4lEGTy0borxepjFv1g22oAdqFu//SrAlDl1O1Nxx15SH1RoliUml6p8dwJW9jvZughhg==", + "dev": true, + "dependencies": { + "default-require-extensions": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/archy": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/archy/-/archy-1.0.0.tgz", @@ -314,6 +863,15 @@ "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", "integrity": "sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==" }, + "node_modules/async-hook-domain": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/async-hook-domain/-/async-hook-domain-2.0.4.tgz", + "integrity": "sha512-14LjCmlK1PK8eDtTezR6WX8TMaYNIzBIsd2D1sGoGjgx0BuNMMoSdk7i/drlbtamy0AWv9yv2tkB+ASdmeqFIw==", + "dev": true, + "engines": { + "node": ">=10" + } + }, "node_modules/atomic-sleep": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/atomic-sleep/-/atomic-sleep-1.0.0.tgz", @@ -364,6 +922,15 @@ "node": ">=8" } }, + "node_modules/bind-obj-methods": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/bind-obj-methods/-/bind-obj-methods-3.0.0.tgz", + "integrity": "sha512-nLEaaz3/sEzNSyPWRsN9HNsqwk1AUyECtGj+XwGdIi3xABnEqecvXtIJ0wehQXuuER5uZ/5fTs2usONgYjG+iw==", + "dev": true, + "engines": { + "node": ">=10" + } + }, "node_modules/bluebird": { "version": "3.7.2", "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", @@ -388,6 +955,34 @@ "node": ">=8" } }, + "node_modules/browserslist": { + "version": "4.21.4", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.4.tgz", + "integrity": "sha512-CBHJJdDmgjl3daYjN5Cp5kbTf1mUhZoS+beLklHIvkOWscs83YAhLlF3Wsh/lciQYAcbBJgTOD44VtG31ZM4Hw==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + } + ], + "dependencies": { + "caniuse-lite": "^1.0.30001400", + "electron-to-chromium": "^1.4.251", + "node-releases": "^2.0.6", + "update-browserslist-db": "^1.0.9" + }, + "bin": { + "browserslist": "cli.js" + }, + "engines": { + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" + } + }, "node_modules/buffer": { "version": "6.0.3", "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", @@ -411,6 +1006,12 @@ "ieee754": "^1.2.1" } }, + "node_modules/buffer-from": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", + "dev": true + }, "node_modules/cache-point": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/cache-point/-/cache-point-2.0.0.tgz", @@ -432,6 +1033,46 @@ "node": ">=8" } }, + "node_modules/caching-transform": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/caching-transform/-/caching-transform-4.0.0.tgz", + "integrity": "sha512-kpqOvwXnjjN44D89K5ccQC+RUrsy7jB/XLlRrx0D7/2HNcTPqzsb6XgYoErwko6QsV184CA2YgS1fxDiiDZMWA==", + "dev": true, + "dependencies": { + "hasha": "^5.0.0", + "make-dir": "^3.0.0", + "package-hash": "^4.0.0", + "write-file-atomic": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/caniuse-lite": { + "version": "1.0.30001434", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001434.tgz", + "integrity": "sha512-aOBHrLmTQw//WFa2rcF1If9fa3ypkC1wzqqiKHgfdrXTWcU8C4gKVZT77eQAPWN1APys3+uQ0Df07rKauXGEYA==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/caniuse-lite" + } + ] + }, "node_modules/catharsis": { "version": "0.9.0", "resolved": "https://registry.npmjs.org/catharsis/-/catharsis-0.9.0.tgz", @@ -484,6 +1125,26 @@ "fsevents": "~2.3.2" } }, + "node_modules/clean-stack": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", + "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/cliui": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", + "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", + "dev": true, + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^7.0.0" + } + }, "node_modules/close-with-grace": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/close-with-grace/-/close-with-grace-1.1.0.tgz", @@ -517,6 +1178,15 @@ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" }, + "node_modules/color-support": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz", + "integrity": "sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==", + "dev": true, + "bin": { + "color-support": "bin.js" + } + }, "node_modules/colorette": { "version": "2.0.19", "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.19.tgz", @@ -624,6 +1294,12 @@ "node": ">=8" } }, + "node_modules/commondir": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", + "integrity": "sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==", + "dev": true + }, "node_modules/concat-map": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", @@ -664,6 +1340,12 @@ "node": ">= 0.6" } }, + "node_modules/convert-source-map": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", + "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==", + "dev": true + }, "node_modules/cookie": { "version": "0.5.0", "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz", @@ -672,6 +1354,20 @@ "node": ">= 0.6" } }, + "node_modules/cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dev": true, + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, "node_modules/dateformat": { "version": "4.6.3", "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-4.6.3.tgz", @@ -696,6 +1392,15 @@ } } }, + "node_modules/decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/deep-extend": { "version": "0.6.0", "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", @@ -704,6 +1409,21 @@ "node": ">=4.0.0" } }, + "node_modules/default-require-extensions": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/default-require-extensions/-/default-require-extensions-3.0.1.tgz", + "integrity": "sha512-eXTJmRbm2TIt9MgWTsOH1wEuhew6XGZcMeGKCtLedIg/NCsg1iBePXkceTdK4Fii7pzmN9tGsZhKzZ4h7O/fxw==", + "dev": true, + "dependencies": { + "strip-bom": "^4.0.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/depd": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", @@ -721,6 +1441,15 @@ "npm": "1.2.8000 || >= 1.4.16" } }, + "node_modules/diff": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", + "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", + "dev": true, + "engines": { + "node": ">=0.3.1" + } + }, "node_modules/dmd": { "version": "6.1.0", "resolved": "https://registry.npmjs.org/dmd/-/dmd-6.1.0.tgz", @@ -756,6 +1485,18 @@ "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==" }, + "node_modules/electron-to-chromium": { + "version": "1.4.284", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.284.tgz", + "integrity": "sha512-M8WEXFuKXMYMVr45fo8mq0wUrrJHheiKZf6BArTKk9ZBYCKJEOU5H8cdWgDT+qCVZf7Na4lVUaZsA+h6uA9+PA==", + "dev": true + }, + "node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true + }, "node_modules/encodeurl": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", @@ -780,6 +1521,21 @@ "url": "https://github.com/fb55/entities?sponsor=1" } }, + "node_modules/es6-error": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/es6-error/-/es6-error-4.1.1.tgz", + "integrity": "sha512-Um/+FxMr9CISWh0bi5Zv0iOD+4cFh5qLeks1qhAopKVAJw3drgKbKySikp7wGhDL0HPeaja0P5ULZrxLkniUVg==", + "dev": true + }, + "node_modules/escalade": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + "dev": true, + "engines": { + "node": ">=6" + } + }, "node_modules/escape-html": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", @@ -793,6 +1549,19 @@ "node": ">=8" } }, + "node_modules/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, + "bin": { + "esparse": "bin/esparse.js", + "esvalidate": "bin/esvalidate.js" + }, + "engines": { + "node": ">=4" + } + }, "node_modules/etag": { "version": "1.8.1", "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", @@ -817,6 +1586,12 @@ "node": ">=0.8.x" } }, + "node_modules/events-to-array": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/events-to-array/-/events-to-array-1.1.2.tgz", + "integrity": "sha512-inRWzRY7nG+aXZxBzEqYKB3HPgwflZRopAjDCHv0whhRx+MTUr1ei0ICZUypdyE0HRm4L2d5VEcIqLD6yl+BFA==", + "dev": true + }, "node_modules/fast-copy": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/fast-copy/-/fast-copy-3.0.0.tgz", @@ -1009,6 +1784,23 @@ "node": ">=8" } }, + "node_modules/find-cache-dir": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.2.tgz", + "integrity": "sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig==", + "dev": true, + "dependencies": { + "commondir": "^1.0.1", + "make-dir": "^3.0.2", + "pkg-dir": "^4.1.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/avajs/find-cache-dir?sponsor=1" + } + }, "node_modules/find-my-way": { "version": "7.3.1", "resolved": "https://registry.npmjs.org/find-my-way/-/find-my-way-7.3.1.tgz", @@ -1052,6 +1844,25 @@ "node": ">=6" } }, + "node_modules/findit": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/findit/-/findit-2.0.0.tgz", + "integrity": "sha512-ENZS237/Hr8bjczn5eKuBohLgaD0JyUd0arxretR1f9RO46vZHA1b2y0VorgGV3WaOT3c+78P8h7v4JGJ1i/rg==", + "dev": true + }, + "node_modules/foreground-child": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-2.0.0.tgz", + "integrity": "sha512-dCIq9FpEcyQyXKCkyzmlPTFNgrCzPudOe+mhvJU5zAtlBnGVy2yKxtfsxK2tQBThwq225jcvBjpw1Gr40uzZCA==", + "dev": true, + "dependencies": { + "cross-spawn": "^7.0.0", + "signal-exit": "^3.0.2" + }, + "engines": { + "node": ">=8.0.0" + } + }, "node_modules/forwarded": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", @@ -1068,6 +1879,32 @@ "node": ">= 0.6" } }, + "node_modules/fromentries": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/fromentries/-/fromentries-1.3.2.tgz", + "integrity": "sha512-cHEpEQHUg0f8XdtZCc2ZAhrHzKzT0MrFUTcvx+hfxYu7rGMDc5SKoXFh+n4YigxsHXRzc6OrCshdR1bWH6HHyg==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/fs-exists-cached": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs-exists-cached/-/fs-exists-cached-1.0.0.tgz", + "integrity": "sha512-kSxoARUDn4F2RPXX48UXnaFKwVU7Ivd/6qpzZL29MCDmr9sTvybv4gFCp+qaI4fM9m0z9fgz/yJvi56GAz+BZg==", + "dev": true + }, "node_modules/fs-then-native": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/fs-then-native/-/fs-then-native-2.0.0.tgz", @@ -1094,6 +1931,12 @@ "node": "^8.16.0 || ^10.6.0 || >=11.0.0" } }, + "node_modules/function-loop": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/function-loop/-/function-loop-2.0.1.tgz", + "integrity": "sha512-ktIR+O6i/4h+j/ZhZJNdzeI4i9lEPeEK6UPR2EVyTVBqOwcU3Za9xYKLH64ZR9HmcROyRrOkizNyjjtWJzDDkQ==", + "dev": true + }, "node_modules/generify": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/generify/-/generify-4.2.0.tgz", @@ -1129,6 +1972,33 @@ "readable-stream": "^3.0.0" } }, + "node_modules/gensync": { + "version": "1.0.0-beta.2", + "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", + "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "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==", + "dev": true, + "engines": { + "node": "6.* || 8.* || >= 10.*" + } + }, + "node_modules/get-package-type": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz", + "integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==", + "dev": true, + "engines": { + "node": ">=8.0.0" + } + }, "node_modules/glob": { "version": "8.0.3", "resolved": "https://registry.npmjs.org/glob/-/glob-8.0.3.tgz", @@ -1158,6 +2028,15 @@ "node": ">= 6" } }, + "node_modules/globals": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", + "dev": true, + "engines": { + "node": ">=4" + } + }, "node_modules/graceful-fs": { "version": "4.2.10", "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", @@ -1191,6 +2070,22 @@ "node": ">=8" } }, + "node_modules/hasha": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/hasha/-/hasha-5.2.2.tgz", + "integrity": "sha512-Hrp5vIK/xr5SkeN2onO32H0MgNZ0f17HRNH39WfL0SYUNOTZ5Lz1TJ8Pajo/87dYGEFlLMm7mIc/k/s6Bvz9HQ==", + "dev": true, + "dependencies": { + "is-stream": "^2.0.0", + "type-fest": "^0.8.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/help-me": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/help-me/-/help-me-4.1.0.tgz", @@ -1213,6 +2108,24 @@ "node": ">= 6" } }, + "node_modules/html-escaper": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", + "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", + "dev": true + }, + "node_modules/html-tags": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/html-tags/-/html-tags-3.2.0.tgz", + "integrity": "sha512-vy7ClnArOZwCnqZgvv+ddgHgJiAFXe3Ge9ML5/mBctVJoUoYPCdxVucOywjDARn6CVoh3dRSFdPHy2sX80L0Wg==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/http-errors": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", @@ -1247,6 +2160,24 @@ } ] }, + "node_modules/imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", + "dev": true, + "engines": { + "node": ">=0.8.19" + } + }, + "node_modules/indent-string": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", + "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, "node_modules/inflight": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", @@ -1302,6 +2233,15 @@ "node": ">=0.10.0" } }, + "node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, "node_modules/is-glob": { "version": "4.0.3", "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", @@ -1313,6 +2253,21 @@ "node": ">=0.10.0" } }, + "node_modules/is-html": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-html/-/is-html-3.0.0.tgz", + "integrity": "sha512-LmdKtXjzmYi07R1wJA6ZJk/8Y+6J40x8zwsJT3VnhqgxJdRWwYWizpGjvdtA9PkeA57pjZYMbwm6IpPMSn4JNA==", + "dev": true, + "dependencies": { + "html-tags": "^3.1.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/is-number": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", @@ -1321,6 +2276,33 @@ "node": ">=0.12.0" } }, + "node_modules/is-stream": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-typedarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==", + "dev": true + }, + "node_modules/is-windows": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", + "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/isbinaryfile": { "version": "4.0.10", "resolved": "https://registry.npmjs.org/isbinaryfile/-/isbinaryfile-4.0.10.tgz", @@ -1332,6 +2314,136 @@ "url": "https://github.com/sponsors/gjtorikian/" } }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "dev": true + }, + "node_modules/istanbul-lib-coverage": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.0.tgz", + "integrity": "sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/istanbul-lib-hook": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-hook/-/istanbul-lib-hook-3.0.0.tgz", + "integrity": "sha512-Pt/uge1Q9s+5VAZ+pCo16TYMWPBIl+oaNIjgLQxcX0itS6ueeaA+pEfThZpH8WxhFgCiEb8sAJY6MdUKgiIWaQ==", + "dev": true, + "dependencies": { + "append-transform": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/istanbul-lib-instrument": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-4.0.3.tgz", + "integrity": "sha512-BXgQl9kf4WTCPCCpmFGoJkz/+uhvm7h7PFKUYxh7qarQd3ER33vHG//qaE8eN25l07YqZPpHXU9I09l/RD5aGQ==", + "dev": true, + "dependencies": { + "@babel/core": "^7.7.5", + "@istanbuljs/schema": "^0.1.2", + "istanbul-lib-coverage": "^3.0.0", + "semver": "^6.3.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/istanbul-lib-instrument/node_modules/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/istanbul-lib-processinfo": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/istanbul-lib-processinfo/-/istanbul-lib-processinfo-2.0.3.tgz", + "integrity": "sha512-NkwHbo3E00oybX6NGJi6ar0B29vxyvNwoC7eJ4G4Yq28UfY758Hgn/heV8VRFhevPED4LXfFz0DQ8z/0kw9zMg==", + "dev": true, + "dependencies": { + "archy": "^1.0.0", + "cross-spawn": "^7.0.3", + "istanbul-lib-coverage": "^3.2.0", + "p-map": "^3.0.0", + "rimraf": "^3.0.0", + "uuid": "^8.3.2" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/istanbul-lib-processinfo/node_modules/uuid": { + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", + "dev": true, + "bin": { + "uuid": "dist/bin/uuid" + } + }, + "node_modules/istanbul-lib-report": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz", + "integrity": "sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw==", + "dev": true, + "dependencies": { + "istanbul-lib-coverage": "^3.0.0", + "make-dir": "^3.0.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/istanbul-lib-source-maps": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz", + "integrity": "sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==", + "dev": true, + "dependencies": { + "debug": "^4.1.1", + "istanbul-lib-coverage": "^3.0.0", + "source-map": "^0.6.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/istanbul-reports": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.5.tgz", + "integrity": "sha512-nUsEMa9pBt/NOHqbcbeJEgqIlY/K7rVWUX6Lql2orY5e9roQOthbR3vtY4zzf2orPELg80fnxxk9zUyPlgwD1w==", + "dev": true, + "dependencies": { + "html-escaper": "^2.0.0", + "istanbul-lib-report": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jackspeak": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-1.4.2.tgz", + "integrity": "sha512-GHeGTmnuaHnvS+ZctRB01bfxARuu9wW83ENbuiweu07SFcVlZrJpcshSre/keGT7YGBhLHg/+rXCNSrsEHKU4Q==", + "dev": true, + "dependencies": { + "cliui": "^7.0.4" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/joycon": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/joycon/-/joycon-3.1.1.tgz", @@ -1340,6 +2452,34 @@ "node": ">=10" } }, + "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==", + "dev": true + }, + "node_modules/js-yaml": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", + "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", + "dev": true, + "dependencies": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/js-yaml/node_modules/argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dev": true, + "dependencies": { + "sprintf-js": "~1.0.2" + } + }, "node_modules/js2xmlparser": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/js2xmlparser/-/js2xmlparser-4.0.2.tgz", @@ -1431,11 +2571,35 @@ "node": ">=12.17" } }, + "node_modules/jsesc": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", + "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", + "dev": true, + "bin": { + "jsesc": "bin/jsesc" + }, + "engines": { + "node": ">=4" + } + }, "node_modules/json-schema-traverse": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==" }, + "node_modules/json5": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.1.tgz", + "integrity": "sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA==", + "dev": true, + "bin": { + "json5": "lib/cli.js" + }, + "engines": { + "node": ">=6" + } + }, "node_modules/klaw": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/klaw/-/klaw-3.0.0.tgz", @@ -1444,6 +2608,33 @@ "graceful-fs": "^4.1.9" } }, + "node_modules/libtap": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/libtap/-/libtap-1.4.0.tgz", + "integrity": "sha512-STLFynswQ2A6W14JkabgGetBNk6INL1REgJ9UeNKw5llXroC2cGLgKTqavv0sl8OLVztLLipVKMcQ7yeUcqpmg==", + "dev": true, + "dependencies": { + "async-hook-domain": "^2.0.4", + "bind-obj-methods": "^3.0.0", + "diff": "^4.0.2", + "function-loop": "^2.0.1", + "minipass": "^3.1.5", + "own-or": "^1.0.0", + "own-or-env": "^1.0.2", + "signal-exit": "^3.0.4", + "stack-utils": "^2.0.4", + "tap-parser": "^11.0.0", + "tap-yaml": "^1.0.0", + "tcompare": "^5.0.6", + "trivial-deferred": "^1.0.1" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, "node_modules/light-my-request": { "version": "5.6.1", "resolved": "https://registry.npmjs.org/light-my-request/-/light-my-request-5.6.1.tgz", @@ -1484,6 +2675,12 @@ "resolved": "https://registry.npmjs.org/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz", "integrity": "sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA==" }, + "node_modules/lodash.flattendeep": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/lodash.flattendeep/-/lodash.flattendeep-4.4.0.tgz", + "integrity": "sha512-uHaJFihxmJcEX3kT4I23ABqKKalJ/zDrDg0lsFtc1h+3uw49SIJ5beyhx5ExVRti3AvKoOJngIj7xz3oylPdWQ==", + "dev": true + }, "node_modules/lodash.omit": { "version": "4.5.0", "resolved": "https://registry.npmjs.org/lodash.omit/-/lodash.omit-4.5.0.tgz", @@ -1510,6 +2707,30 @@ "node": ">=10" } }, + "node_modules/make-dir": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", + "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", + "dev": true, + "dependencies": { + "semver": "^6.0.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/make-dir/node_modules/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, "node_modules/make-promises-safe": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/make-promises-safe/-/make-promises-safe-5.1.0.tgz", @@ -1593,6 +2814,18 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/minipass": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/mkdirp": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", @@ -1619,6 +2852,24 @@ "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==" }, + "node_modules/node-preload": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/node-preload/-/node-preload-0.2.1.tgz", + "integrity": "sha512-RM5oyBy45cLEoHqCeh+MNuFAxO0vTFBLskvQbOKnEE7YTTSN4tbN8QWDIPQ6L+WvKsB/qLEGpYe2ZZ9d4W9OIQ==", + "dev": true, + "dependencies": { + "process-on-spawn": "^1.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/node-releases": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.6.tgz", + "integrity": "sha512-PiVXnNuFm5+iYkLBNeq5211hvO38y63T0i2KKh2KnUs3RpzJ+JtODFjkD8yjLwnDkTYF1eKXheUwdssR+NRZdg==", + "dev": true + }, "node_modules/normalize-path": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", @@ -1651,6 +2902,135 @@ } } }, + "node_modules/nyc": { + "version": "15.1.0", + "resolved": "https://registry.npmjs.org/nyc/-/nyc-15.1.0.tgz", + "integrity": "sha512-jMW04n9SxKdKi1ZMGhvUTHBN0EICCRkHemEoE5jm6mTYcqcdas0ATzgUgejlQUHMvpnOZqGB5Xxsv9KxJW1j8A==", + "dev": true, + "dependencies": { + "@istanbuljs/load-nyc-config": "^1.0.0", + "@istanbuljs/schema": "^0.1.2", + "caching-transform": "^4.0.0", + "convert-source-map": "^1.7.0", + "decamelize": "^1.2.0", + "find-cache-dir": "^3.2.0", + "find-up": "^4.1.0", + "foreground-child": "^2.0.0", + "get-package-type": "^0.1.0", + "glob": "^7.1.6", + "istanbul-lib-coverage": "^3.0.0", + "istanbul-lib-hook": "^3.0.0", + "istanbul-lib-instrument": "^4.0.0", + "istanbul-lib-processinfo": "^2.0.2", + "istanbul-lib-report": "^3.0.0", + "istanbul-lib-source-maps": "^4.0.0", + "istanbul-reports": "^3.0.2", + "make-dir": "^3.0.0", + "node-preload": "^0.2.1", + "p-map": "^3.0.0", + "process-on-spawn": "^1.0.0", + "resolve-from": "^5.0.0", + "rimraf": "^3.0.0", + "signal-exit": "^3.0.2", + "spawn-wrap": "^2.0.0", + "test-exclude": "^6.0.0", + "yargs": "^15.0.2" + }, + "bin": { + "nyc": "bin/nyc.js" + }, + "engines": { + "node": ">=8.9" + } + }, + "node_modules/nyc/node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/nyc/node_modules/find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/nyc/node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/nyc/node_modules/locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "dependencies": { + "p-locate": "^4.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/nyc/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/nyc/node_modules/p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "dependencies": { + "p-limit": "^2.2.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/nyc/node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true, + "engines": { + "node": ">=8" + } + }, "node_modules/object-get": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/object-get/-/object-get-2.1.1.tgz", @@ -1688,6 +3068,30 @@ "wrappy": "1" } }, + "node_modules/opener": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/opener/-/opener-1.5.2.tgz", + "integrity": "sha512-ur5UIdyw5Y7yEj9wLzhqXiy6GZ3Mwx0yGI+5sMn2r0N0v3cKJvUmFH5yPP+WXh9e0xfyzyJX95D8l088DNFj7A==", + "dev": true, + "bin": { + "opener": "bin/opener-bin.js" + } + }, + "node_modules/own-or": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/own-or/-/own-or-1.0.0.tgz", + "integrity": "sha512-NfZr5+Tdf6MB8UI9GLvKRs4cXY8/yB0w3xtt84xFdWy8hkGjn+JFc60VhzS/hFRfbyxFcGYMTjnF4Me+RbbqrA==", + "dev": true + }, + "node_modules/own-or-env": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/own-or-env/-/own-or-env-1.0.2.tgz", + "integrity": "sha512-NQ7v0fliWtK7Lkb+WdFqe6ky9XAzYmlkXthQrBbzlYbmFKoAYbDDcwmOm6q8kOuwSRXW8bdL5ORksploUJmWgw==", + "dev": true, + "dependencies": { + "own-or": "^1.0.0" + } + }, "node_modules/p-limit": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", @@ -1713,6 +3117,18 @@ "node": ">=6" } }, + "node_modules/p-map": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-3.0.0.tgz", + "integrity": "sha512-d3qXVTF/s+W+CdJ5A29wywV2n8CQQYahlgz2bFiA+4eVNJbHJodPZ+/gXwPGh0bOqA+j8S+6+ckmvLGPk1QpxQ==", + "dev": true, + "dependencies": { + "aggregate-error": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/p-try": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", @@ -1721,6 +3137,21 @@ "node": ">=6" } }, + "node_modules/package-hash": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/package-hash/-/package-hash-4.0.0.tgz", + "integrity": "sha512-whdkPIooSu/bASggZ96BWVvZTRMOFxnyUG5PnTSGKoJE2gd5mbVNmR2Nj20QFzxYYgAXpoqC+AiXzl+UMRh7zQ==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.1.15", + "hasha": "^5.0.0", + "lodash.flattendeep": "^4.4.0", + "release-zalgo": "^1.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/pako": { "version": "1.0.11", "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", @@ -1742,6 +3173,15 @@ "node": ">=0.10.0" } }, + "node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, "node_modules/pdf-lib": { "version": "1.17.1", "resolved": "https://registry.npmjs.org/pdf-lib/-/pdf-lib-1.17.1.tgz", @@ -1753,6 +3193,12 @@ "tslib": "^1.11.1" } }, + "node_modules/picocolors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", + "dev": true + }, "node_modules/picomatch": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", @@ -1823,6 +3269,64 @@ "resolved": "https://registry.npmjs.org/pino-std-serializers/-/pino-std-serializers-6.0.0.tgz", "integrity": "sha512-mMMOwSKrmyl+Y12Ri2xhH1lbzQxwwpuru9VjyJpgFIH4asSj88F2csdMwN6+M5g1Ll4rmsYghHLQJw81tgZ7LQ==" }, + "node_modules/pkg-dir": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", + "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", + "dev": true, + "dependencies": { + "find-up": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/pkg-dir/node_modules/find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/pkg-dir/node_modules/locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "dependencies": { + "p-locate": "^4.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/pkg-dir/node_modules/p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "dependencies": { + "p-limit": "^2.2.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/pkg-dir/node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true, + "engines": { + "node": ">=8" + } + }, "node_modules/pkg-up": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/pkg-up/-/pkg-up-3.1.0.tgz", @@ -1868,6 +3372,18 @@ "node": ">= 0.6.0" } }, + "node_modules/process-on-spawn": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/process-on-spawn/-/process-on-spawn-1.0.0.tgz", + "integrity": "sha512-1WsPDsUSMmZH5LeMLegqkPDrsGgsWwk1Exipy2hvB0o/F0ASzbpIctSCcZIK1ykJvtTJULEH+20WOFjMvGnCTg==", + "dev": true, + "dependencies": { + "fromentries": "^1.2.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/process-warning": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/process-warning/-/process-warning-2.0.0.tgz", @@ -2032,6 +3548,27 @@ "node": ">=0.10.0" } }, + "node_modules/release-zalgo": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/release-zalgo/-/release-zalgo-1.0.0.tgz", + "integrity": "sha512-gUAyHVHPPC5wdqX/LG4LWtRYtgjxyX78oanFNTMMyFEfOqdC54s3eE82imuWKbOeqYht2CrNf64Qb8vgmmtZGA==", + "dev": true, + "dependencies": { + "es6-error": "^4.0.1" + }, + "engines": { + "node": ">=4" + } + }, + "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==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/require-from-string": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", @@ -2040,6 +3577,12 @@ "node": ">=0.10.0" } }, + "node_modules/require-main-filename": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", + "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==", + "dev": true + }, "node_modules/requizzle": { "version": "0.2.3", "resolved": "https://registry.npmjs.org/requizzle/-/requizzle-0.2.3.tgz", @@ -2078,6 +3621,63 @@ "resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.3.0.tgz", "integrity": "sha512-V2hovdzFbOi77/WajaSMXk2OLm+xNIeQdMMuB7icj7bk6zi2F8GGAxigcnDFpJHbNyNcgyJDiP+8nOrY5cZGrA==" }, + "node_modules/rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "dev": true, + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/rimraf/node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/rimraf/node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/rimraf/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, "node_modules/safe-buffer": { "version": "5.2.1", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", @@ -2173,6 +3773,12 @@ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" }, + "node_modules/set-blocking": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==", + "dev": true + }, "node_modules/set-cookie-parser": { "version": "2.5.1", "resolved": "https://registry.npmjs.org/set-cookie-parser/-/set-cookie-parser-2.5.1.tgz", @@ -2183,6 +3789,33 @@ "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==" }, + "node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", + "dev": true + }, "node_modules/sonic-boom": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/sonic-boom/-/sonic-boom-3.2.0.tgz", @@ -2227,6 +3860,33 @@ "node": ">=0.10.0" } }, + "node_modules/source-map-support": { + "version": "0.5.21", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", + "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", + "dev": true, + "dependencies": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "node_modules/spawn-wrap": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/spawn-wrap/-/spawn-wrap-2.0.0.tgz", + "integrity": "sha512-EeajNjfN9zMnULLwhZZQU3GWBoFNkbngTUPfaawT4RkMiviTxcX0qfhVbGey39mfctfDHkWtuecgQ8NJcyQWHg==", + "dev": true, + "dependencies": { + "foreground-child": "^2.0.0", + "is-windows": "^1.0.2", + "make-dir": "^3.0.0", + "rimraf": "^3.0.0", + "signal-exit": "^3.0.2", + "which": "^2.0.1" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/split2": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/split2/-/split2-4.1.0.tgz", @@ -2235,6 +3895,24 @@ "node": ">= 10.x" } }, + "node_modules/sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", + "dev": true + }, + "node_modules/stack-utils": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.6.tgz", + "integrity": "sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==", + "dev": true, + "dependencies": { + "escape-string-regexp": "^2.0.0" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/statuses": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", @@ -2281,6 +3959,41 @@ "safe-buffer": "~5.2.0" } }, + "node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-bom": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz", + "integrity": "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==", + "dev": true, + "engines": { + "node": ">=8" + } + }, "node_modules/strip-json-comments": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", @@ -2334,11 +4047,2106 @@ "resolved": "https://registry.npmjs.org/taffydb/-/taffydb-2.6.2.tgz", "integrity": "sha512-y3JaeRSplks6NYQuCOj3ZFMO3j60rTwbuKCvZxsAraGYH2epusatvZ0baZYA01WsGqJBq/Dl6vOrMUJqyMj8kA==" }, + "node_modules/tap": { + "version": "16.3.2", + "resolved": "https://registry.npmjs.org/tap/-/tap-16.3.2.tgz", + "integrity": "sha512-4MWMObR8unbv5gAHHVW9F0MNk3opQMnLusSWvt4KBAnKmkwpBRKIfNF64fimQbcR4y9a7U9ISV7pCldlV3J8Pw==", + "bundleDependencies": [ + "ink", + "treport", + "@types/react", + "@isaacs/import-jsx", + "react" + ], + "dev": true, + "dependencies": { + "@isaacs/import-jsx": "^4.0.1", + "@types/react": "^17.0.52", + "chokidar": "^3.3.0", + "findit": "^2.0.0", + "foreground-child": "^2.0.0", + "fs-exists-cached": "^1.0.0", + "glob": "^7.2.3", + "ink": "^3.2.0", + "isexe": "^2.0.0", + "istanbul-lib-processinfo": "^2.0.3", + "jackspeak": "^1.4.2", + "libtap": "^1.4.0", + "minipass": "^3.3.4", + "mkdirp": "^1.0.4", + "nyc": "^15.1.0", + "opener": "^1.5.1", + "react": "^17.0.2", + "rimraf": "^3.0.0", + "signal-exit": "^3.0.6", + "source-map-support": "^0.5.16", + "tap-mocha-reporter": "^5.0.3", + "tap-parser": "^11.0.2", + "tap-yaml": "^1.0.2", + "tcompare": "^5.0.7", + "treport": "^3.0.4", + "which": "^2.0.2" + }, + "bin": { + "tap": "bin/run.js" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + }, + "peerDependencies": { + "coveralls": "^3.1.1", + "flow-remove-types": ">=2.112.0", + "ts-node": ">=8.5.2", + "typescript": ">=3.7.2" + }, + "peerDependenciesMeta": { + "coveralls": { + "optional": true + }, + "flow-remove-types": { + "optional": true + }, + "ts-node": { + "optional": true + }, + "typescript": { + "optional": true + } + } + }, + "node_modules/tap-mocha-reporter": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/tap-mocha-reporter/-/tap-mocha-reporter-5.0.3.tgz", + "integrity": "sha512-6zlGkaV4J+XMRFkN0X+yuw6xHbE9jyCZ3WUKfw4KxMyRGOpYSRuuQTRJyWX88WWuLdVTuFbxzwXhXuS2XE6o0g==", + "dev": true, + "dependencies": { + "color-support": "^1.1.0", + "debug": "^4.1.1", + "diff": "^4.0.1", + "escape-string-regexp": "^2.0.0", + "glob": "^7.0.5", + "tap-parser": "^11.0.0", + "tap-yaml": "^1.0.0", + "unicode-length": "^2.0.2" + }, + "bin": { + "tap-mocha-reporter": "index.js" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/tap-mocha-reporter/node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/tap-mocha-reporter/node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/tap-mocha-reporter/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/tap-parser": { + "version": "11.0.2", + "resolved": "https://registry.npmjs.org/tap-parser/-/tap-parser-11.0.2.tgz", + "integrity": "sha512-6qGlC956rcORw+fg7Fv1iCRAY8/bU9UabUAhs3mXRH6eRmVZcNPLheSXCYaVaYeSwx5xa/1HXZb1537YSvwDZg==", + "dev": true, + "dependencies": { + "events-to-array": "^1.0.1", + "minipass": "^3.1.6", + "tap-yaml": "^1.0.0" + }, + "bin": { + "tap-parser": "bin/cmd.js" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/tap-yaml": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/tap-yaml/-/tap-yaml-1.0.2.tgz", + "integrity": "sha512-GegASpuqBnRNdT1U+yuUPZ8rEU64pL35WPBpCISWwff4dErS2/438barz7WFJl4Nzh3Y05tfPidZnH+GaV1wMg==", + "dev": true, + "dependencies": { + "yaml": "^1.10.2" + } + }, + "node_modules/tap/node_modules/@ampproject/remapping": { + "version": "2.1.2", + "dev": true, + "inBundle": true, + "license": "Apache-2.0", + "dependencies": { + "@jridgewell/trace-mapping": "^0.3.0" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/tap/node_modules/@babel/code-frame": { + "version": "7.16.7", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "@babel/highlight": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/tap/node_modules/@babel/compat-data": { + "version": "7.17.7", + "dev": true, + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/tap/node_modules/@babel/core": { + "version": "7.17.8", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "@ampproject/remapping": "^2.1.0", + "@babel/code-frame": "^7.16.7", + "@babel/generator": "^7.17.7", + "@babel/helper-compilation-targets": "^7.17.7", + "@babel/helper-module-transforms": "^7.17.7", + "@babel/helpers": "^7.17.8", + "@babel/parser": "^7.17.8", + "@babel/template": "^7.16.7", + "@babel/traverse": "^7.17.3", + "@babel/types": "^7.17.0", + "convert-source-map": "^1.7.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.1.2", + "semver": "^6.3.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/babel" + } + }, + "node_modules/tap/node_modules/@babel/generator": { + "version": "7.17.7", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.17.0", + "jsesc": "^2.5.1", + "source-map": "^0.5.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/tap/node_modules/@babel/helper-annotate-as-pure": { + "version": "7.16.7", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/tap/node_modules/@babel/helper-compilation-targets": { + "version": "7.17.7", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "@babel/compat-data": "^7.17.7", + "@babel/helper-validator-option": "^7.16.7", + "browserslist": "^4.17.5", + "semver": "^6.3.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/tap/node_modules/@babel/helper-environment-visitor": { + "version": "7.16.7", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/tap/node_modules/@babel/helper-function-name": { + "version": "7.16.7", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "@babel/helper-get-function-arity": "^7.16.7", + "@babel/template": "^7.16.7", + "@babel/types": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/tap/node_modules/@babel/helper-get-function-arity": { + "version": "7.16.7", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/tap/node_modules/@babel/helper-hoist-variables": { + "version": "7.16.7", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/tap/node_modules/@babel/helper-module-imports": { + "version": "7.16.7", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/tap/node_modules/@babel/helper-module-transforms": { + "version": "7.17.7", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "@babel/helper-environment-visitor": "^7.16.7", + "@babel/helper-module-imports": "^7.16.7", + "@babel/helper-simple-access": "^7.17.7", + "@babel/helper-split-export-declaration": "^7.16.7", + "@babel/helper-validator-identifier": "^7.16.7", + "@babel/template": "^7.16.7", + "@babel/traverse": "^7.17.3", + "@babel/types": "^7.17.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/tap/node_modules/@babel/helper-plugin-utils": { + "version": "7.16.7", + "dev": true, + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/tap/node_modules/@babel/helper-simple-access": { + "version": "7.17.7", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.17.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/tap/node_modules/@babel/helper-split-export-declaration": { + "version": "7.16.7", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/tap/node_modules/@babel/helper-validator-identifier": { + "version": "7.16.7", + "dev": true, + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/tap/node_modules/@babel/helper-validator-option": { + "version": "7.16.7", + "dev": true, + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/tap/node_modules/@babel/helpers": { + "version": "7.17.8", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "@babel/template": "^7.16.7", + "@babel/traverse": "^7.17.3", + "@babel/types": "^7.17.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/tap/node_modules/@babel/highlight": { + "version": "7.16.10", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "@babel/helper-validator-identifier": "^7.16.7", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/tap/node_modules/@babel/parser": { + "version": "7.17.8", + "dev": true, + "inBundle": true, + "license": "MIT", + "bin": { + "parser": "bin/babel-parser.js" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/tap/node_modules/@babel/plugin-proposal-object-rest-spread": { + "version": "7.17.3", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "@babel/compat-data": "^7.17.0", + "@babel/helper-compilation-targets": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-transform-parameters": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/tap/node_modules/@babel/plugin-syntax-jsx": { + "version": "7.16.7", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/tap/node_modules/@babel/plugin-syntax-object-rest-spread": { + "version": "7.8.3", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/tap/node_modules/@babel/plugin-transform-destructuring": { + "version": "7.17.7", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/tap/node_modules/@babel/plugin-transform-parameters": { + "version": "7.16.7", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/tap/node_modules/@babel/plugin-transform-react-jsx": { + "version": "7.17.3", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.16.7", + "@babel/helper-module-imports": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/plugin-syntax-jsx": "^7.16.7", + "@babel/types": "^7.17.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/tap/node_modules/@babel/template": { + "version": "7.16.7", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.16.7", + "@babel/parser": "^7.16.7", + "@babel/types": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/tap/node_modules/@babel/traverse": { + "version": "7.17.3", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.16.7", + "@babel/generator": "^7.17.3", + "@babel/helper-environment-visitor": "^7.16.7", + "@babel/helper-function-name": "^7.16.7", + "@babel/helper-hoist-variables": "^7.16.7", + "@babel/helper-split-export-declaration": "^7.16.7", + "@babel/parser": "^7.17.3", + "@babel/types": "^7.17.0", + "debug": "^4.1.0", + "globals": "^11.1.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/tap/node_modules/@babel/types": { + "version": "7.17.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "@babel/helper-validator-identifier": "^7.16.7", + "to-fast-properties": "^2.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/tap/node_modules/@isaacs/import-jsx": { + "version": "4.0.1", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "@babel/core": "^7.5.5", + "@babel/plugin-proposal-object-rest-spread": "^7.5.5", + "@babel/plugin-transform-destructuring": "^7.5.0", + "@babel/plugin-transform-react-jsx": "^7.3.0", + "caller-path": "^3.0.1", + "find-cache-dir": "^3.2.0", + "make-dir": "^3.0.2", + "resolve-from": "^3.0.0", + "rimraf": "^3.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/tap/node_modules/@jridgewell/resolve-uri": { + "version": "3.0.5", + "dev": true, + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/tap/node_modules/@jridgewell/sourcemap-codec": { + "version": "1.4.11", + "dev": true, + "inBundle": true, + "license": "MIT" + }, + "node_modules/tap/node_modules/@jridgewell/trace-mapping": { + "version": "0.3.4", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "@jridgewell/resolve-uri": "^3.0.3", + "@jridgewell/sourcemap-codec": "^1.4.10" + } + }, + "node_modules/tap/node_modules/@types/prop-types": { + "version": "15.7.4", + "dev": true, + "inBundle": true, + "license": "MIT" + }, + "node_modules/tap/node_modules/@types/react": { + "version": "17.0.52", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "@types/prop-types": "*", + "@types/scheduler": "*", + "csstype": "^3.0.2" + } + }, + "node_modules/tap/node_modules/@types/scheduler": { + "version": "0.16.2", + "dev": true, + "inBundle": true, + "license": "MIT" + }, + "node_modules/tap/node_modules/@types/yoga-layout": { + "version": "1.9.2", + "dev": true, + "inBundle": true, + "license": "MIT" + }, + "node_modules/tap/node_modules/ansi-escapes": { + "version": "4.3.2", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "type-fest": "^0.21.3" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/tap/node_modules/ansi-escapes/node_modules/type-fest": { + "version": "0.21.3", + "dev": true, + "inBundle": true, + "license": "(MIT OR CC0-1.0)", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/tap/node_modules/ansi-regex": { + "version": "5.0.1", + "dev": true, + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/tap/node_modules/ansi-styles": { + "version": "3.2.1", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/tap/node_modules/ansicolors": { + "version": "0.3.2", + "dev": true, + "inBundle": true, + "license": "MIT" + }, + "node_modules/tap/node_modules/astral-regex": { + "version": "2.0.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/tap/node_modules/auto-bind": { + "version": "4.0.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/tap/node_modules/balanced-match": { + "version": "1.0.2", + "dev": true, + "inBundle": true, + "license": "MIT" + }, + "node_modules/tap/node_modules/brace-expansion": { + "version": "1.1.11", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/tap/node_modules/browserslist": { + "version": "4.20.2", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + } + ], + "inBundle": true, + "license": "MIT", + "dependencies": { + "caniuse-lite": "^1.0.30001317", + "electron-to-chromium": "^1.4.84", + "escalade": "^3.1.1", + "node-releases": "^2.0.2", + "picocolors": "^1.0.0" + }, + "bin": { + "browserslist": "cli.js" + }, + "engines": { + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" + } + }, + "node_modules/tap/node_modules/caller-callsite": { + "version": "4.1.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "callsites": "^3.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/tap/node_modules/caller-path": { + "version": "3.0.1", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "caller-callsite": "^4.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/tap/node_modules/callsites": { + "version": "3.1.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/tap/node_modules/caniuse-lite": { + "version": "1.0.30001319", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/caniuse-lite" + } + ], + "inBundle": true, + "license": "CC-BY-4.0" + }, + "node_modules/tap/node_modules/cardinal": { + "version": "2.1.1", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "ansicolors": "~0.3.2", + "redeyed": "~2.1.0" + }, + "bin": { + "cdl": "bin/cdl.js" + } + }, + "node_modules/tap/node_modules/chalk": { + "version": "2.4.2", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/tap/node_modules/ci-info": { + "version": "2.0.0", + "dev": true, + "inBundle": true, + "license": "MIT" + }, + "node_modules/tap/node_modules/cli-boxes": { + "version": "2.2.1", + "dev": true, + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/tap/node_modules/cli-cursor": { + "version": "3.1.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "restore-cursor": "^3.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/tap/node_modules/cli-truncate": { + "version": "2.1.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "slice-ansi": "^3.0.0", + "string-width": "^4.2.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/tap/node_modules/code-excerpt": { + "version": "3.0.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "convert-to-spaces": "^1.0.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/tap/node_modules/color-convert": { + "version": "1.9.3", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/tap/node_modules/color-name": { + "version": "1.1.3", + "dev": true, + "inBundle": true, + "license": "MIT" + }, + "node_modules/tap/node_modules/commondir": { + "version": "1.0.1", + "dev": true, + "inBundle": true, + "license": "MIT" + }, + "node_modules/tap/node_modules/concat-map": { + "version": "0.0.1", + "dev": true, + "inBundle": true, + "license": "MIT" + }, + "node_modules/tap/node_modules/convert-source-map": { + "version": "1.8.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "safe-buffer": "~5.1.1" + } + }, + "node_modules/tap/node_modules/convert-to-spaces": { + "version": "1.0.2", + "dev": true, + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">= 4" + } + }, + "node_modules/tap/node_modules/csstype": { + "version": "3.0.11", + "dev": true, + "inBundle": true, + "license": "MIT" + }, + "node_modules/tap/node_modules/debug": { + "version": "4.3.4", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/tap/node_modules/electron-to-chromium": { + "version": "1.4.89", + "dev": true, + "inBundle": true, + "license": "ISC" + }, + "node_modules/tap/node_modules/emoji-regex": { + "version": "8.0.0", + "dev": true, + "inBundle": true, + "license": "MIT" + }, + "node_modules/tap/node_modules/escalade": { + "version": "3.1.1", + "dev": true, + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/tap/node_modules/escape-string-regexp": { + "version": "1.0.5", + "dev": true, + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/tap/node_modules/esprima": { + "version": "4.0.1", + "dev": true, + "inBundle": true, + "license": "BSD-2-Clause", + "bin": { + "esparse": "bin/esparse.js", + "esvalidate": "bin/esvalidate.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/tap/node_modules/events-to-array": { + "version": "1.1.2", + "dev": true, + "inBundle": true, + "license": "ISC" + }, + "node_modules/tap/node_modules/find-cache-dir": { + "version": "3.3.2", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "commondir": "^1.0.1", + "make-dir": "^3.0.2", + "pkg-dir": "^4.1.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/avajs/find-cache-dir?sponsor=1" + } + }, + "node_modules/tap/node_modules/find-up": { + "version": "4.1.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/tap/node_modules/fs.realpath": { + "version": "1.0.0", + "dev": true, + "inBundle": true, + "license": "ISC" + }, + "node_modules/tap/node_modules/gensync": { + "version": "1.0.0-beta.2", + "dev": true, + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/tap/node_modules/glob": { + "version": "7.2.3", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/tap/node_modules/globals": { + "version": "11.12.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/tap/node_modules/has-flag": { + "version": "3.0.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/tap/node_modules/indent-string": { + "version": "4.0.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/tap/node_modules/inflight": { + "version": "1.0.6", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "node_modules/tap/node_modules/inherits": { + "version": "2.0.4", + "dev": true, + "inBundle": true, + "license": "ISC" + }, + "node_modules/tap/node_modules/ink": { + "version": "3.2.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "ansi-escapes": "^4.2.1", + "auto-bind": "4.0.0", + "chalk": "^4.1.0", + "cli-boxes": "^2.2.0", + "cli-cursor": "^3.1.0", + "cli-truncate": "^2.1.0", + "code-excerpt": "^3.0.0", + "indent-string": "^4.0.0", + "is-ci": "^2.0.0", + "lodash": "^4.17.20", + "patch-console": "^1.0.0", + "react-devtools-core": "^4.19.1", + "react-reconciler": "^0.26.2", + "scheduler": "^0.20.2", + "signal-exit": "^3.0.2", + "slice-ansi": "^3.0.0", + "stack-utils": "^2.0.2", + "string-width": "^4.2.2", + "type-fest": "^0.12.0", + "widest-line": "^3.1.0", + "wrap-ansi": "^6.2.0", + "ws": "^7.5.5", + "yoga-layout-prebuilt": "^1.9.6" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "@types/react": ">=16.8.0", + "react": ">=16.8.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/tap/node_modules/ink/node_modules/ansi-styles": { + "version": "4.3.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/tap/node_modules/ink/node_modules/chalk": { + "version": "4.1.2", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/tap/node_modules/ink/node_modules/color-convert": { + "version": "2.0.1", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/tap/node_modules/ink/node_modules/color-name": { + "version": "1.1.4", + "dev": true, + "inBundle": true, + "license": "MIT" + }, + "node_modules/tap/node_modules/ink/node_modules/has-flag": { + "version": "4.0.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/tap/node_modules/ink/node_modules/supports-color": { + "version": "7.2.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/tap/node_modules/is-ci": { + "version": "2.0.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "ci-info": "^2.0.0" + }, + "bin": { + "is-ci": "bin.js" + } + }, + "node_modules/tap/node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/tap/node_modules/js-tokens": { + "version": "4.0.0", + "dev": true, + "inBundle": true, + "license": "MIT" + }, + "node_modules/tap/node_modules/jsesc": { + "version": "2.5.2", + "dev": true, + "inBundle": true, + "license": "MIT", + "bin": { + "jsesc": "bin/jsesc" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/tap/node_modules/json5": { + "version": "2.2.1", + "dev": true, + "inBundle": true, + "license": "MIT", + "bin": { + "json5": "lib/cli.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/tap/node_modules/locate-path": { + "version": "5.0.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "p-locate": "^4.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/tap/node_modules/lodash": { + "version": "4.17.21", + "dev": true, + "inBundle": true, + "license": "MIT" + }, + "node_modules/tap/node_modules/loose-envify": { + "version": "1.4.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "js-tokens": "^3.0.0 || ^4.0.0" + }, + "bin": { + "loose-envify": "cli.js" + } + }, + "node_modules/tap/node_modules/make-dir": { + "version": "3.1.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "semver": "^6.0.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/tap/node_modules/mimic-fn": { + "version": "2.1.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/tap/node_modules/minimatch": { + "version": "3.1.2", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/tap/node_modules/minipass": { + "version": "3.3.4", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/tap/node_modules/ms": { + "version": "2.1.2", + "dev": true, + "inBundle": true, + "license": "MIT" + }, + "node_modules/tap/node_modules/node-releases": { + "version": "2.0.2", + "dev": true, + "inBundle": true, + "license": "MIT" + }, + "node_modules/tap/node_modules/object-assign": { + "version": "4.1.1", + "dev": true, + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/tap/node_modules/once": { + "version": "1.4.0", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/tap/node_modules/onetime": { + "version": "5.1.2", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "mimic-fn": "^2.1.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/tap/node_modules/p-limit": { + "version": "2.3.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/tap/node_modules/p-locate": { + "version": "4.1.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "p-limit": "^2.2.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/tap/node_modules/p-try": { + "version": "2.2.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/tap/node_modules/patch-console": { + "version": "1.0.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=10" + } + }, + "node_modules/tap/node_modules/path-exists": { + "version": "4.0.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/tap/node_modules/path-is-absolute": { + "version": "1.0.1", + "dev": true, + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/tap/node_modules/picocolors": { + "version": "1.0.0", + "dev": true, + "inBundle": true, + "license": "ISC" + }, + "node_modules/tap/node_modules/pkg-dir": { + "version": "4.2.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "find-up": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/tap/node_modules/punycode": { + "version": "2.1.1", + "dev": true, + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/tap/node_modules/react": { + "version": "17.0.2", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "loose-envify": "^1.1.0", + "object-assign": "^4.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/tap/node_modules/react-devtools-core": { + "version": "4.24.1", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "shell-quote": "^1.6.1", + "ws": "^7" + } + }, + "node_modules/tap/node_modules/react-reconciler": { + "version": "0.26.2", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "loose-envify": "^1.1.0", + "object-assign": "^4.1.1", + "scheduler": "^0.20.2" + }, + "engines": { + "node": ">=0.10.0" + }, + "peerDependencies": { + "react": "^17.0.2" + } + }, + "node_modules/tap/node_modules/redeyed": { + "version": "2.1.1", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "esprima": "~4.0.0" + } + }, + "node_modules/tap/node_modules/resolve-from": { + "version": "3.0.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/tap/node_modules/restore-cursor": { + "version": "3.1.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "onetime": "^5.1.0", + "signal-exit": "^3.0.2" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/tap/node_modules/rimraf": { + "version": "3.0.2", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/tap/node_modules/safe-buffer": { + "version": "5.1.2", + "dev": true, + "inBundle": true, + "license": "MIT" + }, + "node_modules/tap/node_modules/scheduler": { + "version": "0.20.2", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "loose-envify": "^1.1.0", + "object-assign": "^4.1.1" + } + }, + "node_modules/tap/node_modules/semver": { + "version": "6.3.0", + "dev": true, + "inBundle": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/tap/node_modules/shell-quote": { + "version": "1.7.3", + "dev": true, + "inBundle": true, + "license": "MIT" + }, + "node_modules/tap/node_modules/signal-exit": { + "version": "3.0.7", + "dev": true, + "inBundle": true, + "license": "ISC" + }, + "node_modules/tap/node_modules/slice-ansi": { + "version": "3.0.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.0.0", + "astral-regex": "^2.0.0", + "is-fullwidth-code-point": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/tap/node_modules/slice-ansi/node_modules/ansi-styles": { + "version": "4.3.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/tap/node_modules/slice-ansi/node_modules/color-convert": { + "version": "2.0.1", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/tap/node_modules/slice-ansi/node_modules/color-name": { + "version": "1.1.4", + "dev": true, + "inBundle": true, + "license": "MIT" + }, + "node_modules/tap/node_modules/source-map": { + "version": "0.5.7", + "dev": true, + "inBundle": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/tap/node_modules/stack-utils": { + "version": "2.0.5", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "escape-string-regexp": "^2.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/tap/node_modules/stack-utils/node_modules/escape-string-regexp": { + "version": "2.0.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/tap/node_modules/string-width": { + "version": "4.2.3", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/tap/node_modules/strip-ansi": { + "version": "6.0.1", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/tap/node_modules/supports-color": { + "version": "5.5.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/tap/node_modules/tap-parser": { + "version": "11.0.2", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "events-to-array": "^1.0.1", + "minipass": "^3.1.6", + "tap-yaml": "^1.0.0" + }, + "bin": { + "tap-parser": "bin/cmd.js" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/tap/node_modules/tap-yaml": { + "version": "1.0.2", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "yaml": "^1.10.2" + } + }, + "node_modules/tap/node_modules/to-fast-properties": { + "version": "2.0.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/tap/node_modules/treport": { + "version": "3.0.4", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "@isaacs/import-jsx": "^4.0.1", + "cardinal": "^2.1.1", + "chalk": "^3.0.0", + "ink": "^3.2.0", + "ms": "^2.1.2", + "tap-parser": "^11.0.0", + "tap-yaml": "^1.0.0", + "unicode-length": "^2.0.2" + }, + "peerDependencies": { + "react": "^17.0.2" + } + }, + "node_modules/tap/node_modules/treport/node_modules/ansi-styles": { + "version": "4.3.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/tap/node_modules/treport/node_modules/chalk": { + "version": "3.0.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/tap/node_modules/treport/node_modules/color-convert": { + "version": "2.0.1", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/tap/node_modules/treport/node_modules/color-name": { + "version": "1.1.4", + "dev": true, + "inBundle": true, + "license": "MIT" + }, + "node_modules/tap/node_modules/treport/node_modules/has-flag": { + "version": "4.0.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/tap/node_modules/treport/node_modules/supports-color": { + "version": "7.2.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/tap/node_modules/type-fest": { + "version": "0.12.0", + "dev": true, + "inBundle": true, + "license": "(MIT OR CC0-1.0)", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/tap/node_modules/unicode-length": { + "version": "2.0.2", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "punycode": "^2.0.0", + "strip-ansi": "^3.0.1" + } + }, + "node_modules/tap/node_modules/unicode-length/node_modules/ansi-regex": { + "version": "2.1.1", + "dev": true, + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/tap/node_modules/unicode-length/node_modules/strip-ansi": { + "version": "3.0.1", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/tap/node_modules/widest-line": { + "version": "3.1.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "string-width": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/tap/node_modules/wrap-ansi": { + "version": "6.2.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/tap/node_modules/wrap-ansi/node_modules/ansi-styles": { + "version": "4.3.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/tap/node_modules/wrap-ansi/node_modules/color-convert": { + "version": "2.0.1", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/tap/node_modules/wrap-ansi/node_modules/color-name": { + "version": "1.1.4", + "dev": true, + "inBundle": true, + "license": "MIT" + }, + "node_modules/tap/node_modules/wrappy": { + "version": "1.0.2", + "dev": true, + "inBundle": true, + "license": "ISC" + }, + "node_modules/tap/node_modules/ws": { + "version": "7.5.7", + "dev": true, + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=8.3.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": "^5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, + "node_modules/tap/node_modules/yallist": { + "version": "4.0.0", + "dev": true, + "inBundle": true, + "license": "ISC" + }, + "node_modules/tap/node_modules/yaml": { + "version": "1.10.2", + "dev": true, + "inBundle": true, + "license": "ISC", + "engines": { + "node": ">= 6" + } + }, + "node_modules/tap/node_modules/yoga-layout-prebuilt": { + "version": "1.10.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "@types/yoga-layout": "1.9.2" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/tcompare": { + "version": "5.0.7", + "resolved": "https://registry.npmjs.org/tcompare/-/tcompare-5.0.7.tgz", + "integrity": "sha512-d9iddt6YYGgyxJw5bjsN7UJUO1kGOtjSlNy/4PoGYAjQS5pAT/hzIoLf1bZCw+uUxRmZJh7Yy1aA7xKVRT9B4w==", + "dev": true, + "dependencies": { + "diff": "^4.0.2" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/temp-path": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/temp-path/-/temp-path-1.0.0.tgz", "integrity": "sha512-TvmyH7kC6ZVTYkqCODjJIbgvu0FKiwQpZ4D1aknE7xpcDf/qEOB8KZEK5ef2pfbVoiBhNWs3yx4y+ESMtNYmlg==" }, + "node_modules/test-exclude": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz", + "integrity": "sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==", + "dev": true, + "dependencies": { + "@istanbuljs/schema": "^0.1.2", + "glob": "^7.1.4", + "minimatch": "^3.0.4" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/test-exclude/node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/test-exclude/node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/test-exclude/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, "node_modules/test-value": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/test-value/-/test-value-3.0.0.tgz", @@ -2383,6 +6191,15 @@ "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz", "integrity": "sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==" }, + "node_modules/to-fast-properties": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", + "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==", + "dev": true, + "engines": { + "node": ">=4" + } + }, "node_modules/to-regex-range": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", @@ -2402,11 +6219,35 @@ "node": ">=0.6" } }, + "node_modules/trivial-deferred": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/trivial-deferred/-/trivial-deferred-1.0.1.tgz", + "integrity": "sha512-dagAKX7vaesNNAwOc9Np9C2mJ+7YopF4lk+jE2JML9ta4kZ91Y6UruJNH65bLRYoUROD8EY+Pmi44qQWwXR7sw==", + "dev": true + }, "node_modules/tslib": { "version": "1.14.1", "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" }, + "node_modules/type-fest": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", + "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/typedarray-to-buffer": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz", + "integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==", + "dev": true, + "dependencies": { + "is-typedarray": "^1.0.0" + } + }, "node_modules/typical": { "version": "2.6.1", "resolved": "https://registry.npmjs.org/typical/-/typical-2.6.1.tgz", @@ -2434,6 +6275,41 @@ "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.13.6.tgz", "integrity": "sha512-+A5Sja4HP1M08MaXya7p5LvjuM7K6q/2EaC0+iovj/wOcMsTzMvDFbasi/oSapiwOlt252IqsKqPjCl7huKS0A==" }, + "node_modules/unicode-length": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/unicode-length/-/unicode-length-2.1.0.tgz", + "integrity": "sha512-4bV582zTV9Q02RXBxSUMiuN/KHo5w4aTojuKTNT96DIKps/SIawFp7cS5Mu25VuY1AioGXrmYyzKZUzh8OqoUw==", + "dev": true, + "dependencies": { + "punycode": "^2.0.0" + } + }, + "node_modules/update-browserslist-db": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.10.tgz", + "integrity": "sha512-OztqDenkfFkbSG+tRxBeAnCVPckDBcvibKd35yDONx6OU8N7sqgwc7rCbkJ/WcYtVRZ4ba68d6byhC21GFh7sQ==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + } + ], + "dependencies": { + "escalade": "^3.1.1", + "picocolors": "^1.0.0" + }, + "bin": { + "browserslist-lint": "cli.js" + }, + "peerDependencies": { + "browserslist": ">= 4.21.0" + } + }, "node_modules/uri-js": { "version": "4.4.1", "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", @@ -2471,6 +6347,27 @@ "makeerror": "1.0.12" } }, + "node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/which-module": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", + "integrity": "sha512-B+enWhmw6cjfVC7kS8Pj9pCrKSc5txArRyaYGe088shv/FGWH+0Rjx/xPgtsWfsUtS27FkP697E4DDhgrgoc0Q==", + "dev": true + }, "node_modules/wordwrap": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", @@ -2496,21 +6393,87 @@ "node": ">=0.10.0" } }, + "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==", + "dev": true, + "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/wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" }, + "node_modules/write-file-atomic": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz", + "integrity": "sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==", + "dev": true, + "dependencies": { + "imurmurhash": "^0.1.4", + "is-typedarray": "^1.0.0", + "signal-exit": "^3.0.2", + "typedarray-to-buffer": "^3.1.5" + } + }, "node_modules/xmlcreate": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/xmlcreate/-/xmlcreate-2.0.4.tgz", "integrity": "sha512-nquOebG4sngPmGPICTS5EnxqhKbCmz5Ox5hsszI2T6U5qdrJizBc+0ilYSEjTSzU0yZcmvppztXe/5Al5fUwdg==" }, + "node_modules/y18n": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", + "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==", + "dev": true + }, "node_modules/yallist": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" }, + "node_modules/yaml": { + "version": "1.10.2", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", + "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", + "dev": true, + "engines": { + "node": ">= 6" + } + }, + "node_modules/yargs": { + "version": "15.4.1", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz", + "integrity": "sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==", + "dev": true, + "dependencies": { + "cliui": "^6.0.0", + "decamelize": "^1.2.0", + "find-up": "^4.1.0", + "get-caller-file": "^2.0.1", + "require-directory": "^2.1.1", + "require-main-filename": "^2.0.0", + "set-blocking": "^2.0.0", + "string-width": "^4.2.0", + "which-module": "^2.0.0", + "y18n": "^4.0.0", + "yargs-parser": "^18.1.2" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/yargs-parser": { "version": "21.1.1", "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", @@ -2519,6 +6482,90 @@ "node": ">=12" } }, + "node_modules/yargs/node_modules/cliui": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz", + "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==", + "dev": true, + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^6.2.0" + } + }, + "node_modules/yargs/node_modules/find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/yargs/node_modules/locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "dependencies": { + "p-locate": "^4.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/yargs/node_modules/p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "dependencies": { + "p-limit": "^2.2.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/yargs/node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/yargs/node_modules/wrap-ansi": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", + "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/yargs/node_modules/yargs-parser": { + "version": "18.1.3", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz", + "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==", + "dev": true, + "dependencies": { + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" + }, + "engines": { + "node": ">=6" + } + }, "node_modules/yocto-queue": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", @@ -2532,11 +6579,317 @@ } }, "dependencies": { + "@ampproject/remapping": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.0.tgz", + "integrity": "sha512-qRmjj8nj9qmLTQXXmaR1cck3UXSRMPrbsLJAasZpF+t3riI71BXed5ebIOYwQntykeZuhjsdweEc9BxH5Jc26w==", + "dev": true, + "requires": { + "@jridgewell/gen-mapping": "^0.1.0", + "@jridgewell/trace-mapping": "^0.3.9" + } + }, + "@babel/code-frame": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.18.6.tgz", + "integrity": "sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==", + "dev": true, + "requires": { + "@babel/highlight": "^7.18.6" + } + }, + "@babel/compat-data": { + "version": "7.20.1", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.20.1.tgz", + "integrity": "sha512-EWZ4mE2diW3QALKvDMiXnbZpRvlj+nayZ112nK93SnhqOtpdsbVD4W+2tEoT3YNBAG9RBR0ISY758ZkOgsn6pQ==", + "dev": true + }, + "@babel/core": { + "version": "7.20.2", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.20.2.tgz", + "integrity": "sha512-w7DbG8DtMrJcFOi4VrLm+8QM4az8Mo+PuLBKLp2zrYRCow8W/f9xiXm5sN53C8HksCyDQwCKha9JiDoIyPjT2g==", + "dev": true, + "requires": { + "@ampproject/remapping": "^2.1.0", + "@babel/code-frame": "^7.18.6", + "@babel/generator": "^7.20.2", + "@babel/helper-compilation-targets": "^7.20.0", + "@babel/helper-module-transforms": "^7.20.2", + "@babel/helpers": "^7.20.1", + "@babel/parser": "^7.20.2", + "@babel/template": "^7.18.10", + "@babel/traverse": "^7.20.1", + "@babel/types": "^7.20.2", + "convert-source-map": "^1.7.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.2.1", + "semver": "^6.3.0" + }, + "dependencies": { + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + } + } + }, + "@babel/generator": { + "version": "7.20.4", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.20.4.tgz", + "integrity": "sha512-luCf7yk/cm7yab6CAW1aiFnmEfBJplb/JojV56MYEK7ziWfGmFlTfmL9Ehwfy4gFhbjBfWO1wj7/TuSbVNEEtA==", + "dev": true, + "requires": { + "@babel/types": "^7.20.2", + "@jridgewell/gen-mapping": "^0.3.2", + "jsesc": "^2.5.1" + }, + "dependencies": { + "@jridgewell/gen-mapping": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz", + "integrity": "sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==", + "dev": true, + "requires": { + "@jridgewell/set-array": "^1.0.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.9" + } + } + } + }, + "@babel/helper-compilation-targets": { + "version": "7.20.0", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.20.0.tgz", + "integrity": "sha512-0jp//vDGp9e8hZzBc6N/KwA5ZK3Wsm/pfm4CrY7vzegkVxc65SgSn6wYOnwHe9Js9HRQ1YTCKLGPzDtaS3RoLQ==", + "dev": true, + "requires": { + "@babel/compat-data": "^7.20.0", + "@babel/helper-validator-option": "^7.18.6", + "browserslist": "^4.21.3", + "semver": "^6.3.0" + }, + "dependencies": { + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + } + } + }, + "@babel/helper-environment-visitor": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.9.tgz", + "integrity": "sha512-3r/aACDJ3fhQ/EVgFy0hpj8oHyHpQc+LPtJoY9SzTThAsStm4Ptegq92vqKoE3vD706ZVFWITnMnxucw+S9Ipg==", + "dev": true + }, + "@babel/helper-function-name": { + "version": "7.19.0", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.19.0.tgz", + "integrity": "sha512-WAwHBINyrpqywkUH0nTnNgI5ina5TFn85HKS0pbPDfxFfhyR/aNQEn4hGi1P1JyT//I0t4OgXUlofzWILRvS5w==", + "dev": true, + "requires": { + "@babel/template": "^7.18.10", + "@babel/types": "^7.19.0" + } + }, + "@babel/helper-hoist-variables": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.18.6.tgz", + "integrity": "sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q==", + "dev": true, + "requires": { + "@babel/types": "^7.18.6" + } + }, + "@babel/helper-module-imports": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.18.6.tgz", + "integrity": "sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA==", + "dev": true, + "requires": { + "@babel/types": "^7.18.6" + } + }, + "@babel/helper-module-transforms": { + "version": "7.20.2", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.20.2.tgz", + "integrity": "sha512-zvBKyJXRbmK07XhMuujYoJ48B5yvvmM6+wcpv6Ivj4Yg6qO7NOZOSnvZN9CRl1zz1Z4cKf8YejmCMh8clOoOeA==", + "dev": true, + "requires": { + "@babel/helper-environment-visitor": "^7.18.9", + "@babel/helper-module-imports": "^7.18.6", + "@babel/helper-simple-access": "^7.20.2", + "@babel/helper-split-export-declaration": "^7.18.6", + "@babel/helper-validator-identifier": "^7.19.1", + "@babel/template": "^7.18.10", + "@babel/traverse": "^7.20.1", + "@babel/types": "^7.20.2" + } + }, + "@babel/helper-simple-access": { + "version": "7.20.2", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.20.2.tgz", + "integrity": "sha512-+0woI/WPq59IrqDYbVGfshjT5Dmk/nnbdpcF8SnMhhXObpTq2KNBdLFRFrkVdbDOyUmHBCxzm5FHV1rACIkIbA==", + "dev": true, + "requires": { + "@babel/types": "^7.20.2" + } + }, + "@babel/helper-split-export-declaration": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.18.6.tgz", + "integrity": "sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA==", + "dev": true, + "requires": { + "@babel/types": "^7.18.6" + } + }, + "@babel/helper-string-parser": { + "version": "7.19.4", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.19.4.tgz", + "integrity": "sha512-nHtDoQcuqFmwYNYPz3Rah5ph2p8PFeFCsZk9A/48dPc/rGocJ5J3hAAZ7pb76VWX3fZKu+uEr/FhH5jLx7umrw==", + "dev": true + }, + "@babel/helper-validator-identifier": { + "version": "7.19.1", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz", + "integrity": "sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==", + "dev": true + }, + "@babel/helper-validator-option": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.18.6.tgz", + "integrity": "sha512-XO7gESt5ouv/LRJdrVjkShckw6STTaB7l9BrpBaAHDeF5YZT+01PCwmR0SJHnkW6i8OwW/EVWRShfi4j2x+KQw==", + "dev": true + }, + "@babel/helpers": { + "version": "7.20.1", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.20.1.tgz", + "integrity": "sha512-J77mUVaDTUJFZ5BpP6mMn6OIl3rEWymk2ZxDBQJUG3P+PbmyMcF3bYWvz0ma69Af1oobDqT/iAsvzhB58xhQUg==", + "dev": true, + "requires": { + "@babel/template": "^7.18.10", + "@babel/traverse": "^7.20.1", + "@babel/types": "^7.20.0" + } + }, + "@babel/highlight": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.18.6.tgz", + "integrity": "sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.18.6", + "chalk": "^2.0.0", + "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==", + "dev": true, + "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==", + "dev": true, + "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==", + "dev": true, + "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==", + "dev": true + }, + "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 + }, + "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==", + "dev": true + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, "@babel/parser": { "version": "7.20.3", "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.20.3.tgz", "integrity": "sha512-OP/s5a94frIPXwjzEcv5S/tpQfc6XhxYUnmWpgdqMWGgYCuErA3SzozaRAMQgSZWKeTJxht9aWAkUY+0UzvOFg==" }, + "@babel/template": { + "version": "7.18.10", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.18.10.tgz", + "integrity": "sha512-TI+rCtooWHr3QJ27kJxfjutghu44DLnasDMwpDqCXVTal9RLp3RSYNh4NdBrRP2cQAoG9A8juOQl6P6oZG4JxA==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.18.6", + "@babel/parser": "^7.18.10", + "@babel/types": "^7.18.10" + } + }, + "@babel/traverse": { + "version": "7.20.1", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.20.1.tgz", + "integrity": "sha512-d3tN8fkVJwFLkHkBN479SOsw4DMZnz8cdbL/gvuDuzy3TS6Nfw80HuQqhw1pITbIruHyh7d1fMA47kWzmcUEGA==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.18.6", + "@babel/generator": "^7.20.1", + "@babel/helper-environment-visitor": "^7.18.9", + "@babel/helper-function-name": "^7.19.0", + "@babel/helper-hoist-variables": "^7.18.6", + "@babel/helper-split-export-declaration": "^7.18.6", + "@babel/parser": "^7.20.1", + "@babel/types": "^7.20.0", + "debug": "^4.1.0", + "globals": "^11.1.0" + } + }, + "@babel/types": { + "version": "7.20.2", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.20.2.tgz", + "integrity": "sha512-FnnvsNWgZCr232sqtXggapvlkk/tuwR/qhGzcmxI0GXLCjmPYQPzio2FbdlWuY6y1sHFfQKk+rRbUZ9VStQMog==", + "dev": true, + "requires": { + "@babel/helper-string-parser": "^7.19.4", + "@babel/helper-validator-identifier": "^7.19.1", + "to-fast-properties": "^2.0.0" + } + }, "@fastify/accept-negotiator": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/@fastify/accept-negotiator/-/accept-negotiator-1.0.0.tgz", @@ -2603,6 +6956,99 @@ } } }, + "@istanbuljs/load-nyc-config": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz", + "integrity": "sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==", + "dev": true, + "requires": { + "camelcase": "^5.3.1", + "find-up": "^4.1.0", + "get-package-type": "^0.1.0", + "js-yaml": "^3.13.1", + "resolve-from": "^5.0.0" + }, + "dependencies": { + "find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "requires": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + } + }, + "locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "requires": { + "p-locate": "^4.1.0" + } + }, + "p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "requires": { + "p-limit": "^2.2.0" + } + }, + "path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true + } + } + }, + "@istanbuljs/schema": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz", + "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==", + "dev": true + }, + "@jridgewell/gen-mapping": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.1.1.tgz", + "integrity": "sha512-sQXCasFk+U8lWYEe66WxRDOE9PjVz4vSM51fTu3Hw+ClTpUSQb718772vH3pyS5pShp6lvQM7SxgIDXXXmOX7w==", + "dev": true, + "requires": { + "@jridgewell/set-array": "^1.0.0", + "@jridgewell/sourcemap-codec": "^1.4.10" + } + }, + "@jridgewell/resolve-uri": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz", + "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==", + "dev": true + }, + "@jridgewell/set-array": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz", + "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==", + "dev": true + }, + "@jridgewell/sourcemap-codec": { + "version": "1.4.14", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz", + "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==", + "dev": true + }, + "@jridgewell/trace-mapping": { + "version": "0.3.17", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.17.tgz", + "integrity": "sha512-MCNzAp77qzKca9+W/+I0+sEpaUnZoeasnghNeVc41VZCEKaCH73Vq3BZZ/SzWIgrqE4H4ceI+p+b6C0mHf9T4g==", + "dev": true, + "requires": { + "@jridgewell/resolve-uri": "3.1.0", + "@jridgewell/sourcemap-codec": "1.4.14" + } + }, "@pdf-lib/standard-fonts": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/@pdf-lib/standard-fonts/-/standard-fonts-1.0.0.tgz", @@ -2656,6 +7102,16 @@ "resolved": "https://registry.npmjs.org/abstract-logging/-/abstract-logging-2.0.1.tgz", "integrity": "sha512-2BjRTZxTPvheOvGbBslFSYOUkr+SjPtOnrLP33f+VIWLzezQpZcqVg7ja3L4dBXmzzgwT+a029jRx5PCi3JuiA==" }, + "aggregate-error": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", + "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", + "dev": true, + "requires": { + "clean-stack": "^2.0.0", + "indent-string": "^4.0.0" + } + }, "ajv": { "version": "8.11.2", "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.11.2.tgz", @@ -2690,6 +7146,12 @@ } } }, + "ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true + }, "ansi-styles": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", @@ -2707,6 +7169,15 @@ "picomatch": "^2.0.4" } }, + "append-transform": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/append-transform/-/append-transform-2.0.0.tgz", + "integrity": "sha512-7yeyCEurROLQJFv5Xj4lEGTy0borxepjFv1g22oAdqFu//SrAlDl1O1Nxx15SH1RoliUml6p8dwJW9jvZughhg==", + "dev": true, + "requires": { + "default-require-extensions": "^3.0.0" + } + }, "archy": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/archy/-/archy-1.0.0.tgz", @@ -2727,6 +7198,12 @@ "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", "integrity": "sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==" }, + "async-hook-domain": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/async-hook-domain/-/async-hook-domain-2.0.4.tgz", + "integrity": "sha512-14LjCmlK1PK8eDtTezR6WX8TMaYNIzBIsd2D1sGoGjgx0BuNMMoSdk7i/drlbtamy0AWv9yv2tkB+ASdmeqFIw==", + "dev": true + }, "atomic-sleep": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/atomic-sleep/-/atomic-sleep-1.0.0.tgz", @@ -2757,6 +7234,12 @@ "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==" }, + "bind-obj-methods": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/bind-obj-methods/-/bind-obj-methods-3.0.0.tgz", + "integrity": "sha512-nLEaaz3/sEzNSyPWRsN9HNsqwk1AUyECtGj+XwGdIi3xABnEqecvXtIJ0wehQXuuER5uZ/5fTs2usONgYjG+iw==", + "dev": true + }, "bluebird": { "version": "3.7.2", "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", @@ -2778,6 +7261,18 @@ "fill-range": "^7.0.1" } }, + "browserslist": { + "version": "4.21.4", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.4.tgz", + "integrity": "sha512-CBHJJdDmgjl3daYjN5Cp5kbTf1mUhZoS+beLklHIvkOWscs83YAhLlF3Wsh/lciQYAcbBJgTOD44VtG31ZM4Hw==", + "dev": true, + "requires": { + "caniuse-lite": "^1.0.30001400", + "electron-to-chromium": "^1.4.251", + "node-releases": "^2.0.6", + "update-browserslist-db": "^1.0.9" + } + }, "buffer": { "version": "6.0.3", "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", @@ -2787,6 +7282,12 @@ "ieee754": "^1.2.1" } }, + "buffer-from": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", + "dev": true + }, "cache-point": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/cache-point/-/cache-point-2.0.0.tgz", @@ -2804,6 +7305,30 @@ } } }, + "caching-transform": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/caching-transform/-/caching-transform-4.0.0.tgz", + "integrity": "sha512-kpqOvwXnjjN44D89K5ccQC+RUrsy7jB/XLlRrx0D7/2HNcTPqzsb6XgYoErwko6QsV184CA2YgS1fxDiiDZMWA==", + "dev": true, + "requires": { + "hasha": "^5.0.0", + "make-dir": "^3.0.0", + "package-hash": "^4.0.0", + "write-file-atomic": "^3.0.0" + } + }, + "camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "dev": true + }, + "caniuse-lite": { + "version": "1.0.30001434", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001434.tgz", + "integrity": "sha512-aOBHrLmTQw//WFa2rcF1If9fa3ypkC1wzqqiKHgfdrXTWcU8C4gKVZT77eQAPWN1APys3+uQ0Df07rKauXGEYA==", + "dev": true + }, "catharsis": { "version": "0.9.0", "resolved": "https://registry.npmjs.org/catharsis/-/catharsis-0.9.0.tgz", @@ -2836,6 +7361,23 @@ "readdirp": "~3.6.0" } }, + "clean-stack": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", + "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", + "dev": true + }, + "cliui": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", + "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", + "dev": true, + "requires": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^7.0.0" + } + }, "close-with-grace": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/close-with-grace/-/close-with-grace-1.1.0.tgz", @@ -2863,6 +7405,12 @@ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" }, + "color-support": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz", + "integrity": "sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==", + "dev": true + }, "colorette": { "version": "2.0.19", "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.19.tgz", @@ -2949,6 +7497,12 @@ "resolved": "https://registry.npmjs.org/common-sequence/-/common-sequence-2.0.2.tgz", "integrity": "sha512-jAg09gkdkrDO9EWTdXfv80WWH3yeZl5oT69fGfedBNS9pXUKYInVJ1bJ+/ht2+Moeei48TmSbQDYMc8EOx9G0g==" }, + "commondir": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", + "integrity": "sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==", + "dev": true + }, "concat-map": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", @@ -2982,11 +7536,28 @@ "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==" }, + "convert-source-map": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", + "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==", + "dev": true + }, "cookie": { "version": "0.5.0", "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz", "integrity": "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==" }, + "cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dev": true, + "requires": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + } + }, "dateformat": { "version": "4.6.3", "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-4.6.3.tgz", @@ -3000,11 +7571,26 @@ "ms": "2.1.2" } }, + "decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==", + "dev": true + }, "deep-extend": { "version": "0.6.0", "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==" }, + "default-require-extensions": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/default-require-extensions/-/default-require-extensions-3.0.1.tgz", + "integrity": "sha512-eXTJmRbm2TIt9MgWTsOH1wEuhew6XGZcMeGKCtLedIg/NCsg1iBePXkceTdK4Fii7pzmN9tGsZhKzZ4h7O/fxw==", + "dev": true, + "requires": { + "strip-bom": "^4.0.0" + } + }, "depd": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", @@ -3015,6 +7601,12 @@ "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==" }, + "diff": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", + "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", + "dev": true + }, "dmd": { "version": "6.1.0", "resolved": "https://registry.npmjs.org/dmd/-/dmd-6.1.0.tgz", @@ -3044,6 +7636,18 @@ "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==" }, + "electron-to-chromium": { + "version": "1.4.284", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.284.tgz", + "integrity": "sha512-M8WEXFuKXMYMVr45fo8mq0wUrrJHheiKZf6BArTKk9ZBYCKJEOU5H8cdWgDT+qCVZf7Na4lVUaZsA+h6uA9+PA==", + "dev": true + }, + "emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true + }, "encodeurl": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", @@ -3062,6 +7666,18 @@ "resolved": "https://registry.npmjs.org/entities/-/entities-2.1.0.tgz", "integrity": "sha512-hCx1oky9PFrJ611mf0ifBLBRW8lUUVRlFolb5gWRfIELabBlbp9xZvrqZLZAs+NxFnbfQoeGd8wDkygjg7U85w==" }, + "es6-error": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/es6-error/-/es6-error-4.1.1.tgz", + "integrity": "sha512-Um/+FxMr9CISWh0bi5Zv0iOD+4cFh5qLeks1qhAopKVAJw3drgKbKySikp7wGhDL0HPeaja0P5ULZrxLkniUVg==", + "dev": true + }, + "escalade": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + "dev": true + }, "escape-html": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", @@ -3072,6 +7688,12 @@ "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz", "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==" }, + "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 + }, "etag": { "version": "1.8.1", "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", @@ -3087,6 +7709,12 @@ "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==" }, + "events-to-array": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/events-to-array/-/events-to-array-1.1.2.tgz", + "integrity": "sha512-inRWzRY7nG+aXZxBzEqYKB3HPgwflZRopAjDCHv0whhRx+MTUr1ei0ICZUypdyE0HRm4L2d5VEcIqLD6yl+BFA==", + "dev": true + }, "fast-copy": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/fast-copy/-/fast-copy-3.0.0.tgz", @@ -3256,6 +7884,17 @@ "to-regex-range": "^5.0.1" } }, + "find-cache-dir": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.2.tgz", + "integrity": "sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig==", + "dev": true, + "requires": { + "commondir": "^1.0.1", + "make-dir": "^3.0.2", + "pkg-dir": "^4.1.0" + } + }, "find-my-way": { "version": "7.3.1", "resolved": "https://registry.npmjs.org/find-my-way/-/find-my-way-7.3.1.tgz", @@ -3289,6 +7928,22 @@ "locate-path": "^3.0.0" } }, + "findit": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/findit/-/findit-2.0.0.tgz", + "integrity": "sha512-ENZS237/Hr8bjczn5eKuBohLgaD0JyUd0arxretR1f9RO46vZHA1b2y0VorgGV3WaOT3c+78P8h7v4JGJ1i/rg==", + "dev": true + }, + "foreground-child": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-2.0.0.tgz", + "integrity": "sha512-dCIq9FpEcyQyXKCkyzmlPTFNgrCzPudOe+mhvJU5zAtlBnGVy2yKxtfsxK2tQBThwq225jcvBjpw1Gr40uzZCA==", + "dev": true, + "requires": { + "cross-spawn": "^7.0.0", + "signal-exit": "^3.0.2" + } + }, "forwarded": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", @@ -3299,6 +7954,18 @@ "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==" }, + "fromentries": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/fromentries/-/fromentries-1.3.2.tgz", + "integrity": "sha512-cHEpEQHUg0f8XdtZCc2ZAhrHzKzT0MrFUTcvx+hfxYu7rGMDc5SKoXFh+n4YigxsHXRzc6OrCshdR1bWH6HHyg==", + "dev": true + }, + "fs-exists-cached": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs-exists-cached/-/fs-exists-cached-1.0.0.tgz", + "integrity": "sha512-kSxoARUDn4F2RPXX48UXnaFKwVU7Ivd/6qpzZL29MCDmr9sTvybv4gFCp+qaI4fM9m0z9fgz/yJvi56GAz+BZg==", + "dev": true + }, "fs-then-native": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/fs-then-native/-/fs-then-native-2.0.0.tgz", @@ -3315,6 +7982,12 @@ "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", "optional": true }, + "function-loop": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/function-loop/-/function-loop-2.0.1.tgz", + "integrity": "sha512-ktIR+O6i/4h+j/ZhZJNdzeI4i9lEPeEK6UPR2EVyTVBqOwcU3Za9xYKLH64ZR9HmcROyRrOkizNyjjtWJzDDkQ==", + "dev": true + }, "generify": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/generify/-/generify-4.2.0.tgz", @@ -3346,6 +8019,24 @@ } } }, + "gensync": { + "version": "1.0.0-beta.2", + "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", + "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", + "dev": true + }, + "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==", + "dev": true + }, + "get-package-type": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz", + "integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==", + "dev": true + }, "glob": { "version": "8.0.3", "resolved": "https://registry.npmjs.org/glob/-/glob-8.0.3.tgz", @@ -3366,6 +8057,12 @@ "is-glob": "^4.0.1" } }, + "globals": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", + "dev": true + }, "graceful-fs": { "version": "4.2.10", "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", @@ -3388,6 +8085,16 @@ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" }, + "hasha": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/hasha/-/hasha-5.2.2.tgz", + "integrity": "sha512-Hrp5vIK/xr5SkeN2onO32H0MgNZ0f17HRNH39WfL0SYUNOTZ5Lz1TJ8Pajo/87dYGEFlLMm7mIc/k/s6Bvz9HQ==", + "dev": true, + "requires": { + "is-stream": "^2.0.0", + "type-fest": "^0.8.0" + } + }, "help-me": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/help-me/-/help-me-4.1.0.tgz", @@ -3409,6 +8116,18 @@ } } }, + "html-escaper": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", + "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", + "dev": true + }, + "html-tags": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/html-tags/-/html-tags-3.2.0.tgz", + "integrity": "sha512-vy7ClnArOZwCnqZgvv+ddgHgJiAFXe3Ge9ML5/mBctVJoUoYPCdxVucOywjDARn6CVoh3dRSFdPHy2sX80L0Wg==", + "dev": true + }, "http-errors": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", @@ -3426,6 +8145,18 @@ "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==" }, + "imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", + "dev": true + }, + "indent-string": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", + "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", + "dev": true + }, "inflight": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", @@ -3463,6 +8194,12 @@ "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==" }, + "is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true + }, "is-glob": { "version": "4.0.3", "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", @@ -3471,21 +8208,179 @@ "is-extglob": "^2.1.1" } }, + "is-html": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-html/-/is-html-3.0.0.tgz", + "integrity": "sha512-LmdKtXjzmYi07R1wJA6ZJk/8Y+6J40x8zwsJT3VnhqgxJdRWwYWizpGjvdtA9PkeA57pjZYMbwm6IpPMSn4JNA==", + "dev": true, + "requires": { + "html-tags": "^3.1.0" + } + }, "is-number": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==" }, + "is-stream": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", + "dev": true + }, + "is-typedarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==", + "dev": true + }, + "is-windows": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", + "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", + "dev": true + }, "isbinaryfile": { "version": "4.0.10", "resolved": "https://registry.npmjs.org/isbinaryfile/-/isbinaryfile-4.0.10.tgz", "integrity": "sha512-iHrqe5shvBUcFbmZq9zOQHBoeOhZJu6RQGrDpBgenUm/Am+F3JM2MgQj+rK3Z601fzrL5gLZWtAPH2OBaSVcyw==" }, + "isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "dev": true + }, + "istanbul-lib-coverage": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.0.tgz", + "integrity": "sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw==", + "dev": true + }, + "istanbul-lib-hook": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-hook/-/istanbul-lib-hook-3.0.0.tgz", + "integrity": "sha512-Pt/uge1Q9s+5VAZ+pCo16TYMWPBIl+oaNIjgLQxcX0itS6ueeaA+pEfThZpH8WxhFgCiEb8sAJY6MdUKgiIWaQ==", + "dev": true, + "requires": { + "append-transform": "^2.0.0" + } + }, + "istanbul-lib-instrument": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-4.0.3.tgz", + "integrity": "sha512-BXgQl9kf4WTCPCCpmFGoJkz/+uhvm7h7PFKUYxh7qarQd3ER33vHG//qaE8eN25l07YqZPpHXU9I09l/RD5aGQ==", + "dev": true, + "requires": { + "@babel/core": "^7.7.5", + "@istanbuljs/schema": "^0.1.2", + "istanbul-lib-coverage": "^3.0.0", + "semver": "^6.3.0" + }, + "dependencies": { + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + } + } + }, + "istanbul-lib-processinfo": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/istanbul-lib-processinfo/-/istanbul-lib-processinfo-2.0.3.tgz", + "integrity": "sha512-NkwHbo3E00oybX6NGJi6ar0B29vxyvNwoC7eJ4G4Yq28UfY758Hgn/heV8VRFhevPED4LXfFz0DQ8z/0kw9zMg==", + "dev": true, + "requires": { + "archy": "^1.0.0", + "cross-spawn": "^7.0.3", + "istanbul-lib-coverage": "^3.2.0", + "p-map": "^3.0.0", + "rimraf": "^3.0.0", + "uuid": "^8.3.2" + }, + "dependencies": { + "uuid": { + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", + "dev": true + } + } + }, + "istanbul-lib-report": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz", + "integrity": "sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw==", + "dev": true, + "requires": { + "istanbul-lib-coverage": "^3.0.0", + "make-dir": "^3.0.0", + "supports-color": "^7.1.0" + } + }, + "istanbul-lib-source-maps": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz", + "integrity": "sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==", + "dev": true, + "requires": { + "debug": "^4.1.1", + "istanbul-lib-coverage": "^3.0.0", + "source-map": "^0.6.1" + } + }, + "istanbul-reports": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.5.tgz", + "integrity": "sha512-nUsEMa9pBt/NOHqbcbeJEgqIlY/K7rVWUX6Lql2orY5e9roQOthbR3vtY4zzf2orPELg80fnxxk9zUyPlgwD1w==", + "dev": true, + "requires": { + "html-escaper": "^2.0.0", + "istanbul-lib-report": "^3.0.0" + } + }, + "jackspeak": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-1.4.2.tgz", + "integrity": "sha512-GHeGTmnuaHnvS+ZctRB01bfxARuu9wW83ENbuiweu07SFcVlZrJpcshSre/keGT7YGBhLHg/+rXCNSrsEHKU4Q==", + "dev": true, + "requires": { + "cliui": "^7.0.4" + } + }, "joycon": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/joycon/-/joycon-3.1.1.tgz", "integrity": "sha512-34wB/Y7MW7bzjKRjUKTa46I2Z7eV62Rkhva+KkopW7Qvv/OSWBqvkSY7vusOPrNuZcUG3tApvdVgNB8POj3SPw==" }, + "js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "dev": true + }, + "js-yaml": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", + "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", + "dev": true, + "requires": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + }, + "dependencies": { + "argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dev": true, + "requires": { + "sprintf-js": "~1.0.2" + } + } + } + }, "js2xmlparser": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/js2xmlparser/-/js2xmlparser-4.0.2.tgz", @@ -3559,11 +8454,23 @@ "walk-back": "^5.1.0" } }, + "jsesc": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", + "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", + "dev": true + }, "json-schema-traverse": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==" }, + "json5": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.1.tgz", + "integrity": "sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA==", + "dev": true + }, "klaw": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/klaw/-/klaw-3.0.0.tgz", @@ -3572,6 +8479,27 @@ "graceful-fs": "^4.1.9" } }, + "libtap": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/libtap/-/libtap-1.4.0.tgz", + "integrity": "sha512-STLFynswQ2A6W14JkabgGetBNk6INL1REgJ9UeNKw5llXroC2cGLgKTqavv0sl8OLVztLLipVKMcQ7yeUcqpmg==", + "dev": true, + "requires": { + "async-hook-domain": "^2.0.4", + "bind-obj-methods": "^3.0.0", + "diff": "^4.0.2", + "function-loop": "^2.0.1", + "minipass": "^3.1.5", + "own-or": "^1.0.0", + "own-or-env": "^1.0.2", + "signal-exit": "^3.0.4", + "stack-utils": "^2.0.4", + "tap-parser": "^11.0.0", + "tap-yaml": "^1.0.0", + "tcompare": "^5.0.6", + "trivial-deferred": "^1.0.1" + } + }, "light-my-request": { "version": "5.6.1", "resolved": "https://registry.npmjs.org/light-my-request/-/light-my-request-5.6.1.tgz", @@ -3609,6 +8537,12 @@ "resolved": "https://registry.npmjs.org/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz", "integrity": "sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA==" }, + "lodash.flattendeep": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/lodash.flattendeep/-/lodash.flattendeep-4.4.0.tgz", + "integrity": "sha512-uHaJFihxmJcEX3kT4I23ABqKKalJ/zDrDg0lsFtc1h+3uw49SIJ5beyhx5ExVRti3AvKoOJngIj7xz3oylPdWQ==", + "dev": true + }, "lodash.omit": { "version": "4.5.0", "resolved": "https://registry.npmjs.org/lodash.omit/-/lodash.omit-4.5.0.tgz", @@ -3632,6 +8566,23 @@ "yallist": "^4.0.0" } }, + "make-dir": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", + "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", + "dev": true, + "requires": { + "semver": "^6.0.0" + }, + "dependencies": { + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + } + } + }, "make-promises-safe": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/make-promises-safe/-/make-promises-safe-5.1.0.tgz", @@ -3691,6 +8642,15 @@ "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.7.tgz", "integrity": "sha512-bzfL1YUZsP41gmu/qjrEk0Q6i2ix/cVeAhbCbqH9u3zYutS1cLg00qhrD0M2MVdCcx4Sc0UpP2eBWo9rotpq6g==" }, + "minipass": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "dev": true, + "requires": { + "yallist": "^4.0.0" + } + }, "mkdirp": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", @@ -3711,6 +8671,21 @@ "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==" }, + "node-preload": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/node-preload/-/node-preload-0.2.1.tgz", + "integrity": "sha512-RM5oyBy45cLEoHqCeh+MNuFAxO0vTFBLskvQbOKnEE7YTTSN4tbN8QWDIPQ6L+WvKsB/qLEGpYe2ZZ9d4W9OIQ==", + "dev": true, + "requires": { + "process-on-spawn": "^1.0.0" + } + }, + "node-releases": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.6.tgz", + "integrity": "sha512-PiVXnNuFm5+iYkLBNeq5211hvO38y63T0i2KKh2KnUs3RpzJ+JtODFjkD8yjLwnDkTYF1eKXheUwdssR+NRZdg==", + "dev": true + }, "normalize-path": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", @@ -3726,6 +8701,110 @@ "commander": "^5.1.0" } }, + "nyc": { + "version": "15.1.0", + "resolved": "https://registry.npmjs.org/nyc/-/nyc-15.1.0.tgz", + "integrity": "sha512-jMW04n9SxKdKi1ZMGhvUTHBN0EICCRkHemEoE5jm6mTYcqcdas0ATzgUgejlQUHMvpnOZqGB5Xxsv9KxJW1j8A==", + "dev": true, + "requires": { + "@istanbuljs/load-nyc-config": "^1.0.0", + "@istanbuljs/schema": "^0.1.2", + "caching-transform": "^4.0.0", + "convert-source-map": "^1.7.0", + "decamelize": "^1.2.0", + "find-cache-dir": "^3.2.0", + "find-up": "^4.1.0", + "foreground-child": "^2.0.0", + "get-package-type": "^0.1.0", + "glob": "^7.1.6", + "istanbul-lib-coverage": "^3.0.0", + "istanbul-lib-hook": "^3.0.0", + "istanbul-lib-instrument": "^4.0.0", + "istanbul-lib-processinfo": "^2.0.2", + "istanbul-lib-report": "^3.0.0", + "istanbul-lib-source-maps": "^4.0.0", + "istanbul-reports": "^3.0.2", + "make-dir": "^3.0.0", + "node-preload": "^0.2.1", + "p-map": "^3.0.0", + "process-on-spawn": "^1.0.0", + "resolve-from": "^5.0.0", + "rimraf": "^3.0.0", + "signal-exit": "^3.0.2", + "spawn-wrap": "^2.0.0", + "test-exclude": "^6.0.0", + "yargs": "^15.0.2" + }, + "dependencies": { + "brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "requires": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + } + }, + "glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "requires": { + "p-locate": "^4.1.0" + } + }, + "minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "requires": { + "p-limit": "^2.2.0" + } + }, + "path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true + } + } + }, "object-get": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/object-get/-/object-get-2.1.1.tgz", @@ -3757,6 +8836,27 @@ "wrappy": "1" } }, + "opener": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/opener/-/opener-1.5.2.tgz", + "integrity": "sha512-ur5UIdyw5Y7yEj9wLzhqXiy6GZ3Mwx0yGI+5sMn2r0N0v3cKJvUmFH5yPP+WXh9e0xfyzyJX95D8l088DNFj7A==", + "dev": true + }, + "own-or": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/own-or/-/own-or-1.0.0.tgz", + "integrity": "sha512-NfZr5+Tdf6MB8UI9GLvKRs4cXY8/yB0w3xtt84xFdWy8hkGjn+JFc60VhzS/hFRfbyxFcGYMTjnF4Me+RbbqrA==", + "dev": true + }, + "own-or-env": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/own-or-env/-/own-or-env-1.0.2.tgz", + "integrity": "sha512-NQ7v0fliWtK7Lkb+WdFqe6ky9XAzYmlkXthQrBbzlYbmFKoAYbDDcwmOm6q8kOuwSRXW8bdL5ORksploUJmWgw==", + "dev": true, + "requires": { + "own-or": "^1.0.0" + } + }, "p-limit": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", @@ -3773,11 +8873,32 @@ "p-limit": "^2.0.0" } }, + "p-map": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-3.0.0.tgz", + "integrity": "sha512-d3qXVTF/s+W+CdJ5A29wywV2n8CQQYahlgz2bFiA+4eVNJbHJodPZ+/gXwPGh0bOqA+j8S+6+ckmvLGPk1QpxQ==", + "dev": true, + "requires": { + "aggregate-error": "^3.0.0" + } + }, "p-try": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==" }, + "package-hash": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/package-hash/-/package-hash-4.0.0.tgz", + "integrity": "sha512-whdkPIooSu/bASggZ96BWVvZTRMOFxnyUG5PnTSGKoJE2gd5mbVNmR2Nj20QFzxYYgAXpoqC+AiXzl+UMRh7zQ==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.15", + "hasha": "^5.0.0", + "lodash.flattendeep": "^4.4.0", + "release-zalgo": "^1.0.0" + } + }, "pako": { "version": "1.0.11", "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", @@ -3793,6 +8914,12 @@ "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==" }, + "path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true + }, "pdf-lib": { "version": "1.17.1", "resolved": "https://registry.npmjs.org/pdf-lib/-/pdf-lib-1.17.1.tgz", @@ -3804,6 +8931,12 @@ "tslib": "^1.11.1" } }, + "picocolors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", + "dev": true + }, "picomatch": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", @@ -3862,6 +8995,51 @@ "resolved": "https://registry.npmjs.org/pino-std-serializers/-/pino-std-serializers-6.0.0.tgz", "integrity": "sha512-mMMOwSKrmyl+Y12Ri2xhH1lbzQxwwpuru9VjyJpgFIH4asSj88F2csdMwN6+M5g1Ll4rmsYghHLQJw81tgZ7LQ==" }, + "pkg-dir": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", + "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", + "dev": true, + "requires": { + "find-up": "^4.0.0" + }, + "dependencies": { + "find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "requires": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + } + }, + "locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "requires": { + "p-locate": "^4.1.0" + } + }, + "p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "requires": { + "p-limit": "^2.2.0" + } + }, + "path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true + } + } + }, "pkg-up": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/pkg-up/-/pkg-up-3.1.0.tgz", @@ -3888,6 +9066,15 @@ "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", "integrity": "sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==" }, + "process-on-spawn": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/process-on-spawn/-/process-on-spawn-1.0.0.tgz", + "integrity": "sha512-1WsPDsUSMmZH5LeMLegqkPDrsGgsWwk1Exipy2hvB0o/F0ASzbpIctSCcZIK1ykJvtTJULEH+20WOFjMvGnCTg==", + "dev": true, + "requires": { + "fromentries": "^1.2.0" + } + }, "process-warning": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/process-warning/-/process-warning-2.0.0.tgz", @@ -4014,11 +9201,32 @@ } } }, + "release-zalgo": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/release-zalgo/-/release-zalgo-1.0.0.tgz", + "integrity": "sha512-gUAyHVHPPC5wdqX/LG4LWtRYtgjxyX78oanFNTMMyFEfOqdC54s3eE82imuWKbOeqYht2CrNf64Qb8vgmmtZGA==", + "dev": true, + "requires": { + "es6-error": "^4.0.1" + } + }, + "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==", + "dev": true + }, "require-from-string": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==" }, + "require-main-filename": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", + "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==", + "dev": true + }, "requizzle": { "version": "0.2.3", "resolved": "https://registry.npmjs.org/requizzle/-/requizzle-0.2.3.tgz", @@ -4047,6 +9255,50 @@ "resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.3.0.tgz", "integrity": "sha512-V2hovdzFbOi77/WajaSMXk2OLm+xNIeQdMMuB7icj7bk6zi2F8GGAxigcnDFpJHbNyNcgyJDiP+8nOrY5cZGrA==" }, + "rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "dev": true, + "requires": { + "glob": "^7.1.3" + }, + "dependencies": { + "brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "requires": { + "brace-expansion": "^1.1.7" + } + } + } + }, "safe-buffer": { "version": "5.2.1", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", @@ -4120,6 +9372,12 @@ } } }, + "set-blocking": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==", + "dev": true + }, "set-cookie-parser": { "version": "2.5.1", "resolved": "https://registry.npmjs.org/set-cookie-parser/-/set-cookie-parser-2.5.1.tgz", @@ -4130,6 +9388,27 @@ "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==" }, + "shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "requires": { + "shebang-regex": "^3.0.0" + } + }, + "shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true + }, + "signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", + "dev": true + }, "sonic-boom": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/sonic-boom/-/sonic-boom-3.2.0.tgz", @@ -4164,11 +9443,50 @@ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" }, + "source-map-support": { + "version": "0.5.21", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", + "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", + "dev": true, + "requires": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "spawn-wrap": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/spawn-wrap/-/spawn-wrap-2.0.0.tgz", + "integrity": "sha512-EeajNjfN9zMnULLwhZZQU3GWBoFNkbngTUPfaawT4RkMiviTxcX0qfhVbGey39mfctfDHkWtuecgQ8NJcyQWHg==", + "dev": true, + "requires": { + "foreground-child": "^2.0.0", + "is-windows": "^1.0.2", + "make-dir": "^3.0.0", + "rimraf": "^3.0.0", + "signal-exit": "^3.0.2", + "which": "^2.0.1" + } + }, "split2": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/split2/-/split2-4.1.0.tgz", "integrity": "sha512-VBiJxFkxiXRlUIeyMQi8s4hgvKCSjtknJv/LVYbrgALPwf5zSKmEwV9Lst25AkvMDnvxODugjdl6KZgwKM1WYQ==" }, + "sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", + "dev": true + }, + "stack-utils": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.6.tgz", + "integrity": "sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==", + "dev": true, + "requires": { + "escape-string-regexp": "^2.0.0" + } + }, "statuses": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", @@ -4205,6 +9523,32 @@ "safe-buffer": "~5.2.0" } }, + "string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + } + }, + "strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "requires": { + "ansi-regex": "^5.0.1" + } + }, + "strip-bom": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz", + "integrity": "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==", + "dev": true + }, "strip-json-comments": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", @@ -4245,11 +9589,1395 @@ "resolved": "https://registry.npmjs.org/taffydb/-/taffydb-2.6.2.tgz", "integrity": "sha512-y3JaeRSplks6NYQuCOj3ZFMO3j60rTwbuKCvZxsAraGYH2epusatvZ0baZYA01WsGqJBq/Dl6vOrMUJqyMj8kA==" }, + "tap": { + "version": "16.3.2", + "resolved": "https://registry.npmjs.org/tap/-/tap-16.3.2.tgz", + "integrity": "sha512-4MWMObR8unbv5gAHHVW9F0MNk3opQMnLusSWvt4KBAnKmkwpBRKIfNF64fimQbcR4y9a7U9ISV7pCldlV3J8Pw==", + "dev": true, + "requires": { + "@isaacs/import-jsx": "^4.0.1", + "@types/react": "^17.0.52", + "chokidar": "^3.3.0", + "findit": "^2.0.0", + "foreground-child": "^2.0.0", + "fs-exists-cached": "^1.0.0", + "glob": "^7.2.3", + "ink": "^3.2.0", + "isexe": "^2.0.0", + "istanbul-lib-processinfo": "^2.0.3", + "jackspeak": "^1.4.2", + "libtap": "^1.4.0", + "minipass": "^3.3.4", + "mkdirp": "^1.0.4", + "nyc": "^15.1.0", + "opener": "^1.5.1", + "react": "^17.0.2", + "rimraf": "^3.0.0", + "signal-exit": "^3.0.6", + "source-map-support": "^0.5.16", + "tap-mocha-reporter": "^5.0.3", + "tap-parser": "^11.0.2", + "tap-yaml": "^1.0.2", + "tcompare": "^5.0.7", + "treport": "^3.0.4", + "which": "^2.0.2" + }, + "dependencies": { + "@ampproject/remapping": { + "version": "2.1.2", + "bundled": true, + "dev": true, + "requires": { + "@jridgewell/trace-mapping": "^0.3.0" + } + }, + "@babel/code-frame": { + "version": "7.16.7", + "bundled": true, + "dev": true, + "requires": { + "@babel/highlight": "^7.16.7" + } + }, + "@babel/compat-data": { + "version": "7.17.7", + "bundled": true, + "dev": true + }, + "@babel/core": { + "version": "7.17.8", + "bundled": true, + "dev": true, + "requires": { + "@ampproject/remapping": "^2.1.0", + "@babel/code-frame": "^7.16.7", + "@babel/generator": "^7.17.7", + "@babel/helper-compilation-targets": "^7.17.7", + "@babel/helper-module-transforms": "^7.17.7", + "@babel/helpers": "^7.17.8", + "@babel/parser": "^7.17.8", + "@babel/template": "^7.16.7", + "@babel/traverse": "^7.17.3", + "@babel/types": "^7.17.0", + "convert-source-map": "^1.7.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.1.2", + "semver": "^6.3.0" + } + }, + "@babel/generator": { + "version": "7.17.7", + "bundled": true, + "dev": true, + "requires": { + "@babel/types": "^7.17.0", + "jsesc": "^2.5.1", + "source-map": "^0.5.0" + } + }, + "@babel/helper-annotate-as-pure": { + "version": "7.16.7", + "bundled": true, + "dev": true, + "requires": { + "@babel/types": "^7.16.7" + } + }, + "@babel/helper-compilation-targets": { + "version": "7.17.7", + "bundled": true, + "dev": true, + "requires": { + "@babel/compat-data": "^7.17.7", + "@babel/helper-validator-option": "^7.16.7", + "browserslist": "^4.17.5", + "semver": "^6.3.0" + } + }, + "@babel/helper-environment-visitor": { + "version": "7.16.7", + "bundled": true, + "dev": true, + "requires": { + "@babel/types": "^7.16.7" + } + }, + "@babel/helper-function-name": { + "version": "7.16.7", + "bundled": true, + "dev": true, + "requires": { + "@babel/helper-get-function-arity": "^7.16.7", + "@babel/template": "^7.16.7", + "@babel/types": "^7.16.7" + } + }, + "@babel/helper-get-function-arity": { + "version": "7.16.7", + "bundled": true, + "dev": true, + "requires": { + "@babel/types": "^7.16.7" + } + }, + "@babel/helper-hoist-variables": { + "version": "7.16.7", + "bundled": true, + "dev": true, + "requires": { + "@babel/types": "^7.16.7" + } + }, + "@babel/helper-module-imports": { + "version": "7.16.7", + "bundled": true, + "dev": true, + "requires": { + "@babel/types": "^7.16.7" + } + }, + "@babel/helper-module-transforms": { + "version": "7.17.7", + "bundled": true, + "dev": true, + "requires": { + "@babel/helper-environment-visitor": "^7.16.7", + "@babel/helper-module-imports": "^7.16.7", + "@babel/helper-simple-access": "^7.17.7", + "@babel/helper-split-export-declaration": "^7.16.7", + "@babel/helper-validator-identifier": "^7.16.7", + "@babel/template": "^7.16.7", + "@babel/traverse": "^7.17.3", + "@babel/types": "^7.17.0" + } + }, + "@babel/helper-plugin-utils": { + "version": "7.16.7", + "bundled": true, + "dev": true + }, + "@babel/helper-simple-access": { + "version": "7.17.7", + "bundled": true, + "dev": true, + "requires": { + "@babel/types": "^7.17.0" + } + }, + "@babel/helper-split-export-declaration": { + "version": "7.16.7", + "bundled": true, + "dev": true, + "requires": { + "@babel/types": "^7.16.7" + } + }, + "@babel/helper-validator-identifier": { + "version": "7.16.7", + "bundled": true, + "dev": true + }, + "@babel/helper-validator-option": { + "version": "7.16.7", + "bundled": true, + "dev": true + }, + "@babel/helpers": { + "version": "7.17.8", + "bundled": true, + "dev": true, + "requires": { + "@babel/template": "^7.16.7", + "@babel/traverse": "^7.17.3", + "@babel/types": "^7.17.0" + } + }, + "@babel/highlight": { + "version": "7.16.10", + "bundled": true, + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.16.7", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" + } + }, + "@babel/parser": { + "version": "7.17.8", + "bundled": true, + "dev": true + }, + "@babel/plugin-proposal-object-rest-spread": { + "version": "7.17.3", + "bundled": true, + "dev": true, + "requires": { + "@babel/compat-data": "^7.17.0", + "@babel/helper-compilation-targets": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-transform-parameters": "^7.16.7" + } + }, + "@babel/plugin-syntax-jsx": { + "version": "7.16.7", + "bundled": true, + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.16.7" + } + }, + "@babel/plugin-syntax-object-rest-spread": { + "version": "7.8.3", + "bundled": true, + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-transform-destructuring": { + "version": "7.17.7", + "bundled": true, + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.16.7" + } + }, + "@babel/plugin-transform-parameters": { + "version": "7.16.7", + "bundled": true, + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.16.7" + } + }, + "@babel/plugin-transform-react-jsx": { + "version": "7.17.3", + "bundled": true, + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.16.7", + "@babel/helper-module-imports": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/plugin-syntax-jsx": "^7.16.7", + "@babel/types": "^7.17.0" + } + }, + "@babel/template": { + "version": "7.16.7", + "bundled": true, + "dev": true, + "requires": { + "@babel/code-frame": "^7.16.7", + "@babel/parser": "^7.16.7", + "@babel/types": "^7.16.7" + } + }, + "@babel/traverse": { + "version": "7.17.3", + "bundled": true, + "dev": true, + "requires": { + "@babel/code-frame": "^7.16.7", + "@babel/generator": "^7.17.3", + "@babel/helper-environment-visitor": "^7.16.7", + "@babel/helper-function-name": "^7.16.7", + "@babel/helper-hoist-variables": "^7.16.7", + "@babel/helper-split-export-declaration": "^7.16.7", + "@babel/parser": "^7.17.3", + "@babel/types": "^7.17.0", + "debug": "^4.1.0", + "globals": "^11.1.0" + } + }, + "@babel/types": { + "version": "7.17.0", + "bundled": true, + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.16.7", + "to-fast-properties": "^2.0.0" + } + }, + "@isaacs/import-jsx": { + "version": "4.0.1", + "bundled": true, + "dev": true, + "requires": { + "@babel/core": "^7.5.5", + "@babel/plugin-proposal-object-rest-spread": "^7.5.5", + "@babel/plugin-transform-destructuring": "^7.5.0", + "@babel/plugin-transform-react-jsx": "^7.3.0", + "caller-path": "^3.0.1", + "find-cache-dir": "^3.2.0", + "make-dir": "^3.0.2", + "resolve-from": "^3.0.0", + "rimraf": "^3.0.0" + } + }, + "@jridgewell/resolve-uri": { + "version": "3.0.5", + "bundled": true, + "dev": true + }, + "@jridgewell/sourcemap-codec": { + "version": "1.4.11", + "bundled": true, + "dev": true + }, + "@jridgewell/trace-mapping": { + "version": "0.3.4", + "bundled": true, + "dev": true, + "requires": { + "@jridgewell/resolve-uri": "^3.0.3", + "@jridgewell/sourcemap-codec": "^1.4.10" + } + }, + "@types/prop-types": { + "version": "15.7.4", + "bundled": true, + "dev": true + }, + "@types/react": { + "version": "17.0.52", + "bundled": true, + "dev": true, + "requires": { + "@types/prop-types": "*", + "@types/scheduler": "*", + "csstype": "^3.0.2" + } + }, + "@types/scheduler": { + "version": "0.16.2", + "bundled": true, + "dev": true + }, + "@types/yoga-layout": { + "version": "1.9.2", + "bundled": true, + "dev": true + }, + "ansi-escapes": { + "version": "4.3.2", + "bundled": true, + "dev": true, + "requires": { + "type-fest": "^0.21.3" + }, + "dependencies": { + "type-fest": { + "version": "0.21.3", + "bundled": true, + "dev": true + } + } + }, + "ansi-regex": { + "version": "5.0.1", + "bundled": true, + "dev": true + }, + "ansi-styles": { + "version": "3.2.1", + "bundled": true, + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "ansicolors": { + "version": "0.3.2", + "bundled": true, + "dev": true + }, + "astral-regex": { + "version": "2.0.0", + "bundled": true, + "dev": true + }, + "auto-bind": { + "version": "4.0.0", + "bundled": true, + "dev": true + }, + "balanced-match": { + "version": "1.0.2", + "bundled": true, + "dev": true + }, + "brace-expansion": { + "version": "1.1.11", + "bundled": true, + "dev": true, + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "browserslist": { + "version": "4.20.2", + "bundled": true, + "dev": true, + "requires": { + "caniuse-lite": "^1.0.30001317", + "electron-to-chromium": "^1.4.84", + "escalade": "^3.1.1", + "node-releases": "^2.0.2", + "picocolors": "^1.0.0" + } + }, + "caller-callsite": { + "version": "4.1.0", + "bundled": true, + "dev": true, + "requires": { + "callsites": "^3.1.0" + } + }, + "caller-path": { + "version": "3.0.1", + "bundled": true, + "dev": true, + "requires": { + "caller-callsite": "^4.1.0" + } + }, + "callsites": { + "version": "3.1.0", + "bundled": true, + "dev": true + }, + "caniuse-lite": { + "version": "1.0.30001319", + "bundled": true, + "dev": true + }, + "cardinal": { + "version": "2.1.1", + "bundled": true, + "dev": true, + "requires": { + "ansicolors": "~0.3.2", + "redeyed": "~2.1.0" + } + }, + "chalk": { + "version": "2.4.2", + "bundled": true, + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "ci-info": { + "version": "2.0.0", + "bundled": true, + "dev": true + }, + "cli-boxes": { + "version": "2.2.1", + "bundled": true, + "dev": true + }, + "cli-cursor": { + "version": "3.1.0", + "bundled": true, + "dev": true, + "requires": { + "restore-cursor": "^3.1.0" + } + }, + "cli-truncate": { + "version": "2.1.0", + "bundled": true, + "dev": true, + "requires": { + "slice-ansi": "^3.0.0", + "string-width": "^4.2.0" + } + }, + "code-excerpt": { + "version": "3.0.0", + "bundled": true, + "dev": true, + "requires": { + "convert-to-spaces": "^1.0.1" + } + }, + "color-convert": { + "version": "1.9.3", + "bundled": true, + "dev": true, + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "bundled": true, + "dev": true + }, + "commondir": { + "version": "1.0.1", + "bundled": true, + "dev": true + }, + "concat-map": { + "version": "0.0.1", + "bundled": true, + "dev": true + }, + "convert-source-map": { + "version": "1.8.0", + "bundled": true, + "dev": true, + "requires": { + "safe-buffer": "~5.1.1" + } + }, + "convert-to-spaces": { + "version": "1.0.2", + "bundled": true, + "dev": true + }, + "csstype": { + "version": "3.0.11", + "bundled": true, + "dev": true + }, + "debug": { + "version": "4.3.4", + "bundled": true, + "dev": true, + "requires": { + "ms": "2.1.2" + } + }, + "electron-to-chromium": { + "version": "1.4.89", + "bundled": true, + "dev": true + }, + "emoji-regex": { + "version": "8.0.0", + "bundled": true, + "dev": true + }, + "escalade": { + "version": "3.1.1", + "bundled": true, + "dev": true + }, + "escape-string-regexp": { + "version": "1.0.5", + "bundled": true, + "dev": true + }, + "esprima": { + "version": "4.0.1", + "bundled": true, + "dev": true + }, + "events-to-array": { + "version": "1.1.2", + "bundled": true, + "dev": true + }, + "find-cache-dir": { + "version": "3.3.2", + "bundled": true, + "dev": true, + "requires": { + "commondir": "^1.0.1", + "make-dir": "^3.0.2", + "pkg-dir": "^4.1.0" + } + }, + "find-up": { + "version": "4.1.0", + "bundled": true, + "dev": true, + "requires": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + } + }, + "fs.realpath": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "gensync": { + "version": "1.0.0-beta.2", + "bundled": true, + "dev": true + }, + "glob": { + "version": "7.2.3", + "bundled": true, + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "globals": { + "version": "11.12.0", + "bundled": true, + "dev": true + }, + "has-flag": { + "version": "3.0.0", + "bundled": true, + "dev": true + }, + "indent-string": { + "version": "4.0.0", + "bundled": true, + "dev": true + }, + "inflight": { + "version": "1.0.6", + "bundled": true, + "dev": true, + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.4", + "bundled": true, + "dev": true + }, + "ink": { + "version": "3.2.0", + "bundled": true, + "dev": true, + "requires": { + "ansi-escapes": "^4.2.1", + "auto-bind": "4.0.0", + "chalk": "^4.1.0", + "cli-boxes": "^2.2.0", + "cli-cursor": "^3.1.0", + "cli-truncate": "^2.1.0", + "code-excerpt": "^3.0.0", + "indent-string": "^4.0.0", + "is-ci": "^2.0.0", + "lodash": "^4.17.20", + "patch-console": "^1.0.0", + "react-devtools-core": "^4.19.1", + "react-reconciler": "^0.26.2", + "scheduler": "^0.20.2", + "signal-exit": "^3.0.2", + "slice-ansi": "^3.0.0", + "stack-utils": "^2.0.2", + "string-width": "^4.2.2", + "type-fest": "^0.12.0", + "widest-line": "^3.1.0", + "wrap-ansi": "^6.2.0", + "ws": "^7.5.5", + "yoga-layout-prebuilt": "^1.9.6" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "bundled": true, + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "bundled": true, + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "bundled": true, + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "bundled": true, + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "bundled": true, + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "bundled": true, + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "is-ci": { + "version": "2.0.0", + "bundled": true, + "dev": true, + "requires": { + "ci-info": "^2.0.0" + } + }, + "is-fullwidth-code-point": { + "version": "3.0.0", + "bundled": true, + "dev": true + }, + "js-tokens": { + "version": "4.0.0", + "bundled": true, + "dev": true + }, + "jsesc": { + "version": "2.5.2", + "bundled": true, + "dev": true + }, + "json5": { + "version": "2.2.1", + "bundled": true, + "dev": true + }, + "locate-path": { + "version": "5.0.0", + "bundled": true, + "dev": true, + "requires": { + "p-locate": "^4.1.0" + } + }, + "lodash": { + "version": "4.17.21", + "bundled": true, + "dev": true + }, + "loose-envify": { + "version": "1.4.0", + "bundled": true, + "dev": true, + "requires": { + "js-tokens": "^3.0.0 || ^4.0.0" + } + }, + "make-dir": { + "version": "3.1.0", + "bundled": true, + "dev": true, + "requires": { + "semver": "^6.0.0" + } + }, + "mimic-fn": { + "version": "2.1.0", + "bundled": true, + "dev": true + }, + "minimatch": { + "version": "3.1.2", + "bundled": true, + "dev": true, + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "minipass": { + "version": "3.3.4", + "bundled": true, + "dev": true, + "requires": { + "yallist": "^4.0.0" + } + }, + "ms": { + "version": "2.1.2", + "bundled": true, + "dev": true + }, + "node-releases": { + "version": "2.0.2", + "bundled": true, + "dev": true + }, + "object-assign": { + "version": "4.1.1", + "bundled": true, + "dev": true + }, + "once": { + "version": "1.4.0", + "bundled": true, + "dev": true, + "requires": { + "wrappy": "1" + } + }, + "onetime": { + "version": "5.1.2", + "bundled": true, + "dev": true, + "requires": { + "mimic-fn": "^2.1.0" + } + }, + "p-limit": { + "version": "2.3.0", + "bundled": true, + "dev": true, + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "4.1.0", + "bundled": true, + "dev": true, + "requires": { + "p-limit": "^2.2.0" + } + }, + "p-try": { + "version": "2.2.0", + "bundled": true, + "dev": true + }, + "patch-console": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "path-exists": { + "version": "4.0.0", + "bundled": true, + "dev": true + }, + "path-is-absolute": { + "version": "1.0.1", + "bundled": true, + "dev": true + }, + "picocolors": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "pkg-dir": { + "version": "4.2.0", + "bundled": true, + "dev": true, + "requires": { + "find-up": "^4.0.0" + } + }, + "punycode": { + "version": "2.1.1", + "bundled": true, + "dev": true + }, + "react": { + "version": "17.0.2", + "bundled": true, + "dev": true, + "requires": { + "loose-envify": "^1.1.0", + "object-assign": "^4.1.1" + } + }, + "react-devtools-core": { + "version": "4.24.1", + "bundled": true, + "dev": true, + "requires": { + "shell-quote": "^1.6.1", + "ws": "^7" + } + }, + "react-reconciler": { + "version": "0.26.2", + "bundled": true, + "dev": true, + "requires": { + "loose-envify": "^1.1.0", + "object-assign": "^4.1.1", + "scheduler": "^0.20.2" + } + }, + "redeyed": { + "version": "2.1.1", + "bundled": true, + "dev": true, + "requires": { + "esprima": "~4.0.0" + } + }, + "resolve-from": { + "version": "3.0.0", + "bundled": true, + "dev": true + }, + "restore-cursor": { + "version": "3.1.0", + "bundled": true, + "dev": true, + "requires": { + "onetime": "^5.1.0", + "signal-exit": "^3.0.2" + } + }, + "rimraf": { + "version": "3.0.2", + "bundled": true, + "dev": true, + "requires": { + "glob": "^7.1.3" + } + }, + "safe-buffer": { + "version": "5.1.2", + "bundled": true, + "dev": true + }, + "scheduler": { + "version": "0.20.2", + "bundled": true, + "dev": true, + "requires": { + "loose-envify": "^1.1.0", + "object-assign": "^4.1.1" + } + }, + "semver": { + "version": "6.3.0", + "bundled": true, + "dev": true + }, + "shell-quote": { + "version": "1.7.3", + "bundled": true, + "dev": true + }, + "signal-exit": { + "version": "3.0.7", + "bundled": true, + "dev": true + }, + "slice-ansi": { + "version": "3.0.0", + "bundled": true, + "dev": true, + "requires": { + "ansi-styles": "^4.0.0", + "astral-regex": "^2.0.0", + "is-fullwidth-code-point": "^3.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "bundled": true, + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "color-convert": { + "version": "2.0.1", + "bundled": true, + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "bundled": true, + "dev": true + } + } + }, + "source-map": { + "version": "0.5.7", + "bundled": true, + "dev": true + }, + "stack-utils": { + "version": "2.0.5", + "bundled": true, + "dev": true, + "requires": { + "escape-string-regexp": "^2.0.0" + }, + "dependencies": { + "escape-string-regexp": { + "version": "2.0.0", + "bundled": true, + "dev": true + } + } + }, + "string-width": { + "version": "4.2.3", + "bundled": true, + "dev": true, + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + } + }, + "strip-ansi": { + "version": "6.0.1", + "bundled": true, + "dev": true, + "requires": { + "ansi-regex": "^5.0.1" + } + }, + "supports-color": { + "version": "5.5.0", + "bundled": true, + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + }, + "tap-parser": { + "version": "11.0.2", + "bundled": true, + "dev": true, + "requires": { + "events-to-array": "^1.0.1", + "minipass": "^3.1.6", + "tap-yaml": "^1.0.0" + } + }, + "tap-yaml": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "requires": { + "yaml": "^1.10.2" + } + }, + "to-fast-properties": { + "version": "2.0.0", + "bundled": true, + "dev": true + }, + "treport": { + "version": "3.0.4", + "bundled": true, + "dev": true, + "requires": { + "@isaacs/import-jsx": "^4.0.1", + "cardinal": "^2.1.1", + "chalk": "^3.0.0", + "ink": "^3.2.0", + "ms": "^2.1.2", + "tap-parser": "^11.0.0", + "tap-yaml": "^1.0.0", + "unicode-length": "^2.0.2" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "bundled": true, + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "3.0.0", + "bundled": true, + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "bundled": true, + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "bundled": true, + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "bundled": true, + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "bundled": true, + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "type-fest": { + "version": "0.12.0", + "bundled": true, + "dev": true + }, + "unicode-length": { + "version": "2.0.2", + "bundled": true, + "dev": true, + "requires": { + "punycode": "^2.0.0", + "strip-ansi": "^3.0.1" + }, + "dependencies": { + "ansi-regex": { + "version": "2.1.1", + "bundled": true, + "dev": true + }, + "strip-ansi": { + "version": "3.0.1", + "bundled": true, + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + } + } + } + }, + "widest-line": { + "version": "3.1.0", + "bundled": true, + "dev": true, + "requires": { + "string-width": "^4.0.0" + } + }, + "wrap-ansi": { + "version": "6.2.0", + "bundled": true, + "dev": true, + "requires": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "bundled": true, + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "color-convert": { + "version": "2.0.1", + "bundled": true, + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "bundled": true, + "dev": true + } + } + }, + "wrappy": { + "version": "1.0.2", + "bundled": true, + "dev": true + }, + "ws": { + "version": "7.5.7", + "bundled": true, + "dev": true, + "requires": {} + }, + "yallist": { + "version": "4.0.0", + "bundled": true, + "dev": true + }, + "yaml": { + "version": "1.10.2", + "bundled": true, + "dev": true + }, + "yoga-layout-prebuilt": { + "version": "1.10.0", + "bundled": true, + "dev": true, + "requires": { + "@types/yoga-layout": "1.9.2" + } + } + } + }, + "tap-mocha-reporter": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/tap-mocha-reporter/-/tap-mocha-reporter-5.0.3.tgz", + "integrity": "sha512-6zlGkaV4J+XMRFkN0X+yuw6xHbE9jyCZ3WUKfw4KxMyRGOpYSRuuQTRJyWX88WWuLdVTuFbxzwXhXuS2XE6o0g==", + "dev": true, + "requires": { + "color-support": "^1.1.0", + "debug": "^4.1.1", + "diff": "^4.0.1", + "escape-string-regexp": "^2.0.0", + "glob": "^7.0.5", + "tap-parser": "^11.0.0", + "tap-yaml": "^1.0.0", + "unicode-length": "^2.0.2" + }, + "dependencies": { + "brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "requires": { + "brace-expansion": "^1.1.7" + } + } + } + }, + "tap-parser": { + "version": "11.0.2", + "resolved": "https://registry.npmjs.org/tap-parser/-/tap-parser-11.0.2.tgz", + "integrity": "sha512-6qGlC956rcORw+fg7Fv1iCRAY8/bU9UabUAhs3mXRH6eRmVZcNPLheSXCYaVaYeSwx5xa/1HXZb1537YSvwDZg==", + "dev": true, + "requires": { + "events-to-array": "^1.0.1", + "minipass": "^3.1.6", + "tap-yaml": "^1.0.0" + } + }, + "tap-yaml": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/tap-yaml/-/tap-yaml-1.0.2.tgz", + "integrity": "sha512-GegASpuqBnRNdT1U+yuUPZ8rEU64pL35WPBpCISWwff4dErS2/438barz7WFJl4Nzh3Y05tfPidZnH+GaV1wMg==", + "dev": true, + "requires": { + "yaml": "^1.10.2" + } + }, + "tcompare": { + "version": "5.0.7", + "resolved": "https://registry.npmjs.org/tcompare/-/tcompare-5.0.7.tgz", + "integrity": "sha512-d9iddt6YYGgyxJw5bjsN7UJUO1kGOtjSlNy/4PoGYAjQS5pAT/hzIoLf1bZCw+uUxRmZJh7Yy1aA7xKVRT9B4w==", + "dev": true, + "requires": { + "diff": "^4.0.2" + } + }, "temp-path": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/temp-path/-/temp-path-1.0.0.tgz", "integrity": "sha512-TvmyH7kC6ZVTYkqCODjJIbgvu0FKiwQpZ4D1aknE7xpcDf/qEOB8KZEK5ef2pfbVoiBhNWs3yx4y+ESMtNYmlg==" }, + "test-exclude": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz", + "integrity": "sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==", + "dev": true, + "requires": { + "@istanbuljs/schema": "^0.1.2", + "glob": "^7.1.4", + "minimatch": "^3.0.4" + }, + "dependencies": { + "brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "requires": { + "brace-expansion": "^1.1.7" + } + } + } + }, "test-value": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/test-value/-/test-value-3.0.0.tgz", @@ -4287,6 +11015,12 @@ "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz", "integrity": "sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==" }, + "to-fast-properties": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", + "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==", + "dev": true + }, "to-regex-range": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", @@ -4300,11 +11034,32 @@ "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==" }, + "trivial-deferred": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/trivial-deferred/-/trivial-deferred-1.0.1.tgz", + "integrity": "sha512-dagAKX7vaesNNAwOc9Np9C2mJ+7YopF4lk+jE2JML9ta4kZ91Y6UruJNH65bLRYoUROD8EY+Pmi44qQWwXR7sw==", + "dev": true + }, "tslib": { "version": "1.14.1", "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" }, + "type-fest": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", + "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", + "dev": true + }, + "typedarray-to-buffer": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz", + "integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==", + "dev": true, + "requires": { + "is-typedarray": "^1.0.0" + } + }, "typical": { "version": "2.6.1", "resolved": "https://registry.npmjs.org/typical/-/typical-2.6.1.tgz", @@ -4326,6 +11081,25 @@ "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.13.6.tgz", "integrity": "sha512-+A5Sja4HP1M08MaXya7p5LvjuM7K6q/2EaC0+iovj/wOcMsTzMvDFbasi/oSapiwOlt252IqsKqPjCl7huKS0A==" }, + "unicode-length": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/unicode-length/-/unicode-length-2.1.0.tgz", + "integrity": "sha512-4bV582zTV9Q02RXBxSUMiuN/KHo5w4aTojuKTNT96DIKps/SIawFp7cS5Mu25VuY1AioGXrmYyzKZUzh8OqoUw==", + "dev": true, + "requires": { + "punycode": "^2.0.0" + } + }, + "update-browserslist-db": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.10.tgz", + "integrity": "sha512-OztqDenkfFkbSG+tRxBeAnCVPckDBcvibKd35yDONx6OU8N7sqgwc7rCbkJ/WcYtVRZ4ba68d6byhC21GFh7sQ==", + "dev": true, + "requires": { + "escalade": "^3.1.1", + "picocolors": "^1.0.0" + } + }, "uri-js": { "version": "4.4.1", "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", @@ -4357,6 +11131,21 @@ "makeerror": "1.0.12" } }, + "which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + }, + "which-module": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", + "integrity": "sha512-B+enWhmw6cjfVC7kS8Pj9pCrKSc5txArRyaYGe088shv/FGWH+0Rjx/xPgtsWfsUtS27FkP697E4DDhgrgoc0Q==", + "dev": true + }, "wordwrap": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", @@ -4378,21 +11167,143 @@ } } }, + "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==", + "dev": true, + "requires": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + } + }, "wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" }, + "write-file-atomic": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz", + "integrity": "sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==", + "dev": true, + "requires": { + "imurmurhash": "^0.1.4", + "is-typedarray": "^1.0.0", + "signal-exit": "^3.0.2", + "typedarray-to-buffer": "^3.1.5" + } + }, "xmlcreate": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/xmlcreate/-/xmlcreate-2.0.4.tgz", "integrity": "sha512-nquOebG4sngPmGPICTS5EnxqhKbCmz5Ox5hsszI2T6U5qdrJizBc+0ilYSEjTSzU0yZcmvppztXe/5Al5fUwdg==" }, + "y18n": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", + "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==", + "dev": true + }, "yallist": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" }, + "yaml": { + "version": "1.10.2", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", + "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", + "dev": true + }, + "yargs": { + "version": "15.4.1", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz", + "integrity": "sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==", + "dev": true, + "requires": { + "cliui": "^6.0.0", + "decamelize": "^1.2.0", + "find-up": "^4.1.0", + "get-caller-file": "^2.0.1", + "require-directory": "^2.1.1", + "require-main-filename": "^2.0.0", + "set-blocking": "^2.0.0", + "string-width": "^4.2.0", + "which-module": "^2.0.0", + "y18n": "^4.0.0", + "yargs-parser": "^18.1.2" + }, + "dependencies": { + "cliui": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz", + "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==", + "dev": true, + "requires": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^6.2.0" + } + }, + "find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "requires": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + } + }, + "locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "requires": { + "p-locate": "^4.1.0" + } + }, + "p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "requires": { + "p-limit": "^2.2.0" + } + }, + "path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true + }, + "wrap-ansi": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", + "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", + "dev": true, + "requires": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + } + }, + "yargs-parser": { + "version": "18.1.3", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz", + "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==", + "dev": true, + "requires": { + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" + } + } + } + }, "yargs-parser": { "version": "21.1.1", "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", diff --git a/package.json b/package.json index c04d8e8..eac3acc 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "thread-keeper", - "version": "0.0.1", + "version": "0.0.2", "description": "", "main": "app.js", "type": "module", @@ -10,7 +10,7 @@ "postinstall": "cd scripts && bash download-yt-dlp.sh && bash pip-install.sh", "generate-dev-cert": "cd scripts && bash generate-dev-cert.sh", "docgen": "cd scripts && bash docgen.sh", - "test": "echo \"Error: no test specified\" && exit 1" + "test": "cd scripts && bash generate-test-cert.sh && cd .. && export CERTS_PATH='./fixtures/certs/' && export DATA_PATH='./fixtures/data/' && npx tap --reporter=list --timeout=180" }, "dependencies": { "@fastify/formbody": "^7.3.0", @@ -86,5 +86,10 @@ "bugs": { "url": "https://github.com/harvard-lil/thread-keeper/issues" }, - "homepage": "https://github.com/harvard-lil/thread-keeper#readme" + "homepage": "https://github.com/harvard-lil/thread-keeper#readme", + "devDependencies": { + "is-html": "^3.0.0", + "pino-pretty": "^9.1.1", + "tap": "^16.3.2" + } } diff --git a/scripts/generate-test-cert.sh b/scripts/generate-test-cert.sh new file mode 100755 index 0000000..197fac2 --- /dev/null +++ b/scripts/generate-test-cert.sh @@ -0,0 +1,3 @@ +# [TESTS ONLY] Generates a local key pair that can be used for signing PDFs. +# Will be saved under ../fixtures/certs. +openssl req -x509 -newkey rsa:4096 -keyout ../fixtures/certs/key.pem -out ../fixtures/certs/cert.pem -days 3650 -nodes -subj /CN="thread-keeper TESTS ONLY KEY"; \ No newline at end of file