From 0e2ef97eb07a9a24f732d00a05b87e11a0e47c10 Mon Sep 17 00:00:00 2001 From: Samuel Imolorhe Date: Wed, 5 Jun 2024 23:50:59 +0200 Subject: [PATCH] added cwex package for manifest version 3 extensions --- .gitignore | 1 + ...t-update-index.js => ext-update-index.mjs} | 11 +- chrome-ext-files/js/background.js | 30 +- cwex.old.yml | 39 + cwex.yml | 31 +- lerna.json | 4 +- libs/cwex/package.json | 33 + libs/cwex/src/__mocks__/web-ext.js | 7 + .../src/__snapshots__/config.spec.ts.snap | 23 + libs/cwex/src/cli.spec.ts | 26 + libs/cwex/src/cli.ts | 34 + libs/cwex/src/commands/build.spec.ts | 155 ++ libs/cwex/src/commands/build.ts | 114 ++ libs/cwex/src/config.spec.ts | 56 + libs/cwex/src/config.ts | 254 ++++ .../__snapshots__/build-command.spec.ts.snap | 19 + libs/cwex/src/e2e/build-command.spec.ts | 37 + .../e2e/e2e-test-out/chrome-build/chrome.zip | Bin 0 -> 435 bytes .../src/e2e/e2e-test-out/chrome-files/file1 | 0 .../e2e/e2e-test-out/chrome-files/file2.json | 0 .../e2e-test-out/chrome-files/manifest.json | 6 + .../mozilla-build/test_extension-0.2.0.zip | Bin 0 -> 382 bytes .../src/e2e/e2e-test-out/mozilla-files/file1 | 0 .../e2e/e2e-test-out/mozilla-files/file2.json | 0 .../e2e-test-out/mozilla-files/manifest.json | 6 + libs/cwex/src/e2e/fixtures/cwex.yml | 7 + .../src/e2e/fixtures/random_includes/file1 | 0 .../e2e/fixtures/random_includes/file2.json | 0 libs/cwex/src/index.spec.ts | 3 + libs/cwex/src/index.ts | 17 + .../targets/__snapshots__/chrome.spec.ts.snap | 25 + .../__snapshots__/mozilla.spec.ts.snap | 27 + libs/cwex/src/targets/chrome.spec.ts | 135 ++ libs/cwex/src/targets/chrome.ts | 98 ++ libs/cwex/src/targets/mozilla.spec.ts | 91 ++ libs/cwex/src/targets/mozilla.ts | 95 ++ libs/cwex/src/types.d.ts | 1 + libs/cwex/src/utils/index.spec.ts | 64 + libs/cwex/src/utils/index.ts | 26 + libs/cwex/src/utils/logger.spec.ts | 43 + libs/cwex/src/utils/logger.ts | 9 + libs/cwex/tsconfig.json | 111 ++ package.json | 2 +- packages/altair-app/src/index.html | 2 +- yarn.lock | 1247 +++++++++++------ 45 files changed, 2404 insertions(+), 485 deletions(-) rename bin/{ext-update-index.js => ext-update-index.mjs} (53%) create mode 100644 cwex.old.yml create mode 100644 libs/cwex/package.json create mode 100644 libs/cwex/src/__mocks__/web-ext.js create mode 100644 libs/cwex/src/__snapshots__/config.spec.ts.snap create mode 100644 libs/cwex/src/cli.spec.ts create mode 100644 libs/cwex/src/cli.ts create mode 100644 libs/cwex/src/commands/build.spec.ts create mode 100644 libs/cwex/src/commands/build.ts create mode 100644 libs/cwex/src/config.spec.ts create mode 100644 libs/cwex/src/config.ts create mode 100644 libs/cwex/src/e2e/__snapshots__/build-command.spec.ts.snap create mode 100644 libs/cwex/src/e2e/build-command.spec.ts create mode 100644 libs/cwex/src/e2e/e2e-test-out/chrome-build/chrome.zip create mode 100644 libs/cwex/src/e2e/e2e-test-out/chrome-files/file1 create mode 100644 libs/cwex/src/e2e/e2e-test-out/chrome-files/file2.json create mode 100644 libs/cwex/src/e2e/e2e-test-out/chrome-files/manifest.json create mode 100644 libs/cwex/src/e2e/e2e-test-out/mozilla-build/test_extension-0.2.0.zip create mode 100644 libs/cwex/src/e2e/e2e-test-out/mozilla-files/file1 create mode 100644 libs/cwex/src/e2e/e2e-test-out/mozilla-files/file2.json create mode 100644 libs/cwex/src/e2e/e2e-test-out/mozilla-files/manifest.json create mode 100644 libs/cwex/src/e2e/fixtures/cwex.yml create mode 100644 libs/cwex/src/e2e/fixtures/random_includes/file1 create mode 100644 libs/cwex/src/e2e/fixtures/random_includes/file2.json create mode 100644 libs/cwex/src/index.spec.ts create mode 100644 libs/cwex/src/index.ts create mode 100644 libs/cwex/src/targets/__snapshots__/chrome.spec.ts.snap create mode 100644 libs/cwex/src/targets/__snapshots__/mozilla.spec.ts.snap create mode 100644 libs/cwex/src/targets/chrome.spec.ts create mode 100644 libs/cwex/src/targets/chrome.ts create mode 100644 libs/cwex/src/targets/mozilla.spec.ts create mode 100644 libs/cwex/src/targets/mozilla.ts create mode 100644 libs/cwex/src/types.d.ts create mode 100644 libs/cwex/src/utils/index.spec.ts create mode 100644 libs/cwex/src/utils/index.ts create mode 100644 libs/cwex/src/utils/logger.spec.ts create mode 100644 libs/cwex/src/utils/logger.ts create mode 100644 libs/cwex/tsconfig.json diff --git a/.gitignore b/.gitignore index 8be1b9454c..26448a5a06 100644 --- a/.gitignore +++ b/.gitignore @@ -16,6 +16,7 @@ out/ *.nex extension-builds/ coverage +.coverage/ dist build diff --git a/bin/ext-update-index.js b/bin/ext-update-index.mjs similarity index 53% rename from bin/ext-update-index.js rename to bin/ext-update-index.mjs index db5d3fff74..89219fca9e 100644 --- a/bin/ext-update-index.js +++ b/bin/ext-update-index.mjs @@ -1,9 +1,12 @@ -const path = require('path'); -const fs = require('fs'); -module.exports = ({ extensionFilesDir }) => { +import path from 'path'; +import fs from 'fs'; +export default ({ extensionFilesDir }) => { const indexFilePath = path.resolve(extensionFilesDir, 'index.html'); const indexFileStr = fs.readFileSync(indexFilePath, 'utf8'); - const output = indexFileStr.replace('', ``); + const output = indexFileStr.replace( + '', + `` + ); fs.writeFileSync(indexFilePath, output, 'utf8'); console.log('Updated index.html'); diff --git a/chrome-ext-files/js/background.js b/chrome-ext-files/js/background.js index 1c29b6b929..b1430424f7 100644 --- a/chrome-ext-files/js/background.js +++ b/chrome-ext-files/js/background.js @@ -1,5 +1,5 @@ /* global chrome */ -(function() { +(function () { const MAX_EXT_LOAD_COUNT = 30; let curTab = { id: null, @@ -18,7 +18,7 @@ // Create a new tab for the extension function createNewTab() { - chrome.tabs.create({ url: 'index.html' }, function(tab) { + chrome.tabs.create({ url: 'index.html' }, function (tab) { curTab = { id: tab.id, url: tab.url, @@ -32,7 +32,7 @@ // Focus on the open extension tab function focusTab(tabId) { const updateProperties = { active: true }; - chrome.tabs.update(tabId, updateProperties, function(tab) {}); + chrome.tabs.update(tabId, updateProperties, function (tab) {}); } function openChangeLog() { @@ -40,16 +40,14 @@ { showChangeLog: true, }, - function(items) { + function (items) { if (items.showChangeLog) { chrome.tabs.create( { url: 'https://altairgraphql.dev/updated', }, - function(tab) { - console.log( - 'New tab launched with https://altairgraphql.dev/updated' - ); + function (tab) { + console.log('New tab launched with https://altairgraphql.dev/updated'); } ); } @@ -65,12 +63,12 @@ userDonated: false, extLoadCount: 0, }, - function(items) { + function (items) { if (!items.userDonated) { console.log('extension loaded count: ', items.extLoadCount); if (items.extLoadCount > MAX_EXT_LOAD_COUNT) { // show donation page - chrome.tabs.create({ url: 'donate.html' }, function(tab) { + chrome.tabs.create({ url: 'donate.html' }, function (tab) { console.log('New tab launched with donation.'); }); chrome.storage.sync.set({ @@ -88,11 +86,11 @@ } // Open the extension tab when the extension icon is clicked - chrome.browserAction.onClicked.addListener(function(tab) { + chrome.action.onClicked.addListener(function (tab) { if (!curTab || !curTab.id) { createNewTab(); } else { - chrome.tabs.get(curTab.id, function(tab) { + chrome.tabs.get(curTab.id, function (tab) { console.log(chrome.runtime.id, tab.url); if (tab && tab.url && tab.url.includes(getExtensionId())) { focusTab(curTab.id); @@ -104,14 +102,14 @@ }); // When a tab is closed, check if it is the extension tab that was closed, and unset curTabId - chrome.tabs.onRemoved.addListener(function(tabId) { + chrome.tabs.onRemoved.addListener(function (tabId) { if (tabId === curTab.id) { curTab = {}; } }); // Show the update notification after every new update - chrome.runtime.onInstalled.addListener(function(details) { + chrome.runtime.onInstalled.addListener(function (details) { if (details.reason === 'update') { chrome.notifications.create( { @@ -120,12 +118,12 @@ title: 'Altair has been updated', message: 'Click to view changelog.', }, - function(notifId) {} + function (notifId) {} ); } }); - chrome.notifications.onClicked.addListener(function(notifId) { + chrome.notifications.onClicked.addListener(function (notifId) { openChangeLog(); }); })(); diff --git a/cwex.old.yml b/cwex.old.yml new file mode 100644 index 0000000000..67f8e3560e --- /dev/null +++ b/cwex.old.yml @@ -0,0 +1,39 @@ +include: + - packages/altair-app/dist/* + - chrome-ext-files/* +exclude: + - dist\/stats\.json + - dist\/assets\/img\/readme +outDir: extension-builds +outFile: build.zip +beforeCompile: bin/ext-update-index.js +manifestOptions: + name: Altair GraphQL Client + short_name: Altair + description: A beautiful feature-rich GraphQL client for all platforms + version: 6.4.2 + icons: + 16: assets/img/altair_logo_128.png + 48: assets/img/altair_logo_128.png + 128: assets/img/altair_logo_128.png + browser_action: + default_icon: assets/img/altair_logo_128.png + permissions: + - http://*/ + - https://*/ + - tabs + - storage + - notifications + # this CSP has been modified to allow unsafe-eval but the CSP in the index.html remains strict. This allows the web worker to have the less strict CSP. + # Note: firefox ignores the CSP if it contains unsafe-inline + content_security_policy: "script-src 'self' 'sha256-765ndVO8s0mJNdlCDVQJVuWyBpugFWusu1COU8BNbI8=' 'sha256-kFTKSG2YSVB69S6DWzferO6LmwbqfHmYBTqvVbPEp4I=' 'unsafe-eval' https://cdn.jsdelivr.net https://apis.google.com https://www.gstatic.com/ https://*.firebaseio.com https://www.googleapis.com localhost:* http://localhost:8002 http://localhost:8080; object-src 'self';" + background: + scripts: + - js/background.js + options_ui: + page: options.html + open_in_tab: false + offline_enabled: true + browser_specific_settings: + gecko: + strict_min_version: '60.0' diff --git a/cwex.yml b/cwex.yml index c9008b3731..194f0ab136 100644 --- a/cwex.yml +++ b/cwex.yml @@ -6,7 +6,7 @@ exclude: - dist\/assets\/img\/readme outDir: extension-builds outFile: build.zip -beforeCompile: bin/ext-update-index.js +beforeCompile: bin/ext-update-index.mjs manifestOptions: name: Altair GraphQL Client short_name: Altair @@ -16,24 +16,41 @@ manifestOptions: 16: assets/img/altair_logo_128.png 48: assets/img/altair_logo_128.png 128: assets/img/altair_logo_128.png - browser_action: + action: default_icon: assets/img/altair_logo_128.png permissions: - - http://*/ - - https://*/ - tabs - storage - notifications - # this CSP has been modified to allow unsafe-eval but the CSP in the index.html remains strict. This allows the web worker to have the less strict CSP. - # Note: firefox ignores the CSP if it contains unsafe-inline - content_security_policy: "script-src 'self' 'sha256-765ndVO8s0mJNdlCDVQJVuWyBpugFWusu1COU8BNbI8=' 'sha256-kFTKSG2YSVB69S6DWzferO6LmwbqfHmYBTqvVbPEp4I=' 'unsafe-eval' https://cdn.jsdelivr.net https://apis.google.com https://www.gstatic.com/ https://*.firebaseio.com https://www.googleapis.com localhost:* http://localhost:8002 http://localhost:8080; object-src 'self';" + host_permissions: + - http://*/ + - https://*/ + content_security_policy: + # this CSP has been modified to allow unsafe-eval but the CSP in the index.html remains strict. This allows the web worker to have the less strict CSP. + # Note: firefox ignores the CSP if it contains unsafe-inline + # Note: Don't forget to update the CSP in the index.html file + # + # Most script-src values are unsupported in mv3 https://developer.chrome.com/docs/extensions/develop/migrate/improve-security#remove-unsupported-csv + # extension_pages: "script-src 'self' 'sha256-765ndVO8s0mJNdlCDVQJVuWyBpugFWusu1COU8BNbI8=' 'sha256-btk6arYQcHAX3O853bPKjrJz/yX/iuv4n0kXWYdJlEE=' 'sha256-kFTKSG2YSVB69S6DWzferO6LmwbqfHmYBTqvVbPEp4I='; object-src 'self';" + sandbox: "sandbox allow-scripts allow-forms allow-popups allow-modals; script-src 'self' 'sha256-765ndVO8s0mJNdlCDVQJVuWyBpugFWusu1COU8BNbI8=' 'sha256-btk6arYQcHAX3O853bPKjrJz/yX/iuv4n0kXWYdJlEE=' 'sha256-kFTKSG2YSVB69S6DWzferO6LmwbqfHmYBTqvVbPEp4I=' 'unsafe-eval' https://cdn.jsdelivr.net https://apis.google.com https://www.gstatic.com/ https://*.firebaseio.com https://www.googleapis.com localhost:* http://localhost:8002 http://localhost:8080; object-src 'self';" background: scripts: - js/background.js + service_worker: js/background.js options_ui: page: options.html open_in_tab: false offline_enabled: true + web_accessible_resources: + - resources: + - '*.css' + - '*.woff' + - '*.woff2' + matches: + - '' + # sandbox: + # pages: + # - index.html browser_specific_settings: gecko: strict_min_version: '60.0' diff --git a/lerna.json b/lerna.json index 5dc170e2b3..7535125d11 100644 --- a/lerna.json +++ b/lerna.json @@ -1,7 +1,5 @@ { - "packages": [ - "packages/*" - ], + "packages": ["packages/*", "libs/*"], "version": "7.2.3", "registry": "https://registry.npmjs.org/", "npmClient": "yarn", diff --git a/libs/cwex/package.json b/libs/cwex/package.json new file mode 100644 index 0000000000..51d0f32257 --- /dev/null +++ b/libs/cwex/package.json @@ -0,0 +1,33 @@ +{ + "name": "altair-cwex", + "version": "6.4.2", + "description": "A CLI tool for creating and managing cross-platform browser extensions", + "bin": { + "cwex": "dist/cli.js" + }, + "type": "module", + "main": "dist/index.js", + "license": "MIT", + "private": true, + "dependencies": { + "archiver": "^7.0.1", + "commander": "^12.0.0", + "debug": "^4.3.4", + "find-up": "^7.0.0", + "fs-extra": "^11.2.0", + "globby": "^14.0.1", + "web-ext": "^7.11.0", + "yaml": "^2.4.1" + }, + "devDependencies": { + "@types/archiver": "^6.0.2", + "@types/chrome": "^0.0.266", + "@types/debug": "^4.1.12", + "@types/firefox-webext-browser": "^120.0.3", + "@types/node": "^20.12.7" + }, + "scripts": { + "build": "tsc", + "prepare": "yarn build" + } +} diff --git a/libs/cwex/src/__mocks__/web-ext.js b/libs/cwex/src/__mocks__/web-ext.js new file mode 100644 index 0000000000..f621934daf --- /dev/null +++ b/libs/cwex/src/__mocks__/web-ext.js @@ -0,0 +1,7 @@ +module.exports = { + default: { + cmd: { + build: jest.fn(), + } + } +}; diff --git a/libs/cwex/src/__snapshots__/config.spec.ts.snap b/libs/cwex/src/__snapshots__/config.spec.ts.snap new file mode 100644 index 0000000000..40f968bb14 --- /dev/null +++ b/libs/cwex/src/__snapshots__/config.spec.ts.snap @@ -0,0 +1,23 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`config getConfig should merge config from config file with default config 1`] = ` +Object { + "beforeCompile": "./new/before-compile.js", + "exclude": Array [ + "new.exclude.pattern", + ], + "include": Array [ + "file1", + "file2", + ], + "manifestOptions": Object { + "name": "New test", + }, + "outDir": "out", + "rootDir": "./new/root", + "targets": Array [ + "new-target1", + "new-target2", + ], +} +`; diff --git a/libs/cwex/src/cli.spec.ts b/libs/cwex/src/cli.spec.ts new file mode 100644 index 0000000000..c4a3a88445 --- /dev/null +++ b/libs/cwex/src/cli.spec.ts @@ -0,0 +1,26 @@ +// import commander from 'commander'; +// import { buildProject } from './index'; + +// jest.mock('./index'); +// jest.mock('commander', () => { + +// const commandInstance = {} as any; +// const commandInstanceMethod = jest.fn(() => commandInstance); +// commandInstance.command = commandInstanceMethod; +// commandInstance.description = commandInstanceMethod; +// commandInstance.option = commandInstanceMethod; +// commandInstance.action = jest.fn(cb => cb({}) || commandInstance); +// commandInstance.parse = commandInstanceMethod; + +// return { +// Command: jest.fn(() => { +// return commandInstance; +// }) +// }; +// }); + +// describe('cli', () => { +// it('executes successfully', () => { +// require('./cli'); +// }); +// }); diff --git a/libs/cwex/src/cli.ts b/libs/cwex/src/cli.ts new file mode 100644 index 0000000000..838fcdad91 --- /dev/null +++ b/libs/cwex/src/cli.ts @@ -0,0 +1,34 @@ +#!/usr/bin/env node + +import { Command } from 'commander'; +import { setLogging } from './utils/logger.js'; + +import { buildProject } from './index.js'; + +const program = new Command(); +program + .command('build') + .description('builds extensions') + .option('-c, --config ', 'specify the config file') + .option('--debug', 'show debugging information') + .action((cmd) => { + setLogging(cmd.debug); + return buildProject({ + configPath: cmd.config, + }); + }); +program.parse(process.argv); + +export default program; + +// build project +// Compile assets: +/* + out/ + chrome-extension/ + includes** + manifest.json + mozilla-extension/ + includes** + manifest.json +*/ diff --git a/libs/cwex/src/commands/build.spec.ts b/libs/cwex/src/commands/build.spec.ts new file mode 100644 index 0000000000..a45ac095db --- /dev/null +++ b/libs/cwex/src/commands/build.spec.ts @@ -0,0 +1,155 @@ +// import { buildProject, buildTarget } from './build'; +// import fsExtra from 'fs-extra'; +// import path from 'path'; +// const config = require('../config'); +// const utils = require('../utils'); +// const build = require('./build'); + +// jest.mock('fs-extra', () => { +// return { +// remove: jest.fn(), +// copy: jest.fn((src, dest, opts) => opts.filter(src)), +// outputFile: jest.fn(), +// }; +// }); +// jest.mock('path', () => { +// return { +// resolve: jest.fn((...args) => args.join('/')), +// basename: jest.fn(_ => _), +// posix: {} +// } +// }); +// config.getConfig = jest.fn(); +// utils.getFiles = jest.fn(); +// utils.getResolvedModule = jest.fn(); +// utils.getResolvedTargetModule = jest.fn(); + +// describe('buildTarget', () => { +// beforeEach(() => { +// utils.getResolvedModule.mockImplementation((path: string) => `/path/to/module/${path}`); +// utils.getResolvedTargetModule.mockImplementation((path: string) => `/path/to/target/module/${path}`); +// }); +// afterEach(() => { +// utils.getResolvedModule.mockClear(); +// utils.getResolvedTargetModule.mockClear(); +// utils.getFiles.mockClear(); +// }); + +// it('should do nothing if target module is not resolved (found)', async () => { +// utils.getResolvedTargetModule.mockImplementation((path: string) => ``); +// const generateExtensionInfo = jest.fn(); +// const compileExtension = jest.fn(); +// const _req = jest.fn((path: string) => { +// return { +// compileExtension, +// generateExtensionInfo, +// }; +// }); +// await buildTarget({ +// targets: [ 'target1' ], +// exclude: [ 'exclude\/regex' ], +// beforeCompile: '/path/to/before-compile-script.js', +// include: [ 'file3', 'file4' ], +// rootDir: '', +// outDir: '', +// }, 'target1', { _require: _req }); +// expect(generateExtensionInfo).not.toHaveBeenCalled(); +// expect(compileExtension).not.toHaveBeenCalled(); +// }); + +// it('should run and compile extension', async () => { +// utils.getResolvedModule.mockImplementation((path: string) => `/path/to/module/${path}`); +// utils.getResolvedTargetModule.mockImplementation((path: string) => `/path/to/target/module/${path}`); +// utils.getFiles.mockImplementation(() => Promise.resolve([ 'file3', 'file4' ])); +// const generateExtensionInfo = jest.fn(() => Promise.resolve({ +// content: 'test content', +// fileName: 'test.json', +// })); +// const compileExtension = jest.fn(); +// const beforeCompileScript = jest.fn(); +// const _req = jest.fn((path: string) => { +// if (path.includes('before-compile-script.js')) { +// return beforeCompileScript; +// } +// return { +// compileExtension, +// generateExtensionInfo, +// }; +// }); + +// await buildTarget({ +// targets: [ 'target1' ], +// exclude: [ 'exclude\/regex' ], +// beforeCompile: '/path/to/before-compile-script.js', +// include: [ 'file3', 'file4' ], +// rootDir: '', +// outDir: '', +// }, 'target1', { _require: _req }); + +// expect(utils.getResolvedModule).toHaveBeenCalled(); +// expect(fsExtra.copy).toHaveBeenCalledWith('file3', '/target1-files/file3', expect.anything()); +// expect(fsExtra.copy).toHaveBeenCalledWith('file4', '/target1-files/file4', expect.anything()); +// expect(fsExtra.outputFile).toHaveBeenCalled(); +// expect(fsExtra.outputFile).toHaveBeenCalledWith(expect.stringMatching(/test.json$/), 'test content', 'utf8'); +// }); +// }); + +// describe('buildProject', () => { +// let _buildTarget: any; +// beforeEach(() => { +// _buildTarget = build.buildTarget; +// build.buildTarget = jest.fn(); +// }); +// afterEach(() => { +// build.buildTarget = _buildTarget; +// config.getConfig.mockClear(); +// }); + +// it('should run and compile extension', async () => { +// config.getConfig.mockImplementation(() => ({ +// targets: [ 'target1' ], +// exclude: [ 'exclude\/regex' ], +// beforeCompile: '/path/to/before-compile-script.js', +// outDir: 'test-out', +// rootDir: 'root', +// })); +// await buildProject(); +// expect(build.buildTarget).toHaveBeenCalledWith({ +// targets: [ 'target1' ], +// exclude: [ 'exclude\/regex' ], +// beforeCompile: '/path/to/before-compile-script.js', +// outDir: 'test-out', +// rootDir: 'root', +// }, 'target1', expect.objectContaining({ +// outDir: 'root/test-out', +// })); +// }); + +// it('should merge target-specific config when passing config to target plugin', async () => { +// config.getConfig.mockImplementation(() => ({ +// targets: [ 'target1' ], +// exclude: [ 'exclude\/regex' ], +// beforeCompile: '/path/to/before-compile-script.js', +// outDir: 'test-out', +// rootDir: 'root', +// targetOptions: { +// target1: { +// include: [ 'target1-file1', 'target1-file2' ], +// exclude: [ 'target1.exclude.pattern' ], +// } +// } +// })); +// // utils.getFiles.mockImplementation(() => Promise.resolve([ 'file1', 'file2' ])); +// await buildProject(); +// expect(build.buildTarget).toHaveBeenCalledWith(expect.objectContaining({ +// targets: [ 'target1' ], +// include: [ 'target1-file1', 'target1-file2' ], +// exclude: [ 'target1.exclude.pattern' ], +// beforeCompile: '/path/to/before-compile-script.js', +// outDir: 'test-out', +// rootDir: 'root', +// }), 'target1', expect.objectContaining({ +// outDir: 'root/test-out', +// })); +// }); +// }); diff --git a/libs/cwex/src/commands/build.ts b/libs/cwex/src/commands/build.ts new file mode 100644 index 0000000000..740303a213 --- /dev/null +++ b/libs/cwex/src/commands/build.ts @@ -0,0 +1,114 @@ +import { resolve, basename } from 'path'; +import { remove, copy, outputFile } from 'fs-extra'; +import { + getConfig, + ExtensionInfoGenerator, + ExtensionCompiler, + CwexConfig, +} from '../config.js'; +import { + getFiles, + getResolvedTargetModule, + getResolvedModule, +} from '../utils/index.js'; +import log from '../utils/logger.js'; + +export const buildTarget = async ( + config: CwexConfig, + target: string, + { outDir = '' } +) => { + const resolvedTargetModule = getResolvedTargetModule(target); + log('resolved module:', resolvedTargetModule); + if (!resolvedTargetModule) { + log('No module found for target:', target); + return; + } + const targetModule = await import(resolvedTargetModule); + const generateExtensionInfo: ExtensionInfoGenerator = + targetModule.generateExtensionInfo; + + // TODO: Build target steps: beforeBuild:target, afterBuild:target, preCompile:target, postCompile:target + + // Compile templates with config data + const extensionInfo = await generateExtensionInfo(config); + log(`${target} extension info:`, extensionInfo); + + const extensionOutDir = resolve(outDir, `${target}-files`); + log('Resolved output directory:', outDir); + + log('Removing output directory..'); + await remove(extensionOutDir); + + const includedFiles = await getFiles(config.include, { + ignore: config.exclude, + onlyFiles: false, + expandDirectories: false, + absolute: true, + cwd: resolve(config.rootDir), + }); + log('Included files:', includedFiles); + + log('Copying included files to output directory..'); + for (const file of includedFiles) { + await copy(file, resolve(extensionOutDir, basename(file)), { + filter: (src) => { + return !config.exclude.find((excludeRegex) => { + return new RegExp(excludeRegex).test(src); + }); + }, + }); + } + + log('Copying manifest file to output directory..'); + const manifestOutputPath = resolve(extensionOutDir, extensionInfo.fileName); + outputFile(manifestOutputPath, extensionInfo.content, 'utf8'); + + const compileExtension: ExtensionCompiler = targetModule.compileExtension; + + if (compileExtension) { + if (config.beforeCompile) { + const resolvedBeforeCompileModule = getResolvedModule( + resolve(process.cwd(), config.beforeCompile) + ); + if (resolvedBeforeCompileModule) { + log('Executing beforeCompile script..', resolvedBeforeCompileModule); + const beforeCompileModule = await import(resolvedBeforeCompileModule); + await beforeCompileModule.default({ + config, + extensionFilesDir: extensionOutDir, + }); + } + } + log('Compiling extension..'); + await compileExtension({ + config, + extensionFilesDir: extensionOutDir, + extensionBuildOutputDir: resolve(outDir, `${target}-build`), + }); + } + + log('Build completed.'); +}; + +export const buildProject = async ({ configPath = '' } = {}) => { + log('Current working directory:', process.cwd()); + const config = await getConfig(configPath); + log('Config:', config); + + const outDir = resolve(config.rootDir, config.outDir); + log('Resolved output directory:', outDir); + + log('Removing output directory..'); + await remove(outDir); + + log(`Building for ${config.targets.length} targets:`, config.targets); + for (const target of config.targets) { + let targetConfig = config; + if (config.targetOptions?.[target]) { + targetConfig = { ...config, ...config.targetOptions[target] }; + } + + await buildTarget(targetConfig, target, { outDir }); + } +}; diff --git a/libs/cwex/src/config.spec.ts b/libs/cwex/src/config.spec.ts new file mode 100644 index 0000000000..4ad716564b --- /dev/null +++ b/libs/cwex/src/config.spec.ts @@ -0,0 +1,56 @@ +// import { getConfig, defaultConfig } from './config'; +// import { findUp } from 'find-up'; +// import yaml from 'yaml'; +// import fs from 'fs'; + +// jest.mock('find-up'); +// jest.mock('yaml'); +// jest.mock('fs'); + +// describe('config', () => { +// describe('getConfig', () => { +// beforeEach(() => {}); +// afterEach(() => { +// (findUp as jest.MockedFunction).mockClear(); +// }); +// it('should return default config if config file not found', async () => { +// const config = await getConfig(); +// expect(config).toStrictEqual(defaultConfig); +// }); + +// it('should merge config from config file with default config', async () => { +// const configFromFile = { +// include: ['file1', 'file2'], +// rootDir: './new/root', +// beforeCompile: './new/before-compile.js', +// targets: ['new-target1', 'new-target2'], +// exclude: ['new.exclude.pattern'], +// manifestOptions: { +// name: 'New test', +// }, +// }; +// (findUp as jest.MockedFunction).mockImplementationOnce( +// async () => { +// return 'path/to/config/file'; +// } +// ); +// (yaml.parse as any).mockImplementation(() => { +// return configFromFile; +// }); +// const config = await getConfig('path/to/config'); +// expect(config).toMatchSnapshot(); +// }); +// it('should throw an error if config file is invalid', async () => { +// (findUp as jest.MockedFunction).mockImplementationOnce( +// async () => { +// return 'path/to/config/file'; +// } +// ); +// (yaml.parse as any).mockImplementation(() => { +// throw new Error('fake!'); +// }); + +// await expect(getConfig('path/to/config')).rejects.toThrow(); +// }); +// }); +// }); diff --git a/libs/cwex/src/config.ts b/libs/cwex/src/config.ts new file mode 100644 index 0000000000..a3fb96d4da --- /dev/null +++ b/libs/cwex/src/config.ts @@ -0,0 +1,254 @@ +import { readFileSync } from 'fs'; +import yaml from 'yaml'; +import log from './utils/logger.js'; +import { findUp } from 'find-up'; + +export enum EXTENSION_TARGET { + CHROME = 'chrome', + MOZILLA = 'mozilla', +} + +export const CONFIG_FILE_NAMES = ['cwex.yml', '.cwexrc']; + +interface ManifestIconMap { + 16: string; + 48: string; + 128: string; +} +export type ManifestIcons = ManifestIconMap | string; + +export interface ManifestBrowserAction { + default_icon?: ManifestIcons; + default_title?: string; + default_popup?: string; +} + +interface ManifestBackgroundOptions { + scripts: string[]; +} + +interface ManifestSettingsOptions { + page: string; + open_in_tab: boolean; +} + +type ManifestContentScriptRunAtOption = + | 'document_idle' + | 'document_start' + | 'document_end'; +export interface ManifestContentScriptOptions { + matches: string[]; + css?: string[]; + js?: string[]; + match_about_blank?: boolean; + exclude_matches?: string[]; + include_globs?: string[]; + exclude_globs?: string[]; + run_at?: ManifestContentScriptRunAtOption; + all_frames?: boolean; +} + +export interface ManifestBrowserSpecificSettings { + gecko?: { + id?: string; + strict_min_version?: string; + strict_max_version?: string; + update_url?: string; + }; +} + +export interface IDictionary { + [key: string]: v; +} + +export interface ManifestOptions { + version: string; + name: string; + short_name?: string; + description?: string; + + /** + * The extension's author, intended for display in the browser's user interface + * https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/manifest.json/author + */ + author?: string; + + icons?: ManifestIcons; + browser_action?: ManifestBrowserAction; + page_action?: ManifestBrowserAction; + + /** + * Use required permissions when they are needed for your extension’s basic functionality + * https://developer.chrome.com/extensions/permissions + */ + permissions?: string[]; + + /** + * Use optional permissions when they are needed for optional features in your extension + * https://developer.chrome.com/extensions/permissions + */ + optional_permissions?: string[]; + + /** + * specify the CSP for the extension + * https://developer.chrome.com/extensions/contentSecurityPolicy + */ + content_security_policy?: string; + + background?: ManifestBackgroundOptions; + options_ui?: ManifestSettingsOptions; + + /** + * whether the app or extension is expected to work offline + * https://developer.chrome.com/extensions/manifest/offline_enabled + */ + offline_enabled?: boolean; + + /** + * override selected Chrome settings + */ + chrome_settings_overrides?: IDictionary; + + /** + * override selected Chrome user interface properties + */ + chrome_ui_overrides?: IDictionary; + + /** + * substitute an HTML file from your extension for a page that Google Chrome normally provides + */ + chrome_url_overrides?: IDictionary; + + /** + * add keyboard shortcuts that trigger actions in your extension + */ + commands?: IDictionary; + + /** + * content scripts are files that run in the context of web pages. + * https://developer.chrome.com/extensions/content_scripts + */ + content_scripts?: IDictionary; + + /** + * Create a devtools extension + */ + devtools_page?: string; + + /** + * The URL of the homepage for this extension + * https://developer.chrome.com/extensions/manifest/homepage_url + */ + homepage_url?: string; + + /** + * specify how this extension will behave if allowed to run in incognito mode + * https://developer.chrome.com/extensions/manifest/incognito + */ + incognito?: 'spanning' | 'split' | 'not_allowed'; + + /** + * the version of chrome that your extension requires + * https://developer.chrome.com/extensions/manifest/minimum_chrome_version + */ + minimum_chrome_version?: string; + + /** + * allows you to register a keyword with Google Chrome's address bar + * https://developer.chrome.com/extensions/omnibox + */ + omnibox?: IDictionary; + + /** + * https://developer.chrome.com/extensions/manifest/storage + */ + storage?: IDictionary; + + /** + * array of strings specifying the paths of packaged resources + * that are expected to be usable in the context of a web page + * https://developer.chrome.com/extensions/manifest/web_accessible_resources + */ + web_accessible_resources?: IDictionary; + + /** + * contains keys that are specific to a particular host application + * https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/manifest.json/browser_specific_settings + */ + browser_specific_settings?: ManifestBrowserSpecificSettings; +} + +export interface CwexConfig { + /** array of glob matching patterns of files and directories */ + include: string[]; + + /** array of regular expressions matching files and directories to be excluded */ + exclude: string[]; + + /** target browser extensions */ + targets: string[]; + + /** root directory to find files and directories */ + rootDir: string; + + /** directory where the build would be compiled to */ + outDir: string; + + /** name of the file for the compiled extension */ + outFile?: string; + + /** path to script to execute before compiling extension */ + beforeCompile?: string; + + /** Manifest file options */ + manifestOptions?: chrome.runtime.ManifestV3; + + /** Config options specific to a target e.g. chrome: { include, exclude, etc } */ + targetOptions?: { [key: string]: CwexConfig }; +} + +export interface ExtensionInfo { + content: string; + fileName: string; + fileType: string; +} + +export type ExtensionInfoGenerator = (config: CwexConfig) => Promise; + +export interface ExtensionCompilerOption { + extensionFilesDir: string; + extensionBuildOutputDir: string; + config: CwexConfig; +} + +export type ExtensionCompiler = (opts: ExtensionCompilerOption) => Promise; + +export const defaultConfig: CwexConfig = { + include: [], + exclude: [], + targets: [...Object.values(EXTENSION_TARGET)], + rootDir: './', + outDir: 'out', +}; + +export const getConfigFile = async () => { + return findUp(CONFIG_FILE_NAMES); +}; + +export const getConfig = async (configPath = '') => { + const pathToConfig = configPath ? configPath : await getConfigFile(); + let config = { ...defaultConfig }; + if (pathToConfig) { + log('Config file found:', pathToConfig); + try { + config = { ...config, ...yaml.parse(readFileSync(pathToConfig, 'utf8')) }; + } catch (err) { + log('The config file is invalid. Check that you have a valid YAML file.'); + throw err; + } + } else { + log('Config file not found.'); + } + + return config; +}; diff --git a/libs/cwex/src/e2e/__snapshots__/build-command.spec.ts.snap b/libs/cwex/src/e2e/__snapshots__/build-command.spec.ts.snap new file mode 100644 index 0000000000..3614f4b463 --- /dev/null +++ b/libs/cwex/src/e2e/__snapshots__/build-command.spec.ts.snap @@ -0,0 +1,19 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`build command builds successfully 1`] = ` +"{ + \\"manifest_version\\": 2, + \\"name\\": \\"Test extension\\", + \\"version\\": \\"0.2.0\\", + \\"browser_action\\": {} +}" +`; + +exports[`build command builds successfully 2`] = ` +"{ + \\"manifest_version\\": 2, + \\"name\\": \\"Test extension\\", + \\"version\\": \\"0.2.0\\", + \\"browser_action\\": {} +}" +`; diff --git a/libs/cwex/src/e2e/build-command.spec.ts b/libs/cwex/src/e2e/build-command.spec.ts new file mode 100644 index 0000000000..298e3e9918 --- /dev/null +++ b/libs/cwex/src/e2e/build-command.spec.ts @@ -0,0 +1,37 @@ +import path from 'path'; +import fs from 'fs-extra'; +import { exec } from 'child_process'; +jest.unmock('web-ext'); + +const cli = (args: string[], cwd = process.cwd()): Promise => { + return new Promise(resolve => { + const command = `yarn ts-node ${path.resolve('./src/cli.ts')} ${args.join(' ')}`; + + exec(command, { cwd }, (error, stdout, stderr) => { + resolve({ + code: error && error.code ? error.code : 0, + error, + stdout, + stderr, + }); + }) +})}; + +describe('build command', () => { + it('builds successfully', async () => { + jest.setTimeout(20000); + await fs.remove(path.resolve(__dirname, './e2e-test-out')); + const result = await cli([ 'build', '--config', './src/e2e/fixtures/cwex.yml' ]); + expect(result.code).toBe(0); + expect(await fs.pathExists(path.resolve(__dirname, './e2e-test-out'))).toBeTruthy(); + expect(await fs.pathExists(path.resolve(__dirname, './e2e-test-out', 'chrome-files'))).toBeTruthy(); + expect(await fs.pathExists(path.resolve(__dirname, './e2e-test-out', 'chrome-files', 'manifest.json'))).toBeTruthy(); + expect(fs.readFileSync(path.resolve(__dirname, './e2e-test-out', 'chrome-files', 'manifest.json'), 'utf8')).toMatchSnapshot(); + expect(await fs.pathExists(path.resolve(__dirname, './e2e-test-out', 'chrome-build'))).toBeTruthy(); + expect(await fs.pathExists(path.resolve(__dirname, './e2e-test-out', 'chrome-build', 'chrome.zip'))).toBeTruthy(); + expect(await fs.pathExists(path.resolve(__dirname, './e2e-test-out', 'mozilla-files'))).toBeTruthy(); + expect(await fs.pathExists(path.resolve(__dirname, './e2e-test-out', 'mozilla-files', 'manifest.json'))).toBeTruthy(); + expect(fs.readFileSync(path.resolve(__dirname, './e2e-test-out', 'mozilla-files', 'manifest.json'), 'utf8')).toMatchSnapshot(); + expect(await fs.pathExists(path.resolve(__dirname, './e2e-test-out', 'mozilla-build'))).toBeTruthy(); + }); +}); diff --git a/libs/cwex/src/e2e/e2e-test-out/chrome-build/chrome.zip b/libs/cwex/src/e2e/e2e-test-out/chrome-build/chrome.zip new file mode 100644 index 0000000000000000000000000000000000000000..bcb5244cf3ee3f78166509820697e185c77ef8d8 GIT binary patch literal 435 zcmWIWW@Zs#-~d9_Y|j7&B)|$}r)B1(8Zt8kc(ZeWWSF4R0dP$mXqvd7nvC?aiu3dE z>8x%KK(US&s53V)FEcH*xCE?u^|PRWfK$F_PWyQ4>UHXS>uQ}lb3S-ekijKJ&nK$S zmN8j+DLQzzUg?^2#b$#^1mD82lMd%S&O31G%nF$jA2%mTWd4j8Cc_oGrmYqO`+%)A ze3CEFmQ)}P@MdJvWk&Tl%y%GVBUsl0eKq&Kw3-mGjOX=Wf?2Bg1(I1B)_S5US9 literal 0 HcmV?d00001 diff --git a/libs/cwex/src/e2e/e2e-test-out/chrome-files/file1 b/libs/cwex/src/e2e/e2e-test-out/chrome-files/file1 new file mode 100644 index 0000000000..e69de29bb2 diff --git a/libs/cwex/src/e2e/e2e-test-out/chrome-files/file2.json b/libs/cwex/src/e2e/e2e-test-out/chrome-files/file2.json new file mode 100644 index 0000000000..e69de29bb2 diff --git a/libs/cwex/src/e2e/e2e-test-out/chrome-files/manifest.json b/libs/cwex/src/e2e/e2e-test-out/chrome-files/manifest.json new file mode 100644 index 0000000000..d910c66634 --- /dev/null +++ b/libs/cwex/src/e2e/e2e-test-out/chrome-files/manifest.json @@ -0,0 +1,6 @@ +{ + "manifest_version": 2, + "name": "Test extension", + "version": "0.2.0", + "browser_action": {} +} \ No newline at end of file diff --git a/libs/cwex/src/e2e/e2e-test-out/mozilla-build/test_extension-0.2.0.zip b/libs/cwex/src/e2e/e2e-test-out/mozilla-build/test_extension-0.2.0.zip new file mode 100644 index 0000000000000000000000000000000000000000..f97d76f366f1a54ac306fb94818d1ebc066e0dc0 GIT binary patch literal 382 zcmWIWW@h1H0D+qRfB-N9O0WXyw9K4T!vLrf4zLoo*6>L_K&ez9<^|&1#JtS3)Z!Ao ztm6E<)z5+g0#5m!Iql=EtJkUTt*dqJ%=zF=K?au?J)fvPTgGJRrRd<geCazicbQLQD%vwyBf!qsnnGx8|0B=Sn5eD3T v04hcTP#?jxVD}S3y)uxA;zNA4LEHe-JPXJ`b|ottNQM~*mjUTRAPxfn2 { +// expect(true).toBe(true); +// }); diff --git a/libs/cwex/src/index.ts b/libs/cwex/src/index.ts new file mode 100644 index 0000000000..2b38b0e584 --- /dev/null +++ b/libs/cwex/src/index.ts @@ -0,0 +1,17 @@ +export { buildProject } from './commands/build.js'; + +// inquirer + +// scaffold project + +// build project +// Compile assets: +/* + out/ + chrome-extension/ + includes** + manifest.json + mozilla-extension/ + includes** + manifest.json +*/ diff --git a/libs/cwex/src/targets/__snapshots__/chrome.spec.ts.snap b/libs/cwex/src/targets/__snapshots__/chrome.spec.ts.snap new file mode 100644 index 0000000000..d1bab8f03f --- /dev/null +++ b/libs/cwex/src/targets/__snapshots__/chrome.spec.ts.snap @@ -0,0 +1,25 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`chrome target generateExtensionInfo should generate the manifest content if manifest option provided 1`] = ` +Object { + "background": Object { + "scripts": Array [], + }, + "browser_action": Object { + "default_icon": "", + }, + "content_security_policy": "", + "description": "Test extension description", + "icons": "", + "manifest_version": 2, + "name": "Test extension", + "offline_enabled": false, + "options_ui": Object { + "open_in_tab": false, + "page": "", + }, + "permissions": Array [], + "short_name": "Test", + "version": "0.0.1", +} +`; diff --git a/libs/cwex/src/targets/__snapshots__/mozilla.spec.ts.snap b/libs/cwex/src/targets/__snapshots__/mozilla.spec.ts.snap new file mode 100644 index 0000000000..245ca084aa --- /dev/null +++ b/libs/cwex/src/targets/__snapshots__/mozilla.spec.ts.snap @@ -0,0 +1,27 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`mozilla target generateExtensionInfo should generate the manifest content if manifest option provided 1`] = ` +Object { + "background": Object { + "scripts": Array [], + }, + "browser_action": Object { + "default_icon": "", + "default_popup": "", + "default_title": "", + }, + "content_security_policy": "", + "description": "Test extension description", + "icons": "", + "manifest_version": 2, + "name": "Test extension", + "offline_enabled": false, + "options_ui": Object { + "open_in_tab": false, + "page": "", + }, + "permissions": Array [], + "short_name": "Test", + "version": "0.0.1", +} +`; diff --git a/libs/cwex/src/targets/chrome.spec.ts b/libs/cwex/src/targets/chrome.spec.ts new file mode 100644 index 0000000000..4420875c4c --- /dev/null +++ b/libs/cwex/src/targets/chrome.spec.ts @@ -0,0 +1,135 @@ +// import { generateExtensionInfo, compileExtension } from './chrome'; +// import path from 'path'; +// import fs from 'fs'; +// import fsExtra from 'fs-extra'; +// import archiver from 'archiver'; + +// jest.useFakeTimers(); + +// jest.mock('path'); +// jest.mock('fs', () => { +// const _on = jest.fn((ev, cb) => { +// if (ev === 'end' || ev === 'close') { +// setTimeout(cb, 100000); +// } +// }); +// return { +// createWriteStream: jest.fn(() => ({ on: _on })), +// }; +// }); +// jest.mock('fs-extra', () => { +// return { +// ensureFile: jest.fn(), +// }; +// }); +// const _archiveDirectory = jest.fn(); +// const _archive = { +// on: jest.fn(), +// pipe: jest.fn(), +// directory: _archiveDirectory, +// finalize: jest.fn(() => { +// jest.runAllTimers(); +// }), +// }; +// jest.mock('archiver', () => { +// return jest.fn(() => _archive); +// }); + +// describe('chrome target', () => { +// describe('generateExtensionInfo', () => { +// it('should generate empty content if no manifest option', async () => { +// const extensionInfo = await generateExtensionInfo({ +// exclude: [], +// include: [], +// outDir: '', +// rootDir: '', +// targets: [], +// }); +// expect(extensionInfo.content).toBe(''); +// expect(extensionInfo.fileName).toBe('manifest.json'); +// expect(extensionInfo.fileType).toBe('json'); +// }); + +// it('should generate the manifest content if manifest option provided', async () => { +// const extensionInfo = await generateExtensionInfo({ +// exclude: [], +// include: [], +// outDir: '', +// rootDir: '', +// targets: [], +// manifestOptions: { +// name: 'Test extension', +// version: '0.0.1', +// background: { +// service_worker: '', +// scripts: [], +// }, +// browser_action: { +// default_icon: '', +// default_title: '', +// default_popup: '', +// }, +// content_security_policy: '', +// description: 'Test extension description', +// icons: '', +// offline_enabled: false, +// page_action: { +// default_icon: '', +// default_title: '', +// default_popup: '', +// }, +// permissions: [], +// options_ui: { +// page: '', +// open_in_tab: false, +// }, +// short_name: 'Test', +// }, +// } as any); +// expect(extensionInfo.content).toBeTruthy(); +// expect(JSON.parse(extensionInfo.content)).toMatchSnapshot(); +// expect(extensionInfo.fileName).toBe('manifest.json'); +// expect(extensionInfo.fileType).toBe('json'); +// }); +// }); + +// describe('compileExtension', () => { +// it('should call archiver', async () => { +// await compileExtension({ +// config: { +// exclude: [], +// include: [], +// outDir: '', +// rootDir: '', +// targets: [], +// }, +// extensionBuildOutputDir: 'path/to/output', +// extensionFilesDir: 'path/to/files', +// }); + +// expect(archiver).toHaveBeenCalledWith('zip'); +// expect(path.resolve).toHaveBeenCalledWith('path/to/output', 'chrome.zip'); +// expect(_archiveDirectory).toHaveBeenCalledWith('path/to/files', false); +// }); +// it('should throw an error if something fails', async () => { +// _archive.on.mockImplementation((ev, cb) => { +// if (ev === 'error') { +// throw new Error('fake!'); +// } +// }); +// await expect( +// compileExtension({ +// config: { +// exclude: [], +// include: [], +// outDir: '', +// rootDir: '', +// targets: [], +// }, +// extensionBuildOutputDir: 'path/to/output', +// extensionFilesDir: 'path/to/files', +// }) +// ).rejects.toThrowError(); +// }); +// }); +// }); diff --git a/libs/cwex/src/targets/chrome.ts b/libs/cwex/src/targets/chrome.ts new file mode 100644 index 0000000000..f2ca7718f7 --- /dev/null +++ b/libs/cwex/src/targets/chrome.ts @@ -0,0 +1,98 @@ +import fs from 'fs'; +import path from 'path'; +import { + CwexConfig, + ManifestIcons, + ExtensionInfo, + ExtensionCompilerOption, + ExtensionCompiler, + IDictionary, + ManifestContentScriptOptions, +} from '../config.js'; +import archiver from 'archiver'; +import { ensureFile } from 'fs-extra'; +import log from '../utils/logger.js'; + +const buildExtensionData = ( + config: CwexConfig +): chrome.runtime.ManifestV3 | undefined => { + if (!config.manifestOptions) { + return; + } + + return { + ...config.manifestOptions, + manifest_version: 3, + }; +}; + +export const generateExtensionInfo = async ( + config: CwexConfig +): Promise => { + const extensionData = buildExtensionData(config); + return { + content: extensionData ? JSON.stringify(extensionData, null, 2) : '', + fileName: 'manifest.json', + fileType: 'json', + }; +}; + +export const compileExtension: ExtensionCompiler = async ( + opts: ExtensionCompilerOption +) => { + const outputPath = path.resolve( + opts.extensionBuildOutputDir, + opts.config.outFile ?? 'chrome.zip' + ); + await ensureFile(outputPath); + const output = fs.createWriteStream(outputPath); + + return new Promise((resolve, reject) => { + // zip extension files + const archive = archiver('zip'); + + // listen for all archive data to be written + // 'close' event is fired only when a file descriptor is involved + output.on('close', () => { + // log(archive.pointer() + ' total bytes'); + // log('archiver has been finalized and the output file descriptor has closed.'); + return resolve(true); + }); + + // This event is fired when the data source is drained no matter what was the data source. + // It is not part of this library but rather from the NodeJS Stream API. + // @see: https://nodejs.org/api/stream.html#stream_event_end + output.on('end', () => { + log('Data has been drained'); + return resolve(true); + }); + + // good practice to catch warnings (ie stat failures and other non-blocking errors) + archive.on('warning', (err) => { + if (err.code === 'ENOENT') { + // log warning + log(err); + } else { + // throw error + return reject(err); + } + }); + + // good practice to catch this error explicitly + archive.on('error', (err) => { + return reject(err); + }); + + // pipe archive data to the file + archive.pipe(output); + + // append files from a sub-directory, putting its contents at the root of archive + archive.directory(opts.extensionFilesDir, false); + + // finalize the archive (ie we are done appending files but streams have to finish yet) + // 'close', 'end' or 'finish' may be fired right after calling this method so register to them beforehand + archive.finalize(); + }); +}; + +export default generateExtensionInfo; diff --git a/libs/cwex/src/targets/mozilla.spec.ts b/libs/cwex/src/targets/mozilla.spec.ts new file mode 100644 index 0000000000..8007558356 --- /dev/null +++ b/libs/cwex/src/targets/mozilla.spec.ts @@ -0,0 +1,91 @@ +// import { generateExtensionInfo, compileExtension } from './mozilla'; +// import path from 'path'; +// import fs from 'fs'; +// import fsExtra from 'fs-extra'; +// const webExtModule = require('web-ext'); + +// jest.useFakeTimers(); + +// jest.mock('path'); +// jest.mock('fs'); +// jest.mock('fs-extra'); + +// describe('mozilla target', () => { +// describe('generateExtensionInfo', () => { +// it('should generate empty content if no manifest option', async () => { +// const extensionInfo = await generateExtensionInfo({ +// exclude: [], +// include: [], +// outDir: '', +// rootDir: '', +// targets: [], +// }); +// expect(extensionInfo.content).toBe(''); +// expect(extensionInfo.fileName).toBe('manifest.json'); +// expect(extensionInfo.fileType).toBe('json'); +// }); + +// it('should generate the manifest content if manifest option provided', async () => { +// const extensionInfo = await generateExtensionInfo({ +// exclude: [], +// include: [], +// outDir: '', +// rootDir: '', +// targets: [], +// manifestOptions: { +// name: 'Test extension', +// version: '0.0.1', +// background: { +// scripts: [], +// }, +// browser_action: { +// default_icon: '', +// default_title: '', +// default_popup: '', +// }, +// content_security_policy: '', +// description: 'Test extension description', +// icons: '', +// offline_enabled: false, +// page_action: { +// default_icon: '', +// default_title: '', +// default_popup: '', +// }, +// permissions: [], +// options_ui: { +// page: '', +// open_in_tab: false, +// }, +// short_name: 'Test', +// }, +// } as any); +// expect(extensionInfo.content).toBeTruthy(); +// expect(JSON.parse(extensionInfo.content)).toMatchSnapshot(); +// expect(extensionInfo.fileName).toBe('manifest.json'); +// expect(extensionInfo.fileType).toBe('json'); +// }); +// }); + +// describe('compileExtension', () => { +// it('should call web-ext build command with specified parameters', async () => { +// await compileExtension({ +// config: { +// exclude: [], +// include: [], +// outDir: '', +// rootDir: '', +// targets: [], +// }, +// extensionBuildOutputDir: 'path/to/output', +// extensionFilesDir: 'path/to/files', +// }); + +// expect(webExtModule.default.cmd.build).toHaveBeenCalledWith({ +// sourceDir: 'path/to/files', +// artifactsDir: 'path/to/output', +// overwriteDest: true, +// }); +// }); +// }); +// }); diff --git a/libs/cwex/src/targets/mozilla.ts b/libs/cwex/src/targets/mozilla.ts new file mode 100644 index 0000000000..1df42934a8 --- /dev/null +++ b/libs/cwex/src/targets/mozilla.ts @@ -0,0 +1,95 @@ +import { + CwexConfig, + ManifestIcons, + ManifestBrowserAction, + ExtensionInfo, + ExtensionCompiler, + ManifestBrowserSpecificSettings, +} from '../config.js'; +import webExt from 'web-ext'; + +interface MozillaAddonBackground { + scripts: string[]; +} +interface MozillaAddonOptionsUi { + page: string; + open_in_tab: boolean; +} + +interface MozillaAddon { + manifest_version: 2; + name: string; + short_name?: string; + description?: string; + author?: string; + version: string; + icons?: ManifestIcons; + browser_action?: ManifestBrowserAction; + permissions?: string[]; + content_security_policy?: string; + background?: MozillaAddonBackground; + options_ui?: MozillaAddonOptionsUi; + offline_enabled?: boolean; + browser_specific_settings?: ManifestBrowserSpecificSettings; +} + +const buildOptionsUi = (config: CwexConfig): MozillaAddonOptionsUi | undefined => { + if (config.manifestOptions?.options_ui) { + return { + page: config.manifestOptions.options_ui.page ?? '', + open_in_tab: config.manifestOptions.options_ui.open_in_tab ?? false, + }; + } + return undefined; +}; + +const buildExtensionData = ( + config: CwexConfig +): chrome.runtime.ManifestV3 | undefined => { + if (!config.manifestOptions) { + return; + } + + return { + ...config.manifestOptions, + manifest_version: 3, + // incognito: undefined, + // options_ui: buildOptionsUi(config), + // content_scripts: config.manifestOptions.content_scripts, + // name: config.manifestOptions.name, + // short_name: config.manifestOptions.short_name, + // description: config.manifestOptions.description, + // author: config.manifestOptions.author, + // version: config.manifestOptions.version, + // icons: config.manifestOptions.icons, + // browser_action: buildBrowserAction(config), + // permissions: config.manifestOptions.permissions, + // content_security_policy: config.manifestOptions.content_security_policy, + // background: config.manifestOptions.background, + // options_ui: buildOptionsUi(config), + // offline_enabled: config.manifestOptions.offline_enabled, + // browser_specific_settings: config.manifestOptions.browser_specific_settings, + }; +}; + +export const generateExtensionInfo = async ( + config: CwexConfig +): Promise => { + const extensionData = buildExtensionData(config); + return { + content: extensionData ? JSON.stringify(extensionData, null, 2) : '', + fileName: 'manifest.json', + fileType: 'json', + }; +}; + +export default generateExtensionInfo; + +export const compileExtension: ExtensionCompiler = async (opts) => { + return await webExt.cmd.build({ + sourceDir: opts.extensionFilesDir, + overwriteDest: true, + artifactsDir: opts.extensionBuildOutputDir, + filename: opts.config.outFile, + }); +}; diff --git a/libs/cwex/src/types.d.ts b/libs/cwex/src/types.d.ts new file mode 100644 index 0000000000..48f1864cb3 --- /dev/null +++ b/libs/cwex/src/types.d.ts @@ -0,0 +1 @@ +declare module 'web-ext'; diff --git a/libs/cwex/src/utils/index.spec.ts b/libs/cwex/src/utils/index.spec.ts new file mode 100644 index 0000000000..4d05881505 --- /dev/null +++ b/libs/cwex/src/utils/index.spec.ts @@ -0,0 +1,64 @@ +// import { getFiles, getResolvedModule, getResolvedTargetModule } from './index'; +// import globby from 'globby'; +// jest.mock('globby'); +// const utils = require('./index'); + +// describe('getFiles', () => { +// beforeEach(() => { +// (globby as any).mockClear(); +// }); + +// it('should call globby with the passed arguments', async () => { +// await getFiles([ 'pattern1', 'pattern2' ], {}); +// expect(globby).toHaveBeenCalled(); +// expect(globby).toHaveBeenCalledWith([ 'pattern1', 'pattern2' ], {}); +// }); +// }); + +// describe('getResolvedModule', () => { +// let _reqResolve = require.resolve; +// beforeEach(() => { +// _reqResolve = require.resolve; +// require.resolve = jest.fn() as any; +// }); +// afterEach(() => { +// require.resolve = _reqResolve; +// }); + +// it('should call require.resolve with specified path', () => { +// const res = getResolvedModule('module/path', { resolver: require.resolve }); +// expect(require.resolve).toHaveBeenCalled(); +// expect(require.resolve).toHaveBeenCalledWith('module/path'); +// }); + +// it('should return the resolved path', () => { +// require.resolve = jest.fn(() => 'resolved/module/path') as any; +// const res = getResolvedModule('module/path', { resolver: require.resolve }); +// expect(require.resolve).toHaveBeenCalled(); +// expect(res).toBe('resolved/module/path'); +// }); + +// it('should return empty string if module not found', () => { +// require.resolve = jest.fn(() => { +// throw new Error('fake!'); +// }) as any; +// const res = getResolvedModule('module/path', { resolver: require.resolve }); +// expect(require.resolve).toHaveBeenCalled(); +// expect(res).toBe(''); +// }); +// }); + +// describe('getResolvedTargetModule', () => { +// beforeEach(() => { +// utils.getResolvedModule = jest.fn(); +// }); +// afterEach(() => { +// utils.getResolvedModule.mockClear(); +// }); + +// it('should call getResolvedModule with modified path', () => { +// getResolvedTargetModule('module/path'); +// expect(utils.getResolvedModule).toHaveBeenCalled(); +// expect(utils.getResolvedModule).toHaveBeenCalledWith('../targets/module/path', expect.anything()); +// }); +// }); diff --git a/libs/cwex/src/utils/index.ts b/libs/cwex/src/utils/index.ts new file mode 100644 index 0000000000..0db7c181cc --- /dev/null +++ b/libs/cwex/src/utils/index.ts @@ -0,0 +1,26 @@ +import { createRequire } from 'node:module'; +import { Options, globby } from 'globby'; + +export const getFiles = async (patterns: string[], opts: Options = {}) => { + return globby(patterns, opts); +}; + +const requreResolve = createRequire(import.meta.url).resolve; + +export const getResolvedModule = ( + modulePath: string, + { resolver = requreResolve } = {} +) => { + try { + return resolver(modulePath); + } catch (err) { + return ''; + } +}; + +export const getResolvedTargetModule = ( + target: string, + { resolver = requreResolve } = {} +) => { + return getResolvedModule(`../targets/${target}`, { resolver }); +}; diff --git a/libs/cwex/src/utils/logger.spec.ts b/libs/cwex/src/utils/logger.spec.ts new file mode 100644 index 0000000000..1ce93cbe73 --- /dev/null +++ b/libs/cwex/src/utils/logger.spec.ts @@ -0,0 +1,43 @@ +// import debug from 'debug'; +// import { log, setLogging } from './logger'; + +// jest.mock('debug', () => { +// const mockDebugInstance = jest.fn(); + +// const mockDebug = jest.fn(() => { +// return mockDebugInstance; +// }); + +// (mockDebug as any).enable = jest.fn(); +// (mockDebug as any).disable = jest.fn(); + +// return mockDebug; +// }); + +// describe('logger', () => { +// beforeEach(() => { +// jest.clearAllMocks(); +// }); +// describe('log', () => { +// it('should call debug instance with message', () => { +// log('test message'); +// const mockDebugInstance = debug('x'); +// expect(debug).toHaveBeenCalled(); +// expect(mockDebugInstance).toHaveBeenCalledWith('test message'); +// }); +// }); + +// describe('setLogging', () => { +// it('should enable debug if true is passed', () => { +// setLogging(true); +// expect(debug.enable).toHaveBeenCalled(); +// expect(debug.disable).not.toHaveBeenCalled(); +// }); + +// it('should disable debug if false is passed', () => { +// setLogging(false); +// expect(debug.disable).toHaveBeenCalled(); +// expect(debug.enable).not.toHaveBeenCalled(); +// }); +// }); +// }); diff --git a/libs/cwex/src/utils/logger.ts b/libs/cwex/src/utils/logger.ts new file mode 100644 index 0000000000..d1a8be1c2c --- /dev/null +++ b/libs/cwex/src/utils/logger.ts @@ -0,0 +1,9 @@ +import debug from 'debug'; + +export const setLogging = (enable: boolean) => + enable ? enableLogging() : disableLogging(); +export const enableLogging = () => debug.enable('cwex'); +export const disableLogging = () => debug.disable(); + +export const log = debug('cwex'); +export default log; diff --git a/libs/cwex/tsconfig.json b/libs/cwex/tsconfig.json new file mode 100644 index 0000000000..813485fe63 --- /dev/null +++ b/libs/cwex/tsconfig.json @@ -0,0 +1,111 @@ +{ + "compilerOptions": { + /* Visit https://aka.ms/tsconfig to read more about this file */ + + /* Projects */ + // "incremental": true, /* Save .tsbuildinfo files to allow for incremental compilation of projects. */ + // "composite": true, /* Enable constraints that allow a TypeScript project to be used with project references. */ + // "tsBuildInfoFile": "./.tsbuildinfo", /* Specify the path to .tsbuildinfo incremental compilation file. */ + // "disableSourceOfProjectReferenceRedirect": true, /* Disable preferring source files instead of declaration files when referencing composite projects. */ + // "disableSolutionSearching": true, /* Opt a project out of multi-project reference checking when editing. */ + // "disableReferencedProjectLoad": true, /* Reduce the number of projects loaded automatically by TypeScript. */ + + /* Language and Environment */ + "target": "es2022" /* Set the JavaScript language version for emitted JavaScript and include compatible library declarations. */, + "lib": [ + "es2022" + ] /* Specify a set of bundled library declaration files that describe the target runtime environment. */, + // "jsx": "preserve", /* Specify what JSX code is generated. */ + // "experimentalDecorators": true, /* Enable experimental support for legacy experimental decorators. */ + // "emitDecoratorMetadata": true, /* Emit design-type metadata for decorated declarations in source files. */ + // "jsxFactory": "", /* Specify the JSX factory function used when targeting React JSX emit, e.g. 'React.createElement' or 'h'. */ + // "jsxFragmentFactory": "", /* Specify the JSX Fragment reference used for fragments when targeting React JSX emit e.g. 'React.Fragment' or 'Fragment'. */ + // "jsxImportSource": "", /* Specify module specifier used to import the JSX factory functions when using 'jsx: react-jsx*'. */ + // "reactNamespace": "", /* Specify the object invoked for 'createElement'. This only applies when targeting 'react' JSX emit. */ + // "noLib": true, /* Disable including any library files, including the default lib.d.ts. */ + // "useDefineForClassFields": true, /* Emit ECMAScript-standard-compliant class fields. */ + // "moduleDetection": "auto", /* Control what method is used to detect module-format JS files. */ + + /* Modules */ + "module": "nodenext" /* Specify what module code is generated. */, + "rootDir": "./src" /* Specify the root folder within your source files. */, + "moduleResolution": "nodenext" /* Specify how TypeScript looks up a file from a given module specifier. */, + // "baseUrl": "./", /* Specify the base directory to resolve non-relative module names. */ + // "paths": {}, /* Specify a set of entries that re-map imports to additional lookup locations. */ + // "rootDirs": [], /* Allow multiple folders to be treated as one when resolving modules. */ + // "typeRoots": [], /* Specify multiple folders that act like './node_modules/@types'. */ + // "types": [], /* Specify type package names to be included without being referenced in a source file. */ + // "allowUmdGlobalAccess": true, /* Allow accessing UMD globals from modules. */ + // "moduleSuffixes": [], /* List of file name suffixes to search when resolving a module. */ + // "allowImportingTsExtensions": true, /* Allow imports to include TypeScript file extensions. Requires '--moduleResolution bundler' and either '--noEmit' or '--emitDeclarationOnly' to be set. */ + // "resolvePackageJsonExports": true, /* Use the package.json 'exports' field when resolving package imports. */ + // "resolvePackageJsonImports": true, /* Use the package.json 'imports' field when resolving imports. */ + // "customConditions": [], /* Conditions to set in addition to the resolver-specific defaults when resolving imports. */ + // "resolveJsonModule": true, /* Enable importing .json files. */ + // "allowArbitraryExtensions": true, /* Enable importing files with any extension, provided a declaration file is present. */ + // "noResolve": true, /* Disallow 'import's, 'require's or ''s from expanding the number of files TypeScript should add to a project. */ + + /* JavaScript Support */ + // "allowJs": true, /* Allow JavaScript files to be a part of your program. Use the 'checkJS' option to get errors from these files. */ + // "checkJs": true, /* Enable error reporting in type-checked JavaScript files. */ + // "maxNodeModuleJsDepth": 1, /* Specify the maximum folder depth used for checking JavaScript files from 'node_modules'. Only applicable with 'allowJs'. */ + + /* Emit */ + "declaration": true /* Generate .d.ts files from TypeScript and JavaScript files in your project. */, + "declarationMap": true /* Create sourcemaps for d.ts files. */, + // "emitDeclarationOnly": true, /* Only output d.ts files and not JavaScript files. */ + "sourceMap": true /* Create source map files for emitted JavaScript files. */, + // "inlineSourceMap": true, /* Include sourcemap files inside the emitted JavaScript. */ + // "outFile": "./", /* Specify a file that bundles all outputs into one JavaScript file. If 'declaration' is true, also designates a file that bundles all .d.ts output. */ + "outDir": "./dist" /* Specify an output folder for all emitted files. */, + // "removeComments": true, /* Disable emitting comments. */ + // "noEmit": true, /* Disable emitting files from a compilation. */ + // "importHelpers": true, /* Allow importing helper functions from tslib once per project, instead of including them per-file. */ + // "importsNotUsedAsValues": "remove", /* Specify emit/checking behavior for imports that are only used for types. */ + // "downlevelIteration": true, /* Emit more compliant, but verbose and less performant JavaScript for iteration. */ + // "sourceRoot": "", /* Specify the root path for debuggers to find the reference source code. */ + // "mapRoot": "", /* Specify the location where debugger should locate map files instead of generated locations. */ + // "inlineSources": true, /* Include source code in the sourcemaps inside the emitted JavaScript. */ + // "emitBOM": true, /* Emit a UTF-8 Byte Order Mark (BOM) in the beginning of output files. */ + // "newLine": "crlf", /* Set the newline character for emitting files. */ + // "stripInternal": true, /* Disable emitting declarations that have '@internal' in their JSDoc comments. */ + // "noEmitHelpers": true, /* Disable generating custom helper functions like '__extends' in compiled output. */ + // "noEmitOnError": true, /* Disable emitting files if any type checking errors are reported. */ + // "preserveConstEnums": true, /* Disable erasing 'const enum' declarations in generated code. */ + // "declarationDir": "./", /* Specify the output directory for generated declaration files. */ + // "preserveValueImports": true, /* Preserve unused imported values in the JavaScript output that would otherwise be removed. */ + + /* Interop Constraints */ + // "isolatedModules": true, /* Ensure that each file can be safely transpiled without relying on other imports. */ + // "verbatimModuleSyntax": true, /* Do not transform or elide any imports or exports not marked as type-only, ensuring they are written in the output file's format based on the 'module' setting. */ + "allowSyntheticDefaultImports": true /* Allow 'import x from y' when a module doesn't have a default export. */, + "esModuleInterop": true /* Emit additional JavaScript to ease support for importing CommonJS modules. This enables 'allowSyntheticDefaultImports' for type compatibility. */, + // "preserveSymlinks": true, /* Disable resolving symlinks to their realpath. This correlates to the same flag in node. */ + "forceConsistentCasingInFileNames": true /* Ensure that casing is correct in imports. */, + + /* Type Checking */ + "strict": true /* Enable all strict type-checking options. */, + // "noImplicitAny": true, /* Enable error reporting for expressions and declarations with an implied 'any' type. */ + // "strictNullChecks": true, /* When type checking, take into account 'null' and 'undefined'. */ + // "strictFunctionTypes": true, /* When assigning functions, check to ensure parameters and the return values are subtype-compatible. */ + // "strictBindCallApply": true, /* Check that the arguments for 'bind', 'call', and 'apply' methods match the original function. */ + // "strictPropertyInitialization": true, /* Check for class properties that are declared but not set in the constructor. */ + // "noImplicitThis": true, /* Enable error reporting when 'this' is given the type 'any'. */ + // "useUnknownInCatchVariables": true, /* Default catch clause variables as 'unknown' instead of 'any'. */ + // "alwaysStrict": true, /* Ensure 'use strict' is always emitted. */ + // "noUnusedLocals": true, /* Enable error reporting when local variables aren't read. */ + // "noUnusedParameters": true, /* Raise an error when a function parameter isn't read. */ + // "exactOptionalPropertyTypes": true, /* Interpret optional property types as written, rather than adding 'undefined'. */ + // "noImplicitReturns": true, /* Enable error reporting for codepaths that do not explicitly return in a function. */ + // "noFallthroughCasesInSwitch": true, /* Enable error reporting for fallthrough cases in switch statements. */ + // "noUncheckedIndexedAccess": true, /* Add 'undefined' to a type when accessed using an index. */ + // "noImplicitOverride": true, /* Ensure overriding members in derived classes are marked with an override modifier. */ + // "noPropertyAccessFromIndexSignature": true, /* Enforces using indexed accessors for keys declared using an indexed type. */ + // "allowUnusedLabels": true, /* Disable error reporting for unused labels. */ + // "allowUnreachableCode": true, /* Disable error reporting for unreachable code. */ + + /* Completeness */ + // "skipDefaultLibCheck": true, /* Skip type checking .d.ts files that are included with TypeScript. */ + "skipLibCheck": true /* Skip type checking all .d.ts files. */ + } +} diff --git a/package.json b/package.json index 90258eec93..b777ec8188 100644 --- a/package.json +++ b/package.json @@ -15,7 +15,7 @@ "@types/prettier": "^3.0.0", "chalk": "^4.1.0", "compare-versions": "^4.1.3", - "cwex": "^1.0.4", + "altair-cwex": "^6.4.2", "dotenv-cli": "^7.2.1", "eslint": "8.18.0", "eslint-config-prettier": "8.5.0", diff --git a/packages/altair-app/src/index.html b/packages/altair-app/src/index.html index 4bceb3eea8..a4a0a4fd1d 100644 --- a/packages/altair-app/src/index.html +++ b/packages/altair-app/src/index.html @@ -12,7 +12,7 @@ /> diff --git a/yarn.lock b/yarn.lock index 39736cbb99..6a35815897 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1109,6 +1109,14 @@ dependencies: "@babel/highlight" "^7.18.6" +"@babel/code-frame@^7.16.0": + version "7.24.2" + resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.24.2.tgz#718b4b19841809a58b29b68cde80bc5e1aa6d9ae" + integrity sha512-y5+tLQyV8pg3fsiln67BVLD1P13Eg4lh5RW9mF0zUuvLrv9uIQ4MCL+CRT+FTsBlBjcIan6PGsLcBN0m3ClUyQ== + dependencies: + "@babel/highlight" "^7.24.2" + picocolors "^1.0.0" + "@babel/code-frame@^7.21.4", "@babel/code-frame@^7.22.13": version "7.22.13" resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.22.13.tgz#e3c1c099402598483b7a8c46a721d1038803755e" @@ -1565,6 +1573,16 @@ chalk "^2.4.2" js-tokens "^4.0.0" +"@babel/highlight@^7.24.2": + version "7.24.2" + resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.24.2.tgz#3f539503efc83d3c59080a10e6634306e0370d26" + integrity sha512-Yac1ao4flkTxTteCDZLEvdxg2fZfz1v8M4QpaGypq/WPDqg3ijHYbDfs+LG5hvzSoqaSZ9/Z9lKSP3CjZjv+pA== + dependencies: + "@babel/helper-validator-identifier" "^7.22.20" + chalk "^2.4.2" + js-tokens "^4.0.0" + picocolors "^1.0.0" + "@babel/highlight@^7.8.3": version "7.8.3" resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.8.3.tgz#28f173d04223eaaa59bc1d439a3836e6d1265797" @@ -2317,6 +2335,13 @@ dependencies: regenerator-runtime "^0.13.4" +"@babel/runtime@7.21.0": + version "7.21.0" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.21.0.tgz#5b55c9d394e5fcf304909a8b00c07dc217b56673" + integrity sha512-xwII0//EObnq89Ji5AKYQaRYiW/nZ3llSv29d49IuxPhKbtJoLP+9QUUZ4nVragQVtaVGeZrpB+ZtG/Pdy/POw== + dependencies: + regenerator-runtime "^0.13.11" + "@babel/runtime@7.23.2": version "7.23.2" resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.23.2.tgz#062b0ac103261d68a966c4c7baf2ae3e62ec3885" @@ -2352,13 +2377,6 @@ dependencies: regenerator-runtime "^0.14.0" -"@babel/runtime@^7.6.3": - version "7.8.4" - resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.8.4.tgz#d79f5a2040f7caa24d53e563aad49cbc05581308" - integrity sha512-neAp3zt80trRVBI1x0azq6c57aNBqYZH8KhMm3TaB7wEI5Q4A2SHfBHE8w9gOhI/lrqxtEbXZgQIrHP+wvSGwQ== - dependencies: - regenerator-runtime "^0.13.2" - "@babel/runtime@^7.8.4": version "7.18.9" resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.18.9.tgz#b4fcfce55db3d2e5e080d2490f608a3b9f407f4a" @@ -2975,6 +2993,11 @@ resolved "https://registry.yarnpkg.com/@devicefarmer/adbkit-logcat/-/adbkit-logcat-1.1.0.tgz#866d3406dc9f3791446adfe3ae622ffc48607db4" integrity sha512-K90P5gUXM/w+yzLvJIRQ+tJooNU6ipUPPQkljtPJ0laR66TGtpt4Gqsjm0n9dPHK1W5KGgU1R5wnCd6RTSlPNA== +"@devicefarmer/adbkit-logcat@^2.1.2": + version "2.1.3" + resolved "https://registry.yarnpkg.com/@devicefarmer/adbkit-logcat/-/adbkit-logcat-2.1.3.tgz#c7a1fb58e500f5799711f32906a2210c0d1ac5ac" + integrity sha512-yeaGFjNBc/6+svbDeul1tNHtNChw6h8pSHAt5D+JsedUrMTN7tla7B15WLDyekxsuS2XlZHRxpuC6m92wiwCNw== + "@devicefarmer/adbkit-monkey@~1.0.1": version "1.0.1" resolved "https://registry.yarnpkg.com/@devicefarmer/adbkit-monkey/-/adbkit-monkey-1.0.1.tgz#7d225e5fdbdad8d6772453390ecab3f1b0eb72b1" @@ -2982,6 +3005,11 @@ dependencies: async "~0.2.9" +"@devicefarmer/adbkit-monkey@~1.2.0": + version "1.2.1" + resolved "https://registry.yarnpkg.com/@devicefarmer/adbkit-monkey/-/adbkit-monkey-1.2.1.tgz#28cd6a121c5d572588081dd1c53454c604eef241" + integrity sha512-ZzZY/b66W2Jd6NHbAhLyDWOEIBWC11VizGFk7Wx7M61JZRz7HR9Cq5P+65RKWUU7u6wgsE8Lmh9nE4Mz+U2eTg== + "@devicefarmer/adbkit@2.11.3": version "2.11.3" resolved "https://registry.yarnpkg.com/@devicefarmer/adbkit/-/adbkit-2.11.3.tgz#0ad981a20aada3e4eff4871218f633c85cf7f2db" @@ -2995,6 +3023,19 @@ node-forge "^0.10.0" split "~0.3.3" +"@devicefarmer/adbkit@3.2.3": + version "3.2.3" + resolved "https://registry.yarnpkg.com/@devicefarmer/adbkit/-/adbkit-3.2.3.tgz#7e66b4b2b435e4447df9563a05e70b0fe327b717" + integrity sha512-wK9rVrabs4QU0oK8Jnwi+HRBEm+s1x/o63kgthUe0y7K1bfcYmgLuQf41/adsj/5enddlSxzkJavl2EwOu+r1g== + dependencies: + "@devicefarmer/adbkit-logcat" "^2.1.2" + "@devicefarmer/adbkit-monkey" "~1.2.0" + bluebird "~3.7" + commander "^9.1.0" + debug "~4.3.1" + node-forge "^1.3.1" + split "~1.0.1" + "@discoveryjs/json-ext@0.5.7": version "0.5.7" resolved "https://registry.yarnpkg.com/@discoveryjs/json-ext/-/json-ext-0.5.7.tgz#1d572bfbbe14b7704e0ba0f39b74815b84870d70" @@ -3705,14 +3746,14 @@ minimatch "^3.0.4" strip-json-comments "^3.1.1" -"@eslint/eslintrc@^1.2.1", "@eslint/eslintrc@^1.3.3": - version "1.3.3" - resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-1.3.3.tgz#2b044ab39fdfa75b4688184f9e573ce3c5b0ff95" - integrity sha512-uj3pT6Mg+3t39fvLrj8iuCIJ38zKO9FpGtJ4BBJebJhEwjoT+KLVNCcHT5QC9NGRIEi7fZ0ZR8YRb884auB4Lg== +"@eslint/eslintrc@^1.3.0": + version "1.3.0" + resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-1.3.0.tgz#29f92c30bb3e771e4a2048c95fa6855392dfac4f" + integrity sha512-UWW0TMTmk2d7hLcWD1/e2g5HDM/HQ3csaLSqXCfqwh4uNDuNqlaKWXmEsL4Cs41Z0KnILNvwbHAah3C2yt06kw== dependencies: ajv "^6.12.4" debug "^4.3.2" - espree "^9.4.0" + espree "^9.3.2" globals "^13.15.0" ignore "^5.2.0" import-fresh "^3.2.1" @@ -3720,14 +3761,14 @@ minimatch "^3.1.2" strip-json-comments "^3.1.1" -"@eslint/eslintrc@^1.3.0": - version "1.3.0" - resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-1.3.0.tgz#29f92c30bb3e771e4a2048c95fa6855392dfac4f" - integrity sha512-UWW0TMTmk2d7hLcWD1/e2g5HDM/HQ3csaLSqXCfqwh4uNDuNqlaKWXmEsL4Cs41Z0KnILNvwbHAah3C2yt06kw== +"@eslint/eslintrc@^1.3.3": + version "1.3.3" + resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-1.3.3.tgz#2b044ab39fdfa75b4688184f9e573ce3c5b0ff95" + integrity sha512-uj3pT6Mg+3t39fvLrj8iuCIJ38zKO9FpGtJ4BBJebJhEwjoT+KLVNCcHT5QC9NGRIEi7fZ0ZR8YRb884auB4Lg== dependencies: ajv "^6.12.4" debug "^4.3.2" - espree "^9.3.2" + espree "^9.4.0" globals "^13.15.0" ignore "^5.2.0" import-fresh "^3.2.1" @@ -3873,6 +3914,11 @@ resolved "https://registry.yarnpkg.com/@floating-ui/utils/-/utils-0.2.1.tgz#16308cea045f0fc777b6ff20a9f25474dd8293d2" integrity sha512-9TANp6GPoMtYzQdt54kfAyMmz1+osLlXdg2ENroU7zzrtflTLrrC/lgrIfaSe+Wu0b89GKccT7vxXA0MoAIO+Q== +"@fluent/syntax@0.19.0": + version "0.19.0" + resolved "https://registry.yarnpkg.com/@fluent/syntax/-/syntax-0.19.0.tgz#43f882faba6908b0f1013f6a94e009d0dfbdcb77" + integrity sha512-5D2qVpZrgpjtqU4eNOcWGp1gnUCgjfM+vKGE2y03kKN6z5EBhtx0qdRFbg8QuNNj8wXNoX93KJoYb+NqoxswmQ== + "@fontsource/jetbrains-mono@4.2.2": version "4.2.2" resolved "https://registry.yarnpkg.com/@fontsource/jetbrains-mono/-/jetbrains-mono-4.2.2.tgz#925cbcdb4e21f48320f8db3ccb4ca50dff2465a6" @@ -5649,10 +5695,10 @@ resolved "https://registry.yarnpkg.com/@mdn/browser-compat-data/-/browser-compat-data-4.0.5.tgz#21905dcc1520f095631a0d72a9f15605039ac7ff" integrity sha512-KPSNaHUl5aikqsQU7LpBntFzaPbhm5OJxD88Wv00OKDc4wudyid2wDFqLeb7VcYT9x5bND8PPFloWdK5DY0pHA== -"@mdn/browser-compat-data@4.1.12": - version "4.1.12" - resolved "https://registry.yarnpkg.com/@mdn/browser-compat-data/-/browser-compat-data-4.1.12.tgz#d266138c24295440619ea562ce3f4ec22600e897" - integrity sha512-y3Ntio6hb5+m6asxcA3nnIN6URjAFMji2EZZVYGd2Ag5On4mmvPhMnXdiIScCMXgHjFX+5qXuKaojLLhJHZPAg== +"@mdn/browser-compat-data@5.5.7": + version "5.5.7" + resolved "https://registry.yarnpkg.com/@mdn/browser-compat-data/-/browser-compat-data-5.5.7.tgz#984652af52cbe7c111c376d519b5ce765d444003" + integrity sha512-DoHTZ/TjtNfUu9eiqJd+x3IcCQrhS+yOYU436TKUnlE36jZwNbK535D1CmTsSYdi/UcdCWNm5KRQZ9g1tlZCPw== "@mdx-js/esbuild@^2.0.0": version "2.3.0" @@ -6845,6 +6891,27 @@ optionalDependencies: fsevents "2.3.2" +"@pnpm/config.env-replace@^1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@pnpm/config.env-replace/-/config.env-replace-1.1.0.tgz#ab29da53df41e8948a00f2433f085f54de8b3a4c" + integrity sha512-htyl8TWnKL7K/ESFa1oW2UB5lVDxuF5DpM7tBi6Hu2LNL3mWkIzNLG6N4zoCUP1lCKNxWy/3iu8mS8MvToGd6w== + +"@pnpm/network.ca-file@^1.0.1": + version "1.0.2" + resolved "https://registry.yarnpkg.com/@pnpm/network.ca-file/-/network.ca-file-1.0.2.tgz#2ab05e09c1af0cdf2fcf5035bea1484e222f7983" + integrity sha512-YcPQ8a0jwYU9bTdJDpXjMi7Brhkr1mXsXrUJvjqM2mQDgkRiz8jFaQGOdaLxgjtUfQgZhKy/O3cG/YwmgKaxLA== + dependencies: + graceful-fs "4.2.10" + +"@pnpm/npm-conf@^2.1.0": + version "2.2.2" + resolved "https://registry.yarnpkg.com/@pnpm/npm-conf/-/npm-conf-2.2.2.tgz#0058baf1c26cbb63a828f0193795401684ac86f0" + integrity sha512-UA91GwWPhFExt3IizW6bOeY/pQ0BkuNwKjk9iQW9KqxluGCrg4VenZ0/L+2Y0+ZOtme72EVvg6v0zo3AMQRCeA== + dependencies: + "@pnpm/config.env-replace" "^1.1.0" + "@pnpm/network.ca-file" "^1.0.1" + config-chain "^1.1.11" + "@popperjs/core@^2.9.3": version "2.11.8" resolved "https://registry.yarnpkg.com/@popperjs/core/-/core-2.11.8.tgz#6b79032e760a0899cd4204710beede972a3a185f" @@ -7405,6 +7472,11 @@ resolved "https://registry.yarnpkg.com/@sindresorhus/is/-/is-5.6.0.tgz#41dd6093d34652cddb5d5bdeee04eafc33826668" integrity sha512-TV7t8GKYaJWsn00tFDqBw8+Uqmr8A0fRU1tvTQhyZzGv0sJCGRQL3JGMI3ucuKo3XIZdUP+Lx7/gh2t3lewy7g== +"@sindresorhus/merge-streams@^2.1.0": + version "2.3.0" + resolved "https://registry.yarnpkg.com/@sindresorhus/merge-streams/-/merge-streams-2.3.0.tgz#719df7fb41766bc143369eaa0dd56d8dc87c9958" + integrity sha512-LtoMMhxAlorcGhmFYI+LhPgbPZCkgP6ra1YL604EeF6U98pLlQ3iWIGMdWSC+vWmPBWBNgmDBAhnAobLROJmwg== + "@sinonjs/commons@^1.7.0": version "1.8.3" resolved "https://registry.yarnpkg.com/@sinonjs/commons/-/commons-1.8.3.tgz#3802ddd21a50a949b6721ddd72da36e67e7f1b2d" @@ -8087,6 +8159,13 @@ resolved "https://registry.yarnpkg.com/@types/actioncable/-/actioncable-5.2.7.tgz#b42de922ba32f1a46c863df1ed32807ab08dda80" integrity sha512-HVpCvvE4Att0vSfCVNHf3gmCoqQPlySWIhH4THkG4r0hc0IcvRa0gIVyd9ekswMf3WiBsDc52OKnduIZQ7qcRw== +"@types/archiver@^6.0.2": + version "6.0.2" + resolved "https://registry.yarnpkg.com/@types/archiver/-/archiver-6.0.2.tgz#0daf8c83359cbde69de1e4b33dcade6a48a929e2" + integrity sha512-KmROQqbQzKGuaAbmK+ZcytkJ51+YqDa7NmbXjmtC5YBLSyQYo21YaUnQ3HbaPFKL1ooo6RQ6OPYPIDyxfpDDXw== + dependencies: + "@types/readdir-glob" "*" + "@types/babel__core@^7.1.14": version "7.1.19" resolved "https://registry.yarnpkg.com/@types/babel__core/-/babel__core-7.1.19.tgz#7b497495b7d1b4812bdb9d02804d0576f43ee460" @@ -8179,6 +8258,14 @@ "@types/filesystem" "*" "@types/har-format" "*" +"@types/chrome@^0.0.266": + version "0.0.266" + resolved "https://registry.yarnpkg.com/@types/chrome/-/chrome-0.0.266.tgz#1ef0c3076ea05489db2a04a057657587920d2390" + integrity sha512-QSQWJTL7NjZElvq/6/E5C1+pHgEP8UAJzwoz7M4vSJ7AECt6NNehJ+tU6snnvuTqZOBjFCivvitYo5+8tNPmhg== + dependencies: + "@types/filesystem" "*" + "@types/har-format" "*" + "@types/codemirror@^5.60.15": version "5.60.15" resolved "https://registry.yarnpkg.com/@types/codemirror/-/codemirror-5.60.15.tgz#0f82be6f4126d1e59cf4c4830e56dcd49d3c3e8a" @@ -8255,7 +8342,7 @@ resolved "https://registry.yarnpkg.com/@types/crypto-js/-/crypto-js-4.1.1.tgz#602859584cecc91894eb23a4892f38cfa927890d" integrity sha512-BG7fQKZ689HIoc5h+6D2Dgq1fABRa0RbBWKBd9SP/MVRVXROflpm5fhwyATX5duFmbStzyzyycPB8qUYKDH3NA== -"@types/debug@^4.0.0": +"@types/debug@^4.0.0", "@types/debug@^4.1.12": version "4.1.12" resolved "https://registry.yarnpkg.com/@types/debug/-/debug-4.1.12.tgz#a155f21690871953410df4b6b6f53187f0500917" integrity sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ== @@ -8379,6 +8466,11 @@ resolved "https://registry.yarnpkg.com/@types/firefox-webext-browser/-/firefox-webext-browser-109.0.0.tgz#17120057a46985ec7659dfd33589655860419929" integrity sha512-tkEjBP/zZxaS5bv8MH/0kUs3WeUm8KU3Ew1B9BtQQdq5PwtG23SXvAbjxjMSQpoIzbxyWG4Yu4mi1uB2S8W7ng== +"@types/firefox-webext-browser@^120.0.3": + version "120.0.3" + resolved "https://registry.yarnpkg.com/@types/firefox-webext-browser/-/firefox-webext-browser-120.0.3.tgz#d80f8d99a674102cd70cc3675490d4bc4771da61" + integrity sha512-APbBSxOvFMbKwXy/4YrEVa5Di6N0C9yl4w0WA0xzdkOrChAfPQ/KlcC8QLyhemHCHpF1CB/zHy52+oUQurViOg== + "@types/form-data@0.0.33": version "0.0.33" resolved "https://registry.yarnpkg.com/@types/form-data/-/form-data-0.0.33.tgz#c9ac85b2a5fd18435b8c85d9ecb50e6d6c893ff8" @@ -8723,7 +8815,7 @@ resolved "https://registry.yarnpkg.com/@types/mime/-/mime-3.0.1.tgz#5f8f2bca0a5863cb69bc0b0acd88c96cb1d4ae10" integrity sha512-Y4XFY5VJAuw0FgAqPNd6NNoV44jbq9Bz2L7Rh/J6jLTiHBSBJa9fxqQIvkIld4GsoDOcCbvzOUAbLPsSKKg+uA== -"@types/minimatch@*": +"@types/minimatch@*", "@types/minimatch@^3.0.5": version "3.0.5" resolved "https://registry.yarnpkg.com/@types/minimatch/-/minimatch-3.0.5.tgz#1001cc5e6a3704b83c236027e77f2f58ea010f40" integrity sha512-Klz949h02Gz2uZCMGwDUSDS1YBlTdDDgbWHi+81l29tQALUtvz4rAYi5uoVhE5Lagoq6DeqAUlbrHvW/mXDgdQ== @@ -9008,6 +9100,13 @@ "@types/scheduler" "*" csstype "^3.0.2" +"@types/readdir-glob@*": + version "1.1.5" + resolved "https://registry.yarnpkg.com/@types/readdir-glob/-/readdir-glob-1.1.5.tgz#21a4a98898fc606cb568ad815f2a0eedc24d412a" + integrity sha512-raiuEPUYqXu+nvtY2Pe8s8FEmZ3x5yAH4VkLdihcPdalvsHltomrRC9BzuStrJ9yk06470hS0Crw0f1pXqD+Hg== + dependencies: + "@types/node" "*" + "@types/resolve@1.17.1": version "1.17.1" resolved "https://registry.yarnpkg.com/@types/resolve/-/resolve-1.17.1.tgz#3afd6ad8967c77e4376c598a82ddd58f46ec45d6" @@ -9238,6 +9337,13 @@ dependencies: "@types/yargs-parser" "*" +"@types/yauzl@2.10.3": + version "2.10.3" + resolved "https://registry.yarnpkg.com/@types/yauzl/-/yauzl-2.10.3.tgz#e9b2808b4f109504a03cda958259876f61017999" + integrity sha512-oJoftv0LSuaDZE3Le4DbKX+KS9G36NzOeSap90UIK0yMA/NhKJhqlSGtNDORNRaIbQfzjXDrQa0ytJ6mNRGz/Q== + dependencies: + "@types/node" "*" + "@types/yauzl@2.9.2": version "2.9.2" resolved "https://registry.yarnpkg.com/@types/yauzl/-/yauzl-2.9.2.tgz#c48e5d56aff1444409e39fa164b0b4d4552a7b7a" @@ -10253,7 +10359,7 @@ acorn@^8.1.0, acorn@^8.8.1: resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.11.2.tgz#ca0d78b51895be5390a5903c5b3bdcdaf78ae40b" integrity sha512-nc0Axzp/0FILLEVsm4fNwLCwMttvhEI263QtVPQcbpfZZ3ts0hLsZGOpE6czNlid7CJ9MlyH8reXkpsf3YUY4w== -acorn@^8.4.1, acorn@^8.7.0, acorn@^8.8.0: +acorn@^8.4.1, acorn@^8.8.0: version "8.8.0" resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.8.0.tgz#88c0187620435c7f6015803f5539dae05a9dbea8" integrity sha512-QOxyigPVrpZ2GXT+PFyZTl6TtOFc5egxHIP9IlQ+RbupQuX4RkT/Bee4/kQuC02Xkzg84JcT7oLYtDIQxp+v7w== @@ -10325,41 +10431,42 @@ addons-linter@3.20.0: yargs "17.2.1" yauzl "2.10.0" -addons-linter@4.14.0: - version "4.14.0" - resolved "https://registry.yarnpkg.com/addons-linter/-/addons-linter-4.14.0.tgz#e8a5b99665a7e7df3fda2da42d73593fea8db3f9" - integrity sha512-TH3/PMS4Dd0Jf3kXW7DLXseHZcD7ZbnfnQAztkrP4YC0HQKQVZJ+lGOuDOGUtVQDMwC/eEdvHvZoRnHDer5qkg== +addons-linter@6.21.0: + version "6.21.0" + resolved "https://registry.yarnpkg.com/addons-linter/-/addons-linter-6.21.0.tgz#a0e9084a68fb958488572501f67c0ffe8411f9cd" + integrity sha512-4GBn14BR16FZE7dog6uz+1HO6V3B+mAVxmbwxRhed2y5eyrwIW832TmEpku+5A5bbovBZ4gilXEtBsl6A1AMmg== dependencies: - "@mdn/browser-compat-data" "4.1.12" - addons-moz-compare "1.2.0" - addons-scanner-utils "6.3.0" - ajv "6.12.6" - ajv-merge-patch "4.1.0" + "@fluent/syntax" "0.19.0" + "@mdn/browser-compat-data" "5.5.7" + addons-moz-compare "1.3.0" + addons-scanner-utils "9.9.0" + ajv "8.12.0" chalk "4.1.2" - cheerio "1.0.0-rc.10" + cheerio "1.0.0-rc.12" columnify "1.6.0" common-tags "1.8.2" - deepmerge "4.2.2" - eslint "8.11.0" - eslint-plugin-no-unsanitized "4.0.1" - eslint-visitor-keys "3.3.0" - espree "9.3.1" + deepmerge "4.3.1" + eslint "8.56.0" + eslint-plugin-no-unsanitized "4.0.2" + eslint-visitor-keys "3.4.3" + espree "9.6.1" esprima "4.0.1" - fluent-syntax "0.13.0" - glob "7.2.0" - image-size "1.0.1" + fast-json-patch "3.1.1" + glob "10.3.10" + image-size "1.1.1" is-mergeable-object "1.1.1" jed "1.1.1" + json-merge-patch "1.0.2" os-locale "5.0.0" - pino "7.9.1" - postcss "8.4.12" + pino "8.17.2" + postcss "8.4.33" relaxed-json "1.0.3" - semver "7.3.5" + semver "7.5.4" sha.js "2.4.11" source-map-support "0.5.21" tosource "1.0.0" upath "2.0.1" - yargs "17.4.0" + yargs "17.7.2" yauzl "2.10.0" addons-moz-compare@1.2.0: @@ -10367,6 +10474,11 @@ addons-moz-compare@1.2.0: resolved "https://registry.yarnpkg.com/addons-moz-compare/-/addons-moz-compare-1.2.0.tgz#d6246cbae224ab629cb7da397b2b9602938ea085" integrity sha512-COG8qk2/dubPqabfcoJW4E7pm2EQDI43iMrHnhlobvq/uRMEzx/PYJ1KaUZ97Vgg44R3QdRG5CvDsTRbMUHcDw== +addons-moz-compare@1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/addons-moz-compare/-/addons-moz-compare-1.3.0.tgz#9074dce00291cef998c2fba6b462d041cc6b3e36" + integrity sha512-/rXpQeaY0nOKhNx00pmZXdk5Mu+KhVlL3/pSBuAYwrxRrNiTvI/9xfQI8Lmm7DMMl+PDhtfAHY/0ibTpdeoQQQ== + addons-scanner-utils@5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/addons-scanner-utils/-/addons-scanner-utils-5.0.0.tgz#d5df1bb36d4e8d4e1a4580f1ca11d6349f7b2b5a" @@ -10379,12 +10491,12 @@ addons-scanner-utils@5.0.0: upath "2.0.1" yauzl "2.10.0" -addons-scanner-utils@6.3.0: - version "6.3.0" - resolved "https://registry.yarnpkg.com/addons-scanner-utils/-/addons-scanner-utils-6.3.0.tgz#99596585a1e5d50f543e4f765cb3549bcf9d48db" - integrity sha512-sD4U7TX/NFDUYVheydrcpHH9xG3E0eVBFDn1RuUkGpqRyay3SsOU75Pl2lWAbCmeE0Mh9inU1Fwl7Mm1VRWkZw== +addons-scanner-utils@9.9.0: + version "9.9.0" + resolved "https://registry.yarnpkg.com/addons-scanner-utils/-/addons-scanner-utils-9.9.0.tgz#5f6c4c60d40b408630382dc23dbb5a8baff137f5" + integrity sha512-YDP10U3sEZMuIgnjXMiAYgUU64jTbxmhpUXMlhi1nKO4Etz+ctGWoTUst7IQRoLWaY9y2r1KZDG3jALxLA1n7Q== dependencies: - "@types/yauzl" "2.9.2" + "@types/yauzl" "2.10.3" common-tags "1.8.2" first-chunk-stream "3.0.0" strip-bom-stream "4.0.0" @@ -10630,6 +10742,13 @@ ansi-align@^3.0.0: dependencies: string-width "^3.0.0" +ansi-align@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/ansi-align/-/ansi-align-3.0.1.tgz#0cdf12e111ace773a86e9a1fad1225c43cb19a59" + integrity sha512-IOfwwBF5iczOjp/WeY4YxyjqAFMQoZufdQWDd19SEExbVLNXqvpzSJ/M7Za4/sCPmQ0+GRquoA7bGcINcxew6w== + dependencies: + string-width "^4.1.0" + ansi-colors@4.1.3: version "4.1.3" resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-4.1.3.tgz#37611340eb2243e70cc604cad35d63270d48781b" @@ -10909,18 +11028,18 @@ archiver-utils@^4.0.1: normalize-path "^3.0.0" readable-stream "^3.6.0" -archiver@^3.1.1: - version "3.1.1" - resolved "https://registry.yarnpkg.com/archiver/-/archiver-3.1.1.tgz#9db7819d4daf60aec10fe86b16cb9258ced66ea0" - integrity sha512-5Hxxcig7gw5Jod/8Gq0OneVgLYET+oNHcxgWItq4TbhOzRLKNAFUb9edAftiMKXvXfCB0vbGrJdZDNq0dWMsxg== +archiver-utils@^5.0.0, archiver-utils@^5.0.2: + version "5.0.2" + resolved "https://registry.yarnpkg.com/archiver-utils/-/archiver-utils-5.0.2.tgz#63bc719d951803efc72cf961a56ef810760dd14d" + integrity sha512-wuLJMmIBQYCsGZgYLTy5FIB2pF6Lfb6cXMSF8Qywwk3t20zWnAi7zLcQFdKQmIB8wyZpY5ER38x08GbwtR2cLA== dependencies: - archiver-utils "^2.1.0" - async "^2.6.3" - buffer-crc32 "^0.2.1" - glob "^7.1.4" - readable-stream "^3.4.0" - tar-stream "^2.1.0" - zip-stream "^2.1.2" + glob "^10.0.0" + graceful-fs "^4.2.0" + is-stream "^2.0.1" + lazystream "^1.0.0" + lodash "^4.17.15" + normalize-path "^3.0.0" + readable-stream "^4.0.0" archiver@^5.0.0: version "5.3.1" @@ -10948,6 +11067,19 @@ archiver@^6.0.0: tar-stream "^3.0.0" zip-stream "^5.0.1" +archiver@^7.0.1: + version "7.0.1" + resolved "https://registry.yarnpkg.com/archiver/-/archiver-7.0.1.tgz#c9d91c350362040b8927379c7aa69c0655122f61" + integrity sha512-ZcbTaIqJOfCc03QwD468Unz/5Ir8ATtvAHsK+FdXbDIbGfihqh9mrvdcYunQzqn4HrvWWaFyaxJhGZagaJJpPQ== + dependencies: + archiver-utils "^5.0.2" + async "^3.2.4" + buffer-crc32 "^1.0.0" + readable-stream "^4.0.0" + readdir-glob "^1.1.2" + tar-stream "^3.0.0" + zip-stream "^6.0.1" + archy@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/archy/-/archy-1.0.0.tgz#f9c8c13757cc1dd7bc379ac77b2c62a5c2868c40" @@ -11023,6 +11155,11 @@ array-differ@^3.0.0: resolved "https://registry.yarnpkg.com/array-differ/-/array-differ-3.0.0.tgz#3cbb3d0f316810eafcc47624734237d6aee4ae6b" integrity sha512-THtfYS6KtME/yIAhKjZ2ul7XI96lQGHRputJQHO80LAWQnuGP4iCIN8vdMRboGbIEYBwU33q8Tch1os2+X0kMg== +array-differ@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/array-differ/-/array-differ-4.0.0.tgz#aa3c891c653523290c880022f45b06a42051b026" + integrity sha512-Q6VPTLMsmXZ47ENG3V+wQyZS1ZxXMxFyYzA+Z/GMrJ6yIutAIEf9wTyroTzmGjNfox9/h3GdGBCVh43GVFx4Uw== + array-filter@~0.0.0: version "0.0.1" resolved "https://registry.yarnpkg.com/array-filter/-/array-filter-0.0.1.tgz#7da8cf2e26628ed732803581fd21f67cacd2eeec" @@ -11097,6 +11234,11 @@ array-union@^2.1.0: resolved "https://registry.yarnpkg.com/array-union/-/array-union-2.1.0.tgz#b798420adbeb1de828d84acd8a2e23d3efe85e8d" integrity sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw== +array-union@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/array-union/-/array-union-3.0.1.tgz#da52630d327f8b88cfbfb57728e2af5cd9b6b975" + integrity sha512-1OvF9IbWwaeiM9VhzYXVQacMibxpXOMYVNIvMtKRyX9SImBXpKcFr8XvFDeEslCyuH/t6KRt7HEO94AlP8Iatw== + array-uniq@^1.0.1: version "1.0.3" resolved "https://registry.yarnpkg.com/array-uniq/-/array-uniq-1.0.3.tgz#af6ac877a25cc7f74e058894753858dfdb24fdb6" @@ -11247,13 +11389,6 @@ async@^2.6.0: dependencies: lodash "^4.17.14" -async@^2.6.3: - version "2.6.3" - resolved "https://registry.yarnpkg.com/async/-/async-2.6.3.tgz#d72625e2344a3656e3a3ad4fa749fa83299d82ff" - integrity sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg== - dependencies: - lodash "^4.17.14" - async@^3.2.0: version "3.2.2" resolved "https://registry.yarnpkg.com/async/-/async-3.2.2.tgz#2eb7671034bb2194d45d30e31e24ec7e7f9670cd" @@ -12251,13 +12386,6 @@ binary@~0.3.0: buffers "~0.1.1" chainsaw "~0.1.0" -bl@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/bl/-/bl-3.0.0.tgz#3611ec00579fd18561754360b21e9f784500ff88" - integrity sha512-EUAyP5UHU5hxF8BPT0LKW8gjYLhq1DQIcneOX/pL/m2Alo+OYDQAJlHq+yseMP50Os2nHXOSic6Ss3vSQeyf4A== - dependencies: - readable-stream "^3.0.1" - bl@^4.0.3, bl@^4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/bl/-/bl-4.1.0.tgz#451535264182bec2fbbc83a62ab98cf11d9f7b3a" @@ -12286,7 +12414,7 @@ bluebird-lst@^1.0.9: dependencies: bluebird "^3.5.5" -bluebird@3.7.2, bluebird@^3.5.0, bluebird@^3.5.5: +bluebird@3.7.2, bluebird@^3.5.0, bluebird@^3.5.5, bluebird@~3.7: version "3.7.2" resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.7.2.tgz#9f229c15be272454ffa973ace0dbee79a1b0c36f" integrity sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg== @@ -12405,6 +12533,20 @@ boxen@^5.0.0: widest-line "^3.1.0" wrap-ansi "^7.0.0" +boxen@^7.0.0: + version "7.1.1" + resolved "https://registry.yarnpkg.com/boxen/-/boxen-7.1.1.tgz#f9ba525413c2fec9cdb88987d835c4f7cad9c8f4" + integrity sha512-2hCgjEmP8YLWQ130n2FerGv7rYpfBmnmp9Uy2Le1vge6X3gZIfSmEzP5QTDElFxcvVcXlEn8Aq6MU/PZygIOog== + dependencies: + ansi-align "^3.0.1" + camelcase "^7.0.1" + chalk "^5.2.0" + cli-boxes "^3.0.0" + string-width "^5.1.2" + type-fest "^2.13.0" + widest-line "^4.0.1" + wrap-ansi "^8.1.0" + bplist-creator@0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/bplist-creator/-/bplist-creator-0.1.0.tgz#018a2d1b587f769e379ef5519103730f8963ba1e" @@ -12625,6 +12767,11 @@ buffer-crc32@^0.2.1, buffer-crc32@^0.2.13, buffer-crc32@~0.2.3: resolved "https://registry.yarnpkg.com/buffer-crc32/-/buffer-crc32-0.2.13.tgz#0d333e3f00eac50aa1454abd30ef8c2a5d9a7242" integrity sha1-DTM+PwDqxQqhRUq9MO+MKl2ackI= +buffer-crc32@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/buffer-crc32/-/buffer-crc32-1.0.0.tgz#a10993b9055081d55304bd9feb4a072de179f405" + integrity sha512-Db1SbgBS/fg/392AblrMJk97KggmvYhr4pB5ZIMTWtaivCPMWLkmb7m21cJvpvgK+J3nsU2CmmixNBZx4vFj/w== + buffer-equal-constant-time@1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz#f8e71132f7ffe6e01a5c9697a4c6f3e48d5cc819" @@ -12960,6 +13107,11 @@ camelcase@6.2.0: resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-6.2.0.tgz#924af881c9d525ac9d87f40d964e5cea982a1809" integrity sha512-c7wVvbw3f37nuobQNtgsgG9POC9qMbNuMQmTCqZv23b6MIz0fcYpBiOlv9gEN/hdLdnZTDQhg6e9Dq5M1vKvfg== +camelcase@7.0.1, camelcase@^7.0.1: + version "7.0.1" + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-7.0.1.tgz#f02e50af9fd7782bc8b88a3558c32fd3a388f048" + integrity sha512-xlx1yCK2Oc1APsPXDL2LdlNP6+uu8OCDdhOBSVT279M/S+y75O30C2VuD8T2ogdePBBl7PfPF4504tnLgX3zfw== + camelcase@^4.0.0, camelcase@^4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-4.1.0.tgz#d545635be1e33c542649c69173e5de6acfae34dd" @@ -13075,7 +13227,7 @@ chalk@^2.0.0, chalk@^2.0.1, chalk@^2.1.0, chalk@^2.4.1, chalk@^2.4.2: escape-string-regexp "^1.0.5" supports-color "^5.3.0" -chalk@^5.1.2, chalk@^5.3.0: +chalk@^5.0.1, chalk@^5.1.2, chalk@^5.2.0, chalk@^5.3.0: version "5.3.0" resolved "https://registry.yarnpkg.com/chalk/-/chalk-5.3.0.tgz#67c20a7ebef70e7f3970a01f90fa210cb6860385" integrity sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w== @@ -13141,6 +13293,18 @@ cheerio-select@^1.5.0: domhandler "^4.2.0" domutils "^2.7.0" +cheerio-select@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/cheerio-select/-/cheerio-select-2.1.0.tgz#4d8673286b8126ca2a8e42740d5e3c4884ae21b4" + integrity sha512-9v9kG0LvzrlcungtnJtpGNxY+fzECQKhK4EGJX2vByejiMX84MFNQw4UxPJl3bFbTMw+Dfs37XaIkCwTZfLh4g== + dependencies: + boolbase "^1.0.0" + css-select "^5.1.0" + css-what "^6.1.0" + domelementtype "^2.3.0" + domhandler "^5.0.3" + domutils "^3.0.1" + cheerio@1.0.0-rc.10: version "1.0.0-rc.10" resolved "https://registry.yarnpkg.com/cheerio/-/cheerio-1.0.0-rc.10.tgz#2ba3dcdfcc26e7956fc1f440e61d51c643379f3e" @@ -13154,6 +13318,19 @@ cheerio@1.0.0-rc.10: parse5-htmlparser2-tree-adapter "^6.0.1" tslib "^2.2.0" +cheerio@1.0.0-rc.12: + version "1.0.0-rc.12" + resolved "https://registry.yarnpkg.com/cheerio/-/cheerio-1.0.0-rc.12.tgz#788bf7466506b1c6bf5fae51d24a2c4d62e47683" + integrity sha512-VqR8m68vM46BNnuZ5NtnGBKIE/DfN0cRIzg9n40EIq9NOv90ayxLBXA8fXC5gquFRGJSTRqBq25Jt2ECLR431Q== + dependencies: + cheerio-select "^2.1.0" + dom-serializer "^2.0.0" + domhandler "^5.0.3" + domutils "^3.0.1" + htmlparser2 "^8.0.1" + parse5 "^7.0.0" + parse5-htmlparser2-tree-adapter "^7.0.0" + chokidar@3.5.3, chokidar@^3.0.0, chokidar@^3.5.0, chokidar@^3.5.2, chokidar@^3.5.3: version "3.5.3" resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.5.3.tgz#1cf37c8707b932bd1af1ae22c0432e2acd1903bd" @@ -13219,10 +13396,10 @@ chrome-launcher@0.14.0: is-wsl "^2.2.0" lighthouse-logger "^1.0.0" -chrome-launcher@0.15.0: - version "0.15.0" - resolved "https://registry.yarnpkg.com/chrome-launcher/-/chrome-launcher-0.15.0.tgz#5144a57aba0cf2f4cbe61dccefdde024fb3ca7fc" - integrity sha512-ZQqX5kb9H0+jy1OqLnWampfocrtSZaGl7Ny3F9GRha85o4odbL8x55paUzh51UC7cEmZ5obp3H2Mm70uC2PpRA== +chrome-launcher@0.15.1: + version "0.15.1" + resolved "https://registry.yarnpkg.com/chrome-launcher/-/chrome-launcher-0.15.1.tgz#0a0208037063641e2b3613b7e42b0fcb3fa2d399" + integrity sha512-UugC8u59/w2AyX5sHLZUHoxBAiSiunUhZa3zZwMH6zPVis0C3dDKiRWyUGIo14tTbZHGVviWxv3PQWZ7taZ4fg== dependencies: "@types/node" "*" escape-string-regexp "^4.0.0" @@ -13322,6 +13499,11 @@ cli-boxes@^2.2.1: resolved "https://registry.yarnpkg.com/cli-boxes/-/cli-boxes-2.2.1.tgz#ddd5035d25094fce220e9cab40a45840a440318f" integrity sha512-y4coMcylgSCdVinjiDBuR8PCC2bLjyGTwEmPb9NHR/QaNU6EUOXcTY/s6VjGMD6ENSEaeQYHCY0GNGS5jfMwPw== +cli-boxes@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/cli-boxes/-/cli-boxes-3.0.0.tgz#71a10c716feeba005e4504f36329ef0b17cf3145" + integrity sha512-/lzGpEWL/8PfI0BmBOPRwp0c/wFNX1RdUML3jK/RcSBA9T8mZDdQpqYBKtCFTOfQbwPqWEOpjqW+Fnayc0969g== + cli-cursor@3.1.0, cli-cursor@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-3.1.0.tgz#264305a7ae490d1d03bf0c9ba7c925d1753af307" @@ -13656,7 +13838,7 @@ commander@2.9.0: dependencies: graceful-readlink ">= 1.0.0" -commander@4.1.1, commander@^4.0.0, commander@^4.1.1: +commander@4.1.1, commander@^4.0.0: version "4.1.1" resolved "https://registry.yarnpkg.com/commander/-/commander-4.1.1.tgz#9fd602bd936294e9e9ef46a3f4d6964044b18068" integrity sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA== @@ -13666,6 +13848,11 @@ commander@7: resolved "https://registry.yarnpkg.com/commander/-/commander-7.2.0.tgz#a36cb57d0b501ce108e4d20559a150a391d97ab7" integrity sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw== +commander@^12.0.0: + version "12.0.0" + resolved "https://registry.yarnpkg.com/commander/-/commander-12.0.0.tgz#b929db6df8546080adfd004ab215ed48cf6f2592" + integrity sha512-MwVNWlYjDTtOjX5PiD7o5pK0UrFU/OYgcJfjjK4RaHZETNtjJqrZa9Y9ds88+A+f+d5lv+561eZ+yCKoS3gbAA== + commander@^5.0.0: version "5.1.0" resolved "https://registry.yarnpkg.com/commander/-/commander-5.1.0.tgz#46abbd1652f8e059bddaef99bbdcb2ad9cf179ae" @@ -13676,7 +13863,7 @@ commander@^8.0.0: resolved "https://registry.yarnpkg.com/commander/-/commander-8.3.0.tgz#4837ea1b2da67b9c616a67afbb0fafee567bca66" integrity sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww== -commander@^9.3.0: +commander@^9.1.0, commander@^9.3.0: version "9.5.0" resolved "https://registry.yarnpkg.com/commander/-/commander-9.5.0.tgz#bc08d1eb5cedf7ccb797a96199d41c7bc3e60d30" integrity sha512-KRs7WVDKg86PWiuAqhDrAQnTXZKraVcCc6vFdL14qrZ/DcWwuRo7VoiYXalXO7S5GKpqYiVEwCbgFDfxNHKJBQ== @@ -13743,16 +13930,6 @@ compress-brotli@^1.3.8: "@types/json-buffer" "~3.0.0" json-buffer "~3.0.1" -compress-commons@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/compress-commons/-/compress-commons-2.1.1.tgz#9410d9a534cf8435e3fbbb7c6ce48de2dc2f0610" - integrity sha512-eVw6n7CnEMFzc3duyFVrQEuY1BlHR3rYsSztyG32ibGMW722i3C6IizEGMFmfMU+A+fALvBIwxN3czffTcdA+Q== - dependencies: - buffer-crc32 "^0.2.13" - crc32-stream "^3.0.1" - normalize-path "^3.0.0" - readable-stream "^2.3.6" - compress-commons@^4.1.0: version "4.1.1" resolved "https://registry.yarnpkg.com/compress-commons/-/compress-commons-4.1.1.tgz#df2a09a7ed17447642bad10a85cc9a19e5c42a7d" @@ -13773,6 +13950,17 @@ compress-commons@^5.0.1: normalize-path "^3.0.0" readable-stream "^3.6.0" +compress-commons@^6.0.2: + version "6.0.2" + resolved "https://registry.yarnpkg.com/compress-commons/-/compress-commons-6.0.2.tgz#26d31251a66b9d6ba23a84064ecd3a6a71d2609e" + integrity sha512-6FqVXeETqWPoGcfzrXb37E50NP0LXT8kAMu5ooZayhWWdgEY4lBEEcbQNXtkuKQsGduxiIcI4gOTsxTmuq/bSg== + dependencies: + crc-32 "^1.2.0" + crc32-stream "^6.0.0" + is-stream "^2.0.1" + normalize-path "^3.0.0" + readable-stream "^4.0.0" + compressible@~2.0.16: version "2.0.18" resolved "https://registry.yarnpkg.com/compressible/-/compressible-2.0.18.tgz#af53cca6b070d4c3c0750fbd77286a6d7cc46fba" @@ -13862,6 +14050,17 @@ configstore@^5.0.1: write-file-atomic "^3.0.0" xdg-basedir "^4.0.0" +configstore@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/configstore/-/configstore-6.0.0.tgz#49eca2ebc80983f77e09394a1a56e0aca8235566" + integrity sha512-cD31W1v3GqUlQvbBCGcXmd2Nj9SvLDOP1oQ0YFuLETufzSPaKp11rYBsSOm7rCsW3OnIRAFM3OxRhceaXNYHkA== + dependencies: + dot-prop "^6.0.1" + graceful-fs "^4.2.6" + unique-string "^3.0.0" + write-file-atomic "^3.0.3" + xdg-basedir "^5.0.1" + connect-history-api-fallback@^1: version "1.6.0" resolved "https://registry.yarnpkg.com/connect-history-api-fallback/-/connect-history-api-fallback-1.6.0.tgz#8b32089359308d111115d81cad3fceab888f97bc" @@ -14099,10 +14298,10 @@ core-js@3.18.0: resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.18.0.tgz#9af3f4a6df9ba3428a3fb1b171f1503b3f40cc49" integrity sha512-WJeQqq6jOYgVgg4NrXKL0KLQhi0CT4ZOCvFL+3CQ5o7I6J8HkT5wd53EadMfqTDp1so/MT1J+w2ujhWcCJtN7w== -core-js@3.21.0: - version "3.21.0" - resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.21.0.tgz#f479dbfc3dffb035a0827602dd056839a774aa71" - integrity sha512-YUdI3fFu4TF/2WykQ2xzSiTQdldLB4KVuL9WeAy5XONZYt5Cun/fpQvctoKbCgvPhmzADeesTk/j2Rdx77AcKQ== +core-js@3.29.0: + version "3.29.0" + resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.29.0.tgz#0273e142b67761058bcde5615c503c7406b572d6" + integrity sha512-VG23vuEisJNkGl6XQmFJd3rEG/so/CNatqeE+7uZAwTSwFeB/qaO0be8xZYUNWprJ/GIwL8aMt9cj1kvbpTZhg== core-js@3.6.5: version "3.6.5" @@ -14191,14 +14390,6 @@ crc-32@^1.2.0: resolved "https://registry.yarnpkg.com/crc-32/-/crc-32-1.2.2.tgz#3cad35a934b8bf71f25ca524b6da51fb7eace2ff" integrity sha512-ROmzCKrTnOwybPcJApAA6WBWij23HVfGVNKqqrZpuyZOHqK2CwHSvpGuyt/UNNvaIjEd8X5IFGp4Mh+Ie1IHJQ== -crc32-stream@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/crc32-stream/-/crc32-stream-3.0.1.tgz#cae6eeed003b0e44d739d279de5ae63b171b4e85" - integrity sha512-mctvpXlbzsvK+6z8kJwSJ5crm7yBwrQMTybJzMw1O4lLGJqjlDCXY2Zw7KheiA6XBEcBmfLx1D88mjRGVJtY9w== - dependencies: - crc "^3.4.4" - readable-stream "^3.4.0" - crc32-stream@^4.0.2: version "4.0.2" resolved "https://registry.yarnpkg.com/crc32-stream/-/crc32-stream-4.0.2.tgz#c922ad22b38395abe9d3870f02fa8134ed709007" @@ -14215,7 +14406,15 @@ crc32-stream@^5.0.0: crc-32 "^1.2.0" readable-stream "^3.4.0" -crc@^3.4.4, crc@^3.8.0: +crc32-stream@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/crc32-stream/-/crc32-stream-6.0.0.tgz#8529a3868f8b27abb915f6c3617c0fadedbf9430" + integrity sha512-piICUB6ei4IlTv1+653yq5+KoqfBYmj9bw6LqXoOneTMDXk5nM1qt12mFW1caG3LlJXEKW1Bp0WggEmIfQB34g== + dependencies: + crc-32 "^1.2.0" + readable-stream "^4.0.0" + +crc@^3.8.0: version "3.8.0" resolved "https://registry.yarnpkg.com/crc/-/crc-3.8.0.tgz#ad60269c2c856f8c299e2c4cc0de4556914056c6" integrity sha512-iX3mfgcTMIq3ZKLIsVFAbv7+Mc10kxabAGQb8HvjA1o3T1PIYprbakQ65d3I+2HGHt6nSKkM9PYjgoJO2KcFBQ== @@ -14314,6 +14513,13 @@ crypto-random-string@^2.0.0: resolved "https://registry.yarnpkg.com/crypto-random-string/-/crypto-random-string-2.0.0.tgz#ef2a7a966ec11083388369baa02ebead229b30d5" integrity sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA== +crypto-random-string@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/crypto-random-string/-/crypto-random-string-4.0.0.tgz#5a3cc53d7dd86183df5da0312816ceeeb5bb1fc2" + integrity sha512-x8dy3RnvYdlUcPOjkEHqozhiwzKNSq7GcPuXFbnyMOCHxX8V3OgIg/pYuabl2sbUPfIJaeAQB7PMOK8DFIdoRA== + dependencies: + type-fest "^1.0.1" + csp-header@^5.1.0: version "5.1.0" resolved "https://registry.yarnpkg.com/csp-header/-/csp-header-5.1.0.tgz#6aa7aecbc2b4118e808f8e50106dc918c4f16f62" @@ -14490,20 +14696,6 @@ currently-unhandled@^0.4.1: dependencies: array-find-index "^1.0.1" -cwex@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/cwex/-/cwex-1.0.4.tgz#fb9c7f58175a563498a86a232b82ddbed938bf95" - integrity sha512-iuzRKQVg1ir022q/Uy4zSPK2jgIV3fQyX0jJCC3rTKj765GxSqS5gmEONIPoQI4VDryq5tOl1Y7WJ11AYpPxqg== - dependencies: - archiver "^3.1.1" - commander "^4.1.1" - debug "^4.1.1" - find-up "^4.1.0" - fs-extra "^8.1.0" - globby "^11.0.0" - web-ext "^6.8.0" - yaml "^1.7.2" - d3-array@1, d3-array@^1.1.1, d3-array@^1.2.0: version "1.2.4" resolved "https://registry.yarnpkg.com/d3-array/-/d3-array-1.2.4.tgz#635ce4d5eea759f6f605863dbcfc30edc737f71f" @@ -15104,7 +15296,7 @@ debounce@1.2.0: resolved "https://registry.yarnpkg.com/debounce/-/debounce-1.2.0.tgz#44a540abc0ea9943018dc0eaa95cce87f65cd131" integrity sha512-mYtLl1xfZLi1m4RtQYlZgJUNQjl4ZxVnHzIR8nLLgi4q1YT8o/WM+MK/f8yfcc9s5Ir5zRaPZyZU6xs1Syoocg== -debounce@^1.2.0: +debounce@1.2.1, debounce@^1.2.0: version "1.2.1" resolved "https://registry.yarnpkg.com/debounce/-/debounce-1.2.1.tgz#38881d8f4166a5c5848020c11827b834bcb3e0a5" integrity sha512-XRRe6Glud4rd/ZGQfiV1ruXSfbvfJedlV9Y6zOlP+2K04vBYiJEte6stfFkCP03aMnY5tsipamumUjL14fofug== @@ -15184,6 +15376,11 @@ decamelize@5.0.0: resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-5.0.0.tgz#88358157b010ef133febfd27c18994bd80c6215b" integrity sha512-U75DcT5hrio3KNtvdULAWnLiAPbFUC4191ldxMmj4FA/mRuBnmDwU0boNfPyFRhnan+Jm+haLeSn3P0afcBn4w== +decamelize@6.0.0, decamelize@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-6.0.0.tgz#8cad4d916fde5c41a264a43d0ecc56fe3d31749e" + integrity sha512-Fv96DCsdOgB6mdGl67MT5JaTNKRzrzill5OH5s8bjYJXVlcXyPYGyPsUkWyGV5p1TXI5esYIYMMeDJL0hEIwaA== + decamelize@^1.1.0, decamelize@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" @@ -15196,11 +15393,6 @@ decamelize@^3.0.0: dependencies: xregexp "^4.2.4" -decamelize@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-6.0.0.tgz#8cad4d916fde5c41a264a43d0ecc56fe3d31749e" - integrity sha512-Fv96DCsdOgB6mdGl67MT5JaTNKRzrzill5OH5s8bjYJXVlcXyPYGyPsUkWyGV5p1TXI5esYIYMMeDJL0hEIwaA== - decimal.js@^10.4.2: version "10.4.3" resolved "https://registry.yarnpkg.com/decimal.js/-/decimal.js-10.4.3.tgz#1044092884d245d1b7f65725fa4ad4c6f781cc23" @@ -15303,7 +15495,7 @@ deepmerge@4.3.0: resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-4.3.0.tgz#65491893ec47756d44719ae520e0e2609233b59b" integrity sha512-z2wJZXrmeHdvYJp/Ux55wIjqo81G5Bp4c+oELTW+7ar6SogWHajt5a9gO3s3IDaGSAXjDk0vlQKN3rms8ab3og== -deepmerge@^4.3.1: +deepmerge@4.3.1, deepmerge@^4.3.1: version "4.3.1" resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-4.3.1.tgz#44b5f2147cd3b00d4b56137685966f26fd25dd4a" integrity sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A== @@ -15893,16 +16085,6 @@ duplexer@^0.1.1, duplexer@~0.1.1: resolved "https://registry.yarnpkg.com/duplexer/-/duplexer-0.1.1.tgz#ace6ff808c1ce66b57d1ebf97977acb02334cfc1" integrity sha1-rOb/gIwc5mtX0ev5eXessCM0z8E= -duplexify@^4.1.2: - version "4.1.2" - resolved "https://registry.yarnpkg.com/duplexify/-/duplexify-4.1.2.tgz#18b4f8d28289132fa0b9573c898d9f903f81c7b0" - integrity sha512-fz3OjcNCHmRP12MJoZMPglx8m4rrFP8rovnk4vT8Fs+aonZoCwGg10dSsQsfP/E62eZcPTMSMP6686fu9Qlqtw== - dependencies: - end-of-stream "^1.4.1" - inherits "^2.0.3" - readable-stream "^3.1.1" - stream-shift "^1.0.0" - eastasianwidth@^0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/eastasianwidth/-/eastasianwidth-0.2.0.tgz#696ce2ec0aa0e6ea93a397ffcf24aa7840c827cb" @@ -17036,6 +17218,11 @@ escape-goat@^2.0.0: resolved "https://registry.yarnpkg.com/escape-goat/-/escape-goat-2.1.1.tgz#1b2dc77003676c457ec760b2dc68edb648188675" integrity sha512-8/uIhbG12Csjy2JEW7D9pHbreaVaS/OpN3ycnyvElTdwM5n6GY6W6e2IPemfvGZeUMqZ9A/3GqIZMgKnBhAw/Q== +escape-goat@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/escape-goat/-/escape-goat-4.0.0.tgz#9424820331b510b0666b98f7873fe11ac4aa8081" + integrity sha512-2Sd4ShcWxbx6OY1IHyla/CVNwvg7XwZVoXZHcSu9w9SReNP1EzzD5T8NWKIR38fIqEns9kDWKUQTXXAmlDrdPg== + escape-html@^1.0.3, escape-html@~1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988" @@ -17173,12 +17360,7 @@ eslint-plugin-no-unsanitized@3.1.5: resolved "https://registry.yarnpkg.com/eslint-plugin-no-unsanitized/-/eslint-plugin-no-unsanitized-3.1.5.tgz#7e1ee74cf41ae59fec48c2ee2e21a7dcb86965fb" integrity sha512-s/6w++p1590h/H/dE2Wo660bOkaM/3OEK14Y7xm1UT0bafxkKw1Cq0ksjxkxLdH/WWd014DlsLKuD6CyNrR2Dw== -eslint-plugin-no-unsanitized@4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/eslint-plugin-no-unsanitized/-/eslint-plugin-no-unsanitized-4.0.1.tgz#e2343265467ba2270ade478cbe07bbafeaea412d" - integrity sha512-y/lAMWnPPC7RYuUdxlEL/XiCL8FehN9h9s3Kjqbp/Kv0i9NZs+IXSC2kS546Fa4Bumwy31HlVS/OdWX0Kxb5Xg== - -eslint-plugin-no-unsanitized@^4.0.2: +eslint-plugin-no-unsanitized@4.0.2, eslint-plugin-no-unsanitized@^4.0.2: version "4.0.2" resolved "https://registry.yarnpkg.com/eslint-plugin-no-unsanitized/-/eslint-plugin-no-unsanitized-4.0.2.tgz#e872b302cdfb5fe1262db989ba29cfcc334b499b" integrity sha512-Pry0S9YmHoz8NCEMRQh7N0Yexh2MYCNPIlrV52hTmS7qXnTghWsjXouF08bgsrrZqaW9tt1ZiK3j5NEmPE+EjQ== @@ -17244,10 +17426,10 @@ eslint-visitor-keys@3.0.0: resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-3.0.0.tgz#e32e99c6cdc2eb063f204eda5db67bfe58bb4186" integrity sha512-mJOZa35trBTb3IyRmo8xmKBZlxf+N7OnUl4+ZhJHs/r+0770Wh/LEACE2pqMGMe27G/4y8P2bYGk4J70IC5k1Q== -eslint-visitor-keys@3.3.0, eslint-visitor-keys@^3.3.0: - version "3.3.0" - resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz#f6480fa6b1f30efe2d1968aa8ac745b862469826" - integrity sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA== +eslint-visitor-keys@3.4.3, eslint-visitor-keys@^3.4.1, eslint-visitor-keys@^3.4.3: + version "3.4.3" + resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz#0cd72fe8550e3c2eae156a96a4dddcd1c8ac5800" + integrity sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag== eslint-visitor-keys@^1.1.0: version "1.1.0" @@ -17269,10 +17451,10 @@ eslint-visitor-keys@^3.0.0: resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-3.1.0.tgz#eee4acea891814cda67a7d8812d9647dd0179af2" integrity sha512-yWJFpu4DtjsWKkt5GeNBBuZMlNcYVs6vRCLoCVEJrTjaSB6LC98gFipNK/erM2Heg/E8mIK+hXG/pJMLK+eRZA== -eslint-visitor-keys@^3.4.1, eslint-visitor-keys@^3.4.3: - version "3.4.3" - resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz#0cd72fe8550e3c2eae156a96a4dddcd1c8ac5800" - integrity sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag== +eslint-visitor-keys@^3.3.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz#f6480fa6b1f30efe2d1968aa8ac745b862469826" + integrity sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA== eslint@7.32.0, eslint@^7.3.1: version "7.32.0" @@ -17320,12 +17502,12 @@ eslint@7.32.0, eslint@^7.3.1: text-table "^0.2.0" v8-compile-cache "^2.0.3" -eslint@8.11.0: - version "8.11.0" - resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.11.0.tgz#88b91cfba1356fc10bb9eb592958457dfe09fb37" - integrity sha512-/KRpd9mIRg2raGxHRGwW9ZywYNAClZrHjdueHcrVDuO3a6bj83eoTirCCk0M0yPwOjWYKHwRVRid+xK4F/GHgA== +eslint@8.18.0: + version "8.18.0" + resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.18.0.tgz#78d565d16c993d0b73968c523c0446b13da784fd" + integrity sha512-As1EfFMVk7Xc6/CvhssHUjsAQSkpfXvUGMFC3ce8JDe6WvqCgRrLOBQbVpsBFr1X1V+RACOadnzVvcUS5ni2bA== dependencies: - "@eslint/eslintrc" "^1.2.1" + "@eslint/eslintrc" "^1.3.0" "@humanwhocodes/config-array" "^0.9.2" ajv "^6.10.0" chalk "^4.0.0" @@ -17336,14 +17518,14 @@ eslint@8.11.0: eslint-scope "^7.1.1" eslint-utils "^3.0.0" eslint-visitor-keys "^3.3.0" - espree "^9.3.1" + espree "^9.3.2" esquery "^1.4.0" esutils "^2.0.2" fast-deep-equal "^3.1.3" file-entry-cache "^6.0.1" functional-red-black-tree "^1.0.1" glob-parent "^6.0.1" - globals "^13.6.0" + globals "^13.15.0" ignore "^5.2.0" import-fresh "^3.0.0" imurmurhash "^0.1.4" @@ -17352,7 +17534,7 @@ eslint@8.11.0: json-stable-stringify-without-jsonify "^1.0.1" levn "^0.4.1" lodash.merge "^4.6.2" - minimatch "^3.0.4" + minimatch "^3.1.2" natural-compare "^1.4.0" optionator "^0.9.1" regexpp "^3.2.0" @@ -17361,46 +17543,49 @@ eslint@8.11.0: text-table "^0.2.0" v8-compile-cache "^2.0.3" -eslint@8.18.0: - version "8.18.0" - resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.18.0.tgz#78d565d16c993d0b73968c523c0446b13da784fd" - integrity sha512-As1EfFMVk7Xc6/CvhssHUjsAQSkpfXvUGMFC3ce8JDe6WvqCgRrLOBQbVpsBFr1X1V+RACOadnzVvcUS5ni2bA== +eslint@8.56.0, eslint@^8.56.0: + version "8.56.0" + resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.56.0.tgz#4957ce8da409dc0809f99ab07a1b94832ab74b15" + integrity sha512-Go19xM6T9puCOWntie1/P997aXxFsOi37JIHRWI514Hc6ZnaHGKY9xFhrU65RT6CcBEzZoGG1e6Nq+DT04ZtZQ== dependencies: - "@eslint/eslintrc" "^1.3.0" - "@humanwhocodes/config-array" "^0.9.2" - ajv "^6.10.0" + "@eslint-community/eslint-utils" "^4.2.0" + "@eslint-community/regexpp" "^4.6.1" + "@eslint/eslintrc" "^2.1.4" + "@eslint/js" "8.56.0" + "@humanwhocodes/config-array" "^0.11.13" + "@humanwhocodes/module-importer" "^1.0.1" + "@nodelib/fs.walk" "^1.2.8" + "@ungap/structured-clone" "^1.2.0" + ajv "^6.12.4" chalk "^4.0.0" cross-spawn "^7.0.2" debug "^4.3.2" doctrine "^3.0.0" escape-string-regexp "^4.0.0" - eslint-scope "^7.1.1" - eslint-utils "^3.0.0" - eslint-visitor-keys "^3.3.0" - espree "^9.3.2" - esquery "^1.4.0" + eslint-scope "^7.2.2" + eslint-visitor-keys "^3.4.3" + espree "^9.6.1" + esquery "^1.4.2" esutils "^2.0.2" fast-deep-equal "^3.1.3" file-entry-cache "^6.0.1" - functional-red-black-tree "^1.0.1" - glob-parent "^6.0.1" - globals "^13.15.0" + find-up "^5.0.0" + glob-parent "^6.0.2" + globals "^13.19.0" + graphemer "^1.4.0" ignore "^5.2.0" - import-fresh "^3.0.0" imurmurhash "^0.1.4" is-glob "^4.0.0" + is-path-inside "^3.0.3" js-yaml "^4.1.0" json-stable-stringify-without-jsonify "^1.0.1" levn "^0.4.1" lodash.merge "^4.6.2" minimatch "^3.1.2" natural-compare "^1.4.0" - optionator "^0.9.1" - regexpp "^3.2.0" + optionator "^0.9.3" strip-ansi "^6.0.1" - strip-json-comments "^3.1.0" text-table "^0.2.0" - v8-compile-cache "^2.0.3" eslint@^8.0.1: version "8.26.0" @@ -17492,50 +17677,6 @@ eslint@^8.31.0: strip-json-comments "^3.1.0" text-table "^0.2.0" -eslint@^8.56.0: - version "8.56.0" - resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.56.0.tgz#4957ce8da409dc0809f99ab07a1b94832ab74b15" - integrity sha512-Go19xM6T9puCOWntie1/P997aXxFsOi37JIHRWI514Hc6ZnaHGKY9xFhrU65RT6CcBEzZoGG1e6Nq+DT04ZtZQ== - dependencies: - "@eslint-community/eslint-utils" "^4.2.0" - "@eslint-community/regexpp" "^4.6.1" - "@eslint/eslintrc" "^2.1.4" - "@eslint/js" "8.56.0" - "@humanwhocodes/config-array" "^0.11.13" - "@humanwhocodes/module-importer" "^1.0.1" - "@nodelib/fs.walk" "^1.2.8" - "@ungap/structured-clone" "^1.2.0" - ajv "^6.12.4" - chalk "^4.0.0" - cross-spawn "^7.0.2" - debug "^4.3.2" - doctrine "^3.0.0" - escape-string-regexp "^4.0.0" - eslint-scope "^7.2.2" - eslint-visitor-keys "^3.4.3" - espree "^9.6.1" - esquery "^1.4.2" - esutils "^2.0.2" - fast-deep-equal "^3.1.3" - file-entry-cache "^6.0.1" - find-up "^5.0.0" - glob-parent "^6.0.2" - globals "^13.19.0" - graphemer "^1.4.0" - ignore "^5.2.0" - imurmurhash "^0.1.4" - is-glob "^4.0.0" - is-path-inside "^3.0.3" - js-yaml "^4.1.0" - json-stable-stringify-without-jsonify "^1.0.1" - levn "^0.4.1" - lodash.merge "^4.6.2" - minimatch "^3.1.2" - natural-compare "^1.4.0" - optionator "^0.9.3" - strip-ansi "^6.0.1" - text-table "^0.2.0" - eslint@^8.57.0: version "8.57.0" resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.57.0.tgz#c786a6fd0e0b68941aaf624596fb987089195668" @@ -17589,14 +17730,14 @@ espree@9.0.0: acorn-jsx "^5.3.1" eslint-visitor-keys "^3.0.0" -espree@9.3.1: - version "9.3.1" - resolved "https://registry.yarnpkg.com/espree/-/espree-9.3.1.tgz#8793b4bc27ea4c778c19908e0719e7b8f4115bcd" - integrity sha512-bvdyLmJMfwkV3NCRl5ZhJf22zBFo1y8bYh3VYb+bfzqNB4Je68P2sSuXyuFquzWLebHpNd2/d5uv7yoP9ISnGQ== +espree@9.6.1, espree@^9.6.0, espree@^9.6.1: + version "9.6.1" + resolved "https://registry.yarnpkg.com/espree/-/espree-9.6.1.tgz#a2a17b8e434690a5432f2f8018ce71d331a48c6f" + integrity sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ== dependencies: - acorn "^8.7.0" - acorn-jsx "^5.3.1" - eslint-visitor-keys "^3.3.0" + acorn "^8.9.0" + acorn-jsx "^5.3.2" + eslint-visitor-keys "^3.4.1" espree@^7.3.0, espree@^7.3.1: version "7.3.1" @@ -17607,15 +17748,6 @@ espree@^7.3.0, espree@^7.3.1: acorn-jsx "^5.3.1" eslint-visitor-keys "^1.3.0" -espree@^9.3.1, espree@^9.4.0: - version "9.4.1" - resolved "https://registry.yarnpkg.com/espree/-/espree-9.4.1.tgz#51d6092615567a2c2cff7833445e37c28c0065bd" - integrity sha512-XwctdmTO6SIvCzd9810yyNzIrOrqNYV9Koizx4C/mRhf9uq0o4yHoCEU/670pOxOL/MSraektvSAji79kX90Vg== - dependencies: - acorn "^8.8.0" - acorn-jsx "^5.3.2" - eslint-visitor-keys "^3.3.0" - espree@^9.3.2: version "9.3.3" resolved "https://registry.yarnpkg.com/espree/-/espree-9.3.3.tgz#2dd37c4162bb05f433ad3c1a52ddf8a49dc08e9d" @@ -17625,14 +17757,14 @@ espree@^9.3.2: acorn-jsx "^5.3.2" eslint-visitor-keys "^3.3.0" -espree@^9.6.0, espree@^9.6.1: - version "9.6.1" - resolved "https://registry.yarnpkg.com/espree/-/espree-9.6.1.tgz#a2a17b8e434690a5432f2f8018ce71d331a48c6f" - integrity sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ== +espree@^9.4.0: + version "9.4.1" + resolved "https://registry.yarnpkg.com/espree/-/espree-9.4.1.tgz#51d6092615567a2c2cff7833445e37c28c0065bd" + integrity sha512-XwctdmTO6SIvCzd9810yyNzIrOrqNYV9Koizx4C/mRhf9uq0o4yHoCEU/670pOxOL/MSraektvSAji79kX90Vg== dependencies: - acorn "^8.9.0" + acorn "^8.8.0" acorn-jsx "^5.3.2" - eslint-visitor-keys "^3.4.1" + eslint-visitor-keys "^3.3.0" esprima@4.0.1, esprima@^4.0.0, esprima@^4.0.1, esprima@~4.0.0: version "4.0.1" @@ -18280,7 +18412,7 @@ fast-glob@^3.2.11: merge2 "^1.3.0" micromatch "^4.0.4" -fast-glob@^3.2.12, fast-glob@^3.3.0: +fast-glob@^3.2.12, fast-glob@^3.3.0, fast-glob@^3.3.2: version "3.3.2" resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.3.2.tgz#a904501e57cfdd2ffcded45e99a54fef55e46129" integrity sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow== @@ -18302,6 +18434,11 @@ fast-glob@^3.2.2, fast-glob@^3.2.9: merge2 "^1.3.0" micromatch "^4.0.4" +fast-json-patch@3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/fast-json-patch/-/fast-json-patch-3.1.1.tgz#85064ea1b1ebf97a3f7ad01e23f9337e72c66947" + integrity sha512-vf6IHUX2SBcA+5/+4883dsIjpBTqmfBjmYiWK1savxQmFk4JfBMLa7ynTYOs1Rolp/T1betJxHiGD3g1Mn8lUQ== + fast-json-patch@^2.0.0, fast-json-patch@^2.0.6: version "2.2.1" resolved "https://registry.yarnpkg.com/fast-json-patch/-/fast-json-patch-2.2.1.tgz#18150d36c9ab65c7209e7d4eb113f4f8eaabe6d9" @@ -18676,6 +18813,15 @@ find-up@^6.3.0: locate-path "^7.1.0" path-exists "^5.0.0" +find-up@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-7.0.0.tgz#e8dec1455f74f78d888ad65bf7ca13dd2b4e66fb" + integrity sha512-YyZM99iHrqLKjmt4LJDj58KI+fYyufRLBSYcqycxf//KpBk9FoewoGX0450m9nB44qrZnovzC2oeP5hUibxc/g== + dependencies: + locate-path "^7.2.0" + path-exists "^5.0.0" + unicorn-magic "^0.1.0" + find-yarn-workspace-root2@1.2.16: version "1.2.16" resolved "https://registry.yarnpkg.com/find-yarn-workspace-root2/-/find-yarn-workspace-root2-1.2.16.tgz#60287009dd2f324f59646bdb4b7610a6b301c2a9" @@ -18695,16 +18841,16 @@ firefox-profile@4.2.1: minimist "^1.2.5" xml2js "~0.4.23" -firefox-profile@4.2.2: - version "4.2.2" - resolved "https://registry.yarnpkg.com/firefox-profile/-/firefox-profile-4.2.2.tgz#1c7c78d103e2fe4102154e0300dbc17124847db5" - integrity sha512-3kI17Xl9dL9AeRkpV1yahsJ+UbekkPtlQswKrIsTY1NLgxtEOR4R19rjGGz5+7/rP8Jt6fvxHk+Bai9R6Eai3w== +firefox-profile@4.3.2: + version "4.3.2" + resolved "https://registry.yarnpkg.com/firefox-profile/-/firefox-profile-4.3.2.tgz#01f423c8a899695ef46d46f997d5f91c9dc5c93d" + integrity sha512-/C+Eqa0YgIsQT2p66p7Ygzqe7NlE/GNTbhw2SBCm5V3OsWDPITNdTPEcH2Q2fe7eMpYYNPKdUcuVioZBZiR6kA== dependencies: adm-zip "~0.5.x" fs-extra "~9.0.1" ini "~2.0.0" minimist "^1.2.5" - xml2js "~0.4.23" + xml2js "^0.5.0" first-chunk-stream@3.0.0, first-chunk-stream@^3.0.0: version "3.0.0" @@ -18969,7 +19115,7 @@ fs-extra@9.1.0, fs-extra@^9.0.0, fs-extra@^9.0.1, fs-extra@^9.1.0: jsonfile "^6.0.1" universalify "^2.0.0" -fs-extra@^11.1.0: +fs-extra@^11.1.0, fs-extra@^11.2.0: version "11.2.0" resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-11.2.0.tgz#e70e17dfad64232287d01929399e0ea7c86b0e5b" integrity sha512-PmDi3uwK5nFuXh7XDTlVnS17xJS7vW36is2+w3xcv8SVxiB4NyATf4ctkVY5bkSjX0Y4nbvZCq1/EjtEyr9ktw== @@ -19109,10 +19255,10 @@ fx-runner@1.1.0: which "1.2.4" winreg "0.0.12" -fx-runner@1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/fx-runner/-/fx-runner-1.2.0.tgz#6fd6d0fc47b5c32c176aa22af2182227664a03fe" - integrity sha512-/zR9BmHF8h4OaVJ+fHHJBv/5FdPV9mjOAPIscQZbAijm7Aa15Ls/P8UBHD5OKU5jwu2niTxkkzzHKITE7oCMoQ== +fx-runner@1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/fx-runner/-/fx-runner-1.4.0.tgz#7a3f0374cc78c6c689ef75937b7b0cd75428c509" + integrity sha512-rci1g6U0rdTg6bAaBboP7XdRu01dzTAaKXxFf+PUqGuCv6Xu7o8NZdY1D5MvKGIjb6EdS1g3VlXOgksir1uGkg== dependencies: commander "2.9.0" shell-quote "1.7.3" @@ -19411,6 +19557,17 @@ glob-to-regexp@^0.4.1: resolved "https://registry.yarnpkg.com/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz#c75297087c851b9a578bd217dd59a92f59fe546e" integrity sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw== +glob@10.3.10, glob@^10.2.2, glob@^10.3.10, glob@^10.3.7: + version "10.3.10" + resolved "https://registry.yarnpkg.com/glob/-/glob-10.3.10.tgz#0351ebb809fd187fe421ab96af83d3a70715df4b" + integrity sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g== + dependencies: + foreground-child "^3.1.0" + jackspeak "^2.3.5" + minimatch "^9.0.1" + minipass "^5.0.0 || ^6.0.2 || ^7.0.0" + path-scurry "^1.10.1" + glob@7.1.4: version "7.1.4" resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.4.tgz#aa608a2f6c577ad357e1ae5a5c26d9a8d1969255" @@ -19446,16 +19603,16 @@ glob@8.1.0, glob@^8.0.0, glob@^8.0.3: minimatch "^5.0.1" once "^1.3.0" -glob@^10.2.2, glob@^10.3.10, glob@^10.3.7: - version "10.3.10" - resolved "https://registry.yarnpkg.com/glob/-/glob-10.3.10.tgz#0351ebb809fd187fe421ab96af83d3a70715df4b" - integrity sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g== +glob@^10.0.0: + version "10.3.12" + resolved "https://registry.yarnpkg.com/glob/-/glob-10.3.12.tgz#3a65c363c2e9998d220338e88a5f6ac97302960b" + integrity sha512-TCNv8vJ+xz4QiqTpfOJA7HvYv+tNIRHKfUWw/q+v2jdgN4ebz+KY9tGx5J4rHP0o84mNP+ApH66HRX8us3Khqg== dependencies: foreground-child "^3.1.0" - jackspeak "^2.3.5" + jackspeak "^2.3.6" minimatch "^9.0.1" - minipass "^5.0.0 || ^6.0.2 || ^7.0.0" - path-scurry "^1.10.1" + minipass "^7.0.4" + path-scurry "^1.10.2" glob@^6.0.1: version "6.0.4" @@ -19617,6 +19774,18 @@ globby@^13.1.1: merge2 "^1.4.1" slash "^4.0.0" +globby@^14.0.1: + version "14.0.1" + resolved "https://registry.yarnpkg.com/globby/-/globby-14.0.1.tgz#a1b44841aa7f4c6d8af2bc39951109d77301959b" + integrity sha512-jOMLD2Z7MAhyG8aJpNOpmziMOP4rPLcc95oQPKXBazW82z+CEgPFBQvEpRUa1KeIMUJo4Wsm+q6uzO/Q/4BksQ== + dependencies: + "@sindresorhus/merge-streams" "^2.1.0" + fast-glob "^3.3.2" + ignore "^5.2.4" + path-type "^5.0.0" + slash "^5.1.0" + unicorn-magic "^0.1.0" + globby@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/globby/-/globby-5.0.0.tgz#ebd84667ca0dbb330b99bcfc68eac2bc54370e0d" @@ -19679,7 +19848,7 @@ gopd@^1.0.1: dependencies: get-intrinsic "^1.1.3" -"got@^ 12.6.1": +"got@^ 12.6.1", got@^12.1.0: version "12.6.1" resolved "https://registry.yarnpkg.com/got/-/got-12.6.1.tgz#8869560d1383353204b5a9435f782df9c091f549" integrity sha512-mThBblvlAF1d4O5oqyvN+ZxLAYwIJK7bpMxgYqPD9okW0C3qm5FFn7k811QrcuEBwaogR3ngOFoCfs6mRv7teQ== @@ -19764,6 +19933,11 @@ got@^9.6.0: to-readable-stream "^1.0.0" url-parse-lax "^3.0.0" +graceful-fs@4.2.10, graceful-fs@^4.2.4, graceful-fs@^4.2.6, graceful-fs@^4.2.9: + version "4.2.10" + resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.10.tgz#147d3a006da4ca3ce14728c7aefc287c367d7a6c" + integrity sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA== + graceful-fs@^4.1.11, graceful-fs@^4.1.15, graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.2.0, graceful-fs@^4.2.2: version "4.2.3" resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.3.tgz#4a12ff1b60376ef09862c2093edd908328be8423" @@ -19779,11 +19953,6 @@ graceful-fs@^4.2.3: resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.8.tgz#e412b8d33f5e006593cbd3cee6df9f2cebbe802a" integrity sha512-qkIilPUYcNhJpd33n0GBXTB1MMPp14TxEsEs0pTrsSVucApsYzW5V+Q8Qxhik6KU3evy+qkAAowTByymK0avdg== -graceful-fs@^4.2.4, graceful-fs@^4.2.6, graceful-fs@^4.2.9: - version "4.2.10" - resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.10.tgz#147d3a006da4ca3ce14728c7aefc287c367d7a6c" - integrity sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA== - "graceful-readlink@>= 1.0.0": version "1.0.1" resolved "https://registry.yarnpkg.com/graceful-readlink/-/graceful-readlink-1.0.1.tgz#4cafad76bc62f02fa039b2f94e9a3dd3a391a725" @@ -20115,6 +20284,11 @@ has-yarn@^2.1.0: resolved "https://registry.yarnpkg.com/has-yarn/-/has-yarn-2.1.0.tgz#137e11354a7b5bf11aa5cb649cf0c6f3ff2b2e77" integrity sha512-UqBRqi4ju7T+TqGNdqAO0PaSVGsDGJUBQvk9eUWNGRY1CFGDzYhLWoM7JQEemnlvVcv/YEmc2wNW8BC24EnUsw== +has-yarn@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/has-yarn/-/has-yarn-3.0.0.tgz#c3c21e559730d1d3b57e28af1f30d06fac38147d" + integrity sha512-IrsVwUHhEULx3R8f/aA8AHuEzAorplsab/v8HBzEiIukwq5i/EC+xmOW+HfP1OaDP+2JkgT1yILHN2O3UFIbcA== + has@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" @@ -20400,7 +20574,7 @@ htmlparser2@^6.0.0, htmlparser2@^6.1.0: domutils "^2.5.2" entities "^2.0.0" -htmlparser2@^8.0.2: +htmlparser2@^8.0.1, htmlparser2@^8.0.2: version "8.0.2" resolved "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-8.0.2.tgz#f002151705b383e62433b5cf466f5b716edaec21" integrity sha512-GYdjWKDkbRLkZ5geuHs5NY1puJ+PXwP7+fHPRz06Eirsb9ugf6d8kkXav6ADhcODhFFPMIXyxkxSuMf3D6NCFA== @@ -20730,10 +20904,10 @@ image-size@1.0.0: dependencies: queue "6.0.2" -image-size@1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/image-size/-/image-size-1.0.1.tgz#86d6cfc2b1d19eab5d2b368d4b9194d9e48541c5" - integrity sha512-VAwkvNSNGClRw9mDHhc5Efax8PLlsOGcUTh0T/LIriC8vPA3U5PdqXWqkz406MoYHMKW8Uf9gWr05T/rYB44kQ== +image-size@1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/image-size/-/image-size-1.1.1.tgz#ddd67d4dc340e52ac29ce5f546a09f4e29e840ac" + integrity sha512-541xKlUw6jr/6gGuk92F+mYM5zaFAc5ahphvkqvNe2bQ6gVBkd6bfrmVJ2t4KDAfikAYZyIqTnktX3i6/aQDrQ== dependencies: queue "6.0.2" @@ -20793,6 +20967,11 @@ import-lazy@^2.1.0: resolved "https://registry.yarnpkg.com/import-lazy/-/import-lazy-2.1.0.tgz#05698e3d45c88e8d7e9d92cb0584e77f096f3e43" integrity sha1-BWmOPUXIjo1+nZLLBYTnfwlvPkM= +import-lazy@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/import-lazy/-/import-lazy-4.0.0.tgz#e8eb627483a0a43da3c03f3e35548be5cb0cc153" + integrity sha512-rKtvo6a868b5Hu3heneU+L4yEQ4jYKLtjpnPeUdK7h0yzXGmyBTypknlkCvHFBqfX9YlorEiMM6Dnq/5atfHkw== + import-local@^3.0.2: version "3.0.3" resolved "https://registry.yarnpkg.com/import-local/-/import-local-3.0.3.tgz#4d51c2c495ca9393da259ec66b62e022920211e0" @@ -21170,7 +21349,7 @@ is-ci@^2.0.0: dependencies: ci-info "^2.0.0" -is-ci@^3.0.0: +is-ci@^3.0.0, is-ci@^3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/is-ci/-/is-ci-3.0.1.tgz#db6ecbed1bd659c43dac0f45661e7674103d1867" integrity sha512-ZYvCgrefwqoQ6yTyYUbQu64HsITZ3NfKX1lzaEYdkTDcfKzzCI/wthRRYKkdjHKFVgNiXKAKm65Zo1pk2as/QQ== @@ -21397,6 +21576,11 @@ is-npm@^5.0.0: resolved "https://registry.yarnpkg.com/is-npm/-/is-npm-5.0.0.tgz#43e8d65cc56e1b67f8d47262cf667099193f45a8" integrity sha512-WW/rQLOazUq+ST/bCAVBp/2oMERWLsR7OrKyt052dNDk4DHcDE0/7QSXITlmi+VBcV13DfIbysG3tZJm5RfdBA== +is-npm@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/is-npm/-/is-npm-6.0.0.tgz#b59e75e8915543ca5d881ecff864077cba095261" + integrity sha512-JEjxbSmtPSt1c8XTkVrlujcXdKV1/tvuQ7GwKcAlyiVLeYFQ2VHat8xfrDJsIkhCdF/tZ7CiIR3sy141c6+gPQ== + is-number-like@^1.0.3: version "1.0.8" resolved "https://registry.yarnpkg.com/is-number-like/-/is-number-like-1.0.8.tgz#2e129620b50891042e44e9bbbb30593e75cfbbe3" @@ -21581,6 +21765,11 @@ is-stream@^2.0.0: resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-2.0.0.tgz#bde9c32680d6fae04129d6ac9d921ce7815f78e3" integrity sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw== +is-stream@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-2.0.1.tgz#fac1e3d53b97ad5a9d0ae9cef2389f5810a5c077" + integrity sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg== + is-string@^1.0.5, is-string@^1.0.7: version "1.0.7" resolved "https://registry.yarnpkg.com/is-string/-/is-string-1.0.7.tgz#0dd12bf2006f255bb58f695110eff7491eebc0fd" @@ -21693,6 +21882,11 @@ is-yarn-global@^0.3.0: resolved "https://registry.yarnpkg.com/is-yarn-global/-/is-yarn-global-0.3.0.tgz#d502d3382590ea3004893746754c89139973e232" integrity sha512-VjSeb/lHmkoyd8ryPVIKvOCn4D1koMqY+vqyjjUfc3xyKtP4dYOxM44sZrnqQSzSds3xyOrUTLTC9LVCVgLngw== +is-yarn-global@^0.4.0: + version "0.4.1" + resolved "https://registry.yarnpkg.com/is-yarn-global/-/is-yarn-global-0.4.1.tgz#b312d902b313f81e4eaf98b6361ba2b45cd694bb" + integrity sha512-/kppl+R+LO5VmhYSEWARUFjodS25D68gvj8W7z0I7OWhUla5xWu8KL6CtB2V0R6yqhnRgbcaREMr4EEM6htLPQ== + isarray@1.0.0, isarray@^1.0.0, isarray@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" @@ -21810,7 +22004,7 @@ iterare@1.2.1: resolved "https://registry.yarnpkg.com/iterare/-/iterare-1.2.1.tgz#139c400ff7363690e33abffa33cbba8920f00042" integrity sha512-RKYVTCjAnRthyJes037NX/IiqeidgN1xc3j1RjFfECFp28A1GVwK9nA+i0rJPaHqSZwygLzRnFlzUuHFoWWy+Q== -jackspeak@^2.3.5: +jackspeak@^2.3.5, jackspeak@^2.3.6: version "2.3.6" resolved "https://registry.yarnpkg.com/jackspeak/-/jackspeak-2.3.6.tgz#647ecc472238aee4b06ac0e461acc21a8c505ca8" integrity sha512-N3yCS/NegsOBokc8GAdM8UcmfsKiSS8cipheD/nivzr700H+nsMOxJjQnvwOcRYVuFkdH0wGUvW2WbXGmrZGbQ== @@ -22889,6 +23083,11 @@ jmespath@0.16.0: resolved "https://registry.yarnpkg.com/jmespath/-/jmespath-0.16.0.tgz#b15b0a85dfd4d930d43e69ed605943c802785076" integrity sha512-9FzQjJ7MATs1tSpnco1K6ayiYE3figslrXA72G2HQ/n76RzvYlofyi5QM+iX4YRs/pu3yzxlVQSST23+dMDknw== +jose@4.13.1: + version "4.13.1" + resolved "https://registry.yarnpkg.com/jose/-/jose-4.13.1.tgz#449111bb5ab171db85c03f1bd2cb1647ca06db1c" + integrity sha512-MSJQC5vXco5Br38mzaQKiq9mwt7lwj2eXpgpRyQYNHYt2lq1PjkWa7DLXX0WVcQLE9HhMh3jPiufS7fhJf+CLQ== + joycon@^3.1.1: version "3.1.1" resolved "https://registry.yarnpkg.com/joycon/-/joycon-3.1.1.tgz#bce8596d6ae808f8b68168f5fc69280996894f03" @@ -23001,6 +23200,13 @@ json-buffer@3.0.1, json-buffer@~3.0.1: resolved "https://registry.yarnpkg.com/json-buffer/-/json-buffer-3.0.1.tgz#9338802a30d3b6605fbe0613e094008ca8c05a13" integrity sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ== +json-merge-patch@1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/json-merge-patch/-/json-merge-patch-1.0.2.tgz#c4626811943b2f362f8607ae8f03d528875465b0" + integrity sha512-M6Vp2GN9L7cfuMXiWOmHj9bEFbeC250iVtcKQbqVgEsDVYnIsrNsbU+h/Y/PkbBQCtEa4Bez+Ebv0zfbC8ObLg== + dependencies: + fast-deep-equal "^3.1.3" + json-merge-patch@^0.2.3: version "0.2.3" resolved "https://registry.yarnpkg.com/json-merge-patch/-/json-merge-patch-0.2.3.tgz#fa2c6b5af87da77bae2966a589d52e23ed81fe40" @@ -23176,6 +23382,16 @@ jsonwebtoken@8.5.1, jsonwebtoken@^8.2.0: ms "^2.1.1" semver "^5.6.0" +jsonwebtoken@9.0.0: + version "9.0.0" + resolved "https://registry.yarnpkg.com/jsonwebtoken/-/jsonwebtoken-9.0.0.tgz#d0faf9ba1cc3a56255fe49c0961a67e520c1926d" + integrity sha512-tuGfYXxkQGDPnLJ7SibiQgVgeDgfbPq2k2ICcbgqW8WxWLBAxKQM/ZCu/IT8SOSwmaYl4dpTFCW5xZv7YbbWUw== + dependencies: + jws "^3.2.2" + lodash "^4.17.21" + ms "^2.1.1" + semver "^7.3.8" + jsprim@^1.2.2: version "1.4.1" resolved "https://registry.yarnpkg.com/jsprim/-/jsprim-1.4.1.tgz#313e66bc1e5cc06e438bc1b7499c2e5c56acb6a2" @@ -23407,6 +23623,13 @@ latest-version@^5.1.0: dependencies: package-json "^6.3.0" +latest-version@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/latest-version/-/latest-version-7.0.0.tgz#843201591ea81a4d404932eeb61240fe04e9e5da" + integrity sha512-KvNT4XqAMzdcL6ka6Tl3i2lYeFDgXNCuIX+xNx6ZMVR1dFq+idXd9FLKNMOIx0t9mJ9/HudyX4oZWXZQ0UJHeg== + dependencies: + package-json "^8.1.0" + launch-editor@^2.6.0: version "2.6.1" resolved "https://registry.yarnpkg.com/launch-editor/-/launch-editor-2.6.1.tgz#f259c9ef95cbc9425620bbbd14b468fcdb4ffe3c" @@ -23616,16 +23839,16 @@ lines-and-columns@^1.1.6: resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.1.6.tgz#1c00c743b433cd0a4e80758f7b64a57440d9ff00" integrity sha1-HADHQ7QzzQpOgHWPe2SldEDZ/wA= +lines-and-columns@^2.0.2, lines-and-columns@~2.0.3: + version "2.0.4" + resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-2.0.4.tgz#d00318855905d2660d8c0822e3f5a4715855fc42" + integrity sha512-wM1+Z03eypVAVUCE7QdSqpVIvelbOakn1M0bPDoA4SGWPx3sNDVUiMo3L6To6WWGClB7VyXnhQ4Sn7gxiJbE6A== + lines-and-columns@^2.0.3: version "2.0.3" resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-2.0.3.tgz#b2f0badedb556b747020ab8ea7f0373e22efac1b" integrity sha512-cNOjgCnLB+FnvWWtyRTzmB3POJ+cXxTA81LoW7u8JdmhfXzriropYwpjShnz1QLLWsQwY7nIxoDmcPTwphDK9w== -lines-and-columns@~2.0.3: - version "2.0.4" - resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-2.0.4.tgz#d00318855905d2660d8c0822e3f5a4715855fc42" - integrity sha512-wM1+Z03eypVAVUCE7QdSqpVIvelbOakn1M0bPDoA4SGWPx3sNDVUiMo3L6To6WWGClB7VyXnhQ4Sn7gxiJbE6A== - linkify-it@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/linkify-it/-/linkify-it-5.0.0.tgz#9ef238bfa6dc70bd8e7f9572b52d369af569b421" @@ -23757,7 +23980,7 @@ locate-path@^6.0.0: dependencies: p-locate "^5.0.0" -locate-path@^7.1.0: +locate-path@^7.1.0, locate-path@^7.2.0: version "7.2.0" resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-7.2.0.tgz#69cb1779bd90b35ab1e771e1f2f89a202c2a8a8a" integrity sha512-gvVijfZvn7R+2qyPX8mAuKcFGDf6Nc61GdvGafQsHL0sBIxfKzA+usWn4GFC/bk+QdwPUD4kWFJLhElipq+0VA== @@ -24032,6 +24255,11 @@ lru-cache@^10.0.1, "lru-cache@^9.1.1 || ^10.0.0": resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-10.0.1.tgz#0a3be479df549cca0e5d693ac402ff19537a6b7a" integrity sha512-IJ4uwUTi2qCccrioU6g9g/5rvvVl13bsdczUUcqbciD9iLr095yj8DQKdObriEvuNSx325N1rV1O0sJFszx75g== +lru-cache@^10.2.0: + version "10.2.0" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-10.2.0.tgz#0bd445ca57363465900f4d1f9bd8db343a4d95c3" + integrity sha512-2bIM8x+VAf6JT4bKAljS1qUWgMsqZRPGJS6FSahIMPVvctcNhyVp7AJu7quxOW9jwkryBReKZY5tY5JYv2n/7Q== + lru-cache@^4.0.1: version "4.1.5" resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-4.1.5.tgz#8bbe50ea85bed59bc9e33dcab8235ee9bcf443cd" @@ -25610,7 +25838,7 @@ minipass@^4.0.0: resolved "https://registry.yarnpkg.com/minipass/-/minipass-4.2.5.tgz#9e0e5256f1e3513f8c34691dd68549e85b2c8ceb" integrity sha512-+yQl7SX3bIT83Lhb4BVorMAHVuqsskxRdlmO9kTpyukp8vsm2Sn/fUOV9xlnG8/a5JsypJzap21lz/y3FBMJ8Q== -"minipass@^5.0.0 || ^6.0.2 || ^7.0.0", minipass@^7.0.2, minipass@^7.0.3: +"minipass@^5.0.0 || ^6.0.2 || ^7.0.0", minipass@^7.0.2, minipass@^7.0.3, minipass@^7.0.4: version "7.0.4" resolved "https://registry.yarnpkg.com/minipass/-/minipass-7.0.4.tgz#dbce03740f50a4786ba994c1fb908844d27b038c" integrity sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ== @@ -25819,6 +26047,16 @@ multimatch@5.0.0, multimatch@^5.0.0: arrify "^2.0.1" minimatch "^3.0.4" +multimatch@6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/multimatch/-/multimatch-6.0.0.tgz#c72a9bddbc94baa4727efd613b5d22a1fe4d6ee3" + integrity sha512-I7tSVxHGPlmPN/enE3mS1aOSo6bWBfls+3HmuEeCUBCE7gWnm3cBXCBkpurzFjVRwC6Kld8lLaZ1Iv5vOcjvcQ== + dependencies: + "@types/minimatch" "^3.0.5" + array-differ "^4.0.0" + array-union "^3.0.1" + minimatch "^3.0.4" + multimatch@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/multimatch/-/multimatch-4.0.0.tgz#8c3c0f6e3e8449ada0af3dd29efb491a375191b3" @@ -25893,7 +26131,7 @@ nanoid@^3.1.22, nanoid@^3.1.28: resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.2.0.tgz#62667522da6673971cca916a6d3eff3f415ff80c" integrity sha512-fmsZYa9lpn69Ad5eDn7FMcnnSR+8R34W9qJEijxYhTbfOWzr22n1QxCMzXLK+ODyW2973V3Fux959iQoUxzUIA== -nanoid@^3.3.1, nanoid@^3.3.3, nanoid@^3.3.4: +nanoid@^3.3.3, nanoid@^3.3.4: version "3.3.4" resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.4.tgz#730b67e3cd09e2deacf03c027c81c9d9dbc5e8ab" integrity sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw== @@ -26250,6 +26488,15 @@ node-fetch@2.6.7, node-fetch@^2.6.7: dependencies: whatwg-url "^5.0.0" +node-fetch@3.3.1: + version "3.3.1" + resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-3.3.1.tgz#b3eea7b54b3a48020e46f4f88b9c5a7430d20b2e" + integrity sha512-cRVc/kyto/7E5shrWca1Wsea4y6tL9iYJE5FBCius3JQfb/4P4I295PfhgbJQBLTx6lATE4z+wK0rPM4VS2uow== + dependencies: + data-uri-to-buffer "^4.0.0" + fetch-blob "^3.1.4" + formdata-polyfill "^4.0.10" + node-fetch@^2.0.0-alpha.8, node-fetch@^2.6.12: version "2.7.0" resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.7.0.tgz#d0f0fa6e3e2dc1d27efcd8ad99d550bda94d187d" @@ -26364,6 +26611,18 @@ node-machine-id@1.1.12: resolved "https://registry.yarnpkg.com/node-machine-id/-/node-machine-id-1.1.12.tgz#37904eee1e59b320bb9c5d6c0a59f3b469cb6267" integrity sha512-QNABxbrPa3qEIfrE6GOJ7BYIuignnJw7iQ2YPbc3Nla1HzRJjXzZOiikfF8m7eAMfichLt3M4VgLOetqgDmgGQ== +node-notifier@10.0.1: + version "10.0.1" + resolved "https://registry.yarnpkg.com/node-notifier/-/node-notifier-10.0.1.tgz#0e82014a15a8456c4cfcdb25858750399ae5f1c7" + integrity sha512-YX7TSyDukOZ0g+gmzjB6abKu+hTGvO8+8+gIFDsRCU2t8fLV/P2unmt+LGFaIa4y64aX98Qksa97rgz4vMNeLQ== + dependencies: + growly "^1.3.0" + is-wsl "^2.2.0" + semver "^7.3.5" + shellwords "^0.1.1" + uuid "^8.3.2" + which "^2.0.2" + node-notifier@9.0.0: version "9.0.0" resolved "https://registry.yarnpkg.com/node-notifier/-/node-notifier-9.0.0.tgz#46c5bbecbb796d4a803f646cea5bc91403f2ff38" @@ -26964,11 +27223,6 @@ obuf@^1.0.0, obuf@^1.1.2: resolved "https://registry.yarnpkg.com/obuf/-/obuf-1.1.2.tgz#09bea3343d41859ebd446292d11c9d4db619084e" integrity sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg== -on-exit-leak-free@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/on-exit-leak-free/-/on-exit-leak-free-0.2.0.tgz#b39c9e3bf7690d890f4861558b0d7b90a442d209" - integrity sha512-dqaz3u44QbRXQooZLTUKU41ZrzYrcvLISVgbrzbyCMxpmSLJvZ3ZamIJIZ29P6OhZIkNIQKosdeM6t1LYbA9hg== - on-exit-leak-free@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/on-exit-leak-free/-/on-exit-leak-free-2.1.0.tgz#5c703c968f7e7f851885f6459bf8a8a57edc9cc4" @@ -27432,6 +27686,16 @@ package-json@^6.3.0: registry-url "^5.0.0" semver "^6.2.0" +package-json@^8.1.0: + version "8.1.1" + resolved "https://registry.yarnpkg.com/package-json/-/package-json-8.1.1.tgz#3e9948e43df40d1e8e78a85485f1070bf8f03dc8" + integrity sha512-cbH9IAIJHNj9uXi196JVsRlt7cHKak6u/e6AkL/bkRelZ7rlL3X1YKxsZwa36xipOEKAsdtmaG6aAJoM1fx2zA== + dependencies: + got "^12.1.0" + registry-auth-token "^5.0.1" + registry-url "^6.0.0" + semver "^7.3.7" + pacote@17.0.4: version "17.0.4" resolved "https://registry.yarnpkg.com/pacote/-/pacote-17.0.4.tgz#4bac6c0745967bde96985ec12fbbfc8dea7140e8" @@ -27539,6 +27803,16 @@ parse-json@5.2.0, parse-json@^5.0.0, parse-json@^5.2.0: json-parse-even-better-errors "^2.3.0" lines-and-columns "^1.1.6" +parse-json@6.0.2: + version "6.0.2" + resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-6.0.2.tgz#6bf79c201351cc12d5d66eba48d5a097c13dc200" + integrity sha512-SA5aMiaIjXkAiBrW/yPgLgQAQg42f7K3ACO+2l/zOvtQBwX58DMUsFJXelW2fx3yMBmWOVkR6j1MGsdSbCA4UA== + dependencies: + "@babel/code-frame" "^7.16.0" + error-ex "^1.3.2" + json-parse-even-better-errors "^2.3.1" + lines-and-columns "^2.0.2" + parse-json@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-4.0.0.tgz#be35f5425be1f7f6c747184f98a788cb99477ee0" @@ -27602,6 +27876,14 @@ parse5-htmlparser2-tree-adapter@^6.0.1: dependencies: parse5 "^6.0.1" +parse5-htmlparser2-tree-adapter@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-7.0.0.tgz#23c2cc233bcf09bb7beba8b8a69d46b08c62c2f1" + integrity sha512-B77tOZrqqfUfnVcOrUvfdLbz4pu4RopLD/4vmu3HUPswwTA8OH0EMW9BlWR2B0RCoiZRAHEUu7IxeP1Pd1UU+g== + dependencies: + domhandler "^5.0.2" + parse5 "^7.0.0" + parse5-sax-parser@^7.0.0: version "7.0.0" resolved "https://registry.yarnpkg.com/parse5-sax-parser/-/parse5-sax-parser-7.0.0.tgz#4c05064254f0488676aca75fb39ca069ec96dee5" @@ -27773,6 +28055,14 @@ path-scurry@^1.10.1: lru-cache "^9.1.1 || ^10.0.0" minipass "^5.0.0 || ^6.0.2 || ^7.0.0" +path-scurry@^1.10.2: + version "1.10.2" + resolved "https://registry.yarnpkg.com/path-scurry/-/path-scurry-1.10.2.tgz#8f6357eb1239d5fa1da8b9f70e9c080675458ba7" + integrity sha512-7xTavNy5RQXnsjANvVvMkEjvloOinkAjv/Z6Ildz9v2RinZ4SBKTWFOVRbaF8p0vpHnyjV/UwNDdKuUv6M5qcA== + dependencies: + lru-cache "^10.2.0" + minipass "^5.0.0 || ^6.0.2 || ^7.0.0" + path-to-regexp@0.1.7: version "0.1.7" resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-0.1.7.tgz#df604178005f522f15eb4490e7247a1bfaa67f8c" @@ -27800,6 +28090,11 @@ path-type@^4.0.0: resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b" integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw== +path-type@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/path-type/-/path-type-5.0.0.tgz#14b01ed7aea7ddf9c7c3f46181d4d04f9c785bb8" + integrity sha512-5HviZNaZcfqP95rwpv+1HDgUamezbqdSYTyzjTvwtJSnIH+3vnbmWsItli8OFEndS984VT55M3jduxZbX351gg== + pathval@^1.1.0: version "1.1.1" resolved "https://registry.yarnpkg.com/pathval/-/pathval-1.1.1.tgz#8534e77a77ce7ac5a2512ea21e0fdb8fcf6c3d8d" @@ -27906,12 +28201,12 @@ pino-abstract-transport@^1.0.0, pino-abstract-transport@v1.0.0: readable-stream "^4.0.0" split2 "^4.0.0" -pino-abstract-transport@v0.5.0: - version "0.5.0" - resolved "https://registry.yarnpkg.com/pino-abstract-transport/-/pino-abstract-transport-0.5.0.tgz#4b54348d8f73713bfd14e3dc44228739aa13d9c0" - integrity sha512-+KAgmVeqXYbTtU2FScx1XS3kNyfZ5TrXY07V96QnUSFqo2gAqlvmaxH67Lj7SWazqsMabf+58ctdTcBgnOLUOQ== +pino-abstract-transport@v1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/pino-abstract-transport/-/pino-abstract-transport-1.1.0.tgz#083d98f966262164504afb989bccd05f665937a8" + integrity sha512-lsleG3/2a/JIWUtf9Q5gUNErBqwIu1tUKTT3dUzaf5DySw9ra1wcqKjJjLX1VTY64Wk1eEOYsVGSaGfCK85ekA== dependencies: - duplexify "^4.1.2" + readable-stream "^4.0.0" split2 "^4.0.0" pino-http@^8.5.0: @@ -27949,11 +28244,6 @@ pino-std-serializers@^3.1.0: resolved "https://registry.yarnpkg.com/pino-std-serializers/-/pino-std-serializers-3.2.0.tgz#b56487c402d882eb96cd67c257868016b61ad671" integrity sha512-EqX4pwDPrt3MuOAAUBMU0Tk5kR/YcCM5fNPEzgCO2zJ5HfX0vbiH9HbJglnyeQsN96Kznae6MWD47pZB5avTrg== -pino-std-serializers@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/pino-std-serializers/-/pino-std-serializers-4.0.0.tgz#1791ccd2539c091ae49ce9993205e2cd5dbba1e2" - integrity sha512-cK0pekc1Kjy5w9V2/n+8MkZwusa6EyyxfeQCB799CQRhRt/CqYKiWs5adeu8Shve2ZNffvfC/7J64A2PJo1W/Q== - pino-std-serializers@^6.0.0: version "6.0.0" resolved "https://registry.yarnpkg.com/pino-std-serializers/-/pino-std-serializers-6.0.0.tgz#4c20928a1bafca122fdc2a7a4a171ca1c5f9c526" @@ -27972,21 +28262,22 @@ pino@6.13.3: quick-format-unescaped "^4.0.3" sonic-boom "^1.0.2" -pino@7.9.1: - version "7.9.1" - resolved "https://registry.yarnpkg.com/pino/-/pino-7.9.1.tgz#7e6f401cac6e80b4eaee908ab90a05e48455cec2" - integrity sha512-28+D7c5orCoScdcWtiPXrCA9tdVosBWrYQgVtPdYTyiuTt6u/+rbEtpJR+dtVG8k1flhv0H2f0XSkgGm+TdjqQ== +pino@8.17.2: + version "8.17.2" + resolved "https://registry.yarnpkg.com/pino/-/pino-8.17.2.tgz#0ed20175623a69d31664a1e8a5f85476272224be" + integrity sha512-LA6qKgeDMLr2ux2y/YiUt47EfgQ+S9LznBWOJdN3q1dx2sv0ziDLUBeVpyVv17TEcGCBuWf0zNtg3M5m1NhhWQ== dependencies: - fast-redact "^3.0.0" - on-exit-leak-free "^0.2.0" - pino-abstract-transport v0.5.0 - pino-std-serializers "^4.0.0" - process-warning "^1.0.0" + atomic-sleep "^1.0.0" + fast-redact "^3.1.1" + on-exit-leak-free "^2.1.0" + pino-abstract-transport v1.1.0 + pino-std-serializers "^6.0.0" + process-warning "^3.0.0" quick-format-unescaped "^4.0.3" - real-require "^0.1.0" - safe-stable-stringify "^2.1.0" - sonic-boom "^2.2.1" - thread-stream "^0.13.0" + real-require "^0.2.0" + safe-stable-stringify "^2.3.1" + sonic-boom "^3.7.0" + thread-stream "^2.0.0" pino@^8.0.0: version "8.4.0" @@ -28526,15 +28817,6 @@ postcss@8.3.9: picocolors "^0.2.1" source-map-js "^0.6.2" -postcss@8.4.12: - version "8.4.12" - resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.12.tgz#1e7de78733b28970fa4743f7da6f3763648b1905" - integrity sha512-lg6eITwYe9v6Hr5CncVbK70SoioNQIq81nsaG86ev5hAidQvmOeETBqs7jm43K2F5/Ley3ytDtriImV6TpNiSg== - dependencies: - nanoid "^3.3.1" - picocolors "^1.0.0" - source-map-js "^1.0.2" - postcss@8.4.31, postcss@^8.4.27: version "8.4.31" resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.31.tgz#92b451050a9f914da6755af352bdc0192508656d" @@ -28544,6 +28826,15 @@ postcss@8.4.31, postcss@^8.4.27: picocolors "^1.0.0" source-map-js "^1.0.2" +postcss@8.4.33, postcss@^8.4.32, postcss@^8.4.33: + version "8.4.33" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.33.tgz#1378e859c9f69bf6f638b990a0212f43e2aaa742" + integrity sha512-Kkpbhhdjw2qQs2O2DGX+8m5OVqEcbB9HRBvuYM9pgrjEFUg30A9LmXNlTAUj4S9kgtGyrMbTzVjH7E+s5Re2yg== + dependencies: + nanoid "^3.3.7" + picocolors "^1.0.0" + source-map-js "^1.0.2" + postcss@^7.0.14, postcss@^7.0.17, postcss@^7.0.2, postcss@^7.0.32, postcss@^7.0.5, postcss@^7.0.6: version "7.0.39" resolved "https://registry.yarnpkg.com/postcss/-/postcss-7.0.39.tgz#9624375d965630e2e1f2c02a935c82a59cb48309" @@ -28579,15 +28870,6 @@ postcss@^8.4.19, postcss@^8.4.21, postcss@^8.4.23: picocolors "^1.0.0" source-map-js "^1.0.2" -postcss@^8.4.32, postcss@^8.4.33: - version "8.4.33" - resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.33.tgz#1378e859c9f69bf6f638b990a0212f43e2aaa742" - integrity sha512-Kkpbhhdjw2qQs2O2DGX+8m5OVqEcbB9HRBvuYM9pgrjEFUg30A9LmXNlTAUj4S9kgtGyrMbTzVjH7E+s5Re2yg== - dependencies: - nanoid "^3.3.7" - picocolors "^1.0.0" - source-map-js "^1.0.2" - postcss@^8.4.38: version "8.4.38" resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.38.tgz#b387d533baf2054288e337066d81c6bee9db9e0e" @@ -28751,16 +29033,16 @@ process-nextick-args@~2.0.0: resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2" integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag== -process-warning@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/process-warning/-/process-warning-1.0.0.tgz#980a0b25dc38cd6034181be4b7726d89066b4616" - integrity sha512-du4wfLyj4yCZq1VupnVSZmRsPJsNuxoDQFdCFHLaYiEbFBD7QE0a+I4D7hOxrVnh78QE/YipFAj9lXHiXocV+Q== - process-warning@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/process-warning/-/process-warning-2.0.0.tgz#341dbeaac985b90a04ebcd844d50097c7737b2ee" integrity sha512-+MmoAXoUX+VTHAlwns0h+kFUWFs/3FZy+ZuchkgjyOu3oioLAo2LB5aCfKPh2+P9O18i3m43tUEv3YqttSy0Ww== +process-warning@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/process-warning/-/process-warning-3.0.0.tgz#96e5b88884187a1dce6f5c3166d611132058710b" + integrity sha512-mqn0kFRl0EoqhnL0GQ0veqFHyIN1yig9RHh/InzORTUiZHFRAur+aMtRkELNwGs9aNwKS6tg/An4NYBPGwvtzQ== + process@^0.11.10: version "0.11.10" resolved "https://registry.yarnpkg.com/process/-/process-0.11.10.tgz#7332300e840161bda3e69a1d1d91a7d4bc16f182" @@ -28784,10 +29066,10 @@ promise-retry@^2.0.1: err-code "^2.0.2" retry "^0.12.0" -promise-toolbox@0.20.0: - version "0.20.0" - resolved "https://registry.yarnpkg.com/promise-toolbox/-/promise-toolbox-0.20.0.tgz#af04d7338038c2362b8fb7c27546c57d893bf562" - integrity sha512-VXF6waqUheD19yOU7zxsXhw/HCKlXqXwUc4jM8mchtBqZFNA+GHA7dbJsQDLHP4IUpQuTLpCQRd0lCr5z4CqXQ== +promise-toolbox@0.21.0: + version "0.21.0" + resolved "https://registry.yarnpkg.com/promise-toolbox/-/promise-toolbox-0.21.0.tgz#6919876f9dea375f01b4ddaec4206db83cb0aa55" + integrity sha512-NV8aTmpwrZv+Iys54sSFOBx3tuVaOBvvrft5PNppnxy9xpU/akHbaWIril22AB22zaPgrgwKdD0KsrM0ptUtpg== dependencies: make-error "^1.3.2" @@ -29007,6 +29289,13 @@ pupa@^2.1.1: dependencies: escape-goat "^2.0.0" +pupa@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/pupa/-/pupa-3.1.0.tgz#f15610274376bbcc70c9a3aa8b505ea23f41c579" + integrity sha512-FLpr4flz5xZTSJxSeaheeMKN/EDzMdK7b8PTOC6a5PYFKTucWbdqjgqaEyH0shFiSJrVB1+Qqi4Tk19ccU6Aug== + dependencies: + escape-goat "^4.0.0" + puppeteer-core@^20.9.0: version "20.9.0" resolved "https://registry.yarnpkg.com/puppeteer-core/-/puppeteer-core-20.9.0.tgz#6f4b420001b64419deab38d398a4d9cd071040e6" @@ -29230,7 +29519,7 @@ raw-body@^2.3.2: iconv-lite "0.4.24" unpipe "1.0.0" -rc@^1.2.7, rc@^1.2.8: +rc@1.2.8, rc@^1.2.7, rc@^1.2.8: version "1.2.8" resolved "https://registry.yarnpkg.com/rc/-/rc-1.2.8.tgz#cd924bf5200a075b83c188cd6b9e211b7fc0d3ed" integrity sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw== @@ -29508,7 +29797,7 @@ read@1, read@~1.0.1: dependencies: mute-stream "~0.0.4" -readable-stream@3, readable-stream@^3.0.0, readable-stream@^3.0.1, readable-stream@^3.0.2, readable-stream@^3.0.6, readable-stream@^3.1.1, readable-stream@^3.4.0, readable-stream@^3.5.0, readable-stream@^3.6.0: +readable-stream@3, readable-stream@^3.0.0, readable-stream@^3.0.2, readable-stream@^3.0.6, readable-stream@^3.1.1, readable-stream@^3.4.0, readable-stream@^3.5.0, readable-stream@^3.6.0: version "3.6.0" resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.0.tgz#337bbda3adc0706bd3e024426a286d4b4b2c9198" integrity sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA== @@ -29517,7 +29806,7 @@ readable-stream@3, readable-stream@^3.0.0, readable-stream@^3.0.1, readable-stre string_decoder "^1.1.1" util-deprecate "^1.0.1" -readable-stream@^2.0.0, readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.0.5, readable-stream@^2.0.6, readable-stream@^2.2.2, readable-stream@^2.3.6, readable-stream@~2.3.6: +readable-stream@^2.0.0, readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.0.5, readable-stream@^2.0.6, readable-stream@^2.2.2, readable-stream@~2.3.6: version "2.3.7" resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.7.tgz#1eca1cf711aef814c04f62252a36a62f6cb23b57" integrity sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw== @@ -29584,11 +29873,6 @@ readdirp@~3.6.0: dependencies: picomatch "^2.2.1" -real-require@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/real-require/-/real-require-0.1.0.tgz#736ac214caa20632847b7ca8c1056a0767df9381" - integrity sha512-r/H9MzAWtrv8aSVjPCMFpDMl5q66GqtmmRkRjpHTsp4zBAa+snZyiQNlMONiUmEJcsnaw0wCauJ2GWODr/aFkg== - real-require@^0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/real-require/-/real-require-0.2.0.tgz#209632dea1810be2ae063a6ac084fee7e33fba78" @@ -29788,6 +30072,13 @@ registry-auth-token@^4.0.0: rc "^1.2.8" safe-buffer "^5.0.1" +registry-auth-token@^5.0.1: + version "5.0.2" + resolved "https://registry.yarnpkg.com/registry-auth-token/-/registry-auth-token-5.0.2.tgz#8b026cc507c8552ebbe06724136267e63302f756" + integrity sha512-o/3ikDxtXaA59BmZuZrJZDJv8NMDGSj+6j6XaeBmHw8eY1i1qd9+6H+LjVvQXx3HN6aRCGa1cUdJ9RaJZUugnQ== + dependencies: + "@pnpm/npm-conf" "^2.1.0" + registry-url@^5.0.0: version "5.1.0" resolved "https://registry.yarnpkg.com/registry-url/-/registry-url-5.1.0.tgz#e98334b50d5434b81136b44ec638d9c2009c5009" @@ -29795,6 +30086,13 @@ registry-url@^5.0.0: dependencies: rc "^1.2.8" +registry-url@^6.0.0: + version "6.0.1" + resolved "https://registry.yarnpkg.com/registry-url/-/registry-url-6.0.1.tgz#056d9343680f2f64400032b1e199faa692286c58" + integrity sha512-+crtS5QjFRqFCoQmvGduwYWEBng99ZvmFvF+cUJkGYF1L1BfU8C6Zp9T7f5vPAwyLkUExpvK+ANVZmGU49qi4Q== + dependencies: + rc "1.2.8" + regjsgen@^0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/regjsgen/-/regjsgen-0.2.0.tgz#6c016adeac554f75823fe37ac05b92d5a4edb1f7" @@ -30493,7 +30791,7 @@ safe-regex@^1.1.0: dependencies: ret "~0.1.10" -safe-stable-stringify@^2.0.0, safe-stable-stringify@^2.1.0, safe-stable-stringify@^2.3.0, safe-stable-stringify@^2.3.1: +safe-stable-stringify@^2.0.0, safe-stable-stringify@^2.3.0, safe-stable-stringify@^2.3.1: version "2.4.1" resolved "https://registry.yarnpkg.com/safe-stable-stringify/-/safe-stable-stringify-2.4.1.tgz#34694bd8a30575b7f94792aa51527551bd733d61" integrity sha512-dVHE6bMtS/bnL2mwualjc6IxEv1F+OCUpA46pKUj6F8uDbUM0jCCulPqRNPSnWwGNKx5etqMjZYdXtrm5KJZGA== @@ -30668,6 +30966,13 @@ semver-diff@^3.1.1: dependencies: semver "^6.3.0" +semver-diff@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/semver-diff/-/semver-diff-4.0.0.tgz#3afcf5ed6d62259f5c72d0d5d50dffbdc9680df5" + integrity sha512-0Ju4+6A8iOnpL/Thra7dZsSlOHYAHIeMxfhWQRI1/VLcT3WDBZKKtQt/QkBOsiIN9ZpuvHE6cGZ0x4glCMmfiA== + dependencies: + semver "^7.3.5" + "semver@2 || 3 || 4 || 5", semver@^5.3.0, semver@^5.4.1, semver@^5.6.0, semver@^5.7.1: version "5.7.1" resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" @@ -31055,36 +31360,36 @@ side-channel@^1.0.4: get-intrinsic "^1.0.2" object-inspect "^1.9.0" -sign-addon@3.11.0: - version "3.11.0" - resolved "https://registry.yarnpkg.com/sign-addon/-/sign-addon-3.11.0.tgz#8c4e688ae8053b8e24ab03aa59e651f1bf66a9fb" - integrity sha512-fcK2WzkMb8e8E9kvuccy+mrBTT81iR+1CowHLU594Elr4E9E9zZFr3itGlL0OoXcRouKmvt7rpXzoARu++tXRQ== +sign-addon@3.9.0: + version "3.9.0" + resolved "https://registry.yarnpkg.com/sign-addon/-/sign-addon-3.9.0.tgz#03b21f0b2079eb951f56ece058312ddb3d9c9a22" + integrity sha512-a8IzM3jNPSHcf2wSkhLgME4QrIe+rKTb8y/qYwGGzby5ktODAH+WBsKIgGZ9p5d2mpppPwbNEsA+YzcL117bbA== dependencies: - common-tags "1.8.2" - core-js "3.21.0" + common-tags "1.8.0" + core-js "3.18.0" deepcopy "2.1.0" es6-error "4.1.1" es6-promisify "7.0.0" jsonwebtoken "8.5.1" mz "2.7.0" request "2.88.2" - source-map-support "0.5.21" + source-map-support "0.5.20" stream-to-promise "3.0.0" -sign-addon@3.9.0: - version "3.9.0" - resolved "https://registry.yarnpkg.com/sign-addon/-/sign-addon-3.9.0.tgz#03b21f0b2079eb951f56ece058312ddb3d9c9a22" - integrity sha512-a8IzM3jNPSHcf2wSkhLgME4QrIe+rKTb8y/qYwGGzby5ktODAH+WBsKIgGZ9p5d2mpppPwbNEsA+YzcL117bbA== +sign-addon@5.3.0: + version "5.3.0" + resolved "https://registry.yarnpkg.com/sign-addon/-/sign-addon-5.3.0.tgz#7aa440359aa0de2786f232f7eb0ec6ffb685bdbd" + integrity sha512-7nHlCzhQgVMLBNiXVEgbG/raq48awOW0lYMN5uo1BaB3mp0+k8M8pvDwbfTlr3apcxZJsk9HQsAW1POwoJugpQ== dependencies: - common-tags "1.8.0" - core-js "3.18.0" + common-tags "1.8.2" + core-js "3.29.0" deepcopy "2.1.0" es6-error "4.1.1" es6-promisify "7.0.0" - jsonwebtoken "8.5.1" + jsonwebtoken "9.0.0" mz "2.7.0" request "2.88.2" - source-map-support "0.5.20" + source-map-support "0.5.21" stream-to-promise "3.0.0" signal-exit@^3.0.0, signal-exit@^3.0.2: @@ -31181,6 +31486,11 @@ slash@^4.0.0: resolved "https://registry.yarnpkg.com/slash/-/slash-4.0.0.tgz#2422372176c4c6c5addb5e2ada885af984b396a7" integrity sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew== +slash@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/slash/-/slash-5.1.0.tgz#be3adddcdf09ac38eebe8dcdc7b1a57a75b095ce" + integrity sha512-ZA6oR3T/pEyuqwMgAKT0/hAv8oAXckzbkmR0UkUosQ+Mc4RxGoJkRmwHgHufaenlyAgE1Mxgpdcrf75y6XcnDg== + slice-ansi@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-3.0.0.tgz#31ddc10930a1b7e0b67b08c96c2f49b77a789787" @@ -31368,13 +31678,6 @@ sonic-boom@^1.0.2: atomic-sleep "^1.0.0" flatstr "^1.0.12" -sonic-boom@^2.2.1: - version "2.8.0" - resolved "https://registry.yarnpkg.com/sonic-boom/-/sonic-boom-2.8.0.tgz#c1def62a77425090e6ad7516aad8eb402e047611" - integrity sha512-kuonw1YOYYNOve5iHdSahXPOK49GqwA+LZhI6Wz/l0rP57iKyXXIHaRagOBHAPmGwJC6od2Z9zgvZ5loSgMlVg== - dependencies: - atomic-sleep "^1.0.0" - sonic-boom@^3.0.0: version "3.2.1" resolved "https://registry.yarnpkg.com/sonic-boom/-/sonic-boom-3.2.1.tgz#972ceab831b5840a08a002fa95a672008bda1c38" @@ -31389,6 +31692,13 @@ sonic-boom@^3.1.0: dependencies: atomic-sleep "^1.0.0" +sonic-boom@^3.7.0: + version "3.8.1" + resolved "https://registry.yarnpkg.com/sonic-boom/-/sonic-boom-3.8.1.tgz#d5ba8c4e26d6176c9a1d14d549d9ff579a163422" + integrity sha512-y4Z8LCDBuum+PBP3lSV7RHrXscqksve/bi0as7mhwVnBW+/wUqKT/2Kb7um8yqcFy0duYbbPxzt89Zy2nOCaxg== + dependencies: + atomic-sleep "^1.0.0" + sort-keys@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/sort-keys/-/sort-keys-2.0.0.tgz#658535584861ec97d730d6cf41822e1f56684128" @@ -31628,7 +31938,7 @@ split@0.3, split@~0.3.3: dependencies: through "2" -split@^1.0.0, split@^1.0.1: +split@^1.0.0, split@^1.0.1, split@~1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/split/-/split-1.0.1.tgz#605bd9be303aa59fb35f9229fbea0ddec9ea07d9" integrity sha512-mTyOoPbrivtXnwnIxZRFYRrPNtEFKlpB2fvjSnCQUiAA6qAZzqwna5envK4uk6OIeP17CsdF3rSBGYVBsU0Tkg== @@ -31767,11 +32077,6 @@ stream-http@^3.1.0: readable-stream "^3.6.0" xtend "^4.0.2" -stream-shift@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/stream-shift/-/stream-shift-1.0.1.tgz#d7088281559ab2778424279b0877da3c392d5a3d" - integrity sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ== - stream-throttle@^0.1.3: version "0.1.3" resolved "https://registry.yarnpkg.com/stream-throttle/-/stream-throttle-0.1.3.tgz#add57c8d7cc73a81630d31cd55d3961cfafba9c3" @@ -32047,6 +32352,11 @@ strip-bom@4.0.0, strip-bom@^4.0.0: resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-4.0.0.tgz#9c3505c1db45bcedca3d9cf7a16f5c5aa3901878" integrity sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w== +strip-bom@5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-5.0.0.tgz#88d2e135d154dca7a5e06b4a4ba9653b6bdc0dd2" + integrity sha512-p+byADHF7SzEcVnLvc/r3uognM1hUhObuHXxJcgLCfD194XAkaLbjq3Wzb0N5G2tgIjH0dgT708Z51QxMeu60A== + strip-bom@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3" @@ -32084,6 +32394,11 @@ strip-json-comments@3.1.1, strip-json-comments@^3.1.0, strip-json-comments@^3.1. resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006" integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== +strip-json-comments@5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-5.0.0.tgz#ec101b766476a703031bc607e3c712569de2aa06" + integrity sha512-V1LGY4UUo0jgwC+ELQ2BNWfPa17TIuwBLg+j1AA/9RPzKINl1lhxVEu2r+ZTTO8aetIsUzE5Qj6LMSBkoGYKKw== + strip-json-comments@~2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a" @@ -32435,17 +32750,6 @@ tar-fs@^2.0.0: pump "^3.0.0" tar-stream "^2.1.4" -tar-stream@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/tar-stream/-/tar-stream-2.1.0.tgz#d1aaa3661f05b38b5acc9b7020efdca5179a2cc3" - integrity sha512-+DAn4Nb4+gz6WZigRzKEZl1QuJVOLtAwwF+WUxy1fJ6X63CaGaUAxJRD2KEn1OMfcbCjySTYpNC6WmfQoIEOdw== - dependencies: - bl "^3.0.0" - end-of-stream "^1.4.1" - fs-constants "^1.0.0" - inherits "^2.0.3" - readable-stream "^3.1.1" - tar-stream@^2.1.4, tar-stream@^2.2.0, tar-stream@~2.2.0: version "2.2.0" resolved "https://registry.yarnpkg.com/tar-stream/-/tar-stream-2.2.0.tgz#acad84c284136b060dc3faa64474aa9aebd77287" @@ -32629,13 +32933,6 @@ thenify-all@^1.0.0: dependencies: any-promise "^1.0.0" -thread-stream@^0.13.0: - version "0.13.2" - resolved "https://registry.yarnpkg.com/thread-stream/-/thread-stream-0.13.2.tgz#de8ea87584baee625c631947ec73494aa86131c8" - integrity sha512-woZFt0cLFkPdhsa+IGpRo1jiSouaHxMIljzTgt30CMjBWoUYbbcHqnunW5Yv+BXko9H05MVIcxMipI3Jblallw== - dependencies: - real-require "^0.1.0" - thread-stream@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/thread-stream/-/thread-stream-2.0.1.tgz#3fa74e2223e661a48f836494f7a64eeac5ac03c0" @@ -33309,7 +33606,12 @@ type-fest@^0.8.1: resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.8.1.tgz#09e249ebde851d3b1e48d27c105444667f17b83d" integrity sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA== -type-fest@^2.12.2: +type-fest@^1.0.1: + version "1.4.0" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-1.4.0.tgz#e9fb813fe3bf1744ec359d55d1affefa76f14be1" + integrity sha512-yGSza74xk0UG8k+pLh5oeoYirvIiWo5t0/o3zHHAO2tRDiZcxWP7fywNlXhqb6/r6sWvwi+RsyQMWhVLe4BVuA== + +type-fest@^2.12.2, type-fest@^2.13.0: version "2.19.0" resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-2.19.0.tgz#88068015bb33036a598b952e55e9311a60fd3a9b" integrity sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA== @@ -33581,6 +33883,11 @@ unicode-property-aliases-ecmascript@^2.0.0: resolved "https://registry.yarnpkg.com/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.0.0.tgz#0a36cb9a585c4f6abd51ad1deddb285c165297c8" integrity sha512-5Zfuy9q/DFr4tfO7ZPeVXb1aPoeQSdeFMLpYuFebehDAhbuevLs5yxSZmIFN1tP5F9Wl4IpJrYojg85/zgyZHQ== +unicorn-magic@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/unicorn-magic/-/unicorn-magic-0.1.0.tgz#1bb9a51c823aaf9d73a8bfcd3d1a23dde94b0ce4" + integrity sha512-lRfVq8fE8gz6QMBuDM6a+LO3IAzTi05H6gCVaUpir2E1Rwpo4ZUog45KpNXKC/Mn3Yb9UDuHumeFTo9iV/D9FQ== + unified@^10.0.0, unified@^10.1.2: version "10.1.2" resolved "https://registry.yarnpkg.com/unified/-/unified-10.1.2.tgz#b1d64e55dafe1f0b98bb6c719881103ecf6c86df" @@ -33657,6 +33964,13 @@ unique-string@^2.0.0: dependencies: crypto-random-string "^2.0.0" +unique-string@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/unique-string/-/unique-string-3.0.0.tgz#84a1c377aff5fd7a8bc6b55d8244b2bd90d75b9a" + integrity sha512-VGXBUVwxKMBUznyffQweQABPRRW1vHZAbadFZud4pLFAqRGvv/96vafgjWFqzourzr8YonlQiPgH0YCJfawoGQ== + dependencies: + crypto-random-string "^4.0.0" + unist-util-generated@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/unist-util-generated/-/unist-util-generated-2.0.1.tgz#e37c50af35d3ed185ac6ceacb6ca0afb28a85cae" @@ -33871,6 +34185,26 @@ update-notifier@5.1.0: semver-diff "^3.1.1" xdg-basedir "^4.0.0" +update-notifier@6.0.2: + version "6.0.2" + resolved "https://registry.yarnpkg.com/update-notifier/-/update-notifier-6.0.2.tgz#a6990253dfe6d5a02bd04fbb6a61543f55026b60" + integrity sha512-EDxhTEVPZZRLWYcJ4ZXjGFN0oP7qYvbXWzEgRm/Yql4dHX5wDbvh89YHP6PK1lzZJYrMtXUuZZz8XGK+U6U1og== + dependencies: + boxen "^7.0.0" + chalk "^5.0.1" + configstore "^6.0.0" + has-yarn "^3.0.0" + import-lazy "^4.0.0" + is-ci "^3.0.1" + is-installed-globally "^0.4.0" + is-npm "^6.0.0" + is-yarn-global "^0.4.0" + latest-version "^7.0.0" + pupa "^3.1.0" + semver "^7.3.7" + semver-diff "^4.0.0" + xdg-basedir "^5.1.0" + uri-js@^4.2.2: version "4.2.2" resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.2.2.tgz#94c540e1ff772956e2299507c010aea6c8838eb0" @@ -34291,7 +34625,7 @@ watchpack@2.1.1: glob-to-regexp "^0.4.1" graceful-fs "^4.1.2" -watchpack@^2.4.0: +watchpack@2.4.0, watchpack@^2.4.0: version "2.4.0" resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-2.4.0.tgz#fa33032374962c78113f93c7f2fb4c54c9862a5d" integrity sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg== @@ -34349,40 +34683,42 @@ web-ext@^6.5.0: yargs "16.2.0" zip-dir "2.0.0" -web-ext@^6.8.0: - version "6.8.0" - resolved "https://registry.yarnpkg.com/web-ext/-/web-ext-6.8.0.tgz#bc8d1ee478a0a1444f48159e80d492f7bf2fb9fc" - integrity sha512-qZ3a4YVs0Vdqet44QRZEcNUQznkrfhsAkSOnZp57O4T4A9Bo3pamePSBeRqdPdJv9GF8ntKG84o3eV0MrEvLbw== +web-ext@^7.11.0: + version "7.11.0" + resolved "https://registry.yarnpkg.com/web-ext/-/web-ext-7.11.0.tgz#f83a6d46215e56bc484d4ff7560a17f5e48d88dd" + integrity sha512-EG6YXHITNDJB/h6Rc5FF08eMoN45sZPBBIIlEraBzxJ0RdJZ8Z3xvUUawbDwt+mowfv9X0XRWlLSwdWbRKgojg== dependencies: - "@babel/runtime" "7.13.9" - "@devicefarmer/adbkit" "2.11.3" - addons-linter "4.14.0" + "@babel/runtime" "7.21.0" + "@devicefarmer/adbkit" "3.2.3" + addons-linter "6.21.0" bunyan "1.8.15" - camelcase "6.2.0" - chrome-launcher "0.15.0" - debounce "1.2.0" - decamelize "5.0.0" + camelcase "7.0.1" + chrome-launcher "0.15.1" + debounce "1.2.1" + decamelize "6.0.0" es6-error "4.1.1" - firefox-profile "4.2.2" - fs-extra "9.1.0" - fx-runner "1.2.0" + firefox-profile "4.3.2" + fs-extra "11.1.0" + fx-runner "1.4.0" import-fresh "3.3.0" + jose "4.13.1" mkdirp "1.0.4" - multimatch "5.0.0" + multimatch "6.0.0" mz "2.7.0" - node-notifier "9.0.0" - open "7.4.2" - parse-json "5.2.0" - promise-toolbox "0.20.0" - sign-addon "3.11.0" - source-map-support "0.5.20" - strip-bom "4.0.0" - strip-json-comments "3.1.1" + node-fetch "3.3.1" + node-notifier "10.0.1" + open "8.4.2" + parse-json "6.0.2" + promise-toolbox "0.21.0" + sign-addon "5.3.0" + source-map-support "0.5.21" + strip-bom "5.0.0" + strip-json-comments "5.0.0" tmp "0.2.1" - update-notifier "5.1.0" - watchpack "2.1.1" - ws "7.4.6" - yargs "16.2.0" + update-notifier "6.0.2" + watchpack "2.4.0" + ws "8.13.0" + yargs "17.7.1" zip-dir "2.0.0" web-namespaces@^2.0.0: @@ -34849,6 +35185,13 @@ widest-line@^3.1.0: dependencies: string-width "^4.0.0" +widest-line@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/widest-line/-/widest-line-4.0.1.tgz#a0fc673aaba1ea6f0a0d35b3c2795c9a9cc2ebf2" + integrity sha512-o0cyEG0e8GPzT4iGHphIOh0cJOV8fivsXxddQasHPHfoZf1ZexrfeA21w2NaEN1RHE+fXlfISmOE8R9N3u3Qig== + dependencies: + string-width "^5.0.1" + wildcard@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/wildcard/-/wildcard-2.0.0.tgz#a77d20e5200c6faaac979e4b3aadc7b3dd7f8fec" @@ -35063,6 +35406,11 @@ xdg-basedir@^4.0.0: resolved "https://registry.yarnpkg.com/xdg-basedir/-/xdg-basedir-4.0.0.tgz#4bc8d9984403696225ef83a1573cbbcb4e79db13" integrity sha512-PSNhEJDejZYV7h50BohL09Er9VaIefr2LMAf3OEmpCkjOi34eYyQYAXUTjEQtZJTKcF0E2UKTh+osDLsgNim9Q== +xdg-basedir@^5.0.1, xdg-basedir@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/xdg-basedir/-/xdg-basedir-5.1.0.tgz#1efba19425e73be1bc6f2a6ceb52a3d2c884c0c9" + integrity sha512-GCPAHLvrIH13+c0SuacwvRYj2SxJXQ4kaVTT5xgL3kPrz56XxkF21IGhjSE1+W0aw7gpBWRGXLCPnPby6lSpmQ== + xhr2@^0.2.0: version "0.2.1" resolved "https://registry.yarnpkg.com/xhr2/-/xhr2-0.2.1.tgz#4e73adc4f9cfec9cbd2157f73efdce3a5f108a93" @@ -35096,6 +35444,14 @@ xml2js@^0.4.17, xml2js@~0.4.23: sax ">=0.6.0" xmlbuilder "~11.0.0" +xml2js@^0.5.0: + version "0.5.0" + resolved "https://registry.yarnpkg.com/xml2js/-/xml2js-0.5.0.tgz#d9440631fbb2ed800203fad106f2724f62c493b7" + integrity sha512-drPFnkQJik/O+uPKpqSgr22mpuFHqKdbS835iAQrUC73L2F5WkboIRd63ai/2Yg6I1jzifPFKH2NTK+cfglkIA== + dependencies: + sax ">=0.6.0" + xmlbuilder "~11.0.0" + xmlbuilder@>=11.0.1, xmlbuilder@^15.1.1: version "15.1.1" resolved "https://registry.yarnpkg.com/xmlbuilder/-/xmlbuilder-15.1.1.tgz#9dcdce49eea66d8d10b42cae94a79c3c8d0c2ec5" @@ -35175,18 +35531,16 @@ yaml@^1.10.0: resolved "https://registry.yarnpkg.com/yaml/-/yaml-1.10.2.tgz#2301c5ffbf12b467de8da2333a459e29e7920e4b" integrity sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg== -yaml@^1.7.2: - version "1.7.2" - resolved "https://registry.yarnpkg.com/yaml/-/yaml-1.7.2.tgz#f26aabf738590ab61efaca502358e48dc9f348b2" - integrity sha512-qXROVp90sb83XtAoqE8bP9RwAkTTZbugRUTm5YeFCBfNRPEp2YzTeqWiz7m5OORHzEvrA/qcGS8hp/E+MMROYw== - dependencies: - "@babel/runtime" "^7.6.3" - yaml@^2.3.1, yaml@^2.3.4: version "2.3.4" resolved "https://registry.yarnpkg.com/yaml/-/yaml-2.3.4.tgz#53fc1d514be80aabf386dc6001eb29bf3b7523b2" integrity sha512-8aAvwVUSHpfEqTQ4w/KMlf3HcRdt50E5ODIQJBw1fQ5RL34xabzxtUlzTXVqc4rkZsPbvrXKWnABCD7kWSmocA== +yaml@^2.4.1: + version "2.4.1" + resolved "https://registry.yarnpkg.com/yaml/-/yaml-2.4.1.tgz#2e57e0b5e995292c25c75d2658f0664765210eed" + integrity sha512-pIXzoImaqmfOrL7teGUBt/T7ZDnyeGBWyXQBvOVhLkWLN37GXv8NMLK406UY6dS51JfcQHsmcW5cJ441bHg6Lg== + yargs-parser@20.2.4: version "20.2.4" resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.4.tgz#b42890f14566796f85ae8e3a25290d205f154a54" @@ -35261,19 +35615,6 @@ yargs@17.2.1: y18n "^5.0.5" yargs-parser "^20.2.2" -yargs@17.4.0: - version "17.4.0" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-17.4.0.tgz#9fc9efc96bd3aa2c1240446af28499f0e7593d00" - integrity sha512-WJudfrk81yWFSOkZYpAZx4Nt7V4xp7S/uJkX0CnxovMCt1wCE8LNftPpNuF9X/u9gN5nsD7ycYtRcDf2pL3UiA== - dependencies: - cliui "^7.0.2" - escalade "^3.1.1" - get-caller-file "^2.0.5" - require-directory "^2.1.1" - string-width "^4.2.3" - y18n "^5.0.5" - yargs-parser "^21.0.0" - yargs@17.7.1: version "17.7.1" resolved "https://registry.yarnpkg.com/yargs/-/yargs-17.7.1.tgz#34a77645201d1a8fc5213ace787c220eabbd0967" @@ -35422,15 +35763,6 @@ zip-dir@2.0.0: async "^3.2.0" jszip "^3.2.2" -zip-stream@^2.1.2: - version "2.1.3" - resolved "https://registry.yarnpkg.com/zip-stream/-/zip-stream-2.1.3.tgz#26cc4bdb93641a8590dd07112e1f77af1758865b" - integrity sha512-EkXc2JGcKhO5N5aZ7TmuNo45budRaFGHOmz24wtJR7znbNqDPmdZtUauKX6et8KAVseAMBOyWJqEpXcHTBsh7Q== - dependencies: - archiver-utils "^2.1.0" - compress-commons "^2.1.1" - readable-stream "^3.4.0" - zip-stream@^4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/zip-stream/-/zip-stream-4.1.0.tgz#51dd326571544e36aa3f756430b313576dc8fc79" @@ -35449,6 +35781,15 @@ zip-stream@^5.0.1: compress-commons "^5.0.1" readable-stream "^3.6.0" +zip-stream@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/zip-stream/-/zip-stream-6.0.1.tgz#e141b930ed60ccaf5d7fa9c8260e0d1748a2bbfb" + integrity sha512-zK7YHHz4ZXpW89AHXUPbQVGKI7uvkd3hzusTdotCg1UxyaVtg0zFJSTfW/Dq5f7OBBVnq6cZIaC8Ti4hb6dtCA== + dependencies: + archiver-utils "^5.0.0" + compress-commons "^6.0.2" + readable-stream "^4.0.0" + zod@3.20.6: version "3.20.6" resolved "https://registry.yarnpkg.com/zod/-/zod-3.20.6.tgz#2f2f08ff81291d47d99e86140fedb4e0db08361a"