From 6ebc613cb400dadfd95240d7116e7c03941e76af Mon Sep 17 00:00:00 2001 From: Shelley Vohr Date: Wed, 13 Dec 2023 11:15:00 +0100 Subject: [PATCH 1/6] feat: clean and release PR Lookup --- src/data.js | 10 ++++++---- src/index.js | 5 ++--- src/routes/pr-lookup.js | 14 ++++++++++++++ src/routes/pr.js | 3 +++ src/static/css/pr-lookup.css | 27 +++++++++++++++++++++++++++ src/views/layouts/main.handlebars | 1 + src/views/pr-lookup.handlebars | 11 +++++++++++ src/views/pr.handlebars | 14 ++++++++++---- 8 files changed, 74 insertions(+), 11 deletions(-) create mode 100644 src/routes/pr-lookup.js create mode 100644 src/static/css/pr-lookup.css create mode 100644 src/views/pr-lookup.handlebars diff --git a/src/data.js b/src/data.js index 7011eb0..6f5d6ef 100644 --- a/src/data.js +++ b/src/data.js @@ -9,20 +9,22 @@ let octokit = null; const getOctokit = async () => { if (octokit) return octokit; - if (process.env.RELEASE_STATUS_GITHUB_APP_CREDS) { + const { RELEASE_STATUS_GITHUB_APP_CREDS, GITHUB_TOKEN } = process.env; + + if (RELEASE_STATUS_GITHUB_APP_CREDS) { const authOpts = await getAuthOptionsForRepo( { owner: 'electron', name: 'electron', }, - appCredentialsFromString(process.env.RELEASE_STATUS_GITHUB_APP_CREDS), + appCredentialsFromString(RELEASE_STATUS_GITHUB_APP_CREDS), ); octokit = new Octokit({ ...authOpts, }); - } else if (process.env.GITHUB_TOKEN) { + } else if (GITHUB_TOKEN) { octokit = new Octokit({ - auth: process.env.GITHUB_TOKEN, + auth: GITHUB_TOKEN, }); } else { octokit = new Octokit(); diff --git a/src/index.js b/src/index.js index 753b57f..d47aaac 100644 --- a/src/index.js +++ b/src/index.js @@ -41,9 +41,8 @@ app.use('/release', require('./routes/release')); app.use('/releases', require('./routes/releases')); app.use('/history', require('./routes/history')); app.use('/release-build', require('./routes/release-build')); -if (process.env.NODE_ENV !== 'production') { - app.use('/pr', require('./routes/pr')); -} +app.use('/pr', require('./routes/pr')); +app.use('/pr-lookup', require('./routes/pr-lookup')); app.use( express.static(path.resolve(__dirname, 'static'), { diff --git a/src/routes/pr-lookup.js b/src/routes/pr-lookup.js new file mode 100644 index 0000000..a65c92a --- /dev/null +++ b/src/routes/pr-lookup.js @@ -0,0 +1,14 @@ +const { Router } = require('express'); + +const router = new Router(); + +router.get('/', (req, res) => + res.render('pr-lookup', { + title: 'PR Lookup', + css: 'pr-lookup', + }), +); + +router.get('/:number', (req, res) => res.redirect(`/pr/${req.params.number}`)); + +module.exports = router; diff --git a/src/routes/pr.js b/src/routes/pr.js index 1f9c5c5..b09f02b 100644 --- a/src/routes/pr.js +++ b/src/routes/pr.js @@ -1,3 +1,4 @@ +const Handlebars = require('handlebars'); const { Router } = require('express'); const semver = require('semver'); @@ -6,6 +7,8 @@ const { compareTagToCommit, getReleasesOrUpdate, getPR, getPRComments } = requir const router = new Router(); +Handlebars.registerHelper('formattedDate', (date) => new Date(date).toUTCString()); + async function getPRReleaseStatus(prNumber) { const releases = [...(await getReleasesOrUpdate())].reverse(); const [prInfo, comments] = await Promise.all([getPR(prNumber), getPRComments(prNumber)]); diff --git a/src/static/css/pr-lookup.css b/src/static/css/pr-lookup.css new file mode 100644 index 0000000..c376233 --- /dev/null +++ b/src/static/css/pr-lookup.css @@ -0,0 +1,27 @@ +.lookup-container { + display: flex; + justify-content: center; + align-items: center; + gap: 10px; + padding: 20px; +} + +#lookupInput { + padding: 10px; + border-radius: 5px; + border: 1px solid #ccc; + flex-grow: 1; +} + +button { + padding: 10px 20px; + border-radius: 5px; + border: none; + background-color: #2b2e3b; + color: white; + cursor: pointer; +} + +button:hover { + background-color: #0d4a59; +} diff --git a/src/views/layouts/main.handlebars b/src/views/layouts/main.handlebars index 55d2189..d19e8cd 100644 --- a/src/views/layouts/main.handlebars +++ b/src/views/layouts/main.handlebars @@ -26,6 +26,7 @@
All Releases History + PR Lookup Website
diff --git a/src/views/pr-lookup.handlebars b/src/views/pr-lookup.handlebars new file mode 100644 index 0000000..3c4a203 --- /dev/null +++ b/src/views/pr-lookup.handlebars @@ -0,0 +1,11 @@ +
+ + +
+ + \ No newline at end of file diff --git a/src/views/pr.handlebars b/src/views/pr.handlebars index af5c8a7..ad61d98 100644 --- a/src/views/pr.handlebars +++ b/src/views/pr.handlebars @@ -2,8 +2,14 @@
-

Source PR

- #{{ primary.pr.number }} + Title: {{ primary.pr.title }} + Original PR: #{{ primary.pr.number }} + Author: {{ primary.pr.user.login }} + Merged On: {{ formattedDate primary.pr.merged_at }} + + {{#if primary.availableIn}} + Released: {{primary.availableIn.version}} + {{/if}}
@@ -13,11 +19,11 @@

{{ targetBranch }}

{{#if pr}} - Backport PR: #{{ pr.number }} + Backport PR: #{{ pr.number }} {{/if}} {{#if availableIn}} - Released: {{availableIn.version}} + Released: {{availableIn.version}} {{/if}}
From bba52061d3b42d5ad59269f5c3be9db43a9b37ca Mon Sep 17 00:00:00 2001 From: Shelley Vohr Date: Wed, 13 Dec 2023 18:18:12 +0100 Subject: [PATCH 2/6] refactor: use a grid for the PR view --- src/routes/pr.js | 2 + src/static/css/pr.css | 108 ++++++---------------------------------- src/views/pr.handlebars | 61 +++++++++++++---------- 3 files changed, 52 insertions(+), 119 deletions(-) diff --git a/src/routes/pr.js b/src/routes/pr.js index b09f02b..b575998 100644 --- a/src/routes/pr.js +++ b/src/routes/pr.js @@ -9,6 +9,8 @@ const router = new Router(); Handlebars.registerHelper('formattedDate', (date) => new Date(date).toUTCString()); +Handlebars.registerHelper('sha', (commitSha) => commitSha.substr(0, 7)); + async function getPRReleaseStatus(prNumber) { const releases = [...(await getReleasesOrUpdate())].reverse(); const [prInfo, comments] = await Promise.all([getPR(prNumber), getPRComments(prNumber)]); diff --git a/src/static/css/pr.css b/src/static/css/pr.css index d671f86..df54b8d 100644 --- a/src/static/css/pr.css +++ b/src/static/css/pr.css @@ -1,105 +1,25 @@ -.tree { - position: relative; - width: 100%; +.grid-container { + display: grid; + grid-gap: 20px; + max-width: 900px; } -.tree canvas { - position: absolute; - top: 0; - left: 0; - width: 100%; - height: 100%; +.grid-header { + background-color: #9feaf9; + margin: 0; + padding: 15px; } -.primary { - text-align: center; - margin-bottom: 140px; - position: relative; - z-index: 2; +.grid-contents { + padding: 0 15px 0px 15px; } -.primary-cell { - text-align: center; - display: inline-flex; - flex-direction: column; - padding: 16px; - border-radius: 4px; - border: 1px solid #00c7e6; - background: white; - min-width: 300px; - box-shadow: - 0 2px 6px rgb(9 30 66 / 25%), - 0 0 1px 0 rgb(9 30 66 / 31%); - cursor: pointer; - user-select: none; - transition: box-shadow 0.1s ease-in-out; +.grid-item { + background-color: whitesmoke; } -.primary-cell:hover { - box-shadow: - 0 8px 16px -4px rgb(9 30 66 / 25%), - 0 0 1px rgb(9 30 66 / 31%); -} - -.primary-cell h4 { - margin: 4px; -} - -.backports { +.grid-sub-item h3, +.grid-sub-item p { display: flex; - flex-direction: row; - position: relative; - z-index: 2; - padding-bottom: 32px; -} - -.backport { - flex: 1; - display: flex; - align-items: flex-start; justify-content: center; } - -.backport-cell { - text-align: center; - display: inline-flex; - flex-direction: column; - padding: 16px 64px; - border: 1px solid; - border-radius: 4px; - min-width: 220px; - background: white; - box-shadow: - 0 2px 6px rgb(9 30 66 / 25%), - 0 0 1px 0 rgb(9 30 66 / 31%); - cursor: pointer; - user-select: none; - transition: box-shadow 0.1s ease-in-out; -} - -.backport-cell:hover { - box-shadow: - 0 8px 16px -4px rgb(9 30 66 / 25%), - 0 0 1px rgb(9 30 66 / 31%); -} - -.backport-pending .backport-cell, -.backport-in-flight .backport-cell { - border-color: #00b8d9; -} - -.backport-needs-manual .backport-cell { - border-color: #ffab00; -} - -.backport-merged .backport-cell { - border-color: #6554c0; -} - -.backport-released .backport-cell { - border-color: #36b37e; -} - -.backport-cell h4 { - margin: 4px; -} diff --git a/src/views/pr.handlebars b/src/views/pr.handlebars index ad61d98..dc52536 100644 --- a/src/views/pr.handlebars +++ b/src/views/pr.handlebars @@ -1,32 +1,43 @@ -
- -
-
- Title: {{ primary.pr.title }} - Original PR: #{{ primary.pr.number }} - Author: {{ primary.pr.user.login }} - Merged On: {{ formattedDate primary.pr.merged_at }} - - {{#if primary.availableIn}} - Released: {{primary.availableIn.version}} +
+
+

PR Title

+

{{ primary.pr.title }}

+
+
+

Details

+

Author: @{{ primary.pr.user.login + }} Time: {{ formattedDate primary.pr.merged_at }} Commit: {{sha primary.pr.base.sha}}

+
+
+

PR Information

+

{{primary.pr.body}}

+
+
+

Release

+

+ {{#if availableIn}} + {{primary.availableIn.version}} + {{else}} + This PR has not been released. {{/if}} -

+

-
- {{#each backports}} -
-
-

{{ targetBranch }}

- - {{#if pr}} - Backport PR: #{{ pr.number }} - {{/if}} - +
+

Backports

+
+ {{#each backports}} +
+

{{ targetBranch }}

+

#{{ pr.number }}

+

{{#if availableIn}} - Released: {{availableIn.version}} + v{{availableIn.version}} + {{else}} + Not Yet Released {{/if}} -

+

- {{/each}} + {{/each}} +
\ No newline at end of file From 56980caf2377e30d7ae2a2cb1978f288cc81ad70 Mon Sep 17 00:00:00 2001 From: Shelley Vohr Date: Wed, 13 Dec 2023 21:35:14 +0100 Subject: [PATCH 3/6] chore: clean up UI --- src/routes/pr.js | 13 +++++++++++++ src/static/css/pr.css | 4 ++++ src/views/pr-lookup.handlebars | 2 +- src/views/pr.handlebars | 4 ++-- 4 files changed, 20 insertions(+), 3 deletions(-) diff --git a/src/routes/pr.js b/src/routes/pr.js index b575998..95e9620 100644 --- a/src/routes/pr.js +++ b/src/routes/pr.js @@ -1,6 +1,15 @@ const Handlebars = require('handlebars'); const { Router } = require('express'); const semver = require('semver'); +const MarkdownIt = require('markdown-it'); +const createDOMPurify = require('dompurify'); +const { JSDOM } = require('jsdom'); + +const window = new JSDOM('').window; +const DOMPurify = createDOMPurify(window); +const md = new MarkdownIt({ + html: true, +}); const a = require('../utils/a'); const { compareTagToCommit, getReleasesOrUpdate, getPR, getPRComments } = require('../data'); @@ -11,6 +20,10 @@ Handlebars.registerHelper('formattedDate', (date) => new Date(date).toUTCString( Handlebars.registerHelper('sha', (commitSha) => commitSha.substr(0, 7)); +Handlebars.registerHelper('markdown', function (content) { + return DOMPurify.sanitize(md.render(content)); +}); + async function getPRReleaseStatus(prNumber) { const releases = [...(await getReleasesOrUpdate())].reverse(); const [prInfo, comments] = await Promise.all([getPR(prNumber), getPRComments(prNumber)]); diff --git a/src/static/css/pr.css b/src/static/css/pr.css index df54b8d..4ee4d47 100644 --- a/src/static/css/pr.css +++ b/src/static/css/pr.css @@ -23,3 +23,7 @@ display: flex; justify-content: center; } + +#grid-pr-body { + padding: 0 15px 0px 15px; +} diff --git a/src/views/pr-lookup.handlebars b/src/views/pr-lookup.handlebars index 3c4a203..48a7ad8 100644 --- a/src/views/pr-lookup.handlebars +++ b/src/views/pr-lookup.handlebars @@ -8,4 +8,4 @@ const { value } = document.getElementById('lookupInput'); window.location = '/pr/' + encodeURIComponent(value); } - \ No newline at end of file + diff --git a/src/views/pr.handlebars b/src/views/pr.handlebars index dc52536..60d6cd1 100644 --- a/src/views/pr.handlebars +++ b/src/views/pr.handlebars @@ -10,7 +10,7 @@

PR Information

-

{{primary.pr.body}}

+
{{{markdown primary.pr.body}}}

Release

@@ -40,4 +40,4 @@ {{/each}}
-
\ No newline at end of file +
From bb1fcef7cd103863abe62056a2b00270cc6a5836 Mon Sep 17 00:00:00 2001 From: Shelley Vohr Date: Thu, 14 Dec 2023 09:54:50 +0100 Subject: [PATCH 4/6] chore: PR review feedback Co-authored-by: David Sanders --- src/routes/pr.js | 2 +- src/static/css/pr.css | 1 + src/views/pr.handlebars | 2 +- 3 files changed, 3 insertions(+), 2 deletions(-) diff --git a/src/routes/pr.js b/src/routes/pr.js index 95e9620..9c14ba6 100644 --- a/src/routes/pr.js +++ b/src/routes/pr.js @@ -8,7 +8,7 @@ const { JSDOM } = require('jsdom'); const window = new JSDOM('').window; const DOMPurify = createDOMPurify(window); const md = new MarkdownIt({ - html: true, + linkify: true, }); const a = require('../utils/a'); diff --git a/src/static/css/pr.css b/src/static/css/pr.css index 4ee4d47..60a992a 100644 --- a/src/static/css/pr.css +++ b/src/static/css/pr.css @@ -26,4 +26,5 @@ #grid-pr-body { padding: 0 15px 0px 15px; + word-break: break-word; } diff --git a/src/views/pr.handlebars b/src/views/pr.handlebars index 60d6cd1..75322ad 100644 --- a/src/views/pr.handlebars +++ b/src/views/pr.handlebars @@ -31,7 +31,7 @@

#{{ pr.number }}

{{#if availableIn}} - v{{availableIn.version}} + v{{availableIn.version}} {{else}} Not Yet Released {{/if}} From 998f11f701159d6b5b18fcbe9c707b7799ccb054 Mon Sep 17 00:00:00 2001 From: Shelley Vohr Date: Thu, 14 Dec 2023 10:10:34 +0100 Subject: [PATCH 5/6] fix: add PR for source --- src/routes/pr.js | 2 -- src/views/pr.handlebars | 3 ++- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/src/routes/pr.js b/src/routes/pr.js index 9c14ba6..06f4893 100644 --- a/src/routes/pr.js +++ b/src/routes/pr.js @@ -18,8 +18,6 @@ const router = new Router(); Handlebars.registerHelper('formattedDate', (date) => new Date(date).toUTCString()); -Handlebars.registerHelper('sha', (commitSha) => commitSha.substr(0, 7)); - Handlebars.registerHelper('markdown', function (content) { return DOMPurify.sanitize(md.render(content)); }); diff --git a/src/views/pr.handlebars b/src/views/pr.handlebars index 75322ad..8d9a019 100644 --- a/src/views/pr.handlebars +++ b/src/views/pr.handlebars @@ -6,7 +6,8 @@

Details

Author: @{{ primary.pr.user.login - }} Time: {{ formattedDate primary.pr.merged_at }} Commit: {{sha primary.pr.base.sha}}

+ }} Time: {{ formattedDate primary.pr.merged_at }} PR: #{{ + primary.pr.number}}

PR Information

From 5fcc8d07e2a07191432631ea7cd72a97f48dc9aa Mon Sep 17 00:00:00 2001 From: Shelley Vohr Date: Thu, 14 Dec 2023 12:16:21 +0100 Subject: [PATCH 6/6] refactor: switch to html parsing --- package.json | 4 +- src/data.js | 3 + src/routes/pr.js | 11 +- src/views/pr.handlebars | 2 +- yarn.lock | 422 ++++++++++++++-------------------------- 5 files changed, 157 insertions(+), 285 deletions(-) diff --git a/package.json b/package.json index 9d1b292..131013b 100644 --- a/package.json +++ b/package.json @@ -8,12 +8,12 @@ "@electron/github-app-auth": "^1.2.0", "@octokit/rest": "^18.3.5", "diff": "^5.1.0", - "dompurify": "^2.3.0", + "dompurify": "^3.0.6", "expiry-map": "^2.0.0", "express": "^4.17.1", "express-handlebars": "^5.2.0", "express-paginate": "^1.0.2", - "jsdom": "^16.6.0", + "jsdom": "^23.0.1", "markdown-it": "^12.1.0", "node-fetch": "^2.6.1", "p-memoize": "^4.0.1", diff --git a/src/data.js b/src/data.js index 6f5d6ef..19e52e8 100644 --- a/src/data.js +++ b/src/data.js @@ -101,6 +101,9 @@ const getPR = pMemoize( owner: 'electron', repo: 'electron', pull_number: prNumber, + mediaType: { + format: 'html', + }, }) ).data; } catch { diff --git a/src/routes/pr.js b/src/routes/pr.js index 06f4893..ee22974 100644 --- a/src/routes/pr.js +++ b/src/routes/pr.js @@ -7,9 +7,6 @@ const { JSDOM } = require('jsdom'); const window = new JSDOM('').window; const DOMPurify = createDOMPurify(window); -const md = new MarkdownIt({ - linkify: true, -}); const a = require('../utils/a'); const { compareTagToCommit, getReleasesOrUpdate, getPR, getPRComments } = require('../data'); @@ -18,9 +15,7 @@ const router = new Router(); Handlebars.registerHelper('formattedDate', (date) => new Date(date).toUTCString()); -Handlebars.registerHelper('markdown', function (content) { - return DOMPurify.sanitize(md.render(content)); -}); +Handlebars.registerHelper('html', (content) => DOMPurify.sanitize(content)); async function getPRReleaseStatus(prNumber) { const releases = [...(await getReleasesOrUpdate())].reverse(); @@ -43,10 +38,10 @@ async function getPRReleaseStatus(prNumber) { // We've been merged, let's find out if this is available in a nightly if (prInfo.merged) { - const allNighlies = releases.filter( + const allNightlies = releases.filter( (r) => semver.parse(r.version).prerelease[0] === 'nightly', ); - for (const nightly of allNighlies) { + for (const nightly of allNightlies) { const dateParts = nightly.date.split('-').map((n) => parseInt(n, 10)); const releaseDate = new Date(dateParts[0], dateParts[1] - 1, dateParts[2] + 1); if (releaseDate > new Date(prInfo.merged_at)) { diff --git a/src/views/pr.handlebars b/src/views/pr.handlebars index 8d9a019..2bcad76 100644 --- a/src/views/pr.handlebars +++ b/src/views/pr.handlebars @@ -11,7 +11,7 @@

PR Information

-
{{{markdown primary.pr.body}}}
+
{{{ html primary.pr.body_html }}}

Release

diff --git a/yarn.lock b/yarn.lock index e2795fc..3dd0d5b 100644 --- a/yarn.lock +++ b/yarn.lock @@ -256,11 +256,6 @@ dependencies: "@octokit/openapi-types" "^11.2.0" -"@tootallnate/once@1": - version "1.1.2" - resolved "https://registry.yarnpkg.com/@tootallnate/once/-/once-1.1.2.tgz#ccb91445360179a04e7fe6aff78c00ffc1eeaf82" - integrity sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw== - "@types/btoa-lite@^1.0.0": version "1.0.0" resolved "https://registry.yarnpkg.com/@types/btoa-lite/-/btoa-lite-1.0.0.tgz#e190a5a548e0b348adb0df9ac7fa5f1151c7cca4" @@ -283,11 +278,6 @@ resolved "https://registry.yarnpkg.com/@types/node/-/node-17.0.31.tgz#a5bb84ecfa27eec5e1c802c6bbf8139bdb163a5d" integrity sha512-AR0x5HbXGqkEx9CadRH3EBYx/VkiUgZIhP4wvPn/+5KIsgpNoyFaRlVe0Zlx9gRtg8fA06a9tskE2MSN7TcG4Q== -abab@^2.0.3, abab@^2.0.5: - version "2.0.5" - resolved "https://registry.yarnpkg.com/abab/-/abab-2.0.5.tgz#c0b678fb32d60fc1219c784d6a826fe385aeb79a" - integrity sha512-9IK9EadsbHo6jLWIpxpR6pL0sazTXV6+SQv25ZB+F7Bj9mJNaOc4nCRabwd5M/JwmUa8idz6Eci6eKfJryPs6Q== - abbrev@1: version "1.1.1" resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.1.tgz#f8f2c887ad10bf67f634f005b6987fed3179aac8" @@ -301,35 +291,12 @@ accepts@~1.3.8: mime-types "~2.1.34" negotiator "0.6.3" -acorn-globals@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/acorn-globals/-/acorn-globals-6.0.0.tgz#46cdd39f0f8ff08a876619b55f5ac8a6dc770b45" - integrity sha512-ZQl7LOWaF5ePqqcX4hLuv/bLXYQNfNWw2c0/yX/TsPRKamzHcTGQnlCjHT3TsmkOUVEPS3crCxiPfdzE/Trlhg== - dependencies: - acorn "^7.1.1" - acorn-walk "^7.1.1" - -acorn-walk@^7.1.1: - version "7.2.0" - resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-7.2.0.tgz#0de889a601203909b0fbe07b8938dc21d2e967bc" - integrity sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA== - -acorn@^7.1.1: - version "7.4.1" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.4.1.tgz#feaed255973d2e77555b83dbc08851a6c63520fa" - integrity sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A== - -acorn@^8.2.4: - version "8.4.1" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.4.1.tgz#56c36251fc7cabc7096adc18f05afe814321a28c" - integrity sha512-asabaBSkEKosYKMITunzX177CXxQ4Q8BSSzMTKD+FefUhipQC70gfW5SiUDhYQ3vk8G+81HqQk7Fv9OXwwn9KA== - -agent-base@6: - version "6.0.2" - resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-6.0.2.tgz#49fff58577cfee3f37176feab4c22e00f86d7f77" - integrity sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ== +agent-base@^7.0.2, agent-base@^7.1.0: + version "7.1.0" + resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-7.1.0.tgz#536802b76bc0b34aa50195eb2442276d613e3434" + integrity sha512-o/zjMZRhJxny7OyEF+Op8X+efiELC7k7yOjMzgfzVqOzXqkBkWI79YoTdOtsuWd5BWhAGAuOY/Xa6xpiaWXiNg== dependencies: - debug "4" + debug "^4.3.4" ansi-escapes@^6.2.0: version "6.2.0" @@ -419,11 +386,6 @@ braces@^3.0.2, braces@~3.0.2: dependencies: fill-range "^7.0.1" -browser-process-hrtime@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz#3c9b4b7d782c8121e56f10106d84c0d0ffc94626" - integrity sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow== - btoa-lite@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/btoa-lite/-/btoa-lite-1.0.0.tgz#337766da15801210fdd956c22e9c6891ab9d0337" @@ -535,31 +497,20 @@ cross-spawn@^7.0.3: shebang-command "^2.0.0" which "^2.0.1" -cssom@^0.4.4: - version "0.4.4" - resolved "https://registry.yarnpkg.com/cssom/-/cssom-0.4.4.tgz#5a66cf93d2d0b661d80bf6a44fb65f5c2e4e0a10" - integrity sha512-p3pvU7r1MyyqbTk+WbNJIgJjG2VmTIaB10rI93LzVPrmDJKkzKYMtxxyAvQXR/NS6otuzveI7+7BBq3SjBS2mw== - -cssom@~0.3.6: - version "0.3.8" - resolved "https://registry.yarnpkg.com/cssom/-/cssom-0.3.8.tgz#9f1276f5b2b463f2114d3f2c75250af8c1a36f4a" - integrity sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg== - -cssstyle@^2.3.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/cssstyle/-/cssstyle-2.3.0.tgz#ff665a0ddbdc31864b09647f34163443d90b0852" - integrity sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A== +cssstyle@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/cssstyle/-/cssstyle-3.0.0.tgz#17ca9c87d26eac764bb8cfd00583cff21ce0277a" + integrity sha512-N4u2ABATi3Qplzf0hWbVCdjenim8F3ojEXpBDF5hBpjzW182MjNGLqfmQ0SkSPeQ+V86ZXgeH8aXj6kayd4jgg== dependencies: - cssom "~0.3.6" + rrweb-cssom "^0.6.0" -data-urls@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/data-urls/-/data-urls-2.0.0.tgz#156485a72963a970f5d5821aaf642bef2bf2db9b" - integrity sha512-X5eWTSXO/BJmpdIKCRuKUgSCgAN0OwliVK3yPKbwIWU1Tdw5BRajxlzMidvh+gwko9AfQ9zIj52pzF91Q3YAvQ== +data-urls@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/data-urls/-/data-urls-5.0.0.tgz#2f76906bce1824429ffecb6920f45a0b30f00dde" + integrity sha512-ZYP5VBHshaDAiVZxjbRVcFJpc+4xGgT0bK3vzy1HLN8jTO975HEbuYzZJcHoQEY5K1a0z8YayJkyVETa08eNTg== dependencies: - abab "^2.0.3" - whatwg-mimetype "^2.3.0" - whatwg-url "^8.0.0" + whatwg-mimetype "^4.0.0" + whatwg-url "^14.0.0" debug@2.6.9: version "2.6.9" @@ -575,7 +526,7 @@ debug@4: dependencies: ms "2.1.2" -debug@4.3.4: +debug@4.3.4, debug@^4.3.4: version "4.3.4" resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865" integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ== @@ -589,15 +540,10 @@ debug@^3.2.7: dependencies: ms "^2.1.1" -decimal.js@^10.2.1: - version "10.3.1" - resolved "https://registry.yarnpkg.com/decimal.js/-/decimal.js-10.3.1.tgz#d8c3a444a9c6774ba60ca6ad7261c3a94fd5e783" - integrity sha512-V0pfhfr8suzyPGOx3nmq4aHqabehUZn6Ch9kyFpV79TGDTWFmHqUqXdabR7QHqxzrYolF4+tVmJhUG4OURg5dQ== - -deep-is@~0.1.3: - version "0.1.3" - resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34" - integrity sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ= +decimal.js@^10.4.3: + version "10.4.3" + resolved "https://registry.yarnpkg.com/decimal.js/-/decimal.js-10.4.3.tgz#1044092884d245d1b7f65725fa4ad4c6f781cc23" + integrity sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA== delayed-stream@~1.0.0: version "1.0.0" @@ -624,17 +570,10 @@ diff@^5.1.0: resolved "https://registry.yarnpkg.com/diff/-/diff-5.1.0.tgz#bc52d298c5ea8df9194800224445ed43ffc87e40" integrity sha512-D+mk+qE8VC/PAUrlAU34N+VfXev0ghe5ywmpqrawphmVZc1bEfn56uo9qpyGp1p4xpzOHkSW4ztBd6L7Xx4ACw== -domexception@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/domexception/-/domexception-2.0.1.tgz#fb44aefba793e1574b0af6aed2801d057529f304" - integrity sha512-yxJ2mFy/sibVQlu5qHjOkf9J3K6zgmCxgJ94u2EdvDOV09H+32LtRswEcUsmUWN72pVLOEnTSRaIVVzVQgS0dg== - dependencies: - webidl-conversions "^5.0.0" - -dompurify@^2.3.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/dompurify/-/dompurify-2.3.0.tgz#07bb39515e491588e5756b1d3e8375b5964814e2" - integrity sha512-VV5C6Kr53YVHGOBKO/F86OYX6/iLTw2yVSI721gKetxpHCK/V5TaLEf9ODjRgl1KLSWRMY6cUhAbv/c+IUnwQw== +dompurify@^3.0.6: + version "3.0.6" + resolved "https://registry.yarnpkg.com/dompurify/-/dompurify-3.0.6.tgz#925ebd576d54a9531b5d76f0a5bef32548351dae" + integrity sha512-ilkD8YEnnGh1zJ240uJsW7AzE+2qpbOUYjacomn3AvJ6J4JhKGSZ2nh4wUIXPZrEPppaCLx5jFe8T89Rk8tQ7w== ecdsa-sig-formatter@1.0.11: version "1.0.11" @@ -658,6 +597,11 @@ encodeurl@~1.0.2: resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59" integrity sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k= +entities@^4.4.0: + version "4.5.0" + resolved "https://registry.yarnpkg.com/entities/-/entities-4.5.0.tgz#5d268ea5e7113ec74c4d033b79ea5a35a488fb48" + integrity sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw== + entities@~2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/entities/-/entities-2.1.0.tgz#992d3129cf7df6870b96c57858c249a120f8b8b5" @@ -668,33 +612,6 @@ escape-html@~1.0.3: resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988" integrity sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg= -escodegen@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-2.0.0.tgz#5e32b12833e8aa8fa35e1bf0befa89380484c7dd" - integrity sha512-mmHKys/C8BFUGI+MAWNcSYoORYLMdPzjrknd2Vc+bUsjN5bXcr8EhrNB+UTqfL1y3I9c4fw2ihgtMPQLBRiQxw== - dependencies: - esprima "^4.0.1" - estraverse "^5.2.0" - esutils "^2.0.2" - optionator "^0.8.1" - optionalDependencies: - source-map "~0.6.1" - -esprima@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" - integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== - -estraverse@^5.2.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.2.0.tgz#307df42547e6cc7324d3cf03c155d5cdb8c53880" - integrity sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ== - -esutils@^2.0.2: - version "2.0.3" - resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64" - integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== - etag@~1.8.1: version "1.8.1" resolved "https://registry.yarnpkg.com/etag/-/etag-1.8.1.tgz#41ae2eeb65efa62268aebfea83ac7d79299b0887" @@ -783,11 +700,6 @@ express@^4.17.1: utils-merge "1.0.1" vary "~1.1.2" -fast-levenshtein@~2.0.6: - version "2.0.6" - resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" - integrity sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc= - fill-range@^7.0.1: version "7.0.1" resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40" @@ -808,10 +720,10 @@ finalhandler@1.2.0: statuses "2.0.1" unpipe "~1.0.0" -form-data@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/form-data/-/form-data-3.0.1.tgz#ebd53791b78356a99af9a300d4282c4d5eb9755f" - integrity sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg== +form-data@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/form-data/-/form-data-4.0.0.tgz#93919daeaf361ee529584b9b31664dc12c9fa452" + integrity sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww== dependencies: asynckit "^0.4.0" combined-stream "^1.0.8" @@ -914,12 +826,12 @@ has@^1.0.3: dependencies: function-bind "^1.1.1" -html-encoding-sniffer@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/html-encoding-sniffer/-/html-encoding-sniffer-2.0.1.tgz#42a6dc4fd33f00281176e8b23759ca4e4fa185f3" - integrity sha512-D5JbOMBIR/TVZkubHT+OyT2705QvogUW4IBn6nHd756OwieSF9aDYFj4dv6HHEVGYbHaLETa3WggZYWWMyy3ZQ== +html-encoding-sniffer@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/html-encoding-sniffer/-/html-encoding-sniffer-4.0.0.tgz#696df529a7cfd82446369dc5193e590a3735b448" + integrity sha512-Y22oTqIU4uuPgEemfz7NDJz6OeKf12Lsu+QC+s3BVpda64lTiMYCyGwg5ki4vFxkMwQdeZDl2adZoqUgdFuTgQ== dependencies: - whatwg-encoding "^1.0.5" + whatwg-encoding "^3.1.1" http-errors@2.0.0: version "2.0.0" @@ -932,21 +844,20 @@ http-errors@2.0.0: statuses "2.0.1" toidentifier "1.0.1" -http-proxy-agent@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz#8a8c8ef7f5932ccf953c296ca8291b95aa74aa3a" - integrity sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg== +http-proxy-agent@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/http-proxy-agent/-/http-proxy-agent-7.0.0.tgz#e9096c5afd071a3fce56e6252bb321583c124673" + integrity sha512-+ZT+iBxVUQ1asugqnD6oWoRiS25AkjNfG085dKJGtGxkdwLQrMKU5wJr2bOOFAXzKcTuqq+7fZlTMgG3SRfIYQ== dependencies: - "@tootallnate/once" "1" - agent-base "6" - debug "4" + agent-base "^7.1.0" + debug "^4.3.4" -https-proxy-agent@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-5.0.0.tgz#e2a90542abb68a762e0a0850f6c9edadfd8506b2" - integrity sha512-EkYm5BcKUGiduxzSt3Eppko+PiNWNEpa4ySk9vTC6wDsQJW9rHSa+UhGNJoRYp7bz6Ht1eaRIa6QaJqO5rCFbA== +https-proxy-agent@^7.0.2: + version "7.0.2" + resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-7.0.2.tgz#e2645b846b90e96c6e6f347fb5b2e41f1590b09b" + integrity sha512-NmLNjm6ucYwtcUmL7JQC1ZQ57LmHP4lT15FQ8D61nak1rO6DH+fz5qNK2Ap5UN4ZapYICE3/0KodcLYSPsPbaA== dependencies: - agent-base "6" + agent-base "^7.0.2" debug "4" human-signals@^5.0.0: @@ -966,6 +877,13 @@ iconv-lite@0.4.24: dependencies: safer-buffer ">= 2.1.2 < 3" +iconv-lite@0.6.3: + version "0.6.3" + resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.6.3.tgz#a52f80bf38da1952eb5c681790719871a1a72501" + integrity sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw== + dependencies: + safer-buffer ">= 2.1.2 < 3.0.0" + ignore-by-default@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/ignore-by-default/-/ignore-by-default-1.0.1.tgz#48ca6d72f6c6a3af00a9ad4ae6876be3889e2b09" @@ -1045,38 +963,32 @@ isexe@^2.0.0: resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" integrity sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw== -jsdom@^16.6.0: - version "16.6.0" - resolved "https://registry.yarnpkg.com/jsdom/-/jsdom-16.6.0.tgz#f79b3786682065492a3da6a60a4695da983805ac" - integrity sha512-Ty1vmF4NHJkolaEmdjtxTfSfkdb8Ywarwf63f+F8/mDD1uLSSWDxDuMiZxiPhwunLrn9LOSVItWj4bLYsLN3Dg== - dependencies: - abab "^2.0.5" - acorn "^8.2.4" - acorn-globals "^6.0.0" - cssom "^0.4.4" - cssstyle "^2.3.0" - data-urls "^2.0.0" - decimal.js "^10.2.1" - domexception "^2.0.1" - escodegen "^2.0.0" - form-data "^3.0.0" - html-encoding-sniffer "^2.0.1" - http-proxy-agent "^4.0.1" - https-proxy-agent "^5.0.0" +jsdom@^23.0.1: + version "23.0.1" + resolved "https://registry.yarnpkg.com/jsdom/-/jsdom-23.0.1.tgz#ede7ff76e89ca035b11178d200710d8982ebfee0" + integrity sha512-2i27vgvlUsGEBO9+/kJQRbtqtm+191b5zAZrU/UezVmnC2dlDAFLgDYJvAEi94T4kjsRKkezEtLQTgsNEsW2lQ== + dependencies: + cssstyle "^3.0.0" + data-urls "^5.0.0" + decimal.js "^10.4.3" + form-data "^4.0.0" + html-encoding-sniffer "^4.0.0" + http-proxy-agent "^7.0.0" + https-proxy-agent "^7.0.2" is-potential-custom-element-name "^1.0.1" - nwsapi "^2.2.0" - parse5 "6.0.1" - saxes "^5.0.1" + nwsapi "^2.2.7" + parse5 "^7.1.2" + rrweb-cssom "^0.6.0" + saxes "^6.0.0" symbol-tree "^3.2.4" - tough-cookie "^4.0.0" - w3c-hr-time "^1.0.2" - w3c-xmlserializer "^2.0.0" - webidl-conversions "^6.1.0" - whatwg-encoding "^1.0.5" - whatwg-mimetype "^2.3.0" - whatwg-url "^8.5.0" - ws "^7.4.5" - xml-name-validator "^3.0.0" + tough-cookie "^4.1.3" + w3c-xmlserializer "^5.0.0" + webidl-conversions "^7.0.0" + whatwg-encoding "^3.1.1" + whatwg-mimetype "^4.0.0" + whatwg-url "^14.0.0" + ws "^8.14.2" + xml-name-validator "^5.0.0" jsonwebtoken@^9.0.0: version "9.0.0" @@ -1105,14 +1017,6 @@ jws@^3.2.2: jwa "^1.4.1" safe-buffer "^5.0.1" -levn@~0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/levn/-/levn-0.3.0.tgz#3b09924edf9f083c0490fdd4c0bc4421e04764ee" - integrity sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4= - dependencies: - prelude-ls "~1.1.2" - type-check "~0.3.2" - lilconfig@3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/lilconfig/-/lilconfig-3.0.0.tgz#f8067feb033b5b74dab4602a5f5029420be749bc" @@ -1168,7 +1072,7 @@ lodash.isobject@^3.0.2: resolved "https://registry.yarnpkg.com/lodash.isobject/-/lodash.isobject-3.0.2.tgz#3c8fb8d5b5bf4bf90ae06e14f2a530a4ed935e1d" integrity sha512-3/Qptq2vr7WeJbB4KHUSKlq8Pl7ASXi3UG6CMbBm8WRtXi8+GHm7mKaU3urfpSEzWe2wCIChs6/sdocUsTKJiA== -lodash@^4.17.21, lodash@^4.7.0: +lodash@^4.17.21: version "4.17.21" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== @@ -1384,10 +1288,10 @@ npm-run-path@^5.1.0: dependencies: path-key "^4.0.0" -nwsapi@^2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/nwsapi/-/nwsapi-2.2.0.tgz#204879a9e3d068ff2a55139c2c772780681a38b7" - integrity sha512-h2AatdwYH+JHiZpv7pt/gSX1XoRGb7L/qSIeuqA6GwYoF9w1vP1cw42TO0aI2pNyshRK5893hNSl+1//vHK7hQ== +nwsapi@^2.2.7: + version "2.2.7" + resolved "https://registry.yarnpkg.com/nwsapi/-/nwsapi-2.2.7.tgz#738e0707d3128cb750dddcfe90e4610482df0f30" + integrity sha512-ub5E4+FBPKwAZx0UwIQOjYWGHTEq5sPqHQNRN8Z9e4A7u3Tj1weLJsL59yH9vmvqEtBHaOmT6cYQKIZOxp35FQ== object-inspect@^1.9.0: version "1.12.2" @@ -1422,18 +1326,6 @@ onetime@^6.0.0: dependencies: mimic-fn "^4.0.0" -optionator@^0.8.1: - version "0.8.3" - resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.8.3.tgz#84fa1d036fe9d3c7e21d99884b601167ec8fb495" - integrity sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA== - dependencies: - deep-is "~0.1.3" - fast-levenshtein "~2.0.6" - levn "~0.3.0" - prelude-ls "~1.1.2" - type-check "~0.3.2" - word-wrap "~1.2.3" - p-defer@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/p-defer/-/p-defer-1.0.0.tgz#9f6eb182f6c9aa8cd743004a7d4f96b196b0fb0c" @@ -1473,10 +1365,12 @@ p-try@^2.0.0: resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6" integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== -parse5@6.0.1: - version "6.0.1" - resolved "https://registry.yarnpkg.com/parse5/-/parse5-6.0.1.tgz#e1a1c085c569b3dc08321184f19a39cc27f7c30b" - integrity sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw== +parse5@^7.1.2: + version "7.1.2" + resolved "https://registry.yarnpkg.com/parse5/-/parse5-7.1.2.tgz#0736bebbfd77793823240a23b7fc5e010b7f8e32" + integrity sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw== + dependencies: + entities "^4.4.0" parseurl@~1.3.3: version "1.3.3" @@ -1518,11 +1412,6 @@ pidtree@0.6.0: resolved "https://registry.yarnpkg.com/pidtree/-/pidtree-0.6.0.tgz#90ad7b6d42d5841e69e0a2419ef38f8883aa057c" integrity sha512-eG2dWTVw5bzqGRztnHExczNxt5VGsE6OwTeCG3fdUf9KBsZzO3R5OIIIzWR+iZA0NtZ+RDVdaoE2dK1cn6jH4g== -prelude-ls@~1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54" - integrity sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ= - prettier@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/prettier/-/prettier-3.1.0.tgz#c6d16474a5f764ea1a4a373c593b779697744d5e" @@ -1556,6 +1445,11 @@ punycode@^2.1.1: resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A== +punycode@^2.3.1: + version "2.3.1" + resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.3.1.tgz#027422e2faec0b25e1549c3e1bd8309b9133b6e5" + integrity sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg== + qs@6.11.0, qs@^6.5.1: version "6.11.0" resolved "https://registry.yarnpkg.com/qs/-/qs-6.11.0.tgz#fd0d963446f7a65e1367e01abd85429453f0c37a" @@ -1608,20 +1502,25 @@ rfdc@^1.3.0: resolved "https://registry.yarnpkg.com/rfdc/-/rfdc-1.3.0.tgz#d0b7c441ab2720d05dc4cf26e01c89631d9da08b" integrity sha512-V2hovdzFbOi77/WajaSMXk2OLm+xNIeQdMMuB7icj7bk6zi2F8GGAxigcnDFpJHbNyNcgyJDiP+8nOrY5cZGrA== +rrweb-cssom@^0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/rrweb-cssom/-/rrweb-cssom-0.6.0.tgz#ed298055b97cbddcdeb278f904857629dec5e0e1" + integrity sha512-APM0Gt1KoXBz0iIkkdB/kfvGOwC4UuJFeG/c+yV7wSc7q96cG/kJ0HiYCnzivD9SB53cLV1MlHFNfOuPaadYSw== + safe-buffer@5.2.1, safe-buffer@^5.0.1: version "5.2.1" resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== -"safer-buffer@>= 2.1.2 < 3": +"safer-buffer@>= 2.1.2 < 3", "safer-buffer@>= 2.1.2 < 3.0.0": version "2.1.2" resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== -saxes@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/saxes/-/saxes-5.0.1.tgz#eebab953fa3b7608dbe94e5dadb15c888fa6696d" - integrity sha512-5LBh1Tls8c9xgGjw3QrMwETmTMVk0oFgvrFSvWx62llR2hcEInrKNZ2GZCCuuy2lvWrdl5jhbpeqc5hRYKFOcw== +saxes@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/saxes/-/saxes-6.0.0.tgz#fe5b4a4768df4f14a201b1ba6a65c1f3d9988cc5" + integrity sha512-xAg7SOnEhrm5zI3puOOKyy1OMcMlIJZYNJY7xLBwSze0UjhPLnWfj2GF2EpT0jmzaJKIWKHLsaSSajf35bcYnA== dependencies: xmlchars "^2.2.0" @@ -1720,7 +1619,7 @@ slice-ansi@^7.0.0: ansi-styles "^6.2.1" is-fullwidth-code-point "^5.0.0" -source-map@^0.6.1, source-map@~0.6.1: +source-map@^0.6.1: version "0.6.1" resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== @@ -1792,7 +1691,7 @@ touch@^3.1.0: dependencies: nopt "~1.0.10" -tough-cookie@^4.0.0: +tough-cookie@^4.1.3: version "4.1.3" resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-4.1.3.tgz#97b9adb0728b42280aa3d814b6b999b2ff0318bf" integrity sha512-aX/y5pVRkfRnfmuX+OdbSdXvPe6ieKX/G2s7e98f4poJHnqH3281gDPm/metm6E/WRamfx7WC4HUqkWHfQHprw== @@ -1802,25 +1701,18 @@ tough-cookie@^4.0.0: universalify "^0.2.0" url-parse "^1.5.3" -tr46@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/tr46/-/tr46-2.1.0.tgz#fa87aa81ca5d5941da8cbf1f9b749dc969a4e240" - integrity sha512-15Ih7phfcdP5YxqiB+iDtLoaTz4Nd35+IiAv0kQ5FNKHzXgdWqPoTIqEDDJmXceQt4JZk6lVPT8lnDlPpGDppw== +tr46@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/tr46/-/tr46-5.0.0.tgz#3b46d583613ec7283020d79019f1335723801cec" + integrity sha512-tk2G5R2KRwBd+ZN0zaEXpmzdKyOYksXwywulIX95MBODjSzMIuQnQ3m8JxgbhnL1LeVo7lqQKsYa1O3Htl7K5g== dependencies: - punycode "^2.1.1" + punycode "^2.3.1" tr46@~0.0.3: version "0.0.3" resolved "https://registry.yarnpkg.com/tr46/-/tr46-0.0.3.tgz#8184fd347dac9cdc185992f3a6622e14b9d9ab6a" integrity sha1-gYT9NH2snNwYWZLzpmIuFLnZq2o= -type-check@~0.3.2: - version "0.3.2" - resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.3.2.tgz#5884cab512cf1d355e3fb784f30804b2b520db72" - integrity sha1-WITKtRLPHTVeP7eE8wgEsrUg23I= - dependencies: - prelude-ls "~1.1.2" - type-fest@^3.0.0: version "3.13.1" resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-3.13.1.tgz#bb744c1f0678bea7543a2d1ec24e83e68e8c8706" @@ -1890,46 +1782,42 @@ vary@~1.1.2: resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc" integrity sha1-IpnwLG3tMNSllhsLn3RSShj2NPw= -w3c-hr-time@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz#0a89cdf5cc15822df9c360543676963e0cc308cd" - integrity sha512-z8P5DvDNjKDoFIHK7q8r8lackT6l+jo/Ye3HOle7l9nICP9lf1Ci25fy9vHd0JOWewkIFzXIEig3TdKT7JQ5fQ== - dependencies: - browser-process-hrtime "^1.0.0" - -w3c-xmlserializer@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/w3c-xmlserializer/-/w3c-xmlserializer-2.0.0.tgz#3e7104a05b75146cc60f564380b7f683acf1020a" - integrity sha512-4tzD0mF8iSiMiNs30BiLO3EpfGLZUT2MSX/G+o7ZywDzliWQ3OPtTZ0PTC3B3ca1UAf4cJMHB+2Bf56EriJuRA== +w3c-xmlserializer@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/w3c-xmlserializer/-/w3c-xmlserializer-5.0.0.tgz#f925ba26855158594d907313cedd1476c5967f6c" + integrity sha512-o8qghlI8NZHU1lLPrpi2+Uq7abh4GGPpYANlalzWxyWteJOCsr/P+oPBA49TOLu5FTZO4d3F9MnWJfiMo4BkmA== dependencies: - xml-name-validator "^3.0.0" + xml-name-validator "^5.0.0" webidl-conversions@^3.0.0: version "3.0.1" resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-3.0.1.tgz#24534275e2a7bc6be7bc86611cc16ae0a5654871" integrity sha1-JFNCdeKnvGvnvIZhHMFq4KVlSHE= -webidl-conversions@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-5.0.0.tgz#ae59c8a00b121543a2acc65c0434f57b0fc11aff" - integrity sha512-VlZwKPCkYKxQgeSbH5EyngOmRp7Ww7I9rQLERETtf5ofd9pGeswWiOtogpEO850jziPRarreGxn5QIiTqpb2wA== - -webidl-conversions@^6.1.0: - version "6.1.0" - resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-6.1.0.tgz#9111b4d7ea80acd40f5270d666621afa78b69514" - integrity sha512-qBIvFLGiBpLjfwmYAaHPXsn+ho5xZnGvyGvsarywGNc8VyQJUMHJ8OBKGGrPER0okBeMDaan4mNBlgBROxuI8w== +webidl-conversions@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-7.0.0.tgz#256b4e1882be7debbf01d05f0aa2039778ea080a" + integrity sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g== -whatwg-encoding@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz#5abacf777c32166a51d085d6b4f3e7d27113ddb0" - integrity sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw== +whatwg-encoding@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/whatwg-encoding/-/whatwg-encoding-3.1.1.tgz#d0f4ef769905d426e1688f3e34381a99b60b76e5" + integrity sha512-6qN4hJdMwfYBtE3YBTTHhoeuUrDBPZmbQaxWAqSALV/MeEnR5z1xd8UKud2RAkFoPkmB+hli1TZSnyi84xz1vQ== dependencies: - iconv-lite "0.4.24" + iconv-lite "0.6.3" -whatwg-mimetype@^2.3.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz#3d4b1e0312d2079879f826aff18dbeeca5960fbf" - integrity sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g== +whatwg-mimetype@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/whatwg-mimetype/-/whatwg-mimetype-4.0.0.tgz#bc1bf94a985dc50388d54a9258ac405c3ca2fc0a" + integrity sha512-QaKxh0eNIi2mE9p2vEdzfagOKHCcj1pJ56EEHGQOVxp8r9/iszLUUV7v89x9O1p/T+NlTM5W7jW6+cz4Fq1YVg== + +whatwg-url@^14.0.0: + version "14.0.0" + resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-14.0.0.tgz#00baaa7fd198744910c4b1ef68378f2200e4ceb6" + integrity sha512-1lfMEm2IEr7RIV+f4lUNPOqfFL+pO+Xw3fJSqmjX9AbXcXcYOkCe1P6+9VBZB6n94af16NfZf+sSk0JCBZC9aw== + dependencies: + tr46 "^5.0.0" + webidl-conversions "^7.0.0" whatwg-url@^5.0.0: version "5.0.0" @@ -1939,15 +1827,6 @@ whatwg-url@^5.0.0: tr46 "~0.0.3" webidl-conversions "^3.0.0" -whatwg-url@^8.0.0, whatwg-url@^8.5.0: - version "8.7.0" - resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-8.7.0.tgz#656a78e510ff8f3937bc0bcbe9f5c0ac35941b77" - integrity sha512-gAojqb/m9Q8a5IV96E3fHJM70AzCkgt4uXYX2O7EmuyOnLrViCQlsEBmF9UQIu3/aeAIp2U17rtbpZWNntQqdg== - dependencies: - lodash "^4.7.0" - tr46 "^2.1.0" - webidl-conversions "^6.1.0" - which@^2.0.1: version "2.0.2" resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" @@ -1955,11 +1834,6 @@ which@^2.0.1: dependencies: isexe "^2.0.0" -word-wrap@~1.2.3: - version "1.2.4" - resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.4.tgz#cb4b50ec9aca570abd1f52f33cd45b6c61739a9f" - integrity sha512-2V81OA4ugVo5pRo46hAoD2ivUJx8jXmWXfUkY4KFNw0hEptvN0QfH3K4nHiwzGeKl5rFKedV48QVoqYavy4YpA== - wordwrap@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-1.0.0.tgz#27584810891456a4171c8d0226441ade90cbcaeb" @@ -1979,15 +1853,15 @@ wrappy@1: resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8= -ws@^7.4.5: - version "7.5.3" - resolved "https://registry.yarnpkg.com/ws/-/ws-7.5.3.tgz#160835b63c7d97bfab418fc1b8a9fced2ac01a74" - integrity sha512-kQ/dHIzuLrS6Je9+uv81ueZomEwH0qVYstcAQ4/Z93K8zeko9gtAbttJWzoC5ukqXY1PpoouV3+VSOqEAFt5wg== +ws@^8.14.2: + version "8.15.1" + resolved "https://registry.yarnpkg.com/ws/-/ws-8.15.1.tgz#271ba33a45ca0cc477940f7f200cd7fba7ee1997" + integrity sha512-W5OZiCjXEmk0yZ66ZN82beM5Sz7l7coYxpRkzS+p9PP+ToQry8szKh+61eNktr7EA9DOwvFGhfC605jDHbP6QQ== -xml-name-validator@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/xml-name-validator/-/xml-name-validator-3.0.0.tgz#6ae73e06de4d8c6e47f9fb181f78d648ad457c6a" - integrity sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw== +xml-name-validator@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/xml-name-validator/-/xml-name-validator-5.0.0.tgz#82be9b957f7afdacf961e5980f1bf227c0bf7673" + integrity sha512-EvGK8EJ3DhaHfbRlETOWAS5pO9MZITeauHKJyb8wyajUfQUenkIg2MvLDTZ4T/TgIcm3HU0TFBgWWboAZ30UHg== xmlchars@^2.2.0: version "2.2.0"