From 8f6952683ca756eaa8695d32d93d9274f81dd3c0 Mon Sep 17 00:00:00 2001 From: "Michael \"Z\" Goddard" Date: Thu, 25 May 2023 19:12:10 -0400 Subject: [PATCH 01/29] add update script from mdn-bcd-collector --- scripts/update.ts | 746 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 746 insertions(+) create mode 100644 scripts/update.ts diff --git a/scripts/update.ts b/scripts/update.ts new file mode 100644 index 00000000000000..d3a133e92dff39 --- /dev/null +++ b/scripts/update.ts @@ -0,0 +1,746 @@ +// +// mdn-bcd-collector: scripts/update-bcd.ts +// Script to update the BCD data using collected results +// +// © Gooborg Studios, Google LLC +// See the LICENSE file for copyright details +// + +import assert from 'node:assert'; +import path from 'node:path'; +import { fileURLToPath } from 'node:url'; + +import { + compare as compareVersions, + compareVersions as compareVersionsSort, +} from 'compare-versions'; +import esMain from 'es-main'; +import fs from 'fs-extra'; +import klaw from 'klaw'; +import { Minimatch } from 'minimatch'; +import yargs from 'yargs'; +import { hideBin } from 'yargs/helpers'; + +import { + Browsers, + BrowserName, + SimpleSupportStatement, + Identifier, + SupportStatement, +} from '../types/types.js'; +import logger from '../utils/logger.js'; +import { parseUA } from '../utils/ua-parser.js'; + +export type Exposure = 'Window' | 'Worker' | 'SharedWorker' | 'ServiceWorker'; + +export type TestResultValue = boolean | null; + +export interface TestResult { + exposure: Exposure; + name: string; + result: TestResultValue; + message?: string; +} + +export interface TestResults { + [key: string]: TestResult[]; +} + +export interface Report { + __version: string; + results: TestResults; + userAgent: string; +} + +export type BrowserSupportMap = Map; +export type SupportMap = Map; +export type SupportMatrix = Map; + +type ManualOverride = [string, string, string, TestResultValue]; + +export type Overrides = Array; + +export type InternalSupportStatement = SupportStatement | 'mirror'; + +const BASE_DIR = new URL('..', import.meta.url); + +const BCD_DIR = process.env.BCD_DIR + ? path.resolve(process.env.BCD_DIR) + : fileURLToPath(BASE_DIR); + +const MDN_COLLECTOR_DIR = process.env.MDN_COLLECTOR_DIR + ? path.resolve(process.env.MDN_COLLECTOR_DIR) + : fileURLToPath(new URL('../mdn-bcd-collector', BASE_DIR)); + +const CATEGORIES = ['api', 'css.properties', 'javascript.builtins']; + +const { default: mirror } = await import( + `${BCD_DIR}/scripts/release/mirror.js` +); + +export const findEntry = ( + bcd: Identifier, + ident: string, +): Identifier | null => { + if (!ident) { + return null; + } + const keys: string[] = ident.split('.'); + let entry: any = bcd; + while (entry && keys.length) { + entry = entry[keys.shift() as string]; + } + return entry; +}; + +const clone = (value) => JSON.parse(JSON.stringify(value)); + +const combineResults = (results: TestResultValue[]): TestResultValue => { + let supported: TestResultValue = null; + for (const result of results) { + if (result === true) { + // If any result is true, the flattened support should be true. There + // can be contradictory results with multiple exposure scopes, but here + // we treat support in any scope as support of the feature. + return true; + } else if (result === false) { + // This may yet be overruled by a later result (above). + supported = false; + } else if (result === null) { + // Leave supported as it is. + } else { + throw new Error(`result not true/false/null; got ${result}`); + } + } + return supported; +}; + +// Create a string represenation of a version range, optimized for human +// legibility. +const joinRange = (lower: string, upper: string) => + lower === '0' ? `≤${upper}` : `${lower}> ≤${upper}`; + +// Parse a version range string produced by `joinRange` into a lower and upper +// boundary. +export const splitRange = (range: string) => { + const match = range.match(/(?:(.*)> )?(?:≤(.*))/); + if (!match) { + throw new Error(`Unrecognized version range value: "${range}"`); + } + return { lower: match[1] || '0', upper: match[2] }; +}; + +// Get support map from BCD path to test result (null/true/false) for a single +// report. +export const getSupportMap = (report: Report): BrowserSupportMap => { + // Transform `report` to map from test name (BCD path) to array of results. + const testMap = new Map(); + for (const tests of Object.values(report.results)) { + for (const test of tests) { + // TODO: If test.exposure.endsWith('Worker'), then map this to a + // worker_support feature. + const tests = testMap.get(test.name) || []; + tests.push(test.result); + testMap.set(test.name, tests); + } + } + + if (testMap.size === 0) { + throw new Error(`Report for "${report.userAgent}" has no results!`); + } + + // Transform `testMap` to map from test name (BCD path) to flattened support. + const supportMap = new Map(); + for (const [name, results] of testMap.entries()) { + let supported = combineResults(results); + + if (supported === null) { + // If the parent feature support is false, copy that. + // TODO: This assumes that the parent feature came first when iterating + // the report, which isn't guaranteed. Move this to a second phase. + const parentName = name.split('.').slice(0, -1).join('.'); + const parentSupport = supportMap.get(parentName); + if (parentSupport === false) { + supported = false; + } + } + + supportMap.set(name, supported); + } + return supportMap; +}; + +// Load all reports and build a map from BCD path to browser + version +// and test result (null/true/false) for that version. +export const getSupportMatrix = ( + reports: Report[], + browsers: Browsers, + overrides: ManualOverride[], +): SupportMatrix => { + const supportMatrix = new Map(); + + for (const report of reports) { + const { browser, version, inBcd } = parseUA(report.userAgent, browsers); + if (!inBcd) { + if (inBcd === false) { + logger.warn( + `Ignoring unknown ${browser.name} version ${version} (${report.userAgent})`, + ); + } else if (browser.name) { + logger.warn( + `Ignoring unknown browser ${browser.name} ${version} (${report.userAgent})`, + ); + } else { + logger.warn(`Unable to parse browser from UA ${report.userAgent}`); + } + + continue; + } + + const supportMap = getSupportMap(report); + + // Merge `supportMap` into `supportMatrix`. + for (const [name, supported] of supportMap.entries()) { + let browserMap = supportMatrix.get(name); + if (!browserMap) { + browserMap = new Map(); + supportMatrix.set(name, browserMap); + } + let versionMap = browserMap.get(browser.id); + if (!versionMap) { + versionMap = new Map(); + for (const browserVersion of Object.keys( + browsers[browser.id].releases, + )) { + versionMap.set(browserVersion, null); + } + browserMap.set(browser.id, versionMap); + } + assert(versionMap.has(version), `${browser.id} ${version} missing`); + + // In case of multiple reports for a single version it's possible we + // already have (non-null) support information. Combine results to deal + // with this possibility. + const combined = combineResults([supported, versionMap.get(version)]); + versionMap.set(version, combined); + } + } + + // apply manual overrides + for (const [path, browser, version, supported] of overrides) { + const browserMap = supportMatrix.get(path); + if (!browserMap) { + continue; + } + const versionMap = browserMap.get(browser); + if (!versionMap) { + continue; + } + + if (version === '*') { + // All versions of a browser + for (const v of versionMap.keys()) { + versionMap.set(v, supported); + } + } else if (version.includes('+')) { + // Browser versions from x onwards (inclusive) + for (const v of versionMap.keys()) { + if (compareVersions(version.replace('+', ''), v, '<=')) { + versionMap.set(v, supported); + } + } + } else if (version.includes('-')) { + // Browser versions between x and y (inclusive) + const versions = version.split('-'); + for (const v of versionMap.keys()) { + if ( + compareVersions(versions[0], v, '<=') && + compareVersions(versions[1], v, '>=') + ) { + versionMap.set(v, supported); + } + } + } else { + // Single browser versions + versionMap.set(version, supported); + } + } + + return supportMatrix; +}; + +export const inferSupportStatements = ( + versionMap: BrowserSupportMap, +): SimpleSupportStatement[] => { + const versions = Array.from(versionMap.keys()).sort(compareVersionsSort); + + const statements: SimpleSupportStatement[] = []; + const lastKnown: { version: string; support: TestResultValue } = { + version: '0', + support: null, + }; + let lastWasNull = false; + + for (const version of versions) { + const supported = versionMap.get(version); + const lastStatement = statements[statements.length - 1]; + + if (supported === true) { + if (!lastStatement) { + statements.push({ + version_added: + lastWasNull || lastKnown.support === false + ? joinRange(lastKnown.version, version) + : version, + }); + } else if (!lastStatement.version_added) { + lastStatement.version_added = lastWasNull + ? joinRange(lastKnown.version, version) + : version; + } else if (lastStatement.version_removed) { + // added back again + statements.push({ + version_added: version, + }); + } + + lastKnown.version = version; + lastKnown.support = true; + lastWasNull = false; + } else if (supported === false) { + if ( + lastStatement && + lastStatement.version_added && + !lastStatement.version_removed + ) { + lastStatement.version_removed = lastWasNull + ? joinRange(lastKnown.version, version) + : version; + } else if (!lastStatement) { + statements.push({ version_added: false }); + } + + lastKnown.version = version; + lastKnown.support = false; + lastWasNull = false; + } else if (supported === null) { + lastWasNull = true; + // TODO + } else { + throw new Error(`result not true/false/null; got ${supported}`); + } + } + + return statements; +}; + +export const update = ( + bcd: Identifier, + supportMatrix: SupportMatrix, + filter: any, +): boolean => { + let modified = false; + + for (const [path, browserMap] of supportMatrix.entries()) { + if (filter.path) { + if (filter.path.constructor === Minimatch) { + if (!filter.path.match(path)) { + // If filter.path does not match glob + continue; + } + } else if (path !== filter.path && !path.startsWith(`${filter.path}.`)) { + continue; + } + } + + const entry = findEntry(bcd, path); + if (!entry || !entry.__compat) { + continue; + } + + const support = entry.__compat.support; + // Stringified then parsed to deep clone the support statements + const originalSupport = clone(support); + + for (const [browser, versionMap] of browserMap.entries()) { + if ( + filter.browser && + filter.browser.length && + !filter.browser.includes(browser) + ) { + continue; + } + const inferredStatements = inferSupportStatements(versionMap); + if (inferredStatements.length !== 1) { + // TODO: handle more complicated scenarios + logger.warn( + `${path} skipped for ${browser} due to multiple inferred statements`, + ); + continue; + } + + const inferredStatement = inferredStatements[0]; + + // If there's a version number filter + if (filter.release || filter.release === false) { + const filterMatch = + filter.release && filter.release.match(/([\d.]+)-([\d.]+)/); + if (filterMatch) { + if (typeof inferredStatement.version_added !== 'string') { + // If the version_added is not a string, it must be false and won't + // match our + continue; + } + if ( + compareVersions( + inferredStatement.version_added.replace(/(([\d.]+)> )?≤/, ''), + filterMatch[1], + '<', + ) || + compareVersions( + inferredStatement.version_added.replace(/(([\d.]+)> )?≤/, ''), + filterMatch[2], + '>', + ) + ) { + // If version_added is outside of filter range + continue; + } + if ( + typeof inferredStatement.version_removed === 'string' && + (compareVersions( + inferredStatement.version_removed.replace(/(([\d.]+)> )?≤/, ''), + filterMatch[1], + '<', + ) || + compareVersions( + inferredStatement.version_removed.replace(/(([\d.]+)> )?≤/, ''), + filterMatch[2], + '>', + )) + ) { + // If version_removed and it's outside of filter range + continue; + } + } else { + if (filter.release !== inferredStatement.version_added) { + // If version_added doesn't match filter + continue; + } + if ( + inferredStatement.version_removed && + filter.release !== inferredStatement.version_removed + ) { + // If version_removed and it doesn't match filter + continue; + } + } + } + + // Update the support data with a new value. + const persist = (statements: SimpleSupportStatement[]) => { + // Check for ranges and ignore them if we specify `exact-only` argument + if (filter.exactOnly) { + for (const statement of statements) { + if ( + (typeof statement.version_added === 'string' && + statement.version_added.includes('≤')) || + (typeof statement.version_removed === 'string' && + statement.version_removed.includes('≤')) + ) { + return; + } + } + } + + support[browser] = statements.length === 1 ? statements[0] : statements; + modified = true; + }; + + let allStatements = + (support[browser] as InternalSupportStatement) === 'mirror' + ? mirror(browser, originalSupport) + : // Although non-mirrored support data could be modified in-place, + // working with a cloned version forces the subsequent code to + // explicitly assign it back to the originating data structure. + // This reduces the likelihood of inconsistencies in the handling + // of mirrored and non-mirrored support data. + clone(support[browser] || null); + + if (!allStatements) { + allStatements = []; + } else if (!Array.isArray(allStatements)) { + allStatements = [allStatements]; + } + + // Filter to the statements representing the feature being enabled by + // default under the default name and no flags. + const defaultStatements = allStatements.filter((statement) => { + if ('flags' in statement) { + return false; + } + if ('prefix' in statement || 'alternative_name' in statement) { + // TODO: map the results for aliases to these statements. + return false; + } + return true; + }); + + if (defaultStatements.length === 0) { + // Prepend |inferredStatement| to |allStatements|, since there were no + // relevant statements to begin with... + if (inferredStatement.version_added === false) { + // ... but not if the new statement just claims no support, since + // that is implicit in no statement. + continue; + } + // Remove flag data for features which are enabled by default. + // + // See https://github.com/mdn/browser-compat-data/pull/16637 + const nonFlagStatements = allStatements.filter( + (statement) => !('flags' in statement), + ); + persist([inferredStatement, ...nonFlagStatements]); + + continue; + } + + if (defaultStatements.length !== 1) { + // TODO: handle more complicated scenarios + logger.warn( + `${path} skipped for ${browser} due to multiple default statements`, + ); + continue; + } + + const simpleStatement = defaultStatements[0]; + + if (simpleStatement.version_removed) { + // TODO: handle updating existing added+removed entries. + logger.warn( + `${path} skipped for ${browser} due to added+removed statement`, + ); + continue; + } + + // If we infer no support but BCD currently has a version number, check to make sure + // our data is not older than BCD (ex. BCD says 79 but we have results for 40-78) + if ( + inferredStatement.version_added === false && + typeof simpleStatement.version_added === 'string' + ) { + let latestNonNullVersion = ''; + + for (const [version, result] of Array.from( + versionMap.entries(), + ).reverse()) { + if (result === null) { + // Ignore null values + continue; + } + + if ( + !latestNonNullVersion || + compareVersions(version, latestNonNullVersion, '>') + ) { + latestNonNullVersion = version; + } + } + + if ( + simpleStatement.version_added === 'preview' || + compareVersions( + latestNonNullVersion, + simpleStatement.version_added.replace('≤', ''), + '<', + ) + ) { + logger.warn( + `${path} skipped for ${browser}; BCD says support was added in a version newer than there are results for`, + ); + continue; + } + } + + if ( + typeof simpleStatement.version_added === 'string' && + typeof inferredStatement.version_added === 'string' && + inferredStatement.version_added.includes('≤') + ) { + const { lower, upper } = splitRange(inferredStatement.version_added); + const simpleAdded = simpleStatement.version_added.replace('≤', ''); + if ( + simpleStatement.version_added === 'preview' || + compareVersions(simpleAdded, lower, '<=') || + compareVersions(simpleAdded, upper, '>') + ) { + simpleStatement.version_added = inferredStatement.version_added; + persist(allStatements); + } + } else if ( + !( + typeof simpleStatement.version_added === 'string' && + inferredStatement.version_added === true + ) && + simpleStatement.version_added !== inferredStatement.version_added + ) { + // When a "mirrored" statement will be replaced with a statement + // documenting lack of support, notes describing partial implementation + // status are no longer relevant. + if ( + !inferredStatement.version_added && + simpleStatement.partial_implementation + ) { + persist([{ version_added: false }]); + + // Positive test results do not conclusively indicate that a partial + // implementation has been completed. + } else if (!simpleStatement.partial_implementation) { + simpleStatement.version_added = inferredStatement.version_added; + persist(allStatements); + } + } + + if (typeof inferredStatement.version_removed === 'string') { + simpleStatement.version_removed = inferredStatement.version_removed; + persist(allStatements); + } + } + } + + return modified; +}; + +/* c8 ignore start */ +// |paths| can be files or directories. Returns an object mapping +// from (absolute) path to the parsed file content. +export const loadJsonFiles = async ( + paths: string[], +): Promise<{ [filename: string]: any }> => { + // Ignores .DS_Store, .git, etc. + const dotFilter = (item) => { + const basename = path.basename(item); + return basename === '.' || basename[0] !== '.'; + }; + + const jsonFiles: string[] = []; + + for (const p of paths) { + await new Promise((resolve, reject) => { + klaw(p, { filter: dotFilter }) + .on('data', (item) => { + if (item.path.endsWith('.json')) { + jsonFiles.push(item.path); + } + }) + .on('error', reject) + .on('end', resolve); + }); + } + + const entries = await Promise.all( + jsonFiles.map(async (file) => { + const data = await fs.readJson(file); + return [file, data]; + }), + ); + + return Object.fromEntries(entries); +}; + +export const main = async ( + reportPaths: string[], + filter: any, + browsers: Browsers, + overrides: Overrides, +): Promise => { + // Replace filter.path with a minimatch object. + if (filter.path && filter.path.includes('*')) { + filter.path = new Minimatch(filter.path); + } + + if (filter.release === 'false') { + filter.release = false; + } + + const bcdFiles = (await loadJsonFiles( + filter.addNewFeatures + ? [path.join(BCD_DIR, '__missing')] + : CATEGORIES.map((cat) => path.join(BCD_DIR, ...cat.split('.'))), + )) as { [key: string]: Identifier }; + + const reports = Object.values(await loadJsonFiles(reportPaths)) as Report[]; + const supportMatrix = getSupportMatrix( + reports, + browsers, + overrides.filter( + Array.isArray as (item: unknown) => item is ManualOverride, + ), + ); + + // Should match https://github.com/mdn/browser-compat-data/blob/f10bf2cc7d1b001a390e70b7854cab9435ffb443/test/linter/test-style.js#L63 + // TODO: https://github.com/mdn/browser-compat-data/issues/3617 + for (const [file, data] of Object.entries(bcdFiles)) { + const modified = update(data, supportMatrix, filter); + if (!modified) { + continue; + } + logger.info(`Updating ${path.relative(BCD_DIR, file)}`); + const json = JSON.stringify(data, null, ' ') + '\n'; + await fs.writeFile(file, json); + } +}; + +if (esMain(import.meta)) { + const { + default: { browsers }, + } = await import(`${BCD_DIR}/index.js`); + const overrides = await fs.readJson( + new URL('custom/overrides.json', MDN_COLLECTOR_DIR), + ); + + const { argv }: { argv: any } = yargs(hideBin(process.argv)).command( + '$0 [reports..]', + 'Update BCD from a specified set of report files', + (yargs) => { + yargs + .positional('reports', { + describe: 'The report files to update from (also accepts folders)', + type: 'string', + array: true, + default: ['../mdn-bcd-results/'], + }) + .option('path', { + alias: 'p', + describe: + 'The BCD path to update (includes children, ex. "api.Document" will also update "api.Document.body")', + type: 'string', + default: null, + }) + .option('browser', { + alias: 'b', + describe: 'The browser to update', + type: 'array', + choices: Object.keys(browsers), + default: [], + }) + .option('release', { + alias: 'r', + describe: + 'Only update when version_added or version_removed is set to the given value (can be an inclusive range, ex. xx-yy, or `false` for changes that set no support)', + type: 'string', + default: null, + }) + .option('exact-only', { + alias: 'e', + describe: + 'Only update when versions are a specific number (or "false"), disallowing ranges', + type: 'boolean', + default: false, + }); + }, + ); + + await main(argv.reports, argv, browsers, overrides); +} +/* c8 ignore stop */ From c10c320da2025ce86bbad34ad68030a8ad299fde Mon Sep 17 00:00:00 2001 From: "Michael \"Z\" Goddard" Date: Thu, 25 May 2023 19:12:36 -0400 Subject: [PATCH 02/29] copy libs used by update from mdn-bcd-collector --- utils/logger.ts | 40 ++++++++++ utils/ua-parser.ts | 185 +++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 225 insertions(+) create mode 100644 utils/logger.ts create mode 100644 utils/ua-parser.ts diff --git a/utils/logger.ts b/utils/logger.ts new file mode 100644 index 00000000000000..cbfc985185ea03 --- /dev/null +++ b/utils/logger.ts @@ -0,0 +1,40 @@ +// +// mdn-bcd-collector: lib/logger.ts +// Logging output module to log to either the console or GAE cloud +// +// © Gooborg Studios, Google LLC +// See the LICENSE file for copyright details +// + +import winston from 'winston'; +import { LoggingWinston } from '@google-cloud/logging-winston'; + +type LogTransport = + | LoggingWinston + | winston.transports.ConsoleTransportInstance; + +/** + * Get a winston logging transport. + * @returns {LogTransport} winston logging transport + */ +const getTransport = (): LogTransport => { + /* c8 ignore next 3 */ + if (process.env.GOOGLE_APPLICATION_CREDENTIALS) { + return new LoggingWinston(); + } + + return new winston.transports.Console({ + format: winston.format.combine( + winston.format.colorize(), + winston.format.simple(), + ), + }); +}; + +const logger = winston.createLogger({ + level: 'info', + transports: [getTransport()], + silent: process.env.NODE_ENV === 'test', +}); + +export default logger; diff --git a/utils/ua-parser.ts b/utils/ua-parser.ts new file mode 100644 index 00000000000000..e5c6e996dceb16 --- /dev/null +++ b/utils/ua-parser.ts @@ -0,0 +1,185 @@ +// +// mdn-bcd-collector: lib/ua-parser.ts +// Module to parse user agent strings and compare them with BCD browser data +// +// © Gooborg Studios, Google LLC +// See the LICENSE file for copyright details +// + +import { + compare as compareVersions, + compareVersions as compareVersionsSort, +} from 'compare-versions'; +import uaParser from 'ua-parser-js'; + +import { Browsers } from '../types/types'; + +interface UserAgentData { + browser: { + id: string; + name: string; + }; + version: string; + fullVersion: string; + os: { + name: string; + version: string; + }; + inBcd: boolean | undefined; +} + +/** + * Get major version of semver string. + * @param {string} version A semantic version + * @returns {string} Major version + */ +const getMajorVersion = (version: string) => version.split('.')[0]; + +/** + * Get major and minor verion of a semver string. + * @param {string} version A semantic version + * @returns {string} Major and minor version + */ +const getMajorMinorVersion = (version: string) => { + const [major, minor] = version.split('.'); + return `${major}.${minor || 0}`; +}; + +/** + * Parse user agent string. + * @param {string} userAgent A user agent + * @param {Browsers} browsers Record of browser ids to BrowserStatement + * @returns {UserAgentData} Parsed user agent + */ +const parseUA = (userAgent: string, browsers: Browsers) => { + const ua = uaParser(userAgent); + + const data: UserAgentData = { + browser: { id: '', name: '' }, + version: '', + fullVersion: '', + os: { name: '', version: '' }, + inBcd: undefined, + }; + + if (!ua.browser.name) { + return data; + } + + data.browser.id = ua.browser.name.toLowerCase().replace(/ /g, '_'); + data.browser.name = ua.browser.name; + data.os.name = ua.os.name || ''; + data.os.version = ua.os.version || ''; + + switch (data.browser.id) { + case 'mobile_safari': + data.browser.id = 'safari'; + break; + case 'oculus_browser': + data.browser.id = 'oculus'; + break; + case 'samsung_browser': + data.browser.id = 'samsunginternet'; + break; + case 'android_browser': + case 'chrome_webview': + data.browser.id = 'webview'; + break; + } + + const os = data.os.name.toLowerCase(); + if (os === 'android' && data.browser.id !== 'oculus') { + data.browser.id += '_android'; + data.browser.name += ' Android'; + + if (ua.browser.name === 'Android Browser') { + // For early WebView Android, use the OS version + data.fullVersion = compareVersions(ua.os.version, '5.0', '<') + ? ua.os.version + : ua.engine.version; + } + } else if (os === 'ios') { + data.browser.id += '_ios'; + data.browser.name += ' iOS'; + + // https://github.com/mdn/browser-compat-data/blob/main/docs/data-guidelines.md#safari-for-ios-versioning + data.fullVersion = ua.os.version; + } + + data.fullVersion = data.fullVersion || ua.browser.version; + data.version = getMajorMinorVersion(data.fullVersion); + + if (!(data.browser.id in browsers)) { + return data; + } + + data.browser.name = browsers[data.browser.id].name; + data.inBcd = false; + + const versions = Object.keys(browsers[data.browser.id].releases); + versions.sort(compareVersionsSort); + + // Android 4.4.3 needs to be handled as a special case, because its data + // differs from 4.4, and the code below will strip out the patch versions from + // our version numbers. + if ( + data.browser.id === 'webview_android' && + compareVersions(data.fullVersion, '4.4.3', '>=') && + compareVersions(data.fullVersion, '5.0', '<') + ) { + data.version = '4.4.3'; + data.inBcd = true; + return data; + } + + // Certain Safari versions are backports of newer versions, but contain less + // features, particularly ones involving OS integration. We are explicitly + // marking these versions as "not in BCD" to avoid confusion. + if ( + data.browser.id === 'safari' && + ['4.1', '6.1', '6.2', '7.1'].includes(data.version) + ) { + return data; + } + + // The |version| from the UA string is typically more precise than |versions| + // from BCD, and some "uninteresting" releases are missing from BCD. To deal + // with this, find the pair of versions in |versions| that sandwiches + // |version|, and use the first of this pair. For example, given |version| + // "10.1" and |versions| entries "10.0" and "10.2", return "10.0". + for (let i = 0; i < versions.length - 1; i++) { + const current = versions[i]; + const next = versions[i + 1]; + if ( + compareVersions(data.version, current, '>=') && + compareVersions(data.version, next, '<') + ) { + data.inBcd = true; + data.version = current; + break; + } + } + + // We reached the last entry in |versions|. With no |next| to compare against + // we have to check if it looks like a significant release or not. By default + // that means a new major version, but for Safari and Samsung Internet the + // major and minor version are significant. + let normalize = getMajorVersion; + if ( + data.browser.id.startsWith('safari') || + data.browser.id === 'samsunginternet_android' + ) { + normalize = getMajorMinorVersion; + } + if ( + data.inBcd == false && + normalize(data.version) === normalize(versions[versions.length - 1]) + ) { + data.inBcd = true; + data.version = versions[versions.length - 1]; + } + + return data; +}; + +export { getMajorMinorVersion, parseUA }; From 419ead2d5f40b2a93c899da6a5ca11bbbd186358 Mon Sep 17 00:00:00 2001 From: "Michael \"Z\" Goddard" Date: Thu, 25 May 2023 19:13:04 -0400 Subject: [PATCH 03/29] add depedencies --- package.json | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/package.json b/package.json index e98a044a6d4fbf..91cac96fa3a282 100644 --- a/package.json +++ b/package.json @@ -30,6 +30,7 @@ "@babel/eslint-parser": "~7.21.3", "@babel/plugin-syntax-import-assertions": "~7.20.0", "@desertnet/html-parser": "~1.0.1", + "@google-cloud/logging-winston": "5.3.0", "@swc/cli": "^0.1.62", "@swc/core": "^1.3.36", "@types/deep-diff": "~1.0.1", @@ -61,8 +62,10 @@ "eslint-plugin-unicorn": "^47.0.0", "fast-json-stable-stringify": "~2.1.0", "fdir": "~6.0.1", + "fs-extra": "11.1.1", "husky": "^8.0.1", "json-schema-to-typescript": "~10.1.5", + "klaw": "4.1.0", "lint-staged": "^13.0.3", "mocha": "~10.2.0", "open-cli": "~7.2.0", @@ -70,7 +73,9 @@ "prettier": "~2.8.0", "ts-node": "~10.9.1", "typescript": "~5.0.2", + "ua-parser-js": "1.0.35", "web-specs": "^2.41.0", + "winston": "3.8.2", "yargs": "~17.7.0" }, "scripts": { @@ -90,6 +95,7 @@ "remove-redundant-flags": "ts-node scripts/remove-redundant-flags.ts", "show-errors": "npm test 1> /dev/null", "test": "npm run format && npm run lint && npm run unittest", - "traverse": "ts-node scripts/traverse.ts" + "traverse": "ts-node scripts/traverse.ts", + "update": "ts-node scripts/update.ts" } } From 16901b36461516cdb3a3ddb421c9f209de4b4a16 Mon Sep 17 00:00:00 2001 From: "Michael \"Z\" Goddard" Date: Thu, 25 May 2023 19:13:15 -0400 Subject: [PATCH 04/29] bump package-lock --- package-lock.json | 2208 +++++++++++++++++++++++++++++++++++++++++---- 1 file changed, 2030 insertions(+), 178 deletions(-) diff --git a/package-lock.json b/package-lock.json index e0b1e3c1746e89..c0ae9f9b78360b 100644 --- a/package-lock.json +++ b/package-lock.json @@ -12,6 +12,7 @@ "@babel/eslint-parser": "~7.21.3", "@babel/plugin-syntax-import-assertions": "~7.20.0", "@desertnet/html-parser": "~1.0.1", + "@google-cloud/logging-winston": "5.3.0", "@swc/cli": "^0.1.62", "@swc/core": "^1.3.36", "@types/deep-diff": "~1.0.1", @@ -43,8 +44,10 @@ "eslint-plugin-unicorn": "^47.0.0", "fast-json-stable-stringify": "~2.1.0", "fdir": "~6.0.1", + "fs-extra": "11.1.1", "husky": "^8.0.1", "json-schema-to-typescript": "~10.1.5", + "klaw": "4.1.0", "lint-staged": "^13.0.3", "mocha": "~10.2.0", "open-cli": "~7.2.0", @@ -52,7 +55,9 @@ "prettier": "~2.8.0", "ts-node": "~10.9.1", "typescript": "~5.0.2", + "ua-parser-js": "1.0.35", "web-specs": "^2.41.0", + "winston": "3.8.2", "yargs": "~17.7.0" }, "engines": { @@ -416,7 +421,6 @@ "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.21.4.tgz", "integrity": "sha512-alVJj7k7zIxqBZ7BTRhz0IqJFxW1VJbm6N8JbcYhQ186df9ZBPbZBmWSqAMXwHGsCJdYks7z/voa3ibiS5bCIw==", "dev": true, - "peer": true, "bin": { "parser": "bin/babel-parser.js" }, @@ -497,6 +501,15 @@ "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==", "dev": true }, + "node_modules/@colors/colors": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@colors/colors/-/colors-1.5.0.tgz", + "integrity": "sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==", + "dev": true, + "engines": { + "node": ">=0.1.90" + } + }, "node_modules/@cspotcode/source-map-support": { "version": "0.8.1", "resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz", @@ -519,6 +532,17 @@ "@jridgewell/sourcemap-codec": "^1.4.10" } }, + "node_modules/@dabh/diagnostics": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@dabh/diagnostics/-/diagnostics-2.0.3.tgz", + "integrity": "sha512-hrlQOIi7hAfzsMqlGSFyVucrx38O+j6wiGOf//H2ecvIEqYN4ADBSS2iLMh5UFyDunCNniUIPk/q3riFv45xRA==", + "dev": true, + "dependencies": { + "colorspace": "1.1.x", + "enabled": "2.0.x", + "kuler": "^2.0.0" + } + }, "node_modules/@desertnet/html-parser": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/@desertnet/html-parser/-/html-parser-1.0.1.tgz", @@ -665,6 +689,160 @@ "node": "^12.22.0 || ^14.17.0 || >=16.0.0" } }, + "node_modules/@google-cloud/common": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/@google-cloud/common/-/common-4.0.3.tgz", + "integrity": "sha512-fUoMo5b8iAKbrYpneIRV3z95AlxVJPrjpevxs4SKoclngWZvTXBSGpNisF5+x5m+oNGve7jfB1e6vNBZBUs7Fw==", + "dev": true, + "dependencies": { + "@google-cloud/projectify": "^3.0.0", + "@google-cloud/promisify": "^3.0.0", + "arrify": "^2.0.1", + "duplexify": "^4.1.1", + "ent": "^2.2.0", + "extend": "^3.0.2", + "google-auth-library": "^8.0.2", + "retry-request": "^5.0.0", + "teeny-request": "^8.0.0" + }, + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/@google-cloud/common/node_modules/arrify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/arrify/-/arrify-2.0.1.tgz", + "integrity": "sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@google-cloud/logging": { + "version": "10.4.1", + "resolved": "https://registry.npmjs.org/@google-cloud/logging/-/logging-10.4.1.tgz", + "integrity": "sha512-vYoaJLWdV2g9iQqDJpte5VjAktMwSOfuz9nuj2YzBCsgiNJ0Te4gl+f5EClkY1nKTZIH00Hd97fSxDrduLpOmw==", + "dev": true, + "dependencies": { + "@google-cloud/common": "^4.0.0", + "@google-cloud/paginator": "^4.0.0", + "@google-cloud/projectify": "^3.0.0", + "@google-cloud/promisify": "^3.0.0", + "arrify": "^2.0.1", + "dot-prop": "^6.0.0", + "eventid": "^2.0.0", + "extend": "^3.0.2", + "gcp-metadata": "^4.0.0", + "google-auth-library": "^8.0.2", + "google-gax": "^3.5.8", + "on-finished": "^2.3.0", + "pumpify": "^2.0.1", + "stream-events": "^1.0.5", + "uuid": "^9.0.0" + }, + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/@google-cloud/logging-winston": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/@google-cloud/logging-winston/-/logging-winston-5.3.0.tgz", + "integrity": "sha512-i7rh4h6YU9RVowtaGU1Da+ShoFy5ueKJQMpE/+grW/NoU+vvzDSIC8GOBhr1ZGqFU2QhETSlt2d50htbFYW8Vw==", + "dev": true, + "dependencies": { + "@google-cloud/logging": "^10.2.2", + "google-auth-library": "^8.0.2", + "lodash.mapvalues": "^4.6.0", + "winston-transport": "^4.3.0" + }, + "engines": { + "node": ">=12.0.0" + }, + "peerDependencies": { + "winston": ">=3.2.1" + } + }, + "node_modules/@google-cloud/logging/node_modules/arrify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/arrify/-/arrify-2.0.1.tgz", + "integrity": "sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@google-cloud/paginator": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@google-cloud/paginator/-/paginator-4.0.1.tgz", + "integrity": "sha512-6G1ui6bWhNyHjmbYwavdN7mpVPRBtyDg/bfqBTAlwr413On2TnFNfDxc9UhTJctkgoCDgQXEKiRPLPR9USlkbQ==", + "dev": true, + "dependencies": { + "arrify": "^2.0.0", + "extend": "^3.0.2" + }, + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/@google-cloud/paginator/node_modules/arrify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/arrify/-/arrify-2.0.1.tgz", + "integrity": "sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@google-cloud/projectify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@google-cloud/projectify/-/projectify-3.0.0.tgz", + "integrity": "sha512-HRkZsNmjScY6Li8/kb70wjGlDDyLkVk3KvoEo9uIoxSjYLJasGiCch9+PqRVDOCGUFvEIqyogl+BeqILL4OJHA==", + "dev": true, + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/@google-cloud/promisify": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@google-cloud/promisify/-/promisify-3.0.1.tgz", + "integrity": "sha512-z1CjRjtQyBOYL+5Qr9DdYIfrdLBe746jRTYfaYU6MeXkqp7UfYs/jX16lFFVzZ7PGEJvqZNqYUEtb1mvDww4pA==", + "dev": true, + "engines": { + "node": ">=12" + } + }, + "node_modules/@grpc/grpc-js": { + "version": "1.8.14", + "resolved": "https://registry.npmjs.org/@grpc/grpc-js/-/grpc-js-1.8.14.tgz", + "integrity": "sha512-w84maJ6CKl5aApCMzFll0hxtFNT6or9WwMslobKaqWUEf1K+zhlL43bSQhFreyYWIWR+Z0xnVFC1KtLm4ZpM/A==", + "dev": true, + "dependencies": { + "@grpc/proto-loader": "^0.7.0", + "@types/node": ">=12.12.47" + }, + "engines": { + "node": "^8.13.0 || >=10.10.0" + } + }, + "node_modules/@grpc/proto-loader": { + "version": "0.7.7", + "resolved": "https://registry.npmjs.org/@grpc/proto-loader/-/proto-loader-0.7.7.tgz", + "integrity": "sha512-1TIeXOi8TuSCQprPItwoMymZXxWT0CPxUhkrkeCUH+D8U7QDwQ6b7SUz2MaLuWM2llT+J/TVFLmQI5KtML3BhQ==", + "dev": true, + "dependencies": { + "@types/long": "^4.0.1", + "lodash.camelcase": "^4.3.0", + "long": "^4.0.0", + "protobufjs": "^7.0.0", + "yargs": "^17.7.2" + }, + "bin": { + "proto-loader-gen-types": "build/bin/proto-loader-gen-types.js" + }, + "engines": { + "node": ">=6" + } + }, "node_modules/@humanwhocodes/config-array": { "version": "0.11.8", "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.8.tgz", @@ -778,6 +956,18 @@ "integrity": "sha512-4JQNk+3mVzK3xh2rqd6RB4J46qUR19azEHBneZyTZM+c456qOrbbM/5xcR8huNCCcbVt7+UmizG6GuUvPvKUYg==", "dev": true }, + "node_modules/@jsdoc/salty": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/@jsdoc/salty/-/salty-0.2.5.tgz", + "integrity": "sha512-TfRP53RqunNe2HBobVBJ0VLhK1HbfvBYeTC1ahnN64PWvyYyGebmMiPkuwvD9fpw2ZbkoPb8Q7mwy0aR8Z9rvw==", + "dev": true, + "dependencies": { + "lodash": "^4.17.21" + }, + "engines": { + "node": ">=v12.0.0" + } + }, "node_modules/@mole-inc/bin-wrapper": { "version": "8.0.1", "resolved": "https://registry.npmjs.org/@mole-inc/bin-wrapper/-/bin-wrapper-8.0.1.tgz", @@ -902,6 +1092,70 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/@protobufjs/aspromise": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@protobufjs/aspromise/-/aspromise-1.1.2.tgz", + "integrity": "sha512-j+gKExEuLmKwvz3OgROXtrJ2UG2x8Ch2YZUxahh+s1F2HZ+wAceUNLkvy6zKCPVRkU++ZWQrdxsUeQXmcg4uoQ==", + "dev": true + }, + "node_modules/@protobufjs/base64": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@protobufjs/base64/-/base64-1.1.2.tgz", + "integrity": "sha512-AZkcAA5vnN/v4PDqKyMR5lx7hZttPDgClv83E//FMNhR2TMcLUhfRUBHCmSl0oi9zMgDDqRUJkSxO3wm85+XLg==", + "dev": true + }, + "node_modules/@protobufjs/codegen": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@protobufjs/codegen/-/codegen-2.0.4.tgz", + "integrity": "sha512-YyFaikqM5sH0ziFZCN3xDC7zeGaB/d0IUb9CATugHWbd1FRFwWwt4ld4OYMPWu5a3Xe01mGAULCdqhMlPl29Jg==", + "dev": true + }, + "node_modules/@protobufjs/eventemitter": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/eventemitter/-/eventemitter-1.1.0.tgz", + "integrity": "sha512-j9ednRT81vYJ9OfVuXG6ERSTdEL1xVsNgqpkxMsbIabzSo3goCjDIveeGv5d03om39ML71RdmrGNjG5SReBP/Q==", + "dev": true + }, + "node_modules/@protobufjs/fetch": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/fetch/-/fetch-1.1.0.tgz", + "integrity": "sha512-lljVXpqXebpsijW71PZaCYeIcE5on1w5DlQy5WH6GLbFryLUrBD4932W/E2BSpfRJWseIL4v/KPgBFxDOIdKpQ==", + "dev": true, + "dependencies": { + "@protobufjs/aspromise": "^1.1.1", + "@protobufjs/inquire": "^1.1.0" + } + }, + "node_modules/@protobufjs/float": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@protobufjs/float/-/float-1.0.2.tgz", + "integrity": "sha512-Ddb+kVXlXst9d+R9PfTIxh1EdNkgoRe5tOX6t01f1lYWOvJnSPDBlG241QLzcyPdoNTsblLUdujGSE4RzrTZGQ==", + "dev": true + }, + "node_modules/@protobufjs/inquire": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/inquire/-/inquire-1.1.0.tgz", + "integrity": "sha512-kdSefcPdruJiFMVSbn801t4vFK7KB/5gd2fYvrxhuJYg8ILrmn9SKSX2tZdV6V+ksulWqS7aXjBcRXl3wHoD9Q==", + "dev": true + }, + "node_modules/@protobufjs/path": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@protobufjs/path/-/path-1.1.2.tgz", + "integrity": "sha512-6JOcJ5Tm08dOHAbdR3GrvP+yUUfkjG5ePsHYczMFLq3ZmMkAD98cDgcT2iA1lJ9NVwFd4tH/iSSoe44YWkltEA==", + "dev": true + }, + "node_modules/@protobufjs/pool": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/pool/-/pool-1.1.0.tgz", + "integrity": "sha512-0kELaGSIDBKvcgS4zkjz1PeddatrjYcmMWOlAuAPwAeccUrPHdUqo/J6LiymHHEiJT5NrF1UVwxY14f+fy4WQw==", + "dev": true + }, + "node_modules/@protobufjs/utf8": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/utf8/-/utf8-1.1.0.tgz", + "integrity": "sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw==", + "dev": true + }, "node_modules/@sindresorhus/is": { "version": "4.6.0", "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-4.6.0.tgz", @@ -979,9 +1233,9 @@ "dev": true }, "node_modules/@swc/core": { - "version": "1.3.60", - "resolved": "https://registry.npmjs.org/@swc/core/-/core-1.3.60.tgz", - "integrity": "sha512-dWfic7sVjnrStzGcMWakHd2XPau8UXGPmFUTkx6xGX+DOVtfAQVzG6ZW7ohw/yNcTqI05w6Ser26XMTMGBgXdA==", + "version": "1.3.56", + "resolved": "https://registry.npmjs.org/@swc/core/-/core-1.3.56.tgz", + "integrity": "sha512-yz/EeXT+PMZucUNrYceRUaTfuNS4IIu5EDZSOlvCEvm4jAmZi7CYH1B/kvzEzoAOzr7zkQiDPNJftcQXLkjbjA==", "dev": true, "hasInstallScript": true, "engines": { @@ -992,16 +1246,16 @@ "url": "https://opencollective.com/swc" }, "optionalDependencies": { - "@swc/core-darwin-arm64": "1.3.60", - "@swc/core-darwin-x64": "1.3.60", - "@swc/core-linux-arm-gnueabihf": "1.3.60", - "@swc/core-linux-arm64-gnu": "1.3.60", - "@swc/core-linux-arm64-musl": "1.3.60", - "@swc/core-linux-x64-gnu": "1.3.60", - "@swc/core-linux-x64-musl": "1.3.60", - "@swc/core-win32-arm64-msvc": "1.3.60", - "@swc/core-win32-ia32-msvc": "1.3.60", - "@swc/core-win32-x64-msvc": "1.3.60" + "@swc/core-darwin-arm64": "1.3.56", + "@swc/core-darwin-x64": "1.3.56", + "@swc/core-linux-arm-gnueabihf": "1.3.56", + "@swc/core-linux-arm64-gnu": "1.3.56", + "@swc/core-linux-arm64-musl": "1.3.56", + "@swc/core-linux-x64-gnu": "1.3.56", + "@swc/core-linux-x64-musl": "1.3.56", + "@swc/core-win32-arm64-msvc": "1.3.56", + "@swc/core-win32-ia32-msvc": "1.3.56", + "@swc/core-win32-x64-msvc": "1.3.56" }, "peerDependencies": { "@swc/helpers": "^0.5.0" @@ -1013,9 +1267,9 @@ } }, "node_modules/@swc/core-darwin-arm64": { - "version": "1.3.60", - "resolved": "https://registry.npmjs.org/@swc/core-darwin-arm64/-/core-darwin-arm64-1.3.60.tgz", - "integrity": "sha512-oCDKWGdSO1WyErduGfiITRDoq7ZBt9PXETlhi8BGKH/wCc/3mfSNI9wXAg3Stn8mrT0lUJtdsnwMI/eZp6dK+A==", + "version": "1.3.56", + "resolved": "https://registry.npmjs.org/@swc/core-darwin-arm64/-/core-darwin-arm64-1.3.56.tgz", + "integrity": "sha512-DZcu7BzDaLEdWHabz9DRTP0yEBLqkrWmskFcD5BX0lGAvoIvE4duMnAqi5F2B3X7630QioHRCYFoRw2WkeE3Cw==", "cpu": [ "arm64" ], @@ -1029,9 +1283,9 @@ } }, "node_modules/@swc/core-darwin-x64": { - "version": "1.3.60", - "resolved": "https://registry.npmjs.org/@swc/core-darwin-x64/-/core-darwin-x64-1.3.60.tgz", - "integrity": "sha512-pcE/1oUlmN/BkKndOPtViqTkaM5pomagXATo+Muqn4QNMnkSOEVcmF9T3Lr3nB1A7O/fwCew3/aHwZ5B2TZ1tA==", + "version": "1.3.56", + "resolved": "https://registry.npmjs.org/@swc/core-darwin-x64/-/core-darwin-x64-1.3.56.tgz", + "integrity": "sha512-VH5saqYFasdRXJy6RAT+MXm0+IjkMZvOkohJwUei+oA65cKJofQwrJ1jZro8yOJFYvUSI3jgNRGsdBkmo/4hMw==", "cpu": [ "x64" ], @@ -1045,9 +1299,9 @@ } }, "node_modules/@swc/core-linux-arm-gnueabihf": { - "version": "1.3.60", - "resolved": "https://registry.npmjs.org/@swc/core-linux-arm-gnueabihf/-/core-linux-arm-gnueabihf-1.3.60.tgz", - "integrity": "sha512-Moc+86SWcbPr06PaQYUb0Iwli425F7QgjwTCNEPYA6OYUsjaJhXMaHViW2WdGIXue2+eaQbg31BHQd14jXcoBg==", + "version": "1.3.56", + "resolved": "https://registry.npmjs.org/@swc/core-linux-arm-gnueabihf/-/core-linux-arm-gnueabihf-1.3.56.tgz", + "integrity": "sha512-LWwPo6NnJkH01+ukqvkoNIOpMdw+Zundm4vBeicwyVrkP+mC3kwVfi03TUFpQUz3kRKdw/QEnxGTj+MouCPbtw==", "cpu": [ "arm" ], @@ -1061,9 +1315,9 @@ } }, "node_modules/@swc/core-linux-arm64-gnu": { - "version": "1.3.60", - "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-gnu/-/core-linux-arm64-gnu-1.3.60.tgz", - "integrity": "sha512-pPGZrTgSXBvp6IrXPXz8UJr82AElf8hMuK4rNHmLGDCqrWnRIFLUpiAsc2WCFIgdwqitZNQoM+F2vbceA/bkKg==", + "version": "1.3.56", + "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-gnu/-/core-linux-arm64-gnu-1.3.56.tgz", + "integrity": "sha512-GzsUy/4egJ4cMlxbM+Ub7AMi5CKAc+pxBxrh8MUPQbyStW8jGgnQsJouTnGy0LHawtdEnsCOl6PcO6OgvktXuQ==", "cpu": [ "arm64" ], @@ -1077,9 +1331,9 @@ } }, "node_modules/@swc/core-linux-arm64-musl": { - "version": "1.3.60", - "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-musl/-/core-linux-arm64-musl-1.3.60.tgz", - "integrity": "sha512-HSFQaVUkjWYNsQeymAQ3IPX3csRQvHe6MFyqPfvCCQ4dFlxPvlS7VvNaLnGG+ZW1ek7Lc+hEX+4NGzZKsxDIHA==", + "version": "1.3.56", + "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-musl/-/core-linux-arm64-musl-1.3.56.tgz", + "integrity": "sha512-9gxL09BIiAv8zY0DjfnFf19bo8+P4T9tdhzPwcm+1yPJcY5yr1+YFWLNFzz01agtOj6VlZ2/wUJTaOfdjjtc+A==", "cpu": [ "arm64" ], @@ -1093,9 +1347,9 @@ } }, "node_modules/@swc/core-linux-x64-gnu": { - "version": "1.3.60", - "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-gnu/-/core-linux-x64-gnu-1.3.60.tgz", - "integrity": "sha512-WJt/X6HHM3/TszckRA7UKMXec3FHYsB9xswQbIYxN4bfTQodu3Rc8bmpHYtFO7ScMLrhY+RljHLK6wclPvaEXw==", + "version": "1.3.56", + "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-gnu/-/core-linux-x64-gnu-1.3.56.tgz", + "integrity": "sha512-n0ORNknl50vMRkll3BDO1E4WOqY6iISlPV1ZQCRLWQ6YQ2q8/WAryBxc2OAybcGHBUFkxyACpJukeU1QZ/9tNw==", "cpu": [ "x64" ], @@ -1109,9 +1363,9 @@ } }, "node_modules/@swc/core-linux-x64-musl": { - "version": "1.3.60", - "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-musl/-/core-linux-x64-musl-1.3.60.tgz", - "integrity": "sha512-DGGBqAPUXy/aPMBKokL3osZC9kM97HchiDPuprzwgTMP40YQ3hGCzNJ5jK7sOk9Tc4PEdZ2Igfr9sBHmCrxxQw==", + "version": "1.3.56", + "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-musl/-/core-linux-x64-musl-1.3.56.tgz", + "integrity": "sha512-r+D34WLAOAlJtfw1gaVWpHRwCncU9nzW9i7w9kSw4HpWYnHJOz54jLGSEmNsrhdTCz1VK2ar+V2ktFUsrlGlDA==", "cpu": [ "x64" ], @@ -1125,9 +1379,9 @@ } }, "node_modules/@swc/core-win32-arm64-msvc": { - "version": "1.3.60", - "resolved": "https://registry.npmjs.org/@swc/core-win32-arm64-msvc/-/core-win32-arm64-msvc-1.3.60.tgz", - "integrity": "sha512-wQg/BZPJvp5WpUbsBp7VHjhUh0DfYOPhP6dH67WO9QQ07+DvOk2DR2Bfh0z0ts1k7H/FsAqExWtTDCWMCRJiRQ==", + "version": "1.3.56", + "resolved": "https://registry.npmjs.org/@swc/core-win32-arm64-msvc/-/core-win32-arm64-msvc-1.3.56.tgz", + "integrity": "sha512-29Yt75Is6X24z3x8h/xZC1HnDPkPpyLH9mDQiM6Cuc0I9mVr1XSriPEUB2N/awf5IE4SA8c+3IVq1DtKWbkJIw==", "cpu": [ "arm64" ], @@ -1141,9 +1395,9 @@ } }, "node_modules/@swc/core-win32-ia32-msvc": { - "version": "1.3.60", - "resolved": "https://registry.npmjs.org/@swc/core-win32-ia32-msvc/-/core-win32-ia32-msvc-1.3.60.tgz", - "integrity": "sha512-nqkd0XIVyGbnBwAxP4GIfx6n45/hAPETpmQYpDSGnucOKFJfvGdFGL81GDG1acPCq/oFtR3tIyTbPpKmJ0N6xQ==", + "version": "1.3.56", + "resolved": "https://registry.npmjs.org/@swc/core-win32-ia32-msvc/-/core-win32-ia32-msvc-1.3.56.tgz", + "integrity": "sha512-mplp0zbYDrcHtfvkniXlXdB04e2qIjz2Gq/XHKr4Rnc6xVORJjjXF91IemXKpavx2oZYJws+LNJL7UFQ8jyCdQ==", "cpu": [ "ia32" ], @@ -1157,9 +1411,9 @@ } }, "node_modules/@swc/core-win32-x64-msvc": { - "version": "1.3.60", - "resolved": "https://registry.npmjs.org/@swc/core-win32-x64-msvc/-/core-win32-x64-msvc-1.3.60.tgz", - "integrity": "sha512-ouw+s22i9PYQpSE7Xc+ZittEyA87jElXABesviSpP+jgHt10sM5KFUpVAeV8DRlxJCXMJJ5AhOdCf4TAtFr+6A==", + "version": "1.3.56", + "resolved": "https://registry.npmjs.org/@swc/core-win32-x64-msvc/-/core-win32-x64-msvc-1.3.56.tgz", + "integrity": "sha512-zp8MBnrw/bjdLenO/ifYzHrImSjKunqL0C2IF4LXYNRfcbYFh2NwobsVQMZ20IT0474lKRdlP8Oxdt+bHuXrzA==", "cpu": [ "x64" ], @@ -1190,6 +1444,15 @@ "integrity": "sha512-OvjF+z51L3ov0OyAU0duzsYuvO01PH7x4t6DJx+guahgTnBHkhJdG7soQeTSFLWN3efnHyibZ4Z8l2EuWwJN3A==", "dev": true }, + "node_modules/@tootallnate/once": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-2.0.0.tgz", + "integrity": "sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==", + "dev": true, + "engines": { + "node": ">= 10" + } + }, "node_modules/@tsconfig/node10": { "version": "1.0.9", "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.9.tgz", @@ -1275,12 +1538,40 @@ "@types/node": "*" } }, + "node_modules/@types/linkify-it": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/linkify-it/-/linkify-it-3.0.2.tgz", + "integrity": "sha512-HZQYqbiFVWufzCwexrvh694SOim8z2d+xJl5UNamcvQFejLY/2YUtzXHYi3cHdI7PMlS8ejH2slRAOJQ32aNbA==", + "dev": true + }, "node_modules/@types/lodash": { "version": "4.14.194", "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.194.tgz", "integrity": "sha512-r22s9tAS7imvBt2lyHC9B8AGwWnXaYb1tY09oyLkXDs4vArpYJzw09nj8MLx5VfciBPGIb+ZwG0ssYnEPJxn/g==", "dev": true }, + "node_modules/@types/long": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/@types/long/-/long-4.0.2.tgz", + "integrity": "sha512-MqTGEo5bj5t157U6fA/BiDynNkn0YknVdh48CMPkTSpFTVmvao5UQmm7uEF6xBEo7qIMAlY/JSleYaE6VOdpaA==", + "dev": true + }, + "node_modules/@types/markdown-it": { + "version": "12.2.3", + "resolved": "https://registry.npmjs.org/@types/markdown-it/-/markdown-it-12.2.3.tgz", + "integrity": "sha512-GKMHFfv3458yYy+v/N8gjufHO6MSZKCOXpZc5GXIWWy8uldwfmPn98vp81gZ5f9SVw8YYBctgfJ22a2d7AOMeQ==", + "dev": true, + "dependencies": { + "@types/linkify-it": "*", + "@types/mdurl": "*" + } + }, + "node_modules/@types/mdurl": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@types/mdurl/-/mdurl-1.0.2.tgz", + "integrity": "sha512-eC4U9MlIcu2q0KQmXszyn5Akca/0jrQmwDRgpAMJai7qBWq4amIQhZyNau4VYGtCeALvW1/NtjzJJ567aZxfKA==", + "dev": true + }, "node_modules/@types/minimatch": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-5.1.2.tgz", @@ -1300,9 +1591,9 @@ "dev": true }, "node_modules/@types/node": { - "version": "20.2.3", - "resolved": "https://registry.npmjs.org/@types/node/-/node-20.2.3.tgz", - "integrity": "sha512-pg9d0yC4rVNWQzX8U7xb4olIOFuuVL9za3bzMT2pu2SU0SNEi66i2qrvhE2qt0HvkhuCaWJu7pLNOt/Pj8BIrw==", + "version": "20.2.4", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.2.4.tgz", + "integrity": "sha512-ni5f8Xlf4PwnT/Z3f0HURc3ZSw8UyrqMqmM3L5ysa7VjHu8c3FOmIo1nKCcLrV/OAmtf3N4kFna/aJqxsfEtnA==", "dev": true }, "node_modules/@types/normalize-package-data": { @@ -1326,10 +1617,26 @@ "@types/node": "*" } }, + "node_modules/@types/rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-F3OznnSLAUxFrCEu/L5PY8+ny8DtcFRjx7fZZ9bycvXRi3KPTRS9HOitGZwvPg0juRhXFWIeKX58cnX5YqLohQ==", + "dev": true, + "dependencies": { + "@types/glob": "*", + "@types/node": "*" + } + }, "node_modules/@types/semver": { - "version": "7.5.0", - "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.5.0.tgz", - "integrity": "sha512-G8hZ6XJiHnuhQKR7ZmysCeJWE08o8T0AXtk5darsCaTVsYZhhgUrq53jizaR2FvsoeCwJhlmwTjkXBY5Pn/ZHw==", + "version": "7.3.13", + "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.3.13.tgz", + "integrity": "sha512-21cFJr9z3g5dW8B0CVI9g2O9beqaThGQ6ZFBqHfwhzLDKUxaqTIy3vnfah/UPkfOiF2pLq+tGz+W8RyCskuslw==", + "dev": true + }, + "node_modules/@types/triple-beam": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/@types/triple-beam/-/triple-beam-1.3.2.tgz", + "integrity": "sha512-txGIh+0eDFzKGC25zORnswy+br1Ha7hj5cMVwKIU7+s0U2AxxJru/jZSMU6OC9MJWP6+pc/hc6ZjyZShpsyY2g==", "dev": true }, "node_modules/@types/yargs": { @@ -1348,15 +1655,15 @@ "dev": true }, "node_modules/@typescript-eslint/eslint-plugin": { - "version": "5.59.7", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.59.7.tgz", - "integrity": "sha512-BL+jYxUFIbuYwy+4fF86k5vdT9lT0CNJ6HtwrIvGh0PhH8s0yy5rjaKH2fDCrz5ITHy07WCzVGNvAmjJh4IJFA==", + "version": "5.59.2", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.59.2.tgz", + "integrity": "sha512-yVrXupeHjRxLDcPKL10sGQ/QlVrA8J5IYOEWVqk0lJaSZP7X5DfnP7Ns3cc74/blmbipQ1htFNVGsHX6wsYm0A==", "dev": true, "dependencies": { "@eslint-community/regexpp": "^4.4.0", - "@typescript-eslint/scope-manager": "5.59.7", - "@typescript-eslint/type-utils": "5.59.7", - "@typescript-eslint/utils": "5.59.7", + "@typescript-eslint/scope-manager": "5.59.2", + "@typescript-eslint/type-utils": "5.59.2", + "@typescript-eslint/utils": "5.59.2", "debug": "^4.3.4", "grapheme-splitter": "^1.0.4", "ignore": "^5.2.0", @@ -1381,6 +1688,65 @@ } } }, + "node_modules/@typescript-eslint/eslint-plugin/node_modules/@typescript-eslint/scope-manager": { + "version": "5.59.2", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.59.2.tgz", + "integrity": "sha512-dB1v7ROySwQWKqQ8rEWcdbTsFjh2G0vn8KUyvTXdPoyzSL6lLGkiXEV5CvpJsEe9xIdKV+8Zqb7wif2issoOFA==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "5.59.2", + "@typescript-eslint/visitor-keys": "5.59.2" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/eslint-plugin/node_modules/@typescript-eslint/types": { + "version": "5.59.2", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.59.2.tgz", + "integrity": "sha512-LbJ/HqoVs2XTGq5shkiKaNTuVv5tTejdHgfdjqRUGdYhjW1crm/M7og2jhVskMt8/4wS3T1+PfFvL1K3wqYj4w==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/eslint-plugin/node_modules/@typescript-eslint/visitor-keys": { + "version": "5.59.2", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.59.2.tgz", + "integrity": "sha512-EEpsO8m3RASrKAHI9jpavNv9NlEUebV4qmF1OWxSTtKSFBpC1NCmWazDQHFivRf0O1DV11BA645yrLEVQ0/Lig==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "5.59.2", + "eslint-visitor-keys": "^3.3.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/eslint-plugin/node_modules/eslint-visitor-keys": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.0.tgz", + "integrity": "sha512-HPpKPUBQcAsZOsHAFwTtIKcYlCje62XB7SEAcxjtmW6TD1WVpkS6i6/hOVtTZIl4zGj/mBqpFVGvaDneik+VoQ==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, "node_modules/@typescript-eslint/eslint-plugin/node_modules/lru-cache": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", @@ -1415,14 +1781,14 @@ "dev": true }, "node_modules/@typescript-eslint/parser": { - "version": "5.59.7", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.59.7.tgz", - "integrity": "sha512-VhpsIEuq/8i5SF+mPg9jSdIwgMBBp0z9XqjiEay+81PYLJuroN+ET1hM5IhkiYMJd9MkTz8iJLt7aaGAgzWUbQ==", + "version": "5.59.2", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.59.2.tgz", + "integrity": "sha512-uq0sKyw6ao1iFOZZGk9F8Nro/8+gfB5ezl1cA06SrqbgJAt0SRoFhb9pXaHvkrxUpZaoLxt8KlovHNk8Gp6/HQ==", "dev": true, "dependencies": { - "@typescript-eslint/scope-manager": "5.59.7", - "@typescript-eslint/types": "5.59.7", - "@typescript-eslint/typescript-estree": "5.59.7", + "@typescript-eslint/scope-manager": "5.59.2", + "@typescript-eslint/types": "5.59.2", + "@typescript-eslint/typescript-estree": "5.59.2", "debug": "^4.3.4" }, "engines": { @@ -1441,14 +1807,71 @@ } } }, - "node_modules/@typescript-eslint/scope-manager": { - "version": "5.59.7", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.59.7.tgz", - "integrity": "sha512-FL6hkYWK9zBGdxT2wWEd2W8ocXMu3K94i3gvMrjXpx+koFYdYV7KprKfirpgY34vTGzEPPuKoERpP8kD5h7vZQ==", + "node_modules/@typescript-eslint/parser/node_modules/@typescript-eslint/scope-manager": { + "version": "5.59.2", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.59.2.tgz", + "integrity": "sha512-dB1v7ROySwQWKqQ8rEWcdbTsFjh2G0vn8KUyvTXdPoyzSL6lLGkiXEV5CvpJsEe9xIdKV+8Zqb7wif2issoOFA==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "5.59.2", + "@typescript-eslint/visitor-keys": "5.59.2" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/parser/node_modules/@typescript-eslint/types": { + "version": "5.59.2", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.59.2.tgz", + "integrity": "sha512-LbJ/HqoVs2XTGq5shkiKaNTuVv5tTejdHgfdjqRUGdYhjW1crm/M7og2jhVskMt8/4wS3T1+PfFvL1K3wqYj4w==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/parser/node_modules/@typescript-eslint/typescript-estree": { + "version": "5.59.2", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.59.2.tgz", + "integrity": "sha512-+j4SmbwVmZsQ9jEyBMgpuBD0rKwi9RxRpjX71Brr73RsYnEr3Lt5QZ624Bxphp8HUkSKfqGnPJp1kA5nl0Sh7Q==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "5.59.2", + "@typescript-eslint/visitor-keys": "5.59.2", + "debug": "^4.3.4", + "globby": "^11.1.0", + "is-glob": "^4.0.3", + "semver": "^7.3.7", + "tsutils": "^3.21.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/parser/node_modules/@typescript-eslint/visitor-keys": { + "version": "5.59.2", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.59.2.tgz", + "integrity": "sha512-EEpsO8m3RASrKAHI9jpavNv9NlEUebV4qmF1OWxSTtKSFBpC1NCmWazDQHFivRf0O1DV11BA645yrLEVQ0/Lig==", "dev": true, "dependencies": { - "@typescript-eslint/types": "5.59.7", - "@typescript-eslint/visitor-keys": "5.59.7" + "@typescript-eslint/types": "5.59.2", + "eslint-visitor-keys": "^3.3.0" }, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" @@ -1458,14 +1881,59 @@ "url": "https://opencollective.com/typescript-eslint" } }, + "node_modules/@typescript-eslint/parser/node_modules/eslint-visitor-keys": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.0.tgz", + "integrity": "sha512-HPpKPUBQcAsZOsHAFwTtIKcYlCje62XB7SEAcxjtmW6TD1WVpkS6i6/hOVtTZIl4zGj/mBqpFVGvaDneik+VoQ==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/@typescript-eslint/parser/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@typescript-eslint/parser/node_modules/semver": { + "version": "7.5.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.0.tgz", + "integrity": "sha512-+XC0AD/R7Q2mPSRuy2Id0+CGTZ98+8f+KvwirxOKIEyid+XSx6HbC63p+O4IndTHuX5Z+JxQ0TghCkO5Cg/2HA==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@typescript-eslint/parser/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, "node_modules/@typescript-eslint/type-utils": { - "version": "5.59.7", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.59.7.tgz", - "integrity": "sha512-ozuz/GILuYG7osdY5O5yg0QxXUAEoI4Go3Do5xeu+ERH9PorHBPSdvD3Tjp2NN2bNLh1NJQSsQu2TPu/Ly+HaQ==", + "version": "5.59.2", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.59.2.tgz", + "integrity": "sha512-b1LS2phBOsEy/T381bxkkywfQXkV1dWda/z0PhnIy3bC5+rQWQDS7fk9CSpcXBccPY27Z6vBEuaPBCKCgYezyQ==", "dev": true, "dependencies": { - "@typescript-eslint/typescript-estree": "5.59.7", - "@typescript-eslint/utils": "5.59.7", + "@typescript-eslint/typescript-estree": "5.59.2", + "@typescript-eslint/utils": "5.59.2", "debug": "^4.3.4", "tsutils": "^3.21.0" }, @@ -1485,10 +1953,10 @@ } } }, - "node_modules/@typescript-eslint/types": { - "version": "5.59.7", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.59.7.tgz", - "integrity": "sha512-UnVS2MRRg6p7xOSATscWkKjlf/NDKuqo5TdbWck6rIRZbmKpVNTLALzNvcjIfHBE7736kZOFc/4Z3VcZwuOM/A==", + "node_modules/@typescript-eslint/type-utils/node_modules/@typescript-eslint/types": { + "version": "5.59.2", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.59.2.tgz", + "integrity": "sha512-LbJ/HqoVs2XTGq5shkiKaNTuVv5tTejdHgfdjqRUGdYhjW1crm/M7og2jhVskMt8/4wS3T1+PfFvL1K3wqYj4w==", "dev": true, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" @@ -1498,14 +1966,14 @@ "url": "https://opencollective.com/typescript-eslint" } }, - "node_modules/@typescript-eslint/typescript-estree": { - "version": "5.59.7", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.59.7.tgz", - "integrity": "sha512-4A1NtZ1I3wMN2UGDkU9HMBL+TIQfbrh4uS0WDMMpf3xMRursDbqEf1ahh6vAAe3mObt8k3ZATnezwG4pdtWuUQ==", + "node_modules/@typescript-eslint/type-utils/node_modules/@typescript-eslint/typescript-estree": { + "version": "5.59.2", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.59.2.tgz", + "integrity": "sha512-+j4SmbwVmZsQ9jEyBMgpuBD0rKwi9RxRpjX71Brr73RsYnEr3Lt5QZ624Bxphp8HUkSKfqGnPJp1kA5nl0Sh7Q==", "dev": true, "dependencies": { - "@typescript-eslint/types": "5.59.7", - "@typescript-eslint/visitor-keys": "5.59.7", + "@typescript-eslint/types": "5.59.2", + "@typescript-eslint/visitor-keys": "5.59.2", "debug": "^4.3.4", "globby": "^11.1.0", "is-glob": "^4.0.3", @@ -1525,7 +1993,36 @@ } } }, - "node_modules/@typescript-eslint/typescript-estree/node_modules/lru-cache": { + "node_modules/@typescript-eslint/type-utils/node_modules/@typescript-eslint/visitor-keys": { + "version": "5.59.2", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.59.2.tgz", + "integrity": "sha512-EEpsO8m3RASrKAHI9jpavNv9NlEUebV4qmF1OWxSTtKSFBpC1NCmWazDQHFivRf0O1DV11BA645yrLEVQ0/Lig==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "5.59.2", + "eslint-visitor-keys": "^3.3.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/type-utils/node_modules/eslint-visitor-keys": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.0.tgz", + "integrity": "sha512-HPpKPUBQcAsZOsHAFwTtIKcYlCje62XB7SEAcxjtmW6TD1WVpkS6i6/hOVtTZIl4zGj/mBqpFVGvaDneik+VoQ==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/@typescript-eslint/type-utils/node_modules/lru-cache": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", @@ -1537,10 +2034,10 @@ "node": ">=10" } }, - "node_modules/@typescript-eslint/typescript-estree/node_modules/semver": { - "version": "7.5.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.1.tgz", - "integrity": "sha512-Wvss5ivl8TMRZXXESstBA4uR5iXgEN/VC5/sOcuXdVLzcdkz4HWetIoRfG5gb5X+ij/G9rw9YoGn3QoQ8OCSpw==", + "node_modules/@typescript-eslint/type-utils/node_modules/semver": { + "version": "7.5.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.0.tgz", + "integrity": "sha512-+XC0AD/R7Q2mPSRuy2Id0+CGTZ98+8f+KvwirxOKIEyid+XSx6HbC63p+O4IndTHuX5Z+JxQ0TghCkO5Cg/2HA==", "dev": true, "dependencies": { "lru-cache": "^6.0.0" @@ -1552,24 +2049,24 @@ "node": ">=10" } }, - "node_modules/@typescript-eslint/typescript-estree/node_modules/yallist": { + "node_modules/@typescript-eslint/type-utils/node_modules/yallist": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", "dev": true }, "node_modules/@typescript-eslint/utils": { - "version": "5.59.7", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.59.7.tgz", - "integrity": "sha512-yCX9WpdQKaLufz5luG4aJbOpdXf/fjwGMcLFXZVPUz3QqLirG5QcwwnIHNf8cjLjxK4qtzTO8udUtMQSAToQnQ==", + "version": "5.59.2", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.59.2.tgz", + "integrity": "sha512-kSuF6/77TZzyGPhGO4uVp+f0SBoYxCDf+lW3GKhtKru/L8k/Hd7NFQxyWUeY7Z/KGB2C6Fe3yf2vVi4V9TsCSQ==", "dev": true, "dependencies": { "@eslint-community/eslint-utils": "^4.2.0", "@types/json-schema": "^7.0.9", "@types/semver": "^7.3.12", - "@typescript-eslint/scope-manager": "5.59.7", - "@typescript-eslint/types": "5.59.7", - "@typescript-eslint/typescript-estree": "5.59.7", + "@typescript-eslint/scope-manager": "5.59.2", + "@typescript-eslint/types": "5.59.2", + "@typescript-eslint/typescript-estree": "5.59.2", "eslint-scope": "^5.1.1", "semver": "^7.3.7" }, @@ -1584,6 +2081,92 @@ "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" } }, + "node_modules/@typescript-eslint/utils/node_modules/@typescript-eslint/scope-manager": { + "version": "5.59.2", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.59.2.tgz", + "integrity": "sha512-dB1v7ROySwQWKqQ8rEWcdbTsFjh2G0vn8KUyvTXdPoyzSL6lLGkiXEV5CvpJsEe9xIdKV+8Zqb7wif2issoOFA==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "5.59.2", + "@typescript-eslint/visitor-keys": "5.59.2" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/utils/node_modules/@typescript-eslint/types": { + "version": "5.59.2", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.59.2.tgz", + "integrity": "sha512-LbJ/HqoVs2XTGq5shkiKaNTuVv5tTejdHgfdjqRUGdYhjW1crm/M7og2jhVskMt8/4wS3T1+PfFvL1K3wqYj4w==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/utils/node_modules/@typescript-eslint/typescript-estree": { + "version": "5.59.2", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.59.2.tgz", + "integrity": "sha512-+j4SmbwVmZsQ9jEyBMgpuBD0rKwi9RxRpjX71Brr73RsYnEr3Lt5QZ624Bxphp8HUkSKfqGnPJp1kA5nl0Sh7Q==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "5.59.2", + "@typescript-eslint/visitor-keys": "5.59.2", + "debug": "^4.3.4", + "globby": "^11.1.0", + "is-glob": "^4.0.3", + "semver": "^7.3.7", + "tsutils": "^3.21.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/utils/node_modules/@typescript-eslint/visitor-keys": { + "version": "5.59.2", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.59.2.tgz", + "integrity": "sha512-EEpsO8m3RASrKAHI9jpavNv9NlEUebV4qmF1OWxSTtKSFBpC1NCmWazDQHFivRf0O1DV11BA645yrLEVQ0/Lig==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "5.59.2", + "eslint-visitor-keys": "^3.3.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/utils/node_modules/eslint-visitor-keys": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.0.tgz", + "integrity": "sha512-HPpKPUBQcAsZOsHAFwTtIKcYlCje62XB7SEAcxjtmW6TD1WVpkS6i6/hOVtTZIl4zGj/mBqpFVGvaDneik+VoQ==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, "node_modules/@typescript-eslint/utils/node_modules/lru-cache": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", @@ -1597,9 +2180,9 @@ } }, "node_modules/@typescript-eslint/utils/node_modules/semver": { - "version": "7.5.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.1.tgz", - "integrity": "sha512-Wvss5ivl8TMRZXXESstBA4uR5iXgEN/VC5/sOcuXdVLzcdkz4HWetIoRfG5gb5X+ij/G9rw9YoGn3QoQ8OCSpw==", + "version": "7.5.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.0.tgz", + "integrity": "sha512-+XC0AD/R7Q2mPSRuy2Id0+CGTZ98+8f+KvwirxOKIEyid+XSx6HbC63p+O4IndTHuX5Z+JxQ0TghCkO5Cg/2HA==", "dev": true, "dependencies": { "lru-cache": "^6.0.0" @@ -1617,33 +2200,16 @@ "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", "dev": true }, - "node_modules/@typescript-eslint/visitor-keys": { - "version": "5.59.7", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.59.7.tgz", - "integrity": "sha512-tyN+X2jvMslUszIiYbF0ZleP+RqQsFVpGrKI6e0Eet1w8WmhsAtmzaqm8oM8WJQ1ysLwhnsK/4hYHJjOgJVfQQ==", + "node_modules/abort-controller": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz", + "integrity": "sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==", "dev": true, "dependencies": { - "@typescript-eslint/types": "5.59.7", - "eslint-visitor-keys": "^3.3.0" + "event-target-shim": "^5.0.0" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@typescript-eslint/visitor-keys/node_modules/eslint-visitor-keys": { - "version": "3.4.1", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.1.tgz", - "integrity": "sha512-pZnmmLwYzf+kWaM/Qgrvpen51upAktaaiI01nsJD/Yr3lMOdNtq0cxkrrg16w64VtisN6okbs7Q8AfGqj4c9fA==", - "dev": true, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" + "node": ">=6.5" } }, "node_modules/acorn": { @@ -1676,6 +2242,18 @@ "node": ">=0.4.0" } }, + "node_modules/agent-base": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", + "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", + "dev": true, + "dependencies": { + "debug": "4" + }, + "engines": { + "node": ">= 6.0.0" + } + }, "node_modules/aggregate-error": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", @@ -1931,6 +2509,12 @@ "node": ">=8" } }, + "node_modules/async": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/async/-/async-3.2.4.tgz", + "integrity": "sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ==", + "dev": true + }, "node_modules/available-typed-arrays": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz", @@ -2046,6 +2630,15 @@ "node": ">=0.6" } }, + "node_modules/bignumber.js": { + "version": "9.1.1", + "resolved": "https://registry.npmjs.org/bignumber.js/-/bignumber.js-9.1.1.tgz", + "integrity": "sha512-pHm4LsMJ6lzgNGVfZHjMoO8sdoRhOzOH4MLmY65Jg70bpxCKu5iOHNJyfF6OyvYw7t8Fpf35RuzUyqnQsj8Vig==", + "dev": true, + "engines": { + "node": "*" + } + }, "node_modules/bin-check": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/bin-check/-/bin-check-4.1.0.tgz", @@ -2204,6 +2797,12 @@ "readable-stream": "^3.4.0" } }, + "node_modules/bluebird": { + "version": "3.7.2", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", + "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==", + "dev": true + }, "node_modules/bplist-parser": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/bplist-parser/-/bplist-parser-0.2.0.tgz", @@ -2297,6 +2896,12 @@ "ieee754": "^1.2.1" } }, + "node_modules/buffer-equal-constant-time": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz", + "integrity": "sha512-zRpUiDwd/xk6ADqPMATG8vc9VPrkck7T07OIx0gnjmJAnHnTVXNQG3vfvWNuiZIkwu9KrKdA1iJKfsfTVxE6NA==", + "dev": true + }, "node_modules/builtin-modules": { "version": "3.3.0", "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.3.0.tgz", @@ -2599,6 +3204,18 @@ ], "peer": true }, + "node_modules/catharsis": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/catharsis/-/catharsis-0.9.0.tgz", + "integrity": "sha512-prMTQVpcns/tzFgFVkVp6ak6RykZyWb3gu8ckUpd6YkTlacOd3DXGJjIpD4Q6zJirizvaiAjSSHlOsA+6sNh2A==", + "dev": true, + "dependencies": { + "lodash": "^4.17.15" + }, + "engines": { + "node": ">= 10" + } + }, "node_modules/chalk": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.2.0.tgz", @@ -2830,6 +3447,16 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/color": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/color/-/color-3.2.1.tgz", + "integrity": "sha512-aBl7dZI9ENN6fUGC7mWpMTPNHmWUSNan9tuWN6ahh5ZLNk9baLJOnSMlrQkHcrfFgz2/RigjUVAjdx36VcemKA==", + "dev": true, + "dependencies": { + "color-convert": "^1.9.3", + "color-string": "^1.6.0" + } + }, "node_modules/color-convert": { "version": "1.9.3", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", @@ -2845,12 +3472,32 @@ "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", "dev": true }, + "node_modules/color-string": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/color-string/-/color-string-1.9.1.tgz", + "integrity": "sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==", + "dev": true, + "dependencies": { + "color-name": "^1.0.0", + "simple-swizzle": "^0.2.2" + } + }, "node_modules/colorette": { "version": "2.0.20", "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.20.tgz", "integrity": "sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==", "dev": true }, + "node_modules/colorspace": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/colorspace/-/colorspace-1.1.4.tgz", + "integrity": "sha512-BgvKJiuVu1igBUF2kEjRCZXol6wiiGbY5ipL/oVPwm0BL9sIpMIzM8IK7vwuxIIzOXMV3Ey5w+vxhm0rR/TN8w==", + "dev": true, + "dependencies": { + "color": "^3.1.3", + "text-hex": "1.0.x" + } + }, "node_modules/commander": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", @@ -3296,12 +3943,54 @@ "node": ">=6.0.0" } }, + "node_modules/dot-prop": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-6.0.1.tgz", + "integrity": "sha512-tE7ztYzXHIeyvc7N+hR3oi7FIbf/NIjVP9hmAt3yMXzrQ072/fpjGLx2GxNxGxUl5V73MEqYzioOMoVhGMJ5cA==", + "dev": true, + "dependencies": { + "is-obj": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/duplexify": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-4.1.2.tgz", + "integrity": "sha512-fz3OjcNCHmRP12MJoZMPglx8m4rrFP8rovnk4vT8Fs+aonZoCwGg10dSsQsfP/E62eZcPTMSMP6686fu9Qlqtw==", + "dev": true, + "dependencies": { + "end-of-stream": "^1.4.1", + "inherits": "^2.0.3", + "readable-stream": "^3.1.1", + "stream-shift": "^1.0.0" + } + }, "node_modules/eastasianwidth": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", "dev": true }, + "node_modules/ecdsa-sig-formatter": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz", + "integrity": "sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==", + "dev": true, + "dependencies": { + "safe-buffer": "^5.0.1" + } + }, + "node_modules/ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==", + "dev": true + }, "node_modules/electron-to-chromium": { "version": "1.4.371", "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.371.tgz", @@ -3315,6 +4004,12 @@ "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", "dev": true }, + "node_modules/enabled": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/enabled/-/enabled-2.0.0.tgz", + "integrity": "sha512-AKrN98kuwOzMIdAizXGI86UFBoo26CL21UM763y1h/GMSJ4/OHU9k2YlsmBpyScFo/wbLzWQJBMCW4+IO3/+OQ==", + "dev": true + }, "node_modules/end-of-stream": { "version": "1.4.4", "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", @@ -3337,6 +4032,21 @@ "node": ">=10.13.0" } }, + "node_modules/ent": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/ent/-/ent-2.2.0.tgz", + "integrity": "sha512-GHrMyVZQWvTIdDtpiEXdHZnFQKzeO09apj8Cbl4pKWy4i0Oprcq17usfDt5aO63swf0JOeMWjWQE/LzgSRuWpA==", + "dev": true + }, + "node_modules/entities": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-2.1.0.tgz", + "integrity": "sha512-hCx1oky9PFrJ611mf0ifBLBRW8lUUVRlFolb5gWRfIELabBlbp9xZvrqZLZAs+NxFnbfQoeGd8wDkygjg7U85w==", + "dev": true, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, "node_modules/error-ex": { "version": "1.3.2", "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", @@ -3509,6 +4219,89 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/escodegen": { + "version": "1.14.3", + "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.14.3.tgz", + "integrity": "sha512-qFcX0XJkdg+PB3xjZZG/wKSuT1PnQWx57+TVSjIMmILd2yC/6ByYElPwJnslDsuWuSAp4AwJGumarAAmJch5Kw==", + "dev": true, + "dependencies": { + "esprima": "^4.0.1", + "estraverse": "^4.2.0", + "esutils": "^2.0.2", + "optionator": "^0.8.1" + }, + "bin": { + "escodegen": "bin/escodegen.js", + "esgenerate": "bin/esgenerate.js" + }, + "engines": { + "node": ">=4.0" + }, + "optionalDependencies": { + "source-map": "~0.6.1" + } + }, + "node_modules/escodegen/node_modules/levn": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", + "integrity": "sha512-0OO4y2iOHix2W6ujICbKIaEQXvFQHue65vUG3pb5EUomzPI90z9hsA1VsO/dbIIpC53J8gxM9Q4Oho0jrCM/yA==", + "dev": true, + "dependencies": { + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/escodegen/node_modules/optionator": { + "version": "0.8.3", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz", + "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==", + "dev": true, + "dependencies": { + "deep-is": "~0.1.3", + "fast-levenshtein": "~2.0.6", + "levn": "~0.3.0", + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2", + "word-wrap": "~1.2.3" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/escodegen/node_modules/prelude-ls": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", + "integrity": "sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w==", + "dev": true, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/escodegen/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "optional": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/escodegen/node_modules/type-check": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", + "integrity": "sha512-ZCmOJdvOWDBYJlzAoFkC+Q0+bUyEOS1ltgp1MGU03fqHG+dbi9tBFU2Rd9QKiDZFAYrhPh2JUf7rZRIuHRKtOg==", + "dev": true, + "dependencies": { + "prelude-ls": "~1.1.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, "node_modules/eslint": { "version": "8.41.0", "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.41.0.tgz", @@ -4307,6 +5100,19 @@ "url": "https://opencollective.com/eslint" } }, + "node_modules/esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "dev": true, + "bin": { + "esparse": "bin/esparse.js", + "esvalidate": "bin/esvalidate.js" + }, + "engines": { + "node": ">=4" + } + }, "node_modules/esquery": { "version": "1.5.0", "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.5.0.tgz", @@ -4377,6 +5183,36 @@ "es5-ext": "~0.10.14" } }, + "node_modules/event-target-shim": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/event-target-shim/-/event-target-shim-5.0.1.tgz", + "integrity": "sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/eventid": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/eventid/-/eventid-2.0.1.tgz", + "integrity": "sha512-sPNTqiMokAvV048P2c9+foqVJzk49o6d4e0D/sq5jog3pw+4kBgyR0gaM1FM7Mx6Kzd9dztesh9oYz1LWWOpzw==", + "dev": true, + "dependencies": { + "uuid": "^8.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/eventid/node_modules/uuid": { + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", + "dev": true, + "bin": { + "uuid": "dist/bin/uuid" + } + }, "node_modules/execa": { "version": "0.7.0", "resolved": "https://registry.npmjs.org/execa/-/execa-0.7.0.tgz", @@ -4507,6 +5343,12 @@ "integrity": "sha512-dzlvlNlt6AXU7EBSfpAscydQ7gXB+pPGsPnfJnZpiNJBDj7IaJzQlBZYGdEi4R9HmPdBv2XmWJ6YUtoTa7lmCw==", "dev": true }, + "node_modules/extend": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", + "dev": true + }, "node_modules/fast-deep-equal": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", @@ -4559,6 +5401,12 @@ "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", "dev": true }, + "node_modules/fast-text-encoding": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/fast-text-encoding/-/fast-text-encoding-1.0.6.tgz", + "integrity": "sha512-VhXlQgj9ioXCqGstD37E/HBeqEGV/qOD/kmbVG8h5xKBYvM1L3lR1Zn4555cQ8GkYbJa8aJSipLPndE1k6zK2w==", + "dev": true + }, "node_modules/fastq": { "version": "1.15.0", "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.15.0.tgz", @@ -4582,6 +5430,12 @@ } } }, + "node_modules/fecha": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/fecha/-/fecha-4.2.3.tgz", + "integrity": "sha512-OP2IUU6HeYKJi3i0z4A19kHMQoLVs4Hc+DPqqxI2h/DPZHTm/vjsfC6P0b4jCMy14XizLBqvndQ+UilD7707Jw==", + "dev": true + }, "node_modules/file-entry-cache": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", @@ -4711,6 +5565,12 @@ "integrity": "sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==", "dev": true }, + "node_modules/fn.name": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/fn.name/-/fn.name-1.1.0.tgz", + "integrity": "sha512-GRnmB5gPyJpAhTQdSZTSp9uaPSvl09KoYcMQtsB9rQoOmzs9dH6ffeccH+Z+cv6P68Hu5bC6JjRh4Ah/mHSNRw==", + "dev": true + }, "node_modules/for-each": { "version": "0.3.3", "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", @@ -4733,6 +5593,20 @@ "node": ">=8.0.0" } }, + "node_modules/fs-extra": { + "version": "11.1.1", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.1.1.tgz", + "integrity": "sha512-MGIE4HOvQCeUCzmlHs0vXpih4ysz4wg9qiSAu6cd42lVwPbTM1TjV7RusoyQqMmk/95gdQZX72u+YW+c3eEpFQ==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=14.14" + } + }, "node_modules/fs.realpath": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", @@ -4786,6 +5660,47 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/gaxios": { + "version": "4.3.3", + "resolved": "https://registry.npmjs.org/gaxios/-/gaxios-4.3.3.tgz", + "integrity": "sha512-gSaYYIO1Y3wUtdfHmjDUZ8LWaxJQpiavzbF5Kq53akSzvmVg0RfyOcFDbO1KJ/KCGRFz2qG+lS81F0nkr7cRJA==", + "dev": true, + "dependencies": { + "abort-controller": "^3.0.0", + "extend": "^3.0.2", + "https-proxy-agent": "^5.0.0", + "is-stream": "^2.0.0", + "node-fetch": "^2.6.7" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/gaxios/node_modules/is-stream": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/gcp-metadata": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/gcp-metadata/-/gcp-metadata-4.3.1.tgz", + "integrity": "sha512-x850LS5N7V1F3UcV7PoupzGsyD6iVwTVvsh3tbXfkctZnBnjW5yu5z1/3k3SehF7TyoTIe78rJs02GMMy+LF+A==", + "dev": true, + "dependencies": { + "gaxios": "^4.0.0", + "json-bigint": "^1.0.0" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/gensync": { "version": "1.0.0-beta.2", "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", @@ -4969,6 +5884,138 @@ "integrity": "sha512-uHJgbwAMwNFf5mLst7IWLNg14x1CkeqglJb/K3doi4dw6q2IvAAmM/Y81kevy83wP+Sst+nutFTYOGg3d1lsxg==", "dev": true }, + "node_modules/google-auth-library": { + "version": "8.8.0", + "resolved": "https://registry.npmjs.org/google-auth-library/-/google-auth-library-8.8.0.tgz", + "integrity": "sha512-0iJn7IDqObDG5Tu9Tn2WemmJ31ksEa96IyK0J0OZCpTh6CrC6FrattwKX87h3qKVuprCJpdOGKc1Xi8V0kMh8Q==", + "dev": true, + "dependencies": { + "arrify": "^2.0.0", + "base64-js": "^1.3.0", + "ecdsa-sig-formatter": "^1.0.11", + "fast-text-encoding": "^1.0.0", + "gaxios": "^5.0.0", + "gcp-metadata": "^5.2.0", + "gtoken": "^6.1.0", + "jws": "^4.0.0", + "lru-cache": "^6.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/google-auth-library/node_modules/arrify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/arrify/-/arrify-2.0.1.tgz", + "integrity": "sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/google-auth-library/node_modules/gaxios": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/gaxios/-/gaxios-5.1.0.tgz", + "integrity": "sha512-aezGIjb+/VfsJtIcHGcBSerNEDdfdHeMros+RbYbGpmonKWQCOVOes0LVZhn1lDtIgq55qq0HaxymIoae3Fl/A==", + "dev": true, + "dependencies": { + "extend": "^3.0.2", + "https-proxy-agent": "^5.0.0", + "is-stream": "^2.0.0", + "node-fetch": "^2.6.7" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/google-auth-library/node_modules/gcp-metadata": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/gcp-metadata/-/gcp-metadata-5.2.0.tgz", + "integrity": "sha512-aFhhvvNycky2QyhG+dcfEdHBF0FRbYcf39s6WNHUDysKSrbJ5vuFbjydxBcmewtXeV248GP8dWT3ByPNxsyHCw==", + "dev": true, + "dependencies": { + "gaxios": "^5.0.0", + "json-bigint": "^1.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/google-auth-library/node_modules/is-stream": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/google-auth-library/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/google-auth-library/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, + "node_modules/google-gax": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/google-gax/-/google-gax-3.6.0.tgz", + "integrity": "sha512-2fyb61vWxUonHiArRNJQmE4tx5oY1ni8VPo08fzII409vDSCWG7apDX4qNOQ2GXXT82gLBn3d3P1Dydh7pWjyw==", + "dev": true, + "dependencies": { + "@grpc/grpc-js": "~1.8.0", + "@grpc/proto-loader": "^0.7.0", + "@types/long": "^4.0.0", + "@types/rimraf": "^3.0.2", + "abort-controller": "^3.0.0", + "duplexify": "^4.0.0", + "fast-text-encoding": "^1.0.3", + "google-auth-library": "^8.0.2", + "is-stream-ended": "^0.1.4", + "node-fetch": "^2.6.1", + "object-hash": "^3.0.0", + "proto3-json-serializer": "^1.0.0", + "protobufjs": "7.2.3", + "protobufjs-cli": "1.1.1", + "retry-request": "^5.0.0" + }, + "bin": { + "compileProtos": "build/tools/compileProtos.js", + "minifyProtoJson": "build/tools/minify.js" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/google-p12-pem": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/google-p12-pem/-/google-p12-pem-4.0.1.tgz", + "integrity": "sha512-WPkN4yGtz05WZ5EhtlxNDWPhC4JIic6G8ePitwUWy4l+XPVYec+a0j0Ts47PDtW59y3RwAhUd9/h9ZZ63px6RQ==", + "dev": true, + "dependencies": { + "node-forge": "^1.3.1" + }, + "bin": { + "gp12-pem": "build/src/bin/gp12-pem.js" + }, + "engines": { + "node": ">=12.0.0" + } + }, "node_modules/gopd": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", @@ -5024,6 +6071,47 @@ "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", "dev": true }, + "node_modules/gtoken": { + "version": "6.1.2", + "resolved": "https://registry.npmjs.org/gtoken/-/gtoken-6.1.2.tgz", + "integrity": "sha512-4ccGpzz7YAr7lxrT2neugmXQ3hP9ho2gcaityLVkiUecAiwiy60Ii8gRbZeOsXV19fYaRjgBSshs8kXw+NKCPQ==", + "dev": true, + "dependencies": { + "gaxios": "^5.0.1", + "google-p12-pem": "^4.0.0", + "jws": "^4.0.0" + }, + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/gtoken/node_modules/gaxios": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/gaxios/-/gaxios-5.1.0.tgz", + "integrity": "sha512-aezGIjb+/VfsJtIcHGcBSerNEDdfdHeMros+RbYbGpmonKWQCOVOes0LVZhn1lDtIgq55qq0HaxymIoae3Fl/A==", + "dev": true, + "dependencies": { + "extend": "^3.0.2", + "https-proxy-agent": "^5.0.0", + "is-stream": "^2.0.0", + "node-fetch": "^2.6.7" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/gtoken/node_modules/is-stream": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/hard-rejection": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/hard-rejection/-/hard-rejection-2.1.0.tgz", @@ -5156,6 +6244,20 @@ "integrity": "sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==", "dev": true }, + "node_modules/http-proxy-agent": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz", + "integrity": "sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==", + "dev": true, + "dependencies": { + "@tootallnate/once": "2", + "agent-base": "6", + "debug": "4" + }, + "engines": { + "node": ">= 6" + } + }, "node_modules/http2-wrapper": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/http2-wrapper/-/http2-wrapper-1.0.3.tgz", @@ -5169,6 +6271,19 @@ "node": ">=10.19.0" } }, + "node_modules/https-proxy-agent": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", + "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", + "dev": true, + "dependencies": { + "agent-base": "6", + "debug": "4" + }, + "engines": { + "node": ">= 6" + } + }, "node_modules/human-signals": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", @@ -5514,6 +6629,15 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/is-obj": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz", + "integrity": "sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==", + "dev": true, + "engines": { + "node": ">=8" + } + }, "node_modules/is-path-inside": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", @@ -5575,6 +6699,12 @@ "node": ">=0.10.0" } }, + "node_modules/is-stream-ended": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-stream-ended/-/is-stream-ended-0.1.4.tgz", + "integrity": "sha512-xj0XPvmr7bQFTvirqnFr50o0hQIh6ZItDqloxt5aJrR4NQsYeSsyFQERYGCAzfindAcnKjINnwEEgLx4IqVzQw==", + "dev": true + }, "node_modules/is-string": { "version": "1.0.7", "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", @@ -5729,10 +6859,48 @@ "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", "dev": true, "dependencies": { - "argparse": "^2.0.1" + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/js2xmlparser": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/js2xmlparser/-/js2xmlparser-4.0.2.tgz", + "integrity": "sha512-6n4D8gLlLf1n5mNLQPRfViYzu9RATblzPEtm1SthMX1Pjao0r9YI9nw7ZIfRxQMERS87mcswrg+r/OYrPRX6jA==", + "dev": true, + "dependencies": { + "xmlcreate": "^2.0.4" + } + }, + "node_modules/jsdoc": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/jsdoc/-/jsdoc-4.0.2.tgz", + "integrity": "sha512-e8cIg2z62InH7azBBi3EsSEqrKx+nUtAS5bBcYTSpZFA+vhNPyhv8PTFZ0WsjOPDj04/dOLlm08EDcQJDqaGQg==", + "dev": true, + "dependencies": { + "@babel/parser": "^7.20.15", + "@jsdoc/salty": "^0.2.1", + "@types/markdown-it": "^12.2.3", + "bluebird": "^3.7.2", + "catharsis": "^0.9.0", + "escape-string-regexp": "^2.0.0", + "js2xmlparser": "^4.0.2", + "klaw": "^3.0.0", + "markdown-it": "^12.3.2", + "markdown-it-anchor": "^8.4.1", + "marked": "^4.0.10", + "mkdirp": "^1.0.4", + "requizzle": "^0.2.3", + "strip-json-comments": "^3.1.0", + "underscore": "~1.13.2" }, "bin": { - "js-yaml": "bin/js-yaml.js" + "jsdoc": "jsdoc.js" + }, + "engines": { + "node": ">=12.0.0" } }, "node_modules/jsdoc-type-pratt-parser": { @@ -5744,6 +6912,24 @@ "node": ">=12.0.0" } }, + "node_modules/jsdoc/node_modules/escape-string-regexp": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz", + "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/jsdoc/node_modules/klaw": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/klaw/-/klaw-3.0.0.tgz", + "integrity": "sha512-0Fo5oir+O9jnXu5EefYbVK+mHMBeEVEy2cmctR1O1NECcCkPRreJKrS6Qt/j3KC2C148Dfo9i3pCmCMsdqGr0g==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.1.9" + } + }, "node_modules/jsesc": { "version": "2.5.2", "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", @@ -5757,6 +6943,15 @@ "node": ">=4" } }, + "node_modules/json-bigint": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-bigint/-/json-bigint-1.0.0.tgz", + "integrity": "sha512-SiPv/8VpZuWbvLSMtTDU8hEfrZWg/mH/nV/b4o0CYbSxu1UIQPLdwKOCIyLQX+VIPO5vrLX3i8qtqFyhdPSUSQ==", + "dev": true, + "dependencies": { + "bignumber.js": "^9.0.0" + } + }, "node_modules/json-buffer": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", @@ -5842,6 +7037,18 @@ "node": ">=6" } }, + "node_modules/jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "dev": true, + "dependencies": { + "universalify": "^2.0.0" + }, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, "node_modules/jsonpointer": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/jsonpointer/-/jsonpointer-5.0.1.tgz", @@ -5851,6 +7058,27 @@ "node": ">=0.10.0" } }, + "node_modules/jwa": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/jwa/-/jwa-2.0.0.tgz", + "integrity": "sha512-jrZ2Qx916EA+fq9cEAeCROWPTfCwi1IVHqT2tapuqLEVVDKFDENFw1oL+MwrTvH6msKxsd1YTDVw6uKEcsrLEA==", + "dev": true, + "dependencies": { + "buffer-equal-constant-time": "1.0.1", + "ecdsa-sig-formatter": "1.0.11", + "safe-buffer": "^5.0.1" + } + }, + "node_modules/jws": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/jws/-/jws-4.0.0.tgz", + "integrity": "sha512-KDncfTmOZoOMTFG4mBlG0qUIOlc03fmzH+ru6RgYVZhPkyiy/92Owlt/8UEN+a4TXR1FQetfIpJE8ApdvdVxTg==", + "dev": true, + "dependencies": { + "jwa": "^2.0.0", + "safe-buffer": "^5.0.1" + } + }, "node_modules/keyv": { "version": "4.5.2", "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.2.tgz", @@ -5869,6 +7097,21 @@ "node": ">=0.10.0" } }, + "node_modules/klaw": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/klaw/-/klaw-4.1.0.tgz", + "integrity": "sha512-1zGZ9MF9H22UnkpVeuaGKOjfA2t6WrfdrJmGjy16ykcjnKQDmHVX+KI477rpbGevz/5FD4MC3xf1oxylBgcaQw==", + "dev": true, + "engines": { + "node": ">=14.14.0" + } + }, + "node_modules/kuler": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/kuler/-/kuler-2.0.0.tgz", + "integrity": "sha512-Xq9nH7KlWZmXAtodXDDRE7vs6DU1gTU8zYDHDiWLSip45Egwq3plLHzPn27NgvzL2r1LMPC1vdqh98sQxtqj4A==", + "dev": true + }, "node_modules/leven": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", @@ -5906,6 +7149,15 @@ "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", "dev": true }, + "node_modules/linkify-it": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/linkify-it/-/linkify-it-3.0.3.tgz", + "integrity": "sha512-ynTsyrFSdE5oZ/O9GEf00kPngmOfVwazR5GKDq6EYfhlpFug3J2zybX56a2PRRpc9P+FuSoGNAwjlbDs9jJBPQ==", + "dev": true, + "dependencies": { + "uc.micro": "^1.0.1" + } + }, "node_modules/lint-staged": { "version": "13.2.2", "resolved": "https://registry.npmjs.org/lint-staged/-/lint-staged-13.2.2.tgz", @@ -6207,6 +7459,18 @@ "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", "dev": true }, + "node_modules/lodash.camelcase": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz", + "integrity": "sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA==", + "dev": true + }, + "node_modules/lodash.mapvalues": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/lodash.mapvalues/-/lodash.mapvalues-4.6.0.tgz", + "integrity": "sha512-JPFqXFeZQ7BfS00H58kClY7SPVeHertPE0lNuCyZ26/XlN8TvakYD7b9bGyNmXbT/D3BbtPAAmq90gPWqLkxlQ==", + "dev": true + }, "node_modules/lodash.merge": { "version": "4.6.2", "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", @@ -6389,6 +7653,26 @@ "node": ">=8" } }, + "node_modules/logform": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/logform/-/logform-2.5.1.tgz", + "integrity": "sha512-9FyqAm9o9NKKfiAKfZoYo9bGXXuwMkxQiQttkT4YjjVtQVIQtK6LmVtlxmCaFswo6N4AfEkHqZTV0taDtPotNg==", + "dev": true, + "dependencies": { + "@colors/colors": "1.5.0", + "@types/triple-beam": "^1.3.2", + "fecha": "^4.2.0", + "ms": "^2.1.1", + "safe-stable-stringify": "^2.3.1", + "triple-beam": "^1.3.0" + } + }, + "node_modules/long": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/long/-/long-4.0.0.tgz", + "integrity": "sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA==", + "dev": true + }, "node_modules/lowercase-keys": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz", @@ -6450,6 +7734,50 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/markdown-it": { + "version": "12.3.2", + "resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-12.3.2.tgz", + "integrity": "sha512-TchMembfxfNVpHkbtriWltGWc+m3xszaRD0CZup7GFFhzIgQqxIfn3eGj1yZpfuflzPvfkt611B2Q/Bsk1YnGg==", + "dev": true, + "dependencies": { + "argparse": "^2.0.1", + "entities": "~2.1.0", + "linkify-it": "^3.0.1", + "mdurl": "^1.0.1", + "uc.micro": "^1.0.5" + }, + "bin": { + "markdown-it": "bin/markdown-it.js" + } + }, + "node_modules/markdown-it-anchor": { + "version": "8.6.7", + "resolved": "https://registry.npmjs.org/markdown-it-anchor/-/markdown-it-anchor-8.6.7.tgz", + "integrity": "sha512-FlCHFwNnutLgVTflOYHPW2pPcl2AACqVzExlkGQNsi4CJgqOHN7YTgDd4LuhgN1BFO3TS0vLAruV1Td6dwWPJA==", + "dev": true, + "peerDependencies": { + "@types/markdown-it": "*", + "markdown-it": "*" + } + }, + "node_modules/marked": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/marked/-/marked-4.3.0.tgz", + "integrity": "sha512-PRsaiG84bK+AMvxziE/lCFss8juXjNaWzVbN5tXAm4XjeaS9NAHhop+PjQxz2A9h8Q4M/xGmzP8vqNwy6JeK0A==", + "dev": true, + "bin": { + "marked": "bin/marked.js" + }, + "engines": { + "node": ">= 12" + } + }, + "node_modules/mdurl": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/mdurl/-/mdurl-1.0.1.tgz", + "integrity": "sha512-/sKlQJCBYVY9Ers9hqzKou4H6V5UWc/M59TH2dvkt+84itfnq7uFOMLpOiOS4ujvHP4etln18fmIxA5R5fll0g==", + "dev": true + }, "node_modules/memoizee": { "version": "0.4.15", "resolved": "https://registry.npmjs.org/memoizee/-/memoizee-0.4.15.tgz", @@ -7053,6 +8381,35 @@ "integrity": "sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ==", "dev": true }, + "node_modules/node-fetch": { + "version": "2.6.11", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.11.tgz", + "integrity": "sha512-4I6pdBY1EthSqDmJkiNk3JIT8cswwR9nfeW/cPdUagJYEQG7R95WRH74wpz7ma8Gh/9dI9FP+OU+0E4FvtA55w==", + "dev": true, + "dependencies": { + "whatwg-url": "^5.0.0" + }, + "engines": { + "node": "4.x || >=6.0.0" + }, + "peerDependencies": { + "encoding": "^0.1.0" + }, + "peerDependenciesMeta": { + "encoding": { + "optional": true + } + } + }, + "node_modules/node-forge": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-1.3.1.tgz", + "integrity": "sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA==", + "dev": true, + "engines": { + "node": ">= 6.13.0" + } + }, "node_modules/node-releases": { "version": "2.0.10", "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.10.tgz", @@ -7159,6 +8516,15 @@ "node": ">=0.10.0" } }, + "node_modules/object-hash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-3.0.0.tgz", + "integrity": "sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==", + "dev": true, + "engines": { + "node": ">= 6" + } + }, "node_modules/object-inspect": { "version": "1.12.3", "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.3.tgz", @@ -7212,6 +8578,18 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/on-finished": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", + "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", + "dev": true, + "dependencies": { + "ee-first": "1.1.1" + }, + "engines": { + "node": ">= 0.8" + } + }, "node_modules/once": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", @@ -7221,6 +8599,15 @@ "wrappy": "1" } }, + "node_modules/one-time": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/one-time/-/one-time-1.0.0.tgz", + "integrity": "sha512-5DXOiRKwuSEcQ/l0kGCF6Q3jcADFv5tSmRaJck/OqkVFcOzutB134KRSfF0xDrL39MNnqxbHBbUUcjZIhTgb2g==", + "dev": true, + "dependencies": { + "fn.name": "1.x.x" + } + }, "node_modules/onetime": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", @@ -7323,9 +8710,9 @@ } }, "node_modules/ora": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/ora/-/ora-6.3.1.tgz", - "integrity": "sha512-ERAyNnZOfqM+Ao3RAvIXkYh5joP220yf59gVe2X/cI6SiCxIdi4c9HZKZD8R6q/RDXEje1THBju6iExiSsgJaQ==", + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/ora/-/ora-6.3.0.tgz", + "integrity": "sha512-1/D8uRFY0ay2kgBpmAwmSA404w4OoPVhHMqRqtjvrcK/dnzcEZxMJ+V4DUbyICu8IIVRclHcOf5wlD1tMY4GUQ==", "dev": true, "dependencies": { "chalk": "^5.0.0", @@ -7600,90 +8987,291 @@ "url": "https://github.com/sponsors/Borewit" } }, - "node_modules/picocolors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", - "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", - "dev": true + "node_modules/picocolors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", + "dev": true + }, + "node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true, + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/pidtree": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/pidtree/-/pidtree-0.6.0.tgz", + "integrity": "sha512-eG2dWTVw5bzqGRztnHExczNxt5VGsE6OwTeCG3fdUf9KBsZzO3R5OIIIzWR+iZA0NtZ+RDVdaoE2dK1cn6jH4g==", + "dev": true, + "bin": { + "pidtree": "bin/pidtree.js" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/pluralize": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/pluralize/-/pluralize-8.0.0.tgz", + "integrity": "sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/prelude-ls": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", + "dev": true, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/prettier": { + "version": "2.8.8", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.8.tgz", + "integrity": "sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==", + "dev": true, + "bin": { + "prettier": "bin-prettier.js" + }, + "engines": { + "node": ">=10.13.0" + }, + "funding": { + "url": "https://github.com/prettier/prettier?sponsor=1" + } + }, + "node_modules/prettier-linter-helpers": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz", + "integrity": "sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==", + "dev": true, + "dependencies": { + "fast-diff": "^1.1.2" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/proto3-json-serializer": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/proto3-json-serializer/-/proto3-json-serializer-1.1.1.tgz", + "integrity": "sha512-AwAuY4g9nxx0u52DnSMkqqgyLHaW/XaPLtaAo3y/ZCfeaQB/g4YDH4kb8Wc/mWzWvu0YjOznVnfn373MVZZrgw==", + "dev": true, + "dependencies": { + "protobufjs": "^7.0.0" + }, + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/protobufjs": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-7.2.3.tgz", + "integrity": "sha512-TtpvOqwB5Gdz/PQmOjgsrGH1nHjAQVCN7JG4A6r1sXRWESL5rNMAiRcBQlCAdKxZcAbstExQePYG8xof/JVRgg==", + "dev": true, + "hasInstallScript": true, + "dependencies": { + "@protobufjs/aspromise": "^1.1.2", + "@protobufjs/base64": "^1.1.2", + "@protobufjs/codegen": "^2.0.4", + "@protobufjs/eventemitter": "^1.1.0", + "@protobufjs/fetch": "^1.1.0", + "@protobufjs/float": "^1.0.2", + "@protobufjs/inquire": "^1.1.0", + "@protobufjs/path": "^1.1.2", + "@protobufjs/pool": "^1.1.0", + "@protobufjs/utf8": "^1.1.0", + "@types/node": ">=13.7.0", + "long": "^5.0.0" + }, + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/protobufjs-cli": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/protobufjs-cli/-/protobufjs-cli-1.1.1.tgz", + "integrity": "sha512-VPWMgIcRNyQwWUv8OLPyGQ/0lQY/QTQAVN5fh+XzfDwsVw1FZ2L3DM/bcBf8WPiRz2tNpaov9lPZfNcmNo6LXA==", + "dev": true, + "dependencies": { + "chalk": "^4.0.0", + "escodegen": "^1.13.0", + "espree": "^9.0.0", + "estraverse": "^5.1.0", + "glob": "^8.0.0", + "jsdoc": "^4.0.0", + "minimist": "^1.2.0", + "semver": "^7.1.2", + "tmp": "^0.2.1", + "uglify-js": "^3.7.7" + }, + "bin": { + "pbjs": "bin/pbjs", + "pbts": "bin/pbts" + }, + "engines": { + "node": ">=12.0.0" + }, + "peerDependencies": { + "protobufjs": "^7.0.0" + } + }, + "node_modules/protobufjs-cli/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/protobufjs-cli/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0" + } }, - "node_modules/picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "node_modules/protobufjs-cli/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, "engines": { - "node": ">=8.6" + "node": ">=10" }, "funding": { - "url": "https://github.com/sponsors/jonschlinkert" + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/pidtree": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/pidtree/-/pidtree-0.6.0.tgz", - "integrity": "sha512-eG2dWTVw5bzqGRztnHExczNxt5VGsE6OwTeCG3fdUf9KBsZzO3R5OIIIzWR+iZA0NtZ+RDVdaoE2dK1cn6jH4g==", + "node_modules/protobufjs-cli/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, - "bin": { - "pidtree": "bin/pidtree.js" + "dependencies": { + "color-name": "~1.1.4" }, "engines": { - "node": ">=0.10" + "node": ">=7.0.0" } }, - "node_modules/pify": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", + "node_modules/protobufjs-cli/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/protobufjs-cli/node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", "dev": true, "engines": { - "node": ">=0.10.0" + "node": ">=4.0" } }, - "node_modules/pluralize": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/pluralize/-/pluralize-8.0.0.tgz", - "integrity": "sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA==", + "node_modules/protobufjs-cli/node_modules/glob": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz", + "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^5.0.1", + "once": "^1.3.0" + }, "engines": { - "node": ">=4" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/prelude-ls": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", - "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", + "node_modules/protobufjs-cli/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, "engines": { - "node": ">= 0.8.0" + "node": ">=10" } }, - "node_modules/prettier": { - "version": "2.8.8", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.8.tgz", - "integrity": "sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==", + "node_modules/protobufjs-cli/node_modules/minimatch": { + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", + "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", "dev": true, - "bin": { - "prettier": "bin-prettier.js" + "dependencies": { + "brace-expansion": "^2.0.1" }, "engines": { - "node": ">=10.13.0" - }, - "funding": { - "url": "https://github.com/prettier/prettier?sponsor=1" + "node": ">=10" } }, - "node_modules/prettier-linter-helpers": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz", - "integrity": "sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==", + "node_modules/protobufjs-cli/node_modules/semver": { + "version": "7.5.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.1.tgz", + "integrity": "sha512-Wvss5ivl8TMRZXXESstBA4uR5iXgEN/VC5/sOcuXdVLzcdkz4HWetIoRfG5gb5X+ij/G9rw9YoGn3QoQ8OCSpw==", "dev": true, "dependencies": { - "fast-diff": "^1.1.2" + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" }, "engines": { - "node": ">=6.0.0" + "node": ">=10" } }, + "node_modules/protobufjs-cli/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, + "node_modules/protobufjs/node_modules/long": { + "version": "5.2.3", + "resolved": "https://registry.npmjs.org/long/-/long-5.2.3.tgz", + "integrity": "sha512-lcHwpNoggQTObv5apGNCTdJrO69eHOZMi4BNC+rTLER8iHAqGrUVeLh/irVIM7zTw2bOXA8T6uNPeujwOLg/2Q==", + "dev": true + }, "node_modules/pseudomap": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", @@ -7700,6 +9288,17 @@ "once": "^1.3.1" } }, + "node_modules/pumpify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pumpify/-/pumpify-2.0.1.tgz", + "integrity": "sha512-m7KOje7jZxrmutanlkS1daj1dS6z6BgslzOXmcSEpIlCxM3VJH7lG5QLeck/6hgF6F4crFf01UtQmNsJfweTAw==", + "dev": true, + "dependencies": { + "duplexify": "^4.1.1", + "inherits": "^2.0.3", + "pump": "^3.0.0" + } + }, "node_modules/punycode": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz", @@ -8041,6 +9640,15 @@ "node": ">=0.10.0" } }, + "node_modules/requizzle": { + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/requizzle/-/requizzle-0.2.4.tgz", + "integrity": "sha512-JRrFk1D4OQ4SqovXOgdav+K8EAhSB/LJZqCz8tbX0KObcdeM15Ss59ozWMBWmmINMagCwmqn4ZNryUGpBsl6Jw==", + "dev": true, + "dependencies": { + "lodash": "^4.17.21" + } + }, "node_modules/resolve": { "version": "1.22.2", "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.2.tgz", @@ -8098,6 +9706,19 @@ "node": ">=8" } }, + "node_modules/retry-request": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/retry-request/-/retry-request-5.0.2.tgz", + "integrity": "sha512-wfI3pk7EE80lCIXprqh7ym48IHYdwmAAzESdbU8Q9l7pnRCk9LEhpbOTNKjz6FARLm/Bl5m+4F0ABxOkYUujSQ==", + "dev": true, + "dependencies": { + "debug": "^4.1.1", + "extend": "^3.0.2" + }, + "engines": { + "node": ">=12" + } + }, "node_modules/reusify": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", @@ -8278,6 +9899,15 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/safe-stable-stringify": { + "version": "2.4.3", + "resolved": "https://registry.npmjs.org/safe-stable-stringify/-/safe-stable-stringify-2.4.3.tgz", + "integrity": "sha512-e2bDA2WJT0wxseVd4lsDP4+3ONX6HpMXQa1ZhFQ7SU+GjvORCmShbCMltrtIDfkYhVHrOcPtj+KhmDBdPdZD1g==", + "dev": true, + "engines": { + "node": ">=10" + } + }, "node_modules/semver": { "version": "6.3.0", "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", @@ -8361,6 +9991,21 @@ "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", "dev": true }, + "node_modules/simple-swizzle": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.2.tgz", + "integrity": "sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==", + "dev": true, + "dependencies": { + "is-arrayish": "^0.3.1" + } + }, + "node_modules/simple-swizzle/node_modules/is-arrayish": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.3.2.tgz", + "integrity": "sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==", + "dev": true + }, "node_modules/slash": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", @@ -8451,6 +10096,15 @@ "integrity": "sha512-XkD+zwiqXHikFZm4AX/7JSCXA98U5Db4AFd5XUg/+9UNtnH75+Z9KxtpYiJZx36mUDVOwH83pl7yvCer6ewM3w==", "dev": true }, + "node_modules/stack-trace": { + "version": "0.0.10", + "resolved": "https://registry.npmjs.org/stack-trace/-/stack-trace-0.0.10.tgz", + "integrity": "sha512-KGzahc7puUKkzyMt+IqAep+TVNbKP+k2Lmwhub39m1AsTSkaDutx56aDCo+HLDzf/D26BIHTJWNiTG1KAJiQCg==", + "dev": true, + "engines": { + "node": "*" + } + }, "node_modules/stdin-discarder": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/stdin-discarder/-/stdin-discarder-0.1.0.tgz", @@ -8466,6 +10120,21 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/stream-events": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/stream-events/-/stream-events-1.0.5.tgz", + "integrity": "sha512-E1GUzBSgvct8Jsb3v2X15pjzN1tYebtbLaMg+eBOUOAxgbLoSbT2NS91ckc5lJD1KfLjId+jXJRgo0qnV5Nerg==", + "dev": true, + "dependencies": { + "stubs": "^3.0.0" + } + }, + "node_modules/stream-shift": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.1.tgz", + "integrity": "sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ==", + "dev": true + }, "node_modules/string_decoder": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", @@ -8665,6 +10334,12 @@ "url": "https://github.com/sponsors/Borewit" } }, + "node_modules/stubs": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/stubs/-/stubs-3.0.0.tgz", + "integrity": "sha512-PdHt7hHUJKxvTCgbKX9C1V/ftOcjJQgz8BZwNfV5c4B6dcGqlpelTbJ999jBGZ2jYiPAwcX5dP6oBwVlBlUbxw==", + "dev": true + }, "node_modules/supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", @@ -8714,6 +10389,22 @@ "node": ">=6" } }, + "node_modules/teeny-request": { + "version": "8.0.3", + "resolved": "https://registry.npmjs.org/teeny-request/-/teeny-request-8.0.3.tgz", + "integrity": "sha512-jJZpA5He2y52yUhA7pyAGZlgQpcB+xLjcN0eUFxr9c8hP/H7uOXbBNVo/O0C/xVfJLJs680jvkFgVJEEvk9+ww==", + "dev": true, + "dependencies": { + "http-proxy-agent": "^5.0.0", + "https-proxy-agent": "^5.0.0", + "node-fetch": "^2.6.1", + "stream-events": "^1.0.5", + "uuid": "^9.0.0" + }, + "engines": { + "node": ">=12" + } + }, "node_modules/temp-dir": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/temp-dir/-/temp-dir-2.0.0.tgz", @@ -8779,6 +10470,12 @@ "node": ">=8" } }, + "node_modules/text-hex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/text-hex/-/text-hex-1.0.0.tgz", + "integrity": "sha512-uuVGNWzgJ4yhRaNSiubPY7OjISw4sw4E5Uv0wbjp+OzcbmVU/rsT8ujgcXJhn9ypzsgr5vlzpPqP+MBBKcGvbg==", + "dev": true + }, "node_modules/text-table": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", @@ -8844,6 +10541,18 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/tmp": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.1.tgz", + "integrity": "sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ==", + "dev": true, + "dependencies": { + "rimraf": "^3.0.0" + }, + "engines": { + "node": ">=8.17.0" + } + }, "node_modules/to-fast-properties": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", @@ -8883,6 +10592,12 @@ "url": "https://github.com/sponsors/Borewit" } }, + "node_modules/tr46": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", + "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==", + "dev": true + }, "node_modules/trim-newlines": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-4.1.1.tgz", @@ -8919,6 +10634,12 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/triple-beam": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/triple-beam/-/triple-beam-1.3.0.tgz", + "integrity": "sha512-XrHUvV5HpdLmIj4uVMxHggLbFSZYIn7HEWsqePZcI50pco+MPqJ50wMGY794X7AOOhxOBAjbkqfAbEe/QMp2Lw==", + "dev": true + }, "node_modules/ts-node": { "version": "10.9.1", "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.9.1.tgz", @@ -9079,6 +10800,43 @@ "node": ">=12.20" } }, + "node_modules/ua-parser-js": { + "version": "1.0.35", + "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-1.0.35.tgz", + "integrity": "sha512-fKnGuqmTBnIE+/KXSzCn4db8RTigUzw1AN0DmdU6hJovUTbYJKyqj+8Mt1c4VfRDnOVJnENmfYkIPZ946UrSAA==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/ua-parser-js" + }, + { + "type": "paypal", + "url": "https://paypal.me/faisalman" + } + ], + "engines": { + "node": "*" + } + }, + "node_modules/uc.micro": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/uc.micro/-/uc.micro-1.0.6.tgz", + "integrity": "sha512-8Y75pvTYkLJW2hWQHXxoqRgV7qb9B+9vFEtidML+7koHUFapnVJAZ6cKs+Qjz5Aw3aZWHMC6u0wJE3At+nSGwA==", + "dev": true + }, + "node_modules/uglify-js": { + "version": "3.17.4", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.17.4.tgz", + "integrity": "sha512-T9q82TJI9e/C1TAxYvfb16xO120tMVFZrGA3f9/P4424DNu6ypK103y0GPFVa17yotwSyZW5iYXgjYHkGrJW/g==", + "dev": true, + "bin": { + "uglifyjs": "bin/uglifyjs" + }, + "engines": { + "node": ">=0.8.0" + } + }, "node_modules/unbox-primitive": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz", @@ -9094,6 +10852,12 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/underscore": { + "version": "1.13.6", + "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.13.6.tgz", + "integrity": "sha512-+A5Sja4HP1M08MaXya7p5LvjuM7K6q/2EaC0+iovj/wOcMsTzMvDFbasi/oSapiwOlt252IqsKqPjCl7huKS0A==", + "dev": true + }, "node_modules/unique-string": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-3.0.0.tgz", @@ -9109,6 +10873,15 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/universalify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", + "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", + "dev": true, + "engines": { + "node": ">= 10.0.0" + } + }, "node_modules/untildify": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/untildify/-/untildify-4.0.0.tgz", @@ -9164,6 +10937,15 @@ "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", "dev": true }, + "node_modules/uuid": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.0.tgz", + "integrity": "sha512-MXcSTerfPa4uqyzStbRoTgt5XIe3x5+42+q1sDuy3R5MDk66URdLMOZe5aPX/SQd+kuYAh0FdP/pO28IkQyTeg==", + "dev": true, + "bin": { + "uuid": "dist/bin/uuid" + } + }, "node_modules/v8-compile-cache-lib": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz", @@ -9204,11 +10986,27 @@ } }, "node_modules/web-specs": { - "version": "2.59.0", - "resolved": "https://registry.npmjs.org/web-specs/-/web-specs-2.59.0.tgz", - "integrity": "sha512-948poJr8AuAbLHENk1Ilvg9Kgb0LVLglKRgMVGvQqtO6ocNGi5yU50YggZl0THTDO0BvcFsXar/WCv43PUmXaQ==", + "version": "2.56.0", + "resolved": "https://registry.npmjs.org/web-specs/-/web-specs-2.56.0.tgz", + "integrity": "sha512-Msz7LPpUq5KaRHMvXCWZCDEBVI1OqmlfQj0JJq+PZemgeS44KzQZEHSZ6e5wAMMNNCymRIHbO3rSyOdoJPNIBQ==", + "dev": true + }, + "node_modules/webidl-conversions": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", + "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==", "dev": true }, + "node_modules/whatwg-url": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", + "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", + "dev": true, + "dependencies": { + "tr46": "~0.0.3", + "webidl-conversions": "^3.0.0" + } + }, "node_modules/which": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", @@ -9260,6 +11058,54 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/winston": { + "version": "3.8.2", + "resolved": "https://registry.npmjs.org/winston/-/winston-3.8.2.tgz", + "integrity": "sha512-MsE1gRx1m5jdTTO9Ld/vND4krP2To+lgDoMEHGGa4HIlAUyXJtfc7CxQcGXVyz2IBpw5hbFkj2b/AtUdQwyRew==", + "dev": true, + "dependencies": { + "@colors/colors": "1.5.0", + "@dabh/diagnostics": "^2.0.2", + "async": "^3.2.3", + "is-stream": "^2.0.0", + "logform": "^2.4.0", + "one-time": "^1.0.0", + "readable-stream": "^3.4.0", + "safe-stable-stringify": "^2.3.1", + "stack-trace": "0.0.x", + "triple-beam": "^1.3.0", + "winston-transport": "^4.5.0" + }, + "engines": { + "node": ">= 12.0.0" + } + }, + "node_modules/winston-transport": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/winston-transport/-/winston-transport-4.5.0.tgz", + "integrity": "sha512-YpZzcUzBedhlTAfJg6vJDlyEai/IFMIVcaEZZyl3UXIl4gmqRpU7AE89AHLkbzLUsv0NVmw7ts+iztqKxxPW1Q==", + "dev": true, + "dependencies": { + "logform": "^2.3.2", + "readable-stream": "^3.6.0", + "triple-beam": "^1.3.0" + }, + "engines": { + "node": ">= 6.4.0" + } + }, + "node_modules/winston/node_modules/is-stream": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/word-wrap": { "version": "1.2.3", "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", @@ -9360,6 +11206,12 @@ "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", "dev": true }, + "node_modules/xmlcreate": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/xmlcreate/-/xmlcreate-2.0.4.tgz", + "integrity": "sha512-nquOebG4sngPmGPICTS5EnxqhKbCmz5Ox5hsszI2T6U5qdrJizBc+0ilYSEjTSzU0yZcmvppztXe/5Al5fUwdg==", + "dev": true + }, "node_modules/y18n": { "version": "5.0.8", "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", From 900b335810c83097f3b66bd5100d235892631da6 Mon Sep 17 00:00:00 2001 From: "Michael \"Z\" Goddard" Date: Thu, 25 May 2023 19:15:43 -0400 Subject: [PATCH 05/29] fixup! add update script from mdn-bcd-collector --- scripts/update.ts | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/scripts/update.ts b/scripts/update.ts index d3a133e92dff39..62d9403f9cc9ee 100644 --- a/scripts/update.ts +++ b/scripts/update.ts @@ -17,7 +17,7 @@ import { import esMain from 'es-main'; import fs from 'fs-extra'; import klaw from 'klaw'; -import { Minimatch } from 'minimatch'; +import minimatch from 'minimatch'; import yargs from 'yargs'; import { hideBin } from 'yargs/helpers'; @@ -62,6 +62,8 @@ export type Overrides = Array; export type InternalSupportStatement = SupportStatement | 'mirror'; +const { Minimatch } = minimatch; + const BASE_DIR = new URL('..', import.meta.url); const BCD_DIR = process.env.BCD_DIR @@ -696,7 +698,7 @@ if (esMain(import.meta)) { default: { browsers }, } = await import(`${BCD_DIR}/index.js`); const overrides = await fs.readJson( - new URL('custom/overrides.json', MDN_COLLECTOR_DIR), + path.join(MDN_COLLECTOR_DIR, 'custom/overrides.json'), ); const { argv }: { argv: any } = yargs(hideBin(process.argv)).command( From 05aba088b41cb257a98bbe73698914a160851a9d Mon Sep 17 00:00:00 2001 From: "Michael \"Z\" Goddard" Date: Thu, 25 May 2023 20:11:22 -0400 Subject: [PATCH 06/29] fixup! add update script from mdn-bcd-collector --- scripts/update.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/update.ts b/scripts/update.ts index 62d9403f9cc9ee..fe8e32a7bcae0c 100644 --- a/scripts/update.ts +++ b/scripts/update.ts @@ -613,9 +613,9 @@ export const update = ( return modified; }; -/* c8 ignore start */ // |paths| can be files or directories. Returns an object mapping // from (absolute) path to the parsed file content. +/* c8 ignore start */ export const loadJsonFiles = async ( paths: string[], ): Promise<{ [filename: string]: any }> => { From 5548e4d226c83a2cd2aaecccacd2e36e1726a7f9 Mon Sep 17 00:00:00 2001 From: "Michael \"Z\" Goddard" Date: Thu, 25 May 2023 20:12:22 -0400 Subject: [PATCH 07/29] fixup! copy libs used by update from mdn-bcd-collector --- utils/logger.ts | 10 +-------- utils/ua-parser.ts | 52 ++++++++++++++-------------------------------- 2 files changed, 17 insertions(+), 45 deletions(-) diff --git a/utils/logger.ts b/utils/logger.ts index cbfc985185ea03..9adf2fe22ab7d9 100644 --- a/utils/logger.ts +++ b/utils/logger.ts @@ -9,15 +9,7 @@ import winston from 'winston'; import { LoggingWinston } from '@google-cloud/logging-winston'; -type LogTransport = - | LoggingWinston - | winston.transports.ConsoleTransportInstance; - -/** - * Get a winston logging transport. - * @returns {LogTransport} winston logging transport - */ -const getTransport = (): LogTransport => { +const getTransport = () => { /* c8 ignore next 3 */ if (process.env.GOOGLE_APPLICATION_CREDENTIALS) { return new LoggingWinston(); diff --git a/utils/ua-parser.ts b/utils/ua-parser.ts index e5c6e996dceb16..58d601d6cd86d2 100644 --- a/utils/ua-parser.ts +++ b/utils/ua-parser.ts @@ -12,49 +12,29 @@ import { } from 'compare-versions'; import uaParser from 'ua-parser-js'; -import { Browsers } from '../types/types'; +const getMajorVersion = (version) => version.split('.')[0]; -interface UserAgentData { - browser: { - id: string; - name: string; - }; - version: string; - fullVersion: string; - os: { - name: string; - version: string; - }; - inBcd: boolean | undefined; -} - -/** - * Get major version of semver string. - * @param {string} version A semantic version - * @returns {string} Major version - */ -const getMajorVersion = (version: string) => version.split('.')[0]; - -/** - * Get major and minor verion of a semver string. - * @param {string} version A semantic version - * @returns {string} Major and minor version - */ -const getMajorMinorVersion = (version: string) => { +const getMajorMinorVersion = (version) => { const [major, minor] = version.split('.'); return `${major}.${minor || 0}`; }; -/** - * Parse user agent string. - * @param {string} userAgent A user agent - * @param {Browsers} browsers Record of browser ids to BrowserStatement - * @returns {UserAgentData} Parsed user agent - */ -const parseUA = (userAgent: string, browsers: Browsers) => { +const parseUA = (userAgent, browsers) => { const ua = uaParser(userAgent); - const data: UserAgentData = { + const data: { + browser: { + id: string; + name: string; + }; + version: string; + fullVersion: string; + os: { + name: string; + version: string; + }; + inBcd: boolean | undefined; + } = { browser: { id: '', name: '' }, version: '', fullVersion: '', From a598080737c1eaf86f981490444f9e5e124a9589 Mon Sep 17 00:00:00 2001 From: "Michael \"Z\" Goddard" Date: Thu, 25 May 2023 20:45:58 -0400 Subject: [PATCH 08/29] fixup! add update script from mdn-bcd-collector --- scripts/update.ts | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/scripts/update.ts b/scripts/update.ts index fe8e32a7bcae0c..0416bcb8a7400e 100644 --- a/scripts/update.ts +++ b/scripts/update.ts @@ -31,36 +31,36 @@ import { import logger from '../utils/logger.js'; import { parseUA } from '../utils/ua-parser.js'; -export type Exposure = 'Window' | 'Worker' | 'SharedWorker' | 'ServiceWorker'; +type Exposure = 'Window' | 'Worker' | 'SharedWorker' | 'ServiceWorker'; -export type TestResultValue = boolean | null; +type TestResultValue = boolean | null; -export interface TestResult { +interface TestResult { exposure: Exposure; name: string; result: TestResultValue; message?: string; } -export interface TestResults { +interface TestResults { [key: string]: TestResult[]; } -export interface Report { +interface Report { __version: string; results: TestResults; userAgent: string; } -export type BrowserSupportMap = Map; -export type SupportMap = Map; -export type SupportMatrix = Map; +type BrowserSupportMap = Map; +type SupportMap = Map; +type SupportMatrix = Map; type ManualOverride = [string, string, string, TestResultValue]; -export type Overrides = Array; +type Overrides = Array; -export type InternalSupportStatement = SupportStatement | 'mirror'; +type InternalSupportStatement = SupportStatement | 'mirror'; const { Minimatch } = minimatch; From 7f34348667f7a34cc03076df0cc35698689a7c65 Mon Sep 17 00:00:00 2001 From: "Michael \"Z\" Goddard" Date: Thu, 1 Jun 2023 11:37:22 -0400 Subject: [PATCH 09/29] fixup! add update script from mdn-bcd-collector --- scripts/update.ts | 9 ++------- 1 file changed, 2 insertions(+), 7 deletions(-) diff --git a/scripts/update.ts b/scripts/update.ts index 0416bcb8a7400e..9d667c01560db8 100644 --- a/scripts/update.ts +++ b/scripts/update.ts @@ -1,10 +1,5 @@ -// -// mdn-bcd-collector: scripts/update-bcd.ts -// Script to update the BCD data using collected results -// -// © Gooborg Studios, Google LLC -// See the LICENSE file for copyright details -// +/* This file is a part of @mdn/browser-compat-data + * See LICENSE file for more information. */ import assert from 'node:assert'; import path from 'node:path'; From e9f7ed80a875bd546f12d46f3236c2b42dbe19bb Mon Sep 17 00:00:00 2001 From: "Michael \"Z\" Goddard" Date: Thu, 1 Jun 2023 11:37:38 -0400 Subject: [PATCH 10/29] fixup! copy libs used by update from mdn-bcd-collector --- utils/logger.ts | 9 ++------- utils/ua-parser.ts | 9 ++------- 2 files changed, 4 insertions(+), 14 deletions(-) diff --git a/utils/logger.ts b/utils/logger.ts index 9adf2fe22ab7d9..bc50f7f70cbf8c 100644 --- a/utils/logger.ts +++ b/utils/logger.ts @@ -1,10 +1,5 @@ -// -// mdn-bcd-collector: lib/logger.ts -// Logging output module to log to either the console or GAE cloud -// -// © Gooborg Studios, Google LLC -// See the LICENSE file for copyright details -// +/* This file is a part of @mdn/browser-compat-data + * See LICENSE file for more information. */ import winston from 'winston'; import { LoggingWinston } from '@google-cloud/logging-winston'; diff --git a/utils/ua-parser.ts b/utils/ua-parser.ts index 58d601d6cd86d2..b3e15920dad039 100644 --- a/utils/ua-parser.ts +++ b/utils/ua-parser.ts @@ -1,10 +1,5 @@ -// -// mdn-bcd-collector: lib/ua-parser.ts -// Module to parse user agent strings and compare them with BCD browser data -// -// © Gooborg Studios, Google LLC -// See the LICENSE file for copyright details -// +/* This file is a part of @mdn/browser-compat-data + * See LICENSE file for more information. */ import { compare as compareVersions, From 4298b94af036d8ac09340da98faaea866de19f05 Mon Sep 17 00:00:00 2001 From: "Michael \"Z\" Goddard" Date: Thu, 1 Jun 2023 11:47:07 -0400 Subject: [PATCH 11/29] fixup! add update script from mdn-bcd-collector --- scripts/update.ts | 32 +++++++++++++++++--------------- 1 file changed, 17 insertions(+), 15 deletions(-) diff --git a/scripts/update.ts b/scripts/update.ts index 9d667c01560db8..7cfab7c0785db4 100644 --- a/scripts/update.ts +++ b/scripts/update.ts @@ -15,6 +15,7 @@ import klaw from 'klaw'; import minimatch from 'minimatch'; import yargs from 'yargs'; import { hideBin } from 'yargs/helpers'; +import chalk from 'chalk-template'; import { Browsers, @@ -23,7 +24,6 @@ import { Identifier, SupportStatement, } from '../types/types.js'; -import logger from '../utils/logger.js'; import { parseUA } from '../utils/ua-parser.js'; type Exposure = 'Window' | 'Worker' | 'SharedWorker' | 'ServiceWorker'; @@ -180,15 +180,17 @@ export const getSupportMatrix = ( const { browser, version, inBcd } = parseUA(report.userAgent, browsers); if (!inBcd) { if (inBcd === false) { - logger.warn( - `Ignoring unknown ${browser.name} version ${version} (${report.userAgent})`, + console.warn( + chalk`{yellow warn}: Ignoring unknown ${browser.name} version ${version} (${report.userAgent})`, ); } else if (browser.name) { - logger.warn( - `Ignoring unknown browser ${browser.name} ${version} (${report.userAgent})`, + console.warn( + chalk`{yellow warn}: Ignoring unknown browser ${browser.name} ${version} (${report.userAgent})`, ); } else { - logger.warn(`Unable to parse browser from UA ${report.userAgent}`); + console.warn( + chalk`{yellow warn}: Unable to parse browser from UA ${report.userAgent}`, + ); } continue; @@ -370,8 +372,8 @@ export const update = ( const inferredStatements = inferSupportStatements(versionMap); if (inferredStatements.length !== 1) { // TODO: handle more complicated scenarios - logger.warn( - `${path} skipped for ${browser} due to multiple inferred statements`, + console.warn( + chalk`{yellow warn}: ${path} skipped for ${browser} due to multiple inferred statements`, ); continue; } @@ -504,8 +506,8 @@ export const update = ( if (defaultStatements.length !== 1) { // TODO: handle more complicated scenarios - logger.warn( - `${path} skipped for ${browser} due to multiple default statements`, + console.warn( + chalk`{yellow warn}: ${path} skipped for ${browser} due to multiple default statements`, ); continue; } @@ -514,8 +516,8 @@ export const update = ( if (simpleStatement.version_removed) { // TODO: handle updating existing added+removed entries. - logger.warn( - `${path} skipped for ${browser} due to added+removed statement`, + console.warn( + chalk`{yellow warn}: ${path} skipped for ${browser} due to added+removed statement`, ); continue; } @@ -552,8 +554,8 @@ export const update = ( '<', ) ) { - logger.warn( - `${path} skipped for ${browser}; BCD says support was added in a version newer than there are results for`, + console.warn( + chalk`{yellow warn}: ${path} skipped for ${browser}; BCD says support was added in a version newer than there are results for`, ); continue; } @@ -682,7 +684,7 @@ export const main = async ( if (!modified) { continue; } - logger.info(`Updating ${path.relative(BCD_DIR, file)}`); + console.info(chalk`{green info}: Updating ${path.relative(BCD_DIR, file)}`); const json = JSON.stringify(data, null, ' ') + '\n'; await fs.writeFile(file, json); } From 2638dc1f5da46dc7fba52c88e3a973fd038dbea6 Mon Sep 17 00:00:00 2001 From: "Michael \"Z\" Goddard" Date: Thu, 1 Jun 2023 12:37:15 -0400 Subject: [PATCH 12/29] fixup! add update script from mdn-bcd-collector --- scripts/update.ts | 28 ++++++++++++---------------- 1 file changed, 12 insertions(+), 16 deletions(-) diff --git a/scripts/update.ts b/scripts/update.ts index 7cfab7c0785db4..706937785b7c3b 100644 --- a/scripts/update.ts +++ b/scripts/update.ts @@ -11,11 +11,11 @@ import { } from 'compare-versions'; import esMain from 'es-main'; import fs from 'fs-extra'; -import klaw from 'klaw'; import minimatch from 'minimatch'; import yargs from 'yargs'; import { hideBin } from 'yargs/helpers'; import chalk from 'chalk-template'; +import { fdir } from 'fdir'; import { Browsers, @@ -616,25 +616,21 @@ export const update = ( export const loadJsonFiles = async ( paths: string[], ): Promise<{ [filename: string]: any }> => { - // Ignores .DS_Store, .git, etc. - const dotFilter = (item) => { - const basename = path.basename(item); - return basename === '.' || basename[0] !== '.'; - }; + const jsonCrawler = new fdir() + .withFullPaths() + .filter((item) => { + // Ignores .DS_Store, .git, etc. + const basename = path.basename(item); + return basename === '.' || basename[0] !== '.'; + }) + .filter((item) => item.endsWith('.json')); const jsonFiles: string[] = []; for (const p of paths) { - await new Promise((resolve, reject) => { - klaw(p, { filter: dotFilter }) - .on('data', (item) => { - if (item.path.endsWith('.json')) { - jsonFiles.push(item.path); - } - }) - .on('error', reject) - .on('end', resolve); - }); + for (const item of await jsonCrawler.crawl(p).withPromise()) { + jsonFiles.push(item); + } } const entries = await Promise.all( From b45eb0d0a3e8efe73fb764b7da8e905e7eeeab18 Mon Sep 17 00:00:00 2001 From: "Michael \"Z\" Goddard" Date: Thu, 1 Jun 2023 12:37:42 -0400 Subject: [PATCH 13/29] fixup! add depedencies --- package.json | 1 - 1 file changed, 1 deletion(-) diff --git a/package.json b/package.json index dcfd11d91be3ba..a8511c3edc7fde 100644 --- a/package.json +++ b/package.json @@ -65,7 +65,6 @@ "fs-extra": "11.1.1", "husky": "^8.0.1", "json-schema-to-typescript": "~10.1.5", - "klaw": "4.1.0", "lint-staged": "^13.0.3", "mocha": "~10.2.0", "open-cli": "~7.2.0", From 01659c578c0e6eeaaa7621c3170bccf81dc2a102 Mon Sep 17 00:00:00 2001 From: "Michael \"Z\" Goddard" Date: Thu, 1 Jun 2023 12:37:51 -0400 Subject: [PATCH 14/29] fixup! bump package-lock --- package-lock.json | 10 ---------- 1 file changed, 10 deletions(-) diff --git a/package-lock.json b/package-lock.json index ee33c58945c356..6641ae85247537 100644 --- a/package-lock.json +++ b/package-lock.json @@ -47,7 +47,6 @@ "fs-extra": "11.1.1", "husky": "^8.0.1", "json-schema-to-typescript": "~10.1.5", - "klaw": "4.1.0", "lint-staged": "^13.0.3", "mocha": "~10.2.0", "open-cli": "~7.2.0", @@ -6956,15 +6955,6 @@ "node": ">=0.10.0" } }, - "node_modules/klaw": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/klaw/-/klaw-4.1.0.tgz", - "integrity": "sha512-1zGZ9MF9H22UnkpVeuaGKOjfA2t6WrfdrJmGjy16ykcjnKQDmHVX+KI477rpbGevz/5FD4MC3xf1oxylBgcaQw==", - "dev": true, - "engines": { - "node": ">=14.14.0" - } - }, "node_modules/kuler": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/kuler/-/kuler-2.0.0.tgz", From 3e6f299451e38e87b08ac2b6e291e769b5bf9986 Mon Sep 17 00:00:00 2001 From: "Michael \"Z\" Goddard" Date: Thu, 1 Jun 2023 12:39:09 -0400 Subject: [PATCH 15/29] fixup! copy libs used by update from mdn-bcd-collector --- utils/logger.ts | 27 --------------------------- 1 file changed, 27 deletions(-) delete mode 100644 utils/logger.ts diff --git a/utils/logger.ts b/utils/logger.ts deleted file mode 100644 index bc50f7f70cbf8c..00000000000000 --- a/utils/logger.ts +++ /dev/null @@ -1,27 +0,0 @@ -/* This file is a part of @mdn/browser-compat-data - * See LICENSE file for more information. */ - -import winston from 'winston'; -import { LoggingWinston } from '@google-cloud/logging-winston'; - -const getTransport = () => { - /* c8 ignore next 3 */ - if (process.env.GOOGLE_APPLICATION_CREDENTIALS) { - return new LoggingWinston(); - } - - return new winston.transports.Console({ - format: winston.format.combine( - winston.format.colorize(), - winston.format.simple(), - ), - }); -}; - -const logger = winston.createLogger({ - level: 'info', - transports: [getTransport()], - silent: process.env.NODE_ENV === 'test', -}); - -export default logger; From 4bcd8aa6396dd2f15736f2e0a51e2fdab5febd8f Mon Sep 17 00:00:00 2001 From: "Michael \"Z\" Goddard" Date: Thu, 1 Jun 2023 12:39:19 -0400 Subject: [PATCH 16/29] fixup! add depedencies --- package.json | 2 -- 1 file changed, 2 deletions(-) diff --git a/package.json b/package.json index a8511c3edc7fde..7a43b8b83564da 100644 --- a/package.json +++ b/package.json @@ -30,7 +30,6 @@ "@babel/eslint-parser": "~7.21.3", "@babel/plugin-syntax-import-assertions": "~7.20.0", "@desertnet/html-parser": "~1.0.1", - "@google-cloud/logging-winston": "5.3.0", "@swc/cli": "^0.1.62", "@swc/core": "^1.3.36", "@types/deep-diff": "~1.0.1", @@ -74,7 +73,6 @@ "typescript": "~5.0.2", "ua-parser-js": "1.0.35", "web-specs": "^2.41.0", - "winston": "3.8.2", "yargs": "~17.7.0" }, "scripts": { From 8502ef5164c7ad38f05c8120e14446bff4f8d13f Mon Sep 17 00:00:00 2001 From: "Michael \"Z\" Goddard" Date: Thu, 1 Jun 2023 12:39:24 -0400 Subject: [PATCH 17/29] fixup! bump package-lock --- package-lock.json | 1549 +-------------------------------------------- 1 file changed, 5 insertions(+), 1544 deletions(-) diff --git a/package-lock.json b/package-lock.json index 6641ae85247537..9dacde0c3049e0 100644 --- a/package-lock.json +++ b/package-lock.json @@ -12,7 +12,6 @@ "@babel/eslint-parser": "~7.21.3", "@babel/plugin-syntax-import-assertions": "~7.20.0", "@desertnet/html-parser": "~1.0.1", - "@google-cloud/logging-winston": "5.3.0", "@swc/cli": "^0.1.62", "@swc/core": "^1.3.36", "@types/deep-diff": "~1.0.1", @@ -56,7 +55,6 @@ "typescript": "~5.0.2", "ua-parser-js": "1.0.35", "web-specs": "^2.41.0", - "winston": "3.8.2", "yargs": "~17.7.0" }, "engines": { @@ -420,6 +418,7 @@ "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.21.4.tgz", "integrity": "sha512-alVJj7k7zIxqBZ7BTRhz0IqJFxW1VJbm6N8JbcYhQ186df9ZBPbZBmWSqAMXwHGsCJdYks7z/voa3ibiS5bCIw==", "dev": true, + "peer": true, "bin": { "parser": "bin/babel-parser.js" }, @@ -500,15 +499,6 @@ "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==", "dev": true }, - "node_modules/@colors/colors": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/@colors/colors/-/colors-1.5.0.tgz", - "integrity": "sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==", - "dev": true, - "engines": { - "node": ">=0.1.90" - } - }, "node_modules/@cspotcode/source-map-support": { "version": "0.8.1", "resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz", @@ -531,17 +521,6 @@ "@jridgewell/sourcemap-codec": "^1.4.10" } }, - "node_modules/@dabh/diagnostics": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/@dabh/diagnostics/-/diagnostics-2.0.3.tgz", - "integrity": "sha512-hrlQOIi7hAfzsMqlGSFyVucrx38O+j6wiGOf//H2ecvIEqYN4ADBSS2iLMh5UFyDunCNniUIPk/q3riFv45xRA==", - "dev": true, - "dependencies": { - "colorspace": "1.1.x", - "enabled": "2.0.x", - "kuler": "^2.0.0" - } - }, "node_modules/@desertnet/html-parser": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/@desertnet/html-parser/-/html-parser-1.0.1.tgz", @@ -688,160 +667,6 @@ "node": "^12.22.0 || ^14.17.0 || >=16.0.0" } }, - "node_modules/@google-cloud/common": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/@google-cloud/common/-/common-4.0.3.tgz", - "integrity": "sha512-fUoMo5b8iAKbrYpneIRV3z95AlxVJPrjpevxs4SKoclngWZvTXBSGpNisF5+x5m+oNGve7jfB1e6vNBZBUs7Fw==", - "dev": true, - "dependencies": { - "@google-cloud/projectify": "^3.0.0", - "@google-cloud/promisify": "^3.0.0", - "arrify": "^2.0.1", - "duplexify": "^4.1.1", - "ent": "^2.2.0", - "extend": "^3.0.2", - "google-auth-library": "^8.0.2", - "retry-request": "^5.0.0", - "teeny-request": "^8.0.0" - }, - "engines": { - "node": ">=12.0.0" - } - }, - "node_modules/@google-cloud/common/node_modules/arrify": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/arrify/-/arrify-2.0.1.tgz", - "integrity": "sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/@google-cloud/logging": { - "version": "10.4.1", - "resolved": "https://registry.npmjs.org/@google-cloud/logging/-/logging-10.4.1.tgz", - "integrity": "sha512-vYoaJLWdV2g9iQqDJpte5VjAktMwSOfuz9nuj2YzBCsgiNJ0Te4gl+f5EClkY1nKTZIH00Hd97fSxDrduLpOmw==", - "dev": true, - "dependencies": { - "@google-cloud/common": "^4.0.0", - "@google-cloud/paginator": "^4.0.0", - "@google-cloud/projectify": "^3.0.0", - "@google-cloud/promisify": "^3.0.0", - "arrify": "^2.0.1", - "dot-prop": "^6.0.0", - "eventid": "^2.0.0", - "extend": "^3.0.2", - "gcp-metadata": "^4.0.0", - "google-auth-library": "^8.0.2", - "google-gax": "^3.5.8", - "on-finished": "^2.3.0", - "pumpify": "^2.0.1", - "stream-events": "^1.0.5", - "uuid": "^9.0.0" - }, - "engines": { - "node": ">=12.0.0" - } - }, - "node_modules/@google-cloud/logging-winston": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/@google-cloud/logging-winston/-/logging-winston-5.3.0.tgz", - "integrity": "sha512-i7rh4h6YU9RVowtaGU1Da+ShoFy5ueKJQMpE/+grW/NoU+vvzDSIC8GOBhr1ZGqFU2QhETSlt2d50htbFYW8Vw==", - "dev": true, - "dependencies": { - "@google-cloud/logging": "^10.2.2", - "google-auth-library": "^8.0.2", - "lodash.mapvalues": "^4.6.0", - "winston-transport": "^4.3.0" - }, - "engines": { - "node": ">=12.0.0" - }, - "peerDependencies": { - "winston": ">=3.2.1" - } - }, - "node_modules/@google-cloud/logging/node_modules/arrify": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/arrify/-/arrify-2.0.1.tgz", - "integrity": "sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/@google-cloud/paginator": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/@google-cloud/paginator/-/paginator-4.0.1.tgz", - "integrity": "sha512-6G1ui6bWhNyHjmbYwavdN7mpVPRBtyDg/bfqBTAlwr413On2TnFNfDxc9UhTJctkgoCDgQXEKiRPLPR9USlkbQ==", - "dev": true, - "dependencies": { - "arrify": "^2.0.0", - "extend": "^3.0.2" - }, - "engines": { - "node": ">=12.0.0" - } - }, - "node_modules/@google-cloud/paginator/node_modules/arrify": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/arrify/-/arrify-2.0.1.tgz", - "integrity": "sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/@google-cloud/projectify": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@google-cloud/projectify/-/projectify-3.0.0.tgz", - "integrity": "sha512-HRkZsNmjScY6Li8/kb70wjGlDDyLkVk3KvoEo9uIoxSjYLJasGiCch9+PqRVDOCGUFvEIqyogl+BeqILL4OJHA==", - "dev": true, - "engines": { - "node": ">=12.0.0" - } - }, - "node_modules/@google-cloud/promisify": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@google-cloud/promisify/-/promisify-3.0.1.tgz", - "integrity": "sha512-z1CjRjtQyBOYL+5Qr9DdYIfrdLBe746jRTYfaYU6MeXkqp7UfYs/jX16lFFVzZ7PGEJvqZNqYUEtb1mvDww4pA==", - "dev": true, - "engines": { - "node": ">=12" - } - }, - "node_modules/@grpc/grpc-js": { - "version": "1.8.14", - "resolved": "https://registry.npmjs.org/@grpc/grpc-js/-/grpc-js-1.8.14.tgz", - "integrity": "sha512-w84maJ6CKl5aApCMzFll0hxtFNT6or9WwMslobKaqWUEf1K+zhlL43bSQhFreyYWIWR+Z0xnVFC1KtLm4ZpM/A==", - "dev": true, - "dependencies": { - "@grpc/proto-loader": "^0.7.0", - "@types/node": ">=12.12.47" - }, - "engines": { - "node": "^8.13.0 || >=10.10.0" - } - }, - "node_modules/@grpc/proto-loader": { - "version": "0.7.7", - "resolved": "https://registry.npmjs.org/@grpc/proto-loader/-/proto-loader-0.7.7.tgz", - "integrity": "sha512-1TIeXOi8TuSCQprPItwoMymZXxWT0CPxUhkrkeCUH+D8U7QDwQ6b7SUz2MaLuWM2llT+J/TVFLmQI5KtML3BhQ==", - "dev": true, - "dependencies": { - "@types/long": "^4.0.1", - "lodash.camelcase": "^4.3.0", - "long": "^4.0.0", - "protobufjs": "^7.0.0", - "yargs": "^17.7.2" - }, - "bin": { - "proto-loader-gen-types": "build/bin/proto-loader-gen-types.js" - }, - "engines": { - "node": ">=6" - } - }, "node_modules/@humanwhocodes/config-array": { "version": "0.11.8", "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.8.tgz", @@ -955,18 +780,6 @@ "integrity": "sha512-4JQNk+3mVzK3xh2rqd6RB4J46qUR19azEHBneZyTZM+c456qOrbbM/5xcR8huNCCcbVt7+UmizG6GuUvPvKUYg==", "dev": true }, - "node_modules/@jsdoc/salty": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/@jsdoc/salty/-/salty-0.2.5.tgz", - "integrity": "sha512-TfRP53RqunNe2HBobVBJ0VLhK1HbfvBYeTC1ahnN64PWvyYyGebmMiPkuwvD9fpw2ZbkoPb8Q7mwy0aR8Z9rvw==", - "dev": true, - "dependencies": { - "lodash": "^4.17.21" - }, - "engines": { - "node": ">=v12.0.0" - } - }, "node_modules/@mole-inc/bin-wrapper": { "version": "8.0.1", "resolved": "https://registry.npmjs.org/@mole-inc/bin-wrapper/-/bin-wrapper-8.0.1.tgz", @@ -1091,70 +904,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@protobufjs/aspromise": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@protobufjs/aspromise/-/aspromise-1.1.2.tgz", - "integrity": "sha512-j+gKExEuLmKwvz3OgROXtrJ2UG2x8Ch2YZUxahh+s1F2HZ+wAceUNLkvy6zKCPVRkU++ZWQrdxsUeQXmcg4uoQ==", - "dev": true - }, - "node_modules/@protobufjs/base64": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@protobufjs/base64/-/base64-1.1.2.tgz", - "integrity": "sha512-AZkcAA5vnN/v4PDqKyMR5lx7hZttPDgClv83E//FMNhR2TMcLUhfRUBHCmSl0oi9zMgDDqRUJkSxO3wm85+XLg==", - "dev": true - }, - "node_modules/@protobufjs/codegen": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/@protobufjs/codegen/-/codegen-2.0.4.tgz", - "integrity": "sha512-YyFaikqM5sH0ziFZCN3xDC7zeGaB/d0IUb9CATugHWbd1FRFwWwt4ld4OYMPWu5a3Xe01mGAULCdqhMlPl29Jg==", - "dev": true - }, - "node_modules/@protobufjs/eventemitter": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@protobufjs/eventemitter/-/eventemitter-1.1.0.tgz", - "integrity": "sha512-j9ednRT81vYJ9OfVuXG6ERSTdEL1xVsNgqpkxMsbIabzSo3goCjDIveeGv5d03om39ML71RdmrGNjG5SReBP/Q==", - "dev": true - }, - "node_modules/@protobufjs/fetch": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@protobufjs/fetch/-/fetch-1.1.0.tgz", - "integrity": "sha512-lljVXpqXebpsijW71PZaCYeIcE5on1w5DlQy5WH6GLbFryLUrBD4932W/E2BSpfRJWseIL4v/KPgBFxDOIdKpQ==", - "dev": true, - "dependencies": { - "@protobufjs/aspromise": "^1.1.1", - "@protobufjs/inquire": "^1.1.0" - } - }, - "node_modules/@protobufjs/float": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@protobufjs/float/-/float-1.0.2.tgz", - "integrity": "sha512-Ddb+kVXlXst9d+R9PfTIxh1EdNkgoRe5tOX6t01f1lYWOvJnSPDBlG241QLzcyPdoNTsblLUdujGSE4RzrTZGQ==", - "dev": true - }, - "node_modules/@protobufjs/inquire": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@protobufjs/inquire/-/inquire-1.1.0.tgz", - "integrity": "sha512-kdSefcPdruJiFMVSbn801t4vFK7KB/5gd2fYvrxhuJYg8ILrmn9SKSX2tZdV6V+ksulWqS7aXjBcRXl3wHoD9Q==", - "dev": true - }, - "node_modules/@protobufjs/path": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@protobufjs/path/-/path-1.1.2.tgz", - "integrity": "sha512-6JOcJ5Tm08dOHAbdR3GrvP+yUUfkjG5ePsHYczMFLq3ZmMkAD98cDgcT2iA1lJ9NVwFd4tH/iSSoe44YWkltEA==", - "dev": true - }, - "node_modules/@protobufjs/pool": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@protobufjs/pool/-/pool-1.1.0.tgz", - "integrity": "sha512-0kELaGSIDBKvcgS4zkjz1PeddatrjYcmMWOlAuAPwAeccUrPHdUqo/J6LiymHHEiJT5NrF1UVwxY14f+fy4WQw==", - "dev": true - }, - "node_modules/@protobufjs/utf8": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@protobufjs/utf8/-/utf8-1.1.0.tgz", - "integrity": "sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw==", - "dev": true - }, "node_modules/@sindresorhus/is": { "version": "4.6.0", "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-4.6.0.tgz", @@ -1299,15 +1048,6 @@ "integrity": "sha512-OvjF+z51L3ov0OyAU0duzsYuvO01PH7x4t6DJx+guahgTnBHkhJdG7soQeTSFLWN3efnHyibZ4Z8l2EuWwJN3A==", "dev": true }, - "node_modules/@tootallnate/once": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-2.0.0.tgz", - "integrity": "sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==", - "dev": true, - "engines": { - "node": ">= 10" - } - }, "node_modules/@tsconfig/node10": { "version": "1.0.9", "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.9.tgz", @@ -1393,40 +1133,12 @@ "@types/node": "*" } }, - "node_modules/@types/linkify-it": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/@types/linkify-it/-/linkify-it-3.0.2.tgz", - "integrity": "sha512-HZQYqbiFVWufzCwexrvh694SOim8z2d+xJl5UNamcvQFejLY/2YUtzXHYi3cHdI7PMlS8ejH2slRAOJQ32aNbA==", - "dev": true - }, "node_modules/@types/lodash": { "version": "4.14.194", "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.194.tgz", "integrity": "sha512-r22s9tAS7imvBt2lyHC9B8AGwWnXaYb1tY09oyLkXDs4vArpYJzw09nj8MLx5VfciBPGIb+ZwG0ssYnEPJxn/g==", "dev": true }, - "node_modules/@types/long": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/@types/long/-/long-4.0.2.tgz", - "integrity": "sha512-MqTGEo5bj5t157U6fA/BiDynNkn0YknVdh48CMPkTSpFTVmvao5UQmm7uEF6xBEo7qIMAlY/JSleYaE6VOdpaA==", - "dev": true - }, - "node_modules/@types/markdown-it": { - "version": "12.2.3", - "resolved": "https://registry.npmjs.org/@types/markdown-it/-/markdown-it-12.2.3.tgz", - "integrity": "sha512-GKMHFfv3458yYy+v/N8gjufHO6MSZKCOXpZc5GXIWWy8uldwfmPn98vp81gZ5f9SVw8YYBctgfJ22a2d7AOMeQ==", - "dev": true, - "dependencies": { - "@types/linkify-it": "*", - "@types/mdurl": "*" - } - }, - "node_modules/@types/mdurl": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@types/mdurl/-/mdurl-1.0.2.tgz", - "integrity": "sha512-eC4U9MlIcu2q0KQmXszyn5Akca/0jrQmwDRgpAMJai7qBWq4amIQhZyNau4VYGtCeALvW1/NtjzJJ567aZxfKA==", - "dev": true - }, "node_modules/@types/minimatch": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-5.1.2.tgz", @@ -1472,28 +1184,12 @@ "@types/node": "*" } }, - "node_modules/@types/rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/@types/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-F3OznnSLAUxFrCEu/L5PY8+ny8DtcFRjx7fZZ9bycvXRi3KPTRS9HOitGZwvPg0juRhXFWIeKX58cnX5YqLohQ==", - "dev": true, - "dependencies": { - "@types/glob": "*", - "@types/node": "*" - } - }, "node_modules/@types/semver": { "version": "7.3.13", "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.3.13.tgz", "integrity": "sha512-21cFJr9z3g5dW8B0CVI9g2O9beqaThGQ6ZFBqHfwhzLDKUxaqTIy3vnfah/UPkfOiF2pLq+tGz+W8RyCskuslw==", "dev": true }, - "node_modules/@types/triple-beam": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/@types/triple-beam/-/triple-beam-1.3.2.tgz", - "integrity": "sha512-txGIh+0eDFzKGC25zORnswy+br1Ha7hj5cMVwKIU7+s0U2AxxJru/jZSMU6OC9MJWP6+pc/hc6ZjyZShpsyY2g==", - "dev": true - }, "node_modules/@types/yargs": { "version": "17.0.24", "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.24.tgz", @@ -2055,18 +1751,6 @@ "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", "dev": true }, - "node_modules/abort-controller": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz", - "integrity": "sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==", - "dev": true, - "dependencies": { - "event-target-shim": "^5.0.0" - }, - "engines": { - "node": ">=6.5" - } - }, "node_modules/acorn": { "version": "8.8.2", "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.2.tgz", @@ -2097,18 +1781,6 @@ "node": ">=0.4.0" } }, - "node_modules/agent-base": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", - "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", - "dev": true, - "dependencies": { - "debug": "4" - }, - "engines": { - "node": ">= 6.0.0" - } - }, "node_modules/aggregate-error": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", @@ -2364,12 +2036,6 @@ "node": ">=8" } }, - "node_modules/async": { - "version": "3.2.4", - "resolved": "https://registry.npmjs.org/async/-/async-3.2.4.tgz", - "integrity": "sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ==", - "dev": true - }, "node_modules/available-typed-arrays": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz", @@ -2485,15 +2151,6 @@ "node": ">=0.6" } }, - "node_modules/bignumber.js": { - "version": "9.1.1", - "resolved": "https://registry.npmjs.org/bignumber.js/-/bignumber.js-9.1.1.tgz", - "integrity": "sha512-pHm4LsMJ6lzgNGVfZHjMoO8sdoRhOzOH4MLmY65Jg70bpxCKu5iOHNJyfF6OyvYw7t8Fpf35RuzUyqnQsj8Vig==", - "dev": true, - "engines": { - "node": "*" - } - }, "node_modules/bin-check": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/bin-check/-/bin-check-4.1.0.tgz", @@ -2652,12 +2309,6 @@ "readable-stream": "^3.4.0" } }, - "node_modules/bluebird": { - "version": "3.7.2", - "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", - "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==", - "dev": true - }, "node_modules/bplist-parser": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/bplist-parser/-/bplist-parser-0.2.0.tgz", @@ -2751,12 +2402,6 @@ "ieee754": "^1.2.1" } }, - "node_modules/buffer-equal-constant-time": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz", - "integrity": "sha512-zRpUiDwd/xk6ADqPMATG8vc9VPrkck7T07OIx0gnjmJAnHnTVXNQG3vfvWNuiZIkwu9KrKdA1iJKfsfTVxE6NA==", - "dev": true - }, "node_modules/builtin-modules": { "version": "3.3.0", "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.3.0.tgz", @@ -3059,18 +2704,6 @@ ], "peer": true }, - "node_modules/catharsis": { - "version": "0.9.0", - "resolved": "https://registry.npmjs.org/catharsis/-/catharsis-0.9.0.tgz", - "integrity": "sha512-prMTQVpcns/tzFgFVkVp6ak6RykZyWb3gu8ckUpd6YkTlacOd3DXGJjIpD4Q6zJirizvaiAjSSHlOsA+6sNh2A==", - "dev": true, - "dependencies": { - "lodash": "^4.17.15" - }, - "engines": { - "node": ">= 10" - } - }, "node_modules/chalk": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.2.0.tgz", @@ -3302,16 +2935,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/color": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/color/-/color-3.2.1.tgz", - "integrity": "sha512-aBl7dZI9ENN6fUGC7mWpMTPNHmWUSNan9tuWN6ahh5ZLNk9baLJOnSMlrQkHcrfFgz2/RigjUVAjdx36VcemKA==", - "dev": true, - "dependencies": { - "color-convert": "^1.9.3", - "color-string": "^1.6.0" - } - }, "node_modules/color-convert": { "version": "1.9.3", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", @@ -3327,32 +2950,12 @@ "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", "dev": true }, - "node_modules/color-string": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/color-string/-/color-string-1.9.1.tgz", - "integrity": "sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==", - "dev": true, - "dependencies": { - "color-name": "^1.0.0", - "simple-swizzle": "^0.2.2" - } - }, "node_modules/colorette": { "version": "2.0.20", "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.20.tgz", "integrity": "sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==", "dev": true }, - "node_modules/colorspace": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/colorspace/-/colorspace-1.1.4.tgz", - "integrity": "sha512-BgvKJiuVu1igBUF2kEjRCZXol6wiiGbY5ipL/oVPwm0BL9sIpMIzM8IK7vwuxIIzOXMV3Ey5w+vxhm0rR/TN8w==", - "dev": true, - "dependencies": { - "color": "^3.1.3", - "text-hex": "1.0.x" - } - }, "node_modules/commander": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", @@ -3798,54 +3401,12 @@ "node": ">=6.0.0" } }, - "node_modules/dot-prop": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-6.0.1.tgz", - "integrity": "sha512-tE7ztYzXHIeyvc7N+hR3oi7FIbf/NIjVP9hmAt3yMXzrQ072/fpjGLx2GxNxGxUl5V73MEqYzioOMoVhGMJ5cA==", - "dev": true, - "dependencies": { - "is-obj": "^2.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/duplexify": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-4.1.2.tgz", - "integrity": "sha512-fz3OjcNCHmRP12MJoZMPglx8m4rrFP8rovnk4vT8Fs+aonZoCwGg10dSsQsfP/E62eZcPTMSMP6686fu9Qlqtw==", - "dev": true, - "dependencies": { - "end-of-stream": "^1.4.1", - "inherits": "^2.0.3", - "readable-stream": "^3.1.1", - "stream-shift": "^1.0.0" - } - }, "node_modules/eastasianwidth": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", "dev": true }, - "node_modules/ecdsa-sig-formatter": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz", - "integrity": "sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==", - "dev": true, - "dependencies": { - "safe-buffer": "^5.0.1" - } - }, - "node_modules/ee-first": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", - "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==", - "dev": true - }, "node_modules/electron-to-chromium": { "version": "1.4.371", "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.371.tgz", @@ -3859,12 +3420,6 @@ "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", "dev": true }, - "node_modules/enabled": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/enabled/-/enabled-2.0.0.tgz", - "integrity": "sha512-AKrN98kuwOzMIdAizXGI86UFBoo26CL21UM763y1h/GMSJ4/OHU9k2YlsmBpyScFo/wbLzWQJBMCW4+IO3/+OQ==", - "dev": true - }, "node_modules/end-of-stream": { "version": "1.4.4", "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", @@ -3887,21 +3442,6 @@ "node": ">=10.13.0" } }, - "node_modules/ent": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/ent/-/ent-2.2.0.tgz", - "integrity": "sha512-GHrMyVZQWvTIdDtpiEXdHZnFQKzeO09apj8Cbl4pKWy4i0Oprcq17usfDt5aO63swf0JOeMWjWQE/LzgSRuWpA==", - "dev": true - }, - "node_modules/entities": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/entities/-/entities-2.1.0.tgz", - "integrity": "sha512-hCx1oky9PFrJ611mf0ifBLBRW8lUUVRlFolb5gWRfIELabBlbp9xZvrqZLZAs+NxFnbfQoeGd8wDkygjg7U85w==", - "dev": true, - "funding": { - "url": "https://github.com/fb55/entities?sponsor=1" - } - }, "node_modules/error-ex": { "version": "1.3.2", "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", @@ -4074,93 +3614,10 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/escodegen": { - "version": "1.14.3", - "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.14.3.tgz", - "integrity": "sha512-qFcX0XJkdg+PB3xjZZG/wKSuT1PnQWx57+TVSjIMmILd2yC/6ByYElPwJnslDsuWuSAp4AwJGumarAAmJch5Kw==", - "dev": true, - "dependencies": { - "esprima": "^4.0.1", - "estraverse": "^4.2.0", - "esutils": "^2.0.2", - "optionator": "^0.8.1" - }, - "bin": { - "escodegen": "bin/escodegen.js", - "esgenerate": "bin/esgenerate.js" - }, - "engines": { - "node": ">=4.0" - }, - "optionalDependencies": { - "source-map": "~0.6.1" - } - }, - "node_modules/escodegen/node_modules/levn": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", - "integrity": "sha512-0OO4y2iOHix2W6ujICbKIaEQXvFQHue65vUG3pb5EUomzPI90z9hsA1VsO/dbIIpC53J8gxM9Q4Oho0jrCM/yA==", - "dev": true, - "dependencies": { - "prelude-ls": "~1.1.2", - "type-check": "~0.3.2" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/escodegen/node_modules/optionator": { - "version": "0.8.3", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz", - "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==", - "dev": true, - "dependencies": { - "deep-is": "~0.1.3", - "fast-levenshtein": "~2.0.6", - "levn": "~0.3.0", - "prelude-ls": "~1.1.2", - "type-check": "~0.3.2", - "word-wrap": "~1.2.3" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/escodegen/node_modules/prelude-ls": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", - "integrity": "sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w==", - "dev": true, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/escodegen/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "optional": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/escodegen/node_modules/type-check": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", - "integrity": "sha512-ZCmOJdvOWDBYJlzAoFkC+Q0+bUyEOS1ltgp1MGU03fqHG+dbi9tBFU2Rd9QKiDZFAYrhPh2JUf7rZRIuHRKtOg==", - "dev": true, - "dependencies": { - "prelude-ls": "~1.1.2" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/eslint": { - "version": "8.41.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.41.0.tgz", - "integrity": "sha512-WQDQpzGBOP5IrXPo4Hc0814r4/v2rrIsB0rhT7jtunIalgg6gYXWhRMOejVO8yH21T/FGaxjmFjBMNqcIlmH1Q==", + "node_modules/eslint": { + "version": "8.41.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.41.0.tgz", + "integrity": "sha512-WQDQpzGBOP5IrXPo4Hc0814r4/v2rrIsB0rhT7jtunIalgg6gYXWhRMOejVO8yH21T/FGaxjmFjBMNqcIlmH1Q==", "dev": true, "dependencies": { "@eslint-community/eslint-utils": "^4.2.0", @@ -4958,19 +4415,6 @@ "url": "https://opencollective.com/eslint" } }, - "node_modules/esprima": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", - "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", - "dev": true, - "bin": { - "esparse": "bin/esparse.js", - "esvalidate": "bin/esvalidate.js" - }, - "engines": { - "node": ">=4" - } - }, "node_modules/esquery": { "version": "1.5.0", "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.5.0.tgz", @@ -5041,36 +4485,6 @@ "es5-ext": "~0.10.14" } }, - "node_modules/event-target-shim": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/event-target-shim/-/event-target-shim-5.0.1.tgz", - "integrity": "sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/eventid": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/eventid/-/eventid-2.0.1.tgz", - "integrity": "sha512-sPNTqiMokAvV048P2c9+foqVJzk49o6d4e0D/sq5jog3pw+4kBgyR0gaM1FM7Mx6Kzd9dztesh9oYz1LWWOpzw==", - "dev": true, - "dependencies": { - "uuid": "^8.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/eventid/node_modules/uuid": { - "version": "8.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", - "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", - "dev": true, - "bin": { - "uuid": "dist/bin/uuid" - } - }, "node_modules/execa": { "version": "0.7.0", "resolved": "https://registry.npmjs.org/execa/-/execa-0.7.0.tgz", @@ -5201,12 +4615,6 @@ "integrity": "sha512-dzlvlNlt6AXU7EBSfpAscydQ7gXB+pPGsPnfJnZpiNJBDj7IaJzQlBZYGdEi4R9HmPdBv2XmWJ6YUtoTa7lmCw==", "dev": true }, - "node_modules/extend": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", - "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", - "dev": true - }, "node_modules/fast-deep-equal": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", @@ -5259,12 +4667,6 @@ "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", "dev": true }, - "node_modules/fast-text-encoding": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/fast-text-encoding/-/fast-text-encoding-1.0.6.tgz", - "integrity": "sha512-VhXlQgj9ioXCqGstD37E/HBeqEGV/qOD/kmbVG8h5xKBYvM1L3lR1Zn4555cQ8GkYbJa8aJSipLPndE1k6zK2w==", - "dev": true - }, "node_modules/fastq": { "version": "1.15.0", "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.15.0.tgz", @@ -5288,12 +4690,6 @@ } } }, - "node_modules/fecha": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/fecha/-/fecha-4.2.3.tgz", - "integrity": "sha512-OP2IUU6HeYKJi3i0z4A19kHMQoLVs4Hc+DPqqxI2h/DPZHTm/vjsfC6P0b4jCMy14XizLBqvndQ+UilD7707Jw==", - "dev": true - }, "node_modules/file-entry-cache": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", @@ -5423,12 +4819,6 @@ "integrity": "sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==", "dev": true }, - "node_modules/fn.name": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/fn.name/-/fn.name-1.1.0.tgz", - "integrity": "sha512-GRnmB5gPyJpAhTQdSZTSp9uaPSvl09KoYcMQtsB9rQoOmzs9dH6ffeccH+Z+cv6P68Hu5bC6JjRh4Ah/mHSNRw==", - "dev": true - }, "node_modules/for-each": { "version": "0.3.3", "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", @@ -5518,47 +4908,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/gaxios": { - "version": "4.3.3", - "resolved": "https://registry.npmjs.org/gaxios/-/gaxios-4.3.3.tgz", - "integrity": "sha512-gSaYYIO1Y3wUtdfHmjDUZ8LWaxJQpiavzbF5Kq53akSzvmVg0RfyOcFDbO1KJ/KCGRFz2qG+lS81F0nkr7cRJA==", - "dev": true, - "dependencies": { - "abort-controller": "^3.0.0", - "extend": "^3.0.2", - "https-proxy-agent": "^5.0.0", - "is-stream": "^2.0.0", - "node-fetch": "^2.6.7" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/gaxios/node_modules/is-stream": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", - "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", - "dev": true, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/gcp-metadata": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/gcp-metadata/-/gcp-metadata-4.3.1.tgz", - "integrity": "sha512-x850LS5N7V1F3UcV7PoupzGsyD6iVwTVvsh3tbXfkctZnBnjW5yu5z1/3k3SehF7TyoTIe78rJs02GMMy+LF+A==", - "dev": true, - "dependencies": { - "gaxios": "^4.0.0", - "json-bigint": "^1.0.0" - }, - "engines": { - "node": ">=10" - } - }, "node_modules/gensync": { "version": "1.0.0-beta.2", "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", @@ -5742,138 +5091,6 @@ "integrity": "sha512-uHJgbwAMwNFf5mLst7IWLNg14x1CkeqglJb/K3doi4dw6q2IvAAmM/Y81kevy83wP+Sst+nutFTYOGg3d1lsxg==", "dev": true }, - "node_modules/google-auth-library": { - "version": "8.8.0", - "resolved": "https://registry.npmjs.org/google-auth-library/-/google-auth-library-8.8.0.tgz", - "integrity": "sha512-0iJn7IDqObDG5Tu9Tn2WemmJ31ksEa96IyK0J0OZCpTh6CrC6FrattwKX87h3qKVuprCJpdOGKc1Xi8V0kMh8Q==", - "dev": true, - "dependencies": { - "arrify": "^2.0.0", - "base64-js": "^1.3.0", - "ecdsa-sig-formatter": "^1.0.11", - "fast-text-encoding": "^1.0.0", - "gaxios": "^5.0.0", - "gcp-metadata": "^5.2.0", - "gtoken": "^6.1.0", - "jws": "^4.0.0", - "lru-cache": "^6.0.0" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/google-auth-library/node_modules/arrify": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/arrify/-/arrify-2.0.1.tgz", - "integrity": "sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/google-auth-library/node_modules/gaxios": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/gaxios/-/gaxios-5.1.0.tgz", - "integrity": "sha512-aezGIjb+/VfsJtIcHGcBSerNEDdfdHeMros+RbYbGpmonKWQCOVOes0LVZhn1lDtIgq55qq0HaxymIoae3Fl/A==", - "dev": true, - "dependencies": { - "extend": "^3.0.2", - "https-proxy-agent": "^5.0.0", - "is-stream": "^2.0.0", - "node-fetch": "^2.6.7" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/google-auth-library/node_modules/gcp-metadata": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/gcp-metadata/-/gcp-metadata-5.2.0.tgz", - "integrity": "sha512-aFhhvvNycky2QyhG+dcfEdHBF0FRbYcf39s6WNHUDysKSrbJ5vuFbjydxBcmewtXeV248GP8dWT3ByPNxsyHCw==", - "dev": true, - "dependencies": { - "gaxios": "^5.0.0", - "json-bigint": "^1.0.0" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/google-auth-library/node_modules/is-stream": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", - "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", - "dev": true, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/google-auth-library/node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/google-auth-library/node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true - }, - "node_modules/google-gax": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/google-gax/-/google-gax-3.6.0.tgz", - "integrity": "sha512-2fyb61vWxUonHiArRNJQmE4tx5oY1ni8VPo08fzII409vDSCWG7apDX4qNOQ2GXXT82gLBn3d3P1Dydh7pWjyw==", - "dev": true, - "dependencies": { - "@grpc/grpc-js": "~1.8.0", - "@grpc/proto-loader": "^0.7.0", - "@types/long": "^4.0.0", - "@types/rimraf": "^3.0.2", - "abort-controller": "^3.0.0", - "duplexify": "^4.0.0", - "fast-text-encoding": "^1.0.3", - "google-auth-library": "^8.0.2", - "is-stream-ended": "^0.1.4", - "node-fetch": "^2.6.1", - "object-hash": "^3.0.0", - "proto3-json-serializer": "^1.0.0", - "protobufjs": "7.2.3", - "protobufjs-cli": "1.1.1", - "retry-request": "^5.0.0" - }, - "bin": { - "compileProtos": "build/tools/compileProtos.js", - "minifyProtoJson": "build/tools/minify.js" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/google-p12-pem": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/google-p12-pem/-/google-p12-pem-4.0.1.tgz", - "integrity": "sha512-WPkN4yGtz05WZ5EhtlxNDWPhC4JIic6G8ePitwUWy4l+XPVYec+a0j0Ts47PDtW59y3RwAhUd9/h9ZZ63px6RQ==", - "dev": true, - "dependencies": { - "node-forge": "^1.3.1" - }, - "bin": { - "gp12-pem": "build/src/bin/gp12-pem.js" - }, - "engines": { - "node": ">=12.0.0" - } - }, "node_modules/gopd": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", @@ -5929,47 +5146,6 @@ "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", "dev": true }, - "node_modules/gtoken": { - "version": "6.1.2", - "resolved": "https://registry.npmjs.org/gtoken/-/gtoken-6.1.2.tgz", - "integrity": "sha512-4ccGpzz7YAr7lxrT2neugmXQ3hP9ho2gcaityLVkiUecAiwiy60Ii8gRbZeOsXV19fYaRjgBSshs8kXw+NKCPQ==", - "dev": true, - "dependencies": { - "gaxios": "^5.0.1", - "google-p12-pem": "^4.0.0", - "jws": "^4.0.0" - }, - "engines": { - "node": ">=12.0.0" - } - }, - "node_modules/gtoken/node_modules/gaxios": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/gaxios/-/gaxios-5.1.0.tgz", - "integrity": "sha512-aezGIjb+/VfsJtIcHGcBSerNEDdfdHeMros+RbYbGpmonKWQCOVOes0LVZhn1lDtIgq55qq0HaxymIoae3Fl/A==", - "dev": true, - "dependencies": { - "extend": "^3.0.2", - "https-proxy-agent": "^5.0.0", - "is-stream": "^2.0.0", - "node-fetch": "^2.6.7" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/gtoken/node_modules/is-stream": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", - "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", - "dev": true, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/hard-rejection": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/hard-rejection/-/hard-rejection-2.1.0.tgz", @@ -6102,20 +5278,6 @@ "integrity": "sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==", "dev": true }, - "node_modules/http-proxy-agent": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz", - "integrity": "sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==", - "dev": true, - "dependencies": { - "@tootallnate/once": "2", - "agent-base": "6", - "debug": "4" - }, - "engines": { - "node": ">= 6" - } - }, "node_modules/http2-wrapper": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/http2-wrapper/-/http2-wrapper-1.0.3.tgz", @@ -6129,19 +5291,6 @@ "node": ">=10.19.0" } }, - "node_modules/https-proxy-agent": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", - "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", - "dev": true, - "dependencies": { - "agent-base": "6", - "debug": "4" - }, - "engines": { - "node": ">= 6" - } - }, "node_modules/human-signals": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", @@ -6487,15 +5636,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/is-obj": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz", - "integrity": "sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==", - "dev": true, - "engines": { - "node": ">=8" - } - }, "node_modules/is-path-inside": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", @@ -6557,12 +5697,6 @@ "node": ">=0.10.0" } }, - "node_modules/is-stream-ended": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/is-stream-ended/-/is-stream-ended-0.1.4.tgz", - "integrity": "sha512-xj0XPvmr7bQFTvirqnFr50o0hQIh6ZItDqloxt5aJrR4NQsYeSsyFQERYGCAzfindAcnKjINnwEEgLx4IqVzQw==", - "dev": true - }, "node_modules/is-string": { "version": "1.0.7", "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", @@ -6723,44 +5857,6 @@ "js-yaml": "bin/js-yaml.js" } }, - "node_modules/js2xmlparser": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/js2xmlparser/-/js2xmlparser-4.0.2.tgz", - "integrity": "sha512-6n4D8gLlLf1n5mNLQPRfViYzu9RATblzPEtm1SthMX1Pjao0r9YI9nw7ZIfRxQMERS87mcswrg+r/OYrPRX6jA==", - "dev": true, - "dependencies": { - "xmlcreate": "^2.0.4" - } - }, - "node_modules/jsdoc": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/jsdoc/-/jsdoc-4.0.2.tgz", - "integrity": "sha512-e8cIg2z62InH7azBBi3EsSEqrKx+nUtAS5bBcYTSpZFA+vhNPyhv8PTFZ0WsjOPDj04/dOLlm08EDcQJDqaGQg==", - "dev": true, - "dependencies": { - "@babel/parser": "^7.20.15", - "@jsdoc/salty": "^0.2.1", - "@types/markdown-it": "^12.2.3", - "bluebird": "^3.7.2", - "catharsis": "^0.9.0", - "escape-string-regexp": "^2.0.0", - "js2xmlparser": "^4.0.2", - "klaw": "^3.0.0", - "markdown-it": "^12.3.2", - "markdown-it-anchor": "^8.4.1", - "marked": "^4.0.10", - "mkdirp": "^1.0.4", - "requizzle": "^0.2.3", - "strip-json-comments": "^3.1.0", - "underscore": "~1.13.2" - }, - "bin": { - "jsdoc": "jsdoc.js" - }, - "engines": { - "node": ">=12.0.0" - } - }, "node_modules/jsdoc-type-pratt-parser": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/jsdoc-type-pratt-parser/-/jsdoc-type-pratt-parser-4.0.0.tgz", @@ -6770,24 +5866,6 @@ "node": ">=12.0.0" } }, - "node_modules/jsdoc/node_modules/escape-string-regexp": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz", - "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/jsdoc/node_modules/klaw": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/klaw/-/klaw-3.0.0.tgz", - "integrity": "sha512-0Fo5oir+O9jnXu5EefYbVK+mHMBeEVEy2cmctR1O1NECcCkPRreJKrS6Qt/j3KC2C148Dfo9i3pCmCMsdqGr0g==", - "dev": true, - "dependencies": { - "graceful-fs": "^4.1.9" - } - }, "node_modules/jsesc": { "version": "2.5.2", "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", @@ -6801,15 +5879,6 @@ "node": ">=4" } }, - "node_modules/json-bigint": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/json-bigint/-/json-bigint-1.0.0.tgz", - "integrity": "sha512-SiPv/8VpZuWbvLSMtTDU8hEfrZWg/mH/nV/b4o0CYbSxu1UIQPLdwKOCIyLQX+VIPO5vrLX3i8qtqFyhdPSUSQ==", - "dev": true, - "dependencies": { - "bignumber.js": "^9.0.0" - } - }, "node_modules/json-buffer": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", @@ -6916,27 +5985,6 @@ "node": ">=0.10.0" } }, - "node_modules/jwa": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/jwa/-/jwa-2.0.0.tgz", - "integrity": "sha512-jrZ2Qx916EA+fq9cEAeCROWPTfCwi1IVHqT2tapuqLEVVDKFDENFw1oL+MwrTvH6msKxsd1YTDVw6uKEcsrLEA==", - "dev": true, - "dependencies": { - "buffer-equal-constant-time": "1.0.1", - "ecdsa-sig-formatter": "1.0.11", - "safe-buffer": "^5.0.1" - } - }, - "node_modules/jws": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/jws/-/jws-4.0.0.tgz", - "integrity": "sha512-KDncfTmOZoOMTFG4mBlG0qUIOlc03fmzH+ru6RgYVZhPkyiy/92Owlt/8UEN+a4TXR1FQetfIpJE8ApdvdVxTg==", - "dev": true, - "dependencies": { - "jwa": "^2.0.0", - "safe-buffer": "^5.0.1" - } - }, "node_modules/keyv": { "version": "4.5.2", "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.2.tgz", @@ -6955,12 +6003,6 @@ "node": ">=0.10.0" } }, - "node_modules/kuler": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/kuler/-/kuler-2.0.0.tgz", - "integrity": "sha512-Xq9nH7KlWZmXAtodXDDRE7vs6DU1gTU8zYDHDiWLSip45Egwq3plLHzPn27NgvzL2r1LMPC1vdqh98sQxtqj4A==", - "dev": true - }, "node_modules/leven": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", @@ -6998,15 +6040,6 @@ "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", "dev": true }, - "node_modules/linkify-it": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/linkify-it/-/linkify-it-3.0.3.tgz", - "integrity": "sha512-ynTsyrFSdE5oZ/O9GEf00kPngmOfVwazR5GKDq6EYfhlpFug3J2zybX56a2PRRpc9P+FuSoGNAwjlbDs9jJBPQ==", - "dev": true, - "dependencies": { - "uc.micro": "^1.0.1" - } - }, "node_modules/lint-staged": { "version": "13.2.2", "resolved": "https://registry.npmjs.org/lint-staged/-/lint-staged-13.2.2.tgz", @@ -7308,18 +6341,6 @@ "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", "dev": true }, - "node_modules/lodash.camelcase": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz", - "integrity": "sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA==", - "dev": true - }, - "node_modules/lodash.mapvalues": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/lodash.mapvalues/-/lodash.mapvalues-4.6.0.tgz", - "integrity": "sha512-JPFqXFeZQ7BfS00H58kClY7SPVeHertPE0lNuCyZ26/XlN8TvakYD7b9bGyNmXbT/D3BbtPAAmq90gPWqLkxlQ==", - "dev": true - }, "node_modules/lodash.merge": { "version": "4.6.2", "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", @@ -7502,26 +6523,6 @@ "node": ">=8" } }, - "node_modules/logform": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/logform/-/logform-2.5.1.tgz", - "integrity": "sha512-9FyqAm9o9NKKfiAKfZoYo9bGXXuwMkxQiQttkT4YjjVtQVIQtK6LmVtlxmCaFswo6N4AfEkHqZTV0taDtPotNg==", - "dev": true, - "dependencies": { - "@colors/colors": "1.5.0", - "@types/triple-beam": "^1.3.2", - "fecha": "^4.2.0", - "ms": "^2.1.1", - "safe-stable-stringify": "^2.3.1", - "triple-beam": "^1.3.0" - } - }, - "node_modules/long": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/long/-/long-4.0.0.tgz", - "integrity": "sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA==", - "dev": true - }, "node_modules/lowercase-keys": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz", @@ -7583,50 +6584,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/markdown-it": { - "version": "12.3.2", - "resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-12.3.2.tgz", - "integrity": "sha512-TchMembfxfNVpHkbtriWltGWc+m3xszaRD0CZup7GFFhzIgQqxIfn3eGj1yZpfuflzPvfkt611B2Q/Bsk1YnGg==", - "dev": true, - "dependencies": { - "argparse": "^2.0.1", - "entities": "~2.1.0", - "linkify-it": "^3.0.1", - "mdurl": "^1.0.1", - "uc.micro": "^1.0.5" - }, - "bin": { - "markdown-it": "bin/markdown-it.js" - } - }, - "node_modules/markdown-it-anchor": { - "version": "8.6.7", - "resolved": "https://registry.npmjs.org/markdown-it-anchor/-/markdown-it-anchor-8.6.7.tgz", - "integrity": "sha512-FlCHFwNnutLgVTflOYHPW2pPcl2AACqVzExlkGQNsi4CJgqOHN7YTgDd4LuhgN1BFO3TS0vLAruV1Td6dwWPJA==", - "dev": true, - "peerDependencies": { - "@types/markdown-it": "*", - "markdown-it": "*" - } - }, - "node_modules/marked": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/marked/-/marked-4.3.0.tgz", - "integrity": "sha512-PRsaiG84bK+AMvxziE/lCFss8juXjNaWzVbN5tXAm4XjeaS9NAHhop+PjQxz2A9h8Q4M/xGmzP8vqNwy6JeK0A==", - "dev": true, - "bin": { - "marked": "bin/marked.js" - }, - "engines": { - "node": ">= 12" - } - }, - "node_modules/mdurl": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/mdurl/-/mdurl-1.0.1.tgz", - "integrity": "sha512-/sKlQJCBYVY9Ers9hqzKou4H6V5UWc/M59TH2dvkt+84itfnq7uFOMLpOiOS4ujvHP4etln18fmIxA5R5fll0g==", - "dev": true - }, "node_modules/memoizee": { "version": "0.4.15", "resolved": "https://registry.npmjs.org/memoizee/-/memoizee-0.4.15.tgz", @@ -8230,35 +7187,6 @@ "integrity": "sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ==", "dev": true }, - "node_modules/node-fetch": { - "version": "2.6.11", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.11.tgz", - "integrity": "sha512-4I6pdBY1EthSqDmJkiNk3JIT8cswwR9nfeW/cPdUagJYEQG7R95WRH74wpz7ma8Gh/9dI9FP+OU+0E4FvtA55w==", - "dev": true, - "dependencies": { - "whatwg-url": "^5.0.0" - }, - "engines": { - "node": "4.x || >=6.0.0" - }, - "peerDependencies": { - "encoding": "^0.1.0" - }, - "peerDependenciesMeta": { - "encoding": { - "optional": true - } - } - }, - "node_modules/node-forge": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-1.3.1.tgz", - "integrity": "sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA==", - "dev": true, - "engines": { - "node": ">= 6.13.0" - } - }, "node_modules/node-releases": { "version": "2.0.10", "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.10.tgz", @@ -8365,15 +7293,6 @@ "node": ">=0.10.0" } }, - "node_modules/object-hash": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-3.0.0.tgz", - "integrity": "sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==", - "dev": true, - "engines": { - "node": ">= 6" - } - }, "node_modules/object-inspect": { "version": "1.12.3", "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.3.tgz", @@ -8427,18 +7346,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/on-finished": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", - "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", - "dev": true, - "dependencies": { - "ee-first": "1.1.1" - }, - "engines": { - "node": ">= 0.8" - } - }, "node_modules/once": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", @@ -8448,15 +7355,6 @@ "wrappy": "1" } }, - "node_modules/one-time": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/one-time/-/one-time-1.0.0.tgz", - "integrity": "sha512-5DXOiRKwuSEcQ/l0kGCF6Q3jcADFv5tSmRaJck/OqkVFcOzutB134KRSfF0xDrL39MNnqxbHBbUUcjZIhTgb2g==", - "dev": true, - "dependencies": { - "fn.name": "1.x.x" - } - }, "node_modules/onetime": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", @@ -8920,207 +7818,6 @@ "node": ">=6.0.0" } }, - "node_modules/proto3-json-serializer": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/proto3-json-serializer/-/proto3-json-serializer-1.1.1.tgz", - "integrity": "sha512-AwAuY4g9nxx0u52DnSMkqqgyLHaW/XaPLtaAo3y/ZCfeaQB/g4YDH4kb8Wc/mWzWvu0YjOznVnfn373MVZZrgw==", - "dev": true, - "dependencies": { - "protobufjs": "^7.0.0" - }, - "engines": { - "node": ">=12.0.0" - } - }, - "node_modules/protobufjs": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-7.2.3.tgz", - "integrity": "sha512-TtpvOqwB5Gdz/PQmOjgsrGH1nHjAQVCN7JG4A6r1sXRWESL5rNMAiRcBQlCAdKxZcAbstExQePYG8xof/JVRgg==", - "dev": true, - "hasInstallScript": true, - "dependencies": { - "@protobufjs/aspromise": "^1.1.2", - "@protobufjs/base64": "^1.1.2", - "@protobufjs/codegen": "^2.0.4", - "@protobufjs/eventemitter": "^1.1.0", - "@protobufjs/fetch": "^1.1.0", - "@protobufjs/float": "^1.0.2", - "@protobufjs/inquire": "^1.1.0", - "@protobufjs/path": "^1.1.2", - "@protobufjs/pool": "^1.1.0", - "@protobufjs/utf8": "^1.1.0", - "@types/node": ">=13.7.0", - "long": "^5.0.0" - }, - "engines": { - "node": ">=12.0.0" - } - }, - "node_modules/protobufjs-cli": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/protobufjs-cli/-/protobufjs-cli-1.1.1.tgz", - "integrity": "sha512-VPWMgIcRNyQwWUv8OLPyGQ/0lQY/QTQAVN5fh+XzfDwsVw1FZ2L3DM/bcBf8WPiRz2tNpaov9lPZfNcmNo6LXA==", - "dev": true, - "dependencies": { - "chalk": "^4.0.0", - "escodegen": "^1.13.0", - "espree": "^9.0.0", - "estraverse": "^5.1.0", - "glob": "^8.0.0", - "jsdoc": "^4.0.0", - "minimist": "^1.2.0", - "semver": "^7.1.2", - "tmp": "^0.2.1", - "uglify-js": "^3.7.7" - }, - "bin": { - "pbjs": "bin/pbjs", - "pbts": "bin/pbts" - }, - "engines": { - "node": ">=12.0.0" - }, - "peerDependencies": { - "protobufjs": "^7.0.0" - } - }, - "node_modules/protobufjs-cli/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/protobufjs-cli/node_modules/brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", - "dev": true, - "dependencies": { - "balanced-match": "^1.0.0" - } - }, - "node_modules/protobufjs-cli/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/protobufjs-cli/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/protobufjs-cli/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/protobufjs-cli/node_modules/estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "dev": true, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/protobufjs-cli/node_modules/glob": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz", - "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", - "dev": true, - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^5.0.1", - "once": "^1.3.0" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/protobufjs-cli/node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/protobufjs-cli/node_modules/minimatch": { - "version": "5.1.6", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", - "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", - "dev": true, - "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/protobufjs-cli/node_modules/semver": { - "version": "7.5.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.1.tgz", - "integrity": "sha512-Wvss5ivl8TMRZXXESstBA4uR5iXgEN/VC5/sOcuXdVLzcdkz4HWetIoRfG5gb5X+ij/G9rw9YoGn3QoQ8OCSpw==", - "dev": true, - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/protobufjs-cli/node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true - }, - "node_modules/protobufjs/node_modules/long": { - "version": "5.2.3", - "resolved": "https://registry.npmjs.org/long/-/long-5.2.3.tgz", - "integrity": "sha512-lcHwpNoggQTObv5apGNCTdJrO69eHOZMi4BNC+rTLER8iHAqGrUVeLh/irVIM7zTw2bOXA8T6uNPeujwOLg/2Q==", - "dev": true - }, "node_modules/pseudomap": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", @@ -9137,17 +7834,6 @@ "once": "^1.3.1" } }, - "node_modules/pumpify": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/pumpify/-/pumpify-2.0.1.tgz", - "integrity": "sha512-m7KOje7jZxrmutanlkS1daj1dS6z6BgslzOXmcSEpIlCxM3VJH7lG5QLeck/6hgF6F4crFf01UtQmNsJfweTAw==", - "dev": true, - "dependencies": { - "duplexify": "^4.1.1", - "inherits": "^2.0.3", - "pump": "^3.0.0" - } - }, "node_modules/punycode": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz", @@ -9489,15 +8175,6 @@ "node": ">=0.10.0" } }, - "node_modules/requizzle": { - "version": "0.2.4", - "resolved": "https://registry.npmjs.org/requizzle/-/requizzle-0.2.4.tgz", - "integrity": "sha512-JRrFk1D4OQ4SqovXOgdav+K8EAhSB/LJZqCz8tbX0KObcdeM15Ss59ozWMBWmmINMagCwmqn4ZNryUGpBsl6Jw==", - "dev": true, - "dependencies": { - "lodash": "^4.17.21" - } - }, "node_modules/resolve": { "version": "1.22.2", "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.2.tgz", @@ -9555,19 +8232,6 @@ "node": ">=8" } }, - "node_modules/retry-request": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/retry-request/-/retry-request-5.0.2.tgz", - "integrity": "sha512-wfI3pk7EE80lCIXprqh7ym48IHYdwmAAzESdbU8Q9l7pnRCk9LEhpbOTNKjz6FARLm/Bl5m+4F0ABxOkYUujSQ==", - "dev": true, - "dependencies": { - "debug": "^4.1.1", - "extend": "^3.0.2" - }, - "engines": { - "node": ">=12" - } - }, "node_modules/reusify": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", @@ -9748,15 +8412,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/safe-stable-stringify": { - "version": "2.4.3", - "resolved": "https://registry.npmjs.org/safe-stable-stringify/-/safe-stable-stringify-2.4.3.tgz", - "integrity": "sha512-e2bDA2WJT0wxseVd4lsDP4+3ONX6HpMXQa1ZhFQ7SU+GjvORCmShbCMltrtIDfkYhVHrOcPtj+KhmDBdPdZD1g==", - "dev": true, - "engines": { - "node": ">=10" - } - }, "node_modules/semver": { "version": "6.3.0", "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", @@ -9840,21 +8495,6 @@ "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", "dev": true }, - "node_modules/simple-swizzle": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.2.tgz", - "integrity": "sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==", - "dev": true, - "dependencies": { - "is-arrayish": "^0.3.1" - } - }, - "node_modules/simple-swizzle/node_modules/is-arrayish": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.3.2.tgz", - "integrity": "sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==", - "dev": true - }, "node_modules/slash": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", @@ -9945,15 +8585,6 @@ "integrity": "sha512-XkD+zwiqXHikFZm4AX/7JSCXA98U5Db4AFd5XUg/+9UNtnH75+Z9KxtpYiJZx36mUDVOwH83pl7yvCer6ewM3w==", "dev": true }, - "node_modules/stack-trace": { - "version": "0.0.10", - "resolved": "https://registry.npmjs.org/stack-trace/-/stack-trace-0.0.10.tgz", - "integrity": "sha512-KGzahc7puUKkzyMt+IqAep+TVNbKP+k2Lmwhub39m1AsTSkaDutx56aDCo+HLDzf/D26BIHTJWNiTG1KAJiQCg==", - "dev": true, - "engines": { - "node": "*" - } - }, "node_modules/stdin-discarder": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/stdin-discarder/-/stdin-discarder-0.1.0.tgz", @@ -9969,21 +8600,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/stream-events": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/stream-events/-/stream-events-1.0.5.tgz", - "integrity": "sha512-E1GUzBSgvct8Jsb3v2X15pjzN1tYebtbLaMg+eBOUOAxgbLoSbT2NS91ckc5lJD1KfLjId+jXJRgo0qnV5Nerg==", - "dev": true, - "dependencies": { - "stubs": "^3.0.0" - } - }, - "node_modules/stream-shift": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.1.tgz", - "integrity": "sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ==", - "dev": true - }, "node_modules/string_decoder": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", @@ -10183,12 +8799,6 @@ "url": "https://github.com/sponsors/Borewit" } }, - "node_modules/stubs": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/stubs/-/stubs-3.0.0.tgz", - "integrity": "sha512-PdHt7hHUJKxvTCgbKX9C1V/ftOcjJQgz8BZwNfV5c4B6dcGqlpelTbJ999jBGZ2jYiPAwcX5dP6oBwVlBlUbxw==", - "dev": true - }, "node_modules/supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", @@ -10238,22 +8848,6 @@ "node": ">=6" } }, - "node_modules/teeny-request": { - "version": "8.0.3", - "resolved": "https://registry.npmjs.org/teeny-request/-/teeny-request-8.0.3.tgz", - "integrity": "sha512-jJZpA5He2y52yUhA7pyAGZlgQpcB+xLjcN0eUFxr9c8hP/H7uOXbBNVo/O0C/xVfJLJs680jvkFgVJEEvk9+ww==", - "dev": true, - "dependencies": { - "http-proxy-agent": "^5.0.0", - "https-proxy-agent": "^5.0.0", - "node-fetch": "^2.6.1", - "stream-events": "^1.0.5", - "uuid": "^9.0.0" - }, - "engines": { - "node": ">=12" - } - }, "node_modules/temp-dir": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/temp-dir/-/temp-dir-2.0.0.tgz", @@ -10319,12 +8913,6 @@ "node": ">=8" } }, - "node_modules/text-hex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/text-hex/-/text-hex-1.0.0.tgz", - "integrity": "sha512-uuVGNWzgJ4yhRaNSiubPY7OjISw4sw4E5Uv0wbjp+OzcbmVU/rsT8ujgcXJhn9ypzsgr5vlzpPqP+MBBKcGvbg==", - "dev": true - }, "node_modules/text-table": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", @@ -10390,18 +8978,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/tmp": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.1.tgz", - "integrity": "sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ==", - "dev": true, - "dependencies": { - "rimraf": "^3.0.0" - }, - "engines": { - "node": ">=8.17.0" - } - }, "node_modules/to-fast-properties": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", @@ -10441,12 +9017,6 @@ "url": "https://github.com/sponsors/Borewit" } }, - "node_modules/tr46": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", - "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==", - "dev": true - }, "node_modules/trim-newlines": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-4.1.1.tgz", @@ -10483,12 +9053,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/triple-beam": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/triple-beam/-/triple-beam-1.3.0.tgz", - "integrity": "sha512-XrHUvV5HpdLmIj4uVMxHggLbFSZYIn7HEWsqePZcI50pco+MPqJ50wMGY794X7AOOhxOBAjbkqfAbEe/QMp2Lw==", - "dev": true - }, "node_modules/ts-node": { "version": "10.9.1", "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.9.1.tgz", @@ -10668,24 +9232,6 @@ "node": "*" } }, - "node_modules/uc.micro": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/uc.micro/-/uc.micro-1.0.6.tgz", - "integrity": "sha512-8Y75pvTYkLJW2hWQHXxoqRgV7qb9B+9vFEtidML+7koHUFapnVJAZ6cKs+Qjz5Aw3aZWHMC6u0wJE3At+nSGwA==", - "dev": true - }, - "node_modules/uglify-js": { - "version": "3.17.4", - "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.17.4.tgz", - "integrity": "sha512-T9q82TJI9e/C1TAxYvfb16xO120tMVFZrGA3f9/P4424DNu6ypK103y0GPFVa17yotwSyZW5iYXgjYHkGrJW/g==", - "dev": true, - "bin": { - "uglifyjs": "bin/uglifyjs" - }, - "engines": { - "node": ">=0.8.0" - } - }, "node_modules/unbox-primitive": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz", @@ -10701,12 +9247,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/underscore": { - "version": "1.13.6", - "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.13.6.tgz", - "integrity": "sha512-+A5Sja4HP1M08MaXya7p5LvjuM7K6q/2EaC0+iovj/wOcMsTzMvDFbasi/oSapiwOlt252IqsKqPjCl7huKS0A==", - "dev": true - }, "node_modules/unique-string": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-3.0.0.tgz", @@ -10786,15 +9326,6 @@ "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", "dev": true }, - "node_modules/uuid": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.0.tgz", - "integrity": "sha512-MXcSTerfPa4uqyzStbRoTgt5XIe3x5+42+q1sDuy3R5MDk66URdLMOZe5aPX/SQd+kuYAh0FdP/pO28IkQyTeg==", - "dev": true, - "bin": { - "uuid": "dist/bin/uuid" - } - }, "node_modules/v8-compile-cache-lib": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz", @@ -10840,22 +9371,6 @@ "integrity": "sha512-Msz7LPpUq5KaRHMvXCWZCDEBVI1OqmlfQj0JJq+PZemgeS44KzQZEHSZ6e5wAMMNNCymRIHbO3rSyOdoJPNIBQ==", "dev": true }, - "node_modules/webidl-conversions": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", - "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==", - "dev": true - }, - "node_modules/whatwg-url": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", - "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", - "dev": true, - "dependencies": { - "tr46": "~0.0.3", - "webidl-conversions": "^3.0.0" - } - }, "node_modules/which": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", @@ -10907,54 +9422,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/winston": { - "version": "3.8.2", - "resolved": "https://registry.npmjs.org/winston/-/winston-3.8.2.tgz", - "integrity": "sha512-MsE1gRx1m5jdTTO9Ld/vND4krP2To+lgDoMEHGGa4HIlAUyXJtfc7CxQcGXVyz2IBpw5hbFkj2b/AtUdQwyRew==", - "dev": true, - "dependencies": { - "@colors/colors": "1.5.0", - "@dabh/diagnostics": "^2.0.2", - "async": "^3.2.3", - "is-stream": "^2.0.0", - "logform": "^2.4.0", - "one-time": "^1.0.0", - "readable-stream": "^3.4.0", - "safe-stable-stringify": "^2.3.1", - "stack-trace": "0.0.x", - "triple-beam": "^1.3.0", - "winston-transport": "^4.5.0" - }, - "engines": { - "node": ">= 12.0.0" - } - }, - "node_modules/winston-transport": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/winston-transport/-/winston-transport-4.5.0.tgz", - "integrity": "sha512-YpZzcUzBedhlTAfJg6vJDlyEai/IFMIVcaEZZyl3UXIl4gmqRpU7AE89AHLkbzLUsv0NVmw7ts+iztqKxxPW1Q==", - "dev": true, - "dependencies": { - "logform": "^2.3.2", - "readable-stream": "^3.6.0", - "triple-beam": "^1.3.0" - }, - "engines": { - "node": ">= 6.4.0" - } - }, - "node_modules/winston/node_modules/is-stream": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", - "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", - "dev": true, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/word-wrap": { "version": "1.2.3", "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", @@ -11055,12 +9522,6 @@ "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", "dev": true }, - "node_modules/xmlcreate": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/xmlcreate/-/xmlcreate-2.0.4.tgz", - "integrity": "sha512-nquOebG4sngPmGPICTS5EnxqhKbCmz5Ox5hsszI2T6U5qdrJizBc+0ilYSEjTSzU0yZcmvppztXe/5Al5fUwdg==", - "dev": true - }, "node_modules/y18n": { "version": "5.0.8", "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", From ed9c69ca3259316cf24cf3981817bbc4062aed7b Mon Sep 17 00:00:00 2001 From: "Michael \"Z\" Goddard" Date: Thu, 1 Jun 2023 15:46:33 -0400 Subject: [PATCH 18/29] fixup! add update script from mdn-bcd-collector --- scripts/update.ts | 29 +++++++++++++++++------------ 1 file changed, 17 insertions(+), 12 deletions(-) diff --git a/scripts/update.ts b/scripts/update.ts index 706937785b7c3b..29ad17c52c9ab8 100644 --- a/scripts/update.ts +++ b/scripts/update.ts @@ -4,14 +4,14 @@ import assert from 'node:assert'; import path from 'node:path'; import { fileURLToPath } from 'node:url'; +import fs from 'node:fs/promises'; import { compare as compareVersions, compareVersions as compareVersionsSort, } from 'compare-versions'; import esMain from 'es-main'; -import fs from 'fs-extra'; -import minimatch from 'minimatch'; +import { Minimatch } from 'minimatch'; import yargs from 'yargs'; import { hideBin } from 'yargs/helpers'; import chalk from 'chalk-template'; @@ -57,8 +57,6 @@ type Overrides = Array; type InternalSupportStatement = SupportStatement | 'mirror'; -const { Minimatch } = minimatch; - const BASE_DIR = new URL('..', import.meta.url); const BCD_DIR = process.env.BCD_DIR @@ -610,9 +608,17 @@ export const update = ( return modified; }; +/* c8 ignore start */ +/** + * Read a file and parse it as JSON. + * @param {string} file Path to json file + * @returns {Promise} Parsed JSON object + */ +const readJson = async (file: string): Promise => + JSON.parse(await fs.readFile(file, 'utf8')); + // |paths| can be files or directories. Returns an object mapping // from (absolute) path to the parsed file content. -/* c8 ignore start */ export const loadJsonFiles = async ( paths: string[], ): Promise<{ [filename: string]: any }> => { @@ -633,12 +639,11 @@ export const loadJsonFiles = async ( } } - const entries = await Promise.all( - jsonFiles.map(async (file) => { - const data = await fs.readJson(file); - return [file, data]; - }), - ); + const entries: [string, JSON][] = []; + + for (const file of jsonFiles) { + entries.push([file, await readJson(file)]); + } return Object.fromEntries(entries); }; @@ -690,7 +695,7 @@ if (esMain(import.meta)) { const { default: { browsers }, } = await import(`${BCD_DIR}/index.js`); - const overrides = await fs.readJson( + const overrides = await readJson( path.join(MDN_COLLECTOR_DIR, 'custom/overrides.json'), ); From 270f6f7f7948ed54ad26b52d2134cea92b0bc7d1 Mon Sep 17 00:00:00 2001 From: "Michael \"Z\" Goddard" Date: Thu, 1 Jun 2023 15:46:58 -0400 Subject: [PATCH 19/29] fixup! add depedencies --- package.json | 1 + 1 file changed, 1 insertion(+) diff --git a/package.json b/package.json index 7a43b8b83564da..60bc412cf6176a 100644 --- a/package.json +++ b/package.json @@ -65,6 +65,7 @@ "husky": "^8.0.1", "json-schema-to-typescript": "~10.1.5", "lint-staged": "^13.0.3", + "minimatch": "^9.0.1", "mocha": "~10.2.0", "open-cli": "~7.2.0", "ora": "~6.3.0", From f50b80675eccc4961c358c917c59ef7ac3f814da Mon Sep 17 00:00:00 2001 From: "Michael \"Z\" Goddard" Date: Thu, 1 Jun 2023 15:47:10 -0400 Subject: [PATCH 20/29] fixup! bump package-lock --- package-lock.json | 120 ++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 115 insertions(+), 5 deletions(-) diff --git a/package-lock.json b/package-lock.json index 9dacde0c3049e0..e159ca2348ef86 100644 --- a/package-lock.json +++ b/package-lock.json @@ -47,6 +47,7 @@ "husky": "^8.0.1", "json-schema-to-typescript": "~10.1.5", "lint-staged": "^13.0.3", + "minimatch": "^9.0.1", "mocha": "~10.2.0", "open-cli": "~7.2.0", "ora": "~6.3.0", @@ -646,6 +647,18 @@ "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", "dev": true }, + "node_modules/@eslint/eslintrc/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, "node_modules/@eslint/eslintrc/node_modules/type-fest": { "version": "0.20.2", "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", @@ -681,6 +694,18 @@ "node": ">=10.10.0" } }, + "node_modules/@humanwhocodes/config-array/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, "node_modules/@humanwhocodes/module-importer": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", @@ -3910,6 +3935,18 @@ "node": ">=0.10.0" } }, + "node_modules/eslint-plugin-import/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, "node_modules/eslint-plugin-jsdoc": { "version": "46.1.0", "resolved": "https://registry.npmjs.org/eslint-plugin-jsdoc/-/eslint-plugin-jsdoc-46.1.0.tgz", @@ -4004,6 +4041,19 @@ "node": ">=10" } }, + "node_modules/eslint-plugin-n/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "peer": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, "node_modules/eslint-plugin-n/node_modules/semver": { "version": "7.5.0", "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.0.tgz", @@ -4090,6 +4140,18 @@ "node": ">=4" } }, + "node_modules/eslint-plugin-node/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, "node_modules/eslint-plugin-prefer-arrow-functions": { "version": "3.1.4", "resolved": "https://registry.npmjs.org/eslint-plugin-prefer-arrow-functions/-/eslint-plugin-prefer-arrow-functions-3.1.4.tgz", @@ -4374,6 +4436,18 @@ "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", "dev": true }, + "node_modules/eslint/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, "node_modules/eslint/node_modules/type-fest": { "version": "0.20.2", "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", @@ -5034,6 +5108,18 @@ "glob": "*" } }, + "node_modules/glob/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, "node_modules/globals": { "version": "11.12.0", "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", @@ -6913,15 +6999,27 @@ } }, "node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.1.tgz", + "integrity": "sha512-0jWhJpD/MdhPXwPuiRkCbfYfSKp2qnn2eOc279qI7f+osl/l+prKSrvhg157zSYvx/1nmgn2NqdT6k2Z7zSH9w==", "dev": true, "dependencies": { - "brace-expansion": "^1.1.7" + "brace-expansion": "^2.0.1" }, "engines": { - "node": "*" + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/minimatch/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0" } }, "node_modules/minimist": { @@ -8913,6 +9011,18 @@ "node": ">=8" } }, + "node_modules/test-exclude/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, "node_modules/text-table": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", From f7e81da7df68ee7067fd72a5d9c066e81bc68880 Mon Sep 17 00:00:00 2001 From: "Michael \"Z\" Goddard" Date: Thu, 1 Jun 2023 15:59:55 -0400 Subject: [PATCH 21/29] fixup! add update script from mdn-bcd-collector --- scripts/update.ts | 43 +++++++++++++++++++++++++------------------ 1 file changed, 25 insertions(+), 18 deletions(-) diff --git a/scripts/update.ts b/scripts/update.ts index 29ad17c52c9ab8..f2d1bbd6a836b0 100644 --- a/scripts/update.ts +++ b/scripts/update.ts @@ -41,7 +41,7 @@ interface TestResults { [key: string]: TestResult[]; } -interface Report { +export interface Report { __version: string; results: TestResults; userAgent: string; @@ -51,7 +51,7 @@ type BrowserSupportMap = Map; type SupportMap = Map; type SupportMatrix = Map; -type ManualOverride = [string, string, string, TestResultValue]; +export type ManualOverride = [string, string, string, TestResultValue]; type Overrides = Array; @@ -73,6 +73,15 @@ const { default: mirror } = await import( `${BCD_DIR}/scripts/release/mirror.js` ); +export const logger = { + warn: (message: string) => { + console.warn(chalk`{yellow warn}: ${message}`); + }, + info: (message: string) => { + console.info(chalk`{green warn}: ${message}`); + }, +}; + export const findEntry = ( bcd: Identifier, ident: string, @@ -178,17 +187,15 @@ export const getSupportMatrix = ( const { browser, version, inBcd } = parseUA(report.userAgent, browsers); if (!inBcd) { if (inBcd === false) { - console.warn( - chalk`{yellow warn}: Ignoring unknown ${browser.name} version ${version} (${report.userAgent})`, + logger.warn( + `Ignoring unknown ${browser.name} version ${version} (${report.userAgent})`, ); } else if (browser.name) { - console.warn( - chalk`{yellow warn}: Ignoring unknown browser ${browser.name} ${version} (${report.userAgent})`, + logger.warn( + `Ignoring unknown browser ${browser.name} ${version} (${report.userAgent})`, ); } else { - console.warn( - chalk`{yellow warn}: Unable to parse browser from UA ${report.userAgent}`, - ); + logger.warn(`Unable to parse browser from UA ${report.userAgent}`); } continue; @@ -370,8 +377,8 @@ export const update = ( const inferredStatements = inferSupportStatements(versionMap); if (inferredStatements.length !== 1) { // TODO: handle more complicated scenarios - console.warn( - chalk`{yellow warn}: ${path} skipped for ${browser} due to multiple inferred statements`, + logger.warn( + `${path} skipped for ${browser} due to multiple inferred statements`, ); continue; } @@ -504,8 +511,8 @@ export const update = ( if (defaultStatements.length !== 1) { // TODO: handle more complicated scenarios - console.warn( - chalk`{yellow warn}: ${path} skipped for ${browser} due to multiple default statements`, + logger.warn( + `${path} skipped for ${browser} due to multiple default statements`, ); continue; } @@ -514,8 +521,8 @@ export const update = ( if (simpleStatement.version_removed) { // TODO: handle updating existing added+removed entries. - console.warn( - chalk`{yellow warn}: ${path} skipped for ${browser} due to added+removed statement`, + logger.warn( + `${path} skipped for ${browser} due to added+removed statement`, ); continue; } @@ -552,8 +559,8 @@ export const update = ( '<', ) ) { - console.warn( - chalk`{yellow warn}: ${path} skipped for ${browser}; BCD says support was added in a version newer than there are results for`, + logger.warn( + `${path} skipped for ${browser}; BCD says support was added in a version newer than there are results for`, ); continue; } @@ -685,7 +692,7 @@ export const main = async ( if (!modified) { continue; } - console.info(chalk`{green info}: Updating ${path.relative(BCD_DIR, file)}`); + logger.info(`Updating ${path.relative(BCD_DIR, file)}`); const json = JSON.stringify(data, null, ' ') + '\n'; await fs.writeFile(file, json); } From 01d215be94cb3461edd7cc27fe807bd93fc6b25f Mon Sep 17 00:00:00 2001 From: "Michael \"Z\" Goddard" Date: Thu, 1 Jun 2023 16:00:19 -0400 Subject: [PATCH 22/29] add update script tests --- scripts/update.test.ts | 1849 +++++++++++++++++++++++++++++++++++++++ utils/ua-parser.test.ts | 539 ++++++++++++ 2 files changed, 2388 insertions(+) create mode 100644 scripts/update.test.ts create mode 100644 utils/ua-parser.test.ts diff --git a/scripts/update.test.ts b/scripts/update.test.ts new file mode 100644 index 00000000000000..8c4474e92ba30e --- /dev/null +++ b/scripts/update.test.ts @@ -0,0 +1,1849 @@ +/* This file is a part of @mdn/browser-compat-data + * See LICENSE file for more information. */ + +import assert from 'node:assert'; + +import sinon from 'sinon'; +import { Minimatch } from 'minimatch'; + +import { Browsers, CompatData, Identifier } from '../types/types'; + +import { + ManualOverride, + Report, + findEntry, + getSupportMap, + getSupportMatrix, + inferSupportStatements, + logger, + splitRange, + update, +} from './update.js'; + +const clone = (value) => JSON.parse(JSON.stringify(value)); +const chromeAndroid86UaString = + 'Mozilla/5.0 (Linux; Android 10; SM-G960U) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.5112.97 Mobile Safari/537.36'; +const firefox92UaString = + 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:92.0) Gecko/20100101 Firefox/92.0'; + +const overrides = [ + ['css.properties.font-family', 'safari', '5.1', false], + ['css.properties.font-family', 'chrome', '83', false], + ['css.properties.font-face', 'chrome', '*', null], + ['css.properties.font-style', 'chrome', '82-84', false], +] as ManualOverride[]; + +const bcd = { + api: { + AbortController: { + __compat: { + support: { + chrome: { version_added: '80' }, + safari: { version_added: null }, + }, + }, + AbortController: { + __compat: { support: { chrome: { version_added: null } } }, + }, + abort: { + __compat: { support: { chrome: { version_added: '85' } } }, + }, + dummy: { + __compat: { support: { chrome: { version_added: null } } }, + }, + signal: { + __compat: { support: { chrome: { version_added: null } } }, + }, + }, + AudioContext: { + __compat: { + support: { + chrome: [ + { + version_added: null, + }, + { + version_added: '1', + prefix: 'webkit', + }, + ], + }, + }, + close: { + __compat: { support: {} }, + }, + }, + DeprecatedInterface: { + __compat: { support: { chrome: { version_added: null } } }, + }, + DummyAPI: { + __compat: { support: { chrome: { version_added: null } } }, + dummy: { + __compat: { support: { chrome: { version_added: null } } }, + }, + }, + ExperimentalInterface: { + __compat: { + support: { + chrome: [ + { + version_added: '70', + notes: 'Not supported on Windows XP.', + }, + { + version_added: '64', + version_removed: '70', + flags: {}, + notes: 'Not supported on Windows XP.', + }, + { + version_added: '50', + version_removed: '70', + alternative_name: 'TryingOutInterface', + notes: 'Not supported on Windows XP.', + }, + ], + }, + }, + }, + UnflaggedInterface: { + __compat: { + support: { + chrome: [ + { + version_added: '83', + flags: {}, + notes: 'Not supported on Windows XP.', + }, + ], + }, + }, + }, + UnprefixedInterface: { + __compat: { + support: { + chrome: [ + { + version_added: '83', + prefix: 'webkit', + notes: 'Not supported on Windows XP.', + }, + ], + }, + }, + }, + NullAPI: { + __compat: { support: { chrome: { version_added: '80' } } }, + }, + RemovedInterface: { + __compat: { support: { chrome: { version_added: null } } }, + }, + SuperNewInterface: { + __compat: { support: { chrome: { version_added: '100' } } }, + }, + }, + browsers: { + chrome: { name: 'Chrome', releases: { 82: {}, 83: {}, 84: {}, 85: {} } }, + chrome_android: { name: 'Chrome Android', releases: { 85: {} } }, + edge: { name: 'Edge', releases: { 16: {}, 84: {} } }, + safari: { name: 'Safari', releases: { 13: {}, 13.1: {}, 14: {} } }, + safari_ios: { + name: 'iOS Safari', + releases: { 13: {}, 13.3: {}, 13.4: {}, 14: {} }, + }, + samsunginternet_android: { + name: 'Samsung Internet', + releases: { + '10.0': {}, + 10.2: {}, + '11.0': {}, + 11.2: {}, + '12.0': {}, + 12.1: {}, + }, + }, + }, + css: { + properties: { + 'font-family': { + __compat: { support: { chrome: { version_added: null } } }, + }, + 'font-face': { + __compat: { support: { chrome: { version_added: null } } }, + }, + 'font-style': { + __compat: { support: { chrome: { version_added: null } } }, + }, + }, + }, + javascript: { + builtins: { + Array: { + __compat: { support: { chrome: { version_added: null } } }, + }, + Date: { + __compat: { support: { chrome: { version_added: null } } }, + }, + }, + }, +} as any as CompatData; + +const reports: Report[] = [ + { + __version: '0.3.1', + results: { + 'https://mdn-bcd-collector.gooborg.com/tests/': [ + { + name: 'api.AbortController', + exposure: 'Window', + result: true, + }, + { + name: 'api.AbortController.abort', + exposure: 'Window', + result: null, + }, + { + name: 'api.AbortController.AbortController', + exposure: 'Window', + result: false, + }, + { + name: 'api.AudioContext', + exposure: 'Window', + result: false, + }, + { + name: 'api.AudioContext.close', + exposure: 'Window', + result: null, + message: 'threw ReferenceError: AbortController is not defined', + }, + { + name: 'api.DeprecatedInterface', + exposure: 'Window', + result: true, + }, + { + name: 'api.ExperimentalInterface', + exposure: 'Window', + result: true, + }, + { + name: 'api.UnflaggedInterface', + exposure: 'Window', + result: null, + }, + { + name: 'api.UnprefixedInterface', + exposure: 'Window', + result: null, + }, + { + name: 'api.NullAPI', + exposure: 'Window', + result: null, + }, + { + name: 'api.RemovedInterface', + exposure: 'Window', + result: true, + }, + { + name: 'api.SuperNewInterface', + exposure: 'Window', + result: false, + }, + { + name: 'css.properties.font-family', + exposure: 'Window', + result: true, + }, + { + name: 'css.properties.font-face', + exposure: 'Window', + result: true, + }, + { + name: 'css.properties.font-style', + exposure: 'Window', + result: true, + }, + ], + }, + userAgent: + 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.61 Safari/537.36', + }, + { + __version: '0.3.1', + results: { + 'https://mdn-bcd-collector.gooborg.com/tests/': [ + { + name: 'api.AbortController', + exposure: 'Window', + result: true, + }, + { + name: 'api.AbortController.abort', + exposure: 'Window', + result: false, + }, + { + name: 'api.AbortController.abort', + exposure: 'Worker', + result: true, + }, + { + name: 'api.AbortController.AbortController', + exposure: 'Window', + result: false, + }, + { + name: 'api.AudioContext', + exposure: 'Window', + result: false, + }, + { + name: 'api.AudioContext.close', + exposure: 'Window', + result: null, + message: 'threw ReferenceError: AbortController is not defined', + }, + { + name: 'api.DeprecatedInterface', + exposure: 'Window', + result: true, + }, + { + name: 'api.ExperimentalInterface', + exposure: 'Window', + result: true, + }, + { + name: 'api.UnflaggedInterface', + exposure: 'Window', + result: true, + }, + { + name: 'api.UnprefixedInterface', + exposure: 'Window', + result: true, + }, + { + name: 'api.NewInterfaceNotInBCD', + exposure: 'Window', + result: false, + }, + { + name: 'api.NullAPI', + exposure: 'Window', + result: null, + }, + { + name: 'api.RemovedInterface', + exposure: 'Window', + result: false, + }, + { + name: 'api.SuperNewInterface', + exposure: 'Window', + result: false, + }, + { + name: 'css.properties.font-family', + exposure: 'Window', + result: true, + }, + { + name: 'css.properties.font-face', + exposure: 'Window', + result: true, + }, + { + name: 'css.properties.font-style', + exposure: 'Window', + result: true, + }, + ], + }, + userAgent: + 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.89 Safari/537.36', + }, + { + __version: '0.3.1', + results: { + 'https://mdn-bcd-collector.gooborg.com/tests/': [ + { + name: 'api.AbortController', + exposure: 'Window', + result: true, + }, + { + name: 'api.AbortController.abort', + exposure: 'Window', + result: true, + }, + { + name: 'api.AbortController.AbortController', + exposure: 'Window', + result: true, + }, + { + name: 'api.AudioContext', + exposure: 'Window', + result: true, + }, + { + name: 'api.AudioContext.close', + exposure: 'Window', + result: true, + }, + { + name: 'api.DeprecatedInterface', + exposure: 'Window', + result: false, + }, + { + name: 'api.ExperimentalInterface', + exposure: 'Window', + result: true, + }, + { + name: 'api.UnflaggedInterface', + exposure: 'Window', + result: true, + }, + { + name: 'api.UnprefixedInterface', + exposure: 'Window', + result: true, + }, + { + name: 'api.NewInterfaceNotInBCD', + exposure: 'Window', + result: true, + }, + { + name: 'api.NullAPI', + exposure: 'Window', + result: null, + }, + { + name: 'api.RemovedInterface', + exposure: 'Window', + result: true, + }, + { + name: 'api.SuperNewInterface', + exposure: 'Window', + result: false, + }, + { + name: 'css.properties.font-family', + exposure: 'Window', + result: true, + }, + { + name: 'css.properties.font-face', + exposure: 'Window', + result: true, + }, + { + name: 'css.properties.font-style', + exposure: 'Window', + result: true, + }, + ], + }, + userAgent: + 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0.4183.83 Safari/537.36', + }, + { + __version: '0.3.1', + results: { + 'https://mdn-bcd-collector.gooborg.com/tests/': [ + { + name: 'api.AbortController', + exposure: 'Window', + result: false, + }, + ], + }, + userAgent: + 'Mozilla/5.0 (Windows NT 6.3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 YaBrowser/17.6.1.749 Yowser/2.5 Safari/537.36', + }, + { + __version: '0.3.1', + results: { + 'https://mdn-bcd-collector.gooborg.com/tests/': [ + { + name: 'api.AbortController', + exposure: 'Window', + result: false, + }, + ], + }, + userAgent: + 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/1000.1.4183.83 Safari/537.36', + }, + { + __version: '0.3.1', + results: { + 'https://mdn-bcd-collector.gooborg.com/tests/': [ + { + name: 'api.AbortController', + exposure: 'Window', + result: true, + }, + ], + }, + userAgent: + 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_6) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.1.2 Safari/605.1.15', + }, + { + __version: '0.3.1', + results: { + 'https://mdn-bcd-collector.gooborg.com/tests/': [ + { + name: 'api.AbortController', + exposure: 'Window', + result: false, + }, + ], + }, + userAgent: 'node-superagent/1.2.3', + }, +]; + +describe('BCD updater', () => { + describe('findEntry', () => { + it('equal', () => { + assert.strictEqual( + findEntry(bcd as any, 'api.AbortController'), + bcd.api.AbortController, + ); + }); + + it('no path', () => { + assert.strictEqual(findEntry(bcd as any, ''), null); + }); + + it('invalid path', () => { + assert.strictEqual(findEntry(bcd as any, 'api.MissingAPI'), undefined); + }); + }); + + describe('getSupportMap', () => { + it('normal', () => { + assert.deepEqual( + getSupportMap(reports[0]), + new Map([ + ['api.AbortController', true], + ['api.AbortController.abort', null], + ['api.AbortController.AbortController', false], + ['api.AudioContext', false], + ['api.AudioContext.close', false], + ['api.DeprecatedInterface', true], + ['api.ExperimentalInterface', true], + ['api.UnflaggedInterface', null], + ['api.UnprefixedInterface', null], + ['api.NullAPI', null], + ['api.RemovedInterface', true], + ['api.SuperNewInterface', false], + ['css.properties.font-family', true], + ['css.properties.font-face', true], + ['css.properties.font-style', true], + ]), + ); + }); + + it('support in only one exposure', () => { + assert.deepEqual( + getSupportMap(reports[1]), + new Map([ + ['api.AbortController', true], + ['api.AbortController.abort', true], + ['api.AbortController.AbortController', false], + ['api.AudioContext', false], + ['api.AudioContext.close', false], + ['api.DeprecatedInterface', true], + ['api.ExperimentalInterface', true], + ['api.UnflaggedInterface', true], + ['api.UnprefixedInterface', true], + ['api.NewInterfaceNotInBCD', false], + ['api.NullAPI', null], + ['api.RemovedInterface', false], + ['api.SuperNewInterface', false], + ['css.properties.font-family', true], + ['css.properties.font-face', true], + ['css.properties.font-style', true], + ]), + ); + }); + + it('no results', () => { + assert.throws( + () => { + getSupportMap({ + __version: 'test', + results: {}, + userAgent: 'abc/1.2.3-beta', + }); + }, + { message: 'Report for "abc/1.2.3-beta" has no results!' }, + ); + }); + }); + + describe('getSupportMatrix', () => { + beforeEach(() => { + sinon.stub(logger, 'warn'); + }); + + it('normal', () => { + assert.deepEqual( + getSupportMatrix(reports, bcd.browsers, overrides), + new Map([ + [ + 'api.AbortController', + new Map([ + [ + 'chrome', + new Map([ + ['82', null], + ['83', true], + ['84', true], + ['85', true], + ]), + ], + [ + 'safari', + new Map([ + ['13', null], + ['13.1', true], + ['14', null], + ]), + ], + ]), + ], + [ + 'api.AbortController.abort', + new Map([ + [ + 'chrome', + new Map([ + ['82', null], + ['83', null], + ['84', true], + ['85', true], + ]), + ], + ]), + ], + [ + 'api.AbortController.AbortController', + new Map([ + [ + 'chrome', + new Map([ + ['82', null], + ['83', false], + ['84', false], + ['85', true], + ]), + ], + ]), + ], + [ + 'api.AudioContext', + new Map([ + [ + 'chrome', + new Map([ + ['82', null], + ['83', false], + ['84', false], + ['85', true], + ]), + ], + ]), + ], + [ + 'api.AudioContext.close', + new Map([ + [ + 'chrome', + new Map([ + ['82', null], + ['83', false], + ['84', false], + ['85', true], + ]), + ], + ]), + ], + [ + 'api.DeprecatedInterface', + new Map([ + [ + 'chrome', + new Map([ + ['82', null], + ['83', true], + ['84', true], + ['85', false], + ]), + ], + ]), + ], + [ + 'api.ExperimentalInterface', + new Map([ + [ + 'chrome', + new Map([ + ['82', null], + ['83', true], + ['84', true], + ['85', true], + ]), + ], + ]), + ], + [ + 'api.UnflaggedInterface', + new Map([ + [ + 'chrome', + new Map([ + ['82', null], + ['83', null], + ['84', true], + ['85', true], + ]), + ], + ]), + ], + [ + 'api.UnprefixedInterface', + new Map([ + [ + 'chrome', + new Map([ + ['82', null], + ['83', null], + ['84', true], + ['85', true], + ]), + ], + ]), + ], + [ + 'api.NewInterfaceNotInBCD', + new Map([ + [ + 'chrome', + new Map([ + ['82', null], + ['83', null], + ['84', false], + ['85', true], + ]), + ], + ]), + ], + [ + 'api.NullAPI', + new Map([ + [ + 'chrome', + new Map([ + ['82', null], + ['83', null], + ['84', null], + ['85', null], + ]), + ], + ]), + ], + [ + 'api.RemovedInterface', + new Map([ + [ + 'chrome', + new Map([ + ['82', null], + ['83', true], + ['84', false], + ['85', true], + ]), + ], + ]), + ], + [ + 'api.SuperNewInterface', + new Map([ + [ + 'chrome', + new Map([ + ['82', null], + ['83', false], + ['84', false], + ['85', false], + ]), + ], + ]), + ], + [ + 'css.properties.font-family', + new Map([ + [ + 'chrome', + new Map([ + ['82', null], + ['83', false], + ['84', true], + ['85', true], + ]), + ], + ]), + ], + [ + 'css.properties.font-face', + new Map([ + [ + 'chrome', + new Map([ + ['82', null], + ['83', null], + ['84', null], + ['85', null], + ]), + ], + ]), + ], + [ + 'css.properties.font-style', + new Map([ + [ + 'chrome', + new Map([ + ['82', false], + ['83', false], + ['84', false], + ['85', true], + ]), + ], + ]), + ], + ]), + ); + + assert.ok( + (logger.warn as any).calledWith( + 'Ignoring unknown browser Yandex 17.6 (Mozilla/5.0 (Windows NT 6.3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 YaBrowser/17.6.1.749 Yowser/2.5 Safari/537.36)', + ), + ); + assert.ok( + (logger.warn as any).calledWith( + 'Ignoring unknown Chrome version 1000.1 (Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/1000.1.4183.83 Safari/537.36)', + ), + ); + assert.ok( + (logger.warn as any).calledWith( + 'Unable to parse browser from UA node-superagent/1.2.3', + ), + ); + }); + + it('Invalid results', () => { + const report: Report = { + __version: '0.3.1', + results: { + 'https://mdn-bcd-collector.gooborg.com/tests/': [ + { + name: 'api.AbortController', + exposure: 'Window', + result: 87 as any, + }, + ], + }, + userAgent: + 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.61 Safari/537.36', + }; + + assert.throws( + () => { + getSupportMatrix([report], bcd.browsers, overrides); + }, + { message: 'result not true/false/null; got 87' }, + ); + }); + + afterEach(() => { + (logger.warn as any).restore(); + }); + }); + + describe('inferSupportStatements', () => { + const expectedResults = { + 'api.AbortController': { + chrome: [{ version_added: '≤83' }], + safari: [{ version_added: '≤13.1' }], + }, + 'api.AbortController.abort': { chrome: [{ version_added: '≤84' }] }, + 'api.AbortController.AbortController': { + chrome: [{ version_added: '85' }], + }, + 'api.AudioContext': { chrome: [{ version_added: '85' }] }, + 'api.AudioContext.close': { chrome: [{ version_added: '85' }] }, + 'api.DeprecatedInterface': { + chrome: [{ version_added: '≤83', version_removed: '85' }], + }, + 'api.ExperimentalInterface': { chrome: [{ version_added: '≤83' }] }, + 'api.UnflaggedInterface': { chrome: [{ version_added: '≤84' }] }, + 'api.UnprefixedInterface': { chrome: [{ version_added: '≤84' }] }, + 'api.NewInterfaceNotInBCD': { chrome: [{ version_added: '85' }] }, + 'api.NullAPI': { chrome: [] }, + 'api.RemovedInterface': { + chrome: [ + { version_added: '≤83', version_removed: '84' }, + { version_added: '85' }, + ], + }, + 'api.SuperNewInterface': { + chrome: [{ version_added: false }], + }, + 'css.properties.font-family': { chrome: [{ version_added: '84' }] }, + 'css.properties.font-face': { chrome: [] }, + 'css.properties.font-style': { chrome: [{ version_added: '85' }] }, + }; + + const supportMatrix = getSupportMatrix(reports, bcd.browsers, overrides); + for (const [path, browserMap] of supportMatrix.entries()) { + for (const [browser, versionMap] of browserMap.entries()) { + it(`${path}: ${browser}`, () => { + assert.deepEqual( + inferSupportStatements(versionMap), + expectedResults[path][browser], + ); + }); + } + } + + it('Invalid results', () => { + const versionMap = new Map([ + ['82', null], + ['83', 87 as any], + ['84', true], + ['85', true], + ]); + + assert.throws( + () => { + inferSupportStatements(versionMap); + }, + { message: 'result not true/false/null; got 87' }, + ); + }); + + it('non-contiguous data, support added', () => { + const versionMap = new Map([ + ['82', false], + ['83', null], + ['84', true], + ]); + + assert.deepEqual(inferSupportStatements(versionMap), [ + { + version_added: '82> ≤84', + }, + ]); + }); + + it('non-contiguous data, support removed', () => { + const versionMap = new Map([ + ['82', true], + ['83', null], + ['84', false], + ]); + + assert.deepEqual(inferSupportStatements(versionMap), [ + { + version_added: '82', + version_removed: '82> ≤84', + }, + ]); + }); + }); + + describe('splitRange', () => { + it('fails for single versions', () => { + assert.throws( + () => { + splitRange('23'); + }, + { message: 'Unrecognized version range value: "23"' }, + ); + }); + }); + + describe('update', () => { + const supportMatrix = getSupportMatrix(reports, bcd.browsers, overrides); + let bcdCopy; + + beforeEach(() => { + bcdCopy = clone(bcd); + }); + + it('normal', () => { + update(bcdCopy, supportMatrix, {}); + assert.deepEqual(bcdCopy, { + api: { + AbortController: { + __compat: { + support: { + chrome: { version_added: '80' }, + safari: { version_added: '≤13.1' }, + }, + }, + AbortController: { + __compat: { support: { chrome: { version_added: '85' } } }, + }, + abort: { + __compat: { support: { chrome: { version_added: '≤84' } } }, + }, + dummy: { + __compat: { support: { chrome: { version_added: null } } }, + }, + signal: { + __compat: { support: { chrome: { version_added: null } } }, + }, + }, + AudioContext: { + __compat: { + support: { + chrome: [ + { + version_added: '85', + }, + { + version_added: '1', + prefix: 'webkit', + }, + ], + }, + }, + close: { + __compat: { support: { chrome: { version_added: '85' } } }, + }, + }, + DeprecatedInterface: { + __compat: { + support: { + chrome: { + version_added: '≤83', + version_removed: '85', + }, + }, + }, + }, + DummyAPI: { + __compat: { support: { chrome: { version_added: null } } }, + dummy: { + __compat: { support: { chrome: { version_added: null } } }, + }, + }, + ExperimentalInterface: { + __compat: { + support: { + chrome: [ + { + version_added: '70', + notes: 'Not supported on Windows XP.', + }, + { + version_added: '64', + version_removed: '70', + flags: {}, + notes: 'Not supported on Windows XP.', + }, + { + version_added: '50', + version_removed: '70', + alternative_name: 'TryingOutInterface', + notes: 'Not supported on Windows XP.', + }, + ], + }, + }, + }, + UnflaggedInterface: { + __compat: { + support: { + chrome: { + version_added: '≤84', + }, + }, + }, + }, + UnprefixedInterface: { + __compat: { + support: { + chrome: [ + { + version_added: '≤84', + }, + { + version_added: '83', + prefix: 'webkit', + notes: 'Not supported on Windows XP.', + }, + ], + }, + }, + }, + NullAPI: { + __compat: { support: { chrome: { version_added: '80' } } }, + }, + RemovedInterface: { + // TODO: handle more complicated scenarios + // __compat: {support: {chrome: [ + // {version_added: '85'}, + // {version_added: '≤83', version_removed: '84'} + // ]}} + __compat: { support: { chrome: { version_added: null } } }, + }, + SuperNewInterface: { + __compat: { support: { chrome: { version_added: '100' } } }, + }, + }, + browsers: { + chrome: { + name: 'Chrome', + releases: { 82: {}, 83: {}, 84: {}, 85: {} }, + }, + chrome_android: { name: 'Chrome Android', releases: { 85: {} } }, + edge: { name: 'Edge', releases: { 16: {}, 84: {} } }, + safari: { name: 'Safari', releases: { 13: {}, 13.1: {}, 14: {} } }, + safari_ios: { + name: 'iOS Safari', + releases: { 13: {}, 13.3: {}, 13.4: {}, 14: {} }, + }, + samsunginternet_android: { + name: 'Samsung Internet', + releases: { + '10.0': {}, + 10.2: {}, + '11.0': {}, + 11.2: {}, + '12.0': {}, + 12.1: {}, + }, + }, + }, + css: { + properties: { + 'font-family': { + __compat: { support: { chrome: { version_added: '84' } } }, + }, + 'font-face': { + __compat: { support: { chrome: { version_added: null } } }, + }, + 'font-style': { + __compat: { support: { chrome: { version_added: '85' } } }, + }, + }, + }, + javascript: { + builtins: { + Array: { + __compat: { support: { chrome: { version_added: null } } }, + }, + Date: { + __compat: { support: { chrome: { version_added: null } } }, + }, + }, + }, + }); + }); + + it('limit browsers', () => { + update(bcdCopy, supportMatrix, { browser: ['chrome'] }); + assert.deepEqual(bcdCopy.api.AbortController.__compat.support.safari, { + version_added: null, + }); + }); + + describe('mirror', () => { + const chromeAndroid86UaString = + 'Mozilla/5.0 (Linux; Android 10; SM-G960U) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.5112.97 Mobile Safari/537.36'; + const browsers: any = { + chrome: { name: 'Chrome', releases: { 85: {}, 86: {} } }, + chrome_android: { + name: 'Chrome Android', + upstream: 'chrome', + releases: { 86: {} }, + }, + }; + + const bcdFromSupport = (support) => ({ + api: { FakeInterface: { __compat: { support } } }, + }); + + /** + * Create a BCD data structure for an arbitrary web platform feature + * based on support data for Chrome and Chrome Android and test result + * data for Chrome Android. This utility invokes the `update` function + * and is designed to observe the behavior of the "mirror" support value. + * + * @returns {Identifier} + */ + const mirroringCase = ({ support, downstreamResult }): Identifier => { + const reports: Report[] = [ + { + __version: '0.3.1', + results: { + 'https://mdn-bcd-collector.gooborg.com/tests/': [ + { + name: 'api.FakeInterface', + exposure: 'Window', + result: downstreamResult, + }, + ], + }, + userAgent: chromeAndroid86UaString, + }, + ]; + const supportMatrix = getSupportMatrix(reports, browsers, []); + const bcd = bcdFromSupport(support); + update(bcd, supportMatrix, {}); + return bcd; + }; + + describe('supported upstream (without flags)', () => { + it('supported in downstream test results', () => { + const actual = mirroringCase({ + support: { + chrome: { version_added: '86' }, + chrome_android: 'mirror', + }, + downstreamResult: true, + }); + assert.deepEqual( + actual, + bcdFromSupport({ + chrome: { version_added: '86' }, + chrome_android: 'mirror', + }), + ); + }); + + it('unsupported in downstream test results', () => { + const actual = mirroringCase({ + support: { + chrome: { version_added: '85' }, + chrome_android: 'mirror', + }, + downstreamResult: false, + }); + assert.deepEqual( + actual, + bcdFromSupport({ + chrome: { version_added: '85' }, + chrome_android: { version_added: false }, + }), + ); + }); + + it('omitted from downstream test results', () => { + const actual = mirroringCase({ + support: { + chrome: { version_added: '85' }, + chrome_android: 'mirror', + }, + downstreamResult: null, + }); + assert.deepEqual( + actual, + bcdFromSupport({ + chrome: { version_added: '85' }, + chrome_android: 'mirror', + }), + ); + }); + }); + + describe('supported upstream (with flags)', () => { + it('supported in downstream test results', () => { + const actual = mirroringCase({ + support: { + chrome: { version_added: '85', flags: [{}] }, + chrome_android: 'mirror', + }, + downstreamResult: true, + }); + assert.deepEqual( + actual, + bcdFromSupport({ + chrome: { version_added: '85', flags: [{}] }, + chrome_android: { version_added: '86' }, + }), + ); + }); + + it('unsupported in downstream test results', () => { + const actual = mirroringCase({ + support: { + chrome: { version_added: '85', flags: [{}] }, + chrome_android: 'mirror', + }, + downstreamResult: false, + }); + assert.deepEqual( + actual, + bcdFromSupport({ + chrome: { version_added: '85', flags: [{}] }, + chrome_android: 'mirror', + }), + ); + }); + + it('omitted from downstream test results', () => { + const actual = mirroringCase({ + support: { + chrome: { version_added: '85', flags: [{}] }, + chrome_android: 'mirror', + }, + downstreamResult: null, + }); + assert.deepEqual( + actual, + bcdFromSupport({ + chrome: { version_added: '85', flags: [{}] }, + chrome_android: 'mirror', + }), + ); + }); + }); + + describe('partially supported upstream', () => { + it('supported in downstream test results', () => { + const actual = mirroringCase({ + support: { + chrome: { + version_added: '85', + partial_implementation: true, + notes: 'This only works on Tuesdays', + }, + chrome_android: 'mirror', + }, + downstreamResult: true, + }); + assert.deepEqual( + actual, + bcdFromSupport({ + chrome: { + version_added: '85', + partial_implementation: true, + notes: 'This only works on Tuesdays', + }, + chrome_android: 'mirror', + }), + ); + }); + + it('unsupported in downstream test results', () => { + const actual = mirroringCase({ + support: { + chrome: [ + { + version_added: '85', + partial_implementation: true, + impl_url: 'http://zombo.com', + notes: 'This only works on Wednesdays', + }, + { version_added: '84', flags: [{}] }, + ], + chrome_android: 'mirror', + }, + downstreamResult: false, + }); + assert.deepEqual( + actual, + bcdFromSupport({ + chrome: [ + { + version_added: '85', + partial_implementation: true, + impl_url: 'http://zombo.com', + notes: 'This only works on Wednesdays', + }, + { version_added: '84', flags: [{}] }, + ], + chrome_android: { + version_added: false, + }, + }), + ); + }); + + it('omitted from downstream test results', () => { + const actual = mirroringCase({ + support: { + chrome: { + version_added: '85', + partial_implementation: true, + notes: 'This only works on Thursdays', + }, + chrome_android: 'mirror', + }, + downstreamResult: null, + }); + assert.deepEqual( + actual, + bcdFromSupport({ + chrome: { + version_added: '85', + partial_implementation: true, + notes: 'This only works on Thursdays', + }, + chrome_android: 'mirror', + }), + ); + }); + }); + + describe('unsupported upstream', () => { + it('supported in downstream test results', () => { + const actual = mirroringCase({ + support: { + chrome: { version_added: false }, + chrome_android: 'mirror', + }, + downstreamResult: true, + }); + assert.deepEqual( + actual, + bcdFromSupport({ + chrome: { version_added: false }, + chrome_android: { version_added: '86' }, + }), + ); + }); + + it('unsupported in downstream test results', () => { + const actual = mirroringCase({ + support: { + chrome: { version_added: false }, + chrome_android: 'mirror', + }, + downstreamResult: false, + }); + assert.deepEqual( + actual, + bcdFromSupport({ + chrome: { version_added: false }, + chrome_android: 'mirror', + }), + ); + }); + + it('omitted from downstream test results', () => { + const actual = mirroringCase({ + support: { + chrome: { version_added: false }, + chrome_android: 'mirror', + }, + downstreamResult: null, + }); + assert.deepEqual( + actual, + bcdFromSupport({ + chrome: { version_added: false }, + chrome_android: 'mirror', + }), + ); + }); + }); + }); + + it('does not report a modification when results corroborate existing data', () => { + const firefox92UaString = + 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:92.0) Gecko/20100101 Firefox/92.0'; + const initialBcd = { + api: { + AbortController: { + __compat: { + support: { + firefox: { version_added: '92' }, + }, + }, + }, + }, + browsers: { + firefox: { name: 'Firefox', releases: { 92: {} } }, + } as unknown as Browsers, + }; + const finalBcd = clone(initialBcd); + const report: Report = { + __version: '0.3.1', + results: { + 'https://mdn-bcd-collector.gooborg.com/tests/': [ + { + name: 'api.AbortController', + exposure: 'Window', + result: true, + }, + ], + }, + userAgent: firefox92UaString, + }; + + const sm = getSupportMatrix([report], initialBcd.browsers, []); + + const modified = update(finalBcd, sm, {}); + + assert.equal(modified, false, 'modified'); + assert.deepEqual(finalBcd, initialBcd); + }); + + it('retains flag data for unsupported features', () => { + const initialBcd = { + api: { + AbortController: { + __compat: { + support: { + firefox: { version_added: '91', flags: [{}] }, + }, + }, + }, + }, + browsers: { + firefox: { name: 'Firefox', releases: { 91: {}, 92: {}, 93: {} } }, + } as unknown as Browsers, + }; + const finalBcd = clone(initialBcd); + const report: Report = { + __version: '0.3.1', + results: { + 'https://mdn-bcd-collector.gooborg.com/tests/': [ + { + name: 'api.AbortController', + exposure: 'Window', + result: false, + }, + ], + }, + userAgent: firefox92UaString, + }; + + const sm = getSupportMatrix([report], initialBcd.browsers, []); + + const modified = update(finalBcd, sm, {}); + + assert.equal(modified, false, 'modified'); + assert.deepEqual(finalBcd, initialBcd); + }); + + it('no update given partial confirmation of complex support scenario', () => { + const initialBcd: any = { + api: { + AbortController: { + __compat: { + support: { + firefox: [ + { version_added: '92' }, + { + version_added: '91', + partial_implementation: true, + notes: '', + }, + ], + }, + }, + }, + }, + browsers: { + firefox: { name: 'Firefox', releases: { 91: {}, 92: {}, 93: {} } }, + }, + }; + const finalBcd = clone(initialBcd); + const report: Report = { + __version: '0.3.1', + results: { + 'https://mdn-bcd-collector.gooborg.com/tests/': [ + { + name: 'api.AbortController', + exposure: 'Window', + result: false, + }, + ], + }, + userAgent: firefox92UaString, + }; + + const sm = getSupportMatrix([report], initialBcd.browsers, []); + + const modified = update(finalBcd, sm, {}); + + assert.equal(modified, false, 'modified'); + assert.deepEqual(finalBcd, initialBcd); + }); + + it('skips complex support scenarios', () => { + const initialBcd: any = { + api: { + AbortController: { + __compat: { + support: { + firefox: [ + { version_added: '94' }, + { + version_added: '93', + partial_implementation: true, + notes: '', + }, + ], + }, + }, + }, + }, + browsers: { + firefox: { + name: 'Firefox', + releases: { 91: {}, 92: {}, 93: {}, 94: {} }, + }, + }, + }; + const finalBcd = clone(initialBcd); + const report: Report = { + __version: '0.3.1', + results: { + 'https://mdn-bcd-collector.gooborg.com/tests/': [ + { + name: 'api.AbortController', + exposure: 'Window', + result: false, + }, + ], + }, + userAgent: firefox92UaString, + }; + + const sm = getSupportMatrix([report], initialBcd.browsers, []); + + const modified = update(finalBcd, sm, {}); + + assert.equal(modified, false, 'modified'); + assert.deepEqual(finalBcd, initialBcd); + }); + + it('skips removed features', () => { + const initialBcd: any = { + api: { + AbortController: { + __compat: { + support: { + firefox: { version_added: '90', version_removed: '91' }, + }, + }, + }, + }, + browsers: { + firefox: { name: 'Firefox', releases: { 90: {}, 91: {}, 92: {} } }, + }, + }; + const finalBcd = clone(initialBcd); + const report: Report = { + __version: '0.3.1', + results: { + 'https://mdn-bcd-collector.gooborg.com/tests/': [ + { + name: 'api.AbortController', + exposure: 'Window', + result: true, + }, + ], + }, + userAgent: firefox92UaString, + }; + + const sm = getSupportMatrix([report], initialBcd.browsers, []); + + const modified = update(finalBcd, sm, {}); + + assert.equal(modified, false, 'modified'); + assert.deepEqual(finalBcd, initialBcd); + }); + + it('persists non-default statements', () => { + const initialBcd: any = { + api: { + AbortController: { + __compat: { + support: { + firefox: { version_added: '91', prefix: 'moz' }, + }, + }, + }, + }, + browsers: { + firefox: { name: 'Firefox', releases: { 91: {}, 92: {}, 93: {} } }, + }, + }; + const finalBcd = clone(initialBcd); + const report: Report = { + __version: '0.3.1', + results: { + 'https://mdn-bcd-collector.gooborg.com/tests/': [ + { + name: 'api.AbortController', + exposure: 'Window', + result: true, + }, + ], + }, + userAgent: firefox92UaString, + }; + const expectedBcd = clone(initialBcd); + expectedBcd.api.AbortController.__compat.support.firefox = [ + { + version_added: '≤92', + }, + { + prefix: 'moz', + version_added: '91', + }, + ]; + + const sm = getSupportMatrix([report], initialBcd.browsers, []); + + const modified = update(finalBcd, sm, {}); + + assert(modified, 'modified'); + assert.deepEqual(finalBcd, expectedBcd); + }); + + it('overrides existing support information in response to negative test results', () => { + const initialBcd: any = { + api: { + AbortController: { + __compat: { + support: { + firefox: { version_added: '91' }, + }, + }, + }, + }, + browsers: { + firefox: { name: 'Firefox', releases: { 91: {}, 92: {}, 93: {} } }, + }, + }; + const finalBcd = clone(initialBcd); + const report: Report = { + __version: '0.3.1', + results: { + 'https://mdn-bcd-collector.gooborg.com/tests/': [ + { + name: 'api.AbortController', + exposure: 'Window', + result: false, + }, + ], + }, + userAgent: firefox92UaString, + }; + const expectedBcd = clone(initialBcd); + expectedBcd.api.AbortController.__compat.support.firefox.version_added = + false; + + const sm = getSupportMatrix([report], initialBcd.browsers, []); + + const modified = update(finalBcd, sm, {}); + + assert(modified, 'modified'); + assert.deepEqual(finalBcd, expectedBcd); + }); + + describe('filtering', () => { + let expectedBcd; + beforeEach(() => { + expectedBcd = clone(bcd); + }); + + it('path', () => { + const filter = { + path: new Minimatch('css.properties.*'), + }; + expectedBcd.css.properties[ + 'font-family' + ].__compat.support.chrome.version_added = '84'; + expectedBcd.css.properties[ + 'font-style' + ].__compat.support.chrome.version_added = '85'; + + const modified = update(bcdCopy, supportMatrix, filter); + + assert(modified, 'modified'); + assert.deepEqual(bcdCopy, expectedBcd); + }); + + it('release', () => { + const filter = { release: '84' }; + expectedBcd.css.properties[ + 'font-family' + ].__compat.support.chrome.version_added = '84'; + + const modified = update(bcdCopy, supportMatrix, filter); + + assert(modified, 'modified'); + assert.deepEqual(bcdCopy, expectedBcd); + }); + }); + + it('persists "mirror" when test results align with support data', () => { + const initialBcd = { + api: { + AbortController: { + __compat: { + support: { + chrome: { version_added: '86' }, + chrome_android: 'mirror', + }, + }, + }, + }, + browsers: { + chrome: { name: 'Chrome', releases: { 85: {}, 86: {} } }, + chrome_android: { + name: 'Chrome Android', + upstream: 'chrome', + releases: { 86: {} }, + }, + } as unknown as Browsers, + }; + const finalBcd = clone(initialBcd); + const report: Report = { + __version: '0.3.1', + results: { + 'https://mdn-bcd-collector.gooborg.com/tests/': [ + { + name: 'api.AbortController', + exposure: 'Window', + result: true, + }, + ], + }, + userAgent: chromeAndroid86UaString, + }; + + const sm = getSupportMatrix([report], initialBcd.browsers, []); + + const modified = update(finalBcd, sm, {}); + + assert.equal(modified, false, 'modified'); + assert.deepEqual(finalBcd, initialBcd); + }); + }); +}); diff --git a/utils/ua-parser.test.ts b/utils/ua-parser.test.ts new file mode 100644 index 00000000000000..de23caa9d2d2cb --- /dev/null +++ b/utils/ua-parser.test.ts @@ -0,0 +1,539 @@ +/* This file is a part of @mdn/browser-compat-data + * See LICENSE file for more information. */ + +import assert from 'node:assert'; + +import { getMajorMinorVersion, parseUA } from './ua-parser.js'; + +const browsers = { + chrome: { name: 'Chrome', releases: { 82: {}, 83: {}, 84: {}, 85: {} } }, + chrome_android: { name: 'Chrome Android', releases: { 85: {} } }, + edge: { name: 'Edge', releases: { 16: {}, 84: {} } }, + firefox: { name: 'Firefox', releases: { 3.6: {} } }, + ie: { name: 'Internet Explorer', releases: { 8: {}, 11: {} } }, + safari: { + name: 'Safari', + releases: { 13: {}, 13.1: {}, 14: {}, 15: {}, 15.1: {}, 15.2: {} }, + }, + safari_ios: { + name: 'iOS Safari', + releases: { 13: {}, 13.3: {}, 13.4: {}, 14: {} }, + }, + samsunginternet_android: { + name: 'Samsung Internet', + releases: { + '10.0': {}, + 10.2: {}, + '11.0': {}, + 11.2: {}, + '12.0': {}, + 12.1: {}, + }, + }, + webview_android: { + name: 'WebView Android', + releases: { 1.1: {}, 4.4: {}, '4.4.3': {}, 37: {}, 86: {} }, + }, +}; + +describe('getMajorMinorVersion', () => { + it('1.2.3', () => { + assert.strictEqual(getMajorMinorVersion('1.2.3'), '1.2'); + }); + + it('10', () => { + assert.strictEqual(getMajorMinorVersion('10'), '10.0'); + }); + + it('10.0', () => { + assert.strictEqual(getMajorMinorVersion('10.0'), '10.0'); + }); + + it('10.01', () => { + assert.strictEqual(getMajorMinorVersion('10.01'), '10.01'); + }); + + it('10.1', () => { + assert.strictEqual(getMajorMinorVersion('10.1'), '10.1'); + }); + + it('58.0.3029.110', () => { + assert.strictEqual(getMajorMinorVersion('58.0.3029.110'), '58.0'); + }); +}); + +describe('parseUA', () => { + it('Chrome', () => { + assert.deepEqual( + parseUA( + 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0.4183.121 Safari/537.36', + browsers, + ), + { + browser: { id: 'chrome', name: 'Chrome' }, + version: '85', + fullVersion: '85.0.4183.121', + os: { name: 'Mac OS', version: '10.15.6' }, + inBcd: true, + }, + ); + }); + + it('Chrome 1000.1 (not in BCD)', () => { + assert.deepEqual( + parseUA( + 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/1000.1.4183.121 Safari/537.36', + browsers, + ), + { + browser: { id: 'chrome', name: 'Chrome' }, + version: '1000.1', + fullVersion: '1000.1.4183.121', + os: { name: 'Mac OS', version: '10.15.6' }, + inBcd: false, + }, + ); + }); + + it('Chrome Android', () => { + assert.deepEqual( + parseUA( + 'Mozilla/5.0 (Linux; Android 11; Pixel 2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0.4183.101 Mobile Safari/537.36', + browsers, + ), + { + browser: { id: 'chrome_android', name: 'Chrome Android' }, + version: '85', + fullVersion: '85.0.4183.101', + os: { name: 'Android', version: '11' }, + inBcd: true, + }, + ); + }); + + it('Edge (EdgeHTML)', () => { + assert.deepEqual( + parseUA( + 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36 Edge/16.16299', + browsers, + ), + { + browser: { id: 'edge', name: 'Edge' }, + version: '16', + fullVersion: '16.16299', + os: { name: 'Windows', version: '10' }, + inBcd: true, + }, + ); + }); + + it('Edge (Chromium)', () => { + assert.deepEqual( + parseUA( + 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.125 Safari/537.36 Edg/84.0.522.59', + browsers, + ), + { + browser: { id: 'edge', name: 'Edge' }, + version: '84', + fullVersion: '84.0.522.59', + os: { name: 'Windows', version: '10' }, + inBcd: true, + }, + ); + }); + + it('Firefox 3.6.17', () => { + assert.deepEqual( + parseUA( + 'Mozilla/5.0 (Windows; U; Windows NT 5.2; en-US; rv:1.9.2.17) Gecko/20110420 Firefox/3.6.17 (.NET CLR 3.5.21022)', + browsers, + ), + { + browser: { id: 'firefox', name: 'Firefox' }, + version: '3.6', + fullVersion: '3.6.17', + os: { name: 'Windows', version: 'XP' }, + inBcd: true, + }, + ); + }); + + it('Internet Explorer (Windows XP)', () => { + assert.deepEqual( + parseUA( + 'Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.2; Trident/4.0; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022)', + browsers, + ), + { + browser: { id: 'ie', name: 'Internet Explorer' }, + version: '8', + fullVersion: '8.0', + os: { name: 'Windows', version: 'XP' }, + inBcd: true, + }, + ); + }); + + it('Internet Explorer (Windows 7)', () => { + assert.deepEqual( + parseUA( + 'Mozilla/5.0 (Windows NT 6.1; WOW64; Trident/7.0; rv:11.0) like Gecko', + browsers, + ), + { + browser: { id: 'ie', name: 'Internet Explorer' }, + version: '11', + fullVersion: '11.0', + os: { name: 'Windows', version: '7' }, + inBcd: true, + }, + ); + }); + + it('Oculus Browser', () => { + assert.deepEqual( + parseUA( + 'Mozilla/5.0 (Linux; Android 7.0; SM-G920I Build/NRD90M) AppleWebKit/537.36 (KHTML, like Gecko) OculusBrowser/3.4.9 SamsungBrowser/4.0 Chrome/57.0.2987.146 Mobile VR Safari/537.36', + browsers, + ), + { + browser: { id: 'oculus', name: 'Oculus Browser' }, + version: '3.4', + fullVersion: '3.4.9', + os: { name: 'Android', version: '7.0' }, + inBcd: undefined, + }, + ); + }); + + it('Safari 14', () => { + assert.deepEqual( + parseUA( + 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_6) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.0 Safari/605.1.15', + browsers, + ), + { + browser: { id: 'safari', name: 'Safari' }, + version: '14', + fullVersion: '14.0', + os: { name: 'Mac OS', version: '10.15.6' }, + inBcd: true, + }, + ); + }); + + it('Safari 14.1 (read as Safari 14)', () => { + assert.deepEqual( + parseUA( + 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_6) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.1 Safari/605.1.15', + browsers, + ), + { + browser: { id: 'safari', name: 'Safari' }, + version: '14', + fullVersion: '14.1', + os: { name: 'Mac OS', version: '10.15.6' }, + inBcd: true, + }, + ); + }); + + it('Safari 15', () => { + assert.deepEqual( + parseUA( + 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_6) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/15.0 Safari/605.1.15', + browsers, + ), + { + browser: { id: 'safari', name: 'Safari' }, + version: '15', + fullVersion: '15.0', + os: { name: 'Mac OS', version: '10.15.6' }, + inBcd: true, + }, + ); + }); + + it('Safari 15.2', () => { + assert.deepEqual( + parseUA( + 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_6) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/15.2 Safari/605.1.15', + browsers, + ), + { + browser: { id: 'safari', name: 'Safari' }, + version: '15.2', + fullVersion: '15.2', + os: { name: 'Mac OS', version: '10.15.6' }, + inBcd: true, + }, + ); + }); + + it('Safari 15.3 (not in BCD)', () => { + assert.deepEqual( + parseUA( + 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_6) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/15.3 Safari/605.1.15', + browsers, + ), + { + browser: { id: 'safari', name: 'Safari' }, + version: '15.3', + fullVersion: '15.3', + os: { name: 'Mac OS', version: '10.15.6' }, + inBcd: false, + }, + ); + }); + + it('Safari 16 (not in BCD)', () => { + assert.deepEqual( + parseUA( + 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_6) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/16.0 Safari/605.1.15', + browsers, + ), + { + browser: { id: 'safari', name: 'Safari' }, + version: '16.0', + fullVersion: '16.0', + os: { name: 'Mac OS', version: '10.15.6' }, + inBcd: false, + }, + ); + }); + + it('Safari 7.1 (ignored)', () => { + assert.deepEqual( + parseUA( + 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_6) AppleWebKit/600.8.9 (KHTML, like Gecko) Version/7.1 Safari/600.8.9', + browsers, + ), + { + browser: { id: 'safari', name: 'Safari' }, + version: '7.1', + fullVersion: '7.1', + os: { name: 'Mac OS', version: '10.15.6' }, + inBcd: false, + }, + ); + }); + + it('Safari iOS', () => { + assert.deepEqual( + parseUA( + 'Mozilla/5.0 (iPhone; CPU iPhone OS 13_5_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.1.1 Mobile/15E148 Safari/604.1', + browsers, + ), + { + browser: { id: 'safari_ios', name: 'iOS Safari' }, + version: '13.4', + fullVersion: '13.5.1', + os: { name: 'iOS', version: '13.5.1' }, + inBcd: true, + }, + ); + }); + + it('Samsung Internet 10.1 (read as 10.0)', () => { + assert.deepEqual( + parseUA( + 'Mozilla/5.0 (Linux; Android 9; SAMSUNG SM-G960U) AppleWebKit/537.36 (KHTML, like Gecko) SamsungBrowser/10.1 Chrome/71.0.3578.99 Mobile Safari/537.36', + browsers, + ), + { + browser: { id: 'samsunginternet_android', name: 'Samsung Internet' }, + version: '10.0', + fullVersion: '10.1', + os: { name: 'Android', version: '9' }, + inBcd: true, + }, + ); + }); + + it('Samsung Internet 12.0', () => { + assert.deepEqual( + parseUA( + 'Mozilla/5.0 (Linux; Android 11; Pixel 2) AppleWebKit/537.36 (KHTML, like Gecko) SamsungBrowser/12.0 Chrome/79.0.3945.136 Mobile Safari/537.36', + browsers, + ), + { + browser: { id: 'samsunginternet_android', name: 'Samsung Internet' }, + version: '12.0', + fullVersion: '12.0', + os: { name: 'Android', version: '11' }, + inBcd: true, + }, + ); + }); + + it('Samsung Internet 12.1', () => { + assert.deepEqual( + parseUA( + 'Mozilla/5.0 (Linux; Android 11; Pixel 2) AppleWebKit/537.36 (KHTML, like Gecko) SamsungBrowser/12.1 Chrome/79.0.3945.136 Mobile Safari/537.36', + browsers, + ), + { + browser: { id: 'samsunginternet_android', name: 'Samsung Internet' }, + version: '12.1', + fullVersion: '12.1', + os: { name: 'Android', version: '11' }, + inBcd: true, + }, + ); + }); + + it('Samsung Internet 12.2 (not in BCD)', () => { + assert.deepEqual( + parseUA( + 'Mozilla/5.0 (Linux; Android 11; Pixel 2) AppleWebKit/537.36 (KHTML, like Gecko) SamsungBrowser/12.2 Chrome/79.0.3945.136 Mobile Safari/537.36', + browsers, + ), + { + browser: { id: 'samsunginternet_android', name: 'Samsung Internet' }, + version: '12.2', + fullVersion: '12.2', + os: { name: 'Android', version: '11' }, + inBcd: false, + }, + ); + }); + + it('WebView Android (Android Browser, 1.1)', () => { + assert.deepEqual( + parseUA( + 'Mozilla/5.0 (Linux; U; Android 1.1; en-us; generic) AppleWebKit/525.10+ (KHTML, like Gecko) Version/3.0.4 Mobile Safari/523.12.2', + browsers, + ), + { + browser: { id: 'webview_android', name: 'WebView Android' }, + version: '1.1', + fullVersion: '1.1', + os: { name: 'Android', version: '1.1' }, + inBcd: true, + }, + ); + }); + + it('WebView Android (Android Browser, 4.4.2, Chrome 30)', () => { + assert.deepEqual( + parseUA( + 'Mozilla/5.0 (Linux; Android 4.4.2; Android SDK built for x86 Build/KK) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/30.0.0.0 Mobile Safari/537.36', + browsers, + ), + { + browser: { id: 'webview_android', name: 'WebView Android' }, + version: '4.4', + fullVersion: '4.4.2', + os: { name: 'Android', version: '4.4.2' }, + inBcd: true, + }, + ); + }); + + it('WebView Android (Android Browser, 4.4.3, Chrome 33)', () => { + assert.deepEqual( + parseUA( + 'Mozilla/5.0 (Linux; U; Android 4.4.3; en-us; HTC_0P6B130 Build/KTU84L) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30', + browsers, + ), + { + browser: { id: 'webview_android', name: 'WebView Android' }, + version: '4.4.3', + fullVersion: '4.4.3', + os: { name: 'Android', version: '4.4.3' }, + inBcd: true, + }, + ); + }); + + it('WebView Android (Android Browser, 4.4.4, Chrome 33)', () => { + assert.deepEqual( + parseUA( + 'Mozilla/5.0 (Linux; U; Android 4.4.4; en-us; HTC_0P6B130 Build/KTU84L) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30', + browsers, + ), + { + browser: { id: 'webview_android', name: 'WebView Android' }, + version: '4.4.3', + fullVersion: '4.4.4', + os: { name: 'Android', version: '4.4.4' }, + inBcd: true, + }, + ); + }); + + it('WebView Android (Android Browser, 5.0.2, Chrome 37)', () => { + assert.deepEqual( + parseUA( + 'Mozilla/5.0 (Linux; Android 5.0.2; Android SDK built for x86_64 Build/LSY66K) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/37.0.0.0 Mobile Safari/537.36', + browsers, + ), + { + browser: { id: 'webview_android', name: 'WebView Android' }, + version: '37', + fullVersion: '37.0.0.0', + os: { name: 'Android', version: '5.0.2' }, + inBcd: true, + }, + ); + }); + + it('WebView Android (11, Chrome 86)', () => { + assert.deepEqual( + parseUA( + 'Mozilla/5.0 (Linux; Android 11; Pixel 2 Build/RP1A.200720.009; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/86.0.4240.198 Mobile Safari/537.36 WEBVIEW TEST/1.2.1.80 (Phone; anonymous)', + browsers, + ), + { + browser: { id: 'webview_android', name: 'WebView Android' }, + version: '86', + fullVersion: '86.0.4240.198', + os: { name: 'Android', version: '11' }, + inBcd: true, + }, + ); + }); + + it('Chrome on iOS (not in BCD)', () => { + assert.deepEqual( + parseUA( + 'Mozilla/5.0 (iPad; CPU OS 14_6 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) CriOS/91.0.4472.80 Mobile/15E148 Safari/604.1', + browsers, + ), + { + browser: { id: 'chrome_ios', name: 'Chrome iOS' }, + version: '14.6', + fullVersion: '14.6', + os: { name: 'iOS', version: '14.6' }, + inBcd: undefined, + }, + ); + }); + + it('Yandex Browser (not in BCD)', () => { + assert.deepEqual( + parseUA( + 'Mozilla/5.0 (Windows NT 6.3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 YaBrowser/17.6.1.749 Yowser/2.5 Safari/537.36', + browsers, + ), + { + browser: { id: 'yandex', name: 'Yandex' }, + version: '17.6', + fullVersion: '17.6.1.749', + os: { name: 'Windows', version: '8.1' }, + inBcd: undefined, + }, + ); + }); + + it('node-superagent (unparseable)', () => { + assert.deepEqual(parseUA('node-superagent/1.2.3', browsers), { + browser: { id: '', name: '' }, + version: '', + fullVersion: '', + os: { name: '', version: '' }, + inBcd: undefined, + }); + }); +}); From cbd5d11f2034925cefda1d1c2197f0287da6c0b0 Mon Sep 17 00:00:00 2001 From: "Michael \"Z\" Goddard" Date: Thu, 1 Jun 2023 16:00:53 -0400 Subject: [PATCH 23/29] fixup! add depedencies --- package.json | 2 ++ 1 file changed, 2 insertions(+) diff --git a/package.json b/package.json index 60bc412cf6176a..bb140e31bc394b 100644 --- a/package.json +++ b/package.json @@ -35,6 +35,7 @@ "@types/deep-diff": "~1.0.1", "@types/mocha": "~10.0.0", "@types/node": "~20.2.0", + "@types/sinon": "^10.0.15", "@types/yargs": "~17.0.10", "@typescript-eslint/eslint-plugin": "~5.59.0", "@typescript-eslint/parser": "^5.44.0", @@ -70,6 +71,7 @@ "open-cli": "~7.2.0", "ora": "~6.3.0", "prettier": "~2.8.0", + "sinon": "^15.1.0", "ts-node": "~10.9.1", "typescript": "~5.0.2", "ua-parser-js": "1.0.35", From 4279091cd92e0b78d5848b69f8408296e4767665 Mon Sep 17 00:00:00 2001 From: "Michael \"Z\" Goddard" Date: Thu, 1 Jun 2023 16:01:00 -0400 Subject: [PATCH 24/29] fixup! bump package-lock --- package-lock.json | 146 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 146 insertions(+) diff --git a/package-lock.json b/package-lock.json index e159ca2348ef86..a7b20e4dca3fa2 100644 --- a/package-lock.json +++ b/package-lock.json @@ -17,6 +17,7 @@ "@types/deep-diff": "~1.0.1", "@types/mocha": "~10.0.0", "@types/node": "~20.2.0", + "@types/sinon": "^10.0.15", "@types/yargs": "~17.0.10", "@typescript-eslint/eslint-plugin": "~5.59.0", "@typescript-eslint/parser": "^5.44.0", @@ -52,6 +53,7 @@ "open-cli": "~7.2.0", "ora": "~6.3.0", "prettier": "~2.8.0", + "sinon": "^15.1.0", "ts-node": "~10.9.1", "typescript": "~5.0.2", "ua-parser-js": "1.0.35", @@ -941,6 +943,50 @@ "url": "https://github.com/sindresorhus/is?sponsor=1" } }, + "node_modules/@sinonjs/commons": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-3.0.0.tgz", + "integrity": "sha512-jXBtWAF4vmdNmZgD5FoKsVLv3rPgDnLgPbU84LIJ3otV44vJlDRokVng5v8NFJdCf/da9legHcKaRuZs4L7faA==", + "dev": true, + "dependencies": { + "type-detect": "4.0.8" + } + }, + "node_modules/@sinonjs/fake-timers": { + "version": "10.2.0", + "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-10.2.0.tgz", + "integrity": "sha512-OPwQlEdg40HAj5KNF8WW6q2KG4Z+cBCZb3m4ninfTZKaBmbIJodviQsDBoYMPHkOyJJMHnOJo5j2+LKDOhOACg==", + "dev": true, + "dependencies": { + "@sinonjs/commons": "^3.0.0" + } + }, + "node_modules/@sinonjs/samsam": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@sinonjs/samsam/-/samsam-8.0.0.tgz", + "integrity": "sha512-Bp8KUVlLp8ibJZrnvq2foVhP0IVX2CIprMJPK0vqGqgrDa0OHVKeZyBykqskkrdxV6yKBPmGasO8LVjAKR3Gew==", + "dev": true, + "dependencies": { + "@sinonjs/commons": "^2.0.0", + "lodash.get": "^4.4.2", + "type-detect": "^4.0.8" + } + }, + "node_modules/@sinonjs/samsam/node_modules/@sinonjs/commons": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-2.0.0.tgz", + "integrity": "sha512-uLa0j859mMrg2slwQYdO/AkrOfmH+X6LTVmNTS9CqexuE2IvVORIkSpJLqePAbEnKJ77aMmCwr1NUZ57120Xcg==", + "dev": true, + "dependencies": { + "type-detect": "4.0.8" + } + }, + "node_modules/@sinonjs/text-encoding": { + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/@sinonjs/text-encoding/-/text-encoding-0.7.2.tgz", + "integrity": "sha512-sXXKG+uL9IrKqViTtao2Ws6dy0znu9sOaP1di/jKGW1M6VssO8vlpXCQcpZ+jisQ1tTFAC5Jo/EOzFbggBagFQ==", + "dev": true + }, "node_modules/@swc/cli": { "version": "0.1.62", "resolved": "https://registry.npmjs.org/@swc/cli/-/cli-0.1.62.tgz", @@ -1215,6 +1261,21 @@ "integrity": "sha512-21cFJr9z3g5dW8B0CVI9g2O9beqaThGQ6ZFBqHfwhzLDKUxaqTIy3vnfah/UPkfOiF2pLq+tGz+W8RyCskuslw==", "dev": true }, + "node_modules/@types/sinon": { + "version": "10.0.15", + "resolved": "https://registry.npmjs.org/@types/sinon/-/sinon-10.0.15.tgz", + "integrity": "sha512-3lrFNQG0Kr2LDzvjyjB6AMJk4ge+8iYhQfdnSwIwlG88FUOV43kPcQqDZkDa/h3WSZy6i8Fr0BSjfQtB1B3xuQ==", + "dev": true, + "dependencies": { + "@types/sinonjs__fake-timers": "*" + } + }, + "node_modules/@types/sinonjs__fake-timers": { + "version": "8.1.2", + "resolved": "https://registry.npmjs.org/@types/sinonjs__fake-timers/-/sinonjs__fake-timers-8.1.2.tgz", + "integrity": "sha512-9GcLXF0/v3t80caGs5p2rRfkB+a8VBGLJZVih6CNFkx8IZ994wiKKLSRs9nuFwk1HevWs/1mnUmkApGrSGsShA==", + "dev": true + }, "node_modules/@types/yargs": { "version": "17.0.24", "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.24.tgz", @@ -5883,6 +5944,12 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ==", + "dev": true + }, "node_modules/isexe": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", @@ -6071,6 +6138,12 @@ "node": ">=0.10.0" } }, + "node_modules/just-extend": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/just-extend/-/just-extend-4.2.1.tgz", + "integrity": "sha512-g3UB796vUFIY90VIv/WX3L2c8CS2MdWUww3CNrYmqza1Fg0DURc2K/O4YrnklBdQarSJ/y8JnJYDGc+1iumQjg==", + "dev": true + }, "node_modules/keyv": { "version": "4.5.2", "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.2.tgz", @@ -6427,6 +6500,12 @@ "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", "dev": true }, + "node_modules/lodash.get": { + "version": "4.4.2", + "resolved": "https://registry.npmjs.org/lodash.get/-/lodash.get-4.4.2.tgz", + "integrity": "sha512-z+Uw/vLuy6gQe8cfaFWD7p0wVv8fJl3mbzXh33RS+0oW2wvUqiRXiQ69gLWSLpgB5/6sU+r6BlQR0MBILadqTQ==", + "dev": true + }, "node_modules/lodash.merge": { "version": "4.6.2", "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", @@ -7285,6 +7364,28 @@ "integrity": "sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ==", "dev": true }, + "node_modules/nise": { + "version": "5.1.4", + "resolved": "https://registry.npmjs.org/nise/-/nise-5.1.4.tgz", + "integrity": "sha512-8+Ib8rRJ4L0o3kfmyVCL7gzrohyDe0cMFTBa2d364yIrEGMEoetznKJx899YxjybU6bL9SQkYPSBBs1gyYs8Xg==", + "dev": true, + "dependencies": { + "@sinonjs/commons": "^2.0.0", + "@sinonjs/fake-timers": "^10.0.2", + "@sinonjs/text-encoding": "^0.7.1", + "just-extend": "^4.0.2", + "path-to-regexp": "^1.7.0" + } + }, + "node_modules/nise/node_modules/@sinonjs/commons": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-2.0.0.tgz", + "integrity": "sha512-uLa0j859mMrg2slwQYdO/AkrOfmH+X6LTVmNTS9CqexuE2IvVORIkSpJLqePAbEnKJ77aMmCwr1NUZ57120Xcg==", + "dev": true, + "dependencies": { + "type-detect": "4.0.8" + } + }, "node_modules/node-releases": { "version": "2.0.10", "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.10.tgz", @@ -7810,6 +7911,15 @@ "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", "dev": true }, + "node_modules/path-to-regexp": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-1.8.0.tgz", + "integrity": "sha512-n43JRhlUKUAlibEJhPeir1ncUID16QnEjNpwzNdO3Lm4ywrBpBZ5oLD0I6br9evr1Y9JTqwRtAh7JLoOzAQdVA==", + "dev": true, + "dependencies": { + "isarray": "0.0.1" + } + }, "node_modules/path-type": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", @@ -8593,6 +8703,33 @@ "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", "dev": true }, + "node_modules/sinon": { + "version": "15.1.0", + "resolved": "https://registry.npmjs.org/sinon/-/sinon-15.1.0.tgz", + "integrity": "sha512-cS5FgpDdE9/zx7no8bxROHymSlPLZzq0ChbbLk1DrxBfc+eTeBK3y8nIL+nu/0QeYydhhbLIr7ecHJpywjQaoQ==", + "dev": true, + "dependencies": { + "@sinonjs/commons": "^3.0.0", + "@sinonjs/fake-timers": "^10.2.0", + "@sinonjs/samsam": "^8.0.0", + "diff": "^5.1.0", + "nise": "^5.1.4", + "supports-color": "^7.2.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/sinon" + } + }, + "node_modules/sinon/node_modules/diff": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/diff/-/diff-5.1.0.tgz", + "integrity": "sha512-D+mk+qE8VC/PAUrlAU34N+VfXev0ghe5ywmpqrawphmVZc1bEfn56uo9qpyGp1p4xpzOHkSW4ztBd6L7Xx4ACw==", + "dev": true, + "engines": { + "node": ">=0.3.1" + } + }, "node_modules/slash": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", @@ -9284,6 +9421,15 @@ "node": ">= 0.8.0" } }, + "node_modules/type-detect": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", + "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", + "dev": true, + "engines": { + "node": ">=4" + } + }, "node_modules/type-fest": { "version": "0.21.3", "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", From 2480535e43e35810b1bafd957fd51d60255a8f90 Mon Sep 17 00:00:00 2001 From: "Michael \"Z\" Goddard" Date: Mon, 5 Jun 2023 10:55:49 -0400 Subject: [PATCH 25/29] fixup! add depedencies --- package.json | 1 - 1 file changed, 1 deletion(-) diff --git a/package.json b/package.json index bb140e31bc394b..c535c372545972 100644 --- a/package.json +++ b/package.json @@ -62,7 +62,6 @@ "eslint-plugin-unicorn": "^47.0.0", "fast-json-stable-stringify": "~2.1.0", "fdir": "~6.0.1", - "fs-extra": "11.1.1", "husky": "^8.0.1", "json-schema-to-typescript": "~10.1.5", "lint-staged": "^13.0.3", From 656d320b81fec845c491d937e237006c508eed64 Mon Sep 17 00:00:00 2001 From: "Michael \"Z\" Goddard" Date: Mon, 5 Jun 2023 10:55:53 -0400 Subject: [PATCH 26/29] fixup! bump package-lock --- package-lock.json | 36 ------------------------------------ 1 file changed, 36 deletions(-) diff --git a/package-lock.json b/package-lock.json index a7b20e4dca3fa2..a88471c6d820aa 100644 --- a/package-lock.json +++ b/package-lock.json @@ -44,7 +44,6 @@ "eslint-plugin-unicorn": "^47.0.0", "fast-json-stable-stringify": "~2.1.0", "fdir": "~6.0.1", - "fs-extra": "11.1.1", "husky": "^8.0.1", "json-schema-to-typescript": "~10.1.5", "lint-staged": "^13.0.3", @@ -4976,20 +4975,6 @@ "node": ">=8.0.0" } }, - "node_modules/fs-extra": { - "version": "11.1.1", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.1.1.tgz", - "integrity": "sha512-MGIE4HOvQCeUCzmlHs0vXpih4ysz4wg9qiSAu6cd42lVwPbTM1TjV7RusoyQqMmk/95gdQZX72u+YW+c3eEpFQ==", - "dev": true, - "dependencies": { - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" - }, - "engines": { - "node": ">=14.14" - } - }, "node_modules/fs.realpath": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", @@ -6117,18 +6102,6 @@ "node": ">=6" } }, - "node_modules/jsonfile": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", - "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", - "dev": true, - "dependencies": { - "universalify": "^2.0.0" - }, - "optionalDependencies": { - "graceful-fs": "^4.1.6" - } - }, "node_modules/jsonpointer": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/jsonpointer/-/jsonpointer-5.0.1.tgz", @@ -9518,15 +9491,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/universalify": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", - "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", - "dev": true, - "engines": { - "node": ">= 10.0.0" - } - }, "node_modules/untildify": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/untildify/-/untildify-4.0.0.tgz", From a321360eb4bcec43fa8474b61c0aaabb96f3f8ac Mon Sep 17 00:00:00 2001 From: "Michael \"Z\" Goddard" Date: Thu, 8 Jun 2023 13:04:15 -0400 Subject: [PATCH 27/29] depend on minimatch@5 for update script --- package.json | 3 ++- scripts/update.test.ts | 4 +++- scripts/update.ts | 4 +++- 3 files changed, 8 insertions(+), 3 deletions(-) diff --git a/package.json b/package.json index ef8887782e97e2..ddaa5381103509 100644 --- a/package.json +++ b/package.json @@ -33,6 +33,7 @@ "@swc/cli": "^0.1.62", "@swc/core": "^1.3.36", "@types/deep-diff": "~1.0.1", + "@types/minimatch": "^5.1.2", "@types/mocha": "~10.0.0", "@types/node": "~20.2.0", "@types/sinon": "^10.0.15", @@ -65,7 +66,7 @@ "husky": "^8.0.1", "json-schema-to-typescript": "~13.0.1", "lint-staged": "^13.0.3", - "minimatch": "^9.0.1", + "minimatch": "^5.1.6", "mocha": "~10.2.0", "open-cli": "~7.2.0", "ora": "~6.3.0", diff --git a/scripts/update.test.ts b/scripts/update.test.ts index 8c4474e92ba30e..01fccd167813dc 100644 --- a/scripts/update.test.ts +++ b/scripts/update.test.ts @@ -4,7 +4,7 @@ import assert from 'node:assert'; import sinon from 'sinon'; -import { Minimatch } from 'minimatch'; +import _minimatch from 'minimatch'; import { Browsers, CompatData, Identifier } from '../types/types'; @@ -20,6 +20,8 @@ import { update, } from './update.js'; +const { Minimatch } = _minimatch; + const clone = (value) => JSON.parse(JSON.stringify(value)); const chromeAndroid86UaString = 'Mozilla/5.0 (Linux; Android 10; SM-G960U) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.5112.97 Mobile Safari/537.36'; diff --git a/scripts/update.ts b/scripts/update.ts index f2d1bbd6a836b0..6a66678bcd8df6 100644 --- a/scripts/update.ts +++ b/scripts/update.ts @@ -11,7 +11,7 @@ import { compareVersions as compareVersionsSort, } from 'compare-versions'; import esMain from 'es-main'; -import { Minimatch } from 'minimatch'; +import _minimatch from 'minimatch'; import yargs from 'yargs'; import { hideBin } from 'yargs/helpers'; import chalk from 'chalk-template'; @@ -26,6 +26,8 @@ import { } from '../types/types.js'; import { parseUA } from '../utils/ua-parser.js'; +const { Minimatch } = _minimatch; + type Exposure = 'Window' | 'Worker' | 'SharedWorker' | 'ServiceWorker'; type TestResultValue = boolean | null; From 850c0303b18d9bba4df9298395b40751f600bafe Mon Sep 17 00:00:00 2001 From: "Michael \"Z\" Goddard" Date: Thu, 8 Jun 2023 13:04:42 -0400 Subject: [PATCH 28/29] bump package-lock.json --- package-lock.json | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) diff --git a/package-lock.json b/package-lock.json index 32a5627782ffd6..3b746adc57c243 100644 --- a/package-lock.json +++ b/package-lock.json @@ -15,6 +15,7 @@ "@swc/cli": "^0.1.62", "@swc/core": "^1.3.36", "@types/deep-diff": "~1.0.1", + "@types/minimatch": "^5.1.2", "@types/mocha": "~10.0.0", "@types/node": "~20.2.0", "@types/sinon": "^10.0.15", @@ -47,7 +48,7 @@ "husky": "^8.0.1", "json-schema-to-typescript": "~13.0.1", "lint-staged": "^13.0.3", - "minimatch": "^9.0.1", + "minimatch": "^5.1.6", "mocha": "~10.2.0", "open-cli": "~7.2.0", "ora": "~6.3.0", @@ -7041,18 +7042,15 @@ } }, "node_modules/minimatch": { - "version": "9.0.1", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.1.tgz", - "integrity": "sha512-0jWhJpD/MdhPXwPuiRkCbfYfSKp2qnn2eOc279qI7f+osl/l+prKSrvhg157zSYvx/1nmgn2NqdT6k2Z7zSH9w==", + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", + "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", "dev": true, "dependencies": { "brace-expansion": "^2.0.1" }, "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "node": ">=10" } }, "node_modules/minimatch/node_modules/brace-expansion": { From 879419790bed8c6eab898114f8a2ba5bd0be6b45 Mon Sep 17 00:00:00 2001 From: "Michael \"Z\" Goddard" Date: Tue, 20 Jun 2023 12:14:10 -0400 Subject: [PATCH 29/29] fixup! bump package-lock.json --- package-lock.json | 346 +++++++++++++++++++++++++--------------------- 1 file changed, 186 insertions(+), 160 deletions(-) diff --git a/package-lock.json b/package-lock.json index 251b456007cea3..d8fd59b91e7d99 100644 --- a/package-lock.json +++ b/package-lock.json @@ -959,9 +959,9 @@ } }, "node_modules/@sinonjs/fake-timers": { - "version": "10.2.0", - "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-10.2.0.tgz", - "integrity": "sha512-OPwQlEdg40HAj5KNF8WW6q2KG4Z+cBCZb3m4ninfTZKaBmbIJodviQsDBoYMPHkOyJJMHnOJo5j2+LKDOhOACg==", + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-10.3.0.tgz", + "integrity": "sha512-V4BG07kuYSUkTCSBHG8G8TNhM+F19jXFWnQtzj+we8DrkpSBCee9Z3Ms8yiGer/dlmhe35/Xdgyo3/0rQKg7YA==", "dev": true, "dependencies": { "@sinonjs/commons": "^3.0.0" @@ -1058,9 +1058,9 @@ "dev": true }, "node_modules/@swc/core": { - "version": "1.3.56", - "resolved": "https://registry.npmjs.org/@swc/core/-/core-1.3.56.tgz", - "integrity": "sha512-yz/EeXT+PMZucUNrYceRUaTfuNS4IIu5EDZSOlvCEvm4jAmZi7CYH1B/kvzEzoAOzr7zkQiDPNJftcQXLkjbjA==", + "version": "1.3.66", + "resolved": "https://registry.npmjs.org/@swc/core/-/core-1.3.66.tgz", + "integrity": "sha512-Hpf91kH5ly7fHkWnApwryTQryT+TO4kMMPH3WyciUSQOWLE3UuQz1PtETHQQk7PZ/b1QF0qQurJrgfBr5bSKUA==", "dev": true, "hasInstallScript": true, "engines": { @@ -1071,16 +1071,16 @@ "url": "https://opencollective.com/swc" }, "optionalDependencies": { - "@swc/core-darwin-arm64": "1.3.56", - "@swc/core-darwin-x64": "1.3.56", - "@swc/core-linux-arm-gnueabihf": "1.3.56", - "@swc/core-linux-arm64-gnu": "1.3.56", - "@swc/core-linux-arm64-musl": "1.3.56", - "@swc/core-linux-x64-gnu": "1.3.56", - "@swc/core-linux-x64-musl": "1.3.56", - "@swc/core-win32-arm64-msvc": "1.3.56", - "@swc/core-win32-ia32-msvc": "1.3.56", - "@swc/core-win32-x64-msvc": "1.3.56" + "@swc/core-darwin-arm64": "1.3.66", + "@swc/core-darwin-x64": "1.3.66", + "@swc/core-linux-arm-gnueabihf": "1.3.66", + "@swc/core-linux-arm64-gnu": "1.3.66", + "@swc/core-linux-arm64-musl": "1.3.66", + "@swc/core-linux-x64-gnu": "1.3.66", + "@swc/core-linux-x64-musl": "1.3.66", + "@swc/core-win32-arm64-msvc": "1.3.66", + "@swc/core-win32-ia32-msvc": "1.3.66", + "@swc/core-win32-x64-msvc": "1.3.66" }, "peerDependencies": { "@swc/helpers": "^0.5.0" @@ -1092,9 +1092,9 @@ } }, "node_modules/@swc/core-darwin-arm64": { - "version": "1.3.56", - "resolved": "https://registry.npmjs.org/@swc/core-darwin-arm64/-/core-darwin-arm64-1.3.56.tgz", - "integrity": "sha512-DZcu7BzDaLEdWHabz9DRTP0yEBLqkrWmskFcD5BX0lGAvoIvE4duMnAqi5F2B3X7630QioHRCYFoRw2WkeE3Cw==", + "version": "1.3.66", + "resolved": "https://registry.npmjs.org/@swc/core-darwin-arm64/-/core-darwin-arm64-1.3.66.tgz", + "integrity": "sha512-UijJsvuLy73vxeVYEy7urIHksXS+3BdvJ9s9AY+bRMSQW483NO7RLp8g4FdTyJbRaN0BH15SQnY0dcjQBkVuHw==", "cpu": [ "arm64" ], @@ -1107,6 +1107,150 @@ "node": ">=10" } }, + "node_modules/@swc/core-darwin-x64": { + "version": "1.3.66", + "resolved": "https://registry.npmjs.org/@swc/core-darwin-x64/-/core-darwin-x64-1.3.66.tgz", + "integrity": "sha512-xGsHKvViQnwTNLF30Y/5OqWdnN6RsiyUI8awZXfz1sHcXCEaLe+v+WLQ+/E8sgw0YUkYVHzzfV/sAN2CezJK5Q==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/core-linux-arm-gnueabihf": { + "version": "1.3.66", + "resolved": "https://registry.npmjs.org/@swc/core-linux-arm-gnueabihf/-/core-linux-arm-gnueabihf-1.3.66.tgz", + "integrity": "sha512-gNbLcSIV2pq90BkMSpzvK4xPXOl8GEF3YR4NaqF0CYSzQsVXXTTqMuX/r26xNYudBKzH0345S1MpoRk2qricnA==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/core-linux-arm64-gnu": { + "version": "1.3.66", + "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-gnu/-/core-linux-arm64-gnu-1.3.66.tgz", + "integrity": "sha512-cJSQ0oplyWbJqy4rzVcnBYLAi6z1QT3QCcR7iAey0aAmCvfRBZJfXlyjggMjn4iosuadkauwCZR1xYNhBDRn7w==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/core-linux-arm64-musl": { + "version": "1.3.66", + "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-musl/-/core-linux-arm64-musl-1.3.66.tgz", + "integrity": "sha512-GDQZpcB9aGxG9PTA2shdIkoMZlGK5omJ8NR49uoBTtLBVYiGeXAwV0U1Uaw8kXEZj9i7wZDkvjzjSaNH3evRsg==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/core-linux-x64-gnu": { + "version": "1.3.66", + "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-gnu/-/core-linux-x64-gnu-1.3.66.tgz", + "integrity": "sha512-lg8E4O/Pd9KfK0lajdinVMuGME8dSv7V9arhEpmlfGE2eXSDCWqDn5Htk5QVBstt9lt1lsRhWHJ/YYc2eQY30Q==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/core-linux-x64-musl": { + "version": "1.3.66", + "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-musl/-/core-linux-x64-musl-1.3.66.tgz", + "integrity": "sha512-lo8ZcAO/zL2pZWH+LZIyge8u2MklaeuT6+FpVVpBFktMVdYXbaVtzpvWbgRFBZHvL3SRDF+u8jxjtkXhvGUpTw==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/core-win32-arm64-msvc": { + "version": "1.3.66", + "resolved": "https://registry.npmjs.org/@swc/core-win32-arm64-msvc/-/core-win32-arm64-msvc-1.3.66.tgz", + "integrity": "sha512-cQoVwBuJY5WkHbfpCOlndNwYr1ZThatRjQQvKy540NUIeAEk9Fa6ozlDBtU75UdaWKtUG6YQ/bWz+KTemheVxw==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/core-win32-ia32-msvc": { + "version": "1.3.66", + "resolved": "https://registry.npmjs.org/@swc/core-win32-ia32-msvc/-/core-win32-ia32-msvc-1.3.66.tgz", + "integrity": "sha512-y/FrAIINK4UBeUQQknGlWXEyjo+MBvjF7WkUf2KP7sNr9EHHy8+dXohAGd5Anz0eJrqOM1ZXR/GEjxRp7bGQ1Q==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/core-win32-x64-msvc": { + "version": "1.3.66", + "resolved": "https://registry.npmjs.org/@swc/core-win32-x64-msvc/-/core-win32-x64-msvc-1.3.66.tgz", + "integrity": "sha512-yI64ACzS14qFLrfyO12qW+f/UROTotzDeEbuyJAaPD2IZexoT1cICznI3sBmIfrSt33mVuW8eF5m3AG/NUImzw==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=10" + } + }, "node_modules/@szmarczak/http-timer": { "version": "4.0.6", "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-4.0.6.tgz", @@ -1365,14 +1509,14 @@ "dev": true }, "node_modules/@typescript-eslint/parser": { - "version": "5.59.2", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.59.2.tgz", - "integrity": "sha512-uq0sKyw6ao1iFOZZGk9F8Nro/8+gfB5ezl1cA06SrqbgJAt0SRoFhb9pXaHvkrxUpZaoLxt8KlovHNk8Gp6/HQ==", + "version": "5.60.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.60.0.tgz", + "integrity": "sha512-jBONcBsDJ9UoTWrARkRRCgDz6wUggmH5RpQVlt7BimSwaTkTjwypGzKORXbR4/2Hqjk9hgwlon2rVQAjWNpkyQ==", "dev": true, "dependencies": { - "@typescript-eslint/scope-manager": "5.59.2", - "@typescript-eslint/types": "5.59.2", - "@typescript-eslint/typescript-estree": "5.59.2", + "@typescript-eslint/scope-manager": "5.60.0", + "@typescript-eslint/types": "5.60.0", + "@typescript-eslint/typescript-estree": "5.60.0", "debug": "^4.3.4" }, "engines": { @@ -1391,125 +1535,6 @@ } } }, - "node_modules/@typescript-eslint/parser/node_modules/@typescript-eslint/scope-manager": { - "version": "5.59.2", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.59.2.tgz", - "integrity": "sha512-dB1v7ROySwQWKqQ8rEWcdbTsFjh2G0vn8KUyvTXdPoyzSL6lLGkiXEV5CvpJsEe9xIdKV+8Zqb7wif2issoOFA==", - "dev": true, - "dependencies": { - "@typescript-eslint/types": "5.59.2", - "@typescript-eslint/visitor-keys": "5.59.2" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@typescript-eslint/parser/node_modules/@typescript-eslint/types": { - "version": "5.59.2", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.59.2.tgz", - "integrity": "sha512-LbJ/HqoVs2XTGq5shkiKaNTuVv5tTejdHgfdjqRUGdYhjW1crm/M7og2jhVskMt8/4wS3T1+PfFvL1K3wqYj4w==", - "dev": true, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@typescript-eslint/parser/node_modules/@typescript-eslint/typescript-estree": { - "version": "5.59.2", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.59.2.tgz", - "integrity": "sha512-+j4SmbwVmZsQ9jEyBMgpuBD0rKwi9RxRpjX71Brr73RsYnEr3Lt5QZ624Bxphp8HUkSKfqGnPJp1kA5nl0Sh7Q==", - "dev": true, - "dependencies": { - "@typescript-eslint/types": "5.59.2", - "@typescript-eslint/visitor-keys": "5.59.2", - "debug": "^4.3.4", - "globby": "^11.1.0", - "is-glob": "^4.0.3", - "semver": "^7.3.7", - "tsutils": "^3.21.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/@typescript-eslint/parser/node_modules/@typescript-eslint/visitor-keys": { - "version": "5.59.2", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.59.2.tgz", - "integrity": "sha512-EEpsO8m3RASrKAHI9jpavNv9NlEUebV4qmF1OWxSTtKSFBpC1NCmWazDQHFivRf0O1DV11BA645yrLEVQ0/Lig==", - "dev": true, - "dependencies": { - "@typescript-eslint/types": "5.59.2", - "eslint-visitor-keys": "^3.3.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@typescript-eslint/parser/node_modules/eslint-visitor-keys": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.0.tgz", - "integrity": "sha512-HPpKPUBQcAsZOsHAFwTtIKcYlCje62XB7SEAcxjtmW6TD1WVpkS6i6/hOVtTZIl4zGj/mBqpFVGvaDneik+VoQ==", - "dev": true, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/@typescript-eslint/parser/node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/@typescript-eslint/parser/node_modules/semver": { - "version": "7.5.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.0.tgz", - "integrity": "sha512-+XC0AD/R7Q2mPSRuy2Id0+CGTZ98+8f+KvwirxOKIEyid+XSx6HbC63p+O4IndTHuX5Z+JxQ0TghCkO5Cg/2HA==", - "dev": true, - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/@typescript-eslint/parser/node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true - }, "node_modules/@typescript-eslint/scope-manager": { "version": "5.60.0", "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.60.0.tgz", @@ -3887,9 +3912,9 @@ } }, "node_modules/eslint-plugin-jsdoc": { - "version": "46.2.4", - "resolved": "https://registry.npmjs.org/eslint-plugin-jsdoc/-/eslint-plugin-jsdoc-46.2.4.tgz", - "integrity": "sha512-QVURyOFEqkUswFOou0w1rfHshRfah7EeTd9laVllO6tb/+ymjPY1IkP16e24yX0BB7jRy8krJi99jHG2UWAPog==", + "version": "46.2.6", + "resolved": "https://registry.npmjs.org/eslint-plugin-jsdoc/-/eslint-plugin-jsdoc-46.2.6.tgz", + "integrity": "sha512-zIaK3zbSrKuH12bP+SPybPgcHSM6MFzh3HFeaODzmsF1N8C1l8dzJ22cW1aq4g0+nayU1VMjmNf7hg0dpShLrA==", "dev": true, "dependencies": { "@es-joy/jsdoccomment": "~0.39.4", @@ -3898,6 +3923,7 @@ "debug": "^4.3.4", "escape-string-regexp": "^4.0.0", "esquery": "^1.5.0", + "is-builtin-module": "^3.2.1", "semver": "^7.5.1", "spdx-expression-parse": "^3.0.1" }, @@ -5913,9 +5939,9 @@ "dev": true }, "node_modules/json-schema-to-typescript": { - "version": "13.0.1", - "resolved": "https://registry.npmjs.org/json-schema-to-typescript/-/json-schema-to-typescript-13.0.1.tgz", - "integrity": "sha512-VU+Spn84eLJyt8R0Bmg2soTwHQFgvrGrU7V8mXbhqWFdEYCFekSYk4JcpCzx0i/WzjEVJKAU7r0y0PVYT14E6Q==", + "version": "13.0.2", + "resolved": "https://registry.npmjs.org/json-schema-to-typescript/-/json-schema-to-typescript-13.0.2.tgz", + "integrity": "sha512-TCaEVW4aI2FmMQe7f98mvr3/oiVmXEC1xZjkTZ9L/BSoTXFlC7p64mD5AD2d8XWycNBQZUnHwXL5iVXt1HWwNQ==", "dev": true, "dependencies": { "@bcherny/json-schema-ref-parser": "10.0.5-fork", @@ -7489,9 +7515,9 @@ } }, "node_modules/ora": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/ora/-/ora-6.3.0.tgz", - "integrity": "sha512-1/D8uRFY0ay2kgBpmAwmSA404w4OoPVhHMqRqtjvrcK/dnzcEZxMJ+V4DUbyICu8IIVRclHcOf5wlD1tMY4GUQ==", + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/ora/-/ora-6.3.1.tgz", + "integrity": "sha512-ERAyNnZOfqM+Ao3RAvIXkYh5joP220yf59gVe2X/cI6SiCxIdi4c9HZKZD8R6q/RDXEje1THBju6iExiSsgJaQ==", "dev": true, "dependencies": { "chalk": "^5.0.0", @@ -8537,13 +8563,13 @@ "dev": true }, "node_modules/sinon": { - "version": "15.1.0", - "resolved": "https://registry.npmjs.org/sinon/-/sinon-15.1.0.tgz", - "integrity": "sha512-cS5FgpDdE9/zx7no8bxROHymSlPLZzq0ChbbLk1DrxBfc+eTeBK3y8nIL+nu/0QeYydhhbLIr7ecHJpywjQaoQ==", + "version": "15.2.0", + "resolved": "https://registry.npmjs.org/sinon/-/sinon-15.2.0.tgz", + "integrity": "sha512-nPS85arNqwBXaIsFCkolHjGIkFo+Oxu9vbgmBJizLAhqe6P2o3Qmj3KCUoRkfhHtvgDhZdWD3risLHAUJ8npjw==", "dev": true, "dependencies": { "@sinonjs/commons": "^3.0.0", - "@sinonjs/fake-timers": "^10.2.0", + "@sinonjs/fake-timers": "^10.3.0", "@sinonjs/samsam": "^8.0.0", "diff": "^5.1.0", "nise": "^5.1.4", @@ -9446,9 +9472,9 @@ } }, "node_modules/web-specs": { - "version": "2.56.0", - "resolved": "https://registry.npmjs.org/web-specs/-/web-specs-2.56.0.tgz", - "integrity": "sha512-Msz7LPpUq5KaRHMvXCWZCDEBVI1OqmlfQj0JJq+PZemgeS44KzQZEHSZ6e5wAMMNNCymRIHbO3rSyOdoJPNIBQ==", + "version": "2.60.0", + "resolved": "https://registry.npmjs.org/web-specs/-/web-specs-2.60.0.tgz", + "integrity": "sha512-mAT/Q7WfghDsWWMOYGAXGswFZw896xRDdN2hdBQs1R8G97fuesveBgMgcD4WDm8bXtzwAsQHg7ie/nxXI9asmw==", "dev": true }, "node_modules/which": {