From 6cc1cd375d9ba2555eecef91c162b18125089227 Mon Sep 17 00:00:00 2001 From: Paul Puey Date: Wed, 28 Jun 2023 17:00:13 -0700 Subject: [PATCH 01/22] Create indexes programatically --- src/queryEngine.ts | 100 ++++++++++++++++----------------------------- 1 file changed, 35 insertions(+), 65 deletions(-) diff --git a/src/queryEngine.ts b/src/queryEngine.ts index c077ba43..38521dc9 100644 --- a/src/queryEngine.ts +++ b/src/queryEngine.ts @@ -40,77 +40,47 @@ const asApps = asArray(asApp) const nanoDb = nano(config.couchDbFullpath) +const INDEXES: string[][] = [ + ['isoDate'], + ['status'], + ['status', 'payoutAmount', 'depositAmount'], + ['status', 'usdvalue', 'timestamp'], + ['usdValue'] +] + +interface Index { + index: { fields: string[] } + ddoc: string + name: string + type: 'json' + partitioned: boolean +} + +const indexes: Index[] = [] + +INDEXES.forEach(index => { + const indexLower = index.map(i => i.toLowerCase()) + const out = { + index: { fields: index }, + ddoc: indexLower.join('-'), + name: indexLower.join('-'), + type: 'json' as 'json', + partitioned: false + } + indexes.push(out) + out.ddoc += '-p' + out.name += '-p' + out.partitioned = true + indexes.push(out) +}) + const DB_NAMES = [ { name: 'reports_apps' }, { name: 'reports_settings' }, { name: 'reports_transactions', options: { partitioned: true }, - indexes: [ - { - index: { fields: ['isoDate'] }, - ddoc: 'isodate-index-p', - name: 'isodate-index-p', - type: 'json' as 'json', - partitioned: true - }, - { - index: { fields: ['isoDate'] }, - ddoc: 'isodate-index', - name: 'isodate-index', - type: 'json' as 'json', - partitioned: false - }, - { - index: { fields: ['status'] }, - ddoc: 'status-index-p', - name: 'status-index-p', - type: 'json' as 'json', - partitioned: true - }, - { - index: { fields: ['status'] }, - ddoc: 'status-index', - name: 'status-index', - type: 'json' as 'json', - partitioned: false - }, - { - index: { fields: ['status', 'usdValue'] }, - ddoc: 'status-usdvalue-index', - name: 'status-usdvalue-index', - type: 'json' as 'json', - partitioned: false - }, - { - index: { fields: ['status', 'payoutAmount', 'depositAmount'] }, - ddoc: 'status-payoutamount-depositamount-index', - name: 'status-payoutamount-depositamount-index', - type: 'json' as 'json', - partitioned: false - }, - { - index: { fields: ['status', 'usdvalue', 'timestamp'] }, - ddoc: 'status-usdvalue-timestamp-index-p', - name: 'status-usdvalue-timestamp-index-p', - type: 'json' as 'json', - partitioned: true - }, - { - index: { fields: ['usdValue'] }, - ddoc: 'usdvalue-index-p', - name: 'usdvalue-index-p', - type: 'json' as 'json', - partitioned: true - }, - { - index: { fields: ['usdValue'] }, - ddoc: 'usdvalue-index', - name: 'usdvalue-index', - type: 'json' as 'json', - partitioned: false - } - ] + indexes }, { name: 'reports_progresscache', options: { partitioned: true } } ] From 4d3a4e98ab82fe0f1430dc1bcd15640d325c0b0e Mon Sep 17 00:00:00 2001 From: Paul Puey Date: Wed, 28 Jun 2023 18:45:45 -0700 Subject: [PATCH 02/22] Add useful indexes --- src/queryEngine.ts | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/queryEngine.ts b/src/queryEngine.ts index 38521dc9..8091117d 100644 --- a/src/queryEngine.ts +++ b/src/queryEngine.ts @@ -43,7 +43,12 @@ const nanoDb = nano(config.couchDbFullpath) const INDEXES: string[][] = [ ['isoDate'], ['status'], + ['status', 'depositCurrency', 'isoDate'], + ['status', 'depositCurrency', 'payoutCurrency', 'isoDate'], + ['status', 'isoDate'], ['status', 'payoutAmount', 'depositAmount'], + ['status', 'payoutCurrency', 'isoDate'], + ['status', 'usdValue'], ['status', 'usdvalue', 'timestamp'], ['usdValue'] ] From 5d014c9d291cf429522592363f2525070f85c929 Mon Sep 17 00:00:00 2001 From: Paul Puey Date: Tue, 25 Jul 2023 23:53:33 -0700 Subject: [PATCH 03/22] Update letsexchange to new api --- src/partners/letsexchange.ts | 26 ++++++++++++++++++++------ 1 file changed, 20 insertions(+), 6 deletions(-) diff --git a/src/partners/letsexchange.ts b/src/partners/letsexchange.ts index 589ef657..2f4fadb7 100644 --- a/src/partners/letsexchange.ts +++ b/src/partners/letsexchange.ts @@ -2,13 +2,13 @@ import { asArray, asMaybe, asObject, + asOptional, asString, asUnknown, asValue } from 'cleaners' import { - asStandardPluginParams, PartnerPlugin, PluginParams, PluginResult, @@ -17,6 +17,16 @@ import { } from '../types' import { datelog, retryFetch, smartIsoDateFromTimestamp } from '../util' +export const asLetsExchangePluginParams = asObject({ + settings: asObject({ + latestIsoDate: asOptional(asString, '2018-01-01T00:00:00.000Z') + }), + apiKeys: asObject({ + affiliateId: asOptional(asString), + apiKey: asOptional(asString) + }) +}) + const asLetsExchangeStatus = asMaybe( asValue( 'success', @@ -65,12 +75,12 @@ const statusMap: { [key in LetsExchangeStatus]: Status } = { export async function queryLetsExchange( pluginParams: PluginParams ): Promise { - const { settings, apiKeys } = asStandardPluginParams(pluginParams) - const { apiKey } = apiKeys + const { settings, apiKeys } = asLetsExchangePluginParams(pluginParams) + const { affiliateId, apiKey } = apiKeys let { latestIsoDate } = settings // let latestIsoDate = '2023-01-04T19:36:46.000Z' - if (apiKey == null) { + if (apiKey == null || affiliateId == null) { return { settings: { latestIsoDate }, transactions: [] } } @@ -82,11 +92,15 @@ export async function queryLetsExchange( let page = 0 let done = false + const headers = { + Authorization: 'Bearer ' + apiKey + } + try { while (!done) { - const url = `https://api.letsexchange.io/api/v1/affiliate/history/${apiKey}?limit=${LIMIT}&page=${page}&types=0` + const url = `https://api.letsexchange.io/api/v1/affiliate/history/${affiliateId}?limit=${LIMIT}&page=${page}&types=0` - const result = await retryFetch(url, { method: 'GET' }) + const result = await retryFetch(url, { headers, method: 'GET' }) if (result.ok === false) { const text = await result.text() datelog(text) From a3b91dc5c823ef29f860d316b24a47a25bd90f0c Mon Sep 17 00:00:00 2001 From: Paul V Puey Date: Thu, 28 Sep 2023 22:07:49 -0700 Subject: [PATCH 04/22] Consolidate asApp cleaner --- src/bin/fixPluginIds.ts | 13 ++----------- src/cacheEngine.ts | 9 +-------- src/indexApi.ts | 9 +-------- src/queryEngine.ts | 9 +-------- src/types.ts | 12 ++++++++++++ 5 files changed, 17 insertions(+), 35 deletions(-) diff --git a/src/bin/fixPluginIds.ts b/src/bin/fixPluginIds.ts index ea12c661..1ed521e9 100644 --- a/src/bin/fixPluginIds.ts +++ b/src/bin/fixPluginIds.ts @@ -1,19 +1,10 @@ -import { asArray, asMap, asObject, asString } from 'cleaners' +import { asArray, asObject, asString } from 'cleaners' import js from 'jsonfile' import nano from 'nano' -import { asDbTx, DbTx } from '../types' +import { asApps, asDbTx, DbTx } from '../types' import { datelog } from '../util' -const asApp = asObject({ - _id: asString, - _rev: asString, - appId: asString, - appName: asString, - pluginIds: asMap(asMap(asString)) -}) -const asApps = asArray(asApp) - const asDbQueryResult = asObject({ docs: asArray(asDbTx), bookmark: asString }) const PLUGIN_ID_MAP = { diff --git a/src/cacheEngine.ts b/src/cacheEngine.ts index 7236b7c3..c30d0960 100644 --- a/src/cacheEngine.ts +++ b/src/cacheEngine.ts @@ -1,22 +1,16 @@ -import { asArray, asMap, asObject, asString } from 'cleaners' import startOfMonth from 'date-fns/startOfMonth' import sub from 'date-fns/sub' import nano from 'nano' import config from '../config.json' import { getAnalytic } from './dbutils' +import { asApps } from './types' import { datelog, snooze } from './util' const CACHE_UPDATE_LOOKBACK_MONTHS = config.cacheLookbackMonths ?? 3 const BULK_WRITE_SIZE = 50 const UPDATE_FREQUENCY_MS = 1000 * 60 * 30 -const asApp = asObject({ - _id: asString, - appId: asString, - pluginIds: asMap(asMap(asString)) -}) -const asApps = asArray(asApp) const nanoDb = nano(config.couchDbFullpath) @@ -112,7 +106,6 @@ export async function cacheEngine(): Promise { selector: { appId: { $exists: true } }, - fields: ['_id', 'appId', 'pluginIds'], limit: 1000000 } const rawApps = await reportsApps.find(query) diff --git a/src/indexApi.ts b/src/indexApi.ts index cc1ccf6c..15625f1a 100644 --- a/src/indexApi.ts +++ b/src/indexApi.ts @@ -6,7 +6,7 @@ import nano from 'nano' import config from '../config.json' import { cacheAnalytic } from './dbutils' -import { asDbTx } from './types' +import { asApps, asDbTx } from './types' const asAnalyticsReq = asObject({ start: asString, @@ -34,12 +34,6 @@ const asCheckTxsFetch = asArray( }) ) -const asApp = asObject({ - _id: asString, - appId: asString -}) -const asApps = asArray(asApp) - const asPluginIdsReq = asObject({ appId: asString }) @@ -80,7 +74,6 @@ async function main(): Promise { selector: { appId: { $exists: true } }, - fields: ['_id', 'appId'], limit: 1000000 } const rawApps = await reportsApps.find(query) diff --git a/src/queryEngine.ts b/src/queryEngine.ts index 8091117d..33863f61 100644 --- a/src/queryEngine.ts +++ b/src/queryEngine.ts @@ -1,4 +1,3 @@ -import { asArray, asMap, asObject, asString } from 'cleaners' import nano from 'nano' import config from '../config.json' @@ -30,13 +29,8 @@ import { thorchain } from './partners/thorchain' import { transak } from './partners/transak' import { wyre } from './partners/wyre' import { xanpool } from './partners/xanpool' -import { asProgressSettings, DbTx, StandardTx } from './types' +import { asApp, asApps, asProgressSettings, DbTx, StandardTx } from './types' import { datelog, promiseTimeout, standardizeNames } from './util' -const asApp = asObject({ - appId: asString, - pluginIds: asMap(asMap(asString)) -}) -const asApps = asArray(asApp) const nanoDb = nano(config.couchDbFullpath) @@ -158,7 +152,6 @@ export async function queryEngine(): Promise { selector: { appId: { $exists: true } }, - fields: ['appId', 'pluginIds'], limit: 1000000 } const rawApps = await dbApps.find(query) diff --git a/src/types.ts b/src/types.ts index 99a13cc9..f914fe71 100644 --- a/src/types.ts +++ b/src/types.ts @@ -1,4 +1,5 @@ import { + asArray, asMap, asNumber, asObject, @@ -77,6 +78,17 @@ export const asStandardPluginParams = asObject({ }) }) +const asApiKeys = asMap(asString) +export const asApp = asObject({ + _id: asString, + _rev: asString, + appId: asString, + appName: asString, + pluginIds: asMap(asApiKeys) +}) + +export const asApps = asArray(asApp) + export type CurrencyCodeMappings = ReturnType export type DbCurrencyCodeMappings = ReturnType export type DbTx = ReturnType From 569e487c1991dd02ca823738570ba72e0562fc89 Mon Sep 17 00:00:00 2001 From: Paul V Puey Date: Fri, 29 Sep 2023 19:52:17 -0700 Subject: [PATCH 05/22] Rename pluginId to partnerId --- src/apiAnalytics.ts | 6 +- src/bin/fixPluginIds.ts | 133 --------------------------------- src/cacheEngine.ts | 15 ++-- src/dbutils.ts | 22 +++--- src/demo/components/Custom.tsx | 16 ++-- src/demo/components/Graphs.tsx | 9 ++- src/queryEngine.ts | 46 ++++++------ src/types.ts | 2 +- 8 files changed, 59 insertions(+), 190 deletions(-) delete mode 100644 src/bin/fixPluginIds.ts diff --git a/src/apiAnalytics.ts b/src/apiAnalytics.ts index 6695dce4..940bc79a 100644 --- a/src/apiAnalytics.ts +++ b/src/apiAnalytics.ts @@ -30,7 +30,7 @@ interface AnalyticsResult { numAllTxs: number } appId: string - pluginId: string + partnerId: string start: number end: number } @@ -40,7 +40,7 @@ export const getAnalytics = ( start: number, end: number, appId: string, - pluginId: string, + partnerId: string, timePeriod: string ): AnalyticsResult => { // the creation of buckets @@ -134,7 +134,7 @@ export const getAnalytics = ( numAllTxs: txs.length }, appId, - pluginId, + partnerId, start: start, end: end } diff --git a/src/bin/fixPluginIds.ts b/src/bin/fixPluginIds.ts deleted file mode 100644 index 1ed521e9..00000000 --- a/src/bin/fixPluginIds.ts +++ /dev/null @@ -1,133 +0,0 @@ -import { asArray, asObject, asString } from 'cleaners' -import js from 'jsonfile' -import nano from 'nano' - -import { asApps, asDbTx, DbTx } from '../types' -import { datelog } from '../util' - -const asDbQueryResult = asObject({ docs: asArray(asDbTx), bookmark: asString }) - -const PLUGIN_ID_MAP = { - fox: 'foxExchange' -} - -const PAGINATION = 100 - -const config = js.readFileSync('./config.json') -const nanoDb = nano(config.couchDbFullpath) -const reportsApps = nanoDb.use('reports_apps') -const reportsProgress = nanoDb.use('reports_progresscache') -const reportsTransactions = nanoDb.use('reports_transactions') - -async function fixPluginIds(): Promise { - try { - // get the contents of all reports_apps docs - const query = { - selector: { - appId: { $exists: true } - }, - limit: 1000000 - } - const rawApps = await reportsApps.find(query) - const apps = asApps(rawApps.docs) - for (const app of apps) { - for (const pluginId in PLUGIN_ID_MAP) { - const partition = `${app.appId}_${pluginId}` - let bookmark - const queryResults: any[] = [] - while (true) { - const query = { - selector: { - _id: { $exists: true } - }, - bookmark, - limit: PAGINATION - } - const result = await reportsTransactions.partitionedFind( - partition, - query - ) - if ( - typeof result.bookmark === 'string' && - result.docs.length === PAGINATION - ) { - bookmark = result.bookmark - } else { - bookmark = undefined - } - try { - asDbQueryResult(result) - } catch (e) { - datelog(`Invalid Query Result for ${partition}`, e) - continue - } - queryResults.push(...result.docs) - if (result.docs.length < PAGINATION) break - } - if (queryResults.length === 0) { - datelog( - `Bad partition ${pluginId} does not exist within app ${app.appId}.` - ) - return - } else { - datelog( - `Gathered ${queryResults.length} docs from partition ${partition}` - ) - } - - for (let i = 0; i < queryResults.length; i += PAGINATION) { - const currentBatch: DbTx[] = queryResults.slice(i, i + PAGINATION) - const newTxs = currentBatch.map(tx => { - return { - ...tx, - _id: `${app.appId}_${PLUGIN_ID_MAP[pluginId]}:${tx.orderId}`, - _rev: undefined - } - }) - await reportsTransactions.bulk({ docs: newTxs }) - datelog( - `Successfully inserted ${i + - currentBatch.length} documents of new partition ${ - PLUGIN_ID_MAP[pluginId] - }` - ) - - const deleteTxs = currentBatch.map(tx => { - return { - ...tx, - _deleted: true - } - }) - await reportsTransactions.bulk({ docs: deleteTxs }) - datelog( - `Successfully deleted ${i + - currentBatch.length} documents of old partition ${pluginId}` - ) - } - - if (app.pluginIds[pluginId] != null) { - app.pluginIds[PLUGIN_ID_MAP[pluginId]] = app.pluginIds[pluginId] - delete app.pluginIds[pluginId] - await reportsApps.insert(app) - datelog( - `Successfully updated bad pluginId name ${pluginId} to ${PLUGIN_ID_MAP[pluginId]} in reports_apps` - ) - } - const progress = await reportsProgress.get(`${app.appId}:${pluginId}`) - const newCache = { - ...progress, - _id: `${app.appId}:${PLUGIN_ID_MAP[pluginId]}`, - _rev: undefined - } - await reportsProgress.insert(newCache) - datelog(`Successfully inserted new Cache.`) - await reportsProgress.destroy(progress._id, progress._rev) - datelog(`Successfully deleted old Cache.`) - } - } - } catch (e) { - datelog(e) - throw e - } -} -fixPluginIds().catch(e => datelog(e)) diff --git a/src/cacheEngine.ts b/src/cacheEngine.ts index c30d0960..f58e71c6 100644 --- a/src/cacheEngine.ts +++ b/src/cacheEngine.ts @@ -113,16 +113,17 @@ export async function cacheEngine(): Promise { for (const app of apps) { if (config.soloAppId != null && config.soloAppId !== app.appId) continue - const keys = Object.keys(app.pluginIds) + const partnerIds = Object.keys(app.partnerIds) - for (const key of keys) { - if (config.soloPluginId != null && config.soloPluginId !== key) continue + for (const partnerId of partnerIds) { + if (config.soloPartnerId != null && config.soloPartnerId !== partnerId) + continue for (const timePeriod of TIME_PERIODS) { const data = await getAnalytic( start, end, app.appId, - [key], + [partnerId], timePeriod, reportsTransactions ) @@ -130,7 +131,7 @@ export async function cacheEngine(): Promise { if (data.length > 0) { const cacheResult = data[0].result[timePeriod].map(bucket => { return { - _id: `${app.appId}_${key}:${bucket.isoDate}`, + _id: `${app.appId}_${partnerId}:${bucket.isoDate}`, timestamp: bucket.start, usdValue: bucket.usdValue, numTxs: bucket.numTxs, @@ -162,7 +163,7 @@ export async function cacheEngine(): Promise { } datelog( - `Update cache db ${timePeriod} cache for ${app.appId}_${key}. length = ${cacheResult.length}` + `Update cache db ${timePeriod} cache for ${app.appId}_${partnerId}. length = ${cacheResult.length}` ) for ( @@ -183,7 +184,7 @@ export async function cacheEngine(): Promise { } datelog( - `Finished updating ${timePeriod} cache for ${app.appId}_${key}` + `Finished updating ${timePeriod} cache for ${app.appId}_${partnerId}` ) } catch (e) { datelog('Error doing bulk cache update', e) diff --git a/src/dbutils.ts b/src/dbutils.ts index d4e58717..389f9879 100644 --- a/src/dbutils.ts +++ b/src/dbutils.ts @@ -54,7 +54,7 @@ export const getAnalytic = async ( start: number, end: number, appId: string, - pluginIds: string[], + partnerIds: string[], timePeriod: string, transactionDatabase: any ): Promise => { @@ -78,17 +78,17 @@ export const getAnalytic = async ( const results: any[] = [] const promises: Array> = [] try { - for (const pluginId of pluginIds) { - const appAndPluginId = `${appId}_${pluginId}` + for (const partnerId of partnerIds) { + const appAndPartnerId = `${appId}_${partnerId}` const result = transactionDatabase - .partitionedFind(appAndPluginId, query) + .partitionedFind(appAndPartnerId, query) .then(data => { const analytic = getAnalytics( asDbReq(data).docs, start, end, appId, - pluginId, + appAndPartnerId, timePeriod ) if (analytic.result.numAllTxs > 0) results.push(analytic) @@ -117,7 +117,7 @@ export const cacheAnalytic = async ( start: number, end: number, appId: string, - pluginIds: string[], + partnerIds: string[], timePeriod: string ): Promise => { const nanoDb = nano(config.couchDbFullpath) @@ -129,12 +129,12 @@ export const cacheAnalytic = async ( if (timePeriod.includes('day')) timePeriods.push('day') if (timePeriod.includes('month')) timePeriods.push('month') const analyticResultArray: AnalyticsResult[] = [] - for (const pluginId of pluginIds) { + for (const partnerId of partnerIds) { const analyticResult: AnalyticsResult = { start, end, app: appId, - pluginId, + partnerId, result: { hour: [], day: [], month: [], numAllTxs: 0 } } let startForDayTimePeriod @@ -157,7 +157,7 @@ export const cacheAnalytic = async ( limit: 1000000 } try { - const appAndPluginId = `${appId}_${pluginId}` + const appAndPluginId = `${appId}_${partnerId}` const result = await database.partitionedFind(appAndPluginId, query) analyticResult.result[timePeriod] = result.docs.map(cacheObj => { analyticResult.result.numAllTxs += cacheObj.numTxs @@ -170,8 +170,8 @@ export const cacheAnalytic = async ( currencyPairs: cacheObj.currencyPairs } }) - console.time(`${pluginId} ${timePeriod} cache fetched`) - console.timeEnd(`${pluginId} ${timePeriod} cache fetched`) + console.time(`${partnerId} ${timePeriod} cache fetched`) + console.timeEnd(`${partnerId} ${timePeriod} cache fetched`) } catch (e) { console.log(e) return `Internal server error.` diff --git a/src/demo/components/Custom.tsx b/src/demo/components/Custom.tsx index a4d44641..fb081408 100644 --- a/src/demo/components/Custom.tsx +++ b/src/demo/components/Custom.tsx @@ -122,22 +122,22 @@ class Custom extends Component { let barGraphData = this.state.data if (this.props.exchangeType !== 'all') { barGraphData = barGraphData.filter( - obj => Partners[obj.pluginId].type === this.props.exchangeType + obj => Partners[obj.partnerId].type === this.props.exchangeType ) } const barGraphStyles = barGraphData.map(analytic => { const style = { - backgroundColor: Partners[analytic.pluginId].color, + backgroundColor: Partners[analytic.partnerId].color, marginLeft: '10px', width: '18px', height: '18px' } - const capitilizedPluginId = `${analytic.pluginId + const capitilizedPluginId = `${analytic.partnerId .charAt(0) - .toUpperCase()}${analytic.pluginId.slice(1)}` + .toUpperCase()}${analytic.partnerId.slice(1)}` return ( -
+
{capitilizedPluginId}
@@ -149,11 +149,11 @@ class Custom extends Component { const barGraphs = barGraphData.map((analytic, index) => { const graphTotals = calculateGraphTotals(analytic) graphTotals.partnerId = - analytic.pluginId.charAt(0).toUpperCase() + analytic.pluginId.slice(1) + analytic.partnerId.charAt(0).toUpperCase() + analytic.partnerId.slice(1) list.push(graphTotals) return ( -
- {Partners[analytic.pluginId].type === this.props.exchangeType || +
+ {Partners[analytic.partnerId].type === this.props.exchangeType || this.props.exchangeType === 'all' ? (
{barGraphStyles[index]}
diff --git a/src/demo/components/Graphs.tsx b/src/demo/components/Graphs.tsx index be6474f2..a79e7ac9 100644 --- a/src/demo/components/Graphs.tsx +++ b/src/demo/components/Graphs.tsx @@ -43,7 +43,7 @@ export interface AnalyticsResult { numAllTxs: number } app: string - pluginId: string + partnerId: string start: number end: number } @@ -103,7 +103,8 @@ const Graphs: any = (props: { ? createQuarterBuckets(analytics) : analytics.result[timePeriod] const graphName = - analytics.pluginId.charAt(0).toUpperCase() + analytics.pluginId.slice(1) + analytics.partnerId.charAt(0).toUpperCase() + + analytics.partnerId.slice(1) bars.push( { tooltip = graphName }} @@ -142,7 +143,7 @@ const Graphs: any = (props: { totalTxs += numTxs prev[start][graphName] = usdValue prev[start][`${graphName}NumTxs`] = numTxs - prev[start][`${graphName}Color`] = Partners[analytics.pluginId].color + prev[start][`${graphName}Color`] = Partners[analytics.partnerId].color } return prev }, diff --git a/src/queryEngine.ts b/src/queryEngine.ts index 33863f61..1078f2cb 100644 --- a/src/queryEngine.ts +++ b/src/queryEngine.ts @@ -84,7 +84,7 @@ const DB_NAMES = [ { name: 'reports_progresscache', options: { partitioned: true } } ] -const partners = [ +const plugins = [ banxa, bitaccess, bitsofgold, @@ -157,24 +157,24 @@ export async function queryEngine(): Promise { const rawApps = await dbApps.find(query) const apps = asApps(rawApps.docs) let promiseArray: Array> = [] - let remainingPlugins: String[] = [] + let remainingPartners: String[] = [] // loop over every app for (const app of apps) { if (config.soloAppId != null && config.soloAppId !== app.appId) continue let partnerStatus: string[] = [] // loop over every pluginId that app uses - remainingPlugins = Object.keys(app.pluginIds) - for (const pluginId in app.pluginIds) { - if (config.soloPluginId != null && config.soloPluginId !== pluginId) + remainingPartners = Object.keys(app.partnerIds) + for (const partnerId in app.partnerIds) { + if (config.soloPartnerId != null && config.soloPartnerId !== partnerId) continue - remainingPlugins.push(pluginId) + remainingPartners.push(partnerId) promiseArray.push( - runPlugin(app, pluginId, dbProgress).finally(() => { - remainingPlugins = remainingPlugins.filter( - string => string !== pluginId + runPlugin(app, partnerId, dbProgress).finally(() => { + remainingPartners = remainingPartners.filter( + string => string !== partnerId ) - if (remainingPlugins.length > 0) { - datelog('REMAINING PLUGINS:', remainingPlugins.join(', ')) + if (remainingPartners.length > 0) { + datelog('REMAINING PLUGINS:', remainingPartners.join(', ')) } }) ) @@ -280,28 +280,28 @@ async function insertTransactions( async function runPlugin( app: ReturnType, - pluginId: string, + partnerId: string, dbProgress: nano.DocumentScope ): Promise { const start = Date.now() let errorText = '' try { // obtains function that corresponds to current pluginId - const plugin = partners.find(partner => partner.pluginId === pluginId) + const plugin = plugins.find(plugin => plugin.pluginId === partnerId) // if current plugin is not within the list of partners skip to next if (plugin === undefined) { - errorText = `Missing or disabled plugin ${app.appId.toLowerCase()}_${pluginId}` + errorText = `Missing or disabled plugin ${app.appId.toLowerCase()}_${partnerId}` datelog(errorText) return errorText } // get progress cache to see where previous query ended - datelog(`Starting with partner: ${pluginId}, app: ${app.appId}`) - const progressCacheFileName = `${app.appId.toLowerCase()}:${pluginId}` + datelog(`Starting with partner:${partnerId}, app: ${app.appId}`) + const progressCacheFileName = `${app.appId.toLowerCase()}:${partnerId}` const out = await dbProgress.get(progressCacheFileName).catch(e => { if (e.error != null && e.error === 'not_found') { datelog( - `Previous Progress Record Not Found ${app.appId.toLowerCase()}_${pluginId}` + `Previous Progress Record Not Found ${app.appId.toLowerCase()}_${partnerId}` ) return {} } else { @@ -322,9 +322,9 @@ async function runPlugin( } // set apiKeys and settings for use in partner's function - const apiKeys = app.pluginIds[pluginId] + const apiKeys = app.partnerIds[partnerId] const settings = progressSettings.progressCache - datelog(`Querying ${app.appId.toLowerCase()}_${pluginId}`) + datelog(`Querying ${app.appId.toLowerCase()}_${partnerId}`) // run the plugin function const result = await promiseTimeout( 'queryFunc', @@ -333,11 +333,11 @@ async function runPlugin( settings }) ) - datelog(`Successful query: ${app.appId.toLowerCase()}_${pluginId}`) + datelog(`Successful query: ${app.appId.toLowerCase()}_${partnerId}`) await promiseTimeout( 'insertTransactions', - insertTransactions(result.transactions, `${app.appId}_${pluginId}`) + insertTransactions(result.transactions, `${app.appId}_${partnerId}`) ) progressSettings.progressCache = result.settings progressSettings._id = progressCacheFileName @@ -347,11 +347,11 @@ async function runPlugin( ) // Returning a successful completion message const completionTime = (Date.now() - start) / 1000 - const successfulCompletionMessage = `Successful update: ${app.appId.toLowerCase()}_${pluginId} in ${completionTime} seconds.` + const successfulCompletionMessage = `Successful update: ${app.appId.toLowerCase()}_${partnerId} in ${completionTime} seconds.` datelog(successfulCompletionMessage) return successfulCompletionMessage } catch (e) { - errorText = `Error: ${app.appId.toLowerCase()}_${pluginId}. Error message: ${e}` + errorText = `Error: ${app.appId.toLowerCase()}_${partnerId}. Error message: ${e}` datelog(errorText) return errorText } diff --git a/src/types.ts b/src/types.ts index f914fe71..8aa9f37d 100644 --- a/src/types.ts +++ b/src/types.ts @@ -84,7 +84,7 @@ export const asApp = asObject({ _rev: asString, appId: asString, appName: asString, - pluginIds: asMap(asApiKeys) + partnerIds: asMap(asApiKeys) }) export const asApps = asArray(asApp) From e42b71218a352a692b19e2152ac8f71a50c8c6e0 Mon Sep 17 00:00:00 2001 From: Paul V Puey Date: Sun, 1 Oct 2023 11:31:01 -0700 Subject: [PATCH 06/22] Put api keys in explicit apiKey object --- src/queryEngine.ts | 2 +- src/types.ts | 7 +++++-- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/src/queryEngine.ts b/src/queryEngine.ts index 1078f2cb..2ce16fd7 100644 --- a/src/queryEngine.ts +++ b/src/queryEngine.ts @@ -322,7 +322,7 @@ async function runPlugin( } // set apiKeys and settings for use in partner's function - const apiKeys = app.partnerIds[partnerId] + const { apiKeys } = app.partnerIds[partnerId] const settings = progressSettings.progressCache datelog(`Querying ${app.appId.toLowerCase()}_${partnerId}`) // run the plugin function diff --git a/src/types.ts b/src/types.ts index 8aa9f37d..e1d8cb66 100644 --- a/src/types.ts +++ b/src/types.ts @@ -78,13 +78,16 @@ export const asStandardPluginParams = asObject({ }) }) -const asApiKeys = asMap(asString) +const asPartnerInfo = asObject({ + apiKeys: asMap(asString) +}) + export const asApp = asObject({ _id: asString, _rev: asString, appId: asString, appName: asString, - partnerIds: asMap(asApiKeys) + partnerIds: asMap(asPartnerInfo) }) export const asApps = asArray(asApp) From 9e41a36e6baad909f131d939b45182460b253e23 Mon Sep 17 00:00:00 2001 From: Paul V Puey Date: Sun, 1 Oct 2023 11:41:45 -0700 Subject: [PATCH 07/22] Allow pluginId independent of partnerId This allows a single code instance, denoted by a pluginId, to be used with multiple apikeys which are bound to a partnerId. --- src/queryEngine.ts | 11 ++++++++--- src/types.ts | 1 + 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/src/queryEngine.ts b/src/queryEngine.ts index 2ce16fd7..644fa0d1 100644 --- a/src/queryEngine.ts +++ b/src/queryEngine.ts @@ -165,11 +165,13 @@ export async function queryEngine(): Promise { // loop over every pluginId that app uses remainingPartners = Object.keys(app.partnerIds) for (const partnerId in app.partnerIds) { + const pluginId = app.partnerIds[partnerId].pluginId ?? partnerId + if (config.soloPartnerId != null && config.soloPartnerId !== partnerId) continue remainingPartners.push(partnerId) promiseArray.push( - runPlugin(app, partnerId, dbProgress).finally(() => { + runPlugin(app, partnerId, pluginId, dbProgress).finally(() => { remainingPartners = remainingPartners.filter( string => string !== partnerId ) @@ -281,13 +283,14 @@ async function insertTransactions( async function runPlugin( app: ReturnType, partnerId: string, + pluginId: string, dbProgress: nano.DocumentScope ): Promise { const start = Date.now() let errorText = '' try { // obtains function that corresponds to current pluginId - const plugin = plugins.find(plugin => plugin.pluginId === partnerId) + const plugin = plugins.find(plugin => plugin.pluginId === pluginId) // if current plugin is not within the list of partners skip to next if (plugin === undefined) { errorText = `Missing or disabled plugin ${app.appId.toLowerCase()}_${partnerId}` @@ -296,7 +299,9 @@ async function runPlugin( } // get progress cache to see where previous query ended - datelog(`Starting with partner:${partnerId}, app: ${app.appId}`) + datelog( + `Starting with partner:${partnerId} plugin:${pluginId}, app: ${app.appId}` + ) const progressCacheFileName = `${app.appId.toLowerCase()}:${partnerId}` const out = await dbProgress.get(progressCacheFileName).catch(e => { if (e.error != null && e.error === 'not_found') { diff --git a/src/types.ts b/src/types.ts index e1d8cb66..baa11791 100644 --- a/src/types.ts +++ b/src/types.ts @@ -79,6 +79,7 @@ export const asStandardPluginParams = asObject({ }) const asPartnerInfo = asObject({ + pluginId: asOptional(asString), apiKeys: asMap(asString) }) From c54d254d3773994b5b0c1a1e621a4e93c66dee27 Mon Sep 17 00:00:00 2001 From: Paul V Puey Date: Tue, 10 Oct 2023 15:23:24 -0700 Subject: [PATCH 08/22] Allow solo runs with appIds and partnerIds --- config.sample.json | 4 ++-- src/cacheEngine.ts | 14 +++++++++++--- src/queryEngine.ts | 13 +++++++++++-- 3 files changed, 24 insertions(+), 7 deletions(-) diff --git a/config.sample.json b/config.sample.json index bd6b30bd..be4ca567 100644 --- a/config.sample.json +++ b/config.sample.json @@ -1,8 +1,8 @@ { "couchDbFullpath": "http://admin:admin@localhost:5984", "httpPort": "8000", - "soloAppId": null, - "soloPluginId": null, + "soloAppIds": null, + "soloPartnerIds": null, "timeoutOverrideMins": null, "cacheLookbackMonths": null } diff --git a/src/cacheEngine.ts b/src/cacheEngine.ts index f58e71c6..f976b7a1 100644 --- a/src/cacheEngine.ts +++ b/src/cacheEngine.ts @@ -111,13 +111,21 @@ export async function cacheEngine(): Promise { const rawApps = await reportsApps.find(query) const apps = asApps(rawApps.docs) for (const app of apps) { - if (config.soloAppId != null && config.soloAppId !== app.appId) continue - + if ( + config.soloAppIds != null && + config.soloAppIds.includes(app.appId) === false + ) { + continue + } const partnerIds = Object.keys(app.partnerIds) for (const partnerId of partnerIds) { - if (config.soloPartnerId != null && config.soloPartnerId !== partnerId) + if ( + config.soloPartnerIds != null && + config.soloPartnerIds.includes(partnerId) === false + ) { continue + } for (const timePeriod of TIME_PERIODS) { const data = await getAnalytic( start, diff --git a/src/queryEngine.ts b/src/queryEngine.ts index 644fa0d1..109738ef 100644 --- a/src/queryEngine.ts +++ b/src/queryEngine.ts @@ -160,15 +160,24 @@ export async function queryEngine(): Promise { let remainingPartners: String[] = [] // loop over every app for (const app of apps) { - if (config.soloAppId != null && config.soloAppId !== app.appId) continue + if ( + config.soloAppIds != null && + config.soloAppIds.includes(app.appId) === false + ) { + continue + } let partnerStatus: string[] = [] // loop over every pluginId that app uses remainingPartners = Object.keys(app.partnerIds) for (const partnerId in app.partnerIds) { const pluginId = app.partnerIds[partnerId].pluginId ?? partnerId - if (config.soloPartnerId != null && config.soloPartnerId !== partnerId) + if ( + config.soloPartnerIds != null && + config.soloPartnerIds.includes(partnerId) === false + ) { continue + } remainingPartners.push(partnerId) promiseArray.push( runPlugin(app, partnerId, pluginId, dbProgress).finally(() => { From b042ace21abecce744e2f7183b70972528c0d448 Mon Sep 17 00:00:00 2001 From: Paul Puey Date: Thu, 12 Oct 2023 17:45:35 -0700 Subject: [PATCH 09/22] Consolidate db initialization --- src/cacheEngine.ts | 65 ++------------------------- src/dbutils.ts | 2 +- src/initDbs.ts | 107 +++++++++++++++++++++++++++++++++++++++++++++ src/queryEngine.ts | 73 +------------------------------ 4 files changed, 113 insertions(+), 134 deletions(-) create mode 100644 src/initDbs.ts diff --git a/src/cacheEngine.ts b/src/cacheEngine.ts index f976b7a1..2c24aedd 100644 --- a/src/cacheEngine.ts +++ b/src/cacheEngine.ts @@ -4,6 +4,7 @@ import nano from 'nano' import config from '../config.json' import { getAnalytic } from './dbutils' +import { initDbs } from './initDbs' import { asApps } from './types' import { datelog, snooze } from './util' @@ -14,73 +15,13 @@ const UPDATE_FREQUENCY_MS = 1000 * 60 * 30 const nanoDb = nano(config.couchDbFullpath) -const DB_NAMES = [ - { - name: 'reports_hour', - options: { partitioned: true }, - indexes: [ - { - index: { fields: ['timestamp'] }, - ddoc: 'timestamp-index', - name: 'timestamp-index', - type: 'json' as 'json', - partitioned: true - } - ] - }, - { - name: 'reports_day', - options: { partitioned: true }, - indexes: [ - { - index: { fields: ['timestamp'] }, - ddoc: 'timestamp-index', - name: 'timestamp-index', - type: 'json' as 'json', - partitioned: true - } - ] - }, - { - name: 'reports_month', - options: { partitioned: true }, - indexes: [ - { - index: { fields: ['timestamp'] }, - ddoc: 'timestamp-index', - name: 'timestamp-index', - type: 'json' as 'json', - partitioned: true - } - ] - } -] const TIME_PERIODS = ['hour', 'day', 'month'] export async function cacheEngine(): Promise { datelog('Starting Cache Engine') console.time('cacheEngine') - // get a list of all databases within couchdb - const result = await nanoDb.db.list() - datelog(result) - // if database does not exist, create it - for (const dbName of DB_NAMES) { - if (result.includes(dbName.name) === false) { - await nanoDb.db.create(dbName.name, dbName.options) - } - if (dbName.indexes !== undefined) { - const currentDb = nanoDb.db.use(dbName.name) - for (const dbIndex of dbName.indexes) { - try { - await currentDb.get(`_design/${dbIndex.ddoc}`) - datelog(`${dbName.name} already has '${dbIndex.name}' index.`) - } catch { - await currentDb.createIndex(dbIndex) - datelog(`Created '${dbIndex.name}' index for ${dbName.name}.`) - } - } - } - } + + await initDbs() const reportsApps = nanoDb.use('reports_apps') const reportsTransactions = nanoDb.use('reports_transactions') diff --git a/src/dbutils.ts b/src/dbutils.ts index 389f9879..1a2cfc0e 100644 --- a/src/dbutils.ts +++ b/src/dbutils.ts @@ -71,7 +71,7 @@ export const getAnalytic = async ( 'timestamp', 'usdValue' ], - use_index: 'status-usdvalue-timestamp-index', + use_index: 'timestamp-p', sort: ['timestamp'], limit: 1000000 } diff --git a/src/initDbs.ts b/src/initDbs.ts new file mode 100644 index 00000000..30472e5c --- /dev/null +++ b/src/initDbs.ts @@ -0,0 +1,107 @@ +import nano from 'nano' + +import config from '../config.json' +import { datelog } from './util' + +const nanoDb = nano(config.couchDbFullpath) + +const INDEXES: string[][] = [ + ['isoDate'], + ['status'], + ['status', 'depositCurrency', 'isoDate'], + ['status', 'depositCurrency', 'payoutCurrency', 'isoDate'], + ['status', 'isoDate'], + ['status', 'payoutAmount', 'depositAmount'], + ['status', 'payoutCurrency', 'isoDate'], + ['status', 'usdValue'], + ['status', 'usdvalue', 'timestamp'], + ['usdValue'] +] + +interface Index { + index: { fields: string[] } + ddoc: string + name: string + type: 'json' + partitioned: boolean +} + +const indexes: Index[] = [] + +INDEXES.forEach(index => { + const indexLower = index.map(i => i.toLowerCase()) + const out = { + index: { fields: index }, + ddoc: indexLower.join('-'), + name: indexLower.join('-'), + type: 'json' as 'json', + partitioned: false + } + indexes.push(out) + out.ddoc += '-p' + out.name += '-p' + out.partitioned = true + indexes.push(out) +}) + +const cacheIndexes = [ + { + index: { fields: ['timestamp'] }, + ddoc: 'timestamp-p', + name: 'timestamp-p', + type: 'json' as 'json', + partitioned: true + } +] + +const options = { partitioned: true } + +const DB_NAMES = [ + { name: 'reports_apps' }, + { name: 'reports_settings' }, + { + name: 'reports_transactions', + options, + indexes + }, + { name: 'reports_progresscache', options }, + { + name: 'reports_hour', + options, + indexes: cacheIndexes + }, + { + name: 'reports_day', + options, + indexes: cacheIndexes + }, + { + name: 'reports_month', + options, + indexes: cacheIndexes + } +] + +export async function initDbs(): Promise { + // get a list of all databases within couchdb + const result = await nanoDb.db.list() + datelog(result) + // if database does not exist, create it + for (const dbName of DB_NAMES) { + if (result.includes(dbName.name) === false) { + await nanoDb.db.create(dbName.name, dbName.options) + } + if (dbName.indexes !== undefined) { + const currentDb = nanoDb.db.use(dbName.name) + for (const dbIndex of dbName.indexes) { + try { + await currentDb.get(`_design/${dbIndex.ddoc}`) + datelog(`${dbName.name} already has '${dbIndex.name}' index.`) + } catch { + await currentDb.createIndex(dbIndex) + datelog(`Created '${dbIndex.name}' index for ${dbName.name}.`) + } + } + } + } +} diff --git a/src/queryEngine.ts b/src/queryEngine.ts index 109738ef..66b243f2 100644 --- a/src/queryEngine.ts +++ b/src/queryEngine.ts @@ -2,6 +2,7 @@ import nano from 'nano' import config from '../config.json' import { pagination } from './dbutils' +import { initDbs } from './initDbs' import { banxa } from './partners/banxa' import { bitaccess } from './partners/bitaccess' import { bitrefill } from './partners/bitrefill' @@ -34,56 +35,6 @@ import { datelog, promiseTimeout, standardizeNames } from './util' const nanoDb = nano(config.couchDbFullpath) -const INDEXES: string[][] = [ - ['isoDate'], - ['status'], - ['status', 'depositCurrency', 'isoDate'], - ['status', 'depositCurrency', 'payoutCurrency', 'isoDate'], - ['status', 'isoDate'], - ['status', 'payoutAmount', 'depositAmount'], - ['status', 'payoutCurrency', 'isoDate'], - ['status', 'usdValue'], - ['status', 'usdvalue', 'timestamp'], - ['usdValue'] -] - -interface Index { - index: { fields: string[] } - ddoc: string - name: string - type: 'json' - partitioned: boolean -} - -const indexes: Index[] = [] - -INDEXES.forEach(index => { - const indexLower = index.map(i => i.toLowerCase()) - const out = { - index: { fields: index }, - ddoc: indexLower.join('-'), - name: indexLower.join('-'), - type: 'json' as 'json', - partitioned: false - } - indexes.push(out) - out.ddoc += '-p' - out.name += '-p' - out.partitioned = true - indexes.push(out) -}) - -const DB_NAMES = [ - { name: 'reports_apps' }, - { name: 'reports_settings' }, - { - name: 'reports_transactions', - options: { partitioned: true }, - indexes - }, - { name: 'reports_progresscache', options: { partitioned: true } } -] - const plugins = [ banxa, bitaccess, @@ -120,27 +71,7 @@ const snooze: Function = async (ms: number) => new Promise((resolve: Function) => setTimeout(resolve, ms)) export async function queryEngine(): Promise { - // get a list of all databases within couchdb - const result = await nanoDb.db.list() - datelog(result) - // if database does not exist, create it - for (const dbName of DB_NAMES) { - if (result.includes(dbName.name) === false) { - await nanoDb.db.create(dbName.name, dbName.options) - } - if (dbName.indexes !== undefined) { - const currentDb = nanoDb.db.use(dbName.name) - for (const dbIndex of dbName.indexes) { - try { - await currentDb.get(`_design/${dbIndex.ddoc}`) - datelog(`${dbName.name} already has '${dbIndex.name}' index.`) - } catch { - await currentDb.createIndex(dbIndex) - datelog(`Created '${dbIndex.name}' index for ${dbName.name}.`) - } - } - } - } + await initDbs() const dbProgress = nanoDb.db.use('reports_progresscache') const dbApps = nanoDb.db.use('reports_apps') From dab77c177e08c37eb68da2457fcab56a2ac2adc2 Mon Sep 17 00:00:00 2001 From: Paul V Puey Date: Tue, 10 Oct 2023 16:38:40 -0700 Subject: [PATCH 10/22] Add partnerUrl and secret to banxa settings --- src/partners/banxa.ts | 31 ++++++++++++++++++++++--------- 1 file changed, 22 insertions(+), 9 deletions(-) diff --git a/src/partners/banxa.ts b/src/partners/banxa.ts index 84bdc4e9..083348ec 100644 --- a/src/partners/banxa.ts +++ b/src/partners/banxa.ts @@ -3,6 +3,7 @@ import { asMaybe, asNumber, asObject, + asOptional, asString, asUnknown, asValue @@ -11,7 +12,6 @@ import crypto from 'crypto' import { Response } from 'node-fetch' import { - asStandardPluginParams, PartnerPlugin, PluginParams, PluginResult, @@ -20,6 +20,17 @@ import { } from '../types' import { datelog, retryFetch, smartIsoDateFromTimestamp, snooze } from '../util' +export const asBanxaParams = asObject({ + settings: asObject({ + latestIsoDate: asOptional(asString, '2018-01-01T00:00:00.000Z') + }), + apiKeys: asObject({ + apiKey: asString, + secret: asString, + partnerUrl: asString + }) +}) + const asBanxaStatus = asMaybe( asValue( 'complete', @@ -72,8 +83,8 @@ export async function queryBanxa( pluginParams: PluginParams ): Promise { const ssFormatTxs: StandardTx[] = [] - const { settings, apiKeys } = asStandardPluginParams(pluginParams) - const { apiKey } = apiKeys + const { settings, apiKeys } = asBanxaParams(pluginParams) + const { apiKey, partnerUrl, secret } = apiKeys const { latestIsoDate } = settings if (apiKey == null) { @@ -100,11 +111,13 @@ export async function queryBanxa( `BANXA: Querying ${startDate}->${endDate}, limit=${PAGE_LIMIT} page=${page} attempt=${attempt}` ) const response = await fetchBanxaAPI( + partnerUrl, startDate, endDate, PAGE_LIMIT, page, - apiKey + apiKey, + secret ) // Handle the situation where the API is rate limiting the requests @@ -161,31 +174,31 @@ export const banxa: PartnerPlugin = { } async function fetchBanxaAPI( + partnerUrl: string, startDate: string, endDate: string, pageLimit: number, page: number, - apiKey: string + apiKey: string, + secret: string ): Promise { const nonce = Math.floor(new Date().getTime() / 1000) const apiQuery = `/api/orders?start_date=${startDate}&end_date=${endDate}&per_page=${pageLimit}&page=${page}` const text = `GET\n${apiQuery}\n${nonce}` - const secret = apiKey - const key = 'EDGE' const hmac = crypto .createHmac('sha256', secret) .update(text) .digest('hex') - const authHeader = `${key}:${hmac}:${nonce}` + const authHeader = `${apiKey}:${hmac}:${nonce}` const headers = { Authorization: 'Bearer ' + authHeader, 'Content-Type': 'application/json' } - return retryFetch(`https://edge.banxa.com${apiQuery}`, { headers: headers }) + return retryFetch(`${partnerUrl}${apiQuery}`, { headers: headers }) } function processBanxaOrders(rawtxs, ssFormatTxs): void { From 60241149d80657b0a5fe77ff165e36d8b0023e29 Mon Sep 17 00:00:00 2001 From: Samuel Holmes Date: Wed, 18 Oct 2023 15:40:30 -0700 Subject: [PATCH 11/22] Add missing types --- package.json | 9 +- src/bin/bogReporter.ts | 2 +- src/bin/fioPromo/fioLookup.ts | 3 +- src/demo/components/ApiKeyScreen.tsx | 14 +- src/demo/components/Custom.tsx | 11 +- src/demo/components/Preset.tsx | 4 +- src/demo/components/Sidebar.tsx | 15 +- src/demo/components/TimePeriods.tsx | 2 +- src/demo/demo.tsx | 12 +- src/util.ts | 6 +- yarn.lock | 369 ++++++++++++++++++++------- 11 files changed, 324 insertions(+), 123 deletions(-) diff --git a/package.json b/package.json index 1595cbbf..204916af 100644 --- a/package.json +++ b/package.json @@ -66,13 +66,14 @@ "@types/node-fetch": "^2.6.3", "@types/react": "^16.9.22", "@types/react-dom": "^16.9.5", - "@typescript-eslint/eslint-plugin": "^2.0.0", - "@typescript-eslint/parser": "^2.0.0", + "@types/react-router-dom": "^5.3.3", + "@typescript-eslint/eslint-plugin": "^6.8.0", + "@typescript-eslint/parser": "^6.8.0", "assert": "^2.0.0", "browserify-zlib": "^0.2.0", "chai": "^4.3.4", "eslint": ">=6.2.2", - "eslint-config-standard-kit": ">=0.14.4", + "eslint-config-standard-kit": "^0.15.1", "eslint-plugin-import": ">=2.18.0", "eslint-plugin-node": ">=9.1.0", "eslint-plugin-prettier": "^3.0.0", @@ -94,7 +95,7 @@ "stream-browserify": "^3.0.0", "stream-http": "^3.2.0", "sucrase": "^3.20.0", - "typescript": "^3.8.2", + "typescript": "^5.2.2", "url": "^0.11.0", "util": "^0.12.4" } diff --git a/src/bin/bogReporter.ts b/src/bin/bogReporter.ts index 10e1dea9..9881681e 100644 --- a/src/bin/bogReporter.ts +++ b/src/bin/bogReporter.ts @@ -53,7 +53,7 @@ async function queryBog(): Promise { ) } } catch (e) { - console.log(e.message) + console.log(String(e)) } } // Print totals diff --git a/src/bin/fioPromo/fioLookup.ts b/src/bin/fioPromo/fioLookup.ts index 7320c324..398254f1 100644 --- a/src/bin/fioPromo/fioLookup.ts +++ b/src/bin/fioPromo/fioLookup.ts @@ -94,8 +94,7 @@ export const checkAddress = async ( error = '' break } catch (e) { - error = e - console.log(e) + console.log(String(e)) } } if (error !== '') throw error diff --git a/src/demo/components/ApiKeyScreen.tsx b/src/demo/components/ApiKeyScreen.tsx index c0124315..13e0739a 100644 --- a/src/demo/components/ApiKeyScreen.tsx +++ b/src/demo/components/ApiKeyScreen.tsx @@ -1,10 +1,10 @@ -import React from 'react' -import { Redirect, withRouter } from 'react-router-dom' +import * as React from 'react' +import { Redirect, RouteComponentProps, withRouter } from 'react-router-dom' -interface ApiKeyScreenProps { +interface ApiKeyScreenProps extends RouteComponentProps { apiKeyMessage: string - handleApiKeyChange: any - getAppId: any + handleApiKeyChange: (apiKey: string) => void + getAppId: () => Promise | void appId: string } @@ -36,7 +36,7 @@ const apiKeyButton = { marginLeft: '20px' } -const ApiKeyScreen: any = (props: ApiKeyScreenProps) => { +const ApiKeyScreen = (props: ApiKeyScreenProps): React.ReactElement => { if (typeof props.appId === 'string' && props.appId.length > 0) { return } @@ -46,7 +46,7 @@ const ApiKeyScreen: any = (props: ApiKeyScreenProps) => {
  • props.handleApiKeyChange(e)} + onChange={e => props.handleApiKeyChange(e.target.value)} />
  • diff --git a/src/demo/components/Custom.tsx b/src/demo/components/Custom.tsx index 446f8f93..7d0a9cd6 100644 --- a/src/demo/components/Custom.tsx +++ b/src/demo/components/Custom.tsx @@ -113,10 +113,10 @@ class Custom extends Component { } render(): JSX.Element { - if (this.state.redirect === true) { + if (this.state.redirect) { return } - if (this.state.loading === true) { + if (this.state.loading) { return (
    diff --git a/src/demo/components/Graphs.tsx b/src/demo/components/Graphs.tsx index 3bca01c6..b629c952 100644 --- a/src/demo/components/Graphs.tsx +++ b/src/demo/components/Graphs.tsx @@ -11,7 +11,11 @@ import { } from 'recharts' import { AnalyticsResult, Bucket } from '../../types' -import { addObject, createQuarterBuckets, sevenDayDataMerge } from '../clientUtil' +import { + addObject, + createQuarterBuckets, + sevenDayDataMerge +} from '../clientUtil' import Partners from '../partners' import Modal from './Modal' @@ -188,7 +192,6 @@ const Graphs: any = (props: { stroke="#000000" allowDecimals={false} /> - {/* @ts-ignore */} { diff --git a/src/demo/components/Modal.tsx b/src/demo/components/Modal.tsx index e0cb2011..c98e762c 100644 --- a/src/demo/components/Modal.tsx +++ b/src/demo/components/Modal.tsx @@ -72,7 +72,7 @@ const Modal: any = (props: ModalProps) => { .slice(0, 15) let modalStyle = styleTwo let closable: JSX.Element | null = null - if (isClosable === true) { + if (isClosable) { modalStyle = { ...styleTwo, paddingTop: '2px' } closable = ( diff --git a/src/demo/components/Preset.tsx b/src/demo/components/Preset.tsx index d05d00af..d984429f 100644 --- a/src/demo/components/Preset.tsx +++ b/src/demo/components/Preset.tsx @@ -127,7 +127,7 @@ class Preset extends Component { } const analyticsArray = Object.values(analyticsResults) - // @ts-ignore + // @ts-expect-error this.setState({ [timeRange]: analyticsArray }) console.timeEnd(`${timeRange}`) } @@ -135,7 +135,7 @@ class Preset extends Component { } render(): JSX.Element { - if (this.state.redirect === true) { + if (this.state.redirect) { return } const dataSets = { diff --git a/src/demo/components/Sidebar.tsx b/src/demo/components/Sidebar.tsx index 0fdfc589..4eb36a89 100644 --- a/src/demo/components/Sidebar.tsx +++ b/src/demo/components/Sidebar.tsx @@ -113,7 +113,7 @@ const getISOString = (date: Date, end: boolean): string => { const year = date.getUTCFullYear() const month = date.getUTCMonth() const day = date.getUTCDate() - const isEnd = end === true ? 1 : 0 + const isEnd = end ? 1 : 0 const timezonedDate = new Date(Date.UTC(year, month, day) - isEnd) return timezonedDate.toISOString() } diff --git a/src/demo/demo.tsx b/src/demo/demo.tsx index 097a041f..34074bbb 100644 --- a/src/demo/demo.tsx +++ b/src/demo/demo.tsx @@ -1,3 +1,4 @@ +/* eslint-disable react/no-children-prop */ import 'regenerator-runtime/runtime' import 'react-datepicker/dist/react-datepicker.css' import './demo.css' diff --git a/src/initDbs.ts b/src/initDbs.ts index 186cdefc..f1ba30c9 100644 --- a/src/initDbs.ts +++ b/src/initDbs.ts @@ -88,7 +88,7 @@ export async function initDbs(): Promise { datelog(result) // if database does not exist, create it for (const dbName of DB_NAMES) { - if (result.includes(dbName.name) === false) { + if (!result.includes(dbName.name)) { await nanoDb.db.create(dbName.name, dbName.options) } if (dbName.indexes !== undefined) { diff --git a/src/partners/banxa.ts b/src/partners/banxa.ts index 083348ec..31943340 100644 --- a/src/partners/banxa.ts +++ b/src/partners/banxa.ts @@ -198,7 +198,7 @@ async function fetchBanxaAPI( 'Content-Type': 'application/json' } - return retryFetch(`${partnerUrl}${apiQuery}`, { headers: headers }) + return await retryFetch(`${partnerUrl}${apiQuery}`, { headers: headers }) } function processBanxaOrders(rawtxs, ssFormatTxs): void { diff --git a/src/partners/bitrefill.ts b/src/partners/bitrefill.ts index 8a1366c2..ed565e54 100644 --- a/src/partners/bitrefill.ts +++ b/src/partners/bitrefill.ts @@ -88,11 +88,7 @@ export async function queryBitrefill( continue } const tx = asBitrefillTx(rawtx) - if ( - tx.paymentReceived === true && - tx.expired === false && - tx.sent === true - ) { + if (tx.paymentReceived && !tx.expired && tx.sent) { const timestamp = tx.invoiceTime / 1000 let inputAmountStr = tx.satoshiPrice?.toString() diff --git a/src/partners/bity.ts b/src/partners/bity.ts index 9afd6162..b53fc99c 100644 --- a/src/partners/bity.ts +++ b/src/partners/bity.ts @@ -102,7 +102,7 @@ export async function queryBity( // status: 404 // statusText: "Not Found" // on page 4 - if (monthlyResponse.ok === true) { + if (monthlyResponse.ok) { monthlyTxs = asBityResult(await monthlyResponse.json()) } else if ( monthlyResponse.status === 404 && diff --git a/src/partners/changelly.ts b/src/partners/changelly.ts index 13315ba0..4c535623 100644 --- a/src/partners/changelly.ts +++ b/src/partners/changelly.ts @@ -89,10 +89,7 @@ export async function queryChangelly( ) { firstAttempt = true } - if ( - typeof pluginParams.settings.offset === 'number' && - firstAttempt === true - ) { + if (typeof pluginParams.settings.offset === 'number' && firstAttempt) { offset = pluginParams.settings.offset } if ( @@ -157,8 +154,8 @@ export async function queryChangelly( } if ( tx.createdAt < latestTimeStamp - QUERY_LOOKBACK && - done === false && - firstAttempt === false + !done && + !firstAttempt ) { datelog( `Changelly done: date ${tx.createdAt} < ${latestTimeStamp - diff --git a/src/partners/exolix.ts b/src/partners/exolix.ts index c817b7fd..94397601 100644 --- a/src/partners/exolix.ts +++ b/src/partners/exolix.ts @@ -119,7 +119,7 @@ export async function queryExolix( const response = await retryFetch(request, options) - if (response.ok === true) { + if (response.ok) { result = asExolixResult(await response.json()) } diff --git a/src/partners/foxExchange.ts b/src/partners/foxExchange.ts index 2669aa94..c9c67d5b 100644 --- a/src/partners/foxExchange.ts +++ b/src/partners/foxExchange.ts @@ -72,7 +72,7 @@ export async function queryFoxExchange( } } ) - if (res.ok === true) { + if (res.ok) { txs = asFoxExchangeTxs(await res.json()) } } catch (e) { diff --git a/src/partners/letsexchange.ts b/src/partners/letsexchange.ts index 2f4fadb7..e95864e2 100644 --- a/src/partners/letsexchange.ts +++ b/src/partners/letsexchange.ts @@ -101,7 +101,7 @@ export async function queryLetsExchange( const url = `https://api.letsexchange.io/api/v1/affiliate/history/${affiliateId}?limit=${LIMIT}&page=${page}&types=0` const result = await retryFetch(url, { headers, method: 'GET' }) - if (result.ok === false) { + if (!result.ok) { const text = await result.text() datelog(text) throw new Error(text) diff --git a/src/partners/moonpay.ts b/src/partners/moonpay.ts index 9e0bbb1f..9cbbb708 100644 --- a/src/partners/moonpay.ts +++ b/src/partners/moonpay.ts @@ -85,11 +85,6 @@ export async function queryMoonpay( throw e } - if (tx.currency != null) { - if (tx.baseCurrencyId === tx.currency.id) { - } - } - const date = new Date(tx.createdAt) const timestamp = date.getTime() const ssTx: StandardTx = { diff --git a/src/partners/sideshift.ts b/src/partners/sideshift.ts index 4d1a2f87..cbe99725 100644 --- a/src/partners/sideshift.ts +++ b/src/partners/sideshift.ts @@ -121,7 +121,7 @@ export async function querySideshift( const url = `https://sideshift.ai/api/affiliate/completedOrders?affiliateId=${sideshiftAffiliateId}&since=${startTime}¤tTime=${now}&signature=${signature}` try { const response = await retryFetch(url) - if (response.ok === false) { + if (!response.ok) { const text = await response.text() throw new Error(text) } diff --git a/src/partners/simplex.ts b/src/partners/simplex.ts index 42ba0986..1dbed577 100644 --- a/src/partners/simplex.ts +++ b/src/partners/simplex.ts @@ -128,7 +128,7 @@ export async function querySimplex( } } - if (csvData.data.has_more_pages === false) { + if (!csvData.data.has_more_pages) { break } nextPageCursor = asString(csvData.data.next_page_cursor) diff --git a/src/partners/swapuz.ts b/src/partners/swapuz.ts index 4afb569f..8dc7c0e4 100644 --- a/src/partners/swapuz.ts +++ b/src/partners/swapuz.ts @@ -77,7 +77,7 @@ export const querySwapuz = async ( password }) }) - if (response.ok === false) { + if (!response.ok) { const text = await response.text() throw new Error(text) } @@ -108,7 +108,7 @@ export const querySwapuz = async ( method: 'GET', headers }) - if (response.ok === false) { + if (!response.ok) { const text = await response.text() throw new Error(text) } diff --git a/src/partners/switchain.ts b/src/partners/switchain.ts index bb93223c..69210acd 100644 --- a/src/partners/switchain.ts +++ b/src/partners/switchain.ts @@ -58,7 +58,7 @@ export async function querySwitchain( } } const response = await fetch(request, options) - if (response.ok === true) { + if (response.ok) { result = asSwitchainResult(await response.json()) } } catch (e) { diff --git a/src/partners/totle.ts b/src/partners/totle.ts index c6ac2cc5..2a9822b1 100644 --- a/src/partners/totle.ts +++ b/src/partners/totle.ts @@ -318,12 +318,14 @@ export async function queryTotle( try { const { tokens } = asTokenResult( - await fetch('https://api.totle.com/tokens').then(async res => res.json()) + await fetch('https://api.totle.com/tokens').then( + async res => await res.json() + ) ) const { contracts } = asContractResult( - await fetch('https://api.totle.com/contracts').then(async res => - res.json() + await fetch('https://api.totle.com/contracts').then( + async res => await res.json() ) ) diff --git a/src/queryEngine.ts b/src/queryEngine.ts index e766a96d..65a57f4d 100644 --- a/src/queryEngine.ts +++ b/src/queryEngine.ts @@ -68,7 +68,7 @@ const QUERY_FREQ_MS = 60 * 1000 const MAX_CONCURRENT_QUERIES = 3 const BULK_FETCH_SIZE = 50 const snooze: Function = async (ms: number) => - new Promise((resolve: Function) => setTimeout(resolve, ms)) + await new Promise((resolve: Function) => setTimeout(resolve, ms)) export async function queryEngine(): Promise { await initDbs() @@ -91,10 +91,7 @@ export async function queryEngine(): Promise { let remainingPartners: String[] = [] // loop over every app for (const app of apps) { - if ( - config.soloAppIds != null && - config.soloAppIds.includes(app.appId) === false - ) { + if (config.soloAppIds != null && !config.soloAppIds.includes(app.appId)) { continue } let partnerStatus: string[] = [] @@ -105,7 +102,7 @@ export async function queryEngine(): Promise { if ( config.soloPartnerIds != null && - config.soloPartnerIds.includes(partnerId) === false + !config.soloPartnerIds.includes(partnerId) ) { continue } diff --git a/src/ratesEngine.ts b/src/ratesEngine.ts index 90dd418b..4ee74a72 100644 --- a/src/ratesEngine.ts +++ b/src/ratesEngine.ts @@ -15,7 +15,7 @@ const nanoDb = nano(config.couchDbFullpath) const QUERY_FREQ_MS = 15000 const QUERY_LIMIT = 50 const snooze: Function = async (ms: number) => - new Promise((resolve: Function) => setTimeout(resolve, ms)) + await new Promise((resolve: Function) => setTimeout(resolve, ms)) const asDbQueryResult = asObject({ docs: asArray(asUnknown) }) diff --git a/src/util.ts b/src/util.ts index a03b4b9b..6858d24c 100644 --- a/src/util.ts +++ b/src/util.ts @@ -1,6 +1,6 @@ import fetch, { RequestInfo, RequestInit, Response } from 'node-fetch' -import {config} from './config' +import { config } from './config' export const SIX_DAYS = 6 @@ -30,7 +30,7 @@ export const promiseTimeout = async ( p: Promise ): Promise => { const timeoutMins = config.timeoutOverrideMins ?? 5 - return new Promise((resolve, reject) => { + return await new Promise((resolve, reject) => { datelog('STARTING', msg) setTimeout(() => reject(new Error(`Timeout: ${msg}`)), 60000 * timeoutMins) p.then(v => resolve(v)).catch(e => reject(e)) @@ -64,10 +64,12 @@ export const datelog = function(...args: any): void { } export const snoozeReject = async (ms: number): Promise => - new Promise((resolve: Function, reject: Function) => setTimeout(reject, ms)) + await new Promise((resolve: Function, reject: Function) => + setTimeout(reject, ms) + ) export const snooze = async (ms: number): Promise => - new Promise((resolve: Function) => setTimeout(resolve, ms)) + await new Promise((resolve: Function) => setTimeout(resolve, ms)) export const retryFetch = async ( request: RequestInfo, diff --git a/yarn.lock b/yarn.lock index 29f56276..a62d324e 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2,6 +2,11 @@ # yarn lockfile v1 +"@aashutoshrathi/word-wrap@^1.2.3": + version "1.2.6" + resolved "https://registry.yarnpkg.com/@aashutoshrathi/word-wrap/-/word-wrap-1.2.6.tgz#bd9154aec9983f77b3a034ecaa015c2e4201f6cf" + integrity sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA== + "@babel/code-frame@^7.0.0": version "7.10.4" resolved "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.10.4.tgz" @@ -37,34 +42,38 @@ dependencies: regenerator-runtime "^0.13.4" -"@eslint-community/eslint-utils@^4.4.0": +"@eslint-community/eslint-utils@^4.2.0": version "4.4.0" resolved "https://registry.yarnpkg.com/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz#a23514e8fb9af1269d5f7788aa556798d61c6b59" integrity sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA== dependencies: eslint-visitor-keys "^3.3.0" -"@eslint-community/regexpp@^4.5.1": +"@eslint-community/regexpp@^4.4.0", "@eslint-community/regexpp@^4.6.1": version "4.9.1" resolved "https://registry.yarnpkg.com/@eslint-community/regexpp/-/regexpp-4.9.1.tgz#449dfa81a57a1d755b09aa58d826c1262e4283b4" integrity sha512-Y27x+MBLjXa+0JWDhykM3+JE+il3kHKAEqabfEWq3SDhZjLYb6/BHL/JKFnH3fe207JaXkyDo685Oc2Glt6ifA== -"@eslint/eslintrc@^0.2.1": - version "0.2.1" - resolved "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-0.2.1.tgz" - integrity sha512-XRUeBZ5zBWLYgSANMpThFddrZZkEbGHgUdt5UJjZfnlN9BGCiUBrf+nvbRupSjMvqzwnQN0qwCmOxITt1cfywA== +"@eslint/eslintrc@^2.1.2": + version "2.1.2" + resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-2.1.2.tgz#c6936b4b328c64496692f76944e755738be62396" + integrity sha512-+wvgpDsrB1YqAMdEUCcnTlpfVBH7Vqn6A/NT3D8WVXFIaKMlErPIZT3oCIAVCOtarRpMtelZLqJeU3t7WY6X6g== dependencies: ajv "^6.12.4" - debug "^4.1.1" - espree "^7.3.0" - globals "^12.1.0" - ignore "^4.0.6" + debug "^4.3.2" + espree "^9.6.0" + globals "^13.19.0" + ignore "^5.2.0" import-fresh "^3.2.1" - js-yaml "^3.13.1" - lodash "^4.17.19" - minimatch "^3.0.4" + js-yaml "^4.1.0" + minimatch "^3.1.2" strip-json-comments "^3.1.1" +"@eslint/js@8.51.0": + version "8.51.0" + resolved "https://registry.yarnpkg.com/@eslint/js/-/js-8.51.0.tgz#6d419c240cfb2b66da37df230f7e7eef801c32fa" + integrity sha512-HxjQ8Qn+4SI3/AFv6sOrDB+g6PpUTDwSJiQqOrnneEk8L71161srI9gjzzZvYVbzHiVg/BvcH95+cK/zfIt4pg== + "@ethersproject/abi@5.0.0-beta.153": version "5.0.0-beta.153" resolved "https://registry.npmjs.org/@ethersproject/abi/-/abi-5.0.0-beta.153.tgz" @@ -187,6 +196,25 @@ "@ethersproject/rlp" "^5.0.0" "@ethersproject/signing-key" "^5.0.0" +"@humanwhocodes/config-array@^0.11.11": + version "0.11.11" + resolved "https://registry.yarnpkg.com/@humanwhocodes/config-array/-/config-array-0.11.11.tgz#88a04c570dbbc7dd943e4712429c3df09bc32844" + integrity sha512-N2brEuAadi0CcdeMXUkhbZB84eskAc8MEX1By6qEchoVywSgXPIjou4rYsl0V3Hj0ZnuGycGCjdNgockbzeWNA== + dependencies: + "@humanwhocodes/object-schema" "^1.2.1" + debug "^4.1.1" + minimatch "^3.0.5" + +"@humanwhocodes/module-importer@^1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz#af5b2691a22b44be847b0ca81641c5fb6ad0172c" + integrity sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA== + +"@humanwhocodes/object-schema@^1.2.1": + version "1.2.1" + resolved "https://registry.yarnpkg.com/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz#b520529ec21d8e5945a1851dfd1c32e94e39ff45" + integrity sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA== + "@jridgewell/gen-mapping@^0.3.0": version "0.3.2" resolved "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz" @@ -330,7 +358,7 @@ resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz#5bd262af94e9d25bd1e71b05deed44876a222e8b" integrity sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A== -"@nodelib/fs.walk@^1.2.3": +"@nodelib/fs.walk@^1.2.3", "@nodelib/fs.walk@^1.2.8": version "1.2.8" resolved "https://registry.yarnpkg.com/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz#e95737e8bb6746ddedf69c556953494f196fe69a" integrity sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg== @@ -956,7 +984,7 @@ "@types/react" "*" hoist-non-react-statics "^3.3.0" -"@types/json-schema@^7.0.12": +"@types/json-schema@^7.0.9": version "7.0.14" resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.14.tgz#74a97a5573980802f32c8e47b663530ab3b6b7d1" integrity sha512-U3PUjAudAdJBeC2pgN8uTIKgxrb4nlDF3SF0++EldXQvQBGkpFZMSnwQiIoDU77tv45VgNkl/L4ouD+rEomujw== @@ -1050,7 +1078,7 @@ dependencies: "@types/node" "*" -"@types/semver@^7.5.0": +"@types/semver@^7.3.12": version "7.5.4" resolved "https://registry.yarnpkg.com/@types/semver/-/semver-7.5.4.tgz#0a41252ad431c473158b22f9bfb9a63df7541cff" integrity sha512-MMzuxN3GdFwskAnb6fz0orFvhfqi752yjaXylr0Rp4oDg5H0Zn1IuyRhDVvYOwAXoJirx2xuS16I3WjxnAIHiQ== @@ -1060,90 +1088,89 @@ resolved "https://registry.npmjs.org/@types/tough-cookie/-/tough-cookie-4.0.2.tgz" integrity sha512-Q5vtl1W5ue16D+nIaW8JWebSSraJVlK+EthKn7e7UcD4KWsaSJ8BqGPXNaPghgtcn/fhvrN17Tv8ksUsQpiplw== -"@typescript-eslint/eslint-plugin@^6.8.0": - version "6.8.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-6.8.0.tgz#06abe4265e7c82f20ade2dcc0e3403c32d4f148b" - integrity sha512-GosF4238Tkes2SHPQ1i8f6rMtG6zlKwMEB0abqSJ3Npvos+doIlc/ATG+vX1G9coDF3Ex78zM3heXHLyWEwLUw== +"@typescript-eslint/eslint-plugin@^5.36.2": + version "5.62.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.62.0.tgz#aeef0328d172b9e37d9bab6dbc13b87ed88977db" + integrity sha512-TiZzBSJja/LbhNPvk6yc0JrX9XqhQ0hdh6M2svYfsHGejaKFIAGd9MQ+ERIMzLGlN/kZoYIgdxFV0PuljTKXag== dependencies: - "@eslint-community/regexpp" "^4.5.1" - "@typescript-eslint/scope-manager" "6.8.0" - "@typescript-eslint/type-utils" "6.8.0" - "@typescript-eslint/utils" "6.8.0" - "@typescript-eslint/visitor-keys" "6.8.0" + "@eslint-community/regexpp" "^4.4.0" + "@typescript-eslint/scope-manager" "5.62.0" + "@typescript-eslint/type-utils" "5.62.0" + "@typescript-eslint/utils" "5.62.0" debug "^4.3.4" graphemer "^1.4.0" - ignore "^5.2.4" - natural-compare "^1.4.0" - semver "^7.5.4" - ts-api-utils "^1.0.1" - -"@typescript-eslint/parser@^6.8.0": - version "6.8.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-6.8.0.tgz#bb2a969d583db242f1ee64467542f8b05c2e28cb" - integrity sha512-5tNs6Bw0j6BdWuP8Fx+VH4G9fEPDxnVI7yH1IAPkQH5RUtvKwRoqdecAPdQXv4rSOADAaz1LFBZvZG7VbXivSg== - dependencies: - "@typescript-eslint/scope-manager" "6.8.0" - "@typescript-eslint/types" "6.8.0" - "@typescript-eslint/typescript-estree" "6.8.0" - "@typescript-eslint/visitor-keys" "6.8.0" + ignore "^5.2.0" + natural-compare-lite "^1.4.0" + semver "^7.3.7" + tsutils "^3.21.0" + +"@typescript-eslint/parser@^5.36.2": + version "5.62.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-5.62.0.tgz#1b63d082d849a2fcae8a569248fbe2ee1b8a56c7" + integrity sha512-VlJEV0fOQ7BExOsHYAGrgbEiZoi8D+Bl2+f6V2RrXerRSylnp+ZBHmPvaIa8cz0Ajx7WO7Z5RqfgYg7ED1nRhA== + dependencies: + "@typescript-eslint/scope-manager" "5.62.0" + "@typescript-eslint/types" "5.62.0" + "@typescript-eslint/typescript-estree" "5.62.0" debug "^4.3.4" -"@typescript-eslint/scope-manager@6.8.0": - version "6.8.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-6.8.0.tgz#5cac7977385cde068ab30686889dd59879811efd" - integrity sha512-xe0HNBVwCph7rak+ZHcFD6A+q50SMsFwcmfdjs9Kz4qDh5hWhaPhFjRs/SODEhroBI5Ruyvyz9LfwUJ624O40g== +"@typescript-eslint/scope-manager@5.62.0": + version "5.62.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-5.62.0.tgz#d9457ccc6a0b8d6b37d0eb252a23022478c5460c" + integrity sha512-VXuvVvZeQCQb5Zgf4HAxc04q5j+WrNAtNh9OwCsCgpKqESMTu3tF/jhZ3xG6T4NZwWl65Bg8KuS2uEvhSfLl0w== dependencies: - "@typescript-eslint/types" "6.8.0" - "@typescript-eslint/visitor-keys" "6.8.0" + "@typescript-eslint/types" "5.62.0" + "@typescript-eslint/visitor-keys" "5.62.0" -"@typescript-eslint/type-utils@6.8.0": - version "6.8.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-6.8.0.tgz#50365e44918ca0fd159844b5d6ea96789731e11f" - integrity sha512-RYOJdlkTJIXW7GSldUIHqc/Hkto8E+fZN96dMIFhuTJcQwdRoGN2rEWA8U6oXbLo0qufH7NPElUb+MceHtz54g== +"@typescript-eslint/type-utils@5.62.0": + version "5.62.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-5.62.0.tgz#286f0389c41681376cdad96b309cedd17d70346a" + integrity sha512-xsSQreu+VnfbqQpW5vnCJdq1Z3Q0U31qiWmRhr98ONQmcp/yhiPJFPq8MXiJVLiksmOKSjIldZzkebzHuCGzew== dependencies: - "@typescript-eslint/typescript-estree" "6.8.0" - "@typescript-eslint/utils" "6.8.0" + "@typescript-eslint/typescript-estree" "5.62.0" + "@typescript-eslint/utils" "5.62.0" debug "^4.3.4" - ts-api-utils "^1.0.1" + tsutils "^3.21.0" -"@typescript-eslint/types@6.8.0": - version "6.8.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-6.8.0.tgz#1ab5d4fe1d613e3f65f6684026ade6b94f7e3ded" - integrity sha512-p5qOxSum7W3k+llc7owEStXlGmSl8FcGvhYt8Vjy7FqEnmkCVlM3P57XQEGj58oqaBWDQXbJDZxwUWMS/EAPNQ== +"@typescript-eslint/types@5.62.0": + version "5.62.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-5.62.0.tgz#258607e60effa309f067608931c3df6fed41fd2f" + integrity sha512-87NVngcbVXUahrRTqIK27gD2t5Cu1yuCXxbLcFtCzZGlfyVWWh8mLHkoxzjsB6DDNnvdL+fW8MiwPEJyGJQDgQ== -"@typescript-eslint/typescript-estree@6.8.0": - version "6.8.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-6.8.0.tgz#9565f15e0cd12f55cf5aa0dfb130a6cb0d436ba1" - integrity sha512-ISgV0lQ8XgW+mvv5My/+iTUdRmGspducmQcDw5JxznasXNnZn3SKNrTRuMsEXv+V/O+Lw9AGcQCfVaOPCAk/Zg== +"@typescript-eslint/typescript-estree@5.62.0": + version "5.62.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-5.62.0.tgz#7d17794b77fabcac615d6a48fb143330d962eb9b" + integrity sha512-CmcQ6uY7b9y694lKdRB8FEel7JbU/40iSAPomu++SjLMntB+2Leay2LO6i8VnJk58MtE9/nQSFIH6jpyRWyYzA== dependencies: - "@typescript-eslint/types" "6.8.0" - "@typescript-eslint/visitor-keys" "6.8.0" + "@typescript-eslint/types" "5.62.0" + "@typescript-eslint/visitor-keys" "5.62.0" debug "^4.3.4" globby "^11.1.0" is-glob "^4.0.3" - semver "^7.5.4" - ts-api-utils "^1.0.1" - -"@typescript-eslint/utils@6.8.0": - version "6.8.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-6.8.0.tgz#d42939c2074c6b59844d0982ce26a51d136c4029" - integrity sha512-dKs1itdE2qFG4jr0dlYLQVppqTE+Itt7GmIf/vX6CSvsW+3ov8PbWauVKyyfNngokhIO9sKZeRGCUo1+N7U98Q== - dependencies: - "@eslint-community/eslint-utils" "^4.4.0" - "@types/json-schema" "^7.0.12" - "@types/semver" "^7.5.0" - "@typescript-eslint/scope-manager" "6.8.0" - "@typescript-eslint/types" "6.8.0" - "@typescript-eslint/typescript-estree" "6.8.0" - semver "^7.5.4" - -"@typescript-eslint/visitor-keys@6.8.0": - version "6.8.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-6.8.0.tgz#cffebed56ae99c45eba901c378a6447b06be58b8" - integrity sha512-oqAnbA7c+pgOhW2OhGvxm0t1BULX5peQI/rLsNDpGM78EebV3C9IGbX5HNZabuZ6UQrYveCLjKo8Iy/lLlBkkg== - dependencies: - "@typescript-eslint/types" "6.8.0" - eslint-visitor-keys "^3.4.1" + semver "^7.3.7" + tsutils "^3.21.0" + +"@typescript-eslint/utils@5.62.0": + version "5.62.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-5.62.0.tgz#141e809c71636e4a75daa39faed2fb5f4b10df86" + integrity sha512-n8oxjeb5aIbPFEtmQxQYOLI0i9n5ySBEY/ZEHHZqKQSFnxio1rv6dthascc9dLuwrL0RC5mPCxB7vnAVGAYWAQ== + dependencies: + "@eslint-community/eslint-utils" "^4.2.0" + "@types/json-schema" "^7.0.9" + "@types/semver" "^7.3.12" + "@typescript-eslint/scope-manager" "5.62.0" + "@typescript-eslint/types" "5.62.0" + "@typescript-eslint/typescript-estree" "5.62.0" + eslint-scope "^5.1.1" + semver "^7.3.7" + +"@typescript-eslint/visitor-keys@5.62.0": + version "5.62.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-5.62.0.tgz#2174011917ce582875954ffe2f6912d5931e353e" + integrity sha512-07ny+LHRzQXepkGg6w0mFY41fVUNBrL2Roj/++7V1txKugfjm/Ci/qSND03r2RhlJhJYMcTn9AhhSSqQp0Ysyw== + dependencies: + "@typescript-eslint/types" "5.62.0" + eslint-visitor-keys "^3.3.0" "@ungap/promise-all-settled@1.1.2": version "1.1.2" @@ -1171,21 +1198,21 @@ accepts@~1.3.8: mime-types "~2.1.34" negotiator "0.6.3" -acorn-jsx@^5.2.0: - version "5.3.1" - resolved "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.1.tgz" - integrity sha512-K0Ptm/47OKfQRpNQ2J/oIN/3QYiK6FwW+eJbILhsdxh2WTLdl+30o8aGdTbm5JbffpFFAg/g+zi1E+jvJha5ng== - -acorn@^7.4.0: - version "7.4.1" - resolved "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz" - integrity sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A== +acorn-jsx@^5.3.2: + version "5.3.2" + resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.2.tgz#7ed5bb55908b3b2f1bc55c6af1653bada7f07937" + integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ== acorn@^8.5.0: version "8.8.1" resolved "https://registry.npmjs.org/acorn/-/acorn-8.8.1.tgz" integrity sha512-7zFpHzhnqYKrkYdUjF1HI1bzd0VygEGX8lFk4k5zVMqHEoES+P+7TKI+EvLO9WVMJ8eekdO0aDEK044xTXwPPA== +acorn@^8.9.0: + version "8.10.0" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.10.0.tgz#8be5b3907a67221a81ab23c7889c4c5526b62ec5" + integrity sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw== + after@0.8.2: version "0.8.2" resolved "https://registry.npmjs.org/after/-/after-0.8.2.tgz" @@ -1206,20 +1233,20 @@ aggregate-error@^3.0.0: clean-stack "^2.0.0" indent-string "^4.0.0" -ajv@^6.10.0, ajv@^6.10.2, ajv@^6.12.4: - version "6.12.6" - resolved "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz" - integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== +ajv@^6.12.3: + version "6.12.4" + resolved "https://registry.npmjs.org/ajv/-/ajv-6.12.4.tgz" + integrity sha512-eienB2c9qVQs2KWexhkrdMLVDoIQCz5KSeLxwg9Lzk4DOfBtIK9PQwwufcsn1jjGuf9WZmqPMbGxOzfcuphJCQ== dependencies: fast-deep-equal "^3.1.1" fast-json-stable-stringify "^2.0.0" json-schema-traverse "^0.4.1" uri-js "^4.2.2" -ajv@^6.12.3: - version "6.12.4" - resolved "https://registry.npmjs.org/ajv/-/ajv-6.12.4.tgz" - integrity sha512-eienB2c9qVQs2KWexhkrdMLVDoIQCz5KSeLxwg9Lzk4DOfBtIK9PQwwufcsn1jjGuf9WZmqPMbGxOzfcuphJCQ== +ajv@^6.12.4: + version "6.12.6" + resolved "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz" + integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== dependencies: fast-deep-equal "^3.1.1" fast-json-stable-stringify "^2.0.0" @@ -1243,17 +1270,17 @@ ansi-regex@^3.0.0: resolved "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz" integrity sha1-7QMXwyIGT3lGbAKWa922Bas32Zg= -ansi-regex@^4.1.0: - version "4.1.0" - resolved "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz" - integrity sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg== - ansi-regex@^5.0.0: version "5.0.0" resolved "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz" integrity sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg== -ansi-styles@^3.2.0, ansi-styles@^3.2.1: +ansi-regex@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304" + integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ== + +ansi-styles@^3.2.1: version "3.2.1" resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz" integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== @@ -1288,53 +1315,94 @@ anymatch@~3.1.2: jayson "^2.0.1" socket.io-client "^1.4.6" -argparse@^1.0.7: - version "1.0.10" - resolved "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz" - integrity sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg== - dependencies: - sprintf-js "~1.0.2" - argparse@^2.0.1: version "2.0.1" resolved "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz" integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q== +array-buffer-byte-length@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/array-buffer-byte-length/-/array-buffer-byte-length-1.0.0.tgz#fabe8bc193fea865f317fe7807085ee0dee5aead" + integrity sha512-LPuwb2P+NrQw3XhxGc36+XSvuBPopovXYTR9Ew++Du9Yb/bx5AzBfrIsBoj0EZUifjQU+sHL21sseZ3jerWO/A== + dependencies: + call-bind "^1.0.2" + is-array-buffer "^3.0.1" + array-flatten@1.1.1: version "1.1.1" resolved "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz" integrity sha1-ml9pkFGx5wczKPKgCJaLZOopVdI= -array-includes@^3.1.1: - version "3.1.1" - resolved "https://registry.npmjs.org/array-includes/-/array-includes-3.1.1.tgz" - integrity sha512-c2VXaCHl7zPsvpkFsw4nxvFie4fh1ur9bpcgsVkIjqn0H/Xwdg+7fv3n2r/isyS8EBj5b06M9kHyZuIr4El6WQ== +array-includes@^3.1.6: + version "3.1.7" + resolved "https://registry.yarnpkg.com/array-includes/-/array-includes-3.1.7.tgz#8cd2e01b26f7a3086cbc87271593fe921c62abda" + integrity sha512-dlcsNBIiWhPkHdOEEKnehA+RNUWDc4UqFtnIXU4uuYDPtA4LDkr7qip2p0VvFAEXNDr0yWZ9PJyIRiGjRLQzwQ== dependencies: - define-properties "^1.1.3" - es-abstract "^1.17.0" - is-string "^1.0.5" + call-bind "^1.0.2" + define-properties "^1.2.0" + es-abstract "^1.22.1" + get-intrinsic "^1.2.1" + is-string "^1.0.7" array-union@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/array-union/-/array-union-2.1.0.tgz#b798420adbeb1de828d84acd8a2e23d3efe85e8d" integrity sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw== -array.prototype.flat@^1.2.3: +array.prototype.findlastindex@^1.2.2: version "1.2.3" - resolved "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.2.3.tgz" - integrity sha512-gBlRZV0VSmfPIeWfuuy56XZMvbVfbEUnOXUvt3F/eUUUSyzlgLxhEX4YAEpxNAogRGehPSnfXyPtYyKAhkzQhQ== + resolved "https://registry.yarnpkg.com/array.prototype.findlastindex/-/array.prototype.findlastindex-1.2.3.tgz#b37598438f97b579166940814e2c0493a4f50207" + integrity sha512-LzLoiOMAxvy+Gd3BAq3B7VeIgPdo+Q8hthvKtXybMvRV0jrXfJM/t8mw7nNlpEcVlVUnCnM2KSX4XU5HmpodOA== dependencies: - define-properties "^1.1.3" - es-abstract "^1.17.0-next.1" + call-bind "^1.0.2" + define-properties "^1.2.0" + es-abstract "^1.22.1" + es-shim-unscopables "^1.0.0" + get-intrinsic "^1.2.1" -array.prototype.flatmap@^1.2.3: - version "1.2.3" - resolved "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.2.3.tgz" - integrity sha512-OOEk+lkePcg+ODXIpvuU9PAryCikCJyo7GlDG1upleEpQRx6mzL9puEBkozQ5iAx20KV0l3DbyQwqciJtqe5Pg== +array.prototype.flat@^1.3.1: + version "1.3.2" + resolved "https://registry.yarnpkg.com/array.prototype.flat/-/array.prototype.flat-1.3.2.tgz#1476217df8cff17d72ee8f3ba06738db5b387d18" + integrity sha512-djYB+Zx2vLewY8RWlNCUdHjDXs2XOgm602S9E7P/UpHgfeHL00cRiIF+IN/G/aUJ7kGPb6yO/ErDI5V2s8iycA== dependencies: - define-properties "^1.1.3" - es-abstract "^1.17.0-next.1" - function-bind "^1.1.1" + call-bind "^1.0.2" + define-properties "^1.2.0" + es-abstract "^1.22.1" + es-shim-unscopables "^1.0.0" + +array.prototype.flatmap@^1.3.1: + version "1.3.2" + resolved "https://registry.yarnpkg.com/array.prototype.flatmap/-/array.prototype.flatmap-1.3.2.tgz#c9a7c6831db8e719d6ce639190146c24bbd3e527" + integrity sha512-Ewyx0c9PmpcsByhSW4r+9zDU7sGjFc86qf/kKtuSCRdhfbk0SNLLkaT5qvcHnRGgc5NP/ly/y+qkXkqONX54CQ== + dependencies: + call-bind "^1.0.2" + define-properties "^1.2.0" + es-abstract "^1.22.1" + es-shim-unscopables "^1.0.0" + +array.prototype.tosorted@^1.1.1: + version "1.1.2" + resolved "https://registry.yarnpkg.com/array.prototype.tosorted/-/array.prototype.tosorted-1.1.2.tgz#620eff7442503d66c799d95503f82b475745cefd" + integrity sha512-HuQCHOlk1Weat5jzStICBCd83NxiIMwqDg/dHEsoefabn/hJRj5pVdWcPUSpRrwhwxZOsQassMpgN/xRYFBMIg== + dependencies: + call-bind "^1.0.2" + define-properties "^1.2.0" + es-abstract "^1.22.1" + es-shim-unscopables "^1.0.0" + get-intrinsic "^1.2.1" + +arraybuffer.prototype.slice@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.2.tgz#98bd561953e3e74bb34938e77647179dfe6e9f12" + integrity sha512-yMBKppFur/fbHu9/6USUe03bZ4knMYiwFBcyiaXB8Go0qNehwX6inYPzK9U0NeQvGxKthcmHcaR8P5MStSRBAw== + dependencies: + array-buffer-byte-length "^1.0.0" + call-bind "^1.0.2" + define-properties "^1.2.0" + es-abstract "^1.22.1" + get-intrinsic "^1.2.1" + is-array-buffer "^3.0.2" + is-shared-array-buffer "^1.0.2" arraybuffer.slice@0.0.6: version "0.0.6" @@ -1378,11 +1446,6 @@ assertion-error@^1.1.0: resolved "https://registry.npmjs.org/assertion-error/-/assertion-error-1.1.0.tgz" integrity sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw== -astral-regex@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/astral-regex/-/astral-regex-1.0.0.tgz" - integrity sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg== - astral-regex@^2.0.0: version "2.0.0" resolved "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz" @@ -1393,6 +1456,13 @@ async-limiter@~1.0.0: resolved "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.1.tgz" integrity sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ== +asynciterator.prototype@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/asynciterator.prototype/-/asynciterator.prototype-1.0.0.tgz#8c5df0514936cdd133604dfcc9d3fb93f09b2b62" + integrity sha512-wwHYEIS0Q80f5mosx3L/dfG5t5rjEa9Ft51GTaNt862EnpyGHpgz2RkZvLPp1oF5TnAiTohkEKVEu8pQPJI7Vg== + dependencies: + has-symbols "^1.0.3" + asynckit@^0.4.0: version "0.4.0" resolved "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz" @@ -1983,11 +2053,6 @@ concat-map@0.0.1: resolved "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz" integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s= -contains-path@^0.1.0: - version "0.1.0" - resolved "https://registry.npmjs.org/contains-path/-/contains-path-0.1.0.tgz" - integrity sha1-/ozxhP9mcLa67wGp1IYaXL7EEgo= - content-disposition@0.5.4: version "0.5.4" resolved "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz" @@ -2293,14 +2358,14 @@ debug@2.3.3: dependencies: ms "0.7.2" -debug@2.6.9, debug@^2.2.0, debug@^2.6.9: +debug@2.6.9, debug@^2.2.0: version "2.6.9" resolved "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz" integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== dependencies: ms "2.0.0" -debug@4, debug@^4.3.4: +debug@4, debug@^4.3.2, debug@^4.3.4: version "4.3.4" resolved "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz" integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ== @@ -2314,7 +2379,14 @@ debug@4.3.1: dependencies: ms "2.1.2" -debug@^4.0.1, debug@^4.1.1: +debug@^3.2.7: + version "3.2.7" + resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.7.tgz#72580b7e9145fb39b6676f9c5e5fb100b934179a" + integrity sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ== + dependencies: + ms "^2.1.1" + +debug@^4.1.1: version "4.1.1" resolved "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz" integrity sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw== @@ -2377,6 +2449,15 @@ defer-to-connect@^1.0.1: resolved "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-1.1.3.tgz" integrity sha512-0ISdNousHvZT2EiFlZeZAHBUvSxmKswVCEf8hW7KWgG4a8MVEu/3Vb6uWYozkjylyCxe0JBIiRB1jV45S70WVQ== +define-data-property@^1.0.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/define-data-property/-/define-data-property-1.1.1.tgz#c35f7cd0ab09883480d12ac5cb213715587800b3" + integrity sha512-E7uGkTzkk1d0ByLeSc6ZsFS79Axg+m1P/VsgYsxHgiuc3tFSj+MjMIwe90FC4lOAZzNBdY7kkO2P2wKdsQ1vgQ== + dependencies: + get-intrinsic "^1.2.1" + gopd "^1.0.1" + has-property-descriptors "^1.0.0" + define-properties@^1.1.2, define-properties@^1.1.3: version "1.1.3" resolved "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz" @@ -2384,6 +2465,15 @@ define-properties@^1.1.2, define-properties@^1.1.3: dependencies: object-keys "^1.0.12" +define-properties@^1.1.4, define-properties@^1.2.0, define-properties@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.2.1.tgz#10781cc616eb951a80a034bafcaa7377f6af2b6c" + integrity sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg== + dependencies: + define-data-property "^1.0.1" + has-property-descriptors "^1.0.0" + object-keys "^1.1.1" + delayed-stream@~1.0.0: version "1.0.0" resolved "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz" @@ -2433,14 +2523,6 @@ dir-glob@^3.0.1: dependencies: path-type "^4.0.0" -doctrine@1.5.0: - version "1.5.0" - resolved "https://registry.npmjs.org/doctrine/-/doctrine-1.5.0.tgz" - integrity sha1-N53Ocw9hZvds76TmcHoVmwLFpvo= - dependencies: - esutils "^2.0.2" - isarray "^1.0.0" - doctrine@^2.1.0: version "2.1.0" resolved "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz" @@ -2543,11 +2625,6 @@ elliptic@6.5.3, elliptic@^6.4.0, elliptic@^6.5.2, elliptic@^6.5.3: minimalistic-assert "^1.0.0" minimalistic-crypto-utils "^1.0.0" -emoji-regex@^7.0.1: - version "7.0.3" - resolved "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz" - integrity sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA== - emoji-regex@^8.0.0: version "8.0.0" resolved "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz" @@ -2612,14 +2689,14 @@ entities@^3.0.1: resolved "https://registry.npmjs.org/entities/-/entities-3.0.1.tgz" integrity sha512-WiyBqoomrwMdFG1e0kqvASYfnlb0lp8M5o5Fw2OFq1hNZxxcNk8Ik0Xm7LxzBhuidnZB/UtBqVCgUz3kBOP51Q== -error-ex@^1.2.0, error-ex@^1.3.1: +error-ex@^1.3.1: version "1.3.2" resolved "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz" integrity sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g== dependencies: is-arrayish "^0.2.1" -es-abstract@^1.17.0, es-abstract@^1.17.0-next.1, es-abstract@^1.17.5: +es-abstract@^1.17.0-next.1, es-abstract@^1.17.5: version "1.17.6" resolved "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.6.tgz" integrity sha512-Fr89bON3WFyUi5EvAeI48QTWX0AyekGgLA8H+c+7fbfCkJwRWRMLd8CQedNEyJuoYYhmtEqY92pgte1FAhBlhw== @@ -2662,6 +2739,87 @@ es-abstract@^1.18.5: string.prototype.trimstart "^1.0.4" unbox-primitive "^1.0.1" +es-abstract@^1.22.1: + version "1.22.2" + resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.22.2.tgz#90f7282d91d0ad577f505e423e52d4c1d93c1b8a" + integrity sha512-YoxfFcDmhjOgWPWsV13+2RNjq1F6UQnfs+8TftwNqtzlmFzEXvlUwdrNrYeaizfjQzRMxkZ6ElWMOJIFKdVqwA== + dependencies: + array-buffer-byte-length "^1.0.0" + arraybuffer.prototype.slice "^1.0.2" + available-typed-arrays "^1.0.5" + call-bind "^1.0.2" + es-set-tostringtag "^2.0.1" + es-to-primitive "^1.2.1" + function.prototype.name "^1.1.6" + get-intrinsic "^1.2.1" + get-symbol-description "^1.0.0" + globalthis "^1.0.3" + gopd "^1.0.1" + has "^1.0.3" + has-property-descriptors "^1.0.0" + has-proto "^1.0.1" + has-symbols "^1.0.3" + internal-slot "^1.0.5" + is-array-buffer "^3.0.2" + is-callable "^1.2.7" + is-negative-zero "^2.0.2" + is-regex "^1.1.4" + is-shared-array-buffer "^1.0.2" + is-string "^1.0.7" + is-typed-array "^1.1.12" + is-weakref "^1.0.2" + object-inspect "^1.12.3" + object-keys "^1.1.1" + object.assign "^4.1.4" + regexp.prototype.flags "^1.5.1" + safe-array-concat "^1.0.1" + safe-regex-test "^1.0.0" + string.prototype.trim "^1.2.8" + string.prototype.trimend "^1.0.7" + string.prototype.trimstart "^1.0.7" + typed-array-buffer "^1.0.0" + typed-array-byte-length "^1.0.0" + typed-array-byte-offset "^1.0.0" + typed-array-length "^1.0.4" + unbox-primitive "^1.0.2" + which-typed-array "^1.1.11" + +es-iterator-helpers@^1.0.12: + version "1.0.15" + resolved "https://registry.yarnpkg.com/es-iterator-helpers/-/es-iterator-helpers-1.0.15.tgz#bd81d275ac766431d19305923707c3efd9f1ae40" + integrity sha512-GhoY8uYqd6iwUl2kgjTm4CZAf6oo5mHK7BPqx3rKgx893YSsy0LGHV6gfqqQvZt/8xM8xeOnfXBCfqclMKkJ5g== + dependencies: + asynciterator.prototype "^1.0.0" + call-bind "^1.0.2" + define-properties "^1.2.1" + es-abstract "^1.22.1" + es-set-tostringtag "^2.0.1" + function-bind "^1.1.1" + get-intrinsic "^1.2.1" + globalthis "^1.0.3" + has-property-descriptors "^1.0.0" + has-proto "^1.0.1" + has-symbols "^1.0.3" + internal-slot "^1.0.5" + iterator.prototype "^1.1.2" + safe-array-concat "^1.0.1" + +es-set-tostringtag@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/es-set-tostringtag/-/es-set-tostringtag-2.0.1.tgz#338d502f6f674301d710b80c8592de8a15f09cd8" + integrity sha512-g3OMbtlwY3QewlqAiMLI47KywjWZoEytKr8pf6iTC8uJq5bIAH52Z9pnQ8pVL6whrCto53JZDuUIsifGeLorTg== + dependencies: + get-intrinsic "^1.1.3" + has "^1.0.3" + has-tostringtag "^1.0.0" + +es-shim-unscopables@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/es-shim-unscopables/-/es-shim-unscopables-1.0.0.tgz#702e632193201e3edf8713635d083d378e510241" + integrity sha512-Jm6GPcCdC30eMLbZ2x8z2WuRwAws3zTBBKuusffYVUrNj/GVSUAZ+xKMaUpfNDR5IbyNA5LJbaecoUVbmUcB1w== + dependencies: + has "^1.0.3" + es-to-primitive@^1.2.1: version "1.2.1" resolved "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz" @@ -2724,9 +2882,9 @@ escape-html@~1.0.3: resolved "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz" integrity sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow== -escape-string-regexp@4.0.0: +escape-string-regexp@4.0.0, escape-string-regexp@^4.0.0: version "4.0.0" - resolved "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz" + resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34" integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA== escape-string-regexp@^1.0.5: @@ -2734,26 +2892,26 @@ escape-string-regexp@^1.0.5: resolved "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz" integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ= -eslint-config-standard-kit@^0.15.1: +eslint-config-standard-kit@0.15.1: version "0.15.1" resolved "https://registry.yarnpkg.com/eslint-config-standard-kit/-/eslint-config-standard-kit-0.15.1.tgz#5a5224a35424729519a519729bbb3fc804e50a3c" integrity sha512-2GWaMElSjB1eTy3NetdnRCwKfidmdCyT7tJAOo11AZN3qlNPut51bd+8hG0bhbKAqUC0px2DyM+uI6uDyx9L9w== -eslint-import-resolver-node@^0.3.3: - version "0.3.4" - resolved "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.4.tgz" - integrity sha512-ogtf+5AB/O+nM6DIeBUNr2fuT7ot9Qg/1harBfBtaP13ekEWFQEEMP94BCB7zaNW3gyY+8SHYF00rnqYwXKWOA== +eslint-import-resolver-node@^0.3.7: + version "0.3.9" + resolved "https://registry.yarnpkg.com/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.9.tgz#d4eaac52b8a2e7c3cd1903eb00f7e053356118ac" + integrity sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g== dependencies: - debug "^2.6.9" - resolve "^1.13.1" + debug "^3.2.7" + is-core-module "^2.13.0" + resolve "^1.22.4" -eslint-module-utils@^2.6.0: - version "2.6.0" - resolved "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.6.0.tgz" - integrity sha512-6j9xxegbqe8/kZY8cYpcp0xhbK0EgJlg3g9mib3/miLaExuuwc3n5UEfSnU6hWMbT0FAYVvDbL9RrRgpUeQIvA== +eslint-module-utils@^2.8.0: + version "2.8.0" + resolved "https://registry.yarnpkg.com/eslint-module-utils/-/eslint-module-utils-2.8.0.tgz#e439fee65fc33f6bba630ff621efc38ec0375c49" + integrity sha512-aWajIYfsqCKRDgUfjEXNN/JlrzauMuSEy5sbd7WXbtW3EH6A6MpwEh42c7qD+MqQo9QMJ6fWLAeIJynx0g6OAw== dependencies: - debug "^2.6.9" - pkg-dir "^2.0.0" + debug "^3.2.7" eslint-plugin-es@^3.0.0: version "3.0.1" @@ -2763,28 +2921,32 @@ eslint-plugin-es@^3.0.0: eslint-utils "^2.0.0" regexpp "^3.0.0" -eslint-plugin-import@>=2.18.0: - version "2.22.0" - resolved "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.22.0.tgz" - integrity sha512-66Fpf1Ln6aIS5Gr/55ts19eUuoDhAbZgnr6UxK5hbDx6l/QgQgx61AePq+BV4PP2uXQFClgMVzep5zZ94qqsxg== - dependencies: - array-includes "^3.1.1" - array.prototype.flat "^1.2.3" - contains-path "^0.1.0" - debug "^2.6.9" - doctrine "1.5.0" - eslint-import-resolver-node "^0.3.3" - eslint-module-utils "^2.6.0" +eslint-plugin-import@^2.22.1: + version "2.28.1" + resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.28.1.tgz#63b8b5b3c409bfc75ebaf8fb206b07ab435482c4" + integrity sha512-9I9hFlITvOV55alzoKBI+K9q74kv0iKMeY6av5+umsNwayt59fz692daGyjR+oStBQgx6nwR9rXldDev3Clw+A== + dependencies: + array-includes "^3.1.6" + array.prototype.findlastindex "^1.2.2" + array.prototype.flat "^1.3.1" + array.prototype.flatmap "^1.3.1" + debug "^3.2.7" + doctrine "^2.1.0" + eslint-import-resolver-node "^0.3.7" + eslint-module-utils "^2.8.0" has "^1.0.3" - minimatch "^3.0.4" - object.values "^1.1.1" - read-pkg-up "^2.0.0" - resolve "^1.17.0" - tsconfig-paths "^3.9.0" - -eslint-plugin-node@>=9.1.0: + is-core-module "^2.13.0" + is-glob "^4.0.3" + minimatch "^3.1.2" + object.fromentries "^2.0.6" + object.groupby "^1.0.0" + object.values "^1.1.6" + semver "^6.3.1" + tsconfig-paths "^3.14.2" + +eslint-plugin-node@^11.1.0: version "11.1.0" - resolved "https://registry.npmjs.org/eslint-plugin-node/-/eslint-plugin-node-11.1.0.tgz" + resolved "https://registry.yarnpkg.com/eslint-plugin-node/-/eslint-plugin-node-11.1.0.tgz#c95544416ee4ada26740a30474eefc5402dc671d" integrity sha512-oUwtPJ1W0SKD0Tr+wqu92c5xuCeQqB3hSCHasn/ZgjFdA9iDGNkNf2Zi9ztY7X+hNuMib23LNGRm6+uN+KLE3g== dependencies: eslint-plugin-es "^3.0.0" @@ -2794,44 +2956,49 @@ eslint-plugin-node@>=9.1.0: resolve "^1.10.1" semver "^6.1.0" -eslint-plugin-prettier@^3.0.0: - version "3.1.4" - resolved "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-3.1.4.tgz" - integrity sha512-jZDa8z76klRqo+TdGDTFJSavwbnWK2ZpqGKNZ+VvweMW516pDUMmQ2koXvxEE4JhzNvTv+radye/bWGBmA6jmg== +eslint-plugin-prettier@^3.1.4: + version "3.4.1" + resolved "https://registry.yarnpkg.com/eslint-plugin-prettier/-/eslint-plugin-prettier-3.4.1.tgz#e9ddb200efb6f3d05ffe83b1665a716af4a387e5" + integrity sha512-htg25EUYUeIhKHXjOinK4BgCcDwtLHjqaxCDsMy5nbnUMkKFvIhMVCp+5GFUXQ4Nr8lBsPqtGAqBenbpFqAA2g== dependencies: prettier-linter-helpers "^1.0.0" -eslint-plugin-promise@>=4.2.1: - version "4.2.1" - resolved "https://registry.npmjs.org/eslint-plugin-promise/-/eslint-plugin-promise-4.2.1.tgz" - integrity sha512-VoM09vT7bfA7D+upt+FjeBO5eHIJQBUWki1aPvB+vbNiHS3+oGIJGIeyBtKQTME6UPXXy3vV07OL1tHd3ANuDw== - -eslint-plugin-react@>=7.14.2: - version "7.20.6" - resolved "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.20.6.tgz" - integrity sha512-kidMTE5HAEBSLu23CUDvj8dc3LdBU0ri1scwHBZjI41oDv4tjsWZKU7MQccFzH1QYPYhsnTF2ovh7JlcIcmxgg== - dependencies: - array-includes "^3.1.1" - array.prototype.flatmap "^1.2.3" +eslint-plugin-promise@^4.2.1: + version "4.3.1" + resolved "https://registry.yarnpkg.com/eslint-plugin-promise/-/eslint-plugin-promise-4.3.1.tgz#61485df2a359e03149fdafc0a68b0e030ad2ac45" + integrity sha512-bY2sGqyptzFBDLh/GMbAxfdJC+b0f23ME63FOE4+Jao0oZ3E1LEwFtWJX/1pGMJLiTtrSSern2CRM/g+dfc0eQ== + +eslint-plugin-react-hooks@^4.2.0: + version "4.6.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.6.0.tgz#4c3e697ad95b77e93f8646aaa1630c1ba607edd3" + integrity sha512-oFc7Itz9Qxh2x4gNHStv3BqJq54ExXmfC+a1NjAta66IAN87Wu0R/QArgIS9qKzX3dXKPI9H5crl9QchNMY9+g== + +eslint-plugin-react@^7.21.5: + version "7.33.2" + resolved "https://registry.yarnpkg.com/eslint-plugin-react/-/eslint-plugin-react-7.33.2.tgz#69ee09443ffc583927eafe86ffebb470ee737608" + integrity sha512-73QQMKALArI8/7xGLNI/3LylrEYrlKZSb5C9+q3OtOewTnMQi5cT+aE9E41sLCmli3I9PGGmD1yiZydyo4FEPw== + dependencies: + array-includes "^3.1.6" + array.prototype.flatmap "^1.3.1" + array.prototype.tosorted "^1.1.1" doctrine "^2.1.0" - has "^1.0.3" - jsx-ast-utils "^2.4.1" - object.entries "^1.1.2" - object.fromentries "^2.0.2" - object.values "^1.1.1" - prop-types "^15.7.2" - resolve "^1.17.0" - string.prototype.matchall "^4.0.2" - -eslint-plugin-simple-import-sort@>=4.0.0: - version "5.0.3" - resolved "https://registry.npmjs.org/eslint-plugin-simple-import-sort/-/eslint-plugin-simple-import-sort-5.0.3.tgz" - integrity sha512-1rf3AWiHeWNCQdAq0iXNnlccnH1UDnelGgrPbjBBHE8d2hXVtOudcmy0vTF4hri3iJ0MKz8jBhmH6lJ0ZWZLHQ== - -eslint-plugin-standard@>=4.0.0: - version "4.0.1" - resolved "https://registry.npmjs.org/eslint-plugin-standard/-/eslint-plugin-standard-4.0.1.tgz" - integrity sha512-v/KBnfyaOMPmZc/dmc6ozOdWqekGp7bBGq4jLAecEfPGmfKiWS4sA8sC0LqiV9w5qmXAtXVn4M3p1jSyhY85SQ== + es-iterator-helpers "^1.0.12" + estraverse "^5.3.0" + jsx-ast-utils "^2.4.1 || ^3.0.0" + minimatch "^3.1.2" + object.entries "^1.1.6" + object.fromentries "^2.0.6" + object.hasown "^1.1.2" + object.values "^1.1.6" + prop-types "^15.8.1" + resolve "^2.0.0-next.4" + semver "^6.3.1" + string.prototype.matchall "^4.0.8" + +eslint-plugin-simple-import-sort@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/eslint-plugin-simple-import-sort/-/eslint-plugin-simple-import-sort-6.0.1.tgz#24a3af3b745dcd389c060db28e22d0f5e3edf86e" + integrity sha512-RfFnoi7fQtv7z9sZNJidIcZgWc0ZJe8uOPC3ldmatai4Igr5iDpzTmSUDEZKYm4TnrR01N0X32kfKvax7bivHQ== eslint-scope@^5.1.1: version "5.1.1" @@ -2841,89 +3008,87 @@ eslint-scope@^5.1.1: esrecurse "^4.3.0" estraverse "^4.1.1" -eslint-utils@^2.0.0, eslint-utils@^2.1.0: +eslint-scope@^7.2.2: + version "7.2.2" + resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-7.2.2.tgz#deb4f92563390f32006894af62a22dba1c46423f" + integrity sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg== + dependencies: + esrecurse "^4.3.0" + estraverse "^5.2.0" + +eslint-utils@^2.0.0: version "2.1.0" resolved "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz" integrity sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg== dependencies: eslint-visitor-keys "^1.1.0" -eslint-visitor-keys@^1.1.0, eslint-visitor-keys@^1.3.0: +eslint-visitor-keys@^1.1.0: version "1.3.0" resolved "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz" integrity sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ== -eslint-visitor-keys@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.0.0.tgz" - integrity sha512-QudtT6av5WXels9WjIM7qz1XD1cWGvX4gGXvp/zBn9nXG02D0utdU3Em2m/QjTnrsk6bBjmCygl3rmj118msQQ== - -eslint-visitor-keys@^3.3.0, eslint-visitor-keys@^3.4.1: +eslint-visitor-keys@^3.3.0, eslint-visitor-keys@^3.4.1, eslint-visitor-keys@^3.4.3: version "3.4.3" resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz#0cd72fe8550e3c2eae156a96a4dddcd1c8ac5800" integrity sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag== -eslint@>=6.2.2: - version "7.12.1" - resolved "https://registry.npmjs.org/eslint/-/eslint-7.12.1.tgz" - integrity sha512-HlMTEdr/LicJfN08LB3nM1rRYliDXOmfoO4vj39xN6BLpFzF00hbwBoqHk8UcJ2M/3nlARZWy/mslvGEuZFvsg== - dependencies: - "@babel/code-frame" "^7.0.0" - "@eslint/eslintrc" "^0.2.1" - ajv "^6.10.0" +eslint@^8.19.0: + version "8.51.0" + resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.51.0.tgz#4a82dae60d209ac89a5cff1604fea978ba4950f3" + integrity sha512-2WuxRZBrlwnXi+/vFSJyjMqrNjtJqiasMzehF0shoLaW7DzS3/9Yvrmq5JiT66+pNjiX4UBnLDiKHcWAr/OInA== + dependencies: + "@eslint-community/eslint-utils" "^4.2.0" + "@eslint-community/regexpp" "^4.6.1" + "@eslint/eslintrc" "^2.1.2" + "@eslint/js" "8.51.0" + "@humanwhocodes/config-array" "^0.11.11" + "@humanwhocodes/module-importer" "^1.0.1" + "@nodelib/fs.walk" "^1.2.8" + ajv "^6.12.4" chalk "^4.0.0" cross-spawn "^7.0.2" - debug "^4.0.1" + debug "^4.3.2" doctrine "^3.0.0" - enquirer "^2.3.5" - eslint-scope "^5.1.1" - eslint-utils "^2.1.0" - eslint-visitor-keys "^2.0.0" - espree "^7.3.0" - esquery "^1.2.0" + escape-string-regexp "^4.0.0" + eslint-scope "^7.2.2" + eslint-visitor-keys "^3.4.3" + espree "^9.6.1" + esquery "^1.4.2" esutils "^2.0.2" - file-entry-cache "^5.0.1" - functional-red-black-tree "^1.0.1" - glob-parent "^5.0.0" - globals "^12.1.0" - ignore "^4.0.6" - import-fresh "^3.0.0" + fast-deep-equal "^3.1.3" + file-entry-cache "^6.0.1" + find-up "^5.0.0" + glob-parent "^6.0.2" + globals "^13.19.0" + graphemer "^1.4.0" + ignore "^5.2.0" imurmurhash "^0.1.4" is-glob "^4.0.0" - js-yaml "^3.13.1" + is-path-inside "^3.0.3" + js-yaml "^4.1.0" json-stable-stringify-without-jsonify "^1.0.1" levn "^0.4.1" - lodash "^4.17.19" - minimatch "^3.0.4" + lodash.merge "^4.6.2" + minimatch "^3.1.2" natural-compare "^1.4.0" - optionator "^0.9.1" - progress "^2.0.0" - regexpp "^3.1.0" - semver "^7.2.1" - strip-ansi "^6.0.0" - strip-json-comments "^3.1.0" - table "^5.2.3" + optionator "^0.9.3" + strip-ansi "^6.0.1" text-table "^0.2.0" - v8-compile-cache "^2.0.3" -espree@^7.3.0: - version "7.3.0" - resolved "https://registry.npmjs.org/espree/-/espree-7.3.0.tgz" - integrity sha512-dksIWsvKCixn1yrEXO8UosNSxaDoSYpq9reEjZSbHLpT5hpaCAKTLBwq0RHtLrIr+c0ByiYzWT8KTMRzoRCNlw== +espree@^9.6.0, espree@^9.6.1: + version "9.6.1" + resolved "https://registry.yarnpkg.com/espree/-/espree-9.6.1.tgz#a2a17b8e434690a5432f2f8018ce71d331a48c6f" + integrity sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ== dependencies: - acorn "^7.4.0" - acorn-jsx "^5.2.0" - eslint-visitor-keys "^1.3.0" - -esprima@^4.0.0: - version "4.0.1" - resolved "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz" - integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== + acorn "^8.9.0" + acorn-jsx "^5.3.2" + eslint-visitor-keys "^3.4.1" -esquery@^1.2.0: - version "1.3.1" - resolved "https://registry.npmjs.org/esquery/-/esquery-1.3.1.tgz" - integrity sha512-olpvt9QG0vniUBZspVRN6lwB7hOZoTRtT+jzR+tS4ffYx2mzbw+z0XCOk44aaLYKApNX5nMm+E+P6o25ip/DHQ== +esquery@^1.4.2: + version "1.5.0" + resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.5.0.tgz#6ce17738de8577694edd7361c57182ac8cb0db0b" + integrity sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg== dependencies: estraverse "^5.1.0" @@ -2944,6 +3109,11 @@ estraverse@^5.1.0, estraverse@^5.2.0: resolved "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz" integrity sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ== +estraverse@^5.3.0: + version "5.3.0" + resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.3.0.tgz#2eea5290702f26ab8fe5370370ff86c965d21123" + integrity sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA== + esutils@^2.0.2: version "2.0.3" resolved "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz" @@ -3150,7 +3320,7 @@ eyes@^0.1.8: resolved "https://registry.npmjs.org/eyes/-/eyes-0.1.8.tgz" integrity sha1-Ys8SAjTGg3hdkCNIqADvPgzCC8A= -fast-deep-equal@^3.1.1: +fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3: version "3.1.3" resolved "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz" integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== @@ -3195,12 +3365,12 @@ figures@^3.2.0: dependencies: escape-string-regexp "^1.0.5" -file-entry-cache@^5.0.1: - version "5.0.1" - resolved "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-5.0.1.tgz" - integrity sha512-bCg29ictuBaKUwwArK4ouCaqDgLZcysCFLmM/Yn/FDoqndh/9vNuQfXRDvTuXKLxfD/JtZQGKFT8MGcJBK644g== +file-entry-cache@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-6.0.1.tgz#211b2dd9659cb0394b073e7323ac3c933d522027" + integrity sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg== dependencies: - flat-cache "^2.0.1" + flat-cache "^3.0.4" fill-range@^7.0.1: version "7.0.1" @@ -3222,21 +3392,14 @@ finalhandler@1.2.0: statuses "2.0.1" unpipe "~1.0.0" -find-up@5.0.0: +find-up@5.0.0, find-up@^5.0.0: version "5.0.0" - resolved "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-5.0.0.tgz#4c92819ecb7083561e4f4a240a86be5198f536fc" integrity sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng== dependencies: locate-path "^6.0.0" path-exists "^4.0.0" -find-up@^2.0.0, find-up@^2.1.0: - version "2.1.0" - resolved "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz" - integrity sha1-RdG35QbHF93UgndaK3eSCjwMV6c= - dependencies: - locate-path "^2.0.0" - find-up@^4.0.0: version "4.1.0" resolved "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz" @@ -3252,30 +3415,37 @@ find-versions@^3.2.0: dependencies: semver-regex "^2.0.0" -flat-cache@^2.0.1: - version "2.0.1" - resolved "https://registry.npmjs.org/flat-cache/-/flat-cache-2.0.1.tgz" - integrity sha512-LoQe6yDuUMDzQAEH8sgmh4Md6oZnc/7PjtwjNFSzveXqSHt6ka9fPBuso7IGf9Rz4uqnSnWiFH2B/zj24a5ReA== +flat-cache@^3.0.4: + version "3.1.1" + resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-3.1.1.tgz#a02a15fdec25a8f844ff7cc658f03dd99eb4609b" + integrity sha512-/qM2b3LUIaIgviBQovTLvijfyOQXPtSRnRK26ksj2J7rzPIecePUIpJsZ4T02Qg+xiAEKIs5K8dsHEd+VaKa/Q== dependencies: - flatted "^2.0.0" - rimraf "2.6.3" - write "1.0.3" + flatted "^3.2.9" + keyv "^4.5.3" + rimraf "^3.0.2" flat@^5.0.2: version "5.0.2" resolved "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz" integrity sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ== -flatted@^2.0.0: - version "2.0.2" - resolved "https://registry.npmjs.org/flatted/-/flatted-2.0.2.tgz" - integrity sha512-r5wGx7YeOwNWNlCA0wQ86zKyDLMQr+/RB8xy74M4hTphfmjlijTSSXGuH8rnvKZnfT9i+75zmd8jcKdMR4O6jA== +flatted@^3.2.9: + version "3.2.9" + resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.2.9.tgz#7eb4c67ca1ba34232ca9d2d93e9886e611ad7daf" + integrity sha512-36yxDn5H7OFZQla0/jFJmbIKTdZAQHngCedGxiMmpNfEZM0sdEeT+WczLQrjK6D7o2aiyLYDnkw0R3JK0Qv1RQ== follow-redirects@^1.14.0, follow-redirects@^1.15.0: version "1.15.2" resolved "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.2.tgz" integrity sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA== +for-each@^0.3.3: + version "0.3.3" + resolved "https://registry.yarnpkg.com/for-each/-/for-each-0.3.3.tgz#69b447e88a0a5d32c3e7084f3f1710034b21376e" + integrity sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw== + dependencies: + is-callable "^1.1.3" + foreach@^2.0.5: version "2.0.5" resolved "https://registry.npmjs.org/foreach/-/foreach-2.0.5.tgz" @@ -3354,10 +3524,20 @@ function-bind@^1.1.1: resolved "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz" integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== -functional-red-black-tree@^1.0.1: - version "1.0.1" - resolved "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz" - integrity sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc= +function.prototype.name@^1.1.5, function.prototype.name@^1.1.6: + version "1.1.6" + resolved "https://registry.yarnpkg.com/function.prototype.name/-/function.prototype.name-1.1.6.tgz#cdf315b7d90ee77a4c6ee216c3c3362da07533fd" + integrity sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg== + dependencies: + call-bind "^1.0.2" + define-properties "^1.2.0" + es-abstract "^1.22.1" + functions-have-names "^1.2.3" + +functions-have-names@^1.2.3: + version "1.2.3" + resolved "https://registry.yarnpkg.com/functions-have-names/-/functions-have-names-1.2.3.tgz#0404fe4ee2ba2f607f0e0ec3c80bae994133b834" + integrity sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ== get-caller-file@^2.0.5: version "2.0.5" @@ -3378,6 +3558,16 @@ get-intrinsic@^1.0.2, get-intrinsic@^1.1.0, get-intrinsic@^1.1.1: has "^1.0.3" has-symbols "^1.0.1" +get-intrinsic@^1.1.3, get-intrinsic@^1.2.0, get-intrinsic@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.2.1.tgz#d295644fed4505fc9cde952c37ee12b477a83d82" + integrity sha512-2DcsyfABl+gVHEfCOaTrWgyt+tb6MSEGmKq+kI5HwLbIYgjgmMcV8KQ41uaKz1xxUcn9tJtgFbQUEVcEbd0FYw== + dependencies: + function-bind "^1.1.1" + has "^1.0.3" + has-proto "^1.0.1" + has-symbols "^1.0.3" + get-own-enumerable-property-symbols@^3.0.0: version "3.0.2" resolved "https://registry.npmjs.org/get-own-enumerable-property-symbols/-/get-own-enumerable-property-symbols-3.0.2.tgz" @@ -3422,13 +3612,20 @@ getpass@^0.1.1: dependencies: assert-plus "^1.0.0" -glob-parent@^5.0.0, glob-parent@^5.1.2, glob-parent@~5.1.2: +glob-parent@^5.1.2, glob-parent@~5.1.2: version "5.1.2" resolved "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz" integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== dependencies: is-glob "^4.0.1" +glob-parent@^6.0.2: + version "6.0.2" + resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-6.0.2.tgz#6d237d99083950c79290f24c7642a3de9a28f9e3" + integrity sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A== + dependencies: + is-glob "^4.0.3" + glob@7.1.6, glob@^7.1.3: version "7.1.6" resolved "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz" @@ -3461,12 +3658,12 @@ global@~4.3.0: min-document "^2.19.0" process "~0.5.1" -globals@^12.1.0: - version "12.4.0" - resolved "https://registry.npmjs.org/globals/-/globals-12.4.0.tgz" - integrity sha512-BWICuzzDvDoH54NHKCseDanAhE3CeDorgDL5MT6LMXXj2WCnd9UC2szdk4AWLfjdgNBCXLUanXYcpBBKOSWGwg== +globals@^13.19.0: + version "13.23.0" + resolved "https://registry.yarnpkg.com/globals/-/globals-13.23.0.tgz#ef31673c926a0976e1f61dab4dca57e0c0a8af02" + integrity sha512-XAmF0RjlrjY23MA51q3HltdlGxUpXPvg0GioKiD9X6HD28iMjo2dKC8Vqwm7lne4GNr78+RHTfliktR6ZH09wA== dependencies: - type-fest "^0.8.1" + type-fest "^0.20.2" globals@^13.2.0: version "13.19.0" @@ -3475,6 +3672,13 @@ globals@^13.2.0: dependencies: type-fest "^0.20.2" +globalthis@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/globalthis/-/globalthis-1.0.3.tgz#5852882a52b80dc301b0660273e1ed082f0b6ccf" + integrity sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA== + dependencies: + define-properties "^1.1.3" + globby@^11.1.0: version "11.1.0" resolved "https://registry.yarnpkg.com/globby/-/globby-11.1.0.tgz#bd4be98bb042f83d796f7e3811991fbe82a0d34b" @@ -3487,6 +3691,13 @@ globby@^11.1.0: merge2 "^1.4.1" slash "^3.0.0" +gopd@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/gopd/-/gopd-1.0.1.tgz#29ff76de69dac7489b7c0918a5788e56477c332c" + integrity sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA== + dependencies: + get-intrinsic "^1.1.3" + got@9.6.0: version "9.6.0" resolved "https://registry.npmjs.org/got/-/got-9.6.0.tgz" @@ -3562,6 +3773,11 @@ has-bigints@^1.0.1: resolved "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.1.tgz" integrity sha512-LSBS2LjbNBTf6287JEbEzvJgftkF5qFkmCo9hDRpAzKhUOlJ+hx8dd4USs00SgsUNwc4617J9ki5YtEClM2ffA== +has-bigints@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/has-bigints/-/has-bigints-1.0.2.tgz#0871bd3e3d51626f6ca0966668ba35d5602d6eaa" + integrity sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ== + has-binary@0.1.7: version "0.1.7" resolved "https://registry.npmjs.org/has-binary/-/has-binary-0.1.7.tgz" @@ -3584,6 +3800,18 @@ has-flag@^4.0.0: resolved "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz" integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== +has-property-descriptors@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz#610708600606d36961ed04c196193b6a607fa861" + integrity sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ== + dependencies: + get-intrinsic "^1.1.1" + +has-proto@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/has-proto/-/has-proto-1.0.1.tgz#1885c1305538958aff469fef37937c22795408e0" + integrity sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg== + has-symbol-support-x@^1.4.1: version "1.4.2" resolved "https://registry.npmjs.org/has-symbol-support-x/-/has-symbol-support-x-1.4.2.tgz" @@ -3594,7 +3822,7 @@ has-symbols@^1.0.0, has-symbols@^1.0.1: resolved "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.1.tgz" integrity sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg== -has-symbols@^1.0.2: +has-symbols@^1.0.2, has-symbols@^1.0.3: version "1.0.3" resolved "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz" integrity sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A== @@ -3776,22 +4004,17 @@ ieee754@^1.1.4: resolved "https://registry.npmjs.org/ieee754/-/ieee754-1.1.13.tgz" integrity sha512-4vf7I2LYV/HaWerSo3XmlMkp5eZ83i+/CDluXi/IGTs/O1sejBNhTtnxzmRZfvOUqj7lZjqHkeTvpgSFDlWZTg== -ignore@^4.0.6: - version "4.0.6" - resolved "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz" - integrity sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg== - ignore@^5.1.1: version "5.1.8" resolved "https://registry.npmjs.org/ignore/-/ignore-5.1.8.tgz" integrity sha512-BMpfD7PpiETpBl/A6S498BaIJ6Y/ABT93ETbby2fP00v4EbvPBXWEoaR1UBPKs3iR53pJY7EtZk5KACI57i1Uw== -ignore@^5.2.0, ignore@^5.2.4: +ignore@^5.2.0: version "5.2.4" resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.2.4.tgz#a291c0c6178ff1b960befe47fcdec301674a6324" integrity sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ== -import-fresh@^3.0.0, import-fresh@^3.1.0, import-fresh@^3.2.1: +import-fresh@^3.1.0, import-fresh@^3.2.1: version "3.2.1" resolved "https://registry.npmjs.org/import-fresh/-/import-fresh-3.2.1.tgz" integrity sha512-6e1q1cnWP2RXD9/keSkxHScg508CdXqXWgWBaETNhyuBFz+kUZlKboh+ISK+bU++DmbHimVBrOz/zzPe0sZ3sQ== @@ -3827,15 +4050,6 @@ inherits@2, inherits@2.0.4, inherits@^2.0.1, inherits@^2.0.3, inherits@^2.0.4, i resolved "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz" integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== -internal-slot@^1.0.2: - version "1.0.2" - resolved "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.2.tgz" - integrity sha512-2cQNfwhAfJIkU4KZPkDI+Gj5yNNnbqi40W9Gge6dfnk4TocEVm00B3bdiL+JINrbGJil2TeHvM4rETGzk/f/0g== - dependencies: - es-abstract "^1.17.0-next.1" - has "^1.0.3" - side-channel "^1.0.2" - internal-slot@^1.0.3: version "1.0.3" resolved "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.3.tgz" @@ -3845,6 +4059,15 @@ internal-slot@^1.0.3: has "^1.0.3" side-channel "^1.0.4" +internal-slot@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/internal-slot/-/internal-slot-1.0.5.tgz#f2a2ee21f668f8627a4667f309dc0f4fb6674986" + integrity sha512-Y+R5hJrzs52QCG2laLn4udYVnxsfny9CpOhNhUvk/SSSVyF6T27FzRbF0sroPidSu3X8oEAkOn2K804mjpt6UQ== + dependencies: + get-intrinsic "^1.2.0" + has "^1.0.3" + side-channel "^1.0.4" + ipaddr.js@1.9.1: version "1.9.1" resolved "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz" @@ -3855,11 +4078,27 @@ is-arguments@^1.0.4: resolved "https://registry.npmjs.org/is-arguments/-/is-arguments-1.0.4.tgz" integrity sha512-xPh0Rmt8NE65sNzvyUmWgI1tz3mKq74lGA0mL8LYZcoIzKOzDh6HmrYm3d18k60nHerC8A9Km8kYu87zfSFnLA== +is-array-buffer@^3.0.1, is-array-buffer@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/is-array-buffer/-/is-array-buffer-3.0.2.tgz#f2653ced8412081638ecb0ebbd0c41c6e0aecbbe" + integrity sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w== + dependencies: + call-bind "^1.0.2" + get-intrinsic "^1.2.0" + is-typed-array "^1.1.10" + is-arrayish@^0.2.1: version "0.2.1" resolved "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz" integrity sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0= +is-async-function@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/is-async-function/-/is-async-function-2.0.0.tgz#8e4418efd3e5d3a6ebb0164c05ef5afb69aa9646" + integrity sha512-Y1JXKrfykRJGdlDwdKlLpLyMIiWqWvuSd17TvZk68PLAOGOoF4Xyav1z0Xhoi+gCYjZVeC5SI+hYFOfvXmGRCA== + dependencies: + has-tostringtag "^1.0.0" + is-bigint@^1.0.1: version "1.0.4" resolved "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz" @@ -3882,6 +4121,11 @@ is-boolean-object@^1.1.0: call-bind "^1.0.2" has-tostringtag "^1.0.0" +is-callable@^1.1.3, is-callable@^1.2.7: + version "1.2.7" + resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.7.tgz#3bc2a85ea742d9e36205dcacdd72ca1fdc51b055" + integrity sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA== + is-callable@^1.1.4, is-callable@^1.2.0: version "1.2.0" resolved "https://registry.npmjs.org/is-callable/-/is-callable-1.2.0.tgz" @@ -3892,16 +4136,37 @@ is-callable@^1.2.4: resolved "https://registry.npmjs.org/is-callable/-/is-callable-1.2.4.tgz" integrity sha512-nsuwtxZfMX67Oryl9LCQ+upnC0Z0BgpwntpS89m1H/TLF0zNfzfLMV/9Wa/6MZsj0acpEjAO0KF1xT6ZdLl95w== +is-core-module@^2.13.0: + version "2.13.0" + resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.13.0.tgz#bb52aa6e2cbd49a30c2ba68c42bf3435ba6072db" + integrity sha512-Z7dk6Qo8pOCp3l4tsX2C5ZVas4V+UxwQodwZhLopL91TX8UyyHEXafPcyoeeWuLrwzHcr3igO78wNLwHJHsMCQ== + dependencies: + has "^1.0.3" + is-date-object@^1.0.1: version "1.0.2" resolved "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.2.tgz" integrity sha512-USlDT524woQ08aoZFzh3/Z6ch9Y/EWXEHQ/AaRN0SkKq4t2Jw2R2339tSXmwuVoY7LLlBCbOIlx2myP/L5zk0g== +is-date-object@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.5.tgz#0841d5536e724c25597bf6ea62e1bd38298df31f" + integrity sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ== + dependencies: + has-tostringtag "^1.0.0" + is-extglob@^2.1.1: version "2.1.1" resolved "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz" integrity sha1-qIwCU1eR8C7TfHahueqXc8gz+MI= +is-finalizationregistry@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-finalizationregistry/-/is-finalizationregistry-1.0.2.tgz#c8749b65f17c133313e661b1289b95ad3dbd62e6" + integrity sha512-0by5vtUJs8iFQb5TYUHHPudOR+qXYIMKtiUzvLIZITZUjknFmziyBJuLhVRc+Ds0dREFlskDNJKYIdIzu/9pfw== + dependencies: + call-bind "^1.0.2" + is-fullwidth-code-point@^2.0.0: version "2.0.0" resolved "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz" @@ -3917,7 +4182,7 @@ is-function@^1.0.1: resolved "https://registry.npmjs.org/is-function/-/is-function-1.0.2.tgz" integrity sha512-lw7DUp0aWXYg+CBCN+JKkcE0Q2RayZnSvnZBlwgxHBQhqt5pZNVy4Ri7H9GmmXkdu7LUthszM+Tor1u/2iBcpQ== -is-generator-function@^1.0.7: +is-generator-function@^1.0.10, is-generator-function@^1.0.7: version "1.0.10" resolved "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.0.10.tgz" integrity sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A== @@ -3941,6 +4206,11 @@ is-json@^2.0.1: resolved "https://registry.npmjs.org/is-json/-/is-json-2.0.1.tgz" integrity sha512-6BEnpVn1rcf3ngfmViLM6vjUjGErbdrL4rwlv+u1NO1XO8kqT4YGL8+19Q+Z/bas8tY90BTWMk2+fW1g6hQjbA== +is-map@^2.0.1: + version "2.0.2" + resolved "https://registry.yarnpkg.com/is-map/-/is-map-2.0.2.tgz#00922db8c9bf73e81b7a335827bc2a43f2b91127" + integrity sha512-cOZFQQozTha1f4MxLFzlgKYPTyj26picdZTx82hbc/Xf4K/tZOOXSCkMvU4pKioRXGDLJRn0GM7Upe7kR721yg== + is-nan@^1.2.1: version "1.3.2" resolved "https://registry.npmjs.org/is-nan/-/is-nan-1.3.2.tgz" @@ -3949,7 +4219,7 @@ is-nan@^1.2.1: call-bind "^1.0.0" define-properties "^1.1.3" -is-negative-zero@^2.0.1: +is-negative-zero@^2.0.1, is-negative-zero@^2.0.2: version "2.0.2" resolved "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz" integrity sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA== @@ -3976,6 +4246,11 @@ is-object@^1.0.1: resolved "https://registry.npmjs.org/is-object/-/is-object-1.0.1.tgz" integrity sha1-iVJojF7C/9awPsyF52ngKQMINHA= +is-path-inside@^3.0.3: + version "3.0.3" + resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-3.0.3.tgz#d231362e53a07ff2b0e0ea7fed049161ffd16283" + integrity sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ== + is-plain-obj@^1.1.0: version "1.1.0" resolved "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz" @@ -4011,11 +4286,23 @@ is-retry-allowed@^1.0.0: resolved "https://registry.npmjs.org/is-retry-allowed/-/is-retry-allowed-1.2.0.tgz" integrity sha512-RUbUeKwvm3XG2VYamhJL1xFktgjvPzL0Hq8C+6yrWIswDy3BIXGqCxhxkc30N9jqK311gVU137K8Ei55/zVJRg== +is-set@^2.0.1: + version "2.0.2" + resolved "https://registry.yarnpkg.com/is-set/-/is-set-2.0.2.tgz#90755fa4c2562dc1c5d4024760d6119b94ca18ec" + integrity sha512-+2cnTEZeY5z/iXGbLhPrOAaK/Mau5k5eXq9j14CpRTftq0pAJu2MwVRSZhyZWBzx3o6X795Lz6Bpb6R0GKf37g== + is-shared-array-buffer@^1.0.1: version "1.0.1" resolved "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.1.tgz" integrity sha512-IU0NmyknYZN0rChcKhRO1X8LYz5Isj/Fsqh8NJOSf+N/hCOTwy29F32Ik7a+QszE63IdvmwdTPDd6cZ5pg4cwA== +is-shared-array-buffer@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz#8f259c573b60b6a32d4058a1a07430c0a7344c79" + integrity sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA== + dependencies: + call-bind "^1.0.2" + is-stream@^1.0.0: version "1.1.0" resolved "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz" @@ -4052,6 +4339,13 @@ is-symbol@^1.0.3: dependencies: has-symbols "^1.0.2" +is-typed-array@^1.1.10, is-typed-array@^1.1.12, is-typed-array@^1.1.9: + version "1.1.12" + resolved "https://registry.yarnpkg.com/is-typed-array/-/is-typed-array-1.1.12.tgz#d0bab5686ef4a76f7a73097b95470ab199c57d4a" + integrity sha512-Z14TF2JNG8Lss5/HMqt0//T9JeHXttXy5pH/DBU4vi98ozO2btxzq9MwYDZYnKwU8nRsz/+GVFVRDq3DkVuSPg== + dependencies: + which-typed-array "^1.1.11" + is-typed-array@^1.1.3, is-typed-array@^1.1.7: version "1.1.8" resolved "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.8.tgz" @@ -4073,22 +4367,35 @@ is-unicode-supported@^0.1.0: resolved "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz" integrity sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw== -is-weakref@^1.0.1: +is-weakmap@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/is-weakmap/-/is-weakmap-2.0.1.tgz#5008b59bdc43b698201d18f62b37b2ca243e8cf2" + integrity sha512-NSBR4kH5oVj1Uwvv970ruUkCV7O1mzgVFO4/rev2cLRda9Tm9HrL70ZPut4rOHgY0FNrUu9BCbXA2sdQ+x0chA== + +is-weakref@^1.0.1, is-weakref@^1.0.2: version "1.0.2" resolved "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz" integrity sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ== dependencies: call-bind "^1.0.2" +is-weakset@^2.0.1: + version "2.0.2" + resolved "https://registry.yarnpkg.com/is-weakset/-/is-weakset-2.0.2.tgz#4569d67a747a1ce5a994dfd4ef6dcea76e7c0a1d" + integrity sha512-t2yVvttHkQktwnNNmBQ98AhENLdPUTDTE21uPqAQ0ARwQfGeQKRVS0NNurH7bTf7RrvcVn1OOge45CnBeHCSmg== + dependencies: + call-bind "^1.0.2" + get-intrinsic "^1.1.1" + isarray@0.0.1: version "0.0.1" resolved "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz" integrity sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8= -isarray@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz" - integrity sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE= +isarray@^2.0.5: + version "2.0.5" + resolved "https://registry.yarnpkg.com/isarray/-/isarray-2.0.5.tgz#8af1e4c1221244cc62459faf38940d4e644a5723" + integrity sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw== isexe@^2.0.0: version "2.0.0" @@ -4108,6 +4415,17 @@ isurl@^1.0.0-alpha5: has-to-string-tag-x "^1.2.0" is-object "^1.0.1" +iterator.prototype@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/iterator.prototype/-/iterator.prototype-1.1.2.tgz#5e29c8924f01916cb9335f1ff80619dcff22b0c0" + integrity sha512-DR33HMMr8EzwuRL8Y9D3u2BMj8+RqSE850jfGu59kS7tbmPLzGkZmVSfyCFSDxuZiEY6Rzt3T2NA/qU+NwVj1w== + dependencies: + define-properties "^1.2.1" + get-intrinsic "^1.2.1" + has-symbols "^1.0.3" + reflect.getprototypeof "^1.0.4" + set-function-name "^2.0.1" + jayson@^2.0.1: version "2.1.2" resolved "https://registry.npmjs.org/jayson/-/jayson-2.1.2.tgz" @@ -4137,21 +4455,13 @@ js-sha3@^0.8.0: resolved "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz" integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== -js-yaml@4.1.0: +js-yaml@4.1.0, js-yaml@^4.1.0: version "4.1.0" - resolved "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz" + resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-4.1.0.tgz#c1fb65f8f5017901cdd2c951864ba18458a10602" integrity sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA== dependencies: argparse "^2.0.1" -js-yaml@^3.13.1: - version "3.14.0" - resolved "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.0.tgz" - integrity sha512-/4IbIeHcD9VMHFqDR/gQ7EdZdLimOvW2DdcxFjdyyZ9NsbS+ccrXqVWDtab/lRl5AlUqmpBx8EhPaWR+OtY17A== - dependencies: - argparse "^1.0.7" - esprima "^4.0.0" - jsbn@~0.1.0: version "0.1.1" resolved "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz" @@ -4162,6 +4472,11 @@ json-buffer@3.0.0: resolved "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.0.tgz" integrity sha1-Wx85evx11ne96Lz8Dkfh+aPZqJg= +json-buffer@3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/json-buffer/-/json-buffer-3.0.1.tgz#9338802a30d3b6605fbe0613e094008ca8c05a13" + integrity sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ== + json-parse-better-errors@^1.0.1: version "1.0.2" resolved "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz" @@ -4192,10 +4507,10 @@ json3@3.3.2: resolved "https://registry.npmjs.org/json3/-/json3-3.3.2.tgz" integrity sha1-PAQ0dD35Pi9cQq7nsZvLSDV19OE= -json5@^1.0.1: - version "1.0.1" - resolved "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz" - integrity sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow== +json5@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/json5/-/json5-1.0.2.tgz#63d98d60f21b313b77c4d6da18bfa69d80e1d593" + integrity sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA== dependencies: minimist "^1.2.0" @@ -4226,13 +4541,15 @@ jsprim@^1.2.2: json-schema "0.2.3" verror "1.10.0" -jsx-ast-utils@^2.4.1: - version "2.4.1" - resolved "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-2.4.1.tgz" - integrity sha512-z1xSldJ6imESSzOjd3NNkieVJKRlKYSOtMG8SFyCj2FIrvSaSuli/WjpBkEzCBoR9bYYYFgqJw61Xhu7Lcgk+w== +"jsx-ast-utils@^2.4.1 || ^3.0.0": + version "3.3.5" + resolved "https://registry.yarnpkg.com/jsx-ast-utils/-/jsx-ast-utils-3.3.5.tgz#4766bd05a8e2a11af222becd19e15575e52a853a" + integrity sha512-ZZow9HBI5O6EPgSJLUb8n2NKgmVWTwCvHGwFuJlMjvLFqlGG6pjirPhtdsseaLZjSibD8eegzmYpUZwoIlj2cQ== dependencies: - array-includes "^3.1.1" - object.assign "^4.1.0" + array-includes "^3.1.6" + array.prototype.flat "^1.3.1" + object.assign "^4.1.4" + object.values "^1.1.6" keccak@^3.0.0: version "3.0.1" @@ -4249,6 +4566,13 @@ keyv@^3.0.0: dependencies: json-buffer "3.0.0" +keyv@^4.5.3: + version "4.5.4" + resolved "https://registry.yarnpkg.com/keyv/-/keyv-4.5.4.tgz#a879a99e29452f942439f2a405e3af8b31d4de93" + integrity sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw== + dependencies: + json-buffer "3.0.1" + levn@^0.4.1: version "0.4.1" resolved "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz" @@ -4371,16 +4695,6 @@ lmdb@2.5.2: "@lmdb/lmdb-linux-x64" "2.5.2" "@lmdb/lmdb-win32-x64" "2.5.2" -load-json-file@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/load-json-file/-/load-json-file-2.0.0.tgz" - integrity sha1-eUfkIUmvgNaWy/eXvKq8/h/inKg= - dependencies: - graceful-fs "^4.1.2" - parse-json "^2.2.0" - pify "^2.0.0" - strip-bom "^3.0.0" - load-json-file@^4.0.0: version "4.0.0" resolved "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz" @@ -4391,14 +4705,6 @@ load-json-file@^4.0.0: pify "^3.0.0" strip-bom "^3.0.0" -locate-path@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz" - integrity sha1-K1aLJl7slExtnA3pw9u7ygNUzY4= - dependencies: - p-locate "^2.0.0" - path-exists "^3.0.0" - locate-path@^5.0.0: version "5.0.0" resolved "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz" @@ -4418,12 +4724,17 @@ lodash.debounce@^4.0.8: resolved "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz" integrity sha1-gteb/zCmfEAF/9XiUVMArZyk168= +lodash.merge@^4.6.2: + version "4.6.2" + resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.2.tgz#558aa53b43b661e1925a0afdfa36a9a1085fe57a" + integrity sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ== + lodash.throttle@^4.1.1: version "4.1.1" resolved "https://registry.npmjs.org/lodash.throttle/-/lodash.throttle-4.1.1.tgz" integrity sha1-wj6RtxAkKscMN/HhzaknTMOb8vQ= -lodash@^4.17.11, lodash@^4.17.14, lodash@^4.17.19, lodash@^4.17.5, lodash@~4.17.4: +lodash@^4.17.11, lodash@^4.17.5, lodash@~4.17.4: version "4.17.21" resolved "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz" integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== @@ -4609,11 +4920,23 @@ minimatch@3.0.4, minimatch@^3.0.4: dependencies: brace-expansion "^1.1.7" +minimatch@^3.0.5, minimatch@^3.1.2: + version "3.1.2" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b" + integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== + dependencies: + brace-expansion "^1.1.7" + minimist@^1.2.0, minimist@^1.2.5: version "1.2.5" resolved "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz" integrity sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw== +minimist@^1.2.6: + version "1.2.8" + resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.8.tgz#c1a464e7693302e082a075cee0c057741ac4772c" + integrity sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA== + minipass@^2.6.0, minipass@^2.9.0: version "2.9.0" resolved "https://registry.npmjs.org/minipass/-/minipass-2.9.0.tgz" @@ -4641,7 +4964,7 @@ mkdirp@*: resolved "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz" integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw== -mkdirp@^0.5.1, mkdirp@^0.5.5: +mkdirp@^0.5.5: version "0.5.5" resolved "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz" integrity sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ== @@ -4806,6 +5129,11 @@ nanoid@3.1.23: resolved "https://registry.npmjs.org/nanoid/-/nanoid-3.1.23.tgz" integrity sha512-FiB0kzdP0FFVGDKlRLEQ1BgDzU87dy5NnzjeW9YZNt+/c3+q82EQDUwniSAUxp/F0gFNI1ZhKU1FqYsMuqZVnw== +natural-compare-lite@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/natural-compare-lite/-/natural-compare-lite-1.4.0.tgz#17b09581988979fddafe0201e931ba933c96cbb4" + integrity sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g== + natural-compare@^1.4.0: version "1.4.0" resolved "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz" @@ -4955,6 +5283,11 @@ object-inspect@^1.11.0, object-inspect@^1.9.0: resolved "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.0.tgz" integrity sha512-Ho2z80bVIvJloH+YzRmpZVQe87+qASmBUKZDWgx9cu+KDrX2ZDH/3tMy+gXbZETVGs2M8YdxObOh7XAtim9Y0g== +object-inspect@^1.12.3: + version "1.13.0" + resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.13.0.tgz#42695d3879e1cd5bda6df5062164d80c996e23e2" + integrity sha512-HQ4J+ic8hKrgIt3mqk6cVOVrW2ozL4KdvHlqpBv9vDYWx9ysAgENAdvy4FoGF+KFdhR7nQTNm5J0ctAeOwn+3g== + object-inspect@^1.7.0: version "1.8.0" resolved "https://registry.npmjs.org/object-inspect/-/object-inspect-1.8.0.tgz" @@ -4993,34 +5326,60 @@ object.assign@^4.1.2: has-symbols "^1.0.1" object-keys "^1.1.1" -object.entries@^1.1.2: - version "1.1.2" - resolved "https://registry.npmjs.org/object.entries/-/object.entries-1.1.2.tgz" - integrity sha512-BQdB9qKmb/HyNdMNWVr7O3+z5MUIx3aiegEIJqjMBbBf0YT9RRxTJSim4mzFqtyr7PDAHigq0N9dO0m0tRakQA== +object.assign@^4.1.4: + version "4.1.4" + resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.4.tgz#9673c7c7c351ab8c4d0b516f4343ebf4dfb7799f" + integrity sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ== dependencies: - define-properties "^1.1.3" - es-abstract "^1.17.5" - has "^1.0.3" + call-bind "^1.0.2" + define-properties "^1.1.4" + has-symbols "^1.0.3" + object-keys "^1.1.1" -object.fromentries@^2.0.2: - version "2.0.2" - resolved "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.2.tgz" - integrity sha512-r3ZiBH7MQppDJVLx6fhD618GKNG40CZYH9wgwdhKxBDDbQgjeWGGd4AtkZad84d291YxvWe7bJGuE65Anh0dxQ== +object.entries@^1.1.6: + version "1.1.7" + resolved "https://registry.yarnpkg.com/object.entries/-/object.entries-1.1.7.tgz#2b47760e2a2e3a752f39dd874655c61a7f03c131" + integrity sha512-jCBs/0plmPsOnrKAfFQXRG2NFjlhZgjjcBLSmTnEhU8U6vVTsVe8ANeQJCHTl3gSsI4J+0emOoCgoKlmQPMgmA== dependencies: - define-properties "^1.1.3" - es-abstract "^1.17.0-next.1" - function-bind "^1.1.1" - has "^1.0.3" + call-bind "^1.0.2" + define-properties "^1.2.0" + es-abstract "^1.22.1" -object.values@^1.1.1: - version "1.1.1" - resolved "https://registry.npmjs.org/object.values/-/object.values-1.1.1.tgz" - integrity sha512-WTa54g2K8iu0kmS/us18jEmdv1a4Wi//BZ/DTVYEcH0XhLM5NYdpDHja3gt57VrZLcNAO2WGA+KpWsDBaHt6eA== +object.fromentries@^2.0.6: + version "2.0.7" + resolved "https://registry.yarnpkg.com/object.fromentries/-/object.fromentries-2.0.7.tgz#71e95f441e9a0ea6baf682ecaaf37fa2a8d7e616" + integrity sha512-UPbPHML6sL8PI/mOqPwsH4G6iyXcCGzLin8KvEPenOZN5lpCNBZZQ+V62vdjB1mQHrmqGQt5/OJzemUA+KJmEA== dependencies: - define-properties "^1.1.3" - es-abstract "^1.17.0-next.1" - function-bind "^1.1.1" - has "^1.0.3" + call-bind "^1.0.2" + define-properties "^1.2.0" + es-abstract "^1.22.1" + +object.groupby@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/object.groupby/-/object.groupby-1.0.1.tgz#d41d9f3c8d6c778d9cbac86b4ee9f5af103152ee" + integrity sha512-HqaQtqLnp/8Bn4GL16cj+CUYbnpe1bh0TtEaWvybszDG4tgxCJuRpV8VGuvNaI1fAnI4lUJzDG55MXcOH4JZcQ== + dependencies: + call-bind "^1.0.2" + define-properties "^1.2.0" + es-abstract "^1.22.1" + get-intrinsic "^1.2.1" + +object.hasown@^1.1.2: + version "1.1.3" + resolved "https://registry.yarnpkg.com/object.hasown/-/object.hasown-1.1.3.tgz#6a5f2897bb4d3668b8e79364f98ccf971bda55ae" + integrity sha512-fFI4VcYpRHvSLXxP7yiZOMAd331cPfd2p7PFDVbgUsYOfCT3tICVqXWngbjr4m49OvsBwUBQ6O2uQoJvy3RexA== + dependencies: + define-properties "^1.2.0" + es-abstract "^1.22.1" + +object.values@^1.1.6: + version "1.1.7" + resolved "https://registry.yarnpkg.com/object.values/-/object.values-1.1.7.tgz#617ed13272e7e1071b43973aa1655d9291b8442a" + integrity sha512-aU6xnDFYT3x17e/f0IiiwlGPTy2jzMySGfUB4fq6z7CV8l85CWHDk5ErhyhpfDHhrOMwGFhSQkhMGHaIotA6Ng== + dependencies: + call-bind "^1.0.2" + define-properties "^1.2.0" + es-abstract "^1.22.1" oboe@2.1.4: version "2.1.4" @@ -5055,17 +5414,17 @@ opencollective-postinstall@^2.0.2: resolved "https://registry.npmjs.org/opencollective-postinstall/-/opencollective-postinstall-2.0.3.tgz" integrity sha512-8AV/sCtuzUeTo8gQK5qDZzARrulB3egtLzFgteqB2tcT4Mw7B8Kt7JcDHmltjz6FOAHsvTevk70gZEbhM4ZS9Q== -optionator@^0.9.1: - version "0.9.1" - resolved "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz" - integrity sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw== +optionator@^0.9.3: + version "0.9.3" + resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.9.3.tgz#007397d44ed1872fdc6ed31360190f81814e2c64" + integrity sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg== dependencies: + "@aashutoshrathi/word-wrap" "^1.2.3" deep-is "^0.1.3" fast-levenshtein "^2.0.6" levn "^0.4.1" prelude-ls "^1.2.1" type-check "^0.4.0" - word-wrap "^1.2.3" options@>=0.0.5: version "0.0.6" @@ -5092,13 +5451,6 @@ p-finally@^1.0.0: resolved "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz" integrity sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4= -p-limit@^1.1.0: - version "1.3.0" - resolved "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz" - integrity sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q== - dependencies: - p-try "^1.0.0" - p-limit@^2.2.0: version "2.3.0" resolved "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz" @@ -5113,13 +5465,6 @@ p-limit@^3.0.2: dependencies: yocto-queue "^0.1.0" -p-locate@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz" - integrity sha1-IKAQOyIqcMj9OcwuWAaA893l7EM= - dependencies: - p-limit "^1.1.0" - p-locate@^4.1.0: version "4.1.0" resolved "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz" @@ -5148,11 +5493,6 @@ p-timeout@^1.1.1: dependencies: p-finally "^1.0.0" -p-try@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz" - integrity sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M= - p-try@^2.0.0: version "2.2.0" resolved "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz" @@ -5206,13 +5546,6 @@ parse-headers@^2.0.0: resolved "https://registry.npmjs.org/parse-headers/-/parse-headers-2.0.3.tgz" integrity sha512-QhhZ+DCCit2Coi2vmAKbq5RGTRcQUOE2+REgv8vdyu7MnYx2eZztegqtTx99TZ86GTIwqiy3+4nQTWZ2tgmdCA== -parse-json@^2.2.0: - version "2.2.0" - resolved "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz" - integrity sha1-9ID0BDTvgHQfhGkJn43qGPVaTck= - dependencies: - error-ex "^1.2.0" - parse-json@^4.0.0: version "4.0.0" resolved "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz" @@ -5262,11 +5595,6 @@ path-browserify@^1.0.1: resolved "https://registry.npmjs.org/path-browserify/-/path-browserify-1.0.1.tgz" integrity sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g== -path-exists@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz" - integrity sha1-zg6+ql94yxiSXqfYENe1mwEP1RU= - path-exists@^4.0.0: version "4.0.0" resolved "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz" @@ -5287,9 +5615,9 @@ path-key@^3.0.0, path-key@^3.1.0: resolved "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz" integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== -path-parse@^1.0.6: +path-parse@^1.0.6, path-parse@^1.0.7: version "1.0.7" - resolved "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz" + resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735" integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== path-to-regexp@0.1.7: @@ -5304,13 +5632,6 @@ path-to-regexp@^1.7.0: dependencies: isarray "0.0.1" -path-type@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/path-type/-/path-type-2.0.0.tgz" - integrity sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM= - dependencies: - pify "^2.0.0" - path-type@^3.0.0: version "3.0.0" resolved "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz" @@ -5369,11 +5690,6 @@ pidtree@^0.3.0: resolved "https://registry.npmjs.org/pidtree/-/pidtree-0.3.1.tgz" integrity sha512-qQbW94hLHEqCg7nhby4yRC7G2+jYHY4Rguc2bjw7Uug4GIJuu1tvf2uHaZv5Q8zdt+WKJ6qK1FOI6amaWUo5FA== -pify@^2.0.0: - version "2.3.0" - resolved "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz" - integrity sha1-7RQaasBDqEnqWISY59yosVMw6Qw= - pify@^3.0.0: version "3.0.0" resolved "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz" @@ -5386,13 +5702,6 @@ pirates@^4.0.1: dependencies: node-modules-regexp "^1.0.0" -pkg-dir@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/pkg-dir/-/pkg-dir-2.0.0.tgz" - integrity sha1-9tXREJ4Z1j7fQo4L1X4Sd3YVM0s= - dependencies: - find-up "^2.1.0" - pkg-dir@^4.2.0: version "4.2.0" resolved "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz" @@ -5483,11 +5792,6 @@ process@~0.5.1: resolved "https://registry.npmjs.org/process/-/process-0.5.2.tgz" integrity sha512-oNpcutj+nYX2FjdEW7PGltWhXulAnFlM0My/k48L90hARCOJtvBbQXc/6itV2jDvU5xAAtonP+r6wmQgCcbAUA== -progress@^2.0.0: - version "2.0.3" - resolved "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz" - integrity sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA== - "prop-types@>= 15.5.10 < 16.0.0", prop-types@^15.6.0, prop-types@^15.6.1, prop-types@^15.6.2, prop-types@^15.7.2: version "15.7.2" resolved "https://registry.npmjs.org/prop-types/-/prop-types-15.7.2.tgz" @@ -5497,6 +5801,15 @@ progress@^2.0.0: object-assign "^4.1.1" react-is "^16.8.1" +prop-types@^15.8.1: + version "15.8.1" + resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.8.1.tgz#67d87bf1a694f48435cf332c24af10214a3140b5" + integrity sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg== + dependencies: + loose-envify "^1.4.0" + object-assign "^4.1.1" + react-is "^16.13.1" + proxy-addr@~2.0.7: version "2.0.7" resolved "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz" @@ -5663,7 +5976,7 @@ react-error-overlay@6.0.9: resolved "https://registry.npmjs.org/react-error-overlay/-/react-error-overlay-6.0.9.tgz" integrity sha512-nQTTcUu+ATDbrSD1BZHr5kgSD4oF8OFjxun8uAaL8RwPBacGBNPf/yAuVVdx17N8XNzRDMrZ9XcKZHCjPW+9ew== -react-is@^16.6.0, react-is@^16.7.0, react-is@^16.8.1: +react-is@^16.13.1, react-is@^16.6.0, react-is@^16.7.0, react-is@^16.8.1: version "16.13.1" resolved "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz" integrity sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ== @@ -5772,23 +6085,6 @@ react@^16.14.0: object-assign "^4.1.1" prop-types "^15.6.2" -read-pkg-up@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-2.0.0.tgz" - integrity sha1-a3KoBImE4MQeeVEP1en6mbO1Sb4= - dependencies: - find-up "^2.0.0" - read-pkg "^2.0.0" - -read-pkg@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/read-pkg/-/read-pkg-2.0.0.tgz" - integrity sha1-jvHAYjxqbbDcZxPEv6xGMysjaPg= - dependencies: - load-json-file "^2.0.0" - normalize-package-data "^2.3.2" - path-type "^2.0.0" - read-pkg@^3.0.0: version "3.0.0" resolved "https://registry.npmjs.org/read-pkg/-/read-pkg-3.0.0.tgz" @@ -5854,6 +6150,18 @@ reduce-function-call@^1.0.1: dependencies: balanced-match "^1.0.0" +reflect.getprototypeof@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/reflect.getprototypeof/-/reflect.getprototypeof-1.0.4.tgz#aaccbf41aca3821b87bb71d9dcbc7ad0ba50a3f3" + integrity sha512-ECkTw8TmJwW60lOTR+ZkODISW6RQ8+2CL3COqtiJKLd6MmB45hN51HprHFziKLGkAuTGQhBb91V8cy+KHlaCjw== + dependencies: + call-bind "^1.0.2" + define-properties "^1.2.0" + es-abstract "^1.22.1" + get-intrinsic "^1.2.1" + globalthis "^1.0.3" + which-builtin-type "^1.1.3" + regenerator-runtime@^0.11.0: version "0.11.1" resolved "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz" @@ -5864,7 +6172,7 @@ regenerator-runtime@^0.13.4, regenerator-runtime@^0.13.7: resolved "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.7.tgz" integrity sha512-a54FxoJDIr27pgf7IgeQGxmqUNYrcV338lf/6gH456HZ/PhX+5BcwHXG9ajESmwe6WRO0tAzRUrRmNONWgkrew== -regexp.prototype.flags@^1.2.0, regexp.prototype.flags@^1.3.0: +regexp.prototype.flags@^1.2.0: version "1.3.0" resolved "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.3.0.tgz" integrity sha512-2+Q0C5g951OlYlJz6yu5/M33IcsESLlLfsyIaLJaG4FA2r4yP8MvVMJUUP/fVBkSpbbbZlS5gynbEWLipiiXiQ== @@ -5872,7 +6180,16 @@ regexp.prototype.flags@^1.2.0, regexp.prototype.flags@^1.3.0: define-properties "^1.1.3" es-abstract "^1.17.0-next.1" -regexpp@^3.0.0, regexpp@^3.1.0: +regexp.prototype.flags@^1.5.0, regexp.prototype.flags@^1.5.1: + version "1.5.1" + resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.5.1.tgz#90ce989138db209f81492edd734183ce99f9677e" + integrity sha512-sy6TXMN+hnP/wMy+ISxg3krXx7BAtWVO4UouuCN/ziM9UEne0euamVNafDfvC83bRNr95y0V5iijeDQFUNpvrg== + dependencies: + call-bind "^1.0.2" + define-properties "^1.2.0" + set-function-name "^2.0.0" + +regexpp@^3.0.0: version "3.1.0" resolved "https://registry.npmjs.org/regexpp/-/regexpp-3.1.0.tgz" integrity sha512-ZOIzd8yVsQQA7j8GCSlPGXwg5PfmA1mrq0JP4nGhh54LaKN3xdai/vHUDu74pKwV8OxseMS65u2NImosQcSD0Q== @@ -5928,13 +6245,31 @@ resolve-pathname@^3.0.0: resolved "https://registry.npmjs.org/resolve-pathname/-/resolve-pathname-3.0.0.tgz" integrity sha512-C7rARubxI8bXFNB/hqcp/4iUeIXJhJZvFPFPiSPRnhU5UPxzMFIl+2E6yY6c4k9giDJAhtV+enfA+G89N6Csng== -resolve@^1.10.0, resolve@^1.10.1, resolve@^1.13.1, resolve@^1.17.0: +resolve@^1.10.0, resolve@^1.10.1: version "1.17.0" resolved "https://registry.npmjs.org/resolve/-/resolve-1.17.0.tgz" integrity sha512-ic+7JYiV8Vi2yzQGFWOkiZD5Z9z7O2Zhm9XMaTxdJExKasieFCr+yXZ/WmXsckHiKl12ar0y6XiXDx3m4RHn1w== dependencies: path-parse "^1.0.6" +resolve@^1.22.4: + version "1.22.8" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.8.tgz#b6c87a9f2aa06dfab52e3d70ac8cde321fa5a48d" + integrity sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw== + dependencies: + is-core-module "^2.13.0" + path-parse "^1.0.7" + supports-preserve-symlinks-flag "^1.0.0" + +resolve@^2.0.0-next.4: + version "2.0.0-next.5" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-2.0.0-next.5.tgz#6b0ec3107e671e52b68cd068ef327173b90dc03c" + integrity sha512-U7WjGVG9sH8tvjW5SmGbQuui75FiyjAX72HX15DwBBwF9dNiQZRQAg9nnPhYy+TUnE0+VcrttuvNI8oSxZcocA== + dependencies: + is-core-module "^2.13.0" + path-parse "^1.0.7" + supports-preserve-symlinks-flag "^1.0.0" + responselike@^1.0.2: version "1.0.2" resolved "https://registry.npmjs.org/responselike/-/responselike-1.0.2.tgz" @@ -5955,10 +6290,10 @@ reusify@^1.0.4: resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76" integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw== -rimraf@2.6.3: - version "2.6.3" - resolved "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz" - integrity sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA== +rimraf@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a" + integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA== dependencies: glob "^7.1.3" @@ -5991,6 +6326,16 @@ rxjs@^6.6.2: dependencies: tslib "^1.9.0" +safe-array-concat@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/safe-array-concat/-/safe-array-concat-1.0.1.tgz#91686a63ce3adbea14d61b14c99572a8ff84754c" + integrity sha512-6XbUAseYE2KtOuGueyeobCySj9L4+66Tn6KQMOPQJrAJEowYKW/YR/MGJZl7FdydUdaFu4LYyDZjxf4/Nmo23Q== + dependencies: + call-bind "^1.0.2" + get-intrinsic "^1.2.1" + has-symbols "^1.0.3" + isarray "^2.0.5" + safe-buffer@5.2.1, safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@^5.1.2, safe-buffer@^5.2.0, safe-buffer@^5.2.1, safe-buffer@~5.2.0: version "5.2.1" resolved "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz" @@ -6001,6 +6346,15 @@ safe-buffer@~5.1.0: resolved "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz" integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== +safe-regex-test@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/safe-regex-test/-/safe-regex-test-1.0.0.tgz#793b874d524eb3640d1873aad03596db2d4f2295" + integrity sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA== + dependencies: + call-bind "^1.0.2" + get-intrinsic "^1.1.3" + is-regex "^1.1.4" + "safer-buffer@>= 2.1.2 < 3", safer-buffer@^2.0.2, safer-buffer@^2.1.0, safer-buffer@~2.1.0: version "2.1.2" resolved "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz" @@ -6048,12 +6402,12 @@ semver@^6.1.0: resolved "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz" integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== -semver@^7.2.1: - version "7.3.2" - resolved "https://registry.npmjs.org/semver/-/semver-7.3.2.tgz" - integrity sha512-OrOb32TeeambH6UrhtShmF7CRDqhL6/5XpPNp2DuRH6+9QLw/orhp72j87v8Qa1ScDkvrrBNpZcDejAirJmfXQ== +semver@^6.3.1: + version "6.3.1" + resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.1.tgz#556d2ef8689146e46dcea4bfdd095f3434dffcb4" + integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA== -semver@^7.5.4: +semver@^7.3.7: version "7.5.4" resolved "https://registry.yarnpkg.com/semver/-/semver-7.5.4.tgz#483986ec4ed38e1c6c48c34894a9182dbff68a6e" integrity sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA== @@ -6107,6 +6461,15 @@ servify@^0.1.12: request "^2.79.0" xhr "^2.3.3" +set-function-name@^2.0.0, set-function-name@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/set-function-name/-/set-function-name-2.0.1.tgz#12ce38b7954310b9f61faa12701620a0c882793a" + integrity sha512-tMNCiqYVkXIZgc2Hnoy2IvC/f8ezc5koaRFkCjrpWzGpCd3qbZXPzVy9MAZzK1ch/X0jvSkojys3oqJN0qCmdA== + dependencies: + define-data-property "^1.0.1" + functions-have-names "^1.2.3" + has-property-descriptors "^1.0.0" + setimmediate@^1.0.5: version "1.0.5" resolved "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz" @@ -6154,7 +6517,7 @@ shell-quote@^1.6.1: resolved "https://registry.npmjs.org/shell-quote/-/shell-quote-1.7.2.tgz" integrity sha512-mRz/m/JVscCrkMyPqHc/bczi3OQHkLTqXHEFu0zDhK/qfv3UcOA4SVmRCLmos4bhjr9ekVQubj/R7waKapmiQg== -side-channel@^1.0.2, side-channel@^1.0.4: +side-channel@^1.0.4: version "1.0.4" resolved "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz" integrity sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw== @@ -6187,15 +6550,6 @@ slash@^3.0.0: resolved "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz" integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q== -slice-ansi@^2.1.0: - version "2.1.0" - resolved "https://registry.npmjs.org/slice-ansi/-/slice-ansi-2.1.0.tgz" - integrity sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ== - dependencies: - ansi-styles "^3.2.0" - astral-regex "^1.0.0" - is-fullwidth-code-point "^2.0.0" - slice-ansi@^3.0.0: version "3.0.0" resolved "https://registry.npmjs.org/slice-ansi/-/slice-ansi-3.0.0.tgz" @@ -6280,11 +6634,6 @@ spdx-license-ids@^3.0.0: resolved "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.5.tgz" integrity sha512-J+FWzZoynJEXGphVIS+XEh3kFSjZX/1i9gFBaWQcB+/tmpe2qUsSBABpcxqxnAxFdiUFEgAX1bjYGQvIZmoz9Q== -sprintf-js@~1.0.2: - version "1.0.3" - resolved "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz" - integrity sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw= - sshpk@^1.7.0: version "1.16.1" resolved "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz" @@ -6346,15 +6695,6 @@ string-argv@0.3.1: is-fullwidth-code-point "^2.0.0" strip-ansi "^4.0.0" -string-width@^3.0.0: - version "3.1.0" - resolved "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz" - integrity sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w== - dependencies: - emoji-regex "^7.0.1" - is-fullwidth-code-point "^2.0.0" - strip-ansi "^5.1.0" - string-width@^4.1.0, string-width@^4.2.0: version "4.2.0" resolved "https://registry.npmjs.org/string-width/-/string-width-4.2.0.tgz" @@ -6364,17 +6704,20 @@ string-width@^4.1.0, string-width@^4.2.0: is-fullwidth-code-point "^3.0.0" strip-ansi "^6.0.0" -string.prototype.matchall@^4.0.2: - version "4.0.2" - resolved "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.2.tgz" - integrity sha512-N/jp6O5fMf9os0JU3E72Qhf590RSRZU/ungsL/qJUYVTNv7hTG0P/dbPjxINVN9jpscu3nzYwKESU3P3RY5tOg== +string.prototype.matchall@^4.0.8: + version "4.0.10" + resolved "https://registry.yarnpkg.com/string.prototype.matchall/-/string.prototype.matchall-4.0.10.tgz#a1553eb532221d4180c51581d6072cd65d1ee100" + integrity sha512-rGXbGmOEosIQi6Qva94HUjgPs9vKW+dkG7Y8Q5O2OYkWL6wFaTRZO8zM4mhP94uX55wgyrXzfS2aGtGzUL7EJQ== dependencies: - define-properties "^1.1.3" - es-abstract "^1.17.0" - has-symbols "^1.0.1" - internal-slot "^1.0.2" - regexp.prototype.flags "^1.3.0" - side-channel "^1.0.2" + call-bind "^1.0.2" + define-properties "^1.2.0" + es-abstract "^1.22.1" + get-intrinsic "^1.2.1" + has-symbols "^1.0.3" + internal-slot "^1.0.5" + regexp.prototype.flags "^1.5.0" + set-function-name "^2.0.0" + side-channel "^1.0.4" string.prototype.padend@^3.0.0: version "3.1.0" @@ -6384,6 +6727,15 @@ string.prototype.padend@^3.0.0: define-properties "^1.1.3" es-abstract "^1.17.0-next.1" +string.prototype.trim@^1.2.8: + version "1.2.8" + resolved "https://registry.yarnpkg.com/string.prototype.trim/-/string.prototype.trim-1.2.8.tgz#f9ac6f8af4bd55ddfa8895e6aea92a96395393bd" + integrity sha512-lfjY4HcixfQXOfaqCvcBuOIapyaroTXhbkfJN3gcB1OtyupngWK4sEET9Knd0cXd28kTUqu/kHoV4HKSJdnjiQ== + dependencies: + call-bind "^1.0.2" + define-properties "^1.2.0" + es-abstract "^1.22.1" + string.prototype.trimend@^1.0.1: version "1.0.1" resolved "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.1.tgz" @@ -6400,6 +6752,15 @@ string.prototype.trimend@^1.0.4: call-bind "^1.0.2" define-properties "^1.1.3" +string.prototype.trimend@^1.0.7: + version "1.0.7" + resolved "https://registry.yarnpkg.com/string.prototype.trimend/-/string.prototype.trimend-1.0.7.tgz#1bb3afc5008661d73e2dc015cd4853732d6c471e" + integrity sha512-Ni79DqeB72ZFq1uH/L6zJ+DKZTkOtPIHovb3YZHQViE+HDouuU4mBrLOLDn5Dde3RF8qw5qVETEjhu9locMLvA== + dependencies: + call-bind "^1.0.2" + define-properties "^1.2.0" + es-abstract "^1.22.1" + string.prototype.trimstart@^1.0.1: version "1.0.1" resolved "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.1.tgz" @@ -6416,6 +6777,15 @@ string.prototype.trimstart@^1.0.4: call-bind "^1.0.2" define-properties "^1.1.3" +string.prototype.trimstart@^1.0.7: + version "1.0.7" + resolved "https://registry.yarnpkg.com/string.prototype.trimstart/-/string.prototype.trimstart-1.0.7.tgz#d4cdb44b83a4737ffbac2d406e405d43d0184298" + integrity sha512-NGhtDFu3jCEm7B4Fy0DpLewdJQOZcQ0rGbwQ/+stjnrp2i+rlKeCvos9hOIeCmqwratM47OBxY7uFZzjxHXmrg== + dependencies: + call-bind "^1.0.2" + define-properties "^1.2.0" + es-abstract "^1.22.1" + string_decoder@^1.1.1: version "1.3.0" resolved "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz" @@ -6439,13 +6809,6 @@ strip-ansi@^4.0.0: dependencies: ansi-regex "^3.0.0" -strip-ansi@^5.1.0: - version "5.2.0" - resolved "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz" - integrity sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA== - dependencies: - ansi-regex "^4.1.0" - strip-ansi@^6.0.0: version "6.0.0" resolved "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz" @@ -6453,6 +6816,13 @@ strip-ansi@^6.0.0: dependencies: ansi-regex "^5.0.0" +strip-ansi@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" + integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== + dependencies: + ansi-regex "^5.0.1" + strip-bom@^3.0.0: version "3.0.0" resolved "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz" @@ -6470,7 +6840,7 @@ strip-hex-prefix@1.0.0: dependencies: is-hex-prefixed "1.0.0" -strip-json-comments@3.1.1, strip-json-comments@^3.1.0, strip-json-comments@^3.1.1: +strip-json-comments@3.1.1, strip-json-comments@^3.1.1: version "3.1.1" resolved "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz" integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== @@ -6521,6 +6891,11 @@ supports-color@^7.1.0: dependencies: has-flag "^4.0.0" +supports-preserve-symlinks-flag@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz#6eda4bd344a3c94aea376d4cc31bc77311039e09" + integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w== + svgo@^2.4.0: version "2.8.0" resolved "https://registry.npmjs.org/svgo/-/svgo-2.8.0.tgz" @@ -6551,16 +6926,6 @@ swarm-js@^0.1.40: tar "^4.0.2" xhr-request "^1.0.1" -table@^5.2.3: - version "5.4.6" - resolved "https://registry.npmjs.org/table/-/table-5.4.6.tgz" - integrity sha512-wmEc8m4fjnob4gt5riFRtTu/6+4rSe12TpAELNSqHMfF3IqnA+CH37USM6/YR3qRZv7e56kAEAtd6nKZaxe0Ug== - dependencies: - ajv "^6.10.2" - lodash "^4.17.14" - slice-ansi "^2.1.0" - string-width "^3.0.0" - tar@^4.0.2: version "4.4.19" resolved "https://registry.npmjs.org/tar/-/tar-4.4.19.tgz" @@ -6678,26 +7043,26 @@ tr46@~0.0.3: resolved "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz" integrity sha1-gYT9NH2snNwYWZLzpmIuFLnZq2o= -ts-api-utils@^1.0.1: - version "1.0.3" - resolved "https://registry.yarnpkg.com/ts-api-utils/-/ts-api-utils-1.0.3.tgz#f12c1c781d04427313dbac808f453f050e54a331" - integrity sha512-wNMeqtMz5NtwpT/UZGY5alT+VoKdSsOOP/kqHFcUW1P/VRhH2wJ48+DN2WwUliNbQ976ETwDL0Ifd2VVvgonvg== - ts-interface-checker@^0.1.9: version "0.1.13" resolved "https://registry.npmjs.org/ts-interface-checker/-/ts-interface-checker-0.1.13.tgz" integrity sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA== -tsconfig-paths@^3.9.0: - version "3.9.0" - resolved "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.9.0.tgz" - integrity sha512-dRcuzokWhajtZWkQsDVKbWyY+jgcLC5sqJhg2PSgf4ZkH2aHPvaOY8YWGhmjb68b5qqTfasSsDO9k7RUiEmZAw== +tsconfig-paths@^3.14.2: + version "3.14.2" + resolved "https://registry.yarnpkg.com/tsconfig-paths/-/tsconfig-paths-3.14.2.tgz#6e32f1f79412decd261f92d633a9dc1cfa99f088" + integrity sha512-o/9iXgCYc5L/JxCHPe3Hvh8Q/2xm5Z+p18PESBU6Ff33695QnCHBEjcytY2q19ua7Mbl/DavtBOLq+oG0RCL+g== dependencies: "@types/json5" "^0.0.29" - json5 "^1.0.1" - minimist "^1.2.0" + json5 "^1.0.2" + minimist "^1.2.6" strip-bom "^3.0.0" +tslib@^1.8.1: + version "1.14.1" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" + integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== + tslib@^1.9.0: version "1.13.0" resolved "https://registry.npmjs.org/tslib/-/tslib-1.13.0.tgz" @@ -6708,6 +7073,13 @@ tslib@^2.4.0: resolved "https://registry.npmjs.org/tslib/-/tslib-2.4.1.tgz" integrity sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA== +tsutils@^3.21.0: + version "3.21.0" + resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-3.21.0.tgz#b48717d394cea6c1e096983eed58e9d61715b623" + integrity sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA== + dependencies: + tslib "^1.8.1" + tunnel-agent@^0.6.0: version "0.6.0" resolved "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz" @@ -6742,11 +7114,6 @@ type-fest@^0.20.2: resolved "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz" integrity sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ== -type-fest@^0.8.1: - version "0.8.1" - resolved "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz" - integrity sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA== - type-is@~1.6.18: version "1.6.18" resolved "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz" @@ -6765,6 +7132,45 @@ type@^2.0.0: resolved "https://registry.npmjs.org/type/-/type-2.0.0.tgz" integrity sha512-KBt58xCHry4Cejnc2ISQAF7QY+ORngsWfxezO68+12hKV6lQY8P/psIkcbjeHWn7MqcgciWJyCCevFMJdIXpow== +typed-array-buffer@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/typed-array-buffer/-/typed-array-buffer-1.0.0.tgz#18de3e7ed7974b0a729d3feecb94338d1472cd60" + integrity sha512-Y8KTSIglk9OZEr8zywiIHG/kmQ7KWyjseXs1CbSo8vC42w7hg2HgYTxSWwP0+is7bWDc1H+Fo026CpHFwm8tkw== + dependencies: + call-bind "^1.0.2" + get-intrinsic "^1.2.1" + is-typed-array "^1.1.10" + +typed-array-byte-length@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/typed-array-byte-length/-/typed-array-byte-length-1.0.0.tgz#d787a24a995711611fb2b87a4052799517b230d0" + integrity sha512-Or/+kvLxNpeQ9DtSydonMxCx+9ZXOswtwJn17SNLvhptaXYDJvkFFP5zbfU/uLmvnBJlI4yrnXRxpdWH/M5tNA== + dependencies: + call-bind "^1.0.2" + for-each "^0.3.3" + has-proto "^1.0.1" + is-typed-array "^1.1.10" + +typed-array-byte-offset@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/typed-array-byte-offset/-/typed-array-byte-offset-1.0.0.tgz#cbbe89b51fdef9cd6aaf07ad4707340abbc4ea0b" + integrity sha512-RD97prjEt9EL8YgAgpOkf3O4IF9lhJFr9g0htQkm0rchFp/Vx7LW5Q8fSXXub7BXAODyUQohRMyOc3faCPd0hg== + dependencies: + available-typed-arrays "^1.0.5" + call-bind "^1.0.2" + for-each "^0.3.3" + has-proto "^1.0.1" + is-typed-array "^1.1.10" + +typed-array-length@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/typed-array-length/-/typed-array-length-1.0.4.tgz#89d83785e5c4098bec72e08b319651f0eac9c1bb" + integrity sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng== + dependencies: + call-bind "^1.0.2" + for-each "^0.3.3" + is-typed-array "^1.1.9" + typed-styles@^0.0.7: version "0.0.7" resolved "https://registry.npmjs.org/typed-styles/-/typed-styles-0.0.7.tgz" @@ -6777,10 +7183,10 @@ typedarray-to-buffer@^3.1.5: dependencies: is-typedarray "^1.0.0" -typescript@^5.2.2: - version "5.2.2" - resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.2.2.tgz#5ebb5e5a5b75f085f22bc3f8460fba308310fa78" - integrity sha512-mI4WrpHsbCIcwT9cF4FZvr80QUeKvsUsUvKDoR+X/7XHQH98xYD8YHZg7ANtz2GtZt/CBq2QJ0thkGJMHfqc1w== +typescript@^4.8.4: + version "4.9.5" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.9.5.tgz#095979f9bcc0d09da324d58d03ce8f8374cbe65a" + integrity sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g== ultron@1.0.x: version "1.0.2" @@ -6802,6 +7208,16 @@ unbox-primitive@^1.0.1: has-symbols "^1.0.2" which-boxed-primitive "^1.0.2" +unbox-primitive@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/unbox-primitive/-/unbox-primitive-1.0.2.tgz#29032021057d5e6cdbd08c5129c226dff8ed6f9e" + integrity sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw== + dependencies: + call-bind "^1.0.2" + has-bigints "^1.0.2" + has-symbols "^1.0.3" + which-boxed-primitive "^1.0.2" + underscore@1.9.1: version "1.9.1" resolved "https://registry.npmjs.org/underscore/-/underscore-1.9.1.tgz" @@ -6932,11 +7348,6 @@ v8-compile-cache@^2.0.0: resolved "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz" integrity sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA== -v8-compile-cache@^2.0.3: - version "2.1.1" - resolved "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.1.1.tgz" - integrity sha512-8OQ9CL+VWyt3JStj7HX7/ciTL2V3Rl1Wf5OL+SNTm0yK1KvtReVulksyeRnCANHHuUxHlQig+JJDlUhBt1NQDQ== - validate-npm-package-license@^3.0.1: version "3.0.4" resolved "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz" @@ -7255,11 +7666,50 @@ which-boxed-primitive@^1.0.2: is-string "^1.0.5" is-symbol "^1.0.3" +which-builtin-type@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/which-builtin-type/-/which-builtin-type-1.1.3.tgz#b1b8443707cc58b6e9bf98d32110ff0c2cbd029b" + integrity sha512-YmjsSMDBYsM1CaFiayOVT06+KJeXf0o5M/CAd4o1lTadFAtacTUM49zoYxr/oroopFDfhvN6iEcBxUyc3gvKmw== + dependencies: + function.prototype.name "^1.1.5" + has-tostringtag "^1.0.0" + is-async-function "^2.0.0" + is-date-object "^1.0.5" + is-finalizationregistry "^1.0.2" + is-generator-function "^1.0.10" + is-regex "^1.1.4" + is-weakref "^1.0.2" + isarray "^2.0.5" + which-boxed-primitive "^1.0.2" + which-collection "^1.0.1" + which-typed-array "^1.1.9" + +which-collection@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/which-collection/-/which-collection-1.0.1.tgz#70eab71ebbbd2aefaf32f917082fc62cdcb70906" + integrity sha512-W8xeTUwaln8i3K/cY1nGXzdnVZlidBcagyNFtBdD5kxnb4TvGKR7FfSIS3mYpwWS1QUCutfKz8IY8RjftB0+1A== + dependencies: + is-map "^2.0.1" + is-set "^2.0.1" + is-weakmap "^2.0.1" + is-weakset "^2.0.1" + which-pm-runs@^1.0.0: version "1.0.0" resolved "https://registry.npmjs.org/which-pm-runs/-/which-pm-runs-1.0.0.tgz" integrity sha1-Zws6+8VS4LVd9rd4DKdGFfI60cs= +which-typed-array@^1.1.11, which-typed-array@^1.1.9: + version "1.1.11" + resolved "https://registry.yarnpkg.com/which-typed-array/-/which-typed-array-1.1.11.tgz#99d691f23c72aab6768680805a271b69761ed61a" + integrity sha512-qe9UWWpkeG5yzZ0tNYxDmd7vo58HDBc39mZ0xWWpolAGADdFOzkfamWLDxkOWcvHQKVmdTyQdLD4NOfjLWTKew== + dependencies: + available-typed-arrays "^1.0.5" + call-bind "^1.0.2" + for-each "^0.3.3" + gopd "^1.0.1" + has-tostringtag "^1.0.0" + which-typed-array@^1.1.2: version "1.1.7" resolved "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.7.tgz" @@ -7293,11 +7743,6 @@ wide-align@1.1.3: dependencies: string-width "^1.0.2 || 2" -word-wrap@^1.2.3: - version "1.2.3" - resolved "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz" - integrity sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ== - workerpool@6.1.5: version "6.1.5" resolved "https://registry.npmjs.org/workerpool/-/workerpool-6.1.5.tgz" @@ -7326,13 +7771,6 @@ wrappy@1: resolved "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz" integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8= -write@1.0.3: - version "1.0.3" - resolved "https://registry.npmjs.org/write/-/write-1.0.3.tgz" - integrity sha512-/lg70HAjtkUgWPVZhZcm+T4hkL8Zbtp1nFNOn3lRrxnlv50SRBv7cR7RqR+GMsd3hUXy9hWBo4CHTbFTcOYwig== - dependencies: - mkdirp "^0.5.1" - ws@^3.0.0: version "3.3.3" resolved "https://registry.npmjs.org/ws/-/ws-3.3.3.tgz" From aaae829eb62c197d29bf33969bffc1cb1f1658a6 Mon Sep 17 00:00:00 2001 From: Paul V Puey Date: Wed, 18 Oct 2023 16:24:49 -0700 Subject: [PATCH 20/22] Add node and react ESlint rules --- .eslintrc.json | 3 ++- src/bin/bogReporter.ts | 5 ++--- src/config.ts | 1 + src/demo/clientUtil.ts | 16 +--------------- src/demo/components/Buttons.tsx | 5 ++++- src/demo/components/Custom.tsx | 1 - src/demo/components/MainScene.tsx | 6 +++++- src/demo/components/Sidebar.tsx | 8 ++++---- src/demo/components/Sidetab.tsx | 1 + src/partners/moonpay.ts | 6 +++--- 10 files changed, 23 insertions(+), 29 deletions(-) diff --git a/.eslintrc.json b/.eslintrc.json index 20769ec8..2e5fbbda 100644 --- a/.eslintrc.json +++ b/.eslintrc.json @@ -1,8 +1,9 @@ { "extends": [ "standard-kit/prettier", - "standard-kit/prettier/node", "standard-kit/prettier/jsx", + "standard-kit/prettier/node", + "standard-kit/prettier/react", "standard-kit/prettier/typescript" ], "globals": { diff --git a/src/bin/bogReporter.ts b/src/bin/bogReporter.ts index 806f641e..f699c43c 100644 --- a/src/bin/bogReporter.ts +++ b/src/bin/bogReporter.ts @@ -1,9 +1,8 @@ import fetch from 'node-fetch' -import CONFIG from '../../config.json' +import { config } from '../config' -// @ts-expect-error -const BITS_OF_GOLD_API_KEY = CONFIG.bog.apiKey +const BITS_OF_GOLD_API_KEY = config.bog.apiKey const dateRegex = /([12]\d{3}-(0[1-9]|1[0-2])-(0[1-9]|[12]\d|3[01]))/ diff --git a/src/config.ts b/src/config.ts index 22eda5ab..d32ed1ed 100644 --- a/src/config.ts +++ b/src/config.ts @@ -10,6 +10,7 @@ export const asConfig = asObject({ 'http://username:password@localhost:5984' ), httpPort: asOptional(asNumber, 8008), + bog: asOptional(asObject({ apiKey: asString }), { apiKey: '' }), soloAppIds: asOptional(asArray(asString), undefined), soloPartnerIds: asOptional(asArray(asString), undefined), timeoutOverrideMins: asOptional(asNumber, 1200), diff --git a/src/demo/clientUtil.ts b/src/demo/clientUtil.ts index 757bb7c2..16bc4f24 100644 --- a/src/demo/clientUtil.ts +++ b/src/demo/clientUtil.ts @@ -8,8 +8,8 @@ import sub from 'date-fns/sub' import { getTimezoneOffset } from 'date-fns-tz' import fetch from 'node-fetch' -import { clientConfig } from './clientConfig' import { AnalyticsResult, asAnalyticsResult, Bucket } from '../types' +import { clientConfig } from './clientConfig' import { Data, DataPlusSevenDayAve } from './components/Graphs' import Partners from './partners' @@ -17,20 +17,6 @@ export const SIX_DAYS = 6 export const apiHost = clientConfig.apiHost ?? '' -const CURRENCY_CONVERSION = { - USDT20: 'USDT', - USDTERC20: 'USDT', - USDTPOLYGON: 'USDT', - USDCPOLYGON: 'USDC', - ZADDR: 'ZEC', - BCHABC: 'BCH', - BCHSV: 'BSV', - FTMMAINNET: 'FTM', - BNBMAINNET: 'BNB', - AVAXC: 'AVAX', - POLYGON: 'MATIC' -} - const asGetPartnerIds = asArray(asString) export const addObject = (origin: any, destination: any): void => { diff --git a/src/demo/components/Buttons.tsx b/src/demo/components/Buttons.tsx index 3d361896..800dc485 100644 --- a/src/demo/components/Buttons.tsx +++ b/src/demo/components/Buttons.tsx @@ -52,7 +52,10 @@ interface buttonProps { onClick: () => void } -export class MainButton extends PureComponent { +export class MainButton extends PureComponent< + { label: string; onClick: () => void }, + {} +> { render(): JSX.Element { return (