From 549a70deedfa0fae31fc3bf16ad80aa9931c4d8c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mart=C3=ADn=20Volpe?= Date: Thu, 10 Aug 2023 14:47:23 +0200 Subject: [PATCH 01/31] Fix CLI returning zero required votes on proposals with no tx (#10477) Fixed --- packages/sdk/contractkit/src/wrappers/Governance.ts | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/packages/sdk/contractkit/src/wrappers/Governance.ts b/packages/sdk/contractkit/src/wrappers/Governance.ts index 895c926f53a..a52b20f3240 100644 --- a/packages/sdk/contractkit/src/wrappers/Governance.ts +++ b/packages/sdk/contractkit/src/wrappers/Governance.ts @@ -211,7 +211,10 @@ export class GovernanceWrapper extends BaseWrapperForGoverning { * @param proposal Proposal to determine the constitution for running. */ async getConstitution(proposal: Proposal): Promise { - let constitution = new BigNumber(0) + // Default value that is harcoded on Governance contract + // it's 0.5 in Fixidity + // https://github.com/celo-org/celo-monorepo/blob/3fffa158d67ffd6366e81ba7243eadede1974b1b/packages/protocol/contracts/governance/Governance.sol#L39 + let constitution = fromFixed(new BigNumber('500000000000000000000000')) for (const tx of proposal) { constitution = BigNumber.max(await this.getTransactionConstitution(tx), constitution) } @@ -236,7 +239,7 @@ export class GovernanceWrapper extends BaseWrapperForGoverning { // in the total of yes votes required async getSupportWithConstitutionThreshold(proposalID: BigNumber.Value, constitution: BigNumber) { const support = await this.getSupport(proposalID) - support.required = support.required.times(constitution) + support.required = support.required.times(constitution).integerValue() return support } From 95d846b3514ee78e52fcced3aaa846fa6ca64170 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=81lvaro=20Fern=C3=A1ndez?= <35505302+alvarof2@users.noreply.github.com> Date: Tue, 15 Aug 2023 03:49:22 +0200 Subject: [PATCH 02/31] Odis tracing 18 (#10459) * odis-tracing-node18 * yarn command * Test again * Pray * Pray 2 * Pray 3 * Pray 4 * endpoint traces * Error trace * Span in io.ts * Handle errors - OK * Fix if * IO tracing * Common IO tracing * Event messages * Authenticate tracing * Sign tracing * Span end * Span ends * Controller span * NodeTracerProvider * Trace names * Instrumentations * No ExpressInstrumentation * Remove parentSpan * Request * Ignore paths * parentSpan * Ignore more paths * knex instrumentation * Knex instrumentation * Full node inst + manual * ignoreIncomingPaths for http inst * Comments * No cache build * Common packages * TSlint error 1 * TSlint error 2 * TSlint errors * TSlint errors shorthand * // tslint:disable-next-line:no-floating-promises * Fix tests? --- .../combiner/test/integration/domain.test.ts | 6 +- .../phone-number-privacy/common/package.json | 9 +- .../common/src/utils/authentication.ts | 131 +++++---- .../phone-number-privacy/signer/package.json | 11 +- .../signer/src/common/controller.ts | 19 +- .../signer/src/common/io.ts | 44 ++- .../signer/src/pnp/endpoints/quota/io.ts | 114 +++++--- .../signer/src/pnp/endpoints/sign/action.ts | 250 +++++++++++------- .../signer/src/pnp/endpoints/sign/io.ts | 138 +++++++--- .../phone-number-privacy/signer/src/server.ts | 59 +++-- .../signer/src/tracing.ts | 81 ++++++ 11 files changed, 607 insertions(+), 255 deletions(-) create mode 100644 packages/phone-number-privacy/signer/src/tracing.ts diff --git a/packages/phone-number-privacy/combiner/test/integration/domain.test.ts b/packages/phone-number-privacy/combiner/test/integration/domain.test.ts index 143038262d4..d58a4aeade1 100644 --- a/packages/phone-number-privacy/combiner/test/integration/domain.test.ts +++ b/packages/phone-number-privacy/combiner/test/integration/domain.test.ts @@ -1098,7 +1098,7 @@ describe('domainService', () => { version: res.body.version, error: ErrorMessage.THRESHOLD_DISABLE_DOMAIN_FAILURE, }) - }) + }, 10000) }) describe(`${CombinerEndpoint.DOMAIN_QUOTA_STATUS}`, () => { @@ -1112,7 +1112,7 @@ describe('domainService', () => { version: res.body.version, error: ErrorMessage.THRESHOLD_DOMAIN_QUOTA_STATUS_FAILURE, }) - }) + }, 10000) }) describe(`${CombinerEndpoint.DOMAIN_SIGN}`, () => { @@ -1125,7 +1125,7 @@ describe('domainService', () => { version: res.body.version, error: ErrorMessage.NOT_ENOUGH_PARTIAL_SIGNATURES, }) - }) + }, 10000) }) }) }) diff --git a/packages/phone-number-privacy/common/package.json b/packages/phone-number-privacy/common/package.json index 7b465991f74..ff7063ee6c3 100644 --- a/packages/phone-number-privacy/common/package.json +++ b/packages/phone-number-privacy/common/package.json @@ -30,7 +30,14 @@ "dotenv": "^8.2.0", "elliptic": "^6.5.4", "io-ts": "2.0.1", - "is-base64": "^1.1.0" + "is-base64": "^1.1.0", + "@opentelemetry/api": "^1.4.1", + "@opentelemetry/auto-instrumentations-node": "^0.38.0", + "@opentelemetry/propagator-ot-trace": "^0.27.0", + "@opentelemetry/sdk-metrics": "^1.15.1", + "@opentelemetry/sdk-node": "^0.41.1", + "@opentelemetry/semantic-conventions": "^1.15.1", + "@opentelemetry/sdk-trace-web": "^1.15.1" }, "devDependencies": { "@celo/poprf": "^0.1.9", diff --git a/packages/phone-number-privacy/common/src/utils/authentication.ts b/packages/phone-number-privacy/common/src/utils/authentication.ts index 7e223f47211..6c9eb3c3663 100644 --- a/packages/phone-number-privacy/common/src/utils/authentication.ts +++ b/packages/phone-number-privacy/common/src/utils/authentication.ts @@ -16,6 +16,9 @@ import { } from '../interfaces' import { FULL_NODE_TIMEOUT_IN_MS, RETRY_COUNT, RETRY_DELAY_IN_MS } from './constants' +import opentelemetry, { SpanStatusCode } from '@opentelemetry/api' +const tracer = opentelemetry.trace.getTracer('signer-tracer') + /* * Confirms that user is who they say they are and throws error on failure to confirm. * Authorization header should contain the EC signed body @@ -30,60 +33,94 @@ export async function authenticateUser( retryCount: number = RETRY_COUNT, retryDelay: number = RETRY_DELAY_IN_MS ): Promise { - logger.debug('Authenticating user') - - // https://tools.ietf.org/html/rfc7235#section-4.2 - const messageSignature = request.get('Authorization') - const message = JSON.stringify(request.body) - const signer = request.body.account - const authMethod = request.body.authenticationMethod + return tracer.startActiveSpan('Authentication - authenticateUser', async (span) => { + logger.debug('Authenticating user') + span.addEvent('Authenticating user') - if (!messageSignature || !signer) { - return false - } + // https://tools.ietf.org/html/rfc7235#section-4.2 + const messageSignature = request.get('Authorization') + const message = JSON.stringify(request.body) + const signer = request.body.account + const authMethod = request.body.authenticationMethod - if (authMethod && authMethod === AuthenticationMethod.ENCRYPTION_KEY) { - let registeredEncryptionKey - try { - registeredEncryptionKey = await getDataEncryptionKey( - signer, - contractKit, - logger, - timeoutMs, - retryCount, - retryDelay - ) - } catch (err) { - // getDataEncryptionKey should only throw if there is a full-node connection issue. - // That is, it does not throw if the DEK is undefined or invalid - const failureStatus = shouldFailOpen ? ErrorMessage.FAILING_OPEN : ErrorMessage.FAILING_CLOSED - logger.error({ - err, - warning: ErrorMessage.FAILURE_TO_GET_DEK, - failureStatus, + if (!messageSignature || !signer) { + span.addEvent('No messageSignature or signer') + span.setStatus({ + code: SpanStatusCode.ERROR, + message: 'No messageSignature or signer', }) - warnings.push(ErrorMessage.FAILURE_TO_GET_DEK, failureStatus) - return shouldFailOpen - } - if (!registeredEncryptionKey) { - logger.warn({ account: signer }, 'Account does not have registered encryption key') + span.end() return false - } else { - logger.info({ dek: registeredEncryptionKey, account: signer }, 'Found DEK for account') - if (verifyDEKSignature(message, messageSignature, registeredEncryptionKey, logger)) { - return true + } + + if (authMethod && authMethod === AuthenticationMethod.ENCRYPTION_KEY) { + span.addEvent('Authenticating user with encryption key') + let registeredEncryptionKey + try { + span.addEvent('Getting data emcryption key') + registeredEncryptionKey = await getDataEncryptionKey( + signer, + contractKit, + logger, + timeoutMs, + retryCount, + retryDelay + ) + } catch (err) { + // getDataEncryptionKey should only throw if there is a full-node connection issue. + // That is, it does not throw if the DEK is undefined or invalid + const failureStatus = shouldFailOpen + ? ErrorMessage.FAILING_OPEN + : ErrorMessage.FAILING_CLOSED + logger.error({ + err, + warning: ErrorMessage.FAILURE_TO_GET_DEK, + failureStatus, + }) + warnings.push(ErrorMessage.FAILURE_TO_GET_DEK, failureStatus) + span.addEvent('Error with full-node connection issue') + span.setStatus({ + code: SpanStatusCode.ERROR, + message: ErrorMessage.FAILURE_TO_GET_DEK + failureStatus, + }) + span.end() + return shouldFailOpen + } + if (!registeredEncryptionKey) { + logger.warn({ account: signer }, 'Account does not have registered encryption key') + span.addEvent('Account does not have registered encryption key') + span.setStatus({ + code: SpanStatusCode.ERROR, + message: 'Account does not have registered encryption key', + }) + span.end() + return false + } else { + span.addEvent('Verifying with DEK') + logger.info({ dek: registeredEncryptionKey, account: signer }, 'Found DEK for account') + if (verifyDEKSignature(message, messageSignature, registeredEncryptionKey, logger)) { + span.addEvent('DEK verification OK') + span.setStatus({ + code: SpanStatusCode.OK, + message: 'DEK verifycation OK', + }) + span.end() + return true + } } } - } - // Fallback to previous signing pattern - logger.info( - { account: signer, message, messageSignature }, - 'Message was not authenticated with DEK, attempting to authenticate using wallet key' - ) - // TODO This uses signature utils, why doesn't DEK authentication? - // (https://github.com/celo-org/celo-monorepo/issues/9803) - return verifySignature(message, messageSignature, signer) + // Fallback to previous signing pattern + logger.info( + { account: signer, message, messageSignature }, + 'Message was not authenticated with DEK, attempting to authenticate using wallet key' + ) + // TODO This uses signature utils, why doesn't DEK authentication? + // (https://github.com/celo-org/celo-monorepo/issues/9803) + span.addEvent('Verifying with wallet key') + span.end() + return verifySignature(message, messageSignature, signer) + }) } export function getMessageDigest(message: string) { diff --git a/packages/phone-number-privacy/signer/package.json b/packages/phone-number-privacy/signer/package.json index f2f01266bba..06fff2c3099 100644 --- a/packages/phone-number-privacy/signer/package.json +++ b/packages/phone-number-privacy/signer/package.json @@ -5,9 +5,11 @@ "author": "Celo", "license": "Apache-2.0", "main": "dist/index.js", + "types": "dist/index.d.ts", "scripts": { "start": "yarn build && node -r dotenv/config dist/index.js", "start:docker": "yarn build && node dist/index.js", + "start:docker:tracing": "yarn build && node --require ./dist/tracing.js dist/index.js", "clean": "tsc -b . --clean", "build": "tsc -b .", "lint": "tslint --project .", @@ -44,6 +46,13 @@ "@celo/utils": "^4.1.1-dev", "@celo/wallet-hsm-azure": "^4.1.1-dev", "@google-cloud/secret-manager": "3.0.0", + "@opentelemetry/api": "^1.4.1", + "@opentelemetry/auto-instrumentations-node": "^0.38.0", + "@opentelemetry/propagator-ot-trace": "^0.27.0", + "@opentelemetry/sdk-metrics": "^1.15.1", + "@opentelemetry/sdk-node": "^0.41.1", + "@opentelemetry/semantic-conventions": "^1.15.1", + "@opentelemetry/sdk-trace-web": "^1.15.1", "@types/bunyan": "^1.8.8", "aws-sdk": "^2.705.0", "blind-threshold-bls": "https://github.com/celo-org/blind-threshold-bls-wasm#e1e2f8a", @@ -68,4 +77,4 @@ "engines": { "node": ">=10" } -} \ No newline at end of file +} diff --git a/packages/phone-number-privacy/signer/src/common/controller.ts b/packages/phone-number-privacy/signer/src/common/controller.ts index 1854f930f20..295b7a671aa 100644 --- a/packages/phone-number-privacy/signer/src/common/controller.ts +++ b/packages/phone-number-privacy/signer/src/common/controller.ts @@ -9,6 +9,9 @@ import { Request, Response } from 'express' import { Action } from './action' import { Counters, Histograms, meter } from './metrics' +import opentelemetry from '@opentelemetry/api' +const tracer = opentelemetry.trace.getTracer('signer-tracer') + export class Controller { constructor(readonly action: Action) {} @@ -21,11 +24,17 @@ export class Controller { const timeoutError = Symbol() await meter( async () => { - const session = await this.action.io.init(request, response) - // Init returns a response to the user internally. - if (session) { - await this.action.perform(session, timeoutError) - } + // tslint:disable-next-line:no-floating-promises + return tracer.startActiveSpan('Controller - handle', async (span) => { + span.addEvent('Calling init') + const session = await this.action.io.init(request, response) + // Init returns a response to the user internally. + if (session) { + span.addEvent('Calling perform') + await this.action.perform(session, timeoutError) + } + span.end() + }) }, [], (err: any) => { diff --git a/packages/phone-number-privacy/signer/src/common/io.ts b/packages/phone-number-privacy/signer/src/common/io.ts index 96df9e8115b..698aa6ab0bb 100644 --- a/packages/phone-number-privacy/signer/src/common/io.ts +++ b/packages/phone-number-privacy/signer/src/common/io.ts @@ -11,6 +11,10 @@ import Logger from 'bunyan' import { Request, Response } from 'express' import { Session } from './action' +import opentelemetry, { SpanStatusCode } from '@opentelemetry/api' +import { SemanticAttributes } from '@opentelemetry/semantic-conventions' +const tracer = opentelemetry.trace.getTracer('signer-tracer') + export abstract class IO { abstract readonly endpoint: SignerEndpoint @@ -46,14 +50,36 @@ export abstract class IO { request: Request<{}, {}, unknown>, response: Response> ): request is Request<{}, {}, R> { - if (!this.enabled) { - this.sendFailure(WarningMessage.API_UNAVAILABLE, 503, response) - return false - } - if (!this.validate(request)) { - this.sendFailure(WarningMessage.INVALID_INPUT, 400, response) - return false - } - return true + return tracer.startActiveSpan('CommonIO - inputChecks', (span) => { + if (!this.enabled) { + span.addEvent('Error calling enabled') + span.setStatus({ + code: SpanStatusCode.ERROR, + message: WarningMessage.API_UNAVAILABLE, + }) + span.setAttribute(SemanticAttributes.HTTP_STATUS_CODE, 503) + this.sendFailure(WarningMessage.API_UNAVAILABLE, 503, response) + span.end() + return false + } + if (!this.validate(request)) { + span.addEvent('Error calling validate') + span.setStatus({ + code: SpanStatusCode.ERROR, + message: WarningMessage.INVALID_INPUT, + }) + span.setAttribute(SemanticAttributes.HTTP_STATUS_CODE, 400) + this.sendFailure(WarningMessage.INVALID_INPUT, 400, response) + span.end() + return false + } + span.addEvent('Correctly called inputChecks') + span.setStatus({ + code: SpanStatusCode.OK, + message: response.statusMessage, + }) + span.end() + return true + }) } } diff --git a/packages/phone-number-privacy/signer/src/pnp/endpoints/quota/io.ts b/packages/phone-number-privacy/signer/src/pnp/endpoints/quota/io.ts index 3495cdcf22b..36620593e76 100644 --- a/packages/phone-number-privacy/signer/src/pnp/endpoints/quota/io.ts +++ b/packages/phone-number-privacy/signer/src/pnp/endpoints/quota/io.ts @@ -21,6 +21,10 @@ import { Counters } from '../../../common/metrics' import { getSignerVersion } from '../../../config' import { PnpSession } from '../../session' +import opentelemetry, { SpanStatusCode } from '@opentelemetry/api' +import { SemanticAttributes } from '@opentelemetry/semantic-conventions' +const tracer = opentelemetry.trace.getTracer('signer-tracer') + export class PnpQuotaIO extends IO { readonly endpoint = SignerEndpoint.PNP_QUOTA @@ -39,17 +43,41 @@ export class PnpQuotaIO extends IO { request: Request<{}, {}, unknown>, response: Response ): Promise | null> { - const warnings: ErrorType[] = [] - if (!super.inputChecks(request, response)) { - return null - } - if (!(await this.authenticate(request, warnings, response.locals.logger))) { - this.sendFailure(WarningMessage.UNAUTHENTICATED_USER, 401, response) - return null - } - const session = new PnpSession(request, response) - session.errors.push(...warnings) - return session + return tracer.startActiveSpan('pnpQuotaIO - Init', async (span) => { + const warnings: ErrorType[] = [] + span.addEvent('Calling inputChecks') + if (!super.inputChecks(request, response)) { + span.addEvent('Error calling inputChecks') + span.setStatus({ + code: SpanStatusCode.ERROR, + message: response.statusMessage, + }) + span.end() + return null + } + span.addEvent('inputChecks OK, Calling authenticate') + if (!(await this.authenticate(request, warnings, response.locals.logger))) { + span.addEvent('Error calling authenticate') + span.setStatus({ + code: SpanStatusCode.ERROR, + message: WarningMessage.UNAUTHENTICATED_USER, + }) + span.setAttribute(SemanticAttributes.HTTP_STATUS_CODE, 401) + this.sendFailure(WarningMessage.UNAUTHENTICATED_USER, 401, response) + span.end() + return null + } + span.addEvent('Authenticate OK, creating session') + const session = new PnpSession(request, response) + session.errors.push(...warnings) + span.addEvent('Session created') + span.setStatus({ + code: SpanStatusCode.OK, + message: response.statusMessage, + }) + span.end() + return session + }) } validate(request: Request<{}, {}, unknown>): request is Request<{}, {}, PnpQuotaRequest> { @@ -83,31 +111,49 @@ export class PnpQuotaIO extends IO { quotaStatus: PnpQuotaStatus, warnings: string[] ) { - send( - response, - { - success: true, - version: getSignerVersion(), - ...quotaStatus, - warnings, - }, - status, - response.locals.logger - ) - Counters.responses.labels(this.endpoint, status.toString()).inc() + return tracer.startActiveSpan(`pnpQuotaIO - sendSuccess`, (span) => { + span.addEvent('Sending Success') + send( + response, + { + success: true, + version: getSignerVersion(), + ...quotaStatus, + warnings, + }, + status, + response.locals.logger + ) + span.setAttribute(SemanticAttributes.HTTP_METHOD, status) + span.setStatus({ + code: SpanStatusCode.OK, + message: response.statusMessage, + }) + Counters.responses.labels(this.endpoint, status.toString()).inc() + span.end() + }) } sendFailure(error: ErrorType, status: number, response: Response) { - send( - response, - { - success: false, - version: getSignerVersion(), - error, - }, - status, - response.locals.logger - ) - Counters.responses.labels(this.endpoint, status.toString()).inc() + return tracer.startActiveSpan(`pnpQuotaIO - sendFailure`, (span) => { + span.addEvent('Sending Failure') + send( + response, + { + success: false, + version: getSignerVersion(), + error, + }, + status, + response.locals.logger + ) + span.setAttribute(SemanticAttributes.HTTP_METHOD, status) + span.setStatus({ + code: SpanStatusCode.ERROR, + message: error, + }) + Counters.responses.labels(this.endpoint, status.toString()).inc() + span.end() + }) } } diff --git a/packages/phone-number-privacy/signer/src/pnp/endpoints/sign/action.ts b/packages/phone-number-privacy/signer/src/pnp/endpoints/sign/action.ts index 19982f13306..0c81706e33e 100644 --- a/packages/phone-number-privacy/signer/src/pnp/endpoints/sign/action.ts +++ b/packages/phone-number-privacy/signer/src/pnp/endpoints/sign/action.ts @@ -17,6 +17,10 @@ import { PnpQuotaService } from '../../services/quota' import { PnpSession } from '../../session' import { PnpSignIO } from './io' +import opentelemetry, { SpanStatusCode } from '@opentelemetry/api' +import { SemanticAttributes } from '@opentelemetry/semantic-conventions' +const tracer = opentelemetry.trace.getTracer('signer-tracer') + export class PnpSignAction implements Action { protected readonly requestsTable: REQUESTS_TABLE = REQUESTS_TABLE.ONCHAIN @@ -32,109 +36,171 @@ export class PnpSignAction implements Action { session: PnpSession, timeoutError: symbol ): Promise { - // Compute quota lookup, update, and signing within transaction - // so that these occur atomically and rollback on error. - await this.db.transaction(async (trx) => { - const pnpSignHandler = async () => { - const quotaStatus = await this.quota.getQuotaStatus(session, trx) - - let isDuplicateRequest = false - try { - isDuplicateRequest = await getRequestExists( - this.db, - this.requestsTable, - session.request.body.account, - session.request.body.blindedQueryPhoneNumber, - session.logger, - trx - ) - } catch (err) { - session.logger.error(err, 'Failed to check if request already exists in db') - } + // tslint:disable-next-line:no-floating-promises + return tracer.startActiveSpan('pnpSignIO - perform', async (span) => { + span.addEvent('Calling db transaction') + // Compute quota lookup, update, and signing within transaction + // so that these occur atomically and rollback on error. + await this.db.transaction(async (trx) => { + const pnpSignHandler = async () => { + span.addEvent('Getting quotaStatus') + const quotaStatus = await this.quota.getQuotaStatus(session, trx) + span.addEvent('Got quotaStatus') - if (isDuplicateRequest) { - Counters.duplicateRequests.inc() - session.logger.info( - 'Request already exists in db. Will service request without charging quota.' - ) - session.errors.push(WarningMessage.DUPLICATE_REQUEST_TO_GET_PARTIAL_SIG) - } else { - // In the case of a database connection failure, performedQueryCount will be -1 - if (quotaStatus.performedQueryCount === -1) { - this.io.sendFailure( - ErrorMessage.DATABASE_GET_FAILURE, - 500, - session.response, - quotaStatus + let isDuplicateRequest = false + try { + span.addEvent('Getting isDuplicateRequest') + isDuplicateRequest = await getRequestExists( + this.db, + this.requestsTable, + session.request.body.account, + session.request.body.blindedQueryPhoneNumber, + session.logger, + trx ) - return + span.addEvent('Got isDuplicateRequest') + } catch (err) { + session.logger.error(err, 'Failed to check if request already exists in db') + span.addEvent('Error checking if request already exists in db') + span.setStatus({ + code: SpanStatusCode.ERROR, + message: 'Error checking if request already exists in db', + }) } - // In the case of a blockchain connection failure, totalQuota will be -1 - if (quotaStatus.totalQuota === -1) { - if (this.io.shouldFailOpen) { - // We fail open and service requests on full-node errors to not block the user. - // Error messages are stored in the session and included along with the signature in the response. - quotaStatus.totalQuota = Number.MAX_SAFE_INTEGER - session.logger.warn( - { warning: ErrorMessage.FAILURE_TO_GET_TOTAL_QUOTA }, - ErrorMessage.FAILING_OPEN - ) - Counters.requestsFailingOpen.inc() - } else { - session.logger.warn( - { warning: ErrorMessage.FAILURE_TO_GET_TOTAL_QUOTA }, - ErrorMessage.FAILING_CLOSED + + if (isDuplicateRequest) { + span.addEvent('Request already exists in db') + Counters.duplicateRequests.inc() + session.logger.info( + 'Request already exists in db. Will service request without charging quota.' + ) + session.errors.push(WarningMessage.DUPLICATE_REQUEST_TO_GET_PARTIAL_SIG) + } else { + // In the case of a database connection failure, performedQueryCount will be -1 + if (quotaStatus.performedQueryCount === -1) { + span.addEvent('Database connection failure') + span.setStatus({ + code: SpanStatusCode.ERROR, + message: ErrorMessage.DATABASE_GET_FAILURE, + }) + span.setAttribute(SemanticAttributes.HTTP_STATUS_CODE, 500) + this.io.sendFailure( + ErrorMessage.DATABASE_GET_FAILURE, + 500, + session.response, + quotaStatus ) - Counters.requestsFailingClosed.inc() - this.io.sendFailure(ErrorMessage.FULL_NODE_ERROR, 500, session.response, quotaStatus) return } - } + // In the case of a blockchain connection failure, totalQuota will be -1 + if (quotaStatus.totalQuota === -1) { + if (this.io.shouldFailOpen) { + span.addEvent('Blockchain connection failure FailOpen') + span.setStatus({ + code: SpanStatusCode.ERROR, + message: ErrorMessage.FAILURE_TO_GET_TOTAL_QUOTA + ErrorMessage.FAILING_OPEN, + }) + // We fail open and service requests on full-node errors to not block the user. + // Error messages are stored in the session and included along with the signature in the response. + quotaStatus.totalQuota = Number.MAX_SAFE_INTEGER + session.logger.warn( + { warning: ErrorMessage.FAILURE_TO_GET_TOTAL_QUOTA }, + ErrorMessage.FAILING_OPEN + ) + Counters.requestsFailingOpen.inc() + } else { + span.addEvent('Blockchain connection failure FailClosed') + span.setStatus({ + code: SpanStatusCode.ERROR, + message: ErrorMessage.FAILURE_TO_GET_TOTAL_QUOTA + ErrorMessage.FAILING_CLOSED, + }) + span.setAttribute(SemanticAttributes.HTTP_STATUS_CODE, 500) + session.logger.warn( + { warning: ErrorMessage.FAILURE_TO_GET_TOTAL_QUOTA }, + ErrorMessage.FAILING_CLOSED + ) + Counters.requestsFailingClosed.inc() + this.io.sendFailure( + ErrorMessage.FULL_NODE_ERROR, + 500, + session.response, + quotaStatus + ) + return + } + } - // TODO(after 2.0.0) add more specific error messages on DB and key version - // https://github.com/celo-org/celo-monorepo/issues/9882 - // quotaStatus is updated in place; throws on failure to update - const { sufficient } = await this.quota.checkAndUpdateQuotaStatus( - quotaStatus, - session, - trx - ) - if (!sufficient) { - this.io.sendFailure(WarningMessage.EXCEEDED_QUOTA, 403, session.response, quotaStatus) - return + // TODO(after 2.0.0) add more specific error messages on DB and key version + // https://github.com/celo-org/celo-monorepo/issues/9882 + // quotaStatus is updated in place; throws on failure to update + span.addEvent('Calling checkAndUpdateQuotaStatus') + const { sufficient } = await this.quota.checkAndUpdateQuotaStatus( + quotaStatus, + session, + trx + ) + if (!sufficient) { + span.addEvent('Not sufficient Quota') + span.setStatus({ + code: SpanStatusCode.ERROR, + message: WarningMessage.EXCEEDED_QUOTA, + }) + span.setAttribute(SemanticAttributes.HTTP_STATUS_CODE, 403) + this.io.sendFailure(WarningMessage.EXCEEDED_QUOTA, 403, session.response, quotaStatus) + return + } } - } - const key: Key = { - version: - getRequestKeyVersion(session.request, session.logger) ?? - this.config.keystore.keys.phoneNumberPrivacy.latest, - name: DefaultKeyName.PHONE_NUMBER_PRIVACY, - } + const key: Key = { + version: + getRequestKeyVersion(session.request, session.logger) ?? + this.config.keystore.keys.phoneNumberPrivacy.latest, + name: DefaultKeyName.PHONE_NUMBER_PRIVACY, + } - try { - const signature = await this.sign( - session.request.body.blindedQueryPhoneNumber, - key, - session - ) - this.io.sendSuccess(200, session.response, key, signature, quotaStatus, session.errors) - return - } catch (err) { - session.logger.error({ err }) - quotaStatus.performedQueryCount-- - this.io.sendFailure( - ErrorMessage.SIGNATURE_COMPUTATION_FAILURE, - 500, - session.response, - quotaStatus - ) - // Note that errors thrown after rollback will have no effect, hence doing this last - await trx.rollback() - return + try { + span.addEvent('Signing request') + const signature = await this.sign( + session.request.body.blindedQueryPhoneNumber, + key, + session + ) + span.addEvent('Signed request') + span.setStatus({ + code: SpanStatusCode.OK, + message: session.response.statusMessage, + }) + span.setAttribute(SemanticAttributes.HTTP_STATUS_CODE, 200) + this.io.sendSuccess(200, session.response, key, signature, quotaStatus, session.errors) + return + } catch (err) { + span.addEvent('Signature computation error') + span.setStatus({ + code: SpanStatusCode.ERROR, + message: ErrorMessage.SIGNATURE_COMPUTATION_FAILURE, + }) + span.setAttribute(SemanticAttributes.HTTP_STATUS_CODE, 500) + session.logger.error({ err }) + quotaStatus.performedQueryCount-- + this.io.sendFailure( + ErrorMessage.SIGNATURE_COMPUTATION_FAILURE, + 500, + session.response, + quotaStatus + ) + span.addEvent('Rolling back transactions') + // Note that errors thrown after rollback will have no effect, hence doing this last + await trx.rollback() + span.addEvent('Transaction rolled back') + return + } } - } - await timeout(pnpSignHandler, [], this.config.timeout, timeoutError) + span.addEvent('Calling pnpSignHandler with timeout') + await timeout(pnpSignHandler, [], this.config.timeout, timeoutError) + span.addEvent('Called pnpSignHandler with timeout') + }) + span.addEvent('Called transaction') + span.end() }) } diff --git a/packages/phone-number-privacy/signer/src/pnp/endpoints/sign/io.ts b/packages/phone-number-privacy/signer/src/pnp/endpoints/sign/io.ts index dfc4dfd3345..eef5ba243b4 100644 --- a/packages/phone-number-privacy/signer/src/pnp/endpoints/sign/io.ts +++ b/packages/phone-number-privacy/signer/src/pnp/endpoints/sign/io.ts @@ -25,6 +25,10 @@ import { Counters } from '../../../common/metrics' import { getSignerVersion } from '../../../config' import { PnpSession } from '../../session' +import opentelemetry, { SpanStatusCode } from '@opentelemetry/api' +import { SemanticAttributes } from '@opentelemetry/semantic-conventions' +const tracer = opentelemetry.trace.getTracer('signer-tracer') + export class PnpSignIO extends IO { readonly endpoint = SignerEndpoint.PNP_SIGN @@ -43,22 +47,54 @@ export class PnpSignIO extends IO { request: Request<{}, {}, unknown>, response: Response ): Promise | null> { - const logger = response.locals.logger - const warnings: ErrorType[] = [] - if (!super.inputChecks(request, response)) { - return null - } - if (!requestHasValidKeyVersion(request, logger)) { - this.sendFailure(WarningMessage.INVALID_KEY_VERSION_REQUEST, 400, response) - return null - } - if (!(await this.authenticate(request, warnings, logger))) { - this.sendFailure(WarningMessage.UNAUTHENTICATED_USER, 401, response) - return null - } - const session = new PnpSession(request, response) - session.errors.push(...warnings) - return session + return tracer.startActiveSpan('pnpSignIO - init', async (span) => { + const logger = response.locals.logger + const warnings: ErrorType[] = [] + span.addEvent('Calling inputChecks') + if (!super.inputChecks(request, response)) { + span.addEvent('Error calling inputChecks') + span.setStatus({ + code: SpanStatusCode.ERROR, + message: response.statusMessage, + }) + span.end() + return null + } + span.addEvent('inputChecks OK, Calling requestHasValidKeyVersion') + if (!requestHasValidKeyVersion(request, logger)) { + span.addEvent('Error request has invalid key version.') + span.setStatus({ + code: SpanStatusCode.ERROR, + message: WarningMessage.INVALID_KEY_VERSION_REQUEST, + }) + span.setAttribute(SemanticAttributes.HTTP_STATUS_CODE, 400) + this.sendFailure(WarningMessage.INVALID_KEY_VERSION_REQUEST, 400, response) + span.end() + return null + } + span.addEvent('requestHasValidKeyVersion OK, Calling authenticate') + if (!(await this.authenticate(request, warnings, logger))) { + span.addEvent('Error calling authenticate') + span.setStatus({ + code: SpanStatusCode.ERROR, + message: WarningMessage.UNAUTHENTICATED_USER, + }) + span.setAttribute(SemanticAttributes.HTTP_STATUS_CODE, 401) + this.sendFailure(WarningMessage.UNAUTHENTICATED_USER, 401, response) + span.end() + return null + } + span.addEvent('Authenticate OK, creating session') + const session = new PnpSession(request, response) + session.errors.push(...warnings) + span.addEvent('Session created') + span.setStatus({ + code: SpanStatusCode.OK, + message: response.statusMessage, + }) + span.end() + return session + }) } validate(request: Request<{}, {}, unknown>): request is Request<{}, {}, SignMessageRequest> { @@ -95,20 +131,29 @@ export class PnpSignIO extends IO { quotaStatus: PnpQuotaStatus, warnings: string[] ) { - response.set(KEY_VERSION_HEADER, key.version.toString()) - send( - response, - { - success: true, - version: getSignerVersion(), - signature, - ...quotaStatus, - warnings, - }, - status, - response.locals.logger - ) - Counters.responses.labels(this.endpoint, status.toString()).inc() + return tracer.startActiveSpan(`pnpSignIO - sendSuccess`, (span) => { + span.addEvent('Sending Success') + response.set(KEY_VERSION_HEADER, key.version.toString()) + send( + response, + { + success: true, + version: getSignerVersion(), + signature, + ...quotaStatus, + warnings, + }, + status, + response.locals.logger + ) + span.setAttribute(SemanticAttributes.HTTP_METHOD, status) + span.setStatus({ + code: SpanStatusCode.OK, + message: response.statusMessage, + }) + Counters.responses.labels(this.endpoint, status.toString()).inc() + span.end() + }) } sendFailure( @@ -117,17 +162,26 @@ export class PnpSignIO extends IO { response: Response, quotaStatus?: PnpQuotaStatus ) { - send( - response, - { - success: false, - version: getSignerVersion(), - error, - ...quotaStatus, - }, - status, - response.locals.logger - ) - Counters.responses.labels(this.endpoint, status.toString()).inc() + return tracer.startActiveSpan(`pnpSignIO - sendFailure`, (span) => { + span.addEvent('Sending Failure') + send( + response, + { + success: false, + version: getSignerVersion(), + error, + ...quotaStatus, + }, + status, + response.locals.logger + ) + span.setAttribute(SemanticAttributes.HTTP_METHOD, status) + span.setStatus({ + code: SpanStatusCode.ERROR, + message: error, + }) + Counters.responses.labels(this.endpoint, status.toString()).inc() + span.end() + }) } } diff --git a/packages/phone-number-privacy/signer/src/server.ts b/packages/phone-number-privacy/signer/src/server.ts index c0671500365..b0896fce950 100644 --- a/packages/phone-number-privacy/signer/src/server.ts +++ b/packages/phone-number-privacy/signer/src/server.ts @@ -7,10 +7,11 @@ import { SignerEndpoint, } from '@celo/phone-number-privacy-common' import Logger from 'bunyan' -import express, { Request, RequestHandler, Response } from 'express' +import express, { Express, Request, RequestHandler, Response } from 'express' import fs from 'fs' import https from 'https' import { Knex } from 'knex' +import { IncomingMessage, ServerResponse } from 'node:http' import * as PromClient from 'prom-client' import { Controller } from './common/controller' import { KeyProvider } from './common/key-management/key-provider-base' @@ -29,6 +30,10 @@ import { PnpSignAction } from './pnp/endpoints/sign/action' import { PnpSignIO } from './pnp/endpoints/sign/io' import { PnpQuotaService } from './pnp/services/quota' +import opentelemetry, { SpanStatusCode } from '@opentelemetry/api' +import { SemanticAttributes } from '@opentelemetry/semantic-conventions' +const tracer = opentelemetry.trace.getTracer('signer-tracer') + require('events').EventEmitter.defaultMaxListeners = 15 export function startSigner( @@ -36,7 +41,7 @@ export function startSigner( db: Knex, keyProvider: KeyProvider, kit?: ContractKit -) { +): Express | https.Server { const logger = rootLogger(config.serviceName) kit = kit ?? getContractKit(config.blockchain) @@ -60,27 +65,39 @@ export function startSigner( handler: (req: Request, res: Response) => Promise ) => app.post(endpoint, async (req, res) => { - const childLogger: Logger = res.locals.logger - try { - await handler(req, res) - } catch (err: any) { - // Handle any errors that otherwise managed to escape the proper handlers - childLogger.error(ErrorMessage.CAUGHT_ERROR_IN_ENDPOINT_HANDLER) - childLogger.error(err) - Counters.errorsCaughtInEndpointHandler.inc() - if (!res.headersSent) { - childLogger.info('Responding with error in outer endpoint handler') - res.status(500).json({ - success: false, - error: ErrorMessage.UNKNOWN_ERROR, + // tslint:disable-next-line:no-floating-promises + return tracer.startActiveSpan('server - addEndpoint - post', async (parentSpan) => { + const childLogger: Logger = res.locals.logger + try { + parentSpan.addEvent('Called ' + req.path) + parentSpan.setAttribute(SemanticAttributes.HTTP_ROUTE, req.path) + parentSpan.setAttribute(SemanticAttributes.HTTP_METHOD, req.method) + parentSpan.setAttribute(SemanticAttributes.HTTP_CLIENT_IP, req.ip) + await handler(req, res) + } catch (err: any) { + parentSpan.setStatus({ + code: SpanStatusCode.ERROR, + message: 'Fail', }) - } else { - // Getting to this error likely indicates that the `perform` process - // does not terminate after sending a response, and then throws an error. - childLogger.error(ErrorMessage.ERROR_AFTER_RESPONSE_SENT) - Counters.errorsThrownAfterResponseSent.inc() + // Handle any errors that otherwise managed to escape the proper handlers + childLogger.error(ErrorMessage.CAUGHT_ERROR_IN_ENDPOINT_HANDLER) + childLogger.error(err) + Counters.errorsCaughtInEndpointHandler.inc() + if (!res.headersSent) { + childLogger.info('Responding with error in outer endpoint handler') + res.status(500).json({ + success: false, + error: ErrorMessage.UNKNOWN_ERROR, + }) + } else { + // Getting to this error likely indicates that the `perform` process + // does not terminate after sending a response, and then throws an error. + childLogger.error(ErrorMessage.ERROR_AFTER_RESPONSE_SENT) + Counters.errorsThrownAfterResponseSent.inc() + } } - } + parentSpan.end() + }) }) const pnpQuotaService = new PnpQuotaService(db, kit) diff --git a/packages/phone-number-privacy/signer/src/tracing.ts b/packages/phone-number-privacy/signer/src/tracing.ts new file mode 100644 index 00000000000..0d75525c9a7 --- /dev/null +++ b/packages/phone-number-privacy/signer/src/tracing.ts @@ -0,0 +1,81 @@ +/* + https://www.npmjs.com/package/@opentelemetry/auto-instrumentations-node + getNodeAutoInstrumentations (above) includes all available auto-tracing + instrumentations for node (Knex, Express, Http, tcp, ...). + This may lead to super-verbose traces. We can just comment the getNodeAutoInstrumentations + line above and just add the instrumentations we care like commented lines below. +*/ +import { getNodeAutoInstrumentations } from '@opentelemetry/auto-instrumentations-node' +import { JaegerExporter } from '@opentelemetry/exporter-jaeger' +import { registerInstrumentations } from '@opentelemetry/instrumentation' +import { Resource } from '@opentelemetry/resources' +import { BatchSpanProcessor } from '@opentelemetry/sdk-trace-base' +import { NodeTracerProvider } from '@opentelemetry/sdk-trace-node' +/* + Some instrumentations included in auto-instrumentations-node: + - https://www.npmjs.com/package/@opentelemetry/sdk-trace-web + - https://www.npmjs.com/package/@opentelemetry/instrumentation-express + - https://www.npmjs.com/package/@opentelemetry/instrumentation-http + - https://www.npmjs.com/package/@opentelemetry/instrumentation-knex +*/ +// import { WebTracerProvider } from '@opentelemetry/sdk-trace-web' +// import { ExpressInstrumentation } from '@opentelemetry/instrumentation-express' +// import { HttpInstrumentation } from '@opentelemetry/instrumentation-http' +// import { KnexInstrumentation } from '@opentelemetry/instrumentation-knex' +import { SemanticResourceAttributes } from '@opentelemetry/semantic-conventions' + +const options = { + tags: [], + endpoint: process.env.TRACER_ENDPOINT, + // 'http://grafana-agent.grafana-agent:14268/api/traces', +} + +// Optionally register automatic instrumentation libraries +registerInstrumentations({ + instrumentations: [ + getNodeAutoInstrumentations({ + // load custom configuration for http instrumentation + '@opentelemetry/instrumentation-http': { + ignoreIncomingPaths: [ + /\/status/, + /\/metrics/, + /\/metadata\/.*/, + /\/secrets\/.*/, + /\/ecp\/.*/, + ], + }, + }), + /* + How to add specific instrumentations instead of the + all-included auto-tracing getNodeAutoInstrumentations + */ + // new HttpInstrumentation({ + // ignoreIncomingPaths: [ + // /\/status/, + // /\/metrics/, + // /\/metadata\/.*/, + // /\/secrets\/.*/, + // /\/ecp\/.*/, + // ], + // }), + // new ExpressInstrumentation(), + // new KnexInstrumentation(), + ], +}) + +const resource = Resource.default().merge( + new Resource({ + [SemanticResourceAttributes.SERVICE_NAME]: process.env.TRACING_SERVICE_NAME, + // 'testing-signer-tracing', + [SemanticResourceAttributes.SERVICE_VERSION]: '0.1.0', + }) +) + +const provider = new NodeTracerProvider({ + resource, +}) +const exporter = new JaegerExporter(options) +const processor = new BatchSpanProcessor(exporter) +provider.addSpanProcessor(processor) + +provider.register() From c772fe0004f4536a6fcc03f659e49158d501804f Mon Sep 17 00:00:00 2001 From: Alec Schaefer Date: Tue, 15 Aug 2023 14:05:52 -0400 Subject: [PATCH 03/31] update pnpcommon README, fix release sdks script, combiner deps (#10463) update pnpcommon README, release sdks script, combiner deps --- .../combiner/package.json | 13 +- .../combiner/src/common/combine.ts | 6 +- .../common/crypto-clients/crypto-client.ts | 13 +- .../combiner/src/index.ts | 2 +- .../phone-number-privacy/common/README.md | 3 +- .../phone-number-privacy/common/package.json | 3 +- .../common/src/test/utils.ts | 6 +- .../phone-number-privacy/monitor/src/query.ts | 36 +- .../monitor/src/resources.ts | 48 + .../monitor/src/scripts/run-load-test.ts | 68 +- .../phone-number-privacy/monitor/src/test.ts | 34 +- .../signer/src/pnp/endpoints/sign/action.ts | 14 +- .../signer/src/pnp/endpoints/sign/io.ts | 7 + packages/sdk/identity/package.json | 2 +- packages/sdk/network-utils/package.json | 2 +- scripts/deploy-sdks.ts | 14 +- yarn.lock | 1406 +++++++++++++++-- 17 files changed, 1529 insertions(+), 148 deletions(-) create mode 100644 packages/phone-number-privacy/monitor/src/resources.ts diff --git a/packages/phone-number-privacy/combiner/package.json b/packages/phone-number-privacy/combiner/package.json index 3112b68489d..b248db4a91c 100644 --- a/packages/phone-number-privacy/combiner/package.json +++ b/packages/phone-number-privacy/combiner/package.json @@ -32,14 +32,13 @@ "@celo/phone-number-privacy-common": "^3.0.0-dev", "@celo/identity": "^4.1.1-dev", "@celo/encrypted-backup": "^4.1.1-dev", - "@celo/identity-prev": "npm:@celo/identity@1.2.0", "@celo/poprf": "^0.1.9", "@types/bunyan": "^1.8.8", "blind-threshold-bls": "https://github.com/celo-org/blind-threshold-bls-wasm#e1e2f8a", "dotenv": "^8.2.0", "express": "^4.17.1", - "firebase-admin": "^9.12.0", - "firebase-functions": "^3.15.7", + "firebase-admin": "^11.10.1", + "firebase-functions": "^4.4.1", "knex": "^2.1.0", "node-fetch": "^2.6.9", "pg": "^8.2.1", @@ -51,13 +50,13 @@ "@types/express": "^4.17.6", "@types/supertest": "^2.0.12", "@types/uuid": "^7.0.3", - "firebase-functions-test": "^0.3.3", - "firebase-tools": "9.20.0" + "firebase-functions-test": "^3.1.0", + "firebase-tools": "12.4.7" }, "peerDependencies": { - "@celo/phone-number-privacy-signer": "^2.0.2" + "@celo/phone-number-privacy-signer": "^3.0.0-dev" }, "engines": { - "node": ">=14" + "node": ">=18" } } diff --git a/packages/phone-number-privacy/combiner/src/common/combine.ts b/packages/phone-number-privacy/combiner/src/common/combine.ts index d2fd2d8754f..66350cfd32b 100644 --- a/packages/phone-number-privacy/combiner/src/common/combine.ts +++ b/packages/phone-number-privacy/combiner/src/common/combine.ts @@ -157,12 +157,12 @@ export abstract class CombineAction implements Action } private addFailureToSession(signer: Signer, errorCode: number | undefined, session: Session) { - session.logger.warn( - `Received failure from ${session.failedSigners.size}/${this.signers.length} signers` - ) // Tracking failed request count via signer url prevents // double counting the same failed request by mistake session.failedSigners.add(signer.url) + session.logger.warn( + `Received failure from ${session.failedSigners.size}/${this.signers.length} signers` + ) if (errorCode) { session.incrementErrorCodeCount(errorCode) } diff --git a/packages/phone-number-privacy/combiner/src/common/crypto-clients/crypto-client.ts b/packages/phone-number-privacy/combiner/src/common/crypto-clients/crypto-client.ts index 2fd8580420a..c57783a3051 100644 --- a/packages/phone-number-privacy/combiner/src/common/crypto-clients/crypto-client.ts +++ b/packages/phone-number-privacy/combiner/src/common/crypto-clients/crypto-client.ts @@ -1,5 +1,6 @@ import { ErrorMessage, KeyVersionInfo } from '@celo/phone-number-privacy-common' import Logger from 'bunyan' +import { performance } from 'perf_hooks' export interface ServicePartialSignature { url: string @@ -38,7 +39,17 @@ export abstract class CryptoClient { `${ErrorMessage.NOT_ENOUGH_PARTIAL_SIGNATURES} ${this.allSignaturesLength}/${threshold}` ) } - return this._combineBlindedSignatureShares(blindedMessage, logger) + + const start = `Start combineBlindedSignatureShares` + const end = `End combineBlindedSignatureShares` + performance.mark(start) + + const combinedSignature = this._combineBlindedSignatureShares(blindedMessage, logger) + + performance.mark(end) + performance.measure('combineBlindedSignatureShares', start, end) + + return combinedSignature } /* diff --git a/packages/phone-number-privacy/combiner/src/index.ts b/packages/phone-number-privacy/combiner/src/index.ts index 4d4e7822dfc..def19e58b58 100644 --- a/packages/phone-number-privacy/combiner/src/index.ts +++ b/packages/phone-number-privacy/combiner/src/index.ts @@ -10,7 +10,7 @@ export const combiner = functions .runWith({ // Keep instances warm for mainnet functions // Defined check required for running tests vs. deployment - minInstances: functions.config().service ? functions.config().service.min_instances : undefined, + minInstances: functions.config().service ? Number(functions.config().service.min_instances) : 0, }) .https.onRequest(startCombiner(config, getContractKit(config.blockchain))) export * from './config' diff --git a/packages/phone-number-privacy/common/README.md b/packages/phone-number-privacy/common/README.md index 369c3daaa9c..70cc0a7a014 100644 --- a/packages/phone-number-privacy/common/README.md +++ b/packages/phone-number-privacy/common/README.md @@ -27,7 +27,8 @@ These instructions assume the following scenario for readability: 4. Same idea as above -- ensure the version of the `@celo/phone-number-privacy-common` package is set to the version you are trying to release (i.e. `2.0.3-beta.1`) and that all other packages are importing this version. 5. From the monorepo root directory, run `yarn reset && yarn && yarn build` (expect this to take at least 10 mins) 6. Commit your changes with the message `3.2.0-beta.1` -7. Publish the ODIS common package by navigating to the `phone-number-privacy/common` directory and running `npm publish —-tag beta --version 3.2.0-beta.1 —-otp ` +7. Publish the ODIS common package by navigating to the `phone-number-privacy/common` directory and running `npm publish —-tag beta` + - You will be prompted to enter your OTP - When publishing as `latest`, omit the `--tag beta` 8. Publish the sdks by running `npm run deploy-sdks` from the monorepo root directory - You will be prompted to enter a version number that you wish to publish. i.e. `3.2.0-beta.1` diff --git a/packages/phone-number-privacy/common/package.json b/packages/phone-number-privacy/common/package.json index ff7063ee6c3..618a7f9cc12 100644 --- a/packages/phone-number-privacy/common/package.json +++ b/packages/phone-number-privacy/common/package.json @@ -45,8 +45,7 @@ "@types/elliptic": "^6.4.12", "@types/express": "^4.17.6", "@types/is-base64": "^1.1.0", - "@types/node-fetch": "^2.5.7", - "web3": "1.10.0" + "@types/node-fetch": "^2.5.7" }, "engines": { "node": ">=10" diff --git a/packages/phone-number-privacy/common/src/test/utils.ts b/packages/phone-number-privacy/common/src/test/utils.ts index 28ace147687..0ba2ff66539 100644 --- a/packages/phone-number-privacy/common/src/test/utils.ts +++ b/packages/phone-number-privacy/common/src/test/utils.ts @@ -1,7 +1,6 @@ import { privateKeyToAddress } from '@celo/utils/lib/address' import { serializeSignature, Signature, signMessage } from '@celo/utils/lib/signatureUtils' import BigNumber from 'bignumber.js' -import Web3 from 'web3' import { AuthenticationMethod, PhoneNumberPrivacyRequest, @@ -50,7 +49,7 @@ export function createMockOdisPayments(totalPaidCUSDFunc: jest.Mock mockWeb3.eth.getTransactionCount()), diff --git a/packages/phone-number-privacy/monitor/src/query.ts b/packages/phone-number-privacy/monitor/src/query.ts index b069879b162..823deb391b0 100644 --- a/packages/phone-number-privacy/monitor/src/query.ts +++ b/packages/phone-number-privacy/monitor/src/query.ts @@ -18,8 +18,9 @@ import { genSessionID } from '@celo/phone-number-privacy-common/lib/utils/logger import { normalizeAddressWith0x, privateKeyToAddress } from '@celo/utils/lib/address' import { defined } from '@celo/utils/lib/sign-typed-data-utils' import { LocalWallet } from '@celo/wallet-local' +import { ACCOUNT_ADDRESS, dekAuthSigner, generateRandomPhoneNumber, PRIVATE_KEY } from './resources' -const phoneNumber = fetchEnv('PHONE_NUMBER') +let phoneNumber = fetchEnv('PHONE_NUMBER') const newPrivateKey = async () => { const mnemonic = await generateMnemonic(MnemonicStrength.s256_24words) @@ -29,21 +30,35 @@ const newPrivateKey = async () => { export const queryOdisForSalt = async ( blockchainProvider: string, contextName: OdisContextName, - timeoutMs: number = 10000 + timeoutMs: number = 10000, + bypassQuota: boolean = false, + useDEK: boolean = false ) => { + let authSigner: AuthSigner + let accountAddress: string console.log(`contextName: ${contextName}`) // tslint:disable-line:no-console console.log(`blockchain provider: ${blockchainProvider}`) // tslint:disable-line:no-console + console.log(`using DEK: ${useDEK}`) // tslint:disable-line:no-console const serviceContext = getServiceContext(contextName, OdisAPI.PNP) const contractKit = newKit(blockchainProvider, new LocalWallet()) - const privateKey = await newPrivateKey() - const accountAddress = normalizeAddressWith0x(privateKeyToAddress(privateKey)) - contractKit.connection.addAccount(privateKey) - contractKit.defaultAccount = accountAddress - const authSigner: AuthSigner = { - authenticationMethod: OdisUtils.Query.AuthenticationMethod.WALLET_KEY, - contractKit, + + if (useDEK) { + accountAddress = ACCOUNT_ADDRESS + contractKit.connection.addAccount(PRIVATE_KEY) + contractKit.defaultAccount = accountAddress + authSigner = dekAuthSigner(0) + phoneNumber = generateRandomPhoneNumber() + } else { + const privateKey = await newPrivateKey() + accountAddress = normalizeAddressWith0x(privateKeyToAddress(privateKey)) + contractKit.connection.addAccount(privateKey) + contractKit.defaultAccount = accountAddress + authSigner = { + authenticationMethod: OdisUtils.Query.AuthenticationMethod.WALLET_KEY, + contractKit, + } } const abortController = new AbortController() @@ -52,6 +67,7 @@ export const queryOdisForSalt = async ( console.log(`ODIS salt request timed out after ${timeoutMs} ms`) // tslint:disable-line:no-console }, timeoutMs) try { + const testSessionId = Math.floor(Math.random() * 100000).toString() const res = await OdisUtils.Identifier.getObfuscatedIdentifier( phoneNumber, OdisUtils.Identifier.IdentifierPrefix.PHONE_NUMBER, @@ -61,7 +77,7 @@ export const queryOdisForSalt = async ( undefined, undefined, undefined, - genSessionID(), + bypassQuota ? testSessionId : genSessionID(), undefined, abortController ) diff --git a/packages/phone-number-privacy/monitor/src/resources.ts b/packages/phone-number-privacy/monitor/src/resources.ts new file mode 100644 index 00000000000..b7ca1ef06db --- /dev/null +++ b/packages/phone-number-privacy/monitor/src/resources.ts @@ -0,0 +1,48 @@ +import { EncryptionKeySigner } from '@celo/identity/lib/odis/query' +import { AuthenticationMethod } from '@celo/phone-number-privacy-common' +import { + ensureLeading0x, + normalizeAddressWith0x, + privateKeyToAddress, +} from '@celo/utils/lib/address' + +export const PRIVATE_KEY = '0x1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef' +export const ACCOUNT_ADDRESS = normalizeAddressWith0x(privateKeyToAddress(PRIVATE_KEY)) // 0x1be31a94361a391bbafb2a4ccd704f57dc04d4bb + +interface DEK { + privateKey: string + publicKey: string + address: string +} + +export const deks: DEK[] = [ + { + privateKey: 'bf8a2b73baf8402f8fe906ad3f42b560bf14b39f7df7797ece9e293d6f162188', + publicKey: '034846bc781cacdafc66f3a77aa9fc3c56a9dadcd683c72be3c446fee8da041070', + address: '0x7b33dF2607b85e3211738a49A6Ad6E8Ed4d13F6E', + }, + { + privateKey: '0975b0c565abc75b6638a749ea3008cb52676af3eabe4b80e19c516d82330364', + publicKey: '03b1ac8c445f0796978018c087b97e8213b32c39e6a8642ae63dce71da33a19f65', + address: '0x34332049B07Fab9a2e843A7C8991469d93cF6Ae6', + }, +] + +// The following code can be used to generate more test DEKs +// const generateDEKs = (n: number): Promise => Promise.all([...Array(n).keys()].map( +// async () => await deriveDek(await generateMnemonic()) +// )) + +export const dekAuthSigner = (index: number): EncryptionKeySigner => { + return { + authenticationMethod: AuthenticationMethod.ENCRYPTION_KEY, + rawKey: ensureLeading0x(deks[index].privateKey), + } +} + +export function generateRandomPhoneNumber() { + const min = 1000000000 // Smallest 10-digit number + const max = 9999999999 // Largest 10-digit number + const randomNumber = Math.floor(Math.random() * (max - min + 1)) + min + return '+1' + randomNumber.toString() +} diff --git a/packages/phone-number-privacy/monitor/src/scripts/run-load-test.ts b/packages/phone-number-privacy/monitor/src/scripts/run-load-test.ts index cac2eb23634..6e38b697118 100644 --- a/packages/phone-number-privacy/monitor/src/scripts/run-load-test.ts +++ b/packages/phone-number-privacy/monitor/src/scripts/run-load-test.ts @@ -1,10 +1,19 @@ import { OdisContextName } from '@celo/identity/lib/odis/query' +import { CombinerEndpointPNP } from '@celo/phone-number-privacy-common' import yargs from 'yargs' import { concurrentLoadTest, serialLoadTest } from '../test' /* tslint:disable:no-console */ -const runLoadTest = (contextName: string, numWorker: number, isSerial: boolean) => { +const runLoadTest = ( + contextName: string, + numWorker: number, + isSerial: boolean, + pnpQuotaEndpoint: boolean, + timeoutMs: number, + bypassQuota: boolean, + useDEK: boolean +) => { let blockchainProvider: string switch (contextName) { case 'alfajoresstaging': @@ -25,11 +34,30 @@ const runLoadTest = (contextName: string, numWorker: number, isSerial: boolean) process.exit(1) } if (isSerial) { - serialLoadTest(numWorker, blockchainProvider!, contextName as OdisContextName) // tslint:disable-line:no-floating-promises + // tslint:disable-next-line: no-floating-promises + serialLoadTest( + numWorker, + blockchainProvider!, + contextName as OdisContextName, + pnpQuotaEndpoint ? CombinerEndpointPNP.PNP_QUOTA : CombinerEndpointPNP.PNP_SIGN, + timeoutMs, + bypassQuota, + useDEK + ) } else { - concurrentLoadTest(numWorker, blockchainProvider!, contextName as OdisContextName) // tslint:disable-line:no-floating-promises + // tslint:disable-next-line: no-floating-promises + concurrentLoadTest( + numWorker, + blockchainProvider!, + contextName as OdisContextName, + pnpQuotaEndpoint ? CombinerEndpointPNP.PNP_QUOTA : CombinerEndpointPNP.PNP_SIGN, + timeoutMs, + bypassQuota, + useDEK + ) } } + // tslint:disable-next-line: no-unused-expression yargs .scriptName('ODIS-load-test') @@ -52,8 +80,38 @@ yargs }) .option('isSerial', { type: 'boolean', - description: 'run test workers in series.', + description: 'Run test workers in series.', + default: false, + }) + .option('timeoutMs', { + type: 'number', + description: 'Timout in ms.', + default: 10000, + }) + .option('bypassQuota', { + type: 'boolean', + description: 'Bypass Signer quota check.', + default: false, + }) + .option('useDEK', { + type: 'boolean', + description: 'Use Data Encryption Key (DEK) to authenticate.', + default: false, + }) + .option('pnpQuotaEndpoint', { + type: 'boolean', + description: + 'Use this flag to load test PNP_QUOTA endpoint instead of PNP_SIGN endpoint.', default: false, }), - (args) => runLoadTest(args.contextName!, args.numWorkers!, args.isSerial) + (args) => + runLoadTest( + args.contextName!, + args.numWorkers!, + args.isSerial, + args.pnpQuotaEndpoint, + args.timeoutMs, + args.bypassQuota, + args.useDEK + ) ).argv diff --git a/packages/phone-number-privacy/monitor/src/test.ts b/packages/phone-number-privacy/monitor/src/test.ts index 33cdebd8662..af9fa42cebc 100644 --- a/packages/phone-number-privacy/monitor/src/test.ts +++ b/packages/phone-number-privacy/monitor/src/test.ts @@ -13,14 +13,18 @@ export async function testPNPSignQuery( blockchainProvider: string, contextName: OdisContextName, endpoint: CombinerEndpointPNP.PNP_SIGN, - timeoutMs?: number + timeoutMs?: number, + bypassQuota?: boolean, + useDEK?: boolean ) { logger.info(`Performing test PNP query for ${endpoint}`) try { const odisResponse: IdentifierHashDetails = await queryOdisForSalt( blockchainProvider, contextName, - timeoutMs + timeoutMs, + bypassQuota, + useDEK ) logger.info({ odisResponse }, 'ODIS salt request successful. System is healthy.') } catch (err) { @@ -82,13 +86,22 @@ export async function serialLoadTest( endpoint: | CombinerEndpointPNP.PNP_QUOTA | CombinerEndpointPNP.PNP_SIGN = CombinerEndpointPNP.PNP_SIGN, - timeoutMs?: number + timeoutMs?: number, + bypassQuota?: boolean, + useDEK?: boolean ) { for (let i = 0; i < n; i++) { try { switch (endpoint) { case CombinerEndpointPNP.PNP_SIGN: - await testPNPSignQuery(blockchainProvider, contextName, endpoint, timeoutMs) + await testPNPSignQuery( + blockchainProvider, + contextName, + endpoint, + timeoutMs, + bypassQuota, + useDEK + ) break case CombinerEndpointPNP.PNP_QUOTA: await testPNPQuotaQuery(blockchainProvider, contextName, timeoutMs) @@ -104,7 +117,9 @@ export async function concurrentLoadTest( endpoint: | CombinerEndpointPNP.PNP_QUOTA | CombinerEndpointPNP.PNP_SIGN = CombinerEndpointPNP.PNP_SIGN, - timeoutMs?: number + timeoutMs?: number, + bypassQuota?: boolean, + useDEK?: boolean ) { while (true) { const reqs = [] @@ -117,7 +132,14 @@ export async function concurrentLoadTest( try { switch (endpoint) { case CombinerEndpointPNP.PNP_SIGN: - await testPNPSignQuery(blockchainProvider, contextName, endpoint, timeoutMs) + await testPNPSignQuery( + blockchainProvider, + contextName, + endpoint, + timeoutMs, + bypassQuota, + useDEK + ) break case CombinerEndpointPNP.PNP_QUOTA: await testPNPQuotaQuery(blockchainProvider, contextName, timeoutMs) diff --git a/packages/phone-number-privacy/signer/src/pnp/endpoints/sign/action.ts b/packages/phone-number-privacy/signer/src/pnp/endpoints/sign/action.ts index 0c81706e33e..dd46abfbe9c 100644 --- a/packages/phone-number-privacy/signer/src/pnp/endpoints/sign/action.ts +++ b/packages/phone-number-privacy/signer/src/pnp/endpoints/sign/action.ts @@ -11,7 +11,7 @@ import { computeBlindedSignature } from '../../../common/bls/bls-cryptography-cl import { REQUESTS_TABLE } from '../../../common/database/models/request' import { getRequestExists } from '../../../common/database/wrappers/request' import { DefaultKeyName, Key, KeyProvider } from '../../../common/key-management/key-provider-base' -import { Counters } from '../../../common/metrics' +import { Counters, Histograms, meter } from '../../../common/metrics' import { SignerConfig } from '../../../config' import { PnpQuotaService } from '../../services/quota' import { PnpSession } from '../../session' @@ -160,10 +160,14 @@ export class PnpSignAction implements Action { try { span.addEvent('Signing request') - const signature = await this.sign( - session.request.body.blindedQueryPhoneNumber, - key, - session + const signature = await meter( + this.sign.bind(this), + [session.request.body.blindedQueryPhoneNumber, key, session], + (err: any) => { + throw err + }, + Histograms.getBlindedSigInstrumentation, + ['sign'] ) span.addEvent('Signed request') span.setStatus({ diff --git a/packages/phone-number-privacy/signer/src/pnp/endpoints/sign/io.ts b/packages/phone-number-privacy/signer/src/pnp/endpoints/sign/io.ts index eef5ba243b4..ef77accd2b3 100644 --- a/packages/phone-number-privacy/signer/src/pnp/endpoints/sign/io.ts +++ b/packages/phone-number-privacy/signer/src/pnp/endpoints/sign/io.ts @@ -1,6 +1,7 @@ import { ContractKit } from '@celo/contractkit' import { authenticateUser, + AuthenticationMethod, ErrorType, hasValidAccountParam, hasValidBlindedPhoneNumberParam, @@ -111,6 +112,12 @@ export class PnpSignIO extends IO { warnings: ErrorType[], logger: Logger ): Promise { + const authMethod = request.body.authenticationMethod + + if (authMethod && authMethod === AuthenticationMethod.WALLET_KEY) { + Counters.requestsWithWalletAddress.inc() + } + return authenticateUser( request, this.kit, diff --git a/packages/sdk/identity/package.json b/packages/sdk/identity/package.json index f2698756cc4..42d49517e3e 100644 --- a/packages/sdk/identity/package.json +++ b/packages/sdk/identity/package.json @@ -32,7 +32,7 @@ "@types/debug": "^4.1.5", "bignumber.js": "^9.0.0", "blind-threshold-bls": "https://github.com/celo-org/blind-threshold-bls-wasm#e1e2f8a", - "cross-fetch": "3.0.4", + "cross-fetch": "3.0.6", "debug": "^4.1.1", "elliptic": "^6.5.4", "ethereum-cryptography": "1.2.0", diff --git a/packages/sdk/network-utils/package.json b/packages/sdk/network-utils/package.json index e35f022125a..31923ceae4d 100644 --- a/packages/sdk/network-utils/package.json +++ b/packages/sdk/network-utils/package.json @@ -23,7 +23,7 @@ }, "dependencies": { "@types/debug": "^4.1.5", - "cross-fetch": "3.0.4", + "cross-fetch": "3.0.6", "debug": "^4.1.1" }, "devDependencies": { diff --git a/scripts/deploy-sdks.ts b/scripts/deploy-sdks.ts index bbb219380b7..06ea10948e1 100644 --- a/scripts/deploy-sdks.ts +++ b/scripts/deploy-sdks.ts @@ -33,10 +33,10 @@ */ import * as child_process from 'child_process' -import * as colors from 'colors' +import colors from 'colors' import * as fs from 'fs' import * as path from 'path' -import * as prompt from 'prompt' +import prompt from 'prompt' import * as semver from 'semver' const VERSIONS = ['major', 'minor', 'patch'] @@ -121,7 +121,7 @@ type Answers = { // `package.json` dependencies. const sdkNames = sdkJsons.map(({ name }) => name) - let newVersion: string + let newVersion: string = '' // Here we update the sdk `package.json` objects with updated // versions and dependencies. sdkJsons.forEach((json, index) => { @@ -200,12 +200,16 @@ type Answers = { successfulPackages.push(packageJson.name) // remove license files from sdks folders child_process.execSync('rm LICENSE', { cwd: packageFolderPath, stdio: 'inherit' }) - } catch (e) { + } catch (e: unknown) { const errorPrompt = [ { name: 'retry', description: colors.red( - `${packageJson.name} failed to publish. (Did you run 'yarn deploy-sdks'? must be run as 'npm run deploy-sdks') Error message: ${e.message} Retry? Y/N` + `${ + packageJson.name + } failed to publish. (Did you run 'yarn deploy-sdks'? must be run as 'npm run deploy-sdks') Error message: ${ + (e as Error).message + } Retry? Y/N` ), }, ] diff --git a/yarn.lock b/yarn.lock index d18e8fa1d40..ff6d71927ab 100644 --- a/yarn.lock +++ b/yarn.lock @@ -760,6 +760,11 @@ resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.21.4.tgz#94003fdfc520bbe2875d4ae557b43ddb6d880f17" integrity sha512-alVJj7k7zIxqBZ7BTRhz0IqJFxW1VJbm6N8JbcYhQ186df9ZBPbZBmWSqAMXwHGsCJdYks7z/voa3ibiS5bCIw== +"@babel/parser@^7.20.15": + version "7.22.7" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.22.7.tgz#df8cf085ce92ddbdbf668a7f186ce848c9036cae" + integrity sha512-7NF8pOkHP5o2vpmGgNGcfAeCvOYhGLyA3Z4eBQkT1RJlWu47n63bCs93QfJ2hIAFCil7L5P2IWhs1oToVgrL0Q== + "@babel/plugin-syntax-async-generators@^7.8.4": version "7.8.4" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz#a983fb1aeb2ec3f6ed042a210f640e90e786fe0d" @@ -923,7 +928,7 @@ resolved "https://registry.yarnpkg.com/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz#75a2e8b51cb758a7553d6804a5932d7aace75c39" integrity sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw== -"@celo/base@1.5.2", "@celo/base@^1.2.0": +"@celo/base@1.5.2": version "1.5.2" resolved "https://registry.yarnpkg.com/@celo/base/-/base-1.5.2.tgz#168ab5e4e30b374079d8d139fafc52ca6bfd4100" integrity sha512-KGf6Dl9E6D01vAfkgkjL2sG+zqAjspAogILIpWstljWdG5ifyA75jihrnDEHaMCoQS0KxHvTdP1XYS/GS6BEyQ== @@ -948,7 +953,7 @@ debug "^4.1.1" utf8 "3.0.0" -"@celo/contractkit@1.5.2", "@celo/contractkit@^1.2.0": +"@celo/contractkit@1.5.2": version "1.5.2" resolved "https://registry.yarnpkg.com/@celo/contractkit/-/contractkit-1.5.2.tgz#be15d570f3044a190dabb6bbe53d5081c78ea605" integrity sha512-b0r5TlfYDEscxze1Ai2jyJayiVElA9jvEehMD6aOSNtVhfP8oirjFIIffRe0Wzw1MSDGkw+q1c4m0Yw5sEOlvA== @@ -966,23 +971,6 @@ semver "^7.3.5" web3 "1.3.6" -"@celo/identity-prev@npm:@celo/identity@1.2.0": - version "1.2.0" - resolved "https://registry.yarnpkg.com/@celo/identity/-/identity-1.2.0.tgz#822ce8f2237a8498fad6910a2d2707f6b67a6999" - integrity sha512-vpipC8qyEueIKKY0skPXaNwUDIhodGPv9wfFZ5mywzTIz46dbT0VmNSYkvOnoXlqvAjrwdzgvETbVMmpHpj3Xw== - dependencies: - "@celo/base" "^1.2.0" - "@celo/contractkit" "^1.2.0" - "@celo/utils" "^1.2.0" - "@types/debug" "^4.1.5" - bignumber.js "^9.0.0" - blind-threshold-bls "https://github.com/celo-org/blind-threshold-bls-wasm#e1e2f8a" - cross-fetch "3.0.4" - debug "^4.1.1" - elliptic "^6.5.4" - fp-ts "2.1.1" - io-ts "2.0.1" - "@celo/phone-number-privacy-common@1.0.39": version "1.0.39" resolved "https://registry.yarnpkg.com/@celo/phone-number-privacy-common/-/phone-number-privacy-common-1.0.39.tgz#3c9568f70378d24d11afcc4306024c5cf4f8efe9" @@ -1014,7 +1002,7 @@ lodash "~4.17.19" typechain "2.0.0" -"@celo/utils@1.5.2", "@celo/utils@^1.2.0": +"@celo/utils@1.5.2": version "1.5.2" resolved "https://registry.yarnpkg.com/@celo/utils/-/utils-1.5.2.tgz#ddb7f3b50c801225ab41d2355fbe010976329099" integrity sha512-JyKjuVMbdkyFOb1TpQw6zqamPQWYg7I9hOnva3MeIcQ3ZrJIaNHx0/I+JXFjuu3YYBc1mG8nXp2uPJJTGrwzCQ== @@ -1691,6 +1679,13 @@ "@ethersproject/properties" "^5.7.0" "@ethersproject/strings" "^5.7.0" +"@fastify/busboy@^1.2.1": + version "1.2.1" + resolved "https://registry.yarnpkg.com/@fastify/busboy/-/busboy-1.2.1.tgz#9c6db24a55f8b803b5222753b24fe3aea2ba9ca3" + integrity sha512-7PQA7EH43S0CxcOa9OeAnaeA0oQ+e/DHNPZwSQM9CQHW76jle5+OvLdibRp/Aafs9KXbLhxyjOTkRjWUbQEd3Q== + dependencies: + text-decoding "^1.0.0" + "@firebase/app-types@0.6.3": version "0.6.3" resolved "https://registry.yarnpkg.com/@firebase/app-types/-/app-types-0.6.3.tgz#3f10514786aad846d74cd63cb693556309918f4b" @@ -1701,11 +1696,21 @@ resolved "https://registry.yarnpkg.com/@firebase/app-types/-/app-types-0.7.0.tgz#c9e16d1b8bed1a991840b8d2a725fb58d0b5899f" integrity sha512-6fbHQwDv2jp/v6bXhBw2eSRbNBpxHcd1NBF864UksSMVIqIyri9qpJB1Mn6sGZE+bnDsSQBC5j2TbMxYsJQkQg== +"@firebase/app-types@0.9.0": + version "0.9.0" + resolved "https://registry.yarnpkg.com/@firebase/app-types/-/app-types-0.9.0.tgz#35b5c568341e9e263b29b3d2ba0e9cfc9ec7f01e" + integrity sha512-AeweANOIo0Mb8GiYm3xhTEBVCmPwTYAu9Hcd2qSkLuga/6+j9b1Jskl5bpiSQWy9eJ/j5pavxj6eYogmnuzm+Q== + "@firebase/auth-interop-types@0.1.6": version "0.1.6" resolved "https://registry.yarnpkg.com/@firebase/auth-interop-types/-/auth-interop-types-0.1.6.tgz#5ce13fc1c527ad36f1bb1322c4492680a6cf4964" integrity sha512-etIi92fW3CctsmR9e3sYM3Uqnoq861M0Id9mdOPF6PWIg38BXL5k4upCNBggGUpLIS0H1grMOvy/wn1xymwe2g== +"@firebase/auth-interop-types@0.2.1": + version "0.2.1" + resolved "https://registry.yarnpkg.com/@firebase/auth-interop-types/-/auth-interop-types-0.2.1.tgz#78884f24fa539e34a06c03612c75f222fcc33742" + integrity sha512-VOaGzKp65MY6P5FI84TfYKBXEPi6LmOCSMMzys6o2BN2LOsqy7pCuZCup7NYnfbk5OkkQKzvIfHOzTm0UDpkyg== + "@firebase/component@0.5.13": version "0.5.13" resolved "https://registry.yarnpkg.com/@firebase/component/-/component-0.5.13.tgz#65a382e83bddd109380c9aa1f280791b1b4567c4" @@ -1714,6 +1719,14 @@ "@firebase/util" "1.5.2" tslib "^2.1.0" +"@firebase/component@0.6.4": + version "0.6.4" + resolved "https://registry.yarnpkg.com/@firebase/component/-/component-0.6.4.tgz#8981a6818bd730a7554aa5e0516ffc9b1ae3f33d" + integrity sha512-rLMyrXuO9jcAUCaQXCMjCMUsWrba5fzHlNK24xz5j2W6A/SRmK8mZJ/hn7V0fViLbxC0lPMtrK1eYzk6Fg03jA== + dependencies: + "@firebase/util" "1.9.3" + tslib "^2.1.0" + "@firebase/database-compat@^0.1.1": version "0.1.8" resolved "https://registry.yarnpkg.com/@firebase/database-compat/-/database-compat-0.1.8.tgz#ab627f2bdbe94367f515d5bded880c86886bbd28" @@ -1726,6 +1739,26 @@ "@firebase/util" "1.5.2" tslib "^2.1.0" +"@firebase/database-compat@^0.3.4": + version "0.3.4" + resolved "https://registry.yarnpkg.com/@firebase/database-compat/-/database-compat-0.3.4.tgz#4e57932f7a5ba761cd5ac946ab6b6ab3f660522c" + integrity sha512-kuAW+l+sLMUKBThnvxvUZ+Q1ZrF/vFJ58iUY9kAcbX48U03nVzIF6Tmkf0p3WVQwMqiXguSgtOPIB6ZCeF+5Gg== + dependencies: + "@firebase/component" "0.6.4" + "@firebase/database" "0.14.4" + "@firebase/database-types" "0.10.4" + "@firebase/logger" "0.4.0" + "@firebase/util" "1.9.3" + tslib "^2.1.0" + +"@firebase/database-types@0.10.4", "@firebase/database-types@^0.10.4": + version "0.10.4" + resolved "https://registry.yarnpkg.com/@firebase/database-types/-/database-types-0.10.4.tgz#47ba81113512dab637abace61cfb65f63d645ca7" + integrity sha512-dPySn0vJ/89ZeBac70T+2tWWPiJXWbmRygYv0smT5TfE3hDrQ09eKMF3Y+vMlTdrMWq7mUdYW5REWPSGH4kAZQ== + dependencies: + "@firebase/app-types" "0.9.0" + "@firebase/util" "1.9.3" + "@firebase/database-types@0.9.7": version "0.9.7" resolved "https://registry.yarnpkg.com/@firebase/database-types/-/database-types-0.9.7.tgz#c5ee0ea9bb2703a13c1c47fe880fc577d5ce7f33" @@ -1753,6 +1786,18 @@ faye-websocket "0.11.4" tslib "^2.1.0" +"@firebase/database@0.14.4": + version "0.14.4" + resolved "https://registry.yarnpkg.com/@firebase/database/-/database-0.14.4.tgz#9e7435a16a540ddfdeb5d99d45618e6ede179aa6" + integrity sha512-+Ea/IKGwh42jwdjCyzTmeZeLM3oy1h0mFPsTy6OqCWzcu/KFqRAr5Tt1HRCOBlNOdbh84JPZC47WLU18n2VbxQ== + dependencies: + "@firebase/auth-interop-types" "0.2.1" + "@firebase/component" "0.6.4" + "@firebase/logger" "0.4.0" + "@firebase/util" "1.9.3" + faye-websocket "0.11.4" + tslib "^2.1.0" + "@firebase/logger@0.3.2": version "0.3.2" resolved "https://registry.yarnpkg.com/@firebase/logger/-/logger-0.3.2.tgz#5046ffa8295c577846d54b6ca95645a03809800e" @@ -1760,6 +1805,13 @@ dependencies: tslib "^2.1.0" +"@firebase/logger@0.4.0": + version "0.4.0" + resolved "https://registry.yarnpkg.com/@firebase/logger/-/logger-0.4.0.tgz#15ecc03c452525f9d47318ad9491b81d1810f113" + integrity sha512-eRKSeykumZ5+cJPdxxJRgAC3G5NknY2GwEbKfymdnXtnT0Ucm4pspfR6GT4MUQEDuJwRVbVcSx85kgJulMoFFA== + dependencies: + tslib "^2.1.0" + "@firebase/util@1.5.2": version "1.5.2" resolved "https://registry.yarnpkg.com/@firebase/util/-/util-1.5.2.tgz#bdd2bc11c956a8a6a0fa25fbd752a13e033558bc" @@ -1767,6 +1819,13 @@ dependencies: tslib "^2.1.0" +"@firebase/util@1.9.3": + version "1.9.3" + resolved "https://registry.yarnpkg.com/@firebase/util/-/util-1.9.3.tgz#45458dd5cd02d90e55c656e84adf6f3decf4b7ed" + integrity sha512-DY02CRhOZwpzO36fHpuVysz6JZrscPiBXD0fXp6qSrL9oNOx5KWICKdR95C0lSITzxp0TZosVyHqzatE8JbcjA== + dependencies: + tslib "^2.1.0" + "@ganache/console.log@0.2.0": version "0.2.0" resolved "https://registry.yarnpkg.com/@ganache/console.log/-/console.log-0.2.0.tgz#32ea0df806ed735d61bd0537d7b7fc350e511479" @@ -1826,6 +1885,16 @@ google-gax "^2.24.1" protobufjs "^6.8.6" +"@google-cloud/firestore@^6.6.0": + version "6.7.0" + resolved "https://registry.yarnpkg.com/@google-cloud/firestore/-/firestore-6.7.0.tgz#9b6105442f972307ffc252b372ba7e67e38243fd" + integrity sha512-bkH2jb5KkQSUa+NAvpip9HQ+rpYhi77IaqHovWuN07adVmvNXX08gPpvPWEzoXYa/wDjEVI7LiAtCWkJJEYTNg== + dependencies: + fast-deep-equal "^3.1.1" + functional-red-black-tree "^1.0.1" + google-gax "^3.5.7" + protobufjs "^7.0.0" + "@google-cloud/kms@~2.9.0": version "2.9.0" resolved "https://registry.yarnpkg.com/@google-cloud/kms/-/kms-2.9.0.tgz#3f7e51a3e30795a69ded4ea4f96609a59b503001" @@ -1859,6 +1928,14 @@ arrify "^2.0.0" extend "^3.0.2" +"@google-cloud/paginator@^4.0.0": + version "4.0.1" + resolved "https://registry.yarnpkg.com/@google-cloud/paginator/-/paginator-4.0.1.tgz#5fb8793d4f84d18c50a6f2fad3dadab8d2c533ef" + integrity sha512-6G1ui6bWhNyHjmbYwavdN7mpVPRBtyDg/bfqBTAlwr413On2TnFNfDxc9UhTJctkgoCDgQXEKiRPLPR9USlkbQ== + dependencies: + arrify "^2.0.0" + extend "^3.0.2" + "@google-cloud/precise-date@^0.1.0": version "0.1.0" resolved "https://registry.yarnpkg.com/@google-cloud/precise-date/-/precise-date-0.1.0.tgz#02ccda04b4413fa64f098fc93db51e95af5c855a" @@ -1869,6 +1946,11 @@ resolved "https://registry.yarnpkg.com/@google-cloud/precise-date/-/precise-date-2.0.4.tgz#930b0cbf557ef3a4bfeeb121cfc6da341212a2cb" integrity sha512-nOB+mZdevI/1Si0QAfxWfzzIqFdc7wrO+DYePFvgbOoMtvX+XfFTINNt7e9Zg66AbDbWCPRnikU+6f5LTm9Wyg== +"@google-cloud/precise-date@^3.0.0": + version "3.0.1" + resolved "https://registry.yarnpkg.com/@google-cloud/precise-date/-/precise-date-3.0.1.tgz#1e6659a14af662442037b8f4d20dbc82bf1a78bd" + integrity sha512-crK2rgNFfvLoSgcKJY7ZBOLW91IimVNmPfi1CL+kMTf78pTJYd29XqEVedAeBu4DwCJc0EDIp1MpctLgoPq+Uw== + "@google-cloud/projectify@^0.3.0", "@google-cloud/projectify@^0.3.3": version "0.3.3" resolved "https://registry.yarnpkg.com/@google-cloud/projectify/-/projectify-0.3.3.tgz#bde9103d50b20a3ea3337df8c6783a766e70d41d" @@ -1879,6 +1961,11 @@ resolved "https://registry.yarnpkg.com/@google-cloud/projectify/-/projectify-2.1.1.tgz#ae6af4fee02d78d044ae434699a630f8df0084ef" integrity sha512-+rssMZHnlh0twl122gXY4/aCrk0G1acBqkHFfYddtsqpYXGxA29nj9V5V9SfC+GyOG00l650f6lG9KL+EpFEWQ== +"@google-cloud/projectify@^3.0.0": + version "3.0.0" + resolved "https://registry.yarnpkg.com/@google-cloud/projectify/-/projectify-3.0.0.tgz#302b25f55f674854dce65c2532d98919b118a408" + integrity sha512-HRkZsNmjScY6Li8/kb70wjGlDDyLkVk3KvoEo9uIoxSjYLJasGiCch9+PqRVDOCGUFvEIqyogl+BeqILL4OJHA== + "@google-cloud/promisify@^0.4.0": version "0.4.0" resolved "https://registry.yarnpkg.com/@google-cloud/promisify/-/promisify-0.4.0.tgz#4fbfcf4d85bb6a2e4ccf05aa63d2b10d6c9aad9b" @@ -1889,6 +1976,11 @@ resolved "https://registry.yarnpkg.com/@google-cloud/promisify/-/promisify-2.0.4.tgz#9d8705ecb2baa41b6b2673f3a8e9b7b7e1abc52a" integrity sha512-j8yRSSqswWi1QqUGKVEKOG03Q7qOoZP6/h2zN2YO+F5h2+DHU0bSrHCK9Y7lo2DI9fBd8qGAw795sf+3Jva4yA== +"@google-cloud/promisify@^3.0.0": + version "3.0.1" + resolved "https://registry.yarnpkg.com/@google-cloud/promisify/-/promisify-3.0.1.tgz#8d724fb280f47d1ff99953aee0c1669b25238c2e" + integrity sha512-z1CjRjtQyBOYL+5Qr9DdYIfrdLBe746jRTYfaYU6MeXkqp7UfYs/jX16lFFVzZ7PGEJvqZNqYUEtb1mvDww4pA== + "@google-cloud/pubsub@^0.28.1": version "0.28.1" resolved "https://registry.yarnpkg.com/@google-cloud/pubsub/-/pubsub-0.28.1.tgz#8d0605e155f5a8c36f7b51363c1e139f534b5fd8" @@ -1934,6 +2026,28 @@ lodash.snakecase "^4.1.1" p-defer "^3.0.0" +"@google-cloud/pubsub@^3.0.1": + version "3.7.3" + resolved "https://registry.yarnpkg.com/@google-cloud/pubsub/-/pubsub-3.7.3.tgz#4ec354fab0e6492654b4365024e0b15def23a08b" + integrity sha512-ZRDC4g7tpIJ8fkAp4MiU+tDfousM/q6pXK6ytFn0cbYEdNQuWOf4wqopNYMOUJ+AIjaTbgmNw77dStOKTc9Acg== + dependencies: + "@google-cloud/paginator" "^4.0.0" + "@google-cloud/precise-date" "^3.0.0" + "@google-cloud/projectify" "^3.0.0" + "@google-cloud/promisify" "^2.0.0" + "@opentelemetry/api" "^1.0.0" + "@opentelemetry/semantic-conventions" "~1.3.0" + "@types/duplexify" "^3.6.0" + "@types/long" "^4.0.0" + arrify "^2.0.0" + extend "^3.0.2" + google-auth-library "^8.0.2" + google-gax "^3.6.1" + heap-js "^2.2.0" + is-stream-ended "^0.1.4" + lodash.snakecase "^4.1.1" + p-defer "^3.0.0" + "@google-cloud/secret-manager@3.0.0": version "3.0.0" resolved "https://registry.yarnpkg.com/@google-cloud/secret-manager/-/secret-manager-3.0.0.tgz#31842287bd0eee380210488ae40cae3732b2b32f" @@ -1997,6 +2111,30 @@ uuid "^8.0.0" xdg-basedir "^4.0.0" +"@google-cloud/storage@^6.9.5": + version "6.12.0" + resolved "https://registry.yarnpkg.com/@google-cloud/storage/-/storage-6.12.0.tgz#a5d3093cc075252dca5bd19a3cfda406ad3a9de1" + integrity sha512-78nNAY7iiZ4O/BouWMWTD/oSF2YtYgYB3GZirn0To6eBOugjXVoK+GXgUXOl+HlqbAOyHxAVXOlsj3snfbQ1dw== + dependencies: + "@google-cloud/paginator" "^3.0.7" + "@google-cloud/projectify" "^3.0.0" + "@google-cloud/promisify" "^3.0.0" + abort-controller "^3.0.0" + async-retry "^1.3.3" + compressible "^2.0.12" + duplexify "^4.0.0" + ent "^2.2.0" + extend "^3.0.2" + fast-xml-parser "^4.2.2" + gaxios "^5.0.0" + google-auth-library "^8.0.1" + mime "^3.0.0" + mime-types "^2.0.8" + p-limit "^3.0.1" + retry-request "^5.0.0" + teeny-request "^8.0.0" + uuid "^8.0.0" + "@graphql-tools/batch-execute@8.5.1": version "8.5.1" resolved "https://registry.yarnpkg.com/@graphql-tools/batch-execute/-/batch-execute-8.5.1.tgz#fa3321d58c64041650be44250b1ebc3aab0ba7a9" @@ -2100,6 +2238,14 @@ "@grpc/proto-loader" "^0.7.0" "@types/node" ">=12.12.47" +"@grpc/grpc-js@~1.8.0": + version "1.8.21" + resolved "https://registry.yarnpkg.com/@grpc/grpc-js/-/grpc-js-1.8.21.tgz#d282b122c71227859bf6c5866f4c40f4a2696513" + integrity sha512-KeyQeZpxeEBSqFVTi3q2K7PiPXmgBfECc4updA1ejCLjYmoAlvvM3ZMp5ztTDUCUQmoY3CpDxvchjO1+rFkoHg== + dependencies: + "@grpc/proto-loader" "^0.7.0" + "@types/node" ">=12.12.47" + "@grpc/proto-loader@0.6.9": version "0.6.9" resolved "https://registry.yarnpkg.com/@grpc/proto-loader/-/proto-loader-0.6.9.tgz#4014eef366da733f8e04a9ddd7376fe8a58547b7" @@ -2146,6 +2292,18 @@ resolved "https://registry.yarnpkg.com/@hutson/parse-repository-url/-/parse-repository-url-3.0.2.tgz#98c23c950a3d9b6c8f0daed06da6c3af06981340" integrity sha512-H9XAx3hc0BQHY6l+IFSWHDySypcXsvsuLhgYLUGywmJ5pswRVQJUHpOsobnLYp2ZUaUlKiKDrgWWhosOwAEM8Q== +"@isaacs/cliui@^8.0.2": + version "8.0.2" + resolved "https://registry.yarnpkg.com/@isaacs/cliui/-/cliui-8.0.2.tgz#b37667b7bc181c168782259bab42474fbf52b550" + integrity sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA== + dependencies: + string-width "^5.1.2" + string-width-cjs "npm:string-width@^4.2.0" + strip-ansi "^7.0.1" + strip-ansi-cjs "npm:strip-ansi@^6.0.1" + wrap-ansi "^8.1.0" + wrap-ansi-cjs "npm:wrap-ansi@^7.0.0" + "@isaacs/string-locale-compare@^1.1.0": version "1.1.0" resolved "https://registry.yarnpkg.com/@isaacs/string-locale-compare/-/string-locale-compare-1.1.0.tgz#291c227e93fd407a96ecd59879a35809120e432b" @@ -2419,6 +2577,13 @@ resolved "https://registry.yarnpkg.com/@jsdevtools/ono/-/ono-7.1.3.tgz#9df03bbd7c696a5c58885c34aa06da41c8543796" integrity sha512-4JQNk+3mVzK3xh2rqd6RB4J46qUR19azEHBneZyTZM+c456qOrbbM/5xcR8huNCCcbVt7+UmizG6GuUvPvKUYg== +"@jsdoc/salty@^0.2.1": + version "0.2.5" + resolved "https://registry.yarnpkg.com/@jsdoc/salty/-/salty-0.2.5.tgz#1b2fa5bb8c66485b536d86eee877c263d322f692" + integrity sha512-TfRP53RqunNe2HBobVBJ0VLhK1HbfvBYeTC1ahnN64PWvyYyGebmMiPkuwvD9fpw2ZbkoPb8Q7mwy0aR8Z9rvw== + dependencies: + lodash "^4.17.21" + "@ledgerhq/cryptoassets@^5.53.0": version "5.53.0" resolved "https://registry.yarnpkg.com/@ledgerhq/cryptoassets/-/cryptoassets-5.53.0.tgz#11dcc93211960c6fd6620392e4dd91896aaabe58" @@ -3377,6 +3542,13 @@ "@gar/promisify" "^1.1.3" semver "^7.3.5" +"@npmcli/fs@^3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@npmcli/fs/-/fs-3.1.0.tgz#233d43a25a91d68c3a863ba0da6a3f00924a173e" + integrity sha512-7kZUAaLscfgbwBQRbvdMYaZOWyMEcPTH/tJjnyAWJ/dvvs9Ef+CERx/qJb9GExJpl1qipaDGn7KqHnFGGixd0w== + dependencies: + semver "^7.3.5" + "@npmcli/git@^3.0.0": version "3.0.2" resolved "https://registry.yarnpkg.com/@npmcli/git/-/git-3.0.2.tgz#5c5de6b4d70474cf2d09af149ce42e4e1dacb931" @@ -3918,6 +4090,11 @@ resolved "https://registry.yarnpkg.com/@opentelemetry/semantic-conventions/-/semantic-conventions-1.12.0.tgz#19c959bdb900986e74939d4227e757aa16936b91" integrity sha512-hO+bdeGOlJwqowUBoZF5LyP3ORUFOP1G0GRv8N45W/cztXbT2ZEXaAzfokRS9Xc9FWmYrDj32mF6SzH6wuoIyA== +"@opentelemetry/semantic-conventions@~1.3.0": + version "1.3.1" + resolved "https://registry.yarnpkg.com/@opentelemetry/semantic-conventions/-/semantic-conventions-1.3.1.tgz#ba07b864a3c955f061aa30ea3ef7f4ae4449794a" + integrity sha512-wU5J8rUoo32oSef/rFpOT1HIjLjAv3qIDHkw1QIhODV3OpAVHi5oVzlouozg9obUmZKtbZ0qUe/m7FP0y0yBzA== + "@openzeppelin/upgrades@^2.8.0": version "2.8.0" resolved "https://registry.yarnpkg.com/@openzeppelin/upgrades/-/upgrades-2.8.0.tgz#8086ab9c99d9f8dac7205030b0f9e7e4a280c4a3" @@ -3952,6 +4129,32 @@ node-addon-api "^3.2.1" node-gyp-build "^4.3.0" +"@pkgjs/parseargs@^0.11.0": + version "0.11.0" + resolved "https://registry.yarnpkg.com/@pkgjs/parseargs/-/parseargs-0.11.0.tgz#a77ea742fab25775145434eb1d2328cf5013ac33" + integrity sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg== + +"@pnpm/config.env-replace@^1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@pnpm/config.env-replace/-/config.env-replace-1.1.0.tgz#ab29da53df41e8948a00f2433f085f54de8b3a4c" + integrity sha512-htyl8TWnKL7K/ESFa1oW2UB5lVDxuF5DpM7tBi6Hu2LNL3mWkIzNLG6N4zoCUP1lCKNxWy/3iu8mS8MvToGd6w== + +"@pnpm/network.ca-file@^1.0.1": + version "1.0.2" + resolved "https://registry.yarnpkg.com/@pnpm/network.ca-file/-/network.ca-file-1.0.2.tgz#2ab05e09c1af0cdf2fcf5035bea1484e222f7983" + integrity sha512-YcPQ8a0jwYU9bTdJDpXjMi7Brhkr1mXsXrUJvjqM2mQDgkRiz8jFaQGOdaLxgjtUfQgZhKy/O3cG/YwmgKaxLA== + dependencies: + graceful-fs "4.2.10" + +"@pnpm/npm-conf@^2.1.0": + version "2.2.2" + resolved "https://registry.yarnpkg.com/@pnpm/npm-conf/-/npm-conf-2.2.2.tgz#0058baf1c26cbb63a828f0193795401684ac86f0" + integrity sha512-UA91GwWPhFExt3IizW6bOeY/pQ0BkuNwKjk9iQW9KqxluGCrg4VenZ0/L+2Y0+ZOtme72EVvg6v0zo3AMQRCeA== + dependencies: + "@pnpm/config.env-replace" "^1.1.0" + "@pnpm/network.ca-file" "^1.0.1" + config-chain "^1.1.11" + "@protobufjs/aspromise@^1.1.1", "@protobufjs/aspromise@^1.1.2": version "1.1.2" resolved "https://registry.yarnpkg.com/@protobufjs/aspromise/-/aspromise-1.1.2.tgz#9b8b0cc663d669a7d8f6f5d0893a14d348f30fbf" @@ -4229,6 +4432,11 @@ resolved "https://registry.yarnpkg.com/@tootallnate/once/-/once-2.0.0.tgz#f544a148d3ab35801c1f633a7441fd87c2e484bf" integrity sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A== +"@tootallnate/quickjs-emscripten@^0.23.0": + version "0.23.0" + resolved "https://registry.yarnpkg.com/@tootallnate/quickjs-emscripten/-/quickjs-emscripten-0.23.0.tgz#db4ecfd499a9765ab24002c3b696d02e6d32a12c" + integrity sha512-C5Mc6rdnsaJDjO3UpGW/CQTHtCKaYlScZTly4JIu97Jxo/odCiH0ITnDXSJPTOrEKk/ycSZ0AOgTmkDtkOsvIA== + "@truffle/abi-utils@^0.3.0", "@truffle/abi-utils@^0.3.9": version "0.3.9" resolved "https://registry.yarnpkg.com/@truffle/abi-utils/-/abi-utils-0.3.9.tgz#c476f5cfe01072b513b3e93fd7bea05cf7bd9d96" @@ -5204,6 +5412,13 @@ dependencies: "@types/node" "*" +"@types/jsonwebtoken@^9.0.0": + version "9.0.2" + resolved "https://registry.yarnpkg.com/@types/jsonwebtoken/-/jsonwebtoken-9.0.2.tgz#9eeb56c76dd555039be2a3972218de5bd3b8d83e" + integrity sha512-drE6uz7QBKq1fYqqoFKTDRdFCPHd5TCub75BM+D+cMx7NU9hUz7SESLfC2fSCXVFMO5Yj8sOWHuGqPgjc+fz0Q== + dependencies: + "@types/node" "*" + "@types/keyv@^3.1.4": version "3.1.4" resolved "https://registry.yarnpkg.com/@types/keyv/-/keyv-3.1.4.tgz#3ccdb1c6751b0c7e52300bcdacd5bcbf8faa75b6" @@ -5235,6 +5450,11 @@ "@types/abstract-leveldown" "*" "@types/node" "*" +"@types/linkify-it@*": + version "3.0.2" + resolved "https://registry.yarnpkg.com/@types/linkify-it/-/linkify-it-3.0.2.tgz#fd2cd2edbaa7eaac7e7f3c1748b52a19143846c9" + integrity sha512-HZQYqbiFVWufzCwexrvh694SOim8z2d+xJl5UNamcvQFejLY/2YUtzXHYi3cHdI7PMlS8ejH2slRAOJQ32aNbA== + "@types/lodash@^4.14.104", "@types/lodash@^4.14.170": version "4.14.194" resolved "https://registry.yarnpkg.com/@types/lodash/-/lodash-4.14.194.tgz#b71eb6f7a0ff11bff59fc987134a093029258a76" @@ -5255,6 +5475,14 @@ resolved "https://registry.yarnpkg.com/@types/lru-cache/-/lru-cache-5.1.1.tgz#c48c2e27b65d2a153b19bfc1a317e30872e01eef" integrity sha512-ssE3Vlrys7sdIzs5LOxCzTVMsU7i9oa/IaW92wF32JFb3CVczqOkru2xspuKczHEbG3nvmPY7IFqVmGGHdNbYw== +"@types/markdown-it@^12.2.3": + version "12.2.3" + resolved "https://registry.yarnpkg.com/@types/markdown-it/-/markdown-it-12.2.3.tgz#0d6f6e5e413f8daaa26522904597be3d6cd93b51" + integrity sha512-GKMHFfv3458yYy+v/N8gjufHO6MSZKCOXpZc5GXIWWy8uldwfmPn98vp81gZ5f9SVw8YYBctgfJ22a2d7AOMeQ== + dependencies: + "@types/linkify-it" "*" + "@types/mdurl" "*" + "@types/mathjs@^4.4.1": version "4.4.5" resolved "https://registry.yarnpkg.com/@types/mathjs/-/mathjs-4.4.5.tgz#b28d46919c68b93bcabf0551729624b302af9b4b" @@ -5262,6 +5490,11 @@ dependencies: decimal.js "^10.0.0" +"@types/mdurl@*": + version "1.0.2" + resolved "https://registry.yarnpkg.com/@types/mdurl/-/mdurl-1.0.2.tgz#e2ce9d83a613bacf284c7be7d491945e39e1f8e9" + integrity sha512-eC4U9MlIcu2q0KQmXszyn5Akca/0jrQmwDRgpAMJai7qBWq4amIQhZyNau4VYGtCeALvW1/NtjzJJ567aZxfKA== + "@types/mime@*": version "3.0.1" resolved "https://registry.yarnpkg.com/@types/mime/-/mime-3.0.1.tgz#5f8f2bca0a5863cb69bc0b0acd88c96cb1d4ae10" @@ -5515,7 +5748,7 @@ resolved "https://registry.yarnpkg.com/@types/revalidator/-/revalidator-0.3.8.tgz#86e0b03b49736000ad42ce6b002725e74c6805ff" integrity sha512-q6KSi3PklLGQ0CesZ/XuLwly4DXXlnJuucYOG9lrBqrP8rKiuPZThav2h2+pFjaheNpnT0qKK3i304QWIePeJw== -"@types/rimraf@3.0.2": +"@types/rimraf@3.0.2", "@types/rimraf@^3.0.2": version "3.0.2" resolved "https://registry.yarnpkg.com/@types/rimraf/-/rimraf-3.0.2.tgz#a63d175b331748e5220ad48c901d7bbf1f44eef8" integrity sha512-F3OznnSLAUxFrCEu/L5PY8+ny8DtcFRjx7fZZ9bycvXRi3KPTRS9HOitGZwvPg0juRhXFWIeKX58cnX5YqLohQ== @@ -5856,7 +6089,7 @@ accepts@^1.3.5, accepts@~1.3.5, accepts@~1.3.8: mime-types "~2.1.34" negotiator "0.6.3" -acorn-jsx@^5.0.0: +acorn-jsx@^5.0.0, 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== @@ -5876,6 +6109,11 @@ acorn@^8.4.1, acorn@^8.7.0: resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.8.2.tgz#1b2f25db02af965399b9776b0c2c391276d37c4a" integrity sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw== +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== + adal-node@^0.2.2: version "0.2.4" resolved "https://registry.yarnpkg.com/adal-node/-/adal-node-0.2.4.tgz#881beed9d493b76a86706ad5c8dc6f60eff04520" @@ -5919,6 +6157,13 @@ agent-base@^4.3.0: dependencies: es6-promisify "^5.0.0" +agent-base@^7.0.1, agent-base@^7.0.2, agent-base@^7.1.0: + version "7.1.0" + resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-7.1.0.tgz#536802b76bc0b34aa50195eb2442276d613e3434" + integrity sha512-o/zjMZRhJxny7OyEF+Op8X+efiELC7k7yOjMzgfzVqOzXqkBkWI79YoTdOtsuWd5BWhAGAuOY/Xa6xpiaWXiNg== + dependencies: + debug "^4.3.4" + agentkeepalive@^4.1.3, agentkeepalive@^4.2.1: version "4.3.0" resolved "https://registry.yarnpkg.com/agentkeepalive/-/agentkeepalive-4.3.0.tgz#bb999ff07412653c1803b3ced35e50729830a255" @@ -5936,7 +6181,7 @@ aggregate-error@^3.0.0: clean-stack "^2.0.0" indent-string "^4.0.0" -ajv-formats@^2.1.1: +ajv-formats@^2.1.0, ajv-formats@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/ajv-formats/-/ajv-formats-2.1.1.tgz#6e669400659eb74973bbf2e33327180a0996b520" integrity sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA== @@ -5953,7 +6198,7 @@ ajv@^6.10.0, ajv@^6.10.2, ajv@^6.12.2, ajv@^6.12.3, ajv@^6.12.5, ajv@^6.12.6, aj json-schema-traverse "^0.4.1" uri-js "^4.2.2" -ajv@^8.0.0, ajv@^8.6.3: +ajv@^8.0.0, ajv@^8.3.0, ajv@^8.6.3: version "8.12.0" resolved "https://registry.yarnpkg.com/ajv/-/ajv-8.12.0.tgz#d1a0527323e22f53562c567c00991577dfbe19d1" integrity sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA== @@ -6009,6 +6254,13 @@ ansi-escapes@^4.2.1, ansi-escapes@^4.3.0: dependencies: type-fest "^0.21.3" +ansi-escapes@^6.2.0: + version "6.2.0" + resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-6.2.0.tgz#8a13ce75286f417f1963487d86ba9f90dccf9947" + integrity sha512-kzRaCqXnpzWs+3z5ABPQiVke+iq0KXkHo8xiWV4RPTi5Yli0l97BEQuhXV1s7+aSU/fu1kUuxgS4MsQ0fRuygw== + dependencies: + type-fest "^3.0.0" + ansi-regex@^2.0.0, ansi-regex@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df" @@ -6029,6 +6281,11 @@ ansi-regex@^5.0.1: resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304" integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ== +ansi-regex@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-6.0.1.tgz#3183e38fae9a65d7cb5e53945cd5897d0260a06a" + integrity sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA== + ansi-styles@^2.2.1: version "2.2.1" resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe" @@ -6053,6 +6310,11 @@ ansi-styles@^5.0.0: resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-5.2.0.tgz#07449690ad45777d1924ac2abb2fc8895dba836b" integrity sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA== +ansi-styles@^6.1.0: + version "6.2.1" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-6.2.1.tgz#0e62320cf99c21afff3b3012192546aacbfb05c5" + integrity sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug== + ansi-wrap@0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/ansi-wrap/-/ansi-wrap-0.1.0.tgz#a82250ddb0015e9a27ca82e82ea603bbfa45efaf" @@ -6501,7 +6763,7 @@ assign-symbols@^1.0.0: resolved "https://registry.yarnpkg.com/assign-symbols/-/assign-symbols-1.0.0.tgz#59667f41fadd4f20ccbc2bb96b8d4f7f78ec0367" integrity sha512-Q+JC7Whu8HhmTdBph/Tq59IoRtoy6KAm5zzPv00WdujX82lbAL8K7WVjne7vdCsAmbF4AYaDOPyO3k0kl8qIrw== -ast-types@^0.13.2: +ast-types@^0.13.2, ast-types@^0.13.4: version "0.13.4" resolved "https://registry.yarnpkg.com/ast-types/-/ast-types-0.13.4.tgz#ee0d77b343263965ecc3fb62da16e7222b2b6782" integrity sha512-x1FCFnFifvYDDzTaLII71vG5uvDwgtmDTEVWAxrgeiR8VjMONcCXJx7E+USjDtHlwFmt9MysbqgF9b9Vjr6w+w== @@ -6530,6 +6792,11 @@ async-limiter@~1.0.0: resolved "https://registry.yarnpkg.com/async-limiter/-/async-limiter-1.0.1.tgz#dd379e94f0db8310b08291f9d64c3209766617fd" integrity sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ== +async-lock@1.3.2: + version "1.3.2" + resolved "https://registry.yarnpkg.com/async-lock/-/async-lock-1.3.2.tgz#56668613f91c1c55432b4db73e65c9ced664e789" + integrity sha512-phnXdS3RP7PPcmP6NWWzWMU0sLTeyvtZCxBPpZdkYE3seGLKSQZs9FrmVO/qwypq98FUtWWUEYxziLkdGk5nnA== + async-mutex@^0.2.6: version "0.2.6" resolved "https://registry.yarnpkg.com/async-mutex/-/async-mutex-0.2.6.tgz#0d7a3deb978bc2b984d5908a2038e1ae2e54ff40" @@ -6813,6 +7080,11 @@ basic-auth@~2.0.1: dependencies: safe-buffer "5.1.2" +basic-ftp@^5.0.2: + version "5.0.3" + resolved "https://registry.yarnpkg.com/basic-ftp/-/basic-ftp-5.0.3.tgz#b14c0fe8111ce001ec913686434fe0c2fb461228" + integrity sha512-QHX8HLlncOLpy54mh+k/sWIFd0ThmRqwe9ZjELybGZK+tZ8rUb9VO0saKJUROTbE+KhzDUT7xziGpGrW8Kmd+g== + bcrypt-pbkdf@^1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz#a4301d389b6a43f9b67ff3ca11a3f6637e360e9e" @@ -7023,7 +7295,7 @@ bluebird@^2.9.33: resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-2.11.0.tgz#534b9033c022c9579c56ba3b3e5a5caafbb650e1" integrity sha512-UfFSr22dmHPQqPP9XWHRhq+gWnHCYguQGkXQlbyPtW5qTnhFWA8/iXg765tH0cAjy7l/zPJ1aBTO0g5XgA7kvQ== -bluebird@^3.5.0, bluebird@^3.5.2: +bluebird@^3.5.0, bluebird@^3.5.2, bluebird@^3.7.2: version "3.7.2" resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.7.2.tgz#9f229c15be272454ffa973ace0dbee79a1b0c36f" integrity sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg== @@ -7525,6 +7797,24 @@ cacache@^16.0.0, cacache@^16.0.6, cacache@^16.1.0: tar "^6.1.11" unique-filename "^2.0.0" +cacache@^17.0.0: + version "17.1.3" + resolved "https://registry.yarnpkg.com/cacache/-/cacache-17.1.3.tgz#c6ac23bec56516a7c0c52020fd48b4909d7c7044" + integrity sha512-jAdjGxmPxZh0IipMdR7fK/4sDSrHMLUV0+GvVUsjwyGNKHsh79kW/otg+GkbXwl6Uzvy9wsvHOX4nUoWldeZMg== + dependencies: + "@npmcli/fs" "^3.1.0" + fs-minipass "^3.0.0" + glob "^10.2.2" + lru-cache "^7.7.1" + minipass "^5.0.0" + minipass-collect "^1.0.2" + minipass-flush "^1.0.5" + minipass-pipeline "^1.2.4" + p-map "^4.0.0" + ssri "^10.0.0" + tar "^6.1.11" + unique-filename "^3.0.0" + cache-base@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/cache-base/-/cache-base-1.0.1.tgz#0a7f46416831c8b662ee36fe4e7c59d76f666ab2" @@ -7683,6 +7973,13 @@ catering@^2.0.0, catering@^2.1.0, catering@^2.1.1: resolved "https://registry.yarnpkg.com/catering/-/catering-2.1.1.tgz#66acba06ed5ee28d5286133982a927de9a04b510" integrity sha512-K7Qy8O9p76sL3/3m7/zLKbRkyOlSZAgzEaLhyj2mXS8PsCud2Eo4hAb8aLtZqHh0QGqLcb9dlJSu6lHRVENm1w== +catharsis@^0.9.0: + version "0.9.0" + resolved "https://registry.yarnpkg.com/catharsis/-/catharsis-0.9.0.tgz#40382a168be0e6da308c277d3a2b3eb40c7d2121" + integrity sha512-prMTQVpcns/tzFgFVkVp6ak6RykZyWb3gu8ckUpd6YkTlacOd3DXGJjIpD4Q6zJirizvaiAjSSHlOsA+6sNh2A== + dependencies: + lodash "^4.17.15" + caw@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/caw/-/caw-1.2.0.tgz#ffb226fe7efc547288dc62ee3e97073c212d1034" @@ -7784,6 +8081,11 @@ chalk@^4.0.0, chalk@^4.0.2, chalk@^4.1.0, chalk@^4.1.1, chalk@^4.1.2: ansi-styles "^4.1.0" supports-color "^7.1.0" +chalk@^5.2.0: + version "5.3.0" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-5.3.0.tgz#67c20a7ebef70e7f3970a01f90fa210cb6860385" + integrity sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w== + change-case@3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/change-case/-/change-case-3.0.2.tgz#fd48746cce02f03f0a672577d1d3a8dc2eceb037" @@ -8059,7 +8361,16 @@ cli-table3@^0.5.0: optionalDependencies: colors "^1.1.2" -cli-table@^0.3.1: +cli-table3@^0.6.3: + version "0.6.3" + resolved "https://registry.yarnpkg.com/cli-table3/-/cli-table3-0.6.3.tgz#61ab765aac156b52f222954ffc607a6f01dbeeb2" + integrity sha512-w5Jac5SykAeZJKntOxJCrm63Eg5/4dhMWIcuTbo9rpE+brgaSZo0RuNJZeOyMgsUdhDeojvgyQLmjI+K50ZGyg== + dependencies: + string-width "^4.2.0" + optionalDependencies: + "@colors/colors" "1.5.0" + +cli-table@0.3.11, cli-table@^0.3.1: version "0.3.11" resolved "https://registry.yarnpkg.com/cli-table/-/cli-table-0.3.11.tgz#ac69cdecbe81dccdba4889b9a18b7da312a9d3ee" integrity sha512-IqLQi4lO0nIB4tcdTpN4LCB9FI3uqrJZK7RC515EnhZ6qBaglkIgICb1wjeAqpdoOabm1+SuQtkXIPdYC93jhQ== @@ -8347,6 +8658,11 @@ colorette@2.0.19: resolved "https://registry.yarnpkg.com/colorette/-/colorette-2.0.19.tgz#cdf044f47ad41a0f4b56b3a0d5b4e6e1a2d5a798" integrity sha512-3tlv/dIP7FWvj3BsbHrGLJ6l/oKh1O3TcgBqMn+yyCagOxc23fyzDS6HypQbgxWbkpDnf52p1LuR4eWDQ/K9WQ== +colorette@^2.0.19: + version "2.0.20" + resolved "https://registry.yarnpkg.com/colorette/-/colorette-2.0.20.tgz#9eb793e6833067f7235902fcd3b09917a000a95a" + integrity sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w== + colors@1.0.3, colors@1.0.x: version "1.0.3" resolved "https://registry.yarnpkg.com/colors/-/colors-1.0.3.tgz#0433f44d809680fdeb60ed260f1b0c262e82a40b" @@ -8414,6 +8730,11 @@ commander@3.0.2, commander@^3.0.0: resolved "https://registry.yarnpkg.com/commander/-/commander-3.0.2.tgz#6837c3fb677ad9933d1cfba42dd14d5117d6b39e" integrity sha512-Gar0ASD4BDyKC4hl4DwHqDrmvjoxWKZigVnAbn5H1owvm4CxCPdb0HQDehwNYMJpla5+M2tPmPARzhtYuwpHow== +commander@^10.0.0: + version "10.0.1" + resolved "https://registry.yarnpkg.com/commander/-/commander-10.0.1.tgz#881ee46b4f77d1c1dccc5823433aa39b022cbe06" + integrity sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug== + commander@^2.12.1, commander@^2.20.3, commander@^2.8.1: version "2.20.3" resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" @@ -8545,7 +8866,7 @@ conf@^10.1.2: pkg-up "^3.1.0" semver "^7.3.5" -config-chain@^1.1.12: +config-chain@^1.1.11, config-chain@^1.1.12: version "1.1.13" resolved "https://registry.yarnpkg.com/config-chain/-/config-chain-1.1.13.tgz#fad0795aa6a6cdaff9ed1b68e9dff94372c232f4" integrity sha512-qj+f8APARXHrM0hraqXYb2/bOVSV4PvJQlNZ/DVj0QrmNM2q2euizkeuVckQ57J+W0mRH6Hvi+k50M4Jul2VRQ== @@ -8577,7 +8898,7 @@ configstore@^5.0.0, configstore@^5.0.1: write-file-atomic "^3.0.0" xdg-basedir "^4.0.0" -connect@^3.6.2: +connect@^3.6.2, connect@^3.7.0: version "3.7.0" resolved "https://registry.yarnpkg.com/connect/-/connect-3.7.0.tgz#5d49348910caa5e07a01800b030d0c35f20484f8" integrity sha512-ZqRXc+tZukToSNmh5C2iWMSoV3X1YUcPbqEM4DkEG5tNQXrQUZCNVGGv3IuicnkMtPfGf3Xtp8WCXs295iQ1pQ== @@ -8976,6 +9297,11 @@ csstype@^3.0.2: resolved "https://registry.yarnpkg.com/csstype/-/csstype-3.1.2.tgz#1d4bf9d572f11c14031f0436e1c10bc1f571f50b" integrity sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ== +csv-parse@^5.0.4: + version "5.4.0" + resolved "https://registry.yarnpkg.com/csv-parse/-/csv-parse-5.4.0.tgz#6793210a4a49a9a74b3fde3f9d00f3f52044fd89" + integrity sha512-JiQosUWiOFgp4hQn0an+SBoV9IKdqzhROM0iiN4LB7UpfJBlsSJlWl9nq4zGgxgMAzHJ6V4t29VAVD+3+2NJAg== + csv-parser@^2.0.0: version "2.3.5" resolved "https://registry.yarnpkg.com/csv-parser/-/csv-parser-2.3.5.tgz#6b3bf0907684914ff2c5abfbadab111a69eae5db" @@ -9033,6 +9359,11 @@ data-uri-to-buffer@3: resolved "https://registry.yarnpkg.com/data-uri-to-buffer/-/data-uri-to-buffer-3.0.1.tgz#594b8973938c5bc2c33046535785341abc4f3636" integrity sha512-WboRycPNsVw3B3TL559F7kuBUM4d8CgMEvk6xEJlOp7OBPjt6G7z8WMWlD2rOFZLk6OYfFIUGsCOWzcQH9K2og== +data-uri-to-buffer@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/data-uri-to-buffer/-/data-uri-to-buffer-5.0.1.tgz#db89a9e279c2ffe74f50637a59a32fb23b3e4d7c" + integrity sha512-a9l6T1qqDogvvnw0nKlfZzqsyikEBZBClF39V3TFoKhDtGBqHu2HkuomJc02j5zft8zrUaXEuoicLeW54RkzPg== + dataloader@2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/dataloader/-/dataloader-2.1.0.tgz#c69c538235e85e7ac6c6c444bae8ecabf5de9df7" @@ -9348,6 +9679,15 @@ degenerator@^3.0.2: esprima "^4.0.0" vm2 "^3.9.11" +degenerator@^5.0.0: + version "5.0.1" + resolved "https://registry.yarnpkg.com/degenerator/-/degenerator-5.0.1.tgz#9403bf297c6dad9a1ece409b37db27954f91f2f5" + integrity sha512-TllpMR/t0M5sqCXfj85i4XaAzxmS5tVA16dqvdkMwGmzI+dXLXnw3J+3Vdv7VKw+ThlTMboK6i9rnZ6Nntj5CQ== + dependencies: + ast-types "^0.13.4" + escodegen "^2.1.0" + esprima "^4.0.1" + delay@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/delay/-/delay-5.0.0.tgz#137045ef1b96e5071060dd5be60bf9334436bd1d" @@ -9692,6 +10032,11 @@ duplexify@^4.0.0, duplexify@^4.1.1: readable-stream "^3.1.1" stream-shift "^1.0.0" +eastasianwidth@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/eastasianwidth/-/eastasianwidth-0.2.0.tgz#696ce2ec0aa0e6ea93a397ffcf24aa7840c827cb" + integrity sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA== + ecc-jsbn@~0.1.1: version "0.1.2" resolved "https://registry.yarnpkg.com/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz#3a83a904e54353287874c564b7549386849a98c9" @@ -9780,6 +10125,11 @@ emoji-regex@^8.0.0: resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== +emoji-regex@^9.2.2: + version "9.2.2" + resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-9.2.2.tgz#840c8803b0d8047f4ff0cf963176b32d4ef3ed72" + integrity sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg== + enabled@2.0.x: version "2.0.0" resolved "https://registry.yarnpkg.com/enabled/-/enabled-2.0.0.tgz#f9dd92ec2d6f4bbc0d5d1e64e21d61cd4665e7c2" @@ -9854,6 +10204,11 @@ entities@^4.2.0, entities@^4.4.0: resolved "https://registry.yarnpkg.com/entities/-/entities-4.5.0.tgz#5d268ea5e7113ec74c4d033b79ea5a35a488fb48" integrity sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw== +entities@~2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/entities/-/entities-2.1.0.tgz#992d3129cf7df6870b96c57858c249a120f8b8b5" + integrity sha512-hCx1oky9PFrJ611mf0ifBLBRW8lUUVRlFolb5gWRfIELabBlbp9xZvrqZLZAs+NxFnbfQoeGd8wDkygjg7U85w== + env-paths@^2.2.0, env-paths@^2.2.1: version "2.2.1" resolved "https://registry.yarnpkg.com/env-paths/-/env-paths-2.2.1.tgz#420399d416ce1fbe9bc0a07c62fa68d67fd0f8f2" @@ -10056,7 +10411,7 @@ escodegen@1.8.x: optionalDependencies: source-map "~0.2.0" -escodegen@^1.8.1: +escodegen@^1.13.0, escodegen@^1.8.1: version "1.14.3" resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-1.14.3.tgz#4e7b81fba61581dc97582ed78cab7f0e8d63f503" integrity sha512-qFcX0XJkdg+PB3xjZZG/wKSuT1PnQWx57+TVSjIMmILd2yC/6ByYElPwJnslDsuWuSAp4AwJGumarAAmJch5Kw== @@ -10068,6 +10423,17 @@ escodegen@^1.8.1: optionalDependencies: source-map "~0.6.1" +escodegen@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-2.1.0.tgz#ba93bbb7a43986d29d6041f99f5262da773e2e17" + integrity sha512-2NlIDTwUWJN0mRPQOdtQBzbUHvdGY2P1VXSyU83Q3xKxM7WHX2Ql8dKq782Q9TgQUNOLEzEYu9bzLNj1q88I5w== + dependencies: + esprima "^4.0.1" + estraverse "^5.2.0" + esutils "^2.0.2" + optionalDependencies: + source-map "~0.6.1" + eslint-scope@^4.0.3: version "4.0.3" resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-4.0.3.tgz#ca03833310f6889a3264781aa82e63eb9cfe7848" @@ -10088,6 +10454,11 @@ eslint-visitor-keys@^1.0.0, eslint-visitor-keys@^1.1.0: resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz#30ebd1ef7c2fdff01c3a4f151044af25fab0523e" integrity sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ== +eslint-visitor-keys@^3.4.1: + version "3.4.2" + resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-3.4.2.tgz#8c2095440eca8c933bedcadf16fefa44dbe9ba5f" + integrity sha512-8drBzUEyZ2llkpCA67iYrgEssKDUu68V8ChqqOfFupIaG/LCVPUT+CoGJpT77zJprs4T/W7p07LP7zAIMuweVw== + eslint@^5.16.0, eslint@^5.5.0, eslint@^5.6.0: version "5.16.0" resolved "https://registry.yarnpkg.com/eslint/-/eslint-5.16.0.tgz#a1e3ac1aae4a3fbd8296fcf8f7ab7314cbb6abea" @@ -10144,6 +10515,15 @@ espree@^5.0.1: acorn-jsx "^5.0.0" eslint-visitor-keys "^1.0.0" +espree@^9.0.0: + version "9.6.1" + resolved "https://registry.yarnpkg.com/espree/-/espree-9.6.1.tgz#a2a17b8e434690a5432f2f8018ce71d331a48c6f" + integrity sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ== + dependencies: + acorn "^8.9.0" + acorn-jsx "^5.3.2" + eslint-visitor-keys "^3.4.1" + esprima-extract-comments@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/esprima-extract-comments/-/esprima-extract-comments-1.1.0.tgz#0dacab567a5900240de6d344cf18c33617becbc9" @@ -10825,6 +11205,13 @@ exegesis-express@^2.0.0: dependencies: exegesis "^2.5.7" +exegesis-express@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/exegesis-express/-/exegesis-express-4.0.0.tgz#f5f8486f6f0d81739e8e27ce75ce0f61ba3f3578" + integrity sha512-V2hqwTtYRj0bj43K4MCtm0caD97YWkqOUHFMRCBW5L1x9IjyqOEc7Xa4oQjjiFbeFOSQzzwPV+BzXsQjSz08fw== + dependencies: + exegesis "^4.1.0" + exegesis@^2.5.7: version "2.5.7" resolved "https://registry.yarnpkg.com/exegesis/-/exegesis-2.5.7.tgz#232c4b01361bc2bf0d9d4c07549c479e77f2b7a3" @@ -10847,6 +11234,29 @@ exegesis@^2.5.7: raw-body "^2.3.3" semver "^7.0.0" +exegesis@^4.1.0: + version "4.1.1" + resolved "https://registry.yarnpkg.com/exegesis/-/exegesis-4.1.1.tgz#555dfbec663e71d0d71297a9fe13edfdd64f8849" + integrity sha512-PvSqaMOw2absLBgsthtJyVOeCHN4lxQ1dM7ibXb6TfZZJaoXtGELoEAGJRFvdN16+u9kg8oy1okZXRk8VpimWA== + dependencies: + "@apidevtools/json-schema-ref-parser" "^9.0.3" + ajv "^8.3.0" + ajv-formats "^2.1.0" + body-parser "^1.18.3" + content-type "^1.0.4" + deep-freeze "0.0.1" + events-listener "^1.1.0" + glob "^7.1.3" + json-ptr "^3.0.1" + json-schema-traverse "^1.0.0" + lodash "^4.17.11" + openapi3-ts "^3.1.1" + promise-breaker "^6.0.0" + pump "^3.0.0" + qs "^6.6.0" + raw-body "^2.3.3" + semver "^7.0.0" + exit-code@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/exit-code/-/exit-code-1.0.2.tgz#ce165811c9f117af6a5f882940b96ae7f9aecc34" @@ -10914,6 +11324,11 @@ expect@^29.0.0, expect@^29.5.0: jest-message-util "^29.5.0" jest-util "^29.5.0" +exponential-backoff@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/exponential-backoff/-/exponential-backoff-3.1.1.tgz#64ac7526fe341ab18a39016cd22c787d01e00bf6" + integrity sha512-dX7e/LHVJ6W3DE1MHWi9S1EYzDESENfLrYohG2G++ovZrYOkm4Knwa0mc1cn84xJOR4KEU0WSchhLbd0UklbHw== + export-files@^2.0.1: version "2.1.1" resolved "https://registry.yarnpkg.com/export-files/-/export-files-2.1.1.tgz#bbf64574053a09e4eb98e5f43501d572b2c3ce7f" @@ -11140,6 +11555,13 @@ fast-url-parser@^1.1.3: dependencies: punycode "^1.3.2" +fast-xml-parser@^4.2.2: + version "4.2.7" + resolved "https://registry.yarnpkg.com/fast-xml-parser/-/fast-xml-parser-4.2.7.tgz#871f2ca299dc4334b29f8da3658c164e68395167" + integrity sha512-J8r6BriSLO1uj2miOk1NW0YVm8AGOOu3Si2HQp/cSmo6EA4m3fcwu2WKjJ4RK9wMLBtg69y1kS8baDiQBR41Ig== + dependencies: + strnum "^1.0.5" + fastest-levenshtein@^1.0.7: version "1.0.16" resolved "https://registry.yarnpkg.com/fastest-levenshtein/-/fastest-levenshtein-1.0.16.tgz#210e61b6ff181de91ea9b3d1b84fdedd47e034e5" @@ -11413,6 +11835,23 @@ findup-sync@^1.0.0: micromatch "^2.3.7" resolve-dir "^0.1.0" +firebase-admin@^11.10.1: + version "11.10.1" + resolved "https://registry.yarnpkg.com/firebase-admin/-/firebase-admin-11.10.1.tgz#5f0f83a44627e89938d350c5e4bbac76596c963e" + integrity sha512-atv1E6GbuvcvWaD3eHwrjeP5dAVs+EaHEJhu9CThMzPY6In8QYDiUR6tq5SwGl4SdA/GcAU0nhwWc/FSJsAzfQ== + dependencies: + "@fastify/busboy" "^1.2.1" + "@firebase/database-compat" "^0.3.4" + "@firebase/database-types" "^0.10.4" + "@types/node" ">=12.12.47" + jsonwebtoken "^9.0.0" + jwks-rsa "^3.0.1" + node-forge "^1.3.1" + uuid "^9.0.0" + optionalDependencies: + "@google-cloud/firestore" "^6.6.0" + "@google-cloud/storage" "^6.9.5" + firebase-admin@^9.12.0: version "9.12.0" resolved "https://registry.yarnpkg.com/firebase-admin/-/firebase-admin-9.12.0.tgz#d7e889e97c9c31610efbcd131bb6d06a783af757" @@ -11437,6 +11876,15 @@ firebase-functions-test@^0.3.3: "@types/lodash" "^4.14.104" lodash "^4.17.5" +firebase-functions-test@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/firebase-functions-test/-/firebase-functions-test-3.1.0.tgz#5f0946237d004d86db5ff8cfab2ab0a566ffdb75" + integrity sha512-yfm9ToguShxmRXb7TINN88zE2bM9gsBbs7vMWVKJAxGcl/n1f/U0sT5k2yho676QIcSqXVSjCONU8W4cUEL+Sw== + dependencies: + "@types/lodash" "^4.14.104" + lodash "^4.17.5" + ts-deepmerge "^2.0.1" + firebase-functions@^3.15.7: version "3.24.1" resolved "https://registry.yarnpkg.com/firebase-functions/-/firebase-functions-3.24.1.tgz#50d13274c4ae96b2308a67e9fc76f1a74cff690d" @@ -11449,58 +11897,136 @@ firebase-functions@^3.15.7: lodash "^4.17.14" node-fetch "^2.6.7" -firebase-tools@9.20.0: - version "9.20.0" - resolved "https://registry.yarnpkg.com/firebase-tools/-/firebase-tools-9.20.0.tgz#96a551147ccc8720e976357c85fb037e371a030d" - integrity sha512-/5LzkZtW8aC57syHf34FXY1w6g9unb7qdvtlYROdJA33sk2xsWsJmuvtJylhYhTNX8zrwFsmiTHRlaBxA9YWtg== +firebase-functions@^4.4.1: + version "4.4.1" + resolved "https://registry.yarnpkg.com/firebase-functions/-/firebase-functions-4.4.1.tgz#209fa3a157476722382e71782fe3375b78a529ff" + integrity sha512-3no53Lg12ToNlPSgLZtAFLQAz6si7ilHvzO8NC3/2EybyUwegpj5YhHwNiCw839lmAWp3znjATJDTvADFiZMrg== dependencies: - "@google-cloud/pubsub" "^2.7.0" - "@types/archiver" "^5.1.0" - JSONStream "^1.2.1" + "@types/cors" "^2.8.5" + "@types/express" "4.17.3" + cors "^2.8.5" + express "^4.17.1" + node-fetch "^2.6.7" + protobufjs "^7.2.2" + +firebase-tools@12.4.7: + version "12.4.7" + resolved "https://registry.yarnpkg.com/firebase-tools/-/firebase-tools-12.4.7.tgz#3c581b9ef32d39221eaa11735bbb59a299d6d74a" + integrity sha512-L5nULzh0PElm2OK5lXsj7zkIwBBB4KsGOg0CvCnjdvJ1ROMN2IqffJ0KR/8paXuGWf5SA0VJj2QjG37jFxrAjg== + dependencies: + "@google-cloud/pubsub" "^3.0.1" abort-controller "^3.0.0" ajv "^6.12.6" archiver "^5.0.0" + async-lock "1.3.2" body-parser "^1.19.0" chokidar "^3.0.2" cjson "^0.3.1" - cli-color "^1.2.0" - cli-table "^0.3.1" + cli-table "0.3.11" + colorette "^2.0.19" commander "^4.0.1" configstore "^5.0.1" cors "^2.8.5" cross-env "^5.1.3" - cross-spawn "^7.0.1" - csv-streamify "^3.0.4" - dotenv "^6.1.0" - exegesis "^2.5.7" - exegesis-express "^2.0.0" - exit-code "^1.0.2" + cross-spawn "^7.0.3" + csv-parse "^5.0.4" + exegesis "^4.1.0" + exegesis-express "^4.0.0" express "^4.16.4" filesize "^6.1.0" - fs-extra "^5.0.0" + form-data "^4.0.0" + fs-extra "^10.1.0" glob "^7.1.2" - google-auth-library "^6.1.3" - inquirer "~6.3.1" + google-auth-library "^7.11.0" + inquirer "^8.2.0" js-yaml "^3.13.1" - jsonwebtoken "^8.5.1" + jsonwebtoken "^9.0.0" leven "^3.1.0" + libsodium-wrappers "^0.7.10" lodash "^4.17.21" - marked "^0.7.0" - marked-terminal "^3.3.0" + marked "^4.0.14" + marked-terminal "^5.1.1" mime "^2.5.2" minimatch "^3.0.4" morgan "^1.10.0" - node-fetch "^2.6.1" + node-fetch "^2.6.7" open "^6.3.0" - ora "^3.4.0" - portfinder "^1.0.23" + ora "^5.4.1" + p-limit "^3.0.1" + portfinder "^1.0.32" progress "^2.0.3" - proxy-agent "^5.0.0" + proxy-agent "^6.3.0" request "^2.87.0" + retry "^0.13.1" rimraf "^3.0.0" - semver "^5.7.1" - superstatic "^7.1.0" - tar "^4.3.0" + semver "^7.5.2" + stream-chain "^2.2.4" + stream-json "^1.7.3" + strip-ansi "^6.0.1" + superstatic "^9.0.3" + tar "^6.1.11" + tcp-port-used "^1.0.2" + tmp "^0.2.1" + triple-beam "^1.3.0" + universal-analytics "^0.5.3" + update-notifier-cjs "^5.1.6" + uuid "^8.3.2" + winston "^3.0.0" + winston-transport "^4.4.0" + ws "^7.2.3" + +firebase-tools@9.20.0: + version "9.20.0" + resolved "https://registry.yarnpkg.com/firebase-tools/-/firebase-tools-9.20.0.tgz#96a551147ccc8720e976357c85fb037e371a030d" + integrity sha512-/5LzkZtW8aC57syHf34FXY1w6g9unb7qdvtlYROdJA33sk2xsWsJmuvtJylhYhTNX8zrwFsmiTHRlaBxA9YWtg== + dependencies: + "@google-cloud/pubsub" "^2.7.0" + "@types/archiver" "^5.1.0" + JSONStream "^1.2.1" + abort-controller "^3.0.0" + ajv "^6.12.6" + archiver "^5.0.0" + body-parser "^1.19.0" + chokidar "^3.0.2" + cjson "^0.3.1" + cli-color "^1.2.0" + cli-table "^0.3.1" + commander "^4.0.1" + configstore "^5.0.1" + cors "^2.8.5" + cross-env "^5.1.3" + cross-spawn "^7.0.1" + csv-streamify "^3.0.4" + dotenv "^6.1.0" + exegesis "^2.5.7" + exegesis-express "^2.0.0" + exit-code "^1.0.2" + express "^4.16.4" + filesize "^6.1.0" + fs-extra "^5.0.0" + glob "^7.1.2" + google-auth-library "^6.1.3" + inquirer "~6.3.1" + js-yaml "^3.13.1" + jsonwebtoken "^8.5.1" + leven "^3.1.0" + lodash "^4.17.21" + marked "^0.7.0" + marked-terminal "^3.3.0" + mime "^2.5.2" + minimatch "^3.0.4" + morgan "^1.10.0" + node-fetch "^2.6.1" + open "^6.3.0" + ora "^3.4.0" + portfinder "^1.0.23" + progress "^2.0.3" + proxy-agent "^5.0.0" + request "^2.87.0" + rimraf "^3.0.0" + semver "^5.7.1" + superstatic "^7.1.0" + tar "^4.3.0" tcp-port-used "^1.0.1" tmp "0.0.33" triple-beam "^1.3.0" @@ -11600,6 +12126,14 @@ foreach@^2.0.4: resolved "https://registry.yarnpkg.com/foreach/-/foreach-2.0.6.tgz#87bcc8a1a0e74000ff2bf9802110708cfb02eb6e" integrity sha512-k6GAGDyqLe9JaebCsFCoudPPWfihKu8pylYXRlqP1J7ms39iPoTtk2fviNglIeQEwdh0bQeKJ01ZPyuyQvKzwg== +foreground-child@^3.1.0: + version "3.1.1" + resolved "https://registry.yarnpkg.com/foreground-child/-/foreground-child-3.1.1.tgz#1d173e776d75d2772fed08efe4a0de1ea1b12d0d" + integrity sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg== + dependencies: + cross-spawn "^7.0.0" + signal-exit "^4.0.1" + forever-agent@~0.6.1: version "0.6.1" resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91" @@ -11704,6 +12238,15 @@ fs-extra@^0.30.0: path-is-absolute "^1.0.0" rimraf "^2.2.8" +fs-extra@^10.1.0: + version "10.1.0" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-10.1.0.tgz#02873cfbc4084dde127eaa5f9905eef2325d1abf" + integrity sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ== + dependencies: + graceful-fs "^4.2.0" + jsonfile "^6.0.1" + universalify "^2.0.0" + fs-extra@^11.1.0: version "11.1.1" resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-11.1.1.tgz#da69f7c39f3b002378b0954bb6ae7efdc0876e2d" @@ -11782,6 +12325,13 @@ fs-minipass@^2.0.0, fs-minipass@^2.1.0: dependencies: minipass "^3.0.0" +fs-minipass@^3.0.0: + version "3.0.2" + resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-3.0.2.tgz#5b383858efa8c1eb8c33b39e994f7e8555b8b3a3" + integrity sha512-2GAfyfoaCDRrM6jaOS3UsBts8yJ55VioXdWcOL7dK9zdAuKT71+WBA4ifnNYqVjYv+4SsPxjK0JT4yIIn4cA/g== + dependencies: + minipass "^5.0.0" + fs-readdir-recursive@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/fs-readdir-recursive/-/fs-readdir-recursive-1.1.0.tgz#e32fc030a2ccee44a6b5371308da54be0b397d27" @@ -11930,6 +12480,16 @@ gaxios@^4.0.0: is-stream "^2.0.0" node-fetch "^2.6.7" +gaxios@^5.0.0, gaxios@^5.0.1: + version "5.1.3" + resolved "https://registry.yarnpkg.com/gaxios/-/gaxios-5.1.3.tgz#f7fa92da0fe197c846441e5ead2573d4979e9013" + integrity sha512-95hVgBRgEIRQQQHIbnxBXeHbW4TqFk4ZDJW7wmVtvYar72FdhRIo1UGOLS2eRAKCPEdPBWu+M7+A33D9CdX9rA== + dependencies: + extend "^3.0.2" + https-proxy-agent "^5.0.0" + is-stream "^2.0.0" + node-fetch "^2.6.9" + gcp-metadata@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/gcp-metadata/-/gcp-metadata-1.0.0.tgz#5212440229fa099fc2f7c2a5cdcb95575e9b2ca6" @@ -11946,6 +12506,14 @@ gcp-metadata@^4.2.0: gaxios "^4.0.0" json-bigint "^1.0.0" +gcp-metadata@^5.3.0: + version "5.3.0" + resolved "https://registry.yarnpkg.com/gcp-metadata/-/gcp-metadata-5.3.0.tgz#6f45eb473d0cb47d15001476b48b663744d25408" + integrity sha512-FNTkdNEnBdlqF2oatizolQqNANMrcqJt6AAYt99B3y1aLLC8Hc5IOBb+ZnnzllodEEf6xMBp6wRcBbc16fa65w== + dependencies: + gaxios "^5.0.0" + json-bigint "^1.0.0" + gcs-resumable-upload@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/gcs-resumable-upload/-/gcs-resumable-upload-1.1.0.tgz#2b06f5876dcf60f18a309343f79ed951aff01399" @@ -12102,6 +12670,16 @@ get-uri@3: fs-extra "^8.1.0" ftp "^0.3.10" +get-uri@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/get-uri/-/get-uri-6.0.1.tgz#cff2ba8d456c3513a04b70c45de4dbcca5b1527c" + integrity sha512-7ZqONUVqaabogsYNWlYj0t3YZaL6dhuEueZXGF+/YVmf6dHmaFg8/6psJKqhx9QykIDKzpGcy2cn4oV4YC7V/Q== + dependencies: + basic-ftp "^5.0.2" + data-uri-to-buffer "^5.0.1" + debug "^4.3.4" + fs-extra "^8.1.0" + get-value@^1.1.5: version "1.3.1" resolved "https://registry.yarnpkg.com/get-value/-/get-value-1.3.1.tgz#8ac7ef4f20382392b2646548f9b9ad2dc6c89642" @@ -12355,6 +12933,17 @@ glob@7.2.0: once "^1.3.0" path-is-absolute "^1.0.0" +glob@^10.2.2: + version "10.3.3" + resolved "https://registry.yarnpkg.com/glob/-/glob-10.3.3.tgz#8360a4ffdd6ed90df84aa8d52f21f452e86a123b" + integrity sha512-92vPiMb/iqpmEgsOoIDvTjc50wf9CCCvMzsi6W0JLPeUKE8TWP1a73PgqSrqy7iAZxaSD1YdzU7QZR5LF51MJw== + dependencies: + foreground-child "^3.1.0" + jackspeak "^2.0.3" + minimatch "^9.0.1" + minipass "^5.0.0 || ^6.0.2 || ^7.0.0" + path-scurry "^1.10.1" + glob@^5.0.15: version "5.0.15" resolved "https://registry.yarnpkg.com/glob/-/glob-5.0.15.tgz#1bc936b9e02f4a603fcc222ecf7633d30b8b93b1" @@ -12389,7 +12978,7 @@ glob@^7.0.0, glob@^7.0.5, glob@^7.1.1, glob@^7.1.2, glob@^7.1.3, glob@^7.1.4, gl once "^1.3.0" path-is-absolute "^1.0.0" -glob@^8.0.1: +glob@^8.0.0, glob@^8.0.1: version "8.1.0" resolved "https://registry.yarnpkg.com/glob/-/glob-8.1.0.tgz#d388f656593ef708ee3e34640fdfb99a9fd1c33e" integrity sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ== @@ -12541,7 +13130,7 @@ google-auth-library@^6.1.3: jws "^4.0.0" lru-cache "^6.0.0" -google-auth-library@^7.0.0, google-auth-library@^7.14.0, google-auth-library@^7.14.1: +google-auth-library@^7.0.0, google-auth-library@^7.11.0, google-auth-library@^7.14.0, google-auth-library@^7.14.1: version "7.14.1" resolved "https://registry.yarnpkg.com/google-auth-library/-/google-auth-library-7.14.1.tgz#e3483034162f24cc71b95c8a55a210008826213c" integrity sha512-5Rk7iLNDFhFeBYc3s8l1CqzbEBcdhwR193RlD4vSNFajIcINKI8W8P0JLmBpwymHqqWbX34pJDQu39cSy/6RsA== @@ -12556,6 +13145,21 @@ google-auth-library@^7.0.0, google-auth-library@^7.14.0, google-auth-library@^7. jws "^4.0.0" lru-cache "^6.0.0" +google-auth-library@^8.0.1, google-auth-library@^8.0.2: + version "8.9.0" + resolved "https://registry.yarnpkg.com/google-auth-library/-/google-auth-library-8.9.0.tgz#15a271eb2ec35d43b81deb72211bd61b1ef14dd0" + integrity sha512-f7aQCJODJFmYWN6PeNKzgvy9LI2tYmXnzpNDHEjG5sDNPgGb2FXQyTBnXeSH+PAtpKESFD+LmHw3Ox3mN7e1Fg== + dependencies: + arrify "^2.0.0" + base64-js "^1.3.0" + ecdsa-sig-formatter "^1.0.11" + fast-text-encoding "^1.0.0" + gaxios "^5.0.0" + gcp-metadata "^5.3.0" + gtoken "^6.1.0" + jws "^4.0.0" + lru-cache "^6.0.0" + google-gax@2.30.3: version "2.30.3" resolved "https://registry.yarnpkg.com/google-gax/-/google-gax-2.30.3.tgz#5d2c227972d99d6a6cd77963c44d0575974e7b60" @@ -12614,6 +13218,27 @@ google-gax@^2.0.1, google-gax@^2.24.1: protobufjs "6.11.3" retry-request "^4.0.0" +google-gax@^3.5.7, google-gax@^3.6.1: + version "3.6.1" + resolved "https://registry.yarnpkg.com/google-gax/-/google-gax-3.6.1.tgz#02c78fc496f5adf86f2ca9145545f4b6575f6118" + integrity sha512-g/lcUjGcB6DSw2HxgEmCDOrI/CByOwqRvsuUvNalHUK2iPPPlmAIpbMbl62u0YufGMr8zgE3JL7th6dCb1Ry+w== + dependencies: + "@grpc/grpc-js" "~1.8.0" + "@grpc/proto-loader" "^0.7.0" + "@types/long" "^4.0.0" + "@types/rimraf" "^3.0.2" + abort-controller "^3.0.0" + duplexify "^4.0.0" + fast-text-encoding "^1.0.3" + google-auth-library "^8.0.2" + is-stream-ended "^0.1.4" + node-fetch "^2.6.1" + object-hash "^3.0.0" + proto3-json-serializer "^1.0.0" + protobufjs "7.2.4" + protobufjs-cli "1.1.1" + retry-request "^5.0.0" + google-libphonenumber@^3.2.15, google-libphonenumber@^3.2.27: version "3.2.32" resolved "https://registry.yarnpkg.com/google-libphonenumber/-/google-libphonenumber-3.2.32.tgz#63c48a9c247b64a3bc2eec21bdf3fcfbf2e148c0" @@ -12634,6 +13259,13 @@ google-p12-pem@^3.1.3: dependencies: node-forge "^1.3.1" +google-p12-pem@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/google-p12-pem/-/google-p12-pem-4.0.1.tgz#82841798253c65b7dc2a4e5fe9df141db670172a" + integrity sha512-WPkN4yGtz05WZ5EhtlxNDWPhC4JIic6G8ePitwUWy4l+XPVYec+a0j0Ts47PDtW59y3RwAhUd9/h9ZZ63px6RQ== + dependencies: + node-forge "^1.3.1" + google-proto-files@^0.20.0: version "0.20.0" resolved "https://registry.yarnpkg.com/google-proto-files/-/google-proto-files-0.20.0.tgz#dfcd1635a0c3f00f49ca057462cf369108ff4b5e" @@ -12743,6 +13375,11 @@ got@^7.1.0: url-parse-lax "^1.0.0" url-to-options "^1.0.1" +graceful-fs@4.2.10: + version "4.2.10" + resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.10.tgz#147d3a006da4ca3ce14728c7aefc287c367d7a6c" + integrity sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA== + graceful-fs@^4.1.10, graceful-fs@^4.1.11, graceful-fs@^4.1.15, graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.1.9, graceful-fs@^4.2.0, graceful-fs@^4.2.2, graceful-fs@^4.2.6, graceful-fs@^4.2.9: version "4.2.11" resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.11.tgz#4183e4e8bf08bb6e05bbb2f7d2e0c8f712ca40e3" @@ -12817,6 +13454,15 @@ gtoken@^5.0.4: google-p12-pem "^3.1.3" jws "^4.0.0" +gtoken@^6.1.0: + version "6.1.2" + resolved "https://registry.yarnpkg.com/gtoken/-/gtoken-6.1.2.tgz#aeb7bdb019ff4c3ba3ac100bbe7b6e74dce0e8bc" + integrity sha512-4ccGpzz7YAr7lxrT2neugmXQ3hP9ho2gcaityLVkiUecAiwiy60Ii8gRbZeOsXV19fYaRjgBSshs8kXw+NKCPQ== + dependencies: + gaxios "^5.0.1" + google-p12-pem "^4.0.0" + jws "^4.0.0" + handlebars@^4.0.1, handlebars@^4.7.6, handlebars@^4.7.7: version "4.7.7" resolved "https://registry.yarnpkg.com/handlebars/-/handlebars-4.7.7.tgz#9ce33416aad02dbd6c8fafa8240d5d98004945a1" @@ -13029,6 +13675,11 @@ header-case@^1.0.0: no-case "^2.2.0" upper-case "^1.1.3" +heap-js@^2.2.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/heap-js/-/heap-js-2.3.0.tgz#8eed2cede31ec312aa696eef1d4df0565841f183" + integrity sha512-E5303mzwQ+4j/n2J0rDvEPBN7GKjhis10oHiYOgjxsmxYgqG++hz9NyLLOXttzH8as/DyiBHYpUrJTZWYaMo8Q== + hexoid@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/hexoid/-/hexoid-1.0.0.tgz#ad10c6573fb907de23d9ec63a711267d9dc9bc18" @@ -13116,7 +13767,7 @@ http-basic@^8.1.1: http-response-object "^3.0.1" parse-cache-control "^1.0.1" -http-cache-semantics@^4.0.0, http-cache-semantics@^4.1.0: +http-cache-semantics@^4.0.0, http-cache-semantics@^4.1.0, http-cache-semantics@^4.1.1: version "4.1.1" resolved "https://registry.yarnpkg.com/http-cache-semantics/-/http-cache-semantics-4.1.1.tgz#abe02fcb2985460bf0323be664436ec3476a6d5a" integrity sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ== @@ -13183,6 +13834,14 @@ http-proxy-agent@^5.0.0: agent-base "6" debug "4" +http-proxy-agent@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/http-proxy-agent/-/http-proxy-agent-7.0.0.tgz#e9096c5afd071a3fce56e6252bb321583c124673" + integrity sha512-+ZT+iBxVUQ1asugqnD6oWoRiS25AkjNfG085dKJGtGxkdwLQrMKU5wJr2bOOFAXzKcTuqq+7fZlTMgG3SRfIYQ== + dependencies: + agent-base "^7.1.0" + debug "^4.3.4" + http-response-object@^3.0.1: version "3.0.2" resolved "https://registry.yarnpkg.com/http-response-object/-/http-response-object-3.0.2.tgz#7f435bb210454e4360d074ef1f989d5ea8aa9810" @@ -13231,6 +13890,14 @@ https-proxy-agent@^2.2.1: agent-base "^4.3.0" debug "^3.1.0" +https-proxy-agent@^7.0.0: + version "7.0.1" + resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-7.0.1.tgz#0277e28f13a07d45c663633841e20a40aaafe0ab" + integrity sha512-Eun8zV0kcYS1g19r78osiQLEFIRspRUDd9tIfBCTBPBeMieF/EsJNL8VI3xOIdYRDEkjQnqOYPsZ2DsWsVsFwQ== + dependencies: + agent-base "^7.0.2" + debug "4" + human-signals@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-2.1.0.tgz#dc91fcba42e4d06e4abaed33b3e7a3c02f514ea0" @@ -13480,6 +14147,27 @@ inquirer@^7.0.5: strip-ansi "^6.0.0" through "^2.3.6" +inquirer@^8.2.0: + version "8.2.6" + resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-8.2.6.tgz#733b74888195d8d400a67ac332011b5fae5ea562" + integrity sha512-M1WuAmb7pn9zdFRtQYk26ZBoY043Sse0wVDdk4Bppr+JOXyQYybdtvK+l9wUibhtjdjvtoiNy8tk+EgsYIUqKg== + dependencies: + ansi-escapes "^4.2.1" + chalk "^4.1.1" + cli-cursor "^3.1.0" + cli-width "^3.0.0" + external-editor "^3.0.3" + figures "^3.0.0" + lodash "^4.17.21" + mute-stream "0.0.8" + ora "^5.4.1" + run-async "^2.4.0" + rxjs "^7.5.5" + string-width "^4.1.0" + strip-ansi "^6.0.0" + through "^2.3.6" + wrap-ansi "^6.0.1" + inquirer@^8.2.4: version "8.2.5" resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-8.2.5.tgz#d8654a7542c35a9b9e069d27e2df4858784d54f8" @@ -13525,6 +14213,11 @@ install-artifact-from-github@^1.3.1: resolved "https://registry.yarnpkg.com/install-artifact-from-github/-/install-artifact-from-github-1.3.2.tgz#1a16d9508e40330523a3017ae0d4713ccc64de82" integrity sha512-yCFcLvqk0yQdxx0uJz4t9Z3adDMLAYrcGYv546uRXCSvxE+GqNYhhz/KmrGcUKGI/gVLR9n/e/zM9jX/+ASMJQ== +install-artifact-from-github@^1.3.3: + version "1.3.3" + resolved "https://registry.yarnpkg.com/install-artifact-from-github/-/install-artifact-from-github-1.3.3.tgz#57d89bacfa0f47d7307fe41b6247cda9f9a8079c" + integrity sha512-x79SL0d8WOi1ZjXSTUqqs0GPQZ92YArJAN9O46wgU9wdH2U9ecyyhB9YGDbPe2OLV4ptmt6AZYRQZ2GydQZosQ== + internal-slot@^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" @@ -13576,7 +14269,7 @@ ip-regex@^4.1.0: resolved "https://registry.yarnpkg.com/ip-regex/-/ip-regex-4.3.0.tgz#687275ab0f57fa76978ff8f4dddc8a23d5990db5" integrity sha512-B9ZWJxHHOHUhUjCPrMpLD4xEq35bUTClHM1S6CBU5ixQnkZmwipwgc96vAd7AAGM9TGHvJR+Uss+/Ak6UphK+Q== -ip@^1.1.5: +ip@^1.1.5, ip@^1.1.8: version "1.1.8" resolved "https://registry.yarnpkg.com/ip/-/ip-1.1.8.tgz#ae05948f6b075435ed3307acce04629da8cdbf48" integrity sha512-PuExPYUiu6qMBQb4l06ecm6T6ujzhmh+MeJcW9wa89PoAz5pvd4zPgN5WJV104mb6S2T1AwNIAaB70JNrLQWhg== @@ -14358,6 +15051,15 @@ jStat@^1.5.2: resolved "https://registry.yarnpkg.com/jStat/-/jStat-1.8.6.tgz#ab4d465b21f583d37a72ab2f97a300492da7575d" integrity sha512-Oh/ePZVSoFigme69pHTQudcGh64cpNH9Lz3hBZcRJWLrDqpw7JfuYU9F3dj9py3tBYmHz7og7ZT8hXTNbYq9Rw== +jackspeak@^2.0.3: + version "2.2.2" + resolved "https://registry.yarnpkg.com/jackspeak/-/jackspeak-2.2.2.tgz#707c62733924b8dc2a0a629dc6248577788b5385" + integrity sha512-mgNtVv4vUuaKA97yxUHoA3+FkuhtxkjdXEWOyB/N76fjy0FjezEt34oy3epBtvCvS+7DyKwqCFWx/oJLV5+kCg== + dependencies: + "@isaacs/cliui" "^8.0.2" + optionalDependencies: + "@pkgjs/parseargs" "^0.11.0" + jake@^10.8.5: version "10.8.5" resolved "https://registry.yarnpkg.com/jake/-/jake-10.8.5.tgz#f2183d2c59382cb274226034543b9c03b8164c46" @@ -14778,6 +15480,11 @@ jose@^2.0.6: dependencies: "@panva/asn1.js" "^1.0.0" +jose@^4.10.4: + version "4.14.4" + resolved "https://registry.yarnpkg.com/jose/-/jose-4.14.4.tgz#59e09204e2670c3164ee24cbfe7115c6f8bff9ca" + integrity sha512-j8GhLiKmUAh+dsFXlX1aJCbt5KMibuKb+d7j1JaOJG6s2UjX1PQlW+OKB/sD4a/5ZYF4RcmYmLSndOoU3Lt/3g== + js-sdsl@^4.1.4: version "4.4.0" resolved "https://registry.yarnpkg.com/js-sdsl/-/js-sdsl-4.4.0.tgz#8b437dbe642daa95760400b602378ed8ffea8430" @@ -14826,6 +15533,13 @@ js-yaml@4.1.0, js-yaml@^4.1.0: dependencies: argparse "^2.0.1" +js2xmlparser@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/js2xmlparser/-/js2xmlparser-4.0.2.tgz#2a1fdf01e90585ef2ae872a01bc169c6a8d5e60a" + integrity sha512-6n4D8gLlLf1n5mNLQPRfViYzu9RATblzPEtm1SthMX1Pjao0r9YI9nw7ZIfRxQMERS87mcswrg+r/OYrPRX6jA== + dependencies: + xmlcreate "^2.0.4" + jsbi@^3.1.1: version "3.2.5" resolved "https://registry.yarnpkg.com/jsbi/-/jsbi-3.2.5.tgz#b37bb90e0e5c2814c1c2a1bcd8c729888a2e37d6" @@ -14836,6 +15550,27 @@ jsbn@~0.1.0: resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513" integrity sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg== +jsdoc@^4.0.0: + version "4.0.2" + resolved "https://registry.yarnpkg.com/jsdoc/-/jsdoc-4.0.2.tgz#a1273beba964cf433ddf7a70c23fd02c3c60296e" + integrity sha512-e8cIg2z62InH7azBBi3EsSEqrKx+nUtAS5bBcYTSpZFA+vhNPyhv8PTFZ0WsjOPDj04/dOLlm08EDcQJDqaGQg== + dependencies: + "@babel/parser" "^7.20.15" + "@jsdoc/salty" "^0.2.1" + "@types/markdown-it" "^12.2.3" + bluebird "^3.7.2" + catharsis "^0.9.0" + escape-string-regexp "^2.0.0" + js2xmlparser "^4.0.2" + klaw "^3.0.0" + markdown-it "^12.3.2" + markdown-it-anchor "^8.4.1" + marked "^4.0.10" + mkdirp "^1.0.4" + requizzle "^0.2.3" + strip-json-comments "^3.1.0" + underscore "~1.13.2" + jsesc@^2.5.1: version "2.5.2" resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-2.5.2.tgz#80564d2e483dacf6e8ef209650a67df3f0c283a4" @@ -14896,6 +15631,11 @@ json-ptr@^2.2.0: dependencies: tslib "^2.2.0" +json-ptr@^3.0.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/json-ptr/-/json-ptr-3.1.1.tgz#184c3d48db659fa9bbc1519f7db6f390ddffb659" + integrity sha512-SiSJQ805W1sDUCD1+/t1/1BIrveq2Fe9HJqENxZmMCILmrPI7WhS/pePpIOx85v6/H2z1Vy7AI08GV2TzfXocg== + json-rpc-engine@^5.3.0: version "5.4.0" resolved "https://registry.yarnpkg.com/json-rpc-engine/-/json-rpc-engine-5.4.0.tgz#75758609d849e1dba1e09021ae473f3ab63161e5" @@ -15052,6 +15792,16 @@ jsonwebtoken@^8.5.1: ms "^2.1.1" semver "^5.6.0" +jsonwebtoken@^9.0.0: + version "9.0.1" + resolved "https://registry.yarnpkg.com/jsonwebtoken/-/jsonwebtoken-9.0.1.tgz#81d8c901c112c24e497a55daf6b2be1225b40145" + integrity sha512-K8wx7eJ5TPvEjuiVSkv167EVboBDv9PZdDoF7BgeQnBLVvZWW9clr2PsQHVJDTKaEIH5JBIwHujGcHp7GgI2eg== + dependencies: + jws "^3.2.2" + lodash "^4.17.21" + ms "^2.1.1" + semver "^7.3.8" + jsprim@^1.2.2: version "1.4.2" resolved "https://registry.yarnpkg.com/jsprim/-/jsprim-1.4.2.tgz#712c65533a15c878ba59e9ed5f0e26d5b77c5feb" @@ -15102,6 +15852,18 @@ jwks-rsa@^2.0.2: limiter "^1.1.5" lru-memoizer "^2.1.4" +jwks-rsa@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/jwks-rsa/-/jwks-rsa-3.0.1.tgz#ba79ddca7ee7520f7bb26b942ef1aee91df8d7e4" + integrity sha512-UUOZ0CVReK1QVU3rbi9bC7N5/le8ziUj0A2ef1Q0M7OPD2KvjEYizptqIxGIo6fSLYDkqBrazILS18tYuRc8gw== + dependencies: + "@types/express" "^4.17.14" + "@types/jsonwebtoken" "^9.0.0" + debug "^4.3.4" + jose "^4.10.4" + limiter "^1.1.5" + lru-memoizer "^2.1.4" + jws@3.x.x, jws@^3.1.5, jws@^3.2.2: version "3.2.2" resolved "https://registry.yarnpkg.com/jws/-/jws-3.2.2.tgz#001099f3639468c9414000e99995fa52fb478304" @@ -15235,6 +15997,13 @@ klaw@^1.0.0: optionalDependencies: graceful-fs "^4.1.9" +klaw@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/klaw/-/klaw-3.0.0.tgz#b11bec9cf2492f06756d6e809ab73a2910259146" + integrity sha512-0Fo5oir+O9jnXu5EefYbVK+mHMBeEVEy2cmctR1O1NECcCkPRreJKrS6Qt/j3KC2C148Dfo9i3pCmCMsdqGr0g== + dependencies: + graceful-fs "^4.1.9" + kleur@^2.0.1: version "2.0.2" resolved "https://registry.yarnpkg.com/kleur/-/kleur-2.0.2.tgz#b704f4944d95e255d038f0cb05fb8a602c55a300" @@ -15611,6 +16380,18 @@ libnpmpublish@^6.0.4: semver "^7.3.7" ssri "^9.0.0" +libsodium-wrappers@^0.7.10: + version "0.7.11" + resolved "https://registry.yarnpkg.com/libsodium-wrappers/-/libsodium-wrappers-0.7.11.tgz#53bd20606dffcc54ea2122133c7da38218f575f7" + integrity sha512-SrcLtXj7BM19vUKtQuyQKiQCRJPgbpauzl3s0rSwD+60wtHqSUuqcoawlMDheCJga85nKOQwxNYQxf/CKAvs6Q== + dependencies: + libsodium "^0.7.11" + +libsodium@^0.7.11: + version "0.7.11" + resolved "https://registry.yarnpkg.com/libsodium/-/libsodium-0.7.11.tgz#cd10aae7bcc34a300cc6ad0ac88fcca674cfbc2e" + integrity sha512-WPfJ7sS53I2s4iM58QxY3Inb83/6mjlYgcmZs7DJsvDlnmVUwNinBCi5vBT43P6bHRy01O4zsMU2CoVR6xJ40A== + limiter@^1.1.5: version "1.1.5" resolved "https://registry.yarnpkg.com/limiter/-/limiter-1.1.5.tgz#8f92a25b3b16c6131293a0cc834b4a838a2aa7c2" @@ -15626,6 +16407,13 @@ lines-and-columns@~2.0.3: resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-2.0.3.tgz#b2f0badedb556b747020ab8ea7f0373e22efac1b" integrity sha512-cNOjgCnLB+FnvWWtyRTzmB3POJ+cXxTA81LoW7u8JdmhfXzriropYwpjShnz1QLLWsQwY7nIxoDmcPTwphDK9w== +linkify-it@^3.0.1: + version "3.0.3" + resolved "https://registry.yarnpkg.com/linkify-it/-/linkify-it-3.0.3.tgz#a98baf44ce45a550efb4d49c769d07524cc2fa2e" + integrity sha512-ynTsyrFSdE5oZ/O9GEf00kPngmOfVwazR5GKDq6EYfhlpFug3J2zybX56a2PRRpc9P+FuSoGNAwjlbDs9jJBPQ== + dependencies: + uc.micro "^1.0.1" + listenercount@~1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/listenercount/-/listenercount-1.0.1.tgz#84c8a72ab59c4725321480c975e6508342e70937" @@ -16037,6 +16825,11 @@ lru-cache@^7.14.1, lru-cache@^7.4.4, lru-cache@^7.5.1, lru-cache@^7.7.1: resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-7.18.3.tgz#f793896e0fd0e954a59dfdd82f0773808df6aa89" integrity sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA== +"lru-cache@^9.1.1 || ^10.0.0": + version "10.0.0" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-10.0.0.tgz#b9e2a6a72a129d81ab317202d93c7691df727e61" + integrity sha512-svTf/fzsKHffP42sujkO/Rjs37BCIsQVRCeNYIm9WN8rgT7ffoUnRtZCqU+6BqcSBdv8gwJeTz8knJpgACeQMw== + lru-cache@~4.0.0: version "4.0.2" resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-4.0.2.tgz#1d17679c069cda5d040991a09dbc2c0db377e55e" @@ -16119,6 +16912,27 @@ make-fetch-happen@^10.0.3, make-fetch-happen@^10.0.6: socks-proxy-agent "^7.0.0" ssri "^9.0.0" +make-fetch-happen@^11.0.3: + version "11.1.1" + resolved "https://registry.yarnpkg.com/make-fetch-happen/-/make-fetch-happen-11.1.1.tgz#85ceb98079584a9523d4bf71d32996e7e208549f" + integrity sha512-rLWS7GCSTcEujjVBs2YqG7Y4643u8ucvCJeSRqiLYhesrDuzeuFIk37xREzAsfQaqzl8b9rNCE4m6J8tvX4Q8w== + dependencies: + agentkeepalive "^4.2.1" + cacache "^17.0.0" + http-cache-semantics "^4.1.1" + http-proxy-agent "^5.0.0" + https-proxy-agent "^5.0.0" + is-lambda "^1.0.1" + lru-cache "^7.7.1" + minipass "^5.0.0" + minipass-fetch "^3.0.0" + minipass-flush "^1.0.5" + minipass-pipeline "^1.2.4" + negotiator "^0.6.3" + promise-retry "^2.0.1" + socks-proxy-agent "^7.0.0" + ssri "^10.0.0" + make-fetch-happen@^9.1.0: version "9.1.0" resolved "https://registry.yarnpkg.com/make-fetch-happen/-/make-fetch-happen-9.1.0.tgz#53085a09e7971433e6765f7971bf63f4e05cb968" @@ -16177,6 +16991,22 @@ map-visit@^1.0.0: dependencies: object-visit "^1.0.0" +markdown-it-anchor@^8.4.1: + version "8.6.7" + resolved "https://registry.yarnpkg.com/markdown-it-anchor/-/markdown-it-anchor-8.6.7.tgz#ee6926daf3ad1ed5e4e3968b1740eef1c6399634" + integrity sha512-FlCHFwNnutLgVTflOYHPW2pPcl2AACqVzExlkGQNsi4CJgqOHN7YTgDd4LuhgN1BFO3TS0vLAruV1Td6dwWPJA== + +markdown-it@^12.3.2: + version "12.3.2" + resolved "https://registry.yarnpkg.com/markdown-it/-/markdown-it-12.3.2.tgz#bf92ac92283fe983fe4de8ff8abfb5ad72cd0c90" + integrity sha512-TchMembfxfNVpHkbtriWltGWc+m3xszaRD0CZup7GFFhzIgQqxIfn3eGj1yZpfuflzPvfkt611B2Q/Bsk1YnGg== + dependencies: + argparse "^2.0.1" + entities "~2.1.0" + linkify-it "^3.0.1" + mdurl "^1.0.1" + uc.micro "^1.0.5" + markdown-table@^1.1.3: version "1.1.3" resolved "https://registry.yarnpkg.com/markdown-table/-/markdown-table-1.1.3.tgz#9fcb69bcfdb8717bfd0398c6ec2d93036ef8de60" @@ -16194,6 +17024,18 @@ marked-terminal@^3.3.0: node-emoji "^1.4.1" supports-hyperlinks "^1.0.1" +marked-terminal@^5.1.1: + version "5.2.0" + resolved "https://registry.yarnpkg.com/marked-terminal/-/marked-terminal-5.2.0.tgz#c5370ec2bae24fb2b34e147b731c94fa933559d3" + integrity sha512-Piv6yNwAQXGFjZSaiNljyNFw7jKDdGrw70FSbtxEyldLsyeuV5ZHm/1wW++kWbrOF1VPnUgYOhB2oLL0ZpnekA== + dependencies: + ansi-escapes "^6.2.0" + cardinal "^2.1.1" + chalk "^5.2.0" + cli-table3 "^0.6.3" + node-emoji "^1.11.0" + supports-hyperlinks "^2.3.0" + marked@^0.7.0: version "0.7.0" resolved "https://registry.yarnpkg.com/marked/-/marked-0.7.0.tgz#b64201f051d271b1edc10a04d1ae9b74bb8e5c0e" @@ -16204,6 +17046,11 @@ marked@^1.1.1: resolved "https://registry.yarnpkg.com/marked/-/marked-1.2.9.tgz#53786f8b05d4c01a2a5a76b7d1ec9943d29d72dc" integrity sha512-H8lIX2SvyitGX+TRdtS06m1jHMijKN/XjfH6Ooii9fvxMlh8QdqBfBDkGUpMWH2kQNrtixjzYUa3SH8ROTgRRw== +marked@^4.0.10, marked@^4.0.14: + version "4.3.0" + resolved "https://registry.yarnpkg.com/marked/-/marked-4.3.0.tgz#796362821b019f734054582038b116481b456cf3" + integrity sha512-PRsaiG84bK+AMvxziE/lCFss8juXjNaWzVbN5tXAm4XjeaS9NAHhop+PjQxz2A9h8Q4M/xGmzP8vqNwy6JeK0A== + math-random@^1.0.1: version "1.0.4" resolved "https://registry.yarnpkg.com/math-random/-/math-random-1.0.4.tgz#5dd6943c938548267016d4e34f057583080c514c" @@ -16237,6 +17084,11 @@ md5.js@^1.3.4: inherits "^2.0.1" safe-buffer "^5.1.2" +mdurl@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/mdurl/-/mdurl-1.0.1.tgz#fe85b2ec75a59037f2adfec100fd6c601761152e" + integrity sha512-/sKlQJCBYVY9Ers9hqzKou4H6V5UWc/M59TH2dvkt+84itfnq7uFOMLpOiOS4ujvHP4etln18fmIxA5R5fll0g== + media-typer@0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748" @@ -16454,7 +17306,7 @@ mime-db@1.52.0, "mime-db@>= 1.43.0 < 2": resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.52.0.tgz#bbabcdc02859f4987301c856e3387ce5ec43bf70" integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg== -mime-types@^2.0.8, mime-types@^2.1.12, mime-types@^2.1.16, mime-types@~2.1.19, mime-types@~2.1.24, mime-types@~2.1.34: +mime-types@^2.0.8, mime-types@^2.1.12, mime-types@^2.1.16, mime-types@^2.1.35, mime-types@~2.1.19, mime-types@~2.1.24, mime-types@~2.1.34: version "2.1.35" resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.35.tgz#381a871b62a734450660ae3deee44813f70d959a" integrity sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw== @@ -16563,6 +17415,20 @@ minimatch@^5.0.1, minimatch@^5.1.0: dependencies: brace-expansion "^2.0.1" +minimatch@^6.1.6: + version "6.2.0" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-6.2.0.tgz#2b70fd13294178c69c04dfc05aebdb97a4e79e42" + integrity sha512-sauLxniAmvnhhRjFwPNnJKaPFYyddAgbYdeUpHULtCT/GhzdCx/MDNy+Y40lBxTQUrMzDE8e0S43Z5uqfO0REg== + dependencies: + brace-expansion "^2.0.1" + +minimatch@^9.0.1: + version "9.0.3" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-9.0.3.tgz#a6e00c3de44c3a542bfaae70abfc22420a6da825" + integrity sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg== + dependencies: + brace-expansion "^2.0.1" + minimist-options@4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/minimist-options/-/minimist-options-4.1.0.tgz#c0655713c53a8a2ebd77ffa247d342c40f010619" @@ -16611,6 +17477,17 @@ minipass-fetch@^2.0.3: optionalDependencies: encoding "^0.1.13" +minipass-fetch@^3.0.0: + version "3.0.3" + resolved "https://registry.yarnpkg.com/minipass-fetch/-/minipass-fetch-3.0.3.tgz#d9df70085609864331b533c960fd4ffaa78d15ce" + integrity sha512-n5ITsTkDqYkYJZjcRWzZt9qnZKCT7nKCosJhHoj7S7zD+BP4jVbWs+odsniw5TA3E0sLomhTKOKjF86wf11PuQ== + dependencies: + minipass "^5.0.0" + minipass-sized "^1.0.3" + minizlib "^2.1.2" + optionalDependencies: + encoding "^0.1.13" + minipass-flush@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/minipass-flush/-/minipass-flush-1.0.5.tgz#82e7135d7e89a50ffe64610a787953c4c4cbb373" @@ -16660,6 +17537,16 @@ minipass@^4.0.0: resolved "https://registry.yarnpkg.com/minipass/-/minipass-4.2.8.tgz#f0010f64393ecfc1d1ccb5f582bcaf45f48e1a3a" integrity sha512-fNzuVyifolSLFL4NzpF+wEF4qrgqaaKX0haXPQEdQ7NKAN+WecoKMHV09YcuL/DHxrUsYQOK3MiuDf7Ip2OXfQ== +minipass@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/minipass/-/minipass-5.0.0.tgz#3e9788ffb90b694a5d0ec94479a45b5d8738133d" + integrity sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ== + +"minipass@^5.0.0 || ^6.0.2 || ^7.0.0": + version "7.0.2" + resolved "https://registry.yarnpkg.com/minipass/-/minipass-7.0.2.tgz#58a82b7d81c7010da5bd4b2c0c85ac4b4ec5131e" + integrity sha512-eL79dXrE1q9dBbDCLg7xfn/vl7MS4F1gvJAgjJrQli/jbQWdUttuVawphqpffoIYfRdq78LHx6GP4bU/EQ2ATA== + minizlib@^1.3.3: version "1.3.3" resolved "https://registry.yarnpkg.com/minizlib/-/minizlib-1.3.3.tgz#2290de96818a34c29551c8a8d301216bd65a861d" @@ -17287,7 +18174,7 @@ node-addon-api@^4.2.0, node-addon-api@^4.3.0: resolved "https://registry.yarnpkg.com/node-addon-api/-/node-addon-api-4.3.0.tgz#52a1a0b475193e0928e98e0426a0d1254782b77f" integrity sha512-73sE9+3UaLYYFmDsFZnqCInzPyh3MqIwZO9cw58yIqAZhONrrabrYyYe3TuIqtIiOuTXVhsGau8hcrhhwSsDIQ== -node-emoji@^1.4.1: +node-emoji@^1.11.0, node-emoji@^1.4.1: version "1.11.0" resolved "https://registry.yarnpkg.com/node-emoji/-/node-emoji-1.11.0.tgz#69a0150e6946e2f115e9d7ea4df7971e2628301c" integrity sha512-wo2DpQkQp7Sjm2A0cq+sN7EHKO6Sl0ctXeBdFZrL9T9+UywORbufTcTZxom8YqpLQt/FqNMUkOpkZrJVYSKD3A== @@ -17404,6 +18291,23 @@ node-gyp@^9.0.0, node-gyp@^9.3.0: tar "^6.1.2" which "^2.0.2" +node-gyp@^9.4.0: + version "9.4.0" + resolved "https://registry.yarnpkg.com/node-gyp/-/node-gyp-9.4.0.tgz#2a7a91c7cba4eccfd95e949369f27c9ba704f369" + integrity sha512-dMXsYP6gc9rRbejLXmTbVRYjAHw7ppswsKyMxuxJxxOHzluIO1rGp9TOQgjFJ+2MCqcOcQTOPB/8Xwhr+7s4Eg== + dependencies: + env-paths "^2.2.0" + exponential-backoff "^3.1.1" + glob "^7.1.4" + graceful-fs "^4.2.6" + make-fetch-happen "^11.0.3" + nopt "^6.0.0" + npmlog "^6.0.0" + rimraf "^3.0.2" + semver "^7.3.5" + tar "^6.1.2" + which "^2.0.2" + node-hid@2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/node-hid/-/node-hid-2.1.1.tgz#f83c8aa0bb4e6758b5f7383542477da93f67359d" @@ -18014,6 +18918,13 @@ openapi3-ts@^2.0.1: dependencies: yaml "^1.10.2" +openapi3-ts@^3.1.1: + version "3.2.0" + resolved "https://registry.yarnpkg.com/openapi3-ts/-/openapi3-ts-3.2.0.tgz#7e30d33c480e938e67e809ab16f419bc9beae3f8" + integrity sha512-/ykNWRV5Qs0Nwq7Pc0nJ78fgILvOT/60OxEmB3v7yQ8a8Bwcm43D4diaYazG/KBn6czA+52XYy931WFLMCUeSg== + dependencies: + yaml "^2.2.1" + opencollective-postinstall@^2.0.2: version "2.0.3" resolved "https://registry.yarnpkg.com/opencollective-postinstall/-/opencollective-postinstall-2.0.3.tgz#7a0fff978f6dbfa4d006238fbac98ed4198c3259" @@ -18277,6 +19188,20 @@ pac-proxy-agent@^5.0.0: raw-body "^2.2.0" socks-proxy-agent "5" +pac-proxy-agent@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/pac-proxy-agent/-/pac-proxy-agent-7.0.0.tgz#db42120c64292685dafaf2bd921e223c56bfb13b" + integrity sha512-t4tRAMx0uphnZrio0S0Jw9zg3oDbz1zVhQ/Vy18FjLfP1XOLNUEjaVxYCYRI6NS+BsMBXKIzV6cTLOkO9AtywA== + dependencies: + "@tootallnate/quickjs-emscripten" "^0.23.0" + agent-base "^7.0.2" + debug "^4.3.4" + get-uri "^6.0.1" + http-proxy-agent "^7.0.0" + https-proxy-agent "^7.0.0" + pac-resolver "^7.0.0" + socks-proxy-agent "^8.0.1" + pac-resolver@^5.0.0: version "5.0.1" resolved "https://registry.yarnpkg.com/pac-resolver/-/pac-resolver-5.0.1.tgz#c91efa3a9af9f669104fa2f51102839d01cde8e7" @@ -18286,6 +19211,15 @@ pac-resolver@^5.0.0: ip "^1.1.5" netmask "^2.0.2" +pac-resolver@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/pac-resolver/-/pac-resolver-7.0.0.tgz#79376f1ca26baf245b96b34c339d79bff25e900c" + integrity sha512-Fd9lT9vJbHYRACT8OhCbZBbxr6KRSawSovFpy8nDGshaK99S/EBhVIHp9+crhxrsZOuvLpgL1n23iyPg6Rl2hg== + dependencies: + degenerator "^5.0.0" + ip "^1.1.8" + netmask "^2.0.2" + package-json@^6.3.0: version "6.5.0" resolved "https://registry.yarnpkg.com/package-json/-/package-json-6.5.0.tgz#6feedaca35e75725876d0b0e64974697fed145b0" @@ -18563,6 +19497,14 @@ path-parse@^1.0.7: resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735" integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== +path-scurry@^1.10.1: + version "1.10.1" + resolved "https://registry.yarnpkg.com/path-scurry/-/path-scurry-1.10.1.tgz#9ba6bf5aa8500fe9fd67df4f0d9483b2b0bfc698" + integrity sha512-MkhCqzzBEpPvxxQ71Md0b1Kk51W01lrYvlMzSUaIzNsODdd7mqhiimSZlr+VegAz5Z6Vzt9Xg2ttE//XBhH3EQ== + dependencies: + lru-cache "^9.1.1 || ^10.0.0" + minipass "^5.0.0 || ^6.0.2 || ^7.0.0" + path-to-regexp@0.1.7: version "0.1.7" resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-0.1.7.tgz#df604178005f522f15eb4490e7247a1bfaa67f8c" @@ -18810,7 +19752,7 @@ popper.js@1.14.3: resolved "https://registry.yarnpkg.com/popper.js/-/popper.js-1.14.3.tgz#1438f98d046acf7b4d78cd502bf418ac64d4f095" integrity sha512-3lmujhsHXzb83+sI0PzfrE3O1XHZG8m8MXNMTupvA6LrM1/nnsiqYaacYc/RIente9VqnTDPztGEM8uvPAMGyg== -portfinder@^1.0.23: +portfinder@^1.0.23, portfinder@^1.0.32: version "1.0.32" resolved "https://registry.yarnpkg.com/portfinder/-/portfinder-1.0.32.tgz#2fe1b9e58389712429dc2bea5beb2146146c7f81" integrity sha512-on2ZJVVDXRADWE6jnQaX0ioEylzgBpQk8r55NE4wjXW1ZxO+BgDlY6DXwj20i0V8eB4SenDQ00WEaxfiIQPcxg== @@ -19209,6 +20151,11 @@ promise-breaker@^5.0.0: resolved "https://registry.yarnpkg.com/promise-breaker/-/promise-breaker-5.0.0.tgz#58e8541f1619554057da95a211794d7834d30c1d" integrity sha512-mgsWQuG4kJ1dtO6e/QlNDLFtMkMzzecsC69aI5hlLEjGHFNpHrvGhFi4LiK5jg2SMQj74/diH+wZliL9LpGsyA== +promise-breaker@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/promise-breaker/-/promise-breaker-6.0.0.tgz#107d2b70f161236abdb4ac5a736c7eb8df489d0f" + integrity sha512-BthzO9yTPswGf7etOBiHCVuugs2N01/Q/94dIPls48z2zCmrnDptUUZzfIb+41xq0MnYZ/BzmOd6ikDR4ibNZA== + promise-call-limit@^1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/promise-call-limit/-/promise-call-limit-1.0.2.tgz#f64b8dd9ef7693c9c7613e7dfe8d6d24de3031ea" @@ -19311,6 +20258,29 @@ proto3-json-serializer@^0.1.8: dependencies: protobufjs "^6.11.2" +proto3-json-serializer@^1.0.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/proto3-json-serializer/-/proto3-json-serializer-1.1.1.tgz#1b5703152b6ce811c5cdcc6468032caf53521331" + integrity sha512-AwAuY4g9nxx0u52DnSMkqqgyLHaW/XaPLtaAo3y/ZCfeaQB/g4YDH4kb8Wc/mWzWvu0YjOznVnfn373MVZZrgw== + dependencies: + protobufjs "^7.0.0" + +protobufjs-cli@1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/protobufjs-cli/-/protobufjs-cli-1.1.1.tgz#f531201b1c8c7772066aa822bf9a08318b24a704" + integrity sha512-VPWMgIcRNyQwWUv8OLPyGQ/0lQY/QTQAVN5fh+XzfDwsVw1FZ2L3DM/bcBf8WPiRz2tNpaov9lPZfNcmNo6LXA== + dependencies: + chalk "^4.0.0" + escodegen "^1.13.0" + espree "^9.0.0" + estraverse "^5.1.0" + glob "^8.0.0" + jsdoc "^4.0.0" + minimist "^1.2.0" + semver "^7.1.2" + tmp "^0.2.1" + uglify-js "^3.7.7" + protobufjs@6.11.2: version "6.11.2" resolved "https://registry.yarnpkg.com/protobufjs/-/protobufjs-6.11.2.tgz#de39fabd4ed32beaa08e9bb1e30d08544c1edf8b" @@ -19349,6 +20319,24 @@ protobufjs@6.11.3, protobufjs@^6.10.0, protobufjs@^6.11.2, protobufjs@^6.11.3, p "@types/node" ">=13.7.0" long "^4.0.0" +protobufjs@7.2.4, protobufjs@^7.2.2: + version "7.2.4" + resolved "https://registry.yarnpkg.com/protobufjs/-/protobufjs-7.2.4.tgz#3fc1ec0cdc89dd91aef9ba6037ba07408485c3ae" + integrity sha512-AT+RJgD2sH8phPmCf7OUZR8xGdcJRga4+1cOaXJ64hvcSkVhNcRHOwIxUatPH15+nj59WAGTDv3LSGZPEQbJaQ== + dependencies: + "@protobufjs/aspromise" "^1.1.2" + "@protobufjs/base64" "^1.1.2" + "@protobufjs/codegen" "^2.0.4" + "@protobufjs/eventemitter" "^1.1.0" + "@protobufjs/fetch" "^1.1.0" + "@protobufjs/float" "^1.0.2" + "@protobufjs/inquire" "^1.1.0" + "@protobufjs/path" "^1.1.2" + "@protobufjs/pool" "^1.1.0" + "@protobufjs/utf8" "^1.1.0" + "@types/node" ">=13.7.0" + long "^5.0.0" + protobufjs@^5.0.3: version "5.0.3" resolved "https://registry.yarnpkg.com/protobufjs/-/protobufjs-5.0.3.tgz#e4dfe9fb67c90b2630d15868249bcc4961467a17" @@ -19404,6 +20392,20 @@ proxy-agent@^5.0.0: proxy-from-env "^1.0.0" socks-proxy-agent "^5.0.0" +proxy-agent@^6.3.0: + version "6.3.0" + resolved "https://registry.yarnpkg.com/proxy-agent/-/proxy-agent-6.3.0.tgz#72f7bb20eb06049db79f7f86c49342c34f9ba08d" + integrity sha512-0LdR757eTj/JfuU7TL2YCuAZnxWXu3tkJbg4Oq3geW/qFNT/32T0sp2HnZ9O0lMR4q3vwAt0+xCA8SR0WAD0og== + dependencies: + agent-base "^7.0.2" + debug "^4.3.4" + http-proxy-agent "^7.0.0" + https-proxy-agent "^7.0.0" + lru-cache "^7.14.1" + pac-proxy-agent "^7.0.0" + proxy-from-env "^1.1.0" + socks-proxy-agent "^8.0.1" + proxy-from-env@^1.0.0, proxy-from-env@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/proxy-from-env/-/proxy-from-env-1.1.0.tgz#e102f16ca355424865755d2c9e8ea4f24d58c3e2" @@ -19697,6 +20699,15 @@ re2@^1.15.8: nan "^2.17.0" node-gyp "^9.3.0" +re2@^1.17.7: + version "1.20.1" + resolved "https://registry.yarnpkg.com/re2/-/re2-1.20.1.tgz#27450f6de6299635f50305a670cc15ac30687f85" + integrity sha512-JbzIoI5adNCqGUK8wHG1dMSyggvPyA4kx2hewt1lma5sP7/iWCfM15XKbCZlX2yvu5k80jSKAOQqJF7KC+2n8Q== + dependencies: + install-artifact-from-github "^1.3.3" + nan "^2.17.0" + node-gyp "^9.4.0" + react-is@^18.0.0: version "18.2.0" resolved "https://registry.yarnpkg.com/react-is/-/react-is-18.2.0.tgz#199431eeaaa2e09f86427efbb4f1473edb47609b" @@ -19993,7 +21004,14 @@ registry-auth-token@^4.0.0: dependencies: rc "1.2.8" -registry-url@^5.0.0: +registry-auth-token@^5.0.1: + version "5.0.2" + resolved "https://registry.yarnpkg.com/registry-auth-token/-/registry-auth-token-5.0.2.tgz#8b026cc507c8552ebbe06724136267e63302f756" + integrity sha512-o/3ikDxtXaA59BmZuZrJZDJv8NMDGSj+6j6XaeBmHw8eY1i1qd9+6H+LjVvQXx3HN6aRCGa1cUdJ9RaJZUugnQ== + dependencies: + "@pnpm/npm-conf" "^2.1.0" + +registry-url@^5.0.0, registry-url@^5.1.0: version "5.1.0" resolved "https://registry.yarnpkg.com/registry-url/-/registry-url-5.1.0.tgz#e98334b50d5434b81136b44ec638d9c2009c5009" integrity sha512-8acYXXTI0AkQv6RAOjE3vOaIXZkT9wo4LOFbBKYQEEnnMNBpKqdUrI6S4NT0KPIo/WVvJ5tE/X5LF/TQUf0ekw== @@ -20133,6 +21151,13 @@ requires-port@^1.0.0: resolved "https://registry.yarnpkg.com/requires-port/-/requires-port-1.0.0.tgz#925d2601d39ac485e091cf0da5c6e694dc3dcaff" integrity sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ== +requizzle@^0.2.3: + version "0.2.4" + resolved "https://registry.yarnpkg.com/requizzle/-/requizzle-0.2.4.tgz#319eb658b28c370f0c20f968fa8ceab98c13d27c" + integrity sha512-JRrFk1D4OQ4SqovXOgdav+K8EAhSB/LJZqCz8tbX0KObcdeM15Ss59ozWMBWmmINMagCwmqn4ZNryUGpBsl6Jw== + dependencies: + lodash "^4.17.21" + reselect-tree@^1.3.7: version "1.3.7" resolved "https://registry.yarnpkg.com/reselect-tree/-/reselect-tree-1.3.7.tgz#c3eca58765d9df96bae0017f6ff3504c304cdea0" @@ -20264,7 +21289,15 @@ retry-request@^4.0.0, retry-request@^4.2.2: debug "^4.1.1" extend "^3.0.2" -retry@0.13.1: +retry-request@^5.0.0: + version "5.0.2" + resolved "https://registry.yarnpkg.com/retry-request/-/retry-request-5.0.2.tgz#143d85f90c755af407fcc46b7166a4ba520e44da" + integrity sha512-wfI3pk7EE80lCIXprqh7ym48IHYdwmAAzESdbU8Q9l7pnRCk9LEhpbOTNKjz6FARLm/Bl5m+4F0ABxOkYUujSQ== + dependencies: + debug "^4.1.1" + extend "^3.0.2" + +retry@0.13.1, retry@^0.13.1: version "0.13.1" resolved "https://registry.yarnpkg.com/retry/-/retry-0.13.1.tgz#185b1587acf67919d63b357349e03537b2484658" integrity sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg== @@ -20605,6 +21638,13 @@ semver@^6.0.0, semver@^6.1.1, semver@^6.1.2, semver@^6.2.0, semver@^6.3.0: resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== +semver@^7.1.2, semver@^7.5.2: + 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== + dependencies: + lru-cache "^6.0.0" + semver@~5.4.1: version "5.4.1" resolved "https://registry.yarnpkg.com/semver/-/semver-5.4.1.tgz#e059c09d8571f0540823733433505d3a2f00b18e" @@ -20800,6 +21840,11 @@ signal-exit@^3.0.0, signal-exit@^3.0.2, signal-exit@^3.0.3, signal-exit@^3.0.7: resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.7.tgz#a9a1767f8af84155114eaabd73f99273c8f59ad9" integrity sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ== +signal-exit@^4.0.1: + version "4.1.0" + resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-4.1.0.tgz#952188c1cbd546070e2dd20d0f41c0ae0530cb04" + integrity sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw== + simple-concat@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/simple-concat/-/simple-concat-1.0.1.tgz#f46976082ba35c2263f1c8ab5edfe26c41c9552f" @@ -20954,7 +21999,16 @@ socks-proxy-agent@^7.0.0: debug "^4.3.3" socks "^2.6.2" -socks@^2.3.3, socks@^2.6.2: +socks-proxy-agent@^8.0.1: + version "8.0.1" + resolved "https://registry.yarnpkg.com/socks-proxy-agent/-/socks-proxy-agent-8.0.1.tgz#ffc5859a66dac89b0c4dab90253b96705f3e7120" + integrity sha512-59EjPbbgg8U3x62hhKOFVAmySQUcfRQ4C7Q/D5sEHnZTQRrQlNKINks44DMR1gwXp0p4LaVIeccX2KHTTcHVqQ== + dependencies: + agent-base "^7.0.1" + debug "^4.3.4" + socks "^2.7.1" + +socks@^2.3.3, socks@^2.6.2, socks@^2.7.1: version "2.7.1" resolved "https://registry.yarnpkg.com/socks/-/socks-2.7.1.tgz#d8e651247178fde79c0663043e07240196857d55" integrity sha512-7maUZy1N7uo6+WVEX6psASxtNlKaNVMlGQKkG/63nEDdLOWNbiUMoLK7X4uYoLhQstau72mLgfEWcXcwsaHbYQ== @@ -21242,6 +22296,13 @@ sshpk@^1.7.0: safer-buffer "^2.0.2" tweetnacl "~0.14.0" +ssri@^10.0.0: + version "10.0.4" + resolved "https://registry.yarnpkg.com/ssri/-/ssri-10.0.4.tgz#5a20af378be586df139ddb2dfb3bf992cf0daba6" + integrity sha512-12+IR2CB2C28MMAw0Ncqwj5QbTcs0nGIhgJzYWzDkb21vWmfNI83KS4f3Ci6GI98WreIfG7o9UXp3C0qbpA8nQ== + dependencies: + minipass "^5.0.0" + ssri@^8.0.0, ssri@^8.0.1: version "8.0.1" resolved "https://registry.yarnpkg.com/ssri/-/ssri-8.0.1.tgz#638e4e439e2ffbd2cd289776d5ca457c4f51a2af" @@ -21308,6 +22369,11 @@ stoppable@^1.1.0: resolved "https://registry.yarnpkg.com/stoppable/-/stoppable-1.1.0.tgz#32da568e83ea488b08e4d7ea2c3bcc9d75015d5b" integrity sha512-KXDYZ9dszj6bzvnEMRYvxgeTHU74QBFL54XKtP3nyMuJ81CFYtABZ3bAzL2EdFUaEwJOBOgENyFj3R7oTzDyyw== +stream-chain@^2.2.4, stream-chain@^2.2.5: + version "2.2.5" + resolved "https://registry.yarnpkg.com/stream-chain/-/stream-chain-2.2.5.tgz#b30967e8f14ee033c5b9a19bbe8a2cba90ba0d09" + integrity sha512-1TJmBx6aSWqZ4tx7aTpBDXK0/e2hhcNSTV8+CbFJtDjbb+I1mZ8lHit0Grw9GRT+6JbIrrDd8esncgBi8aBXGA== + stream-events@^1.0.1, stream-events@^1.0.4, stream-events@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/stream-events/-/stream-events-1.0.5.tgz#bbc898ec4df33a4902d892333d47da9bf1c406d5" @@ -21315,6 +22381,13 @@ stream-events@^1.0.1, stream-events@^1.0.4, stream-events@^1.0.5: dependencies: stubs "^3.0.0" +stream-json@^1.7.3: + version "1.8.0" + resolved "https://registry.yarnpkg.com/stream-json/-/stream-json-1.8.0.tgz#53f486b2e3b4496c506131f8d7260ba42def151c" + integrity sha512-HZfXngYHUAr1exT4fxlbc1IOce1RYxp2ldeaf97LYCOPSoOqY/1Psp7iGvpb+6JIOgkra9zDYnPX01hGAHzEPw== + dependencies: + stream-chain "^2.2.5" + stream-shift@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/stream-shift/-/stream-shift-1.0.1.tgz#d7088281559ab2778424279b0877da3c392d5a3d" @@ -21350,6 +22423,15 @@ string-length@^4.0.1: char-regex "^1.0.2" strip-ansi "^6.0.0" +"string-width-cjs@npm:string-width@^4.2.0", "string-width@^1.0.2 || 2 || 3 || 4", string-width@^4.0.0, string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.2, string-width@^4.2.3: + version "4.2.3" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" + integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== + dependencies: + emoji-regex "^8.0.0" + is-fullwidth-code-point "^3.0.0" + strip-ansi "^6.0.1" + string-width@^1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/string-width/-/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3" @@ -21367,15 +22449,6 @@ string-width@^1.0.1: is-fullwidth-code-point "^2.0.0" strip-ansi "^4.0.0" -"string-width@^1.0.2 || 2 || 3 || 4", string-width@^4.0.0, string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.2, string-width@^4.2.3: - version "4.2.3" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" - integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== - dependencies: - emoji-regex "^8.0.0" - is-fullwidth-code-point "^3.0.0" - strip-ansi "^6.0.1" - string-width@^3.0.0, string-width@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/string-width/-/string-width-3.1.0.tgz#22767be21b62af1081574306f69ac51b62203961" @@ -21385,6 +22458,15 @@ string-width@^3.0.0, string-width@^3.1.0: is-fullwidth-code-point "^2.0.0" strip-ansi "^5.1.0" +string-width@^5.0.1, string-width@^5.1.2: + version "5.1.2" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-5.1.2.tgz#14f8daec6d81e7221d2a357e668cab73bdbca794" + integrity sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA== + dependencies: + eastasianwidth "^0.2.0" + emoji-regex "^9.2.2" + strip-ansi "^7.0.1" + string.prototype.trim@^1.2.7, string.prototype.trim@~1.2.7: version "1.2.7" resolved "https://registry.yarnpkg.com/string.prototype.trim/-/string.prototype.trim-1.2.7.tgz#a68352740859f6893f14ce3ef1bb3037f7a90533" @@ -21431,6 +22513,13 @@ string_decoder@~1.1.1: dependencies: safe-buffer "~5.1.0" +"strip-ansi-cjs@npm:strip-ansi@^6.0.1", strip-ansi@^6.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-ansi@^3.0.0, strip-ansi@^3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf" @@ -21452,12 +22541,12 @@ strip-ansi@^5.0.0, strip-ansi@^5.1.0, strip-ansi@^5.2.0: dependencies: ansi-regex "^4.1.0" -strip-ansi@^6.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== +strip-ansi@^7.0.1: + version "7.1.0" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-7.1.0.tgz#d5b6568ca689d8561370b0707685d22434faff45" + integrity sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ== dependencies: - ansi-regex "^5.0.1" + ansi-regex "^6.0.1" strip-bom@^2.0.0: version "2.0.0" @@ -21527,11 +22616,16 @@ strip-json-comments@3.0.1: resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.0.1.tgz#85713975a91fb87bf1b305cca77395e40d2a64a7" integrity sha512-VTyMAUfdm047mwKl+u79WIdrZxtFtn+nBxHeb844XBQ9uMNTuTHdx2hc5RiAJYqwTj3wc/xe5HLSdJSkJ+WfZw== -strip-json-comments@3.1.1, strip-json-comments@^3.1.1: +strip-json-comments@3.1.1, strip-json-comments@^3.1.0, strip-json-comments@^3.1.1: version "3.1.1" resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006" integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== +strnum@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/strnum/-/strnum-1.0.5.tgz#5c4e829fe15ad4ff0d20c3db5ac97b73c9b072db" + integrity sha512-J8bbNyKKXl5qYcR36TIO8W3mVGVHrmmxsd5PAItGkmyzwJvybiw2IVq5nqd0i4LSNSkB/sx9VHllbfFdr9k1JA== + strong-log-transformer@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/strong-log-transformer/-/strong-log-transformer-2.1.0.tgz#0f5ed78d325e0421ac6f90f7f10e691d6ae3ae10" @@ -21604,6 +22698,32 @@ superstatic@^7.1.0: optionalDependencies: re2 "^1.15.8" +superstatic@^9.0.3: + version "9.0.3" + resolved "https://registry.yarnpkg.com/superstatic/-/superstatic-9.0.3.tgz#eb271841e971d9c3760f6d4b3adca5db00f29f18" + integrity sha512-e/tmW0bsnQ/33ivK6y3CapJT0Ovy4pk/ohNPGhIAGU2oasoNLRQ1cv6enua09NU9w6Y0H/fBu07cjzuiWvLXxw== + dependencies: + basic-auth-connect "^1.0.0" + commander "^10.0.0" + compression "^1.7.0" + connect "^3.7.0" + destroy "^1.0.4" + fast-url-parser "^1.1.3" + glob-slasher "^1.0.1" + is-url "^1.2.2" + join-path "^1.1.1" + lodash "^4.17.19" + mime-types "^2.1.35" + minimatch "^6.1.6" + morgan "^1.8.2" + on-finished "^2.2.0" + on-headers "^1.0.0" + path-to-regexp "^1.8.0" + router "^1.3.1" + update-notifier-cjs "^5.1.6" + optionalDependencies: + re2 "^1.17.7" + supertest@^6.2.3: version "6.3.3" resolved "https://registry.yarnpkg.com/supertest/-/supertest-6.3.3.tgz#42f4da199fee656106fd422c094cf6c9578141db" @@ -21674,7 +22794,7 @@ supports-hyperlinks@^1.0.1: has-flag "^2.0.0" supports-color "^5.0.0" -supports-hyperlinks@^2.1.0: +supports-hyperlinks@^2.1.0, supports-hyperlinks@^2.3.0: version "2.3.0" resolved "https://registry.yarnpkg.com/supports-hyperlinks/-/supports-hyperlinks-2.3.0.tgz#3943544347c1ff90b15effb03fc14ae45ec10624" integrity sha512-RpsAZlpWcDwOPQA22aCH4J0t7L8JmAvsCxfOSEwm7cQs3LshN36QaTkwd70DnBOXDWGssw2eUoc8CaRWT0XunA== @@ -21868,7 +22988,7 @@ tarn@^3.0.2: resolved "https://registry.yarnpkg.com/tarn/-/tarn-3.0.2.tgz#73b6140fbb881b71559c4f8bfde3d9a4b3d27693" integrity sha512-51LAVKUSZSVfI05vjPESNc5vwqqZpbXCsU+/+wxlOrUjk2SnFTt97v9ZgQrD4YmxYW1Px6w2KjaDitCfkvgxMQ== -tcp-port-used@^1.0.1: +tcp-port-used@^1.0.1, tcp-port-used@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/tcp-port-used/-/tcp-port-used-1.0.2.tgz#9652b7436eb1f4cfae111c79b558a25769f6faea" integrity sha512-l7ar8lLUD3XS1V2lfoJlCBaeoaWo/2xfYt81hM7VlvR4RrMVFqfmzfhLVk40hAb368uitje5gPtBRL1m/DGvLA== @@ -21931,6 +23051,17 @@ teeny-request@^7.1.3: stream-events "^1.0.5" uuid "^8.0.0" +teeny-request@^8.0.0: + version "8.0.3" + resolved "https://registry.yarnpkg.com/teeny-request/-/teeny-request-8.0.3.tgz#5cb9c471ef5e59f2fca8280dc3c5909595e6ca24" + integrity sha512-jJZpA5He2y52yUhA7pyAGZlgQpcB+xLjcN0eUFxr9c8hP/H7uOXbBNVo/O0C/xVfJLJs680jvkFgVJEEvk9+ww== + dependencies: + http-proxy-agent "^5.0.0" + https-proxy-agent "^5.0.0" + node-fetch "^2.6.1" + stream-events "^1.0.5" + uuid "^9.0.0" + temp-dir@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/temp-dir/-/temp-dir-1.0.0.tgz#0a7c0ea26d3a39afa7e0ebea9c1fc0bc4daa011d" @@ -21963,6 +23094,11 @@ testrpc@0.0.1: resolved "https://registry.yarnpkg.com/testrpc/-/testrpc-0.0.1.tgz#83e2195b1f5873aec7be1af8cbe6dcf39edb7aed" integrity sha512-afH1hO+SQ/VPlmaLUFj2636QMeDvPCeQMc/9RBMW0IfjNe9gFD9Ra3ShqYkB7py0do1ZcCna/9acHyzTJ+GcNA== +text-decoding@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/text-decoding/-/text-decoding-1.0.0.tgz#38a5692d23b5c2b12942d6e245599cb58b1bc52f" + integrity sha512-/0TJD42KDnVwKmDK6jj3xP7E2MG7SHAOG4tyTgyUCRPdHwvkquYNLEQltmdMa3owq3TkddCVcTsoctJI8VQNKA== + text-extensions@^1.0.0: version "1.9.0" resolved "https://registry.yarnpkg.com/text-extensions/-/text-extensions-1.9.0.tgz#1853e45fee39c945ce6f6c36b2d659b5aabc2a26" @@ -22128,7 +23264,7 @@ tmp@^0.1.0: dependencies: rimraf "^2.6.3" -tmp@~0.2.1: +tmp@^0.2.1, tmp@~0.2.1: version "0.2.1" resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.2.1.tgz#8457fc3037dcf4719c251367a1af6500ee1ccf14" integrity sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ== @@ -22340,6 +23476,11 @@ truffle@5.9.0: optionalDependencies: "@truffle/db" "^2.0.24" +ts-deepmerge@^2.0.1: + version "2.0.7" + resolved "https://registry.yarnpkg.com/ts-deepmerge/-/ts-deepmerge-2.0.7.tgz#36786a9a10b5f3a6f5154007cf17bfba7251e0a7" + integrity sha512-3phiGcxPSSR47RBubQxPoZ+pqXsEsozLo4G4AlSrsMKTFg9TA3l+3he5BqpUi9wiuDbaHWXH/amlzQ49uEdXtg== + ts-essentials@^1.0.0: version "1.0.4" resolved "https://registry.yarnpkg.com/ts-essentials/-/ts-essentials-1.0.4.tgz#ce3b5dade5f5d97cf69889c11bf7d2da8555b15a" @@ -22626,6 +23767,11 @@ type-fest@^0.8.1: resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.8.1.tgz#09e249ebde851d3b1e48d27c105444667f17b83d" integrity sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA== +type-fest@^3.0.0: + version "3.13.1" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-3.13.1.tgz#bb744c1f0678bea7543a2d1ec24e83e68e8c8706" + integrity sha512-tLq3bSNx+xSpwvAJnzrK0Ep5CLNWjvFTOp71URMaAEWBfRb9nnJiBoUe0tF8bI4ZFO3omgBR6NvnbzVUT3Ly4g== + type-is@~1.6.18: version "1.6.18" resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.18.tgz#4e552cd05df09467dcbc4ef739de89f2cf37c131" @@ -22790,7 +23936,12 @@ typical@^2.6.0, typical@^2.6.1: resolved "https://registry.yarnpkg.com/typical/-/typical-2.6.1.tgz#5c080e5d661cbbe38259d2e70a3c7253e873881d" integrity sha512-ofhi8kjIje6npGozTip9Fr8iecmYfEbS06i0JnIg+rh51KakryWF4+jX8lLKZVhy6N+ID45WYSFCxPOdTWCzNg== -uglify-js@^3.1.4: +uc.micro@^1.0.1, uc.micro@^1.0.5: + version "1.0.6" + resolved "https://registry.yarnpkg.com/uc.micro/-/uc.micro-1.0.6.tgz#9c411a802a409a91fc6cf74081baba34b24499ac" + integrity sha512-8Y75pvTYkLJW2hWQHXxoqRgV7qb9B+9vFEtidML+7koHUFapnVJAZ6cKs+Qjz5Aw3aZWHMC6u0wJE3At+nSGwA== + +uglify-js@^3.1.4, uglify-js@^3.7.7: version "3.17.4" resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.17.4.tgz#61678cf5fa3f5b7eb789bb345df29afb8257c22c" integrity sha512-T9q82TJI9e/C1TAxYvfb16xO120tMVFZrGA3f9/P4424DNu6ypK103y0GPFVa17yotwSyZW5iYXgjYHkGrJW/g== @@ -22838,7 +23989,7 @@ underscore@1.9.1: resolved "https://registry.yarnpkg.com/underscore/-/underscore-1.9.1.tgz#06dce34a0e68a7babc29b365b8e74b8925203961" integrity sha512-5/4etnCkd9c8gwgowi5/om/mYO5ajCaOgdzj/oW+0eQV9WxKBDZw5+ycmKmeaTXjInS/W0BzpGLo2xR2aBwZdg== -underscore@>1.4.4, "underscore@>= 1.3.1": +underscore@>1.4.4, "underscore@>= 1.3.1", underscore@~1.13.2: version "1.13.6" resolved "https://registry.yarnpkg.com/underscore/-/underscore-1.13.6.tgz#04786a1f589dc6c09f761fc5f45b89e935136441" integrity sha512-+A5Sja4HP1M08MaXya7p5LvjuM7K6q/2EaC0+iovj/wOcMsTzMvDFbasi/oSapiwOlt252IqsKqPjCl7huKS0A== @@ -22867,6 +24018,13 @@ unique-filename@^2.0.0: dependencies: unique-slug "^3.0.0" +unique-filename@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/unique-filename/-/unique-filename-3.0.0.tgz#48ba7a5a16849f5080d26c760c86cf5cf05770ea" + integrity sha512-afXhuC55wkAmZ0P18QsVE6kp8JaxrEokN2HGIoIVv2ijHQd419H0+6EigAFcIzXeMIkcIkNBpB3L/DXB3cTS/g== + dependencies: + unique-slug "^4.0.0" + unique-slug@^2.0.0: version "2.0.2" resolved "https://registry.yarnpkg.com/unique-slug/-/unique-slug-2.0.2.tgz#baabce91083fc64e945b0f3ad613e264f7cd4e6c" @@ -22881,6 +24039,13 @@ unique-slug@^3.0.0: dependencies: imurmurhash "^0.1.4" +unique-slug@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/unique-slug/-/unique-slug-4.0.0.tgz#6bae6bb16be91351badd24cdce741f892a6532e3" + integrity sha512-WrcA6AyEfqDX5bWige/4NQfPZMtASNVxdmWR76WESYQVAACSgWcR6e9i0mofqqBxYFtL4oAxPIptY73/0YE1DQ== + dependencies: + imurmurhash "^0.1.4" + unique-string@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/unique-string/-/unique-string-1.0.0.tgz#9e1057cca851abb93398f8b33ae187b99caec11a" @@ -22904,6 +24069,14 @@ universal-analytics@^0.4.16: request "^2.88.2" uuid "^3.0.0" +universal-analytics@^0.5.3: + version "0.5.3" + resolved "https://registry.yarnpkg.com/universal-analytics/-/universal-analytics-0.5.3.tgz#ff2d9b850062cdd4a8f652448047982a183c8e96" + integrity sha512-HXSMyIcf2XTvwZ6ZZQLfxfViRm/yTGoRgDeTbojtq6rezeyKB0sTBcKH2fhddnteAHRcHiKgr/ACpbgjGOC6RQ== + dependencies: + debug "^4.3.1" + uuid "^8.0.0" + universal-user-agent@^6.0.0: version "6.0.0" resolved "https://registry.yarnpkg.com/universal-user-agent/-/universal-user-agent-6.0.0.tgz#3381f8503b251c0d9cd21bc1de939ec9df5480ee" @@ -22971,6 +24144,28 @@ update-browserslist-db@^1.0.10: escalade "^3.1.1" picocolors "^1.0.0" +update-notifier-cjs@^5.1.6: + version "5.1.6" + resolved "https://registry.yarnpkg.com/update-notifier-cjs/-/update-notifier-cjs-5.1.6.tgz#6e3aff745d1551b55bb0a0a5939b7e636d95877d" + integrity sha512-wgxdSBWv3x/YpMzsWz5G4p4ec7JWD0HCl8W6bmNB6E5Gwo+1ym5oN4hiXpLf0mPySVEJEIsYlkshnplkg2OP9A== + dependencies: + boxen "^5.0.0" + chalk "^4.1.0" + configstore "^5.0.1" + has-yarn "^2.1.0" + import-lazy "^2.1.0" + is-ci "^2.0.0" + is-installed-globally "^0.4.0" + is-npm "^5.0.0" + is-yarn-global "^0.3.0" + isomorphic-fetch "^3.0.0" + pupa "^2.1.1" + registry-auth-token "^5.0.1" + registry-url "^5.1.0" + semver "^7.3.7" + semver-diff "^3.1.1" + xdg-basedir "^4.0.0" + update-notifier@^4.1.1: version "4.1.3" resolved "https://registry.yarnpkg.com/update-notifier/-/update-notifier-4.1.3.tgz#be86ee13e8ce48fb50043ff72057b5bd598e1ea3" @@ -24982,6 +26177,15 @@ workerpool@6.2.1: resolved "https://registry.yarnpkg.com/workerpool/-/workerpool-6.2.1.tgz#46fc150c17d826b86a008e5a4508656777e9c343" integrity sha512-ILEIE97kDZvF9Wb9f6h5aXK4swSlKGUcOEGiIYb2OOu/IrDU9iwj0fD//SsA6E5ibwJxpEvhullJY4Sl4GcpAw== +"wrap-ansi-cjs@npm:wrap-ansi@^7.0.0", wrap-ansi@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" + integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== + dependencies: + ansi-styles "^4.0.0" + string-width "^4.1.0" + strip-ansi "^6.0.0" + wrap-ansi@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-2.1.0.tgz#d8fc3d284dd05794fe84973caecdd1cf824fdd85" @@ -25007,7 +26211,7 @@ wrap-ansi@^5.1.0: string-width "^3.0.0" strip-ansi "^5.0.0" -wrap-ansi@^6.2.0: +wrap-ansi@^6.0.1, wrap-ansi@^6.2.0: version "6.2.0" resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-6.2.0.tgz#e9393ba07102e6c91a3b221478f0257cd2856e53" integrity sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA== @@ -25016,14 +26220,14 @@ wrap-ansi@^6.2.0: string-width "^4.1.0" strip-ansi "^6.0.0" -wrap-ansi@^7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" - integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== +wrap-ansi@^8.1.0: + version "8.1.0" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-8.1.0.tgz#56dc22368ee570face1b49819975d9b9a5ead214" + integrity sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ== dependencies: - ansi-styles "^4.0.0" - string-width "^4.1.0" - strip-ansi "^6.0.0" + ansi-styles "^6.1.0" + string-width "^5.0.1" + strip-ansi "^7.0.1" wrappy@1: version "1.0.2" @@ -25205,6 +26409,11 @@ xmlbuilder@~11.0.0: resolved "https://registry.yarnpkg.com/xmlbuilder/-/xmlbuilder-11.0.1.tgz#be9bae1c8a046e76b31127726347d0ad7002beb3" integrity sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA== +xmlcreate@^2.0.4: + version "2.0.4" + resolved "https://registry.yarnpkg.com/xmlcreate/-/xmlcreate-2.0.4.tgz#0c5ab0f99cdd02a81065fa9cd8f8ae87624889be" + integrity sha512-nquOebG4sngPmGPICTS5EnxqhKbCmz5Ox5hsszI2T6U5qdrJizBc+0ilYSEjTSzU0yZcmvppztXe/5Al5fUwdg== + xmlhttprequest@*, xmlhttprequest@1.8.0: version "1.8.0" resolved "https://registry.yarnpkg.com/xmlhttprequest/-/xmlhttprequest-1.8.0.tgz#67fe075c5c24fef39f9d65f5f7b7fe75171968fc" @@ -25280,6 +26489,11 @@ yaml@^1.10.0, yaml@^1.10.2: resolved "https://registry.yarnpkg.com/yaml/-/yaml-1.10.2.tgz#2301c5ffbf12b467de8da2333a459e29e7920e4b" integrity sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg== +yaml@^2.2.1: + version "2.3.1" + resolved "https://registry.yarnpkg.com/yaml/-/yaml-2.3.1.tgz#02fe0975d23cd441242aa7204e09fc28ac2ac33b" + integrity sha512-2eHWfjaoXgTBC2jNM1LRef62VQa0umtvRiDSk6HSzW7RvS5YtkabJrwYLLEKWBc8a5U2PTSCs+dJjUTJdlHsWQ== + yargs-parser@13.1.2, yargs-parser@^13.1.1, yargs-parser@^13.1.2: version "13.1.2" resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-13.1.2.tgz#130f09702ebaeef2650d54ce6e3e5706f7a4fb38" From cffecf975ee4521dd57cbb1ecbb102817868c6f4 Mon Sep 17 00:00:00 2001 From: Edwin Date: Wed, 16 Aug 2023 01:02:35 +0200 Subject: [PATCH 04/31] Add logic for getTotalPendingWithdrawalsCount (#10488) * Add logic for getTotalPendingWithdrawalsCount * Update contract kit. * Add logic for getPendingWithdrawal. * Remove unneded change. * Update indices. * Add some cases. * Fix version. --- .../contracts/governance/LockedGold.sol | 11 +++++++- .../test/governance/voting/lockedgold.ts | 24 ++++++++++++++++ .../src/wrappers/LockedGold.test.ts | 28 +++++++++++++++++++ .../contractkit/src/wrappers/LockedGold.ts | 26 +++++++++++++++++ 4 files changed, 88 insertions(+), 1 deletion(-) diff --git a/packages/protocol/contracts/governance/LockedGold.sol b/packages/protocol/contracts/governance/LockedGold.sol index 843346a6707..a8f69ebbefc 100644 --- a/packages/protocol/contracts/governance/LockedGold.sol +++ b/packages/protocol/contracts/governance/LockedGold.sol @@ -84,7 +84,7 @@ contract LockedGold is * @return Patch version of the contract. */ function getVersionNumber() external pure returns (uint256, uint256, uint256, uint256) { - return (1, 1, 2, 2); + return (1, 1, 3, 0); } /** @@ -331,6 +331,15 @@ contract LockedGold is return (pendingWithdrawal.value, pendingWithdrawal.timestamp); } + /** + * @notice Returns the number of pending withdrawals for the specified account. + * @param account The address of the account. + * @return The count of pending withdrawals. + */ + function getTotalPendingWithdrawalsCount(address account) external view returns (uint256) { + return balances[account].pendingWithdrawals.length; + } + /** * @notice Returns the total amount to withdraw from unlocked gold for an account. * @param account The address of the account. diff --git a/packages/protocol/test/governance/voting/lockedgold.ts b/packages/protocol/test/governance/voting/lockedgold.ts index 7ce4b6960fb..e2948ade54f 100644 --- a/packages/protocol/test/governance/voting/lockedgold.ts +++ b/packages/protocol/test/governance/voting/lockedgold.ts @@ -819,4 +819,28 @@ contract('LockedGold', (accounts: string[]) => { assertEqualBN(await lockedGold.getAccountTotalLockedGold(reporter), reward) }) }) + + describe('#getTotalPendingWithdrawalsCount()', () => { + it('should return 0 if account has no pending withdrawals', async () => { + const count = await lockedGold.getTotalPendingWithdrawalsCount(account) + assert.equal(count.toNumber(), 0) + }) + + it('should return the count of pending withdrawals', async () => { + const value = 10000 + // @ts-ignore + await lockedGold.lock({ value }) + await lockedGold.unlock(value / 2) + await lockedGold.unlock(value / 2) + + const count = await lockedGold.getTotalPendingWithdrawalsCount(account) + assert.equal(count.toNumber(), 2) + }) + + it('should return 0 for a non-existent account', async () => { + const nonExistentAccount = '0xdeadbeefdeadbeefdeadbeefdeadbeefdeadbeef' + const count = await lockedGold.getTotalPendingWithdrawalsCount(nonExistentAccount) + assert.equal(count.toNumber(), 0) + }) + }) }) diff --git a/packages/sdk/contractkit/src/wrappers/LockedGold.test.ts b/packages/sdk/contractkit/src/wrappers/LockedGold.test.ts index eb16e538c97..07950be8bce 100644 --- a/packages/sdk/contractkit/src/wrappers/LockedGold.test.ts +++ b/packages/sdk/contractkit/src/wrappers/LockedGold.test.ts @@ -43,4 +43,32 @@ testWithGanache('LockedGold Wrapper', (web3) => { await Promise.all(txos.map((txo) => txo.sendAndWaitForReceipt())) // }) + + test('should return the count of pending withdrawals', async () => { + await lockedGold.lock().sendAndWaitForReceipt({ value: value * 2 }) + await lockedGold.unlock(value).sendAndWaitForReceipt() + await lockedGold.unlock(value).sendAndWaitForReceipt() + + const count = await lockedGold.getTotalPendingWithdrawalsCount(account) + expect(count).toEqBigNumber(2) + }) + + test('should return zero when there are no pending withdrawals', async () => { + const count = await lockedGold.getTotalPendingWithdrawalsCount(account) + expect(count).toEqBigNumber(0) + }) + + test('should return the pending withdrawal at a given index', async () => { + await lockedGold.lock().sendAndWaitForReceipt({ value: value * 2 }) + await lockedGold.unlock(value).sendAndWaitForReceipt() + const pendingWithdrawal = await lockedGold.getPendingWithdrawal(account, 0) + + expect(pendingWithdrawal.value).toEqBigNumber(value) + }) + + test('should throw an error for an invalid index', async () => { + await expect(lockedGold.getPendingWithdrawal(account, 999)).rejects.toThrow( + 'Bad pending withdrawal index' + ) + }) }) diff --git a/packages/sdk/contractkit/src/wrappers/LockedGold.ts b/packages/sdk/contractkit/src/wrappers/LockedGold.ts index e0497344b32..806d73f5078 100644 --- a/packages/sdk/contractkit/src/wrappers/LockedGold.ts +++ b/packages/sdk/contractkit/src/wrappers/LockedGold.ts @@ -236,6 +236,21 @@ export class LockedGoldWrapper extends BaseWrapperForGoverning { ) } + /** + * Returns the pending withdrawal at a given index for a given account. + * @param account The address of the account. + * @param index The index of the pending withdrawal. + * @return The value of the pending withdrawal. + * @return The timestamp of the pending withdrawal. + */ + async getPendingWithdrawal(account: string, index: number) { + const response = await this.contract.methods.getPendingWithdrawal(account, index).call() + return { + value: valueToBigNumber(response[0]), + time: valueToBigNumber(response[1]), + } + } + /** * Retrieves AccountSlashed for epochNumber. * @param epochNumber The epoch to retrieve AccountSlashed at. @@ -314,6 +329,17 @@ export class LockedGoldWrapper extends BaseWrapperForGoverning { } return res } + + /** + * Returns the number of pending withdrawals for the specified account. + * @param account The account. + * @returns The count of pending withdrawals. + */ + getTotalPendingWithdrawalsCount = proxyCall( + this.contract.methods.getTotalPendingWithdrawalsCount, + undefined, + valueToBigNumber + ) } export type LockedGoldWrapperType = LockedGoldWrapper From 76ddc364e9f066e0c637b8611692eabf31b015dc Mon Sep 17 00:00:00 2001 From: soloseng <102702451+soloseng@users.noreply.github.com> Date: Sat, 19 Aug 2023 15:16:07 -0400 Subject: [PATCH 05/31] Soloseng/cleanup-legacy-config (#10503) * update pnpcommon README, release sdks script, combiner deps * Update packages/phone-number-privacy/common/README.md Co-authored-by: soloseng <102702451+soloseng@users.noreply.github.com> * Soloseng/firebase-dep-update (#10468) * bump firebase version * format `minInstances` to number * updated peer dependecy * Soloseng/fix-test-quota-bypass (#10471) * enable optional quota bypass during load test. * moved log to better track failed signers * increase the range test sessionID * odis crypto op metering (#10461) add metering * Soloseng/loadtest-with-DEK (#10482) * add option to use DEK in loadtest * Added monitoring counter for AuthenticationMethod * randomized phonenumber to avoid replay attempts * removed ODIS legacy PNP config setters * clean install --------- Co-authored-by: alecps --- packages/celotool/src/lib/env-utils.ts | 2 - packages/celotool/src/lib/odis.ts | 1 - .../odis/templates/signer-deployment.yaml | 1 - .../phone-number-privacy/signer/README.md | 2 - yarn.lock | 1160 ++++++++++++++++- 5 files changed, 1142 insertions(+), 24 deletions(-) diff --git a/packages/celotool/src/lib/env-utils.ts b/packages/celotool/src/lib/env-utils.ts index db12c6ae8e0..26f8147443c 100644 --- a/packages/celotool/src/lib/env-utils.ts +++ b/packages/celotool/src/lib/env-utils.ts @@ -111,7 +111,6 @@ export enum envVar { ODIS_SIGNER_BLOCKCHAIN_PROVIDER = 'ODIS_SIGNER_BLOCKCHAIN_PROVIDER', ODIS_SIGNER_DOMAINS_API_ENABLED = 'ODIS_SIGNER_DOMAINS_API_ENABLED', ODIS_SIGNER_PNP_API_ENABLED = 'ODIS_SIGNER_PNP_API_ENABLED', - ODIS_SIGNER_LEGACY_PNP_API_ENABLED = 'ODIS_SIGNER_LEGACY_PNP_API_ENABLED', ORACLE_DOCKER_IMAGE_REPOSITORY = 'ORACLE_DOCKER_IMAGE_REPOSITORY', ORACLE_DOCKER_IMAGE_TAG = 'ORACLE_DOCKER_IMAGE_TAG', ORACLE_UNUSED_ORACLE_ADDRESSES = 'ORACLE_UNUSED_ORACLE_ADDRESSES', @@ -208,7 +207,6 @@ export enum DynamicEnvVar { ODIS_SIGNER_AZURE_KEYVAULT_DOMAINS_KEY_LATEST_VERSION = '{{ context }}_ODIS_SIGNER_AZURE_KEYVAULT_DOMAINS_KEY_LATEST_VERSION', ODIS_SIGNER_DOMAINS_API_ENABLED = '{{ context }}_ODIS_SIGNER_DOMAINS_API_ENABLED', ODIS_SIGNER_PHONE_NUMBER_PRIVACY_API_ENABLED = '{{ context }}_ODIS_SIGNER_PNP_API_ENABLED', - ODIS_SIGNER_LEGACY_PHONE_NUMBER_PRIVACY_API_ENABLED = '{{ context }}_ODIS_SIGNER_LEGACY_PNP_API_ENABLED', ODIS_SIGNER_DB_HOST = '{{ context }}_ODIS_SIGNER_DB_HOST', ODIS_SIGNER_DB_PORT = '{{ context }}_ODIS_SIGNER_DB_PORT', ODIS_SIGNER_DB_USERNAME = '{{ context }}_ODIS_SIGNER_DB_USERNAME', diff --git a/packages/celotool/src/lib/odis.ts b/packages/celotool/src/lib/odis.ts index 6bed913c055..8a27e704738 100644 --- a/packages/celotool/src/lib/odis.ts +++ b/packages/celotool/src/lib/odis.ts @@ -169,7 +169,6 @@ async function helmParameters(celoEnv: string, context: string) { `--set keystore.pnpKeyLatestVersion=${keyVaultConfig.pnpKeyLatestVersion}`, `--set keystore.domainsKeyLatestVersion=${keyVaultConfig.domainsKeyLatestVersion}`, `--set api.pnpAPIEnabled=${fetchEnv(envVar.ODIS_SIGNER_PNP_API_ENABLED)}`, - `--set api.legacyPnpAPIEnabled=${fetchEnv(envVar.ODIS_SIGNER_LEGACY_PNP_API_ENABLED)}`, `--set api.domainsAPIEnabled=${fetchEnv(envVar.ODIS_SIGNER_DOMAINS_API_ENABLED)}`, `--set blockchainProvider=${fetchEnv(envVar.ODIS_SIGNER_BLOCKCHAIN_PROVIDER)}`, `--set blockchainApiKey=${blockchainConfig.blockchainApiKey}`, diff --git a/packages/helm-charts/odis/templates/signer-deployment.yaml b/packages/helm-charts/odis/templates/signer-deployment.yaml index a49fb358279..b6eb4dde19c 100644 --- a/packages/helm-charts/odis/templates/signer-deployment.yaml +++ b/packages/helm-charts/odis/templates/signer-deployment.yaml @@ -52,7 +52,6 @@ spec: {{ include "common.env-var" (dict "name" "DOMAINS_LATEST_KEY_VERSION" "dict" .Values.keystore "value_name" "domainsKeyLatestVersion") | indent 12 }} {{ include "common.env-var" (dict "name" "DOMAINS_API_ENABLED" "dict" .Values.api "value_name" "domainsAPIEnabled") | indent 12 }} {{ include "common.env-var" (dict "name" "PHONE_NUMBER_PRIVACY_API_ENABLED" "dict" .Values.api "value_name" "pnpAPIEnabled") | indent 12 }} -{{ include "common.env-var" (dict "name" "LEGACY_PHONE_NUMBER_PRIVACY_API_ENABLED" "dict" .Values.api "value_name" "legacyPnpAPIEnabled") | indent 12 }} - name: DB_PASSWORD valueFrom: secretKeyRef: diff --git a/packages/phone-number-privacy/signer/README.md b/packages/phone-number-privacy/signer/README.md index 8d6a2944c84..6e4ee0f8fc6 100644 --- a/packages/phone-number-privacy/signer/README.md +++ b/packages/phone-number-privacy/signer/README.md @@ -6,7 +6,6 @@ A service that generates unique partial signatures for blinded messages. Using a ODIS v2 provides support for three APIs, which need to be explicitly enabled ([see below](#enabling-apis-odis-v2) for configuration info): -- **Legacy PNP API**: retrieve signatures for blinded messages, rate-limited using ODIS v1's scheme, based on an account's transaction history and verification status. - **PNP API**: retrieve signatures for blinded messages, rate-limited based on quota purchased on-chain in `OdisPayments.sol`. - **Domains API**: retrieve signatures over domains with custom rate-limiting schemes, as defined in more detail in [CIP-40](https://github.com/celo-org/celo-proposals/blob/master/CIPs/cip-0040.md). @@ -25,7 +24,6 @@ You can use the following environment variables to configure the ODIS Signer ser Each API must be explicitly enabled by setting the following env vars to true (all are false by default): -- `LEGACY_PHONE_NUMBER_PRIVACY_API_ENABLED` - `PHONE_NUMBER_PRIVACY_API_ENABLED` - `DOMAINS_API_ENABLED` diff --git a/yarn.lock b/yarn.lock index ff6d71927ab..b61a69db38a 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2230,6 +2230,14 @@ dependencies: semver "^5.5.0" +"@grpc/grpc-js@^1.7.1": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@grpc/grpc-js/-/grpc-js-1.9.0.tgz#bdb599e339adabb16aa7243e70c311f75a572867" + integrity sha512-H8+iZh+kCE6VR/Krj6W28Y/ZlxoZ1fOzsNt77nrdE3knkbSelW1Uus192xOFCxHyeszLj8i4APQkSIXjAoOxXg== + dependencies: + "@grpc/proto-loader" "^0.7.0" + "@types/node" ">=12.12.47" + "@grpc/grpc-js@~1.6.0": version "1.6.12" resolved "https://registry.yarnpkg.com/@grpc/grpc-js/-/grpc-js-1.6.12.tgz#20f710d8a8c5c396b2ae9530ba6c06b984614fdf" @@ -2287,6 +2295,77 @@ protobufjs "^7.0.0" yargs "^16.2.0" +"@hapi/b64@5.x.x": + version "5.0.0" + resolved "https://registry.yarnpkg.com/@hapi/b64/-/b64-5.0.0.tgz#b8210cbd72f4774985e78569b77e97498d24277d" + integrity sha512-ngu0tSEmrezoiIaNGG6rRvKOUkUuDdf4XTPnONHGYfSGRmDqPZX5oJL6HAdKTo1UQHECbdB4OzhWrfgVppjHUw== + dependencies: + "@hapi/hoek" "9.x.x" + +"@hapi/boom@9.x.x", "@hapi/boom@^9.0.0": + version "9.1.4" + resolved "https://registry.yarnpkg.com/@hapi/boom/-/boom-9.1.4.tgz#1f9dad367c6a7da9f8def24b4a986fc5a7bd9db6" + integrity sha512-Ls1oH8jaN1vNsqcaHVYJrKmgMcKsC1wcp8bujvXrHaAqD2iDYq3HoOwsxwo09Cuda5R5nC0o0IxlrlTuvPuzSw== + dependencies: + "@hapi/hoek" "9.x.x" + +"@hapi/bourne@2.x.x": + version "2.1.0" + resolved "https://registry.yarnpkg.com/@hapi/bourne/-/bourne-2.1.0.tgz#66aff77094dc3080bd5df44ec63881f2676eb020" + integrity sha512-i1BpaNDVLJdRBEKeJWkVO6tYX6DMFBuwMhSuWqLsY4ufeTKGVuV5rBsUhxPayXqnnWHgXUAmWK16H/ykO5Wj4Q== + +"@hapi/cryptiles@5.x.x": + version "5.1.0" + resolved "https://registry.yarnpkg.com/@hapi/cryptiles/-/cryptiles-5.1.0.tgz#655de4cbbc052c947f696148c83b187fc2be8f43" + integrity sha512-fo9+d1Ba5/FIoMySfMqPBR/7Pa29J2RsiPrl7bkwo5W5o+AN1dAYQRi4SPrPwwVxVGKjgLOEWrsvt1BonJSfLA== + dependencies: + "@hapi/boom" "9.x.x" + +"@hapi/hoek@9.x.x", "@hapi/hoek@^9.0.0": + version "9.3.0" + resolved "https://registry.yarnpkg.com/@hapi/hoek/-/hoek-9.3.0.tgz#8368869dcb735be2e7f5cb7647de78e167a251fb" + integrity sha512-/c6rf4UJlmHlC9b5BaNvzAcFv7HZ2QHaV0D4/HNlBdvFnvQq8RI4kYdhyPCl7Xj+oWvTWQ8ujhqS53LIgAe6KQ== + +"@hapi/iron@^6.0.0": + version "6.0.0" + resolved "https://registry.yarnpkg.com/@hapi/iron/-/iron-6.0.0.tgz#ca3f9136cda655bdd6028de0045da0de3d14436f" + integrity sha512-zvGvWDufiTGpTJPG1Y/McN8UqWBu0k/xs/7l++HVU535NLHXsHhy54cfEMdW7EjwKfbBfM9Xy25FmTiobb7Hvw== + dependencies: + "@hapi/b64" "5.x.x" + "@hapi/boom" "9.x.x" + "@hapi/bourne" "2.x.x" + "@hapi/cryptiles" "5.x.x" + "@hapi/hoek" "9.x.x" + +"@hapi/podium@^4.1.3": + version "4.1.3" + resolved "https://registry.yarnpkg.com/@hapi/podium/-/podium-4.1.3.tgz#91e20838fc2b5437f511d664aabebbb393578a26" + integrity sha512-ljsKGQzLkFqnQxE7qeanvgGj4dejnciErYd30dbrYzUOF/FyS/DOF97qcrT3bhoVwCYmxa6PEMhxfCPlnUcD2g== + dependencies: + "@hapi/hoek" "9.x.x" + "@hapi/teamwork" "5.x.x" + "@hapi/validate" "1.x.x" + +"@hapi/teamwork@5.x.x": + version "5.1.1" + resolved "https://registry.yarnpkg.com/@hapi/teamwork/-/teamwork-5.1.1.tgz#4d2ba3cac19118a36c44bf49a3a47674de52e4e4" + integrity sha512-1oPx9AE5TIv+V6Ih54RP9lTZBso3rP8j4Xhb6iSVwPXtAM+sDopl5TFMv5Paw73UnpZJ9gjcrTE1BXrWt9eQrg== + +"@hapi/topo@^5.0.0": + version "5.1.0" + resolved "https://registry.yarnpkg.com/@hapi/topo/-/topo-5.1.0.tgz#dc448e332c6c6e37a4dc02fd84ba8d44b9afb012" + integrity sha512-foQZKJig7Ob0BMAYBfcJk8d77QtOe7Wo4ox7ff1lQYoNNAb6jwcY1ncdoy2e9wQZzvNy7ODZCYJkK8kzmcAnAg== + dependencies: + "@hapi/hoek" "^9.0.0" + +"@hapi/validate@1.x.x": + version "1.1.3" + resolved "https://registry.yarnpkg.com/@hapi/validate/-/validate-1.1.3.tgz#f750a07283929e09b51aa16be34affb44e1931ad" + integrity sha512-/XMR0N0wjw0Twzq2pQOzPBZlDzkekGcoCtzO314BpIEsbXdYGthQUbxgkGDf4nhk1+IPDAsXqWjMohRQYO06UA== + dependencies: + "@hapi/hoek" "^9.0.0" + "@hapi/topo" "^5.0.0" + "@hutson/parse-repository-url@^3.0.0": version "3.0.2" resolved "https://registry.yarnpkg.com/@hutson/parse-repository-url/-/parse-repository-url-3.0.2.tgz#98c23c950a3d9b6c8f0daed06da6c3af06981340" @@ -4080,11 +4159,658 @@ dependencies: "@octokit/openapi-types" "^17.0.0" -"@opentelemetry/api@^1.0.0": +"@opentelemetry/api-logs@0.41.2": + version "0.41.2" + resolved "https://registry.yarnpkg.com/@opentelemetry/api-logs/-/api-logs-0.41.2.tgz#600c9b3d79018e7421d2ff7189f41b6d2c987d6a" + integrity sha512-JEV2RAqijAFdWeT6HddYymfnkiRu2ASxoTBr4WsnGJhOjWZkEy6vp+Sx9ozr1NaIODOa2HUyckExIqQjn6qywQ== + dependencies: + "@opentelemetry/api" "^1.0.0" + +"@opentelemetry/api@^1.0.0", "@opentelemetry/api@^1.4.1": version "1.4.1" resolved "https://registry.yarnpkg.com/@opentelemetry/api/-/api-1.4.1.tgz#ff22eb2e5d476fbc2450a196e40dd243cc20c28f" integrity sha512-O2yRJce1GOc6PAy3QxFM4NzFiWzvScDC1/5ihYBL6BUEVdq0XMWN01sppE+H6bBXbaFYipjwFLEWLg5PaSOThA== +"@opentelemetry/auto-instrumentations-node@^0.38.0": + version "0.38.0" + resolved "https://registry.yarnpkg.com/@opentelemetry/auto-instrumentations-node/-/auto-instrumentations-node-0.38.0.tgz#9841ebc87d696aff10cf1ad03b19f5b233868bd2" + integrity sha512-lQXiUAGs79+SkaTycwmtamzH0bsXpGOccl2jNFDztZrCvMn2xD4TJkKm5PuoFp9fnRgtY/vEJck+ViefJnSCdA== + dependencies: + "@opentelemetry/instrumentation" "^0.41.0" + "@opentelemetry/instrumentation-amqplib" "^0.33.0" + "@opentelemetry/instrumentation-aws-lambda" "^0.36.0" + "@opentelemetry/instrumentation-aws-sdk" "^0.35.0" + "@opentelemetry/instrumentation-bunyan" "^0.32.0" + "@opentelemetry/instrumentation-cassandra-driver" "^0.33.0" + "@opentelemetry/instrumentation-connect" "^0.32.0" + "@opentelemetry/instrumentation-dataloader" "^0.5.0" + "@opentelemetry/instrumentation-dns" "^0.32.0" + "@opentelemetry/instrumentation-express" "^0.33.0" + "@opentelemetry/instrumentation-fastify" "^0.32.0" + "@opentelemetry/instrumentation-fs" "^0.8.0" + "@opentelemetry/instrumentation-generic-pool" "^0.32.0" + "@opentelemetry/instrumentation-graphql" "^0.35.0" + "@opentelemetry/instrumentation-grpc" "^0.41.0" + "@opentelemetry/instrumentation-hapi" "^0.32.0" + "@opentelemetry/instrumentation-http" "^0.41.0" + "@opentelemetry/instrumentation-ioredis" "^0.35.0" + "@opentelemetry/instrumentation-knex" "^0.32.0" + "@opentelemetry/instrumentation-koa" "^0.35.0" + "@opentelemetry/instrumentation-lru-memoizer" "^0.33.0" + "@opentelemetry/instrumentation-memcached" "^0.32.0" + "@opentelemetry/instrumentation-mongodb" "^0.36.0" + "@opentelemetry/instrumentation-mongoose" "^0.33.0" + "@opentelemetry/instrumentation-mysql" "^0.34.0" + "@opentelemetry/instrumentation-mysql2" "^0.34.0" + "@opentelemetry/instrumentation-nestjs-core" "^0.33.0" + "@opentelemetry/instrumentation-net" "^0.32.0" + "@opentelemetry/instrumentation-pg" "^0.36.0" + "@opentelemetry/instrumentation-pino" "^0.34.0" + "@opentelemetry/instrumentation-redis" "^0.35.0" + "@opentelemetry/instrumentation-redis-4" "^0.35.0" + "@opentelemetry/instrumentation-restify" "^0.33.0" + "@opentelemetry/instrumentation-router" "^0.33.0" + "@opentelemetry/instrumentation-socket.io" "^0.34.0" + "@opentelemetry/instrumentation-tedious" "^0.6.0" + "@opentelemetry/instrumentation-winston" "^0.32.0" + "@opentelemetry/resource-detector-alibaba-cloud" "^0.28.0" + "@opentelemetry/resource-detector-aws" "^1.3.0" + "@opentelemetry/resource-detector-container" "^0.3.0" + "@opentelemetry/resource-detector-gcp" "^0.29.0" + "@opentelemetry/resources" "^1.12.0" + "@opentelemetry/sdk-node" "^0.41.0" + tslib "^2.3.1" + +"@opentelemetry/context-async-hooks@1.15.2": + version "1.15.2" + resolved "https://registry.yarnpkg.com/@opentelemetry/context-async-hooks/-/context-async-hooks-1.15.2.tgz#116bd5fef231137198d5bf551e8c0521fbdfe928" + integrity sha512-VAMHG67srGFQDG/N2ns5AyUT9vUcoKpZ/NpJ5fDQIPfJd7t3ju+aHwvDsMcrYBWuCh03U3Ky6o16+872CZchBg== + +"@opentelemetry/core@1.15.2", "@opentelemetry/core@^1.0.0", "@opentelemetry/core@^1.1.0", "@opentelemetry/core@^1.8.0": + version "1.15.2" + resolved "https://registry.yarnpkg.com/@opentelemetry/core/-/core-1.15.2.tgz#5b170bf223a2333884bbc2d29d95812cdbda7c9f" + integrity sha512-+gBv15ta96WqkHZaPpcDHiaz0utiiHZVfm2YOYSqFGrUaJpPkMoSuLBB58YFQGi6Rsb9EHos84X6X5+9JspmLw== + dependencies: + "@opentelemetry/semantic-conventions" "1.15.2" + +"@opentelemetry/exporter-jaeger@1.15.2": + version "1.15.2" + resolved "https://registry.yarnpkg.com/@opentelemetry/exporter-jaeger/-/exporter-jaeger-1.15.2.tgz#1ac7020d798ec4e47417bd90e00763e0947e17de" + integrity sha512-BwYd5836GYvuiQcF4l5X0ca09jGJr/F37MMGyz94VH0b1dp0uYBwRJw2CQh56RlVZEdpKv29JyDRVZ/4UrRgLQ== + dependencies: + "@opentelemetry/core" "1.15.2" + "@opentelemetry/sdk-trace-base" "1.15.2" + "@opentelemetry/semantic-conventions" "1.15.2" + jaeger-client "^3.15.0" + +"@opentelemetry/exporter-trace-otlp-grpc@0.41.2": + version "0.41.2" + resolved "https://registry.yarnpkg.com/@opentelemetry/exporter-trace-otlp-grpc/-/exporter-trace-otlp-grpc-0.41.2.tgz#445f850f4675e0afc3e326b2663576fa0b5fbee4" + integrity sha512-tRM/mq7PFj7mXCws5ICMVp/rmgU93JvZdoLE0uLj4tugNz231u2ZgeRYXulBjdeHM88ZQSsWTJMu2mvr/3JV1A== + dependencies: + "@grpc/grpc-js" "^1.7.1" + "@opentelemetry/core" "1.15.2" + "@opentelemetry/otlp-grpc-exporter-base" "0.41.2" + "@opentelemetry/otlp-transformer" "0.41.2" + "@opentelemetry/resources" "1.15.2" + "@opentelemetry/sdk-trace-base" "1.15.2" + +"@opentelemetry/exporter-trace-otlp-http@0.41.2": + version "0.41.2" + resolved "https://registry.yarnpkg.com/@opentelemetry/exporter-trace-otlp-http/-/exporter-trace-otlp-http-0.41.2.tgz#4818088c652f2077a55c9c1364d8320e994dc00f" + integrity sha512-Y0fGLipjZXLMelWtlS1/MDtrPxf25oM408KukRdkN31a1MEFo4h/ZkNwS7ZfmqHGUa+4rWRt2bi6JBiqy7Ytgw== + dependencies: + "@opentelemetry/core" "1.15.2" + "@opentelemetry/otlp-exporter-base" "0.41.2" + "@opentelemetry/otlp-transformer" "0.41.2" + "@opentelemetry/resources" "1.15.2" + "@opentelemetry/sdk-trace-base" "1.15.2" + +"@opentelemetry/exporter-trace-otlp-proto@0.41.2": + version "0.41.2" + resolved "https://registry.yarnpkg.com/@opentelemetry/exporter-trace-otlp-proto/-/exporter-trace-otlp-proto-0.41.2.tgz#8e8f823d5264e34dc7c8b400f9d03871c7bfcbc5" + integrity sha512-IGZga9IIckqYE3IpRE9FO9G5umabObIrChlXUHYpMJtDgx797dsb3qXCvLeuAwB+HoB8NsEZstlzmLnoa6/HmA== + dependencies: + "@opentelemetry/core" "1.15.2" + "@opentelemetry/otlp-exporter-base" "0.41.2" + "@opentelemetry/otlp-proto-exporter-base" "0.41.2" + "@opentelemetry/otlp-transformer" "0.41.2" + "@opentelemetry/resources" "1.15.2" + "@opentelemetry/sdk-trace-base" "1.15.2" + +"@opentelemetry/exporter-zipkin@1.15.2": + version "1.15.2" + resolved "https://registry.yarnpkg.com/@opentelemetry/exporter-zipkin/-/exporter-zipkin-1.15.2.tgz#4f72482909fd7a197fb614fc1f285b15ca008a39" + integrity sha512-j9dPe8tyx4KqIqJAfZ/LCYfkF9+ggsT0V1+bVg9ZKTBNcLf5dTsTMdcxUxc/9s599kgcn6UERnti/tozbzwa6Q== + dependencies: + "@opentelemetry/core" "1.15.2" + "@opentelemetry/resources" "1.15.2" + "@opentelemetry/sdk-trace-base" "1.15.2" + "@opentelemetry/semantic-conventions" "1.15.2" + +"@opentelemetry/instrumentation-amqplib@^0.33.0": + version "0.33.1" + resolved "https://registry.yarnpkg.com/@opentelemetry/instrumentation-amqplib/-/instrumentation-amqplib-0.33.1.tgz#a459073939691a4a1dabf96ef7c1af168fb27e35" + integrity sha512-Eg797WDHVDcRr6+5tihh7ab+ZjS5yCOoW4PkUYCcJHVT31AGfi+PlkLgHknW+uT1oKijMC4D1p6jDa/2rzRv/g== + dependencies: + "@opentelemetry/core" "^1.8.0" + "@opentelemetry/instrumentation" "^0.41.2" + "@opentelemetry/semantic-conventions" "^1.0.0" + +"@opentelemetry/instrumentation-aws-lambda@^0.36.0": + version "0.36.0" + resolved "https://registry.yarnpkg.com/@opentelemetry/instrumentation-aws-lambda/-/instrumentation-aws-lambda-0.36.0.tgz#bfd3ffac407a1339fc0bdc9afb4bb9e2dfe2ef39" + integrity sha512-GkehkjN4vHTc5HNIBlKddrm+EVch2cNEfbLcV7tXLu0Hu95kt6PPOwxHDYRxgvu1auFpJY0epUzmPd11zI706A== + dependencies: + "@opentelemetry/instrumentation" "^0.41.0" + "@opentelemetry/propagator-aws-xray" "^1.3.0" + "@opentelemetry/resources" "^1.8.0" + "@opentelemetry/semantic-conventions" "^1.0.0" + "@types/aws-lambda" "8.10.81" + tslib "^2.3.1" + +"@opentelemetry/instrumentation-aws-sdk@^0.35.0": + version "0.35.0" + resolved "https://registry.yarnpkg.com/@opentelemetry/instrumentation-aws-sdk/-/instrumentation-aws-sdk-0.35.0.tgz#359f56c956afbf526d729e1e8f7d1c28347afaef" + integrity sha512-jKf2nuTe3kYhtINGmgaVlw54q5pgX959zK2abGdvoUSdSP3Pv36YwNZk1K+jAKCN4I71R8/Qp1driAuKKj/Kxg== + dependencies: + "@opentelemetry/core" "^1.8.0" + "@opentelemetry/instrumentation" "^0.41.0" + "@opentelemetry/propagation-utils" "^0.30.0" + "@opentelemetry/semantic-conventions" "^1.0.0" + tslib "^2.3.1" + +"@opentelemetry/instrumentation-bunyan@^0.32.0": + version "0.32.1" + resolved "https://registry.yarnpkg.com/@opentelemetry/instrumentation-bunyan/-/instrumentation-bunyan-0.32.1.tgz#ed315aa3ed6c5e47733c1c74d116c46a5ac1d468" + integrity sha512-TjH357ldA5DpK09XUDWffqV9Km++N9H0dwmxHrElM2TSe4Usgkgw6mlodbuh45hoVDD+cCPi+GO6Dq1QLVEdZg== + dependencies: + "@opentelemetry/instrumentation" "^0.41.2" + "@types/bunyan" "1.8.8" + +"@opentelemetry/instrumentation-cassandra-driver@^0.33.0": + version "0.33.1" + resolved "https://registry.yarnpkg.com/@opentelemetry/instrumentation-cassandra-driver/-/instrumentation-cassandra-driver-0.33.1.tgz#c68af7c975deb1e5793d2051ca327a5834a5037f" + integrity sha512-nn8XtLB1XmViEAnNnZ43jHojYxgNJ1W+QF2B3yBmfVqXJnE0IbzhIiPmU+Zx3ZSzIoWS0EQQM3ljcgDC03FZ7A== + dependencies: + "@opentelemetry/instrumentation" "^0.41.2" + "@opentelemetry/semantic-conventions" "^1.0.0" + +"@opentelemetry/instrumentation-connect@^0.32.0": + version "0.32.1" + resolved "https://registry.yarnpkg.com/@opentelemetry/instrumentation-connect/-/instrumentation-connect-0.32.1.tgz#020bcaf1b384e0c4a60b2023ffcdc89e998eb2c1" + integrity sha512-QHi0hTXtqZj3wSyvKwFmkGYHRnGdl8w76MHZj3Rekxe4ILpcn78fZGJSbA+0eYdOWHnGP0c483uMOeGH08XYmA== + dependencies: + "@opentelemetry/core" "^1.8.0" + "@opentelemetry/instrumentation" "^0.41.2" + "@opentelemetry/semantic-conventions" "^1.0.0" + "@types/connect" "3.4.35" + +"@opentelemetry/instrumentation-dataloader@^0.5.0": + version "0.5.1" + resolved "https://registry.yarnpkg.com/@opentelemetry/instrumentation-dataloader/-/instrumentation-dataloader-0.5.1.tgz#1b63770793ceedacb42051b22b6a5eb7b54b26d8" + integrity sha512-dqYITnlCo7FSZ8mhyxh9TtogwcebGcuMaXTjYDyIKGshDcjCxhvhNjFDe4y3RD/g/EFKINkYVkVXB1lDqZdxTA== + dependencies: + "@opentelemetry/instrumentation" "^0.41.2" + +"@opentelemetry/instrumentation-dns@^0.32.0": + version "0.32.1" + resolved "https://registry.yarnpkg.com/@opentelemetry/instrumentation-dns/-/instrumentation-dns-0.32.1.tgz#cb0e24e1e2f043112461e533aa7bdaf3389c3d7f" + integrity sha512-WtfwHITUUs2CkRCDT+hbSBy4+ltHIvQDbl/B7TZLQHwpZ6jTRQFsCBzPdhgND4XpHvsXDfLhQihguXyXRGILkg== + dependencies: + "@opentelemetry/instrumentation" "^0.41.2" + "@opentelemetry/semantic-conventions" "^1.0.0" + semver "^7.3.2" + +"@opentelemetry/instrumentation-express@^0.33.0": + version "0.33.1" + resolved "https://registry.yarnpkg.com/@opentelemetry/instrumentation-express/-/instrumentation-express-0.33.1.tgz#0710f839d2a395014d2ffef9390074bb60009841" + integrity sha512-awrpiTZWnLOCJ4TeDMTrs6/gH/oXbNipoPx3WUKQlA1yfMlpNynqokTyCYv1n10Zu9Y2P/nIhoNnUw0ywp61nA== + dependencies: + "@opentelemetry/core" "^1.8.0" + "@opentelemetry/instrumentation" "^0.41.2" + "@opentelemetry/semantic-conventions" "^1.0.0" + "@types/express" "4.17.17" + +"@opentelemetry/instrumentation-fastify@^0.32.0": + version "0.32.1" + resolved "https://registry.yarnpkg.com/@opentelemetry/instrumentation-fastify/-/instrumentation-fastify-0.32.1.tgz#59a2bcb9c0d233c9893ab3c73e951800caa87ab5" + integrity sha512-DGWWGAe8SCULvqlJpL2zJ7o1gYzmhAfKRjJrWmwyZshnjGEw3PQ3b1GHivoxZ6zB7D6ykttxanQovrAKk83WoA== + dependencies: + "@opentelemetry/core" "^1.8.0" + "@opentelemetry/instrumentation" "^0.41.2" + "@opentelemetry/semantic-conventions" "^1.0.0" + +"@opentelemetry/instrumentation-fs@^0.8.0": + version "0.8.1" + resolved "https://registry.yarnpkg.com/@opentelemetry/instrumentation-fs/-/instrumentation-fs-0.8.1.tgz#752f286d285374afd65e92ba721c9fa9119b67ac" + integrity sha512-a5U6ydfqVeT4Zp6GL5lZDZNJAmic3CCtgg/f2yqvnpq2fE0cyD/XlW9JWzGhAJaq29E1bxtb9FJ0n6ee3c9dYQ== + dependencies: + "@opentelemetry/core" "^1.8.0" + "@opentelemetry/instrumentation" "^0.41.2" + "@opentelemetry/semantic-conventions" "^1.0.0" + +"@opentelemetry/instrumentation-generic-pool@^0.32.0": + version "0.32.2" + resolved "https://registry.yarnpkg.com/@opentelemetry/instrumentation-generic-pool/-/instrumentation-generic-pool-0.32.2.tgz#dbe1283ccc832ef651f7082b0d1ed8357d2dbce9" + integrity sha512-HMAkKOfSZMKy4YfDLwSByR2q74pk3TMpSxgwWYLeezNpscnNAc4mtZtbWdUL62v8IaCXIc/qizwQYkcKqvGnZQ== + dependencies: + "@opentelemetry/instrumentation" "^0.41.2" + "@opentelemetry/semantic-conventions" "^1.0.0" + +"@opentelemetry/instrumentation-graphql@^0.35.0": + version "0.35.1" + resolved "https://registry.yarnpkg.com/@opentelemetry/instrumentation-graphql/-/instrumentation-graphql-0.35.1.tgz#e49ec2256bcc4820458688abac0212ac781864c0" + integrity sha512-bAM4W5wU0lZ1UIKK/5b4p8LEU8N6W+VgpcnUIK7GTTDxdhcWTd3Q6oyS6nauhZSzEnAEmmJVXaLQAGIU4sEkyA== + dependencies: + "@opentelemetry/instrumentation" "^0.41.2" + +"@opentelemetry/instrumentation-grpc@^0.41.0": + version "0.41.2" + resolved "https://registry.yarnpkg.com/@opentelemetry/instrumentation-grpc/-/instrumentation-grpc-0.41.2.tgz#38b51eda1bcb6bf8d422410fa4596b56b03e98ab" + integrity sha512-+fh9GUFv97p25CMreUv4OdP5L21hPgfX3d4fuQ0KIgIZIaX2M6/8cr5Ik+8zWsyhYzfFX3CKq6BXm3UBg7cswQ== + dependencies: + "@opentelemetry/instrumentation" "0.41.2" + "@opentelemetry/semantic-conventions" "1.15.2" + +"@opentelemetry/instrumentation-hapi@^0.32.0": + version "0.32.0" + resolved "https://registry.yarnpkg.com/@opentelemetry/instrumentation-hapi/-/instrumentation-hapi-0.32.0.tgz#59362dab5d2a2d7fdfe47bda0cd75dec923b0ece" + integrity sha512-Wl43lSVqqJZAxhWE1BWlV9yoInEOGiKeGqNhphoGJLqblmlF8Yxob1t2fK/wTj2srmmm1XU70olwhN09uOQxpg== + dependencies: + "@opentelemetry/core" "^1.8.0" + "@opentelemetry/instrumentation" "^0.41.0" + "@opentelemetry/semantic-conventions" "^1.0.0" + "@types/hapi__hapi" "20.0.9" + tslib "^2.3.1" + +"@opentelemetry/instrumentation-http@^0.41.0": + version "0.41.2" + resolved "https://registry.yarnpkg.com/@opentelemetry/instrumentation-http/-/instrumentation-http-0.41.2.tgz#dad5a693eaad2113ce7ed089fa46ef98d79f2bfc" + integrity sha512-dzOC6xkfK0LM6Dzo91aInLdSbdIzKA0IgSDnyLi6YZ0Z7c1bfrFncFx/3gZs8vi+KXLALgfMlpzE7IYDW/cM3A== + dependencies: + "@opentelemetry/core" "1.15.2" + "@opentelemetry/instrumentation" "0.41.2" + "@opentelemetry/semantic-conventions" "1.15.2" + semver "^7.5.1" + +"@opentelemetry/instrumentation-ioredis@^0.35.0": + version "0.35.1" + resolved "https://registry.yarnpkg.com/@opentelemetry/instrumentation-ioredis/-/instrumentation-ioredis-0.35.1.tgz#86d77dc0878707ab456ccebf78233cb0e7127635" + integrity sha512-lixraoS9rs81783QRjQ56/S5KzVBllC+zs7UJuTGODi5Egn/YMGp5lNnlbkUxeJl9LMyADMiP7ZGpQtfKwdc3g== + dependencies: + "@opentelemetry/instrumentation" "^0.41.2" + "@opentelemetry/redis-common" "^0.36.1" + "@opentelemetry/semantic-conventions" "^1.0.0" + "@types/ioredis4" "npm:@types/ioredis@^4.28.10" + +"@opentelemetry/instrumentation-knex@^0.32.0": + version "0.32.1" + resolved "https://registry.yarnpkg.com/@opentelemetry/instrumentation-knex/-/instrumentation-knex-0.32.1.tgz#0c21b1d35be82a9e1732879192a373b145453ed8" + integrity sha512-s+5BtsYUendDTrWAxkr50X3+kb+sVffFzp4z5DC+aZt52P/kF85wm6GyC1mREvvhhK2UKrCq2yMVKD90z0FKsA== + dependencies: + "@opentelemetry/instrumentation" "^0.41.2" + "@opentelemetry/semantic-conventions" "^1.0.0" + +"@opentelemetry/instrumentation-koa@^0.35.0": + version "0.35.0" + resolved "https://registry.yarnpkg.com/@opentelemetry/instrumentation-koa/-/instrumentation-koa-0.35.0.tgz#499ff61accd398e2444c0e52f008be88eec8fb33" + integrity sha512-Q/KclXdHKE3sGlalxxX43lx4b8eY5lv5LSdG3mY8aBsrmw1Mx6Cv4VAeqA4ecCygeapTmf9jjOLmgro15IJ3AQ== + dependencies: + "@opentelemetry/core" "^1.8.0" + "@opentelemetry/instrumentation" "^0.41.0" + "@opentelemetry/semantic-conventions" "^1.0.0" + "@types/koa" "2.13.6" + "@types/koa__router" "8.0.7" + tslib "^2.3.1" + +"@opentelemetry/instrumentation-lru-memoizer@^0.33.0": + version "0.33.1" + resolved "https://registry.yarnpkg.com/@opentelemetry/instrumentation-lru-memoizer/-/instrumentation-lru-memoizer-0.33.1.tgz#636343165dfd83ed66d14abdc19f0e4c070cb1a3" + integrity sha512-1FFOlGTEigMWppEkv7o+IyeyWTXXpFAfmcFjJRph5m88RsotgzPLCnxaSeS0GMU7E8UJplusNmmsnu7jPJ2YqA== + dependencies: + "@opentelemetry/instrumentation" "^0.41.2" + +"@opentelemetry/instrumentation-memcached@^0.32.0": + version "0.32.1" + resolved "https://registry.yarnpkg.com/@opentelemetry/instrumentation-memcached/-/instrumentation-memcached-0.32.1.tgz#7b21aa22d90d37f353d6cc2220c98390227f5396" + integrity sha512-laolY41/k6KHYnBQrWpnMlEK49/g8/OQBtvSiPdHiF46wW3eWpXmaTGMRksrRGUtyE+VMRhf7WIDRUYLZULP1g== + dependencies: + "@opentelemetry/instrumentation" "^0.41.2" + "@opentelemetry/semantic-conventions" "^1.0.0" + "@types/memcached" "^2.2.6" + +"@opentelemetry/instrumentation-mongodb@^0.36.0": + version "0.36.1" + resolved "https://registry.yarnpkg.com/@opentelemetry/instrumentation-mongodb/-/instrumentation-mongodb-0.36.1.tgz#a92e48f2cb4e2e2de430d900c96e21911709e137" + integrity sha512-//FdYXGcUO08Y1tVPXlcEvUYCnRU8tlBgYBe3ZMjF7E1GMaFti4Xy6sAHVreyl0ZQjBTaGtHdyORHIOTKUM4ZA== + dependencies: + "@opentelemetry/instrumentation" "^0.41.2" + "@opentelemetry/sdk-metrics" "^1.9.1" + "@opentelemetry/semantic-conventions" "^1.0.0" + +"@opentelemetry/instrumentation-mongoose@^0.33.0": + version "0.33.1" + resolved "https://registry.yarnpkg.com/@opentelemetry/instrumentation-mongoose/-/instrumentation-mongoose-0.33.1.tgz#0e37eed215fb7fbf8adc0e70199bb8992cb1ea21" + integrity sha512-IzYcEZSmlaOlkyACt8gTl0z3eEQafxzEAt/+W+FdNBiUdm81qpVx/1bpzJwSgIsgcLf27Dl5WsPmrSAi4+Bcng== + dependencies: + "@opentelemetry/core" "^1.8.0" + "@opentelemetry/instrumentation" "^0.41.2" + "@opentelemetry/semantic-conventions" "^1.0.0" + +"@opentelemetry/instrumentation-mysql2@^0.34.0": + version "0.34.1" + resolved "https://registry.yarnpkg.com/@opentelemetry/instrumentation-mysql2/-/instrumentation-mysql2-0.34.1.tgz#d7ce741a7d9a7da270fa791e1c64d8cedd58b5b7" + integrity sha512-SPwgLI2H+gH+GP7b5cWQlFqO/7UeHvw6ZzFKxwLr4vy8wmxYF4aBMLc8qVO8bdXFHd114v0IzOIAvpG6sl/zYQ== + dependencies: + "@opentelemetry/instrumentation" "^0.41.2" + "@opentelemetry/semantic-conventions" "^1.0.0" + "@opentelemetry/sql-common" "^0.40.0" + +"@opentelemetry/instrumentation-mysql@^0.34.0": + version "0.34.1" + resolved "https://registry.yarnpkg.com/@opentelemetry/instrumentation-mysql/-/instrumentation-mysql-0.34.1.tgz#9703d21615dd5ee6b9eda1d74029ba75eec46c9a" + integrity sha512-zQq7hN3ILm1vIJCGeKHRc4pTK8LOmkTt8oKWf0v+whFs7axieIhXZMoCqIBm6BigLy3Trg5iaKyuSrx7kO6q2g== + dependencies: + "@opentelemetry/instrumentation" "^0.41.2" + "@opentelemetry/semantic-conventions" "^1.0.0" + "@types/mysql" "2.15.21" + +"@opentelemetry/instrumentation-nestjs-core@^0.33.0": + version "0.33.1" + resolved "https://registry.yarnpkg.com/@opentelemetry/instrumentation-nestjs-core/-/instrumentation-nestjs-core-0.33.1.tgz#a6e0175bcda25e455339a5527268e746be969297" + integrity sha512-Y5Khvp8ODA6TuDcZKAc63cYDeeZAA/n0ceF0pcVCJwA2NBeD0hmTrCJXES2cvt7wVbHV/SYCu7OpYDQkNjbBWw== + dependencies: + "@opentelemetry/instrumentation" "^0.41.2" + "@opentelemetry/semantic-conventions" "^1.0.0" + +"@opentelemetry/instrumentation-net@^0.32.0": + version "0.32.1" + resolved "https://registry.yarnpkg.com/@opentelemetry/instrumentation-net/-/instrumentation-net-0.32.1.tgz#7b394b5250f160b46f2363d37c1ebe7c8c1ac6b7" + integrity sha512-r9YC8fFDi+B/JiNfMn+vJaOpgdA83bQM3u4mW9mJi2hAI/LcvjJYPx4aTRLWAPSd/HRG/Olzdvx5LdWvzL8LHg== + dependencies: + "@opentelemetry/instrumentation" "^0.41.2" + "@opentelemetry/semantic-conventions" "^1.0.0" + +"@opentelemetry/instrumentation-pg@^0.36.0": + version "0.36.1" + resolved "https://registry.yarnpkg.com/@opentelemetry/instrumentation-pg/-/instrumentation-pg-0.36.1.tgz#66e3aa10948c6e3188d04676dbf304ae8571ce2f" + integrity sha512-k8L7RSRTQ6e+DbHEXZB8Tmf/efkQnWKeClpZb3TEdb34Pvme4PmcpG2zb6JtM99nNrshNlVDLCZ90U3xDneTbw== + dependencies: + "@opentelemetry/core" "^1.8.0" + "@opentelemetry/instrumentation" "^0.41.2" + "@opentelemetry/semantic-conventions" "^1.0.0" + "@opentelemetry/sql-common" "^0.40.0" + "@types/pg" "8.6.1" + "@types/pg-pool" "2.0.3" + +"@opentelemetry/instrumentation-pino@^0.34.0": + version "0.34.1" + resolved "https://registry.yarnpkg.com/@opentelemetry/instrumentation-pino/-/instrumentation-pino-0.34.1.tgz#7567d2e2298536229f5a72c6c222b79b3b6689c7" + integrity sha512-/FW/wxTshwwmiSE8KgVoWvfjxz5omKBdDbP0McKZk84V02lwwJk0m7+kc2cSOed5rk7iprpZolwO8a8AFVanNA== + dependencies: + "@opentelemetry/instrumentation" "^0.41.2" + +"@opentelemetry/instrumentation-redis-4@^0.35.0": + version "0.35.1" + resolved "https://registry.yarnpkg.com/@opentelemetry/instrumentation-redis-4/-/instrumentation-redis-4-0.35.1.tgz#40ae092c04ef9f92148197f8b3fe9eef4657123e" + integrity sha512-tQ07wvtjUbHSvvhPPvWyZjYTSzVBTpC746ro5szLnniodvxtKkmP/N+R9KyFXfyH7wwaLIR1Scgq3XSGSppt+Q== + dependencies: + "@opentelemetry/instrumentation" "^0.41.2" + "@opentelemetry/redis-common" "^0.36.1" + "@opentelemetry/semantic-conventions" "^1.0.0" + +"@opentelemetry/instrumentation-redis@^0.35.0": + version "0.35.1" + resolved "https://registry.yarnpkg.com/@opentelemetry/instrumentation-redis/-/instrumentation-redis-0.35.1.tgz#d821e8d0e9470c9ab144aa45292ec7991dca6bb1" + integrity sha512-zY7eTzGyJCMX/0o04Q9yLy7gllf7Zh4s+g7Kv1d2cMLtTt9zGSlncqj49uNCnneywnpMNRUIwcmd+Ch1bQeh+g== + dependencies: + "@opentelemetry/instrumentation" "^0.41.2" + "@opentelemetry/redis-common" "^0.36.1" + "@opentelemetry/semantic-conventions" "^1.0.0" + +"@opentelemetry/instrumentation-restify@^0.33.0": + version "0.33.0" + resolved "https://registry.yarnpkg.com/@opentelemetry/instrumentation-restify/-/instrumentation-restify-0.33.0.tgz#4f7fbcda93e428052c07d6edc05c192e868917be" + integrity sha512-evDjcF6M9G+KH/GCjtUx9Vnm/CBZ9CBfmm/RP6Aeo20y6Kset1ZEoPK79JT7JK1sCPqViBPoj4qnFePz9/20lg== + dependencies: + "@opentelemetry/core" "^1.8.0" + "@opentelemetry/instrumentation" "^0.41.0" + "@opentelemetry/semantic-conventions" "^1.0.0" + tslib "^2.3.1" + +"@opentelemetry/instrumentation-router@^0.33.0": + version "0.33.1" + resolved "https://registry.yarnpkg.com/@opentelemetry/instrumentation-router/-/instrumentation-router-0.33.1.tgz#ec37e7470675a442e48c2e9e4753f595951c16d8" + integrity sha512-nz8PvjYMQWFgR17Yc5Sj624CamhXP021mWaWfHx6RhI6o67sPt+DT5468yZJZV1gMnaOSQfiBkjWZ7AGQkRutw== + dependencies: + "@opentelemetry/instrumentation" "^0.41.2" + "@opentelemetry/semantic-conventions" "^1.0.0" + +"@opentelemetry/instrumentation-socket.io@^0.34.0": + version "0.34.1" + resolved "https://registry.yarnpkg.com/@opentelemetry/instrumentation-socket.io/-/instrumentation-socket.io-0.34.1.tgz#ac5814f8a805a550c9e63e5f7f9ac4186ec8d579" + integrity sha512-v9US0hXJaY7dkKOC2/CMLB526wn9F3CQrkeVUidvSm+AxFBoYXKdAUJijdBPWT4PKY98/VjFHuZ3HSe4QD8zPA== + dependencies: + "@opentelemetry/instrumentation" "^0.41.2" + "@opentelemetry/semantic-conventions" "^1.0.0" + +"@opentelemetry/instrumentation-tedious@^0.6.0": + version "0.6.1" + resolved "https://registry.yarnpkg.com/@opentelemetry/instrumentation-tedious/-/instrumentation-tedious-0.6.1.tgz#2b488581161839c19ef0641d0afdc9fa6cc8210b" + integrity sha512-zwgLKmWtAn0XsMb98aMaI7gCawzPqpy+LOgGTlYmUdqSVYnzMAn4QKrx24Rrd5pgmzOEIbAWHlpN7pOc1eIqxA== + dependencies: + "@opentelemetry/instrumentation" "^0.41.2" + "@opentelemetry/semantic-conventions" "^1.0.0" + "@types/tedious" "^4.0.6" + +"@opentelemetry/instrumentation-winston@^0.32.0": + version "0.32.1" + resolved "https://registry.yarnpkg.com/@opentelemetry/instrumentation-winston/-/instrumentation-winston-0.32.1.tgz#0548543151ac7505cffc64c0019ca3d5bdda5638" + integrity sha512-wgXb2W2cbNdRQfXTH0jcnfbhlVPapmu13Wqhedj2pMpXS2aBnWAdvNFlArS6q84MEhzv3A4fVevjbwXa4uCzwQ== + dependencies: + "@opentelemetry/instrumentation" "^0.41.2" + +"@opentelemetry/instrumentation@0.41.2", "@opentelemetry/instrumentation@^0.41.0", "@opentelemetry/instrumentation@^0.41.2": + version "0.41.2" + resolved "https://registry.yarnpkg.com/@opentelemetry/instrumentation/-/instrumentation-0.41.2.tgz#cae11fa64485dcf03dae331f35b315b64bc6189f" + integrity sha512-rxU72E0pKNH6ae2w5+xgVYZLzc5mlxAbGzF4shxMVK8YC2QQsfN38B2GPbj0jvrKWWNUElfclQ+YTykkNg/grw== + dependencies: + "@types/shimmer" "^1.0.2" + import-in-the-middle "1.4.2" + require-in-the-middle "^7.1.1" + semver "^7.5.1" + shimmer "^1.2.1" + +"@opentelemetry/otlp-exporter-base@0.41.2": + version "0.41.2" + resolved "https://registry.yarnpkg.com/@opentelemetry/otlp-exporter-base/-/otlp-exporter-base-0.41.2.tgz#5928dfedb2a70117f03809862cf2cbdf8b7f9bf3" + integrity sha512-pfwa6d+Dax3itZcGWiA0AoXeVaCuZbbqUTsCtOysd2re8C2PWXNxDONUfBWsn+KgxAdi+ljwTjJGiaVLDaIEvQ== + dependencies: + "@opentelemetry/core" "1.15.2" + +"@opentelemetry/otlp-grpc-exporter-base@0.41.2": + version "0.41.2" + resolved "https://registry.yarnpkg.com/@opentelemetry/otlp-grpc-exporter-base/-/otlp-grpc-exporter-base-0.41.2.tgz#b056915aa274947517ac86b0c78533db274404e8" + integrity sha512-OErK8dYjXG01XIMIpmOV2SzL9ctkZ0Nyhf2UumICOAKtgLvR5dG1JMlsNVp8Jn0RzpsKc6Urv7JpP69wzRXN+A== + dependencies: + "@grpc/grpc-js" "^1.7.1" + "@opentelemetry/core" "1.15.2" + "@opentelemetry/otlp-exporter-base" "0.41.2" + protobufjs "^7.2.3" + +"@opentelemetry/otlp-proto-exporter-base@0.41.2": + version "0.41.2" + resolved "https://registry.yarnpkg.com/@opentelemetry/otlp-proto-exporter-base/-/otlp-proto-exporter-base-0.41.2.tgz#10b1a4bb973bd6e0e741931d90f22387c5a3a151" + integrity sha512-BxmEMiP6tHiFroe5/dTt9BsxCci7BTLtF7A6d4DKHLiLweWWZxQ9l7hON7qt/IhpKrQcAFD1OzZ1Gq2ZkNzhCw== + dependencies: + "@opentelemetry/core" "1.15.2" + "@opentelemetry/otlp-exporter-base" "0.41.2" + protobufjs "^7.2.3" + +"@opentelemetry/otlp-transformer@0.41.2": + version "0.41.2" + resolved "https://registry.yarnpkg.com/@opentelemetry/otlp-transformer/-/otlp-transformer-0.41.2.tgz#cd3a7185ef77fe9b7b4c2d2f9e001fa1d2fa6cf8" + integrity sha512-jJbPwB0tNu2v+Xi0c/v/R3YBLJKLonw1p+v3RVjT2VfzeUyzSp/tBeVdY7RZtL6dzZpA9XSmp8UEfWIFQo33yA== + dependencies: + "@opentelemetry/api-logs" "0.41.2" + "@opentelemetry/core" "1.15.2" + "@opentelemetry/resources" "1.15.2" + "@opentelemetry/sdk-logs" "0.41.2" + "@opentelemetry/sdk-metrics" "1.15.2" + "@opentelemetry/sdk-trace-base" "1.15.2" + +"@opentelemetry/propagation-utils@^0.30.0": + version "0.30.1" + resolved "https://registry.yarnpkg.com/@opentelemetry/propagation-utils/-/propagation-utils-0.30.1.tgz#2fbb48cec2c118d14e5814258990973fca5e2860" + integrity sha512-GCZg19gBSOTCeHvSCVy08WUyKAp2LyIRcRQPZk8MMAbmz8JWha3huBS9tNXjB4hYwRqW2SJOZzoYjt2P/BxvEw== + +"@opentelemetry/propagator-aws-xray@^1.3.0": + version "1.3.1" + resolved "https://registry.yarnpkg.com/@opentelemetry/propagator-aws-xray/-/propagator-aws-xray-1.3.1.tgz#7fc77a95fe89c705442b0e5a4218422c2954cc07" + integrity sha512-6fDMzFlt5r6VWv7MUd0eOpglXPFqykW8CnOuUxJ1VZyLy6mV1bzBlzpsqEmhx1bjvZYvH93vhGkQZqrm95mlrQ== + dependencies: + "@opentelemetry/core" "^1.0.0" + +"@opentelemetry/propagator-b3@1.15.2": + version "1.15.2" + resolved "https://registry.yarnpkg.com/@opentelemetry/propagator-b3/-/propagator-b3-1.15.2.tgz#7bcb9fa645042a440922669fbac06a1a91e6704b" + integrity sha512-ZSrL3DpMEDsjD8dPt9Ze3ue53nEXJt512KyxXlLgLWnSNbe1mrWaXWkh7OLDoVJh9LqFw+tlvAhDVt/x3DaFGg== + dependencies: + "@opentelemetry/core" "1.15.2" + +"@opentelemetry/propagator-jaeger@1.15.2": + version "1.15.2" + resolved "https://registry.yarnpkg.com/@opentelemetry/propagator-jaeger/-/propagator-jaeger-1.15.2.tgz#90757fc9529da806a1845f502acb6d0eb821e3db" + integrity sha512-6m1yu7PVDIRz6BwA36lacfBZJCfAEHKgu+kSyukNwVdVjsTNeyD9xNPQnkl0WN7Rvhk8/yWJ83tLPEyGhk1wCQ== + dependencies: + "@opentelemetry/core" "1.15.2" + +"@opentelemetry/propagator-ot-trace@^0.27.0": + version "0.27.1" + resolved "https://registry.yarnpkg.com/@opentelemetry/propagator-ot-trace/-/propagator-ot-trace-0.27.1.tgz#6718aefd6d0401726e2232fd7ad84515f2b34ca9" + integrity sha512-+Aeht0+1kv/7KAYxNVQFDczEgMQIhi+yO/QNBTxEUGWEQshxznqT2Knqd5nARY8IF3okFdkP4PJUFubYfjWSzw== + +"@opentelemetry/redis-common@^0.36.1": + version "0.36.1" + resolved "https://registry.yarnpkg.com/@opentelemetry/redis-common/-/redis-common-0.36.1.tgz#79bca902603dd27862223a751be0f4bb0be54c2b" + integrity sha512-YjfNEr7DK1Ymc5H0bzhmqVvMcCs+PUEUerzrpTFdHfZxj3HpnnjZTIFKx/gxiL/sajQ8dxycjlreoYTVYKBXlw== + +"@opentelemetry/resource-detector-alibaba-cloud@^0.28.0": + version "0.28.1" + resolved "https://registry.yarnpkg.com/@opentelemetry/resource-detector-alibaba-cloud/-/resource-detector-alibaba-cloud-0.28.1.tgz#f65bfc25d0f26d55bce33a8caa788274353445cf" + integrity sha512-0ucRgwid6bSAgYL5fiTkLh7aS9cPyz+Ijyv961SZbpMeIgVBvU931676xrdGNqlmuxavt24BrNUUWZ4XKq8ViA== + dependencies: + "@opentelemetry/resources" "^1.0.0" + "@opentelemetry/semantic-conventions" "^1.0.0" + +"@opentelemetry/resource-detector-aws@^1.3.0": + version "1.3.1" + resolved "https://registry.yarnpkg.com/@opentelemetry/resource-detector-aws/-/resource-detector-aws-1.3.1.tgz#4d221859c19b0e4e604ac88224129e82a78ec8b6" + integrity sha512-1n3U0ns0xlA8EIOMY1oEP5+5rZE/nfhIld6nw8T8PK4PkS3kAQb1ZCj3RXajs3qA+qWWIaEvCNREx3A0Ifyt3Q== + dependencies: + "@opentelemetry/core" "^1.0.0" + "@opentelemetry/resources" "^1.0.0" + "@opentelemetry/semantic-conventions" "^1.0.0" + +"@opentelemetry/resource-detector-container@^0.3.0": + version "0.3.1" + resolved "https://registry.yarnpkg.com/@opentelemetry/resource-detector-container/-/resource-detector-container-0.3.1.tgz#7b59f5c9d2062db78f3dd2e2c59adbfafdd7d5a9" + integrity sha512-7zQASISRLmsaCKurvaoi7kTa0ab4iQEvPVfRo4k5RLSVi4puaCcC+2qOd6Fk4jEqNueevhyn2upGUeH+0EJ6yQ== + dependencies: + "@opentelemetry/resources" "^1.0.0" + "@opentelemetry/semantic-conventions" "^1.0.0" + +"@opentelemetry/resource-detector-gcp@^0.29.0": + version "0.29.1" + resolved "https://registry.yarnpkg.com/@opentelemetry/resource-detector-gcp/-/resource-detector-gcp-0.29.1.tgz#eef9a08fbac816f3906a327be508e77f23a15a90" + integrity sha512-u5mB53I49m0cXQ97dgZlgEnNin9xqwl9au2sXmblHG9XS6PocGoAgAiXGYYvITWhR3ID5Ei2GyGoJDFdAtCrVA== + dependencies: + "@opentelemetry/core" "^1.0.0" + "@opentelemetry/resources" "^1.0.0" + "@opentelemetry/semantic-conventions" "^1.0.0" + gcp-metadata "^5.0.0" + +"@opentelemetry/resources@1.15.2", "@opentelemetry/resources@^1.0.0", "@opentelemetry/resources@^1.12.0", "@opentelemetry/resources@^1.8.0": + version "1.15.2" + resolved "https://registry.yarnpkg.com/@opentelemetry/resources/-/resources-1.15.2.tgz#0c9e26cb65652a1402834a3c030cce6028d6dd9d" + integrity sha512-xmMRLenT9CXmm5HMbzpZ1hWhaUowQf8UB4jMjFlAxx1QzQcsD3KFNAVX/CAWzFPtllTyTplrA4JrQ7sCH3qmYw== + dependencies: + "@opentelemetry/core" "1.15.2" + "@opentelemetry/semantic-conventions" "1.15.2" + +"@opentelemetry/sdk-logs@0.41.2": + version "0.41.2" + resolved "https://registry.yarnpkg.com/@opentelemetry/sdk-logs/-/sdk-logs-0.41.2.tgz#c3eeb6793bdfa52351d66e2e66637e433abed672" + integrity sha512-smqKIw0tTW15waj7BAPHFomii5c3aHnSE4LQYTszGoK5P9nZs8tEAIpu15UBxi3aG31ZfsLmm4EUQkjckdlFrw== + dependencies: + "@opentelemetry/core" "1.15.2" + "@opentelemetry/resources" "1.15.2" + +"@opentelemetry/sdk-metrics@1.15.2", "@opentelemetry/sdk-metrics@^1.15.1", "@opentelemetry/sdk-metrics@^1.9.1": + version "1.15.2" + resolved "https://registry.yarnpkg.com/@opentelemetry/sdk-metrics/-/sdk-metrics-1.15.2.tgz#eadd0a049de9cd860e1e0d49eea01156469c4b60" + integrity sha512-9aIlcX8GnhcsAHW/Wl8bzk4ZnWTpNlLtud+fxUfBtFATu6OZ6TrGrF4JkT9EVrnoxwtPIDtjHdEsSjOqisY/iA== + dependencies: + "@opentelemetry/core" "1.15.2" + "@opentelemetry/resources" "1.15.2" + lodash.merge "^4.6.2" + +"@opentelemetry/sdk-node@^0.41.0", "@opentelemetry/sdk-node@^0.41.1": + version "0.41.2" + resolved "https://registry.yarnpkg.com/@opentelemetry/sdk-node/-/sdk-node-0.41.2.tgz#7ac2fc149d371a9f17c2adba395a9aa257ed1bf4" + integrity sha512-t3vaB5ajoXLtVFoL8TSoSgaVATmOyUfkIfBE4nvykm0dM2vQjMS/SUUelzR06eiPTbMPsr2UkevWhy2/oXy2vg== + dependencies: + "@opentelemetry/api-logs" "0.41.2" + "@opentelemetry/core" "1.15.2" + "@opentelemetry/exporter-jaeger" "1.15.2" + "@opentelemetry/exporter-trace-otlp-grpc" "0.41.2" + "@opentelemetry/exporter-trace-otlp-http" "0.41.2" + "@opentelemetry/exporter-trace-otlp-proto" "0.41.2" + "@opentelemetry/exporter-zipkin" "1.15.2" + "@opentelemetry/instrumentation" "0.41.2" + "@opentelemetry/resources" "1.15.2" + "@opentelemetry/sdk-logs" "0.41.2" + "@opentelemetry/sdk-metrics" "1.15.2" + "@opentelemetry/sdk-trace-base" "1.15.2" + "@opentelemetry/sdk-trace-node" "1.15.2" + "@opentelemetry/semantic-conventions" "1.15.2" + +"@opentelemetry/sdk-trace-base@1.15.2": + version "1.15.2" + resolved "https://registry.yarnpkg.com/@opentelemetry/sdk-trace-base/-/sdk-trace-base-1.15.2.tgz#4821f94033c55a6c8bbd35ae387b715b6108517a" + integrity sha512-BEaxGZbWtvnSPchV98qqqqa96AOcb41pjgvhfzDij10tkBhIu9m0Jd6tZ1tJB5ZHfHbTffqYVYE0AOGobec/EQ== + dependencies: + "@opentelemetry/core" "1.15.2" + "@opentelemetry/resources" "1.15.2" + "@opentelemetry/semantic-conventions" "1.15.2" + +"@opentelemetry/sdk-trace-node@1.15.2": + version "1.15.2" + resolved "https://registry.yarnpkg.com/@opentelemetry/sdk-trace-node/-/sdk-trace-node-1.15.2.tgz#987c929597ca274995164508f57a15f682d9de2f" + integrity sha512-5deakfKLCbPpKJRCE2GPI8LBE2LezyvR17y3t37ZI3sbaeogtyxmBaFV+slmG9fN8OaIT+EUsm1QAT1+z59gbQ== + dependencies: + "@opentelemetry/context-async-hooks" "1.15.2" + "@opentelemetry/core" "1.15.2" + "@opentelemetry/propagator-b3" "1.15.2" + "@opentelemetry/propagator-jaeger" "1.15.2" + "@opentelemetry/sdk-trace-base" "1.15.2" + semver "^7.5.1" + +"@opentelemetry/sdk-trace-web@^1.15.1": + version "1.15.2" + resolved "https://registry.yarnpkg.com/@opentelemetry/sdk-trace-web/-/sdk-trace-web-1.15.2.tgz#1db22d0afbd07b1287e8a331e30862eb19b24e20" + integrity sha512-OjCrwtu4b+cAt540wyIr7d0lCA/cY9y42lmYDFUfJ8Ixj2bByIUJ4yyd9M7mXHpQHdiR/Kq2vzsgS14Uj+RU0Q== + dependencies: + "@opentelemetry/core" "1.15.2" + "@opentelemetry/sdk-trace-base" "1.15.2" + "@opentelemetry/semantic-conventions" "1.15.2" + +"@opentelemetry/semantic-conventions@1.15.2", "@opentelemetry/semantic-conventions@^1.15.1": + version "1.15.2" + resolved "https://registry.yarnpkg.com/@opentelemetry/semantic-conventions/-/semantic-conventions-1.15.2.tgz#3bafb5de3e20e841dff6cb3c66f4d6e9694c4241" + integrity sha512-CjbOKwk2s+3xPIMcd5UNYQzsf+v94RczbdNix9/kQh38WiQkM90sUOi3if8eyHFgiBjBjhwXrA7W3ydiSQP9mw== + "@opentelemetry/semantic-conventions@^1.0.0": version "1.12.0" resolved "https://registry.yarnpkg.com/@opentelemetry/semantic-conventions/-/semantic-conventions-1.12.0.tgz#19c959bdb900986e74939d4227e757aa16936b91" @@ -4095,6 +4821,13 @@ resolved "https://registry.yarnpkg.com/@opentelemetry/semantic-conventions/-/semantic-conventions-1.3.1.tgz#ba07b864a3c955f061aa30ea3ef7f4ae4449794a" integrity sha512-wU5J8rUoo32oSef/rFpOT1HIjLjAv3qIDHkw1QIhODV3OpAVHi5oVzlouozg9obUmZKtbZ0qUe/m7FP0y0yBzA== +"@opentelemetry/sql-common@^0.40.0": + version "0.40.0" + resolved "https://registry.yarnpkg.com/@opentelemetry/sql-common/-/sql-common-0.40.0.tgz#8cbed0722354d62997c3b9e1adf0e16257be6b15" + integrity sha512-vSqRJYUPJVjMFQpYkQS3ruexCPSZJ8esne3LazLwtCPaPRvzZ7WG3tX44RouAn7w4wMp8orKguBqtt+ng2UTnw== + dependencies: + "@opentelemetry/core" "^1.1.0" + "@openzeppelin/upgrades@^2.8.0": version "2.8.0" resolved "https://registry.yarnpkg.com/@openzeppelin/upgrades/-/upgrades-2.8.0.tgz#8086ab9c99d9f8dac7205030b0f9e7e4a280c4a3" @@ -4308,6 +5041,23 @@ "@noble/hashes" "~1.2.0" "@scure/base" "~1.1.0" +"@sideway/address@^4.1.3": + version "4.1.4" + resolved "https://registry.yarnpkg.com/@sideway/address/-/address-4.1.4.tgz#03dccebc6ea47fdc226f7d3d1ad512955d4783f0" + integrity sha512-7vwq+rOHVWjyXxVlR76Agnvhy8I9rpzjosTESvmhNeXOXdZZB15Fl+TI9x1SiHZH5Jv2wTGduSxFDIaq0m3DUw== + dependencies: + "@hapi/hoek" "^9.0.0" + +"@sideway/formula@^3.0.1": + version "3.0.1" + resolved "https://registry.yarnpkg.com/@sideway/formula/-/formula-3.0.1.tgz#80fcbcbaf7ce031e0ef2dd29b1bfc7c3f583611f" + integrity sha512-/poHZJJVjx3L+zVD6g9KgHfYnb443oi7wLu/XKojDviHy6HOEOA6z1Trk5aR1dGcmPenJEgb2sK2I80LeS3MIg== + +"@sideway/pinpoint@^2.0.0": + version "2.0.0" + resolved "https://registry.yarnpkg.com/@sideway/pinpoint/-/pinpoint-2.0.0.tgz#cff8ffadc372ad29fd3f78277aeb29e632cc70df" + integrity sha512-RNiOoTPkptFtSVzQevY/yWtZwf/RxyVnPy/OcA9HBM3MlGDnBEYL5B41H0MTn0Uec8Hi+2qUtTfG2WWZBmMejQ== + "@sinclair/typebox@^0.25.16": version "0.25.24" resolved "https://registry.yarnpkg.com/@sinclair/typebox/-/typebox-0.25.24.tgz#8c7688559979f7079aacaf31aa881c3aa410b718" @@ -5022,7 +5772,7 @@ resolved "https://registry.yarnpkg.com/@types/abstract-leveldown/-/abstract-leveldown-7.2.1.tgz#bb16403c17754b0c4d5772d71d03b924a03d4c80" integrity sha512-YK8irIC+eMrrmtGx0H4ISn9GgzLd9dojZWJaMbjp1YHLl2VqqNFBNrL5Q3KjGf4VE3sf/4hmq6EhQZ7kZp1NoQ== -"@types/accepts@^1.3.5": +"@types/accepts@*", "@types/accepts@^1.3.5": version "1.3.5" resolved "https://registry.yarnpkg.com/@types/accepts/-/accepts-1.3.5.tgz#c34bec115cfc746e04fe5a059df4ce7e7b391575" integrity sha512-jOdnI/3qTpHABjM5cx1Hc0sKsPoYCp+DP/GJRGtDlPd7fiV9oXGGIcjW/ZOxLIvjGz8MA+uMZI9metHlgqbgwQ== @@ -5043,6 +5793,11 @@ dependencies: "@types/pvutils" "*" +"@types/aws-lambda@8.10.81": + version "8.10.81" + resolved "https://registry.yarnpkg.com/@types/aws-lambda/-/aws-lambda-8.10.81.tgz#6d405269aad82e05a348687631aa9a587cdbe158" + integrity sha512-C1rFKGVZ8KwqhwBOYlpoybTSRtxu2433ea6JaO3amc6ubEe08yQoFsPa9aU9YqvX7ppeZ25CnCtC4AH9mhtxsQ== + "@types/babel__core@^7.1.14": version "7.20.0" resolved "https://registry.yarnpkg.com/@types/babel__core/-/babel__core-7.20.0.tgz#61bc5a4cae505ce98e1e36c5445e4bee060d8891" @@ -5157,18 +5912,33 @@ dependencies: "@types/node" "*" -"@types/connect@*": +"@types/connect@*", "@types/connect@3.4.35": version "3.4.35" resolved "https://registry.yarnpkg.com/@types/connect/-/connect-3.4.35.tgz#5fcf6ae445e4021d1fc2219a4873cc73a3bb2ad1" integrity sha512-cdeYyv4KWoEgpBISTxWvqYsVy444DOqehiF3fM3ne10AmJ62RSyNkUnxMJXHQWRQQX2eR94m5y1IZyDwBjV9FQ== dependencies: "@types/node" "*" +"@types/content-disposition@*": + version "0.5.5" + resolved "https://registry.yarnpkg.com/@types/content-disposition/-/content-disposition-0.5.5.tgz#650820e95de346e1f84e30667d168c8fd25aa6e3" + integrity sha512-v6LCdKfK6BwcqMo+wYW05rLS12S0ZO0Fl4w1h4aaZMD7bqT3gVUns6FvLJKGZHQmYn3SX55JWGpziwJRwVgutA== + "@types/cookiejar@*": version "2.1.2" resolved "https://registry.yarnpkg.com/@types/cookiejar/-/cookiejar-2.1.2.tgz#66ad9331f63fe8a3d3d9d8c6e3906dd10f6446e8" integrity sha512-t73xJJrvdTjXrn4jLS9VSGRbz0nUY3cl2DMGDU48lKl+HR9dbbjW2A9r3g40VA++mQpy6uuHg33gy7du2BKpog== +"@types/cookies@*": + version "0.7.7" + resolved "https://registry.yarnpkg.com/@types/cookies/-/cookies-0.7.7.tgz#7a92453d1d16389c05a5301eef566f34946cfd81" + integrity sha512-h7BcvPUogWbKCzBR2lY4oqaZbO3jXZksexYJVFvkrFeLgbZjQkU4x8pRq6eg2MHXQhY0McQdqmmsxRWlVAHooA== + dependencies: + "@types/connect" "*" + "@types/express" "*" + "@types/keygrip" "*" + "@types/node" "*" + "@types/cors@2.8.12": version "2.8.12" resolved "https://registry.yarnpkg.com/@types/cors/-/cors-2.8.12.tgz#6b2c510a7ad7039e98e7b8d3d6598f4359e5c080" @@ -5257,6 +6027,16 @@ "@types/range-parser" "*" "@types/send" "*" +"@types/express@*", "@types/express@4.17.17", "@types/express@^4.17.14", "@types/express@^4.17.6": + version "4.17.17" + resolved "https://registry.yarnpkg.com/@types/express/-/express-4.17.17.tgz#01d5437f6ef9cfa8668e616e13c2f2ac9a491ae4" + integrity sha512-Q4FmmuLGBG58btUnfS1c1r/NQdlp3DMfGDGig8WhfpA2YRUtEkxAjkZb0yvplJGYdF1fsQ81iMDcH24sSCNC/Q== + dependencies: + "@types/body-parser" "*" + "@types/express-serve-static-core" "^4.17.33" + "@types/qs" "*" + "@types/serve-static" "*" + "@types/express@4.17.14": version "4.17.14" resolved "https://registry.yarnpkg.com/@types/express/-/express-4.17.14.tgz#143ea0557249bc1b3b54f15db4c81c3d4eb3569c" @@ -5276,16 +6056,6 @@ "@types/express-serve-static-core" "*" "@types/serve-static" "*" -"@types/express@^4.17.14", "@types/express@^4.17.6": - version "4.17.17" - resolved "https://registry.yarnpkg.com/@types/express/-/express-4.17.17.tgz#01d5437f6ef9cfa8668e616e13c2f2ac9a491ae4" - integrity sha512-Q4FmmuLGBG58btUnfS1c1r/NQdlp3DMfGDGig8WhfpA2YRUtEkxAjkZb0yvplJGYdF1fsQ81iMDcH24sSCNC/Q== - dependencies: - "@types/body-parser" "*" - "@types/express-serve-static-core" "^4.17.33" - "@types/qs" "*" - "@types/serve-static" "*" - "@types/fetch-mock@^7.3.5": version "7.3.5" resolved "https://registry.yarnpkg.com/@types/fetch-mock/-/fetch-mock-7.3.5.tgz#7aee678c4e7c7e1a168bae8fdab5b8d712e377f6" @@ -5333,6 +6103,39 @@ dependencies: "@types/node" "*" +"@types/hapi__catbox@*": + version "10.2.4" + resolved "https://registry.yarnpkg.com/@types/hapi__catbox/-/hapi__catbox-10.2.4.tgz#4d0531a6c2d0e45024f724020d536041ef8ffe30" + integrity sha512-A6ivRrXD5glmnJna1UAGw87QNZRp/vdFO9U4GS+WhOMWzHnw+oTGkMvg0g6y1930CbeheGOCm7A1qHsqH7AXqg== + +"@types/hapi__hapi@20.0.9": + version "20.0.9" + resolved "https://registry.yarnpkg.com/@types/hapi__hapi/-/hapi__hapi-20.0.9.tgz#9d570846c96268266a14c970c13aeeaccfc8e172" + integrity sha512-fGpKScknCKZityRXdZgpCLGbm41R1ppFgnKHerfZlqOOlCX/jI129S6ghgBqkqCE8m9A0CIu1h7Ch04lD9KOoA== + dependencies: + "@hapi/boom" "^9.0.0" + "@hapi/iron" "^6.0.0" + "@hapi/podium" "^4.1.3" + "@types/hapi__catbox" "*" + "@types/hapi__mimos" "*" + "@types/hapi__shot" "*" + "@types/node" "*" + joi "^17.3.0" + +"@types/hapi__mimos@*": + version "4.1.4" + resolved "https://registry.yarnpkg.com/@types/hapi__mimos/-/hapi__mimos-4.1.4.tgz#4f8a1c58345fc468553708d3cb508724aa081bd9" + integrity sha512-i9hvJpFYTT/qzB5xKWvDYaSXrIiNqi4ephi+5Lo6+DoQdwqPXQgmVVOZR+s3MBiHoFqsCZCX9TmVWG3HczmTEQ== + dependencies: + "@types/mime-db" "*" + +"@types/hapi__shot@*": + version "4.1.2" + resolved "https://registry.yarnpkg.com/@types/hapi__shot/-/hapi__shot-4.1.2.tgz#d4011999a91e8101030fece1462fe99769455855" + integrity sha512-8wWgLVP1TeGqgzZtCdt+F+k15DWQvLG1Yv6ZzPfb3D5WIo5/S+GGKtJBVo2uNEcqabP5Ifc71QnJTDnTmw1axA== + dependencies: + "@types/node" "*" + "@types/hdkey@^0.7.0": version "0.7.1" resolved "https://registry.yarnpkg.com/@types/hdkey/-/hdkey-0.7.1.tgz#9bc63ebbe96b107b277b65ea7a95442a677d0d61" @@ -5340,11 +6143,21 @@ dependencies: "@types/node" "*" +"@types/http-assert@*": + version "1.5.3" + resolved "https://registry.yarnpkg.com/@types/http-assert/-/http-assert-1.5.3.tgz#ef8e3d1a8d46c387f04ab0f2e8ab8cb0c5078661" + integrity sha512-FyAOrDuQmBi8/or3ns4rwPno7/9tJTijVW6aQQjK02+kOQ8zmoNg2XJtAuQhvQcy1ASJq38wirX5//9J1EqoUA== + "@types/http-cache-semantics@*": version "4.0.1" resolved "https://registry.yarnpkg.com/@types/http-cache-semantics/-/http-cache-semantics-4.0.1.tgz#0ea7b61496902b95890dc4c3a116b60cb8dae812" integrity sha512-SZs7ekbP8CN0txVG2xVRH6EgKmEm31BOxA07vkFaETzZz1xh+cbt8BcI0slpymvwhx5dlFnQG2rTlPVQn+iRPQ== +"@types/http-errors@*": + version "2.0.1" + resolved "https://registry.yarnpkg.com/@types/http-errors/-/http-errors-2.0.1.tgz#20172f9578b225f6c7da63446f56d4ce108d5a65" + integrity sha512-/K3ds8TRAfBvi5vfjuz8y6+GiAYBZ0x4tXv1Av6CWBWn0IlADc+ZX9pMq7oU0fNQPnBwIZl3rmeLp6SBApbxSQ== + "@types/humanize-duration@^3.18.0": version "3.27.1" resolved "https://registry.yarnpkg.com/@types/humanize-duration/-/humanize-duration-3.27.1.tgz#f14740d1f585a0a8e3f46359b62fda8b0eaa31e7" @@ -5358,6 +6171,13 @@ "@types/through" "*" rxjs "^6.4.0" +"@types/ioredis4@npm:@types/ioredis@^4.28.10": + version "4.28.10" + resolved "https://registry.yarnpkg.com/@types/ioredis/-/ioredis-4.28.10.tgz#40ceb157a4141088d1394bb87c98ed09a75a06ff" + integrity sha512-69LyhUgrXdgcNDv7ogs1qXZomnfOEnSmrmMFqKgt1XMJxmoOSG/u3wYy13yACIfKuMJ8IhKgHafDO3sx19zVQQ== + dependencies: + "@types/node" "*" + "@types/is-base64@^1.1.0": version "1.1.1" resolved "https://registry.yarnpkg.com/@types/is-base64/-/is-base64-1.1.1.tgz#a17d2b0075f637f80f9ab5f76f0071a65f6965d4" @@ -5419,6 +6239,11 @@ dependencies: "@types/node" "*" +"@types/keygrip@*": + version "1.0.2" + resolved "https://registry.yarnpkg.com/@types/keygrip/-/keygrip-1.0.2.tgz#513abfd256d7ad0bf1ee1873606317b33b1b2a72" + integrity sha512-GJhpTepz2udxGexqos8wgaBx4I/zWIDPh/KOGEwAqtuGDkOUJu5eFvwmdBX4AmB8Odsr+9pHCQqiAqDL/yKMKw== + "@types/keyv@^3.1.4": version "3.1.4" resolved "https://registry.yarnpkg.com/@types/keyv/-/keyv-3.1.4.tgz#3ccdb1c6751b0c7e52300bcdacd5bcbf8faa75b6" @@ -5426,6 +6251,48 @@ dependencies: "@types/node" "*" +"@types/koa-compose@*": + version "3.2.5" + resolved "https://registry.yarnpkg.com/@types/koa-compose/-/koa-compose-3.2.5.tgz#85eb2e80ac50be95f37ccf8c407c09bbe3468e9d" + integrity sha512-B8nG/OoE1ORZqCkBVsup/AKcvjdgoHnfi4pZMn5UwAPCbhk/96xyv284eBYW8JlQbQ7zDmnpFr68I/40mFoIBQ== + dependencies: + "@types/koa" "*" + +"@types/koa@*": + version "2.13.8" + resolved "https://registry.yarnpkg.com/@types/koa/-/koa-2.13.8.tgz#4302d2f2712348aadb6c0b03eb614f30afde486b" + integrity sha512-Ugmxmgk/yPRW3ptBTh9VjOLwsKWJuGbymo1uGX0qdaqqL18uJiiG1ZoV0rxCOYSaDGhvEp5Ece02Amx0iwaxQQ== + dependencies: + "@types/accepts" "*" + "@types/content-disposition" "*" + "@types/cookies" "*" + "@types/http-assert" "*" + "@types/http-errors" "*" + "@types/keygrip" "*" + "@types/koa-compose" "*" + "@types/node" "*" + +"@types/koa@2.13.6": + version "2.13.6" + resolved "https://registry.yarnpkg.com/@types/koa/-/koa-2.13.6.tgz#6dc14e727baf397310aa6f414ebe5d144983af42" + integrity sha512-diYUfp/GqfWBAiwxHtYJ/FQYIXhlEhlyaU7lB/bWQrx4Il9lCET5UwpFy3StOAohfsxxvEQ11qIJgT1j2tfBvw== + dependencies: + "@types/accepts" "*" + "@types/content-disposition" "*" + "@types/cookies" "*" + "@types/http-assert" "*" + "@types/http-errors" "*" + "@types/keygrip" "*" + "@types/koa-compose" "*" + "@types/node" "*" + +"@types/koa__router@8.0.7": + version "8.0.7" + resolved "https://registry.yarnpkg.com/@types/koa__router/-/koa__router-8.0.7.tgz#663d69d5ddebff5aaca27c0594430b3ba6ea20be" + integrity sha512-OB3Ax75nmTP+WR9AgdzA42DI7YmBtiNKN2g1Wxl+d5Dyek9SWt740t+ukwXSmv/jMBCUPyV3YEI93vZHgdP7UQ== + dependencies: + "@types/koa" "*" + "@types/ledgerhq__hw-transport-node-hid@^4.22.2": version "4.22.2" resolved "https://registry.yarnpkg.com/@types/ledgerhq__hw-transport-node-hid/-/ledgerhq__hw-transport-node-hid-4.22.2.tgz#f3de58b9b49b461dd96e5bfb646328c242e70aca" @@ -5495,6 +6362,18 @@ resolved "https://registry.yarnpkg.com/@types/mdurl/-/mdurl-1.0.2.tgz#e2ce9d83a613bacf284c7be7d491945e39e1f8e9" integrity sha512-eC4U9MlIcu2q0KQmXszyn5Akca/0jrQmwDRgpAMJai7qBWq4amIQhZyNau4VYGtCeALvW1/NtjzJJ567aZxfKA== +"@types/memcached@^2.2.6": + version "2.2.7" + resolved "https://registry.yarnpkg.com/@types/memcached/-/memcached-2.2.7.tgz#b3de026a11a4c0a18fb079cfeeaea10a41da20f9" + integrity sha512-ImJbz1i8pl+OnyhYdIDnHe8jAuM8TOwM/7VsciqhYX3IL0jPPUToAtVxklfcWFGYckahEYZxhd9FS0z3MM1dpA== + dependencies: + "@types/node" "*" + +"@types/mime-db@*": + version "1.43.1" + resolved "https://registry.yarnpkg.com/@types/mime-db/-/mime-db-1.43.1.tgz#c2a0522453bb9b6e84ee48b7eef765d19bcd519e" + integrity sha512-kGZJY+R+WnR5Rk+RPHUMERtb2qBRViIHCBdtUrY+NmwuGb8pQdfTqQiCKPrxpdoycl8KWm2DLdkpoSdt479XoQ== + "@types/mime@*": version "3.0.1" resolved "https://registry.yarnpkg.com/@types/mime/-/mime-3.0.1.tgz#5f8f2bca0a5863cb69bc0b0acd88c96cb1d4ae10" @@ -5547,6 +6426,13 @@ resolved "https://registry.yarnpkg.com/@types/ms/-/ms-0.7.31.tgz#31b7ca6407128a3d2bbc27fe2d21b345397f6197" integrity sha512-iiUgKzV9AuaEkZqkOLDIvlQiL6ltuZd9tGcW3gwpnX8JbuiuhFlEGmmFXEXkN50Cvq7Os88IY2v0dkDqXYWVgA== +"@types/mysql@2.15.21": + version "2.15.21" + resolved "https://registry.yarnpkg.com/@types/mysql/-/mysql-2.15.21.tgz#7516cba7f9d077f980100c85fd500c8210bd5e45" + integrity sha512-NPotx5CVful7yB+qZbWtXL2fA4e7aEHkihHLjklc6ID8aq7bhguHgeIoC1EmSNTAuCgI6ZXrjt2ZSaXnYX0EUg== + dependencies: + "@types/node" "*" + "@types/node-fetch@^2.5.7": version "2.6.3" resolved "https://registry.yarnpkg.com/@types/node-fetch/-/node-fetch-2.6.3.tgz#175d977f5e24d93ad0f57602693c435c57ad7e80" @@ -5629,6 +6515,31 @@ dependencies: "@types/node" "*" +"@types/pg-pool@2.0.3": + version "2.0.3" + resolved "https://registry.yarnpkg.com/@types/pg-pool/-/pg-pool-2.0.3.tgz#3eb8df2933f617f219a53091ad4080c94ba1c959" + integrity sha512-fwK5WtG42Yb5RxAwxm3Cc2dJ39FlgcaNiXKvtTLAwtCn642X7dgel+w1+cLWwpSOFImR3YjsZtbkfjxbHtFAeg== + dependencies: + "@types/pg" "*" + +"@types/pg@*": + version "8.10.2" + resolved "https://registry.yarnpkg.com/@types/pg/-/pg-8.10.2.tgz#7814d1ca02c8071f4d0864c1b17c589b061dba43" + integrity sha512-MKFs9P6nJ+LAeHLU3V0cODEOgyThJ3OAnmOlsZsxux6sfQs3HRXR5bBn7xG5DjckEFhTAxsXi7k7cd0pCMxpJw== + dependencies: + "@types/node" "*" + pg-protocol "*" + pg-types "^4.0.1" + +"@types/pg@8.6.1": + version "8.6.1" + resolved "https://registry.yarnpkg.com/@types/pg/-/pg-8.6.1.tgz#099450b8dc977e8197a44f5229cedef95c8747f9" + integrity sha512-1Kc4oAGzAl7uqUStZCDvaLFqZrW9qWSjXOmBfdgyBP5La7Us6Mg4GBvRlSoaZMhQF/zSj1C8CtKMBkoiT8eL8w== + dependencies: + "@types/node" "*" + pg-protocol "*" + pg-types "^2.2.0" + "@types/pg@^7.14.3": version "7.14.11" resolved "https://registry.yarnpkg.com/@types/pg/-/pg-7.14.11.tgz#daf5555504a1f7af4263df265d91f140fece52e3" @@ -5794,6 +6705,11 @@ "@types/mime" "*" "@types/node" "*" +"@types/shimmer@^1.0.2": + version "1.0.2" + resolved "https://registry.yarnpkg.com/@types/shimmer/-/shimmer-1.0.2.tgz#93eb2c243c351f3f17d5c580c7467ae5d686b65f" + integrity sha512-dKkr1bTxbEsFlh2ARpKzcaAmsYixqt9UyCdoEZk8rHyE4iQYcDCyvSjDSf7JUWJHlJiTtbIoQjxKh6ViywqDAg== + "@types/solidity-parser-antlr@^0.2.3": version "0.2.3" resolved "https://registry.yarnpkg.com/@types/solidity-parser-antlr/-/solidity-parser-antlr-0.2.3.tgz#bb2d9c6511bf483afe4fc3e2714da8a924e59e3f" @@ -5860,6 +6776,13 @@ dependencies: "@types/tar-fs" "*" +"@types/tedious@^4.0.6": + version "4.0.9" + resolved "https://registry.yarnpkg.com/@types/tedious/-/tedious-4.0.9.tgz#baa3892e45c63d7aac54d7bf5b01385d210ff19e" + integrity sha512-ipwFvfy9b2m0gjHsIX0D6NAAwGCKokzf5zJqUZHUGt+7uWVlBIy6n2eyMgiKQ8ChLFVxic/zwQUhjLYNzbHDRA== + dependencies: + "@types/node" "*" + "@types/through@*": version "0.0.30" resolved "https://registry.yarnpkg.com/@types/through/-/through-0.0.30.tgz#e0e42ce77e897bd6aead6f6ea62aeb135b8a3895" @@ -6089,6 +7012,11 @@ accepts@^1.3.5, accepts@~1.3.5, accepts@~1.3.8: mime-types "~2.1.34" negotiator "0.6.3" +acorn-import-assertions@^1.9.0: + version "1.9.0" + resolved "https://registry.yarnpkg.com/acorn-import-assertions/-/acorn-import-assertions-1.9.0.tgz#507276249d684797c84e0734ef84860334cfb1ac" + integrity sha512-cmMwop9x+8KFhxvKrKfPYmN6/pKTYYHBqLa0DfvVZcKMJWNyWLnaqND7dx/qn66R7ewM1UX5XMaDVP5wlVTaVA== + acorn-jsx@^5.0.0, acorn-jsx@^5.3.2: version "5.3.2" resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.2.tgz#7ed5bb55908b3b2f1bc55c6af1653bada7f07937" @@ -6109,7 +7037,7 @@ acorn@^8.4.1, acorn@^8.7.0: resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.8.2.tgz#1b2f25db02af965399b9776b0c2c391276d37c4a" integrity sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw== -acorn@^8.9.0: +acorn@^8.8.2, 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== @@ -6227,6 +7155,11 @@ ansi-align@^3.0.0: dependencies: string-width "^4.1.0" +ansi-color@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/ansi-color/-/ansi-color-0.2.1.tgz#3e75c037475217544ed763a8db5709fa9ae5bf9a" + integrity sha512-bF6xLaZBLpOQzgYUtYEhJx090nPSZk1BQ/q2oyBK9aMMcJHzx9uXGCjI2Y+LebsN4Jwoykr0V9whbPiogdyHoQ== + ansi-colors@3.2.3: version "3.2.3" resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-3.2.3.tgz#57d35b8686e851e2cc04c403f1c00203976a1813" @@ -7679,6 +8612,16 @@ bufferutil@^4.0.1: dependencies: node-gyp-build "^4.3.0" +bufrw@^1.2.1: + version "1.3.0" + resolved "https://registry.yarnpkg.com/bufrw/-/bufrw-1.3.0.tgz#28d6cfdaf34300376836310f5c31d57eeb40c8fa" + integrity sha512-jzQnSbdJqhIltU9O5KUiTtljP9ccw2u5ix59McQy4pV2xGhVLhRZIndY8GIrgh5HjXa6+QJ9AQhOd2QWQizJFQ== + dependencies: + ansi-color "^0.2.1" + error "^7.0.0" + hexer "^1.5.0" + xtend "^4.0.0" + builtin-modules@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-1.1.1.tgz#270f076c5a72c02f5b65a47df94c5fe3a278892f" @@ -8258,6 +9201,11 @@ cjs-module-lexer@^1.0.0: resolved "https://registry.yarnpkg.com/cjs-module-lexer/-/cjs-module-lexer-1.2.2.tgz#9f84ba3244a512f3a54e5277e8eef4c489864e40" integrity sha512-cOU9usZw8/dXIXKtwa8pM0OTJQuJkxMN6w30csNRUerHfeQ5R6U3kkU/FtJeIf3M202OHfY2U8ccInBG7/xogA== +cjs-module-lexer@^1.2.2: + version "1.2.3" + resolved "https://registry.yarnpkg.com/cjs-module-lexer/-/cjs-module-lexer-1.2.3.tgz#6c370ab19f8a3394e318fe682686ec0ac684d107" + integrity sha512-0TNiGstbQmCFwt4akjjBg5pLRTSyj/PkWQ1ZoO2zntmg9yLqSRxwEa4iCfQLGjqhiqBfOJa7W/E8wfGrTDmlZQ== + cjson@^0.3.1: version "0.3.3" resolved "https://registry.yarnpkg.com/cjson/-/cjson-0.3.3.tgz#a92d9c786e5bf9b930806329ee05d5d3261b4afa" @@ -10238,6 +11186,21 @@ error-ex@^1.2.0, error-ex@^1.3.1: dependencies: is-arrayish "^0.2.1" +error@7.0.2: + version "7.0.2" + resolved "https://registry.yarnpkg.com/error/-/error-7.0.2.tgz#a5f75fff4d9926126ddac0ea5dc38e689153cb02" + integrity sha512-UtVv4l5MhijsYUxPJo4390gzfZvAnTHreNnDjnTZaKIiZ/SemXxAhBkYSKtWa5RtBXbLP8tMgn/n0RUa/H7jXw== + dependencies: + string-template "~0.2.1" + xtend "~4.0.0" + +error@^7.0.0: + version "7.2.1" + resolved "https://registry.yarnpkg.com/error/-/error-7.2.1.tgz#eab21a4689b5f684fc83da84a0e390de82d94894" + integrity sha512-fo9HBvWnx3NGUKMvMwB/CBCMMrfEJgbDTVDEkPygA3Bdd3lM1OyCd+rbQ8BwnpF6GdVeOLDNmyL4N5Bg80ZvdA== + dependencies: + string-template "~0.2.1" + es-abstract@^1.17.0-next.1, es-abstract@^1.19.0, es-abstract@^1.20.4, es-abstract@^1.21.2: version "1.21.2" resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.21.2.tgz#a56b9695322c8a185dc25975aa3b8ec31d0e7eff" @@ -12506,7 +13469,7 @@ gcp-metadata@^4.2.0: gaxios "^4.0.0" json-bigint "^1.0.0" -gcp-metadata@^5.3.0: +gcp-metadata@^5.0.0, gcp-metadata@^5.3.0: version "5.3.0" resolved "https://registry.yarnpkg.com/gcp-metadata/-/gcp-metadata-5.3.0.tgz#6f45eb473d0cb47d15001476b48b663744d25408" integrity sha512-FNTkdNEnBdlqF2oatizolQqNANMrcqJt6AAYt99B3y1aLLC8Hc5IOBb+ZnnzllodEEf6xMBp6wRcBbc16fa65w== @@ -13680,6 +14643,16 @@ heap-js@^2.2.0: resolved "https://registry.yarnpkg.com/heap-js/-/heap-js-2.3.0.tgz#8eed2cede31ec312aa696eef1d4df0565841f183" integrity sha512-E5303mzwQ+4j/n2J0rDvEPBN7GKjhis10oHiYOgjxsmxYgqG++hz9NyLLOXttzH8as/DyiBHYpUrJTZWYaMo8Q== +hexer@^1.5.0: + version "1.5.0" + resolved "https://registry.yarnpkg.com/hexer/-/hexer-1.5.0.tgz#b86ce808598e8a9d1892c571f3cedd86fc9f0653" + integrity sha512-dyrPC8KzBzUJ19QTIo1gXNqIISRXQ0NwteW6OeQHRN4ZuZeHkdODfj0zHBdOlHbRY8GqbqK57C9oWSvQZizFsg== + dependencies: + ansi-color "^0.2.1" + minimist "^1.1.0" + process "^0.10.0" + xtend "^4.0.0" + hexoid@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/hexoid/-/hexoid-1.0.0.tgz#ad10c6573fb907de23d9ec63a711267d9dc9bc18" @@ -14030,6 +15003,16 @@ import-fresh@^3.0.0, import-fresh@^3.2.1: parent-module "^1.0.0" resolve-from "^4.0.0" +import-in-the-middle@1.4.2: + version "1.4.2" + resolved "https://registry.yarnpkg.com/import-in-the-middle/-/import-in-the-middle-1.4.2.tgz#2a266676e3495e72c04bbaa5ec14756ba168391b" + integrity sha512-9WOz1Yh/cvO/p69sxRmhyQwrIGGSp7EIdcb+fFNVi7CzQGQB8U1/1XrKVSbEd/GNOAeM0peJtmi7+qphe7NvAw== + dependencies: + acorn "^8.8.2" + acorn-import-assertions "^1.9.0" + cjs-module-lexer "^1.2.2" + module-details-from-path "^1.0.3" + import-lazy@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/import-lazy/-/import-lazy-2.1.0.tgz#05698e3d45c88e8d7e9d92cb0584e77f096f3e43" @@ -14389,6 +15372,13 @@ is-core-module@^2.11.0, is-core-module@^2.5.0, is-core-module@^2.8.1: dependencies: has "^1.0.3" +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-data-descriptor@^0.1.4: version "0.1.4" resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz#0b5ee648388e2c860282e793f1856fec3f301b56" @@ -15060,6 +16050,17 @@ jackspeak@^2.0.3: optionalDependencies: "@pkgjs/parseargs" "^0.11.0" +jaeger-client@^3.15.0: + version "3.19.0" + resolved "https://registry.yarnpkg.com/jaeger-client/-/jaeger-client-3.19.0.tgz#9b5bd818ebd24e818616ee0f5cffe1722a53ae6e" + integrity sha512-M0c7cKHmdyEUtjemnJyx/y9uX16XHocL46yQvyqDlPdvAcwPDbHrIbKjQdBqtiE4apQ/9dmr+ZLJYYPGnurgpw== + dependencies: + node-int64 "^0.4.0" + opentracing "^0.14.4" + thriftrw "^3.5.0" + uuid "^8.3.2" + xorshift "^1.1.1" + jake@^10.8.5: version "10.8.5" resolved "https://registry.yarnpkg.com/jake/-/jake-10.8.5.tgz#f2183d2c59382cb274226034543b9c03b8164c46" @@ -15464,6 +16465,17 @@ jmespath@0.16.0: resolved "https://registry.yarnpkg.com/jmespath/-/jmespath-0.16.0.tgz#b15b0a85dfd4d930d43e69ed605943c802785076" integrity sha512-9FzQjJ7MATs1tSpnco1K6ayiYE3figslrXA72G2HQ/n76RzvYlofyi5QM+iX4YRs/pu3yzxlVQSST23+dMDknw== +joi@^17.3.0: + version "17.9.2" + resolved "https://registry.yarnpkg.com/joi/-/joi-17.9.2.tgz#8b2e4724188369f55451aebd1d0b1d9482470690" + integrity sha512-Itk/r+V4Dx0V3c7RLFdRh12IOjySm2/WGPMubBT92cQvRfYZhPM2W0hZlctjj72iES8jsRCwp7S/cRmWBnJ4nw== + dependencies: + "@hapi/hoek" "^9.0.0" + "@hapi/topo" "^5.0.0" + "@sideway/address" "^4.1.3" + "@sideway/formula" "^3.0.1" + "@sideway/pinpoint" "^2.0.0" + join-path@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/join-path/-/join-path-1.1.1.tgz#10535a126d24cbd65f7ffcdf15ef2e631076b505" @@ -16745,6 +17757,11 @@ loglevel@^1.6.1, loglevel@^1.6.8: resolved "https://registry.yarnpkg.com/loglevel/-/loglevel-1.8.1.tgz#5c621f83d5b48c54ae93b6156353f555963377b4" integrity sha512-tCRIJM51SHjAayKwC+QAg8hT8vg6z7GSgLJKGvzuPb1Wc+hLzqtuVLxp6/HzSPOozuK+8ErAhy7U/sVzw8Dgfg== +long@^2.4.0: + version "2.4.0" + resolved "https://registry.yarnpkg.com/long/-/long-2.4.0.tgz#9fa180bb1d9500cdc29c4156766a1995e1f4524f" + integrity sha512-ijUtjmO/n2A5PaosNG9ZGDsQ3vxJg7ZW8vsY8Kp0f2yIZWhSJvjmegV7t+9RPQKxKrvj8yKGehhS+po14hPLGQ== + long@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/long/-/long-4.0.0.tgz#9a7b71cfb7d361a194ea555241c92f7468d5bf28" @@ -17816,6 +18833,11 @@ modify-values@^1.0.0: resolved "https://registry.yarnpkg.com/modify-values/-/modify-values-1.0.1.tgz#b3939fa605546474e3e3e3c63d64bd43b4ee6022" integrity sha512-xV2bxeN6F7oYjZWTe/YPAy6MN2M+sL4u/Rlm2AHCIVGfo2p1yGmBHQ6vHehl4bRTZBdHu3TSkWdYgkwpYzAGSw== +module-details-from-path@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/module-details-from-path/-/module-details-from-path-1.0.3.tgz#114c949673e2a8a35e9d35788527aa37b679da2b" + integrity sha512-ySViT69/76t8VhE1xXHK6Ch4NcDd26gx0MzKXLO+F7NOtnqH68d9zF94nT8ZWSxXh8ELOERsnJO/sWt1xZYw5A== + module-error@^1.0.1, module-error@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/module-error/-/module-error-1.0.2.tgz#8d1a48897ca883f47a45816d4fb3e3c6ba404d86" @@ -18813,6 +19835,11 @@ oboe@2.1.5: dependencies: http-https "^1.0.0" +obuf@~1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/obuf/-/obuf-1.1.2.tgz#09bea3343d41859ebd446292d11c9d4db619084e" + integrity sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg== + "old-identity-sdk@npm:@celo/identity@1.5.2": version "1.5.2" resolved "https://registry.yarnpkg.com/@celo/identity/-/identity-1.5.2.tgz#6401aeefbf7893374f6f940c9e0918d0a75d0411" @@ -18930,6 +19957,11 @@ opencollective-postinstall@^2.0.2: resolved "https://registry.yarnpkg.com/opencollective-postinstall/-/opencollective-postinstall-2.0.3.tgz#7a0fff978f6dbfa4d006238fbac98ed4198c3259" integrity sha512-8AV/sCtuzUeTo8gQK5qDZzARrulB3egtLzFgteqB2tcT4Mw7B8Kt7JcDHmltjz6FOAHsvTevk70gZEbhM4ZS9Q== +opentracing@^0.14.4: + version "0.14.7" + resolved "https://registry.yarnpkg.com/opentracing/-/opentracing-0.14.7.tgz#25d472bd0296dc0b64d7b94cbc995219031428f5" + integrity sha512-vz9iS7MJ5+Bp1URw8Khvdyw1H/hGvzHWlKQ7eRrQojSCDL1/SrWfrY9QebLw97n2deyRtzHRC3MkQfVNUCo91Q== + openzeppelin-solidity@^2.5.0: version "2.5.1" resolved "https://registry.yarnpkg.com/openzeppelin-solidity/-/openzeppelin-solidity-2.5.1.tgz#1cdcce30c4c6a7b6625dab62ccd0440a813ab597" @@ -19592,6 +20624,11 @@ pg-int8@1.0.1: resolved "https://registry.yarnpkg.com/pg-int8/-/pg-int8-1.0.1.tgz#943bd463bf5b71b4170115f80f8efc9a0c0eb78c" integrity sha512-WCtabS6t3c8SkpDBUlb1kjOs7l66xsGdKpIPZsg4wR+B3+u9UAum2odSsF9tnvxg80h4ZxLWMy4pRjOsFIqQpw== +pg-numeric@1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/pg-numeric/-/pg-numeric-1.0.2.tgz#816d9a44026086ae8ae74839acd6a09b0636aa3a" + integrity sha512-BM/Thnrw5jm2kKLE5uJkXqqExRUY/toLHda65XgFTBTFYZyopbKjBe29Ii3RbkvlsMoFwD+tHeGaCjjv0gHlyw== + pg-packet-stream@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/pg-packet-stream/-/pg-packet-stream-1.1.0.tgz#e45c3ae678b901a2873af1e17b92d787962ef914" @@ -19607,7 +20644,7 @@ pg-pool@^3.6.0: resolved "https://registry.yarnpkg.com/pg-pool/-/pg-pool-3.6.0.tgz#3190df3e4747a0d23e5e9e8045bcd99bda0a712e" integrity sha512-clFRf2ksqd+F497kWFyM21tMjeikn60oGDmqMT8UBrynEwVEX/5R5xd2sdvdo1cZCFlguORNpVuqxIj+aK4cfQ== -pg-protocol@^1.2.0, pg-protocol@^1.6.0: +pg-protocol@*, pg-protocol@^1.2.0, pg-protocol@^1.6.0: version "1.6.0" resolved "https://registry.yarnpkg.com/pg-protocol/-/pg-protocol-1.6.0.tgz#4c91613c0315349363af2084608db843502f8833" integrity sha512-M+PDm637OY5WM307051+bsDia5Xej6d9IR4GwJse1qA1DIhiKlksvrneZOYQq42OM+spubpcNYEo2FcKQrDk+Q== @@ -19623,6 +20660,19 @@ pg-types@^2.1.0, pg-types@^2.2.0: postgres-date "~1.0.4" postgres-interval "^1.1.0" +pg-types@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/pg-types/-/pg-types-4.0.1.tgz#31857e89d00a6c66b06a14e907c3deec03889542" + integrity sha512-hRCSDuLII9/LE3smys1hRHcu5QGcLs9ggT7I/TCs0IE+2Eesxi9+9RWAAwZ0yaGjxoWICF/YHLOEjydGujoJ+g== + dependencies: + pg-int8 "1.0.1" + pg-numeric "1.0.2" + postgres-array "~3.0.1" + postgres-bytea "~3.0.0" + postgres-date "~2.0.1" + postgres-interval "^3.0.0" + postgres-range "^1.1.1" + pg@^7.18.0: version "7.18.2" resolved "https://registry.yarnpkg.com/pg/-/pg-7.18.2.tgz#4e219f05a00aff4db6aab1ba02f28ffa4513b0bb" @@ -19771,16 +20821,33 @@ postgres-array@~2.0.0: resolved "https://registry.yarnpkg.com/postgres-array/-/postgres-array-2.0.0.tgz#48f8fce054fbc69671999329b8834b772652d82e" integrity sha512-VpZrUqU5A69eQyW2c5CA1jtLecCsN2U/bD6VilrFDWq5+5UIEVO7nazS3TEcHf1zuPYO/sqGvUvW62g86RXZuA== +postgres-array@~3.0.1: + version "3.0.2" + resolved "https://registry.yarnpkg.com/postgres-array/-/postgres-array-3.0.2.tgz#68d6182cb0f7f152a7e60dc6a6889ed74b0a5f98" + integrity sha512-6faShkdFugNQCLwucjPcY5ARoW1SlbnrZjmGl0IrrqewpvxvhSLHimCVzqeuULCbG0fQv7Dtk1yDbG3xv7Veog== + postgres-bytea@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/postgres-bytea/-/postgres-bytea-1.0.0.tgz#027b533c0aa890e26d172d47cf9ccecc521acd35" integrity sha512-xy3pmLuQqRBZBXDULy7KbaitYqLcmxigw14Q5sj8QBVLqEwXfeybIKVWiqAXTlcvdvb0+xkOtDbfQMOf4lST1w== +postgres-bytea@~3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/postgres-bytea/-/postgres-bytea-3.0.0.tgz#9048dc461ac7ba70a6a42d109221619ecd1cb089" + integrity sha512-CNd4jim9RFPkObHSjVHlVrxoVQXz7quwNFpz7RY1okNNme49+sVyiTvTRobiLV548Hx/hb1BG+iE7h9493WzFw== + dependencies: + obuf "~1.1.2" + postgres-date@~1.0.4: version "1.0.7" resolved "https://registry.yarnpkg.com/postgres-date/-/postgres-date-1.0.7.tgz#51bc086006005e5061c591cee727f2531bf641a8" integrity sha512-suDmjLVQg78nMK2UZ454hAG+OAW+HQPZ6n++TNDUX+L0+uUlLywnoxJKDou51Zm+zTCjrCl0Nq6J9C5hP9vK/Q== +postgres-date@~2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/postgres-date/-/postgres-date-2.0.1.tgz#638b62e5c33764c292d37b08f5257ecb09231457" + integrity sha512-YtMKdsDt5Ojv1wQRvUhnyDJNSr2dGIC96mQVKz7xufp07nfuFONzdaowrMHjlAzY6GDLd4f+LUHHAAM1h4MdUw== + postgres-interval@^1.1.0: version "1.2.0" resolved "https://registry.yarnpkg.com/postgres-interval/-/postgres-interval-1.2.0.tgz#b460c82cb1587507788819a06aa0fffdb3544695" @@ -19788,6 +20855,16 @@ postgres-interval@^1.1.0: dependencies: xtend "^4.0.0" +postgres-interval@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/postgres-interval/-/postgres-interval-3.0.0.tgz#baf7a8b3ebab19b7f38f07566c7aab0962f0c86a" + integrity sha512-BSNDnbyZCXSxgA+1f5UU2GmwhoI0aU5yMxRGO8CdFEcY2BQF9xm/7MqKnYoM1nJDk8nONNWDk9WeSmePFhQdlw== + +postgres-range@^1.1.1: + version "1.1.3" + resolved "https://registry.yarnpkg.com/postgres-range/-/postgres-range-1.1.3.tgz#9ccd7b01ca2789eb3c2e0888b3184225fa859f76" + integrity sha512-VdlZoocy5lCP0c/t66xAfclglEapXPCIVhqqJRncYpvbCgImF0w67aPKfbqUMr72tO2k5q0TdTZwCLjPTI6C9g== + pouchdb-abstract-mapreduce@7.3.1: version "7.3.1" resolved "https://registry.yarnpkg.com/pouchdb-abstract-mapreduce/-/pouchdb-abstract-mapreduce-7.3.1.tgz#96ff4a0f41cbe273f3f52fde003b719005a2093c" @@ -20119,6 +21196,11 @@ process-nextick-args@~2.0.0: resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2" integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag== +process@^0.10.0: + version "0.10.1" + resolved "https://registry.yarnpkg.com/process/-/process-0.10.1.tgz#842457cc51cfed72dc775afeeafb8c6034372725" + integrity sha512-dyIett8dgGIZ/TXKUzeYExt7WA6ldDzys9vTDU/cCA9L17Ypme+KzS+NjQCjpn9xsvi/shbMC+yP/BcFMBz0NA== + process@^0.11.1, process@^0.11.10: version "0.11.10" resolved "https://registry.yarnpkg.com/process/-/process-0.11.10.tgz#7332300e840161bda3e69a1d1d91a7d4bc16f182" @@ -20319,7 +21401,7 @@ protobufjs@6.11.3, protobufjs@^6.10.0, protobufjs@^6.11.2, protobufjs@^6.11.3, p "@types/node" ">=13.7.0" long "^4.0.0" -protobufjs@7.2.4, protobufjs@^7.2.2: +protobufjs@7.2.4, protobufjs@^7.2.2, protobufjs@^7.2.3: version "7.2.4" resolved "https://registry.yarnpkg.com/protobufjs/-/protobufjs-7.2.4.tgz#3fc1ec0cdc89dd91aef9ba6037ba07408485c3ae" integrity sha512-AT+RJgD2sH8phPmCf7OUZR8xGdcJRga4+1cOaXJ64hvcSkVhNcRHOwIxUatPH15+nj59WAGTDv3LSGZPEQbJaQ== @@ -21136,6 +22218,15 @@ require-from-string@^2.0.0, require-from-string@^2.0.1, require-from-string@^2.0 resolved "https://registry.yarnpkg.com/require-from-string/-/require-from-string-2.0.2.tgz#89a7fdd938261267318eafe14f9c32e598c36909" integrity sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw== +require-in-the-middle@^7.1.1: + version "7.2.0" + resolved "https://registry.yarnpkg.com/require-in-the-middle/-/require-in-the-middle-7.2.0.tgz#b539de8f00955444dc8aed95e17c69b0a4f10fcf" + integrity sha512-3TLx5TGyAY6AOqLBoXmHkNql0HIf2RGbuMgCDT2WO/uGVAPJs6h7Kl+bN6TIZGd9bWhWPwnDnTHGtW8Iu77sdw== + dependencies: + debug "^4.1.1" + module-details-from-path "^1.0.3" + resolve "^1.22.1" + require-main-filename@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-1.0.1.tgz#97f717b69d48784f5f526a6c5aa8ffdda055a4d1" @@ -21239,6 +22330,15 @@ resolve@^1.1.6, resolve@^1.10.0, resolve@^1.11.1, resolve@^1.14.2, resolve@^1.20 path-parse "^1.0.7" supports-preserve-symlinks-flag "^1.0.0" +resolve@^1.22.1: + version "1.22.4" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.4.tgz#1dc40df46554cdaf8948a486a10f6ba1e2026c34" + integrity sha512-PXNdCiPqDqeUou+w1C2eTQbNfxKSuMxqTCuvlmmMsk1NWHL5fRrhY6Pl0qEYYc6+QqGClco1Qj8XnjPego4wfg== + 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.yarnpkg.com/responselike/-/responselike-1.0.2.tgz#918720ef3b631c5642be068f15ade5a46f4ba1e7" @@ -21638,7 +22738,7 @@ semver@^6.0.0, semver@^6.1.1, semver@^6.1.2, semver@^6.2.0, semver@^6.3.0: resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== -semver@^7.1.2, semver@^7.5.2: +semver@^7.1.2, semver@^7.5.1, semver@^7.5.2: 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== @@ -21826,6 +22926,11 @@ shelljs@^0.8.4: interpret "^1.0.0" rechoir "^0.6.2" +shimmer@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/shimmer/-/shimmer-1.2.1.tgz#610859f7de327b587efebf501fb43117f9aff337" + integrity sha512-sQTKC1Re/rM6XyFM6fIAGHRPVGvyXfgzIDvzoq608vM+jeyVD0Tu1E6Np0Kc2zAIFWIj963V2800iF/9LPieQw== + side-channel@^1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/side-channel/-/side-channel-1.0.4.tgz#efce5c8fdc104ee751b25c58d4290011fa5ea2cf" @@ -22423,6 +23528,11 @@ string-length@^4.0.1: char-regex "^1.0.2" strip-ansi "^6.0.0" +string-template@~0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/string-template/-/string-template-0.2.1.tgz#42932e598a352d01fc22ec3367d9d84eec6c9add" + integrity sha512-Yptehjogou2xm4UJbxJ4CxgZx12HBfeystp0y3x7s4Dj32ltVVG1Gg8YhKjHZkHicuKpZX/ffilA8505VbUbpw== + "string-width-cjs@npm:string-width@^4.2.0", "string-width@^1.0.2 || 2 || 3 || 4", string-width@^4.0.0, string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.2, string-width@^4.2.3: version "4.2.3" resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" @@ -23145,6 +24255,15 @@ thenify-all@^1.0.0: dependencies: any-promise "^1.0.0" +thriftrw@^3.5.0: + version "3.11.4" + resolved "https://registry.yarnpkg.com/thriftrw/-/thriftrw-3.11.4.tgz#84c990ee89e926631c0b475909ada44ee9249870" + integrity sha512-UcuBd3eanB3T10nXWRRMwfwoaC6VMk7qe3/5YIWP2Jtw+EbHqJ0p1/K3x8ixiR5dozKSSfcg1W+0e33G1Di3XA== + dependencies: + bufrw "^1.2.1" + error "7.0.2" + long "^2.4.0" + through2@2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/through2/-/through2-2.0.1.tgz#384e75314d49f32de12eebb8136b8eb6b5d59da9" @@ -26419,6 +27538,11 @@ xmlhttprequest@*, xmlhttprequest@1.8.0: resolved "https://registry.yarnpkg.com/xmlhttprequest/-/xmlhttprequest-1.8.0.tgz#67fe075c5c24fef39f9d65f5f7b7fe75171968fc" integrity sha512-58Im/U0mlVBLM38NdZjHyhuMtCqa61469k2YP/AaPbvCoV9aQGUpbJBj1QRm2ytRiVQBD/fsw7L2bJGDVQswBA== +xorshift@^1.1.1: + version "1.2.0" + resolved "https://registry.yarnpkg.com/xorshift/-/xorshift-1.2.0.tgz#30a4cdd8e9f8d09d959ed2a88c42a09c660e8148" + integrity sha512-iYgNnGyeeJ4t6U11NpA/QiKy+PXn5Aa3Azg5qkwIFz1tBLllQrjjsk9yzD7IAK0naNU4JxdeDgqW9ov4u/hc4g== + xpath.js@~1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/xpath.js/-/xpath.js-1.1.0.tgz#3816a44ed4bb352091083d002a383dd5104a5ff1" From 0867b89cb1f42cd49ff4d838af0ffe02d023602b Mon Sep 17 00:00:00 2001 From: pputman-clabs <99900942+pputman-clabs@users.noreply.github.com> Date: Wed, 23 Aug 2023 14:59:37 -0500 Subject: [PATCH 06/31] adding trivy option to all the workflows that build containers (#10514) * adding trivy option to all the workflows that build containers * triggering workflow as a test * fixing typo * removing old test workflow that isn't used and removing the workflow trigger for testing trivy --- .github/workflows/container-all-monorepo.yml | 2 ++ .github/workflows/container-celotool.yml | 2 ++ .github/workflows/container-circleci.yml | 4 ++++ .github/workflows/container-cli.yml | 2 ++ 4 files changed, 10 insertions(+) diff --git a/.github/workflows/container-all-monorepo.yml b/.github/workflows/container-all-monorepo.yml index c418015b981..682f64d733b 100644 --- a/.github/workflows/container-all-monorepo.yml +++ b/.github/workflows/container-all-monorepo.yml @@ -25,6 +25,7 @@ jobs: tag: ${{ github.sha }} context: . file: dockerfiles/all-monorepo/Dockerfile + trivy: true celomonorepo-build: uses: celo-org/reusable-workflows/.github/workflows/container-cicd.yaml@v1.8 @@ -38,3 +39,4 @@ jobs: tag: ${{ github.sha }} context: . file: dockerfiles/all-monorepo/Dockerfile + trivy: true diff --git a/.github/workflows/container-celotool.yml b/.github/workflows/container-celotool.yml index 2b6fce3d7c1..63e121c840f 100644 --- a/.github/workflows/container-celotool.yml +++ b/.github/workflows/container-celotool.yml @@ -25,6 +25,7 @@ jobs: tag: ${{ github.sha }} context: . file: dockerfiles/celotool/Dockerfile + trivy: true celotool-build: uses: celo-org/reusable-workflows/.github/workflows/container-cicd.yaml@v1.8 @@ -38,3 +39,4 @@ jobs: tag: ${{ github.sha }} context: . file: dockerfiles/celotool/Dockerfile + trivy: true diff --git a/.github/workflows/container-circleci.yml b/.github/workflows/container-circleci.yml index b8bc254a6e3..3ff53c3f26d 100644 --- a/.github/workflows/container-circleci.yml +++ b/.github/workflows/container-circleci.yml @@ -47,6 +47,7 @@ jobs: artifact-registry: us-west1-docker.pkg.dev/devopsre/dev-images/circleci-geth tag: testing context: dockerfiles/circleci + trivy: true geth-build: uses: celo-org/reusable-workflows/.github/workflows/container-cicd.yaml@v1.8 @@ -61,6 +62,7 @@ jobs: artifact-registry: us-west1-docker.pkg.dev/devopsre/celo-monorepo/circleci-geth tag: latest context: dockerfiles/circleci + trivy: true node12-build-dev: uses: celo-org/reusable-workflows/.github/workflows/container-cicd.yaml@v1.8 @@ -75,6 +77,7 @@ jobs: artifact-registry: us-west1-docker.pkg.dev/devopsre/dev-images/circleci-node12 tag: testing context: dockerfiles/circleci + trivy: true node12-build: uses: celo-org/reusable-workflows/.github/workflows/container-cicd.yaml@v1.8 @@ -89,4 +92,5 @@ jobs: artifact-registry: us-west1-docker.pkg.dev/devopsre/celo-monorepo/circleci-node12 tag: latest context: dockerfiles/circleci + trivy: true diff --git a/.github/workflows/container-cli.yml b/.github/workflows/container-cli.yml index 84a4d794cca..12a2994421e 100644 --- a/.github/workflows/container-cli.yml +++ b/.github/workflows/container-cli.yml @@ -25,6 +25,7 @@ jobs: tag: testing context: . file: dockerfiles/cli-standalone/Dockerfile + trivy: true celocli-build: uses: celo-org/reusable-workflows/.github/workflows/container-cicd.yaml@v1.8 @@ -38,3 +39,4 @@ jobs: tag: latest context: . file: dockerfiles/cli-standalone/Dockerfile + trivy: true From 84fd8073ea89b7ebe1c8a65763b97b52e266101d Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 23 Aug 2023 22:17:43 +0000 Subject: [PATCH 07/31] Bump word-wrap from 1.2.3 to 1.2.4 (#10433) Bumps [word-wrap](https://github.com/jonschlinkert/word-wrap) from 1.2.3 to 1.2.4. - [Release notes](https://github.com/jonschlinkert/word-wrap/releases) - [Commits](https://github.com/jonschlinkert/word-wrap/compare/1.2.3...1.2.4) --- updated-dependencies: - dependency-name: word-wrap dependency-type: indirect ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Victoria <4222953+lvpeschke@users.noreply.github.com> --- yarn.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/yarn.lock b/yarn.lock index b61a69db38a..4f29cf22509 100644 --- a/yarn.lock +++ b/yarn.lock @@ -27277,9 +27277,9 @@ winston@^3.0.0: winston-transport "^4.5.0" word-wrap@~1.2.3: - version "1.2.3" - resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.3.tgz#610636f6b1f703891bd34771ccb17fb93b47079c" - integrity sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ== + version "1.2.4" + resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.4.tgz#cb4b50ec9aca570abd1f52f33cd45b6c61739a9f" + integrity sha512-2V81OA4ugVo5pRo46hAoD2ivUJx8jXmWXfUkY4KFNw0hEptvN0QfH3K4nHiwzGeKl5rFKedV48QVoqYavy4YpA== wordwrap@^1.0.0: version "1.0.0" From c81e0ff6d158f7e7fbd876a884501206f1158c79 Mon Sep 17 00:00:00 2001 From: Alec Schaefer Date: Wed, 30 Aug 2023 01:36:46 -0400 Subject: [PATCH 08/31] ODIS 3.0.0 Release Branch (#10462) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * sdks 4.1.1-beta.1, pnpcommon 3.0.0-beta.1 * fix sdk release script and formatting * remove unneccessary combiner dependency * get rid of trx * update signer version used in combiner integration tests * add metering * get rid of trx * highlighting other relevant code for reviewers * highlighting other relevant code for reviewers again * Soloseng/fix-release (#10466) * update packages * change format to number * add back trx * rename tableWithLockForTrx to queryWithOptionalTrx * drive-by remove attestations from config * remove comment * add back trx * add back trx comment * add back rollack * bump version numbers to beta.3 * mock combiner authentication * Odis signer refactor (#10464) Refactors Signer to be more performant * Combiner tracing - staging (#10496) Adds tracing to the combiner * removed blocknumber (#10507) * Signer mock interfaces (#10510) add mock signer interfaces * add moving avg to load test (#10509) * Big Refactor of the combiner (#10513) * first pass into transforming into handlers * Extract methods out of IO class (story: IO class destruction) * io: getSignerEndpoint lifted up to base class * Remove inputChecks and authenticate from IO * wip: kill Combiner and Signer actions * use handler function (remove IO and Action) * kill ThresholdService and ResponseLogger classes * Removes Session and CryptoSession * Fix typing errors * fix tests * Uses httpAgent for http/s connections * use shouldCheckKeyVerion boolean argument * fix some tests * cosmetic cleanup from PR review * Fixes some tests * fix error reporting * fix pnp integration test * bump combiner version * fix integrations test --------- Co-authored-by: alecps * fix lint errors * fix unit tests * fix issue on domainQuota signer endpoint * publish common package for combiner deploy * implement AbortSignal any * add back log based metrics * add back trx, fix signer tests * prevent loadtest from crashing on error response (#10517) * Set user agent to the kit (#10518) * Add Remove database error (#10519) * fix log based metric * store signature in requests table (#10520) * store signature in requests table * remove it.only * fix keyVersion parsing * fix fallback url bug * lint fix + bump combiner version * make signature optional * Signer Database requests prunning (#10521) * Signer Database requests prunning * Fix tests * Refactor code * Update packages/phone-number-privacy/signer/src/pnp/services/request-service.ts Co-authored-by: soloseng <102702451+soloseng@users.noreply.github.com> * Adding tests * Update tests * Remove unnecessary transaction wrapper --------- Co-authored-by: soloseng <102702451+soloseng@users.noreply.github.com> * Fixed linter * decrease coverage threshold 76% -> 68% * Add index in timestamp (#10525) * Update packages/phone-number-privacy/signer/src/pnp/services/request-service.ts * fix signer e2e tests * add TODO * fix response metrics * misc cosmetic changes from review * remove unused code from common pkg * misc edits, remove unused test * remove blockNumber from response type schemas * publish common package and bump odis versions * use 4.1.1-dev everywhere except for ODIS packages * revert change to identity sdk * add back change to identity sdk * remove duplicate countAndThrowDBError in domains request table wrapper * misc fixes from reviewing metrics * add TODO statements and remove unused QService * misc cleanup * cleanup combiner comments * remove combiner comment --------- Co-authored-by: soloseng <102702451+soloseng@users.noreply.github.com> Co-authored-by: Mariano Cortesi Co-authored-by: Álvaro Fernández <35505302+alvarof2@users.noreply.github.com> Co-authored-by: Gaston Ponti --- .vscode/settings.json | 3 +- dependency-graph.json | 1 - packages/celotool/package.json | 4 +- packages/metadata-crawler/package.json | 2 +- packages/phone-number-privacy/TODO.md | 9 + packages/phone-number-privacy/combiner/.env | 4 + .../combiner/package.json | 29 +- .../combiner/src/common/action.ts | 8 - .../combiner/src/common/combine.ts | 337 +++++++++------- .../combiner/src/common/controller.ts | 25 -- .../combiner/src/common/crypto-session.ts | 16 - .../combiner/src/common/handlers.ts | 94 +++++ .../combiner/src/common/io.ts | 213 +++++----- .../combiner/src/common/session.ts | 54 --- .../combiner/src/common/sign.ts | 94 ----- .../combiner/src/config.ts | 5 - .../src/domain/endpoints/disable/action.ts | 97 +++-- .../src/domain/endpoints/disable/io.ts | 80 ---- .../src/domain/endpoints/quota/action.ts | 88 +++-- .../combiner/src/domain/endpoints/quota/io.ts | 86 ---- .../src/domain/endpoints/sign/action.ts | 142 +++++-- .../combiner/src/domain/endpoints/sign/io.ts | 105 ----- .../src/domain/services/log-responses.ts | 96 +++-- .../src/domain/services/threshold-state.ts | 127 +++--- .../combiner/src/index.ts | 4 +- .../src/pnp/endpoints/quota/action.ts | 111 ++++-- .../combiner/src/pnp/endpoints/quota/io.ts | 107 ----- .../combiner/src/pnp/endpoints/sign/action.ts | 144 +++++-- .../combiner/src/pnp/endpoints/sign/io.ts | 126 ------ .../src/pnp/services/log-responses.ts | 173 +++----- .../src/pnp/services/threshold-state.ts | 78 ++-- .../combiner/src/server.ts | 182 ++------- .../combiner/src/tracing.ts | 49 +++ .../combiner/test/end-to-end/pnp.test.ts | 8 +- .../tmpBackwardsCompatibility.test.ts | 59 --- .../combiner/test/integration/domain.test.ts | 55 +-- .../combiner/test/integration/pnp.test.ts | 177 +++------ .../test/unit/domain-response-logger.test.ts | 47 +-- .../test/unit/domain-threshold-state.test.ts | 76 ++-- .../test/unit/pnp-response-logger.test.ts | 328 ++-------------- .../test/unit/pnp-threshold-state.test.ts | 119 +++--- .../combiner/test/utils.ts | 8 + .../phone-number-privacy/common/README.md | 11 +- .../phone-number-privacy/common/package.json | 14 +- .../phone-number-privacy/common/src/index.ts | 2 +- .../common/src/interfaces/errors.ts | 8 +- .../common/src/interfaces/responses.ts | 16 +- .../common/src/test/utils.ts | 5 +- .../common/src/utils/authentication.ts | 190 +++------ .../common/src/utils/contracts.ts | 21 +- .../common/src/utils/key-version.ts | 6 +- .../common/src/utils/responses.utils.ts | 18 +- .../common/test/utils/authentication.test.ts | 162 ++------ .../phone-number-privacy/monitor/package.json | 16 +- .../phone-number-privacy/monitor/src/index.ts | 5 +- .../phone-number-privacy/monitor/src/query.ts | 3 - .../monitor/src/scripts/run-load-test.ts | 133 +++---- .../phone-number-privacy/monitor/src/test.ts | 152 ++++--- packages/phone-number-privacy/signer/.env | 2 +- .../signer/jest.config.js | 2 +- .../phone-number-privacy/signer/package.json | 16 +- .../signer/scripts/run-migrations.ts | 2 +- .../signer/src/common/action.ts | 21 - .../src/common/bls/bls-cryptography-client.ts | 5 +- .../signer/src/common/context.ts | 7 + .../signer/src/common/controller.ts | 61 --- .../signer/src/common/database/database.ts | 29 +- .../20200330212224_create-accounts-table.ts | 8 +- .../20200811163913_create_requests_table.ts | 8 +- .../20210421212301_create-indices.ts | 10 +- .../20220923161710_pnp-requests-onchain.ts | 7 +- .../20220923165433_pnp-accounts-onchain.ts | 8 +- ...0818223141_rename-legacy-accounts-table.ts | 9 + ...0818223301_rename-legacy-requests-table.ts | 9 + ...230818223359_drop-legacy-requests-table.ts | 16 + ...230818223416_drop-legacy-accounts-table.ts | 15 + ...rop-timestamp-from-requests-primary-key.ts | 16 + ...0818230722_drop-redundant-account-index.ts | 14 + ...0825150243_add_signature_request_column.ts | 14 + ...30828180024_add-request-timestamp-index.ts | 14 + .../src/common/database/models/account.ts | 5 +- .../src/common/database/models/request.ts | 11 +- .../signer/src/common/database/utils.ts | 32 +- .../src/common/database/wrappers/account.ts | 92 ++--- .../database/wrappers/domain-request.ts | 63 +-- .../common/database/wrappers/domain-state.ts | 84 ++-- .../src/common/database/wrappers/request.ts | 90 +++-- .../signer/src/common/error.ts | 19 + .../signer/src/common/handler.ts | 185 +++++++++ .../signer/src/common/io.ts | 85 ---- .../signer/src/common/metrics.ts | 54 +-- .../signer/src/common/quota.ts | 16 +- .../signer/src/common/tracing-utils.ts | 21 + .../signer/src/common/web3/contracts.ts | 222 ++--------- .../phone-number-privacy/signer/src/config.ts | 22 +- .../src/domain/endpoints/disable/action.ts | 95 +++-- .../signer/src/domain/endpoints/disable/io.ts | 78 ---- .../src/domain/endpoints/quota/action.ts | 65 +-- .../signer/src/domain/endpoints/quota/io.ts | 83 ---- .../src/domain/endpoints/sign/action.ts | 247 ++++++------ .../signer/src/domain/endpoints/sign/io.ts | 96 ----- .../signer/src/domain/services/quota.ts | 18 +- .../signer/src/domain/session.ts | 14 - .../phone-number-privacy/signer/src/index.ts | 49 ++- .../signer/src/pnp/endpoints/quota/action.ts | 98 +++-- .../signer/src/pnp/endpoints/quota/io.ts | 159 -------- .../signer/src/pnp/endpoints/sign/action.ts | 371 ++++++++---------- .../signer/src/pnp/endpoints/sign/io.ts | 194 --------- .../src/pnp/services/account-service.ts | 100 +++++ .../signer/src/pnp/services/quota.ts | 171 -------- .../src/pnp/services/request-service.ts | 121 ++++++ .../signer/src/pnp/session.ts | 19 - .../phone-number-privacy/signer/src/server.ts | 182 ++++----- .../signer/test/end-to-end/domain.test.ts | 48 +-- .../signer/test/end-to-end/pnp.test.ts | 70 ++-- .../signer/test/integration/domain.test.ts | 15 +- .../signer/test/integration/pnp.test.ts | 352 +++-------------- .../test/pnp/services/request-service.test.ts | 59 +++ packages/sdk/contractkit/package.json | 2 +- packages/sdk/cryptographic-utils/package.json | 2 +- packages/sdk/encrypted-backup/package.json | 2 +- packages/sdk/governance/package.json | 2 +- packages/sdk/identity/package.json | 4 +- packages/sdk/identity/src/odis/quota.test.ts | 3 +- packages/sdk/identity/src/odis/quota.ts | 3 +- packages/sdk/phone-utils/package.json | 2 +- packages/sdk/transactions-uri/package.json | 2 +- packages/sdk/utils/package.json | 2 +- packages/sdk/wallets/wallet-base/package.json | 2 +- .../sdk/wallets/wallet-ledger/package.json | 2 +- .../sdk/wallets/wallet-local/package.json | 2 +- .../sdk/wallets/wallet-remote/package.json | 2 +- yarn.lock | 27 +- 133 files changed, 3301 insertions(+), 5088 deletions(-) create mode 100644 packages/phone-number-privacy/TODO.md delete mode 100644 packages/phone-number-privacy/combiner/src/common/action.ts delete mode 100644 packages/phone-number-privacy/combiner/src/common/controller.ts delete mode 100644 packages/phone-number-privacy/combiner/src/common/crypto-session.ts create mode 100644 packages/phone-number-privacy/combiner/src/common/handlers.ts delete mode 100644 packages/phone-number-privacy/combiner/src/common/session.ts delete mode 100644 packages/phone-number-privacy/combiner/src/common/sign.ts delete mode 100644 packages/phone-number-privacy/combiner/src/domain/endpoints/disable/io.ts delete mode 100644 packages/phone-number-privacy/combiner/src/domain/endpoints/quota/io.ts delete mode 100644 packages/phone-number-privacy/combiner/src/domain/endpoints/sign/io.ts delete mode 100644 packages/phone-number-privacy/combiner/src/pnp/endpoints/quota/io.ts delete mode 100644 packages/phone-number-privacy/combiner/src/pnp/endpoints/sign/io.ts create mode 100644 packages/phone-number-privacy/combiner/src/tracing.ts delete mode 100644 packages/phone-number-privacy/combiner/test/end-to-end/tmpBackwardsCompatibility.test.ts delete mode 100644 packages/phone-number-privacy/signer/src/common/action.ts create mode 100644 packages/phone-number-privacy/signer/src/common/context.ts delete mode 100644 packages/phone-number-privacy/signer/src/common/controller.ts create mode 100644 packages/phone-number-privacy/signer/src/common/database/migrations/20230818223141_rename-legacy-accounts-table.ts create mode 100644 packages/phone-number-privacy/signer/src/common/database/migrations/20230818223301_rename-legacy-requests-table.ts create mode 100644 packages/phone-number-privacy/signer/src/common/database/migrations/20230818223359_drop-legacy-requests-table.ts create mode 100644 packages/phone-number-privacy/signer/src/common/database/migrations/20230818223416_drop-legacy-accounts-table.ts create mode 100644 packages/phone-number-privacy/signer/src/common/database/migrations/20230818224022_drop-timestamp-from-requests-primary-key.ts create mode 100644 packages/phone-number-privacy/signer/src/common/database/migrations/20230818230722_drop-redundant-account-index.ts create mode 100644 packages/phone-number-privacy/signer/src/common/database/migrations/20230825150243_add_signature_request_column.ts create mode 100644 packages/phone-number-privacy/signer/src/common/database/migrations/20230828180024_add-request-timestamp-index.ts create mode 100644 packages/phone-number-privacy/signer/src/common/error.ts create mode 100644 packages/phone-number-privacy/signer/src/common/handler.ts delete mode 100644 packages/phone-number-privacy/signer/src/common/io.ts create mode 100644 packages/phone-number-privacy/signer/src/common/tracing-utils.ts delete mode 100644 packages/phone-number-privacy/signer/src/domain/endpoints/disable/io.ts delete mode 100644 packages/phone-number-privacy/signer/src/domain/endpoints/quota/io.ts delete mode 100644 packages/phone-number-privacy/signer/src/domain/endpoints/sign/io.ts delete mode 100644 packages/phone-number-privacy/signer/src/domain/session.ts delete mode 100644 packages/phone-number-privacy/signer/src/pnp/endpoints/quota/io.ts delete mode 100644 packages/phone-number-privacy/signer/src/pnp/endpoints/sign/io.ts create mode 100644 packages/phone-number-privacy/signer/src/pnp/services/account-service.ts delete mode 100644 packages/phone-number-privacy/signer/src/pnp/services/quota.ts create mode 100644 packages/phone-number-privacy/signer/src/pnp/services/request-service.ts delete mode 100644 packages/phone-number-privacy/signer/src/pnp/session.ts create mode 100644 packages/phone-number-privacy/signer/test/pnp/services/request-service.test.ts diff --git a/.vscode/settings.json b/.vscode/settings.json index 8e336f891ec..928574330b1 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -43,5 +43,6 @@ "javascript.format.enable": false, "editor.tabSize": 2, "editor.detectIndentation": false, - "tslint.jsEnable": true + "tslint.jsEnable": true, + "typescript.tsdk": "node_modules/typescript/lib" } diff --git a/dependency-graph.json b/dependency-graph.json index 1b7e9423014..aefa286dd8d 100644 --- a/dependency-graph.json +++ b/dependency-graph.json @@ -78,7 +78,6 @@ "@celo/encrypted-backup", "@celo/identity", "@celo/phone-number-privacy-common", - "@celo/phone-number-privacy-signer", "@celo/phone-utils", "@celo/utils" ] diff --git a/packages/celotool/package.json b/packages/celotool/package.json index 1cf4b3bfa9a..67d276a84b6 100644 --- a/packages/celotool/package.json +++ b/packages/celotool/package.json @@ -17,7 +17,7 @@ "@celo/network-utils": "4.1.1-dev", "@celo/utils": "4.1.1-dev", "@ethereumjs/util": "8.0.5", - "@ethereumjs/rlp":"4.0.1", + "@ethereumjs/rlp": "4.0.1", "@google-cloud/monitoring": "0.7.1", "@google-cloud/pubsub": "^0.28.1", "@google-cloud/secret-manager": "3.0.0", @@ -66,4 +66,4 @@ "build": "tsc -b ." }, "private": true -} +} \ No newline at end of file diff --git a/packages/metadata-crawler/package.json b/packages/metadata-crawler/package.json index abb633d682d..f40d231dce1 100644 --- a/packages/metadata-crawler/package.json +++ b/packages/metadata-crawler/package.json @@ -34,4 +34,4 @@ "clean:all": "yarn clean && rm -rf lib" }, "private": true -} +} \ No newline at end of file diff --git a/packages/phone-number-privacy/TODO.md b/packages/phone-number-privacy/TODO.md new file mode 100644 index 00000000000..2cefc1a3f0d --- /dev/null +++ b/packages/phone-number-privacy/TODO.md @@ -0,0 +1,9 @@ +# TODO + +- Add caching to Combiner +- Fix Combiner e2e tests +- Fix types in errorResult and sendFailure so we don't have to use ANY in Signer +- Refactor domain sign handler to use db transactions properly +- refactor authorization function with the new account model +- Make caching config parameters configurable by environment +- TODO comments \ No newline at end of file diff --git a/packages/phone-number-privacy/combiner/.env b/packages/phone-number-privacy/combiner/.env index 14bedd678cf..a7648363631 100644 --- a/packages/phone-number-privacy/combiner/.env +++ b/packages/phone-number-privacy/combiner/.env @@ -6,3 +6,7 @@ SERVICE_NAME='odis-combiner' # For e2e Tests ODIS_BLOCKCHAIN_PROVIDER=https://alfajores-forno.celo-testnet.org CONTEXT_NAME='alfajores' +# TODO investigate why these are defined here +NODE_OPTIONS='--require ./dist/tracing.js' +TRACER_ENDPOINT='https://grafana-agent.staging-odis2-centralus.celo-networks-dev.org/api/traces' +TRACING_SERVICE_NAME='odis-combiner-staging' diff --git a/packages/phone-number-privacy/combiner/package.json b/packages/phone-number-privacy/combiner/package.json index b248db4a91c..0e81a83c17d 100644 --- a/packages/phone-number-privacy/combiner/package.json +++ b/packages/phone-number-privacy/combiner/package.json @@ -1,6 +1,6 @@ { "name": "@celo/phone-number-privacy-combiner", - "version": "3.0.0-dev", + "version": "3.0.0-beta.7", "description": "Orchestrates and combines threshold signatures for use in ODIS", "author": "Celo", "license": "Apache-2.0", @@ -28,12 +28,20 @@ "test:e2e:alfajores": "CONTEXT_NAME=alfajores yarn test:e2e" }, "dependencies": { - "@celo/contractkit": "^4.1.1-dev", - "@celo/phone-number-privacy-common": "^3.0.0-dev", - "@celo/identity": "^4.1.1-dev", - "@celo/encrypted-backup": "^4.1.1-dev", + "@celo/contractkit": "^4.1.1-beta.1", + "@celo/phone-number-privacy-common": "^3.0.0-beta.3", + "@celo/identity": "^4.1.1-beta.1", + "@celo/encrypted-backup": "^4.1.1-beta.1", "@celo/poprf": "^0.1.9", "@types/bunyan": "^1.8.8", + "@opentelemetry/api": "^1.4.1", + "@opentelemetry/auto-instrumentations-node": "^0.38.0", + "@opentelemetry/exporter-jaeger": "^1.15.2", + "@opentelemetry/propagator-ot-trace": "^0.27.0", + "@opentelemetry/sdk-metrics": "^1.15.2", + "@opentelemetry/sdk-node": "^0.41.2", + "@opentelemetry/sdk-trace-web": "^1.15.2", + "@opentelemetry/semantic-conventions": "^1.15.2", "blind-threshold-bls": "https://github.com/celo-org/blind-threshold-bls-wasm#e1e2f8a", "dotenv": "^8.2.0", "express": "^4.17.1", @@ -45,18 +53,15 @@ "uuid": "^7.0.3" }, "devDependencies": { - "@celo/utils": "^4.1.1-dev", - "@celo/phone-utils": "^4.1.1-dev", + "@celo/utils": "^4.1.1-beta.1", + "@celo/phone-utils": "^4.1.1-beta.1", "@types/express": "^4.17.6", "@types/supertest": "^2.0.12", "@types/uuid": "^7.0.3", "firebase-functions-test": "^3.1.0", "firebase-tools": "12.4.7" }, - "peerDependencies": { - "@celo/phone-number-privacy-signer": "^3.0.0-dev" - }, "engines": { - "node": ">=18" + "node": "18" } -} +} \ No newline at end of file diff --git a/packages/phone-number-privacy/combiner/src/common/action.ts b/packages/phone-number-privacy/combiner/src/common/action.ts deleted file mode 100644 index 2bf519cb861..00000000000 --- a/packages/phone-number-privacy/combiner/src/common/action.ts +++ /dev/null @@ -1,8 +0,0 @@ -import { OdisRequest } from '@celo/phone-number-privacy-common' -import { IO } from './io' -import { Session } from './session' - -export interface Action { - readonly io: IO - perform(session: Session): Promise -} diff --git a/packages/phone-number-privacy/combiner/src/common/combine.ts b/packages/phone-number-privacy/combiner/src/common/combine.ts index 66350cfd32b..abfc0dcc534 100644 --- a/packages/phone-number-privacy/combiner/src/common/combine.ts +++ b/packages/phone-number-privacy/combiner/src/common/combine.ts @@ -1,175 +1,232 @@ import { ErrorMessage, + KeyVersionInfo, OdisRequest, OdisResponse, + responseHasExpectedKeyVersion, + SignerEndpoint, WarningMessage, } from '@celo/phone-number-privacy-common' -import { Response as FetchResponse } from 'node-fetch' +import Logger from 'bunyan' +import { Request } from 'express' +import * as t from 'io-ts' import { PerformanceObserver } from 'perf_hooks' -import { OdisConfig } from '../config' -import { Action } from './action' -import { IO } from './io' -import { Session } from './session' +import { fetchSignerResponseWithFallback, SignerResponse } from './io' export interface Signer { url: string fallbackUrl?: string } -export abstract class CombineAction implements Action { - readonly signers: Signer[] - public constructor(readonly config: OdisConfig, readonly io: IO) { - this.signers = JSON.parse(config.odisServices.signers) - } +export interface ThresholdCallToSignersOptions { + signers: Signer[] + endpoint: SignerEndpoint + requestTimeoutMS: number + shouldCheckKeyVersion: boolean + keyVersionInfo: KeyVersionInfo + request: Request<{}, {}, R> + responseSchema: t.Type, OdisResponse, unknown> +} + +export async function thresholdCallToSigners( + logger: Logger, + options: ThresholdCallToSignersOptions, + processResult: (res: OdisResponse) => Promise = (_) => Promise.resolve(false) +): Promise<{ signerResponses: Array>; maxErrorCode?: number }> { + const obs = new PerformanceObserver((list) => { + // Possible race condition here: if multiple signers take exactly the same + // amount of time, the PerformanceObserver callback may be called twice with + // both entries present. Node 12 doesn't allow for entries to be deleted by name, + // and eliminating the race condition requires a more significant redesign of + // the measurement code. + // This is only used for monitoring purposes, so a rare + // duplicate latency measure for the signer should have minimal impact. + list.getEntries().forEach((entry) => { + logger.info({ latency: entry, signer: entry.name }, 'Signer response latency measured') + }) + }) + obs.observe({ entryTypes: ['measure'], buffered: false }) - abstract combine(session: Session): void + const { + signers, + endpoint, + requestTimeoutMS, + shouldCheckKeyVersion, + keyVersionInfo, + request, + responseSchema, + } = options - async perform(session: Session) { - await this.distribute(session) - this.combine(session) - } + const manualAbort = new AbortController() + const timeoutSignal = AbortSignal.timeout(requestTimeoutMS) + const abortSignal = abortSignalAny([manualAbort.signal, timeoutSignal]) + + let errorCount = 0 + const errorCodes: Map = new Map() - async distribute(session: Session): Promise { - const obs = new PerformanceObserver((list) => { - // Possible race condition here: if multiple signers take exactly the same - // amount of time, the PerformanceObserver callback may be called twice with - // both entries present. Node 12 doesn't allow for entries to be deleted by name, - // and eliminating the race condition requires a more significant redesign of - // the measurement code. - // This is only used for monitoring purposes, so a rare - // duplicate latency measure for the signer should have minimal impact. - list.getEntries().forEach((entry) => { - session.logger.info( - { latency: entry, signer: entry.name }, - 'Signer response latency measured' + const requiredThreshold = keyVersionInfo.threshold + + const responses: Array> = [] + // Forward request to signers + // An unexpected error in handling the result for one signer should not + // block a threshold of correct responses, but should be logged. + await Promise.all( + signers.map(async (signer) => { + try { + const signerFetchResult = await fetchSignerResponseWithFallback( + signer, + endpoint, + keyVersionInfo.keyVersion, + request, + logger, + abortSignal ) - }) - }) - obs.observe({ entryTypes: ['measure'], buffered: false }) - - const timeout = setTimeout(() => { - session.timedOut = true - session.abort.abort() - }, this.config.odisServices.timeoutMilliSeconds) - - // Forward request to signers - // An unexpected error in handling the result for one signer should not - // block a threshold of correct responses, but should be logged. - await Promise.all( - this.signers.map(async (signer) => { - try { - await this.forwardToSigner(signer, session) - } catch (err) { - session.logger.error({ + + // used for log based metrics + logger.info({ + message: 'Received signerFetchResult', + signer: signer.url, + status: signerFetchResult.status, + }) + + if (!signerFetchResult.ok) { + // used for log based metrics + logger.info({ + message: 'Received signerFetchResult on unsuccessful signer response', + res: await signerFetchResult.json(), + status: signerFetchResult.status, signer: signer.url, - message: 'Unexpected error caught while distributing request to signer', - err, }) + + errorCount++ + errorCodes.set( + signerFetchResult.status, + (errorCodes.get(signerFetchResult.status) ?? 0) + 1 + ) + + if (signers.length - errorCount < requiredThreshold) { + logger.warn('Not possible to reach a threshold of signer responses. Failing fast') + manualAbort.abort() + } + return } - }) - ) - // TODO Resolve race condition where a session can both receive a successful - // response in time and be aborted - clearTimeout(timeout) - // DO NOT call performance.clearMarks() as this also deletes marks used to - // measure e2e combiner latency. - obs.disconnect() - } + if ( + shouldCheckKeyVersion && + !responseHasExpectedKeyVersion(signerFetchResult, keyVersionInfo.keyVersion, logger) + ) { + throw new Error(ErrorMessage.INVALID_KEY_VERSION_RESPONSE) + } - protected async forwardToSigner(signer: Signer, session: Session): Promise { - let signerFetchResult: FetchResponse | undefined - try { - signerFetchResult = await this.io.fetchSignerResponseWithFallback(signer, session) - session.logger.info({ - message: 'Received signerFetchResult', - signer: signer.url, - status: signerFetchResult.status, - }) - } catch (err) { - session.logger.debug({ err, signer: signer.url, message: 'signer request failure' }) - if (err instanceof Error && err.name === 'AbortError' && session.abort.signal.aborted) { - if (session.timedOut) { - session.logger.error({ signer }, ErrorMessage.TIMEOUT_FROM_SIGNER) - } else { - session.logger.info({ signer }, WarningMessage.CANCELLED_REQUEST_TO_SIGNER) + const data: any = await signerFetchResult.json() + logger.info( + { signer, res: data, status: signerFetchResult.status }, + `received 'OK' response from signer` + ) + + const odisResponse: OdisResponse = parseSchema(responseSchema, data, logger) + if (!odisResponse.success) { + logger.error( + { err: odisResponse.error, signer: signer.url }, + `Signer request to failed with 'OK' status` + ) + throw new Error(ErrorMessage.SIGNER_RESPONSE_FAILED_WITH_OK_STATUS) } - } else { - // Logging the err & message simultaneously fails to log the message in some cases - session.logger.error({ signer }, ErrorMessage.SIGNER_REQUEST_ERROR) - session.logger.error({ signer, err }) - } - } - return this.handleFetchResult(signer, session, signerFetchResult) - } - protected async handleFetchResult( - signer: Signer, - session: Session, - signerFetchResult?: FetchResponse - ): Promise { - if (signerFetchResult?.ok) { - try { - // Throws if response is not actually successful - await this.receiveSuccess(signerFetchResult, signer.url, session) - return + responses.push({ res: odisResponse, url: signer.url }) + + if (await processResult(odisResponse)) { + // we already have enough responses + manualAbort.abort() + } } catch (err) { - session.logger.error(err) + if (isTimeoutError(err)) { + logger.error({ signer }, ErrorMessage.TIMEOUT_FROM_SIGNER) + } else if (isAbortError(err)) { + logger.info({ signer }, WarningMessage.CANCELLED_REQUEST_TO_SIGNER) + } else { + // Logging the err & message simultaneously fails to log the message in some cases + logger.error({ signer }, ErrorMessage.SIGNER_REQUEST_ERROR) + logger.error({ signer, err }) + + errorCount++ + if (signers.length - errorCount < requiredThreshold) { + logger.warn('Not possible to reach a threshold of signer responses. Failing fast') + manualAbort.abort() + } + } } - } - if (signerFetchResult) { - session.logger.info({ - message: 'Received signerFetchResult on unsuccessful signer response', - res: await signerFetchResult.text(), - status: signerFetchResult.status, - signer: signer.url, - }) - } - return this.addFailureToSession(signer, signerFetchResult?.status, session) - } + }) + ) - protected async receiveSuccess( - signerFetchResult: FetchResponse, - url: string, - session: Session - ): Promise> { - if (!signerFetchResult.ok) { - throw new Error(`Implementation Error: receiveSuccess should only receive 'OK' responses`) - } - const { status } = signerFetchResult - const data: string = await signerFetchResult.text() - session.logger.info({ signer: url, res: data, status }, `received 'OK' response from signer`) - const signerResponse: OdisResponse = this.io.validateSignerResponse( - data, - url, - session.logger - ) - if (!signerResponse.success) { - session.logger.error( - { err: signerResponse.error, signer: url, status }, - `Signer request to ${url + this.io.signerEndpoint} failed with 'OK' status` + // DO NOT call performance.clearMarks() as this also deletes marks used to + // measure e2e combiner latency. + obs.disconnect() + + if (errorCodes.size > 0) { + if (errorCodes.size > 1) { + logger.error( + { errorCodes: JSON.stringify([...errorCodes]) }, + ErrorMessage.INCONSISTENT_SIGNER_RESPONSES ) - throw new Error(ErrorMessage.SIGNER_RESPONSE_FAILED_WITH_OK_STATUS) } - session.logger.info({ signer: url }, `Signer request successful`) - session.responses.push({ url, res: signerResponse, status }) - return signerResponse + + return { signerResponses: responses, maxErrorCode: getMajorityErrorCode(errorCodes) } + } else { + return { signerResponses: responses } } +} - private addFailureToSession(signer: Signer, errorCode: number | undefined, session: Session) { - // Tracking failed request count via signer url prevents - // double counting the same failed request by mistake - session.failedSigners.add(signer.url) - session.logger.warn( - `Received failure from ${session.failedSigners.size}/${this.signers.length} signers` - ) - if (errorCode) { - session.incrementErrorCodeCount(errorCode) +function parseSchema(schema: t.Type, data: unknown, logger: Logger): T { + if (!schema.is(data)) { + logger.error({ data }, `Malformed schema`) + throw new Error(ErrorMessage.INVALID_SIGNER_RESPONSE) + } + return data +} + +function isTimeoutError(err: unknown) { + return err instanceof Error && err.name === 'TimeoutError' +} + +export function isAbortError(err: unknown) { + return err instanceof Error && err.name === 'AbortError' +} + +function getMajorityErrorCode(errorCodes: Map): number { + let maxErrorCode = -1 + let maxCount = -1 + errorCodes.forEach((count, errorCode) => { + // This gives priority to the lower status codes in the event of a tie + // because 400s are more helpful than 500s for user feedback + if (count > maxCount || (count === maxCount && errorCode < maxErrorCode)) { + maxCount = count + maxErrorCode = errorCode } - const { threshold } = session.keyVersionInfo - if (this.signers.length - session.failedSigners.size < threshold) { - session.logger.warn('Not possible to reach a threshold of signer responses. Failing fast') - session.abort.abort() + }) + return maxErrorCode +} + +/* + * TODO remove this in favor of actual implementation once we can upgrade to node v18.17.0. + * The Combiner cannot currently be deployed with node versions beyond v18. + * Actual implementation: + * https://github.com/nodejs/node/blob/5ff1ead6b2d6da7ba044b11e2824c7cbf5a94cb8/lib/internal/abort_controller.js#L198C24-L198C24 + */ +function abortSignalAny(signals: AbortSignal[]): AbortSignal { + const ac = new AbortController() + for (const signal of signals) { + if (signal.aborted) { + ac.abort(signal) + return ac.signal } + signal.addEventListener( + 'abort', + (e) => { + ac.abort(e) + }, + { once: true } + ) } + return ac.signal } diff --git a/packages/phone-number-privacy/combiner/src/common/controller.ts b/packages/phone-number-privacy/combiner/src/common/controller.ts deleted file mode 100644 index 7726bebad2a..00000000000 --- a/packages/phone-number-privacy/combiner/src/common/controller.ts +++ /dev/null @@ -1,25 +0,0 @@ -import { ErrorMessage, OdisRequest, OdisResponse } from '@celo/phone-number-privacy-common' -import { Request, Response } from 'express' -import { Action } from './action' - -export class Controller { - constructor(readonly action: Action) {} - - public async handle( - request: Request<{}, {}, unknown>, - response: Response> - ): Promise { - try { - const session = await this.action.io.init(request, response) - if (session) { - await this.action.perform(session) - } - } catch (err) { - response.locals.logger.error( - { error: err }, - `Unknown error in handler for ${this.action.io.endpoint}` - ) - this.action.io.sendFailure(ErrorMessage.UNKNOWN_ERROR, 500, response) - } - } -} diff --git a/packages/phone-number-privacy/combiner/src/common/crypto-session.ts b/packages/phone-number-privacy/combiner/src/common/crypto-session.ts deleted file mode 100644 index f1a0d7d6f98..00000000000 --- a/packages/phone-number-privacy/combiner/src/common/crypto-session.ts +++ /dev/null @@ -1,16 +0,0 @@ -import { KeyVersionInfo, OdisResponse } from '@celo/phone-number-privacy-common' -import { Request, Response } from 'express' -import { CryptoClient } from './crypto-clients/crypto-client' -import { Session } from './session' -import { OdisSignatureRequest } from './sign' - -export class CryptoSession extends Session { - public constructor( - readonly request: Request<{}, {}, R>, - readonly response: Response>, - readonly keyVersionInfo: KeyVersionInfo, - readonly crypto: CryptoClient - ) { - super(request, response, keyVersionInfo) - } -} diff --git a/packages/phone-number-privacy/combiner/src/common/handlers.ts b/packages/phone-number-privacy/combiner/src/common/handlers.ts new file mode 100644 index 00000000000..ac0872993bf --- /dev/null +++ b/packages/phone-number-privacy/combiner/src/common/handlers.ts @@ -0,0 +1,94 @@ +import { + ErrorMessage, + OdisRequest, + OdisResponse, + WarningMessage, +} from '@celo/phone-number-privacy-common' +import Logger from 'bunyan' +import { Request, Response } from 'express' +import { performance, PerformanceObserver } from 'perf_hooks' +import { sendFailure } from './io' + +export interface Locals { + logger: Logger +} + +export type PromiseHandler = ( + request: Request<{}, {}, R>, + res: Response, Locals> +) => Promise + +type ParentHandler = (req: Request<{}, {}, any>, res: Response) => Promise + +export function catchErrorHandler( + handler: PromiseHandler +): ParentHandler { + return async (req, res) => { + const logger: Logger = res.locals.logger + try { + await handler(req, res) + } catch (err) { + logger.error(ErrorMessage.CAUGHT_ERROR_IN_ENDPOINT_HANDLER) + logger.error(err) + if (!res.headersSent) { + logger.info('Responding with error in outer endpoint handler') + res.status(500).json({ + success: false, + error: ErrorMessage.UNKNOWN_ERROR, + }) + } else { + logger.error(ErrorMessage.ERROR_AFTER_RESPONSE_SENT) + } + } + } +} + +export function meteringHandler( + handler: PromiseHandler +): PromiseHandler { + return async (req, res) => { + const logger: Logger = res.locals.logger + + // used for log based metrics + logger.info({ req: req.body }, 'Request received') + + const eventLoopLagMeasurementStart = Date.now() + setTimeout(() => { + const eventLoopLag = Date.now() - eventLoopLagMeasurementStart + logger.info({ eventLoopLag }, 'Measure event loop lag') + }) + const startMark = `Begin ${req.url}` + const endMark = `End ${req.url}` + const entryName = `${req.url} latency` + + const obs = new PerformanceObserver((list) => { + const entry = list.getEntriesByName(entryName)[0] + if (entry) { + logger.info({ latency: entry }, 'e2e response latency measured') + } + }) + obs.observe({ entryTypes: ['measure'], buffered: false }) + + performance.mark(startMark) + + try { + await handler(req, res) + if (res.headersSent) { + // used for log based metrics + logger.info({ res }, 'Response sent') + } + } finally { + performance.mark(endMark) + performance.measure(entryName, startMark, endMark) + performance.clearMarks() + obs.disconnect() + } + } +} + +export async function disabledHandler( + _: Request<{}, {}, R>, + response: Response, Locals> +): Promise { + sendFailure(WarningMessage.API_UNAVAILABLE, 503, response) +} diff --git a/packages/phone-number-privacy/combiner/src/common/io.ts b/packages/phone-number-privacy/combiner/src/common/io.ts index 89545648e2f..c43b81f7066 100644 --- a/packages/phone-number-privacy/combiner/src/common/io.ts +++ b/packages/phone-number-privacy/combiner/src/common/io.ts @@ -1,138 +1,79 @@ import { - CombinerEndpoint, - ErrorMessage, ErrorType, - FailureResponse, getRequestKeyVersion, KEY_VERSION_HEADER, KeyVersionInfo, OdisRequest, OdisResponse, requestHasValidKeyVersion, + send, SignerEndpoint, - SuccessResponse, - WarningMessage, } from '@celo/phone-number-privacy-common' import Logger from 'bunyan' import { Request, Response } from 'express' -import * as t from 'io-ts' +import * as http from 'http' +import * as https from 'https' import fetch, { Response as FetchResponse } from 'node-fetch' import { performance } from 'perf_hooks' -import { OdisConfig } from '../config' -import { Signer } from './combine' -import { Session } from './session' +import { getCombinerVersion, OdisConfig } from '../config' +import { isAbortError, Signer } from './combine' + +const httpAgent = new http.Agent({ keepAlive: true }) +const httpsAgent = new https.Agent({ keepAlive: true }) // tslint:disable-next-line: interface-over-type-literal export type SignerResponse = { url: string res: OdisResponse - status: number } -export abstract class IO { - abstract readonly endpoint: CombinerEndpoint - abstract readonly signerEndpoint: SignerEndpoint - abstract readonly requestSchema: t.Type - abstract readonly responseSchema: t.Type, OdisResponse, unknown> - - constructor(readonly config: OdisConfig) {} - - abstract init( - request: Request<{}, {}, unknown>, - response: Response> - ): Promise | null> - - abstract authenticate(request: Request<{}, {}, R>, logger?: Logger): Promise - - abstract sendFailure( - error: ErrorType, - status: number, - response: Response>, - ...args: unknown[] - ): void - - abstract sendSuccess( - status: number, - response: Response>, - ...args: unknown[] - ): void - - validateClientRequest(request: Request<{}, {}, unknown>): request is Request<{}, {}, R> { - return this.requestSchema.is(request.body) - } - - getKeyVersionInfo(request: Request<{}, {}, OdisRequest>, logger: Logger): KeyVersionInfo { - // If an invalid key version is present, we don't want this function to throw but - // to instead replace the key version with the default - // If a valid but unsupported key version is present, we want this function to throw - let requestKeyVersion: number | undefined - if (requestHasValidKeyVersion(request, logger)) { - requestKeyVersion = getRequestKeyVersion(request, logger) - } - const keyVersion = requestKeyVersion ?? this.config.keys.currentVersion - const supportedVersions: KeyVersionInfo[] = JSON.parse(this.config.keys.versions) // TODO add io-ts checks for this and signer array - const filteredSupportedVersions: KeyVersionInfo[] = supportedVersions.filter( - (v) => v.keyVersion === keyVersion - ) - if (!filteredSupportedVersions.length) { - throw new Error(`key version ${keyVersion} not supported`) - } - return filteredSupportedVersions[0] +export function requestHasSupportedKeyVersion( + request: Request<{}, {}, OdisRequest>, + config: OdisConfig, + logger: Logger +): boolean { + try { + getKeyVersionInfo(request, config, logger) + return true + } catch (err) { + logger.debug('Error caught in requestHasSupportedKeyVersion') + logger.debug(err) + return false } +} - requestHasSupportedKeyVersion(request: Request<{}, {}, OdisRequest>, logger: Logger): boolean { - try { - this.getKeyVersionInfo(request, logger) - return true - } catch (err) { - logger.debug('Error caught in requestHasSupportedKeyVersion') - logger.debug(err) - return false - } +export function getKeyVersionInfo( + request: Request<{}, {}, OdisRequest>, + config: OdisConfig, + logger: Logger +): KeyVersionInfo { + // If an invalid key version is present, we don't want this function to throw but + // to instead replace the key version with the default + // If a valid but unsupported key version is present, we want this function to throw + let requestKeyVersion: number | undefined + if (requestHasValidKeyVersion(request, logger)) { + requestKeyVersion = getRequestKeyVersion(request, logger) } - - validateSignerResponse(data: string, url: string, logger: Logger): OdisResponse { - const res: unknown = JSON.parse(data) - if (!this.responseSchema.is(res)) { - logger.error( - { data, signer: url }, - `Signer request to ${url + this.signerEndpoint} returned malformed response` - ) - throw new Error(ErrorMessage.INVALID_SIGNER_RESPONSE) - } - return res - } - - async fetchSignerResponseWithFallback( - signer: Signer, - session: Session - ): Promise { - const start = `Start ${signer.url + this.signerEndpoint}` - const end = `End ${signer.url + this.signerEndpoint}` - performance.mark(start) - - return this.fetchSignerResponse(signer.url, session) - .catch((err) => { - session.logger.error({ url: signer.url, error: err }, `Signer failed with primary url`) - if (signer.fallbackUrl) { - session.logger.warn({ url: signer.fallbackUrl }, `Using fallback url to call signer`) - return this.fetchSignerResponse(signer.fallbackUrl, session) - } - throw err - }) - .finally(() => { - performance.mark(end) - performance.measure(signer.url, start, end) - }) + const keyVersion = requestKeyVersion ?? config.keys.currentVersion + const supportedVersions: KeyVersionInfo[] = JSON.parse(config.keys.versions) // TODO add io-ts checks for this and signer array + const filteredSupportedVersions: KeyVersionInfo[] = supportedVersions.filter( + (v) => v.keyVersion === keyVersion + ) + if (!filteredSupportedVersions.length) { + throw new Error(`key version ${keyVersion} not supported`) } + return filteredSupportedVersions[0] +} - protected async fetchSignerResponse( - signerUrl: string, - session: Session - ): Promise { - const { request, logger, abort } = session - const url = signerUrl + this.signerEndpoint - logger.debug({ url }, `Sending signer request`) +export async function fetchSignerResponseWithFallback( + signer: Signer, + signerEndpoint: SignerEndpoint, + keyVersion: number, + request: Request<{}, {}, R>, + logger: Logger, + abortSignal: AbortSignal +): Promise { + async function fetchSignerResponse(url: string): Promise { // prettier-ignore return fetch(url, { method: 'POST', @@ -143,26 +84,48 @@ export abstract class IO { ...(request.headers.authorization ? { Authorization: request.headers.authorization } : {}), // Forward requested keyVersion if provided by client, otherwise use default keyVersion. // This will be ignored for non-signing requests. - [KEY_VERSION_HEADER]: session.keyVersionInfo.keyVersion.toString() + [KEY_VERSION_HEADER]: keyVersion.toString() }, body: JSON.stringify(request.body), - // @ts-ignore: missing property `reason` - signal: abort.signal, + signal: abortSignal, + agent: url.startsWith("https://") ? httpsAgent : httpAgent }) } - protected inputChecks( - request: Request<{}, {}, unknown>, - response: Response> - ): request is Request<{}, {}, R> { - if (!this.config.enabled) { - this.sendFailure(WarningMessage.API_UNAVAILABLE, 503, response) - return false - } - if (!this.validateClientRequest(request)) { - this.sendFailure(WarningMessage.INVALID_INPUT, 400, response) - return false - } - return true + return measureTime(signer.url + signerEndpoint, () => + fetchSignerResponse(signer.url + signerEndpoint).catch((err) => { + logger.error({ url: signer.url, error: err }, `Signer failed with primary url`) + if (signer.fallbackUrl && !isAbortError(err)) { + logger.warn({ signer }, `Using fallback url to call signer`) + return fetchSignerResponse(signer.fallbackUrl + signerEndpoint) + } else { + throw err + } + }) + ) +} +async function measureTime(name: string, fn: () => Promise): Promise { + const start = `Start ${name}` + const end = `End ${name}` + performance.mark(start) + try { + const res = await fn() + return res + } finally { + performance.mark(end) + performance.measure(name, start, end) } } + +export function sendFailure(error: ErrorType, status: number, response: Response) { + send( + response, + { + success: false, + version: getCombinerVersion(), + error, + }, + status, + response.locals.logger + ) +} diff --git a/packages/phone-number-privacy/combiner/src/common/session.ts b/packages/phone-number-privacy/combiner/src/common/session.ts deleted file mode 100644 index bfa3ae24b29..00000000000 --- a/packages/phone-number-privacy/combiner/src/common/session.ts +++ /dev/null @@ -1,54 +0,0 @@ -import { - ErrorMessage, - KeyVersionInfo, - OdisRequest, - OdisResponse, -} from '@celo/phone-number-privacy-common' -import AbortController from 'abort-controller' -import Logger from 'bunyan' -import { Request, Response } from 'express' -import { SignerResponse } from './io' - -export class Session { - public timedOut: boolean = false - readonly logger: Logger - readonly abort: AbortController = new AbortController() - readonly failedSigners: Set = new Set() - readonly errorCodes: Map = new Map() - readonly responses: Array> = new Array>() - readonly warnings: string[] = [] - - public constructor( - readonly request: Request<{}, {}, R>, - readonly response: Response>, - readonly keyVersionInfo: KeyVersionInfo - ) { - this.logger = response.locals.logger - } - - incrementErrorCodeCount(errorCode: number) { - this.errorCodes.set(errorCode, (this.errorCodes.get(errorCode) ?? 0) + 1) - } - - getMajorityErrorCode(): number | null { - const uniqueErrorCount = Array.from(this.errorCodes.keys()).length - if (uniqueErrorCount > 1) { - this.logger.error( - { errorCodes: JSON.stringify([...this.errorCodes]) }, - ErrorMessage.INCONSISTENT_SIGNER_RESPONSES - ) - } - - let maxErrorCode = -1 - let maxCount = -1 - this.errorCodes.forEach((count, errorCode) => { - // This gives priority to the lower status codes in the event of a tie - // because 400s are more helpful than 500s for user feedback - if (count > maxCount || (count === maxCount && errorCode < maxErrorCode)) { - maxCount = count - maxErrorCode = errorCode - } - }) - return maxErrorCode > 0 ? maxErrorCode : null - } -} diff --git a/packages/phone-number-privacy/combiner/src/common/sign.ts b/packages/phone-number-privacy/combiner/src/common/sign.ts deleted file mode 100644 index 3a82f0dc012..00000000000 --- a/packages/phone-number-privacy/combiner/src/common/sign.ts +++ /dev/null @@ -1,94 +0,0 @@ -import { - DomainRestrictedSignatureRequest, - ErrorMessage, - ErrorType, - OdisResponse, - responseHasExpectedKeyVersion, - SignMessageRequest, -} from '@celo/phone-number-privacy-common' -import { Response as FetchResponse } from 'node-fetch' -import { OdisConfig } from '../config' -import { DomainThresholdStateService } from '../domain/services/threshold-state' -import { PnpThresholdStateService } from '../pnp/services/threshold-state' -import { CombineAction } from './combine' -import { CryptoSession } from './crypto-session' -import { IO } from './io' - -// prettier-ignore -export type OdisSignatureRequest = - | SignMessageRequest - | DomainRestrictedSignatureRequest - -export type ThresholdStateService = R extends SignMessageRequest - ? PnpThresholdStateService - : never | R extends DomainRestrictedSignatureRequest - ? DomainThresholdStateService - : never - -// tslint:disable-next-line: max-classes-per-file -export abstract class SignAction extends CombineAction { - constructor( - readonly config: OdisConfig, - readonly thresholdStateService: ThresholdStateService, - readonly io: IO - ) { - super(config, io) - } - - // Throws if response is not actually successful - protected async receiveSuccess( - signerResponse: FetchResponse, - url: string, - session: CryptoSession - ): Promise> { - const { keyVersion } = session.keyVersionInfo - - // TODO(2.0.0, deployment) consider this while doing deployment. Signers should be updated before the combiner is - if (!responseHasExpectedKeyVersion(signerResponse, keyVersion, session.logger)) { - throw new Error(ErrorMessage.INVALID_KEY_VERSION_RESPONSE) - } - - const res = await super.receiveSuccess(signerResponse, url, session) - - if (res.success) { - const signatureAdditionStart = Date.now() - session.crypto.addSignature({ url, signature: res.signature }) - session.logger.info( - { - signer: url, - hasSufficientSignatures: session.crypto.hasSufficientSignatures(), - additionLatency: Date.now() - signatureAdditionStart, - }, - 'Added signature' - ) - // Send response immediately once we cross threshold - // BLS threshold signatures can be combined without all partial signatures - if (session.crypto.hasSufficientSignatures()) { - try { - session.crypto.combineBlindedSignatureShares( - this.parseBlindedMessage(session.request.body), - session.logger - ) - // Close outstanding requests - session.abort.abort() - } catch (err) { - // One or more signatures failed verification and were discarded. - session.logger.info('Error caught in receiveSuccess') - session.logger.info(err) - // Continue to collect signatures. - } - } - } - return res - } - - protected handleMissingSignatures(session: CryptoSession) { - const errorCode = session.getMajorityErrorCode() ?? 500 - const error = this.errorCodeToError(errorCode) - this.io.sendFailure(error, errorCode, session.response) - } - - protected abstract errorCodeToError(errorCode: number): ErrorType - - protected abstract parseBlindedMessage(req: OdisSignatureRequest): string -} diff --git a/packages/phone-number-privacy/combiner/src/config.ts b/packages/phone-number-privacy/combiner/src/config.ts index 3d9fcb9e917..a1b9829f230 100644 --- a/packages/phone-number-privacy/combiner/src/config.ts +++ b/packages/phone-number-privacy/combiner/src/config.ts @@ -28,7 +28,6 @@ export const MAX_QUERY_COUNT_DISCREPANCY_THRESHOLD = 5 export interface OdisConfig { serviceName: string enabled: boolean - shouldFailOpen: boolean // TODO (https://github.com/celo-org/celo-monorepo/issues/9862) consider refactoring config, this isn't relevant to domains endpoints odisServices: { signers: string timeoutMilliSeconds: number @@ -77,7 +76,6 @@ if (DEV_MODE) { phoneNumberPrivacy: { serviceName: defaultServiceName, enabled: true, - shouldFailOpen: false, odisServices: { signers: devSignersString, timeoutMilliSeconds: 5 * 1000, @@ -112,7 +110,6 @@ if (DEV_MODE) { domains: { serviceName: defaultServiceName, enabled: true, - shouldFailOpen: false, odisServices: { signers: devSignersString, timeoutMilliSeconds: 5 * 1000, @@ -156,7 +153,6 @@ if (DEV_MODE) { phoneNumberPrivacy: { serviceName: functionConfig.pnp.service_name ?? defaultServiceName, enabled: toBool(functionConfig.pnp.enabled, false), - shouldFailOpen: toBool(functionConfig.pnp.should_fail_open, false), odisServices: { signers: functionConfig.pnp.odisservices, timeoutMilliSeconds: functionConfig.pnp.timeout_ms @@ -176,7 +172,6 @@ if (DEV_MODE) { domains: { serviceName: functionConfig.domains.service_name ?? defaultServiceName, enabled: toBool(functionConfig.domains.enabled, false), - shouldFailOpen: toBool(functionConfig.domains.auth_should_fail_open, false), odisServices: { signers: functionConfig.domains.odisservices, timeoutMilliSeconds: functionConfig.domains.timeout_ms diff --git a/packages/phone-number-privacy/combiner/src/domain/endpoints/disable/action.ts b/packages/phone-number-privacy/combiner/src/domain/endpoints/disable/action.ts index 21ab840ee9f..8427bdee30f 100644 --- a/packages/phone-number-privacy/combiner/src/domain/endpoints/disable/action.ts +++ b/packages/phone-number-privacy/combiner/src/domain/endpoints/disable/action.ts @@ -1,39 +1,82 @@ -import { DisableDomainRequest, ErrorMessage } from '@celo/phone-number-privacy-common' -import { CombineAction } from '../../../common/combine' -import { IO } from '../../../common/io' -import { Session } from '../../../common/session' -import { OdisConfig } from '../../../config' -import { DomainSignerResponseLogger } from '../../services/log-responses' -import { DomainThresholdStateService } from '../../services/threshold-state' +import { + CombinerEndpoint, + DisableDomainRequest, + disableDomainRequestSchema, + disableDomainResponseSchema, + DomainSchema, + ErrorMessage, + getSignerEndpoint, + send, + SequentialDelayDomainStateSchema, + verifyDisableDomainRequestAuthenticity, + WarningMessage, +} from '@celo/phone-number-privacy-common' +import { Signer, thresholdCallToSigners } from '../../../common/combine' +import { PromiseHandler } from '../../../common/handlers' +import { getKeyVersionInfo, sendFailure } from '../../../common/io' +import { getCombinerVersion, OdisConfig } from '../../../config' +import { logDomainResponseDiscrepancies } from '../../services/log-responses' +import { findThresholdDomainState } from '../../services/threshold-state' -export class DomainDisableAction extends CombineAction { - readonly responseLogger: DomainSignerResponseLogger = new DomainSignerResponseLogger() +export function createDisableDomainHandler( + signers: Signer[], + config: OdisConfig +): PromiseHandler { + return async (request, response) => { + if (!disableDomainRequestSchema(DomainSchema).is(request.body)) { + sendFailure(WarningMessage.INVALID_INPUT, 400, response) + return + } - constructor( - readonly config: OdisConfig, - readonly thresholdStateService: DomainThresholdStateService, - readonly io: IO - ) { - super(config, io) - } + if (!verifyDisableDomainRequestAuthenticity(request.body)) { + sendFailure(WarningMessage.UNAUTHENTICATED_USER, 401, response) + return + } - combine(session: Session): void { - this.responseLogger.logResponseDiscrepancies(session) + // TODO remove? + const keyVersionInfo = getKeyVersionInfo(request, config, response.locals.logger) + + const { signerResponses, maxErrorCode } = await thresholdCallToSigners( + response.locals.logger, + { + signers, + endpoint: getSignerEndpoint(CombinerEndpoint.DISABLE_DOMAIN), + request, + keyVersionInfo, + requestTimeoutMS: config.odisServices.timeoutMilliSeconds, + responseSchema: disableDomainResponseSchema(SequentialDelayDomainStateSchema), + shouldCheckKeyVersion: false, + } + ) + + logDomainResponseDiscrepancies(response.locals.logger, signerResponses) try { - const disableDomainStatus = this.thresholdStateService.findThresholdDomainState(session) + const disableDomainStatus = findThresholdDomainState( + keyVersionInfo, + signerResponses, + signers.length + ) if (disableDomainStatus.disabled) { - this.io.sendSuccess(200, session.response, disableDomainStatus) + send( + response, + { + success: true, + version: getCombinerVersion(), + status: disableDomainStatus, + }, + 200, + response.locals.logger + ) + return } } catch (err) { - session.logger.error({ err }, 'Error combining signer disable domain status responses') + response.locals.logger.error( + { err }, + 'Error combining signer disable domain status responses' + ) } - this.io.sendFailure( - ErrorMessage.THRESHOLD_DISABLE_DOMAIN_FAILURE, - session.getMajorityErrorCode() ?? 500, - session.response, - session.logger - ) + sendFailure(ErrorMessage.THRESHOLD_DISABLE_DOMAIN_FAILURE, maxErrorCode ?? 500, response) } } diff --git a/packages/phone-number-privacy/combiner/src/domain/endpoints/disable/io.ts b/packages/phone-number-privacy/combiner/src/domain/endpoints/disable/io.ts deleted file mode 100644 index 21b8e81f501..00000000000 --- a/packages/phone-number-privacy/combiner/src/domain/endpoints/disable/io.ts +++ /dev/null @@ -1,80 +0,0 @@ -import { - CombinerEndpoint, - DisableDomainRequest, - disableDomainRequestSchema, - DisableDomainResponse, - DisableDomainResponseFailure, - disableDomainResponseSchema, - DisableDomainResponseSuccess, - DomainSchema, - DomainState, - ErrorType, - getSignerEndpoint, - send, - SequentialDelayDomainStateSchema, - SignerEndpoint, - verifyDisableDomainRequestAuthenticity, - WarningMessage, -} from '@celo/phone-number-privacy-common' -import { Request, Response } from 'express' -import * as t from 'io-ts' -import { IO } from '../../../common/io' -import { Session } from '../../../common/session' -import { getCombinerVersion } from '../../../config' - -export class DomainDisableIO extends IO { - readonly endpoint: CombinerEndpoint = CombinerEndpoint.DISABLE_DOMAIN - readonly signerEndpoint: SignerEndpoint = getSignerEndpoint(this.endpoint) - readonly requestSchema: t.Type = - disableDomainRequestSchema(DomainSchema) - readonly responseSchema: t.Type = - disableDomainResponseSchema(SequentialDelayDomainStateSchema) - - async init( - request: Request<{}, {}, unknown>, - response: Response - ): Promise | null> { - if (!super.inputChecks(request, response)) { - return null - } - if (!(await this.authenticate(request))) { - this.sendFailure(WarningMessage.UNAUTHENTICATED_USER, 401, response) - return null - } - return new Session(request, response, this.getKeyVersionInfo(request, response.locals.logger)) - } - - authenticate(request: Request<{}, {}, DisableDomainRequest>): Promise { - return Promise.resolve(verifyDisableDomainRequestAuthenticity(request.body)) - } - - sendSuccess( - status: number, - response: Response, - domainState: DomainState - ) { - send( - response, - { - success: true, - version: getCombinerVersion(), - status: domainState, - }, - status, - response.locals.logger - ) - } - - sendFailure(error: ErrorType, status: number, response: Response) { - send( - response, - { - success: false, - version: getCombinerVersion(), - error, - }, - status, - response.locals.logger - ) - } -} diff --git a/packages/phone-number-privacy/combiner/src/domain/endpoints/quota/action.ts b/packages/phone-number-privacy/combiner/src/domain/endpoints/quota/action.ts index 4ba6032fc05..8d80ee871a5 100644 --- a/packages/phone-number-privacy/combiner/src/domain/endpoints/quota/action.ts +++ b/packages/phone-number-privacy/combiner/src/domain/endpoints/quota/action.ts @@ -1,39 +1,69 @@ -import { DomainQuotaStatusRequest, ErrorMessage } from '@celo/phone-number-privacy-common' -import { CombineAction } from '../../../common/combine' -import { IO } from '../../../common/io' -import { Session } from '../../../common/session' -import { OdisConfig } from '../../../config' -import { DomainSignerResponseLogger } from '../../services/log-responses' -import { DomainThresholdStateService } from '../../services/threshold-state' +import { + CombinerEndpoint, + DomainQuotaStatusRequest, + domainQuotaStatusRequestSchema, + domainQuotaStatusResponseSchema, + DomainSchema, + ErrorMessage, + getSignerEndpoint, + send, + SequentialDelayDomainStateSchema, + verifyDomainQuotaStatusRequestAuthenticity, + WarningMessage, +} from '@celo/phone-number-privacy-common' +import { Signer, thresholdCallToSigners } from '../../../common/combine' +import { PromiseHandler } from '../../../common/handlers' +import { getKeyVersionInfo, sendFailure } from '../../../common/io' +import { getCombinerVersion, OdisConfig } from '../../../config' +import { logDomainResponseDiscrepancies } from '../../services/log-responses' +import { findThresholdDomainState } from '../../services/threshold-state' -export class DomainQuotaAction extends CombineAction { - readonly responseLogger = new DomainSignerResponseLogger() +export function createDomainQuotaHandler( + signers: Signer[], + config: OdisConfig +): PromiseHandler { + return async (request, response) => { + if (!domainQuotaStatusRequestSchema(DomainSchema).is(request.body)) { + sendFailure(WarningMessage.INVALID_INPUT, 400, response) + return + } - constructor( - readonly config: OdisConfig, - readonly thresholdStateService: DomainThresholdStateService, - readonly io: IO - ) { - super(config, io) - } + if (!verifyDomainQuotaStatusRequestAuthenticity(request.body)) { + sendFailure(WarningMessage.UNAUTHENTICATED_USER, 401, response) + return + } + + // TODO remove? + const keyVersionInfo = getKeyVersionInfo(request, config, response.locals.logger) + + const { signerResponses, maxErrorCode } = await thresholdCallToSigners(response.locals.logger, { + signers, + endpoint: getSignerEndpoint(CombinerEndpoint.DOMAIN_QUOTA_STATUS), + request, + keyVersionInfo, + requestTimeoutMS: config.odisServices.timeoutMilliSeconds, + responseSchema: domainQuotaStatusResponseSchema(SequentialDelayDomainStateSchema), + shouldCheckKeyVersion: false, + }) - combine(session: Session): void { - this.responseLogger.logResponseDiscrepancies(session) - const { threshold } = session.keyVersionInfo - if (session.responses.length >= threshold) { + logDomainResponseDiscrepancies(response.locals.logger, signerResponses) + if (signerResponses.length >= keyVersionInfo.threshold) { try { - const domainQuotaStatus = this.thresholdStateService.findThresholdDomainState(session) - this.io.sendSuccess(200, session.response, domainQuotaStatus) + send( + response, + { + success: true, + version: getCombinerVersion(), + status: findThresholdDomainState(keyVersionInfo, signerResponses, signers.length), + }, + 200, + response.locals.logger + ) return } catch (err) { - session.logger.error(err, 'Error combining signer quota status responses') + response.locals.logger.error(err, 'Error combining signer quota status responses') } } - this.io.sendFailure( - ErrorMessage.THRESHOLD_DOMAIN_QUOTA_STATUS_FAILURE, - session.getMajorityErrorCode() ?? 500, - session.response, - session.logger - ) + sendFailure(ErrorMessage.THRESHOLD_DOMAIN_QUOTA_STATUS_FAILURE, maxErrorCode ?? 500, response) } } diff --git a/packages/phone-number-privacy/combiner/src/domain/endpoints/quota/io.ts b/packages/phone-number-privacy/combiner/src/domain/endpoints/quota/io.ts deleted file mode 100644 index 3469fc2938d..00000000000 --- a/packages/phone-number-privacy/combiner/src/domain/endpoints/quota/io.ts +++ /dev/null @@ -1,86 +0,0 @@ -import { - CombinerEndpoint, - DomainQuotaStatusRequest, - domainQuotaStatusRequestSchema, - DomainQuotaStatusResponse, - DomainQuotaStatusResponseFailure, - domainQuotaStatusResponseSchema, - DomainQuotaStatusResponseSuccess, - DomainSchema, - DomainState, - ErrorType, - getSignerEndpoint, - OdisResponse, - send, - SequentialDelayDomainStateSchema, - SignerEndpoint, - verifyDomainQuotaStatusRequestAuthenticity, - WarningMessage, -} from '@celo/phone-number-privacy-common' -import { Request, Response } from 'express' -import * as t from 'io-ts' -import { IO } from '../../../common/io' -import { Session } from '../../../common/session' -import { getCombinerVersion } from '../../../config' - -export class DomainQuotaIO extends IO { - readonly endpoint: CombinerEndpoint = CombinerEndpoint.DOMAIN_QUOTA_STATUS - readonly signerEndpoint: SignerEndpoint = getSignerEndpoint(this.endpoint) - readonly requestSchema: t.Type = - domainQuotaStatusRequestSchema(DomainSchema) - readonly responseSchema: t.Type = - domainQuotaStatusResponseSchema(SequentialDelayDomainStateSchema) - - async init( - request: Request<{}, {}, unknown>, - response: Response> - ): Promise | null> { - if (!super.inputChecks(request, response)) { - return null - } - if (!(await this.authenticate(request))) { - this.sendFailure(WarningMessage.UNAUTHENTICATED_USER, 401, response) - return null - } - const keyVersionInfo = this.getKeyVersionInfo(request, response.locals.logger) - return new Session(request, response, keyVersionInfo) - } - - authenticate(request: Request<{}, {}, DomainQuotaStatusRequest>): Promise { - return Promise.resolve(verifyDomainQuotaStatusRequestAuthenticity(request.body)) - } - - sendSuccess( - status: number, - response: Response, - domainState: DomainState - ) { - send( - response, - { - success: true, - version: getCombinerVersion(), - status: domainState, - }, - status, - response.locals.logger - ) - } - - sendFailure( - error: ErrorType, - status: number, - response: Response - ) { - send( - response, - { - success: false, - version: getCombinerVersion(), - error, - }, - status, - response.locals.logger - ) - } -} diff --git a/packages/phone-number-privacy/combiner/src/domain/endpoints/sign/action.ts b/packages/phone-number-privacy/combiner/src/domain/endpoints/sign/action.ts index e7f74b36d21..fe4ba2c59dc 100644 --- a/packages/phone-number-privacy/combiner/src/domain/endpoints/sign/action.ts +++ b/packages/phone-number-privacy/combiner/src/domain/endpoints/sign/action.ts @@ -1,56 +1,134 @@ import { + CombinerEndpoint, DomainRestrictedSignatureRequest, + domainRestrictedSignatureRequestSchema, + domainRestrictedSignatureResponseSchema, + DomainSchema, ErrorMessage, ErrorType, + getSignerEndpoint, + OdisResponse, + send, + SequentialDelayDomainStateSchema, + verifyDomainRestrictedSignatureRequestAuthenticity, WarningMessage, } from '@celo/phone-number-privacy-common' -import { CryptoSession } from '../../../common/crypto-session' -import { SignAction } from '../../../common/sign' -import { DomainSignerResponseLogger } from '../../services/log-responses' +import assert from 'node:assert' +import { Signer, thresholdCallToSigners } from '../../../common/combine' +import { DomainCryptoClient } from '../../../common/crypto-clients/domain-crypto-client' +import { PromiseHandler } from '../../../common/handlers' +import { getKeyVersionInfo, requestHasSupportedKeyVersion, sendFailure } from '../../../common/io' +import { getCombinerVersion, OdisConfig } from '../../../config' +import { logDomainResponseDiscrepancies } from '../../services/log-responses' +import { findThresholdDomainState } from '../../services/threshold-state' -export class DomainSignAction extends SignAction { - readonly responseLogger = new DomainSignerResponseLogger() +export function createDomainSignHandler( + signers: Signer[], + config: OdisConfig +): PromiseHandler { + return async (request, response) => { + const { logger } = response.locals - combine(session: CryptoSession): void { - this.responseLogger.logResponseDiscrepancies(session) + if (!domainRestrictedSignatureRequestSchema(DomainSchema).is(request.body)) { + sendFailure(WarningMessage.INVALID_INPUT, 400, response) + return + } + if (!requestHasSupportedKeyVersion(request, config, logger)) { + sendFailure(WarningMessage.INVALID_KEY_VERSION_REQUEST, 400, response) + return + } + + // Note that signing requests may include a nonce for replay protection that will be checked by + // the signer, but is not checked here. As a result, requests that pass the authentication check + // here may still fail when sent to the signer. + if (!verifyDomainRestrictedSignatureRequestAuthenticity(request.body)) { + sendFailure(WarningMessage.UNAUTHENTICATED_USER, 401, response) + return + } - if (session.crypto.hasSufficientSignatures()) { + const keyVersionInfo = getKeyVersionInfo(request, config, logger) + const crypto = new DomainCryptoClient(keyVersionInfo) + + const processResult = async ( + res: OdisResponse + ): Promise => { + assert(res.success) + // TODO remove the need to pass url here + crypto.addSignature({ url: request.url, signature: res.signature }) + + // Send response immediately once we cross threshold + // BLS threshold signatures can be combined without all partial signatures + if (crypto.hasSufficientSignatures()) { + try { + crypto.combineBlindedSignatureShares(request.body.blindedMessage, logger) + // Close outstanding requests + return true + } catch (err) { + // One or more signatures failed verification and were discarded. + logger.info('Error caught in receiveSuccess') + logger.info(err) + // Continue to collect signatures. + } + } + return false + } + + const { signerResponses, maxErrorCode } = await thresholdCallToSigners( + response.locals.logger, + { + signers, + endpoint: getSignerEndpoint(CombinerEndpoint.DOMAIN_SIGN), + request, + keyVersionInfo, + requestTimeoutMS: config.odisServices.timeoutMilliSeconds, + responseSchema: domainRestrictedSignatureResponseSchema(SequentialDelayDomainStateSchema), + shouldCheckKeyVersion: true, + }, + processResult + ) + + logDomainResponseDiscrepancies(response.locals.logger, signerResponses) + + if (crypto.hasSufficientSignatures()) { try { - const combinedSignature = session.crypto.combineBlindedSignatureShares( - this.parseBlindedMessage(session.request.body), - session.logger + const combinedSignature = crypto.combineBlindedSignatureShares( + request.body.blindedMessage, + logger ) - return this.io.sendSuccess( + return send( + response, + { + success: true, + version: getCombinerVersion(), + signature: combinedSignature, + status: findThresholdDomainState(keyVersionInfo, signerResponses, signers.length), + }, 200, - session.response, - combinedSignature, - this.thresholdStateService.findThresholdDomainState(session) + response.locals.logger ) } catch (err) { // May fail upon combining signatures if too many sigs are invalid - session.logger.error('Combining signatures failed in combine') - session.logger.error(err) + logger.error('Combining signatures failed in combine') + logger.error(err) // Fallback to handleMissingSignatures } } - this.handleMissingSignatures(session) - } - - protected parseBlindedMessage(req: DomainRestrictedSignatureRequest): string { - return req.blindedMessage + const errorCode = maxErrorCode ?? 500 + const error = errorCodeToError(errorCode) + sendFailure(error, errorCode, response) } +} - protected errorCodeToError(errorCode: number): ErrorType { - switch (errorCode) { - case 429: - return WarningMessage.EXCEEDED_QUOTA - case 401: - // Authentication is checked in the combiner, but invalid nonces are passed through - return WarningMessage.INVALID_NONCE - default: - return ErrorMessage.NOT_ENOUGH_PARTIAL_SIGNATURES - } +function errorCodeToError(errorCode: number): ErrorType { + switch (errorCode) { + case 429: + return WarningMessage.EXCEEDED_QUOTA + case 401: + // Authentication is checked in the combiner, but invalid nonces are passed through + return WarningMessage.INVALID_NONCE + default: + return ErrorMessage.NOT_ENOUGH_PARTIAL_SIGNATURES } } diff --git a/packages/phone-number-privacy/combiner/src/domain/endpoints/sign/io.ts b/packages/phone-number-privacy/combiner/src/domain/endpoints/sign/io.ts deleted file mode 100644 index 291564b4468..00000000000 --- a/packages/phone-number-privacy/combiner/src/domain/endpoints/sign/io.ts +++ /dev/null @@ -1,105 +0,0 @@ -import { - CombinerEndpoint, - DomainRestrictedSignatureRequest, - domainRestrictedSignatureRequestSchema, - DomainRestrictedSignatureResponse, - DomainRestrictedSignatureResponseFailure, - domainRestrictedSignatureResponseSchema, - DomainRestrictedSignatureResponseSuccess, - DomainSchema, - DomainState, - ErrorType, - getSignerEndpoint, - send, - SequentialDelayDomainStateSchema, - verifyDomainRestrictedSignatureRequestAuthenticity, - WarningMessage, -} from '@celo/phone-number-privacy-common' -import { Request, Response } from 'express' -import * as t from 'io-ts' -import { DomainCryptoClient } from '../../../common/crypto-clients/domain-crypto-client' -import { CryptoSession } from '../../../common/crypto-session' -import { IO } from '../../../common/io' -import { getCombinerVersion } from '../../../config' - -export class DomainSignIO extends IO { - readonly endpoint = CombinerEndpoint.DOMAIN_SIGN - readonly signerEndpoint = getSignerEndpoint(this.endpoint) - readonly requestSchema: t.Type< - DomainRestrictedSignatureRequest, - DomainRestrictedSignatureRequest, - unknown - > = domainRestrictedSignatureRequestSchema(DomainSchema) - readonly responseSchema: t.Type< - DomainRestrictedSignatureResponse, - DomainRestrictedSignatureResponse, - unknown - > = domainRestrictedSignatureResponseSchema(SequentialDelayDomainStateSchema) - - async init( - request: Request<{}, {}, unknown>, - response: Response - ): Promise | null> { - if (!super.inputChecks(request, response)) { - return null - } - if (!this.requestHasSupportedKeyVersion(request, response.locals.logger)) { - this.sendFailure(WarningMessage.INVALID_KEY_VERSION_REQUEST, 400, response) - return null - } - if (!(await this.authenticate(request))) { - this.sendFailure(WarningMessage.UNAUTHENTICATED_USER, 401, response) - return null - } - const keyVersionInfo = this.getKeyVersionInfo(request, response.locals.logger) - return new CryptoSession( - request, - response, - keyVersionInfo, - new DomainCryptoClient(keyVersionInfo) - ) - } - - authenticate(request: Request<{}, {}, DomainRestrictedSignatureRequest>): Promise { - // Note that signing requests may include a nonce for replay protection that will be checked by - // the signer, but is not checked here. As a result, requests that pass the authentication check - // here may still fail when sent to the signer. - return Promise.resolve(verifyDomainRestrictedSignatureRequestAuthenticity(request.body)) - } - - sendSuccess( - status: number, - response: Response, - signature: string, - domainState: DomainState - ) { - send( - response, - { - success: true, - version: getCombinerVersion(), - signature, - status: domainState, - }, - status, - response.locals.logger - ) - } - - sendFailure( - error: ErrorType, - status: number, - response: Response - ) { - send( - response, - { - success: false, - version: getCombinerVersion(), - error, - }, - status, - response.locals.logger - ) - } -} diff --git a/packages/phone-number-privacy/combiner/src/domain/services/log-responses.ts b/packages/phone-number-privacy/combiner/src/domain/services/log-responses.ts index 4e78834751a..7f4b3bebb13 100644 --- a/packages/phone-number-privacy/combiner/src/domain/services/log-responses.ts +++ b/packages/phone-number-privacy/combiner/src/domain/services/log-responses.ts @@ -1,59 +1,51 @@ -import { - DomainRequest, - DomainRestrictedSignatureRequest, - WarningMessage, -} from '@celo/phone-number-privacy-common' -import { CryptoSession } from '../../common/crypto-session' -import { Session } from '../../common/session' +import { DomainRequest, WarningMessage } from '@celo/phone-number-privacy-common' +import Logger from 'bunyan' +import { SignerResponse } from '../../common/io' -export class DomainSignerResponseLogger { - logResponseDiscrepancies( - session: Session | CryptoSession - ): void { - const parsedResponses: Array<{ - signerUrl: string - values: { - version: string - counter: number - disabled: boolean - timer: number - } - }> = [] - session.responses.forEach((response) => { - if (response.res.success) { - const { version, status } = response.res - parsedResponses.push({ - signerUrl: response.url, - values: { - version, - counter: status.counter, - disabled: status.disabled, - timer: status.timer, - }, - }) - } - }) - if (parsedResponses.length === 0) { - session.logger.warn('No successful signer responses found!') - return +export function logDomainResponseDiscrepancies( + logger: Logger, + responses: Array> +) { + const parsedResponses: Array<{ + signerUrl: string + values: { + version: string + counter: number + disabled: boolean + timer: number } - - // log all responses if we notice any discrepancies to aid with debugging - const first = JSON.stringify(parsedResponses[0].values) - for (let i = 1; i < parsedResponses.length; i++) { - if (JSON.stringify(parsedResponses[i].values) !== first) { - session.logger.warn({ parsedResponses }, WarningMessage.SIGNER_RESPONSE_DISCREPANCIES) - break - } + }> = [] + responses.forEach((response) => { + if (response.res.success) { + const { version, status } = response.res + parsedResponses.push({ + signerUrl: response.url, + values: { + version, + counter: status.counter, + disabled: status.disabled, + timer: status.timer, + }, + }) } + }) + if (parsedResponses.length === 0) { + logger.warn('No successful signer responses found!') + return + } - // disabled - const numDisabled = parsedResponses.filter((res) => res.values.disabled).length - if (numDisabled > 0 && numDisabled < parsedResponses.length) { - session.logger.error( - { parsedResponses }, - WarningMessage.INCONSISTENT_SIGNER_DOMAIN_DISABLED_STATES - ) + // log all responses if we notice any discrepancies to aid with debugging + const first = JSON.stringify(parsedResponses[0].values) + for (let i = 1; i < parsedResponses.length; i++) { + if (JSON.stringify(parsedResponses[i].values) !== first) { + logger.warn({ parsedResponses }, WarningMessage.SIGNER_RESPONSE_DISCREPANCIES) + break } } + + // disabled + const numDisabled = parsedResponses.filter((res) => res.values.disabled).length + if (numDisabled > 0 && numDisabled < parsedResponses.length) { + logger.error({ parsedResponses }, WarningMessage.INCONSISTENT_SIGNER_DOMAIN_DISABLED_STATES) + } } diff --git a/packages/phone-number-privacy/combiner/src/domain/services/threshold-state.ts b/packages/phone-number-privacy/combiner/src/domain/services/threshold-state.ts index 38cdf62e8e8..31b8a30326a 100644 --- a/packages/phone-number-privacy/combiner/src/domain/services/threshold-state.ts +++ b/packages/phone-number-privacy/combiner/src/domain/services/threshold-state.ts @@ -1,78 +1,75 @@ -import { DomainRequest, DomainState } from '@celo/phone-number-privacy-common' -import { Session } from '../../common/session' -import { OdisConfig } from '../../config' +import { DomainRequest, DomainState, KeyVersionInfo } from '@celo/phone-number-privacy-common' +import { SignerResponse } from '../../common/io' -export class DomainThresholdStateService { - constructor(readonly config: OdisConfig) {} +export function findThresholdDomainState( + keyVersionInfo: KeyVersionInfo, + rawSignerResponses: Array>, + totalSigners: number +): DomainState { + const { threshold } = keyVersionInfo + // Get the domain status from the responses, filtering out responses that don't have the status. + const domainStates = rawSignerResponses + .map((signerResponse) => ('status' in signerResponse.res ? signerResponse.res.status : null)) + .filter((state: DomainState | null | undefined): state is DomainState => !!state) - findThresholdDomainState(session: Session): DomainState { - // Get the domain status from the responses, filtering out responses that don't have the status. - const domainStates = session.responses - .map((signerResponse) => ('status' in signerResponse.res ? signerResponse.res.status : null)) - .filter((state: DomainState | null | undefined): state is DomainState => !!state) - - const { threshold } = session.keyVersionInfo - - // Note: when the threshold > # total signers - threshold, it's possible that we - // throw an error here when the domain is disabled. While the domain is technically disabled, - // the hope is to increase the "safety margin" of the number of signers that have - // also disabled this domain.This can be changed in the future (if we think that - // the safety margin is no longer needed) by simply checking if the domain is disabled - // before checking if the threshold of enabled responses has been met. - if (domainStates.length < threshold) { - throw new Error('Insufficient number of signer responses') - } + // Note: when the threshold > # total signers - threshold, it's possible that we + // throw an error here when the domain is disabled. While the domain is technically disabled, + // the hope is to increase the "safety margin" of the number of signers that have + // also disabled this domain.This can be changed in the future (if we think that + // the safety margin is no longer needed) by simply checking if the domain is disabled + // before checking if the threshold of enabled responses has been met. + if (domainStates.length < threshold) { + throw new Error('Insufficient number of signer responses') + } - // Check whether the domain is disabled, either by all signers or by some. - const domainStatesEnabled = domainStates.filter((ds) => !ds.disabled) - const numDisabled = domainStates.length - domainStatesEnabled.length + // Check whether the domain is disabled, either by all signers or by some. + const domainStatesEnabled = domainStates.filter((ds) => !ds.disabled) + const numDisabled = domainStates.length - domainStatesEnabled.length - const signersLength = JSON.parse(this.config.odisServices.signers).length - if (signersLength - numDisabled < threshold) { - return { timer: 0, counter: 0, disabled: true, now: 0 } - } + if (totalSigners - numDisabled < threshold) { + return { timer: 0, counter: 0, disabled: true, now: 0 } + } - // Ideally users will resubmit the request in this case. - if (domainStatesEnabled.length < threshold) { - throw new Error('Insufficient number of signer responses. Domain may be disabled') - } + // Ideally users will resubmit the request in this case. + if (domainStatesEnabled.length < threshold) { + throw new Error('Insufficient number of signer responses. Domain may be disabled') + } - // Set n to last signer index in a quorum of signers are sorted from least to most restrictive. - const n = threshold - 1 + // Set n to last signer index in a quorum of signers are sorted from least to most restrictive. + const n = threshold - 1 - const domainStatesAscendingByCounter = domainStatesEnabled.sort((a, b) => a.counter - b.counter) - const nthLeastRestrictiveByCounter = domainStatesAscendingByCounter[n] - const thresholdCounter = nthLeastRestrictiveByCounter.counter + const domainStatesAscendingByCounter = domainStatesEnabled.sort((a, b) => a.counter - b.counter) + const nthLeastRestrictiveByCounter = domainStatesAscendingByCounter[n] + const thresholdCounter = nthLeastRestrictiveByCounter.counter - // Client should submit requests with nonce === thresholdCounter + // Client should submit requests with nonce === thresholdCounter - const domainStatesWithThresholdCounter = domainStatesEnabled.filter( - (ds) => ds.counter <= thresholdCounter - ) + const domainStatesWithThresholdCounter = domainStatesEnabled.filter( + (ds) => ds.counter <= thresholdCounter + ) - const domainStatesAscendingByTimestampRestrictiveness = domainStatesWithThresholdCounter.sort( - (a, b) => a.timer - a.now - (b.timer - b.now) - /** - * Please see '@celo/phone-number-privacy-common/src/domains/sequential-delay.ts' - * and https://github.com/celo-org/celo-proposals/blob/master/CIPs/CIP-0040/sequentialDelayDomain.md - * - * For a given DomainState, it is always the case that 'now' >= 'timer'. This ordering ensures - * that we take the 'timer' and 'date' from the same DomainState while still returning a reasonable - * definition of the "nth least restrictive" values. For simplicity, we do not take into consideration - * the 'delay' until the next request will be accepted as that would require calculating this value for - * each DomainState with the checkSequentialDelayDomainState algorithm in sequential-delay.ts. - * This would add complexity because DomainStates may have different values for 'counter' that dramatically - * alter this 'delay' and we want to protect the user's quota by returning the lowest possible - * threshold 'counter'. Feel free to implement a more exact solution if you're up for a coding challenge :) - */ - ) - const nthLeastRestrictiveByTimestamps = domainStatesAscendingByTimestampRestrictiveness[n] + const domainStatesAscendingByTimestampRestrictiveness = domainStatesWithThresholdCounter.sort( + (a, b) => a.timer - a.now - (b.timer - b.now) + /** + * Please see '@celo/phone-number-privacy-common/src/domains/sequential-delay.ts' + * and https://github.com/celo-org/celo-proposals/blob/master/CIPs/CIP-0040/sequentialDelayDomain.md + * + * For a given DomainState, it is always the case that 'now' >= 'timer'. This ordering ensures + * that we take the 'timer' and 'date' from the same DomainState while still returning a reasonable + * definition of the "nth least restrictive" values. For simplicity, we do not take into consideration + * the 'delay' until the next request will be accepted as that would require calculating this value for + * each DomainState with the checkSequentialDelayDomainState algorithm in sequential-delay.ts. + * This would add complexity because DomainStates may have different values for 'counter' that dramatically + * alter this 'delay' and we want to protect the user's quota by returning the lowest possible + * threshold 'counter'. Feel free to implement a more exact solution if you're up for a coding challenge :) + */ + ) + const nthLeastRestrictiveByTimestamps = domainStatesAscendingByTimestampRestrictiveness[n] - return { - timer: nthLeastRestrictiveByTimestamps.timer, - counter: thresholdCounter, - disabled: false, - now: nthLeastRestrictiveByTimestamps.now, - } + return { + timer: nthLeastRestrictiveByTimestamps.timer, + counter: thresholdCounter, + disabled: false, + now: nthLeastRestrictiveByTimestamps.now, } } diff --git a/packages/phone-number-privacy/combiner/src/index.ts b/packages/phone-number-privacy/combiner/src/index.ts index def19e58b58..42336c696d9 100644 --- a/packages/phone-number-privacy/combiner/src/index.ts +++ b/packages/phone-number-privacy/combiner/src/index.ts @@ -1,4 +1,4 @@ -import { getContractKit } from '@celo/phone-number-privacy-common' +import { getContractKitWithAgent } from '@celo/phone-number-privacy-common' import * as functions from 'firebase-functions' import config from './config' import { startCombiner } from './server' @@ -12,5 +12,5 @@ export const combiner = functions // Defined check required for running tests vs. deployment minInstances: functions.config().service ? Number(functions.config().service.min_instances) : 0, }) - .https.onRequest(startCombiner(config, getContractKit(config.blockchain))) + .https.onRequest(startCombiner(config, getContractKitWithAgent(config.blockchain))) export * from './config' diff --git a/packages/phone-number-privacy/combiner/src/pnp/endpoints/quota/action.ts b/packages/phone-number-privacy/combiner/src/pnp/endpoints/quota/action.ts index e8f607965f1..8abf37cc48e 100644 --- a/packages/phone-number-privacy/combiner/src/pnp/endpoints/quota/action.ts +++ b/packages/phone-number-privacy/combiner/src/pnp/endpoints/quota/action.ts @@ -1,42 +1,89 @@ -import { ErrorMessage, PnpQuotaRequest } from '@celo/phone-number-privacy-common' -import { CombineAction } from '../../../common/combine' -import { IO } from '../../../common/io' -import { Session } from '../../../common/session' -import { OdisConfig } from '../../../config' -import { PnpSignerResponseLogger } from '../../services/log-responses' -import { PnpThresholdStateService } from '../../services/threshold-state' - -export class PnpQuotaAction extends CombineAction { - readonly responseLogger: PnpSignerResponseLogger = new PnpSignerResponseLogger() - - constructor( - readonly config: OdisConfig, - readonly thresholdStateService: PnpThresholdStateService, - readonly io: IO - ) { - super(config, io) - } +import { + authenticateUser, + CombinerEndpoint, + DataEncryptionKeyFetcher, + ErrorMessage, + getSignerEndpoint, + hasValidAccountParam, + isBodyReasonablySized, + PnpQuotaRequest, + PnpQuotaRequestSchema, + PnpQuotaResponseSchema, + send, + WarningMessage, +} from '@celo/phone-number-privacy-common' +import { Request } from 'express' +import { Signer, thresholdCallToSigners } from '../../../common/combine' +import { PromiseHandler } from '../../../common/handlers' +import { getKeyVersionInfo, sendFailure } from '../../../common/io' +import { getCombinerVersion, OdisConfig } from '../../../config' +import { logPnpSignerResponseDiscrepancies } from '../../services/log-responses' +import { findCombinerQuotaState } from '../../services/threshold-state' + +export function createPnpQuotaHandler( + signers: Signer[], + config: OdisConfig, + dekFetcher: DataEncryptionKeyFetcher +): PromiseHandler { + return async (request, response) => { + const logger = response.locals.logger + + if (!validateRequest(request)) { + sendFailure(WarningMessage.INVALID_INPUT, 400, response) + return + } + + if (!(await authenticateUser(request, logger, dekFetcher))) { + sendFailure(WarningMessage.UNAUTHENTICATED_USER, 401, response) + return + } + + // TODO remove this, we shouldn't need keyVersionInfo for non-signing endpoints + const keyVersionInfo = getKeyVersionInfo(request, config, logger) - async combine(session: Session): Promise { - this.responseLogger.logResponseDiscrepancies(session) - this.responseLogger.logFailOpenResponses(session) + const { signerResponses, maxErrorCode } = await thresholdCallToSigners(logger, { + signers, + endpoint: getSignerEndpoint(CombinerEndpoint.PNP_QUOTA), + request, + keyVersionInfo, + requestTimeoutMS: config.odisServices.timeoutMilliSeconds, + responseSchema: PnpQuotaResponseSchema, + shouldCheckKeyVersion: false, + }) + const warnings = logPnpSignerResponseDiscrepancies(logger, signerResponses) - const { threshold } = session.keyVersionInfo + const { threshold } = keyVersionInfo - if (session.responses.length >= threshold) { + if (signerResponses.length >= threshold) { try { - const quotaStatus = this.thresholdStateService.findCombinerQuotaState(session) - this.io.sendSuccess(200, session.response, quotaStatus, session.warnings) + const quotaStatus = findCombinerQuotaState(keyVersionInfo, signerResponses, warnings) + send( + response, + { + success: true, + version: getCombinerVersion(), + ...quotaStatus, + warnings, + }, + 200, + logger + ) + return } catch (err) { - session.logger.error(err, 'Error combining signer quota status responses') + logger.error(err, 'Error combining signer quota status responses') } } - this.io.sendFailure( - ErrorMessage.THRESHOLD_PNP_QUOTA_STATUS_FAILURE, - session.getMajorityErrorCode() ?? 500, - session.response, - session.logger - ) + sendFailure(ErrorMessage.THRESHOLD_PNP_QUOTA_STATUS_FAILURE, maxErrorCode ?? 500, response) } } + +function validateRequest( + request: Request<{}, {}, unknown> +): request is Request<{}, {}, PnpQuotaRequest> { + return ( + PnpQuotaRequestSchema.is(request.body) && + hasValidAccountParam(request.body) && + isBodyReasonablySized(request.body) + ) +} diff --git a/packages/phone-number-privacy/combiner/src/pnp/endpoints/quota/io.ts b/packages/phone-number-privacy/combiner/src/pnp/endpoints/quota/io.ts deleted file mode 100644 index 6356db909f9..00000000000 --- a/packages/phone-number-privacy/combiner/src/pnp/endpoints/quota/io.ts +++ /dev/null @@ -1,107 +0,0 @@ -import { ContractKit } from '@celo/contractkit' -import { - authenticateUser, - CombinerEndpoint, - ErrorType, - getSignerEndpoint, - hasValidAccountParam, - isBodyReasonablySized, - PnpQuotaRequest, - PnpQuotaRequestSchema, - PnpQuotaResponse, - PnpQuotaResponseFailure, - PnpQuotaResponseSchema, - PnpQuotaResponseSuccess, - PnpQuotaStatus, - send, - SignerEndpoint, - WarningMessage, -} from '@celo/phone-number-privacy-common' -import Logger from 'bunyan' -import { Request, Response } from 'express' -import * as t from 'io-ts' -import { IO } from '../../../common/io' -import { Session } from '../../../common/session' -import { getCombinerVersion, OdisConfig } from '../../../config' - -export class PnpQuotaIO extends IO { - readonly endpoint: CombinerEndpoint = CombinerEndpoint.PNP_QUOTA - readonly signerEndpoint: SignerEndpoint = getSignerEndpoint(this.endpoint) - readonly requestSchema: t.Type = PnpQuotaRequestSchema - readonly responseSchema: t.Type = - PnpQuotaResponseSchema - - constructor(readonly config: OdisConfig, readonly kit: ContractKit) { - super(config) - } - - async init( - request: Request<{}, {}, unknown>, - response: Response - ): Promise | null> { - if (!super.inputChecks(request, response)) { - return null - } - if (!(await this.authenticate(request, response.locals.logger))) { - this.sendFailure(WarningMessage.UNAUTHENTICATED_USER, 401, response) - return null - } - const keyVersionInfo = this.getKeyVersionInfo(request, response.locals.logger) - return new Session(request, response, keyVersionInfo) - } - - validateClientRequest( - request: Request<{}, {}, unknown> - ): request is Request<{}, {}, PnpQuotaRequest> { - return ( - super.validateClientRequest(request) && - hasValidAccountParam(request.body) && - isBodyReasonablySized(request.body) - ) - } - - async authenticate(request: Request<{}, {}, PnpQuotaRequest>, logger: Logger): Promise { - return authenticateUser( - request, - this.kit, - logger, - this.config.shouldFailOpen, - [], - this.config.fullNodeTimeoutMs, - this.config.fullNodeRetryCount, - this.config.fullNodeRetryDelayMs - ) - } - - sendSuccess( - status: number, - response: Response, - quotaStatus: PnpQuotaStatus, - warnings: string[] - ) { - send( - response, - { - success: true, - version: getCombinerVersion(), - ...quotaStatus, - warnings, - }, - status, - response.locals.logger - ) - } - - sendFailure(error: ErrorType, status: number, response: Response) { - send( - response, - { - success: false, - version: getCombinerVersion(), - error, - }, - status, - response.locals.logger - ) - } -} diff --git a/packages/phone-number-privacy/combiner/src/pnp/endpoints/sign/action.ts b/packages/phone-number-privacy/combiner/src/pnp/endpoints/sign/action.ts index e75ddb8e727..eb0f9b6f72d 100644 --- a/packages/phone-number-privacy/combiner/src/pnp/endpoints/sign/action.ts +++ b/packages/phone-number-privacy/combiner/src/pnp/endpoints/sign/action.ts @@ -1,55 +1,139 @@ import { + authenticateUser, + CombinerEndpoint, + DataEncryptionKeyFetcher, ErrorMessage, ErrorType, + getSignerEndpoint, + hasValidAccountParam, + hasValidBlindedPhoneNumberParam, + isBodyReasonablySized, + OdisResponse, + send, SignMessageRequest, + SignMessageRequestSchema, + SignMessageResponseSchema, WarningMessage, } from '@celo/phone-number-privacy-common' -import { CryptoSession } from '../../../common/crypto-session' -import { SignAction } from '../../../common/sign' -import { PnpSignerResponseLogger } from '../../services/log-responses' +import { Request } from 'express' +import assert from 'node:assert' +import { Signer, thresholdCallToSigners } from '../../../common/combine' +import { BLSCryptographyClient } from '../../../common/crypto-clients/bls-crypto-client' +import { PromiseHandler } from '../../../common/handlers' +import { getKeyVersionInfo, requestHasSupportedKeyVersion, sendFailure } from '../../../common/io' +import { getCombinerVersion, OdisConfig } from '../../../config' +import { logPnpSignerResponseDiscrepancies } from '../../services/log-responses' +import { findCombinerQuotaState } from '../../services/threshold-state' -export class PnpSignAction extends SignAction { - readonly responseLogger: PnpSignerResponseLogger = new PnpSignerResponseLogger() +export function createPnpSignHandler( + signers: Signer[], + config: OdisConfig, + dekFetcher: DataEncryptionKeyFetcher +): PromiseHandler { + return async (request, response) => { + const logger = response.locals.logger + if (!validateRequest(request)) { + sendFailure(WarningMessage.INVALID_INPUT, 400, response) + return + } + + if (!requestHasSupportedKeyVersion(request, config, response.locals.logger)) { + sendFailure(WarningMessage.INVALID_KEY_VERSION_REQUEST, 400, response) + return + } + + if (!(await authenticateUser(request, logger, dekFetcher))) { + sendFailure(WarningMessage.UNAUTHENTICATED_USER, 401, response) + return + } + const keyVersionInfo = getKeyVersionInfo(request, config, logger) + const crypto = new BLSCryptographyClient(keyVersionInfo) + + const processResult = async (result: OdisResponse): Promise => { + assert(result.success) + crypto.addSignature({ url: request.url, signature: result.signature }) + + // Send response immediately once we cross threshold + // BLS threshold signatures can be combined without all partial signatures + if (crypto.hasSufficientSignatures()) { + try { + crypto.combineBlindedSignatureShares(request.body.blindedQueryPhoneNumber, logger) + // Close outstanding requests + return true + } catch (err) { + // One or more signatures failed verification and were discarded. + logger.info('Error caught in processRequest') + logger.info(err) + // Continue to collect signatures. + } + } + return false + } - combine(session: CryptoSession): void { - this.responseLogger.logResponseDiscrepancies(session) - this.responseLogger.logFailOpenResponses(session) + const { signerResponses, maxErrorCode } = await thresholdCallToSigners( + logger, + { + signers, + endpoint: getSignerEndpoint(CombinerEndpoint.PNP_SIGN), + request, + keyVersionInfo, + requestTimeoutMS: config.odisServices.timeoutMilliSeconds, + responseSchema: SignMessageResponseSchema, + shouldCheckKeyVersion: true, + }, + processResult + ) - if (session.crypto.hasSufficientSignatures()) { + const warnings = logPnpSignerResponseDiscrepancies(logger, signerResponses) + + if (crypto.hasSufficientSignatures()) { try { - const combinedSignature = session.crypto.combineBlindedSignatureShares( - this.parseBlindedMessage(session.request.body), - session.logger + const combinedSignature = crypto.combineBlindedSignatureShares( + request.body.blindedQueryPhoneNumber, + logger ) - const quotaStatus = this.thresholdStateService.findCombinerQuotaState(session) - return this.io.sendSuccess( + return send( + response, + { + success: true, + version: getCombinerVersion(), + signature: combinedSignature, + ...findCombinerQuotaState(keyVersionInfo, signerResponses, warnings), + warnings, + }, 200, - session.response, - combinedSignature, - quotaStatus, - session.warnings + logger ) } catch (error) { // May fail upon combining signatures if too many sigs are invalid // Fallback to handleMissingSignatures - session.logger.error(error) + logger.error(error) } } - this.handleMissingSignatures(session) + const errorCode = maxErrorCode ?? 500 + const error = errorCodeToError(errorCode) + sendFailure(error, errorCode, response) } +} - protected parseBlindedMessage(req: SignMessageRequest): string { - return req.blindedQueryPhoneNumber - } +function validateRequest( + request: Request<{}, {}, unknown> +): request is Request<{}, {}, SignMessageRequest> { + return ( + SignMessageRequestSchema.is(request.body) && + hasValidAccountParam(request.body) && + hasValidBlindedPhoneNumberParam(request.body) && + isBodyReasonablySized(request.body) + ) +} - protected errorCodeToError(errorCode: number): ErrorType { - switch (errorCode) { - case 403: - return WarningMessage.EXCEEDED_QUOTA - default: - return ErrorMessage.NOT_ENOUGH_PARTIAL_SIGNATURES - } +function errorCodeToError(errorCode: number): ErrorType { + switch (errorCode) { + case 403: + return WarningMessage.EXCEEDED_QUOTA + default: + return ErrorMessage.NOT_ENOUGH_PARTIAL_SIGNATURES } } diff --git a/packages/phone-number-privacy/combiner/src/pnp/endpoints/sign/io.ts b/packages/phone-number-privacy/combiner/src/pnp/endpoints/sign/io.ts deleted file mode 100644 index 0b0050b9c72..00000000000 --- a/packages/phone-number-privacy/combiner/src/pnp/endpoints/sign/io.ts +++ /dev/null @@ -1,126 +0,0 @@ -import { ContractKit } from '@celo/contractkit' -import { - authenticateUser, - CombinerEndpoint, - ErrorType, - getSignerEndpoint, - hasValidAccountParam, - hasValidBlindedPhoneNumberParam, - isBodyReasonablySized, - PnpQuotaStatus, - send, - SignerEndpoint, - SignMessageRequest, - SignMessageRequestSchema, - SignMessageResponse, - SignMessageResponseFailure, - SignMessageResponseSchema, - SignMessageResponseSuccess, - WarningMessage, -} from '@celo/phone-number-privacy-common' -import Logger from 'bunyan' -import { Request, Response } from 'express' -import * as t from 'io-ts' -import { BLSCryptographyClient } from '../../../common/crypto-clients/bls-crypto-client' -import { CryptoSession } from '../../../common/crypto-session' -import { IO } from '../../../common/io' -import { Session } from '../../../common/session' -import { getCombinerVersion, OdisConfig } from '../../../config' - -export class PnpSignIO extends IO { - readonly endpoint: CombinerEndpoint = CombinerEndpoint.PNP_SIGN - readonly signerEndpoint: SignerEndpoint = getSignerEndpoint(this.endpoint) - readonly requestSchema: t.Type = - SignMessageRequestSchema - readonly responseSchema: t.Type = - SignMessageResponseSchema - - constructor(readonly config: OdisConfig, readonly kit: ContractKit) { - super(config) - } - - async init( - request: Request<{}, {}, unknown>, - response: Response - ): Promise | null> { - if (!super.inputChecks(request, response)) { - return null - } - if (!this.requestHasSupportedKeyVersion(request, response.locals.logger)) { - this.sendFailure(WarningMessage.INVALID_KEY_VERSION_REQUEST, 400, response) - return null - } - if (!(await this.authenticate(request, response.locals.logger))) { - this.sendFailure(WarningMessage.UNAUTHENTICATED_USER, 401, response) - return null - } - const keyVersionInfo = this.getKeyVersionInfo(request, response.locals.logger) - return new CryptoSession( - request, - response, - keyVersionInfo, - new BLSCryptographyClient(keyVersionInfo) - ) - } - - validateClientRequest( - request: Request<{}, {}, unknown> - ): request is Request<{}, {}, SignMessageRequest> { - return ( - super.validateClientRequest(request) && - hasValidAccountParam(request.body) && - hasValidBlindedPhoneNumberParam(request.body) && - isBodyReasonablySized(request.body) - ) - } - - async authenticate( - request: Request<{}, {}, SignMessageRequest>, - logger: Logger - ): Promise { - return authenticateUser( - request, - this.kit, - logger, - this.config.shouldFailOpen, - [], - this.config.fullNodeTimeoutMs, - this.config.fullNodeRetryCount, - this.config.fullNodeRetryDelayMs - ) - } - - sendSuccess( - status: number, - response: Response, - signature: string, - quotaStatus: PnpQuotaStatus, - warnings: string[] - ) { - send( - response, - { - success: true, - version: getCombinerVersion(), - signature, - ...quotaStatus, - warnings, - }, - status, - response.locals.logger - ) - } - - sendFailure(error: ErrorType, status: number, response: Response) { - send( - response, - { - success: false, - version: getCombinerVersion(), - error, - }, - status, - response.locals.logger - ) - } -} diff --git a/packages/phone-number-privacy/combiner/src/pnp/services/log-responses.ts b/packages/phone-number-privacy/combiner/src/pnp/services/log-responses.ts index 7fdc2b6b6e4..89bd98c2681 100644 --- a/packages/phone-number-privacy/combiner/src/pnp/services/log-responses.ts +++ b/packages/phone-number-privacy/combiner/src/pnp/services/log-responses.ts @@ -1,133 +1,82 @@ import { - ErrorMessage, PnpQuotaRequest, SignMessageRequest, WarningMessage, } from '@celo/phone-number-privacy-common' -import { Session } from '../../common/session' +import Logger from 'bunyan' +import { SignerResponse } from '../../common/io' import { - MAX_BLOCK_DISCREPANCY_THRESHOLD, MAX_QUERY_COUNT_DISCREPANCY_THRESHOLD, MAX_TOTAL_QUOTA_DISCREPANCY_THRESHOLD, } from '../../config' -export class PnpSignerResponseLogger { - logResponseDiscrepancies(session: Session | Session): void { - // TODO responses should all already be successes due to CombineAction receiveSuccess - // https://github.com/celo-org/celo-monorepo/issues/9826 +export function logPnpSignerResponseDiscrepancies( + logger: Logger, + responses: Array> +): string[] { + const warnings: string[] = [] - const parsedResponses: Array<{ - signerUrl: string - values: { - version: string - performedQueryCount: number - totalQuota: number - blockNumber?: number - warnings?: string[] - } - }> = [] - session.responses.forEach((response) => { - if (response.res.success) { - const { version, performedQueryCount, totalQuota, blockNumber, warnings } = response.res - parsedResponses.push({ - signerUrl: response.url, - values: { version, performedQueryCount, totalQuota, blockNumber, warnings }, - }) - } - }) - if (parsedResponses.length === 0) { - session.logger.warn('No successful signer responses found!') - return - } + // TODO responses should all already be successes due to CombineAction receiveSuccess + // https://github.com/celo-org/celo-monorepo/issues/9826 - // log all responses if we notice any discrepancies to aid with debugging - const first = JSON.stringify(parsedResponses[0].values) - for (let i = 1; i < parsedResponses.length; i++) { - if (JSON.stringify(parsedResponses[i].values) !== first) { - session.logger.warn({ parsedResponses }, WarningMessage.SIGNER_RESPONSE_DISCREPANCIES) - session.warnings.push(WarningMessage.SIGNER_RESPONSE_DISCREPANCIES) - break - } + const parsedResponses: Array<{ + signerUrl: string + values: { + version: string + performedQueryCount: number + totalQuota: number + warnings?: string[] } - - // blockNumber - parsedResponses.forEach((res) => { - if (res.values.blockNumber === undefined) { - session.logger.warn( - { signerUrl: res.signerUrl }, - 'Signer responded with undefined blockNumber' - ) - } - }) - const sortedByBlockNumber = parsedResponses - .filter((res) => !!res.values.blockNumber) - .sort((a, b) => a.values.blockNumber! - b.values.blockNumber!) - if ( - sortedByBlockNumber.length && - sortedByBlockNumber[sortedByBlockNumber.length - 1].values.blockNumber! - - sortedByBlockNumber[0].values.blockNumber! >= - MAX_BLOCK_DISCREPANCY_THRESHOLD - ) { - session.logger.error( - { sortedByBlockNumber }, - WarningMessage.INCONSISTENT_SIGNER_BLOCK_NUMBERS - ) - session.warnings.push(WarningMessage.INCONSISTENT_SIGNER_BLOCK_NUMBERS) + }> = [] + responses.forEach((response) => { + if (response.res.success) { + const { version, performedQueryCount, totalQuota, warnings: _warnings } = response.res + parsedResponses.push({ + signerUrl: response.url, + values: { version, performedQueryCount, totalQuota, warnings: _warnings }, + }) } + }) + if (parsedResponses.length === 0) { + logger.warn('No successful signer responses found!') + return warnings + } - // totalQuota - const sortedByTotalQuota = parsedResponses.sort( - (a, b) => a.values.totalQuota - b.values.totalQuota - ) - if ( - sortedByTotalQuota[sortedByTotalQuota.length - 1].values.totalQuota - - sortedByTotalQuota[0].values.totalQuota >= - MAX_TOTAL_QUOTA_DISCREPANCY_THRESHOLD - ) { - session.logger.error( - { sortedByTotalQuota }, - WarningMessage.INCONSISTENT_SIGNER_QUOTA_MEASUREMENTS - ) - session.warnings.push(WarningMessage.INCONSISTENT_SIGNER_QUOTA_MEASUREMENTS) + // log all responses if we notice any discrepancies to aid with debugging + const first = JSON.stringify(parsedResponses[0].values) + for (let i = 1; i < parsedResponses.length; i++) { + if (JSON.stringify(parsedResponses[i].values) !== first) { + logger.warn({ parsedResponses }, WarningMessage.SIGNER_RESPONSE_DISCREPANCIES) + warnings.push(WarningMessage.SIGNER_RESPONSE_DISCREPANCIES) + break } + } - // performedQueryCount - const sortedByQueryCount = parsedResponses.sort( - (a, b) => a.values.performedQueryCount - b.values.performedQueryCount - ) - if ( - sortedByQueryCount[sortedByQueryCount.length - 1].values.performedQueryCount - - sortedByQueryCount[0].values.performedQueryCount >= - MAX_QUERY_COUNT_DISCREPANCY_THRESHOLD - ) { - session.logger.error( - { sortedByQueryCount }, - WarningMessage.INCONSISTENT_SIGNER_QUERY_MEASUREMENTS - ) - session.warnings.push(WarningMessage.INCONSISTENT_SIGNER_QUERY_MEASUREMENTS) - } + // totalQuota + const sortedByTotalQuota = parsedResponses.sort( + (a, b) => a.values.totalQuota - b.values.totalQuota + ) + if ( + sortedByTotalQuota[sortedByTotalQuota.length - 1].values.totalQuota - + sortedByTotalQuota[0].values.totalQuota >= + MAX_TOTAL_QUOTA_DISCREPANCY_THRESHOLD + ) { + logger.error({ sortedByTotalQuota }, WarningMessage.INCONSISTENT_SIGNER_QUOTA_MEASUREMENTS) + warnings.push(WarningMessage.INCONSISTENT_SIGNER_QUOTA_MEASUREMENTS) } - logFailOpenResponses(session: Session | Session): void { - session.responses.forEach((response) => { - if (response.res.success) { - const { warnings } = response.res - if (warnings) { - warnings.forEach((warning) => { - switch (warning) { - case ErrorMessage.FAILING_OPEN: - case ErrorMessage.FAILURE_TO_GET_TOTAL_QUOTA: - case ErrorMessage.FAILURE_TO_GET_DEK: - session.logger.error( - { signerWarning: warning, service: response.url }, - WarningMessage.SIGNER_FAILED_OPEN - ) - default: - break - } - }) - } - } - }) + // performedQueryCount + const sortedByQueryCount = parsedResponses.sort( + (a, b) => a.values.performedQueryCount - b.values.performedQueryCount + ) + if ( + sortedByQueryCount[sortedByQueryCount.length - 1].values.performedQueryCount - + sortedByQueryCount[0].values.performedQueryCount >= + MAX_QUERY_COUNT_DISCREPANCY_THRESHOLD + ) { + logger.error({ sortedByQueryCount }, WarningMessage.INCONSISTENT_SIGNER_QUERY_MEASUREMENTS) + warnings.push(WarningMessage.INCONSISTENT_SIGNER_QUERY_MEASUREMENTS) } + + return warnings } diff --git a/packages/phone-number-privacy/combiner/src/pnp/services/threshold-state.ts b/packages/phone-number-privacy/combiner/src/pnp/services/threshold-state.ts index ee46bab51d4..739bc6c503c 100644 --- a/packages/phone-number-privacy/combiner/src/pnp/services/threshold-state.ts +++ b/packages/phone-number-privacy/combiner/src/pnp/services/threshold-state.ts @@ -1,49 +1,51 @@ import { - PnpQuotaRequest, + KeyVersionInfo, + OdisRequest, PnpQuotaStatus, - SignMessageRequest, WarningMessage, } from '@celo/phone-number-privacy-common' -import { Session } from '../../common/session' +import { SignerResponse } from '../../common/io' import { MAX_TOTAL_QUOTA_DISCREPANCY_THRESHOLD } from '../../config' -export class PnpThresholdStateService { - findCombinerQuotaState(session: Session): PnpQuotaStatus { - const { threshold } = session.keyVersionInfo - const signerResponses = session.responses - .map((signerResponse) => signerResponse.res) - .filter((res) => res.success) as PnpQuotaStatus[] - const sortedResponses = signerResponses.sort( - (a, b) => b.totalQuota - b.performedQueryCount - (a.totalQuota - a.performedQueryCount) - ) - const totalQuotaAvg = - sortedResponses.map((r) => r.totalQuota).reduce((a, b) => a + b) / sortedResponses.length - const totalQuotaStDev = Math.sqrt( - sortedResponses.map((r) => (r.totalQuota - totalQuotaAvg) ** 2).reduce((a, b) => a + b) / - sortedResponses.length +export function findCombinerQuotaState( + keyVersionInfo: KeyVersionInfo, + rawSignerResponses: Array>, + warnings: string[] +): PnpQuotaStatus { + const { threshold } = keyVersionInfo + const signerResponses = rawSignerResponses + .map((signerResponse) => signerResponse.res) + .filter((res) => res.success) as PnpQuotaStatus[] + const sortedResponses = signerResponses.sort( + (a, b) => b.totalQuota - b.performedQueryCount - (a.totalQuota - a.performedQueryCount) + ) + + const totalQuotaAvg = + sortedResponses.map((r) => r.totalQuota).reduce((a, b) => a + b) / sortedResponses.length + const totalQuotaStDev = Math.sqrt( + sortedResponses.map((r) => (r.totalQuota - totalQuotaAvg) ** 2).reduce((a, b) => a + b) / + sortedResponses.length + ) + if (totalQuotaStDev > MAX_TOTAL_QUOTA_DISCREPANCY_THRESHOLD) { + // TODO(2.0.0): add alerting for this + throw new Error(WarningMessage.INCONSISTENT_SIGNER_QUOTA_MEASUREMENTS) + } else if (totalQuotaStDev > 0) { + warnings.push( + WarningMessage.INCONSISTENT_SIGNER_QUOTA_MEASUREMENTS + + ', using threshold signer as best guess' ) - if (totalQuotaStDev > MAX_TOTAL_QUOTA_DISCREPANCY_THRESHOLD) { - // TODO(2.0.0): add alerting for this - throw new Error(WarningMessage.INCONSISTENT_SIGNER_QUOTA_MEASUREMENTS) - } else if (totalQuotaStDev > 0) { - session.warnings.push( - WarningMessage.INCONSISTENT_SIGNER_QUOTA_MEASUREMENTS + - ', using threshold signer as best guess' - ) - } + } - // TODO(2.0.0) currently this check is not needed, as checking for sufficient number of responses and - // filtering for successes is already done in the action. Consider adding back in based on the - // result of https://github.com/celo-org/celo-monorepo/issues/9826 - // if (signerResponses.length < threshold) { - // throw new Error('Insufficient number of successful signer responses') - // } + // TODO(2.0.0) currently this check is not needed, as checking for sufficient number of responses and + // filtering for successes is already done in the action. Consider adding back in based on the + // result of https://github.com/celo-org/celo-monorepo/issues/9826 + // if (signerResponses.length < threshold) { + // throw new Error('Insufficient number of successful signer responses') + // } - const thresholdSigner = sortedResponses[threshold - 1] - return { - performedQueryCount: thresholdSigner.performedQueryCount, - totalQuota: thresholdSigner.totalQuota, - blockNumber: thresholdSigner.blockNumber, - } + const thresholdSigner = sortedResponses[threshold - 1] + return { + performedQueryCount: thresholdSigner.performedQueryCount, + totalQuota: thresholdSigner.totalQuota, } } diff --git a/packages/phone-number-privacy/combiner/src/server.ts b/packages/phone-number-privacy/combiner/src/server.ts index e5360d9eaea..cfb5a24eeed 100644 --- a/packages/phone-number-privacy/combiner/src/server.ts +++ b/packages/phone-number-privacy/combiner/src/server.ts @@ -1,30 +1,26 @@ import { ContractKit } from '@celo/contractkit' import { CombinerEndpoint, - Endpoint, - ErrorMessage, KEY_VERSION_HEADER, loggerMiddleware, + newContractKitFetcher, + OdisRequest, rootLogger, } from '@celo/phone-number-privacy-common' -import Logger from 'bunyan' -import express, { Request, RequestHandler, Response } from 'express' -// tslint:disable-next-line: ordered-imports -import { PerformanceObserver, performance } from 'perf_hooks' -import { Controller } from './common/controller' +import express, { RequestHandler } from 'express' +import { Signer } from './common/combine' +import { + catchErrorHandler, + disabledHandler, + meteringHandler, + PromiseHandler, +} from './common/handlers' import { CombinerConfig, getCombinerVersion } from './config' -import { DomainDisableAction } from './domain/endpoints/disable/action' -import { DomainDisableIO } from './domain/endpoints/disable/io' -import { DomainQuotaAction } from './domain/endpoints/quota/action' -import { DomainQuotaIO } from './domain/endpoints/quota/io' -import { DomainSignAction } from './domain/endpoints/sign/action' -import { DomainSignIO } from './domain/endpoints/sign/io' -import { DomainThresholdStateService } from './domain/services/threshold-state' -import { PnpQuotaAction } from './pnp/endpoints/quota/action' -import { PnpQuotaIO } from './pnp/endpoints/quota/io' -import { PnpSignAction } from './pnp/endpoints/sign/action' -import { PnpSignIO } from './pnp/endpoints/sign/io' -import { PnpThresholdStateService } from './pnp/services/threshold-state' +import { createDisableDomainHandler } from './domain/endpoints/disable/action' +import { createDomainQuotaHandler } from './domain/endpoints/quota/action' +import { createDomainSignHandler } from './domain/endpoints/sign/action' +import { createPnpQuotaHandler } from './pnp/endpoints/quota/action' +import { createPnpSignHandler } from './pnp/endpoints/sign/action' require('events').EventEmitter.defaultMaxListeners = 15 @@ -33,6 +29,7 @@ export function startCombiner(config: CombinerConfig, kit: ContractKit) { logger.info('Creating combiner express server') const app = express() + // TODO get logger to show accurate serviceName // (https://github.com/celo-org/celo-monorepo/issues/9809) app.use(express.json({ limit: '0.2mb' }) as RequestHandler, loggerMiddleware(config.serviceName)) @@ -58,136 +55,35 @@ export function startCombiner(config: CombinerConfig, kit: ContractKit) { }) }) - const pnpThresholdStateService = new PnpThresholdStateService() - - const pnpQuota = new Controller( - new PnpQuotaAction( - config.phoneNumberPrivacy, - pnpThresholdStateService, - new PnpQuotaIO(config.phoneNumberPrivacy, kit) - ) - ) - app.post(CombinerEndpoint.PNP_QUOTA, (req, res) => - meterResponse(pnpQuota.handle.bind(pnpQuota), req, res, CombinerEndpoint.PNP_QUOTA, config) + const dekFetcher = newContractKitFetcher( + kit, + logger, + config.phoneNumberPrivacy.fullNodeTimeoutMs, + config.phoneNumberPrivacy.fullNodeRetryCount, + config.phoneNumberPrivacy.fullNodeRetryDelayMs ) - const pnpSign = new Controller( - new PnpSignAction( - config.phoneNumberPrivacy, - pnpThresholdStateService, - new PnpSignIO(config.phoneNumberPrivacy, kit) - ) - ) - app.post(CombinerEndpoint.PNP_SIGN, (req, res) => - meterResponse(pnpSign.handle.bind(pnpSign), req, res, CombinerEndpoint.PNP_SIGN, config) - ) + const pnpSigners: Signer[] = JSON.parse(config.phoneNumberPrivacy.odisServices.signers) + const pnpQuota = createPnpQuotaHandler(pnpSigners, config.phoneNumberPrivacy, dekFetcher) + const pnpSign = createPnpSignHandler(pnpSigners, config.phoneNumberPrivacy, dekFetcher) - const domainThresholdStateService = new DomainThresholdStateService(config.domains) + const domainSigners: Signer[] = JSON.parse(config.domains.odisServices.signers) + const domainQuota = createDomainQuotaHandler(domainSigners, config.domains) + const domainSign = createDomainSignHandler(domainSigners, config.domains) + const domainDisable = createDisableDomainHandler(domainSigners, config.domains) - const domainQuota = new Controller( - new DomainQuotaAction( - config.domains, - domainThresholdStateService, - new DomainQuotaIO(config.domains) - ) - ) - app.post(CombinerEndpoint.DOMAIN_QUOTA_STATUS, (req, res) => - meterResponse( - domainQuota.handle.bind(domainQuota), - req, - res, - CombinerEndpoint.DOMAIN_QUOTA_STATUS, - config - ) - ) - const domainSign = new Controller( - new DomainSignAction( - config.domains, - domainThresholdStateService, - new DomainSignIO(config.domains) - ) - ) - app.post(CombinerEndpoint.DOMAIN_SIGN, (req, res) => - meterResponse( - domainSign.handle.bind(domainSign), - req, - res, - CombinerEndpoint.DOMAIN_SIGN, - config - ) - ) - const domainDisable = new Controller( - new DomainDisableAction( - config.domains, - domainThresholdStateService, - new DomainDisableIO(config.domains) - ) - ) - app.post(CombinerEndpoint.DISABLE_DOMAIN, (req, res) => - meterResponse( - domainDisable.handle.bind(domainDisable), - req, - res, - CombinerEndpoint.DISABLE_DOMAIN, - config - ) - ) + app.post(CombinerEndpoint.PNP_QUOTA, createHandler(config.phoneNumberPrivacy.enabled, pnpQuota)) + app.post(CombinerEndpoint.PNP_SIGN, createHandler(config.phoneNumberPrivacy.enabled, pnpSign)) + app.post(CombinerEndpoint.DOMAIN_QUOTA_STATUS, createHandler(config.domains.enabled, domainQuota)) + app.post(CombinerEndpoint.DOMAIN_SIGN, createHandler(config.domains.enabled, domainSign)) + app.post(CombinerEndpoint.DISABLE_DOMAIN, createHandler(config.domains.enabled, domainDisable)) return app } -export async function meterResponse( - handler: (req: Request, res: Response) => Promise, - req: Request, - res: Response, - endpoint: Endpoint, - config: CombinerConfig -) { - if (!res.locals) { - res.locals = {} - } - const logger: Logger = loggerMiddleware(config.serviceName)(req, res) - logger.fields.endpoint = endpoint - logger.info({ req: req.body }, 'Request received') - const eventLoopLagMeasurementStart = Date.now() - setTimeout(() => { - const eventLoopLag = Date.now() - eventLoopLagMeasurementStart - logger.info({ eventLoopLag }, 'Measure event loop lag') - }) - const startMark = `Begin ${endpoint}` - const endMark = `End ${endpoint}` - const entryName = `${endpoint} latency` - - const obs = new PerformanceObserver((list) => { - const entry = list.getEntriesByName(entryName)[0] - if (entry) { - logger.info({ latency: entry }, 'e2e response latency measured') - } - }) - obs.observe({ entryTypes: ['measure'], buffered: false }) - - performance.mark(startMark) - await handler(req, res) - .then(() => { - logger.info({ res }, 'Response sent') - }) - .catch((err) => { - logger.error(ErrorMessage.CAUGHT_ERROR_IN_ENDPOINT_HANDLER) - logger.error(err) - if (!res.headersSent) { - logger.info('Responding with error in outer endpoint handler') - res.status(500).json({ - success: false, - error: ErrorMessage.UNKNOWN_ERROR, - }) - } else { - logger.error(ErrorMessage.ERROR_AFTER_RESPONSE_SENT) - } - }) - .finally(() => { - performance.mark(endMark) - performance.measure(entryName, startMark, endMark) - performance.clearMarks() - obs.disconnect() - }) +export function createHandler( + enabled: boolean, + handler: PromiseHandler +): PromiseHandler { + return meteringHandler(catchErrorHandler(enabled ? handler : disabledHandler)) } diff --git a/packages/phone-number-privacy/combiner/src/tracing.ts b/packages/phone-number-privacy/combiner/src/tracing.ts new file mode 100644 index 00000000000..a9290366b53 --- /dev/null +++ b/packages/phone-number-privacy/combiner/src/tracing.ts @@ -0,0 +1,49 @@ +import { JaegerExporter } from '@opentelemetry/exporter-jaeger' +import { registerInstrumentations } from '@opentelemetry/instrumentation' +import { Resource } from '@opentelemetry/resources' +import { BatchSpanProcessor } from '@opentelemetry/sdk-trace-base' +import { NodeTracerProvider } from '@opentelemetry/sdk-trace-node' +import { SemanticResourceAttributes } from '@opentelemetry/semantic-conventions' + +import { getNodeAutoInstrumentations } from '@opentelemetry/auto-instrumentations-node' + +const options = { + tags: [], + endpoint: process.env.TRACER_ENDPOINT, +} + +// Optionally register instrumentation libraries +registerInstrumentations({ + instrumentations: [ + getNodeAutoInstrumentations({ + '@opentelemetry/instrumentation-http': { + startIncomingSpanHook: (req) => { + delete req.headers.traceparent + delete req.headers[`x-cloud-trace-context`] + delete req.headers[`grpc-trace-bin`] + + return {} + }, + }, + '@opentelemetry/instrumentation-fs': { + enabled: false, + }, + }), + ], +}) + +const resource = Resource.default().merge( + new Resource({ + [SemanticResourceAttributes.SERVICE_NAME]: process.env.TRACING_SERVICE_NAME, + [SemanticResourceAttributes.SERVICE_VERSION]: '0.1.0', + }) +) + +const provider = new NodeTracerProvider({ + resource, +}) +const exporter = new JaegerExporter(options) +const processor = new BatchSpanProcessor(exporter) +provider.addSpanProcessor(processor) + +provider.register() diff --git a/packages/phone-number-privacy/combiner/test/end-to-end/pnp.test.ts b/packages/phone-number-privacy/combiner/test/end-to-end/pnp.test.ts index 3efa088bb66..4a315aacf20 100644 --- a/packages/phone-number-privacy/combiner/test/end-to-end/pnp.test.ts +++ b/packages/phone-number-privacy/combiner/test/end-to-end/pnp.test.ts @@ -36,6 +36,8 @@ const fullNodeUrl = process.env.ODIS_BLOCKCHAIN_PROVIDER const expectedVersion = getCombinerVersion() +// TODO fix combiner e2e tests + describe(`Running against service deployed at ${combinerUrl} w/ blockchain provider ${fullNodeUrl}`, () => { it('Service is deployed at correct version', async () => { const response = await fetch(combinerUrl + CombinerEndpoint.STATUS, { @@ -58,7 +60,6 @@ describe(`Running against service deployed at ${combinerUrl} w/ blockchain provi performedQueryCount: res.performedQueryCount, totalQuota: res.totalQuota, remainingQuota: res.totalQuota - res.performedQueryCount, - blockNumber: res.blockNumber, warnings: [], }) }) @@ -74,7 +75,6 @@ describe(`Running against service deployed at ${combinerUrl} w/ blockchain provi performedQueryCount: res.performedQueryCount, totalQuota: res.totalQuota, remainingQuota: res.totalQuota - res.performedQueryCount, - blockNumber: res.blockNumber, warnings: [], }) }) @@ -90,7 +90,6 @@ describe(`Running against service deployed at ${combinerUrl} w/ blockchain provi performedQueryCount: res1.performedQueryCount, totalQuota: res1.totalQuota, remainingQuota: res1.totalQuota - res1.performedQueryCount, - blockNumber: res1.blockNumber, warnings: [], } expect(res1).toStrictEqual(expectedRes) @@ -99,7 +98,6 @@ describe(`Running against service deployed at ${combinerUrl} w/ blockchain provi dekAuthSigner(0), SERVICE_CONTEXT ) - expectedRes.blockNumber = res2.blockNumber expect(res2).toStrictEqual(expectedRes) }) @@ -198,7 +196,6 @@ describe(`Running against service deployed at ${combinerUrl} w/ blockchain provi performedQueryCount: startingPerformedQueryCount + 1, totalQuota: startingTotalQuota, remainingQuota: startingTotalQuota - (startingPerformedQueryCount + 1), - blockNumber: quotaRes.blockNumber, warnings: [], }) }) @@ -222,7 +219,6 @@ describe(`Running against service deployed at ${combinerUrl} w/ blockchain provi performedQueryCount: startingPerformedQueryCount + 1, totalQuota: startingTotalQuota, remainingQuota: startingTotalQuota - (startingPerformedQueryCount + 1), - blockNumber: quotaRes.blockNumber, warnings: [], }) }) diff --git a/packages/phone-number-privacy/combiner/test/end-to-end/tmpBackwardsCompatibility.test.ts b/packages/phone-number-privacy/combiner/test/end-to-end/tmpBackwardsCompatibility.test.ts deleted file mode 100644 index bccf01dfc02..00000000000 --- a/packages/phone-number-privacy/combiner/test/end-to-end/tmpBackwardsCompatibility.test.ts +++ /dev/null @@ -1,59 +0,0 @@ -import { newKit } from '@celo/contractkit' -import { OdisUtils } from '@celo/identity-prev' -import { getServiceContext } from '@celo/identity-prev/lib/odis/query' -import { ErrorMessages } from '@celo/identity/lib/odis/query' -import { ensureLeading0x } from '@celo/utils/lib/address' -import 'isomorphic-fetch' -import { - ACCOUNT_ADDRESS, - ACCOUNT_ADDRESS_NO_QUOTA, - DEFAULT_FORNO_URL, - dekAuthSigner, - deks, - getTestContextName, - PHONE_NUMBER, - PRIVATE_KEY, - PRIVATE_KEY_NO_QUOTA, -} from './resources' - -require('dotenv').config() - -jest.setTimeout(60000) - -const contractKit = newKit(DEFAULT_FORNO_URL) -contractKit.addAccount(PRIVATE_KEY_NO_QUOTA) -contractKit.addAccount(PRIVATE_KEY) -contractKit.defaultAccount = ACCOUNT_ADDRESS - -const SERVICE_CONTEXT = getServiceContext(getTestContextName()) - -const fullNodeUrl = process.env.ODIS_BLOCKCHAIN_PROVIDER - -describe(`Running against service deployed at ${SERVICE_CONTEXT.odisUrl} w/ blockchain provider ${fullNodeUrl}`, () => { - beforeAll(async () => { - const dek0 = ensureLeading0x(deks[0].publicKey) - const accountsWrapper = await contractKit.contracts.getAccounts() - if ((await accountsWrapper.getDataEncryptionKey(ACCOUNT_ADDRESS)) !== dek0) { - await accountsWrapper - .setAccountDataEncryptionKey(dek0) - .sendAndWaitForReceipt({ from: ACCOUNT_ADDRESS }) - } - if ((await accountsWrapper.getDataEncryptionKey(ACCOUNT_ADDRESS_NO_QUOTA)) !== dek0) { - await accountsWrapper - .setAccountDataEncryptionKey(dek0) - .sendAndWaitForReceipt({ from: ACCOUNT_ADDRESS_NO_QUOTA }) - } - }) - describe('Returns ODIS_QUOTA_ERROR', () => { - it('When querying out of quota', async () => { - await expect( - OdisUtils.PhoneNumberIdentifier.getPhoneNumberIdentifier( - PHONE_NUMBER, - ACCOUNT_ADDRESS_NO_QUOTA, - dekAuthSigner(0), - SERVICE_CONTEXT - ) - ).rejects.toThrow(ErrorMessages.ODIS_QUOTA_ERROR) - }) - }) -}) diff --git a/packages/phone-number-privacy/combiner/test/integration/domain.test.ts b/packages/phone-number-privacy/combiner/test/integration/domain.test.ts index d58a4aeade1..c997f5b5eea 100644 --- a/packages/phone-number-privacy/combiner/test/integration/domain.test.ts +++ b/packages/phone-number-privacy/combiner/test/integration/domain.test.ts @@ -16,7 +16,7 @@ import { ErrorMessage, FULL_NODE_TIMEOUT_IN_MS, genSessionID, - getContractKit, + getContractKitWithAgent, KEY_VERSION_HEADER, PoprfClient, RETRY_COUNT, @@ -26,12 +26,9 @@ import { TestUtils, WarningMessage, } from '@celo/phone-number-privacy-common' -import { - initDatabase as initSignerDatabase, - startSigner, - SupportedDatabase, - SupportedKeystore, -} from '@celo/phone-number-privacy-signer' +import { initDatabase as initSignerDatabase } from '@celo/phone-number-privacy-signer/dist/common/database/database' +import { startSigner } from '@celo/phone-number-privacy-signer/dist/server' +import { SupportedDatabase, SupportedKeystore } from '@celo/phone-number-privacy-signer/dist/config' import { DefaultKeyName, KeyProvider, @@ -42,11 +39,12 @@ import { LocalWallet } from '@celo/wallet-local' import BigNumber from 'bignumber.js' import { Server as HttpsServer } from 'https' import { Knex } from 'knex' -import { Server } from 'net' +import { Server } from 'http' import request from 'supertest' import { MockKeyProvider } from '../../../signer/dist/common/key-management/mock-key-provider' import config from '../../src/config' import { startCombiner } from '../../src/server' +import { serverClose } from '../utils' const { DOMAINS_THRESHOLD_DEV_PK_SHARE_1_V1, @@ -90,12 +88,8 @@ const signerConfig: SignerConfig = { }, phoneNumberPrivacy: { enabled: false, - shouldFailOpen: false, }, }, - attestations: { - numberAttestationsRequired: 3, - }, blockchain: { provider: 'https://alfajores-forno.celo-testnet.org', apiKey: undefined, @@ -142,6 +136,14 @@ const signerConfig: SignerConfig = { fullNodeTimeoutMs: FULL_NODE_TIMEOUT_IN_MS, fullNodeRetryCount: RETRY_COUNT, fullNodeRetryDelayMs: RETRY_DELAY_IN_MS, + // TODO (alec) make SignerConfig better + shouldMockAccountService: false, + mockDek: '', + mockTotalQuota: 0, + shouldMockRequestService: false, + requestPrunningDays: 0, + requestPrunningAtServerStart: false, + requestPrunningJobCronPattern: '0 0 * * * *', } describe('domainService', () => { @@ -270,7 +272,7 @@ describe('domainService', () => { ]) ) - app = startCombiner(combinerConfig, getContractKit(combinerConfig.blockchain)) + app = startCombiner(combinerConfig, getContractKitWithAgent(combinerConfig.blockchain)) }) beforeEach(async () => { @@ -283,9 +285,9 @@ describe('domainService', () => { await signerDB1?.destroy() await signerDB2?.destroy() await signerDB3?.destroy() - signer1?.close() - signer2?.close() - signer3?.close() + await serverClose(signer1) + await serverClose(signer2) + await serverClose(signer3) }) describe('when signers are operating correctly', () => { @@ -418,7 +420,7 @@ describe('domainService', () => { configWithApiDisabled.domains.enabled = false const appWithApiDisabled = startCombiner( configWithApiDisabled, - getContractKit(configWithApiDisabled.blockchain) + getContractKitWithAgent(configWithApiDisabled.blockchain) ) const req = await disableRequest() @@ -567,7 +569,7 @@ describe('domainService', () => { configWithApiDisabled.domains.enabled = false const appWithApiDisabled = startCombiner( configWithApiDisabled, - getContractKit(configWithApiDisabled.blockchain) + getContractKitWithAgent(configWithApiDisabled.blockchain) ) const req = await quotaRequest() @@ -897,7 +899,7 @@ describe('domainService', () => { configWithApiDisabled.domains.enabled = false const appWithApiDisabled = startCombiner( configWithApiDisabled, - getContractKit(configWithApiDisabled.blockchain) + getContractKitWithAgent(configWithApiDisabled.blockchain) ) const [req, _] = await signatureRequest() @@ -1218,7 +1220,10 @@ describe('domainService', () => { ], ]) ) - app = startCombiner(combinerConfigLargerN, getContractKit(combinerConfigLargerN.blockchain)) + app = startCombiner( + combinerConfigLargerN, + getContractKitWithAgent(combinerConfigLargerN.blockchain) + ) }) beforeEach(async () => { @@ -1241,11 +1246,11 @@ describe('domainService', () => { await signerDB3?.destroy() await signerDB4?.destroy() await signerDB5?.destroy() - signer1?.close() - signer2?.close() - signer3?.close() - signer4?.close() - signer5?.close() + await serverClose(signer1) + await serverClose(signer2) + await serverClose(signer3) + await serverClose(signer4) + await serverClose(signer5) }) it('Should respond with 200 on valid request', async () => { diff --git a/packages/phone-number-privacy/combiner/test/integration/pnp.test.ts b/packages/phone-number-privacy/combiner/test/integration/pnp.test.ts index 473938ab77c..29bd022ffbe 100644 --- a/packages/phone-number-privacy/combiner/test/integration/pnp.test.ts +++ b/packages/phone-number-privacy/combiner/test/integration/pnp.test.ts @@ -19,34 +19,33 @@ import { TestUtils, WarningMessage, } from '@celo/phone-number-privacy-common' -import { - initDatabase as initSignerDatabase, - startSigner, - SupportedDatabase, - SupportedKeystore, -} from '@celo/phone-number-privacy-signer' +import { initDatabase as initSignerDatabase } from '@celo/phone-number-privacy-signer/dist/common/database/database' import { DefaultKeyName, KeyProvider, } from '@celo/phone-number-privacy-signer/dist/common/key-management/key-provider-base' import { MockKeyProvider } from '@celo/phone-number-privacy-signer/dist/common/key-management/mock-key-provider' -import { SignerConfig } from '@celo/phone-number-privacy-signer/dist/config' +import { + SignerConfig, + SupportedDatabase, + SupportedKeystore, +} from '@celo/phone-number-privacy-signer/dist/config' +import { startSigner } from '@celo/phone-number-privacy-signer/dist/server' import BigNumber from 'bignumber.js' import threshold_bls from 'blind-threshold-bls' +import { Server } from 'http' import { Server as HttpsServer } from 'https' import { Knex } from 'knex' -import { Server } from 'net' import request from 'supertest' import config, { getCombinerVersion } from '../../src/config' import { startCombiner } from '../../src/server' -import { getBlindedPhoneNumber } from '../utils' +import { getBlindedPhoneNumber, serverClose } from '../utils' const { ContractRetrieval, createMockContractKit, createMockAccounts, createMockOdisPayments, - createMockWeb3, getPnpRequestAuthorization, } = TestUtils.Utils const { @@ -100,12 +99,8 @@ const signerConfig: SignerConfig = { }, phoneNumberPrivacy: { enabled: true, - shouldFailOpen: true, }, }, - attestations: { - numberAttestationsRequired: 3, - }, blockchain: { provider: 'https://alfajores-forno.celo-testnet.org', apiKey: undefined, @@ -152,24 +147,27 @@ const signerConfig: SignerConfig = { fullNodeTimeoutMs: FULL_NODE_TIMEOUT_IN_MS, fullNodeRetryCount: RETRY_COUNT, fullNodeRetryDelayMs: RETRY_DELAY_IN_MS, + // TODO (alec) make SignerConfig better + shouldMockAccountService: false, + mockDek: '', + mockTotalQuota: 0, + shouldMockRequestService: false, + requestPrunningDays: 0, + requestPrunningAtServerStart: false, + requestPrunningJobCronPattern: '0 0 0 * * *', } -const testBlockNumber = 1000000 - const mockOdisPaymentsTotalPaidCUSD = jest.fn() const mockGetWalletAddress = jest.fn() const mockGetDataEncryptionKey = jest.fn() -const mockContractKit = createMockContractKit( - { - [ContractRetrieval.getAccounts]: createMockAccounts( - mockGetWalletAddress, - mockGetDataEncryptionKey - ), - [ContractRetrieval.getOdisPayments]: createMockOdisPayments(mockOdisPaymentsTotalPaidCUSD), - }, - createMockWeb3(5, testBlockNumber) -) +const mockContractKit = createMockContractKit({ + [ContractRetrieval.getAccounts]: createMockAccounts( + mockGetWalletAddress, + mockGetDataEncryptionKey + ), + [ContractRetrieval.getOdisPayments]: createMockOdisPayments(mockOdisPaymentsTotalPaidCUSD), +}) // Mock newKit as opposed to the CK constructor // Returns an object of type ContractKit that can be passed into the signers + combiner @@ -318,9 +316,9 @@ describe('pnpService', () => { await signerDB1?.destroy() await signerDB2?.destroy() await signerDB3?.destroy() - signer1?.close() - signer2?.close() - signer3?.close() + await serverClose(signer1) + await serverClose(signer2) + await serverClose(signer3) }) describe('when signers are operating correctly', () => { @@ -382,7 +380,7 @@ describe('pnpService', () => { version: expectedVersion, performedQueryCount: expectedQueryCount, totalQuota, - blockNumber: testBlockNumber, + warnings: expectedWarnings, }) }) @@ -400,7 +398,7 @@ describe('pnpService', () => { version: expectedVersion, performedQueryCount: 0, totalQuota, - blockNumber: testBlockNumber, + warnings: [], }) }) @@ -417,7 +415,7 @@ describe('pnpService', () => { version: expectedVersion, performedQueryCount: 0, totalQuota, - blockNumber: testBlockNumber, + warnings: [], }) const res2 = await getCombinerQuotaResponse(req, authorization) @@ -439,7 +437,7 @@ describe('pnpService', () => { version: expectedVersion, performedQueryCount: 0, totalQuota, - blockNumber: testBlockNumber, + warnings: [], }) }) @@ -458,7 +456,7 @@ describe('pnpService', () => { version: expectedVersion, performedQueryCount: 0, totalQuota, - blockNumber: testBlockNumber, + warnings: [], }) }) @@ -478,7 +476,7 @@ describe('pnpService', () => { version: expectedVersion, performedQueryCount: 0, totalQuota, - blockNumber: testBlockNumber, + warnings: [ WarningMessage.SIGNER_RESPONSE_DISCREPANCIES, WarningMessage.INCONSISTENT_SIGNER_QUOTA_MEASUREMENTS + @@ -567,8 +565,8 @@ describe('pnpService', () => { it('Should respond with 500 when insufficient signer responses', async () => { await signerDB1?.destroy() await signerDB2?.destroy() - signer1?.close() - signer2?.close() + await serverClose(signer1) + await serverClose(signer2) const req = { account: ACCOUNT_ADDRESS1, @@ -605,40 +603,6 @@ describe('pnpService', () => { error: WarningMessage.API_UNAVAILABLE, }) }) - - describe('functionality in case of errors', () => { - it('Should respond with 200 on failure to fetch DEK when shouldFailOpen is true', async () => { - mockGetDataEncryptionKey.mockReset().mockImplementation(() => { - throw new Error() - }) - - const req = { - account: ACCOUNT_ADDRESS1, - authenticationMethod: AuthenticationMethod.ENCRYPTION_KEY, - } - - // NOT the dek private key, so authentication would fail if getDataEncryptionKey succeeded - const differentPk = '0x00000000000000000000000000000000000000000000000000000000ddddbbbb' - const authorization = getPnpRequestAuthorization(req, differentPk) - - const combinerConfigWithFailOpenEnabled: typeof combinerConfig = JSON.parse( - JSON.stringify(combinerConfig) - ) - combinerConfigWithFailOpenEnabled.phoneNumberPrivacy.shouldFailOpen = true - const appWithFailOpenEnabled = startCombiner(combinerConfigWithFailOpenEnabled, mockKit) - const res = await getCombinerQuotaResponse(req, authorization, appWithFailOpenEnabled) - - expect(res.status).toBe(200) - expect(res.body).toStrictEqual({ - success: true, - version: expectedVersion, - performedQueryCount: 0, - totalQuota, - blockNumber: testBlockNumber, - warnings: [], - }) - }) - }) }) describe(`${CombinerEndpoint.PNP_SIGN}`, () => { @@ -660,7 +624,7 @@ describe('pnpService', () => { signature: expectedSignature, performedQueryCount: 1, totalQuota: expectedTotalQuota, - blockNumber: testBlockNumber, + warnings: [], }) const unblindedSig = threshold_bls.unblind( @@ -683,7 +647,7 @@ describe('pnpService', () => { signature: expectedSignatures[i - 1], performedQueryCount: 1, totalQuota: expectedTotalQuota, - blockNumber: testBlockNumber, + warnings: [], }) @@ -707,7 +671,7 @@ describe('pnpService', () => { signature: expectedSignature, performedQueryCount: 1, totalQuota: expectedTotalQuota, - blockNumber: testBlockNumber, + warnings: [], } @@ -729,7 +693,7 @@ describe('pnpService', () => { signature: expectedSignature, performedQueryCount: 1, totalQuota: expectedTotalQuota, - blockNumber: testBlockNumber, + warnings: [], } @@ -764,7 +728,7 @@ describe('pnpService', () => { signature: expectedSignature, performedQueryCount: 1, totalQuota: expectedTotalQuota, - blockNumber: testBlockNumber, + warnings: [], }) }) @@ -781,7 +745,7 @@ describe('pnpService', () => { signature: expectedSignature, performedQueryCount: 1, totalQuota: expectedTotalQuota, - blockNumber: testBlockNumber, + warnings: [], }) }) @@ -798,7 +762,7 @@ describe('pnpService', () => { signature: expectedSignature, performedQueryCount: 1, totalQuota: expectedTotalQuota, - blockNumber: testBlockNumber, + warnings: [], }) }) @@ -814,7 +778,7 @@ describe('pnpService', () => { signature: expectedSignature, performedQueryCount: 1, totalQuota: expectedTotalQuota, - blockNumber: testBlockNumber, + warnings: [], }) @@ -928,41 +892,7 @@ describe('pnpService', () => { }) describe('functionality in case of errors', () => { - it('Should return 200 on failure to fetch DEK when shouldFailOpen is true', async () => { - mockGetDataEncryptionKey.mockImplementation(() => { - throw new Error() - }) - - req.authenticationMethod = AuthenticationMethod.ENCRYPTION_KEY - // NOT the dek private key, so authentication would fail if getDataEncryptionKey succeeded - const differentPk = '0x00000000000000000000000000000000000000000000000000000000ddddbbbb' - const authorization = getPnpRequestAuthorization(req, differentPk) - - const combinerConfigWithFailOpenEnabled: typeof combinerConfig = JSON.parse( - JSON.stringify(combinerConfig) - ) - combinerConfigWithFailOpenEnabled.phoneNumberPrivacy.shouldFailOpen = true - const appWithFailOpenEnabled = startCombiner(combinerConfigWithFailOpenEnabled, mockKit) - const res = await sendPnpSignRequest(req, authorization, appWithFailOpenEnabled) - - expect(res.status).toBe(200) - expect(res.body).toStrictEqual({ - success: true, - version: expectedVersion, - signature: expectedSignature, - performedQueryCount: 1, - totalQuota: expectedTotalQuota, - blockNumber: testBlockNumber, - warnings: [], - }) - const unblindedSig = threshold_bls.unblind( - Buffer.from(res.body.signature, 'base64'), - blindedMsgResult.blindingFactor - ) - expect(Buffer.from(unblindedSig).toString('base64')).toEqual(expectedUnblindedSig) - }) - - it('Should return 401 on failure to fetch DEK when shouldFailOpen is false', async () => { + it('Should return 401 on failure to fetch DEK', async () => { mockGetDataEncryptionKey.mockImplementation(() => { throw new Error() }) @@ -973,7 +903,6 @@ describe('pnpService', () => { const combinerConfigWithFailOpenDisabled: typeof combinerConfig = JSON.parse( JSON.stringify(combinerConfig) ) - combinerConfigWithFailOpenDisabled.phoneNumberPrivacy.shouldFailOpen = false const appWithFailOpenDisabled = startCombiner( combinerConfigWithFailOpenDisabled, mockKit @@ -1023,7 +952,7 @@ describe('pnpService', () => { signature: expectedSignature, performedQueryCount: 1, totalQuota: expectedTotalQuota, - blockNumber: testBlockNumber, + warnings: [], }) const unblindedSig = threshold_bls.unblind( @@ -1140,7 +1069,7 @@ describe('pnpService', () => { version: expectedVersion, performedQueryCount: 0, totalQuota: expectedTotalQuota, - blockNumber: testBlockNumber, + warnings: [], }) }) @@ -1158,7 +1087,7 @@ describe('pnpService', () => { signature: expectedSignature, performedQueryCount: 1, totalQuota: expectedTotalQuota, - blockNumber: testBlockNumber, + warnings: [], }) }) @@ -1334,11 +1263,11 @@ describe('pnpService', () => { await signerDB3?.destroy() await signerDB4?.destroy() await signerDB5?.destroy() - signer1?.close() - signer2?.close() - signer3?.close() - signer4?.close() - signer5?.close() + await serverClose(signer1) + await serverClose(signer2) + await serverClose(signer3) + await serverClose(signer4) + await serverClose(signer5) }) it('Should respond with 200 on valid request', async () => { @@ -1354,7 +1283,7 @@ describe('pnpService', () => { signature: res.body.signature, performedQueryCount: 1, totalQuota: expectedTotalQuota, - blockNumber: testBlockNumber, + warnings: [], }) threshold_bls.unblind( diff --git a/packages/phone-number-privacy/combiner/test/unit/domain-response-logger.test.ts b/packages/phone-number-privacy/combiner/test/unit/domain-response-logger.test.ts index c97f661c38a..7041d1c36c3 100644 --- a/packages/phone-number-privacy/combiner/test/unit/domain-response-logger.test.ts +++ b/packages/phone-number-privacy/combiner/test/unit/domain-response-logger.test.ts @@ -1,52 +1,25 @@ import { DisableDomainRequest, DomainQuotaStatusRequest, - DomainRequest, DomainRestrictedSignatureRequest, - KeyVersionInfo, OdisResponse, rootLogger, WarningMessage, } from '@celo/phone-number-privacy-common' import { getSignerVersion } from '@celo/phone-number-privacy-signer/src/config' -import { Request, Response } from 'express' -import { Session } from '../../src/common/session' + import config from '../../src/config' -import { DomainSignerResponseLogger } from '../../src/domain/services/log-responses' +import { logDomainResponseDiscrepancies } from '../../src/domain/services/log-responses' describe('domain response logger', () => { const url = 'test signer url' - const keyVersionInfo: KeyVersionInfo = { - keyVersion: 1, - threshold: 3, - polynomial: 'mock polynomial', - pubKey: 'mock pubKey', - } - - const getSession = (responses: OdisResponse[]) => { - const mockRequest = { - body: {}, - } as Request - - // @ts-ignore: missing some properties - const mockResponse = { - locals: { - logger: rootLogger(config.serviceName), - }, - } as Response - const session = new Session(mockRequest, mockResponse, keyVersionInfo) - responses.forEach((res) => { - session.responses.push({ url, res, status: 200 }) - }) - return session - } + const logger = rootLogger(config.serviceName) const version = getSignerVersion() const counter = 1 const disabled = false const timer = 10000 - const domainResponseLogger = new DomainSignerResponseLogger() const testCases: { it: string @@ -317,26 +290,28 @@ describe('domain response logger', () => { ] testCases.forEach((testCase) => { it(testCase.it, () => { - const session = getSession(testCase.responses) const logSpys = { info: { - spy: jest.spyOn(session.logger, 'info'), + spy: jest.spyOn(logger, 'info'), callCount: 0, }, debug: { - spy: jest.spyOn(session.logger, 'debug'), + spy: jest.spyOn(logger, 'debug'), callCount: 0, }, warn: { - spy: jest.spyOn(session.logger, 'warn'), + spy: jest.spyOn(logger, 'warn'), callCount: 0, }, error: { - spy: jest.spyOn(session.logger, 'error'), + spy: jest.spyOn(logger, 'error'), callCount: 0, }, } - domainResponseLogger.logResponseDiscrepancies(session) + logDomainResponseDiscrepancies( + logger, + testCase.responses.map((res) => ({ url, res })) + ) testCase.expectedLogs.forEach((log) => { expect(logSpys[log.level].spy).toHaveBeenNthCalledWith( ++logSpys[log.level].callCount, diff --git a/packages/phone-number-privacy/combiner/test/unit/domain-threshold-state.test.ts b/packages/phone-number-privacy/combiner/test/unit/domain-threshold-state.test.ts index 9deec258d61..c66c4d478fb 100644 --- a/packages/phone-number-privacy/combiner/test/unit/domain-threshold-state.test.ts +++ b/packages/phone-number-privacy/combiner/test/unit/domain-threshold-state.test.ts @@ -2,14 +2,9 @@ import { DomainQuotaStatusResponseSuccess, DomainRestrictedSignatureResponseSuccess, KeyVersionInfo, - SequentialDelayDomainState, } from '@celo/phone-number-privacy-common' import { getSignerVersion } from '@celo/phone-number-privacy-signer/src/config' -import Logger from 'bunyan' -import { Request, Response } from 'express' -import { Session } from '../../src/common/session' -import config from '../../src/config' -import { DomainThresholdStateService } from '../../src/domain/services/threshold-state' +import { findThresholdDomainState } from '../../src/domain/services/threshold-state' describe('domain threshold state', () => { // TODO add tests with failed signer responses, depending on @@ -22,40 +17,7 @@ describe('domain threshold state', () => { pubKey: 'mock pubKey', } - const getSession = (domainStates: SequentialDelayDomainState[]) => { - const mockRequest = { - body: {}, - } as Request - - // @ts-ignore: missing some properties - const mockResponse = { - locals: { - logger: new Logger({ name: 'logger' }), - }, - } as Response - const session = new Session(mockRequest, mockResponse, keyVersionInfo) - domainStates.forEach((status) => { - const res: DomainRestrictedSignatureResponseSuccess | DomainQuotaStatusResponseSuccess = { - success: true, - version: expectedVersion, - status, - } - session.responses.push({ url: 'random url', res, status: 200 }) - }) - return session - } - - const domainConfig = config.domains - domainConfig.keys.currentVersion = keyVersionInfo.keyVersion - domainConfig.keys.versions = JSON.stringify([keyVersionInfo]) - domainConfig.odisServices.signers = JSON.stringify([ - { url: 'http://localhost:3001', fallbackUrl: 'http://localhost:3001/fallback' }, - { url: 'http://localhost:3002', fallbackUrl: 'http://localhost:3002/fallback' }, - { url: 'http://localhost:3003', fallbackUrl: 'http://localhost:3003/fallback' }, - { url: 'http://localhost:4004', fallbackUrl: 'http://localhost:4004/fallback' }, - ]) - - const domainThresholdStateService = new DomainThresholdStateService(domainConfig) + const totalSigners = 4 const expectedVersion = getSignerVersion() const now = Date.now() @@ -137,8 +99,15 @@ describe('domain threshold state', () => { varyingDomainStates.forEach(({ statuses, expectedCounter, expectedTimer }) => { it(`should return counter:${expectedCounter} and timer:${expectedTimer} given the domain states: ${statuses}`, () => { - const session = getSession(statuses) - const thresholdResult = domainThresholdStateService.findThresholdDomainState(session) + const responses = statuses.map((status) => { + const res: DomainRestrictedSignatureResponseSuccess | DomainQuotaStatusResponseSuccess = { + success: true, + version: expectedVersion, + status, + } + return { url: 'random url', res, status: 200 } + }) + const thresholdResult = findThresholdDomainState(keyVersionInfo, responses, totalSigners) expect(thresholdResult).toStrictEqual({ timer: expectedTimer, @@ -156,8 +125,16 @@ describe('domain threshold state', () => { { timer, counter: 2, disabled: false, now }, { timer, counter: 2, disabled: false, now }, ] - const session = getSession(statuses) - const thresholdResult = domainThresholdStateService.findThresholdDomainState(session) + + const responses = statuses.map((status) => { + const res: DomainRestrictedSignatureResponseSuccess | DomainQuotaStatusResponseSuccess = { + success: true, + version: expectedVersion, + status, + } + return { url: 'random url', res, status: 200 } + }) + const thresholdResult = findThresholdDomainState(keyVersionInfo, responses, totalSigners) expect(thresholdResult).toStrictEqual({ timer: 0, counter: 0, disabled: true, now: 0 }) }) @@ -168,9 +145,16 @@ describe('domain threshold state', () => { { timer, counter: 2, disabled: false, now }, { timer, counter: 2, disabled: false, now }, ] - const session = getSession(statuses) + const responses = statuses.map((status) => { + const res: DomainRestrictedSignatureResponseSuccess | DomainQuotaStatusResponseSuccess = { + success: true, + version: expectedVersion, + status, + } + return { url: 'random url', res, status: 200 } + }) - expect(() => domainThresholdStateService.findThresholdDomainState(session)).toThrow( + expect(() => findThresholdDomainState(keyVersionInfo, responses, totalSigners)).toThrow( 'Insufficient number of signer responses. Domain may be disabled' ) }) diff --git a/packages/phone-number-privacy/combiner/test/unit/pnp-response-logger.test.ts b/packages/phone-number-privacy/combiner/test/unit/pnp-response-logger.test.ts index 51f17c32fc4..85512f04afc 100644 --- a/packages/phone-number-privacy/combiner/test/unit/pnp-response-logger.test.ts +++ b/packages/phone-number-privacy/combiner/test/unit/pnp-response-logger.test.ts @@ -1,5 +1,4 @@ import { - ErrorMessage, KeyVersionInfo, OdisResponse, PnpQuotaRequest, @@ -8,14 +7,11 @@ import { WarningMessage, } from '@celo/phone-number-privacy-common' import { getSignerVersion } from '@celo/phone-number-privacy-signer/src/config' -import { Request, Response } from 'express' -import { Session } from '../../src/common/session' import config, { - MAX_BLOCK_DISCREPANCY_THRESHOLD, MAX_QUERY_COUNT_DISCREPANCY_THRESHOLD, MAX_TOTAL_QUOTA_DISCREPANCY_THRESHOLD, } from '../../src/config' -import { PnpSignerResponseLogger } from '../../src/pnp/services/log-responses' +import { logPnpSignerResponseDiscrepancies } from '../../src/pnp/services/log-responses' describe('pnp response logger', () => { const url = 'test signer url' @@ -27,35 +23,12 @@ describe('pnp response logger', () => { pubKey: 'mock pubKey', } - const getSession = (responses: OdisResponse[]) => { - const mockRequest = { - body: {}, - } as Request - - // @ts-ignore: missing some properties - const mockResponse = { - locals: { - logger: rootLogger(config.serviceName), - }, - } as Response - const session = new Session( - mockRequest, - mockResponse, - keyVersionInfo - ) - responses.forEach((res) => { - session.responses.push({ url, res, status: 200 }) - }) - return session - } - const pnpConfig = config.phoneNumberPrivacy pnpConfig.keys.currentVersion = keyVersionInfo.keyVersion pnpConfig.keys.versions = JSON.stringify([keyVersionInfo]) - const pnpResponseLogger = new PnpSignerResponseLogger() const version = getSignerVersion() - const blockNumber = 1000000 + const totalQuota = 10 const performedQueryCount = 5 const warnings = ['warning'] @@ -81,9 +54,9 @@ describe('pnp response logger', () => { { it: 'should log correctly when all the responses are the same', responses: [ - { success: true, performedQueryCount, totalQuota, version, blockNumber, warnings }, - { success: true, performedQueryCount, totalQuota, version, blockNumber, warnings }, - { success: true, performedQueryCount, totalQuota, version, blockNumber, warnings }, + { success: true, performedQueryCount, totalQuota, version, warnings }, + { success: true, performedQueryCount, totalQuota, version, warnings }, + { success: true, performedQueryCount, totalQuota, version, warnings }, ], expectedLogs: [], }, @@ -95,11 +68,11 @@ describe('pnp response logger', () => { performedQueryCount, totalQuota, version: 'differentVersion', - blockNumber, + warnings, }, - { success: true, performedQueryCount, totalQuota, version, blockNumber, warnings }, - { success: true, performedQueryCount, totalQuota, version, blockNumber, warnings }, + { success: true, performedQueryCount, totalQuota, version, warnings }, + { success: true, performedQueryCount, totalQuota, version, warnings }, ], expectedLogs: [ { @@ -109,7 +82,6 @@ describe('pnp response logger', () => { { signerUrl: url, values: { - blockNumber, performedQueryCount, totalQuota, version: 'differentVersion', @@ -119,7 +91,6 @@ describe('pnp response logger', () => { { signerUrl: url, values: { - blockNumber, performedQueryCount, totalQuota, version, @@ -129,7 +100,6 @@ describe('pnp response logger', () => { { signerUrl: url, values: { - blockNumber, performedQueryCount, totalQuota, version, @@ -147,9 +117,9 @@ describe('pnp response logger', () => { { it: 'should log correctly when there is a discrepency in performedQueryCount field', responses: [ - { success: true, performedQueryCount: 1, totalQuota, version, blockNumber, warnings }, - { success: true, performedQueryCount, totalQuota, version, blockNumber, warnings }, - { success: true, performedQueryCount, totalQuota, version, blockNumber, warnings }, + { success: true, performedQueryCount: 1, totalQuota, version, warnings }, + { success: true, performedQueryCount, totalQuota, version, warnings }, + { success: true, performedQueryCount, totalQuota, version, warnings }, ], expectedLogs: [ { @@ -159,7 +129,6 @@ describe('pnp response logger', () => { { signerUrl: url, values: { - blockNumber, performedQueryCount: 1, totalQuota, version, @@ -169,7 +138,6 @@ describe('pnp response logger', () => { { signerUrl: url, values: { - blockNumber, performedQueryCount, totalQuota, version, @@ -179,7 +147,6 @@ describe('pnp response logger', () => { { signerUrl: url, values: { - blockNumber, performedQueryCount, totalQuota, version, @@ -202,11 +169,11 @@ describe('pnp response logger', () => { performedQueryCount: performedQueryCount + MAX_QUERY_COUNT_DISCREPANCY_THRESHOLD, totalQuota, version, - blockNumber, + warnings, }, - { success: true, performedQueryCount, totalQuota, version, blockNumber, warnings }, - { success: true, performedQueryCount, totalQuota, version, blockNumber, warnings }, + { success: true, performedQueryCount, totalQuota, version, warnings }, + { success: true, performedQueryCount, totalQuota, version, warnings }, ], expectedLogs: [ { @@ -216,7 +183,6 @@ describe('pnp response logger', () => { { signerUrl: url, values: { - blockNumber, performedQueryCount, totalQuota, version, @@ -226,7 +192,6 @@ describe('pnp response logger', () => { { signerUrl: url, values: { - blockNumber, performedQueryCount, totalQuota, version, @@ -236,7 +201,6 @@ describe('pnp response logger', () => { { signerUrl: url, values: { - blockNumber, performedQueryCount: performedQueryCount + MAX_QUERY_COUNT_DISCREPANCY_THRESHOLD, totalQuota, @@ -257,7 +221,6 @@ describe('pnp response logger', () => { { signerUrl: url, values: { - blockNumber, performedQueryCount, totalQuota, version, @@ -267,7 +230,6 @@ describe('pnp response logger', () => { { signerUrl: url, values: { - blockNumber, performedQueryCount, totalQuota, version, @@ -277,7 +239,6 @@ describe('pnp response logger', () => { { signerUrl: url, values: { - blockNumber, performedQueryCount: performedQueryCount + MAX_QUERY_COUNT_DISCREPANCY_THRESHOLD, totalQuota, @@ -296,9 +257,9 @@ describe('pnp response logger', () => { { it: 'should log correctly when there is a discrepency in totalQuota field', responses: [ - { success: true, performedQueryCount, totalQuota, version, blockNumber, warnings }, - { success: true, performedQueryCount, totalQuota, version, blockNumber, warnings }, - { success: true, performedQueryCount, totalQuota: 1, version, blockNumber, warnings }, + { success: true, performedQueryCount, totalQuota, version, warnings }, + { success: true, performedQueryCount, totalQuota, version, warnings }, + { success: true, performedQueryCount, totalQuota: 1, version, warnings }, ], expectedLogs: [ { @@ -308,7 +269,6 @@ describe('pnp response logger', () => { { signerUrl: url, values: { - blockNumber, performedQueryCount, totalQuota: 1, version, @@ -318,7 +278,6 @@ describe('pnp response logger', () => { { signerUrl: url, values: { - blockNumber, performedQueryCount, totalQuota, version, @@ -328,7 +287,6 @@ describe('pnp response logger', () => { { signerUrl: url, values: { - blockNumber, performedQueryCount, totalQuota, version, @@ -346,14 +304,14 @@ describe('pnp response logger', () => { { it: 'should log correctly when there is a large discrepency in totalQuota field', responses: [ - { success: true, performedQueryCount, totalQuota, version, blockNumber, warnings }, - { success: true, performedQueryCount, totalQuota, version, blockNumber, warnings }, + { success: true, performedQueryCount, totalQuota, version, warnings }, + { success: true, performedQueryCount, totalQuota, version, warnings }, { success: true, performedQueryCount, totalQuota: totalQuota + MAX_TOTAL_QUOTA_DISCREPANCY_THRESHOLD, version, - blockNumber, + warnings, }, ], @@ -365,7 +323,6 @@ describe('pnp response logger', () => { { signerUrl: url, values: { - blockNumber, performedQueryCount, totalQuota, version, @@ -375,7 +332,6 @@ describe('pnp response logger', () => { { signerUrl: url, values: { - blockNumber, performedQueryCount, totalQuota, version, @@ -385,7 +341,6 @@ describe('pnp response logger', () => { { signerUrl: url, values: { - blockNumber, performedQueryCount, totalQuota: totalQuota + MAX_TOTAL_QUOTA_DISCREPANCY_THRESHOLD, version, @@ -400,135 +355,17 @@ describe('pnp response logger', () => { }, ], }, - { - it: 'should log correctly when one signer returns an undefined blockNumber', - responses: [ - { success: true, performedQueryCount, totalQuota, version, blockNumber, warnings }, - { success: true, performedQueryCount, totalQuota, version, blockNumber, warnings }, - { - success: true, - performedQueryCount, - totalQuota, - version, - blockNumber: undefined, - warnings, - }, - ], - expectedLogs: [ - { - params: [ - { - parsedResponses: [ - { - signerUrl: url, - values: { - blockNumber, - performedQueryCount, - totalQuota, - version, - warnings, - }, - }, - { - signerUrl: url, - values: { - blockNumber, - performedQueryCount, - totalQuota, - version, - warnings, - }, - }, - { - signerUrl: url, - values: { - blockNumber: undefined, - performedQueryCount, - totalQuota, - version, - warnings, - }, - }, - ], - }, - WarningMessage.SIGNER_RESPONSE_DISCREPANCIES, - ], - level: 'warn', - }, - { - params: [{ signerUrl: url }, 'Signer responded with undefined blockNumber'], - level: 'warn', - }, - ], - }, - { - it: 'should log correctly when there is a large discrepency in blockNumber field', - responses: [ - { success: true, performedQueryCount, totalQuota, version, blockNumber, warnings }, - { success: true, performedQueryCount, totalQuota, version, blockNumber, warnings }, - { - success: true, - performedQueryCount, - totalQuota, - version, - blockNumber: blockNumber + MAX_BLOCK_DISCREPANCY_THRESHOLD, - warnings, - }, - ], - expectedLogs: [ - { - params: [ - { - sortedByBlockNumber: [ - { - signerUrl: url, - values: { - blockNumber, - performedQueryCount, - totalQuota, - version, - warnings, - }, - }, - { - signerUrl: url, - values: { - blockNumber, - performedQueryCount, - totalQuota, - version, - warnings, - }, - }, - { - signerUrl: url, - values: { - blockNumber: blockNumber + MAX_BLOCK_DISCREPANCY_THRESHOLD, - performedQueryCount, - totalQuota, - version, - warnings, - }, - }, - ], - }, - WarningMessage.INCONSISTENT_SIGNER_BLOCK_NUMBERS, - ], - level: 'error', - }, - ], - }, { it: 'should log correctly when there is a discrepency in warnings field', responses: [ - { success: true, performedQueryCount, totalQuota, version, blockNumber, warnings }, - { success: true, performedQueryCount, totalQuota, version, blockNumber, warnings }, + { success: true, performedQueryCount, totalQuota, version, warnings }, + { success: true, performedQueryCount, totalQuota, version, warnings }, { success: true, performedQueryCount, totalQuota, version, - blockNumber, + warnings: ['differentWarning'], }, ], @@ -540,7 +377,6 @@ describe('pnp response logger', () => { { signerUrl: url, values: { - blockNumber, performedQueryCount, totalQuota, version, @@ -550,7 +386,6 @@ describe('pnp response logger', () => { { signerUrl: url, values: { - blockNumber, performedQueryCount, totalQuota, version, @@ -560,7 +395,6 @@ describe('pnp response logger', () => { { signerUrl: url, values: { - blockNumber, performedQueryCount, totalQuota, version, @@ -575,131 +409,31 @@ describe('pnp response logger', () => { }, ], }, - { - it: 'should log correctly when signers respond with fail-open warnings', - responses: [ - { - success: true, - performedQueryCount, - totalQuota, - version, - blockNumber, - warnings: [ErrorMessage.FAILING_OPEN], - }, - { - success: true, - performedQueryCount, - totalQuota, - version, - blockNumber, - warnings: [ErrorMessage.FAILURE_TO_GET_TOTAL_QUOTA], - }, - { - success: true, - performedQueryCount, - totalQuota, - version, - blockNumber, - warnings: [ErrorMessage.FAILURE_TO_GET_DEK], - }, - ], - expectedLogs: [ - { - params: [ - { - parsedResponses: [ - { - signerUrl: url, - values: { - blockNumber, - performedQueryCount, - totalQuota, - version, - warnings: [ErrorMessage.FAILING_OPEN], - }, - }, - { - signerUrl: url, - values: { - blockNumber, - performedQueryCount, - totalQuota, - version, - warnings: [ErrorMessage.FAILURE_TO_GET_TOTAL_QUOTA], - }, - }, - { - signerUrl: url, - values: { - blockNumber, - performedQueryCount, - totalQuota, - version, - warnings: [ErrorMessage.FAILURE_TO_GET_DEK], - }, - }, - ], - }, - WarningMessage.SIGNER_RESPONSE_DISCREPANCIES, - ], - level: 'warn', - }, - { - params: [ - { - signerWarning: ErrorMessage.FAILING_OPEN, - service: url, - }, - WarningMessage.SIGNER_FAILED_OPEN, - ], - level: 'error', - }, - { - params: [ - { - signerWarning: ErrorMessage.FAILURE_TO_GET_TOTAL_QUOTA, - service: url, - }, - WarningMessage.SIGNER_FAILED_OPEN, - ], - level: 'error', - }, - { - params: [ - { - signerWarning: ErrorMessage.FAILURE_TO_GET_DEK, - service: url, - }, - WarningMessage.SIGNER_FAILED_OPEN, - ], - level: 'error', - }, - ], - }, ] testCases.forEach((testCase) => { it(testCase.it, () => { - const session = getSession(testCase.responses) + const logger = rootLogger(config.serviceName) + + const responses = testCase.responses.map((res) => ({ res, url })) const logSpys = { info: { - spy: jest.spyOn(session.logger, 'info'), + spy: jest.spyOn(logger, 'info'), callCount: 0, }, debug: { - spy: jest.spyOn(session.logger, 'debug'), + spy: jest.spyOn(logger, 'debug'), callCount: 0, }, warn: { - spy: jest.spyOn(session.logger, 'warn'), + spy: jest.spyOn(logger, 'warn'), callCount: 0, }, error: { - spy: jest.spyOn(session.logger, 'error'), + spy: jest.spyOn(logger, 'error'), callCount: 0, }, } - pnpResponseLogger.logResponseDiscrepancies(session) - pnpResponseLogger.logFailOpenResponses(session) + logPnpSignerResponseDiscrepancies(logger, responses) testCase.expectedLogs.forEach((log) => { expect(logSpys[log.level].spy).toHaveBeenNthCalledWith( ++logSpys[log.level].callCount, diff --git a/packages/phone-number-privacy/combiner/test/unit/pnp-threshold-state.test.ts b/packages/phone-number-privacy/combiner/test/unit/pnp-threshold-state.test.ts index d42a6e6a8e6..47b21e041c0 100644 --- a/packages/phone-number-privacy/combiner/test/unit/pnp-threshold-state.test.ts +++ b/packages/phone-number-privacy/combiner/test/unit/pnp-threshold-state.test.ts @@ -1,17 +1,8 @@ -import { - KeyVersionInfo, - PnpQuotaRequest, - PnpQuotaResponseSuccess, - rootLogger, - SignMessageRequest, - SignMessageResponseSuccess, - WarningMessage, -} from '@celo/phone-number-privacy-common' +import { KeyVersionInfo, WarningMessage } from '@celo/phone-number-privacy-common' import { getSignerVersion } from '@celo/phone-number-privacy-signer/src/config' -import { Request, Response } from 'express' -import { Session } from '../../src/common/session' + import config from '../../src/config' -import { PnpThresholdStateService } from '../../src/pnp/services/threshold-state' +import { findCombinerQuotaState } from '../../src/pnp/services/threshold-state' describe('pnp threshold state', () => { // TODO add tests with failed signer responses, depending on @@ -24,41 +15,11 @@ describe('pnp threshold state', () => { pubKey: 'mock pubKey', } - const getSession = (quotaData: { totalQuota: number; performedQueryCount: number }[]) => { - const mockRequest = { - body: {}, - } as Request - - // @ts-ignore: missing some properties - const mockResponse = { - locals: { - logger: rootLogger, - }, - } as Response - const session = new Session( - mockRequest, - mockResponse, - keyVersionInfo - ) - quotaData.forEach((q) => { - const res: PnpQuotaResponseSuccess | SignMessageResponseSuccess = { - success: true, - version: expectedVersion, - ...q, - blockNumber: testBlockNumber, - } - session.responses.push({ url: 'random url', res, status: 200 }) - }) - return session - } - const pnpConfig = config.phoneNumberPrivacy pnpConfig.keys.currentVersion = keyVersionInfo.keyVersion pnpConfig.keys.versions = JSON.stringify([keyVersionInfo]) - const pnpThresholdStateService = new PnpThresholdStateService() const expectedVersion = getSignerVersion() - const testBlockNumber = 1000000 const totalQuota = 10 const performedQueryCount = 5 @@ -111,12 +72,23 @@ describe('pnp threshold state', () => { ] varyingQueryCount.forEach(({ signerRes, expectedQueryCount }) => { it(`should return ${expectedQueryCount} performedQueryCount given signer responses of ${signerRes}`, () => { - const session = getSession(signerRes) - const thresholdResult = pnpThresholdStateService.findCombinerQuotaState(session) + const responses = signerRes.map((o) => { + return { + url: 'random url', + status: 200, + res: { + success: true as true, + version: expectedVersion, + ...o, + }, + } + }) + + const warnings: string[] = [] + const thresholdResult = findCombinerQuotaState(keyVersionInfo, responses, warnings) expect(thresholdResult).toStrictEqual({ performedQueryCount: expectedQueryCount, totalQuota, - blockNumber: testBlockNumber, }) }) }) @@ -155,15 +127,26 @@ describe('pnp threshold state', () => { ] varyingTotalQuota.forEach(({ signerRes, expectedTotalQuota, warning }) => { it(`should return ${expectedTotalQuota} totalQuota given signer responses of ${signerRes}`, () => { - const session = getSession(signerRes) - const thresholdResult = pnpThresholdStateService.findCombinerQuotaState(session) + const responses = signerRes.map((o) => { + return { + url: 'random url', + status: 200, + res: { + success: true as true, + version: expectedVersion, + ...o, + }, + } + }) + + const warnings: string[] = [] + const thresholdResult = findCombinerQuotaState(keyVersionInfo, responses, warnings) expect(thresholdResult).toStrictEqual({ performedQueryCount, totalQuota: expectedTotalQuota, - blockNumber: testBlockNumber, }) if (warning) { - expect(session.warnings).toContain( + expect(warnings).toContain( WarningMessage.INCONSISTENT_SIGNER_QUOTA_MEASUREMENTS + ', using threshold signer as best guess' ) @@ -197,15 +180,26 @@ describe('pnp threshold state', () => { ] varyingQuotaAndQuery.forEach(({ signerRes, expectedQueryCount, expectedTotalQuota, warning }) => { it(`should return ${expectedTotalQuota} totalQuota and ${expectedQueryCount} performedQueryCount given signer responses of ${signerRes}`, () => { - const session = getSession(signerRes) - const thresholdResult = pnpThresholdStateService.findCombinerQuotaState(session) + const responses = signerRes.map((o) => { + return { + url: 'random url', + status: 200, + res: { + success: true as true, + version: expectedVersion, + ...o, + }, + } + }) + + const warnings: string[] = [] + const thresholdResult = findCombinerQuotaState(keyVersionInfo, responses, warnings) expect(thresholdResult).toStrictEqual({ performedQueryCount: expectedQueryCount, totalQuota: expectedTotalQuota, - blockNumber: testBlockNumber, }) if (warning) { - expect(session.warnings).toContain( + expect(warnings).toContain( WarningMessage.INCONSISTENT_SIGNER_QUOTA_MEASUREMENTS + ', using threshold signer as best guess' ) @@ -214,13 +208,26 @@ describe('pnp threshold state', () => { }) it('should throw an error if the total quota varies too much between signers', () => { - const session = getSession([ + const signerRes = [ { performedQueryCount, totalQuota: 1 }, { performedQueryCount, totalQuota: 9 }, { performedQueryCount, totalQuota: 15 }, { performedQueryCount, totalQuota: 14 }, - ]) - expect(() => pnpThresholdStateService.findCombinerQuotaState(session)).toThrow( + ] + const responses = signerRes.map((o) => { + return { + url: 'random url', + status: 200, + res: { + success: true as true, + version: expectedVersion, + ...o, + }, + } + }) + + const warnings: string[] = [] + expect(() => findCombinerQuotaState(keyVersionInfo, responses, warnings)).toThrow( WarningMessage.INCONSISTENT_SIGNER_QUOTA_MEASUREMENTS ) }) diff --git a/packages/phone-number-privacy/combiner/test/utils.ts b/packages/phone-number-privacy/combiner/test/utils.ts index 6dbc470c7d1..bbd2e6f21dd 100644 --- a/packages/phone-number-privacy/combiner/test/utils.ts +++ b/packages/phone-number-privacy/combiner/test/utils.ts @@ -1,6 +1,14 @@ import threshold_bls from 'blind-threshold-bls' +import { Server } from 'http' +import { Server as HttpsServer } from 'https' export function getBlindedPhoneNumber(phoneNumber: string, blindingFactor: Buffer): string { const blindedPhoneNumber = threshold_bls.blind(Buffer.from(phoneNumber), blindingFactor).message return Buffer.from(blindedPhoneNumber).toString('base64') } + +export async function serverClose(server?: Server | HttpsServer) { + if (server) { + await new Promise((resolve) => server.close(resolve)) + } +} diff --git a/packages/phone-number-privacy/common/README.md b/packages/phone-number-privacy/common/README.md index 70cc0a7a014..48349f4627f 100644 --- a/packages/phone-number-privacy/common/README.md +++ b/packages/phone-number-privacy/common/README.md @@ -23,7 +23,7 @@ These instructions assume the following scenario for readability: 1. Checkout a new branch for the SDK release. Name it something like `/release3.2.0` 2. Note that you should release version `3.2.0-beta.1` and `2.0.3-beta.1` and test that everything is working correctly before publishing them as `latest`. If everything is not working correctly, try again with `-beta.2` 3. Search and replace all instances of the current sdk version in the monorepo with the new sdk version you are releasing (check the search and replace changes do what you intend them to before hitting replace!) - - i.e. search and replace `3.1.1-dev` with `3.2.0-beta.1` (note that we’ve removed the `-dev`) + - i.e. search and replace `3.1.1-dev` with `3.2.0-beta.1` (note that we’ve removed the `-dev`) 4. Same idea as above -- ensure the version of the `@celo/phone-number-privacy-common` package is set to the version you are trying to release (i.e. `2.0.3-beta.1`) and that all other packages are importing this version. 5. From the monorepo root directory, run `yarn reset && yarn && yarn build` (expect this to take at least 10 mins) 6. Commit your changes with the message `3.2.0-beta.1` @@ -31,14 +31,15 @@ These instructions assume the following scenario for readability: - You will be prompted to enter your OTP - When publishing as `latest`, omit the `--tag beta` 8. Publish the sdks by running `npm run deploy-sdks` from the monorepo root directory - - You will be prompted to enter a version number that you wish to publish. i.e. `3.2.0-beta.1` - - You will be repeatedly asked to enter your OTP, which will be automatically supplied if you hit ‘enter’ (you do not have to paste it to the command line each time) - - When your OTP expires, you will see an error and will have to re-enter the new one - - Note the `deploy-sdks` script will automatically append `-dev` to all the sdk versions after they're published. You may need to search and replace to undue this if you were publishing a beta release. + - You will be prompted to enter a version number that you wish to publish. i.e. `3.2.0-beta.1` + - You will be repeatedly asked to enter your OTP, which will be automatically supplied if you hit ‘enter’ (you do not have to paste it to the command line each time) + - When your OTP expires, you will see an error and will have to re-enter the new one + - Note the `deploy-sdks` script will automatically append `-dev` to all the sdk versions after they're published. You may need to search and replace to undue this if you were publishing a beta release. 9. Depending on what you're releasing, you may want to test that the newly published SDKs work as intended. This may be as simple as checking that CI runs successfully on your `3.2.0-beta.1` commit. 10. Once you are confident in the beta release, repeat steps 3 through 9 with versions `3.2.0` and `2.0.3`. The SDKs will be published with the `latest` tag. 11. The `deploy-sdks` script will automatically append `-dev` to all the sdk versions after they're published. For `latest` releases, it will also increment to the next patch version. Please ensure this happened correctly and commit the result with the message `3.2.1-dev` 12. Get your PR for the release branch reviewed and merged + - If CI fails with output like below, it means that some packages outside of the SDK did not get incremented to `3.2.1-dev`. Please go through and make sure these are all incremented correctly and CI should pass. ``` diff --git a/packages/phone-number-privacy/common/package.json b/packages/phone-number-privacy/common/package.json index 618a7f9cc12..709a437394f 100644 --- a/packages/phone-number-privacy/common/package.json +++ b/packages/phone-number-privacy/common/package.json @@ -1,6 +1,6 @@ { "name": "@celo/phone-number-privacy-common", - "version": "3.0.0-dev", + "version": "3.0.0-beta.4-dev", "description": "Common library for the combiner and signer libraries", "author": "Celo", "license": "Apache-2.0", @@ -18,10 +18,10 @@ "lib/**/*" ], "dependencies": { - "@celo/base": "^4.1.1-dev", - "@celo/contractkit": "^4.1.1-dev", - "@celo/utils": "^4.1.1-dev", - "@celo/phone-utils": "^4.1.1-dev", + "@celo/base": "^4.1.1-beta.1", + "@celo/contractkit": "^4.1.1-beta.1", + "@celo/utils": "^4.1.1-beta.1", + "@celo/phone-utils": "^4.1.1-beta.1", "@types/bunyan": "1.8.8", "bignumber.js": "^9.0.0", "bunyan": "1.8.12", @@ -41,7 +41,7 @@ }, "devDependencies": { "@celo/poprf": "^0.1.9", - "@celo/wallet-local": "^4.1.1-dev", + "@celo/wallet-local": "^4.1.1-beta.1", "@types/elliptic": "^6.4.12", "@types/express": "^4.17.6", "@types/is-base64": "^1.1.0", @@ -50,4 +50,4 @@ "engines": { "node": ">=10" } -} +} \ No newline at end of file diff --git a/packages/phone-number-privacy/common/src/index.ts b/packages/phone-number-privacy/common/src/index.ts index 8e216f2d5cf..1f12254b2b3 100644 --- a/packages/phone-number-privacy/common/src/index.ts +++ b/packages/phone-number-privacy/common/src/index.ts @@ -12,7 +12,7 @@ export { TestUtils } from './test/index' export * from './utils/authentication' export { fetchEnv, fetchEnvOrDefault, toBool, toNum } from './utils/config.utils' export * from './utils/constants' -export { BlockchainConfig, getContractKit } from './utils/contracts' +export { BlockchainConfig, getContractKit, getContractKitWithAgent } from './utils/contracts' export * from './utils/input-validation' export * from './utils/key-version' export { genSessionID, loggerMiddleware, rootLogger } from './utils/logger' diff --git a/packages/phone-number-privacy/common/src/interfaces/errors.ts b/packages/phone-number-privacy/common/src/interfaces/errors.ts index f1021e209a4..69a9888955a 100644 --- a/packages/phone-number-privacy/common/src/interfaces/errors.ts +++ b/packages/phone-number-privacy/common/src/interfaces/errors.ts @@ -26,13 +26,11 @@ export enum ErrorMessage { THRESHOLD_PNP_QUOTA_STATUS_FAILURE = `CELO_ODIS_ERR_23 SIG_ERR Failed to get PNP quota status from a threshold of signers`, FAILURE_TO_GET_PERFORMED_QUERY_COUNT = `CELO_ODIS_ERR_24 DB_ERR Failed to read performedQueryCount from signer db`, FAILURE_TO_GET_TOTAL_QUOTA = `CELO_ODIS_ERR_25 NODE_ERR Failed to read on-chain state to calculate total quota`, - FAILURE_TO_GET_BLOCK_NUMBER = `CELO_ODIS_ERR_26 NODE_ERR Failed to read block number from full node`, FAILURE_TO_GET_DEK = `CELO_ODIS_ERR_27 NODE_ERR Failed to read user's DEK from full-node`, - FAILING_OPEN = `CELO_ODIS_ERR_28 NODE_ERR Failing open on full-node error`, - FAILING_CLOSED = `CELO_ODIS_ERR_29 NODE_ERR Failing closed on full-node error`, CAUGHT_ERROR_IN_ENDPOINT_HANDLER = `CELO_ODIS_ERR_30 Caught error in outer endpoint handler`, ERROR_AFTER_RESPONSE_SENT = `CELO_ODIS_ERR_31 Error in endpoint thrown after response was already sent`, SIGNATURE_AGGREGATION_FAILURE = 'CELO_ODIS_ERR_32 SIG_ERR Failed to blind aggregate signature shares', + DATABASE_REMOVE_FAILURE = 'CELO_ODIS_ERR_33 DB_ERR Failed to remove database entries', } export enum WarningMessage { @@ -40,21 +38,17 @@ export enum WarningMessage { UNAUTHENTICATED_USER = `CELO_ODIS_WARN_02 BAD_INPUT Missing or invalid authentication`, EXCEEDED_QUOTA = `CELO_ODIS_WARN_03 QUOTA Requester exceeded service query quota`, DUPLICATE_REQUEST_TO_GET_PARTIAL_SIG = `CELO_ODIS_WARN_04 BAD_INPUT Attempt to replay partial signature request`, - INCONSISTENT_SIGNER_BLOCK_NUMBERS = `CELO_ODIS_WARN_05 SIGNER Discrepancy found in signers latest block number that exceeds threshold`, INCONSISTENT_SIGNER_QUOTA_MEASUREMENTS = `CELO_ODIS_WARN_06 SIGNER Discrepancy found in signers quota measurements`, MISSING_SESSION_ID = `CELO_ODIS_WARN_07 BAD_INPUT Client did not provide sessionID in request`, CANCELLED_REQUEST_TO_SIGNER = `CELO_ODIS_WARN_08 SIGNER Cancelled request to signer`, - INVALID_USER_PHONE_NUMBER_SIGNATURE = `CELO_ODIS_WARN_09 BAD_INPUT User phone number signature is invalid`, UNKNOWN_DOMAIN = `CELO_ODIS_WARN_10 BAD_INPUT Provided domain name and version is not recognized`, DISABLED_DOMAIN = `CELO_ODIS_WARN_11 BAD_INPUT Provided domain is disabled`, INVALID_KEY_VERSION_REQUEST = `CELO_ODIS_WARN_12 BAD_INPUT Request key version header is invalid`, API_UNAVAILABLE = `CELO_ODIS_WARN_13 BAD_INPUT API is unavailable`, INCONSISTENT_SIGNER_DOMAIN_DISABLED_STATES = `CELO_ODIS_WARN_14 SIGNER Discrepency found in signer domain disabled states`, - INVALID_AUTH_SIGNATURE = `CELO_ODIS_WARN_15 BAD_INPUT Authorization signature was incorrectly generated. Request will be rejected in a future version.`, INVALID_NONCE = `CELO_ODIS_WARN_16 BAD_INPUT SequentialDelayDomain nonce check failed on Signer request`, SIGNER_RESPONSE_DISCREPANCIES = `CELO_ODIS_WARN_17 SIGNER Discrepancies detected in signer responses`, INCONSISTENT_SIGNER_QUERY_MEASUREMENTS = `CELO_ODIS_WARN_18 SIGNER Discrepancy found in signers performed query count measurements`, - SIGNER_FAILED_OPEN = `CELO_ODIS_WARN_19 SIGNER Signer failed open on request`, } export type ErrorType = ErrorMessage | WarningMessage diff --git a/packages/phone-number-privacy/common/src/interfaces/responses.ts b/packages/phone-number-privacy/common/src/interfaces/responses.ts index 181d6740f60..8c9c7d2b507 100644 --- a/packages/phone-number-privacy/common/src/interfaces/responses.ts +++ b/packages/phone-number-privacy/common/src/interfaces/responses.ts @@ -16,18 +16,12 @@ export interface PnpQuotaStatus { performedQueryCount: number // all time total quota totalQuota: number - blockNumber?: number } -const PnpQuotaStatusSchema: t.Type = t.intersection([ - t.type({ - performedQueryCount: t.number, - totalQuota: t.number, - }), - t.partial({ - blockNumber: t.union([t.number, t.undefined]), - }), -]) +const PnpQuotaStatusSchema: t.Type = t.type({ + performedQueryCount: t.number, + totalQuota: t.number, +}) export interface SignMessageResponseSuccess extends PnpQuotaStatus { success: true @@ -47,7 +41,6 @@ export interface SignMessageResponseFailure { // Changing this is more involved; TODO(future) https://github.com/celo-org/celo-monorepo/issues/9826 performedQueryCount?: number totalQuota?: number - blockNumber?: number } export type SignMessageResponse = SignMessageResponseSuccess | SignMessageResponseFailure @@ -73,7 +66,6 @@ export const SignMessageResponseSchema: t.Type = t.union([ t.partial({ performedQueryCount: t.union([t.number, t.undefined]), totalQuota: t.union([t.number, t.undefined]), - blockNumber: t.union([t.number, t.undefined]), }), ]), ]) diff --git a/packages/phone-number-privacy/common/src/test/utils.ts b/packages/phone-number-privacy/common/src/test/utils.ts index 0ba2ff66539..eea6164b727 100644 --- a/packages/phone-number-privacy/common/src/test/utils.ts +++ b/packages/phone-number-privacy/common/src/test/utils.ts @@ -49,7 +49,7 @@ export function createMockOdisPayments(totalPaidCUSDFunc: jest.Mock 1000, }, - connection: createMockConnection(mockWeb3), + connection: mockWeb3 ?? createMockConnection(mockWeb3), } } @@ -76,7 +76,6 @@ export function createMockConnection(mockWeb3: any) { } export enum ContractRetrieval { - getAttestations = 'getAttestations', getStableToken = 'getStableToken', getGoldToken = 'getGoldToken', getAccounts = 'getAccounts', diff --git a/packages/phone-number-privacy/common/src/utils/authentication.ts b/packages/phone-number-privacy/common/src/utils/authentication.ts index 6c9eb3c3663..7498d8d5457 100644 --- a/packages/phone-number-privacy/common/src/utils/authentication.ts +++ b/packages/phone-number-privacy/common/src/utils/authentication.ts @@ -1,9 +1,9 @@ import { hexToBuffer, retryAsyncWithBackOffAndTimeout } from '@celo/base' import { ContractKit } from '@celo/contractkit' import { AccountsWrapper } from '@celo/contractkit/lib/wrappers/Accounts' -import { AttestationsWrapper } from '@celo/contractkit/lib/wrappers/Attestations' import { trimLeading0x } from '@celo/utils/lib/address' import { verifySignature } from '@celo/utils/lib/signatureUtils' + import Logger from 'bunyan' import crypto from 'crypto' import { Request } from 'express' @@ -16,8 +16,25 @@ import { } from '../interfaces' import { FULL_NODE_TIMEOUT_IN_MS, RETRY_COUNT, RETRY_DELAY_IN_MS } from './constants' -import opentelemetry, { SpanStatusCode } from '@opentelemetry/api' -const tracer = opentelemetry.trace.getTracer('signer-tracer') +export type DataEncryptionKeyFetcher = (address: string) => Promise + +export function newContractKitFetcher( + contractKit: ContractKit, + logger: Logger, + fullNodeTimeoutMs: number = FULL_NODE_TIMEOUT_IN_MS, + fullNodeRetryCount: number = RETRY_COUNT, + fullNodeRetryDelayMs: number = RETRY_DELAY_IN_MS +): DataEncryptionKeyFetcher { + return (address: string) => + getDataEncryptionKey( + address, + contractKit, + logger, + fullNodeTimeoutMs, + fullNodeRetryCount, + fullNodeRetryDelayMs + ) +} /* * Confirms that user is who they say they are and throws error on failure to confirm. @@ -25,102 +42,55 @@ const tracer = opentelemetry.trace.getTracer('signer-tracer') */ export async function authenticateUser( request: Request<{}, {}, R>, - contractKit: ContractKit, logger: Logger, - shouldFailOpen: boolean = false, - warnings: ErrorType[] = [], - timeoutMs: number = FULL_NODE_TIMEOUT_IN_MS, - retryCount: number = RETRY_COUNT, - retryDelay: number = RETRY_DELAY_IN_MS + fetchDEK: DataEncryptionKeyFetcher, + warnings: ErrorType[] = [] ): Promise { - return tracer.startActiveSpan('Authentication - authenticateUser', async (span) => { - logger.debug('Authenticating user') - span.addEvent('Authenticating user') + logger.debug('Authenticating user') - // https://tools.ietf.org/html/rfc7235#section-4.2 - const messageSignature = request.get('Authorization') - const message = JSON.stringify(request.body) - const signer = request.body.account - const authMethod = request.body.authenticationMethod + // https://tools.ietf.org/html/rfc7235#section-4.2 + const messageSignature = request.get('Authorization') + const message = JSON.stringify(request.body) + const signer = request.body.account + const authMethod = request.body.authenticationMethod - if (!messageSignature || !signer) { - span.addEvent('No messageSignature or signer') - span.setStatus({ - code: SpanStatusCode.ERROR, - message: 'No messageSignature or signer', + if (!messageSignature || !signer) { + return false + } + + if (authMethod && authMethod === AuthenticationMethod.ENCRYPTION_KEY) { + let registeredEncryptionKey + try { + registeredEncryptionKey = await fetchDEK(signer) + } catch (err) { + // getDataEncryptionKey should only throw if there is a full-node connection issue. + // That is, it does not throw if the DEK is undefined or invalid + logger.error({ + err, + warning: ErrorMessage.FAILURE_TO_GET_DEK, }) - span.end() + warnings.push(ErrorMessage.FAILURE_TO_GET_DEK) return false } - - if (authMethod && authMethod === AuthenticationMethod.ENCRYPTION_KEY) { - span.addEvent('Authenticating user with encryption key') - let registeredEncryptionKey - try { - span.addEvent('Getting data emcryption key') - registeredEncryptionKey = await getDataEncryptionKey( - signer, - contractKit, - logger, - timeoutMs, - retryCount, - retryDelay - ) - } catch (err) { - // getDataEncryptionKey should only throw if there is a full-node connection issue. - // That is, it does not throw if the DEK is undefined or invalid - const failureStatus = shouldFailOpen - ? ErrorMessage.FAILING_OPEN - : ErrorMessage.FAILING_CLOSED - logger.error({ - err, - warning: ErrorMessage.FAILURE_TO_GET_DEK, - failureStatus, - }) - warnings.push(ErrorMessage.FAILURE_TO_GET_DEK, failureStatus) - span.addEvent('Error with full-node connection issue') - span.setStatus({ - code: SpanStatusCode.ERROR, - message: ErrorMessage.FAILURE_TO_GET_DEK + failureStatus, - }) - span.end() - return shouldFailOpen - } - if (!registeredEncryptionKey) { - logger.warn({ account: signer }, 'Account does not have registered encryption key') - span.addEvent('Account does not have registered encryption key') - span.setStatus({ - code: SpanStatusCode.ERROR, - message: 'Account does not have registered encryption key', - }) - span.end() - return false - } else { - span.addEvent('Verifying with DEK') - logger.info({ dek: registeredEncryptionKey, account: signer }, 'Found DEK for account') - if (verifyDEKSignature(message, messageSignature, registeredEncryptionKey, logger)) { - span.addEvent('DEK verification OK') - span.setStatus({ - code: SpanStatusCode.OK, - message: 'DEK verifycation OK', - }) - span.end() - return true - } + if (!registeredEncryptionKey) { + logger.warn({ account: signer }, 'Account does not have registered encryption key') + return false + } else { + logger.info({ dek: registeredEncryptionKey, account: signer }, 'Found DEK for account') + if (verifyDEKSignature(message, messageSignature, registeredEncryptionKey, logger)) { + return true } } + } - // Fallback to previous signing pattern - logger.info( - { account: signer, message, messageSignature }, - 'Message was not authenticated with DEK, attempting to authenticate using wallet key' - ) - // TODO This uses signature utils, why doesn't DEK authentication? - // (https://github.com/celo-org/celo-monorepo/issues/9803) - span.addEvent('Verifying with wallet key') - span.end() - return verifySignature(message, messageSignature, signer) - }) + // Fallback to previous signing pattern + logger.info( + { account: signer, message, messageSignature }, + 'Message was not authenticated with DEK, attempting to authenticate using wallet key' + ) + // TODO This uses signature utils, why doesn't DEK authentication? + // (https://github.com/celo-org/celo-monorepo/issues/9803) + return verifySignature(message, messageSignature, signer) } export function getMessageDigest(message: string) { @@ -198,45 +168,3 @@ export async function getDataEncryptionKey( throw error } } - -export async function isVerified( - account: string, - hashedPhoneNumber: string, - contractKit: ContractKit, - logger: Logger -): Promise { - try { - const res = await retryAsyncWithBackOffAndTimeout( - async () => { - const attestationsWrapper: AttestationsWrapper = - await contractKit.contracts.getAttestations() - const { - isVerified: _isVerified, - completed, - numAttestationsRemaining, - total, - } = await attestationsWrapper.getVerifiedStatus(hashedPhoneNumber, account) - - logger.debug({ - account, - isVerified: _isVerified, - completedAttestations: completed, - remainingAttestations: numAttestationsRemaining, - totalAttestationsRequested: total, - }) - return _isVerified - }, - RETRY_COUNT, - [], - RETRY_DELAY_IN_MS, - 1.5, - FULL_NODE_TIMEOUT_IN_MS - ) - return res - } catch (error) { - logger.error('Failed to get verification status: ' + error) - logger.error(ErrorMessage.FULL_NODE_ERROR) - logger.warn('Assuming user is verified') - return true - } -} diff --git a/packages/phone-number-privacy/common/src/utils/contracts.ts b/packages/phone-number-privacy/common/src/utils/contracts.ts index f4952231f1f..8707f99f061 100644 --- a/packages/phone-number-privacy/common/src/utils/contracts.ts +++ b/packages/phone-number-privacy/common/src/utils/contracts.ts @@ -1,4 +1,6 @@ -import { ContractKit, newKit, newKitWithApiKey } from '@celo/contractkit' +import { ContractKit, HttpProviderOptions, newKit, newKitWithApiKey } from '@celo/contractkit' +import http from 'http' +import https from 'https' export interface BlockchainConfig { provider: string @@ -8,3 +10,20 @@ export interface BlockchainConfig { export function getContractKit(config: BlockchainConfig): ContractKit { return config.apiKey ? newKitWithApiKey(config.provider, config.apiKey) : newKit(config.provider) } + +export function getContractKitWithAgent(config: BlockchainConfig): ContractKit { + const options: HttpProviderOptions = {} + options.agent = { + http: new http.Agent({ keepAlive: true }), + https: new https.Agent({ keepAlive: true }), + } + options.keepAlive = true + if (config.apiKey) { + options.headers = [] + options.headers.push({ + name: 'apiKey', + value: config.apiKey, + }) + } + return newKit(config.provider, undefined, options) +} diff --git a/packages/phone-number-privacy/common/src/utils/key-version.ts b/packages/phone-number-privacy/common/src/utils/key-version.ts index 07657663793..de87277d4fa 100644 --- a/packages/phone-number-privacy/common/src/utils/key-version.ts +++ b/packages/phone-number-privacy/common/src/utils/key-version.ts @@ -35,7 +35,7 @@ export function getRequestKeyVersion( return undefined } if (!isValidKeyVersion(keyVersion)) { - logger.error({ keyVersionHeader }, WarningMessage.INVALID_KEY_VERSION_REQUEST) + logger.error({ keyVersionHeader, keyVersion }, WarningMessage.INVALID_KEY_VERSION_REQUEST) throw new Error(WarningMessage.INVALID_KEY_VERSION_REQUEST) } @@ -76,7 +76,7 @@ export function getResponseKeyVersion(response: FetchResponse, logger: Logger): return undefined } if (!isValidKeyVersion(keyVersion)) { - logger.error({ keyVersionHeader }, ErrorMessage.INVALID_KEY_VERSION_RESPONSE) + logger.error({ keyVersionHeader, keyVersion }, ErrorMessage.INVALID_KEY_VERSION_RESPONSE) throw new Error(ErrorMessage.INVALID_KEY_VERSION_RESPONSE) } @@ -93,7 +93,7 @@ function parseKeyVersionFromHeader( const keyVersionHeaderString = keyVersionHeader.toString().trim() - if (!keyVersionHeaderString.length) { + if (!keyVersionHeaderString.length || keyVersionHeaderString === 'undefined') { return undefined } diff --git a/packages/phone-number-privacy/common/src/utils/responses.utils.ts b/packages/phone-number-privacy/common/src/utils/responses.utils.ts index 467acb1b42c..fffe55a1895 100644 --- a/packages/phone-number-privacy/common/src/utils/responses.utils.ts +++ b/packages/phone-number-privacy/common/src/utils/responses.utils.ts @@ -6,15 +6,17 @@ export function send< I extends OdisRequest = OdisRequest, O extends OdisResponse = OdisResponse >(response: Response, body: O, status: number, logger: Logger) { - if (!body.success) { - if (body.error in WarningMessage) { - logger.warn({ error: body.error, status, body }, 'Responding with warning') + if (!response.headersSent) { + if (!body.success) { + if (body.error in WarningMessage) { + logger.warn({ error: body.error, status, body }, 'Responding with warning') + } else { + logger.error({ error: body.error, status, body }, 'Responding with error') + } } else { - logger.error({ error: body.error, status, body }, 'Responding with error') + logger.info({ status, body }, 'Responding with success') } - } else { - logger.info({ status, body }, 'Responding with success') + response.status(status).json(body) + logger.info('Completed send') } - response.status(status).json(body) - logger.info('Completed send') } diff --git a/packages/phone-number-privacy/common/test/utils/authentication.test.ts b/packages/phone-number-privacy/common/test/utils/authentication.test.ts index 4e129b6fbd5..355eb630dec 100644 --- a/packages/phone-number-privacy/common/test/utils/authentication.test.ts +++ b/packages/phone-number-privacy/common/test/utils/authentication.test.ts @@ -5,6 +5,7 @@ import { Request } from 'express' import { ErrorMessage, ErrorType } from '../../lib' import { AuthenticationMethod } from '../../src/interfaces/requests' import * as auth from '../../src/utils/authentication' +import { newContractKitFetcher } from '../../src/utils/authentication' describe('Authentication test suite', () => { const logger = Logger.createLogger({ @@ -20,17 +21,10 @@ describe('Authentication test suite', () => { account: '0xc1912fee45d61c87cc5ea59dae31190fffff232d', }, } as Request - const mockContractKit = {} as ContractKit - + const dekFetcher = newContractKitFetcher({} as ContractKit, logger) const warnings: ErrorType[] = [] - const success = await auth.authenticateUser( - sampleRequest, - mockContractKit, - logger, - true, - warnings - ) + const success = await auth.authenticateUser(sampleRequest, logger, dekFetcher, warnings) expect(success).toBe(false) expect(warnings).toEqual([]) @@ -41,47 +35,17 @@ describe('Authentication test suite', () => { get: (name: string) => (name === 'Authorization' ? 'Test' : ''), body: {}, } as Request - const mockContractKit = {} as ContractKit + const dekFetcher = newContractKitFetcher({} as ContractKit, logger) const warnings: ErrorType[] = [] - const success = await auth.authenticateUser( - sampleRequest, - mockContractKit, - logger, - true, - warnings - ) + const success = await auth.authenticateUser(sampleRequest, logger, dekFetcher, warnings) expect(success).toBe(false) expect(warnings).toEqual([]) }) - it('Should succeed authentication with error in getDataEncryptionKey when shouldFailOpen is true', async () => { - const sampleRequest: Request = { - get: (name: string) => (name === 'Authorization' ? 'Test' : ''), - body: { - account: '0xc1912fee45d61c87cc5ea59dae31190fffff232d', - authenticationMethod: AuthenticationMethod.ENCRYPTION_KEY, - }, - } as Request - const mockContractKit = {} as ContractKit - - const warnings: ErrorType[] = [] - - const success = await auth.authenticateUser( - sampleRequest, - mockContractKit, - logger, - true, - warnings - ) - - expect(success).toBe(true) - expect(warnings).toEqual([ErrorMessage.FAILURE_TO_GET_DEK, ErrorMessage.FAILING_OPEN]) - }) - - it('Should fail authentication with error in getDataEncryptionKey when shouldFailOpen is false', async () => { + it('Should fail authentication with error in getDataEncryptionKey', async () => { const sampleRequest: Request = { get: (name: string) => (name === 'Authorization' ? 'Test' : ''), body: { @@ -89,20 +53,14 @@ describe('Authentication test suite', () => { authenticationMethod: AuthenticationMethod.ENCRYPTION_KEY, }, } as Request - const mockContractKit = {} as ContractKit + const dekFetcher = newContractKitFetcher({} as ContractKit, logger) const warnings: ErrorType[] = [] - const success = await auth.authenticateUser( - sampleRequest, - mockContractKit, - logger, - false, - warnings - ) + const success = await auth.authenticateUser(sampleRequest, logger, dekFetcher, warnings) expect(success).toBe(false) - expect(warnings).toEqual([ErrorMessage.FAILURE_TO_GET_DEK, ErrorMessage.FAILING_CLOSED]) + expect(warnings).toEqual([ErrorMessage.FAILURE_TO_GET_DEK]) }) it('Should fail authentication when key is not registered', async () => { @@ -124,16 +82,11 @@ describe('Authentication test suite', () => { }, }, } as ContractKit + const dekFetcher = newContractKitFetcher(mockContractKit, logger) const warnings: ErrorType[] = [] - const success = await auth.authenticateUser( - sampleRequest, - mockContractKit, - logger, - true, - warnings - ) + const success = await auth.authenticateUser(sampleRequest, logger, dekFetcher, warnings) expect(success).toBe(false) expect(warnings).toEqual([]) @@ -158,10 +111,11 @@ describe('Authentication test suite', () => { }, }, } as ContractKit + const dekFetcher = newContractKitFetcher(mockContractKit, logger) const warnings: ErrorType[] = [] - const success = await auth.authenticateUser(sampleRequest, mockContractKit, logger) + const success = await auth.authenticateUser(sampleRequest, logger, dekFetcher) expect(success).toBe(false) expect(warnings).toEqual([]) @@ -197,14 +151,9 @@ describe('Authentication test suite', () => { } as ContractKit const warnings: ErrorType[] = [] + const dekFetcher = newContractKitFetcher(mockContractKit, logger) - const success = await auth.authenticateUser( - sampleRequest, - mockContractKit, - logger, - true, - warnings - ) + const success = await auth.authenticateUser(sampleRequest, logger, dekFetcher, warnings) expect(success).toBe(true) expect(warnings).toEqual([]) @@ -249,13 +198,9 @@ describe('Authentication test suite', () => { const warnings: ErrorType[] = [] - const success = await auth.authenticateUser( - sampleRequest, - mockContractKit, - logger, - true, - warnings - ) + const dekFetcher = newContractKitFetcher(mockContractKit, logger) + + const success = await auth.authenticateUser(sampleRequest, logger, dekFetcher, warnings) expect(success).toBe(false) expect(warnings).toEqual([]) @@ -295,13 +240,9 @@ describe('Authentication test suite', () => { const warnings: ErrorType[] = [] - const success = await auth.authenticateUser( - sampleRequest, - mockContractKit, - logger, - true, - warnings - ) + const dekFetcher = newContractKitFetcher(mockContractKit, logger) + + const success = await auth.authenticateUser(sampleRequest, logger, dekFetcher, warnings) expect(success).toBe(false) expect(warnings).toEqual([]) @@ -342,13 +283,9 @@ describe('Authentication test suite', () => { const warnings: ErrorType[] = [] - const success = await auth.authenticateUser( - sampleRequest, - mockContractKit, - logger, - true, - warnings - ) + const dekFetcher = newContractKitFetcher(mockContractKit, logger) + + const success = await auth.authenticateUser(sampleRequest, logger, dekFetcher, warnings) expect(success).toBe(false) expect(warnings).toEqual([]) @@ -383,61 +320,14 @@ describe('Authentication test suite', () => { }, }, } as ContractKit + const dekFetcher = newContractKitFetcher(mockContractKit, logger) const warnings: ErrorType[] = [] - const success = await auth.authenticateUser( - sampleRequest, - mockContractKit, - logger, - true, - warnings - ) + const success = await auth.authenticateUser(sampleRequest, logger, dekFetcher, warnings) expect(success).toBe(false) expect(warnings).toEqual([]) }) }) - - describe('isVerified utility', () => { - it('Should succeed when verification is ok', async () => { - const mockContractKit = { - contracts: { - getAttestations: async () => { - return { - getVerifiedStatus: async (_: string, __: string) => { - return { - isVerified: true, - } - }, - } - }, - }, - } as ContractKit - - const result = await auth.isVerified('', '', mockContractKit, logger) - - expect(result).toBe(true) - }) - - it('Should fail when verification is not ok', async () => { - const mockContractKit = { - contracts: { - getAttestations: async () => { - return { - getVerifiedStatus: async (_: string, __: string) => { - return { - isVerified: false, - } - }, - } - }, - }, - } as ContractKit - - const result = await auth.isVerified('', '', mockContractKit, logger) - - expect(result).toBe(false) - }) - }) }) diff --git a/packages/phone-number-privacy/monitor/package.json b/packages/phone-number-privacy/monitor/package.json index 42ec65d16f7..7ea13aa786c 100644 --- a/packages/phone-number-privacy/monitor/package.json +++ b/packages/phone-number-privacy/monitor/package.json @@ -1,6 +1,6 @@ { "name": "@celo/phone-number-privacy-monitor", - "version": "3.0.0-dev", + "version": "3.0.0-beta.1", "description": "Regularly queries ODIS to ensure the system is functioning properly", "author": "Celo", "license": "Apache-2.0", @@ -22,13 +22,13 @@ "loadTest": "ts-node src/scripts/run-load-test.ts run" }, "dependencies": { - "@celo/contractkit": "^4.1.1-dev", - "@celo/cryptographic-utils": "^4.1.1-dev", - "@celo/encrypted-backup": "^4.1.1-dev", - "@celo/identity": "^4.1.1-dev", - "@celo/wallet-local": "^4.1.1-dev", - "@celo/phone-number-privacy-common": "^3.0.0-dev", - "@celo/utils": "^4.1.1-dev", + "@celo/contractkit": "^4.1.1-beta.1", + "@celo/cryptographic-utils": "^4.1.1-beta.1", + "@celo/encrypted-backup": "^4.1.1-beta.1", + "@celo/identity": "^4.1.1-beta.1", + "@celo/wallet-local": "^4.1.1-beta.1", + "@celo/phone-number-privacy-common": "^3.0.0-beta.1", + "@celo/utils": "^4.1.1-beta.1", "firebase-admin": "^9.12.0", "firebase-functions": "^3.15.7" }, diff --git a/packages/phone-number-privacy/monitor/src/index.ts b/packages/phone-number-privacy/monitor/src/index.ts index ead157604f7..8fddb7fa34a 100644 --- a/packages/phone-number-privacy/monitor/src/index.ts +++ b/packages/phone-number-privacy/monitor/src/index.ts @@ -1,4 +1,3 @@ -import { CombinerEndpointPNP } from '@celo/phone-number-privacy-common' import * as functions from 'firebase-functions' import { testDomainSignQuery, testPNPSignQuery } from './test' @@ -11,9 +10,7 @@ if (!contextName || !blockchainProvider) { export const odisMonitorScheduleFunctionPNP = functions .region('us-central1') .pubsub.schedule('every 5 minutes') - .onRun(async () => - testPNPSignQuery(blockchainProvider, contextName, CombinerEndpointPNP.PNP_SIGN) - ) + .onRun(async () => testPNPSignQuery(blockchainProvider, contextName)) export const odisMonitorScheduleFunctionDomains = functions .region('us-central1') diff --git a/packages/phone-number-privacy/monitor/src/query.ts b/packages/phone-number-privacy/monitor/src/query.ts index 823deb391b0..99b5f221b53 100644 --- a/packages/phone-number-privacy/monitor/src/query.ts +++ b/packages/phone-number-privacy/monitor/src/query.ts @@ -36,9 +36,6 @@ export const queryOdisForSalt = async ( ) => { let authSigner: AuthSigner let accountAddress: string - console.log(`contextName: ${contextName}`) // tslint:disable-line:no-console - console.log(`blockchain provider: ${blockchainProvider}`) // tslint:disable-line:no-console - console.log(`using DEK: ${useDEK}`) // tslint:disable-line:no-console const serviceContext = getServiceContext(contextName, OdisAPI.PNP) diff --git a/packages/phone-number-privacy/monitor/src/scripts/run-load-test.ts b/packages/phone-number-privacy/monitor/src/scripts/run-load-test.ts index 6e38b697118..fc5dea21dfe 100644 --- a/packages/phone-number-privacy/monitor/src/scripts/run-load-test.ts +++ b/packages/phone-number-privacy/monitor/src/scripts/run-load-test.ts @@ -1,62 +1,9 @@ import { OdisContextName } from '@celo/identity/lib/odis/query' -import { CombinerEndpointPNP } from '@celo/phone-number-privacy-common' +import { CombinerEndpointPNP, rootLogger } from '@celo/phone-number-privacy-common' import yargs from 'yargs' -import { concurrentLoadTest, serialLoadTest } from '../test' +import { concurrentRPSLoadTest } from '../test' -/* tslint:disable:no-console */ - -const runLoadTest = ( - contextName: string, - numWorker: number, - isSerial: boolean, - pnpQuotaEndpoint: boolean, - timeoutMs: number, - bypassQuota: boolean, - useDEK: boolean -) => { - let blockchainProvider: string - switch (contextName) { - case 'alfajoresstaging': - case 'alfajores': - blockchainProvider = 'https://alfajores-forno.celo-testnet.org' - break - case 'mainnet': - blockchainProvider = 'https://forno.celo.org' - break - default: - console.error('Invalid contextName') - yargs.showHelp() - process.exit(1) - } - if (numWorker < 1) { - console.error('Invalid numWorkers') - yargs.showHelp() - process.exit(1) - } - if (isSerial) { - // tslint:disable-next-line: no-floating-promises - serialLoadTest( - numWorker, - blockchainProvider!, - contextName as OdisContextName, - pnpQuotaEndpoint ? CombinerEndpointPNP.PNP_QUOTA : CombinerEndpointPNP.PNP_SIGN, - timeoutMs, - bypassQuota, - useDEK - ) - } else { - // tslint:disable-next-line: no-floating-promises - concurrentLoadTest( - numWorker, - blockchainProvider!, - contextName as OdisContextName, - pnpQuotaEndpoint ? CombinerEndpointPNP.PNP_QUOTA : CombinerEndpointPNP.PNP_SIGN, - timeoutMs, - bypassQuota, - useDEK - ) - } -} +const logger = rootLogger('odis-monitor') // tslint:disable-next-line: no-unused-expression yargs @@ -66,7 +13,7 @@ yargs .strict(true) .showHelpOnFail(true) .command( - 'run ', + 'run ', 'Load test ODIS.', (args) => args @@ -74,19 +21,14 @@ yargs type: 'string', description: 'Desired network.', }) - .positional('numWorkers', { + .positional('rps', { type: 'number', - description: 'Number of machines that will be sending request to ODIS.', + description: 'Number of requests per second to generate', }) - .option('isSerial', { - type: 'boolean', - description: 'Run test workers in series.', - default: false, - }) - .option('timeoutMs', { + .option('duration', { type: 'number', - description: 'Timout in ms.', - default: 10000, + description: 'Duration of the loadtest in Ms.', + default: 0, }) .option('bypassQuota', { type: 'boolean', @@ -98,20 +40,49 @@ yargs description: 'Use Data Encryption Key (DEK) to authenticate.', default: false, }) - .option('pnpQuotaEndpoint', { - type: 'boolean', - description: - 'Use this flag to load test PNP_QUOTA endpoint instead of PNP_SIGN endpoint.', - default: false, + .option('movingAvgRequests', { + type: 'number', + description: 'number of requests to use when calculating latency moving average', + default: 50, }), - (args) => - runLoadTest( - args.contextName!, - args.numWorkers!, - args.isSerial, - args.pnpQuotaEndpoint, - args.timeoutMs, + (args) => { + if (args.rps == null || args.contextName == null) { + logger.error('missing positional arguments') + yargs.showHelp() + process.exit(1) + } + const rps = args.rps! + const contextName = args.contextName! as OdisContextName + + let blockchainProvider: string + switch (contextName) { + case 'alfajoresstaging': + case 'alfajores': + blockchainProvider = 'https://alfajores-forno.celo-testnet.org' + break + case 'mainnet': + blockchainProvider = 'https://forno.celo.org' + break + default: + logger.error('Invalid contextName') + yargs.showHelp() + process.exit(1) + } + + if (rps < 1) { + logger.error('Invalid rps') + yargs.showHelp() + process.exit(1) + } + concurrentRPSLoadTest( + args.rps, + blockchainProvider!, + contextName, + CombinerEndpointPNP.PNP_SIGN, + args.duration, args.bypassQuota, - args.useDEK - ) + args.useDEK, + args.movingAvgRequests + ) // tslint:disable-line:no-floating-promises + } ).argv diff --git a/packages/phone-number-privacy/monitor/src/test.ts b/packages/phone-number-privacy/monitor/src/test.ts index af9fa42cebc..0431f2aedda 100644 --- a/packages/phone-number-privacy/monitor/src/test.ts +++ b/packages/phone-number-privacy/monitor/src/test.ts @@ -1,10 +1,11 @@ -import { concurrentMap, sleep } from '@celo/base' +import { sleep } from '@celo/base' import { Result } from '@celo/base/lib/result' import { BackupError } from '@celo/encrypted-backup' import { IdentifierHashDetails } from '@celo/identity/lib/odis/identifier' import { ErrorMessages, OdisContextName } from '@celo/identity/lib/odis/query' import { PnpClientQuotaStatus } from '@celo/identity/lib/odis/quota' import { CombinerEndpointPNP, rootLogger } from '@celo/phone-number-privacy-common' +import { performance } from 'perf_hooks' import { queryOdisDomain, queryOdisForQuota, queryOdisForSalt } from './query' const logger = rootLogger('odis-monitor') @@ -12,12 +13,10 @@ const logger = rootLogger('odis-monitor') export async function testPNPSignQuery( blockchainProvider: string, contextName: OdisContextName, - endpoint: CombinerEndpointPNP.PNP_SIGN, timeoutMs?: number, bypassQuota?: boolean, useDEK?: boolean ) { - logger.info(`Performing test PNP query for ${endpoint}`) try { const odisResponse: IdentifierHashDetails = await queryOdisForSalt( blockchainProvider, @@ -26,10 +25,10 @@ export async function testPNPSignQuery( bypassQuota, useDEK ) - logger.info({ odisResponse }, 'ODIS salt request successful. System is healthy.') + logger.debug({ odisResponse }, 'ODIS salt request successful. System is healthy.') } catch (err) { if ((err as Error).message === ErrorMessages.ODIS_QUOTA_ERROR) { - logger.info( + logger.warn( { error: err }, 'ODIS salt request out of quota. This is expected. System is healthy.' ) @@ -79,73 +78,104 @@ export async function testDomainSignQuery(contextName: OdisContextName) { } } -export async function serialLoadTest( - n: number, +export async function concurrentRPSLoadTest( + rps: number, blockchainProvider: string, contextName: OdisContextName, endpoint: | CombinerEndpointPNP.PNP_QUOTA | CombinerEndpointPNP.PNP_SIGN = CombinerEndpointPNP.PNP_SIGN, - timeoutMs?: number, - bypassQuota?: boolean, - useDEK?: boolean + duration: number = 0, + bypassQuota: boolean = false, + useDEK: boolean = false, + movingAverageRequests: number = 50 ) { - for (let i = 0; i < n; i++) { - try { - switch (endpoint) { - case CombinerEndpointPNP.PNP_SIGN: - await testPNPSignQuery( - blockchainProvider, - contextName, - endpoint, - timeoutMs, - bypassQuota, - useDEK - ) - break - case CombinerEndpointPNP.PNP_QUOTA: - await testPNPQuotaQuery(blockchainProvider, contextName, timeoutMs) + const latencyQueue: number[] = [] + let movingAvgLatencySum = 0 + let latencySum = 0 + let index = 1 + + function measureLatency(fn: () => Promise): () => Promise { + return async () => { + const start = performance.now() + + await fn() + + const reqLatency = performance.now() - start + latencySum += reqLatency + movingAvgLatencySum += reqLatency + + const queuelength = latencyQueue.push(reqLatency) + if (queuelength > movingAverageRequests) { + movingAvgLatencySum -= latencyQueue.shift()! + } + + const stats = { + averageLatency: Math.round(latencySum / index), + movingAverageLatency: Math.round(movingAvgLatencySum / latencyQueue.length), + index, } - } catch {} // tslint:disable-line:no-empty + + if (reqLatency > 600) { + logger.warn(stats, 'SLOW Request') + } else { + logger.info(stats, 'request finished') + } + index++ + } } + + const testFn = async () => { + try { + await (endpoint === CombinerEndpointPNP.PNP_SIGN + ? testPNPSignQuery(blockchainProvider, contextName, undefined, bypassQuota, useDEK) + : testPNPQuotaQuery(blockchainProvider, contextName)) + } catch (_) { + logger.error('load test request failed') + } + } + + return doRPSTest(measureLatency(testFn), rps, duration) } -export async function concurrentLoadTest( - workers: number, - blockchainProvider: string, - contextName: OdisContextName, - endpoint: - | CombinerEndpointPNP.PNP_QUOTA - | CombinerEndpointPNP.PNP_SIGN = CombinerEndpointPNP.PNP_SIGN, - timeoutMs?: number, - bypassQuota?: boolean, - useDEK?: boolean -) { - while (true) { - const reqs = [] - for (let i = 0; i < workers; i++) { - reqs.push(i) +async function doRPSTest( + testFn: () => Promise, + rps: number, + duration: number = 0 +): Promise { + const inFlightRequests: Array> = [] + let shouldRun = true + + async function requestSender() { + while (shouldRun) { + for (let i = 0; i < rps; i++) { + inFlightRequests.push(testFn()) + } + await sleep(1000) } - await concurrentMap(workers, reqs, async (i) => { - await sleep(i * 10) - while (true) { - try { - switch (endpoint) { - case CombinerEndpointPNP.PNP_SIGN: - await testPNPSignQuery( - blockchainProvider, - contextName, - endpoint, - timeoutMs, - bypassQuota, - useDEK - ) - break - case CombinerEndpointPNP.PNP_QUOTA: - await testPNPQuotaQuery(blockchainProvider, contextName, timeoutMs) - } - } catch {} // tslint:disable-line:no-empty + } + + async function requestEnder() { + while (shouldRun || inFlightRequests.length > 0) { + if (inFlightRequests.length > 0) { + const req = inFlightRequests.shift() + await req?.catch((_err) => { + logger.error('load test request failed') + }) + } else { + await sleep(1000) } - }) + } + } + + async function durationChecker() { + await sleep(duration) + shouldRun = false + } + + if (duration === 0) { + await Promise.all([requestSender(), requestEnder()]) + } else { + await Promise.all([durationChecker(), requestSender(), requestEnder()]) } } diff --git a/packages/phone-number-privacy/signer/.env b/packages/phone-number-privacy/signer/.env index 7625631db3a..8dfa0ea6050 100644 --- a/packages/phone-number-privacy/signer/.env +++ b/packages/phone-number-privacy/signer/.env @@ -32,7 +32,7 @@ ALFAJORES_ODIS_BLOCKCHAIN_PROVIDER=https://alfajores-forno.celo-testnet.org MAINNET_ODIS_BLOCKCHAIN_PROVIDER=https://forno.celo.org ODIS_DOMAINS_TEST_KEY_VERSION=1 ODIS_PNP_TEST_KEY_VERSION=1 -DEPLOYED_SIGNER_SERVICE_VERSION=2.0.1 +DEPLOYED_SIGNER_SERVICE_VERSION=3.0.0-beta.16 # PUBKEYS STAGING_DOMAINS_PUBKEY=7FsWGsFnmVvRfMDpzz95Np76wf/1sPaK0Og9yiB+P8QbjiC8FV67NBans9hzZEkBaQMhiapzgMR6CkZIZPvgwQboAxl65JWRZecGe5V3XO4sdKeNemdAZ2TzQuWkuZoA ALFAJORES_DOMAINS_PUBKEY=+ZrxyPvLChWUX/DyPw6TuGwQH0glDJEbSrSxUARyP5PuqYyP/U4WZTV1e0bAUioBZ6QCJMiLpDwTaFvy8VnmM5RBbLQUMrMg5p4+CBCqj6HhsMfcyUj8V0LyuNdStlCB diff --git a/packages/phone-number-privacy/signer/jest.config.js b/packages/phone-number-privacy/signer/jest.config.js index e2a0bf634a6..1312f090e3e 100644 --- a/packages/phone-number-privacy/signer/jest.config.js +++ b/packages/phone-number-privacy/signer/jest.config.js @@ -5,7 +5,7 @@ module.exports = { collectCoverageFrom: ['./src/**'], coverageThreshold: { global: { - lines: 76, + lines: 68, // TODO increase this threshold }, }, } diff --git a/packages/phone-number-privacy/signer/package.json b/packages/phone-number-privacy/signer/package.json index 06fff2c3099..aeb0da50812 100644 --- a/packages/phone-number-privacy/signer/package.json +++ b/packages/phone-number-privacy/signer/package.json @@ -1,6 +1,6 @@ { "name": "@celo/phone-number-privacy-signer", - "version": "3.0.0-dev", + "version": "3.0.0-beta.16", "description": "Signing participator of ODIS", "author": "Celo", "license": "Apache-2.0", @@ -39,12 +39,12 @@ "ssl:keygen": "./scripts/create-ssl-cert.sh" }, "dependencies": { - "@celo/base": "^4.1.1-dev", - "@celo/contractkit": "^4.1.1-dev", - "@celo/phone-number-privacy-common": "^3.0.0-dev", + "@celo/base": "^4.1.1-beta.1", + "@celo/contractkit": "^4.1.1-beta.1", + "@celo/phone-number-privacy-common": "^3.0.0-beta.3", "@celo/poprf": "^0.1.9", - "@celo/utils": "^4.1.1-dev", - "@celo/wallet-hsm-azure": "^4.1.1-dev", + "@celo/utils": "^4.1.1-beta.1", + "@celo/wallet-hsm-azure": "^4.1.1-beta.1", "@google-cloud/secret-manager": "3.0.0", "@opentelemetry/api": "^1.4.1", "@opentelemetry/auto-instrumentations-node": "^0.38.0", @@ -61,9 +61,11 @@ "knex": "^2.1.0", "mssql": "^6.3.1", "mysql2": "^2.1.0", + "cron": "^2.4.1", "pg": "^8.2.1", "prom-client": "12.0.0", - "promise.allsettled": "^1.0.2" + "promise.allsettled": "^1.0.2", + "lru-cache": "^10.0.1" }, "devDependencies": { "@types/express": "^4.17.6", diff --git a/packages/phone-number-privacy/signer/scripts/run-migrations.ts b/packages/phone-number-privacy/signer/scripts/run-migrations.ts index 583e13b6b29..d148b947bfb 100644 --- a/packages/phone-number-privacy/signer/scripts/run-migrations.ts +++ b/packages/phone-number-privacy/signer/scripts/run-migrations.ts @@ -6,7 +6,7 @@ import { config } from '../src/config' async function start() { console.info('Running migrations') console.warn('It is no longer necessary to run db migrations seperately prior to startup') - await initDatabase(config, undefined, false) + await initDatabase(config, undefined) } start() diff --git a/packages/phone-number-privacy/signer/src/common/action.ts b/packages/phone-number-privacy/signer/src/common/action.ts deleted file mode 100644 index 7b77c4b38eb..00000000000 --- a/packages/phone-number-privacy/signer/src/common/action.ts +++ /dev/null @@ -1,21 +0,0 @@ -import { - DomainRequest, - OdisRequest, - PhoneNumberPrivacyRequest, -} from '@celo/phone-number-privacy-common' -import { SignerConfig } from '../config' -import { DomainSession } from '../domain/session' -import { PnpSession } from '../pnp/session' -import { IO } from './io' - -export type Session = R extends DomainRequest - ? DomainSession - : never | R extends PhoneNumberPrivacyRequest - ? PnpSession - : never - -export interface Action { - readonly config: SignerConfig - readonly io: IO - perform(session: Session, timeoutError: symbol): Promise -} diff --git a/packages/phone-number-privacy/signer/src/common/bls/bls-cryptography-client.ts b/packages/phone-number-privacy/signer/src/common/bls/bls-cryptography-client.ts index 6e8b2d0205f..8949df8a5c9 100644 --- a/packages/phone-number-privacy/signer/src/common/bls/bls-cryptography-client.ts +++ b/packages/phone-number-privacy/signer/src/common/bls/bls-cryptography-client.ts @@ -1,6 +1,7 @@ import { ErrorMessage } from '@celo/phone-number-privacy-common' import threshold_bls from 'blind-threshold-bls' import Logger from 'bunyan' +import { OdisError } from '../error' import { Counters } from '../metrics' /* * Computes the BLS signature for the blinded phone number. @@ -23,9 +24,9 @@ export function computeBlindedSignature( } return Buffer.from(signedMsg).toString('base64') - } catch (err) { + } catch (err: any) { Counters.signatureComputationErrors.inc() logger.error({ err }, ErrorMessage.SIGNATURE_COMPUTATION_FAILURE) - throw new Error(ErrorMessage.SIGNATURE_COMPUTATION_FAILURE) + throw new OdisError(ErrorMessage.SIGNATURE_COMPUTATION_FAILURE, err) } } diff --git a/packages/phone-number-privacy/signer/src/common/context.ts b/packages/phone-number-privacy/signer/src/common/context.ts new file mode 100644 index 00000000000..16d3e4977de --- /dev/null +++ b/packages/phone-number-privacy/signer/src/common/context.ts @@ -0,0 +1,7 @@ +import Logger from 'bunyan' + +export interface Context { + logger: Logger + url: string + errors: string[] +} diff --git a/packages/phone-number-privacy/signer/src/common/controller.ts b/packages/phone-number-privacy/signer/src/common/controller.ts deleted file mode 100644 index 295b7a671aa..00000000000 --- a/packages/phone-number-privacy/signer/src/common/controller.ts +++ /dev/null @@ -1,61 +0,0 @@ -import { - ErrorMessage, - ErrorType, - OdisRequest, - OdisResponse, - WarningMessage, -} from '@celo/phone-number-privacy-common' -import { Request, Response } from 'express' -import { Action } from './action' -import { Counters, Histograms, meter } from './metrics' - -import opentelemetry from '@opentelemetry/api' -const tracer = opentelemetry.trace.getTracer('signer-tracer') - -export class Controller { - constructor(readonly action: Action) {} - - public async handle( - request: Request<{}, {}, unknown>, - response: Response> - ): Promise { - Counters.requests.labels(this.action.io.endpoint).inc() - // Unique error to be thrown on timeout - const timeoutError = Symbol() - await meter( - async () => { - // tslint:disable-next-line:no-floating-promises - return tracer.startActiveSpan('Controller - handle', async (span) => { - span.addEvent('Calling init') - const session = await this.action.io.init(request, response) - // Init returns a response to the user internally. - if (session) { - span.addEvent('Calling perform') - await this.action.perform(session, timeoutError) - } - span.end() - }) - }, - [], - (err: any) => { - response.locals.logger.error({ err }, `Error in handler for ${this.action.io.endpoint}`) - - let errMsg: ErrorType = ErrorMessage.UNKNOWN_ERROR - if (err === timeoutError) { - Counters.timeouts.inc() - errMsg = ErrorMessage.TIMEOUT_FROM_SIGNER - } else if ( - err instanceof Error && - // Propagate standard error & warning messages thrown during endpoint handling - (Object.values(ErrorMessage).includes(err.message as ErrorMessage) || - Object.values(WarningMessage).includes(err.message as WarningMessage)) - ) { - errMsg = err.message as ErrorType - } - this.action.io.sendFailure(errMsg, 500, response) - }, - Histograms.responseLatency, - [this.action.io.endpoint] - ) - } -} diff --git a/packages/phone-number-privacy/signer/src/common/database/database.ts b/packages/phone-number-privacy/signer/src/common/database/database.ts index cee48e7f7dc..3af9269e75e 100644 --- a/packages/phone-number-privacy/signer/src/common/database/database.ts +++ b/packages/phone-number-privacy/signer/src/common/database/database.ts @@ -1,15 +1,10 @@ import { rootLogger } from '@celo/phone-number-privacy-common' -import Logger from 'bunyan' import { Knex, knex } from 'knex' import { DEV_MODE, SignerConfig, SupportedDatabase, VERBOSE_DB_LOGGING } from '../../config' -import { ACCOUNTS_COLUMNS, ACCOUNTS_TABLE } from './models/account' -export async function initDatabase( - config: SignerConfig, - migrationsPath?: string, - doTestQuery = true -): Promise { +export async function initDatabase(config: SignerConfig, migrationsPath?: string): Promise { const logger = rootLogger(config.serviceName) + logger.info({ config: config.db }, 'Initializing database connection') const { type, host, port, user, password, database, ssl, poolMaxSize } = config.db @@ -72,26 +67,6 @@ export async function initDatabase( loadExtensions: ['.js'], }) - if (doTestQuery) { - await executeTestQuery(db, logger) - } - logger.info('Database initialized successfully') return db } - -async function executeTestQuery(db: Knex, logger: Logger) { - logger.info('Counting accounts') - const result = await db(ACCOUNTS_TABLE.LEGACY).count(ACCOUNTS_COLUMNS.address).first() - - if (!result) { - throw new Error('No result from count, have migrations been run?') - } - - const count = Object.values(result)[0] - if (count === undefined || count === null || count === '') { - throw new Error('No result from count, have migrations been run?') - } - - logger.info(`Found ${count} accounts`) -} diff --git a/packages/phone-number-privacy/signer/src/common/database/migrations/20200330212224_create-accounts-table.ts b/packages/phone-number-privacy/signer/src/common/database/migrations/20200330212224_create-accounts-table.ts index fae5a17ca13..85ab5b88b51 100644 --- a/packages/phone-number-privacy/signer/src/common/database/migrations/20200330212224_create-accounts-table.ts +++ b/packages/phone-number-privacy/signer/src/common/database/migrations/20200330212224_create-accounts-table.ts @@ -1,10 +1,10 @@ import { Knex } from 'knex' -import { ACCOUNTS_COLUMNS, ACCOUNTS_TABLE } from '../models/account' +import { ACCOUNTS_COLUMNS } from '../models/account' export async function up(knex: Knex): Promise { // This check was necessary to switch from using .ts migrations to .js migrations. - if (!(await knex.schema.hasTable(ACCOUNTS_TABLE.LEGACY))) { - return knex.schema.createTable(ACCOUNTS_TABLE.LEGACY, (t) => { + if (!(await knex.schema.hasTable('accounts'))) { + return knex.schema.createTable('accounts', (t) => { t.string(ACCOUNTS_COLUMNS.address).notNullable().primary() t.dateTime(ACCOUNTS_COLUMNS.createdAt).notNullable() t.integer(ACCOUNTS_COLUMNS.numLookups).unsigned() @@ -14,5 +14,5 @@ export async function up(knex: Knex): Promise { } export async function down(knex: Knex): Promise { - return knex.schema.dropTable(ACCOUNTS_TABLE.LEGACY) + return knex.schema.dropTable('accounts') } diff --git a/packages/phone-number-privacy/signer/src/common/database/migrations/20200811163913_create_requests_table.ts b/packages/phone-number-privacy/signer/src/common/database/migrations/20200811163913_create_requests_table.ts index 8c8014725d5..b7c92f0ecfa 100644 --- a/packages/phone-number-privacy/signer/src/common/database/migrations/20200811163913_create_requests_table.ts +++ b/packages/phone-number-privacy/signer/src/common/database/migrations/20200811163913_create_requests_table.ts @@ -1,10 +1,10 @@ import { Knex } from 'knex' -import { REQUESTS_COLUMNS, REQUESTS_TABLE } from '../models/request' +import { REQUESTS_COLUMNS } from '../models/request' export async function up(knex: Knex): Promise { // This check was necessary to switch from using .ts migrations to .js migrations. - if (!(await knex.schema.hasTable(REQUESTS_TABLE.LEGACY))) { - return knex.schema.createTable(REQUESTS_TABLE.LEGACY, (t) => { + if (!(await knex.schema.hasTable('requests'))) { + return knex.schema.createTable('requests', (t) => { t.string(REQUESTS_COLUMNS.address).notNullable() t.dateTime(REQUESTS_COLUMNS.timestamp).notNullable() t.string(REQUESTS_COLUMNS.blindedQuery).notNullable() @@ -19,5 +19,5 @@ export async function up(knex: Knex): Promise { } export async function down(knex: Knex): Promise { - return knex.schema.dropTable(REQUESTS_TABLE.LEGACY) + return knex.schema.dropTable('requests') } diff --git a/packages/phone-number-privacy/signer/src/common/database/migrations/20210421212301_create-indices.ts b/packages/phone-number-privacy/signer/src/common/database/migrations/20210421212301_create-indices.ts index 94672330d33..9b01ae66ae2 100644 --- a/packages/phone-number-privacy/signer/src/common/database/migrations/20210421212301_create-indices.ts +++ b/packages/phone-number-privacy/signer/src/common/database/migrations/20210421212301_create-indices.ts @@ -1,17 +1,17 @@ import { Knex } from 'knex' -import { ACCOUNTS_COLUMNS, ACCOUNTS_TABLE } from '../models/account' +import { ACCOUNTS_COLUMNS } from '../models/account' export async function up(knex: Knex): Promise { - if (!(await knex.schema.hasTable(ACCOUNTS_TABLE.LEGACY))) { - throw new Error('Unexpected error: Could not find ACCOUNTS_TABLE.LEGACY') + if (!(await knex.schema.hasTable('accounts'))) { + throw new Error('Unexpected error: Could not find accounts') } - return knex.schema.alterTable(ACCOUNTS_TABLE.LEGACY, (t) => { + return knex.schema.alterTable('accounts', (t) => { t.index(ACCOUNTS_COLUMNS.address) }) } export async function down(knex: Knex): Promise { - return knex.schema.alterTable(ACCOUNTS_TABLE.LEGACY, (t) => { + return knex.schema.alterTable('accounts', (t) => { t.dropIndex(ACCOUNTS_COLUMNS.address) }) } diff --git a/packages/phone-number-privacy/signer/src/common/database/migrations/20220923161710_pnp-requests-onchain.ts b/packages/phone-number-privacy/signer/src/common/database/migrations/20220923161710_pnp-requests-onchain.ts index 9e1dd91184e..8f5563912a8 100644 --- a/packages/phone-number-privacy/signer/src/common/database/migrations/20220923161710_pnp-requests-onchain.ts +++ b/packages/phone-number-privacy/signer/src/common/database/migrations/20220923161710_pnp-requests-onchain.ts @@ -2,13 +2,14 @@ import { Knex } from 'knex' import { REQUESTS_COLUMNS, REQUESTS_TABLE } from '../models/request' export async function up(knex: Knex): Promise { - if (!(await knex.schema.hasTable(REQUESTS_TABLE.ONCHAIN))) { - return knex.schema.createTable(REQUESTS_TABLE.ONCHAIN, (t) => { + if (!(await knex.schema.hasTable(REQUESTS_TABLE))) { + return knex.schema.createTable(REQUESTS_TABLE, (t) => { t.string(REQUESTS_COLUMNS.address).notNullable() t.dateTime(REQUESTS_COLUMNS.timestamp).notNullable() t.string(REQUESTS_COLUMNS.blindedQuery).notNullable() t.primary([ REQUESTS_COLUMNS.address, + // Note: the order of these should be switched. Done in follow up migration. REQUESTS_COLUMNS.timestamp, REQUESTS_COLUMNS.blindedQuery, ]) @@ -18,5 +19,5 @@ export async function up(knex: Knex): Promise { } export async function down(knex: Knex): Promise { - return knex.schema.dropTable(REQUESTS_TABLE.ONCHAIN) + return knex.schema.dropTable(REQUESTS_TABLE) } diff --git a/packages/phone-number-privacy/signer/src/common/database/migrations/20220923165433_pnp-accounts-onchain.ts b/packages/phone-number-privacy/signer/src/common/database/migrations/20220923165433_pnp-accounts-onchain.ts index 8e3d3e16843..a4bb390eb74 100644 --- a/packages/phone-number-privacy/signer/src/common/database/migrations/20220923165433_pnp-accounts-onchain.ts +++ b/packages/phone-number-privacy/signer/src/common/database/migrations/20220923165433_pnp-accounts-onchain.ts @@ -3,8 +3,10 @@ import { ACCOUNTS_COLUMNS, ACCOUNTS_TABLE } from '../models/account' export async function up(knex: Knex): Promise { // This check was necessary to switch from using .ts migrations to .js migrations. - if (!(await knex.schema.hasTable(ACCOUNTS_TABLE.ONCHAIN))) { - return knex.schema.createTable(ACCOUNTS_TABLE.ONCHAIN, (t) => { + if (!(await knex.schema.hasTable(ACCOUNTS_TABLE))) { + return knex.schema.createTable(ACCOUNTS_TABLE, (t) => { + // Note: this creates a double index and may be hurting insertion times. Fixed in follow up migration. + // (https://www.percona.com/blog/duplicate-indexes-and-redundant-indexes/) t.string(ACCOUNTS_COLUMNS.address).notNullable().primary().index() t.dateTime(ACCOUNTS_COLUMNS.createdAt).notNullable() t.integer(ACCOUNTS_COLUMNS.numLookups).unsigned() @@ -14,5 +16,5 @@ export async function up(knex: Knex): Promise { } export async function down(knex: Knex): Promise { - return knex.schema.dropTable(ACCOUNTS_TABLE.ONCHAIN) + return knex.schema.dropTable(ACCOUNTS_TABLE) } diff --git a/packages/phone-number-privacy/signer/src/common/database/migrations/20230818223141_rename-legacy-accounts-table.ts b/packages/phone-number-privacy/signer/src/common/database/migrations/20230818223141_rename-legacy-accounts-table.ts new file mode 100644 index 00000000000..876e12aebc7 --- /dev/null +++ b/packages/phone-number-privacy/signer/src/common/database/migrations/20230818223141_rename-legacy-accounts-table.ts @@ -0,0 +1,9 @@ +import { Knex } from 'knex' + +export async function up(knex: Knex): Promise { + return knex.schema.renameTable('accounts', 'accountsLegacy') +} + +export async function down(knex: Knex): Promise { + return knex.schema.renameTable('accountsLegacy', 'accounts') +} diff --git a/packages/phone-number-privacy/signer/src/common/database/migrations/20230818223301_rename-legacy-requests-table.ts b/packages/phone-number-privacy/signer/src/common/database/migrations/20230818223301_rename-legacy-requests-table.ts new file mode 100644 index 00000000000..fc9fda86a23 --- /dev/null +++ b/packages/phone-number-privacy/signer/src/common/database/migrations/20230818223301_rename-legacy-requests-table.ts @@ -0,0 +1,9 @@ +import { Knex } from 'knex' + +export async function up(knex: Knex): Promise { + return knex.schema.renameTable('requests', 'requestsLegacy') +} + +export async function down(knex: Knex): Promise { + return knex.schema.renameTable('requestsLegacy', 'requests') +} diff --git a/packages/phone-number-privacy/signer/src/common/database/migrations/20230818223359_drop-legacy-requests-table.ts b/packages/phone-number-privacy/signer/src/common/database/migrations/20230818223359_drop-legacy-requests-table.ts new file mode 100644 index 00000000000..64d2c70f1f0 --- /dev/null +++ b/packages/phone-number-privacy/signer/src/common/database/migrations/20230818223359_drop-legacy-requests-table.ts @@ -0,0 +1,16 @@ +import { Knex } from 'knex' +import { REQUESTS_COLUMNS } from '../models/request' + +export async function up(knex: Knex): Promise { + return knex.schema.dropTable('requestsLegacy') +} + +export async function down(knex: Knex): Promise { + // Note this will not restore data + return knex.schema.createTable('requestsLegacy', (t) => { + t.string(REQUESTS_COLUMNS.address).notNullable() + t.dateTime(REQUESTS_COLUMNS.timestamp).notNullable() + t.string(REQUESTS_COLUMNS.blindedQuery).notNullable() + t.primary([REQUESTS_COLUMNS.address, REQUESTS_COLUMNS.timestamp, REQUESTS_COLUMNS.blindedQuery]) + }) +} diff --git a/packages/phone-number-privacy/signer/src/common/database/migrations/20230818223416_drop-legacy-accounts-table.ts b/packages/phone-number-privacy/signer/src/common/database/migrations/20230818223416_drop-legacy-accounts-table.ts new file mode 100644 index 00000000000..5e320111c7d --- /dev/null +++ b/packages/phone-number-privacy/signer/src/common/database/migrations/20230818223416_drop-legacy-accounts-table.ts @@ -0,0 +1,15 @@ +import { Knex } from 'knex' +import { ACCOUNTS_COLUMNS } from '../models/account' + +export async function up(knex: Knex): Promise { + return knex.schema.dropTable('accountsLegacy') +} + +export async function down(knex: Knex): Promise { + // Note this will not restore data + return knex.schema.createTable('accountsLegacy', (t) => { + t.string(ACCOUNTS_COLUMNS.address).notNullable().primary() + t.dateTime(ACCOUNTS_COLUMNS.createdAt).notNullable() + t.integer(ACCOUNTS_COLUMNS.numLookups).unsigned() + }) +} diff --git a/packages/phone-number-privacy/signer/src/common/database/migrations/20230818224022_drop-timestamp-from-requests-primary-key.ts b/packages/phone-number-privacy/signer/src/common/database/migrations/20230818224022_drop-timestamp-from-requests-primary-key.ts new file mode 100644 index 00000000000..78eae451e52 --- /dev/null +++ b/packages/phone-number-privacy/signer/src/common/database/migrations/20230818224022_drop-timestamp-from-requests-primary-key.ts @@ -0,0 +1,16 @@ +import { Knex } from 'knex' +import { REQUESTS_COLUMNS, REQUESTS_TABLE } from '../models/request' + +export async function up(knex: Knex): Promise { + return knex.schema.alterTable(REQUESTS_TABLE, (t) => { + t.dropPrimary() + t.primary([REQUESTS_COLUMNS.address, REQUESTS_COLUMNS.blindedQuery, REQUESTS_COLUMNS.timestamp]) + }) +} + +export async function down(knex: Knex): Promise { + return knex.schema.alterTable(REQUESTS_TABLE, (t) => { + t.dropPrimary() + t.primary([REQUESTS_COLUMNS.address, REQUESTS_COLUMNS.timestamp, REQUESTS_COLUMNS.blindedQuery]) + }) +} diff --git a/packages/phone-number-privacy/signer/src/common/database/migrations/20230818230722_drop-redundant-account-index.ts b/packages/phone-number-privacy/signer/src/common/database/migrations/20230818230722_drop-redundant-account-index.ts new file mode 100644 index 00000000000..182137a7c8c --- /dev/null +++ b/packages/phone-number-privacy/signer/src/common/database/migrations/20230818230722_drop-redundant-account-index.ts @@ -0,0 +1,14 @@ +import { Knex } from 'knex' +import { ACCOUNTS_COLUMNS, ACCOUNTS_TABLE } from '../models/account' + +export async function up(knex: Knex): Promise { + return knex.schema.alterTable(ACCOUNTS_TABLE, (t) => { + t.dropIndex(ACCOUNTS_COLUMNS.address) + }) +} + +export async function down(knex: Knex): Promise { + return knex.schema.alterTable(ACCOUNTS_TABLE, (t) => { + t.index(ACCOUNTS_COLUMNS.address) + }) +} diff --git a/packages/phone-number-privacy/signer/src/common/database/migrations/20230825150243_add_signature_request_column.ts b/packages/phone-number-privacy/signer/src/common/database/migrations/20230825150243_add_signature_request_column.ts new file mode 100644 index 00000000000..5f7c4157287 --- /dev/null +++ b/packages/phone-number-privacy/signer/src/common/database/migrations/20230825150243_add_signature_request_column.ts @@ -0,0 +1,14 @@ +import { Knex } from 'knex' +import { REQUESTS_COLUMNS, REQUESTS_TABLE } from '../models/request' + +export async function up(knex: Knex): Promise { + return knex.schema.alterTable(REQUESTS_TABLE, (t) => { + t.string(REQUESTS_COLUMNS.signature) + }) +} + +export async function down(knex: Knex): Promise { + return knex.schema.alterTable(REQUESTS_TABLE, (t) => { + t.dropColumn(REQUESTS_COLUMNS.signature) + }) +} diff --git a/packages/phone-number-privacy/signer/src/common/database/migrations/20230828180024_add-request-timestamp-index.ts b/packages/phone-number-privacy/signer/src/common/database/migrations/20230828180024_add-request-timestamp-index.ts new file mode 100644 index 00000000000..9801fa3fba9 --- /dev/null +++ b/packages/phone-number-privacy/signer/src/common/database/migrations/20230828180024_add-request-timestamp-index.ts @@ -0,0 +1,14 @@ +import { Knex } from 'knex' +import { REQUESTS_COLUMNS, REQUESTS_TABLE } from '../models/request' + +export async function up(knex: Knex): Promise { + return knex.schema.alterTable(REQUESTS_TABLE, (t) => { + t.index(REQUESTS_COLUMNS.timestamp) + }) +} + +export async function down(knex: Knex): Promise { + return knex.schema.alterTable(REQUESTS_TABLE, (t) => { + t.dropIndex(REQUESTS_COLUMNS.timestamp) + }) +} diff --git a/packages/phone-number-privacy/signer/src/common/database/models/account.ts b/packages/phone-number-privacy/signer/src/common/database/models/account.ts index e3afb6aa911..3b74dc5b520 100644 --- a/packages/phone-number-privacy/signer/src/common/database/models/account.ts +++ b/packages/phone-number-privacy/signer/src/common/database/models/account.ts @@ -1,7 +1,4 @@ -export enum ACCOUNTS_TABLE { - ONCHAIN = 'accountsOnChain', - LEGACY = 'accounts', // TODO figure out right way to drop this table now that it's no longer in use -} +export const ACCOUNTS_TABLE = 'accountsOnChain' export enum ACCOUNTS_COLUMNS { address = 'address', diff --git a/packages/phone-number-privacy/signer/src/common/database/models/request.ts b/packages/phone-number-privacy/signer/src/common/database/models/request.ts index dcdb5ae5f75..2cc9aba4982 100644 --- a/packages/phone-number-privacy/signer/src/common/database/models/request.ts +++ b/packages/phone-number-privacy/signer/src/common/database/models/request.ts @@ -1,27 +1,28 @@ -export enum REQUESTS_TABLE { - LEGACY = 'requests', - ONCHAIN = 'requestsOnChain', -} +export const REQUESTS_TABLE = 'requestsOnChain' export enum REQUESTS_COLUMNS { address = 'caller_address', timestamp = 'timestamp', blindedQuery = 'blinded_query', + signature = 'signature', } export interface PnpSignRequestRecord { [REQUESTS_COLUMNS.address]: string [REQUESTS_COLUMNS.timestamp]: Date [REQUESTS_COLUMNS.blindedQuery]: string + [REQUESTS_COLUMNS.signature]: string | undefined } export function toPnpSignRequestRecord( account: string, - blindedQuery: string + blindedQuery: string, + signature: string ): PnpSignRequestRecord { return { [REQUESTS_COLUMNS.address]: account, [REQUESTS_COLUMNS.timestamp]: new Date(), [REQUESTS_COLUMNS.blindedQuery]: blindedQuery, + [REQUESTS_COLUMNS.signature]: signature, } } diff --git a/packages/phone-number-privacy/signer/src/common/database/utils.ts b/packages/phone-number-privacy/signer/src/common/database/utils.ts index 4d2f8c03eef..70f7ade5238 100644 --- a/packages/phone-number-privacy/signer/src/common/database/utils.ts +++ b/packages/phone-number-privacy/signer/src/common/database/utils.ts @@ -1,18 +1,19 @@ import { ErrorMessage } from '@celo/phone-number-privacy-common' import Logger from 'bunyan' -import { Knex } from 'knex' -import { Counters, Labels } from '../metrics' +import { OdisError } from '../error' +import { Counters, Histograms, Labels, newMeter } from '../metrics' export type DatabaseErrorMessage = | ErrorMessage.DATABASE_GET_FAILURE | ErrorMessage.DATABASE_INSERT_FAILURE | ErrorMessage.DATABASE_UPDATE_FAILURE + | ErrorMessage.DATABASE_REMOVE_FAILURE -export function countAndThrowDBError( +export function countAndThrowDBError( err: any, logger: Logger, errorMsg: DatabaseErrorMessage -): T { +): never { let label: Labels switch (errorMsg) { case ErrorMessage.DATABASE_UPDATE_FAILURE: @@ -24,19 +25,28 @@ export function countAndThrowDBError( case ErrorMessage.DATABASE_INSERT_FAILURE: label = Labels.INSERT break + case ErrorMessage.DATABASE_REMOVE_FAILURE: + label = Labels.BATCH_DELETE + break default: throw new Error('Unknown database label provided') } Counters.databaseErrors.labels(label).inc() logger.error({ err }, errorMsg) - throw new Error(errorMsg) + throw new OdisError(errorMsg) } -export function tableWithLockForTrx(baseQuery: Knex.QueryBuilder, trx?: Knex.Transaction) { - if (trx) { - // Lock relevant database rows for the duration of the transaction - return baseQuery.transacting(trx).forUpdate() - } - return baseQuery +export function doMeteredSql( + sqlLabel: string, + errorMsg: DatabaseErrorMessage, + logger: Logger, + fn: () => Promise +): Promise { + const meter = newMeter(Histograms.dbOpsInstrumentation, sqlLabel) + + return meter(async () => { + const res = await fn() + return res + }).catch((err) => countAndThrowDBError(err, logger, errorMsg)) } diff --git a/packages/phone-number-privacy/signer/src/common/database/wrappers/account.ts b/packages/phone-number-privacy/signer/src/common/database/wrappers/account.ts index f5a11122df2..264f894669d 100644 --- a/packages/phone-number-privacy/signer/src/common/database/wrappers/account.ts +++ b/packages/phone-number-privacy/signer/src/common/database/wrappers/account.ts @@ -2,62 +2,48 @@ import { ErrorMessage } from '@celo/phone-number-privacy-common' import Logger from 'bunyan' import { Knex } from 'knex' import { config } from '../../../config' -import { Histograms, meter } from '../../metrics' import { AccountRecord, ACCOUNTS_COLUMNS, ACCOUNTS_TABLE, toAccountRecord } from '../models/account' -import { countAndThrowDBError, tableWithLockForTrx } from '../utils' - -function accounts(db: Knex, table: ACCOUNTS_TABLE) { - return db(table) -} +import { doMeteredSql } from '../utils' /* * Returns how many queries the account has already performed. */ export async function getPerformedQueryCount( db: Knex, - accountsTable: ACCOUNTS_TABLE, account: string, - logger: Logger, - trx?: Knex.Transaction + logger: Logger ): Promise { - return meter( + logger.debug({ account }, 'Getting performed query count') + return doMeteredSql( + 'getPerformedQueryCount', + ErrorMessage.DATABASE_GET_FAILURE, + logger, async () => { - logger.debug({ account }, 'Getting performed query count') - const queryCounts = await tableWithLockForTrx(accounts(db, accountsTable), trx) - .select(ACCOUNTS_COLUMNS.numLookups) + const queryCounts = await db(ACCOUNTS_TABLE) .where(ACCOUNTS_COLUMNS.address, account) + .select(ACCOUNTS_COLUMNS.numLookups) .first() .timeout(config.db.timeout) return queryCounts === undefined ? 0 : queryCounts[ACCOUNTS_COLUMNS.numLookups] - }, - [], - (err: any) => countAndThrowDBError(err, logger, ErrorMessage.DATABASE_GET_FAILURE), - Histograms.dbOpsInstrumentation, - ['getPerformedQueryCount'] + } ) } async function getAccountExists( db: Knex, - accountsTable: ACCOUNTS_TABLE, account: string, logger: Logger, trx?: Knex.Transaction ): Promise { - return meter( - async () => { - const accountRecord = await tableWithLockForTrx(accounts(db, accountsTable), trx) - .where(ACCOUNTS_COLUMNS.address, account) - .first() - .timeout(config.db.timeout) + return doMeteredSql('getAccountExists', ErrorMessage.DATABASE_GET_FAILURE, logger, async () => { + const sql = db(ACCOUNTS_TABLE) + .where(ACCOUNTS_COLUMNS.address, account) + .first() + .timeout(config.db.timeout) - return !!accountRecord - }, - [], - (err: any) => countAndThrowDBError(err, logger, ErrorMessage.DATABASE_GET_FAILURE), - Histograms.dbOpsInstrumentation, - ['getAccountExists'] - ) + const accountRecord = await (trx != null ? sql.transacting(trx) : sql) + return !!accountRecord + }) } /* @@ -65,42 +51,28 @@ async function getAccountExists( */ export async function incrementQueryCount( db: Knex, - accountsTable: ACCOUNTS_TABLE, account: string, logger: Logger, - trx: Knex.Transaction + trx?: Knex.Transaction ): Promise { - return meter( + logger.debug({ account }, 'Incrementing query count') + return doMeteredSql( + 'incrementQueryCount', + ErrorMessage.DATABASE_INSERT_FAILURE, + logger, async () => { - logger.debug({ account }, 'Incrementing query count') - if (await getAccountExists(db, accountsTable, account, logger, trx)) { - await accounts(db, accountsTable) - .transacting(trx) + if (await getAccountExists(db, account, logger, trx)) { + const sql = db(ACCOUNTS_TABLE) .where(ACCOUNTS_COLUMNS.address, account) .increment(ACCOUNTS_COLUMNS.numLookups, 1) .timeout(config.db.timeout) + await (trx != null ? sql.transacting(trx) : sql) } else { - const newAccountRecord = toAccountRecord(account, 1) - await insertRecord(db, accountsTable, newAccountRecord, logger, trx) + const sql = db(ACCOUNTS_TABLE) + .insert(toAccountRecord(account, 1)) + .timeout(config.db.timeout) + await (trx != null ? sql.transacting(trx) : sql) } - }, - [], - (err: any) => countAndThrowDBError(err, logger, ErrorMessage.DATABASE_UPDATE_FAILURE), - Histograms.dbOpsInstrumentation, - ['incrementQueryCount'] + } ) } - -async function insertRecord( - db: Knex, - accountsTable: ACCOUNTS_TABLE, - data: AccountRecord, - logger: Logger, - trx: Knex.Transaction -): Promise { - try { - await accounts(db, accountsTable).transacting(trx).insert(data).timeout(config.db.timeout) - } catch (error) { - countAndThrowDBError(error, logger, ErrorMessage.DATABASE_INSERT_FAILURE) - } -} diff --git a/packages/phone-number-privacy/signer/src/common/database/wrappers/domain-request.ts b/packages/phone-number-privacy/signer/src/common/database/wrappers/domain-request.ts index 35428f423d0..ef7506d75f1 100644 --- a/packages/phone-number-privacy/signer/src/common/database/wrappers/domain-request.ts +++ b/packages/phone-number-privacy/signer/src/common/database/wrappers/domain-request.ts @@ -2,22 +2,17 @@ import { Domain, domainHash, ErrorMessage } from '@celo/phone-number-privacy-com import Logger from 'bunyan' import { Knex } from 'knex' import { config } from '../../../config' -import { Histograms, meter } from '../../metrics' import { DOMAIN_REQUESTS_COLUMNS, DOMAIN_REQUESTS_TABLE, DomainRequestRecord, toDomainRequestRecord, } from '../models/domain-request' -import { countAndThrowDBError } from '../utils' +import { doMeteredSql } from '../utils' // TODO implement replay handling; this file is currently unused // https://github.com/celo-org/celo-monorepo/issues/9909 -function domainRequests(db: Knex) { - return db(DOMAIN_REQUESTS_TABLE) -} - export async function getDomainRequestRecordExists( db: Knex, domain: D, @@ -25,11 +20,14 @@ export async function getDomainRequestRecordExists( trx: Knex.Transaction, logger: Logger ): Promise { - return meter( + const hash = domainHash(domain).toString('hex') + logger.debug({ domain, blindedMessage, hash }, 'Checking if domain request exists') + return doMeteredSql( + 'getDomainRequestRecordExists', + ErrorMessage.DATABASE_GET_FAILURE, + logger, async () => { - const hash = domainHash(domain).toString('hex') - logger.debug({ domain, blindedMessage, hash }, 'Checking if domain request exists') - const existingRequest = await domainRequests(db) + const existingRequest = await db(DOMAIN_REQUESTS_TABLE) .transacting(trx) .where({ [DOMAIN_REQUESTS_COLUMNS.domainHash]: hash, @@ -38,11 +36,7 @@ export async function getDomainRequestRecordExists( .first() .timeout(config.db.timeout) return !!existingRequest - }, - [], - (err: any) => countAndThrowDBError(err, logger, ErrorMessage.DATABASE_GET_FAILURE), - Histograms.dbOpsInstrumentation, - ['getDomainRequestRecordExists'] + } ) } @@ -53,17 +47,40 @@ export async function storeDomainRequestRecord( trx: Knex.Transaction, logger: Logger ) { - return meter( + logger.debug({ domain, blindedMessage }, 'Storing domain restricted signature request') + return doMeteredSql( + 'storeDomainRequestRecord', + ErrorMessage.DATABASE_INSERT_FAILURE, + logger, async () => { - logger.debug({ domain, blindedMessage }, 'Storing domain restricted signature request') - await domainRequests(db) + await db(DOMAIN_REQUESTS_TABLE) .transacting(trx) .insert(toDomainRequestRecord(domain, blindedMessage)) .timeout(config.db.timeout) - }, - [], - (err: any) => countAndThrowDBError(err, logger, ErrorMessage.DATABASE_INSERT_FAILURE), - Histograms.dbOpsInstrumentation, - ['storeDomainRequestRecord'] + } + ) +} + +export async function deleteDomainRequestsOlderThan( + db: Knex, + date: Date, + logger: Logger, + trx?: Knex.Transaction +): Promise { + logger.debug(`Removing request older than: ${date}`) + if (date > new Date()) { + logger.debug('Date is in the future') + return 0 + } + return doMeteredSql( + 'deleteDomainRequestsOlderThan', + ErrorMessage.DATABASE_REMOVE_FAILURE, + logger, + async () => { + const sql = db(DOMAIN_REQUESTS_TABLE) + .where(DOMAIN_REQUESTS_COLUMNS.timestamp, '<=', date) + .del() + return trx != null ? sql.transacting(trx) : sql + } ) } diff --git a/packages/phone-number-privacy/signer/src/common/database/wrappers/domain-state.ts b/packages/phone-number-privacy/signer/src/common/database/wrappers/domain-state.ts index fd71b1fd97a..8cebb8625ba 100644 --- a/packages/phone-number-privacy/signer/src/common/database/wrappers/domain-state.ts +++ b/packages/phone-number-privacy/signer/src/common/database/wrappers/domain-state.ts @@ -3,18 +3,13 @@ import { Domain, domainHash } from '@celo/phone-number-privacy-common/lib/domain import Logger from 'bunyan' import { Knex } from 'knex' import { config } from '../../../config' -import { Histograms, meter } from '../../metrics' import { DOMAIN_STATE_COLUMNS, DOMAIN_STATE_TABLE, DomainStateRecord, toDomainStateRecord, } from '../models/domain-state' -import { countAndThrowDBError, tableWithLockForTrx } from '../utils' - -function domainStates(db: Knex) { - return db(DOMAIN_STATE_TABLE) -} +import { doMeteredSql } from '../utils' export async function setDomainDisabled( db: Knex, @@ -22,21 +17,15 @@ export async function setDomainDisabled( trx: Knex.Transaction, logger: Logger ): Promise { - return meter( - async () => { - const hash = domainHash(domain).toString('hex') - logger.debug({ hash, domain }, 'Disabling domain') - await domainStates(db) - .transacting(trx) - .where(DOMAIN_STATE_COLUMNS.domainHash, hash) - .update(DOMAIN_STATE_COLUMNS.disabled, true) - .timeout(config.db.timeout) - }, - [], - (err: any) => countAndThrowDBError(err, logger, ErrorMessage.DATABASE_UPDATE_FAILURE), - Histograms.dbOpsInstrumentation, - ['disableDomain'] - ) + const hash = domainHash(domain).toString('hex') + logger.debug({ hash, domain }, 'Disabling domain') + return doMeteredSql('disableDomain', ErrorMessage.DATABASE_UPDATE_FAILURE, logger, async () => { + await db(DOMAIN_STATE_TABLE) + .transacting(trx) + .where(DOMAIN_STATE_COLUMNS.domainHash, hash) + .update(DOMAIN_STATE_COLUMNS.disabled, true) + .timeout(config.db.timeout) + }) } export async function getDomainStateRecordOrEmpty( @@ -65,26 +54,26 @@ export async function getDomainStateRecord( logger: Logger, trx?: Knex.Transaction ): Promise { - return meter( + const hash = domainHash(domain).toString('hex') + logger.debug({ hash, domain }, 'Getting domain state from db') + return doMeteredSql( + 'getDomainStateRecord', + ErrorMessage.DATABASE_GET_FAILURE, + logger, async () => { - const hash = domainHash(domain).toString('hex') - logger.debug({ hash, domain }, 'Getting domain state from db') - const result = await tableWithLockForTrx(domainStates(db), trx) + const sql = db(DOMAIN_STATE_TABLE) .where(DOMAIN_STATE_COLUMNS.domainHash, hash) .first() .timeout(config.db.timeout) + const result = await (trx != null ? sql.transacting(trx) : sql) // bools are stored in db as ints (1 or 0), so we must cast them back if (result) { result.disabled = !!result.disabled } return result ?? null - }, - [], - (err: any) => countAndThrowDBError(err, logger, ErrorMessage.DATABASE_GET_FAILURE), - Histograms.dbOpsInstrumentation, - ['getDomainStateRecord'] + } ) } @@ -95,10 +84,13 @@ export async function updateDomainStateRecord( trx: Knex.Transaction, logger: Logger ): Promise { - return meter( + const hash = domainHash(domain).toString('hex') + logger.debug({ hash, domain, domainState }, 'Update domain state') + return doMeteredSql( + 'updateDomainStateRecord', + ErrorMessage.DATABASE_UPDATE_FAILURE, + logger, async () => { - const hash = domainHash(domain).toString('hex') - logger.debug({ hash, domain, domainState }, 'Update domain state') // Check whether the domain is already in the database. // The current signature flow results in redundant queries of the domain state. // Consider optimizing in the future: https://github.com/celo-org/celo-monorepo/issues/9855 @@ -108,17 +100,13 @@ export async function updateDomainStateRecord( if (!result) { await insertDomainStateRecord(db, domainState, trx, logger) } else { - await domainStates(db) + await db(DOMAIN_STATE_TABLE) .transacting(trx) .where(DOMAIN_STATE_COLUMNS.domainHash, hash) .update(domainState) .timeout(config.db.timeout) } - }, - [], - (err: any) => countAndThrowDBError(err, logger, ErrorMessage.DATABASE_UPDATE_FAILURE), - Histograms.dbOpsInstrumentation, - ['updateDomainStateRecord'] + } ) } @@ -128,15 +116,17 @@ export async function insertDomainStateRecord( trx: Knex.Transaction, logger: Logger ): Promise { - return meter( + logger.debug({ domainState }, 'Insert domain state') + return doMeteredSql( + 'insertDomainState', + ErrorMessage.DATABASE_INSERT_FAILURE, + logger, async () => { - logger.debug({ domainState }, 'Insert domain state') - await domainStates(db).transacting(trx).insert(domainState).timeout(config.db.timeout) + await db(DOMAIN_STATE_TABLE) + .transacting(trx) + .insert(domainState) + .timeout(config.db.timeout) return domainState - }, - [], - (err: any) => countAndThrowDBError(err, logger, ErrorMessage.DATABASE_INSERT_FAILURE), - Histograms.dbOpsInstrumentation, - ['insertDomainState'] + } ) } diff --git a/packages/phone-number-privacy/signer/src/common/database/wrappers/request.ts b/packages/phone-number-privacy/signer/src/common/database/wrappers/request.ts index 85e3d9b308e..9e843fa934d 100644 --- a/packages/phone-number-privacy/signer/src/common/database/wrappers/request.ts +++ b/packages/phone-number-privacy/signer/src/common/database/wrappers/request.ts @@ -2,67 +2,71 @@ import { ErrorMessage } from '@celo/phone-number-privacy-common' import Logger from 'bunyan' import { Knex } from 'knex' import { config } from '../../../config' -import { Histograms, meter } from '../../metrics' import { PnpSignRequestRecord, REQUESTS_COLUMNS, REQUESTS_TABLE, toPnpSignRequestRecord, } from '../models/request' -import { countAndThrowDBError, tableWithLockForTrx } from '../utils' +import { doMeteredSql } from '../utils' -function requests(db: Knex, table: REQUESTS_TABLE) { - return db(table) +export async function getRequestIfExists( + db: Knex, + account: string, + blindedQuery: string, + logger: Logger +): Promise { + logger.debug(`Checking if request exists for account: ${account}, blindedQuery: ${blindedQuery}`) + return doMeteredSql('getRequestIfExists', ErrorMessage.DATABASE_GET_FAILURE, logger, async () => { + const existingRequest = await db(REQUESTS_TABLE) + .where({ + [REQUESTS_COLUMNS.address]: account, + [REQUESTS_COLUMNS.blindedQuery]: blindedQuery, + }) + .first() + .timeout(config.db.timeout) + return existingRequest + }) } -export async function getRequestExists( +export async function insertRequest( db: Knex, - requestsTable: REQUESTS_TABLE, account: string, blindedQuery: string, + signature: string, logger: Logger, trx?: Knex.Transaction -): Promise { - return meter( - async () => { - logger.debug( - `Checking if request exists for account: ${account}, blindedQuery: ${blindedQuery}` - ) - const existingRequest = await tableWithLockForTrx(requests(db, requestsTable), trx) - .where({ - [REQUESTS_COLUMNS.address]: account, - [REQUESTS_COLUMNS.blindedQuery]: blindedQuery, - }) - .first() - .timeout(config.db.timeout) - return !!existingRequest - }, - [], - (err: any) => countAndThrowDBError(err, logger, ErrorMessage.DATABASE_GET_FAILURE), - Histograms.dbOpsInstrumentation, - ['getRequestExists'] +): Promise { + logger.debug( + `Storing salt request for: ${account}, blindedQuery: ${blindedQuery}, signature: ${signature}` ) + return doMeteredSql('insertRequest', ErrorMessage.DATABASE_INSERT_FAILURE, logger, async () => { + const sql = db(REQUESTS_TABLE) + .insert(toPnpSignRequestRecord(account, blindedQuery, signature)) + .timeout(config.db.timeout) + await (trx != null ? sql.transacting(trx) : sql) + }) } -export async function storeRequest( +export async function deleteRequestsOlderThan( db: Knex, - requestsTable: REQUESTS_TABLE, - account: string, - blindedQuery: string, - logger: Logger, - trx: Knex.Transaction -): Promise { - return meter( + since: Date, + logger: Logger +): Promise { + logger.debug(`Removing request older than: ${since}`) + if (since > new Date(Date.now())) { + logger.debug('Date is in the future') + return 0 + } + return doMeteredSql( + 'deleteRequestsOlderThan', + ErrorMessage.DATABASE_REMOVE_FAILURE, + logger, async () => { - logger.debug(`Storing salt request for: ${account}, blindedQuery: ${blindedQuery}`) - await requests(db, requestsTable) - .transacting(trx) - .insert(toPnpSignRequestRecord(account, blindedQuery)) - .timeout(config.db.timeout) - }, - [], - (err: any) => countAndThrowDBError(err, logger, ErrorMessage.DATABASE_INSERT_FAILURE), - Histograms.dbOpsInstrumentation, - ['storeRequest'] + const sql = db(REQUESTS_TABLE) + .where(REQUESTS_COLUMNS.timestamp, '<=', since) + .del() + return sql + } ) } diff --git a/packages/phone-number-privacy/signer/src/common/error.ts b/packages/phone-number-privacy/signer/src/common/error.ts new file mode 100644 index 00000000000..91060f23691 --- /dev/null +++ b/packages/phone-number-privacy/signer/src/common/error.ts @@ -0,0 +1,19 @@ +import { ErrorType } from '@celo/phone-number-privacy-common' + +export class OdisError extends Error { + constructor(readonly code: ErrorType, readonly parent?: Error, readonly status: number = 500) { + // This is necessary when extending Error Classes + super(code) // 'Error' breaks prototype chain here + Object.setPrototypeOf(this, new.target.prototype) // restore prototype chain + } +} + +export function wrapError( + valueOrError: Promise, + code: ErrorType, + status: number = 500 +): Promise { + return valueOrError.catch((parentErr) => { + throw new OdisError(code, parentErr, status) + }) +} diff --git a/packages/phone-number-privacy/signer/src/common/handler.ts b/packages/phone-number-privacy/signer/src/common/handler.ts new file mode 100644 index 00000000000..23ed6252116 --- /dev/null +++ b/packages/phone-number-privacy/signer/src/common/handler.ts @@ -0,0 +1,185 @@ +import { + ErrorMessage, + ErrorType, + OdisRequest, + OdisResponse, + PnpQuotaStatus, + send, + SequentialDelayDomainState, + WarningMessage, +} from '@celo/phone-number-privacy-common' +import opentelemetry, { SpanStatusCode } from '@opentelemetry/api' +import { SemanticAttributes } from '@opentelemetry/semantic-conventions' +import Logger from 'bunyan' +import { Request, Response } from 'express' +import * as client from 'prom-client' +import { getSignerVersion } from '../config' +import { OdisError } from './error' +import { Counters, newMeter } from './metrics' + +const tracer = opentelemetry.trace.getTracer('signer-tracer') + +export interface Locals { + logger: Logger +} + +export type PromiseHandler = ( + request: Request<{}, {}, R>, + res: Response, Locals> +) => Promise + +export function catchErrorHandler( + handler: PromiseHandler +): PromiseHandler { + return async (req, res) => { + try { + Counters.requests.labels(req.url).inc() + await handler(req, res) + } catch (err: any) { + // Handle any errors that otherwise managed to escape the proper handlers + const logger = res.locals.logger + logger.error(ErrorMessage.CAUGHT_ERROR_IN_ENDPOINT_HANDLER) + logger.error(err) + Counters.errorsCaughtInEndpointHandler.inc() // TODO investigate why this gets triggered on full node errors + + if (!res.headersSent) { + if (err instanceof OdisError) { + sendFailure(err.code, err.status, res, req.url) + } else { + sendFailure(ErrorMessage.UNKNOWN_ERROR, 500, res, req.url) + } + } else { + // Getting to this error likely indicates that an inner handler + // does not terminate after sending a response, and then throws an error. + logger.error(ErrorMessage.ERROR_AFTER_RESPONSE_SENT) + Counters.errorsThrownAfterResponseSent.inc() + } + } + } +} + +export function tracingHandler( + handler: PromiseHandler +): PromiseHandler { + return async (req, res) => { + return tracer.startActiveSpan( + req.url, + { + attributes: { + [SemanticAttributes.HTTP_ROUTE]: req.path, + [SemanticAttributes.HTTP_METHOD]: req.method, + [SemanticAttributes.HTTP_CLIENT_IP]: req.ip, + }, + }, + async (span) => { + try { + await handler(req, res) + span.setStatus({ + code: SpanStatusCode.OK, + }) + } catch (err: any) { + span.setStatus({ + code: SpanStatusCode.ERROR, + message: err instanceof Error ? err.message : 'Fail', + }) + throw err + } finally { + span.end() + } + } + ) + } +} + +export function meteringHandler( + histogram: client.Histogram, + handler: PromiseHandler +): PromiseHandler { + return (req, res) => newMeter(histogram, req.url)(() => handler(req, res)) +} + +export function timeoutHandler( + timeoutMs: number, + handler: PromiseHandler +): PromiseHandler { + return async (req, res) => { + const timeoutSignal = (AbortSignal as any).timeout(timeoutMs) + timeoutSignal.addEventListener( + 'abort', + () => { + if (!res.headersSent) { + Counters.timeouts.inc() + sendFailure(ErrorMessage.TIMEOUT_FROM_SIGNER, 500, res, req.url) + } + }, + { once: true } + ) + + await handler(req, res) + } +} + +export async function disabledHandler( + req: Request<{}, {}, R>, + response: Response, Locals> +): Promise { + sendFailure(WarningMessage.API_UNAVAILABLE, 503, response, req.url) +} + +export interface Result { + status: number + body: OdisResponse +} + +export type ResultHandler = ( + request: Request<{}, {}, R>, + res: Response, Locals> +) => Promise> + +export function resultHandler( + resHandler: ResultHandler +): PromiseHandler { + return async (req, res) => { + const result = await resHandler(req, res) + send(res, result.body, result.status, res.locals.logger) + Counters.responses.labels(req.url, result.status.toString()).inc() + } +} + +export function errorResult( + status: number, + error: string, + quotaStatus?: PnpQuotaStatus | { status: SequentialDelayDomainState } +): Result { + // TODO remove any + return { + status, + body: { + success: false, + version: getSignerVersion(), + error, + ...quotaStatus, + }, + } +} + +function sendFailure( + error: ErrorType, + status: number, + response: Response, + endpoint: string, + body?: Record // TODO remove any +) { + send( + response, + { + success: false, + version: getSignerVersion(), + error, + ...body, + }, + status, + response.locals.logger + ) + Counters.responses.labels(endpoint, status.toString()).inc() +} diff --git a/packages/phone-number-privacy/signer/src/common/io.ts b/packages/phone-number-privacy/signer/src/common/io.ts deleted file mode 100644 index 698aa6ab0bb..00000000000 --- a/packages/phone-number-privacy/signer/src/common/io.ts +++ /dev/null @@ -1,85 +0,0 @@ -import { - ErrorType, - FailureResponse, - OdisRequest, - OdisResponse, - SignerEndpoint, - SuccessResponse, - WarningMessage, -} from '@celo/phone-number-privacy-common' -import Logger from 'bunyan' -import { Request, Response } from 'express' -import { Session } from './action' - -import opentelemetry, { SpanStatusCode } from '@opentelemetry/api' -import { SemanticAttributes } from '@opentelemetry/semantic-conventions' -const tracer = opentelemetry.trace.getTracer('signer-tracer') - -export abstract class IO { - abstract readonly endpoint: SignerEndpoint - - constructor(readonly enabled: boolean) {} - - abstract init( - request: Request<{}, {}, unknown>, - response: Response> - ): Promise | null> - - abstract validate(request: Request<{}, {}, unknown>): request is Request<{}, {}, R> - - abstract authenticate( - request: Request<{}, {}, R>, - warnings?: string[], - logger?: Logger - ): Promise - - abstract sendFailure( - error: ErrorType, - status: number, - response: Response>, - ...args: unknown[] - ): void - - abstract sendSuccess( - status: number, - response: Response>, - ...args: unknown[] - ): void - - protected inputChecks( - request: Request<{}, {}, unknown>, - response: Response> - ): request is Request<{}, {}, R> { - return tracer.startActiveSpan('CommonIO - inputChecks', (span) => { - if (!this.enabled) { - span.addEvent('Error calling enabled') - span.setStatus({ - code: SpanStatusCode.ERROR, - message: WarningMessage.API_UNAVAILABLE, - }) - span.setAttribute(SemanticAttributes.HTTP_STATUS_CODE, 503) - this.sendFailure(WarningMessage.API_UNAVAILABLE, 503, response) - span.end() - return false - } - if (!this.validate(request)) { - span.addEvent('Error calling validate') - span.setStatus({ - code: SpanStatusCode.ERROR, - message: WarningMessage.INVALID_INPUT, - }) - span.setAttribute(SemanticAttributes.HTTP_STATUS_CODE, 400) - this.sendFailure(WarningMessage.INVALID_INPUT, 400, response) - span.end() - return false - } - span.addEvent('Correctly called inputChecks') - span.setStatus({ - code: SpanStatusCode.OK, - message: response.statusMessage, - }) - span.end() - return true - }) - } -} diff --git a/packages/phone-number-privacy/signer/src/common/metrics.ts b/packages/phone-number-privacy/signer/src/common/metrics.ts index 918cbfd7df6..2c009cabab3 100644 --- a/packages/phone-number-privacy/signer/src/common/metrics.ts +++ b/packages/phone-number-privacy/signer/src/common/metrics.ts @@ -1,4 +1,5 @@ import * as client from 'prom-client' + const { Counter, Histogram } = client client.collectDefaultMetrics() @@ -8,6 +9,7 @@ export enum Labels { READ = 'read', UPDATE = 'update', INSERT = 'insert', + BATCH_DELETE = 'batch-delete', } export const Counters = { @@ -29,7 +31,6 @@ export const Counters = { blockchainErrors: new Counter({ name: 'blockchain_errors', help: 'Counter for the number of errors from interacting with the blockchain', - labelNames: ['type'], }), signatureComputationErrors: new Counter({ name: 'signature_computation_errors', @@ -41,15 +42,7 @@ export const Counters = { }), requestsWithWalletAddress: new Counter({ name: 'requests_with_wallet_address', - help: 'Counter for the number of requests in which the account uses a different wallet address', - }), - requestsWithVerifiedAccount: new Counter({ - name: 'requests_with_verified_account', - help: 'Counter for the number of requests in which the account is verified', - }), - requestsWithUnverifiedAccountWithMinBalance: new Counter({ - name: 'requests_with_unverified_account_with_min_balance', - help: 'Counter for the number of requests in which the account is not verified but meets min balance', + help: 'Counter for the number of requests in which WALLET_KEY authentication is used', }), testQuotaBypassedRequests: new Counter({ name: 'test_quota_bypassed_requests', @@ -59,14 +52,6 @@ export const Counters = { name: 'timeouts', help: 'Counter for the number of signer timeouts as measured by the signer', }), - requestsFailingOpen: new Counter({ - name: 'requests_failing_open', - help: 'Counter for the number of requests bypassing quota or authentication checks due to full-node errors', - }), - requestsFailingClosed: new Counter({ - name: 'requests_failing_closed', - help: 'Counter for the number of requests failing quota or authentication checks due to full-node errors', - }), errorsCaughtInEndpointHandler: new Counter({ name: 'errors_caught_in_endpoint_handler', help: 'Counter for the number of errors caught in the outermost endpoint handler', @@ -88,18 +73,12 @@ export const Histograms = { labelNames: ['endpoint'], buckets, }), - getBlindedSigInstrumentation: new Histogram({ - name: 'get_blinded_sig_instrumentation', - help: 'Histogram tracking latency of blinded sig function by code segment', + fullNodeLatency: new Histogram({ + name: 'full_node_latency', + help: 'Histogram tracking latency of full node requests', labelNames: ['codeSegment'], buckets, }), - getRemainingQueryCountInstrumentation: new Histogram({ - name: 'get_remaining_query_count_instrumentation', - help: 'Histogram tracking latency of getRemainingQueryCount function by code segment', - labelNames: ['codeSegment', 'endpoint'], - buckets, - }), dbOpsInstrumentation: new Histogram({ name: 'db_ops_instrumentation', help: 'Histogram tracking latency of all database operations', @@ -114,17 +93,12 @@ export const Histograms = { }), } -declare type InFunction = (...params: T) => Promise - -export async function meter( - inFunction: InFunction, - params: T, - onError: (err: any) => U, - prometheus: client.Histogram, - labels: string[] -): Promise { - const _meter = prometheus.labels(...labels).startTimer() - return inFunction(...params) - .catch(onError) - .finally(_meter) +export function newMeter( + histogram: client.Histogram, + ...labels: string[] +): (fn: () => Promise) => Promise { + return (fn) => { + const _meter = histogram.labels(...labels).startTimer() + return fn().finally(_meter) + } } diff --git a/packages/phone-number-privacy/signer/src/common/quota.ts b/packages/phone-number-privacy/signer/src/common/quota.ts index 7900eaf7473..dca689e6461 100644 --- a/packages/phone-number-privacy/signer/src/common/quota.ts +++ b/packages/phone-number-privacy/signer/src/common/quota.ts @@ -6,8 +6,6 @@ import { PnpQuotaStatus, SignMessageRequest, } from '@celo/phone-number-privacy-common' -import { Knex } from 'knex' -import { Session } from './action' import { DomainStateRecord } from './database/models/domain-state' // prettier-ignore @@ -15,20 +13,8 @@ export type OdisQuotaStatus = R extends | DomainQuotaStatusRequest | DomainRestrictedSignatureRequest ? DomainStateRecord : never | R extends SignMessageRequest | PnpQuotaRequest ? PnpQuotaStatus: never +// TODO this is only used in Domain endpoints now export interface OdisQuotaStatusResult { sufficient: boolean state: OdisQuotaStatus } - -export interface QuotaService { - checkAndUpdateQuotaStatus( - state: OdisQuotaStatus, - session: Session, - trx: Knex.Transaction> - ): Promise> - - getQuotaStatus( - session: Session, - trx?: Knex.Transaction> - ): Promise> -} diff --git a/packages/phone-number-privacy/signer/src/common/tracing-utils.ts b/packages/phone-number-privacy/signer/src/common/tracing-utils.ts new file mode 100644 index 00000000000..ddd40917905 --- /dev/null +++ b/packages/phone-number-privacy/signer/src/common/tracing-utils.ts @@ -0,0 +1,21 @@ +import opentelemetry, { SpanStatusCode } from '@opentelemetry/api' + +const tracer = opentelemetry.trace.getTracer('signer-tracer') + +export function traceAsyncFunction(traceName: string, fn: () => Promise): Promise { + return tracer.startActiveSpan(traceName, async (span) => { + try { + const res = await fn() + span.setStatus({ code: SpanStatusCode.OK }) + return res + } catch (err: any) { + span.setStatus({ + code: SpanStatusCode.ERROR, + message: err instanceof Error ? err.message : undefined, + }) + throw err + } finally { + span.end() + } + }) +} diff --git a/packages/phone-number-privacy/signer/src/common/web3/contracts.ts b/packages/phone-number-privacy/signer/src/common/web3/contracts.ts index 7b0801f8f3b..31fc58755b6 100644 --- a/packages/phone-number-privacy/signer/src/common/web3/contracts.ts +++ b/packages/phone-number-privacy/signer/src/common/web3/contracts.ts @@ -1,203 +1,47 @@ -import { NULL_ADDRESS, retryAsyncWithBackOffAndTimeout } from '@celo/base' -import { ContractKit, StableToken } from '@celo/contractkit' -import { - FULL_NODE_TIMEOUT_IN_MS, - RETRY_COUNT, - RETRY_DELAY_IN_MS, -} from '@celo/phone-number-privacy-common' +import { retryAsyncWithBackOffAndTimeout } from '@celo/base' +import { ContractKit } from '@celo/contractkit' +import { getDataEncryptionKey } from '@celo/phone-number-privacy-common' import { BigNumber } from 'bignumber.js' import Logger from 'bunyan' -import { Counters, Histograms, Labels, meter } from '../metrics' - -export async function getBlockNumber(kit: ContractKit): Promise { - return meter( - retryAsyncWithBackOffAndTimeout, - [ - () => kit.connection.getBlockNumber(), - RETRY_COUNT, - [], - RETRY_DELAY_IN_MS, - undefined, - FULL_NODE_TIMEOUT_IN_MS, - ], - (err: any) => { - Counters.blockchainErrors.labels(Labels.READ).inc() - throw err - }, - Histograms.getBlindedSigInstrumentation, - ['getBlockNumber'] - ) -} - -export async function getTransactionCount( - kit: ContractKit, - logger: Logger, - endpoint: string, - ...addresses: string[] -): Promise { - const _getTransactionCount = (...params: string[]) => - Promise.all( - params - .filter((address) => address !== NULL_ADDRESS) - .map((address) => - retryAsyncWithBackOffAndTimeout( - () => kit.connection.getTransactionCount(address), - RETRY_COUNT, - [], - RETRY_DELAY_IN_MS, - undefined, - FULL_NODE_TIMEOUT_IN_MS - ).catch((err) => { - Counters.blockchainErrors.labels(Labels.READ).inc() - throw err - }) - ) - ).then((values) => { - logger.trace({ addresses, txCounts: values }, 'Fetched txCounts for addresses') - return values.reduce((a, b) => a + b) - }) - return meter( - _getTransactionCount, - addresses.filter((address) => address !== NULL_ADDRESS), - (err: any) => { - throw err - }, - Histograms.getRemainingQueryCountInstrumentation, - ['getTransactionCount', endpoint] - ) -} - -export async function getStableTokenBalance( - kit: ContractKit, - stableToken: StableToken, - logger: Logger, - endpoint: string, - ...addresses: string[] -): Promise { - const _getStableTokenBalance = (...params: string[]) => - Promise.all( - params - .filter((address) => address !== NULL_ADDRESS) - .map((address) => - retryAsyncWithBackOffAndTimeout( - async () => (await kit.contracts.getStableToken(stableToken)).balanceOf(address), - RETRY_COUNT, - [], - RETRY_DELAY_IN_MS, - undefined, - FULL_NODE_TIMEOUT_IN_MS - ).catch((err) => { - Counters.blockchainErrors.labels(Labels.READ).inc() - throw err - }) - ) - ).then((values) => { - logger.trace( - { addresses, balances: values.map((bn) => bn.toString()) }, - `Fetched ${stableToken} balances for addresses` - ) - return values.reduce((a, b) => a.plus(b)) - }) - return meter( - _getStableTokenBalance, - addresses, - (err: any) => { - throw err - }, - Histograms.getRemainingQueryCountInstrumentation, - ['getStableTokenBalance', endpoint] - ) -} - -export async function getCeloBalance( - kit: ContractKit, - logger: Logger, - endpoint: string, - ...addresses: string[] -): Promise { - const _getCeloBalance = (...params: string[]) => - Promise.all( - params - .filter((address) => address !== NULL_ADDRESS) - .map((address) => - retryAsyncWithBackOffAndTimeout( - async () => (await kit.contracts.getGoldToken()).balanceOf(address), - RETRY_COUNT, - [], - RETRY_DELAY_IN_MS, - undefined, - FULL_NODE_TIMEOUT_IN_MS - ).catch((err) => { - Counters.blockchainErrors.labels(Labels.READ).inc() - throw err - }) - ) - ).then((values) => { - logger.trace( - { addresses, balances: values.map((bn) => bn.toString()) }, - 'Fetched celo balances for addresses' - ) - return values.reduce((a, b) => a.plus(b)) - }) - return meter( - _getCeloBalance, - addresses, - (err: any) => { - throw err - }, - Histograms.getRemainingQueryCountInstrumentation, - ['getStableTokenBalance', endpoint] - ) -} - -export async function getWalletAddress( - kit: ContractKit, - logger: Logger, - account: string, - endpoint: string -): Promise { - return meter( - retryAsyncWithBackOffAndTimeout, - [ - async () => (await kit.contracts.getAccounts()).getWalletAddress(account), - RETRY_COUNT, - [], - RETRY_DELAY_IN_MS, - undefined, - FULL_NODE_TIMEOUT_IN_MS, - ], - (err: any) => { - logger.error({ err, account }, 'failed to get wallet address for account') - Counters.blockchainErrors.labels(Labels.READ).inc() - return NULL_ADDRESS - }, - Histograms.getRemainingQueryCountInstrumentation, - ['getWalletAddress', endpoint] - ) -} +import { config } from '../../config' +import { Counters, Histograms, newMeter } from '../metrics' export async function getOnChainOdisPayments( kit: ContractKit, logger: Logger, - account: string, - endpoint: string + account: string ): Promise { - return meter( - retryAsyncWithBackOffAndTimeout, - [ + const _meter = newMeter(Histograms.fullNodeLatency, 'getOnChainOdisPayments') + return _meter(() => + retryAsyncWithBackOffAndTimeout( async () => (await kit.contracts.getOdisPayments()).totalPaidCUSD(account), - RETRY_COUNT, + config.fullNodeRetryCount, [], - RETRY_DELAY_IN_MS, + config.fullNodeRetryDelayMs, undefined, - FULL_NODE_TIMEOUT_IN_MS, - ], - (err: any) => { + config.fullNodeTimeoutMs + ).catch((err: any) => { logger.error({ err, account }, 'failed to get on-chain odis balance for account') - Counters.blockchainErrors.labels(Labels.READ).inc() + Counters.blockchainErrors.inc() + throw err + }) + ) +} + +export async function getDEK(kit: ContractKit, logger: Logger, account: string): Promise { + const _meter = newMeter(Histograms.fullNodeLatency, 'getDataEncryptionKey') + return _meter(() => + getDataEncryptionKey( + account, + kit, + logger, + config.fullNodeTimeoutMs, + config.fullNodeRetryCount, + config.fullNodeRetryDelayMs + ).catch((err) => { + logger.error({ err, account }, 'failed to get on-chain DEK for account') + Counters.blockchainErrors.inc() throw err - }, - Histograms.getRemainingQueryCountInstrumentation, - ['getOnChainOdisPayments', endpoint] + }) ) } diff --git a/packages/phone-number-privacy/signer/src/config.ts b/packages/phone-number-privacy/signer/src/config.ts index 7c1a1623c4c..0c886cdd5ff 100644 --- a/packages/phone-number-privacy/signer/src/config.ts +++ b/packages/phone-number-privacy/signer/src/config.ts @@ -53,12 +53,8 @@ export interface SignerConfig { } phoneNumberPrivacy: { enabled: boolean - shouldFailOpen: boolean } } - attestations: { - numberAttestationsRequired: number - } blockchain: BlockchainConfig db: { type: SupportedDatabase @@ -102,6 +98,13 @@ export interface SignerConfig { fullNodeTimeoutMs: number fullNodeRetryCount: number fullNodeRetryDelayMs: number + shouldMockAccountService: boolean + mockDek: string + mockTotalQuota: number + shouldMockRequestService: boolean + requestPrunningDays: number + requestPrunningAtServerStart: boolean + requestPrunningJobCronPattern: string } const env = process.env as any @@ -131,12 +134,8 @@ export const config: SignerConfig = { }, phoneNumberPrivacy: { enabled: toBool(env.PHONE_NUMBER_PRIVACY_API_ENABLED, false), - shouldFailOpen: toBool(env.FULL_NODE_ERRORS_SHOULD_FAIL_OPEN, false), }, }, - attestations: { - numberAttestationsRequired: Number(env.ATTESTATIONS_NUMBER_ATTESTATIONS_REQUIRED ?? 3), - }, blockchain: { provider: env.BLOCKCHAIN_PROVIDER, apiKey: env.BLOCKCHAIN_API_KEY, @@ -183,4 +182,11 @@ export const config: SignerConfig = { fullNodeTimeoutMs: Number(env.TIMEOUT_MS ?? FULL_NODE_TIMEOUT_IN_MS), fullNodeRetryCount: Number(env.RETRY_COUNT ?? RETRY_COUNT), fullNodeRetryDelayMs: Number(env.RETRY_DELAY_IN_MS ?? RETRY_DELAY_IN_MS), + shouldMockAccountService: toBool(env.SHOULD_MOCK_ACCOUNT_SERVICE, false), + mockDek: env.MOCK_DEK, + mockTotalQuota: Number(env.MOCK_TOTAL_QUOTA ?? 10), + shouldMockRequestService: toBool(env.SHOULD_MOCK_REQUEST_SERVICE, false), + requestPrunningDays: Number(env.REQUEST_PRUNNING_DAYS ?? 7), + requestPrunningAtServerStart: toBool(env.REQUEST_PRUNNING_AT_SERVER_START, false), + requestPrunningJobCronPattern: env.REQUEST_PRUNNING_JOB_CRON_PATTERN ?? '0 0 3 * * *', } diff --git a/packages/phone-number-privacy/signer/src/domain/endpoints/disable/action.ts b/packages/phone-number-privacy/signer/src/domain/endpoints/disable/action.ts index 779685b0123..1cf71fb0d11 100644 --- a/packages/phone-number-privacy/signer/src/domain/endpoints/disable/action.ts +++ b/packages/phone-number-privacy/signer/src/domain/endpoints/disable/action.ts @@ -1,7 +1,13 @@ -import { timeout } from '@celo/base' -import { DisableDomainRequest, domainHash } from '@celo/phone-number-privacy-common' +import { + DisableDomainRequest, + disableDomainRequestSchema, + domainHash, + DomainSchema, + verifyDisableDomainRequestAuthenticity, + WarningMessage, +} from '@celo/phone-number-privacy-common' +import { Request } from 'express' import { Knex } from 'knex' -import { Action } from '../../../common/action' import { toSequentialDelayDomainState } from '../../../common/database/models/domain-state' import { createEmptyDomainStateRecord, @@ -9,19 +15,23 @@ import { insertDomainStateRecord, setDomainDisabled, } from '../../../common/database/wrappers/domain-state' -import { SignerConfig } from '../../../config' -import { DomainSession } from '../../session' -import { DomainDisableIO } from './io' +import { errorResult, ResultHandler } from '../../../common/handler' +import { getSignerVersion } from '../../../config' + +export function domainDisable(db: Knex): ResultHandler { + return async (request, response) => { + const { logger } = response.locals + + if (!isValidRequest(request)) { + return errorResult(400, WarningMessage.INVALID_INPUT) + } + if (!verifyDisableDomainRequestAuthenticity(request.body)) { + return errorResult(401, WarningMessage.UNAUTHENTICATED_USER) + } -export class DomainDisableAction implements Action { - constructor(readonly db: Knex, readonly config: SignerConfig, readonly io: DomainDisableIO) {} + const { domain } = request.body - public async perform( - session: DomainSession, - timeoutError: symbol - ): Promise { - const domain = session.request.body.domain - session.logger.info( + logger.info( { name: domain.name, version: domain.version, @@ -29,35 +39,38 @@ export class DomainDisableAction implements Action { }, 'Processing request to disable domain' ) - // Inside a database transaction, update or create the domain to mark it disabled. - const res = await this.db.transaction(async (trx) => { - const disableDomainHandler = async () => { - const domainStateRecord = - (await getDomainStateRecord(this.db, domain, session.logger, trx)) ?? - (await insertDomainStateRecord( - this.db, - createEmptyDomainStateRecord(domain, true), - trx, - session.logger - )) - if (!domainStateRecord.disabled) { - await setDomainDisabled(this.db, domain, trx, session.logger) - domainStateRecord.disabled = true - } - return { - success: true, - status: 200, - domainStateRecord, - } + + const res = await db.transaction(async (trx) => { + const domainStateRecord = + (await getDomainStateRecord(db, domain, logger, trx)) ?? + (await insertDomainStateRecord(db, createEmptyDomainStateRecord(domain, true), trx, logger)) + if (!domainStateRecord.disabled) { + await setDomainDisabled(db, domain, trx, logger) + domainStateRecord.disabled = true + } + return { + // TODO revisit this + success: true, + status: 200, + domainStateRecord, } - // Ensure timeouts roll back DB trx - return timeout(disableDomainHandler, [], this.config.timeout, timeoutError) + // Note: we previously timed out inside the trx to ensure timeouts roll back DB trx + // return timeout(disableDomainHandler, [], this.config.timeout, timeoutError) }) - this.io.sendSuccess( - res.status, - session.response, - toSequentialDelayDomainState(res.domainStateRecord) - ) + return { + status: res.status, + body: { + success: true, + version: getSignerVersion(), + status: toSequentialDelayDomainState(res.domainStateRecord), + }, + } } } + +function isValidRequest( + request: Request<{}, {}, unknown> +): request is Request<{}, {}, DisableDomainRequest> { + return disableDomainRequestSchema(DomainSchema).is(request.body) +} diff --git a/packages/phone-number-privacy/signer/src/domain/endpoints/disable/io.ts b/packages/phone-number-privacy/signer/src/domain/endpoints/disable/io.ts deleted file mode 100644 index f77a9e8cd34..00000000000 --- a/packages/phone-number-privacy/signer/src/domain/endpoints/disable/io.ts +++ /dev/null @@ -1,78 +0,0 @@ -import { - DisableDomainRequest, - disableDomainRequestSchema, - DisableDomainResponse, - DisableDomainResponseFailure, - DisableDomainResponseSuccess, - DomainSchema, - DomainState, - ErrorType, - send, - SignerEndpoint, - verifyDisableDomainRequestAuthenticity, - WarningMessage, -} from '@celo/phone-number-privacy-common' -import { Request, Response } from 'express' -import { IO } from '../../../common/io' -import { Counters } from '../../../common/metrics' -import { getSignerVersion } from '../../../config' -import { DomainSession } from '../../session' - -export class DomainDisableIO extends IO { - readonly endpoint = SignerEndpoint.DISABLE_DOMAIN - - async init( - request: Request<{}, {}, unknown>, - response: Response - ): Promise | null> { - // Input checks sends a response to the user internally. - if (!super.inputChecks(request, response)) { - return null - } - if (!(await this.authenticate(request))) { - this.sendFailure(WarningMessage.UNAUTHENTICATED_USER, 401, response) - return null - } - return new DomainSession(request, response) - } - - validate(request: Request<{}, {}, unknown>): request is Request<{}, {}, DisableDomainRequest> { - return disableDomainRequestSchema(DomainSchema).is(request.body) - } - - authenticate(request: Request<{}, {}, DisableDomainRequest>): Promise { - return Promise.resolve(verifyDisableDomainRequestAuthenticity(request.body)) - } - - sendSuccess( - status: number, - response: Response, - domainState: DomainState - ) { - send( - response, - { - success: true, - version: getSignerVersion(), - status: domainState, - }, - status, - response.locals.logger - ) - Counters.responses.labels(this.endpoint, status.toString()).inc() - } - - sendFailure(error: ErrorType, status: number, response: Response) { - send( - response, - { - success: false, - version: getSignerVersion(), - error, - }, - status, - response.locals.logger - ) - Counters.responses.labels(this.endpoint, status.toString()).inc() - } -} diff --git a/packages/phone-number-privacy/signer/src/domain/endpoints/quota/action.ts b/packages/phone-number-privacy/signer/src/domain/endpoints/quota/action.ts index babddd4a7cf..e397b2a050c 100644 --- a/packages/phone-number-privacy/signer/src/domain/endpoints/quota/action.ts +++ b/packages/phone-number-privacy/signer/src/domain/endpoints/quota/action.ts @@ -1,35 +1,50 @@ -import { timeout } from '@celo/base' -import { domainHash, DomainQuotaStatusRequest } from '@celo/phone-number-privacy-common' -import { Action } from '../../../common/action' +import { + domainHash, + DomainQuotaStatusRequest, + domainQuotaStatusRequestSchema, + DomainSchema, + verifyDomainQuotaStatusRequestAuthenticity, + WarningMessage, +} from '@celo/phone-number-privacy-common' +import { Request } from 'express' import { toSequentialDelayDomainState } from '../../../common/database/models/domain-state' -import { SignerConfig } from '../../../config' +import { errorResult, ResultHandler } from '../../../common/handler' +import { getSignerVersion } from '../../../config' import { DomainQuotaService } from '../../services/quota' -import { DomainSession } from '../../session' -import { DomainQuotaIO } from './io' -export class DomainQuotaAction implements Action { - constructor( - readonly config: SignerConfig, - readonly quotaService: DomainQuotaService, - readonly io: DomainQuotaIO - ) {} +export function domainQuota(quota: DomainQuotaService): ResultHandler { + return async (request, response) => { + const { logger } = response.locals - public async perform( - session: DomainSession, - timeoutError: symbol - ): Promise { - const domain = session.request.body.domain - session.logger.info('Processing request to get domain quota status', { + if (!isValidRequest(request)) { + return errorResult(400, WarningMessage.INVALID_INPUT) + } + if (!verifyDomainQuotaStatusRequestAuthenticity(request.body)) { + return errorResult(401, WarningMessage.UNAUTHENTICATED_USER) + } + + const { domain } = request.body + + logger.info('Processing request to get domain quota status', { name: domain.name, version: domain.version, hash: domainHash(domain).toString('hex'), }) - const domainStateRecord = await timeout( - () => this.quotaService.getQuotaStatus(session), - [], - this.config.timeout, - timeoutError - ) - this.io.sendSuccess(200, session.response, toSequentialDelayDomainState(domainStateRecord)) + const domainStateRecord = await quota.getQuotaStatus(domain, logger) + + return { + status: 200, + body: { + success: true, + version: getSignerVersion(), + status: toSequentialDelayDomainState(domainStateRecord), + }, + } } } + +function isValidRequest( + request: Request<{}, {}, unknown> +): request is Request<{}, {}, DomainQuotaStatusRequest> { + return domainQuotaStatusRequestSchema(DomainSchema).is(request.body) +} diff --git a/packages/phone-number-privacy/signer/src/domain/endpoints/quota/io.ts b/packages/phone-number-privacy/signer/src/domain/endpoints/quota/io.ts deleted file mode 100644 index 8dca82b76bf..00000000000 --- a/packages/phone-number-privacy/signer/src/domain/endpoints/quota/io.ts +++ /dev/null @@ -1,83 +0,0 @@ -import { - DomainQuotaStatusRequest, - domainQuotaStatusRequestSchema, - DomainQuotaStatusResponse, - DomainQuotaStatusResponseFailure, - DomainQuotaStatusResponseSuccess, - DomainSchema, - DomainState, - ErrorType, - send, - SignerEndpoint, - verifyDomainQuotaStatusRequestAuthenticity, - WarningMessage, -} from '@celo/phone-number-privacy-common' -import { Request, Response } from 'express' -import { IO } from '../../../common/io' -import { Counters } from '../../../common/metrics' -import { getSignerVersion } from '../../../config' -import { DomainSession } from '../../session' - -export class DomainQuotaIO extends IO { - readonly endpoint = SignerEndpoint.DOMAIN_QUOTA_STATUS - - async init( - request: Request<{}, {}, unknown>, - response: Response - ): Promise | null> { - if (!super.inputChecks(request, response)) { - return null - } - if (!(await this.authenticate(request))) { - this.sendFailure(WarningMessage.UNAUTHENTICATED_USER, 401, response) - return null - } - return new DomainSession(request, response) - } - - validate( - request: Request<{}, {}, unknown> - ): request is Request<{}, {}, DomainQuotaStatusRequest> { - return domainQuotaStatusRequestSchema(DomainSchema).is(request.body) - } - - authenticate(request: Request<{}, {}, DomainQuotaStatusRequest>): Promise { - return Promise.resolve(verifyDomainQuotaStatusRequestAuthenticity(request.body)) - } - - sendSuccess( - status: number, - response: Response, - domainState: DomainState - ) { - send( - response, - { - success: true, - version: getSignerVersion(), - status: domainState, - }, - status, - response.locals.logger - ) - Counters.responses.labels(this.endpoint, status.toString()).inc() - } - - sendFailure( - error: ErrorType, - status: number, - response: Response - ) { - send( - response, - { - success: false, - version: getSignerVersion(), - error, - }, - status, - response.locals.logger - ) - Counters.responses.labels(this.endpoint, status.toString()).inc() - } -} diff --git a/packages/phone-number-privacy/signer/src/domain/endpoints/sign/action.ts b/packages/phone-number-privacy/signer/src/domain/endpoints/sign/action.ts index 446baa506cb..7cc0ec853c2 100644 --- a/packages/phone-number-privacy/signer/src/domain/endpoints/sign/action.ts +++ b/packages/phone-number-privacy/signer/src/domain/endpoints/sign/action.ts @@ -1,25 +1,30 @@ -import { timeout } from '@celo/base' import { Domain, domainHash, DomainRestrictedSignatureRequest, + domainRestrictedSignatureRequestSchema, + DomainSchema, ErrorType, getRequestKeyVersion, + KEY_VERSION_HEADER, + requestHasValidKeyVersion, ThresholdPoprfServer, + verifyDomainRestrictedSignatureRequestAuthenticity, WarningMessage, } from '@celo/phone-number-privacy-common' import { EIP712Optional } from '@celo/utils/lib/sign-typed-data-utils' +import Logger from 'bunyan' +import { Request } from 'express' import { Knex } from 'knex' -import { Action, Session } from '../../../common/action' import { DomainStateRecord, toSequentialDelayDomainState, } from '../../../common/database/models/domain-state' +import { errorResult, ResultHandler } from '../../../common/handler' import { DefaultKeyName, Key, KeyProvider } from '../../../common/key-management/key-provider-base' -import { SignerConfig } from '../../../config' +import { OdisQuotaStatusResult } from '../../../common/quota' +import { getSignerVersion, SignerConfig } from '../../../config' import { DomainQuotaService } from '../../services/quota' -import { DomainSession } from '../../session' -import { DomainSignIO } from './io' type TrxResult = | { @@ -36,21 +41,28 @@ type TrxResult = signature: string } -export class DomainSignAction implements Action { - constructor( - readonly db: Knex, - readonly config: SignerConfig, - readonly quota: DomainQuotaService, - readonly keyProvider: KeyProvider, - readonly io: DomainSignIO - ) {} - - public async perform( - session: DomainSession, - timeoutError: symbol - ): Promise { - const domain = session.request.body.domain - session.logger.info( +export function domainSign( + db: Knex, + config: SignerConfig, + quota: DomainQuotaService, + keyProvider: KeyProvider +): ResultHandler { + return async (request, response) => { + const { logger } = response.locals + + if (!isValidRequest(request)) { + return errorResult(400, WarningMessage.INVALID_INPUT) + } + if (!requestHasValidKeyVersion(request, logger)) { + return errorResult(400, WarningMessage.INVALID_KEY_VERSION_REQUEST) + } + if (!verifyDomainRestrictedSignatureRequestAuthenticity(request.body)) { + return errorResult(401, WarningMessage.UNAUTHENTICATED_USER) + } + + const { domain } = request.body + + logger.info( { name: domain.name, version: domain.version, @@ -58,118 +70,125 @@ export class DomainSignAction implements Action { - const domainSignHandler = async (): Promise => { - // Get the current domain state record, or use an empty record if one does not exist. - const domainStateRecord = await this.quota.getQuotaStatus(session, trx) - - // Note that this action occurs in the same transaction as the remainder of the siging - // action. As a result, this is included here rather than in the authentication function. - if (!this.nonceCheck(domainStateRecord, session)) { - return { - success: false, - status: 401, - domainStateRecord, - error: WarningMessage.INVALID_NONCE, - } - } + const res: TrxResult = await db.transaction(async (trx) => { + // Get the current domain state record, or use an empty record if one does not exist. + const domainStateRecord: DomainStateRecord = await quota.getQuotaStatus(domain, logger, trx) - const quotaStatus = await this.quota.checkAndUpdateQuotaStatus( + // Note that this action occurs in the same transaction as the remainder of the siging + // action. As a result, this is included here rather than in the authentication function. + if (!nonceCheck(domainStateRecord, request.body, logger)) { + return { + // TODO revisit this + success: false, + status: 401, domainStateRecord, - session, - trx - ) - - if (!quotaStatus.sufficient) { - session.logger.warn( - { - name: domain.name, - version: domain.version, - hash: domainHash(domain), - }, - `Exceeded quota` - ) - return { - success: false, - status: 429, - domainStateRecord: quotaStatus.state, - error: WarningMessage.EXCEEDED_QUOTA, - } - } - - const key: Key = { - version: - getRequestKeyVersion(session.request, session.logger) ?? - this.config.keystore.keys.domains.latest, - name: DefaultKeyName.DOMAINS, + error: WarningMessage.INVALID_NONCE, } + } - // Compute evaluation inside transaction so it will rollback on error. - const evaluation = await this.eval( - domain, - session.request.body.blindedMessage, - key, - session + const quotaStatus: OdisQuotaStatusResult = + await quota.checkAndUpdateQuotaStatus( + // TODO types + domainStateRecord, + request.body.domain, + trx, + logger ) + if (!quotaStatus.sufficient) { + logger.warn( + { + name: domain.name, + version: domain.version, + hash: domainHash(domain), + }, + `Exceeded quota` + ) return { - success: true, - status: 200, + success: false, + status: 429, domainStateRecord: quotaStatus.state, - key, - signature: evaluation.toString('base64'), + error: WarningMessage.EXCEEDED_QUOTA, } } - // Ensure timeouts roll back DB trx - return timeout(domainSignHandler, [], this.config.timeout, timeoutError) + + const key: Key = { + version: getRequestKeyVersion(request, logger) ?? config.keystore.keys.domains.latest, + name: DefaultKeyName.DOMAINS, + } + + // Compute evaluation inside transaction so it will rollback on error. + const evaluation: Buffer = await sign( + domain, + request.body.blindedMessage, + key, + logger, + keyProvider + ) + + return { + success: true, + status: 200, + domainStateRecord: quotaStatus.state, + key, + signature: evaluation.toString('base64'), + } }) if (res.success) { - this.io.sendSuccess( - res.status, - session.response, - res.key, - res.signature, - toSequentialDelayDomainState(res.domainStateRecord) - ) + response.set(KEY_VERSION_HEADER, res.key.version.toString()) + return { + status: 200, + body: { + success: true, + version: getSignerVersion(), + signature: res.signature, + status: toSequentialDelayDomainState(res.domainStateRecord), + }, + } } else { - this.io.sendFailure( - res.error, - res.status, - session.response, - toSequentialDelayDomainState(res.domainStateRecord) - ) + return errorResult(res.status, res.error, { + status: toSequentialDelayDomainState(res.domainStateRecord), + }) } } +} - private nonceCheck( - domainStateRecord: DomainStateRecord, - session: DomainSession - ): boolean { - const nonce: EIP712Optional = session.request.body.options.nonce - if (!nonce.defined) { - session.logger.info('Nonce is undefined') - return false - } - return nonce.value >= domainStateRecord.counter - } +function isValidRequest( + request: Request<{}, {}, unknown> +): request is Request<{}, {}, DomainRestrictedSignatureRequest> { + return domainRestrictedSignatureRequestSchema(DomainSchema).is(request.body) +} - private async eval( - domain: Domain, - blindedMessage: string, - key: Key, - session: Session - ): Promise { - let privateKey: string - try { - privateKey = await this.keyProvider.getPrivateKeyOrFetchFromStore(key) - } catch (err) { - session.logger.error({ key }, 'Requested key version not supported') - session.logger.error(err) - throw new Error(WarningMessage.INVALID_KEY_VERSION_REQUEST) - } +function nonceCheck( + domainStateRecord: DomainStateRecord, + body: DomainRestrictedSignatureRequest, + logger: Logger +): boolean { + const nonce: EIP712Optional = body.options.nonce + if (!nonce.defined) { + logger.info('Nonce is undefined') + return false + } + return nonce.value >= domainStateRecord.counter +} - const server = new ThresholdPoprfServer(Buffer.from(privateKey, 'hex')) - return server.blindPartialEval(domainHash(domain), Buffer.from(blindedMessage, 'base64')) +async function sign( + domain: Domain, + blindedMessage: string, + key: Key, + logger: Logger, + keyProvider: KeyProvider +): Promise { + let privateKey: string + try { + privateKey = await keyProvider.getPrivateKeyOrFetchFromStore(key) + } catch (err) { + logger.error({ key }, 'Requested key version not supported') + logger.error(err) + throw new Error(WarningMessage.INVALID_KEY_VERSION_REQUEST) } + + const server = new ThresholdPoprfServer(Buffer.from(privateKey, 'hex')) + return server.blindPartialEval(domainHash(domain), Buffer.from(blindedMessage, 'base64')) } diff --git a/packages/phone-number-privacy/signer/src/domain/endpoints/sign/io.ts b/packages/phone-number-privacy/signer/src/domain/endpoints/sign/io.ts deleted file mode 100644 index a55a0f9f396..00000000000 --- a/packages/phone-number-privacy/signer/src/domain/endpoints/sign/io.ts +++ /dev/null @@ -1,96 +0,0 @@ -import { - DomainRestrictedSignatureRequest, - domainRestrictedSignatureRequestSchema, - DomainRestrictedSignatureResponse, - DomainRestrictedSignatureResponseFailure, - DomainRestrictedSignatureResponseSuccess, - DomainSchema, - DomainState, - ErrorType, - KEY_VERSION_HEADER, - requestHasValidKeyVersion, - send, - SignerEndpoint, - verifyDomainRestrictedSignatureRequestAuthenticity, - WarningMessage, -} from '@celo/phone-number-privacy-common' -import { Request, Response } from 'express' -import { IO } from '../../../common/io' -import { Key } from '../../../common/key-management/key-provider-base' -import { Counters } from '../../../common/metrics' -import { getSignerVersion } from '../../../config' -import { DomainSession } from '../../session' - -export class DomainSignIO extends IO { - readonly endpoint = SignerEndpoint.DOMAIN_SIGN - - async init( - request: Request<{}, {}, unknown>, - response: Response - ): Promise | null> { - if (!super.inputChecks(request, response)) { - return null - } - if (!requestHasValidKeyVersion(request, response.locals.logger)) { - this.sendFailure(WarningMessage.INVALID_KEY_VERSION_REQUEST, 400, response) - return null - } - if (!(await this.authenticate(request))) { - this.sendFailure(WarningMessage.UNAUTHENTICATED_USER, 401, response) - return null - } - return new DomainSession(request, response) - } - - validate( - request: Request<{}, {}, unknown> - ): request is Request<{}, {}, DomainRestrictedSignatureRequest> { - return domainRestrictedSignatureRequestSchema(DomainSchema).is(request.body) - } - - authenticate(request: Request<{}, {}, DomainRestrictedSignatureRequest>): Promise { - return Promise.resolve(verifyDomainRestrictedSignatureRequestAuthenticity(request.body)) - } - - sendSuccess( - status: number, - response: Response, - key: Key, - signature: string, - domainState: DomainState - ) { - response.set(KEY_VERSION_HEADER, key.version.toString()) - send( - response, - { - success: true, - version: getSignerVersion(), - signature, - status: domainState, - }, - status, - response.locals.logger - ) - Counters.responses.labels(this.endpoint, status.toString()).inc() - } - - sendFailure( - error: ErrorType, - status: number, - response: Response, - domainState?: DomainState - ) { - send( - response, - { - success: false, - version: getSignerVersion(), - error, - status: domainState, - }, - status, - response.locals.logger - ) - Counters.responses.labels(this.endpoint, status.toString()).inc() - } -} diff --git a/packages/phone-number-privacy/signer/src/domain/services/quota.ts b/packages/phone-number-privacy/signer/src/domain/services/quota.ts index 475be753afa..4a05475cf20 100644 --- a/packages/phone-number-privacy/signer/src/domain/services/quota.ts +++ b/packages/phone-number-privacy/signer/src/domain/services/quota.ts @@ -4,7 +4,9 @@ import { DomainRestrictedSignatureRequest, ErrorMessage, isSequentialDelayDomain, + SequentialDelayDomain, } from '@celo/phone-number-privacy-common' +import Logger from 'bunyan' import { Knex } from 'knex' import { DomainStateRecord, @@ -15,23 +17,22 @@ import { getDomainStateRecordOrEmpty, updateDomainStateRecord, } from '../../common/database/wrappers/domain-state' -import { OdisQuotaStatusResult, QuotaService } from '../../common/quota' -import { DomainSession } from '../session' +import { OdisQuotaStatusResult } from '../../common/quota' declare type QuotaDependentDomainRequest = | DomainQuotaStatusRequest | DomainRestrictedSignatureRequest -export class DomainQuotaService implements QuotaService { +export class DomainQuotaService { constructor(readonly db: Knex) {} async checkAndUpdateQuotaStatus( state: DomainStateRecord, - session: DomainSession, + domain: SequentialDelayDomain, trx: Knex.Transaction, + logger: Logger, attemptTime?: number ): Promise> { - const { domain } = session.request.body // Timestamp precision is lowered to seconds to reduce the chance of effective timing attacks. attemptTime = attemptTime ?? Math.floor(Date.now() / 1000) if (isSequentialDelayDomain(domain)) { @@ -44,7 +45,7 @@ export class DomainQuotaService implements QuotaService, + domain: SequentialDelayDomain, + logger: Logger, trx?: Knex.Transaction ): Promise { - return getDomainStateRecordOrEmpty(this.db, session.request.body.domain, session.logger, trx) + return getDomainStateRecordOrEmpty(this.db, domain, logger, trx) } } diff --git a/packages/phone-number-privacy/signer/src/domain/session.ts b/packages/phone-number-privacy/signer/src/domain/session.ts deleted file mode 100644 index 3d9080aab1d..00000000000 --- a/packages/phone-number-privacy/signer/src/domain/session.ts +++ /dev/null @@ -1,14 +0,0 @@ -import { DomainRequest, OdisResponse } from '@celo/phone-number-privacy-common' -import Logger from 'bunyan' -import { Request, Response } from 'express' - -export class DomainSession { - readonly logger: Logger - - public constructor( - readonly request: Request<{}, {}, R>, - readonly response: Response> - ) { - this.logger = response.locals.logger - } -} diff --git a/packages/phone-number-privacy/signer/src/index.ts b/packages/phone-number-privacy/signer/src/index.ts index 29c531d8a09..573a27e48fa 100644 --- a/packages/phone-number-privacy/signer/src/index.ts +++ b/packages/phone-number-privacy/signer/src/index.ts @@ -1,18 +1,31 @@ -import { getContractKit, rootLogger } from '@celo/phone-number-privacy-common' +import { getContractKitWithAgent, rootLogger } from '@celo/phone-number-privacy-common' +import { CronJob } from 'cron' +import { Knex } from 'knex' import { initDatabase } from './common/database/database' import { initKeyProvider } from './common/key-management/key-provider' import { KeyProvider } from './common/key-management/key-provider-base' -import { config, DEV_MODE } from './config' +import { config, DEV_MODE, SupportedDatabase, SupportedKeystore } from './config' +import { DefaultPnpRequestService, MockPnpRequestService } from './pnp/services/request-service' import { startSigner } from './server' require('dotenv').config() +if (DEV_MODE) { + config.db.type = SupportedDatabase.Sqlite + config.keystore.type = SupportedKeystore.MOCK_SECRET_MANAGER +} +let databasePrunner: CronJob + async function start() { const logger = rootLogger(config.serviceName) logger.info(`Starting. Dev mode: ${DEV_MODE}`) const db = await initDatabase(config) const keyProvider: KeyProvider = await initKeyProvider(config) - const server = startSigner(config, db, keyProvider, getContractKit(config.blockchain)) + const server = startSigner(config, db, keyProvider, getContractKitWithAgent(config.blockchain)) + + logger.info('Starting database Prunner job') + launchRequestPrunnerJob(db) + logger.info('Starting server') const port = config.server.port ?? 0 const backupTimeout = config.timeout * 1.2 @@ -23,14 +36,34 @@ async function start() { .setTimeout(backupTimeout) } -if (!DEV_MODE) { - start().catch((err) => { - const logger = rootLogger(config.serviceName) - logger.error({ err }, 'Fatal error occured. Exiting') - process.exit(1) +function launchRequestPrunnerJob(db: Knex) { + const ctx = { + url: '', + logger: rootLogger(config.serviceName), + errors: [], + } + const pnpRequestService = config.shouldMockRequestService + ? new MockPnpRequestService() + : new DefaultPnpRequestService(db) + databasePrunner = new CronJob({ + cronTime: config.requestPrunningJobCronPattern, + onTick: async () => { + ctx.logger.info('Prunning database requests') + await pnpRequestService.removeOldRequests(config.requestPrunningDays, ctx) + }, + timeZone: 'UTC', + runOnInit: config.requestPrunningAtServerStart, }) + databasePrunner.start() } +start().catch((err) => { + const logger = rootLogger(config.serviceName) + logger.error({ err }, 'Fatal error occured. Exiting') + databasePrunner?.stop() + process.exit(1) +}) + export { initDatabase } from './common/database/database' export { initKeyProvider } from './common/key-management/key-provider' export { config, SupportedDatabase, SupportedKeystore } from './config' diff --git a/packages/phone-number-privacy/signer/src/pnp/endpoints/quota/action.ts b/packages/phone-number-privacy/signer/src/pnp/endpoints/quota/action.ts index f0d0b57af4b..fb9ffa180ed 100644 --- a/packages/phone-number-privacy/signer/src/pnp/endpoints/quota/action.ts +++ b/packages/phone-number-privacy/signer/src/pnp/endpoints/quota/action.ts @@ -1,35 +1,69 @@ -import { timeout } from '@celo/base' -import { ErrorMessage, PnpQuotaRequest } from '@celo/phone-number-privacy-common' -import { Action } from '../../../common/action' -import { SignerConfig } from '../../../config' -import { PnpQuotaService } from '../../services/quota' -import { PnpSession } from '../../session' -import { PnpQuotaIO } from './io' - -export class PnpQuotaAction implements Action { - constructor( - readonly config: SignerConfig, - readonly quota: PnpQuotaService, - readonly io: PnpQuotaIO - ) {} - - public async perform(session: PnpSession, timeoutError: symbol): Promise { - const quotaStatus = await timeout( - () => this.quota.getQuotaStatus(session), - [], - this.config.timeout, - timeoutError - ) - if (quotaStatus.performedQueryCount > -1 && quotaStatus.totalQuota > -1) { - this.io.sendSuccess(200, session.response, quotaStatus, session.errors) - return +import { + authenticateUser, + AuthenticationMethod, + ErrorType, + hasValidAccountParam, + isBodyReasonablySized, + PnpQuotaRequest, + PnpQuotaRequestSchema, + WarningMessage, +} from '@celo/phone-number-privacy-common' +import { Request } from 'express' +import { errorResult, ResultHandler } from '../../../common/handler' +import { Counters } from '../../../common/metrics' +import { getSignerVersion } from '../../../config' +import { AccountService } from '../../services/account-service' +import { PnpRequestService } from '../../services/request-service' + +export function pnpQuota( + requestService: PnpRequestService, + accountService: AccountService +): ResultHandler { + return async (request, response) => { + const logger = response.locals.logger + + if (!isValidRequest(request)) { + return errorResult(400, WarningMessage.INVALID_INPUT) + } + + const warnings: ErrorType[] = [] + const ctx = { + url: request.url, + logger, + errors: warnings, + } + + const account = await accountService.getAccount(request.body.account) + + if (request.body.authenticationMethod === AuthenticationMethod.WALLET_KEY) { + Counters.requestsWithWalletAddress.inc() + } + + if (!(await authenticateUser(request, logger, async (_) => account.dek, warnings))) { + return errorResult(401, WarningMessage.UNAUTHENTICATED_USER) + } + + const usedQuota = await requestService.getUsedQuotaForAccount(request.body.account, ctx) + + return { + status: 200, + body: { + success: true, + version: getSignerVersion(), + performedQueryCount: usedQuota, + totalQuota: account.pnpTotalQuota, + warnings, + }, } - this.io.sendFailure( - quotaStatus.performedQueryCount === -1 - ? ErrorMessage.FAILURE_TO_GET_PERFORMED_QUERY_COUNT - : ErrorMessage.FAILURE_TO_GET_TOTAL_QUOTA, - 500, - session.response - ) } } + +function isValidRequest( + request: Request<{}, {}, unknown> +): request is Request<{}, {}, PnpQuotaRequest> { + return ( + PnpQuotaRequestSchema.is(request.body) && + hasValidAccountParam(request.body) && + isBodyReasonablySized(request.body) + ) +} diff --git a/packages/phone-number-privacy/signer/src/pnp/endpoints/quota/io.ts b/packages/phone-number-privacy/signer/src/pnp/endpoints/quota/io.ts deleted file mode 100644 index 36620593e76..00000000000 --- a/packages/phone-number-privacy/signer/src/pnp/endpoints/quota/io.ts +++ /dev/null @@ -1,159 +0,0 @@ -import { ContractKit } from '@celo/contractkit' -import { - authenticateUser, - ErrorType, - hasValidAccountParam, - isBodyReasonablySized, - PnpQuotaRequest, - PnpQuotaRequestSchema, - PnpQuotaResponse, - PnpQuotaResponseFailure, - PnpQuotaResponseSuccess, - PnpQuotaStatus, - send, - SignerEndpoint, - WarningMessage, -} from '@celo/phone-number-privacy-common' -import Logger from 'bunyan' -import { Request, Response } from 'express' -import { IO } from '../../../common/io' -import { Counters } from '../../../common/metrics' -import { getSignerVersion } from '../../../config' -import { PnpSession } from '../../session' - -import opentelemetry, { SpanStatusCode } from '@opentelemetry/api' -import { SemanticAttributes } from '@opentelemetry/semantic-conventions' -const tracer = opentelemetry.trace.getTracer('signer-tracer') - -export class PnpQuotaIO extends IO { - readonly endpoint = SignerEndpoint.PNP_QUOTA - - constructor( - readonly enabled: boolean, - readonly shouldFailOpen: boolean, - readonly fullNodeTimeoutMs: number, - readonly fullNodeRetryCount: number, - readonly fullNodeRetryDelayMs: number, - readonly kit: ContractKit - ) { - super(enabled) - } - - async init( - request: Request<{}, {}, unknown>, - response: Response - ): Promise | null> { - return tracer.startActiveSpan('pnpQuotaIO - Init', async (span) => { - const warnings: ErrorType[] = [] - span.addEvent('Calling inputChecks') - if (!super.inputChecks(request, response)) { - span.addEvent('Error calling inputChecks') - span.setStatus({ - code: SpanStatusCode.ERROR, - message: response.statusMessage, - }) - span.end() - return null - } - span.addEvent('inputChecks OK, Calling authenticate') - if (!(await this.authenticate(request, warnings, response.locals.logger))) { - span.addEvent('Error calling authenticate') - span.setStatus({ - code: SpanStatusCode.ERROR, - message: WarningMessage.UNAUTHENTICATED_USER, - }) - span.setAttribute(SemanticAttributes.HTTP_STATUS_CODE, 401) - this.sendFailure(WarningMessage.UNAUTHENTICATED_USER, 401, response) - span.end() - return null - } - span.addEvent('Authenticate OK, creating session') - const session = new PnpSession(request, response) - session.errors.push(...warnings) - span.addEvent('Session created') - span.setStatus({ - code: SpanStatusCode.OK, - message: response.statusMessage, - }) - span.end() - return session - }) - } - - validate(request: Request<{}, {}, unknown>): request is Request<{}, {}, PnpQuotaRequest> { - return ( - PnpQuotaRequestSchema.is(request.body) && - hasValidAccountParam(request.body) && - isBodyReasonablySized(request.body) - ) - } - - async authenticate( - request: Request<{}, {}, PnpQuotaRequest>, - warnings: ErrorType[], - logger: Logger - ): Promise { - return authenticateUser( - request, - this.kit, - logger, - this.shouldFailOpen, - warnings, - this.fullNodeTimeoutMs, - this.fullNodeRetryCount, - this.fullNodeRetryDelayMs - ) - } - - sendSuccess( - status: number, - response: Response, - quotaStatus: PnpQuotaStatus, - warnings: string[] - ) { - return tracer.startActiveSpan(`pnpQuotaIO - sendSuccess`, (span) => { - span.addEvent('Sending Success') - send( - response, - { - success: true, - version: getSignerVersion(), - ...quotaStatus, - warnings, - }, - status, - response.locals.logger - ) - span.setAttribute(SemanticAttributes.HTTP_METHOD, status) - span.setStatus({ - code: SpanStatusCode.OK, - message: response.statusMessage, - }) - Counters.responses.labels(this.endpoint, status.toString()).inc() - span.end() - }) - } - - sendFailure(error: ErrorType, status: number, response: Response) { - return tracer.startActiveSpan(`pnpQuotaIO - sendFailure`, (span) => { - span.addEvent('Sending Failure') - send( - response, - { - success: false, - version: getSignerVersion(), - error, - }, - status, - response.locals.logger - ) - span.setAttribute(SemanticAttributes.HTTP_METHOD, status) - span.setStatus({ - code: SpanStatusCode.ERROR, - message: error, - }) - Counters.responses.labels(this.endpoint, status.toString()).inc() - span.end() - }) - } -} diff --git a/packages/phone-number-privacy/signer/src/pnp/endpoints/sign/action.ts b/packages/phone-number-privacy/signer/src/pnp/endpoints/sign/action.ts index dd46abfbe9c..63911081042 100644 --- a/packages/phone-number-privacy/signer/src/pnp/endpoints/sign/action.ts +++ b/packages/phone-number-privacy/signer/src/pnp/endpoints/sign/action.ts @@ -1,226 +1,175 @@ -import { timeout } from '@celo/base' import { + authenticateUser, + AuthenticationMethod, ErrorMessage, + ErrorType, getRequestKeyVersion, + hasValidAccountParam, + hasValidBlindedPhoneNumberParam, + isBodyReasonablySized, + KEY_VERSION_HEADER, + requestHasValidKeyVersion, SignMessageRequest, + SignMessageRequestSchema, WarningMessage, } from '@celo/phone-number-privacy-common' -import { Knex } from 'knex' -import { Action, Session } from '../../../common/action' +import Logger from 'bunyan' +import { Request } from 'express' import { computeBlindedSignature } from '../../../common/bls/bls-cryptography-client' -import { REQUESTS_TABLE } from '../../../common/database/models/request' -import { getRequestExists } from '../../../common/database/wrappers/request' +import { errorResult, ResultHandler } from '../../../common/handler' import { DefaultKeyName, Key, KeyProvider } from '../../../common/key-management/key-provider-base' -import { Counters, Histograms, meter } from '../../../common/metrics' -import { SignerConfig } from '../../../config' -import { PnpQuotaService } from '../../services/quota' -import { PnpSession } from '../../session' -import { PnpSignIO } from './io' - -import opentelemetry, { SpanStatusCode } from '@opentelemetry/api' -import { SemanticAttributes } from '@opentelemetry/semantic-conventions' -const tracer = opentelemetry.trace.getTracer('signer-tracer') - -export class PnpSignAction implements Action { - protected readonly requestsTable: REQUESTS_TABLE = REQUESTS_TABLE.ONCHAIN - - constructor( - readonly db: Knex, - readonly config: SignerConfig, - readonly quota: PnpQuotaService, - readonly keyProvider: KeyProvider, - readonly io: PnpSignIO - ) {} - - public async perform( - session: PnpSession, - timeoutError: symbol - ): Promise { - // tslint:disable-next-line:no-floating-promises - return tracer.startActiveSpan('pnpSignIO - perform', async (span) => { - span.addEvent('Calling db transaction') - // Compute quota lookup, update, and signing within transaction - // so that these occur atomically and rollback on error. - await this.db.transaction(async (trx) => { - const pnpSignHandler = async () => { - span.addEvent('Getting quotaStatus') - const quotaStatus = await this.quota.getQuotaStatus(session, trx) - span.addEvent('Got quotaStatus') - - let isDuplicateRequest = false - try { - span.addEvent('Getting isDuplicateRequest') - isDuplicateRequest = await getRequestExists( - this.db, - this.requestsTable, - session.request.body.account, - session.request.body.blindedQueryPhoneNumber, - session.logger, - trx - ) - span.addEvent('Got isDuplicateRequest') - } catch (err) { - session.logger.error(err, 'Failed to check if request already exists in db') - span.addEvent('Error checking if request already exists in db') - span.setStatus({ - code: SpanStatusCode.ERROR, - message: 'Error checking if request already exists in db', - }) - } - - if (isDuplicateRequest) { - span.addEvent('Request already exists in db') - Counters.duplicateRequests.inc() - session.logger.info( - 'Request already exists in db. Will service request without charging quota.' - ) - session.errors.push(WarningMessage.DUPLICATE_REQUEST_TO_GET_PARTIAL_SIG) - } else { - // In the case of a database connection failure, performedQueryCount will be -1 - if (quotaStatus.performedQueryCount === -1) { - span.addEvent('Database connection failure') - span.setStatus({ - code: SpanStatusCode.ERROR, - message: ErrorMessage.DATABASE_GET_FAILURE, - }) - span.setAttribute(SemanticAttributes.HTTP_STATUS_CODE, 500) - this.io.sendFailure( - ErrorMessage.DATABASE_GET_FAILURE, - 500, - session.response, - quotaStatus - ) - return - } - // In the case of a blockchain connection failure, totalQuota will be -1 - if (quotaStatus.totalQuota === -1) { - if (this.io.shouldFailOpen) { - span.addEvent('Blockchain connection failure FailOpen') - span.setStatus({ - code: SpanStatusCode.ERROR, - message: ErrorMessage.FAILURE_TO_GET_TOTAL_QUOTA + ErrorMessage.FAILING_OPEN, - }) - // We fail open and service requests on full-node errors to not block the user. - // Error messages are stored in the session and included along with the signature in the response. - quotaStatus.totalQuota = Number.MAX_SAFE_INTEGER - session.logger.warn( - { warning: ErrorMessage.FAILURE_TO_GET_TOTAL_QUOTA }, - ErrorMessage.FAILING_OPEN - ) - Counters.requestsFailingOpen.inc() - } else { - span.addEvent('Blockchain connection failure FailClosed') - span.setStatus({ - code: SpanStatusCode.ERROR, - message: ErrorMessage.FAILURE_TO_GET_TOTAL_QUOTA + ErrorMessage.FAILING_CLOSED, - }) - span.setAttribute(SemanticAttributes.HTTP_STATUS_CODE, 500) - session.logger.warn( - { warning: ErrorMessage.FAILURE_TO_GET_TOTAL_QUOTA }, - ErrorMessage.FAILING_CLOSED - ) - Counters.requestsFailingClosed.inc() - this.io.sendFailure( - ErrorMessage.FULL_NODE_ERROR, - 500, - session.response, - quotaStatus - ) - return - } - } - - // TODO(after 2.0.0) add more specific error messages on DB and key version - // https://github.com/celo-org/celo-monorepo/issues/9882 - // quotaStatus is updated in place; throws on failure to update - span.addEvent('Calling checkAndUpdateQuotaStatus') - const { sufficient } = await this.quota.checkAndUpdateQuotaStatus( - quotaStatus, - session, - trx - ) - if (!sufficient) { - span.addEvent('Not sufficient Quota') - span.setStatus({ - code: SpanStatusCode.ERROR, - message: WarningMessage.EXCEEDED_QUOTA, - }) - span.setAttribute(SemanticAttributes.HTTP_STATUS_CODE, 403) - this.io.sendFailure(WarningMessage.EXCEEDED_QUOTA, 403, session.response, quotaStatus) - return - } - } - - const key: Key = { - version: - getRequestKeyVersion(session.request, session.logger) ?? - this.config.keystore.keys.phoneNumberPrivacy.latest, - name: DefaultKeyName.PHONE_NUMBER_PRIVACY, - } - - try { - span.addEvent('Signing request') - const signature = await meter( - this.sign.bind(this), - [session.request.body.blindedQueryPhoneNumber, key, session], - (err: any) => { - throw err - }, - Histograms.getBlindedSigInstrumentation, - ['sign'] - ) - span.addEvent('Signed request') - span.setStatus({ - code: SpanStatusCode.OK, - message: session.response.statusMessage, - }) - span.setAttribute(SemanticAttributes.HTTP_STATUS_CODE, 200) - this.io.sendSuccess(200, session.response, key, signature, quotaStatus, session.errors) - return - } catch (err) { - span.addEvent('Signature computation error') - span.setStatus({ - code: SpanStatusCode.ERROR, - message: ErrorMessage.SIGNATURE_COMPUTATION_FAILURE, - }) - span.setAttribute(SemanticAttributes.HTTP_STATUS_CODE, 500) - session.logger.error({ err }) - quotaStatus.performedQueryCount-- - this.io.sendFailure( - ErrorMessage.SIGNATURE_COMPUTATION_FAILURE, - 500, - session.response, - quotaStatus - ) - span.addEvent('Rolling back transactions') - // Note that errors thrown after rollback will have no effect, hence doing this last - await trx.rollback() - span.addEvent('Transaction rolled back') - return - } - } - span.addEvent('Calling pnpSignHandler with timeout') - await timeout(pnpSignHandler, [], this.config.timeout, timeoutError) - span.addEvent('Called pnpSignHandler with timeout') - }) - span.addEvent('Called transaction') - span.end() - }) +import { Counters, Histograms } from '../../../common/metrics' +import { traceAsyncFunction } from '../../../common/tracing-utils' +import { getSignerVersion, SignerConfig } from '../../../config' +import { AccountService } from '../../services/account-service' +import { PnpRequestService } from '../../services/request-service' + +export function pnpSign( + config: SignerConfig, + requestService: PnpRequestService, + accountService: AccountService, + keyProvider: KeyProvider +): ResultHandler { + return async (request, response) => { + const logger = response.locals.logger + + if (!isValidRequest(request)) { + return errorResult(400, WarningMessage.INVALID_INPUT) + } + + if (!requestHasValidKeyVersion(request, logger)) { + return errorResult(400, WarningMessage.INVALID_KEY_VERSION_REQUEST) + } + + const warnings: ErrorType[] = [] + const ctx = { + url: request.url, + logger, + errors: warnings, + } + + const account = await accountService.getAccount(request.body.account) + + if (request.body.authenticationMethod === AuthenticationMethod.WALLET_KEY) { + Counters.requestsWithWalletAddress.inc() + } + + if (!(await authenticateUser(request, logger, async (_) => account.dek, warnings))) { + return errorResult(401, WarningMessage.UNAUTHENTICATED_USER) + } + + let usedQuota = await requestService.getUsedQuotaForAccount(request.body.account, ctx) + + const duplicateRequest = await requestService.getDuplicateRequest( + request.body.account, + request.body.blindedQueryPhoneNumber, + ctx + ) + + Histograms.userRemainingQuotaAtRequest + .labels(ctx.url) + .observe(account.pnpTotalQuota - usedQuota) + + if (!duplicateRequest && account.pnpTotalQuota <= usedQuota) { + logger.warn({ usedQuota, totalQuota: account.pnpTotalQuota }, 'No remaining quota') + + if (bypassQuotaForE2ETesting(config.test_quota_bypass_percentage, request.body)) { + Counters.testQuotaBypassedRequests.inc() + logger.info(request.body, 'Request will bypass quota check for e2e testing') + } else { + return errorResult(403, WarningMessage.EXCEEDED_QUOTA, { + performedQueryCount: usedQuota, + totalQuota: account.pnpTotalQuota, + }) + } + } + + const key: Key = { + version: + getRequestKeyVersion(request, logger) ?? config.keystore.keys.phoneNumberPrivacy.latest, + name: DefaultKeyName.PHONE_NUMBER_PRIVACY, + } + + let signature: string + if (duplicateRequest && duplicateRequest.signature?.length) { + signature = duplicateRequest.signature + } else { + try { + signature = await sign(request.body.blindedQueryPhoneNumber, key, keyProvider, logger) + } catch (err) { + logger.error({ err }, 'catch error on signing') + + return errorResult(500, ErrorMessage.SIGNATURE_COMPUTATION_FAILURE, { + performedQueryCount: usedQuota, + totalQuota: account.pnpTotalQuota, + }) + } + } + + if (!duplicateRequest) { + await requestService.recordRequest( + account.address, + request.body.blindedQueryPhoneNumber, + signature, + ctx + ) + usedQuota++ + } else { + Counters.duplicateRequests.inc() + logger.info('Request already exists in db. Will service request without charging quota.') + warnings.push(WarningMessage.DUPLICATE_REQUEST_TO_GET_PARTIAL_SIG) + } + + // Send Success response + response.set(KEY_VERSION_HEADER, key.version.toString()) + return { + status: 200, + body: { + success: true as true, + version: getSignerVersion(), + signature, + performedQueryCount: usedQuota, + totalQuota: account.pnpTotalQuota, + warnings, + }, + } } +} - private async sign( - blindedMessage: string, - key: Key, - session: Session - ): Promise { - let privateKey: string +async function sign( + blindedMessage: string, + key: Key, + keyProvider: KeyProvider, + logger: Logger +): Promise { + let privateKey: string + return traceAsyncFunction('pnpSign', async () => { try { - privateKey = await this.keyProvider.getPrivateKeyOrFetchFromStore(key) + privateKey = await keyProvider.getPrivateKeyOrFetchFromStore(key) } catch (err) { - session.logger.info({ key }, 'Requested key version not supported') - session.logger.error(err) + logger.info({ key }, 'Requested key version not supported') + logger.error(err) throw new Error(WarningMessage.INVALID_KEY_VERSION_REQUEST) } - return computeBlindedSignature(blindedMessage, privateKey, session.logger) - } + return computeBlindedSignature(blindedMessage, privateKey, logger) + }) +} + +function isValidRequest( + request: Request<{}, {}, unknown> +): request is Request<{}, {}, SignMessageRequest> { + return ( + SignMessageRequestSchema.is(request.body) && + hasValidAccountParam(request.body) && + hasValidBlindedPhoneNumberParam(request.body) && + isBodyReasonablySized(request.body) + ) +} + +function bypassQuotaForE2ETesting( + bypassQuotaPercentage: number, + requestBody: SignMessageRequest +): boolean { + const sessionID = Number(requestBody.sessionID) // TODO revisit whether to remove sessionID + return !Number.isNaN(sessionID) && sessionID % 100 < bypassQuotaPercentage } diff --git a/packages/phone-number-privacy/signer/src/pnp/endpoints/sign/io.ts b/packages/phone-number-privacy/signer/src/pnp/endpoints/sign/io.ts deleted file mode 100644 index ef77accd2b3..00000000000 --- a/packages/phone-number-privacy/signer/src/pnp/endpoints/sign/io.ts +++ /dev/null @@ -1,194 +0,0 @@ -import { ContractKit } from '@celo/contractkit' -import { - authenticateUser, - AuthenticationMethod, - ErrorType, - hasValidAccountParam, - hasValidBlindedPhoneNumberParam, - isBodyReasonablySized, - KEY_VERSION_HEADER, - PnpQuotaStatus, - requestHasValidKeyVersion, - send, - SignerEndpoint, - SignMessageRequest, - SignMessageRequestSchema, - SignMessageResponse, - SignMessageResponseFailure, - SignMessageResponseSuccess, - WarningMessage, -} from '@celo/phone-number-privacy-common' -import Logger from 'bunyan' -import { Request, Response } from 'express' -import { IO } from '../../../common/io' -import { Key } from '../../../common/key-management/key-provider-base' -import { Counters } from '../../../common/metrics' -import { getSignerVersion } from '../../../config' -import { PnpSession } from '../../session' - -import opentelemetry, { SpanStatusCode } from '@opentelemetry/api' -import { SemanticAttributes } from '@opentelemetry/semantic-conventions' -const tracer = opentelemetry.trace.getTracer('signer-tracer') - -export class PnpSignIO extends IO { - readonly endpoint = SignerEndpoint.PNP_SIGN - - constructor( - readonly enabled: boolean, - readonly shouldFailOpen: boolean, - readonly fullNodeTimeoutMs: number, - readonly fullNodeRetryCount: number, - readonly fullNodeRetryDelayMs: number, - readonly kit: ContractKit - ) { - super(enabled) - } - - async init( - request: Request<{}, {}, unknown>, - response: Response - ): Promise | null> { - return tracer.startActiveSpan('pnpSignIO - init', async (span) => { - const logger = response.locals.logger - const warnings: ErrorType[] = [] - span.addEvent('Calling inputChecks') - if (!super.inputChecks(request, response)) { - span.addEvent('Error calling inputChecks') - span.setStatus({ - code: SpanStatusCode.ERROR, - message: response.statusMessage, - }) - span.end() - return null - } - span.addEvent('inputChecks OK, Calling requestHasValidKeyVersion') - if (!requestHasValidKeyVersion(request, logger)) { - span.addEvent('Error request has invalid key version.') - span.setStatus({ - code: SpanStatusCode.ERROR, - message: WarningMessage.INVALID_KEY_VERSION_REQUEST, - }) - span.setAttribute(SemanticAttributes.HTTP_STATUS_CODE, 400) - this.sendFailure(WarningMessage.INVALID_KEY_VERSION_REQUEST, 400, response) - span.end() - return null - } - span.addEvent('requestHasValidKeyVersion OK, Calling authenticate') - if (!(await this.authenticate(request, warnings, logger))) { - span.addEvent('Error calling authenticate') - span.setStatus({ - code: SpanStatusCode.ERROR, - message: WarningMessage.UNAUTHENTICATED_USER, - }) - span.setAttribute(SemanticAttributes.HTTP_STATUS_CODE, 401) - this.sendFailure(WarningMessage.UNAUTHENTICATED_USER, 401, response) - span.end() - return null - } - span.addEvent('Authenticate OK, creating session') - const session = new PnpSession(request, response) - session.errors.push(...warnings) - span.addEvent('Session created') - span.setStatus({ - code: SpanStatusCode.OK, - message: response.statusMessage, - }) - span.end() - return session - }) - } - - validate(request: Request<{}, {}, unknown>): request is Request<{}, {}, SignMessageRequest> { - return ( - SignMessageRequestSchema.is(request.body) && - hasValidAccountParam(request.body) && - hasValidBlindedPhoneNumberParam(request.body) && - isBodyReasonablySized(request.body) - ) - } - - async authenticate( - request: Request<{}, {}, SignMessageRequest>, - warnings: ErrorType[], - logger: Logger - ): Promise { - const authMethod = request.body.authenticationMethod - - if (authMethod && authMethod === AuthenticationMethod.WALLET_KEY) { - Counters.requestsWithWalletAddress.inc() - } - - return authenticateUser( - request, - this.kit, - logger, - this.shouldFailOpen, - warnings, - this.fullNodeTimeoutMs, - this.fullNodeRetryCount, - this.fullNodeRetryDelayMs - ) - } - - sendSuccess( - status: number, - response: Response, - key: Key, - signature: string, - quotaStatus: PnpQuotaStatus, - warnings: string[] - ) { - return tracer.startActiveSpan(`pnpSignIO - sendSuccess`, (span) => { - span.addEvent('Sending Success') - response.set(KEY_VERSION_HEADER, key.version.toString()) - send( - response, - { - success: true, - version: getSignerVersion(), - signature, - ...quotaStatus, - warnings, - }, - status, - response.locals.logger - ) - span.setAttribute(SemanticAttributes.HTTP_METHOD, status) - span.setStatus({ - code: SpanStatusCode.OK, - message: response.statusMessage, - }) - Counters.responses.labels(this.endpoint, status.toString()).inc() - span.end() - }) - } - - sendFailure( - error: string, - status: number, - response: Response, - quotaStatus?: PnpQuotaStatus - ) { - return tracer.startActiveSpan(`pnpSignIO - sendFailure`, (span) => { - span.addEvent('Sending Failure') - send( - response, - { - success: false, - version: getSignerVersion(), - error, - ...quotaStatus, - }, - status, - response.locals.logger - ) - span.setAttribute(SemanticAttributes.HTTP_METHOD, status) - span.setStatus({ - code: SpanStatusCode.ERROR, - message: error, - }) - Counters.responses.labels(this.endpoint, status.toString()).inc() - span.end() - }) - } -} diff --git a/packages/phone-number-privacy/signer/src/pnp/services/account-service.ts b/packages/phone-number-privacy/signer/src/pnp/services/account-service.ts new file mode 100644 index 00000000000..74e75fd3f9f --- /dev/null +++ b/packages/phone-number-privacy/signer/src/pnp/services/account-service.ts @@ -0,0 +1,100 @@ +import { ContractKit } from '@celo/contractkit' +import { ErrorMessage } from '@celo/phone-number-privacy-common' +import BigNumber from 'bignumber.js' +import Logger from 'bunyan' +import { LRUCache } from 'lru-cache' +import { OdisError, wrapError } from '../../common/error' +import { traceAsyncFunction } from '../../common/tracing-utils' +import { getDEK, getOnChainOdisPayments } from '../../common/web3/contracts' +import { config } from '../../config' + +export interface PnpAccount { + dek: string // onChain + address: string // onChain + pnpTotalQuota: number // onChain +} + +export interface AccountService { + getAccount(address: string): Promise +} + +interface CachedValue { + dek: string + pnpTotalQuota: number +} + +export class CachingAccountService implements AccountService { + private cache: LRUCache + constructor(baseService: AccountService) { + this.cache = new LRUCache({ + max: 500, + ttl: 5 * 1000, // 5 seconds + allowStale: true, + fetchMethod: async (address: string) => { + const account = await baseService.getAccount(address) + return { dek: account.dek, pnpTotalQuota: account.pnpTotalQuota } + }, + }) + } + + getAccount(address: string): Promise { + return traceAsyncFunction('CachingAccountService - getAccount', async () => { + const value = await this.cache.fetch(address) + + if (value === undefined) { + throw new OdisError(ErrorMessage.FULL_NODE_ERROR) + } + return { + address, + dek: value.dek, + pnpTotalQuota: value.pnpTotalQuota, + } + }) + } +} + +// tslint:disable-next-line:max-classes-per-file +export class ContractKitAccountService implements AccountService { + constructor(private readonly logger: Logger, private readonly kit: ContractKit) {} + + async getAccount(address: string): Promise { + return traceAsyncFunction('ContractKitAccountService - getAccount', async () => { + const dek = await wrapError( + getDEK(this.kit, this.logger, address), + ErrorMessage.FAILURE_TO_GET_DEK + ) + + const { queryPriceInCUSD } = config.quota + const totalPaidInWei = await wrapError( + getOnChainOdisPayments(this.kit, this.logger, address), + ErrorMessage.FAILURE_TO_GET_TOTAL_QUOTA + ) + const totalQuotaBN = totalPaidInWei + .div(queryPriceInCUSD.times(new BigNumber(1e18))) + .integerValue(BigNumber.ROUND_DOWN) + + // If any account hits an overflow here, we need to redesign how + // quota/queries are computed anyways. + const pnpTotalQuota = totalQuotaBN.toNumber() + + return { + address, + dek, + pnpTotalQuota, + } + }) + } +} + +// tslint:disable-next-line:max-classes-per-file +export class MockAccountService implements AccountService { + constructor(private readonly mockDek: string, private readonly mockTotalQuota: number) {} + + async getAccount(address: string): Promise { + return { + dek: this.mockDek, + address, + pnpTotalQuota: this.mockTotalQuota, + } + } +} diff --git a/packages/phone-number-privacy/signer/src/pnp/services/quota.ts b/packages/phone-number-privacy/signer/src/pnp/services/quota.ts deleted file mode 100644 index 8d227573c67..00000000000 --- a/packages/phone-number-privacy/signer/src/pnp/services/quota.ts +++ /dev/null @@ -1,171 +0,0 @@ -import { ContractKit } from '@celo/contractkit' -import { - ErrorMessage, - PnpQuotaRequest, - PnpQuotaStatus, - SignMessageRequest, -} from '@celo/phone-number-privacy-common' -import BigNumber from 'bignumber.js' -import { Knex } from 'knex' -import { ACCOUNTS_TABLE } from '../../common/database/models/account' -import { REQUESTS_TABLE } from '../../common/database/models/request' -import { getPerformedQueryCount, incrementQueryCount } from '../../common/database/wrappers/account' -import { storeRequest } from '../../common/database/wrappers/request' -import { Counters, Histograms, meter } from '../../common/metrics' -import { OdisQuotaStatusResult, QuotaService } from '../../common/quota' -import { getBlockNumber, getOnChainOdisPayments } from '../../common/web3/contracts' -import { config } from '../../config' -import { PnpSession } from '../session' - -export class PnpQuotaService implements QuotaService { - protected readonly requestsTable: REQUESTS_TABLE = REQUESTS_TABLE.ONCHAIN - protected readonly accountsTable: ACCOUNTS_TABLE = ACCOUNTS_TABLE.ONCHAIN - - constructor(readonly db: Knex, readonly kit: ContractKit) {} - - public async checkAndUpdateQuotaStatus( - state: PnpQuotaStatus, - session: PnpSession, - trx: Knex.Transaction - ): Promise> { - const remainingQuota = state.totalQuota - state.performedQueryCount - Histograms.userRemainingQuotaAtRequest.labels(session.request.url).observe(remainingQuota) - let sufficient = remainingQuota > 0 - if (!sufficient) { - session.logger.warn({ ...state }, 'No remaining quota') - if (this.bypassQuotaForE2ETesting(session.request.body)) { - Counters.testQuotaBypassedRequests.inc() - session.logger.info(session.request.body, 'Request will bypass quota check for e2e testing') - sufficient = true - } - } else { - await Promise.all([ - storeRequest( - this.db, - this.requestsTable, - session.request.body.account, - session.request.body.blindedQueryPhoneNumber, - session.logger, - trx - ), - incrementQueryCount( - this.db, - this.accountsTable, - session.request.body.account, - session.logger, - trx - ), - ]) - state.performedQueryCount++ - } - return { sufficient, state } - } - - public async getQuotaStatus( - session: PnpSession, - trx?: Knex.Transaction - ): Promise { - const { account } = session.request.body - const [performedQueryCountResult, totalQuotaResult, blockNumberResult] = await meter( - (_session: PnpSession) => - Promise.allSettled([ - getPerformedQueryCount(this.db, this.accountsTable, account, session.logger, trx), - this.getTotalQuota(_session), - getBlockNumber(this.kit), - ]), - [session], - (err: any) => { - throw err - }, - Histograms.getRemainingQueryCountInstrumentation, - ['getQuotaStatus', session.request.url] - ) - - const quotaStatus: PnpQuotaStatus = { - // TODO(future) consider making totalQuota,performedQueryCount undefined - totalQuota: -1, - performedQueryCount: -1, - blockNumber: undefined, - } - if (performedQueryCountResult.status === 'fulfilled') { - quotaStatus.performedQueryCount = performedQueryCountResult.value - } else { - session.logger.error( - { err: performedQueryCountResult.reason }, - ErrorMessage.FAILURE_TO_GET_PERFORMED_QUERY_COUNT - ) - session.errors.push( - ErrorMessage.DATABASE_GET_FAILURE, - ErrorMessage.FAILURE_TO_GET_PERFORMED_QUERY_COUNT - ) - } - let hadFullNodeError = false - if (totalQuotaResult.status === 'fulfilled') { - quotaStatus.totalQuota = totalQuotaResult.value - } else { - session.logger.error( - { err: totalQuotaResult.reason }, - ErrorMessage.FAILURE_TO_GET_TOTAL_QUOTA - ) - hadFullNodeError = true - session.errors.push(ErrorMessage.FAILURE_TO_GET_TOTAL_QUOTA) - } - if (blockNumberResult.status === 'fulfilled') { - quotaStatus.blockNumber = blockNumberResult.value - } else { - session.logger.error( - { err: blockNumberResult.reason }, - ErrorMessage.FAILURE_TO_GET_BLOCK_NUMBER - ) - hadFullNodeError = true - session.errors.push(ErrorMessage.FAILURE_TO_GET_BLOCK_NUMBER) - } - if (hadFullNodeError) { - session.errors.push(ErrorMessage.FULL_NODE_ERROR) - } - - return quotaStatus - } - - protected async getTotalQuota( - session: PnpSession - ): Promise { - return meter( - this.getTotalQuotaWithoutMeter.bind(this), - [session], - (err: any) => { - throw err - }, - Histograms.getRemainingQueryCountInstrumentation, - ['getTotalQuota', session.request.url] - ) - } - - /* - * Calculates how many queries the caller has unlocked; - * must be implemented by subclasses. - */ - protected async getTotalQuotaWithoutMeter( - session: PnpSession - ): Promise { - const { queryPriceInCUSD } = config.quota - const { account } = session.request.body - const totalPaidInWei = await getOnChainOdisPayments( - this.kit, - session.logger, - account, - session.request.url - ) - const totalQuota = totalPaidInWei - .div(queryPriceInCUSD.times(new BigNumber(1e18))) - .integerValue(BigNumber.ROUND_DOWN) - // If any account hits an overflow here, we need to redesign how - // quota/queries are computed anyways. - return totalQuota.toNumber() - } - - private bypassQuotaForE2ETesting(requestBody: SignMessageRequest): boolean { - const sessionID = Number(requestBody.sessionID) - return !Number.isNaN(sessionID) && sessionID % 100 < config.test_quota_bypass_percentage - } -} diff --git a/packages/phone-number-privacy/signer/src/pnp/services/request-service.ts b/packages/phone-number-privacy/signer/src/pnp/services/request-service.ts new file mode 100644 index 00000000000..597a714fe9d --- /dev/null +++ b/packages/phone-number-privacy/signer/src/pnp/services/request-service.ts @@ -0,0 +1,121 @@ +import { ErrorMessage } from '@celo/phone-number-privacy-common' +import { Knex } from 'knex' +import { Context } from '../../common/context' +import { PnpSignRequestRecord } from '../../common/database/models/request' +import { getPerformedQueryCount, incrementQueryCount } from '../../common/database/wrappers/account' +import { + deleteRequestsOlderThan, + getRequestIfExists, + insertRequest, +} from '../../common/database/wrappers/request' +import { wrapError } from '../../common/error' +import { traceAsyncFunction } from '../../common/tracing-utils' + +export interface PnpRequestService { + recordRequest( + address: string, + blindedQuery: string, + signature: string, + ctx: Context + ): Promise + getUsedQuotaForAccount(address: string, ctx: Context): Promise + getDuplicateRequest( + address: string, + blindedQuery: string, + ctx: Context + ): Promise + removeOldRequests(daysToKeep: number, ctx: Context): Promise +} + +export class DefaultPnpRequestService implements PnpRequestService { + constructor(readonly db: Knex) {} + + public async recordRequest( + account: string, + blindedQueryPhoneNumber: string, + signature: string, + ctx: Context + ): Promise { + return traceAsyncFunction('DefaultPnpRequestService - recordRequest', () => + this.db.transaction(async (trx) => { + await insertRequest(this.db, account, blindedQueryPhoneNumber, signature, ctx.logger, trx) + await incrementQueryCount(this.db, account, ctx.logger, trx) + }) + ) + } + + public async getUsedQuotaForAccount(account: string, ctx: Context): Promise { + return traceAsyncFunction('DefaultPnpRequestService - getUsedQuotaForAccount', () => + wrapError( + getPerformedQueryCount(this.db, account, ctx.logger), + ErrorMessage.FAILURE_TO_GET_PERFORMED_QUERY_COUNT + ) + ) + } + + public async getDuplicateRequest( + account: string, + blindedQueryPhoneNumber: string, + ctx: Context + ): Promise { + try { + const res = await getRequestIfExists(this.db, account, blindedQueryPhoneNumber, ctx.logger) + return res + } catch (err) { + ctx.logger.error(err, 'Failed to check if request already exists in db') + return undefined + } + } + + public async removeOldRequests(daysToKeep: number, ctx: Context): Promise { + if (daysToKeep < 0) { + ctx.logger.error( + { daysToKeep }, + 'RemoveOldRequests - DaysToKeep should be bigger than or equal to zero' + ) + return 0 + } + const since: Date = new Date(Date.now() - daysToKeep * 24 * 60 * 60 * 1000) + return traceAsyncFunction('DefaultPnpRequestService - removeOldRequests', () => + deleteRequestsOlderThan(this.db, since, ctx.logger) + ) + } +} + +// tslint:disable-next-line:max-classes-per-file +export class MockPnpRequestService implements PnpRequestService { + public async recordRequest( + account: string, + blindedQueryPhoneNumber: string, + signature: string, + ctx: Context + ): Promise { + ctx.logger.info( + { account, blindedQueryPhoneNumber, signature }, + 'MockPnpRequestService - recordRequest' + ) + return + } + + public async getUsedQuotaForAccount(account: string, ctx: Context): Promise { + ctx.logger.info({ account }, 'MockPnpRequestService - getUsedQuotaForAccount') + return 0 + } + + public async getDuplicateRequest( + account: string, + blindedQueryPhoneNumber: string, + ctx: Context + ): Promise { + ctx.logger.info( + { account, blindedQueryPhoneNumber }, + 'MockPnpRequestService - isDuplicateRequest' + ) + return undefined + } + + public async removeOldRequests(daysToKeep: number, ctx: Context): Promise { + ctx.logger.info({ daysToKeep }, 'MockPnpRequestService - removeOldRequests') + return 0 + } +} diff --git a/packages/phone-number-privacy/signer/src/pnp/session.ts b/packages/phone-number-privacy/signer/src/pnp/session.ts deleted file mode 100644 index a6d80c764ae..00000000000 --- a/packages/phone-number-privacy/signer/src/pnp/session.ts +++ /dev/null @@ -1,19 +0,0 @@ -import { - ErrorType, - PhoneNumberPrivacyRequest, - PhoneNumberPrivacyResponse, -} from '@celo/phone-number-privacy-common' -import Logger from 'bunyan' -import { Request, Response } from 'express' - -export class PnpSession { - readonly logger: Logger - readonly errors: ErrorType[] = [] - - public constructor( - readonly request: Request<{}, {}, R>, - readonly response: Response> - ) { - this.logger = response.locals.logger - } -} diff --git a/packages/phone-number-privacy/signer/src/server.ts b/packages/phone-number-privacy/signer/src/server.ts index b0896fce950..56978ac66ca 100644 --- a/packages/phone-number-privacy/signer/src/server.ts +++ b/packages/phone-number-privacy/signer/src/server.ts @@ -1,38 +1,42 @@ import { ContractKit } from '@celo/contractkit' import { - ErrorMessage, - getContractKit, + getContractKitWithAgent, loggerMiddleware, + OdisRequest, rootLogger, SignerEndpoint, } from '@celo/phone-number-privacy-common' -import Logger from 'bunyan' -import express, { Express, Request, RequestHandler, Response } from 'express' +import express, { Express, RequestHandler } from 'express' import fs from 'fs' import https from 'https' import { Knex } from 'knex' import { IncomingMessage, ServerResponse } from 'node:http' import * as PromClient from 'prom-client' -import { Controller } from './common/controller' +import { + catchErrorHandler, + disabledHandler, + Locals, + meteringHandler, + ResultHandler, + resultHandler, + timeoutHandler, + tracingHandler, +} from './common/handler' import { KeyProvider } from './common/key-management/key-provider-base' -import { Counters } from './common/metrics' +import { Histograms } from './common/metrics' import { getSignerVersion, SignerConfig } from './config' -import { DomainDisableAction } from './domain/endpoints/disable/action' -import { DomainDisableIO } from './domain/endpoints/disable/io' -import { DomainQuotaAction } from './domain/endpoints/quota/action' -import { DomainQuotaIO } from './domain/endpoints/quota/io' -import { DomainSignAction } from './domain/endpoints/sign/action' -import { DomainSignIO } from './domain/endpoints/sign/io' +import { domainDisable } from './domain/endpoints/disable/action' +import { domainQuota } from './domain/endpoints/quota/action' +import { domainSign } from './domain/endpoints/sign/action' import { DomainQuotaService } from './domain/services/quota' -import { PnpQuotaAction } from './pnp/endpoints/quota/action' -import { PnpQuotaIO } from './pnp/endpoints/quota/io' -import { PnpSignAction } from './pnp/endpoints/sign/action' -import { PnpSignIO } from './pnp/endpoints/sign/io' -import { PnpQuotaService } from './pnp/services/quota' - -import opentelemetry, { SpanStatusCode } from '@opentelemetry/api' -import { SemanticAttributes } from '@opentelemetry/semantic-conventions' -const tracer = opentelemetry.trace.getTracer('signer-tracer') +import { pnpQuota } from './pnp/endpoints/quota/action' +import { pnpSign } from './pnp/endpoints/sign/action' +import { + CachingAccountService, + ContractKitAccountService, + MockAccountService, +} from './pnp/services/account-service' +import { DefaultPnpRequestService, MockPnpRequestService } from './pnp/services/request-service' require('events').EventEmitter.defaultMaxListeners = 15 @@ -44,7 +48,7 @@ export function startSigner( ): Express | https.Server { const logger = rootLogger(config.serviceName) - kit = kit ?? getContractKit(config.blockchain) + kit = kit ?? getContractKitWithAgent(config.blockchain) logger.info('Creating signer express server') const app = express() @@ -60,101 +64,48 @@ export function startSigner( res.send(PromClient.register.metrics()) }) - const addEndpoint = ( - endpoint: SignerEndpoint, - handler: (req: Request, res: Response) => Promise - ) => - app.post(endpoint, async (req, res) => { - // tslint:disable-next-line:no-floating-promises - return tracer.startActiveSpan('server - addEndpoint - post', async (parentSpan) => { - const childLogger: Logger = res.locals.logger - try { - parentSpan.addEvent('Called ' + req.path) - parentSpan.setAttribute(SemanticAttributes.HTTP_ROUTE, req.path) - parentSpan.setAttribute(SemanticAttributes.HTTP_METHOD, req.method) - parentSpan.setAttribute(SemanticAttributes.HTTP_CLIENT_IP, req.ip) - await handler(req, res) - } catch (err: any) { - parentSpan.setStatus({ - code: SpanStatusCode.ERROR, - message: 'Fail', - }) - // Handle any errors that otherwise managed to escape the proper handlers - childLogger.error(ErrorMessage.CAUGHT_ERROR_IN_ENDPOINT_HANDLER) - childLogger.error(err) - Counters.errorsCaughtInEndpointHandler.inc() - if (!res.headersSent) { - childLogger.info('Responding with error in outer endpoint handler') - res.status(500).json({ - success: false, - error: ErrorMessage.UNKNOWN_ERROR, - }) - } else { - // Getting to this error likely indicates that the `perform` process - // does not terminate after sending a response, and then throws an error. - childLogger.error(ErrorMessage.ERROR_AFTER_RESPONSE_SENT) - Counters.errorsThrownAfterResponseSent.inc() - } - } - parentSpan.end() - }) - }) + const baseAccountService = config.shouldMockAccountService + ? new MockAccountService(config.mockDek, config.mockTotalQuota) + : new ContractKitAccountService(logger, kit) + + const accountService = new CachingAccountService(baseAccountService) - const pnpQuotaService = new PnpQuotaService(db, kit) + const pnpRequestService = config.shouldMockRequestService + ? new MockPnpRequestService() + : new DefaultPnpRequestService(db) const domainQuotaService = new DomainQuotaService(db) - const pnpQuota = new Controller( - new PnpQuotaAction( - config, - pnpQuotaService, - new PnpQuotaIO( - config.api.phoneNumberPrivacy.enabled, - config.api.phoneNumberPrivacy.shouldFailOpen, // TODO (https://github.com/celo-org/celo-monorepo/issues/9862) consider refactoring config to make the code cleaner - config.fullNodeTimeoutMs, - config.fullNodeRetryCount, - config.fullNodeRetryDelayMs, - kit - ) + logger.info('Right before adding meteredSignerEndpoints') + + const { + timeout, + api: { domains, phoneNumberPrivacy }, + } = config + + app.post( + SignerEndpoint.PNP_SIGN, + createHandler( + timeout, + phoneNumberPrivacy.enabled, + pnpSign(config, pnpRequestService, accountService, keyProvider) ) ) - const pnpSign = new Controller( - new PnpSignAction( - db, - config, - pnpQuotaService, - keyProvider, - new PnpSignIO( - config.api.phoneNumberPrivacy.enabled, - config.api.phoneNumberPrivacy.shouldFailOpen, - config.fullNodeTimeoutMs, - config.fullNodeRetryCount, - config.fullNodeRetryDelayMs, - kit - ) - ) + app.post( + SignerEndpoint.PNP_QUOTA, + createHandler(timeout, phoneNumberPrivacy.enabled, pnpQuota(pnpRequestService, accountService)) ) - - const domainQuota = new Controller( - new DomainQuotaAction(config, domainQuotaService, new DomainQuotaIO(config.api.domains.enabled)) + app.post( + SignerEndpoint.DOMAIN_QUOTA_STATUS, + createHandler(timeout, domains.enabled, domainQuota(domainQuotaService)) ) - const domainSign = new Controller( - new DomainSignAction( - db, - config, - domainQuotaService, - keyProvider, - new DomainSignIO(config.api.domains.enabled) - ) + app.post( + SignerEndpoint.DOMAIN_SIGN, + createHandler(timeout, domains.enabled, domainSign(db, config, domainQuotaService, keyProvider)) ) - const domainDisable = new Controller( - new DomainDisableAction(db, config, new DomainDisableIO(config.api.domains.enabled)) + app.post( + SignerEndpoint.DISABLE_DOMAIN, + createHandler(timeout, domains.enabled, domainDisable(db)) ) - logger.info('Right before adding meteredSignerEndpoints') - addEndpoint(SignerEndpoint.PNP_SIGN, pnpSign.handle.bind(pnpSign)) - addEndpoint(SignerEndpoint.PNP_QUOTA, pnpQuota.handle.bind(pnpQuota)) - addEndpoint(SignerEndpoint.DOMAIN_QUOTA_STATUS, domainQuota.handle.bind(domainQuota)) - addEndpoint(SignerEndpoint.DOMAIN_SIGN, domainSign.handle.bind(domainSign)) - addEndpoint(SignerEndpoint.DISABLE_DOMAIN, domainDisable.handle.bind(domainDisable)) const sslOptions = getSslOptions(config) if (sslOptions) { @@ -183,3 +134,18 @@ function getSslOptions(config: SignerConfig) { cert: fs.readFileSync(sslCertPath), } } + +function createHandler( + timeoutMs: number, + enabled: boolean, + action: ResultHandler +): RequestHandler<{}, {}, R, {}, Locals> { + return catchErrorHandler( + tracingHandler( + meteringHandler( + Histograms.responseLatency, + timeoutHandler(timeoutMs, enabled ? resultHandler(action) : disabledHandler) + ) + ) + ) +} diff --git a/packages/phone-number-privacy/signer/test/end-to-end/domain.test.ts b/packages/phone-number-privacy/signer/test/end-to-end/domain.test.ts index d467f2742e8..019da14223d 100644 --- a/packages/phone-number-privacy/signer/test/end-to-end/domain.test.ts +++ b/packages/phone-number-privacy/signer/test/end-to-end/domain.test.ts @@ -68,7 +68,7 @@ describe(`Running against service deployed at ${ODIS_SIGNER_URL}`, () => { const res = await queryDomainEndpoint(req, SignerEndpoint.DISABLE_DOMAIN) expect(res.status).toBe(200) const resBody: DisableDomainResponseSuccess = await res.json() - expect(resBody).toStrictEqual({ + expect(resBody).toEqual({ success: true, version: resBody.version, status: { @@ -85,7 +85,7 @@ describe(`Running against service deployed at ${ODIS_SIGNER_URL}`, () => { const res = await queryDomainEndpoint(req, SignerEndpoint.DISABLE_DOMAIN) expect(res.status).toBe(200) const resBody: DisableDomainResponseSuccess = await res.json() - expect(resBody).toStrictEqual({ + expect(resBody).toEqual({ success: true, version: resBody.version, status: { @@ -104,7 +104,7 @@ describe(`Running against service deployed at ${ODIS_SIGNER_URL}`, () => { const res = await queryDomainEndpoint(badRequest, SignerEndpoint.DISABLE_DOMAIN) expect(res.status).toBe(400) const resBody: DisableDomainResponseFailure = await res.json() - expect(resBody).toStrictEqual({ + expect(resBody).toEqual({ success: false, version: resBody.version, error: WarningMessage.INVALID_INPUT, @@ -118,7 +118,7 @@ describe(`Running against service deployed at ${ODIS_SIGNER_URL}`, () => { const res = await queryDomainEndpoint(badRequest, SignerEndpoint.DISABLE_DOMAIN) expect(res.status).toBe(400) const resBody: DisableDomainResponseFailure = await res.json() - expect(resBody).toStrictEqual({ + expect(resBody).toEqual({ success: false, version: resBody.version, error: WarningMessage.INVALID_INPUT, @@ -132,7 +132,7 @@ describe(`Running against service deployed at ${ODIS_SIGNER_URL}`, () => { const res = await queryDomainEndpoint(badRequest, SignerEndpoint.DISABLE_DOMAIN) expect(res.status).toBe(400) const resBody: DisableDomainResponseFailure = await res.json() - expect(resBody).toStrictEqual({ + expect(resBody).toEqual({ success: false, version: resBody.version, error: WarningMessage.INVALID_INPUT, @@ -145,7 +145,7 @@ describe(`Running against service deployed at ${ODIS_SIGNER_URL}`, () => { const res = await queryDomainEndpoint(badRequest, SignerEndpoint.DISABLE_DOMAIN) expect(res.status).toBe(401) const resBody: DisableDomainResponseFailure = await res.json() - expect(resBody).toStrictEqual({ + expect(resBody).toEqual({ success: false, version: resBody.version, error: WarningMessage.UNAUTHENTICATED_USER, @@ -160,7 +160,7 @@ describe(`Running against service deployed at ${ODIS_SIGNER_URL}`, () => { const res = await queryDomainEndpoint(req, SignerEndpoint.DOMAIN_QUOTA_STATUS) expect(res.status).toBe(200) const resBody: DomainQuotaStatusResponseSuccess = await res.json() - expect(resBody).toStrictEqual({ + expect(resBody).toEqual({ success: true, version: expectedVersion, status: { disabled: false, counter: 0, timer: 0, now: resBody.status.now }, @@ -172,7 +172,7 @@ describe(`Running against service deployed at ${ODIS_SIGNER_URL}`, () => { const res = await queryDomainEndpoint(req, SignerEndpoint.DOMAIN_QUOTA_STATUS) expect(res.status).toBe(200) const resBody: DomainQuotaStatusResponseSuccess = await res.json() - expect(resBody).toStrictEqual({ + expect(resBody).toEqual({ success: true, version: expectedVersion, status: { disabled: true, counter: 0, timer: 0, now: resBody.status.now }, @@ -186,7 +186,7 @@ describe(`Running against service deployed at ${ODIS_SIGNER_URL}`, () => { const res = await queryDomainEndpoint(badRequest, SignerEndpoint.DOMAIN_QUOTA_STATUS) expect(res.status).toBe(400) const resBody: DomainQuotaStatusResponseFailure = await res.json() - expect(resBody).toStrictEqual({ + expect(resBody).toEqual({ success: false, version: expectedVersion, error: WarningMessage.INVALID_INPUT, @@ -200,7 +200,7 @@ describe(`Running against service deployed at ${ODIS_SIGNER_URL}`, () => { const res = await queryDomainEndpoint(badRequest, SignerEndpoint.DOMAIN_QUOTA_STATUS) expect(res.status).toBe(400) const resBody: DomainQuotaStatusResponseFailure = await res.json() - expect(resBody).toStrictEqual({ + expect(resBody).toEqual({ success: false, version: expectedVersion, error: WarningMessage.INVALID_INPUT, @@ -214,7 +214,7 @@ describe(`Running against service deployed at ${ODIS_SIGNER_URL}`, () => { const res = await queryDomainEndpoint(badRequest, SignerEndpoint.DOMAIN_QUOTA_STATUS) expect(res.status).toBe(400) const resBody: DomainQuotaStatusResponseFailure = await res.json() - expect(resBody).toStrictEqual({ + expect(resBody).toEqual({ success: false, version: expectedVersion, error: WarningMessage.INVALID_INPUT, @@ -227,7 +227,7 @@ describe(`Running against service deployed at ${ODIS_SIGNER_URL}`, () => { const res = await queryDomainEndpoint(badRequest, SignerEndpoint.DOMAIN_QUOTA_STATUS) expect(res.status).toBe(401) const resBody: DomainQuotaStatusResponseFailure = await res.json() - expect(resBody).toStrictEqual({ + expect(resBody).toEqual({ success: false, version: expectedVersion, error: WarningMessage.UNAUTHENTICATED_USER, @@ -246,7 +246,7 @@ describe(`Running against service deployed at ${ODIS_SIGNER_URL}`, () => { const res = await queryDomainEndpoint(req, SignerEndpoint.DOMAIN_SIGN) expect(res.status).toBe(200) const resBody: DomainRestrictedSignatureResponseSuccess = await res.json() - expect(resBody).toStrictEqual({ + expect(resBody).toEqual({ success: true, version: expectedVersion, signature: resBody.signature, @@ -269,7 +269,7 @@ describe(`Running against service deployed at ${ODIS_SIGNER_URL}`, () => { const res = await queryDomainEndpoint(req, SignerEndpoint.DOMAIN_SIGN) expect(res.status).toBe(401) const resBody: DomainRestrictedSignatureResponseFailure = await res.json() - expect(resBody).toStrictEqual({ + expect(resBody).toEqual({ success: false, version: expectedVersion, error: WarningMessage.INVALID_NONCE, @@ -303,7 +303,7 @@ describe(`Running against service deployed at ${ODIS_SIGNER_URL}`, () => { }) expect(res.status).toBe(200) const resBody: DomainRestrictedSignatureResponseSuccess = await res.json() - expect(resBody).toStrictEqual({ + expect(resBody).toEqual({ success: true, version: expectedVersion, signature: resBody.signature, @@ -328,7 +328,7 @@ describe(`Running against service deployed at ${ODIS_SIGNER_URL}`, () => { const res = await queryDomainEndpoint(newReq, SignerEndpoint.DOMAIN_SIGN) expect(res.status).toBe(200) const resBody: DomainRestrictedSignatureResponseSuccess = await res.json() - expect(resBody).toStrictEqual({ + expect(resBody).toEqual({ success: true, version: expectedVersion, signature: resBody.signature, @@ -355,7 +355,7 @@ describe(`Running against service deployed at ${ODIS_SIGNER_URL}`, () => { ) expect(res.status).toBe(200) const resBody: DomainRestrictedSignatureResponseSuccess = await res.json() - expect(resBody).toStrictEqual({ + expect(resBody).toEqual({ success: true, version: expectedVersion, signature: resBody.signature, @@ -381,7 +381,7 @@ describe(`Running against service deployed at ${ODIS_SIGNER_URL}`, () => { const res = await queryDomainEndpoint(badRequest, SignerEndpoint.DOMAIN_SIGN) expect(res.status).toBe(400) const resBody: DomainRestrictedSignatureResponseFailure = await res.json() - expect(resBody).toStrictEqual({ + expect(resBody).toEqual({ success: false, version: expectedVersion, error: WarningMessage.INVALID_INPUT, @@ -399,7 +399,7 @@ describe(`Running against service deployed at ${ODIS_SIGNER_URL}`, () => { const res = await queryDomainEndpoint(badRequest, SignerEndpoint.DOMAIN_SIGN) expect(res.status).toBe(400) const resBody: DomainRestrictedSignatureResponseFailure = await res.json() - expect(resBody).toStrictEqual({ + expect(resBody).toEqual({ success: false, version: expectedVersion, error: WarningMessage.INVALID_INPUT, @@ -417,7 +417,7 @@ describe(`Running against service deployed at ${ODIS_SIGNER_URL}`, () => { const res = await queryDomainEndpoint(badRequest, SignerEndpoint.DOMAIN_SIGN) expect(res.status).toBe(400) const resBody: DomainRestrictedSignatureResponseFailure = await res.json() - expect(resBody).toStrictEqual({ + expect(resBody).toEqual({ success: false, version: expectedVersion, error: WarningMessage.INVALID_INPUT, @@ -433,7 +433,7 @@ describe(`Running against service deployed at ${ODIS_SIGNER_URL}`, () => { const res = await queryDomainEndpoint(badRequest, SignerEndpoint.DOMAIN_SIGN, 'a') expect(res.status).toBe(400) const resBody: DomainRestrictedSignatureResponseFailure = await res.json() - expect(resBody).toStrictEqual({ + expect(resBody).toEqual({ success: false, version: expectedVersion, error: WarningMessage.INVALID_KEY_VERSION_REQUEST, @@ -450,7 +450,7 @@ describe(`Running against service deployed at ${ODIS_SIGNER_URL}`, () => { const res = await queryDomainEndpoint(badRequest, SignerEndpoint.DOMAIN_SIGN) expect(res.status).toBe(401) const resBody: DomainRestrictedSignatureResponseFailure = await res.json() - expect(resBody).toStrictEqual({ + expect(resBody).toEqual({ success: false, version: expectedVersion, error: WarningMessage.UNAUTHENTICATED_USER, @@ -466,7 +466,7 @@ describe(`Running against service deployed at ${ODIS_SIGNER_URL}`, () => { const res = await queryDomainEndpoint(signReq, SignerEndpoint.DOMAIN_SIGN) expect(res.status).toBe(429) const resBody = await res.json() - expect(resBody).toStrictEqual({ + expect(resBody).toEqual({ success: false, version: expectedVersion, error: WarningMessage.EXCEEDED_QUOTA, @@ -492,7 +492,7 @@ describe(`Running against service deployed at ${ODIS_SIGNER_URL}`, () => { const res = await queryDomainEndpoint(signReq, SignerEndpoint.DOMAIN_SIGN) expect(res.status).toBe(429) const resBody = await res.json() - expect(resBody).toStrictEqual({ + expect(resBody).toEqual({ success: false, version: expectedVersion, error: WarningMessage.EXCEEDED_QUOTA, diff --git a/packages/phone-number-privacy/signer/test/end-to-end/pnp.test.ts b/packages/phone-number-privacy/signer/test/end-to-end/pnp.test.ts index 0a36158c807..8be4b6f10be 100644 --- a/packages/phone-number-privacy/signer/test/end-to-end/pnp.test.ts +++ b/packages/phone-number-privacy/signer/test/end-to-end/pnp.test.ts @@ -1,3 +1,4 @@ +import { sleep } from '@celo/base' import { newKit, StableToken } from '@celo/contractkit' import { AuthenticationMethod, @@ -73,12 +74,11 @@ describe(`Running against service deployed at ${ODIS_SIGNER_URL}`, () => { const res = await queryPnpQuotaEndpoint(req, authorization) expect(res.status).toBe(200) const resBody: PnpQuotaResponseSuccess = await res.json() - expect(resBody).toStrictEqual({ + expect(resBody).toEqual({ success: true, version: expectedVersion, performedQueryCount: 0, totalQuota: 0, - blockNumber: resBody.blockNumber, warnings: [], }) }) @@ -89,12 +89,11 @@ describe(`Running against service deployed at ${ODIS_SIGNER_URL}`, () => { const res = await queryPnpQuotaEndpoint(req, authorization) expect(res.status).toBe(200) const resBody: PnpQuotaResponseSuccess = await res.json() - expect(resBody).toStrictEqual({ + expect(resBody).toEqual({ success: true, version: expectedVersion, performedQueryCount: resBody.performedQueryCount, totalQuota: resBody.totalQuota, - blockNumber: resBody.blockNumber, warnings: [], }) expect(resBody.totalQuota).toBeGreaterThan(0) @@ -105,18 +104,32 @@ describe(`Running against service deployed at ${ODIS_SIGNER_URL}`, () => { const authorization = getPnpRequestAuthorization(req, PRIVATE_KEY2) const res = await queryPnpQuotaEndpoint(req, authorization) expect(res.status).toBe(200) + const resBody: PnpQuotaResponseSuccess = await res.json() + await sendCUSDToOdisPayments(singleQueryCost, ACCOUNT_ADDRESS2, ACCOUNT_ADDRESS2) const res2 = await queryPnpQuotaEndpoint(req, authorization) expect(res2.status).toBe(200) const res2Body: PnpQuotaResponseSuccess = await res2.json() - expect(res2Body).toStrictEqual({ + expect(res2Body).toEqual({ success: true, version: expectedVersion, performedQueryCount: resBody.performedQueryCount, - totalQuota: resBody.totalQuota + 1, - blockNumber: res2Body.blockNumber, + totalQuota: resBody.totalQuota, + warnings: [], + }) + + await sleep(5 * 1000) // sleep for cache ttl + + const res3 = await queryPnpQuotaEndpoint(req, authorization) + expect(res3.status).toBe(200) + const res3Body: PnpQuotaResponseSuccess = await res3.json() + expect(res3Body).toEqual({ + success: true, + version: expectedVersion, + performedQueryCount: resBody.performedQueryCount, + totalQuota: resBody.totalQuota + 1, // req2 updated the cache, but stale value was returned warnings: [], }) }) @@ -129,7 +142,7 @@ describe(`Running against service deployed at ${ODIS_SIGNER_URL}`, () => { const res = await queryPnpQuotaEndpoint(badRequest, authorization) expect(res.status).toBe(400) const resBody: PnpQuotaResponseFailure = await res.json() - expect(resBody).toStrictEqual({ + expect(resBody).toEqual({ success: false, version: expectedVersion, error: WarningMessage.INVALID_INPUT, @@ -142,7 +155,7 @@ describe(`Running against service deployed at ${ODIS_SIGNER_URL}`, () => { const res = await queryPnpQuotaEndpoint(badRequest, authorization) expect(res.status).toBe(401) const resBody: PnpQuotaResponseFailure = await res.json() - expect(resBody).toStrictEqual({ + expect(resBody).toEqual({ success: false, version: expectedVersion, error: WarningMessage.UNAUTHENTICATED_USER, @@ -155,7 +168,7 @@ describe(`Running against service deployed at ${ODIS_SIGNER_URL}`, () => { const res = await queryPnpQuotaEndpoint(badRequest, authorization) expect(res.status).toBe(401) const resBody: PnpQuotaResponseFailure = await res.json() - expect(resBody).toStrictEqual({ + expect(resBody).toEqual({ success: false, version: expectedVersion, error: WarningMessage.UNAUTHENTICATED_USER, @@ -168,7 +181,7 @@ describe(`Running against service deployed at ${ODIS_SIGNER_URL}`, () => { const res = await queryPnpQuotaEndpoint(badRequest, authorization) expect(res.status).toBe(401) const resBody: PnpQuotaResponseFailure = await res.json() - expect(resBody).toStrictEqual({ + expect(resBody).toEqual({ success: false, version: expectedVersion, error: WarningMessage.UNAUTHENTICATED_USER, @@ -201,13 +214,12 @@ describe(`Running against service deployed at ${ODIS_SIGNER_URL}`, () => { const res = await queryPnpSignEndpoint(req, authorization) expect(res.status).toBe(200) const resBody: SignMessageResponseSuccess = await res.json() - expect(resBody).toStrictEqual({ + expect(resBody).toEqual({ success: true, version: expectedVersion, signature: resBody.signature, performedQueryCount: startingPerformedQueryCount + 1, totalQuota: resBody.totalQuota, - blockNumber: resBody.blockNumber, warnings: [], }) expect(res.headers.get(KEY_VERSION_HEADER)).toEqual(contextSpecificParams.pnpKeyVersion) @@ -236,13 +248,12 @@ describe(`Running against service deployed at ${ODIS_SIGNER_URL}`, () => { const res = await queryPnpSignEndpoint(req, authorization, keyVersion) expect(res.status).toBe(200) const resBody: SignMessageResponseSuccess = await res.json() - expect(resBody).toStrictEqual({ + expect(resBody).toEqual({ success: true, version: expectedVersion, signature: resBody.signature, performedQueryCount: startingPerformedQueryCount + 1, totalQuota: resBody.totalQuota, - blockNumber: resBody.blockNumber, warnings: [], }) expect(res.headers.get(KEY_VERSION_HEADER)).toEqual(keyVersion) @@ -267,13 +278,12 @@ describe(`Running against service deployed at ${ODIS_SIGNER_URL}`, () => { const res = await queryPnpSignEndpoint(req, authorization) expect(res.status).toBe(200) const resBody: SignMessageResponseSuccess = await res.json() - expect(resBody).toStrictEqual({ + expect(resBody).toEqual({ success: true, version: expectedVersion, signature: resBody.signature, performedQueryCount: startingPerformedQueryCount + 1, totalQuota: resBody.totalQuota, - blockNumber: resBody.blockNumber, warnings: [], }) expect(res.headers.get(KEY_VERSION_HEADER)).toEqual(contextSpecificParams.pnpKeyVersion) @@ -284,16 +294,18 @@ describe(`Running against service deployed at ${ODIS_SIGNER_URL}`, () => { Buffer.from(resBody.signature, 'base64') ) ) + + await sleep(5 * 1000) // sleep for cache ttl + const res2 = await queryPnpSignEndpoint(req, authorization) expect(res2.status).toBe(200) const res2Body: SignMessageResponseSuccess = await res2.json() - expect(res2Body).toStrictEqual({ + expect(res2Body).toEqual({ success: true, version: expectedVersion, signature: resBody.signature, performedQueryCount: resBody.performedQueryCount, // Not incremented - totalQuota: resBody.totalQuota, - blockNumber: res2Body.blockNumber, + totalQuota: resBody.totalQuota + 1, // prev request updated cache warnings: [WarningMessage.DUPLICATE_REQUEST_TO_GET_PARTIAL_SIG], }) }) @@ -314,7 +326,7 @@ describe(`Running against service deployed at ${ODIS_SIGNER_URL}`, () => { const res = await queryPnpSignEndpoint(badRequest, authorization) expect(res.status).toBe(400) const resBody: SignMessageResponseFailure = await res.json() - expect(resBody).toStrictEqual({ + expect(resBody).toEqual({ success: false, version: expectedVersion, error: WarningMessage.INVALID_INPUT, @@ -331,7 +343,7 @@ describe(`Running against service deployed at ${ODIS_SIGNER_URL}`, () => { const res = await queryPnpSignEndpoint(badRequest, authorization, 'asd') expect(res.status).toBe(400) const resBody: SignMessageResponseFailure = await res.json() - expect(resBody).toStrictEqual({ + expect(resBody).toEqual({ success: false, version: expectedVersion, error: WarningMessage.INVALID_KEY_VERSION_REQUEST, @@ -348,7 +360,7 @@ describe(`Running against service deployed at ${ODIS_SIGNER_URL}`, () => { const res = await queryPnpSignEndpoint(badRequest, authorization) expect(res.status).toBe(400) const resBody: SignMessageResponseFailure = await res.json() - expect(resBody).toStrictEqual({ + expect(resBody).toEqual({ success: false, version: expectedVersion, error: WarningMessage.INVALID_INPUT, @@ -365,7 +377,7 @@ describe(`Running against service deployed at ${ODIS_SIGNER_URL}`, () => { const res = await queryPnpSignEndpoint(badRequest, authorization) expect(res.status).toBe(400) const resBody: SignMessageResponseFailure = await res.json() - expect(resBody).toStrictEqual({ + expect(resBody).toEqual({ success: false, version: expectedVersion, error: WarningMessage.INVALID_INPUT, @@ -382,7 +394,8 @@ describe(`Running against service deployed at ${ODIS_SIGNER_URL}`, () => { const res = await queryPnpSignEndpoint(badRequest, authorization) expect(res.status).toBe(401) const resBody: SignMessageResponseFailure = await res.json() - expect(resBody).toStrictEqual({ + expect(resBody).toEqual({ + // TODO test if toStrictEqual works after fixing sendFailure success: false, version: expectedVersion, error: WarningMessage.UNAUTHENTICATED_USER, @@ -399,7 +412,7 @@ describe(`Running against service deployed at ${ODIS_SIGNER_URL}`, () => { const res = await queryPnpSignEndpoint(badRequest, authorization) expect(res.status).toBe(401) const resBody: SignMessageResponseFailure = await res.json() - expect(resBody).toStrictEqual({ + expect(resBody).toEqual({ success: false, version: expectedVersion, error: WarningMessage.UNAUTHENTICATED_USER, @@ -416,7 +429,7 @@ describe(`Running against service deployed at ${ODIS_SIGNER_URL}`, () => { const res = await queryPnpSignEndpoint(badRequest, authorization) expect(res.status).toBe(401) const resBody: SignMessageResponseFailure = await res.json() - expect(resBody).toStrictEqual({ + expect(resBody).toEqual({ success: false, version: expectedVersion, error: WarningMessage.UNAUTHENTICATED_USER, @@ -437,13 +450,12 @@ describe(`Running against service deployed at ${ODIS_SIGNER_URL}`, () => { const res = await queryPnpSignEndpoint(req, authorization) expect(res.status).toBe(403) const resBody: SignMessageResponseFailure = await res.json() - expect(resBody).toStrictEqual({ + expect(resBody).toEqual({ success: false, version: expectedVersion, error: WarningMessage.EXCEEDED_QUOTA, totalQuota: quotaResBody.totalQuota, performedQueryCount: quotaResBody.performedQueryCount, - blockNumber: resBody.blockNumber, }) }) }) diff --git a/packages/phone-number-privacy/signer/test/integration/domain.test.ts b/packages/phone-number-privacy/signer/test/integration/domain.test.ts index 9299916a37c..b9141f14fab 100644 --- a/packages/phone-number-privacy/signer/test/integration/domain.test.ts +++ b/packages/phone-number-privacy/signer/test/integration/domain.test.ts @@ -364,12 +364,6 @@ describe('domain', () => { error: ErrorMessage.TIMEOUT_FROM_SIGNER, version: expectedVersion, }) - // Allow time for non-killed processes to finish - await new Promise((resolve) => setTimeout(resolve, delay)) - // Check that DB state was not updated on timeout - expect(await getDomainStateRecord(db, req.domain, rootLogger(_config.serviceName))).toBe( - null - ) }) }) }) @@ -922,7 +916,8 @@ describe('domain', () => { expect(res.body).toStrictEqual({ success: false, version: res.body.version, - error: WarningMessage.INVALID_KEY_VERSION_REQUEST, + // error: WarningMessage.INVALID_KEY_VERSION_REQUEST, + error: ErrorMessage.UNKNOWN_ERROR, // TODO make this more informative when we refactor the sign handler }) }) @@ -1032,12 +1027,6 @@ describe('domain', () => { version: expectedVersion, }) spy.mockRestore() - // Allow time for non-killed processes to finish - await new Promise((resolve) => setTimeout(resolve, delay)) - // Check that DB state was not updated on timeout - expect(await getDomainStateRecord(db, req.domain, rootLogger(_config.serviceName))).toBe( - null - ) }) }) }) diff --git a/packages/phone-number-privacy/signer/test/integration/pnp.test.ts b/packages/phone-number-privacy/signer/test/integration/pnp.test.ts index 59012e0d0a5..87b7b15d478 100644 --- a/packages/phone-number-privacy/signer/test/integration/pnp.test.ts +++ b/packages/phone-number-privacy/signer/test/integration/pnp.test.ts @@ -18,14 +18,12 @@ import BigNumber from 'bignumber.js' import { Knex } from 'knex' import request from 'supertest' import { initDatabase } from '../../src/common/database/database' -import { ACCOUNTS_TABLE } from '../../src/common/database/models/account' -import { REQUESTS_TABLE } from '../../src/common/database/models/request' import { countAndThrowDBError } from '../../src/common/database/utils' import { getPerformedQueryCount, incrementQueryCount, } from '../../src/common/database/wrappers/account' -import { getRequestExists } from '../../src/common/database/wrappers/request' +import { getRequestIfExists } from '../../src/common/database/wrappers/request' import { initKeyProvider } from '../../src/common/key-management/key-provider' import { KeyProvider } from '../../src/common/key-management/key-provider-base' import { config, getSignerVersion, SupportedDatabase, SupportedKeystore } from '../../src/config' @@ -36,7 +34,6 @@ const { createMockContractKit, createMockAccounts, createMockOdisPayments, - createMockWeb3, getPnpQuotaRequest, getPnpRequestAuthorization, getPnpSignRequest, @@ -46,23 +43,19 @@ const { PRIVATE_KEY1, ACCOUNT_ADDRESS1, mockAccount, DEK_PRIVATE_KEY, DEK_PUBLIC jest.setTimeout(20000) -const testBlockNumber = 1000000 const zeroBalance = new BigNumber(0) const mockOdisPaymentsTotalPaidCUSD = jest.fn() const mockGetWalletAddress = jest.fn() const mockGetDataEncryptionKey = jest.fn() -const mockContractKit = createMockContractKit( - { - [ContractRetrieval.getAccounts]: createMockAccounts( - mockGetWalletAddress, - mockGetDataEncryptionKey - ), - [ContractRetrieval.getOdisPayments]: createMockOdisPayments(mockOdisPaymentsTotalPaidCUSD), - }, - createMockWeb3(5, testBlockNumber) -) +const mockContractKit = createMockContractKit({ + [ContractRetrieval.getAccounts]: createMockAccounts( + mockGetWalletAddress, + mockGetDataEncryptionKey + ), + [ContractRetrieval.getOdisPayments]: createMockOdisPayments(mockOdisPaymentsTotalPaidCUSD), +}) jest.mock('@celo/contractkit', () => ({ ...jest.requireActual('@celo/contractkit'), newKit: jest.fn().mockImplementation(() => mockContractKit), @@ -181,7 +174,6 @@ describe('pnp', () => { version: expectedVersion, performedQueryCount: 0, totalQuota: expectedTotalQuota, - blockNumber: testBlockNumber, warnings: [], }) }) @@ -205,7 +197,6 @@ describe('pnp', () => { version: res.body.version, performedQueryCount: 0, totalQuota: expectedQuota, - blockNumber: testBlockNumber, warnings: [], }) }) @@ -221,7 +212,6 @@ describe('pnp', () => { version: res1.body.version, performedQueryCount: 0, totalQuota: expectedQuota, - blockNumber: testBlockNumber, warnings: [], }) const res2 = await sendRequest(req, authorization, SignerEndpoint.PNP_QUOTA) @@ -240,7 +230,6 @@ describe('pnp', () => { version: res.body.version, performedQueryCount: 0, totalQuota: expectedQuota, - blockNumber: testBlockNumber, warnings: [], }) }) @@ -257,7 +246,6 @@ describe('pnp', () => { version: expectedVersion, performedQueryCount: 0, totalQuota: expectedQuota, - blockNumber: testBlockNumber, warnings: [], }) }) @@ -265,13 +253,7 @@ describe('pnp', () => { it('Should respond with 200 if performedQueryCount is greater than totalQuota', async () => { await db.transaction(async (trx) => { for (let i = 0; i <= expectedQuota; i++) { - await incrementQueryCount( - db, - ACCOUNTS_TABLE.ONCHAIN, - ACCOUNT_ADDRESS1, - rootLogger(config.serviceName), - trx - ) + await incrementQueryCount(db, ACCOUNT_ADDRESS1, rootLogger(config.serviceName), trx) } }) const req = getPnpQuotaRequest(ACCOUNT_ADDRESS1) @@ -284,7 +266,6 @@ describe('pnp', () => { version: res.body.version, performedQueryCount: expectedQuota + 1, totalQuota: expectedQuota, - blockNumber: testBlockNumber, warnings: [], }) }) @@ -360,44 +341,6 @@ describe('pnp', () => { }) describe('functionality in case of errors', () => { - it('Should respond with 200 on failure to fetch DEK when shouldFailOpen is true', async () => { - mockGetDataEncryptionKey.mockImplementation(() => { - throw new Error() - }) - - const req = getPnpQuotaRequest(ACCOUNT_ADDRESS1, AuthenticationMethod.ENCRYPTION_KEY) - - const configWithFailOpenEnabled: typeof _config = JSON.parse(JSON.stringify(_config)) - configWithFailOpenEnabled.api.phoneNumberPrivacy.shouldFailOpen = true - const appWithFailOpenEnabled = startSigner( - configWithFailOpenEnabled, - db, - keyProvider, - newKit('dummyKit') - ) - - // NOT the dek private key, so authentication would fail if getDataEncryptionKey succeeded - const differentPk = '0x00000000000000000000000000000000000000000000000000000000ddddbbbb' - const authorization = getPnpRequestAuthorization(req, differentPk) - const res = await sendRequest( - req, - authorization, - SignerEndpoint.PNP_QUOTA, - '1', - appWithFailOpenEnabled - ) - - expect(res.status).toBe(200) - expect(res.body).toStrictEqual({ - success: true, - version: expectedVersion, - performedQueryCount: 0, - totalQuota: expectedQuota, - blockNumber: testBlockNumber, - warnings: [ErrorMessage.FAILURE_TO_GET_DEK, ErrorMessage.FAILING_OPEN], - }) - }) - it('Should respond with 500 on DB performedQueryCount query failure', async () => { const spy = jest .spyOn( @@ -507,7 +450,6 @@ describe('pnp', () => { signature: expectedSignature, performedQueryCount: 1, // incremented for signature request totalQuota: expectedTotalQuota, - blockNumber: testBlockNumber, warnings: [], }) } else { @@ -517,7 +459,6 @@ describe('pnp', () => { version: expectedVersion, performedQueryCount: 0, totalQuota: expectedTotalQuota, - blockNumber: testBlockNumber, error: WarningMessage.EXCEEDED_QUOTA, }) } @@ -533,13 +474,7 @@ describe('pnp', () => { mockOdisPaymentsTotalPaidCUSD.mockReturnValue(onChainBalance) await db.transaction(async (trx) => { for (let i = 0; i < performedQueryCount; i++) { - await incrementQueryCount( - db, - ACCOUNTS_TABLE.ONCHAIN, - ACCOUNT_ADDRESS1, - rootLogger(_config.serviceName), - trx - ) + await incrementQueryCount(db, ACCOUNT_ADDRESS1, rootLogger(_config.serviceName), trx) } }) }) @@ -559,7 +494,6 @@ describe('pnp', () => { signature: expectedSignature, performedQueryCount: performedQueryCount + 1, totalQuota: expectedQuota, - blockNumber: testBlockNumber, warnings: [], }) expect(res.get(KEY_VERSION_HEADER)).toEqual( @@ -582,7 +516,6 @@ describe('pnp', () => { signature: expectedSignature, performedQueryCount: performedQueryCount + 1, totalQuota: expectedQuota, - blockNumber: testBlockNumber, warnings: [], }) }) @@ -603,7 +536,6 @@ describe('pnp', () => { signature: expectedSignatures[i - 1], performedQueryCount: performedQueryCount + 1, totalQuota: expectedQuota, - blockNumber: testBlockNumber, warnings: [], }) expect(res.get(KEY_VERSION_HEADER)).toEqual(i.toString()) @@ -611,6 +543,7 @@ describe('pnp', () => { } it('Should respond with 200 and warning on repeated valid requests', async () => { + const logger = rootLogger(_config.serviceName) const req = getPnpSignRequest( ACCOUNT_ADDRESS1, BLINDED_PHONE_NUMBER, @@ -625,9 +558,22 @@ describe('pnp', () => { signature: expectedSignature, performedQueryCount: performedQueryCount + 1, totalQuota: expectedQuota, - blockNumber: testBlockNumber, warnings: [], }) + + const requestDbRecord = await getRequestIfExists( + db, + req.account, + req.blindedQueryPhoneNumber, + logger + ) + expect(requestDbRecord).toEqual({ + blinded_query: req.blindedQueryPhoneNumber, + caller_address: req.account, + signature: expectedSignature, + timestamp: requestDbRecord!.timestamp, + }) + const res2 = await sendRequest(req, authorization, SignerEndpoint.PNP_SIGN) expect(res2.status).toBe(200) res1.body.warnings.push(WarningMessage.DUPLICATE_REQUEST_TO_GET_PARTIAL_SIG) @@ -651,7 +597,6 @@ describe('pnp', () => { signature: expectedSignature, performedQueryCount: performedQueryCount + 1, totalQuota: expectedQuota, - blockNumber: testBlockNumber, warnings: [], }) }) @@ -761,13 +706,7 @@ describe('pnp', () => { const remainingQuota = expectedQuota - performedQueryCount await db.transaction(async (trx) => { for (let i = 0; i < remainingQuota; i++) { - await incrementQueryCount( - db, - ACCOUNTS_TABLE.ONCHAIN, - ACCOUNT_ADDRESS1, - rootLogger(_config.serviceName), - trx - ) + await incrementQueryCount(db, ACCOUNT_ADDRESS1, rootLogger(_config.serviceName), trx) } }) const req = getPnpSignRequest( @@ -783,7 +722,6 @@ describe('pnp', () => { version: expectedVersion, performedQueryCount: expectedQuota, totalQuota: expectedQuota, - blockNumber: testBlockNumber, error: WarningMessage.EXCEEDED_QUOTA, }) }) @@ -810,7 +748,6 @@ describe('pnp', () => { version: expectedVersion, performedQueryCount: 0, totalQuota: 0, - blockNumber: testBlockNumber, error: WarningMessage.EXCEEDED_QUOTA, }) @@ -821,18 +758,10 @@ describe('pnp', () => { const expectedRemainingQuota = expectedQuota - performedQueryCount await db.transaction(async (trx) => { for (let i = 0; i <= expectedRemainingQuota; i++) { - await incrementQueryCount( - db, - ACCOUNTS_TABLE.ONCHAIN, - ACCOUNT_ADDRESS1, - rootLogger(_config.serviceName), - trx - ) + await incrementQueryCount(db, ACCOUNT_ADDRESS1, rootLogger(_config.serviceName), trx) } }) - // It is possible to reach this state due to our fail-open logic - const req = getPnpSignRequest( ACCOUNT_ADDRESS1, BLINDED_PHONE_NUMBER, @@ -846,7 +775,6 @@ describe('pnp', () => { version: expectedVersion, performedQueryCount: expectedQuota + 1, totalQuota: expectedQuota, - blockNumber: testBlockNumber, error: WarningMessage.EXCEEDED_QUOTA, }) }) @@ -865,7 +793,6 @@ describe('pnp', () => { version: expectedVersion, performedQueryCount: performedQueryCount, totalQuota: expectedQuota, - blockNumber: testBlockNumber, error: ErrorMessage.SIGNATURE_COMPUTATION_FAILURE, }) }) @@ -909,7 +836,7 @@ describe('pnp', () => { for (let i = 0; i < remainingQuota; i++) { await incrementQueryCount( db, - ACCOUNTS_TABLE.ONCHAIN, + ACCOUNT_ADDRESS1, rootLogger(_config.serviceName), trx @@ -918,12 +845,7 @@ describe('pnp', () => { }) // sanity check expect( - await getPerformedQueryCount( - db, - ACCOUNTS_TABLE.ONCHAIN, - ACCOUNT_ADDRESS1, - rootLogger(_config.serviceName) - ) + await getPerformedQueryCount(db, ACCOUNT_ADDRESS1, rootLogger(_config.serviceName)) ).toBe(expectedQuota) const spy = jest @@ -945,10 +867,7 @@ describe('pnp', () => { expect(res.body).toStrictEqual({ success: false, version: expectedVersion, - performedQueryCount: -1, - totalQuota: expectedQuota, - blockNumber: testBlockNumber, - error: ErrorMessage.DATABASE_GET_FAILURE, + error: ErrorMessage.FAILURE_TO_GET_PERFORMED_QUERY_COUNT, }) spy.mockRestore() @@ -997,111 +916,9 @@ describe('pnp', () => { version: expectedVersion, }) spy.mockRestore() - // Allow time for non-killed processes to finish - await new Promise((resolve) => setTimeout(resolve, delay)) - // Check that DB was not updated - expect( - await getPerformedQueryCount( - db, - ACCOUNTS_TABLE.ONCHAIN, - ACCOUNT_ADDRESS1, - rootLogger(config.serviceName) - ) - ).toBe(performedQueryCount) - expect( - await getRequestExists( - db, - REQUESTS_TABLE.ONCHAIN, - req.account, - req.blindedQueryPhoneNumber, - rootLogger(config.serviceName) - ) - ).toBe(false) - }) - - it('Should return 200 w/ warning on blockchain totalQuota query failure when shouldFailOpen is true', async () => { - const configWithFailOpenEnabled: typeof _config = JSON.parse(JSON.stringify(_config)) - configWithFailOpenEnabled.api.phoneNumberPrivacy.shouldFailOpen = true - const appWithFailOpenEnabled = startSigner( - configWithFailOpenEnabled, - db, - keyProvider, - newKit('dummyKit') - ) - - // deplete user's quota - const remainingQuota = expectedQuota - performedQueryCount - await db.transaction(async (trx) => { - for (let i = 0; i < remainingQuota; i++) { - await incrementQueryCount( - db, - ACCOUNTS_TABLE.ONCHAIN, - ACCOUNT_ADDRESS1, - rootLogger(_config.serviceName), - trx - ) - } - }) - // sanity check - expect( - await getPerformedQueryCount( - db, - ACCOUNTS_TABLE.ONCHAIN, - ACCOUNT_ADDRESS1, - rootLogger(_config.serviceName) - ) - ).toBe(expectedQuota) - - mockOdisPaymentsTotalPaidCUSD.mockImplementation(() => { - throw new Error('dummy error') - }) - - const req = getPnpSignRequest( - ACCOUNT_ADDRESS1, - BLINDED_PHONE_NUMBER, - AuthenticationMethod.WALLET_KEY - ) - const authorization = getPnpRequestAuthorization(req, PRIVATE_KEY1) - const res = await sendRequest( - req, - authorization, - SignerEndpoint.PNP_SIGN, - '1', - appWithFailOpenEnabled - ) - - expect(res.status).toBe(200) - expect(res.body).toStrictEqual({ - success: true, - version: expectedVersion, - signature: expectedSignature, - performedQueryCount: expectedQuota + 1, // bc we depleted the user's quota above - totalQuota: Number.MAX_SAFE_INTEGER, - blockNumber: testBlockNumber, - warnings: [ErrorMessage.FAILURE_TO_GET_TOTAL_QUOTA, ErrorMessage.FULL_NODE_ERROR], - }) - - // check DB state: performedQueryCount was incremented and request was stored - expect( - await getPerformedQueryCount( - db, - ACCOUNTS_TABLE.ONCHAIN, - ACCOUNT_ADDRESS1, - rootLogger(config.serviceName) - ) - ).toBe(expectedQuota + 1) - expect( - await getRequestExists( - db, - REQUESTS_TABLE.ONCHAIN, - req.account, - req.blindedQueryPhoneNumber, - rootLogger(config.serviceName) - ) - ).toBe(true) }) - it('Should return 500 on blockchain totalQuota query failure when shouldFailOpen is false', async () => { + it('Should return 500 on blockchain totalQuota query failure', async () => { mockOdisPaymentsTotalPaidCUSD.mockImplementation(() => { throw new Error('dummy error') }) @@ -1113,7 +930,6 @@ describe('pnp', () => { ) const configWithFailOpenDisabled: typeof _config = JSON.parse(JSON.stringify(_config)) - configWithFailOpenDisabled.api.phoneNumberPrivacy.shouldFailOpen = false const appWithFailOpenDisabled = startSigner( configWithFailOpenDisabled, db, @@ -1134,10 +950,7 @@ describe('pnp', () => { expect(res.body).toStrictEqual({ success: false, version: expectedVersion, - performedQueryCount: performedQueryCount, - totalQuota: -1, - blockNumber: testBlockNumber, - error: ErrorMessage.FULL_NODE_ERROR, + error: ErrorMessage.FAILURE_TO_GET_TOTAL_QUOTA, }) }) @@ -1170,24 +983,21 @@ describe('pnp', () => { }) // check DB state: performedQueryCount was not incremented and request was not stored + expect(await getPerformedQueryCount(db, ACCOUNT_ADDRESS1, logger)).toBe( + performedQueryCount + ) expect( - await getPerformedQueryCount(db, ACCOUNTS_TABLE.ONCHAIN, ACCOUNT_ADDRESS1, logger) - ).toBe(performedQueryCount) - expect( - await getRequestExists( - db, - REQUESTS_TABLE.ONCHAIN, - req.account, - req.blindedQueryPhoneNumber, - logger - ) - ).toBe(false) + await getRequestIfExists(db, req.account, req.blindedQueryPhoneNumber, logger) + ).toBe(undefined) }) it('Should return 500 on failure to store request', async () => { const logger = rootLogger(_config.serviceName) const spy = jest - .spyOn(jest.requireActual('../../src/common/database/wrappers/request'), 'storeRequest') + .spyOn( + jest.requireActual('../../src/common/database/wrappers/request'), + 'insertRequest' + ) .mockImplementationOnce(() => { countAndThrowDBError(new Error(), logger, ErrorMessage.DATABASE_INSERT_FAILURE) }) @@ -1209,60 +1019,12 @@ describe('pnp', () => { }) // check DB state: performedQueryCount was not incremented and request was not stored - expect( - await getPerformedQueryCount(db, ACCOUNTS_TABLE.ONCHAIN, ACCOUNT_ADDRESS1, logger) - ).toBe(performedQueryCount) - expect( - await getRequestExists( - db, - REQUESTS_TABLE.ONCHAIN, - req.account, - req.blindedQueryPhoneNumber, - logger - ) - ).toBe(false) - }) - - it('Should return 200 on failure to fetch DEK when shouldFailOpen is true', async () => { - mockGetDataEncryptionKey.mockImplementation(() => { - throw new Error() - }) - - const req = getPnpSignRequest( - ACCOUNT_ADDRESS1, - BLINDED_PHONE_NUMBER, - AuthenticationMethod.ENCRYPTION_KEY - ) - - const configWithFailOpenEnabled: typeof _config = JSON.parse(JSON.stringify(_config)) - configWithFailOpenEnabled.api.phoneNumberPrivacy.shouldFailOpen = true - const appWithFailOpenEnabled = startSigner( - configWithFailOpenEnabled, - db, - keyProvider, - newKit('dummyKit') + expect(await getPerformedQueryCount(db, ACCOUNT_ADDRESS1, logger)).toBe( + performedQueryCount ) - - // NOT the dek private key, so authentication would fail if getDataEncryptionKey succeeded - const differentPk = '0x00000000000000000000000000000000000000000000000000000000ddddbbbb' - const authorization = getPnpRequestAuthorization(req, differentPk) - const res = await sendRequest( - req, - authorization, - SignerEndpoint.PNP_SIGN, - '1', - appWithFailOpenEnabled - ) - expect(res.status).toBe(200) - expect(res.body).toStrictEqual({ - success: true, - version: expectedVersion, - signature: expectedSignature, - performedQueryCount: performedQueryCount + 1, - totalQuota: expectedQuota, - blockNumber: testBlockNumber, - warnings: [ErrorMessage.FAILURE_TO_GET_DEK, ErrorMessage.FAILING_OPEN], - }) + expect( + await getRequestIfExists(db, req.account, req.blindedQueryPhoneNumber, logger) + ).toBe(undefined) }) it('Should return 500 on bls signing error', async () => { @@ -1286,7 +1048,6 @@ describe('pnp', () => { version: expectedVersion, performedQueryCount: performedQueryCount, totalQuota: expectedQuota, - blockNumber: testBlockNumber, error: ErrorMessage.SIGNATURE_COMPUTATION_FAILURE, }) @@ -1296,20 +1057,19 @@ describe('pnp', () => { expect( await getPerformedQueryCount( db, - ACCOUNTS_TABLE.ONCHAIN, + ACCOUNT_ADDRESS1, rootLogger(_config.serviceName) ) ).toBe(performedQueryCount) expect( - await getRequestExists( + await getRequestIfExists( db, - REQUESTS_TABLE.ONCHAIN, req.account, req.blindedQueryPhoneNumber, rootLogger(_config.serviceName) ) - ).toBe(false) + ).toBe(undefined) }) it('Should return 500 on generic error in sign', async () => { @@ -1337,7 +1097,6 @@ describe('pnp', () => { version: expectedVersion, performedQueryCount: performedQueryCount, totalQuota: expectedQuota, - blockNumber: testBlockNumber, error: ErrorMessage.SIGNATURE_COMPUTATION_FAILURE, }) @@ -1345,22 +1104,17 @@ describe('pnp', () => { // check DB state: performedQueryCount was not incremented and request was not stored expect( - await getPerformedQueryCount( - db, - ACCOUNTS_TABLE.ONCHAIN, - ACCOUNT_ADDRESS1, - rootLogger(config.serviceName) - ) + await getPerformedQueryCount(db, ACCOUNT_ADDRESS1, rootLogger(config.serviceName)) ).toBe(performedQueryCount) expect( - await getRequestExists( + await getRequestIfExists( db, - REQUESTS_TABLE.ONCHAIN, + req.account, req.blindedQueryPhoneNumber, rootLogger(config.serviceName) ) - ).toBe(false) + ).toBe(undefined) }) }) }) diff --git a/packages/phone-number-privacy/signer/test/pnp/services/request-service.test.ts b/packages/phone-number-privacy/signer/test/pnp/services/request-service.test.ts new file mode 100644 index 00000000000..f793e08910f --- /dev/null +++ b/packages/phone-number-privacy/signer/test/pnp/services/request-service.test.ts @@ -0,0 +1,59 @@ +import { Knex } from 'knex' +import { initDatabase } from '../../../src/common/database/database' +import { config, SupportedDatabase, SupportedKeystore } from '../../../src/config' +import { + DefaultPnpRequestService, + PnpRequestService, +} from '../../../src/pnp/services/request-service' +import { rootLogger } from '@celo/phone-number-privacy-common' +import { + PnpSignRequestRecord, + REQUESTS_COLUMNS, + REQUESTS_TABLE, +} from '../../../src/common/database/models/request' + +jest.setTimeout(20000) +describe('request service', () => { + let db: Knex + let service: PnpRequestService + let ctx = { + logger: rootLogger('test'), + url: '', + errors: [], + } + + // create deep copy + const _config: typeof config = JSON.parse(JSON.stringify(config)) + _config.db.type = SupportedDatabase.Postgres + _config.keystore.type = SupportedKeystore.MOCK_SECRET_MANAGER + + beforeEach(async () => { + // Create a new in-memory database for each test. + db = await initDatabase(_config) + service = new DefaultPnpRequestService(db) + }) + + // Skipped because it fails in sqlite, works in the other database. + // Keep the test for future checks + it.skip('should remove requests from a specific date', async () => { + const fourDaysAgo = new Date(Date.now() - 4 * 24 * 60 * 60 * 1000) + await service.recordRequest('Address1', 'Blinded1', 'signature1', ctx) + await db(REQUESTS_TABLE).update({ + timestamp: fourDaysAgo, + }) + await service.recordRequest('Address2', 'Blinded2', 'signature2', ctx) + + const elements = await db(REQUESTS_TABLE) + .count(`${REQUESTS_COLUMNS.address} as CNT`) + .first() + + expect((elements! as any)['CNT']).toBe('2') + + await service.removeOldRequests(2, ctx) + + const elementsAfter = await db(REQUESTS_TABLE) + .count(`${REQUESTS_COLUMNS.address} as CNT`) + .first() + expect((elementsAfter! as any)['CNT']).toBe('1') + }) +}) diff --git a/packages/sdk/contractkit/package.json b/packages/sdk/contractkit/package.json index 1d0dcb52195..a2365be1469 100644 --- a/packages/sdk/contractkit/package.json +++ b/packages/sdk/contractkit/package.json @@ -65,4 +65,4 @@ "browser": { "child_process": false } -} +} \ No newline at end of file diff --git a/packages/sdk/cryptographic-utils/package.json b/packages/sdk/cryptographic-utils/package.json index 9216466dfc9..9d63c79ae45 100644 --- a/packages/sdk/cryptographic-utils/package.json +++ b/packages/sdk/cryptographic-utils/package.json @@ -41,4 +41,4 @@ "devDependencies": { "@celo/typescript": "0.0.1" } -} +} \ No newline at end of file diff --git a/packages/sdk/encrypted-backup/package.json b/packages/sdk/encrypted-backup/package.json index 06e20746864..2095047d98a 100644 --- a/packages/sdk/encrypted-backup/package.json +++ b/packages/sdk/encrypted-backup/package.json @@ -27,7 +27,7 @@ "dependencies": { "@celo/base": "4.1.1-dev", "@celo/identity": "4.1.1-dev", - "@celo/phone-number-privacy-common": "^3.0.0-dev", + "@celo/phone-number-privacy-common": "^3.0.0-beta.1", "@celo/poprf": "^0.1.9", "@celo/utils": "4.1.1-dev", "@types/debug": "^4.1.5", diff --git a/packages/sdk/governance/package.json b/packages/sdk/governance/package.json index 84abfe0cd70..750d1166586 100644 --- a/packages/sdk/governance/package.json +++ b/packages/sdk/governance/package.json @@ -36,4 +36,4 @@ "engines": { "node": ">=8.14.2" } -} +} \ No newline at end of file diff --git a/packages/sdk/identity/package.json b/packages/sdk/identity/package.json index 42d49517e3e..9bf9f449815 100644 --- a/packages/sdk/identity/package.json +++ b/packages/sdk/identity/package.json @@ -28,7 +28,7 @@ "@celo/base": "4.1.1-dev", "@celo/utils": "4.1.1-dev", "@celo/contractkit": "4.1.1-dev", - "@celo/phone-number-privacy-common": "^3.0.0-dev", + "@celo/phone-number-privacy-common": "^3.0.0-beta.1", "@types/debug": "^4.1.5", "bignumber.js": "^9.0.0", "blind-threshold-bls": "https://github.com/celo-org/blind-threshold-bls-wasm#e1e2f8a", @@ -50,4 +50,4 @@ "engines": { "node": ">=12.9.0" } -} +} \ No newline at end of file diff --git a/packages/sdk/identity/src/odis/quota.test.ts b/packages/sdk/identity/src/odis/quota.test.ts index 1e568a19897..5c2e34efb1f 100644 --- a/packages/sdk/identity/src/odis/quota.test.ts +++ b/packages/sdk/identity/src/odis/quota.test.ts @@ -1,7 +1,7 @@ import { AuthenticationMethod, CombinerEndpoint } from '@celo/phone-number-privacy-common' +import fetchMock from '../__mocks__/cross-fetch' import { EncryptionKeySigner, ServiceContext } from './query' import { getPnpQuotaStatus, PnpClientQuotaStatus } from './quota' -import fetchMock from '../__mocks__/cross-fetch' const mockAccount = '0x0000000000000000000000000000000000007E57' const serviceContext: ServiceContext = { @@ -40,7 +40,6 @@ describe(getPnpQuotaStatus, () => { remainingQuota: totalQuota - performedQueryCount, version, warnings: undefined, - blockNumber: undefined, }) }) diff --git a/packages/sdk/identity/src/odis/quota.ts b/packages/sdk/identity/src/odis/quota.ts index 95fd85ff1eb..8d866b9ce3a 100644 --- a/packages/sdk/identity/src/odis/quota.ts +++ b/packages/sdk/identity/src/odis/quota.ts @@ -11,7 +11,7 @@ export interface PnpClientQuotaStatus { performedQueryCount: number totalQuota: number remainingQuota: number - blockNumber?: number + blockNumber?: number // TODO fully remove blockNumber from identity sdk warnings?: string[] } @@ -58,7 +58,6 @@ export async function getPnpQuotaStatus( totalQuota: response.totalQuota, remainingQuota: response.totalQuota - response.performedQueryCount, warnings: response.warnings, - blockNumber: response.blockNumber, } } diff --git a/packages/sdk/phone-utils/package.json b/packages/sdk/phone-utils/package.json index 57f5d354209..e8a0827d97b 100644 --- a/packages/sdk/phone-utils/package.json +++ b/packages/sdk/phone-utils/package.json @@ -35,4 +35,4 @@ "devDependencies": { "@celo/typescript": "0.0.1" } -} +} \ No newline at end of file diff --git a/packages/sdk/transactions-uri/package.json b/packages/sdk/transactions-uri/package.json index b8b08d8279c..a2ff11fcc37 100644 --- a/packages/sdk/transactions-uri/package.json +++ b/packages/sdk/transactions-uri/package.json @@ -40,4 +40,4 @@ "engines": { "node": ">=8.13.0" } -} +} \ No newline at end of file diff --git a/packages/sdk/utils/package.json b/packages/sdk/utils/package.json index 976fc8308a6..e30fb968d33 100644 --- a/packages/sdk/utils/package.json +++ b/packages/sdk/utils/package.json @@ -44,4 +44,4 @@ "web3-utils/bn.js": "bn.js@4.11.9", "@ethereumjs/bn.js": "bn.js@4.11.9" } -} +} \ No newline at end of file diff --git a/packages/sdk/wallets/wallet-base/package.json b/packages/sdk/wallets/wallet-base/package.json index 5a71c68c8ac..8801aa93d56 100644 --- a/packages/sdk/wallets/wallet-base/package.json +++ b/packages/sdk/wallets/wallet-base/package.json @@ -34,4 +34,4 @@ "engines": { "node": ">=8.14.2" } -} +} \ No newline at end of file diff --git a/packages/sdk/wallets/wallet-ledger/package.json b/packages/sdk/wallets/wallet-ledger/package.json index cc7b3c30354..276fccc1fcb 100644 --- a/packages/sdk/wallets/wallet-ledger/package.json +++ b/packages/sdk/wallets/wallet-ledger/package.json @@ -36,4 +36,4 @@ "engines": { "node": ">=8.14.2" } -} +} \ No newline at end of file diff --git a/packages/sdk/wallets/wallet-local/package.json b/packages/sdk/wallets/wallet-local/package.json index 146ae911bed..0d6fe5ea818 100644 --- a/packages/sdk/wallets/wallet-local/package.json +++ b/packages/sdk/wallets/wallet-local/package.json @@ -34,4 +34,4 @@ "engines": { "node": ">=8.14.2" } -} +} \ No newline at end of file diff --git a/packages/sdk/wallets/wallet-remote/package.json b/packages/sdk/wallets/wallet-remote/package.json index aaed4419f06..4787eec4ccf 100644 --- a/packages/sdk/wallets/wallet-remote/package.json +++ b/packages/sdk/wallets/wallet-remote/package.json @@ -33,4 +33,4 @@ "engines": { "node": ">=8.14.2" } -} +} \ No newline at end of file diff --git a/yarn.lock b/yarn.lock index 4f29cf22509..1d94ed08576 100644 --- a/yarn.lock +++ b/yarn.lock @@ -4233,7 +4233,7 @@ dependencies: "@opentelemetry/semantic-conventions" "1.15.2" -"@opentelemetry/exporter-jaeger@1.15.2": +"@opentelemetry/exporter-jaeger@1.15.2", "@opentelemetry/exporter-jaeger@^1.15.2": version "1.15.2" resolved "https://registry.yarnpkg.com/@opentelemetry/exporter-jaeger/-/exporter-jaeger-1.15.2.tgz#1ac7020d798ec4e47417bd90e00763e0947e17de" integrity sha512-BwYd5836GYvuiQcF4l5X0ca09jGJr/F37MMGyz94VH0b1dp0uYBwRJw2CQh56RlVZEdpKv29JyDRVZ/4UrRgLQ== @@ -4747,7 +4747,7 @@ "@opentelemetry/core" "1.15.2" "@opentelemetry/resources" "1.15.2" -"@opentelemetry/sdk-metrics@1.15.2", "@opentelemetry/sdk-metrics@^1.15.1", "@opentelemetry/sdk-metrics@^1.9.1": +"@opentelemetry/sdk-metrics@1.15.2", "@opentelemetry/sdk-metrics@^1.15.1", "@opentelemetry/sdk-metrics@^1.15.2", "@opentelemetry/sdk-metrics@^1.9.1": version "1.15.2" resolved "https://registry.yarnpkg.com/@opentelemetry/sdk-metrics/-/sdk-metrics-1.15.2.tgz#eadd0a049de9cd860e1e0d49eea01156469c4b60" integrity sha512-9aIlcX8GnhcsAHW/Wl8bzk4ZnWTpNlLtud+fxUfBtFATu6OZ6TrGrF4JkT9EVrnoxwtPIDtjHdEsSjOqisY/iA== @@ -4756,7 +4756,7 @@ "@opentelemetry/resources" "1.15.2" lodash.merge "^4.6.2" -"@opentelemetry/sdk-node@^0.41.0", "@opentelemetry/sdk-node@^0.41.1": +"@opentelemetry/sdk-node@^0.41.0", "@opentelemetry/sdk-node@^0.41.1", "@opentelemetry/sdk-node@^0.41.2": version "0.41.2" resolved "https://registry.yarnpkg.com/@opentelemetry/sdk-node/-/sdk-node-0.41.2.tgz#7ac2fc149d371a9f17c2adba395a9aa257ed1bf4" integrity sha512-t3vaB5ajoXLtVFoL8TSoSgaVATmOyUfkIfBE4nvykm0dM2vQjMS/SUUelzR06eiPTbMPsr2UkevWhy2/oXy2vg== @@ -4797,7 +4797,7 @@ "@opentelemetry/sdk-trace-base" "1.15.2" semver "^7.5.1" -"@opentelemetry/sdk-trace-web@^1.15.1": +"@opentelemetry/sdk-trace-web@^1.15.1", "@opentelemetry/sdk-trace-web@^1.15.2": version "1.15.2" resolved "https://registry.yarnpkg.com/@opentelemetry/sdk-trace-web/-/sdk-trace-web-1.15.2.tgz#1db22d0afbd07b1287e8a331e30862eb19b24e20" integrity sha512-OjCrwtu4b+cAt540wyIr7d0lCA/cY9y42lmYDFUfJ8Ixj2bByIUJ4yyd9M7mXHpQHdiR/Kq2vzsgS14Uj+RU0Q== @@ -4806,7 +4806,7 @@ "@opentelemetry/sdk-trace-base" "1.15.2" "@opentelemetry/semantic-conventions" "1.15.2" -"@opentelemetry/semantic-conventions@1.15.2", "@opentelemetry/semantic-conventions@^1.15.1": +"@opentelemetry/semantic-conventions@1.15.2", "@opentelemetry/semantic-conventions@^1.15.1", "@opentelemetry/semantic-conventions@^1.15.2": version "1.15.2" resolved "https://registry.yarnpkg.com/@opentelemetry/semantic-conventions/-/semantic-conventions-1.15.2.tgz#3bafb5de3e20e841dff6cb3c66f4d6e9694c4241" integrity sha512-CjbOKwk2s+3xPIMcd5UNYQzsf+v94RczbdNix9/kQh38WiQkM90sUOi3if8eyHFgiBjBjhwXrA7W3ydiSQP9mw== @@ -10120,6 +10120,13 @@ create-require@^1.1.0: resolved "https://registry.yarnpkg.com/create-require/-/create-require-1.1.1.tgz#c1d7e8f1e5f6cfc9ff65f9cd352d37348756c333" integrity sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ== +cron@^2.4.1: + version "2.4.1" + resolved "https://registry.yarnpkg.com/cron/-/cron-2.4.1.tgz#90000398576beb3787339a1b3131f336aed10771" + integrity sha512-ty0hUSPuENwDtIShDFxUxWEIsqiu2vhoFtt6Vwrbg4lHGtJX2/cV2p0hH6/qaEM9Pj+i6mQoau48BO5wBpkP4w== + dependencies: + luxon "^3.2.1" + cross-env@^5.1.3, cross-env@^5.1.6: version "5.2.1" resolved "https://registry.yarnpkg.com/cross-env/-/cross-env-5.2.1.tgz#b2c76c1ca7add66dc874d11798466094f551b34d" @@ -17823,6 +17830,11 @@ lowercase-keys@^3.0.0: resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-7.13.1.tgz#267a81fbd0881327c46a81c5922606a2cfe336c4" integrity sha512-CHqbAq7NFlW3RSnoWXLJBxCWaZVBrfa9UEHId2M3AW8iEBurbqduNexEUCGc3SHc6iCYXNJCDi903LajSVAEPQ== +lru-cache@^10.0.1: + version "10.0.1" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-10.0.1.tgz#0a3be479df549cca0e5d693ac402ff19537a6b7a" + integrity sha512-IJ4uwUTi2qCccrioU6g9g/5rvvVl13bsdczUUcqbciD9iLr095yj8DQKdObriEvuNSx325N1rV1O0sJFszx75g== + lru-cache@^5.0.0, lru-cache@^5.1.1: version "5.1.1" resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-5.1.1.tgz#1da27e6710271947695daf6848e847f01d84b920" @@ -17880,6 +17892,11 @@ lunr@^2.3.9: resolved "https://registry.yarnpkg.com/lunr/-/lunr-2.3.9.tgz#18b123142832337dd6e964df1a5a7707b25d35e1" integrity sha512-zTU3DaZaF3Rt9rhN3uBMGQD3dD2/vFQqnvZCDv4dl5iOzq2IZQqTxu90r4E5J+nP70J3ilqVCrbho2eWaeW8Ow== +luxon@^3.2.1: + version "3.4.1" + resolved "https://registry.yarnpkg.com/luxon/-/luxon-3.4.1.tgz#9147374b2c539e7893f906c420e9b080b59c5457" + integrity sha512-2USspxOCXWGIKHwuQ9XElxPPYrDOJHDQ5DQ870CoD+CxJbBnRDIBCfhioUJJjct7BKOy80Ia8cVstIcIMb/0+Q== + make-dir@^1.0.0: version "1.3.0" resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-1.3.0.tgz#79c1033b80515bd6d24ec9933e860ca75ee27f0c" From ed9c51be5e6c3103bd0b44d25ad2b211d0778245 Mon Sep 17 00:00:00 2001 From: Alec Schaefer Date: Thu, 31 Aug 2023 16:36:58 -0400 Subject: [PATCH 09/31] sdk release 4.1.1 (#10536) * bump sdk versions to 4.1.1 * bump ODIS common package versions * bump signer and combiner versions * bump versions to 4.1.2-dev * update non-sdk packages to -dev version * update more deps to -dev --- packages/celotool/package.json | 18 ++++++++--------- packages/cli/package.json | 20 +++++++++---------- packages/env-tests/package.json | 14 ++++++------- packages/metadata-crawler/package.json | 6 +++--- .../combiner/package.json | 14 ++++++------- .../phone-number-privacy/common/package.json | 12 +++++------ .../phone-number-privacy/monitor/package.json | 16 +++++++-------- .../phone-number-privacy/signer/package.json | 12 +++++------ packages/protocol/package.json | 10 +++++----- packages/sdk/base/package.json | 2 +- packages/sdk/connect/package.json | 6 +++--- packages/sdk/contractkit/package.json | 12 +++++------ packages/sdk/cryptographic-utils/package.json | 6 +++--- packages/sdk/encrypted-backup/package.json | 10 +++++----- packages/sdk/explorer/package.json | 10 +++++----- packages/sdk/governance/package.json | 12 +++++------ packages/sdk/identity/package.json | 12 +++++------ packages/sdk/keystores/package.json | 6 +++--- packages/sdk/network-utils/package.json | 2 +- packages/sdk/phone-utils/package.json | 6 +++--- packages/sdk/transactions-uri/package.json | 8 ++++---- packages/sdk/utils/package.json | 4 ++-- packages/sdk/wallets/wallet-base/package.json | 8 ++++---- .../sdk/wallets/wallet-hsm-aws/package.json | 12 +++++------ .../sdk/wallets/wallet-hsm-azure/package.json | 12 +++++------ .../sdk/wallets/wallet-hsm-gcp/package.json | 12 +++++------ packages/sdk/wallets/wallet-hsm/package.json | 4 ++-- .../sdk/wallets/wallet-ledger/package.json | 10 +++++----- .../sdk/wallets/wallet-local/package.json | 8 ++++---- .../sdk/wallets/wallet-remote/package.json | 8 ++++---- packages/sdk/wallets/wallet-rpc/package.json | 12 +++++------ 31 files changed, 152 insertions(+), 152 deletions(-) diff --git a/packages/celotool/package.json b/packages/celotool/package.json index 67d276a84b6..84634320507 100644 --- a/packages/celotool/package.json +++ b/packages/celotool/package.json @@ -6,16 +6,16 @@ "author": "Celo", "license": "Apache-2.0", "dependencies": { - "@celo/base": "4.1.1-dev", - "@celo/connect": "4.1.1-dev", - "@celo/cryptographic-utils": "4.1.1-dev", - "@celo/contractkit": "4.1.1-dev", + "@celo/base": "4.1.2-dev", + "@celo/connect": "4.1.2-dev", + "@celo/cryptographic-utils": "4.1.2-dev", + "@celo/contractkit": "4.1.2-dev", "@celo/env-tests": "1.0.0", - "@celo/explorer": "4.1.1-dev", - "@celo/governance": "4.1.1-dev", - "@celo/identity": "4.1.1-dev", - "@celo/network-utils": "4.1.1-dev", - "@celo/utils": "4.1.1-dev", + "@celo/explorer": "4.1.2-dev", + "@celo/governance": "4.1.2-dev", + "@celo/identity": "4.1.2-dev", + "@celo/network-utils": "4.1.2-dev", + "@celo/utils": "4.1.2-dev", "@ethereumjs/util": "8.0.5", "@ethereumjs/rlp": "4.0.1", "@google-cloud/monitoring": "0.7.1", diff --git a/packages/cli/package.json b/packages/cli/package.json index 82f198dcda9..fe53c405ad5 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -35,16 +35,16 @@ }, "dependencies": { "@celo/bls12377js": "0.1.1", - "@celo/contractkit": "^4.1.1-dev", - "@celo/explorer": "^4.1.1-dev", - "@celo/governance": "^4.1.1-dev", - "@celo/identity": "^4.1.1-dev", - "@celo/phone-utils": "^4.1.1-dev", - "@celo/utils": "^4.1.1-dev", - "@celo/cryptographic-utils": "^4.1.1-dev", - "@celo/wallet-hsm-azure": "^4.1.1-dev", - "@celo/wallet-ledger": "^4.1.1-dev", - "@celo/wallet-local": "^4.1.1-dev", + "@celo/contractkit": "^4.1.2-dev", + "@celo/explorer": "^4.1.2-dev", + "@celo/governance": "^4.1.2-dev", + "@celo/identity": "^4.1.2-dev", + "@celo/phone-utils": "^4.1.2-dev", + "@celo/utils": "^4.1.2-dev", + "@celo/cryptographic-utils": "^4.1.2-dev", + "@celo/wallet-hsm-azure": "^4.1.2-dev", + "@celo/wallet-ledger": "^4.1.2-dev", + "@celo/wallet-local": "^4.1.2-dev", "@ledgerhq/hw-transport-node-hid": "^6.27.4", "@oclif/command": "^1.6.0", "@oclif/config": "^1.6.0", diff --git a/packages/env-tests/package.json b/packages/env-tests/package.json index 5ab87bb9bff..388ea146b1e 100644 --- a/packages/env-tests/package.json +++ b/packages/env-tests/package.json @@ -5,13 +5,13 @@ "main": "index.js", "license": "MIT", "dependencies": { - "@celo/contractkit": "4.1.1-dev", - "@celo/utils": "4.1.1-dev", - "@celo/base": "4.1.1-dev", - "@celo/connect": "4.1.1-dev", - "@celo/identity": "4.1.1-dev", - "@celo/phone-utils": "4.1.1-dev", - "@celo/cryptographic-utils": "4.1.1-dev", + "@celo/contractkit": "4.1.2-dev", + "@celo/utils": "4.1.2-dev", + "@celo/base": "4.1.2-dev", + "@celo/connect": "4.1.2-dev", + "@celo/identity": "4.1.2-dev", + "@celo/phone-utils": "4.1.2-dev", + "@celo/cryptographic-utils": "4.1.2-dev", "bunyan": "1.8.12", "bunyan-gke-stackdriver": "0.1.2", "bunyan-debug-stream": "2.0.0", diff --git a/packages/metadata-crawler/package.json b/packages/metadata-crawler/package.json index f40d231dce1..748e0b8d6ba 100644 --- a/packages/metadata-crawler/package.json +++ b/packages/metadata-crawler/package.json @@ -9,9 +9,9 @@ "homepage": "https://github.com/celo-org/celo-monorepo/tree/master/packages/metadata-crawler", "repository": "https://github.com/celo-org/celo-monorepo/tree/master/packages/metadata-crawler", "dependencies": { - "@celo/connect": "4.1.1-dev", - "@celo/contractkit": "4.1.1-dev", - "@celo/utils": "4.1.1-dev", + "@celo/connect": "4.1.2-dev", + "@celo/contractkit": "4.1.2-dev", + "@celo/utils": "4.1.2-dev", "@types/pg": "^7.14.3", "bunyan": "1.8.12", "bunyan-gke-stackdriver": "0.1.2", diff --git a/packages/phone-number-privacy/combiner/package.json b/packages/phone-number-privacy/combiner/package.json index 0e81a83c17d..3154c33434e 100644 --- a/packages/phone-number-privacy/combiner/package.json +++ b/packages/phone-number-privacy/combiner/package.json @@ -1,6 +1,6 @@ { "name": "@celo/phone-number-privacy-combiner", - "version": "3.0.0-beta.7", + "version": "3.0.0-beta.8-dev", "description": "Orchestrates and combines threshold signatures for use in ODIS", "author": "Celo", "license": "Apache-2.0", @@ -28,10 +28,10 @@ "test:e2e:alfajores": "CONTEXT_NAME=alfajores yarn test:e2e" }, "dependencies": { - "@celo/contractkit": "^4.1.1-beta.1", - "@celo/phone-number-privacy-common": "^3.0.0-beta.3", - "@celo/identity": "^4.1.1-beta.1", - "@celo/encrypted-backup": "^4.1.1-beta.1", + "@celo/contractkit": "^4.1.2-dev", + "@celo/phone-number-privacy-common": "^3.0.1-dev", + "@celo/identity": "^4.1.2-dev", + "@celo/encrypted-backup": "^4.1.2-dev", "@celo/poprf": "^0.1.9", "@types/bunyan": "^1.8.8", "@opentelemetry/api": "^1.4.1", @@ -53,8 +53,8 @@ "uuid": "^7.0.3" }, "devDependencies": { - "@celo/utils": "^4.1.1-beta.1", - "@celo/phone-utils": "^4.1.1-beta.1", + "@celo/utils": "^4.1.2-dev", + "@celo/phone-utils": "^4.1.2-dev", "@types/express": "^4.17.6", "@types/supertest": "^2.0.12", "@types/uuid": "^7.0.3", diff --git a/packages/phone-number-privacy/common/package.json b/packages/phone-number-privacy/common/package.json index 709a437394f..505d6b33135 100644 --- a/packages/phone-number-privacy/common/package.json +++ b/packages/phone-number-privacy/common/package.json @@ -1,6 +1,6 @@ { "name": "@celo/phone-number-privacy-common", - "version": "3.0.0-beta.4-dev", + "version": "3.0.1-dev", "description": "Common library for the combiner and signer libraries", "author": "Celo", "license": "Apache-2.0", @@ -18,10 +18,10 @@ "lib/**/*" ], "dependencies": { - "@celo/base": "^4.1.1-beta.1", - "@celo/contractkit": "^4.1.1-beta.1", - "@celo/utils": "^4.1.1-beta.1", - "@celo/phone-utils": "^4.1.1-beta.1", + "@celo/base": "^4.1.2-dev", + "@celo/contractkit": "^4.1.2-dev", + "@celo/utils": "^4.1.2-dev", + "@celo/phone-utils": "^4.1.2-dev", "@types/bunyan": "1.8.8", "bignumber.js": "^9.0.0", "bunyan": "1.8.12", @@ -41,7 +41,7 @@ }, "devDependencies": { "@celo/poprf": "^0.1.9", - "@celo/wallet-local": "^4.1.1-beta.1", + "@celo/wallet-local": "^4.1.2-dev", "@types/elliptic": "^6.4.12", "@types/express": "^4.17.6", "@types/is-base64": "^1.1.0", diff --git a/packages/phone-number-privacy/monitor/package.json b/packages/phone-number-privacy/monitor/package.json index 7ea13aa786c..98f4dd599be 100644 --- a/packages/phone-number-privacy/monitor/package.json +++ b/packages/phone-number-privacy/monitor/package.json @@ -1,6 +1,6 @@ { "name": "@celo/phone-number-privacy-monitor", - "version": "3.0.0-beta.1", + "version": "3.0.0-beta.2-dev", "description": "Regularly queries ODIS to ensure the system is functioning properly", "author": "Celo", "license": "Apache-2.0", @@ -22,13 +22,13 @@ "loadTest": "ts-node src/scripts/run-load-test.ts run" }, "dependencies": { - "@celo/contractkit": "^4.1.1-beta.1", - "@celo/cryptographic-utils": "^4.1.1-beta.1", - "@celo/encrypted-backup": "^4.1.1-beta.1", - "@celo/identity": "^4.1.1-beta.1", - "@celo/wallet-local": "^4.1.1-beta.1", - "@celo/phone-number-privacy-common": "^3.0.0-beta.1", - "@celo/utils": "^4.1.1-beta.1", + "@celo/contractkit": "^4.1.2-dev", + "@celo/cryptographic-utils": "^4.1.2-dev", + "@celo/encrypted-backup": "^4.1.2-dev", + "@celo/identity": "^4.1.2-dev", + "@celo/wallet-local": "^4.1.2-dev", + "@celo/phone-number-privacy-common": "^3.0.1-dev", + "@celo/utils": "^4.1.2-dev", "firebase-admin": "^9.12.0", "firebase-functions": "^3.15.7" }, diff --git a/packages/phone-number-privacy/signer/package.json b/packages/phone-number-privacy/signer/package.json index aeb0da50812..8cef02e01d0 100644 --- a/packages/phone-number-privacy/signer/package.json +++ b/packages/phone-number-privacy/signer/package.json @@ -1,6 +1,6 @@ { "name": "@celo/phone-number-privacy-signer", - "version": "3.0.0-beta.16", + "version": "3.0.0-beta.17-dev", "description": "Signing participator of ODIS", "author": "Celo", "license": "Apache-2.0", @@ -39,12 +39,12 @@ "ssl:keygen": "./scripts/create-ssl-cert.sh" }, "dependencies": { - "@celo/base": "^4.1.1-beta.1", - "@celo/contractkit": "^4.1.1-beta.1", - "@celo/phone-number-privacy-common": "^3.0.0-beta.3", + "@celo/base": "^4.1.2-dev", + "@celo/contractkit": "^4.1.2-dev", + "@celo/phone-number-privacy-common": "^3.0.1-dev", "@celo/poprf": "^0.1.9", - "@celo/utils": "^4.1.1-beta.1", - "@celo/wallet-hsm-azure": "^4.1.1-beta.1", + "@celo/utils": "^4.1.2-dev", + "@celo/wallet-hsm-azure": "^4.1.2-dev", "@google-cloud/secret-manager": "3.0.0", "@opentelemetry/api": "^1.4.1", "@opentelemetry/auto-instrumentations-node": "^0.38.0", diff --git a/packages/protocol/package.json b/packages/protocol/package.json index 353ad9d8358..68b31a4eeb0 100644 --- a/packages/protocol/package.json +++ b/packages/protocol/package.json @@ -49,11 +49,11 @@ "@0x/sol-profiler": "^4.1.37", "@0x/sol-trace": "^3.0.47", "@0x/subproviders": "^7.0.1", - "@celo/base": "4.1.1-dev", + "@celo/base": "4.1.2-dev", "@celo/bls12377js": "0.1.1", - "@celo/connect": "4.1.1-dev", - "@celo/cryptographic-utils": "4.1.1-dev", - "@celo/utils": "4.1.1-dev", + "@celo/connect": "4.1.2-dev", + "@celo/cryptographic-utils": "4.1.2-dev", + "@celo/utils": "4.1.2-dev", "@ethereumjs/util": "8.0.5", "@ethereumjs/vm": "npm:@celo/ethereumjs-vm@6.4.1-unofficial.0", "@ganache/console.log": "0.3.0", @@ -94,7 +94,7 @@ "web3-utils": "1.10.0" }, "devDependencies": { - "@celo/phone-utils": "4.1.1-dev", + "@celo/phone-utils": "4.1.2-dev", "@celo/typechain-target-web3-v1-celo": "0.2.0", "@celo/typescript": "0.0.1", "@types/bn.js": "^5.1.0", diff --git a/packages/sdk/base/package.json b/packages/sdk/base/package.json index 157e980478f..710a7a809f6 100644 --- a/packages/sdk/base/package.json +++ b/packages/sdk/base/package.json @@ -1,6 +1,6 @@ { "name": "@celo/base", - "version": "4.1.1-dev", + "version": "4.1.2-dev", "description": "Celo base common utils, no dependencies", "author": "Celo", "license": "Apache-2.0", diff --git a/packages/sdk/connect/package.json b/packages/sdk/connect/package.json index 2c23bcebde1..daaa46656dd 100644 --- a/packages/sdk/connect/package.json +++ b/packages/sdk/connect/package.json @@ -1,6 +1,6 @@ { "name": "@celo/connect", - "version": "4.1.1-dev", + "version": "4.1.2-dev", "description": "Light Toolkit for connecting with the Celo network", "main": "./lib/index.js", "types": "./lib/index.d.ts", @@ -24,8 +24,8 @@ "dependencies": { "@types/debug": "^4.1.5", "@types/utf8": "^2.1.6", - "@celo/base": "4.1.1-dev", - "@celo/utils": "4.1.1-dev", + "@celo/base": "4.1.2-dev", + "@celo/utils": "4.1.2-dev", "bignumber.js": "^9.0.0", "debug": "^4.1.1", "utf8": "3.0.0" diff --git a/packages/sdk/contractkit/package.json b/packages/sdk/contractkit/package.json index a2365be1469..11ae3796afd 100644 --- a/packages/sdk/contractkit/package.json +++ b/packages/sdk/contractkit/package.json @@ -1,6 +1,6 @@ { "name": "@celo/contractkit", - "version": "4.1.1-dev", + "version": "4.1.2-dev", "description": "Celo's ContractKit to interact with Celo network", "main": "./lib/index.js", "types": "./lib/index.d.ts", @@ -29,10 +29,10 @@ "lint": "tslint -c tslint.json --project ." }, "dependencies": { - "@celo/base": "4.1.1-dev", - "@celo/connect": "4.1.1-dev", - "@celo/utils": "4.1.1-dev", - "@celo/wallet-local": "4.1.1-dev", + "@celo/base": "4.1.2-dev", + "@celo/connect": "4.1.2-dev", + "@celo/utils": "4.1.2-dev", + "@celo/wallet-local": "4.1.2-dev", "@types/bn.js": "^5.1.0", "@types/debug": "^4.1.5", "bignumber.js": "^9.0.0", @@ -44,7 +44,7 @@ "web3": "1.10.0" }, "devDependencies": { - "@celo/phone-utils": "4.1.1-dev", + "@celo/phone-utils": "4.1.2-dev", "@celo/dev-utils": "0.0.1-dev", "@celo/protocol": "1.0.0", "@types/debug": "^4.1.5", diff --git a/packages/sdk/cryptographic-utils/package.json b/packages/sdk/cryptographic-utils/package.json index 9d63c79ae45..0bbada347de 100644 --- a/packages/sdk/cryptographic-utils/package.json +++ b/packages/sdk/cryptographic-utils/package.json @@ -1,6 +1,6 @@ { "name": "@celo/cryptographic-utils", - "version": "4.1.1-dev", + "version": "4.1.2-dev", "description": "Some Celo utils for comment/data encryption, bls, and mnemonics", "author": "Celo", "license": "Apache-2.0", @@ -22,9 +22,9 @@ "lib/**/*" ], "dependencies": { - "@celo/utils": "4.1.1-dev", + "@celo/utils": "4.1.2-dev", "@celo/bls12377js": "0.1.1", - "@celo/base": "4.1.1-dev", + "@celo/base": "4.1.2-dev", "@ethereumjs/util": "8.0.5", "@types/bn.js": "^5.1.0", "@types/elliptic": "^6.4.9", diff --git a/packages/sdk/encrypted-backup/package.json b/packages/sdk/encrypted-backup/package.json index 2095047d98a..2c8c9ebe94e 100644 --- a/packages/sdk/encrypted-backup/package.json +++ b/packages/sdk/encrypted-backup/package.json @@ -1,6 +1,6 @@ { "name": "@celo/encrypted-backup", - "version": "4.1.1-dev", + "version": "4.1.2-dev", "description": "Libraries for implemented password encrypted account backups", "main": "./lib/index.js", "types": "./lib/index.d.ts", @@ -25,11 +25,11 @@ "prepublishOnly": "yarn build" }, "dependencies": { - "@celo/base": "4.1.1-dev", - "@celo/identity": "4.1.1-dev", - "@celo/phone-number-privacy-common": "^3.0.0-beta.1", + "@celo/base": "4.1.2-dev", + "@celo/identity": "4.1.2-dev", + "@celo/phone-number-privacy-common": "^3.0.1-dev", "@celo/poprf": "^0.1.9", - "@celo/utils": "4.1.1-dev", + "@celo/utils": "4.1.2-dev", "@types/debug": "^4.1.5", "debug": "^4.1.1", "fp-ts": "2.1.1", diff --git a/packages/sdk/explorer/package.json b/packages/sdk/explorer/package.json index 32f50dd017d..751094b0b78 100644 --- a/packages/sdk/explorer/package.json +++ b/packages/sdk/explorer/package.json @@ -1,6 +1,6 @@ { "name": "@celo/explorer", - "version": "4.1.1-dev", + "version": "4.1.2-dev", "description": "Celo's block explorer consumer", "main": "./lib/index.js", "types": "./lib/index.d.ts", @@ -22,10 +22,10 @@ "prepublishOnly": "yarn build" }, "dependencies": { - "@celo/base": "4.1.1-dev", - "@celo/connect": "4.1.1-dev", - "@celo/contractkit": "4.1.1-dev", - "@celo/utils": "4.1.1-dev", + "@celo/base": "4.1.2-dev", + "@celo/connect": "4.1.2-dev", + "@celo/contractkit": "4.1.2-dev", + "@celo/utils": "4.1.2-dev", "@types/debug": "^4.1.5", "cross-fetch": "3.0.6", "debug": "^4.1.1" diff --git a/packages/sdk/governance/package.json b/packages/sdk/governance/package.json index 750d1166586..5ddc9289c03 100644 --- a/packages/sdk/governance/package.json +++ b/packages/sdk/governance/package.json @@ -1,6 +1,6 @@ { "name": "@celo/governance", - "version": "4.1.1-dev", + "version": "4.1.2-dev", "description": "Celo's governance proposals", "main": "./lib/index.js", "types": "./lib/index.d.ts", @@ -21,11 +21,11 @@ "prepublishOnly": "yarn build" }, "dependencies": { - "@celo/base": "4.1.1-dev", - "@celo/utils": "4.1.1-dev", - "@celo/connect": "4.1.1-dev", - "@celo/contractkit": "4.1.1-dev", - "@celo/explorer": "4.1.1-dev", + "@celo/base": "4.1.2-dev", + "@celo/utils": "4.1.2-dev", + "@celo/connect": "4.1.2-dev", + "@celo/contractkit": "4.1.2-dev", + "@celo/explorer": "4.1.2-dev", "@ethereumjs/util": "8.0.5", "@types/debug": "^4.1.5", "@types/inquirer": "^6.5.0", diff --git a/packages/sdk/identity/package.json b/packages/sdk/identity/package.json index 9bf9f449815..304278231f7 100644 --- a/packages/sdk/identity/package.json +++ b/packages/sdk/identity/package.json @@ -1,6 +1,6 @@ { "name": "@celo/identity", - "version": "4.1.1-dev", + "version": "4.1.2-dev", "description": "Utilities for interacting with Celo's identity protocol", "main": "./lib/index.js", "types": "./lib/index.d.ts", @@ -25,10 +25,10 @@ "prepublishOnly": "yarn build" }, "dependencies": { - "@celo/base": "4.1.1-dev", - "@celo/utils": "4.1.1-dev", - "@celo/contractkit": "4.1.1-dev", - "@celo/phone-number-privacy-common": "^3.0.0-beta.1", + "@celo/base": "4.1.2-dev", + "@celo/utils": "4.1.2-dev", + "@celo/contractkit": "4.1.2-dev", + "@celo/phone-number-privacy-common": "^3.0.1-dev", "@types/debug": "^4.1.5", "bignumber.js": "^9.0.0", "blind-threshold-bls": "https://github.com/celo-org/blind-threshold-bls-wasm#e1e2f8a", @@ -41,7 +41,7 @@ }, "devDependencies": { "@celo/dev-utils": "0.0.1-dev", - "@celo/wallet-local": "4.1.1-dev", + "@celo/wallet-local": "4.1.2-dev", "@types/elliptic": "^6.4.12", "fetch-mock": "9.10.4", "ganache": "npm:@celo/ganache@7.8.0-unofficial.0", diff --git a/packages/sdk/keystores/package.json b/packages/sdk/keystores/package.json index a183f89940f..d15a241ef1f 100644 --- a/packages/sdk/keystores/package.json +++ b/packages/sdk/keystores/package.json @@ -1,6 +1,6 @@ { "name": "@celo/keystores", - "version": "4.1.1-dev", + "version": "4.1.2-dev", "description": "keystore implementation", "author": "Celo", "license": "Apache-2.0", @@ -22,8 +22,8 @@ "prepublishOnly": "yarn build" }, "dependencies": { - "@celo/utils": "4.1.1-dev", - "@celo/wallet-local": "4.1.1-dev", + "@celo/utils": "4.1.2-dev", + "@celo/wallet-local": "4.1.2-dev", "ethereumjs-wallet": "^1.0.1" }, "devDependencies": { diff --git a/packages/sdk/network-utils/package.json b/packages/sdk/network-utils/package.json index 31923ceae4d..85e8bf560a2 100644 --- a/packages/sdk/network-utils/package.json +++ b/packages/sdk/network-utils/package.json @@ -1,6 +1,6 @@ { "name": "@celo/network-utils", - "version": "4.1.1-dev", + "version": "4.1.2-dev", "description": "Utilities for fetching static information about the Celo network", "main": "./lib/index.js", "types": "./lib/index.d.ts", diff --git a/packages/sdk/phone-utils/package.json b/packages/sdk/phone-utils/package.json index e8a0827d97b..ff50fc223f3 100644 --- a/packages/sdk/phone-utils/package.json +++ b/packages/sdk/phone-utils/package.json @@ -1,6 +1,6 @@ { "name": "@celo/phone-utils", - "version": "4.1.1-dev", + "version": "4.1.2-dev", "description": "Celo phone utils", "author": "Celo", "license": "Apache-2.0", @@ -22,8 +22,8 @@ "lib/**/*" ], "dependencies": { - "@celo/base": "4.1.1-dev", - "@celo/utils": "4.1.1-dev", + "@celo/base": "4.1.2-dev", + "@celo/utils": "4.1.2-dev", "@types/country-data": "^0.0.0", "@types/google-libphonenumber": "^7.4.23", "@types/node": "^10.12.18", diff --git a/packages/sdk/transactions-uri/package.json b/packages/sdk/transactions-uri/package.json index a2ff11fcc37..d50c8cb5f04 100644 --- a/packages/sdk/transactions-uri/package.json +++ b/packages/sdk/transactions-uri/package.json @@ -1,6 +1,6 @@ { "name": "@celo/transactions-uri", - "version": "4.1.1-dev", + "version": "4.1.2-dev", "description": "Celo's transactions uri generation", "main": "./lib/index.js", "types": "./lib/index.d.ts", @@ -26,15 +26,15 @@ "dependencies": { "@types/debug": "^4.1.5", "@types/qrcode": "^1.3.4", - "@celo/base": "4.1.1-dev", - "@celo/connect": "4.1.1-dev", + "@celo/base": "4.1.2-dev", + "@celo/connect": "4.1.2-dev", "bn.js": "4.11.9", "qrcode": "1.4.4", "web3-eth-abi": "1.10.0" }, "devDependencies": { "@celo/dev-utils": "0.0.1-dev", - "@celo/contractkit": "4.1.1-dev", + "@celo/contractkit": "4.1.2-dev", "dotenv": "^8.2.0" }, "engines": { diff --git a/packages/sdk/utils/package.json b/packages/sdk/utils/package.json index e30fb968d33..7977f28d9bc 100644 --- a/packages/sdk/utils/package.json +++ b/packages/sdk/utils/package.json @@ -1,6 +1,6 @@ { "name": "@celo/utils", - "version": "4.1.1-dev", + "version": "4.1.2-dev", "description": "Celo common utils", "author": "Celo", "license": "Apache-2.0", @@ -22,7 +22,7 @@ "lib/**/*" ], "dependencies": { - "@celo/base": "4.1.1-dev", + "@celo/base": "4.1.2-dev", "@ethereumjs/util": "8.0.5", "@types/bn.js": "^5.1.0", "@types/elliptic": "^6.4.9", diff --git a/packages/sdk/wallets/wallet-base/package.json b/packages/sdk/wallets/wallet-base/package.json index 8801aa93d56..5ff32097b5a 100644 --- a/packages/sdk/wallets/wallet-base/package.json +++ b/packages/sdk/wallets/wallet-base/package.json @@ -1,6 +1,6 @@ { "name": "@celo/wallet-base", - "version": "4.1.1-dev", + "version": "4.1.2-dev", "description": "Wallet base implementation", "author": "Celo", "license": "Apache-2.0", @@ -22,9 +22,9 @@ "prepublishOnly": "yarn build" }, "dependencies": { - "@celo/connect": "4.1.1-dev", - "@celo/base": "4.1.1-dev", - "@celo/utils": "4.1.1-dev", + "@celo/connect": "4.1.2-dev", + "@celo/base": "4.1.2-dev", + "@celo/utils": "4.1.2-dev", "@ethereumjs/util": "8.0.5", "@types/debug": "^4.1.5", "bignumber.js": "^9.0.0", diff --git a/packages/sdk/wallets/wallet-hsm-aws/package.json b/packages/sdk/wallets/wallet-hsm-aws/package.json index 954e2a90860..c9143b7b6ac 100644 --- a/packages/sdk/wallets/wallet-hsm-aws/package.json +++ b/packages/sdk/wallets/wallet-hsm-aws/package.json @@ -1,6 +1,6 @@ { "name": "@celo/wallet-hsm-aws", - "version": "4.1.1-dev", + "version": "4.1.2-dev", "description": "AWS HSM wallet implementation", "author": "Celo", "license": "Apache-2.0", @@ -22,10 +22,10 @@ "prepublishOnly": "yarn build" }, "dependencies": { - "@celo/utils": "4.1.1-dev", - "@celo/wallet-base": "4.1.1-dev", - "@celo/wallet-remote": "4.1.1-dev", - "@celo/wallet-hsm": "4.1.1-dev", + "@celo/utils": "4.1.2-dev", + "@celo/wallet-base": "4.1.2-dev", + "@celo/wallet-remote": "4.1.2-dev", + "@celo/wallet-hsm": "4.1.2-dev", "@types/debug": "^4.1.5", "@types/secp256k1": "^4.0.0", "aws-sdk": "^2.705.0", @@ -36,7 +36,7 @@ "secp256k1": "^4.0.0" }, "devDependencies": { - "@celo/connect": "4.1.1-dev", + "@celo/connect": "4.1.2-dev", "elliptic": "^6.5.4", "web3": "1.10.0" }, diff --git a/packages/sdk/wallets/wallet-hsm-azure/package.json b/packages/sdk/wallets/wallet-hsm-azure/package.json index a8d6a8d2bee..ba4957bb0b2 100644 --- a/packages/sdk/wallets/wallet-hsm-azure/package.json +++ b/packages/sdk/wallets/wallet-hsm-azure/package.json @@ -1,6 +1,6 @@ { "name": "@celo/wallet-hsm-azure", - "version": "4.1.1-dev", + "version": "4.1.2-dev", "description": "Azure HSM wallet implementation", "author": "Celo", "license": "Apache-2.0", @@ -25,11 +25,11 @@ "@azure/identity": "^1.1.0", "@azure/keyvault-keys": "^4.1.0", "@azure/keyvault-secrets": "^4.1.0", - "@celo/utils": "4.1.1-dev", - "@celo/wallet-base": "4.1.1-dev", - "@celo/wallet-remote": "4.1.1-dev", - "@celo/wallet-hsm": "4.1.1-dev", - "@celo/connect": "4.1.1-dev", + "@celo/utils": "4.1.2-dev", + "@celo/wallet-base": "4.1.2-dev", + "@celo/wallet-remote": "4.1.2-dev", + "@celo/wallet-hsm": "4.1.2-dev", + "@celo/connect": "4.1.2-dev", "@types/secp256k1": "^4.0.0", "eth-lib": "^0.2.8", "@ethereumjs/util": "8.0.5", diff --git a/packages/sdk/wallets/wallet-hsm-gcp/package.json b/packages/sdk/wallets/wallet-hsm-gcp/package.json index d7d5b15b37a..7d8625b5db9 100644 --- a/packages/sdk/wallets/wallet-hsm-gcp/package.json +++ b/packages/sdk/wallets/wallet-hsm-gcp/package.json @@ -1,6 +1,6 @@ { "name": "@celo/wallet-hsm-gcp", - "version": "4.1.1-dev", + "version": "4.1.2-dev", "description": "GCP HSM wallet implementation", "author": "Celo", "license": "Apache-2.0", @@ -20,10 +20,10 @@ "prepublishOnly": "yarn build" }, "dependencies": { - "@celo/utils": "4.1.1-dev", - "@celo/wallet-base": "4.1.1-dev", - "@celo/wallet-remote": "4.1.1-dev", - "@celo/wallet-hsm": "4.1.1-dev", + "@celo/utils": "4.1.2-dev", + "@celo/wallet-base": "4.1.2-dev", + "@celo/wallet-remote": "4.1.2-dev", + "@celo/wallet-hsm": "4.1.2-dev", "@google-cloud/kms": "~2.9.0", "@types/debug": "^4.1.5", "@types/secp256k1": "^4.0.0", @@ -34,7 +34,7 @@ "secp256k1": "^4.0.0" }, "devDependencies": { - "@celo/connect": "4.1.1-dev", + "@celo/connect": "4.1.2-dev", "elliptic": "^6.5.4", "web3": "1.10.0" }, diff --git a/packages/sdk/wallets/wallet-hsm/package.json b/packages/sdk/wallets/wallet-hsm/package.json index bf368e57191..f3b57ff51df 100644 --- a/packages/sdk/wallets/wallet-hsm/package.json +++ b/packages/sdk/wallets/wallet-hsm/package.json @@ -1,6 +1,6 @@ { "name": "@celo/wallet-hsm", - "version": "4.1.1-dev", + "version": "4.1.2-dev", "description": "HSM wallet implementation utils", "author": "Celo", "license": "Apache-2.0", @@ -22,7 +22,7 @@ "prepublishOnly": "yarn build" }, "dependencies": { - "@celo/base": "4.1.1-dev", + "@celo/base": "4.1.2-dev", "@types/asn1js": "^0.0.2", "@types/secp256k1": "^4.0.0", "@types/debug": "^4.1.5", diff --git a/packages/sdk/wallets/wallet-ledger/package.json b/packages/sdk/wallets/wallet-ledger/package.json index 276fccc1fcb..09ef11ed9c8 100644 --- a/packages/sdk/wallets/wallet-ledger/package.json +++ b/packages/sdk/wallets/wallet-ledger/package.json @@ -1,6 +1,6 @@ { "name": "@celo/wallet-ledger", - "version": "4.1.1-dev", + "version": "4.1.2-dev", "description": "Ledger wallet implementation", "author": "Celo", "license": "Apache-2.0", @@ -22,10 +22,10 @@ "prepublishOnly": "yarn build" }, "dependencies": { - "@celo/utils": "4.1.1-dev", - "@celo/wallet-base": "4.1.1-dev", - "@celo/wallet-remote": "4.1.1-dev", - "@celo/connect": "4.1.1-dev", + "@celo/utils": "4.1.2-dev", + "@celo/wallet-base": "4.1.2-dev", + "@celo/wallet-remote": "4.1.2-dev", + "@celo/connect": "4.1.2-dev", "@ethereumjs/util": "8.0.5", "@ledgerhq/hw-app-eth": "~5.11.0", "@ledgerhq/hw-transport": "~5.11.0", diff --git a/packages/sdk/wallets/wallet-local/package.json b/packages/sdk/wallets/wallet-local/package.json index 0d6fe5ea818..2f9394c9e63 100644 --- a/packages/sdk/wallets/wallet-local/package.json +++ b/packages/sdk/wallets/wallet-local/package.json @@ -1,6 +1,6 @@ { "name": "@celo/wallet-local", - "version": "4.1.1-dev", + "version": "4.1.2-dev", "description": "Local wallet implementation", "author": "Celo", "license": "Apache-2.0", @@ -22,9 +22,9 @@ "prepublishOnly": "yarn build" }, "dependencies": { - "@celo/utils": "4.1.1-dev", - "@celo/connect": "4.1.1-dev", - "@celo/wallet-base": "4.1.1-dev", + "@celo/utils": "4.1.2-dev", + "@celo/connect": "4.1.2-dev", + "@celo/wallet-base": "4.1.2-dev", "eth-lib": "^0.2.8", "@ethereumjs/util": "8.0.5" }, diff --git a/packages/sdk/wallets/wallet-remote/package.json b/packages/sdk/wallets/wallet-remote/package.json index 4787eec4ccf..c59bb1090db 100644 --- a/packages/sdk/wallets/wallet-remote/package.json +++ b/packages/sdk/wallets/wallet-remote/package.json @@ -1,6 +1,6 @@ { "name": "@celo/wallet-remote", - "version": "4.1.1-dev", + "version": "4.1.2-dev", "description": "Remote wallet implementation", "author": "Celo", "license": "Apache-2.0", @@ -22,9 +22,9 @@ "prepublishOnly": "yarn build" }, "dependencies": { - "@celo/connect": "4.1.1-dev", - "@celo/utils": "4.1.1-dev", - "@celo/wallet-base": "4.1.1-dev", + "@celo/connect": "4.1.2-dev", + "@celo/utils": "4.1.2-dev", + "@celo/wallet-base": "4.1.2-dev", "@ethereumjs/util": "8.0.5", "@types/debug": "^4.1.5", "eth-lib": "^0.2.8" diff --git a/packages/sdk/wallets/wallet-rpc/package.json b/packages/sdk/wallets/wallet-rpc/package.json index 8858aad8877..846b1e3d71d 100644 --- a/packages/sdk/wallets/wallet-rpc/package.json +++ b/packages/sdk/wallets/wallet-rpc/package.json @@ -1,6 +1,6 @@ { "name": "@celo/wallet-rpc", - "version": "4.1.1-dev", + "version": "4.1.2-dev", "description": "Geth RPC wallet implementation", "author": "Celo", "license": "Apache-2.0", @@ -22,16 +22,16 @@ "prepublishOnly": "yarn build" }, "dependencies": { - "@celo/connect": "4.1.1-dev", - "@celo/utils": "4.1.1-dev", - "@celo/wallet-base": "4.1.1-dev", - "@celo/wallet-remote": "4.1.1-dev", + "@celo/connect": "4.1.2-dev", + "@celo/utils": "4.1.2-dev", + "@celo/wallet-base": "4.1.2-dev", + "@celo/wallet-remote": "4.1.2-dev", "bignumber.js": "^9.0.0", "debug": "^4.1.1" }, "devDependencies": { "@celo/dev-utils": "0.0.1-dev", - "@celo/contractkit": "4.1.1-dev" + "@celo/contractkit": "4.1.2-dev" }, "engines": { "node": ">=8.14.2" From 0dfd5730c19cb0b96cf05c7cff3e82d2f1f109cd Mon Sep 17 00:00:00 2001 From: Alec Schaefer Date: Fri, 1 Sep 2023 12:23:44 -0400 Subject: [PATCH 10/31] odis signer release 3.0.0 (#10538) * build signer with only published versions * point combiner to published versions so CI checks pass * add node types to combiner dev dependencies * add node-fetch types to combiner * revert all combiner changes * actually revert all combiner changes * fix node type versions * fix combiner integration tests * fix combiner integration tests, close server before destroying db * revert depending on published dependencies for merge to master, delete unused commands from package.json, bump signer to -dev version * lockfile --- .../combiner/package.json | 1 + .../combiner/test/integration/pnp.test.ts | 31 +++++++++---------- packages/phone-number-privacy/signer/.env | 2 +- .../phone-number-privacy/signer/package.json | 5 ++- yarn.lock | 2 +- 5 files changed, 20 insertions(+), 21 deletions(-) diff --git a/packages/phone-number-privacy/combiner/package.json b/packages/phone-number-privacy/combiner/package.json index 3154c33434e..fd432f11a9f 100644 --- a/packages/phone-number-privacy/combiner/package.json +++ b/packages/phone-number-privacy/combiner/package.json @@ -53,6 +53,7 @@ "uuid": "^7.0.3" }, "devDependencies": { + "@types/node": "18.15.13", "@celo/utils": "^4.1.2-dev", "@celo/phone-utils": "^4.1.2-dev", "@types/express": "^4.17.6", diff --git a/packages/phone-number-privacy/combiner/test/integration/pnp.test.ts b/packages/phone-number-privacy/combiner/test/integration/pnp.test.ts index 29bd022ffbe..a300adf9976 100644 --- a/packages/phone-number-privacy/combiner/test/integration/pnp.test.ts +++ b/packages/phone-number-privacy/combiner/test/integration/pnp.test.ts @@ -313,12 +313,12 @@ describe('pnpService', () => { }) afterEach(async () => { - await signerDB1?.destroy() - await signerDB2?.destroy() - await signerDB3?.destroy() await serverClose(signer1) await serverClose(signer2) await serverClose(signer3) + await signerDB1?.destroy() + await signerDB2?.destroy() + await signerDB3?.destroy() }) describe('when signers are operating correctly', () => { @@ -563,10 +563,10 @@ describe('pnpService', () => { // This previously returned 502 instead of 500 it('Should respond with 500 when insufficient signer responses', async () => { - await signerDB1?.destroy() - await signerDB2?.destroy() await serverClose(signer1) await serverClose(signer2) + await signerDB1?.destroy() + await signerDB2?.destroy() const req = { account: ACCOUNT_ADDRESS1, @@ -1242,11 +1242,11 @@ describe('pnpService', () => { signerDB4 = await initSignerDatabase(signerConfig, signerMigrationsPath) signerDB5 = await initSignerDatabase(signerConfig, signerMigrationsPath) - signer1 = startSigner(signerConfig, signerDB1, keyProvider1).listen(3001) - signer2 = startSigner(signerConfig, signerDB2, keyProvider2).listen(3002) - signer3 = startSigner(signerConfig, signerDB3, keyProvider3).listen(3003) - signer4 = startSigner(signerConfig, signerDB4, keyProvider4).listen(3004) - signer5 = startSigner(signerConfig, signerDB5, keyProvider5).listen(3005) + signer1 = startSigner(signerConfig, signerDB1, keyProvider1, mockKit).listen(3001) + signer2 = startSigner(signerConfig, signerDB2, keyProvider2, mockKit).listen(3002) + signer3 = startSigner(signerConfig, signerDB3, keyProvider3, mockKit).listen(3003) + signer4 = startSigner(signerConfig, signerDB4, keyProvider4, mockKit).listen(3004) + signer5 = startSigner(signerConfig, signerDB5, keyProvider5, mockKit).listen(3005) userSeed = new Uint8Array(32) for (let i = 0; i < userSeed.length - 1; i++) { @@ -1258,16 +1258,16 @@ describe('pnpService', () => { }) afterEach(async () => { - await signerDB1?.destroy() - await signerDB2?.destroy() - await signerDB3?.destroy() - await signerDB4?.destroy() - await signerDB5?.destroy() await serverClose(signer1) await serverClose(signer2) await serverClose(signer3) await serverClose(signer4) await serverClose(signer5) + await signerDB1?.destroy() + await signerDB2?.destroy() + await signerDB3?.destroy() + await signerDB4?.destroy() + await signerDB5?.destroy() }) it('Should respond with 200 on valid request', async () => { @@ -1283,7 +1283,6 @@ describe('pnpService', () => { signature: res.body.signature, performedQueryCount: 1, totalQuota: expectedTotalQuota, - warnings: [], }) threshold_bls.unblind( diff --git a/packages/phone-number-privacy/signer/.env b/packages/phone-number-privacy/signer/.env index 8dfa0ea6050..1e91f1b99a4 100644 --- a/packages/phone-number-privacy/signer/.env +++ b/packages/phone-number-privacy/signer/.env @@ -32,7 +32,7 @@ ALFAJORES_ODIS_BLOCKCHAIN_PROVIDER=https://alfajores-forno.celo-testnet.org MAINNET_ODIS_BLOCKCHAIN_PROVIDER=https://forno.celo.org ODIS_DOMAINS_TEST_KEY_VERSION=1 ODIS_PNP_TEST_KEY_VERSION=1 -DEPLOYED_SIGNER_SERVICE_VERSION=3.0.0-beta.16 +DEPLOYED_SIGNER_SERVICE_VERSION=3.0.0 # PUBKEYS STAGING_DOMAINS_PUBKEY=7FsWGsFnmVvRfMDpzz95Np76wf/1sPaK0Og9yiB+P8QbjiC8FV67NBans9hzZEkBaQMhiapzgMR6CkZIZPvgwQboAxl65JWRZecGe5V3XO4sdKeNemdAZ2TzQuWkuZoA ALFAJORES_DOMAINS_PUBKEY=+ZrxyPvLChWUX/DyPw6TuGwQH0glDJEbSrSxUARyP5PuqYyP/U4WZTV1e0bAUioBZ6QCJMiLpDwTaFvy8VnmM5RBbLQUMrMg5p4+CBCqj6HhsMfcyUj8V0LyuNdStlCB diff --git a/packages/phone-number-privacy/signer/package.json b/packages/phone-number-privacy/signer/package.json index 8cef02e01d0..f7d4806b8a5 100644 --- a/packages/phone-number-privacy/signer/package.json +++ b/packages/phone-number-privacy/signer/package.json @@ -1,6 +1,6 @@ { "name": "@celo/phone-number-privacy-signer", - "version": "3.0.0-beta.17-dev", + "version": "3.0.1-dev", "description": "Signing participator of ODIS", "author": "Celo", "license": "Apache-2.0", @@ -27,10 +27,8 @@ "test:e2e:alfajores:1": "CONTEXT_NAME=alfajores ODIS_SIGNER_SERVICE_URL=https://odis-alfajores-signer-1-b.azurefd.net yarn test:e2e", "test:e2e:alfajores:2": "CONTEXT_NAME=alfajores ODIS_SIGNER_SERVICE_URL=https://odis-alfajores-signer2.azurefd.net yarn test:e2e", "test:e2e:alfajores:3": "CONTEXT_NAME=alfajores ODIS_SIGNER_SERVICE_URL=https://odis-alfajores-signer3.azurefd.net yarn test:e2e", - "test:e2e:mainnet:westus2": "CONTEXT_NAME=mainnet ODIS_SIGNER_SERVICE_URL=https://mainnet-pgpnp-westus2.azurefd.net yarn test:e2e", "test:e2e:mainnet:brazilsouth": "CONTEXT_NAME=mainnet ODIS_SIGNER_SERVICE_URL=https://mainnet-pgpnp-brazilsouth.azurefd.net yarn test:e2e", "test:e2e:mainnet:eastasia": "CONTEXT_NAME=mainnet ODIS_SIGNER_SERVICE_URL=https://mainnet-pgpnp-eastasia.azurefd.net yarn test:e2e", - "test:e2e:mainnet:westeurope": "CONTEXT_NAME=mainnet ODIS_SIGNER_SERVICE_URL=https://mainnet-pgpnp-westeurope.azurefd.net yarn test:e2e", "test:signer:mainnet": "MAINNET_ODIS_BLOCKCHAIN_PROVIDER=https://alfajores-forno.celo-testnet.org CONTEXT_NAME=mainnet yarn jest test/end-to-end -t='\\[Signer configuration test\\]'", "db:migrate": "ts-node scripts/run-migrations.ts", "db:migrate:make": "knex --migrations-directory ./src/common/database/migrations migrate:make -x ts", @@ -68,6 +66,7 @@ "lru-cache": "^10.0.1" }, "devDependencies": { + "@types/node": "18.15.13", "@types/express": "^4.17.6", "@types/supertest": "^2.0.12", "sqlite3": "^5.0.8", diff --git a/yarn.lock b/yarn.lock index 1d94ed08576..bc941833aaa 100644 --- a/yarn.lock +++ b/yarn.lock @@ -6448,7 +6448,7 @@ dependencies: "@types/node" "*" -"@types/node@*", "@types/node@>=12.12.47", "@types/node@>=13.7.0", "@types/node@^18.7.16": +"@types/node@*", "@types/node@18.15.13", "@types/node@>=12.12.47", "@types/node@>=13.7.0", "@types/node@^18.7.16": version "18.15.13" resolved "https://registry.yarnpkg.com/@types/node/-/node-18.15.13.tgz#f64277c341150c979e42b00e4ac289290c9df469" integrity sha512-N+0kuo9KgrUQ1Sn/ifDXsvg0TTleP7rIy4zOBGECxAljqvqfqpTfzx0Q1NUedOixRMBfe2Whhb056a42cWs26Q== From 619ae9dc5ea2dc4f850dc805ad7c18e8040ddf9d Mon Sep 17 00:00:00 2001 From: Alec Schaefer Date: Wed, 6 Sep 2023 10:24:35 -0400 Subject: [PATCH 11/31] Odis Signer 3.0.1 (#10543) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Change signer timeout * signer only published dependencies * fix lint error * combiner depends on published versions for CI checks to pass * Catch socket closed event * add logging and metric for closed connection * point back to published dependencies * point dockerfile back to unpublished dependencies * Revert "point dockerfile back to unpublished dependencies" This reverts commit 1eb25eb350b18c23eb3f39f8dbf3a535f9efc1ed. * Revert "point back to published dependencies" This reverts commit 3b25f51d63c06f414ac4026d2023ac0b01381e1c. * bump version to beta.2 * ∆ to socket.destroyed * ++ debug logging * ++ more logging * ++ abort listeners * reverted to simple connection close * removed extra log * adjust signer version * point back to unpublished dependencies --------- Co-authored-by: Gaston Ponti Co-authored-by: soloseng <102702451+soloseng@users.noreply.github.com> --- packages/phone-number-privacy/signer/.env | 2 +- .../phone-number-privacy/signer/package.json | 2 +- .../signer/src/common/handler.ts | 74 ++++++++++++------- .../signer/src/common/metrics.ts | 4 + .../phone-number-privacy/signer/src/server.ts | 6 +- 5 files changed, 59 insertions(+), 29 deletions(-) diff --git a/packages/phone-number-privacy/signer/.env b/packages/phone-number-privacy/signer/.env index 1e91f1b99a4..17849657cdd 100644 --- a/packages/phone-number-privacy/signer/.env +++ b/packages/phone-number-privacy/signer/.env @@ -32,7 +32,7 @@ ALFAJORES_ODIS_BLOCKCHAIN_PROVIDER=https://alfajores-forno.celo-testnet.org MAINNET_ODIS_BLOCKCHAIN_PROVIDER=https://forno.celo.org ODIS_DOMAINS_TEST_KEY_VERSION=1 ODIS_PNP_TEST_KEY_VERSION=1 -DEPLOYED_SIGNER_SERVICE_VERSION=3.0.0 +DEPLOYED_SIGNER_SERVICE_VERSION=3.0.1 # PUBKEYS STAGING_DOMAINS_PUBKEY=7FsWGsFnmVvRfMDpzz95Np76wf/1sPaK0Og9yiB+P8QbjiC8FV67NBans9hzZEkBaQMhiapzgMR6CkZIZPvgwQboAxl65JWRZecGe5V3XO4sdKeNemdAZ2TzQuWkuZoA ALFAJORES_DOMAINS_PUBKEY=+ZrxyPvLChWUX/DyPw6TuGwQH0glDJEbSrSxUARyP5PuqYyP/U4WZTV1e0bAUioBZ6QCJMiLpDwTaFvy8VnmM5RBbLQUMrMg5p4+CBCqj6HhsMfcyUj8V0LyuNdStlCB diff --git a/packages/phone-number-privacy/signer/package.json b/packages/phone-number-privacy/signer/package.json index f7d4806b8a5..c7f9e5b59fe 100644 --- a/packages/phone-number-privacy/signer/package.json +++ b/packages/phone-number-privacy/signer/package.json @@ -1,6 +1,6 @@ { "name": "@celo/phone-number-privacy-signer", - "version": "3.0.1-dev", + "version": "3.0.2-dev", "description": "Signing participator of ODIS", "author": "Celo", "license": "Apache-2.0", diff --git a/packages/phone-number-privacy/signer/src/common/handler.ts b/packages/phone-number-privacy/signer/src/common/handler.ts index 23ed6252116..4efad1e381b 100644 --- a/packages/phone-number-privacy/signer/src/common/handler.ts +++ b/packages/phone-number-privacy/signer/src/common/handler.ts @@ -95,7 +95,7 @@ export function meteringHandler( histogram: client.Histogram, handler: PromiseHandler ): PromiseHandler { - return (req, res) => newMeter(histogram, req.url)(() => handler(req, res)) + return (req, res) => newMeter(histogram, req.url)(async () => handler(req, res)) } export function timeoutHandler( @@ -103,17 +103,33 @@ export function timeoutHandler( handler: PromiseHandler ): PromiseHandler { return async (req, res) => { - const timeoutSignal = (AbortSignal as any).timeout(timeoutMs) - timeoutSignal.addEventListener( - 'abort', - () => { - if (!res.headersSent) { - Counters.timeouts.inc() - sendFailure(ErrorMessage.TIMEOUT_FROM_SIGNER, 500, res, req.url) - } - }, - { once: true } - ) + const timeoutId = setTimeout(() => { + if (!res.headersSent) { + Counters.timeouts.inc() + sendFailure(ErrorMessage.TIMEOUT_FROM_SIGNER, 500, res, req.url) + } + }, timeoutMs) + + try { + await handler(req, res) + } finally { + // Clears the timeout if it answers first + clearTimeout(timeoutId) + } + } +} + +export function connectionClosedHandler( + handler: PromiseHandler +): PromiseHandler { + return async (req, res) => { + req.on('close', () => { + if (res.socket?.destroyed) { + res.locals.logger.info('connection closed') + Counters.connectionClosed.inc() + res.end() + } + }) await handler(req, res) } @@ -141,8 +157,11 @@ export function resultHandler( ): PromiseHandler { return async (req, res) => { const result = await resHandler(req, res) - send(res, result.body, result.status, res.locals.logger) - Counters.responses.labels(req.url, result.status.toString()).inc() + // Check if the response was ended + if (!res.writableEnded) { + send(res, result.body, result.status, res.locals.logger) + Counters.responses.labels(req.url, result.status.toString()).inc() + } } } @@ -170,16 +189,19 @@ function sendFailure( endpoint: string, body?: Record // TODO remove any ) { - send( - response, - { - success: false, - version: getSignerVersion(), - error, - ...body, - }, - status, - response.locals.logger - ) - Counters.responses.labels(endpoint, status.toString()).inc() + // Check if the response was ended + if (!response.writableEnded) { + send( + response, + { + success: false, + version: getSignerVersion(), + error, + ...body, + }, + status, + response.locals.logger + ) + Counters.responses.labels(endpoint, status.toString()).inc() + } } diff --git a/packages/phone-number-privacy/signer/src/common/metrics.ts b/packages/phone-number-privacy/signer/src/common/metrics.ts index 2c009cabab3..311509ede6e 100644 --- a/packages/phone-number-privacy/signer/src/common/metrics.ts +++ b/packages/phone-number-privacy/signer/src/common/metrics.ts @@ -60,6 +60,10 @@ export const Counters = { name: 'errors_thrown_after_response_sent', help: 'Counter for the number of errors thrown after a response was already sent', }), + connectionClosed: new Counter({ + name: 'connection_closed', + help: 'Counter for the number of closed connections caught in Signer', + }), } const buckets = [ 0.001, 0.01, 0.1, 0.2, 0.3, 0.5, 0.6, 0.7, 0.8, 0.9, 1, 1.2, 1.4, 1.6, 1.8, 2, 2.3, 2.6, 2.9, 3.5, diff --git a/packages/phone-number-privacy/signer/src/server.ts b/packages/phone-number-privacy/signer/src/server.ts index 56978ac66ca..2933cf7c229 100644 --- a/packages/phone-number-privacy/signer/src/server.ts +++ b/packages/phone-number-privacy/signer/src/server.ts @@ -14,6 +14,7 @@ import { IncomingMessage, ServerResponse } from 'node:http' import * as PromClient from 'prom-client' import { catchErrorHandler, + connectionClosedHandler, disabledHandler, Locals, meteringHandler, @@ -144,7 +145,10 @@ function createHandler( tracingHandler( meteringHandler( Histograms.responseLatency, - timeoutHandler(timeoutMs, enabled ? resultHandler(action) : disabledHandler) + timeoutHandler( + timeoutMs, + enabled ? connectionClosedHandler(resultHandler(action)) : disabledHandler + ) ) ) ) From 66b1fb3755f90fd73593b40e2a121ed8343e9c3b Mon Sep 17 00:00:00 2001 From: Gaston Ponti Date: Thu, 7 Sep 2023 00:45:33 -0300 Subject: [PATCH 12/31] Refactor combiner (#10533) * Refactor combiner * Remove combiner timeouts * fix lint --------- Co-authored-by: Alec Schaefer --- .../combiner/src/common/error.ts | 19 +++ .../combiner/src/common/handlers.ts | 141 ++++++++++++++++-- .../combiner/src/common/io.ts | 19 +-- .../src/domain/endpoints/disable/action.ts | 29 ++-- .../src/domain/endpoints/quota/action.ts | 28 ++-- .../src/domain/endpoints/sign/action.ts | 30 ++-- .../combiner/src/index.ts | 4 +- .../src/pnp/endpoints/quota/action.ts | 33 ++-- .../combiner/src/pnp/endpoints/sign/action.ts | 34 ++--- .../combiner/src/server.ts | 63 +++++--- 10 files changed, 254 insertions(+), 146 deletions(-) create mode 100644 packages/phone-number-privacy/combiner/src/common/error.ts diff --git a/packages/phone-number-privacy/combiner/src/common/error.ts b/packages/phone-number-privacy/combiner/src/common/error.ts new file mode 100644 index 00000000000..91060f23691 --- /dev/null +++ b/packages/phone-number-privacy/combiner/src/common/error.ts @@ -0,0 +1,19 @@ +import { ErrorType } from '@celo/phone-number-privacy-common' + +export class OdisError extends Error { + constructor(readonly code: ErrorType, readonly parent?: Error, readonly status: number = 500) { + // This is necessary when extending Error Classes + super(code) // 'Error' breaks prototype chain here + Object.setPrototypeOf(this, new.target.prototype) // restore prototype chain + } +} + +export function wrapError( + valueOrError: Promise, + code: ErrorType, + status: number = 500 +): Promise { + return valueOrError.catch((parentErr) => { + throw new OdisError(code, parentErr, status) + }) +} diff --git a/packages/phone-number-privacy/combiner/src/common/handlers.ts b/packages/phone-number-privacy/combiner/src/common/handlers.ts index ac0872993bf..a8323540fcd 100644 --- a/packages/phone-number-privacy/combiner/src/common/handlers.ts +++ b/packages/phone-number-privacy/combiner/src/common/handlers.ts @@ -1,13 +1,23 @@ import { ErrorMessage, + ErrorType, OdisRequest, OdisResponse, + PnpQuotaStatus, + send, + // tslint:disable-next-line: ordered-imports + SequentialDelayDomainState, WarningMessage, } from '@celo/phone-number-privacy-common' +import opentelemetry, { SpanStatusCode } from '@opentelemetry/api' +import { SemanticAttributes } from '@opentelemetry/semantic-conventions' import Logger from 'bunyan' import { Request, Response } from 'express' import { performance, PerformanceObserver } from 'perf_hooks' -import { sendFailure } from './io' +import { getCombinerVersion } from '../config' +import { OdisError } from './error' + +const tracer = opentelemetry.trace.getTracer('combiner-tracer') export interface Locals { logger: Logger @@ -18,24 +28,22 @@ export type PromiseHandler = ( res: Response, Locals> ) => Promise -type ParentHandler = (req: Request<{}, {}, any>, res: Response) => Promise - export function catchErrorHandler( handler: PromiseHandler -): ParentHandler { +): PromiseHandler { return async (req, res) => { - const logger: Logger = res.locals.logger try { await handler(req, res) } catch (err) { + const logger: Logger = res.locals.logger logger.error(ErrorMessage.CAUGHT_ERROR_IN_ENDPOINT_HANDLER) logger.error(err) if (!res.headersSent) { - logger.info('Responding with error in outer endpoint handler') - res.status(500).json({ - success: false, - error: ErrorMessage.UNKNOWN_ERROR, - }) + if (err instanceof OdisError) { + sendFailure(err.code, err.status, res, req.url) + } else { + sendFailure(ErrorMessage.UNKNOWN_ERROR, 500, res, req.url) + } } else { logger.error(ErrorMessage.ERROR_AFTER_RESPONSE_SENT) } @@ -43,6 +51,39 @@ export function catchErrorHandler( } } +export function tracingHandler( + handler: PromiseHandler +): PromiseHandler { + return async (req, res) => { + return tracer.startActiveSpan( + req.url, + { + attributes: { + [SemanticAttributes.HTTP_ROUTE]: req.path, + [SemanticAttributes.HTTP_METHOD]: req.method, + [SemanticAttributes.HTTP_CLIENT_IP]: req.ip, + }, + }, + async (span) => { + try { + await handler(req, res) + span.setStatus({ + code: SpanStatusCode.OK, + }) + } catch (err: any) { + span.setStatus({ + code: SpanStatusCode.ERROR, + message: err instanceof Error ? err.message : 'Fail', + }) + throw err + } finally { + span.end() + } + } + ) + } +} + export function meteringHandler( handler: PromiseHandler ): PromiseHandler { @@ -86,9 +127,85 @@ export function meteringHandler( } } +export function timeoutHandler( + timeoutMs: number, + handler: PromiseHandler +): PromiseHandler { + return async (req, res) => { + const timeoutSignal = (AbortSignal as any).timeout(timeoutMs) + timeoutSignal.addEventListener( + 'abort', + () => { + if (!res.headersSent) { + sendFailure(ErrorMessage.TIMEOUT_FROM_SIGNER, 500, res, req.url) + } + }, + { once: true } + ) + + await handler(req, res) + } +} + export async function disabledHandler( - _: Request<{}, {}, R>, + req: Request<{}, {}, R>, response: Response, Locals> ): Promise { - sendFailure(WarningMessage.API_UNAVAILABLE, 503, response) + sendFailure(WarningMessage.API_UNAVAILABLE, 503, response, req.url) +} + +export function sendFailure( + error: ErrorType, + status: number, + response: Response, + _endpoint: string, + body?: Record // TODO remove any +) { + send( + response, + { + success: false, + version: getCombinerVersion(), + error, + ...body, + }, + status, + response.locals.logger + ) +} + +export interface Result { + status: number + body: OdisResponse +} + +export type ResultHandler = ( + request: Request<{}, {}, R>, + res: Response, Locals> +) => Promise> + +export function resultHandler( + resHandler: ResultHandler +): PromiseHandler { + return async (req, res) => { + const result = await resHandler(req, res) + send(res, result.body, result.status, res.locals.logger) + } +} + +export function errorResult( + status: number, + error: string, + quotaStatus?: PnpQuotaStatus | { status: SequentialDelayDomainState } +): Result { + // TODO remove any + return { + status, + body: { + success: false, + version: getCombinerVersion(), + error, + ...quotaStatus, + }, + } } diff --git a/packages/phone-number-privacy/combiner/src/common/io.ts b/packages/phone-number-privacy/combiner/src/common/io.ts index c43b81f7066..22dfd6a8089 100644 --- a/packages/phone-number-privacy/combiner/src/common/io.ts +++ b/packages/phone-number-privacy/combiner/src/common/io.ts @@ -1,21 +1,19 @@ import { - ErrorType, getRequestKeyVersion, KEY_VERSION_HEADER, KeyVersionInfo, OdisRequest, OdisResponse, requestHasValidKeyVersion, - send, SignerEndpoint, } from '@celo/phone-number-privacy-common' import Logger from 'bunyan' -import { Request, Response } from 'express' +import { Request } from 'express' import * as http from 'http' import * as https from 'https' import fetch, { Response as FetchResponse } from 'node-fetch' import { performance } from 'perf_hooks' -import { getCombinerVersion, OdisConfig } from '../config' +import { OdisConfig } from '../config' import { isAbortError, Signer } from './combine' const httpAgent = new http.Agent({ keepAlive: true }) @@ -116,16 +114,3 @@ async function measureTime(name: string, fn: () => Promise): Promise { performance.measure(name, start, end) } } - -export function sendFailure(error: ErrorType, status: number, response: Response) { - send( - response, - { - success: false, - version: getCombinerVersion(), - error, - }, - status, - response.locals.logger - ) -} diff --git a/packages/phone-number-privacy/combiner/src/domain/endpoints/disable/action.ts b/packages/phone-number-privacy/combiner/src/domain/endpoints/disable/action.ts index 8427bdee30f..2de518eba55 100644 --- a/packages/phone-number-privacy/combiner/src/domain/endpoints/disable/action.ts +++ b/packages/phone-number-privacy/combiner/src/domain/endpoints/disable/action.ts @@ -6,31 +6,28 @@ import { DomainSchema, ErrorMessage, getSignerEndpoint, - send, SequentialDelayDomainStateSchema, verifyDisableDomainRequestAuthenticity, WarningMessage, } from '@celo/phone-number-privacy-common' import { Signer, thresholdCallToSigners } from '../../../common/combine' -import { PromiseHandler } from '../../../common/handlers' -import { getKeyVersionInfo, sendFailure } from '../../../common/io' +import { errorResult, ResultHandler } from '../../../common/handlers' +import { getKeyVersionInfo } from '../../../common/io' import { getCombinerVersion, OdisConfig } from '../../../config' import { logDomainResponseDiscrepancies } from '../../services/log-responses' import { findThresholdDomainState } from '../../services/threshold-state' -export function createDisableDomainHandler( +export function disableDomain( signers: Signer[], config: OdisConfig -): PromiseHandler { +): ResultHandler { return async (request, response) => { if (!disableDomainRequestSchema(DomainSchema).is(request.body)) { - sendFailure(WarningMessage.INVALID_INPUT, 400, response) - return + return errorResult(400, WarningMessage.INVALID_INPUT) } if (!verifyDisableDomainRequestAuthenticity(request.body)) { - sendFailure(WarningMessage.UNAUTHENTICATED_USER, 401, response) - return + return errorResult(401, WarningMessage.UNAUTHENTICATED_USER) } // TODO remove? @@ -57,18 +54,14 @@ export function createDisableDomainHandler( signers.length ) if (disableDomainStatus.disabled) { - send( - response, - { + return { + status: 200, + body: { success: true, version: getCombinerVersion(), status: disableDomainStatus, }, - 200, - response.locals.logger - ) - - return + } } } catch (err) { response.locals.logger.error( @@ -77,6 +70,6 @@ export function createDisableDomainHandler( ) } - sendFailure(ErrorMessage.THRESHOLD_DISABLE_DOMAIN_FAILURE, maxErrorCode ?? 500, response) + return errorResult(maxErrorCode ?? 500, ErrorMessage.THRESHOLD_DISABLE_DOMAIN_FAILURE) } } diff --git a/packages/phone-number-privacy/combiner/src/domain/endpoints/quota/action.ts b/packages/phone-number-privacy/combiner/src/domain/endpoints/quota/action.ts index 8d80ee871a5..8112f598a25 100644 --- a/packages/phone-number-privacy/combiner/src/domain/endpoints/quota/action.ts +++ b/packages/phone-number-privacy/combiner/src/domain/endpoints/quota/action.ts @@ -6,31 +6,28 @@ import { DomainSchema, ErrorMessage, getSignerEndpoint, - send, SequentialDelayDomainStateSchema, verifyDomainQuotaStatusRequestAuthenticity, WarningMessage, } from '@celo/phone-number-privacy-common' import { Signer, thresholdCallToSigners } from '../../../common/combine' -import { PromiseHandler } from '../../../common/handlers' -import { getKeyVersionInfo, sendFailure } from '../../../common/io' +import { errorResult, ResultHandler } from '../../../common/handlers' +import { getKeyVersionInfo } from '../../../common/io' import { getCombinerVersion, OdisConfig } from '../../../config' import { logDomainResponseDiscrepancies } from '../../services/log-responses' import { findThresholdDomainState } from '../../services/threshold-state' -export function createDomainQuotaHandler( +export function domainQuota( signers: Signer[], config: OdisConfig -): PromiseHandler { +): ResultHandler { return async (request, response) => { if (!domainQuotaStatusRequestSchema(DomainSchema).is(request.body)) { - sendFailure(WarningMessage.INVALID_INPUT, 400, response) - return + return errorResult(400, WarningMessage.INVALID_INPUT) } if (!verifyDomainQuotaStatusRequestAuthenticity(request.body)) { - sendFailure(WarningMessage.UNAUTHENTICATED_USER, 401, response) - return + return errorResult(401, WarningMessage.UNAUTHENTICATED_USER) } // TODO remove? @@ -49,21 +46,18 @@ export function createDomainQuotaHandler( logDomainResponseDiscrepancies(response.locals.logger, signerResponses) if (signerResponses.length >= keyVersionInfo.threshold) { try { - send( - response, - { + return { + status: 200, + body: { success: true, version: getCombinerVersion(), status: findThresholdDomainState(keyVersionInfo, signerResponses, signers.length), }, - 200, - response.locals.logger - ) - return + } } catch (err) { response.locals.logger.error(err, 'Error combining signer quota status responses') } } - sendFailure(ErrorMessage.THRESHOLD_DOMAIN_QUOTA_STATUS_FAILURE, maxErrorCode ?? 500, response) + return errorResult(maxErrorCode ?? 500, ErrorMessage.THRESHOLD_DOMAIN_QUOTA_STATUS_FAILURE) } } diff --git a/packages/phone-number-privacy/combiner/src/domain/endpoints/sign/action.ts b/packages/phone-number-privacy/combiner/src/domain/endpoints/sign/action.ts index fe4ba2c59dc..d696c2f4a06 100644 --- a/packages/phone-number-privacy/combiner/src/domain/endpoints/sign/action.ts +++ b/packages/phone-number-privacy/combiner/src/domain/endpoints/sign/action.ts @@ -8,7 +8,6 @@ import { ErrorType, getSignerEndpoint, OdisResponse, - send, SequentialDelayDomainStateSchema, verifyDomainRestrictedSignatureRequestAuthenticity, WarningMessage, @@ -16,34 +15,31 @@ import { import assert from 'node:assert' import { Signer, thresholdCallToSigners } from '../../../common/combine' import { DomainCryptoClient } from '../../../common/crypto-clients/domain-crypto-client' -import { PromiseHandler } from '../../../common/handlers' -import { getKeyVersionInfo, requestHasSupportedKeyVersion, sendFailure } from '../../../common/io' +import { errorResult, ResultHandler } from '../../../common/handlers' +import { getKeyVersionInfo, requestHasSupportedKeyVersion } from '../../../common/io' import { getCombinerVersion, OdisConfig } from '../../../config' import { logDomainResponseDiscrepancies } from '../../services/log-responses' import { findThresholdDomainState } from '../../services/threshold-state' -export function createDomainSignHandler( +export function domainSign( signers: Signer[], config: OdisConfig -): PromiseHandler { +): ResultHandler { return async (request, response) => { const { logger } = response.locals if (!domainRestrictedSignatureRequestSchema(DomainSchema).is(request.body)) { - sendFailure(WarningMessage.INVALID_INPUT, 400, response) - return + return errorResult(400, WarningMessage.INVALID_INPUT) } if (!requestHasSupportedKeyVersion(request, config, logger)) { - sendFailure(WarningMessage.INVALID_KEY_VERSION_REQUEST, 400, response) - return + return errorResult(400, WarningMessage.INVALID_KEY_VERSION_REQUEST) } // Note that signing requests may include a nonce for replay protection that will be checked by // the signer, but is not checked here. As a result, requests that pass the authentication check // here may still fail when sent to the signer. if (!verifyDomainRestrictedSignatureRequestAuthenticity(request.body)) { - sendFailure(WarningMessage.UNAUTHENTICATED_USER, 401, response) - return + return errorResult(401, WarningMessage.UNAUTHENTICATED_USER) } const keyVersionInfo = getKeyVersionInfo(request, config, logger) @@ -96,17 +92,15 @@ export function createDomainSignHandler( logger ) - return send( - response, - { + return { + status: 200, + body: { success: true, version: getCombinerVersion(), signature: combinedSignature, status: findThresholdDomainState(keyVersionInfo, signerResponses, signers.length), }, - 200, - response.locals.logger - ) + } } catch (err) { // May fail upon combining signatures if too many sigs are invalid logger.error('Combining signatures failed in combine') @@ -117,7 +111,7 @@ export function createDomainSignHandler( const errorCode = maxErrorCode ?? 500 const error = errorCodeToError(errorCode) - sendFailure(error, errorCode, response) + return errorResult(errorCode, error) } } diff --git a/packages/phone-number-privacy/combiner/src/index.ts b/packages/phone-number-privacy/combiner/src/index.ts index 42336c696d9..58d5869bf6b 100644 --- a/packages/phone-number-privacy/combiner/src/index.ts +++ b/packages/phone-number-privacy/combiner/src/index.ts @@ -1,4 +1,3 @@ -import { getContractKitWithAgent } from '@celo/phone-number-privacy-common' import * as functions from 'firebase-functions' import config from './config' import { startCombiner } from './server' @@ -12,5 +11,6 @@ export const combiner = functions // Defined check required for running tests vs. deployment minInstances: functions.config().service ? Number(functions.config().service.min_instances) : 0, }) - .https.onRequest(startCombiner(config, getContractKitWithAgent(config.blockchain))) + .https.onRequest(startCombiner(config)) + export * from './config' diff --git a/packages/phone-number-privacy/combiner/src/pnp/endpoints/quota/action.ts b/packages/phone-number-privacy/combiner/src/pnp/endpoints/quota/action.ts index 8abf37cc48e..64f31e66ba2 100644 --- a/packages/phone-number-privacy/combiner/src/pnp/endpoints/quota/action.ts +++ b/packages/phone-number-privacy/combiner/src/pnp/endpoints/quota/action.ts @@ -9,33 +9,30 @@ import { PnpQuotaRequest, PnpQuotaRequestSchema, PnpQuotaResponseSchema, - send, WarningMessage, } from '@celo/phone-number-privacy-common' import { Request } from 'express' import { Signer, thresholdCallToSigners } from '../../../common/combine' -import { PromiseHandler } from '../../../common/handlers' -import { getKeyVersionInfo, sendFailure } from '../../../common/io' +import { errorResult, ResultHandler } from '../../../common/handlers' +import { getKeyVersionInfo } from '../../../common/io' import { getCombinerVersion, OdisConfig } from '../../../config' import { logPnpSignerResponseDiscrepancies } from '../../services/log-responses' import { findCombinerQuotaState } from '../../services/threshold-state' -export function createPnpQuotaHandler( +export function pnpQuota( signers: Signer[], config: OdisConfig, dekFetcher: DataEncryptionKeyFetcher -): PromiseHandler { +): ResultHandler { return async (request, response) => { const logger = response.locals.logger - if (!validateRequest(request)) { - sendFailure(WarningMessage.INVALID_INPUT, 400, response) - return + if (!isValidRequest(request)) { + return errorResult(400, WarningMessage.INVALID_INPUT) } if (!(await authenticateUser(request, logger, dekFetcher))) { - sendFailure(WarningMessage.UNAUTHENTICATED_USER, 401, response) - return + return errorResult(401, WarningMessage.UNAUTHENTICATED_USER) } // TODO remove this, we shouldn't need keyVersionInfo for non-signing endpoints @@ -57,28 +54,24 @@ export function createPnpQuotaHandler( if (signerResponses.length >= threshold) { try { const quotaStatus = findCombinerQuotaState(keyVersionInfo, signerResponses, warnings) - send( - response, - { + return { + status: 200, + body: { success: true, version: getCombinerVersion(), ...quotaStatus, warnings, }, - 200, - logger - ) - - return + } } catch (err) { logger.error(err, 'Error combining signer quota status responses') } } - sendFailure(ErrorMessage.THRESHOLD_PNP_QUOTA_STATUS_FAILURE, maxErrorCode ?? 500, response) + return errorResult(maxErrorCode ?? 500, ErrorMessage.THRESHOLD_PNP_QUOTA_STATUS_FAILURE) } } -function validateRequest( +function isValidRequest( request: Request<{}, {}, unknown> ): request is Request<{}, {}, PnpQuotaRequest> { return ( diff --git a/packages/phone-number-privacy/combiner/src/pnp/endpoints/sign/action.ts b/packages/phone-number-privacy/combiner/src/pnp/endpoints/sign/action.ts index eb0f9b6f72d..72c97b3a3a1 100644 --- a/packages/phone-number-privacy/combiner/src/pnp/endpoints/sign/action.ts +++ b/packages/phone-number-privacy/combiner/src/pnp/endpoints/sign/action.ts @@ -9,7 +9,6 @@ import { hasValidBlindedPhoneNumberParam, isBodyReasonablySized, OdisResponse, - send, SignMessageRequest, SignMessageRequestSchema, SignMessageResponseSchema, @@ -19,32 +18,29 @@ import { Request } from 'express' import assert from 'node:assert' import { Signer, thresholdCallToSigners } from '../../../common/combine' import { BLSCryptographyClient } from '../../../common/crypto-clients/bls-crypto-client' -import { PromiseHandler } from '../../../common/handlers' -import { getKeyVersionInfo, requestHasSupportedKeyVersion, sendFailure } from '../../../common/io' +import { errorResult, ResultHandler } from '../../../common/handlers' +import { getKeyVersionInfo, requestHasSupportedKeyVersion } from '../../../common/io' import { getCombinerVersion, OdisConfig } from '../../../config' import { logPnpSignerResponseDiscrepancies } from '../../services/log-responses' import { findCombinerQuotaState } from '../../services/threshold-state' -export function createPnpSignHandler( +export function pnpSign( signers: Signer[], config: OdisConfig, dekFetcher: DataEncryptionKeyFetcher -): PromiseHandler { +): ResultHandler { return async (request, response) => { const logger = response.locals.logger - if (!validateRequest(request)) { - sendFailure(WarningMessage.INVALID_INPUT, 400, response) - return + if (!isValidRequest(request)) { + return errorResult(400, WarningMessage.INVALID_INPUT) } if (!requestHasSupportedKeyVersion(request, config, response.locals.logger)) { - sendFailure(WarningMessage.INVALID_KEY_VERSION_REQUEST, 400, response) - return + return errorResult(400, WarningMessage.INVALID_KEY_VERSION_REQUEST) } if (!(await authenticateUser(request, logger, dekFetcher))) { - sendFailure(WarningMessage.UNAUTHENTICATED_USER, 401, response) - return + return errorResult(401, WarningMessage.UNAUTHENTICATED_USER) } const keyVersionInfo = getKeyVersionInfo(request, config, logger) const crypto = new BLSCryptographyClient(keyVersionInfo) @@ -93,18 +89,16 @@ export function createPnpSignHandler( logger ) - return send( - response, - { + return { + status: 200, + body: { success: true, version: getCombinerVersion(), signature: combinedSignature, ...findCombinerQuotaState(keyVersionInfo, signerResponses, warnings), warnings, }, - 200, - logger - ) + } } catch (error) { // May fail upon combining signatures if too many sigs are invalid // Fallback to handleMissingSignatures @@ -114,11 +108,11 @@ export function createPnpSignHandler( const errorCode = maxErrorCode ?? 500 const error = errorCodeToError(errorCode) - sendFailure(error, errorCode, response) + return errorResult(errorCode, error) } } -function validateRequest( +function isValidRequest( request: Request<{}, {}, unknown> ): request is Request<{}, {}, SignMessageRequest> { return ( diff --git a/packages/phone-number-privacy/combiner/src/server.ts b/packages/phone-number-privacy/combiner/src/server.ts index cfb5a24eeed..94ca03ffcf1 100644 --- a/packages/phone-number-privacy/combiner/src/server.ts +++ b/packages/phone-number-privacy/combiner/src/server.ts @@ -1,6 +1,7 @@ import { ContractKit } from '@celo/contractkit' import { CombinerEndpoint, + getContractKitWithAgent, KEY_VERSION_HEADER, loggerMiddleware, newContractKitFetcher, @@ -12,21 +13,26 @@ import { Signer } from './common/combine' import { catchErrorHandler, disabledHandler, + Locals, meteringHandler, - PromiseHandler, + resultHandler, + ResultHandler, + tracingHandler, } from './common/handlers' import { CombinerConfig, getCombinerVersion } from './config' -import { createDisableDomainHandler } from './domain/endpoints/disable/action' -import { createDomainQuotaHandler } from './domain/endpoints/quota/action' -import { createDomainSignHandler } from './domain/endpoints/sign/action' -import { createPnpQuotaHandler } from './pnp/endpoints/quota/action' -import { createPnpSignHandler } from './pnp/endpoints/sign/action' +import { disableDomain } from './domain/endpoints/disable/action' +import { domainQuota } from './domain/endpoints/quota/action' +import { domainSign } from './domain/endpoints/sign/action' +import { pnpQuota } from './pnp/endpoints/quota/action' +import { pnpSign } from './pnp/endpoints/sign/action' require('events').EventEmitter.defaultMaxListeners = 15 -export function startCombiner(config: CombinerConfig, kit: ContractKit) { +export function startCombiner(config: CombinerConfig, kit?: ContractKit) { const logger = rootLogger(config.serviceName) + kit = kit ?? getContractKitWithAgent(config.blockchain) + logger.info('Creating combiner express server') const app = express() @@ -64,26 +70,39 @@ export function startCombiner(config: CombinerConfig, kit: ContractKit) { ) const pnpSigners: Signer[] = JSON.parse(config.phoneNumberPrivacy.odisServices.signers) - const pnpQuota = createPnpQuotaHandler(pnpSigners, config.phoneNumberPrivacy, dekFetcher) - const pnpSign = createPnpSignHandler(pnpSigners, config.phoneNumberPrivacy, dekFetcher) - const domainSigners: Signer[] = JSON.parse(config.domains.odisServices.signers) - const domainQuota = createDomainQuotaHandler(domainSigners, config.domains) - const domainSign = createDomainSignHandler(domainSigners, config.domains) - const domainDisable = createDisableDomainHandler(domainSigners, config.domains) - app.post(CombinerEndpoint.PNP_QUOTA, createHandler(config.phoneNumberPrivacy.enabled, pnpQuota)) - app.post(CombinerEndpoint.PNP_SIGN, createHandler(config.phoneNumberPrivacy.enabled, pnpSign)) - app.post(CombinerEndpoint.DOMAIN_QUOTA_STATUS, createHandler(config.domains.enabled, domainQuota)) - app.post(CombinerEndpoint.DOMAIN_SIGN, createHandler(config.domains.enabled, domainSign)) - app.post(CombinerEndpoint.DISABLE_DOMAIN, createHandler(config.domains.enabled, domainDisable)) + const { domains, phoneNumberPrivacy } = config + + app.post( + CombinerEndpoint.PNP_QUOTA, + createHandler(phoneNumberPrivacy.enabled, pnpQuota(pnpSigners, phoneNumberPrivacy, dekFetcher)) + ) + app.post( + CombinerEndpoint.PNP_SIGN, + createHandler(phoneNumberPrivacy.enabled, pnpSign(pnpSigners, phoneNumberPrivacy, dekFetcher)) + ) + app.post( + CombinerEndpoint.DOMAIN_QUOTA_STATUS, + createHandler(domains.enabled, domainQuota(domainSigners, domains)) + ) + app.post( + CombinerEndpoint.DOMAIN_SIGN, + createHandler(domains.enabled, domainSign(domainSigners, domains)) + ) + app.post( + CombinerEndpoint.DISABLE_DOMAIN, + createHandler(domains.enabled, disableDomain(domainSigners, domains)) + ) return app } -export function createHandler( +function createHandler( enabled: boolean, - handler: PromiseHandler -): PromiseHandler { - return meteringHandler(catchErrorHandler(enabled ? handler : disabledHandler)) + action: ResultHandler +): RequestHandler<{}, {}, R, {}, Locals> { + return catchErrorHandler( + tracingHandler(meteringHandler(enabled ? resultHandler(action) : disabledHandler)) + ) } From 0d433bc6b3bb0845868660281320d0a4fbba3dee Mon Sep 17 00:00:00 2001 From: Nadiem Sissouno <53600650+sissnad@users.noreply.github.com> Date: Thu, 7 Sep 2023 15:00:52 +0200 Subject: [PATCH 13/31] EUROCEUR Oracle Config (#10522) --- packages/helm-charts/oracle/EUROCEUR.yaml | 32 +++++++++++++++++++++++ 1 file changed, 32 insertions(+) create mode 100644 packages/helm-charts/oracle/EUROCEUR.yaml diff --git a/packages/helm-charts/oracle/EUROCEUR.yaml b/packages/helm-charts/oracle/EUROCEUR.yaml new file mode 100644 index 00000000000..32500b5550e --- /dev/null +++ b/packages/helm-charts/oracle/EUROCEUR.yaml @@ -0,0 +1,32 @@ +oracle: + currencyPair: EUROCEUR + aggregation: + mid: + maxExchangeVolumeShare: 1 + maxPercentageDeviation: 0.01 + maxPercentageBidAskSpread: 0.005 + metrics: + enabled: true + prometheusPort: 9090 + apiRequestTimeoutMs: 5000 + circuitBreakerPriceChangeThreshold: 0.25 + gasPriceMultiplier: 1.5 + priceSources: "[ + [ + {exchange: 'COINBASE', symbol: 'EUROCEUR', toInvert: false} + ], + [ + {exchange: 'COINBASE', symbol: 'EUROCUSD', toInvert: false}, + {exchange: 'COINBASE', symbol: 'USDTUSD', toInvert: true}, + {exchange: 'COINBASE', symbol: 'USDTEUR', toInvert: false} + ], + [ + {exchange: 'BITSTAMP', symbol: 'EUROCEUR', toInvert: false}, + ] + + ]" + minPriceSourceCount: 3 + reportStrategy: BLOCK_BASED + reporter: + blockBased: + minReportPriceChangeThreshold: 0.0005 # 0.05% From c4d47913416eb9cb691f93724df224421c3366da Mon Sep 17 00:00:00 2001 From: Alec Schaefer Date: Sat, 9 Sep 2023 10:14:17 -0400 Subject: [PATCH 14/31] Odis Combiner 3.0.0 Release (#10547) * Refactor combiner * Remove combiner timeouts * fix lint * fix combiner e2e tests * point to published dependencies * put auth behind flag * fix config casing * added memory allocation to function * bump version * bump combiner version * switched to dev dependencies * improve signer e2e tests * add mainnet e2e command * add privateKey param to loadTest script * update context name --------- Co-authored-by: Gaston Ponti Co-authored-by: soloseng <102702451+soloseng@users.noreply.github.com> --- .../combiner/package.json | 7 ++- .../combiner/src/config.ts | 7 ++- .../combiner/src/index.ts | 1 + .../src/pnp/endpoints/quota/action.ts | 6 +- .../combiner/src/pnp/endpoints/sign/action.ts | 7 ++- .../combiner/test/end-to-end/pnp.test.ts | 58 ++++++++++++------- .../combiner/test/end-to-end/resources.ts | 4 +- .../phone-number-privacy/monitor/src/query.ts | 12 ++-- .../monitor/src/scripts/run-load-test.ts | 7 ++- .../phone-number-privacy/monitor/src/test.ts | 26 ++++++--- 10 files changed, 90 insertions(+), 45 deletions(-) diff --git a/packages/phone-number-privacy/combiner/package.json b/packages/phone-number-privacy/combiner/package.json index fd432f11a9f..4ad16b5a842 100644 --- a/packages/phone-number-privacy/combiner/package.json +++ b/packages/phone-number-privacy/combiner/package.json @@ -1,6 +1,6 @@ { "name": "@celo/phone-number-privacy-combiner", - "version": "3.0.0-beta.8-dev", + "version": "3.0.1-dev", "description": "Orchestrates and combines threshold signatures for use in ODIS", "author": "Celo", "license": "Apache-2.0", @@ -23,9 +23,10 @@ "test": "jest --runInBand --testPathIgnorePatterns test/end-to-end", "test:coverage": "yarn test --coverage", "test:integration": "jest --runInBand test/integration", - "test:e2e": "jest test/end-to-end --verbose", + "test:e2e": "jest --runInBand test/end-to-end --verbose", "test:e2e:staging": "CONTEXT_NAME=staging yarn test:e2e", - "test:e2e:alfajores": "CONTEXT_NAME=alfajores yarn test:e2e" + "test:e2e:alfajores": "CONTEXT_NAME=alfajores yarn test:e2e", + "test:e2e:mainnet": "CONTEXT_NAME=mainnet yarn test:e2e" }, "dependencies": { "@celo/contractkit": "^4.1.2-dev", diff --git a/packages/phone-number-privacy/combiner/src/config.ts b/packages/phone-number-privacy/combiner/src/config.ts index a1b9829f230..2097dbfb5e2 100644 --- a/packages/phone-number-privacy/combiner/src/config.ts +++ b/packages/phone-number-privacy/combiner/src/config.ts @@ -39,6 +39,7 @@ export interface OdisConfig { fullNodeTimeoutMs: number fullNodeRetryCount: number fullNodeRetryDelayMs: number + shouldAuthenticate: boolean } export interface CombinerConfig { @@ -106,6 +107,7 @@ if (DEV_MODE) { fullNodeTimeoutMs: FULL_NODE_TIMEOUT_IN_MS, fullNodeRetryCount: RETRY_COUNT, fullNodeRetryDelayMs: RETRY_DELAY_IN_MS, + shouldAuthenticate: true, }, domains: { serviceName: defaultServiceName, @@ -140,6 +142,7 @@ if (DEV_MODE) { fullNodeTimeoutMs: FULL_NODE_TIMEOUT_IN_MS, fullNodeRetryCount: RETRY_COUNT, fullNodeRetryDelayMs: RETRY_DELAY_IN_MS, + shouldAuthenticate: true, }, } } else { @@ -168,6 +171,7 @@ if (DEV_MODE) { fullNodeRetryDelayMs: Number( functionConfig.pnp.full_node_retry_delay_ms ?? RETRY_DELAY_IN_MS ), + shouldAuthenticate: toBool(functionConfig.pnp.should_authenticate, true), }, domains: { serviceName: functionConfig.domains.service_name ?? defaultServiceName, @@ -182,11 +186,12 @@ if (DEV_MODE) { currentVersion: Number(functionConfig.domains_keys.current_version), versions: functionConfig.domains_keys.versions, }, - fullNodeTimeoutMs: Number(functionConfig.pnp.full_node_timeout_ms ?? FULL_NODE_TIMEOUT_IN_MS), + fullNodeTimeoutMs: Number(functionConfig.pnp.full_node_timeout_ms ?? FULL_NODE_TIMEOUT_IN_MS), // TODO refactor config - domains endpoints don't use full node fullNodeRetryCount: Number(functionConfig.pnp.full_node_retry_count ?? RETRY_COUNT), fullNodeRetryDelayMs: Number( functionConfig.pnp.full_node_retry_delay_ms ?? RETRY_DELAY_IN_MS ), + shouldAuthenticate: true, }, } } diff --git a/packages/phone-number-privacy/combiner/src/index.ts b/packages/phone-number-privacy/combiner/src/index.ts index 58d5869bf6b..02297508a86 100644 --- a/packages/phone-number-privacy/combiner/src/index.ts +++ b/packages/phone-number-privacy/combiner/src/index.ts @@ -10,6 +10,7 @@ export const combiner = functions // Keep instances warm for mainnet functions // Defined check required for running tests vs. deployment minInstances: functions.config().service ? Number(functions.config().service.min_instances) : 0, + memory: functions.config().service ? functions.config().service.memory : '512MB', }) .https.onRequest(startCombiner(config)) diff --git a/packages/phone-number-privacy/combiner/src/pnp/endpoints/quota/action.ts b/packages/phone-number-privacy/combiner/src/pnp/endpoints/quota/action.ts index 64f31e66ba2..3f06d1a87b8 100644 --- a/packages/phone-number-privacy/combiner/src/pnp/endpoints/quota/action.ts +++ b/packages/phone-number-privacy/combiner/src/pnp/endpoints/quota/action.ts @@ -31,8 +31,10 @@ export function pnpQuota( return errorResult(400, WarningMessage.INVALID_INPUT) } - if (!(await authenticateUser(request, logger, dekFetcher))) { - return errorResult(401, WarningMessage.UNAUTHENTICATED_USER) + if (config.shouldAuthenticate) { + if (!(await authenticateUser(request, logger, dekFetcher))) { + return errorResult(401, WarningMessage.UNAUTHENTICATED_USER) + } } // TODO remove this, we shouldn't need keyVersionInfo for non-signing endpoints diff --git a/packages/phone-number-privacy/combiner/src/pnp/endpoints/sign/action.ts b/packages/phone-number-privacy/combiner/src/pnp/endpoints/sign/action.ts index 72c97b3a3a1..9109bfc2863 100644 --- a/packages/phone-number-privacy/combiner/src/pnp/endpoints/sign/action.ts +++ b/packages/phone-number-privacy/combiner/src/pnp/endpoints/sign/action.ts @@ -39,9 +39,12 @@ export function pnpSign( return errorResult(400, WarningMessage.INVALID_KEY_VERSION_REQUEST) } - if (!(await authenticateUser(request, logger, dekFetcher))) { - return errorResult(401, WarningMessage.UNAUTHENTICATED_USER) + if (config.shouldAuthenticate) { + if (!(await authenticateUser(request, logger, dekFetcher))) { + return errorResult(401, WarningMessage.UNAUTHENTICATED_USER) + } } + const keyVersionInfo = getKeyVersionInfo(request, config, logger) const crypto = new BLSCryptographyClient(keyVersionInfo) diff --git a/packages/phone-number-privacy/combiner/test/end-to-end/pnp.test.ts b/packages/phone-number-privacy/combiner/test/end-to-end/pnp.test.ts index 4a315aacf20..4dff6569640 100644 --- a/packages/phone-number-privacy/combiner/test/end-to-end/pnp.test.ts +++ b/packages/phone-number-privacy/combiner/test/end-to-end/pnp.test.ts @@ -9,6 +9,7 @@ import { SignMessageRequest, SignMessageResponseSchema, } from '@celo/phone-number-privacy-common' +import { normalizeAddressWith0x } from '@celo/utils/lib/address' import threshold_bls from 'blind-threshold-bls' import { randomBytes } from 'crypto' import 'isomorphic-fetch' @@ -19,10 +20,12 @@ import { ACCOUNT_ADDRESS_NO_QUOTA, BLINDED_PHONE_NUMBER, dekAuthSigner, + deks, getTestContextName, PHONE_NUMBER, walletAuthSigner, } from './resources' +import { sleep } from '@celo/base' const { IdentifierPrefix } = OdisUtils.Identifier @@ -36,9 +39,17 @@ const fullNodeUrl = process.env.ODIS_BLOCKCHAIN_PROVIDER const expectedVersion = getCombinerVersion() -// TODO fix combiner e2e tests - describe(`Running against service deployed at ${combinerUrl} w/ blockchain provider ${fullNodeUrl}`, () => { + beforeAll(async () => { + const accounts = await walletAuthSigner.contractKit.contracts.getAccounts() + const dekPublicKey = normalizeAddressWith0x(deks[0].publicKey) + if ((await accounts.getDataEncryptionKey(ACCOUNT_ADDRESS)) !== dekPublicKey) { + await accounts + .setAccountDataEncryptionKey(dekPublicKey) + .sendAndWaitForReceipt({ from: ACCOUNT_ADDRESS }) + } + }) + it('Service is deployed at correct version', async () => { const response = await fetch(combinerUrl + CombinerEndpoint.STATUS, { method: 'GET', @@ -140,27 +151,30 @@ describe(`Running against service deployed at ${combinerUrl} w/ blockchain provi }) describe(`${CombinerEndpoint.PNP_SIGN}`, () => { - describe('new requests', () => { - beforeAll(async () => { - // Replenish quota for ACCOUNT_ADDRESS - // If this fails, may be necessary to faucet ACCOUNT_ADDRESS more funds - const numQueriesToReplenish = 2 - const amountInWei = signerConfig.quota.queryPriceInCUSD - .times(1e18) - .times(numQueriesToReplenish) - .toString() - const stableToken = await walletAuthSigner.contractKit.contracts.getStableToken( - StableToken.cUSD - ) - const odisPayments = await walletAuthSigner.contractKit.contracts.getOdisPayments() - await stableToken - .approve(odisPayments.address, amountInWei) - .sendAndWaitForReceipt({ from: ACCOUNT_ADDRESS }) - await odisPayments - .payInCUSD(ACCOUNT_ADDRESS, amountInWei) - .sendAndWaitForReceipt({ from: ACCOUNT_ADDRESS }) - }) + beforeAll(async () => { + // Replenish quota for ACCOUNT_ADDRESS + // If this fails, may be necessary to faucet ACCOUNT_ADDRESS more funds + const numQueriesToReplenish = 100 + const amountInWei = signerConfig.quota.queryPriceInCUSD + .times(1e18) + .times(numQueriesToReplenish) + .toString() + const stableToken = await walletAuthSigner.contractKit.contracts.getStableToken( + StableToken.cUSD + ) + const odisPayments = await walletAuthSigner.contractKit.contracts.getOdisPayments() + await stableToken + .approve(odisPayments.address, amountInWei) + .sendAndWaitForReceipt({ from: ACCOUNT_ADDRESS }) + await odisPayments + .payInCUSD(ACCOUNT_ADDRESS, amountInWei) + .sendAndWaitForReceipt({ from: ACCOUNT_ADDRESS }) + // wait for cache to expire and then query to refresh + await sleep(5 * 1000) + await OdisUtils.Quota.getPnpQuotaStatus(ACCOUNT_ADDRESS, dekAuthSigner(0), SERVICE_CONTEXT) + }) + describe('new requests', () => { // Requests made for PHONE_NUMBER from ACCOUNT_ADDRESS & same blinding factor // are replayed from previous test runs (for every run after the very first) let startingPerformedQueryCount: number diff --git a/packages/phone-number-privacy/combiner/test/end-to-end/resources.ts b/packages/phone-number-privacy/combiner/test/end-to-end/resources.ts index c90c4a7b9be..bd93afa69db 100644 --- a/packages/phone-number-privacy/combiner/test/end-to-end/resources.ts +++ b/packages/phone-number-privacy/combiner/test/end-to-end/resources.ts @@ -34,8 +34,8 @@ export const getTestContextName = (): OdisContextName => { export const DEFAULT_FORNO_URL = process.env.ODIS_BLOCKCHAIN_PROVIDER ?? 'https://alfajores-forno.celo-testnet.org' -export const PRIVATE_KEY = '0x1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef' -export const ACCOUNT_ADDRESS = normalizeAddressWith0x(privateKeyToAddress(PRIVATE_KEY)) // 0x1be31a94361a391bbafb2a4ccd704f57dc04d4bb +export const PRIVATE_KEY = '2c63bf6d60b16c8afa13e1069dbe92fef337c23855fff8b27732b3e9c6e7efd4' +export const ACCOUNT_ADDRESS = normalizeAddressWith0x(privateKeyToAddress(PRIVATE_KEY)) // 0x6037800e91eaa703e38bad40c01410bbdf0fea7e export const PRIVATE_KEY_NO_QUOTA = '0x1234567890abcdef1234567890abcdef1234567890abcdef1234567890000000' diff --git a/packages/phone-number-privacy/monitor/src/query.ts b/packages/phone-number-privacy/monitor/src/query.ts index 99b5f221b53..6f3d7851ef5 100644 --- a/packages/phone-number-privacy/monitor/src/query.ts +++ b/packages/phone-number-privacy/monitor/src/query.ts @@ -32,7 +32,8 @@ export const queryOdisForSalt = async ( contextName: OdisContextName, timeoutMs: number = 10000, bypassQuota: boolean = false, - useDEK: boolean = false + useDEK: boolean = false, + privateKey?: string ) => { let authSigner: AuthSigner let accountAddress: string @@ -43,12 +44,12 @@ export const queryOdisForSalt = async ( if (useDEK) { accountAddress = ACCOUNT_ADDRESS - contractKit.connection.addAccount(PRIVATE_KEY) + contractKit.connection.addAccount(privateKey ?? PRIVATE_KEY) contractKit.defaultAccount = accountAddress authSigner = dekAuthSigner(0) phoneNumber = generateRandomPhoneNumber() } else { - const privateKey = await newPrivateKey() + privateKey ??= await newPrivateKey() accountAddress = normalizeAddressWith0x(privateKeyToAddress(privateKey)) contractKit.connection.addAccount(privateKey) contractKit.defaultAccount = accountAddress @@ -90,7 +91,8 @@ export const queryOdisForSalt = async ( export const queryOdisForQuota = async ( blockchainProvider: string, contextName: OdisContextName, - timeoutMs: number = 10000 + timeoutMs: number = 10000, + privateKey?: string ) => { console.log(`contextName: ${contextName}`) // tslint:disable-line:no-console console.log(`blockchain provider: ${blockchainProvider}`) // tslint:disable-line:no-console @@ -98,7 +100,7 @@ export const queryOdisForQuota = async ( const serviceContext = getServiceContext(contextName, OdisAPI.PNP) const contractKit = newKit(blockchainProvider, new LocalWallet()) - const privateKey = await newPrivateKey() + privateKey ??= await newPrivateKey() const accountAddress = normalizeAddressWith0x(privateKeyToAddress(privateKey)) contractKit.connection.addAccount(privateKey) contractKit.defaultAccount = accountAddress diff --git a/packages/phone-number-privacy/monitor/src/scripts/run-load-test.ts b/packages/phone-number-privacy/monitor/src/scripts/run-load-test.ts index fc5dea21dfe..b2023ae7e36 100644 --- a/packages/phone-number-privacy/monitor/src/scripts/run-load-test.ts +++ b/packages/phone-number-privacy/monitor/src/scripts/run-load-test.ts @@ -44,6 +44,10 @@ yargs type: 'number', description: 'number of requests to use when calculating latency moving average', default: 50, + }) + .option('privateKey', { + type: 'string', + description: 'optional private key to send requests from', }), (args) => { if (args.rps == null || args.contextName == null) { @@ -82,7 +86,8 @@ yargs args.duration, args.bypassQuota, args.useDEK, - args.movingAvgRequests + args.movingAvgRequests, + args.privateKey ) // tslint:disable-line:no-floating-promises } ).argv diff --git a/packages/phone-number-privacy/monitor/src/test.ts b/packages/phone-number-privacy/monitor/src/test.ts index 0431f2aedda..a1590406a6b 100644 --- a/packages/phone-number-privacy/monitor/src/test.ts +++ b/packages/phone-number-privacy/monitor/src/test.ts @@ -15,7 +15,8 @@ export async function testPNPSignQuery( contextName: OdisContextName, timeoutMs?: number, bypassQuota?: boolean, - useDEK?: boolean + useDEK?: boolean, + privateKey?: string ) { try { const odisResponse: IdentifierHashDetails = await queryOdisForSalt( @@ -23,7 +24,8 @@ export async function testPNPSignQuery( contextName, timeoutMs, bypassQuota, - useDEK + useDEK, + privateKey ) logger.debug({ odisResponse }, 'ODIS salt request successful. System is healthy.') } catch (err) { @@ -43,14 +45,16 @@ export async function testPNPSignQuery( export async function testPNPQuotaQuery( blockchainProvider: string, contextName: OdisContextName, - timeoutMs?: number + timeoutMs?: number, + privateKey?: string ) { logger.info(`Performing test PNP query for ${CombinerEndpointPNP.PNP_QUOTA}`) try { const odisResponse: PnpClientQuotaStatus = await queryOdisForQuota( blockchainProvider, contextName, - timeoutMs + timeoutMs, + privateKey ) logger.info({ odisResponse }, 'ODIS quota request successful. System is healthy.') } catch (err) { @@ -88,7 +92,8 @@ export async function concurrentRPSLoadTest( duration: number = 0, bypassQuota: boolean = false, useDEK: boolean = false, - movingAverageRequests: number = 50 + movingAverageRequests: number = 50, + privateKey?: string ) { const latencyQueue: number[] = [] let movingAvgLatencySum = 0 @@ -128,8 +133,15 @@ export async function concurrentRPSLoadTest( const testFn = async () => { try { await (endpoint === CombinerEndpointPNP.PNP_SIGN - ? testPNPSignQuery(blockchainProvider, contextName, undefined, bypassQuota, useDEK) - : testPNPQuotaQuery(blockchainProvider, contextName)) + ? testPNPSignQuery( + blockchainProvider, + contextName, + undefined, + bypassQuota, + useDEK, + privateKey + ) + : testPNPQuotaQuery(blockchainProvider, contextName, undefined, privateKey)) } catch (_) { logger.error('load test request failed') } From 2cc7296f1d66d1511099ab6562ac5e37ceeb8bc3 Mon Sep 17 00:00:00 2001 From: Alec Schaefer Date: Mon, 11 Sep 2023 14:24:01 -0400 Subject: [PATCH 15/31] odis load test with private key (#10551) * Refactor combiner * Remove combiner timeouts * fix lint * fix combiner e2e tests * point to published dependencies * put auth behind flag * fix config casing * added memory allocation to function * bump version * bump combiner version * switched to dev dependencies * improve signer e2e tests * add mainnet e2e command * add privateKey param to loadTest script * update context name * add private key arg * ++ logging * with new PK * fix addr bug --------- Co-authored-by: Gaston Ponti Co-authored-by: soloseng <102702451+soloseng@users.noreply.github.com> --- .../phone-number-privacy/monitor/src/query.ts | 24 ++++++++++++----- .../monitor/src/resources.ts | 4 +-- .../monitor/src/scripts/run-load-test.ts | 8 +++++- .../phone-number-privacy/monitor/src/test.ts | 26 ++++++++++++++----- 4 files changed, 45 insertions(+), 17 deletions(-) diff --git a/packages/phone-number-privacy/monitor/src/query.ts b/packages/phone-number-privacy/monitor/src/query.ts index 6f3d7851ef5..955b41c3b5f 100644 --- a/packages/phone-number-privacy/monitor/src/query.ts +++ b/packages/phone-number-privacy/monitor/src/query.ts @@ -18,7 +18,7 @@ import { genSessionID } from '@celo/phone-number-privacy-common/lib/utils/logger import { normalizeAddressWith0x, privateKeyToAddress } from '@celo/utils/lib/address' import { defined } from '@celo/utils/lib/sign-typed-data-utils' import { LocalWallet } from '@celo/wallet-local' -import { ACCOUNT_ADDRESS, dekAuthSigner, generateRandomPhoneNumber, PRIVATE_KEY } from './resources' +import { dekAuthSigner, generateRandomPhoneNumber, PRIVATE_KEY } from './resources' let phoneNumber = fetchEnv('PHONE_NUMBER') @@ -33,7 +33,8 @@ export const queryOdisForSalt = async ( timeoutMs: number = 10000, bypassQuota: boolean = false, useDEK: boolean = false, - privateKey?: string + privateKey?: string, + privateKeyPercentage: number = 100 ) => { let authSigner: AuthSigner let accountAddress: string @@ -43,13 +44,18 @@ export const queryOdisForSalt = async ( const contractKit = newKit(blockchainProvider, new LocalWallet()) if (useDEK) { - accountAddress = ACCOUNT_ADDRESS - contractKit.connection.addAccount(privateKey ?? PRIVATE_KEY) + if (!privateKey || Math.random() > privateKeyPercentage * 0.01) { + privateKey = PRIVATE_KEY + } + contractKit.connection.addAccount(privateKey) + accountAddress = normalizeAddressWith0x(privateKeyToAddress(privateKey)) contractKit.defaultAccount = accountAddress authSigner = dekAuthSigner(0) phoneNumber = generateRandomPhoneNumber() } else { - privateKey ??= await newPrivateKey() + if (!privateKey || Math.random() > privateKeyPercentage * 0.01) { + privateKey = await newPrivateKey() + } accountAddress = normalizeAddressWith0x(privateKeyToAddress(privateKey)) contractKit.connection.addAccount(privateKey) contractKit.defaultAccount = accountAddress @@ -92,7 +98,8 @@ export const queryOdisForQuota = async ( blockchainProvider: string, contextName: OdisContextName, timeoutMs: number = 10000, - privateKey?: string + privateKey?: string, + privateKeyPercentage: number = 100 ) => { console.log(`contextName: ${contextName}`) // tslint:disable-line:no-console console.log(`blockchain provider: ${blockchainProvider}`) // tslint:disable-line:no-console @@ -100,7 +107,10 @@ export const queryOdisForQuota = async ( const serviceContext = getServiceContext(contextName, OdisAPI.PNP) const contractKit = newKit(blockchainProvider, new LocalWallet()) - privateKey ??= await newPrivateKey() + + if (!privateKey || Math.random() > privateKeyPercentage * 0.01) { + privateKey = await newPrivateKey() + } const accountAddress = normalizeAddressWith0x(privateKeyToAddress(privateKey)) contractKit.connection.addAccount(privateKey) contractKit.defaultAccount = accountAddress diff --git a/packages/phone-number-privacy/monitor/src/resources.ts b/packages/phone-number-privacy/monitor/src/resources.ts index b7ca1ef06db..cdd0713da31 100644 --- a/packages/phone-number-privacy/monitor/src/resources.ts +++ b/packages/phone-number-privacy/monitor/src/resources.ts @@ -6,8 +6,8 @@ import { privateKeyToAddress, } from '@celo/utils/lib/address' -export const PRIVATE_KEY = '0x1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef' -export const ACCOUNT_ADDRESS = normalizeAddressWith0x(privateKeyToAddress(PRIVATE_KEY)) // 0x1be31a94361a391bbafb2a4ccd704f57dc04d4bb +export const PRIVATE_KEY = '2c63bf6d60b16c8afa13e1069dbe92fef337c23855fff8b27732b3e9c6e7efd4' +export const ACCOUNT_ADDRESS = normalizeAddressWith0x(privateKeyToAddress(PRIVATE_KEY)) // 0x6037800e91eaa703e38bad40c01410bbdf0fea7e interface DEK { privateKey: string diff --git a/packages/phone-number-privacy/monitor/src/scripts/run-load-test.ts b/packages/phone-number-privacy/monitor/src/scripts/run-load-test.ts index b2023ae7e36..e2b2d09825c 100644 --- a/packages/phone-number-privacy/monitor/src/scripts/run-load-test.ts +++ b/packages/phone-number-privacy/monitor/src/scripts/run-load-test.ts @@ -48,6 +48,11 @@ yargs .option('privateKey', { type: 'string', description: 'optional private key to send requests from', + }) + .option('privateKeyPercentage', { + type: 'number', + description: 'percentage of time to use privateKey, if specified', + default: 100, }), (args) => { if (args.rps == null || args.contextName == null) { @@ -87,7 +92,8 @@ yargs args.bypassQuota, args.useDEK, args.movingAvgRequests, - args.privateKey + args.privateKey, + args.privateKeyPercentage ) // tslint:disable-line:no-floating-promises } ).argv diff --git a/packages/phone-number-privacy/monitor/src/test.ts b/packages/phone-number-privacy/monitor/src/test.ts index a1590406a6b..cd926415321 100644 --- a/packages/phone-number-privacy/monitor/src/test.ts +++ b/packages/phone-number-privacy/monitor/src/test.ts @@ -16,7 +16,8 @@ export async function testPNPSignQuery( timeoutMs?: number, bypassQuota?: boolean, useDEK?: boolean, - privateKey?: string + privateKey?: string, + privateKeyPercentage: number = 100 ) { try { const odisResponse: IdentifierHashDetails = await queryOdisForSalt( @@ -25,7 +26,8 @@ export async function testPNPSignQuery( timeoutMs, bypassQuota, useDEK, - privateKey + privateKey, + privateKeyPercentage ) logger.debug({ odisResponse }, 'ODIS salt request successful. System is healthy.') } catch (err) { @@ -46,7 +48,8 @@ export async function testPNPQuotaQuery( blockchainProvider: string, contextName: OdisContextName, timeoutMs?: number, - privateKey?: string + privateKey?: string, + privateKeyPercentage: number = 100 ) { logger.info(`Performing test PNP query for ${CombinerEndpointPNP.PNP_QUOTA}`) try { @@ -54,7 +57,8 @@ export async function testPNPQuotaQuery( blockchainProvider, contextName, timeoutMs, - privateKey + privateKey, + privateKeyPercentage ) logger.info({ odisResponse }, 'ODIS quota request successful. System is healthy.') } catch (err) { @@ -93,7 +97,8 @@ export async function concurrentRPSLoadTest( bypassQuota: boolean = false, useDEK: boolean = false, movingAverageRequests: number = 50, - privateKey?: string + privateKey?: string, + privateKeyPercentage: number = 100 ) { const latencyQueue: number[] = [] let movingAvgLatencySum = 0 @@ -139,9 +144,16 @@ export async function concurrentRPSLoadTest( undefined, bypassQuota, useDEK, - privateKey + privateKey, + privateKeyPercentage ) - : testPNPQuotaQuery(blockchainProvider, contextName, undefined, privateKey)) + : testPNPQuotaQuery( + blockchainProvider, + contextName, + undefined, + privateKey, + privateKeyPercentage + )) } catch (_) { logger.error('load test request failed') } From 07400b049bc48187c41682a24b84cb2afdb14a5a Mon Sep 17 00:00:00 2001 From: Aaron DeRuvo Date: Tue, 12 Sep 2023 16:43:06 +0200 Subject: [PATCH 16/31] Add support for CIP42 and EIP1559 (#10483) * remove deprecated functions / params for gasPrice / fee currency in kit * improve types / format txs * signing tests, add viem to compare with in tests. * fix type issue, and split the first 12 (not the last 3) * parallelize async calls. * do not extract signer from cip42 txns this doesnt seem to be a very important feature so punting on it to get CK released * update test * revert removal of signer recovery * feedback from sep * add back signer test for faster deving * it works. gandolf rides over the crest as the sun rises blinding the enemy * show error if the rpc caller does not attach * fix binding * lint fix, and remove the call to set FeeMarket (i dont think its actually need as this will happen in tx params normalizer) * cheat and pay with CELO to avoid the ganache issue where when paying in fee token querying for gasPrice give and error due to price lookup having an arg and ganache expecting 0 args * it was never supposed to be like this * why is it gasCurrency here? * add some logging for that bug debug -- dont judge me! * fix but where transfer was not adhering to the gasFeeCurrency flag * fix #10025 js numbers cause impresission * hex must be even * cleanup extra logs / commented out code. * add warning for gatewayfee * add more logging to try to debug test failure * fix test description typos * Dont use custom signing code in protocol test * remove underscore dep * protocol now depends on local wallet * revert back logging to how it was, add back ensure 0x to data if it exists throw an error (like web3 does) if storage key is bad remove temp file for changes (now in PR description) * use named types for address and hex values, mark gateway fee as deprecated fix versioning * publish sdk 5 and pnp-common 3.0.1 * add back dev suffix * use node 18 in container --- .github/workflows/cron-npm-install.yml | 2 +- dependency-graph.json | 3 +- packages/celotool/package.json | 18 +- packages/cli/package.json | 20 +- packages/cli/src/base.ts | 3 - .../releasegold/transfer-dollars.test.ts | 4 + .../commands/releasegold/transfer-dollars.ts | 1 - packages/cli/src/transfer-stable-base.ts | 18 +- packages/env-tests/package.json | 14 +- packages/metadata-crawler/package.json | 6 +- .../combiner/package.json | 14 +- .../phone-number-privacy/common/package.json | 14 +- .../phone-number-privacy/monitor/package.json | 16 +- .../phone-number-privacy/signer/package.json | 14 +- packages/protocol/lib/signing-utils.ts | 84 +-- packages/protocol/lib/web3-utils.ts | 53 +- .../migrations_ts/28_elect_validators.ts | 2 +- packages/protocol/package.json | 12 +- packages/sdk/base/package.json | 2 +- packages/sdk/base/src/address.ts | 5 +- packages/sdk/connect/package.json | 6 +- .../sdk/connect/src/celo-provider.test.ts | 5 +- packages/sdk/connect/src/connection.ts | 71 ++- packages/sdk/connect/src/types.ts | 113 +++- .../sdk/connect/src/utils/formatter.test.ts | 274 ++++++++ packages/sdk/connect/src/utils/formatter.ts | 160 ++++- .../src/utils/tx-params-normalizer.test.ts | 60 +- .../connect/src/utils/tx-params-normalizer.ts | 75 ++- packages/sdk/contractkit/package.json | 12 +- packages/sdk/contractkit/src/kit.test.ts | 54 +- packages/sdk/contractkit/src/kit.ts | 29 - packages/sdk/cryptographic-utils/package.json | 6 +- packages/sdk/encrypted-backup/package.json | 10 +- packages/sdk/explorer/package.json | 10 +- packages/sdk/governance/package.json | 12 +- packages/sdk/identity/package.json | 12 +- packages/sdk/keystores/package.json | 6 +- packages/sdk/network-utils/package.json | 2 +- packages/sdk/phone-utils/package.json | 6 +- packages/sdk/transactions-uri/package.json | 8 +- packages/sdk/utils/package.json | 4 +- .../sdk/wallets/wallet-base/jest.config.js | 5 + packages/sdk/wallets/wallet-base/package.json | 12 +- .../wallet-base/src/signing-utils.test.ts | 602 ++++++++++++++++++ .../wallets/wallet-base/src/signing-utils.ts | 567 ++++++++++++++--- .../wallets/wallet-base/src/wallet-base.ts | 3 +- .../sdk/wallets/wallet-base/tsconfig.json | 1 + .../sdk/wallets/wallet-hsm-aws/package.json | 12 +- .../sdk/wallets/wallet-hsm-azure/package.json | 12 +- .../sdk/wallets/wallet-hsm-gcp/package.json | 12 +- packages/sdk/wallets/wallet-hsm/package.json | 4 +- .../sdk/wallets/wallet-ledger/package.json | 10 +- .../sdk/wallets/wallet-local/package.json | 13 +- .../wallet-local/src/local-wallet.test.ts | 253 +++++++- .../wallets/wallet-local/src/signing.test.ts | 326 ++++++---- .../sdk/wallets/wallet-local/tsconfig.json | 1 + .../sdk/wallets/wallet-remote/package.json | 8 +- packages/sdk/wallets/wallet-rpc/package.json | 12 +- .../sdk/wallets/wallet-rpc/src/rpc-signer.ts | 11 +- .../wallets/wallet-rpc/src/rpc-wallet.test.ts | 22 +- yarn.lock | 242 ++++++- 61 files changed, 2663 insertions(+), 705 deletions(-) create mode 100644 packages/sdk/connect/src/utils/formatter.test.ts create mode 100644 packages/sdk/wallets/wallet-base/jest.config.js create mode 100644 packages/sdk/wallets/wallet-base/src/signing-utils.test.ts diff --git a/.github/workflows/cron-npm-install.yml b/.github/workflows/cron-npm-install.yml index 5ec884dad4b..f4ac8c43d4f 100644 --- a/.github/workflows/cron-npm-install.yml +++ b/.github/workflows/cron-npm-install.yml @@ -15,7 +15,7 @@ jobs: name: ${{ matrix.package }} NPM package install runs-on: ubuntu-latest container: - image: node:14-bullseye + image: node:18-bullseye strategy: fail-fast: false matrix: diff --git a/dependency-graph.json b/dependency-graph.json index aefa286dd8d..0e826914ea7 100644 --- a/dependency-graph.json +++ b/dependency-graph.json @@ -64,7 +64,8 @@ "@celo/cryptographic-utils", "@celo/phone-utils", "@celo/typescript", - "@celo/utils" + "@celo/utils", + "@celo/wallet-local" ] }, "@celo/typescript": { diff --git a/packages/celotool/package.json b/packages/celotool/package.json index 84634320507..42d1976d6c8 100644 --- a/packages/celotool/package.json +++ b/packages/celotool/package.json @@ -6,16 +6,16 @@ "author": "Celo", "license": "Apache-2.0", "dependencies": { - "@celo/base": "4.1.2-dev", - "@celo/connect": "4.1.2-dev", - "@celo/cryptographic-utils": "4.1.2-dev", - "@celo/contractkit": "4.1.2-dev", + "@celo/base": "5.0.3-dev", + "@celo/connect": "5.0.3-dev", + "@celo/cryptographic-utils": "5.0.3-dev", + "@celo/contractkit": "5.0.3-dev", "@celo/env-tests": "1.0.0", - "@celo/explorer": "4.1.2-dev", - "@celo/governance": "4.1.2-dev", - "@celo/identity": "4.1.2-dev", - "@celo/network-utils": "4.1.2-dev", - "@celo/utils": "4.1.2-dev", + "@celo/explorer": "5.0.3-dev", + "@celo/governance": "5.0.3-dev", + "@celo/identity": "5.0.3-dev", + "@celo/network-utils": "5.0.3-dev", + "@celo/utils": "5.0.3-dev", "@ethereumjs/util": "8.0.5", "@ethereumjs/rlp": "4.0.1", "@google-cloud/monitoring": "0.7.1", diff --git a/packages/cli/package.json b/packages/cli/package.json index fe53c405ad5..4446ca2e520 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -35,16 +35,16 @@ }, "dependencies": { "@celo/bls12377js": "0.1.1", - "@celo/contractkit": "^4.1.2-dev", - "@celo/explorer": "^4.1.2-dev", - "@celo/governance": "^4.1.2-dev", - "@celo/identity": "^4.1.2-dev", - "@celo/phone-utils": "^4.1.2-dev", - "@celo/utils": "^4.1.2-dev", - "@celo/cryptographic-utils": "^4.1.2-dev", - "@celo/wallet-hsm-azure": "^4.1.2-dev", - "@celo/wallet-ledger": "^4.1.2-dev", - "@celo/wallet-local": "^4.1.2-dev", + "@celo/contractkit": "^5.0.3-dev", + "@celo/explorer": "^5.0.3-dev", + "@celo/governance": "^5.0.3-dev", + "@celo/identity": "^5.0.3-dev", + "@celo/phone-utils": "^5.0.3-dev", + "@celo/utils": "^5.0.3-dev", + "@celo/cryptographic-utils": "^5.0.3-dev", + "@celo/wallet-hsm-azure": "^5.0.3-dev", + "@celo/wallet-ledger": "^5.0.3-dev", + "@celo/wallet-local": "^5.0.3-dev", "@ledgerhq/hw-transport-node-hid": "^6.27.4", "@oclif/command": "^1.6.0", "@oclif/config": "^1.6.0", diff --git a/packages/cli/src/base.ts b/packages/cli/src/base.ts index 6ca0e7753c2..b97492c5ffb 100644 --- a/packages/cli/src/base.ts +++ b/packages/cli/src/base.ts @@ -201,9 +201,6 @@ export abstract class BaseCommand extends Command { const setStableTokenGas = async (stable: StableToken) => { await this.kit.setFeeCurrency(stableTokenInfos[stable].contract) - await this.kit.updateGasPriceInConnectionLayer( - await this.kit.registry.addressFor(stableTokenInfos[stable].contract) - ) } if (Object.keys(StableToken).includes(gasCurrencyConfig)) { await setStableTokenGas(StableToken[gasCurrencyConfig as keyof typeof StableToken]) diff --git a/packages/cli/src/commands/releasegold/transfer-dollars.test.ts b/packages/cli/src/commands/releasegold/transfer-dollars.test.ts index e2e554a604a..560101ce2bb 100644 --- a/packages/cli/src/commands/releasegold/transfer-dollars.test.ts +++ b/packages/cli/src/commands/releasegold/transfer-dollars.test.ts @@ -40,6 +40,8 @@ testWithGanache('releasegold:transfer-dollars cmd', (web3: Web3) => { contractAddress, '--value', cUSDToTransfer, + '--gasCurrency', + 'CELO', ]) // RG cUSD balance should match the amount sent const contractBalance = await kit.getTotalBalance(contractAddress) @@ -52,6 +54,8 @@ testWithGanache('releasegold:transfer-dollars cmd', (web3: Web3) => { accounts[0], '--value', cUSDToTransfer, + '--gasCurrency', + 'CELO', ]) const balanceAfter = await kit.getTotalBalance(accounts[0]) expect(balanceBefore.cUSD).toEqual(balanceAfter.cUSD) diff --git a/packages/cli/src/commands/releasegold/transfer-dollars.ts b/packages/cli/src/commands/releasegold/transfer-dollars.ts index a8d29ef0466..72ba7017505 100644 --- a/packages/cli/src/commands/releasegold/transfer-dollars.ts +++ b/packages/cli/src/commands/releasegold/transfer-dollars.ts @@ -28,7 +28,6 @@ export default class TransferDollars extends ReleaseGoldBaseCommand { this.kit.defaultAccount = isRevoked ? await this.releaseGoldWrapper.getReleaseOwner() : await this.releaseGoldWrapper.getBeneficiary() - await displaySendTx('transfer', this.releaseGoldWrapper.transfer(flags.to, flags.value)) } } diff --git a/packages/cli/src/transfer-stable-base.ts b/packages/cli/src/transfer-stable-base.ts index 293f494cdfc..fe18e297a37 100644 --- a/packages/cli/src/transfer-stable-base.ts +++ b/packages/cli/src/transfer-stable-base.ts @@ -1,5 +1,6 @@ import { StableToken } from '@celo/contractkit' import { StableTokenWrapper } from '@celo/contractkit/lib/wrappers/StableTokenWrapper' +import { stableTokenInfos } from '@celo/contractkit/src/celo-tokens' import { flags } from '@oclif/command' import { ParserOutput } from '@oclif/parser/lib/parse' import BigNumber from 'bignumber.js' @@ -35,7 +36,10 @@ export abstract class TransferStableBase extends BaseCommand { } catch { failWith(`The ${this._stableCurrency} token was not deployed yet`) } - await this.kit.updateGasPriceInConnectionLayer(stableToken.address) + // If gasCurrency is not set, use the transferring token + if (!res.flags.gasCurrency) { + await this.kit.setFeeCurrency(stableTokenInfos[this._stableCurrency].contract) + } const tx = res.flags.comment ? stableToken.transferWithComment(to, value.toFixed(), res.flags.comment) @@ -47,14 +51,12 @@ export abstract class TransferStableBase extends BaseCommand { `Account can afford transfer and gas paid in ${this._stableCurrency}`, this.kit.connection.defaultFeeCurrency === stableToken.address, async () => { - const gas = await tx.txo.estimateGas({ feeCurrency: stableToken.address }) - // TODO: replace with gasPrice rpc once supported by min client version - const { gasPrice } = await this.kit.connection.fillGasPrice({ - gasPrice: '0', - feeCurrency: stableToken.address, - }) + const [gas, gasPrice, balance] = await Promise.all([ + tx.txo.estimateGas({ feeCurrency: stableToken.address }), + this.kit.connection.gasPrice(stableToken.address), + stableToken.balanceOf(from), + ]) const gasValue = new BigNumber(gas).times(gasPrice as string) - const balance = await stableToken.balanceOf(from) return balance.gte(value.plus(gasValue)) }, `Cannot afford transfer with ${this._stableCurrency} gasCurrency; try reducing value slightly or using gasCurrency=CELO` diff --git a/packages/env-tests/package.json b/packages/env-tests/package.json index 388ea146b1e..b34005f50e3 100644 --- a/packages/env-tests/package.json +++ b/packages/env-tests/package.json @@ -5,13 +5,13 @@ "main": "index.js", "license": "MIT", "dependencies": { - "@celo/contractkit": "4.1.2-dev", - "@celo/utils": "4.1.2-dev", - "@celo/base": "4.1.2-dev", - "@celo/connect": "4.1.2-dev", - "@celo/identity": "4.1.2-dev", - "@celo/phone-utils": "4.1.2-dev", - "@celo/cryptographic-utils": "4.1.2-dev", + "@celo/contractkit": "5.0.3-dev", + "@celo/utils": "5.0.3-dev", + "@celo/base": "5.0.3-dev", + "@celo/connect": "5.0.3-dev", + "@celo/identity": "5.0.3-dev", + "@celo/phone-utils": "5.0.3-dev", + "@celo/cryptographic-utils": "5.0.3-dev", "bunyan": "1.8.12", "bunyan-gke-stackdriver": "0.1.2", "bunyan-debug-stream": "2.0.0", diff --git a/packages/metadata-crawler/package.json b/packages/metadata-crawler/package.json index 748e0b8d6ba..eee036d360e 100644 --- a/packages/metadata-crawler/package.json +++ b/packages/metadata-crawler/package.json @@ -9,9 +9,9 @@ "homepage": "https://github.com/celo-org/celo-monorepo/tree/master/packages/metadata-crawler", "repository": "https://github.com/celo-org/celo-monorepo/tree/master/packages/metadata-crawler", "dependencies": { - "@celo/connect": "4.1.2-dev", - "@celo/contractkit": "4.1.2-dev", - "@celo/utils": "4.1.2-dev", + "@celo/connect": "5.0.3-dev", + "@celo/contractkit": "5.0.3-dev", + "@celo/utils": "5.0.3-dev", "@types/pg": "^7.14.3", "bunyan": "1.8.12", "bunyan-gke-stackdriver": "0.1.2", diff --git a/packages/phone-number-privacy/combiner/package.json b/packages/phone-number-privacy/combiner/package.json index 4ad16b5a842..04c88952ce6 100644 --- a/packages/phone-number-privacy/combiner/package.json +++ b/packages/phone-number-privacy/combiner/package.json @@ -1,6 +1,6 @@ { "name": "@celo/phone-number-privacy-combiner", - "version": "3.0.1-dev", + "version": "3.0.3", "description": "Orchestrates and combines threshold signatures for use in ODIS", "author": "Celo", "license": "Apache-2.0", @@ -29,10 +29,10 @@ "test:e2e:mainnet": "CONTEXT_NAME=mainnet yarn test:e2e" }, "dependencies": { - "@celo/contractkit": "^4.1.2-dev", - "@celo/phone-number-privacy-common": "^3.0.1-dev", - "@celo/identity": "^4.1.2-dev", - "@celo/encrypted-backup": "^4.1.2-dev", + "@celo/contractkit": "^5.0.3-dev", + "@celo/phone-number-privacy-common": "^3.0.3", + "@celo/identity": "^5.0.3-dev", + "@celo/encrypted-backup": "^5.0.3-dev", "@celo/poprf": "^0.1.9", "@types/bunyan": "^1.8.8", "@opentelemetry/api": "^1.4.1", @@ -55,8 +55,8 @@ }, "devDependencies": { "@types/node": "18.15.13", - "@celo/utils": "^4.1.2-dev", - "@celo/phone-utils": "^4.1.2-dev", + "@celo/utils": "^5.0.3-dev", + "@celo/phone-utils": "^5.0.3-dev", "@types/express": "^4.17.6", "@types/supertest": "^2.0.12", "@types/uuid": "^7.0.3", diff --git a/packages/phone-number-privacy/common/package.json b/packages/phone-number-privacy/common/package.json index 505d6b33135..0fe23a973ea 100644 --- a/packages/phone-number-privacy/common/package.json +++ b/packages/phone-number-privacy/common/package.json @@ -1,6 +1,6 @@ { "name": "@celo/phone-number-privacy-common", - "version": "3.0.1-dev", + "version": "3.0.3", "description": "Common library for the combiner and signer libraries", "author": "Celo", "license": "Apache-2.0", @@ -18,10 +18,10 @@ "lib/**/*" ], "dependencies": { - "@celo/base": "^4.1.2-dev", - "@celo/contractkit": "^4.1.2-dev", - "@celo/utils": "^4.1.2-dev", - "@celo/phone-utils": "^4.1.2-dev", + "@celo/base": "^5.0.3-dev", + "@celo/contractkit": "^5.0.3-dev", + "@celo/utils": "^5.0.3-dev", + "@celo/phone-utils": "^5.0.3-dev", "@types/bunyan": "1.8.8", "bignumber.js": "^9.0.0", "bunyan": "1.8.12", @@ -41,13 +41,13 @@ }, "devDependencies": { "@celo/poprf": "^0.1.9", - "@celo/wallet-local": "^4.1.2-dev", + "@celo/wallet-local": "^5.0.3-dev", "@types/elliptic": "^6.4.12", "@types/express": "^4.17.6", "@types/is-base64": "^1.1.0", "@types/node-fetch": "^2.5.7" }, "engines": { - "node": ">=10" + "node": ">=12" } } \ No newline at end of file diff --git a/packages/phone-number-privacy/monitor/package.json b/packages/phone-number-privacy/monitor/package.json index 98f4dd599be..65b175990fd 100644 --- a/packages/phone-number-privacy/monitor/package.json +++ b/packages/phone-number-privacy/monitor/package.json @@ -1,6 +1,6 @@ { "name": "@celo/phone-number-privacy-monitor", - "version": "3.0.0-beta.2-dev", + "version": "3.0.3", "description": "Regularly queries ODIS to ensure the system is functioning properly", "author": "Celo", "license": "Apache-2.0", @@ -22,13 +22,13 @@ "loadTest": "ts-node src/scripts/run-load-test.ts run" }, "dependencies": { - "@celo/contractkit": "^4.1.2-dev", - "@celo/cryptographic-utils": "^4.1.2-dev", - "@celo/encrypted-backup": "^4.1.2-dev", - "@celo/identity": "^4.1.2-dev", - "@celo/wallet-local": "^4.1.2-dev", - "@celo/phone-number-privacy-common": "^3.0.1-dev", - "@celo/utils": "^4.1.2-dev", + "@celo/contractkit": "^5.0.3-dev", + "@celo/cryptographic-utils": "^5.0.3-dev", + "@celo/encrypted-backup": "^5.0.3-dev", + "@celo/identity": "^5.0.3-dev", + "@celo/wallet-local": "^5.0.3-dev", + "@celo/phone-number-privacy-common": "^3.0.2", + "@celo/utils": "^5.0.3-dev", "firebase-admin": "^9.12.0", "firebase-functions": "^3.15.7" }, diff --git a/packages/phone-number-privacy/signer/package.json b/packages/phone-number-privacy/signer/package.json index c7f9e5b59fe..74951f461d5 100644 --- a/packages/phone-number-privacy/signer/package.json +++ b/packages/phone-number-privacy/signer/package.json @@ -1,6 +1,6 @@ { "name": "@celo/phone-number-privacy-signer", - "version": "3.0.2-dev", + "version": "3.0.3", "description": "Signing participator of ODIS", "author": "Celo", "license": "Apache-2.0", @@ -37,12 +37,12 @@ "ssl:keygen": "./scripts/create-ssl-cert.sh" }, "dependencies": { - "@celo/base": "^4.1.2-dev", - "@celo/contractkit": "^4.1.2-dev", - "@celo/phone-number-privacy-common": "^3.0.1-dev", + "@celo/base": "^5.0.3-dev", + "@celo/contractkit": "^5.0.3-dev", + "@celo/phone-number-privacy-common": "^3.0.3", "@celo/poprf": "^0.1.9", - "@celo/utils": "^4.1.2-dev", - "@celo/wallet-hsm-azure": "^4.1.2-dev", + "@celo/utils": "^5.0.3-dev", + "@celo/wallet-hsm-azure": "^5.0.3-dev", "@google-cloud/secret-manager": "3.0.0", "@opentelemetry/api": "^1.4.1", "@opentelemetry/auto-instrumentations-node": "^0.38.0", @@ -78,4 +78,4 @@ "engines": { "node": ">=10" } -} +} \ No newline at end of file diff --git a/packages/protocol/lib/signing-utils.ts b/packages/protocol/lib/signing-utils.ts index 6f470c1fa37..64e5b143fa9 100644 --- a/packages/protocol/lib/signing-utils.ts +++ b/packages/protocol/lib/signing-utils.ts @@ -1,28 +1,12 @@ // Originally taken from https://github.com/ethereum/web3.js/blob/1.x/packages/web3-eth-accounts/src/index.js -import { inputCeloTxFormatter } from '@celo/connect/lib/utils/formatter' import { parseSignature } from '@celo/utils/lib/signatureUtils' -import { account as Account, bytes, hash, nat, RLP } from 'eth-lib' -import _ from 'underscore' +import { privateKeyToAddress } from '@celo/utils/lib/address' +import { LocalWallet } from '@celo/wallet-local' import Web3 from 'web3' -import { numberToHex } from 'web3-utils' function isNot(value: any) { - return _.isUndefined(value) || _.isNull(value) -} - -function trimLeadingZero(hex: string) { - while (hex && hex.startsWith('0x0')) { - hex = '0x' + hex.slice(3) - } - return hex -} - -function makeEven(hex: string) { - if (hex.length % 2 === 1) { - hex = hex.replace('0x', '0x0') - } - return hex + return value === null || value === undefined } export const getParsedSignatureOfAddress = async (web3: Web3, address: string, signer: string) => { @@ -32,13 +16,12 @@ export const getParsedSignatureOfAddress = async (web3: Web3, address: string, s } export async function signTransaction(web3: Web3, txn: any, privateKey: string) { - let result: any if (!txn) { throw new Error('No transaction object given!') } - const signed = (tx: any) => { + const signed = async (tx: any) => { if (!tx.gas && !tx.gasLimit) { throw new Error('"gas" is missing') } @@ -46,62 +29,17 @@ export async function signTransaction(web3: Web3, txn: any, privateKey: string) if (tx.nonce < 0 || tx.gas < 0 || tx.gasPrice < 0 || tx.chainId < 0) { throw new Error('Gas, gasPrice, nonce or chainId is lower than 0') } - try { - tx = inputCeloTxFormatter(tx) + const wallet = new LocalWallet() - const transaction = tx - transaction.to = tx.to || '0x' - transaction.data = tx.data || '0x' - transaction.value = tx.value || '0x' - transaction.chainId = numberToHex(tx.chainId) - transaction.feeCurrency = tx.feeCurrency || '0x' - transaction.gatewayFeeRecipient = tx.gatewayFeeRecipient || '0x' - transaction.gatewayFee = tx.gatewayFee || '0x' + wallet.addAccount(privateKey) - const rlpEncoded = RLP.encode([ - bytes.fromNat(transaction.nonce), - bytes.fromNat(transaction.gasPrice), - bytes.fromNat(transaction.gas), - transaction.feeCurrency.toLowerCase(), - transaction.gatewayFeeRecipient.toLowerCase(), - bytes.fromNat(transaction.gatewayFee), - transaction.to.toLowerCase(), - bytes.fromNat(transaction.value), - transaction.data, - bytes.fromNat(transaction.chainId || '0x1'), - '0x', - '0x', - ]) + return wallet.signTransaction(tx) - const messageHash = hash.keccak256(rlpEncoded) - - const signature = Account.makeSigner(nat.toNumber(transaction.chainId || '0x1') * 2 + 35)( - hash.keccak256(rlpEncoded), - privateKey - ) - - const rawTx = RLP.decode(rlpEncoded).slice(0, 9).concat(Account.decodeSignature(signature)) - - rawTx[9] = makeEven(trimLeadingZero(rawTx[9])) - rawTx[10] = makeEven(trimLeadingZero(rawTx[10])) - rawTx[11] = makeEven(trimLeadingZero(rawTx[11])) - - const rawTransaction = RLP.encode(rawTx) - - const values = RLP.decode(rawTransaction) - result = { - messageHash, - v: trimLeadingZero(values[9]), - r: trimLeadingZero(values[10]), - s: trimLeadingZero(values[11]), - rawTransaction, - } } catch (e) { + console.info('Error signing transaction', e) throw e } - - return result } // Resolve immediately if nonce, chainId and price are provided @@ -110,10 +48,10 @@ export async function signTransaction(web3: Web3, txn: any, privateKey: string) } // Otherwise, get the missing info from the Ethereum Node - const chainId = isNot(txn.chainId) ? await web3.eth.net.getId() : txn.chainId + const chainId = isNot(txn.chainId) ? await web3.eth.getChainId() : txn.chainId const gasPrice = isNot(txn.gasPrice) ? await web3.eth.getGasPrice() : txn.gasPrice const nonce = isNot(txn.nonce) - ? await web3.eth.getTransactionCount(Account.fromPrivate(privateKey).address) + ? await web3.eth.getTransactionCount(privateKeyToAddress(privateKey)) : txn.nonce if (isNot(chainId) || isNot(gasPrice) || isNot(nonce)) { @@ -122,5 +60,5 @@ export async function signTransaction(web3: Web3, txn: any, privateKey: string) JSON.stringify({ chainId, gasPrice, nonce }) ) } - return signed(_.extend(txn, { chainId, gasPrice, nonce })) + return signed({...txn, chainId, gasPrice, nonce }) } diff --git a/packages/protocol/lib/web3-utils.ts b/packages/protocol/lib/web3-utils.ts index 7de0c6b7068..2752955598a 100644 --- a/packages/protocol/lib/web3-utils.ts +++ b/packages/protocol/lib/web3-utils.ts @@ -1,21 +1,21 @@ /* tslint:disable:no-console */ // TODO(asa): Refactor and rename to 'deployment-utils.ts' -import { Address, CeloTxObject } from '@celo/connect'; -import { setAndInitializeImplementation } from '@celo/protocol/lib/proxy-utils'; -import { CeloContractName } from '@celo/protocol/lib/registry-utils'; -import { signTransaction } from '@celo/protocol/lib/signing-utils'; -import { privateKeyToAddress } from '@celo/utils/lib/address'; -import { BuildArtifacts } from '@openzeppelin/upgrades'; -import { BigNumber } from 'bignumber.js'; - -import { createInterfaceAdapter } from '@truffle/interface-adapter'; -import path from 'path'; -import prompts from 'prompts'; -import { GoldTokenInstance, MultiSigInstance, OwnableInstance, ProxyContract, ProxyInstance, RegistryInstance } from 'types'; -import { StableTokenInstance } from 'types/mento'; -import Web3 from 'web3'; -import { ContractPackage } from '../contractPackages'; -import { ArtifactsSingleton } from './artifactsSingleton'; +import { Address, CeloTxObject } from '@celo/connect' +import { setAndInitializeImplementation } from '@celo/protocol/lib/proxy-utils' +import { CeloContractName } from '@celo/protocol/lib/registry-utils' +import { signTransaction } from '@celo/protocol/lib/signing-utils' +import { privateKeyToAddress } from '@celo/utils/lib/address' +import { BuildArtifacts } from '@openzeppelin/upgrades' +import { BigNumber } from 'bignumber.js' + +import { createInterfaceAdapter } from '@truffle/interface-adapter' +import path from 'path' +import prompts from 'prompts' +import { GoldTokenInstance, MultiSigInstance, OwnableInstance, ProxyContract, ProxyInstance, RegistryInstance } from 'types' +import { StableTokenInstance } from 'types/mento' +import Web3 from 'web3' +import { ContractPackage } from '../contractPackages' +import { ArtifactsSingleton } from './artifactsSingleton' const truffleContract = require('@truffle/contract'); @@ -39,8 +39,7 @@ export async function sendTransactionWithPrivateKey( from: address, }) } - - const signedTx: any = await signTransaction( + const signedTx = await signTransaction( web3, { ...txArgs, @@ -53,7 +52,7 @@ export async function sendTransactionWithPrivateKey( privateKey ) - const rawTransaction = signedTx.rawTransaction.toString('hex') + const rawTransaction = signedTx.raw return web3.eth.sendSignedTransaction(rawTransaction) } @@ -152,7 +151,7 @@ export function checkFunctionArgsLength(args: any[], abi: any) { export async function setInitialProxyImplementation< ContractInstance extends Truffle.ContractInstance >(web3: Web3, artifacts: any, contractName: string, contractPackage?: ContractPackage, ...args: any[]): Promise { - + const Contract = ArtifactsSingleton.getInstance(contractPackage, artifacts).require(contractName) const ContractProxy = ArtifactsSingleton.getInstance(contractPackage, artifacts).require(contractName + 'Proxy') @@ -265,11 +264,11 @@ export const makeTruffleContractForMigration = (contractName: string, contractPa abi: artifact.abi, unlinked_binary: artifact.bytecode, }) - - + + Contract.setProvider(web3.currentProvider) Contract.setNetwork(network.name) - + Contract.interfaceAdapter = createInterfaceAdapter({ networkType: "ethereum", provider: web3.currentProvider @@ -292,7 +291,7 @@ export function deploymentForContract Started deployment for", name) - let Contract + let Contract let ContractProxy if (artifactPath) { Contract = makeTruffleContractForMigration(name, artifactPath, web3) @@ -301,7 +300,7 @@ export function deploymentForContract { console.log("\n-> Deploying", name) @@ -392,12 +391,12 @@ export function getFunctionSelectorsForContract(contract: any, contractName: str export function checkImports(baseContractName: string, derivativeContractArtifact: any, artifacts: any) { const isImport = (astNode: any) => astNode.nodeType === 'ImportDirective' const imports: any[] = derivativeContractArtifact.ast.nodes.filter((astNode: any) => isImport(astNode)) - while (imports.length) { // BFS + while (imports.length) { // BFS const importedContractName = (imports.pop().file as string).split('/').pop().split('.')[0] if (importedContractName === baseContractName) { return true } - const importedContractArtifact = artifacts instanceof BuildArtifacts ? + const importedContractArtifact = artifacts instanceof BuildArtifacts ? artifacts.getArtifactByName(importedContractName) : artifacts.require(importedContractName) imports.unshift(...importedContractArtifact.ast.nodes.filter((astNode: any) => isImport(astNode))) diff --git a/packages/protocol/migrations_ts/28_elect_validators.ts b/packages/protocol/migrations_ts/28_elect_validators.ts index 844aa628ad3..742fff47910 100644 --- a/packages/protocol/migrations_ts/28_elect_validators.ts +++ b/packages/protocol/migrations_ts/28_elect_validators.ts @@ -105,7 +105,7 @@ async function registerValidatorGroup( // Add a premium to cover tx fees const v = lockedGoldValue.times(1.01).integerValue() - console.info(` - send funds ${v} to group address ${account.address}`) + console.info(` - send funds ${v} to group address ${account.address}}`) await sendTransaction(web3, null, privateKey, { to: account.address, value: v, diff --git a/packages/protocol/package.json b/packages/protocol/package.json index 68b31a4eeb0..caa6f5495a2 100644 --- a/packages/protocol/package.json +++ b/packages/protocol/package.json @@ -49,11 +49,12 @@ "@0x/sol-profiler": "^4.1.37", "@0x/sol-trace": "^3.0.47", "@0x/subproviders": "^7.0.1", - "@celo/base": "4.1.2-dev", + "@celo/base": "5.0.3-dev", "@celo/bls12377js": "0.1.1", - "@celo/connect": "4.1.2-dev", - "@celo/cryptographic-utils": "4.1.2-dev", - "@celo/utils": "4.1.2-dev", + "@celo/connect": "5.0.3-dev", + "@celo/cryptographic-utils": "5.0.3-dev", + "@celo/utils": "5.0.3-dev", + "@celo/wallet-local": "5.0.3-dev", "@ethereumjs/util": "8.0.5", "@ethereumjs/vm": "npm:@celo/ethereumjs-vm@6.4.1-unofficial.0", "@ganache/console.log": "0.3.0", @@ -94,7 +95,7 @@ "web3-utils": "1.10.0" }, "devDependencies": { - "@celo/phone-utils": "4.1.2-dev", + "@celo/phone-utils": "5.0.3-dev", "@celo/typechain-target-web3-v1-celo": "0.2.0", "@celo/typescript": "0.0.1", "@types/bn.js": "^5.1.0", @@ -104,7 +105,6 @@ "@types/mocha": "^7.0.2", "@types/targz": "^1.0.0", "@types/tmp": "^0.1.0", - "@types/underscore": "^1.8.8", "@types/yargs": "^13.0.2", "cross-env": "^5.1.6", "eth-gas-reporter": "^0.2.16", diff --git a/packages/sdk/base/package.json b/packages/sdk/base/package.json index 710a7a809f6..c3b6dc93600 100644 --- a/packages/sdk/base/package.json +++ b/packages/sdk/base/package.json @@ -1,6 +1,6 @@ { "name": "@celo/base", - "version": "4.1.2-dev", + "version": "5.0.3-dev", "description": "Celo base common utils, no dependencies", "author": "Celo", "license": "Apache-2.0", diff --git a/packages/sdk/base/src/address.ts b/packages/sdk/base/src/address.ts index d49e641a2af..9eea852b30d 100644 --- a/packages/sdk/base/src/address.ts +++ b/packages/sdk/base/src/address.ts @@ -2,6 +2,8 @@ const HEX_REGEX = /^0x[0-9A-F]*$/i export type Address = string +export type StrongAddress = `0x${string}` + export const eqAddress = (a: Address, b: Address) => normalizeAddress(a) === normalizeAddress(b) export const normalizeAddress = (a: Address) => trimLeading0x(a).toLowerCase() @@ -12,7 +14,8 @@ export const normalizeAddressWith0x = (a: Address) => ensureLeading0x(a).toLower export const trimLeading0x = (input: string) => (input.startsWith('0x') ? input.slice(2) : input) -export const ensureLeading0x = (input: string) => (input.startsWith('0x') ? input : `0x${input}`) +export const ensureLeading0x = (input: string): StrongAddress => + input.startsWith('0x') ? (input as StrongAddress) : (`0x${input}` as const) // Turns '0xce10ce10ce10ce10ce10ce10ce10ce10ce10ce10' // into ['ce10','ce10','ce10','ce10','ce10','ce10','ce10','ce10','ce10','ce10'] diff --git a/packages/sdk/connect/package.json b/packages/sdk/connect/package.json index daaa46656dd..05b7d5d3638 100644 --- a/packages/sdk/connect/package.json +++ b/packages/sdk/connect/package.json @@ -1,6 +1,6 @@ { "name": "@celo/connect", - "version": "4.1.2-dev", + "version": "5.0.3-dev", "description": "Light Toolkit for connecting with the Celo network", "main": "./lib/index.js", "types": "./lib/index.d.ts", @@ -24,8 +24,8 @@ "dependencies": { "@types/debug": "^4.1.5", "@types/utf8": "^2.1.6", - "@celo/base": "4.1.2-dev", - "@celo/utils": "4.1.2-dev", + "@celo/base": "5.0.3-dev", + "@celo/utils": "5.0.3-dev", "bignumber.js": "^9.0.0", "debug": "^4.1.1", "utf8": "3.0.0" diff --git a/packages/sdk/connect/src/celo-provider.test.ts b/packages/sdk/connect/src/celo-provider.test.ts index 252c5d1c347..daa2b2668d5 100644 --- a/packages/sdk/connect/src/celo-provider.test.ts +++ b/packages/sdk/connect/src/celo-provider.test.ts @@ -29,8 +29,9 @@ class MockWallet implements ReadOnlyWallet { } signTransaction(_txParams: CeloTx): Promise { return Promise.resolve({ - raw: 'mock', + raw: '0xmock', tx: { + type: 'celo-legacy', nonce: 'nonce', gasPrice: 'gasPrice', gas: 'gas', @@ -193,7 +194,7 @@ describe('CeloProvider', () => { describe('but tries to use it with a different account', () => { interceptedByCeloProvider.forEach((method: string) => { - test(`fowards the call to '${method}' to the original provider`, (done) => { + test(`forwards the call to '${method}' to the original provider`, (done) => { const payload: JsonRpcPayload = { id: 0, jsonrpc: '2.0', diff --git a/packages/sdk/connect/src/connection.ts b/packages/sdk/connect/src/connection.ts index bb5fc7f4553..fa11244f123 100644 --- a/packages/sdk/connect/src/connection.ts +++ b/packages/sdk/connect/src/connection.ts @@ -42,7 +42,6 @@ const debugGasEstimation = debugFactory('connection:gas-estimation') type BN = ReturnType export interface ConnectionOptions { gasInflationFactor: number - gasPrice: string feeCurrency?: Address from?: Address } @@ -58,16 +57,11 @@ export class Connection { readonly paramsPopulator: TxParamsNormalizer rpcCaller!: RpcCaller - /** @deprecated no longer needed since gasPrice is available on node rpc */ - private currencyGasPrice: Map = new Map() - constructor(readonly web3: Web3, public wallet?: ReadOnlyWallet, handleRevert = true) { web3.eth.handleRevert = handleRevert this.config = { gasInflationFactor: 1.3, - // gasPrice:0 means the node will compute gasPrice on its own - gasPrice: '0', } const existingProvider: Provider = web3.currentProvider as Provider @@ -89,7 +83,8 @@ export class Connection { } this.web3.setProvider(provider as any) return true - } catch { + } catch (error) { + console.error(`could not attach provider`, error) return false } } @@ -125,14 +120,6 @@ export class Connection { return this.config.gasInflationFactor } - set defaultGasPrice(price: number) { - this.config.gasPrice = price.toString(10) - } - - get defaultGasPrice() { - return parseInt(this.config.gasPrice, 10) - } - /** * Set the ERC20 address for the token to use to pay for transaction fees. * The ERC20 must be whitelisted for gas. @@ -224,7 +211,6 @@ export class Connection { */ sendTransaction = async (tx: CeloTx): Promise => { tx = this.fillTxDefaults(tx) - tx = this.fillGasPrice(tx) let gas = tx.gas if (gas == null) { @@ -244,7 +230,6 @@ export class Connection { tx?: Omit ): Promise => { tx = this.fillTxDefaults(tx) - tx = this.fillGasPrice(tx) let gas = tx.gas if (gas == null) { @@ -341,20 +326,26 @@ export class Connection { sendSignedTransaction = async (signedTransactionData: string): Promise => { return toTxResult(this.web3.eth.sendSignedTransaction(signedTransactionData)) } + // if neither gas price nor feeMarket fields are present set them. + setFeeMarketGas = async (tx: CeloTx): Promise => { + // default to the current values + const calls = [Promise.resolve(tx.maxFeePerGas), Promise.resolve(tx.maxPriorityFeePerGas)] - /** @deprecated no longer needed since gasPrice is available on node rpc */ - fillGasPrice(tx: CeloTx): CeloTx { - if (tx.feeCurrency && tx.gasPrice === '0' && this.currencyGasPrice.has(tx.feeCurrency)) { - return { - ...tx, - gasPrice: this.currencyGasPrice.get(tx.feeCurrency), - } + if (isEmpty(tx.maxFeePerGas)) { + calls[0] = this.gasPrice(tx.feeCurrency) + } + if (isEmpty(tx.maxPriorityFeePerGas)) { + calls[1] = this.rpcCaller.call('eth_maxPriorityFeePerGas', []).then((rpcResponse) => { + return rpcResponse.result + }) + } + const [maxFeePerGas, maxPriorityFeePerGas] = await Promise.all(calls) + return { + ...tx, + gasPrice: undefined, + maxFeePerGas, + maxPriorityFeePerGas, } - return tx - } - /** @deprecated no longer needed since gasPrice is available on node rpc */ - async setGasPriceForCurrency(address: Address, gasPrice: string) { - this.currencyGasPrice.set(address, gasPrice) } estimateGas = async ( @@ -430,7 +421,6 @@ export class Connection { gasPrice = async (feeCurrency?: Address): Promise => { // Required otherwise is not backward compatible const parameter = feeCurrency ? [feeCurrency] : [] - // Reference: https://eth.wiki/json-rpc/API#eth_gasprice const response = await this.rpcCaller.call('eth_gasPrice', parameter) const gasPriceInHex = response.result.toString() @@ -446,10 +436,7 @@ export class Connection { private isBlockNumberHash = (blockNumber: BlockNumber) => blockNumber instanceof String && blockNumber.indexOf('0x') === 0 - getBlock = async ( - blockHashOrBlockNumber: BlockNumber, - fullTxObjects: boolean = true - ): Promise => { + getBlock = async (blockHashOrBlockNumber: BlockNumber, fullTxObjects = true): Promise => { const endpoint = this.isBlockNumberHash(blockHashOrBlockNumber) ? 'eth_getBlockByHash' // Reference: https://eth.wiki/json-rpc/API#eth_getBlockByHash : 'eth_getBlockByNumber' // Reference: https://eth.wiki/json-rpc/API#eth_getBlockByNumber @@ -508,7 +495,6 @@ export class Connection { const defaultTx: CeloTx = { from: this.config.from, feeCurrency: this.config.feeCurrency, - gasPrice: this.config.gasPrice, } return { @@ -522,3 +508,18 @@ export class Connection { this.web3.currentProvider.stop() } } + +function isEmpty(value: string | undefined | number | BN) { + return ( + value === 0 || + value === undefined || + value === null || + value === '0' || + (typeof value === 'string' && + (value.toLowerCase() === '0x' || value.toLowerCase() === '0x0')) || + Web3.utils.toBN(value.toString()).eq(Web3.utils.toBN(0)) + ) +} +export function isPresent(value: string | undefined | number | BN) { + return !isEmpty(value) +} diff --git a/packages/sdk/connect/src/types.ts b/packages/sdk/connect/src/types.ts index 4f3d4493d6a..87201c91590 100644 --- a/packages/sdk/connect/src/types.ts +++ b/packages/sdk/connect/src/types.ts @@ -1,16 +1,57 @@ -import { PromiEvent, Transaction, TransactionConfig, TransactionReceipt } from 'web3-core' +import { + AccessList, + PromiEvent, + Transaction, + TransactionConfig, + TransactionReceipt, +} from 'web3-core' import { Contract } from 'web3-eth-contract' - export type Address = string +export type Hex = `0x${string}` export interface CeloParams { feeCurrency: string + /* + @deprecated + */ gatewayFeeRecipient: string + /* + @deprecated + */ gatewayFee: string } -export type CeloTx = TransactionConfig & Partial +export type AccessListRaw = Array<[string, string[]]> + +export type HexOrMissing = Hex | undefined +export interface FormattedCeloTx { + chainId: number + from: HexOrMissing + to: HexOrMissing + data: string | undefined + value: HexOrMissing + feeCurrency?: HexOrMissing + /* + @deprecated + */ + gatewayFeeRecipient?: HexOrMissing + /* + @deprecated + */ + gatewayFee?: HexOrMissing + gas: HexOrMissing + gasPrice?: Hex + maxFeePerGas?: Hex + maxPriorityFeePerGas?: Hex + nonce: HexOrMissing | number + accessList?: AccessListRaw + type: TransactionTypes +} +export type CeloTx = TransactionConfig & + Partial & { accessList?: AccessList; type?: TransactionTypes } + +export type CeloTxWithSig = CeloTx & { v: number; s: string; r: string; yParity: 0 | 1 } export interface CeloTxObject { arguments: any[] call(tx?: CeloTx): Promise @@ -24,23 +65,52 @@ export { BlockNumber, EventLog, Log, PromiEvent, Sign } from 'web3-core' export { Block, BlockHeader, Syncing } from 'web3-eth' export { Contract, ContractSendMethod, PastEventOptions } from 'web3-eth-contract' +export type TransactionTypes = 'eip1559' | 'celo-legacy' | 'cip42' + +interface CommonTXProperties { + nonce: string + gas: string + to: string + value: string + input: string + r: string + s: string + v: string + hash: string + type: TransactionTypes +} + +interface FeeMarketAndAccessListTXProperties extends CommonTXProperties { + maxFeePerGas: string + maxPriorityFeePerGas: string + accessList?: AccessList +} + +export interface EIP1559TXProperties extends FeeMarketAndAccessListTXProperties { + type: 'eip1559' +} + +export interface CIP42TXProperties extends FeeMarketAndAccessListTXProperties { + feeCurrency: string + gatewayFeeRecipient?: string + gatewayFee?: string + type: 'cip42' +} + +/* + @deprecated + */ +export interface LegacyTXProperties extends CommonTXProperties { + gasPrice: string + feeCurrency: string + gatewayFeeRecipient: string + gatewayFee: string + type: 'celo-legacy' +} + export interface EncodedTransaction { - raw: string - tx: { - nonce: string - gasPrice: string - gas: string - feeCurrency: string - gatewayFeeRecipient: string - gatewayFee: string - to: string - value: string - input: string - r: string - s: string - v: string - hash: string - } + raw: Hex + tx: LegacyTXProperties | CIP42TXProperties | EIP1559TXProperties } export type CeloTxPending = Transaction & Partial @@ -87,6 +157,7 @@ export interface HttpProvider { } export interface RLPEncodedTx { - transaction: CeloTx - rlpEncode: string + transaction: FormattedCeloTx + rlpEncode: Hex + type: TransactionTypes } diff --git a/packages/sdk/connect/src/utils/formatter.test.ts b/packages/sdk/connect/src/utils/formatter.test.ts new file mode 100644 index 00000000000..dbd2b3a86a8 --- /dev/null +++ b/packages/sdk/connect/src/utils/formatter.test.ts @@ -0,0 +1,274 @@ +import { CeloTx } from '../types' +import { inputAccessListFormatter, inputCeloTxFormatter, outputCeloTxFormatter } from './formatter' + +describe('inputAccessListFormatter', () => { + test('with valid accessList', () => { + const accessList = [ + { + address: '0x0000000000000000000000000000000000000000', + storageKeys: [ + '0x0000000000000000000000000000000000000000000000000000000000000001', + '0x60fdd29ff912ce880cd3edaf9f932dc61d3dae823ea77e0323f94adb9f6a72fe', + ], + }, + ] + + expect(inputAccessListFormatter(accessList)).toEqual([ + [ + '0x0000000000000000000000000000000000000000', + [ + '0x0000000000000000000000000000000000000000000000000000000000000001', + '0x60fdd29ff912ce880cd3edaf9f932dc61d3dae823ea77e0323f94adb9f6a72fe', + ], + ], + ]) + }) +}) + +describe('inputCeloTxFormatter', () => { + const base: CeloTx = { + chainId: 42220, + nonce: 1, + gas: 1000000, + value: '0x0241', + from: '0x11f4d0A3c12e86B4b5F39B213F7E19D048276DAe', + to: '0x11f4d0A3c12e86B4b5F39B213F7E19D048276DAe', + data: '0x', + } + describe('when address does not pass checksum', () => { + ;['from', 'to', 'feeCurrency'].forEach((property) => { + test(`${property}`, () => { + const faulty = { ...base, [property]: '0x3e8' } + expect(() => inputCeloTxFormatter(faulty)).toThrowError( + `Provided address 0x3e8 is invalid, the capitalization checksum test failed` + ) + }) + }) + }) + + describe('valid celo-legacy tx', () => { + const legacy = { + ...base, + gasPrice: '0x3e8', + feeCurrency: '0x11f4d0A3c12e86B4b5F39B213F7E19D048276DAe', + } + it('formats', () => { + expect(inputCeloTxFormatter(legacy)).toMatchInlineSnapshot(` + { + "data": "0x", + "feeCurrency": "0x11f4d0a3c12e86b4b5f39b213f7e19d048276dae", + "from": "0x11f4d0a3c12e86b4b5f39b213f7e19d048276dae", + "gas": "0xf4240", + "gasPrice": "0x3e8", + "nonce": "0x1", + "to": "0x11f4d0a3c12e86b4b5f39b213f7e19d048276dae", + "value": "0x241", + } + `) + }) + }) + describe('valid cip42 tx', () => { + const cip42 = { + ...base, + maxFeePerGas: '0x3e8', + maxPriorityFeePerGas: '0x3e8', + feeCurrency: '0x11f4d0A3c12e86B4b5F39B213F7E19D048276DAe', + } + it('formats', () => { + expect(inputCeloTxFormatter(cip42)).toMatchInlineSnapshot(` + { + "data": "0x", + "feeCurrency": "0x11f4d0a3c12e86b4b5f39b213f7e19d048276dae", + "from": "0x11f4d0a3c12e86b4b5f39b213f7e19d048276dae", + "gas": "0xf4240", + "maxFeePerGas": "0x3e8", + "maxPriorityFeePerGas": "0x3e8", + "nonce": "0x1", + "to": "0x11f4d0a3c12e86b4b5f39b213f7e19d048276dae", + "value": "0x241", + } + `) + }) + }) + describe('valid eip1559 tx', () => { + const eip1559 = { + ...base, + maxFeePerGas: '0x3e8', + maxPriorityFeePerGas: '0x3e8', + } + it('formats', () => { + expect(inputCeloTxFormatter(eip1559)).toMatchInlineSnapshot(` + { + "data": "0x", + "from": "0x11f4d0a3c12e86b4b5f39b213f7e19d048276dae", + "gas": "0xf4240", + "maxFeePerGas": "0x3e8", + "maxPriorityFeePerGas": "0x3e8", + "nonce": "0x1", + "to": "0x11f4d0a3c12e86b4b5f39b213f7e19d048276dae", + "value": "0x241", + } + `) + }) + }) +}) + +describe('outputCeloTxFormatter', () => { + const base = { + nonce: '0x4', + data: '0x', + input: '0x3454645634534', + from: '0x11f4d0A3c12e86B4b5F39B213F7E19D048276DAe', + to: '0x11f4d0a3c12e86b4b5f39b213f7e19d048276dae', + value: '0x3e8', + gas: '0x3e8', + transactionIndex: '0x1', + blockNumber: '0x3e8', + blockHash: '0xc9b9cdc2092a9d6589d96662b1fd6949611163fb3910cf8a173cd060f17702f9', + } + describe('with blockNumber', () => { + test('when valid', () => { + expect(outputCeloTxFormatter({ ...base, blockNumber: '0x1' })).toMatchInlineSnapshot(` + { + "blockHash": "0xc9b9cdc2092a9d6589d96662b1fd6949611163fb3910cf8a173cd060f17702f9", + "blockNumber": 1, + "data": "0x", + "from": "0x11f4d0A3c12e86B4b5F39B213F7E19D048276DAe", + "gas": 1000, + "input": "0x3454645634534", + "nonce": 4, + "to": "0x11f4d0A3c12e86B4b5F39B213F7E19D048276DAe", + "transactionIndex": 1, + "value": "1000", + } + `) + }) + test('when invalid', () => { + expect(outputCeloTxFormatter({ ...base, blockNumber: null })).toMatchInlineSnapshot(` + { + "blockHash": "0xc9b9cdc2092a9d6589d96662b1fd6949611163fb3910cf8a173cd060f17702f9", + "blockNumber": null, + "data": "0x", + "from": "0x11f4d0A3c12e86B4b5F39B213F7E19D048276DAe", + "gas": 1000, + "input": "0x3454645634534", + "nonce": 4, + "to": "0x11f4d0A3c12e86B4b5F39B213F7E19D048276DAe", + "transactionIndex": 1, + "value": "1000", + } + `) + }) + }) + describe('with valid celo-legacy tx', () => { + const legacy = { + ...base, + gasPrice: '0x3e8', + } + test('when valid', () => { + expect(outputCeloTxFormatter(legacy)).toMatchInlineSnapshot(` + { + "blockHash": "0xc9b9cdc2092a9d6589d96662b1fd6949611163fb3910cf8a173cd060f17702f9", + "blockNumber": 1000, + "data": "0x", + "from": "0x11f4d0A3c12e86B4b5F39B213F7E19D048276DAe", + "gas": 1000, + "gasPrice": "1000", + "input": "0x3454645634534", + "nonce": 4, + "to": "0x11f4d0A3c12e86B4b5F39B213F7E19D048276DAe", + "transactionIndex": 1, + "value": "1000", + } + `) + }) + }) + describe('with valid cip42 tx', () => { + const cip42 = { + ...base, + gateWayFee: '0x3e8', + feeCurrency: '0x11f4d0a3c12e86b4b5f39b213f7e19d048276dae', + maxFeePerGas: '0x3e8', + maxPriorityFeePerGas: '0x3e8', + } + test('when valid', () => { + expect(outputCeloTxFormatter(cip42)).toMatchInlineSnapshot(` + { + "blockHash": "0xc9b9cdc2092a9d6589d96662b1fd6949611163fb3910cf8a173cd060f17702f9", + "blockNumber": 1000, + "data": "0x", + "feeCurrency": "0x11f4d0A3c12e86B4b5F39B213F7E19D048276DAe", + "from": "0x11f4d0A3c12e86B4b5F39B213F7E19D048276DAe", + "gas": 1000, + "gateWayFee": "0x3e8", + "input": "0x3454645634534", + "maxFeePerGas": "1000", + "maxPriorityFeePerGas": "1000", + "nonce": 4, + "to": "0x11f4d0A3c12e86B4b5F39B213F7E19D048276DAe", + "transactionIndex": 1, + "value": "1000", + } + `) + }) + }) + describe('with valid eip1559 tx', () => { + const eip1559 = { + ...base, + maxFeePerGas: '0x3e8', + maxPriorityFeePerGas: '0x3e8', + } + test('when valid', () => { + expect(outputCeloTxFormatter(eip1559)).toMatchInlineSnapshot(` + { + "blockHash": "0xc9b9cdc2092a9d6589d96662b1fd6949611163fb3910cf8a173cd060f17702f9", + "blockNumber": 1000, + "data": "0x", + "from": "0x11f4d0A3c12e86B4b5F39B213F7E19D048276DAe", + "gas": 1000, + "input": "0x3454645634534", + "maxFeePerGas": "1000", + "maxPriorityFeePerGas": "1000", + "nonce": 4, + "to": "0x11f4d0A3c12e86B4b5F39B213F7E19D048276DAe", + "transactionIndex": 1, + "value": "1000", + } + `) + }) + }) + describe('when properties are missing', () => { + test('without from', () => { + expect(outputCeloTxFormatter({ ...base, from: null })).toMatchInlineSnapshot(` + { + "blockHash": "0xc9b9cdc2092a9d6589d96662b1fd6949611163fb3910cf8a173cd060f17702f9", + "blockNumber": 1000, + "data": "0x", + "from": null, + "gas": 1000, + "input": "0x3454645634534", + "nonce": 4, + "to": "0x11f4d0A3c12e86B4b5F39B213F7E19D048276DAe", + "transactionIndex": 1, + "value": "1000", + } + `) + }) + test('without to', () => { + expect(outputCeloTxFormatter({ ...base, to: null })).toMatchInlineSnapshot(` + { + "blockHash": "0xc9b9cdc2092a9d6589d96662b1fd6949611163fb3910cf8a173cd060f17702f9", + "blockNumber": 1000, + "data": "0x", + "from": "0x11f4d0A3c12e86B4b5F39B213F7E19D048276DAe", + "gas": 1000, + "input": "0x3454645634534", + "nonce": 4, + "to": null, + "transactionIndex": 1, + "value": "1000", + } + `) + }) + }) +}) diff --git a/packages/sdk/connect/src/utils/formatter.ts b/packages/sdk/connect/src/utils/formatter.ts index dfe3c07f650..ebba6760dce 100644 --- a/packages/sdk/connect/src/utils/formatter.ts +++ b/packages/sdk/connect/src/utils/formatter.ts @@ -1,46 +1,85 @@ -import { ensureLeading0x, trimLeading0x } from '@celo/base/lib/address' +import { ensureLeading0x, StrongAddress, trimLeading0x } from '@celo/base/lib/address' import { isValidAddress, toChecksumAddress } from '@celo/utils/lib/address' import { sha3 } from '@celo/utils/lib/solidity' import BigNumber from 'bignumber.js' import { encode } from 'utf8' +import { AccessList } from 'web3-core' import { + AccessListRaw, Block, BlockHeader, BlockNumber, CeloTx, CeloTxPending, CeloTxReceipt, + FormattedCeloTx, + Hex, Log, } from '../types' /** * Formats the input of a transaction and converts all values to HEX */ -export function inputCeloTxFormatter(tx: CeloTx) { - tx.from = inputAddressFormatter(tx.from?.toString()) - tx.to = inputAddressFormatter(tx.to) - tx.feeCurrency = inputAddressFormatter(tx.feeCurrency) - tx.gatewayFeeRecipient = inputAddressFormatter(tx.gatewayFeeRecipient) - - if (tx.data) { - tx.data = ensureLeading0x(tx.data) - } - - if (tx.data && !isHex(tx.data)) { +export function inputCeloTxFormatter(tx: CeloTx): FormattedCeloTx { + const { + from, + chainId, + nonce, + to, + gas, + gasPrice, + maxFeePerGas, + maxPriorityFeePerGas, + feeCurrency, + gatewayFee, + gatewayFeeRecipient, + data, + value, + accessList, + common, + chain, + hardfork, + ...rest + } = tx + const formattedTX: Partial = rest + formattedTX.from = inputAddressFormatter(from?.toString()) + formattedTX.to = inputAddressFormatter(to) + + formattedTX.gas = numberToHex(gas) + + formattedTX.value = numberToHex(value?.toString()) + formattedTX.nonce = numberToHex(nonce?.toString()) + + if (feeCurrency) { + formattedTX.feeCurrency = inputAddressFormatter(feeCurrency) + } + if (gatewayFeeRecipient) { + formattedTX.gatewayFeeRecipient = inputAddressFormatter(gatewayFeeRecipient) + } + if (gatewayFee) { + formattedTX.gatewayFee = numberToHex(gatewayFee) + } + + if (data && !isHex(data)) { throw new Error('The data field must be HEX encoded data.') + } else if (data) { + formattedTX.data = ensureLeading0x(data) } - tx.gas = numberToHex(tx.gas) - tx.gasPrice = numberToHex(tx.gasPrice?.toString()) - tx.value = numberToHex(tx.value?.toString()) - // @ts-ignore - nonce is defined as number, but uses as string (web3) - tx.nonce = numberToHex(tx.nonce?.toString()) - tx.gatewayFee = numberToHex(tx.gatewayFee) - - // @ts-ignore - prune undefines - Object.keys(tx).forEach((key) => tx[key] === undefined && delete tx[key]) + if (gasPrice) { + formattedTX.gasPrice = numberToHex(gasPrice.toString()) + } + if (maxFeePerGas) { + formattedTX.maxFeePerGas = numberToHex(maxFeePerGas.toString()) + } + if (maxPriorityFeePerGas) { + formattedTX.maxPriorityFeePerGas = numberToHex(maxPriorityFeePerGas.toString()) + } + if (accessList) { + formattedTX.accessList = inputAccessListFormatter(accessList) + } - return tx + return formattedTX as FormattedCeloTx } export function outputCeloTxFormatter(tx: any): CeloTxPending { @@ -52,9 +91,21 @@ export function outputCeloTxFormatter(tx: any): CeloTxPending { } tx.nonce = hexToNumber(tx.nonce) tx.gas = hexToNumber(tx.gas) - tx.gasPrice = outputBigNumberFormatter(tx.gasPrice) tx.value = outputBigNumberFormatter(tx.value) - tx.gatewayFee = outputBigNumberFormatter(tx.gatewayFee) + + if (tx.gatewayFee) { + tx.gatewayFee = outputBigNumberFormatter(tx.gatewayFee) + } + + if (tx.gasPrice) { + tx.gasPrice = outputBigNumberFormatter(tx.gasPrice) + } + if (tx.maxFeePerGas) { + tx.maxFeePerGas = outputBigNumberFormatter(tx.maxFeePerGas) + } + if (tx.maxPriorityFeePerGas) { + tx.maxPriorityFeePerGas = outputBigNumberFormatter(tx.maxPriorityFeePerGas) + } tx.to = tx.to && isValidAddress(tx.to) @@ -132,6 +183,7 @@ export function inputBlockNumberFormatter(blockNumber: BlockNumber) { : numberToHex(blockNumber.toString())! } +// TODO prune after gingerbread hardfork export function outputBlockHeaderFormatter(blockHeader: any): BlockHeader { // transform to number blockHeader.gasLimit = hexToNumber(blockHeader.gasLimit) @@ -213,12 +265,64 @@ export function outputBigNumberFormatter(hex: string): string { return new BigNumber(hex).toString(10) } -export function inputAddressFormatter(address?: string): string | undefined { +function isHash(value: string) { + return isHex(value) && value.length === 32 +} + +export function parseAccessList(accessListRaw: AccessListRaw | undefined): AccessList { + const accessList: AccessList = [] + if (!accessListRaw) { + return accessList + } + for (const entry of accessListRaw) { + const [address, storageKeys] = entry + + throwIfInvalidAddress(address) + + accessList.push({ + address, + storageKeys: storageKeys.map((key) => { + if (isHash(key)) { + return key + } else { + // same behavior as web3 + throw new Error(`Invalid storage key: ${key}`) + } + }), + }) + } + return accessList +} + +function throwIfInvalidAddress(address: string) { + if (!isValidAddress(address)) { + throw new Error(`Invalid address: ${address}`) + } +} + +export function inputAccessListFormatter(accessList?: AccessList): AccessListRaw { + if (!accessList || accessList.length === 0) { + return [] + } + return accessList.reduce((acc, { address, storageKeys }) => { + throwIfInvalidAddress(address) + + storageKeys.forEach((storageKey) => { + if (storageKey.length - 2 !== 64) { + throw new Error(`Invalid storage key: ${storageKey}`) + } + }) + acc.push([address, storageKeys]) + return acc + }, [] as AccessListRaw) +} + +export function inputAddressFormatter(address?: string): StrongAddress | undefined { if (!address || address === '0x') { return undefined } if (isValidAddress(address)) { - return ensureLeading0x(address).toLocaleLowerCase() + return ensureLeading0x(address).toLocaleLowerCase() as StrongAddress } throw new Error(`Provided address ${address} is invalid, the capitalization checksum test failed`) } @@ -256,12 +360,12 @@ function isHexStrict(hex: string): boolean { return /^(-)?0x[0-9a-f]*$/i.test(hex) } -function numberToHex(value?: BigNumber.Value) { +function numberToHex(value?: BigNumber.Value): Hex | undefined { if (value) { const numberValue = new BigNumber(value) const result = ensureLeading0x(new BigNumber(value).toString(16)) // Seen in web3, copied just in case - return numberValue.lt(new BigNumber(0)) ? `-${result}` : result + return (numberValue.lt(new BigNumber(0)) ? `-${result}` : result) as Hex } return undefined } diff --git a/packages/sdk/connect/src/utils/tx-params-normalizer.test.ts b/packages/sdk/connect/src/utils/tx-params-normalizer.test.ts index 2bfa4b0710e..b43b01954bd 100644 --- a/packages/sdk/connect/src/utils/tx-params-normalizer.test.ts +++ b/packages/sdk/connect/src/utils/tx-params-normalizer.test.ts @@ -17,6 +17,8 @@ describe('TxParamsNormalizer class', () => { value: 1, gas: 1, gasPrice: 1, + maxFeePerGas: undefined, + maxPriorityFeePerGas: undefined, feeCurrency: undefined, gatewayFeeRecipient: '1', gatewayFee: '1', @@ -92,56 +94,50 @@ describe('TxParamsNormalizer class', () => { expect(mockGasEstimation.mock.calls.length).toBe(1) }) - /* Disabled till the coinbase issue is fixed - - test('will populate the gatewayFeeRecipient', async () => { + test('will not pop maxFeePerGas and maxPriorityFeePerGas when gasPrice is set', async () => { const celoTx: CeloTx = { ...completeCeloTx } - celoTx.gatewayFeeRecipient = undefined + celoTx.gasPrice = 1 const newCeloTx = await populator.populate(celoTx) - expect(newCeloTx.gatewayFeeRecipient).toBe('27') - expect(mockRpcCall.mock.calls.length).toBe(1) - expect(mockRpcCall.mock.calls[0][0]).toBe('eth_coinbase') + expect(newCeloTx.maxFeePerGas).toBe(undefined) + expect(newCeloTx.maxPriorityFeePerGas).toBe(undefined) }) - - test('will retrieve only once the gatewayFeeRecipient', async () => { + test('will not pop maxFeePerGas if it is set', async () => { const celoTx: CeloTx = { ...completeCeloTx } - celoTx.gatewayFeeRecipient = undefined + celoTx.maxFeePerGas = 100 const newCeloTx = await populator.populate(celoTx) - expect(newCeloTx.gatewayFeeRecipient).toBe('27') - - const newCeloTx2 = await populator.populate(celoTx) - expect(newCeloTx2.gatewayFeeRecipient).toBe('27') - - expect(mockRpcCall.mock.calls.length).toBe(1) - expect(mockRpcCall.mock.calls[0][0]).toBe('eth_coinbase') + expect(newCeloTx.maxFeePerGas).toBe(100) }) - */ - - test('will populate the gas price without fee currency', async () => { + test('will not pop maxPriorityFeePerGas if it is set', async () => { const celoTx: CeloTx = { ...completeCeloTx } - celoTx.gasPrice = undefined + celoTx.maxPriorityFeePerGas = 2000 const newCeloTx = await populator.populate(celoTx) - expect(newCeloTx.gasPrice).toBe('0x27') - expect(mockRpcCall.mock.calls.length).toBe(1) - expect(mockRpcCall.mock.calls[0][0]).toBe('eth_gasPrice') + expect(newCeloTx.maxPriorityFeePerGas).toBe(2000) }) - test('will populate the gas price with fee currency', async () => { + test('will populate the maxFeePerGas and maxPriorityFeePerGas without fee currency', async () => { const celoTx: CeloTx = { ...completeCeloTx } celoTx.gasPrice = undefined - celoTx.feeCurrency = 'celoMagic' + celoTx.maxFeePerGas = undefined + celoTx.maxPriorityFeePerGas = undefined + celoTx.feeCurrency = undefined const newCeloTx = await populator.populate(celoTx) - expect(newCeloTx.gasPrice).toBe('0x27') - expect(mockRpcCall.mock.calls[0]).toEqual(['eth_gasPrice', ['celoMagic']]) + expect(newCeloTx.maxFeePerGas).toBe('0x2f') + expect(newCeloTx.maxPriorityFeePerGas).toBe('0x27') + expect(mockRpcCall.mock.calls[0]).toEqual(['eth_gasPrice', []]) + expect(mockRpcCall.mock.calls[1]).toEqual(['eth_maxPriorityFeePerGas', []]) }) - test('will not populate the gas price when fee currency is undefined', async () => { + test('will populate the maxFeePerGas and maxPriorityFeePerGas with fee currency', async () => { const celoTx: CeloTx = { ...completeCeloTx } celoTx.gasPrice = undefined - celoTx.feeCurrency = undefined + celoTx.maxFeePerGas = undefined + celoTx.maxPriorityFeePerGas = undefined + celoTx.feeCurrency = 'celoMagic' const newCeloTx = await populator.populate(celoTx) - expect(newCeloTx.gasPrice).toBe('0x27') - expect(mockRpcCall.mock.calls[0]).toEqual(['eth_gasPrice', []]) + expect(newCeloTx.maxFeePerGas).toBe('0x2f') + expect(newCeloTx.maxPriorityFeePerGas).toBe('0x27') + expect(mockRpcCall.mock.calls[0]).toEqual(['eth_gasPrice', ['celoMagic']]) + expect(mockRpcCall.mock.calls[1]).toEqual(['eth_maxPriorityFeePerGas', []]) }) }) }) diff --git a/packages/sdk/connect/src/utils/tx-params-normalizer.ts b/packages/sdk/connect/src/utils/tx-params-normalizer.ts index 7ef8168f67b..986bd3d4b6e 100644 --- a/packages/sdk/connect/src/utils/tx-params-normalizer.ts +++ b/packages/sdk/connect/src/utils/tx-params-normalizer.ts @@ -1,3 +1,4 @@ +import BigNumber from 'bignumber.js' import { Connection } from '../connection' import { CeloTx } from '../types' @@ -10,6 +11,9 @@ function isEmpty(value: string | undefined) { value.toLowerCase() === '0x0' ) } +function isPresent(value: string | undefined) { + return !isEmpty(value) +} export class TxParamsNormalizer { private chainId: number | null = null @@ -20,20 +24,73 @@ export class TxParamsNormalizer { public async populate(celoTxParams: CeloTx): Promise { const txParams = { ...celoTxParams } - if (txParams.chainId == null) { - txParams.chainId = await this.getChainId() + if (isPresent(txParams.gatewayFeeRecipient) || isPresent(txParams.gatewayFee)) { + console.warn( + 'Gateway fee has been deprecated and will be removed see: https://github.com/celo-org/celo-proposals/blob/master/CIPs/cip-0057.md' + ) } - if (txParams.nonce == null) { - txParams.nonce = await this.connection.nonce(txParams.from!.toString()) - } + const [chainId, nonce, gas, maxFeePerGas] = await Promise.all( + [ + async () => { + if (txParams.chainId == null) { + return this.getChainId() + } + return txParams.chainId + }, + async () => { + if (txParams.nonce == null) { + return this.connection.nonce(txParams.from!.toString()) + } + return txParams.nonce + }, + async () => { + if (!txParams.gas || isEmpty(txParams.gas.toString())) { + return this.connection.estimateGas(txParams) + } + return txParams.gas + }, + async () => { + // if gasPrice is not set and maxFeePerGas is not set, set maxFeePerGas + if ( + isEmpty(txParams.gasPrice?.toString()) && + isEmpty(txParams.maxFeePerGas?.toString()) + ) { + const suggestedPrice = await this.connection.gasPrice(txParams.feeCurrency) + // add small buffer to suggested price like other libraries do + const priceWithRoom = new BigNumber(suggestedPrice) + .times(120) + .dividedBy(100) + .integerValue() + .toString(16) + return `0x${priceWithRoom}` + } + return txParams.maxFeePerGas + }, + ].map(async (fn) => fn()) + ) + txParams.chainId = chainId as number + txParams.nonce = nonce as number + txParams.gas = gas as string + txParams.maxFeePerGas = maxFeePerGas - if (!txParams.gas || isEmpty(txParams.gas.toString())) { - txParams.gas = await this.connection.estimateGas(txParams) + // need to wait until after gas price has been handled + // if maxFeePerGas is set make sure maxPriorityFeePerGas is also set + if ( + isPresent(txParams.maxFeePerGas?.toString()) && + isEmpty(txParams.maxPriorityFeePerGas?.toString()) + ) { + const clientMaxPriorityFeePerGas = await this.connection.rpcCaller.call( + 'eth_maxPriorityFeePerGas', + [] + ) + txParams.maxPriorityFeePerGas = clientMaxPriorityFeePerGas.result } - if (!txParams.gasPrice || isEmpty(txParams.gasPrice.toString())) { - txParams.gasPrice = await this.connection.gasPrice(txParams.feeCurrency) + // remove gasPrice if maxFeePerGas is set + if (isPresent(txParams.gasPrice?.toString()) && isPresent(txParams.maxFeePerGas?.toString())) { + txParams.gasPrice = undefined + delete txParams.gasPrice } return txParams diff --git a/packages/sdk/contractkit/package.json b/packages/sdk/contractkit/package.json index 11ae3796afd..4f15b54875b 100644 --- a/packages/sdk/contractkit/package.json +++ b/packages/sdk/contractkit/package.json @@ -1,6 +1,6 @@ { "name": "@celo/contractkit", - "version": "4.1.2-dev", + "version": "5.0.3-dev", "description": "Celo's ContractKit to interact with Celo network", "main": "./lib/index.js", "types": "./lib/index.d.ts", @@ -29,10 +29,10 @@ "lint": "tslint -c tslint.json --project ." }, "dependencies": { - "@celo/base": "4.1.2-dev", - "@celo/connect": "4.1.2-dev", - "@celo/utils": "4.1.2-dev", - "@celo/wallet-local": "4.1.2-dev", + "@celo/base": "5.0.3-dev", + "@celo/connect": "5.0.3-dev", + "@celo/utils": "5.0.3-dev", + "@celo/wallet-local": "5.0.3-dev", "@types/bn.js": "^5.1.0", "@types/debug": "^4.1.5", "bignumber.js": "^9.0.0", @@ -44,7 +44,7 @@ "web3": "1.10.0" }, "devDependencies": { - "@celo/phone-utils": "4.1.2-dev", + "@celo/phone-utils": "5.0.3-dev", "@celo/dev-utils": "0.0.1-dev", "@celo/protocol": "1.0.0", "@types/debug": "^4.1.5", diff --git a/packages/sdk/contractkit/src/kit.test.ts b/packages/sdk/contractkit/src/kit.test.ts index 951e7fd056a..f2d76946676 100644 --- a/packages/sdk/contractkit/src/kit.test.ts +++ b/packages/sdk/contractkit/src/kit.test.ts @@ -1,5 +1,4 @@ import { CeloTx, CeloTxObject, CeloTxReceipt, JsonRpcPayload, PromiEvent } from '@celo/connect' -import { BigNumber } from 'bignumber.js' import Web3 from 'web3' import { HttpProvider } from 'web3-core' import { newKitFromWeb3 as newFullKitFromWeb3, newKitWithApiKey } from './kit' @@ -79,31 +78,46 @@ export function txoStub(): TransactionObjectStub { const txo = txoStub() await kit.connection.sendTransactionObject(txo, { gas: 555, from: '0xAAFFF' }) expect(txo.send).toBeCalledWith({ - gasPrice: '0', + feeCurrency: undefined, gas: 555, from: '0xAAFFF', }) }) - }) -}) -test('should retrieve currency gasPrice with feeCurrency', async () => { - const kit = newFullKitFromWeb3(new Web3('http://')) + test('works with maxFeePerGas and maxPriorityFeePerGas', async () => { + const txo = txoStub() + await kit.connection.sendTransactionObject(txo, { + gas: 1000, + maxFeePerGas: 555, + maxPriorityFeePerGas: 555, + from: '0xAAFFF', + }) + expect(txo.send).toBeCalledWith({ + feeCurrency: undefined, + maxFeePerGas: 555, + maxPriorityFeePerGas: 555, + gas: 1000, + from: '0xAAFFF', + }) + }) - const txo = txoStub() - const gasPrice = 100 - const getGasPriceMin = jest.fn().mockImplementation(() => ({ - getGasPriceMinimum() { - return new BigNumber(gasPrice) - }, - })) - kit.contracts.getGasPriceMinimum = getGasPriceMin.bind(kit.contracts) - await kit.updateGasPriceInConnectionLayer('XXX') - const options: CeloTx = { gas: 555, feeCurrency: 'XXX', from: '0xAAFFF' } - await kit.connection.sendTransactionObject(txo, options) - expect(txo.send).toBeCalledWith({ - gasPrice: `${gasPrice * 5}`, - ...options, + test('when maxFeePerGas and maxPriorityFeePerGas and feeCurrency', async () => { + const txo = txoStub() + await kit.connection.sendTransactionObject(txo, { + gas: 1000, + maxFeePerGas: 555, + maxPriorityFeePerGas: 555, + feeCurrency: '0xe8537a3d056da446677b9e9d6c5db704eaab4787', + from: '0xAAFFF', + }) + expect(txo.send).toBeCalledWith({ + gas: 1000, + maxFeePerGas: 555, + maxPriorityFeePerGas: 555, + feeCurrency: '0xe8537a3d056da446677b9e9d6c5db704eaab4787', + from: '0xAAFFF', + }) + }) }) }) diff --git a/packages/sdk/contractkit/src/kit.ts b/packages/sdk/contractkit/src/kit.ts index 49ec754fc21..bd4061fc8f3 100644 --- a/packages/sdk/contractkit/src/kit.ts +++ b/packages/sdk/contractkit/src/kit.ts @@ -109,9 +109,6 @@ export class ContractKit { /** helper for interacting with CELO & stable tokens */ readonly celoTokens: CeloTokens - /** @deprecated no longer needed since gasPrice is available on node rpc */ - gasPriceSuggestionMultiplier = 5 - constructor(readonly connection: Connection) { this.registry = new AddressRegistry(connection) this._web3Contracts = new Web3ContractCache(this.registry) @@ -200,20 +197,9 @@ export class ContractKit { tokenContract === CeloContract.GoldToken ? undefined : await this.registry.addressFor(tokenContract) - if (address) { - await this.updateGasPriceInConnectionLayer(address) - } this.connection.defaultFeeCurrency = address } - /** @deprecated no longer needed since gasPrice is available on node rpc */ - async updateGasPriceInConnectionLayer(currency: Address) { - const gasPriceMinimum = await this.contracts.getGasPriceMinimum() - const rawGasPrice = await gasPriceMinimum.getGasPriceMinimum(currency) - const gasPrice = rawGasPrice.multipliedBy(this.gasPriceSuggestionMultiplier).toFixed() - await this.connection.setGasPriceForCurrency(currency, gasPrice) - } - async getEpochSize(): Promise { const blockchainParamsWrapper = await this.contracts.getBlockchainParameters() return blockchainParamsWrapper.getEpochSizeNumber() @@ -258,14 +244,6 @@ export class ContractKit { return this.connection.defaultGasInflationFactor } - set gasPrice(price: number) { - this.connection.defaultGasPrice = price - } - - get gasPrice() { - return this.connection.defaultGasPrice - } - set defaultFeeCurrency(address: Address | undefined) { this.connection.defaultFeeCurrency = address } @@ -281,13 +259,6 @@ export class ContractKit { isSyncing(): Promise { return this.connection.isSyncing() } - /** @deprecated no longer needed since gasPrice is available on node rpc */ - async fillGasPrice(tx: CeloTx): Promise { - if (tx.feeCurrency && tx.gasPrice === '0') { - await this.updateGasPriceInConnectionLayer(tx.feeCurrency) - } - return this.connection.fillGasPrice(tx) - } async sendTransaction(tx: CeloTx): Promise { return this.connection.sendTransaction(tx) diff --git a/packages/sdk/cryptographic-utils/package.json b/packages/sdk/cryptographic-utils/package.json index 0bbada347de..46eb3b50000 100644 --- a/packages/sdk/cryptographic-utils/package.json +++ b/packages/sdk/cryptographic-utils/package.json @@ -1,6 +1,6 @@ { "name": "@celo/cryptographic-utils", - "version": "4.1.2-dev", + "version": "5.0.3-dev", "description": "Some Celo utils for comment/data encryption, bls, and mnemonics", "author": "Celo", "license": "Apache-2.0", @@ -22,9 +22,9 @@ "lib/**/*" ], "dependencies": { - "@celo/utils": "4.1.2-dev", + "@celo/utils": "5.0.3-dev", "@celo/bls12377js": "0.1.1", - "@celo/base": "4.1.2-dev", + "@celo/base": "5.0.3-dev", "@ethereumjs/util": "8.0.5", "@types/bn.js": "^5.1.0", "@types/elliptic": "^6.4.9", diff --git a/packages/sdk/encrypted-backup/package.json b/packages/sdk/encrypted-backup/package.json index 2c8c9ebe94e..416a4622484 100644 --- a/packages/sdk/encrypted-backup/package.json +++ b/packages/sdk/encrypted-backup/package.json @@ -1,6 +1,6 @@ { "name": "@celo/encrypted-backup", - "version": "4.1.2-dev", + "version": "5.0.3-dev", "description": "Libraries for implemented password encrypted account backups", "main": "./lib/index.js", "types": "./lib/index.d.ts", @@ -25,11 +25,11 @@ "prepublishOnly": "yarn build" }, "dependencies": { - "@celo/base": "4.1.2-dev", - "@celo/identity": "4.1.2-dev", - "@celo/phone-number-privacy-common": "^3.0.1-dev", + "@celo/base": "5.0.3-dev", + "@celo/identity": "5.0.3-dev", + "@celo/phone-number-privacy-common": "^3.0.3", "@celo/poprf": "^0.1.9", - "@celo/utils": "4.1.2-dev", + "@celo/utils": "5.0.3-dev", "@types/debug": "^4.1.5", "debug": "^4.1.1", "fp-ts": "2.1.1", diff --git a/packages/sdk/explorer/package.json b/packages/sdk/explorer/package.json index 751094b0b78..3158c105185 100644 --- a/packages/sdk/explorer/package.json +++ b/packages/sdk/explorer/package.json @@ -1,6 +1,6 @@ { "name": "@celo/explorer", - "version": "4.1.2-dev", + "version": "5.0.3-dev", "description": "Celo's block explorer consumer", "main": "./lib/index.js", "types": "./lib/index.d.ts", @@ -22,10 +22,10 @@ "prepublishOnly": "yarn build" }, "dependencies": { - "@celo/base": "4.1.2-dev", - "@celo/connect": "4.1.2-dev", - "@celo/contractkit": "4.1.2-dev", - "@celo/utils": "4.1.2-dev", + "@celo/base": "5.0.3-dev", + "@celo/connect": "5.0.3-dev", + "@celo/contractkit": "5.0.3-dev", + "@celo/utils": "5.0.3-dev", "@types/debug": "^4.1.5", "cross-fetch": "3.0.6", "debug": "^4.1.1" diff --git a/packages/sdk/governance/package.json b/packages/sdk/governance/package.json index 5ddc9289c03..7f2eb1b7174 100644 --- a/packages/sdk/governance/package.json +++ b/packages/sdk/governance/package.json @@ -1,6 +1,6 @@ { "name": "@celo/governance", - "version": "4.1.2-dev", + "version": "5.0.3-dev", "description": "Celo's governance proposals", "main": "./lib/index.js", "types": "./lib/index.d.ts", @@ -21,11 +21,11 @@ "prepublishOnly": "yarn build" }, "dependencies": { - "@celo/base": "4.1.2-dev", - "@celo/utils": "4.1.2-dev", - "@celo/connect": "4.1.2-dev", - "@celo/contractkit": "4.1.2-dev", - "@celo/explorer": "4.1.2-dev", + "@celo/base": "5.0.3-dev", + "@celo/utils": "5.0.3-dev", + "@celo/connect": "5.0.3-dev", + "@celo/contractkit": "5.0.3-dev", + "@celo/explorer": "5.0.3-dev", "@ethereumjs/util": "8.0.5", "@types/debug": "^4.1.5", "@types/inquirer": "^6.5.0", diff --git a/packages/sdk/identity/package.json b/packages/sdk/identity/package.json index 304278231f7..04064ee4160 100644 --- a/packages/sdk/identity/package.json +++ b/packages/sdk/identity/package.json @@ -1,6 +1,6 @@ { "name": "@celo/identity", - "version": "4.1.2-dev", + "version": "5.0.3-dev", "description": "Utilities for interacting with Celo's identity protocol", "main": "./lib/index.js", "types": "./lib/index.d.ts", @@ -25,10 +25,10 @@ "prepublishOnly": "yarn build" }, "dependencies": { - "@celo/base": "4.1.2-dev", - "@celo/utils": "4.1.2-dev", - "@celo/contractkit": "4.1.2-dev", - "@celo/phone-number-privacy-common": "^3.0.1-dev", + "@celo/base": "5.0.3-dev", + "@celo/utils": "5.0.3-dev", + "@celo/contractkit": "5.0.3-dev", + "@celo/phone-number-privacy-common": "^3.0.3", "@types/debug": "^4.1.5", "bignumber.js": "^9.0.0", "blind-threshold-bls": "https://github.com/celo-org/blind-threshold-bls-wasm#e1e2f8a", @@ -41,7 +41,7 @@ }, "devDependencies": { "@celo/dev-utils": "0.0.1-dev", - "@celo/wallet-local": "4.1.2-dev", + "@celo/wallet-local": "5.0.3-dev", "@types/elliptic": "^6.4.12", "fetch-mock": "9.10.4", "ganache": "npm:@celo/ganache@7.8.0-unofficial.0", diff --git a/packages/sdk/keystores/package.json b/packages/sdk/keystores/package.json index d15a241ef1f..6f92d017950 100644 --- a/packages/sdk/keystores/package.json +++ b/packages/sdk/keystores/package.json @@ -1,6 +1,6 @@ { "name": "@celo/keystores", - "version": "4.1.2-dev", + "version": "5.0.3-dev", "description": "keystore implementation", "author": "Celo", "license": "Apache-2.0", @@ -22,8 +22,8 @@ "prepublishOnly": "yarn build" }, "dependencies": { - "@celo/utils": "4.1.2-dev", - "@celo/wallet-local": "4.1.2-dev", + "@celo/utils": "5.0.3-dev", + "@celo/wallet-local": "5.0.3-dev", "ethereumjs-wallet": "^1.0.1" }, "devDependencies": { diff --git a/packages/sdk/network-utils/package.json b/packages/sdk/network-utils/package.json index 85e8bf560a2..080861ca120 100644 --- a/packages/sdk/network-utils/package.json +++ b/packages/sdk/network-utils/package.json @@ -1,6 +1,6 @@ { "name": "@celo/network-utils", - "version": "4.1.2-dev", + "version": "5.0.3-dev", "description": "Utilities for fetching static information about the Celo network", "main": "./lib/index.js", "types": "./lib/index.d.ts", diff --git a/packages/sdk/phone-utils/package.json b/packages/sdk/phone-utils/package.json index ff50fc223f3..d47b5a40612 100644 --- a/packages/sdk/phone-utils/package.json +++ b/packages/sdk/phone-utils/package.json @@ -1,6 +1,6 @@ { "name": "@celo/phone-utils", - "version": "4.1.2-dev", + "version": "5.0.3-dev", "description": "Celo phone utils", "author": "Celo", "license": "Apache-2.0", @@ -22,8 +22,8 @@ "lib/**/*" ], "dependencies": { - "@celo/base": "4.1.2-dev", - "@celo/utils": "4.1.2-dev", + "@celo/base": "5.0.3-dev", + "@celo/utils": "5.0.3-dev", "@types/country-data": "^0.0.0", "@types/google-libphonenumber": "^7.4.23", "@types/node": "^10.12.18", diff --git a/packages/sdk/transactions-uri/package.json b/packages/sdk/transactions-uri/package.json index d50c8cb5f04..d315eac4596 100644 --- a/packages/sdk/transactions-uri/package.json +++ b/packages/sdk/transactions-uri/package.json @@ -1,6 +1,6 @@ { "name": "@celo/transactions-uri", - "version": "4.1.2-dev", + "version": "5.0.3-dev", "description": "Celo's transactions uri generation", "main": "./lib/index.js", "types": "./lib/index.d.ts", @@ -26,15 +26,15 @@ "dependencies": { "@types/debug": "^4.1.5", "@types/qrcode": "^1.3.4", - "@celo/base": "4.1.2-dev", - "@celo/connect": "4.1.2-dev", + "@celo/base": "5.0.3-dev", + "@celo/connect": "5.0.3-dev", "bn.js": "4.11.9", "qrcode": "1.4.4", "web3-eth-abi": "1.10.0" }, "devDependencies": { "@celo/dev-utils": "0.0.1-dev", - "@celo/contractkit": "4.1.2-dev", + "@celo/contractkit": "5.0.3-dev", "dotenv": "^8.2.0" }, "engines": { diff --git a/packages/sdk/utils/package.json b/packages/sdk/utils/package.json index 7977f28d9bc..e4c9f240bcb 100644 --- a/packages/sdk/utils/package.json +++ b/packages/sdk/utils/package.json @@ -1,6 +1,6 @@ { "name": "@celo/utils", - "version": "4.1.2-dev", + "version": "5.0.3-dev", "description": "Celo common utils", "author": "Celo", "license": "Apache-2.0", @@ -22,7 +22,7 @@ "lib/**/*" ], "dependencies": { - "@celo/base": "4.1.2-dev", + "@celo/base": "5.0.3-dev", "@ethereumjs/util": "8.0.5", "@types/bn.js": "^5.1.0", "@types/elliptic": "^6.4.9", diff --git a/packages/sdk/wallets/wallet-base/jest.config.js b/packages/sdk/wallets/wallet-base/jest.config.js new file mode 100644 index 00000000000..2681a75d5a6 --- /dev/null +++ b/packages/sdk/wallets/wallet-base/jest.config.js @@ -0,0 +1,5 @@ +module.exports = { + preset: 'ts-jest', + testEnvironment: 'node', + testMatch: ['/src/**/?(*.)+(spec|test).ts?(x)'], +} diff --git a/packages/sdk/wallets/wallet-base/package.json b/packages/sdk/wallets/wallet-base/package.json index 5ff32097b5a..53ac7ceaabb 100644 --- a/packages/sdk/wallets/wallet-base/package.json +++ b/packages/sdk/wallets/wallet-base/package.json @@ -1,6 +1,6 @@ { "name": "@celo/wallet-base", - "version": "4.1.2-dev", + "version": "5.0.3-dev", "description": "Wallet base implementation", "author": "Celo", "license": "Apache-2.0", @@ -21,11 +21,15 @@ "lint": "tslint -c tslint.json --project .", "prepublishOnly": "yarn build" }, + "devDependencies": { + "viem": "~1.5.4" + }, "dependencies": { - "@celo/connect": "4.1.2-dev", - "@celo/base": "4.1.2-dev", - "@celo/utils": "4.1.2-dev", + "@celo/connect": "5.0.3-dev", + "@celo/base": "5.0.3-dev", + "@celo/utils": "5.0.3-dev", "@ethereumjs/util": "8.0.5", + "ethereum-cryptography": "^2.1.2", "@types/debug": "^4.1.5", "bignumber.js": "^9.0.0", "debug": "^4.1.1", diff --git a/packages/sdk/wallets/wallet-base/src/signing-utils.test.ts b/packages/sdk/wallets/wallet-base/src/signing-utils.test.ts new file mode 100644 index 00000000000..ed2ebb402f7 --- /dev/null +++ b/packages/sdk/wallets/wallet-base/src/signing-utils.test.ts @@ -0,0 +1,602 @@ +import { CeloTx } from '@celo/connect' +import { normalizeAddressWith0x, privateKeyToAddress } from '@celo/utils/lib/address' +import { parseTransaction, serializeTransaction } from 'viem' +import { privateKeyToAccount } from 'viem/accounts' +import { celo } from 'viem/chains' +import Web3 from 'web3' +import { + extractSignature, + getSignerFromTxCIP42, + isPriceToLow, + recoverTransaction, + rlpEncodedTx, + stringNumberOrBNToHex, +} from './signing-utils' +const PRIVATE_KEY1 = '0x1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef' +const ACCOUNT_ADDRESS1 = normalizeAddressWith0x(privateKeyToAddress(PRIVATE_KEY1)) as `0x${string}` + +describe('rlpEncodedTx', () => { + describe('legacy', () => { + const legacyTransaction = { + feeCurrency: '0x5409ED021D9299bf6814279A6A1411A7e866A631', + from: ACCOUNT_ADDRESS1, + to: ACCOUNT_ADDRESS1, + chainId: 2, + value: Web3.utils.toWei('1000', 'ether'), + nonce: 1, + gas: '1500000000', + gasPrice: '9900000000', + data: '0xabcdef', + } + it('convert CeloTx into RLP', () => { + const transaction = { + ...legacyTransaction, + } + const result = rlpEncodedTx(transaction) + expect(result).toMatchInlineSnapshot(` + { + "rlpEncode": "0xf8490185024e1603008459682f00945409ed021d9299bf6814279a6a1411a7e866a6318080941be31a94361a391bbafb2a4ccd704f57dc04d4bb893635c9adc5dea0000083abcdef028080", + "transaction": { + "chainId": 2, + "data": "0xabcdef", + "feeCurrency": "0x5409ed021d9299bf6814279a6a1411a7e866a631", + "from": "0x1be31a94361a391bbafb2a4ccd704f57dc04d4bb", + "gas": "0x59682f00", + "gasPrice": "0x024e160300", + "gatewayFee": "0x", + "gatewayFeeRecipient": "0x", + "maxFeePerGas": "0x", + "maxPriorityFeePerGas": "0x", + "nonce": 1, + "to": "0x1be31a94361a391bbafb2a4ccd704f57dc04d4bb", + "value": "0x3635c9adc5dea00000", + }, + "type": "celo-legacy", + } + `) + }) + + describe('when chainId / gasPrice / nonce is invalid', () => { + it('chainId is not a positive number it throws error', () => { + const transaction = { + ...legacyTransaction, + chainId: -1, + } + expect(() => rlpEncodedTx(transaction)).toThrowErrorMatchingInlineSnapshot( + `"Gas, nonce or chainId is less than than 0"` + ) + }) + it('gasPrice is not a positive number it throws error', () => { + const transaction = { + ...legacyTransaction, + gasPrice: -1, + } + expect(() => rlpEncodedTx(transaction)).toThrowErrorMatchingInlineSnapshot( + `"GasPrice or maxFeePerGas or maxPriorityFeePerGas is less than than 0"` + ) + }) + it('nonce is not a positive number it throws error', () => { + const transaction = { + ...legacyTransaction, + nonce: -1, + } + expect(() => rlpEncodedTx(transaction)).toThrowErrorMatchingInlineSnapshot( + `"Gas, nonce or chainId is less than than 0"` + ) + }) + it('gas is not a positive number it throws error', () => { + const transaction = { + ...legacyTransaction, + gas: -1, + } + expect(() => rlpEncodedTx(transaction)).toThrowErrorMatchingInlineSnapshot( + `"Gas, nonce or chainId is less than than 0"` + ) + }) + }) + }) + + describe('when no gas fields are provided', () => { + it('throws an error', () => { + expect(() => rlpEncodedTx({})).toThrowErrorMatchingInlineSnapshot(`""gas" is missing"`) + }) + }) + + describe('EIP1559 / CIP42', () => { + const eip1559Transaction: CeloTx = { + from: ACCOUNT_ADDRESS1, + to: ACCOUNT_ADDRESS1, + chainId: 2, + value: Web3.utils.toWei('1000', 'ether'), + nonce: 0, + maxFeePerGas: '10', + maxPriorityFeePerGas: '99', + gas: '99', + data: '0xabcdef', + } + + describe('when maxFeePerGas is to low', () => { + it('throws an error', () => { + const transaction = { + ...eip1559Transaction, + maxFeePerGas: Web3.utils.toBN('-5'), + } + expect(() => rlpEncodedTx(transaction)).toThrowErrorMatchingInlineSnapshot( + `"GasPrice or maxFeePerGas or maxPriorityFeePerGas is less than than 0"` + ) + }) + }) + describe('when maxPriorityFeePerGas is to low', () => { + it('throws an error', () => { + const transaction = { + ...eip1559Transaction, + maxPriorityFeePerGas: Web3.utils.toBN('-5'), + } + expect(() => rlpEncodedTx(transaction)).toThrowErrorMatchingInlineSnapshot( + `"GasPrice or maxFeePerGas or maxPriorityFeePerGas is less than than 0"` + ) + }) + }) + + describe('when maxFeePerGas and maxPriorityFeePerGas and feeCurrency are provided', () => { + it('orders fields in RLP as specified by CIP42', () => { + const CIP42Transaction = { + ...eip1559Transaction, + feeCurrency: '0x5409ED021D9299bf6814279A6A1411A7e866A631', + } + const result = rlpEncodedTx(CIP42Transaction) + expect(result).toMatchInlineSnapshot(` + { + "rlpEncode": "0x7cf8400280630a63945409ed021d9299bf6814279a6a1411a7e866a6318080941be31a94361a391bbafb2a4ccd704f57dc04d4bb893635c9adc5dea0000083abcdefc0", + "transaction": { + "chainId": 2, + "data": "0xabcdef", + "feeCurrency": "0x5409ed021d9299bf6814279a6a1411a7e866a631", + "from": "0x1be31a94361a391bbafb2a4ccd704f57dc04d4bb", + "gas": "0x63", + "gasPrice": "0x", + "gatewayFee": "0x", + "gatewayFeeRecipient": "0x", + "maxFeePerGas": "0x0a", + "maxPriorityFeePerGas": "0x63", + "nonce": 0, + "to": "0x1be31a94361a391bbafb2a4ccd704f57dc04d4bb", + "value": "0x3635c9adc5dea00000", + }, + "type": "cip42", + } + `) + }) + }) + + describe('when maxFeePerGas and maxPriorityFeePerGas are provided', () => { + it('orders fields in RLP as specified by EIP1559', () => { + const CIP42Transaction = { + ...eip1559Transaction, + feeCurrency: '0x5409ED021D9299bf6814279A6A1411A7e866A631', + } + const result = rlpEncodedTx(CIP42Transaction) + expect(result).toMatchInlineSnapshot(` + { + "rlpEncode": "0x7cf8400280630a63945409ed021d9299bf6814279a6a1411a7e866a6318080941be31a94361a391bbafb2a4ccd704f57dc04d4bb893635c9adc5dea0000083abcdefc0", + "transaction": { + "chainId": 2, + "data": "0xabcdef", + "feeCurrency": "0x5409ed021d9299bf6814279a6a1411a7e866a631", + "from": "0x1be31a94361a391bbafb2a4ccd704f57dc04d4bb", + "gas": "0x63", + "gasPrice": "0x", + "gatewayFee": "0x", + "gatewayFeeRecipient": "0x", + "maxFeePerGas": "0x0a", + "maxPriorityFeePerGas": "0x63", + "nonce": 0, + "to": "0x1be31a94361a391bbafb2a4ccd704f57dc04d4bb", + "value": "0x3635c9adc5dea00000", + }, + "type": "cip42", + } + `) + }) + }) + }) + describe('compared to viem', () => { + it('matches output of viem serializeTransaction with accessList', () => { + const tx = { + type: 'eip1559' as const, + from: ACCOUNT_ADDRESS1, + to: ACCOUNT_ADDRESS1, + chainId: 2, + value: Web3.utils.toWei('1000', 'ether'), + nonce: 0, + maxFeePerGas: '1000', + maxPriorityFeePerGas: '99', + gas: '9900', + data: '0xabcdef' as const, + accessList: [ + { + address: '0x0000000000000000000000000000000000000000' as const, + storageKeys: [ + '0x0000000000000000000000000000000000000000000000000000000000000001' as const, + '0x60fdd29ff912ce880cd3edaf9f932dc61d3dae823ea77e0323f94adb9f6a72fe' as const, + ], + }, + ], + } + const txViem = { + ...tx, + gas: BigInt(tx.gas), + maxFeePerGas: BigInt(tx.maxFeePerGas), + maxPriorityFeePerGas: BigInt(tx.maxPriorityFeePerGas), + value: BigInt(tx.value), + } + const viemSerialized = serializeTransaction(txViem) + const serialized = rlpEncodedTx(tx) + + const parsedCK = parseTransaction(serialized.rlpEncode) + const parsedViem = parseTransaction(viemSerialized) + expect(parsedCK).toEqual(parsedViem) + expect(serialized.rlpEncode).toEqual(viemSerialized) + }) + it('matches output of viem serializeTransaction without accessList', () => { + const tx = { + type: 'eip1559' as const, + from: ACCOUNT_ADDRESS1, + to: ACCOUNT_ADDRESS1, + chainId: 2, + value: Web3.utils.toWei('1000', 'ether'), + nonce: 0, + maxFeePerGas: '1000', + maxPriorityFeePerGas: '99', + gas: '9900', + data: '0xabcdef' as const, + } + const txViem = { + ...tx, + gas: BigInt(tx.gas), + maxFeePerGas: BigInt(tx.maxFeePerGas), + maxPriorityFeePerGas: BigInt(tx.maxPriorityFeePerGas), + value: BigInt(tx.value), + } + const viemSerialized = serializeTransaction(txViem) + const serialized = rlpEncodedTx(tx) + + const parsedCK = parseTransaction(serialized.rlpEncode) + const parsedViem = parseTransaction(viemSerialized) + expect(parsedCK).toEqual(parsedViem) + expect(serialized.rlpEncode).toEqual(viemSerialized) + }) + }) +}) + +function ckToViem(tx: CeloTx & { v?: number }) { + return { + ...tx, + gas: BigInt(tx.gas!), + maxFeePerGas: BigInt(tx.maxFeePerGas?.toString()!), + maxPriorityFeePerGas: BigInt(tx.maxPriorityFeePerGas?.toString()!), + value: BigInt(tx.value?.toString()!), + v: BigInt(tx.v?.toString()! === '0x' ? 0 : tx.v?.toString()!), + } +} + +describe('recoverTransaction', () => { + const ACCOUNT_ADDRESS1 = privateKeyToAddress(PRIVATE_KEY1) + describe('with EIP1559 transactions', () => { + test('ok', async () => { + const account = privateKeyToAccount(PRIVATE_KEY1) + const hash = await account.signTransaction({ + type: 'eip1559' as const, + from: ACCOUNT_ADDRESS1, + to: ACCOUNT_ADDRESS1 as `0x${string}`, + chainId: 2, + value: BigInt(1000), + nonce: 0, + maxFeePerGas: BigInt('1000'), + maxPriorityFeePerGas: BigInt('99'), + gas: BigInt('9900'), + data: '0xabcdef' as const, + }) + + const [transaction, signer] = recoverTransaction(hash) + expect(signer).toEqual(ACCOUNT_ADDRESS1) + expect(transaction).toMatchInlineSnapshot(` + { + "accessList": [], + "chainId": 2, + "data": "0xabcdef", + "gas": 9900, + "maxFeePerGas": 1000, + "maxPriorityFeePerGas": 99, + "nonce": 0, + "r": "0x04ddb2c87a6e0f77aa25da7439c72f978541f74fa1bd20becf2e109301d2f85c", + "s": "0x2d91eec5c0abca75d4df8322677bf43306e90172b77914494bbb7641b6dfc7e9", + "to": "0x1be31a94361a391bbafb2a4ccd704f57dc04d4bb", + "type": "eip1559", + "v": 28, + "value": 1000, + "yParity": 1, + } + `) + }) + + it('matches output of viem parseTransaction', () => { + const encodedByCK1559TX = + // from packages/sdk/wallets/wallet-local/src/local-wallet.test.ts:211 -- when calling signTransaction succeeds with eip1559 + '0x02f86d82ad5a8063630a94588e4b68193001e4d10928660ab4165b813717c0880de0b6b3a764000083abcdefc080a02c61b97c545c0a59732adbc497e944818da323a508930996383751d17e0b932ea015666dce65f074f12335ab78e1912f8b83fda75f05a002943459598712e6b17c' + const [transaction, signer] = recoverTransaction(encodedByCK1559TX) + const parsed = parseTransaction(encodedByCK1559TX) + + expect(ckToViem(transaction)).toMatchObject(parsed) + expect(signer).toMatchInlineSnapshot(`"0x1Be31A94361a391bBaFB2a4CCd704F57dc04d4bb"`) + }) + it('can recover (parse) transactions signed by viem', () => { + // stolen from viems's default eip1559 test result viem/src/accounts/utils/signTransaction.test.ts + const encodedByViem1559TX = + '0x02f850018203118080825208808080c080a04012522854168b27e5dc3d5839bab5e6b39e1a0ffd343901ce1622e3d64b48f1a04e00902ae0502c4728cbf12156290df99c3ed7de85b1dbfe20b5c36931733a33' + const recovered = recoverTransaction(encodedByViem1559TX) + expect(recovered).toMatchInlineSnapshot(` + [ + { + "accessList": [], + "chainId": 1, + "data": "0x", + "gas": 21000, + "maxFeePerGas": 0, + "maxPriorityFeePerGas": 0, + "nonce": 785, + "r": "0x4012522854168b27e5dc3d5839bab5e6b39e1a0ffd343901ce1622e3d64b48f1", + "s": "0x4e00902ae0502c4728cbf12156290df99c3ed7de85b1dbfe20b5c36931733a33", + "to": "0x", + "type": "eip1559", + "v": 27, + "value": 0, + "yParity": 0, + }, + "0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266", + ] + `) + }) + }) + it('handles celo-legacy transactions', () => { + const celoLegacyTx = + '0xf88480630a80941be31a94361a391bbafb2a4ccd704f57dc04d4bb82567894588e4b68193001e4d10928660ab4165b813717c0880de0b6b3a764000083abcdef83015ad8a09e121a99dc0832a9f4d1d71500b3c8a69a3c064d437c225d6292577ffcc45a71a02c5efa3c4b58953c35968e42d11d3882dacacf45402ee802824268b7cd60daff' + expect(recoverTransaction(celoLegacyTx)).toMatchInlineSnapshot(` + [ + { + "chainId": "0xad5a", + "data": "0xabcdef", + "feeCurrency": "0x", + "gas": 10, + "gasPrice": 99, + "gatewayFee": "0x5678", + "gatewayFeeRecipient": "0x1be31a94361a391bbafb2a4ccd704f57dc04d4bb", + "nonce": 0, + "to": "0x588e4b68193001e4d10928660ab4165b813717c0", + "type": "celo-legacy", + "value": "0x0de0b6b3a7640000", + }, + "0x1Be31A94361a391bBaFB2a4CCd704F57dc04d4bb", + ] + `) + }) + it('handles cip42 transactions', () => { + const cip42TX = + '0x7cf89a82ad5a8063630a94cd2a3d9f938e13cd947ec05abc7fe734df8dd826941be31a94361a391bbafb2a4ccd704f57dc04d4bb82567894588e4b68193001e4d10928660ab4165b813717c0880de0b6b3a764000083abcdefc01ba0c610507b2ac3cff80dd7017419021196807d605efce0970c18cde48db33c27d1a01799477e0f601f554f0ee6f7ac21490602124801e9f7a99d9605249b90f03112' + expect(recoverTransaction(cip42TX)).toMatchInlineSnapshot(` + [ + { + "accessList": [], + "chainId": 44378, + "data": "0xabcdef", + "feeCurrency": "0xcd2a3d9f938e13cd947ec05abc7fe734df8dd826", + "gas": 10, + "gatewayFee": "0x5678", + "gatewayFeeRecipient": "0x1be31a94361a391bbafb2a4ccd704f57dc04d4bb", + "maxFeePerGas": 99, + "maxPriorityFeePerGas": 99, + "nonce": 0, + "r": "0xc610507b2ac3cff80dd7017419021196807d605efce0970c18cde48db33c27d1", + "s": "0x1799477e0f601f554f0ee6f7ac21490602124801e9f7a99d9605249b90f03112", + "to": "0x588e4b68193001e4d10928660ab4165b813717c0", + "type": "cip42", + "v": 28, + "value": 1000000000000000000, + "yParity": 1, + }, + "0x90AB065B949165c47Acac34cA9A43171bBeBb1E1", + ] + `) + }) + test('cip42 serialized by viem', async () => { + const account = privateKeyToAccount(PRIVATE_KEY1) + const signed = await account.signTransaction( + { + // @ts-ignore -- types on viem dont quite work for setting the tx type but the actual js execution works fine + type: 'cip42', + accessList: [], + chainId: 44378, + data: '0xabcdef', + feeCurrency: '0xcd2a3d9f938e13cd947ec05abc7fe734df8dd826', + gas: BigInt(10), + gatewayFee: BigInt('0x5678'), + gatewayFeeRecipient: '0x1be31a94361a391bbafb2a4ccd704f57dc04d4bb', + maxFeePerGas: BigInt(99), + maxPriorityFeePerGas: BigInt(99), + nonce: 0, + to: '0x588e4b68193001e4d10928660ab4165b813717c0', + value: BigInt(1000000000000000000), + }, + { serializer: celo.serializers?.transaction } + ) + + expect(recoverTransaction(signed)).toMatchInlineSnapshot(` + [ + { + "accessList": [], + "chainId": 44378, + "data": "0xabcdef", + "feeCurrency": "0xcd2a3d9f938e13cd947ec05abc7fe734df8dd826", + "gas": 10, + "gatewayFee": "0x5678", + "gatewayFeeRecipient": "0x1be31a94361a391bbafb2a4ccd704f57dc04d4bb", + "maxFeePerGas": 99, + "maxPriorityFeePerGas": 99, + "nonce": 0, + "r": "0xc610507b2ac3cff80dd7017419021196807d605efce0970c18cde48db33c27d1", + "s": "0x1799477e0f601f554f0ee6f7ac21490602124801e9f7a99d9605249b90f03112", + "to": "0x588e4b68193001e4d10928660ab4165b813717c0", + "type": "cip42", + "v": 27, + "value": 1000000000000000000, + "yParity": 0, + }, + "0x1Be31A94361a391bBaFB2a4CCd704F57dc04d4bb", + ] + `) + expect(recoverTransaction(signed)[1]).toEqual(account.address) + }) +}) + +describe('isPriceToLow', () => { + test('maxFee and maxPriorityFee are positive', () => { + expect( + isPriceToLow({ + maxFeePerGas: 1_000_000_000, + maxPriorityFeePerGas: Web3.utils.toBN('50000000000000'), + gasPrice: undefined, + }) + ).toBe(false) + }) + test('gasPrice is positive', () => { + expect( + isPriceToLow({ + gasPrice: Web3.utils.toBN('50000000000000'), + }) + ).toBe(false) + }) + test('maxFeePerGas is less than 0 but maxPriorityFeePerGas is positive ', () => { + expect(() => + isPriceToLow({ + maxFeePerGas: -1, + maxPriorityFeePerGas: 1_000_000_000, + gasPrice: undefined, + }) + ).toThrowErrorMatchingInlineSnapshot( + `"GasPrice or maxFeePerGas or maxPriorityFeePerGas is less than than 0"` + ) + }) + test('maxPriorityFeePerGas is less than 0 but maxFeePerGas is positive ', () => { + expect(() => + isPriceToLow({ + maxFeePerGas: 1_000_000_000, + maxPriorityFeePerGas: -1_000_000_000, + gasPrice: undefined, + }) + ).toThrowErrorMatchingInlineSnapshot( + `"GasPrice or maxFeePerGas or maxPriorityFeePerGas is less than than 0"` + ) + }) + test('gasPrice is less than 0', () => { + expect(() => + isPriceToLow({ + maxFeePerGas: '0x', + maxPriorityFeePerGas: '0x', + gasPrice: -1, + }) + ).toThrowErrorMatchingInlineSnapshot( + `"GasPrice or maxFeePerGas or maxPriorityFeePerGas is less than than 0"` + ) + }) +}) + +describe('extractSignature', () => { + it('extracts from celo legacy txs', () => { + // packages/sdk/wallets/wallet-local/src/local-wallet.test.ts:176 (succeeds with legacy) + const extracted = extractSignature( + '0xf88480630a80941be31a94361a391bbafb2a4ccd704f57dc04d4bb82567894588e4b68193001e4d10928660ab4165b813717c0880de0b6b3a764000083abcdef83015ad8a09e121a99dc0832a9f4d1d71500b3c8a69a3c064d437c225d6292577ffcc45a71a02c5efa3c4b58953c35968e42d11d3882dacacf45402ee802824268b7cd60daff' + ) + expect(extracted).toMatchInlineSnapshot(` + { + "r": "0x9e121a99dc0832a9f4d1d71500b3c8a69a3c064d437c225d6292577ffcc45a71", + "s": "0x2c5efa3c4b58953c35968e42d11d3882dacacf45402ee802824268b7cd60daff", + "v": "0x015ad8", + } + `) + }) + it('extracts from cip42 txs', () => { + // packages/sdk/wallets/wallet-local/src/local-wallet.test.ts:274 (succeeds with cip42) + const extracted = extractSignature( + '0x7cf89a82ad5a8063630a94cd2a3d9f938e13cd947ec05abc7fe734df8dd826941be31a94361a391bbafb2a4ccd704f57dc04d4bb82567894588e4b68193001e4d10928660ab4165b813717c0880de0b6b3a764000083abcdefc01ba0c610507b2ac3cff80dd7017419021196807d605efce0970c18cde48db33c27d1a01799477e0f601f554f0ee6f7ac21490602124801e9f7a99d9605249b90f03112' + ) + expect(extracted).toMatchInlineSnapshot(` + { + "r": "0xc610507b2ac3cff80dd7017419021196807d605efce0970c18cde48db33c27d1", + "s": "0x1799477e0f601f554f0ee6f7ac21490602124801e9f7a99d9605249b90f03112", + "v": "0x1b", + } + `) + }) + it('extracts from eip1559 txs', () => { + // packages/sdk/wallets/wallet-local/src/local-wallet.test.ts:209 ( succeeds with eip1559) + const extracted = extractSignature( + '0x02f87082ad5a8063630a94588e4b68193001e4d10928660ab4165b813717c0880de0b6b3a764000083abcdef8083015ad7a00fd2d0c579a971ebc04207d8c5ff5bb3449052f0c9e946a7146e5ae4d4ec6289a0737423de64cc81a62e700b5ca7970212aaed3d28de4dbce8b054483d361f6ff8' + ) + expect(extracted).toMatchInlineSnapshot(` + { + "r": "0x0fd2d0c579a971ebc04207d8c5ff5bb3449052f0c9e946a7146e5ae4d4ec6289", + "s": "0x737423de64cc81a62e700b5ca7970212aaed3d28de4dbce8b054483d361f6ff8", + "v": "0x015ad7", + } + `) + }) + it('fails when length is wrong', () => { + expect(() => extractSignature('0x')).toThrowErrorMatchingInlineSnapshot( + `"@extractSignature: provided transaction has 0 elements but celo-legacy txs with a signature have 12 []"` + ) + }) +}) + +describe('getSignerFromTx', () => { + const account = privateKeyToAccount(PRIVATE_KEY1) + test('extracts signer address from cip42 tx signed by viem', async () => { + const signed = await account.signTransaction( + { + // @ts-ignore + type: 'cip42', + accessList: [], + chainId: 44378, + data: '0xabcdef', + feeCurrency: '0xcd2a3d9f938e13cd947ec05abc7fe734df8dd826', + gas: BigInt(10), + gatewayFee: BigInt('0x5678'), + gatewayFeeRecipient: '0x1be31a94361a391bbafb2a4ccd704f57dc04d4bb', + maxFeePerGas: BigInt(99), + maxPriorityFeePerGas: BigInt(99), + nonce: 0, + to: '0x588e4b68193001e4d10928660ab4165b813717c0', + value: BigInt(1000000000000000000), + }, + { serializer: celo.serializers?.transaction } + ) + expect(getSignerFromTxCIP42(signed)).toEqual(account.address) + }) +}) + +describe('stringNumberOrBNToHex', () => { + test('string as base 10 number', () => { + expect(stringNumberOrBNToHex('1230000000000020')).toEqual('0x045eadb112e014') + expect(stringNumberOrBNToHex('123')).toEqual('0x7b') + }) + test('string as base 16 number', () => { + expect(stringNumberOrBNToHex('0x7b')).toEqual('0x7b') + }) + test('number', () => { + expect(stringNumberOrBNToHex(1230000000000020)).toEqual('0x045eadb112e014') + expect(stringNumberOrBNToHex(123)).toEqual('0x7b') + }) + test('BN', () => { + const biggie = Web3.utils.toBN('123') + expect(stringNumberOrBNToHex(biggie)).toEqual('0x7b') + }) +}) diff --git a/packages/sdk/wallets/wallet-base/src/signing-utils.ts b/packages/sdk/wallets/wallet-base/src/signing-utils.ts index c711de1195b..f0a6b874886 100644 --- a/packages/sdk/wallets/wallet-base/src/signing-utils.ts +++ b/packages/sdk/wallets/wallet-base/src/signing-utils.ts @@ -1,13 +1,37 @@ import { ensureLeading0x, trimLeading0x } from '@celo/base/lib/address' -import { CeloTx, EncodedTransaction, RLPEncodedTx } from '@celo/connect' -import { inputCeloTxFormatter } from '@celo/connect/lib/utils/formatter' +import { + CeloTx, + CeloTxWithSig, + EncodedTransaction, + Hex, + isPresent, + RLPEncodedTx, + TransactionTypes, +} from '@celo/connect' +import { + hexToNumber, + inputCeloTxFormatter, + parseAccessList, +} from '@celo/connect/lib/utils/formatter' import { EIP712TypedData, generateTypedDataHash } from '@celo/utils/lib/sign-typed-data-utils' import { parseSignatureWithoutPrefix } from '@celo/utils/lib/signatureUtils' -import * as ethUtil from '@ethereumjs/util' +import { + Address, + bufferToHex, + ecrecover, + fromRpcSig, + hashPersonalMessage, + pubToAddress, + toBuffer, + toChecksumAddress, +} from '@ethereumjs/util' import debugFactory from 'debug' // @ts-ignore-next-line eth-lib types not found import { account as Account, bytes as Bytes, hash as Hash, RLP } from 'eth-lib' - +import { keccak256 } from 'ethereum-cryptography/keccak' +import { hexToBytes } from 'ethereum-cryptography/utils.js' +import Web3 from 'web3' // TODO try to do this without web3 direct +import Accounts from 'web3-eth-accounts' const debug = debugFactory('wallet-base:tx:sign') // Original code taken from @@ -19,6 +43,8 @@ export const publicKeyPrefix: number = 0x04 export const sixtyFour: number = 64 export const thirtyTwo: number = 32 +const Y_PARITY_EIP_2098 = 27 + function isNullOrUndefined(value: any): boolean { return value === null || value === undefined } @@ -47,122 +73,319 @@ function makeEven(hex: string) { return hex } -function signatureFormatter(signature: { v: number; r: Buffer; s: Buffer }): { +function signatureFormatter( + signature: { v: number; r: Buffer; s: Buffer }, + type: TransactionTypes +): { v: string r: string s: string } { + let v = signature.v + if (type !== 'celo-legacy') { + v = signature.v === Y_PARITY_EIP_2098 ? 0 : 1 + } return { - v: stringNumberToHex(signature.v), + v: stringNumberToHex(v), r: makeEven(trimLeadingZero(ensureLeading0x(signature.r.toString('hex')))), s: makeEven(trimLeadingZero(ensureLeading0x(signature.s.toString('hex')))), } } -function stringNumberToHex(num?: number | string): string { +export function stringNumberOrBNToHex( + num?: number | string | ReturnType +): Hex { + if (typeof num === 'string' || typeof num === 'number' || num === undefined) { + return stringNumberToHex(num) + } else { + return makeEven(`0x` + num.toString(16)) as Hex + } +} +function stringNumberToHex(num?: number | string): Hex { const auxNumber = Number(num) if (num === '0x' || num === undefined || auxNumber === 0) { return '0x' } - return Bytes.fromNumber(auxNumber) + return makeEven(Web3.utils.numberToHex(num)) as Hex } - export function rlpEncodedTx(tx: CeloTx): RLPEncodedTx { + assertSerializableTX(tx) + const transaction = inputCeloTxFormatter(tx) + transaction.to = Bytes.fromNat(tx.to || '0x').toLowerCase() + transaction.nonce = Number(((tx.nonce as any) !== '0x' ? tx.nonce : 0) || 0) + transaction.data = Bytes.fromNat(tx.data || '0x').toLowerCase() + transaction.value = stringNumberOrBNToHex(tx.value) + transaction.gas = stringNumberOrBNToHex(tx.gas) + transaction.chainId = tx.chainId || 1 + // Celo Specific + transaction.feeCurrency = Bytes.fromNat(tx.feeCurrency || '0x').toLowerCase() + transaction.gatewayFeeRecipient = Bytes.fromNat(tx.gatewayFeeRecipient || '0x').toLowerCase() + transaction.gatewayFee = stringNumberOrBNToHex(tx.gatewayFee) + + // Legacy + transaction.gasPrice = stringNumberOrBNToHex(tx.gasPrice) + // EIP1559 / CIP42 + transaction.maxFeePerGas = stringNumberOrBNToHex(tx.maxFeePerGas) + transaction.maxPriorityFeePerGas = stringNumberOrBNToHex(tx.maxPriorityFeePerGas) + + let rlpEncode: Hex + if (isCIP42(tx)) { + // There shall be a typed transaction with the code 0x7c that has the following format: + // 0x7c || rlp([chain_id, nonce, max_priority_fee_per_gas, max_fee_per_gas, gas_limit, feecurrency, gatewayFeeRecipient, gatewayfee, destination, amount, data, access_list, signature_y_parity, signature_r, signature_s]). + // This will be in addition to the type 0x02 transaction as specified in EIP-1559. + rlpEncode = RLP.encode([ + stringNumberToHex(transaction.chainId), + stringNumberToHex(transaction.nonce), + transaction.maxPriorityFeePerGas || '0x', + transaction.maxFeePerGas || '0x', + transaction.gas || '0x', + transaction.feeCurrency || '0x', + transaction.gatewayFeeRecipient || '0x', + transaction.gatewayFee || '0x', + transaction.to || '0x', + transaction.value || '0x', + transaction.data || '0x', + transaction.accessList || [], + ]) + return { transaction, rlpEncode: concatHex(['0x7c', rlpEncode]), type: 'cip42' } + } else if (isEIP1559(tx)) { + // https://eips.ethereum.org/EIPS/eip-1559 + // 0x02 || rlp([chain_id, nonce, max_priority_fee_per_gas, max_fee_per_gas, gas_limit, destination, amount, data, access_list, signature_y_parity, signature_r, signature_s]). + rlpEncode = RLP.encode([ + stringNumberToHex(transaction.chainId), + stringNumberToHex(transaction.nonce), + transaction.maxPriorityFeePerGas || '0x', + transaction.maxFeePerGas || '0x', + transaction.gas || '0x', + transaction.to || '0x', + transaction.value || '0x', + transaction.data || '0x', + transaction.accessList || [], + ]) + return { transaction, rlpEncode: concatHex(['0x02', rlpEncode]), type: 'eip1559' } + } else { + // This order should match the order in Geth. + // https://github.com/celo-org/celo-blockchain/blob/027dba2e4584936cc5a8e8993e4e27d28d5247b8/core/types/transaction.go#L65 + rlpEncode = RLP.encode([ + stringNumberToHex(transaction.nonce), + transaction.gasPrice, + transaction.gas, + transaction.feeCurrency, + transaction.gatewayFeeRecipient, + transaction.gatewayFee, + transaction.to, + transaction.value, + transaction.data, + stringNumberToHex(transaction.chainId), + '0x', + '0x', + ]) + return { transaction, rlpEncode, type: 'celo-legacy' } + } +} + +enum TxTypeToPrefix { + 'celo-legacy' = '', + cip42 = '0x7c', + eip1559 = '0x02', +} + +function concatTypePrefixHex( + rawTransaction: string, + txType: EncodedTransaction['tx']['type'] +): Hex { + const prefix = TxTypeToPrefix[txType] + if (prefix) { + return concatHex([prefix, rawTransaction]) + } + return rawTransaction as Hex +} + +function assertSerializableTX(tx: CeloTx) { if (!tx.gas) { throw new Error('"gas" is missing') } + // ensure at least gasPrice or maxFeePerGas and maxPriorityFeePerGas are set if ( - isNullOrUndefined(tx.chainId) || - isNullOrUndefined(tx.gasPrice) || - isNullOrUndefined(tx.nonce) + !isPresent(tx.gasPrice) && + (!isPresent(tx.maxFeePerGas) || !isPresent(tx.maxPriorityFeePerGas)) ) { + throw new Error('"gasPrice" or "maxFeePerGas" and "maxPriorityFeePerGas" are missing') + } + + // ensure that gasPrice and maxFeePerGas are not set at the same time + if ( + isPresent(tx.gasPrice) && + (isPresent(tx.maxFeePerGas) || isPresent(tx.maxPriorityFeePerGas)) + ) { + throw new Error( + 'when "maxFeePerGas" or "maxPriorityFeePerGas" are set, "gasPrice" must not be set' + ) + } + + if (isNullOrUndefined(tx.nonce) || isNullOrUndefined(tx.chainId)) { throw new Error( - 'One of the values "chainId", "gasPrice", or "nonce" couldn\'t be fetched: ' + - JSON.stringify({ chainId: tx.chainId, gasPrice: tx.gasPrice, nonce: tx.nonce }) + 'One of the values "chainId" or "nonce" couldn\'t be fetched: ' + + JSON.stringify({ chainId: tx.chainId, nonce: tx.nonce }) ) } - if (tx.nonce! < 0 || tx.gas! < 0 || tx.gasPrice! < 0 || tx.chainId! < 0) { - throw new Error('Gas, gasPrice, nonce or chainId is lower than 0') + if (isLessThanZero(tx.nonce) || isLessThanZero(tx.gas) || isLessThanZero(tx.chainId)) { + throw new Error('Gas, nonce or chainId is less than than 0') } - const transaction: CeloTx = inputCeloTxFormatter(tx) - transaction.to = Bytes.fromNat(tx.to || '0x').toLowerCase() - transaction.nonce = Number(((tx.nonce as any) !== '0x' ? tx.nonce : 0) || 0) - transaction.data = Bytes.fromNat(tx.data || '0x').toLowerCase() - transaction.value = stringNumberToHex(tx.value?.toString()) - transaction.feeCurrency = Bytes.fromNat(tx.feeCurrency || '0x').toLowerCase() - transaction.gatewayFeeRecipient = Bytes.fromNat(tx.gatewayFeeRecipient || '0x').toLowerCase() - transaction.gatewayFee = stringNumberToHex(tx.gatewayFee) - transaction.gasPrice = stringNumberToHex(tx.gasPrice?.toString()) - transaction.gas = stringNumberToHex(tx.gas) - transaction.chainId = tx.chainId || 1 + isPriceToLow(tx) +} - // This order should match the order in Geth. - // https://github.com/celo-org/celo-blockchain/blob/027dba2e4584936cc5a8e8993e4e27d28d5247b8/core/types/transaction.go#L65 - const rlpEncode = RLP.encode([ - stringNumberToHex(transaction.nonce), - transaction.gasPrice, - transaction.gas, - transaction.feeCurrency, - transaction.gatewayFeeRecipient, - transaction.gatewayFee, - transaction.to, - transaction.value, - transaction.data, - stringNumberToHex(transaction.chainId), - '0x', - '0x', - ]) +export function isPriceToLow(tx: CeloTx) { + const prices = [tx.gasPrice, tx.maxFeePerGas, tx.maxPriorityFeePerGas].filter( + (price) => price !== undefined + ) + const isLow = false + for (const price of prices) { + if (isLessThanZero(price)) { + throw new Error('GasPrice or maxFeePerGas or maxPriorityFeePerGas is less than than 0') + } + } + + return isLow +} + +function isEIP1559(tx: CeloTx): boolean { + return isPresent(tx.maxFeePerGas) && isPresent(tx.maxPriorityFeePerGas) +} + +function isCIP42(tx: CeloTx): boolean { + return ( + isEIP1559(tx) && + (isPresent(tx.feeCurrency) || isPresent(tx.gatewayFeeRecipient) || isPresent(tx.gatewayFee)) + ) +} - return { transaction, rlpEncode } +function concatHex(values: string[]): Hex { + return `0x${values.reduce((acc, x) => acc + x.replace('0x', ''), '')}` +} + +function isLessThanZero(value: CeloTx['gasPrice']) { + if (isNullOrUndefined(value)) { + return true + } + switch (typeof value) { + case 'string': + case 'number': + return Number(value) < 0 + default: + return value?.lt(Web3.utils.toBN(0)) || false + } } export async function encodeTransaction( rlpEncoded: RLPEncodedTx, signature: { v: number; r: Buffer; s: Buffer } ): Promise { - const sanitizedSignature = signatureFormatter(signature) + const sanitizedSignature = signatureFormatter(signature, rlpEncoded.type) const v = sanitizedSignature.v const r = sanitizedSignature.r const s = sanitizedSignature.s - const rawTx = RLP.decode(rlpEncoded.rlpEncode).slice(0, 9).concat([v, r, s]) + const decodedTX = prefixAwareRLPDecode(rlpEncoded.rlpEncode, rlpEncoded.type) + // for legacy tx we need to slice but for new ones we do not want to do that + const rawTx = (rlpEncoded.type === 'celo-legacy' ? decodedTX.slice(0, 9) : decodedTX).concat([ + v, + r, + s, + ]) - const rawTransaction = RLP.encode(rawTx) + // After signing, the transaction is encoded again and type prefix added + const rawTransaction = concatTypePrefixHex(RLP.encode(rawTx), rlpEncoded.type) const hash = getHashFromEncoded(rawTransaction) - const result: EncodedTransaction = { - tx: { - nonce: rlpEncoded.transaction.nonce!.toString(), - gasPrice: rlpEncoded.transaction.gasPrice!.toString(), - gas: rlpEncoded.transaction.gas!.toString(), - to: rlpEncoded.transaction.to!.toString(), - value: rlpEncoded.transaction.value!.toString(), - input: rlpEncoded.transaction.data!, + const baseTX = { + nonce: rlpEncoded.transaction.nonce!.toString(), + gas: rlpEncoded.transaction.gas!.toString(), + to: rlpEncoded.transaction.to!.toString(), + value: rlpEncoded.transaction.value!.toString(), + input: rlpEncoded.transaction.data!, + v, + r, + s, + hash, + } + let tx: Partial = baseTX + if (rlpEncoded.type === 'eip1559' || rlpEncoded.type === 'cip42') { + tx = { + ...tx, + // @ts-expect-error -- just a matter of how this tx is built + maxFeePerGas: rlpEncoded.transaction.maxFeePerGas!.toString(), + maxPriorityFeePerGas: rlpEncoded.transaction.maxPriorityFeePerGas!.toString(), + accessList: parseAccessList(rlpEncoded.transaction.accessList || []), + } + } + if (rlpEncoded.type === 'cip42' || rlpEncoded.type === 'celo-legacy') { + tx = { + ...tx, + // @ts-expect-error -- just a matter of how this tx is built feeCurrency: rlpEncoded.transaction.feeCurrency!.toString(), gatewayFeeRecipient: rlpEncoded.transaction.gatewayFeeRecipient!.toString(), gatewayFee: rlpEncoded.transaction.gatewayFee!.toString(), - v, - r, - s, - hash, - }, + } + } + if (rlpEncoded.type === 'celo-legacy') { + tx = { + ...tx, + // @ts-expect-error -- just a matter of how this tx is built + gasPrice: rlpEncoded.transaction.gasPrice!.toString(), + } + } + + const result: EncodedTransaction & { type: TransactionTypes } = { + tx: tx as EncodedTransaction['tx'], raw: rawTransaction, + type: rlpEncoded.type, } return result } +// new types have prefix but legacy does not +function prefixAwareRLPDecode(rlpEncode: string, type: TransactionTypes): string[] { + return type === 'celo-legacy' ? RLP.decode(rlpEncode) : RLP.decode(`0x${rlpEncode.slice(4)}`) +} + +function correctLengthWithSignatureOf(type: TransactionTypes) { + switch (type) { + case 'cip42': + return 15 + case 'celo-legacy': + case 'eip1559': + return 12 + } +} +// Based on the return type of ensureLeading0x this was not a Buffer +export function extractSignature(rawTx: string) { + const type = determineTXType(rawTx) + const rawValues = prefixAwareRLPDecode(rawTx, type) + const length = rawValues.length + if (correctLengthWithSignatureOf(type) !== length) { + throw new Error( + `@extractSignature: provided transaction has ${length} elements but ${type} txs with a signature have ${correctLengthWithSignatureOf( + type + )} ${JSON.stringify(rawValues)}` + ) + } + return extractSignatureFromDecoded(rawValues) +} -export function extractSignature(rawTx: string): { v: number; r: Buffer; s: Buffer } { - const rawValues = RLP.decode(rawTx) - let r = rawValues[10] - let s = rawValues[11] +function extractSignatureFromDecoded(rawValues: string[]) { + // signature is always (for the tx we support so far) the last three elements of the array in order v, r, s, + const v = rawValues.at(-3) + let r = rawValues.at(-2) + let s = rawValues.at(-1) + // https://github.com/wagmi-dev/viem/blob/993321689b3e2220976504e7e170fe47731297ce/src/utils/transaction/parseTransaction.ts#L281 // Account.recover cannot handle canonicalized signatures // A canonicalized signature may have the first byte removed if its value is 0 - r = ensureLeading0x(trimLeading0x(r).padStart(64, '0')) - s = ensureLeading0x(trimLeading0x(s).padStart(64, '0')) + r = ensureLeading0x(trimLeading0x(r as string).padStart(64, '0')) + s = ensureLeading0x(trimLeading0x(s as string).padStart(64, '0')) return { - v: rawValues[9], + v, r, s, } @@ -171,44 +394,185 @@ export function extractSignature(rawTx: string): { v: number; r: Buffer; s: Buff // Recover transaction and sender address from a raw transaction. // This is used for testing. export function recoverTransaction(rawTx: string): [CeloTx, string] { - const rawValues = RLP.decode(rawTx) - debug('signing-utils@recoverTransaction: values are %s', rawValues) - const recovery = Bytes.toNumber(rawValues[9]) - // tslint:disable-next-line:no-bitwise - const chainId = Bytes.fromNumber((recovery - 35) >> 1) - const celoTx: CeloTx = { - nonce: rawValues[0].toLowerCase() === '0x' ? 0 : parseInt(rawValues[0], 16), - gasPrice: rawValues[1].toLowerCase() === '0x' ? 0 : parseInt(rawValues[1], 16), - gas: rawValues[2].toLowerCase() === '0x' ? 0 : parseInt(rawValues[2], 16), - feeCurrency: rawValues[3], - gatewayFeeRecipient: rawValues[4], - gatewayFee: rawValues[5], - to: rawValues[6], - value: rawValues[7], - data: rawValues[8], + if (!rawTx.startsWith('0x')) { + throw new Error('rawTx must start with 0x') + } + + switch (determineTXType(rawTx)) { + case 'cip42': + return recoverTransactionCIP42(rawTx as Hex) + case 'eip1559': + return recoverTransactionEIP1559(rawTx as Hex) + default: + const rawValues = RLP.decode(rawTx) + debug('signing-utils@recoverTransaction: values are %s', rawValues) + const recovery = Bytes.toNumber(rawValues[9]) + // tslint:disable-next-line:no-bitwise + const chainId = Bytes.fromNumber((recovery - 35) >> 1) + const celoTx: CeloTx = { + type: 'celo-legacy', + nonce: rawValues[0].toLowerCase() === '0x' ? 0 : parseInt(rawValues[0], 16), + gasPrice: rawValues[1].toLowerCase() === '0x' ? 0 : parseInt(rawValues[1], 16), + gas: rawValues[2].toLowerCase() === '0x' ? 0 : parseInt(rawValues[2], 16), + feeCurrency: rawValues[3], + gatewayFeeRecipient: rawValues[4], + gatewayFee: rawValues[5], + to: rawValues[6], + value: rawValues[7], + data: rawValues[8], + chainId, + } + const { r, v, s } = extractSignatureFromDecoded(rawValues) + const signature = Account.encodeSignature([v, r, s]) + const extraData = recovery < 35 ? [] : [chainId, '0x', '0x'] + const signingData = rawValues.slice(0, 9).concat(extraData) + const signingDataHex = RLP.encode(signingData) + const signer = Account.recover(getHashFromEncoded(signingDataHex), signature) + return [celoTx, signer] + } +} + +// inspired by @ethereumjs/tx +function getPublicKeyofSignerFromTx(transactionArray: string[]) { + const base = transactionArray.slice(0, 12) // 12 is length of cip42 without vrs fields + const message = concatHex([TxTypeToPrefix.cip42, RLP.encode(base).slice(2)]) + const msgHash = keccak256(hexToBytes(message)) + + const { v, r, s } = extractSignatureFromDecoded(transactionArray) + try { + return ecrecover( + toBuffer(msgHash), + v === '0x' || v === undefined ? BigInt(0) : BigInt(1), + toBuffer(r), + toBuffer(s) + ) + } catch (e: any) { + throw new Error(e) + } +} + +export function getSignerFromTxCIP42(serializedTransaction: string): string { + const transactionArray: any[] = RLP.decode(`0x${serializedTransaction.slice(4)}`) + const signer = getPublicKeyofSignerFromTx(transactionArray) + return toChecksumAddress(Address.fromPublicKey(signer).toString()) +} + +function determineTXType(serializedTransaction: string): TransactionTypes { + const prefix = serializedTransaction.slice(0, 4) + + if (prefix === '0x02') { + return 'eip1559' + } else if (prefix === '0x7c') { + return 'cip42' + } + return 'celo-legacy' +} + +function vrsForRecovery(vRaw: string, r: string, s: string) { + const v = vRaw === '0x' || hexToNumber(vRaw) === 0 ? Y_PARITY_EIP_2098 : Y_PARITY_EIP_2098 + 1 + return { + v, + r, + s, + yParity: v === Y_PARITY_EIP_2098 ? 0 : 1, + } as const +} + +function recoverTransactionCIP42(serializedTransaction: Hex): [CeloTxWithSig, string] { + const transactionArray: any[] = prefixAwareRLPDecode(serializedTransaction, 'cip42') + debug('signing-utils@recoverTransactionCIP42: values are %s', transactionArray) + if (transactionArray.length !== 15 && transactionArray.length !== 12) { + throw new Error( + `Invalid transaction length for type CIP42: ${transactionArray.length} instead of 15 or 12. array: ${transactionArray}` + ) + } + const [ chainId, + nonce, + maxPriorityFeePerGas, + maxFeePerGas, + gas, + feeCurrency, + gatewayFeeRecipient, + gatewayFee, + to, + value, + data, + accessList, + vRaw, + r, + s, + ] = transactionArray + + const celoTX: CeloTxWithSig = { + type: 'cip42', + nonce: nonce.toLowerCase() === '0x' ? 0 : parseInt(nonce, 16), + maxPriorityFeePerGas: + maxPriorityFeePerGas.toLowerCase() === '0x' ? 0 : parseInt(maxPriorityFeePerGas, 16), + maxFeePerGas: maxFeePerGas.toLowerCase() === '0x' ? 0 : parseInt(maxFeePerGas, 16), + gas: gas.toLowerCase() === '0x' ? 0 : parseInt(gas, 16), + feeCurrency, + gatewayFeeRecipient, + gatewayFee, + to, + value: value.toLowerCase() === '0x' ? 0 : parseInt(value, 16), + data, + chainId: chainId.toLowerCase() === '0x' ? 0 : parseInt(chainId, 16), + accessList: parseAccessList(accessList), + ...vrsForRecovery(vRaw, r, s), } - let r = rawValues[10] - let s = rawValues[11] - // Account.recover cannot handle canonicalized signatures - // A canonicalized signature may have the first byte removed if its value is 0 - r = ensureLeading0x(trimLeading0x(r).padStart(64, '0')) - s = ensureLeading0x(trimLeading0x(s).padStart(64, '0')) - const signature = Account.encodeSignature([rawValues[9], r, s]) - const extraData = recovery < 35 ? [] : [chainId, '0x', '0x'] - const signingData = rawValues.slice(0, 9).concat(extraData) - const signingDataHex = RLP.encode(signingData) - const signer = Account.recover(getHashFromEncoded(signingDataHex), signature) + + const signer = + transactionArray.length === 15 ? getSignerFromTxCIP42(serializedTransaction) : 'unsigned' + return [celoTX, signer] +} + +function recoverTransactionEIP1559(serializedTransaction: Hex): [CeloTxWithSig, string] { + const transactionArray: any[] = prefixAwareRLPDecode(serializedTransaction, 'eip1559') + debug('signing-utils@recoverTransactionEIP1559: values are %s', transactionArray) + + const [ + chainId, + nonce, + maxPriorityFeePerGas, + maxFeePerGas, + gas, + to, + value, + data, + accessList, + vRaw, + r, + s, + ] = transactionArray + + const celoTx: CeloTxWithSig = { + type: 'eip1559', + nonce: nonce.toLowerCase() === '0x' ? 0 : parseInt(nonce, 16), + gas: gas.toLowerCase() === '0x' ? 0 : parseInt(gas, 16), + maxPriorityFeePerGas: + maxPriorityFeePerGas.toLowerCase() === '0x' ? 0 : parseInt(maxPriorityFeePerGas, 16), + maxFeePerGas: maxFeePerGas.toLowerCase() === '0x' ? 0 : parseInt(maxFeePerGas, 16), + to, + value: value.toLowerCase() === '0x' ? 0 : parseInt(value, 16), + data, + chainId: chainId.toLowerCase() === '0x' ? 0 : parseInt(chainId, 16), + accessList: parseAccessList(accessList), + ...vrsForRecovery(vRaw, r, s), + } + const web3Account = new Accounts() + const signer = web3Account.recoverTransaction(serializedTransaction) + return [celoTx, signer] } export function recoverMessageSigner(signingDataHex: string, signedData: string): string { - const dataBuff = ethUtil.toBuffer(signingDataHex) - const msgHashBuff = ethUtil.hashPersonalMessage(dataBuff) - const signature = ethUtil.fromRpcSig(signedData) + const dataBuff = toBuffer(signingDataHex) + const msgHashBuff = hashPersonalMessage(dataBuff) + const signature = fromRpcSig(signedData) - const publicKey = ethUtil.ecrecover(msgHashBuff, signature.v, signature.r, signature.s) - const address = ethUtil.pubToAddress(publicKey, true) + const publicKey = ecrecover(msgHashBuff, signature.v, signature.r, signature.s) + const address = pubToAddress(publicKey, true) return ensureLeading0x(address.toString('hex')) } @@ -217,7 +581,7 @@ export function verifyEIP712TypedDataSigner( signedData: string, expectedAddress: string ): boolean { - const dataHex = ethUtil.bufferToHex(generateTypedDataHash(typedData)) + const dataHex = bufferToHex(generateTypedDataHash(typedData)) return verifySignatureWithoutPrefix(dataHex, signedData, expectedAddress) } @@ -236,9 +600,10 @@ export function verifySignatureWithoutPrefix( export function decodeSig(sig: any) { const [v, r, s] = Account.decodeSignature(sig) + return { v: parseInt(v, 16), - r: ethUtil.toBuffer(r) as Buffer, - s: ethUtil.toBuffer(s) as Buffer, + r: toBuffer(r) as Buffer, + s: toBuffer(s) as Buffer, } } diff --git a/packages/sdk/wallets/wallet-base/src/wallet-base.ts b/packages/sdk/wallets/wallet-base/src/wallet-base.ts index 9d0cd2575aa..acab8d7fab4 100644 --- a/packages/sdk/wallets/wallet-base/src/wallet-base.ts +++ b/packages/sdk/wallets/wallet-base/src/wallet-base.ts @@ -77,7 +77,8 @@ export abstract class WalletBase implements ReadOnlyWall throw new Error('No transaction object given!') } const rlpEncoded = rlpEncodedTx(txParams) - const addToV = chainIdTransformationForSigning(txParams.chainId!) + const addToV = + rlpEncoded.type === 'celo-legacy' ? chainIdTransformationForSigning(txParams.chainId!) : 27 // Get the signer from the 'from' field const fromAddress = txParams.from!.toString() diff --git a/packages/sdk/wallets/wallet-base/tsconfig.json b/packages/sdk/wallets/wallet-base/tsconfig.json index e6a754088ba..51debe8913d 100644 --- a/packages/sdk/wallets/wallet-base/tsconfig.json +++ b/packages/sdk/wallets/wallet-base/tsconfig.json @@ -5,5 +5,6 @@ "outDir": "lib" }, "include": ["src", "types"], + "exclude": ["**/*.test.ts"], "references": [{ "path": "../../utils" }] } diff --git a/packages/sdk/wallets/wallet-hsm-aws/package.json b/packages/sdk/wallets/wallet-hsm-aws/package.json index c9143b7b6ac..3b463ce62fa 100644 --- a/packages/sdk/wallets/wallet-hsm-aws/package.json +++ b/packages/sdk/wallets/wallet-hsm-aws/package.json @@ -1,6 +1,6 @@ { "name": "@celo/wallet-hsm-aws", - "version": "4.1.2-dev", + "version": "5.0.3-dev", "description": "AWS HSM wallet implementation", "author": "Celo", "license": "Apache-2.0", @@ -22,10 +22,10 @@ "prepublishOnly": "yarn build" }, "dependencies": { - "@celo/utils": "4.1.2-dev", - "@celo/wallet-base": "4.1.2-dev", - "@celo/wallet-remote": "4.1.2-dev", - "@celo/wallet-hsm": "4.1.2-dev", + "@celo/utils": "5.0.3-dev", + "@celo/wallet-base": "5.0.3-dev", + "@celo/wallet-remote": "5.0.3-dev", + "@celo/wallet-hsm": "5.0.3-dev", "@types/debug": "^4.1.5", "@types/secp256k1": "^4.0.0", "aws-sdk": "^2.705.0", @@ -36,7 +36,7 @@ "secp256k1": "^4.0.0" }, "devDependencies": { - "@celo/connect": "4.1.2-dev", + "@celo/connect": "5.0.3-dev", "elliptic": "^6.5.4", "web3": "1.10.0" }, diff --git a/packages/sdk/wallets/wallet-hsm-azure/package.json b/packages/sdk/wallets/wallet-hsm-azure/package.json index ba4957bb0b2..814fecf9a95 100644 --- a/packages/sdk/wallets/wallet-hsm-azure/package.json +++ b/packages/sdk/wallets/wallet-hsm-azure/package.json @@ -1,6 +1,6 @@ { "name": "@celo/wallet-hsm-azure", - "version": "4.1.2-dev", + "version": "5.0.3-dev", "description": "Azure HSM wallet implementation", "author": "Celo", "license": "Apache-2.0", @@ -25,11 +25,11 @@ "@azure/identity": "^1.1.0", "@azure/keyvault-keys": "^4.1.0", "@azure/keyvault-secrets": "^4.1.0", - "@celo/utils": "4.1.2-dev", - "@celo/wallet-base": "4.1.2-dev", - "@celo/wallet-remote": "4.1.2-dev", - "@celo/wallet-hsm": "4.1.2-dev", - "@celo/connect": "4.1.2-dev", + "@celo/utils": "5.0.3-dev", + "@celo/wallet-base": "5.0.3-dev", + "@celo/wallet-remote": "5.0.3-dev", + "@celo/wallet-hsm": "5.0.3-dev", + "@celo/connect": "5.0.3-dev", "@types/secp256k1": "^4.0.0", "eth-lib": "^0.2.8", "@ethereumjs/util": "8.0.5", diff --git a/packages/sdk/wallets/wallet-hsm-gcp/package.json b/packages/sdk/wallets/wallet-hsm-gcp/package.json index 7d8625b5db9..a13a35aedd1 100644 --- a/packages/sdk/wallets/wallet-hsm-gcp/package.json +++ b/packages/sdk/wallets/wallet-hsm-gcp/package.json @@ -1,6 +1,6 @@ { "name": "@celo/wallet-hsm-gcp", - "version": "4.1.2-dev", + "version": "5.0.3-dev", "description": "GCP HSM wallet implementation", "author": "Celo", "license": "Apache-2.0", @@ -20,10 +20,10 @@ "prepublishOnly": "yarn build" }, "dependencies": { - "@celo/utils": "4.1.2-dev", - "@celo/wallet-base": "4.1.2-dev", - "@celo/wallet-remote": "4.1.2-dev", - "@celo/wallet-hsm": "4.1.2-dev", + "@celo/utils": "5.0.3-dev", + "@celo/wallet-base": "5.0.3-dev", + "@celo/wallet-remote": "5.0.3-dev", + "@celo/wallet-hsm": "5.0.3-dev", "@google-cloud/kms": "~2.9.0", "@types/debug": "^4.1.5", "@types/secp256k1": "^4.0.0", @@ -34,7 +34,7 @@ "secp256k1": "^4.0.0" }, "devDependencies": { - "@celo/connect": "4.1.2-dev", + "@celo/connect": "5.0.3-dev", "elliptic": "^6.5.4", "web3": "1.10.0" }, diff --git a/packages/sdk/wallets/wallet-hsm/package.json b/packages/sdk/wallets/wallet-hsm/package.json index f3b57ff51df..5db5375efb9 100644 --- a/packages/sdk/wallets/wallet-hsm/package.json +++ b/packages/sdk/wallets/wallet-hsm/package.json @@ -1,6 +1,6 @@ { "name": "@celo/wallet-hsm", - "version": "4.1.2-dev", + "version": "5.0.3-dev", "description": "HSM wallet implementation utils", "author": "Celo", "license": "Apache-2.0", @@ -22,7 +22,7 @@ "prepublishOnly": "yarn build" }, "dependencies": { - "@celo/base": "4.1.2-dev", + "@celo/base": "5.0.3-dev", "@types/asn1js": "^0.0.2", "@types/secp256k1": "^4.0.0", "@types/debug": "^4.1.5", diff --git a/packages/sdk/wallets/wallet-ledger/package.json b/packages/sdk/wallets/wallet-ledger/package.json index 09ef11ed9c8..22510606810 100644 --- a/packages/sdk/wallets/wallet-ledger/package.json +++ b/packages/sdk/wallets/wallet-ledger/package.json @@ -1,6 +1,6 @@ { "name": "@celo/wallet-ledger", - "version": "4.1.2-dev", + "version": "5.0.3-dev", "description": "Ledger wallet implementation", "author": "Celo", "license": "Apache-2.0", @@ -22,10 +22,10 @@ "prepublishOnly": "yarn build" }, "dependencies": { - "@celo/utils": "4.1.2-dev", - "@celo/wallet-base": "4.1.2-dev", - "@celo/wallet-remote": "4.1.2-dev", - "@celo/connect": "4.1.2-dev", + "@celo/utils": "5.0.3-dev", + "@celo/wallet-base": "5.0.3-dev", + "@celo/wallet-remote": "5.0.3-dev", + "@celo/connect": "5.0.3-dev", "@ethereumjs/util": "8.0.5", "@ledgerhq/hw-app-eth": "~5.11.0", "@ledgerhq/hw-transport": "~5.11.0", diff --git a/packages/sdk/wallets/wallet-local/package.json b/packages/sdk/wallets/wallet-local/package.json index 2f9394c9e63..eec63cd4eec 100644 --- a/packages/sdk/wallets/wallet-local/package.json +++ b/packages/sdk/wallets/wallet-local/package.json @@ -1,6 +1,6 @@ { "name": "@celo/wallet-local", - "version": "4.1.2-dev", + "version": "5.0.3-dev", "description": "Local wallet implementation", "author": "Celo", "license": "Apache-2.0", @@ -17,19 +17,20 @@ "build": "tsc -b .", "clean": "tsc -b . --clean", "docs": "typedoc", - "test": "jest --runInBand", + "test": "jest", "lint": "tslint -c tslint.json --project .", "prepublishOnly": "yarn build" }, "dependencies": { - "@celo/utils": "4.1.2-dev", - "@celo/connect": "4.1.2-dev", - "@celo/wallet-base": "4.1.2-dev", + "@celo/utils": "5.0.3-dev", + "@celo/connect": "5.0.3-dev", + "@celo/wallet-base": "5.0.3-dev", "eth-lib": "^0.2.8", "@ethereumjs/util": "8.0.5" }, "devDependencies": { - "web3": "1.10.0" + "web3": "1.10.0", + "viem": "~1.5.4" }, "engines": { "node": ">=8.14.2" diff --git a/packages/sdk/wallets/wallet-local/src/local-wallet.test.ts b/packages/sdk/wallets/wallet-local/src/local-wallet.test.ts index 4f34b5e927a..7f447b18fd8 100644 --- a/packages/sdk/wallets/wallet-local/src/local-wallet.test.ts +++ b/packages/sdk/wallets/wallet-local/src/local-wallet.test.ts @@ -1,4 +1,4 @@ -import { CeloTx, EncodedTransaction } from '@celo/connect' +import { CeloTx, EncodedTransaction, Hex } from '@celo/connect' import { normalizeAddressWith0x, privateKeyToAddress, @@ -8,8 +8,11 @@ import { import { Encrypt } from '@celo/utils/lib/ecies' import { verifySignature } from '@celo/utils/lib/signatureUtils' import { recoverTransaction, verifyEIP712TypedDataSigner } from '@celo/wallet-base' +import { TransactionSerializableEIP1559, parseTransaction } from 'viem' +import { privateKeyToAccount } from 'viem/accounts' import Web3 from 'web3' import { LocalWallet } from './local-wallet' +import { StrongAddress } from '@celo/base/lib/address' const CHAIN_ID = 44378 @@ -126,25 +129,37 @@ describe('Local wallet class', () => { }) test('fails calling signTransaction', async () => { - await expect(wallet.signTransaction(celoTransaction)).rejects.toThrowError() + await expect( + wallet.signTransaction(celoTransaction) + ).rejects.toThrowErrorMatchingInlineSnapshot( + `"Could not find address 0x588e4b68193001e4d10928660ab4165b813717c0"` + ) }) test('fails calling signPersonalMessage', async () => { const hexStr: string = '0xa1' - await expect(wallet.signPersonalMessage(unknownAddress, hexStr)).rejects.toThrowError() + await expect( + wallet.signPersonalMessage(unknownAddress, hexStr) + ).rejects.toThrowErrorMatchingInlineSnapshot( + `"Could not find address 0x588e4b68193001e4d10928660ab4165b813717c0"` + ) }) test('fails calling signTypedData', async () => { - await expect(wallet.signTypedData(unknownAddress, TYPED_DATA)).rejects.toThrowError() + await expect( + wallet.signTypedData(unknownAddress, TYPED_DATA) + ).rejects.toThrowErrorMatchingInlineSnapshot( + `"Could not find address 0x588e4b68193001e4d10928660ab4165b813717c0"` + ) }) }) describe('using a known address', () => { describe('when calling signTransaction', () => { - let celoTransaction: CeloTx + let celoTransactionWithGasPrice: CeloTx beforeEach(() => { - celoTransaction = { + celoTransactionWithGasPrice = { from: knownAddress, to: otherAddress, chainId: CHAIN_ID, @@ -155,16 +170,146 @@ describe('Local wallet class', () => { feeCurrency: '0x', gatewayFeeRecipient: FEE_ADDRESS, gatewayFee: '0x5678', - data: '0xabcdef', + data: '0xabcdef' as const, } }) - test('succeeds', async () => { - await expect(wallet.signTransaction(celoTransaction)).resolves.not.toBeUndefined() + test('succeeds with legacy', async () => { + await expect(wallet.signTransaction(celoTransactionWithGasPrice)).resolves + .toMatchInlineSnapshot(` + { + "raw": "0xf88480630a80941be31a94361a391bbafb2a4ccd704f57dc04d4bb82567894588e4b68193001e4d10928660ab4165b813717c0880de0b6b3a764000083abcdef83015ad8a09e121a99dc0832a9f4d1d71500b3c8a69a3c064d437c225d6292577ffcc45a71a02c5efa3c4b58953c35968e42d11d3882dacacf45402ee802824268b7cd60daff", + "tx": { + "feeCurrency": "0x", + "gas": "0x0a", + "gasPrice": "0x63", + "gatewayFee": "0x5678", + "gatewayFeeRecipient": "0x1be31a94361a391bbafb2a4ccd704f57dc04d4bb", + "hash": "0xd24898ee3f68caa01fe065784453db7360bf783060fcbd18033f9d254ab8b082", + "input": "0xabcdef", + "nonce": "0", + "r": "0x9e121a99dc0832a9f4d1d71500b3c8a69a3c064d437c225d6292577ffcc45a71", + "s": "0x2c5efa3c4b58953c35968e42d11d3882dacacf45402ee802824268b7cd60daff", + "to": "0x588e4b68193001e4d10928660ab4165b813717c0", + "v": "0x015ad8", + "value": "0x0de0b6b3a7640000", + }, + "type": "celo-legacy", + } + `) + }) + + test('succeeds with eip1559', async () => { + const transaction1559 = { + ...celoTransactionWithGasPrice, + gasPrice: undefined, + feeCurrency: undefined, + maxFeePerGas: '99', + maxPriorityFeePerGas: '99', + } + await expect(wallet.signTransaction(transaction1559)).resolves.toMatchInlineSnapshot(` + { + "raw": "0x7cf88682ad5a8063630a80941be31a94361a391bbafb2a4ccd704f57dc04d4bb82567894588e4b68193001e4d10928660ab4165b813717c0880de0b6b3a764000083abcdefc001a0cfa1e1b30d1e4617ce80922d853c5e8b54b21f5ed6604438f90280ef2f0b7fd0a06fd8eee02fbdd421136fb45e6851ce72b5d87a2c06b2e136ef1a062df9256f4e", + "tx": { + "accessList": [], + "feeCurrency": "0x", + "gas": "0x0a", + "gatewayFee": "0x5678", + "gatewayFeeRecipient": "0x1be31a94361a391bbafb2a4ccd704f57dc04d4bb", + "hash": "0x29327536ba9901fde64b1b86882fd173517b41cd8bc8245e3761847d9b231c6d", + "input": "0xabcdef", + "maxFeePerGas": "0x63", + "maxPriorityFeePerGas": "0x63", + "nonce": "0", + "r": "0xcfa1e1b30d1e4617ce80922d853c5e8b54b21f5ed6604438f90280ef2f0b7fd0", + "s": "0x6fd8eee02fbdd421136fb45e6851ce72b5d87a2c06b2e136ef1a062df9256f4e", + "to": "0x588e4b68193001e4d10928660ab4165b813717c0", + "v": "0x01", + "value": "0x0de0b6b3a7640000", + }, + "type": "cip42", + } + `) + }) + + test('matches behavior of viem 1559', async () => { + const account = privateKeyToAccount(PRIVATE_KEY2) + const wallet2 = new LocalWallet() + // wallet 1 uses a private key that does not start with 0x which doesnt work for viem + wallet2.addAccount(PRIVATE_KEY2) + + const transaction1559 = { + ...celoTransactionWithGasPrice, + from: ACCOUNT_ADDRESS2, + to: otherAddress, + gasPrice: undefined, + feeCurrency: undefined, + gatewayFeeRecipient: undefined, + gatewayFee: undefined, + maxFeePerGas: '99', + maxPriorityFeePerGas: '99', + data: celoTransactionWithGasPrice.data as Hex, + } + const transaction1559Viem: TransactionSerializableEIP1559 = { + ...transaction1559, + type: 'eip1559', + gas: BigInt(transaction1559.gas as string), + to: transaction1559.to as StrongAddress, + value: BigInt(transaction1559.value as string), + maxFeePerGas: BigInt(transaction1559.maxFeePerGas as string), + maxPriorityFeePerGas: BigInt(transaction1559.maxPriorityFeePerGas as string), + accessList: undefined, + chainId: celoTransactionWithGasPrice.chainId as number, + } + const signedTransaction = await wallet2.signTransaction(transaction1559) + const viemSignedTransaction = await account.signTransaction(transaction1559Viem) + + expect(parseTransaction(signedTransaction.raw)).toEqual( + parseTransaction(viemSignedTransaction) + ) + expect(recoverTransaction(signedTransaction.raw)).toEqual( + recoverTransaction(viemSignedTransaction) + ) + expect(signedTransaction.raw).toEqual(viemSignedTransaction) + }) + + test('succeeds with cip42', async () => { + const transaction42 = { + ...celoTransactionWithGasPrice, + gasPrice: undefined, + maxFeePerGas: '99', + maxPriorityFeePerGas: '99', + feeCurrency: '0xCD2a3d9F938E13CD947Ec05AbC7FE734Df8DD826', + } + await expect(wallet.signTransaction(transaction42)).resolves.toMatchInlineSnapshot(` + { + "raw": "0x7cf89a82ad5a8063630a94cd2a3d9f938e13cd947ec05abc7fe734df8dd826941be31a94361a391bbafb2a4ccd704f57dc04d4bb82567894588e4b68193001e4d10928660ab4165b813717c0880de0b6b3a764000083abcdefc080a0c610507b2ac3cff80dd7017419021196807d605efce0970c18cde48db33c27d1a01799477e0f601f554f0ee6f7ac21490602124801e9f7a99d9605249b90f03112", + "tx": { + "accessList": [], + "feeCurrency": "0xcd2a3d9f938e13cd947ec05abc7fe734df8dd826", + "gas": "0x0a", + "gatewayFee": "0x5678", + "gatewayFeeRecipient": "0x1be31a94361a391bbafb2a4ccd704f57dc04d4bb", + "hash": "0x7afcef8db391ff574b7f9c9205399b8ab094fc9fc8afbfb881204cbaaf093365", + "input": "0xabcdef", + "maxFeePerGas": "0x63", + "maxPriorityFeePerGas": "0x63", + "nonce": "0", + "r": "0xc610507b2ac3cff80dd7017419021196807d605efce0970c18cde48db33c27d1", + "s": "0x1799477e0f601f554f0ee6f7ac21490602124801e9f7a99d9605249b90f03112", + "to": "0x588e4b68193001e4d10928660ab4165b813717c0", + "v": "0x", + "value": "0x0de0b6b3a7640000", + }, + "type": "cip42", + } + `) }) test('with same signer', async () => { - const signedTx: EncodedTransaction = await wallet.signTransaction(celoTransaction) + const signedTx: EncodedTransaction = await wallet.signTransaction( + celoTransactionWithGasPrice + ) const [, recoveredSigner] = recoverTransaction(signedTx.raw) expect(normalizeAddressWith0x(recoveredSigner)).toBe( normalizeAddressWith0x(knownAddress) @@ -198,6 +343,94 @@ describe('Local wallet class', () => { ) }) }) + describe('when using signTransaction with type CIP42', () => { + let celoTransactionBase: CeloTx + let feeCurrency = '0x10c892a6ec43a53e45d0b916b4b7d383b1b78c0f' + let maxFeePerGas = '0x100000000' + let maxPriorityFeePerGas = '0x100000000' + + beforeEach(() => { + celoTransactionBase = { + gas: '1000000000', + from: knownAddress, + to: otherAddress, + chainId: CHAIN_ID, + value: Web3.utils.toWei('1', 'ether'), + nonce: 0, + data: '0xabcdef', + } + }) + + describe('when feeCurrency and maxPriorityFeePerGas and maxFeePerGas are set', () => { + it('signs as a CIP42 tx', async () => { + const transaction: CeloTx = { + ...celoTransactionBase, + feeCurrency, + maxFeePerGas, + maxPriorityFeePerGas, + } + const signedTx: EncodedTransaction = await wallet.signTransaction(transaction) + expect(signedTx.raw).toMatch(/^0x7c/) + }) + }) + describe('when feeCurrency and maxFeePerGas but not maxPriorityFeePerGas are set', () => { + it('throws error', async () => { + const transaction: CeloTx = { + ...celoTransactionBase, + feeCurrency, + maxFeePerGas, + maxPriorityFeePerGas: undefined, + } + expect(() => + wallet.signTransaction(transaction) + ).rejects.toThrowErrorMatchingInlineSnapshot( + `""gasPrice" or "maxFeePerGas" and "maxPriorityFeePerGas" are missing"` + ) + }) + }) + + describe('when feeCurrency and maxPriorityFeePerGas but not maxFeePerGas are set', () => { + it('throws error', async () => { + const transaction: CeloTx = { + ...celoTransactionBase, + feeCurrency, + maxFeePerGas: undefined, + maxPriorityFeePerGas, + } + expect(() => + wallet.signTransaction(transaction) + ).rejects.toThrowErrorMatchingInlineSnapshot( + `""gasPrice" or "maxFeePerGas" and "maxPriorityFeePerGas" are missing"` + ) + }) + }) + + describe('when gas and one of maxPriorityFeePerGas or maxFeePerGas are set', () => { + it('throws explaining only one kind of gas fee can be set', async () => { + const transaction: CeloTx = { + ...celoTransactionBase, + maxFeePerGas, + maxPriorityFeePerGas, + gasPrice: '0x100000000', + } + expect(async () => await wallet.signTransaction(transaction)).rejects.toThrowError( + 'when "maxFeePerGas" or "maxPriorityFeePerGas" are set, "gasPrice" must not be set' + ) + }) + }) + + describe('when maxPriorityFeePerGas / maxFeePerGas are set but not feeCurrency', () => { + it('signs as a EIP1559 tx', async () => { + const transaction: CeloTx = { + ...celoTransactionBase, + maxFeePerGas, + maxPriorityFeePerGas, + } + const signedTx: EncodedTransaction = await wallet.signTransaction(transaction) + expect(signedTx.raw).toMatch(/^0x02/) + }) + }) + }) describe('when calling signPersonalMessage', () => { test('succeeds', async () => { diff --git a/packages/sdk/wallets/wallet-local/src/signing.test.ts b/packages/sdk/wallets/wallet-local/src/signing.test.ts index ac867abb21e..0fa9af00ffa 100644 --- a/packages/sdk/wallets/wallet-local/src/signing.test.ts +++ b/packages/sdk/wallets/wallet-local/src/signing.test.ts @@ -25,123 +25,11 @@ debug(`Account Address 1: ${ACCOUNT_ADDRESS1}`) debug(`Private key 2: ${PRIVATE_KEY2}`) debug(`Account Address 2: ${ACCOUNT_ADDRESS2}`) -async function verifyLocalSigning(web3: Web3, celoTransaction: CeloTx): Promise { - debug('Signer Testing using Account: %s', celoTransaction.from) - const signedTransaction = await web3.eth.signTransaction(celoTransaction) - debug('Singer Testing: Signed transaction %o', signedTransaction) - const rawTransaction: string = signedTransaction.raw - const [signedCeloTransaction, recoveredSigner] = recoverTransaction(rawTransaction) - debug( - 'Transaction was signed by "%s", recovered signer is "%s"', - celoTransaction.from, - recoveredSigner - ) - expect(recoveredSigner.toLowerCase()).toEqual(celoTransaction.from!.toString().toLowerCase()) - - if (celoTransaction.nonce != null) { - debug( - 'Checking nonce actual: %o expected: %o', - signedCeloTransaction.nonce, - parseInt(celoTransaction.nonce.toString(), 16) - ) - expect(signedCeloTransaction.nonce).toEqual(parseInt(celoTransaction.nonce.toString(), 16)) - } - if (celoTransaction.gas != null) { - debug( - 'Checking gas actual %o expected %o', - signedCeloTransaction.gas, - parseInt(celoTransaction.gas.toString(), 16) - ) - expect(signedCeloTransaction.gas).toEqual(parseInt(celoTransaction.gas.toString(), 16)) - } - if (celoTransaction.gasPrice != null) { - debug( - 'Checking gas price actual %o expected %o', - signedCeloTransaction.gasPrice, - parseInt(celoTransaction.gasPrice.toString(), 16) - ) - expect(signedCeloTransaction.gasPrice).toEqual( - parseInt(celoTransaction.gasPrice.toString(), 16) - ) - } - if (celoTransaction.feeCurrency != null) { - debug( - 'Checking fee currency actual %o expected %o', - signedCeloTransaction.feeCurrency, - celoTransaction.feeCurrency - ) - expect(signedCeloTransaction.feeCurrency!.toLowerCase()).toEqual( - celoTransaction.feeCurrency.toLowerCase() - ) - } - if (celoTransaction.gatewayFeeRecipient != null) { - debug( - 'Checking gateway fee recipient actual ' + - `${signedCeloTransaction.gatewayFeeRecipient} expected ${celoTransaction.gatewayFeeRecipient}` - ) - expect(signedCeloTransaction.gatewayFeeRecipient!.toLowerCase()).toEqual( - celoTransaction.gatewayFeeRecipient.toLowerCase() - ) - } - if (celoTransaction.gatewayFee != null) { - debug( - 'Checking gateway fee value actual %o expected %o', - signedCeloTransaction.gatewayFee, - celoTransaction.gatewayFee.toString() - ) - expect(signedCeloTransaction.gatewayFee).toEqual(celoTransaction.gatewayFee.toString()) - } - if (celoTransaction.data != null) { - debug(`Checking data actual ${signedCeloTransaction.data} expected ${celoTransaction.data}`) - expect(signedCeloTransaction.data!.toLowerCase()).toEqual(celoTransaction.data.toLowerCase()) - } -} - -async function verifyLocalSigningInAllPermutations( - web3: Web3, - from: string, - to: string -): Promise { - const amountInWei: string = Web3.utils.toWei('1', 'ether') - const nonce = 0 - const badNonce = 100 - const gas = 10 - const gasPrice = 99 - const feeCurrency = ACCOUNT_ADDRESS1 - const gatewayFeeRecipient = ACCOUNT_ADDRESS2 - const gatewayFee = '0x5678' - const data = '0xabcdef' - const chainId = 1 - - // tslint:disable:no-bitwise - // Test all possible combinations for rigor. - for (let i = 0; i < 16; i++) { - const celoTransaction: CeloTx = { - from, - to, - value: amountInWei, - nonce, - gasPrice, - chainId, - gas, - feeCurrency: i & 1 ? feeCurrency : undefined, - gatewayFeeRecipient: i & 2 ? gatewayFeeRecipient : undefined, - gatewayFee: i & 4 ? gatewayFee : undefined, - data: i & 8 ? data : undefined, - } - await verifyLocalSigning(web3, celoTransaction) - } - // tslint:enable:no-bitwise - - // A special case. - // An incorrect nonce will only work, if no implict calls to estimate gas are required. - await verifyLocalSigning(web3, { from, to, nonce: badNonce, gas, gasPrice, chainId }) -} - // These tests verify the signTransaction WITHOUT the ParamsPopulator describe('Transaction Utils', () => { // only needed for the eth_coinbase rcp call let connection: Connection + let web3: Web3 const mockProvider: Provider = { send: (payload: JsonRpcPayload, callback: Callback): void => { if (payload.method === 'eth_coinbase') { @@ -151,44 +39,212 @@ describe('Transaction Utils', () => { result: '0xc94770007dda54cF92009BFF0dE90c06F603a09f', } callback(null, response) + } else if (payload.method === 'eth_gasPrice') { + const response: JsonRpcResponse = { + jsonrpc: payload.jsonrpc, + id: Number(payload.id), + result: '0x09184e72a000', + } + callback(null, response) } else { callback(new Error(payload.method)) } }, } - const web3: Web3 = new Web3() - beforeEach(() => { + const setupConnection = async () => { + web3 = new Web3() web3.setProvider(mockProvider as any) connection = new Connection(web3) connection.wallet = new LocalWallet() - }) + } + async function verifyLocalSigning(celoTransaction: CeloTx): Promise { + let recoveredSigner: string | undefined + let recoveredTransaction: CeloTx | undefined + let signedTransaction: { raw: string; tx: any } | undefined + beforeAll(async () => { + signedTransaction = await web3.eth.signTransaction(celoTransaction) + const recovery = recoverTransaction(signedTransaction.raw) + recoveredTransaction = recovery[0] + recoveredSigner = recovery[1] + }) - afterEach(() => { - connection.stop() - }) + afterAll(async () => { + signedTransaction = undefined + recoveredTransaction = undefined + recoveredSigner = undefined + }) + + test('Signer matches recovered signer', async () => { + expect(recoveredSigner?.toLowerCase()).toEqual(celoTransaction.from!.toString().toLowerCase()) + }) + + test('Checking nonce', async () => { + if (celoTransaction.nonce != null) { + expect(recoveredTransaction?.nonce).toEqual(parseInt(celoTransaction.nonce.toString(), 16)) + } + }) + + test('Checking gas', async () => { + if (celoTransaction.gas != null) { + expect(recoveredTransaction?.gas).toEqual(parseInt(celoTransaction.gas.toString(), 16)) + } + }) + test('Checking gas price', async () => { + if (celoTransaction.gasPrice != null) { + expect(recoveredTransaction?.gasPrice).toEqual( + parseInt(celoTransaction.gasPrice.toString(), 16) + ) + } + }) + test('Checking maxFeePerGas', async () => { + if (celoTransaction.maxFeePerGas != null) { + expect(recoveredTransaction?.maxFeePerGas).toEqual( + parseInt(celoTransaction.maxFeePerGas.toString(), 16) + ) + } + }) + test('Checking maxPriorityFeePerGas', async () => { + if (celoTransaction.maxPriorityFeePerGas != null) { + expect(recoveredTransaction?.maxPriorityFeePerGas).toEqual( + parseInt(celoTransaction.maxPriorityFeePerGas.toString(), 16) + ) + } + }) + test('Checking feeCurrency', async () => { + if (celoTransaction.feeCurrency != null) { + expect(recoveredTransaction?.feeCurrency!.toLowerCase()).toEqual( + celoTransaction.feeCurrency.toLowerCase() + ) + } + }) + test('gatewayFeeRecipient', async () => { + if ( + celoTransaction.gatewayFeeRecipient !== undefined && + celoTransaction.gatewayFeeRecipient !== null + ) { + expect(recoveredTransaction?.gatewayFeeRecipient?.toLowerCase()).toEqual( + celoTransaction.gatewayFeeRecipient.toLowerCase() + ) + } + }) + test('Checking gateway fee value', async () => { + if (celoTransaction.gatewayFee !== undefined && celoTransaction.gatewayFee !== null) { + expect(recoveredTransaction?.gatewayFee).toEqual(celoTransaction.gatewayFee.toString()) + } + }) + test('Checking data', async () => { + if (celoTransaction.data != null) { + expect(recoveredTransaction?.data!.toLowerCase()).toEqual( + celoTransaction.data.toLowerCase() + ) + } + }) + } + + async function verifyLocalSigningInAllPermutations(from: string, to: string): Promise { + const amountInWei: string = Web3.utils.toWei('1', 'ether') + const nonce = 0 + const badNonce = 100 + const gas = 10000 + const gasPrice = 99000000000 + const feeCurrency = ACCOUNT_ADDRESS1 + const gatewayFeeRecipient = ACCOUNT_ADDRESS2 + const gatewayFee = '0x5678' + const data = '0xabcdef' + const chainId = 1 + + // tslint:disable:no-bitwise + // Test all possible combinations for rigor. + for (let i = 0; i < 16; i++) { + const celoTransaction: CeloTx = { + from, + to, + value: amountInWei, + nonce, + gasPrice: i % 2 === 0 ? gasPrice : undefined, + maxFeePerGas: i % 2 === 1 ? gasPrice : undefined, + maxPriorityFeePerGas: i % 2 === 1 ? gasPrice : undefined, + chainId, + gas, + feeCurrency: i % 3 === 0 ? feeCurrency : undefined, + gatewayFeeRecipient: i % 7 === 0 ? gatewayFeeRecipient : undefined, + gatewayFee: i % 7 === 0 ? gatewayFee : undefined, + data: i & 8 ? data : undefined, + } + describe(transactionDescription(celoTransaction), () => { + verifyLocalSigning(celoTransaction) + }) + } + + function transactionDescription(celoTransaction: CeloTx) { + const description: string[] = [] + if (celoTransaction.gasPrice != undefined) { + description.push(`Testing Legacy with gas price ${celoTransaction.gasPrice}`) + } else if ( + celoTransaction.feeCurrency != undefined || + celoTransaction.gatewayFeeRecipient !== undefined || + celoTransaction.gatewayFee !== undefined + ) { + description.push('Testing CIP42 with') + } else { + description.push(`Testing EIP1559 with maxFeePerGas ${celoTransaction.maxFeePerGas}`) + } + if (celoTransaction.data != undefined) { + description.push(`data: ${celoTransaction.data}`) + } + + if (celoTransaction.feeCurrency != undefined) { + description.push(`fee currency: ${celoTransaction.feeCurrency}`) + } + + if (celoTransaction.gatewayFeeRecipient != undefined) { + description.push(`gateway fee recipient: ${celoTransaction.gatewayFeeRecipient}`) + } + if (celoTransaction.gatewayFee != undefined) { + description.push(`gateway fee: ${celoTransaction.gatewayFee}`) + } + + return description.join(' ') + } + + // A special case. + // An incorrect nonce will only work, if no implicit calls to estimate gas are required. + describe('Testing with bad nonce', () => { + verifyLocalSigning({ from, to, nonce: badNonce, gas, gasPrice, chainId }) + }) + } describe('Signer Testing with single local account and pay gas in CELO', () => { - it('Test1 should be able to sign and get the signer back with single local account', async () => { - jest.setTimeout(60 * 1000) - connection.addAccount(PRIVATE_KEY1) - await verifyLocalSigningInAllPermutations(web3, ACCOUNT_ADDRESS1, ACCOUNT_ADDRESS2) + describe('Test1 should be able to sign and get the signer back with single local account', () => { + beforeAll(async () => { + await setupConnection() + connection.addAccount(PRIVATE_KEY1) + }) + verifyLocalSigningInAllPermutations(ACCOUNT_ADDRESS1, ACCOUNT_ADDRESS2) + afterAll(() => connection.stop()) }) }) describe('Signer Testing with multiple local accounts', () => { - it('Test2 should be able to sign with first account and get the signer back with multiple local accounts', async () => { - jest.setTimeout(60 * 1000) - connection.addAccount(PRIVATE_KEY1) - connection.addAccount(PRIVATE_KEY2) - await verifyLocalSigningInAllPermutations(web3, ACCOUNT_ADDRESS1, ACCOUNT_ADDRESS2) - }) - - it('Test3 should be able to sign with second account and get the signer back with multiple local accounts', async () => { - jest.setTimeout(60 * 1000) - connection.addAccount(PRIVATE_KEY1) - connection.addAccount(PRIVATE_KEY2) - await verifyLocalSigningInAllPermutations(web3, ACCOUNT_ADDRESS2, ACCOUNT_ADDRESS1) + describe('Test2 should be able to sign with first account and get the signer back with multiple local accounts', () => { + beforeAll(async () => { + await setupConnection() + connection.addAccount(PRIVATE_KEY1) + connection.addAccount(PRIVATE_KEY2) + }) + verifyLocalSigningInAllPermutations(ACCOUNT_ADDRESS1, ACCOUNT_ADDRESS2) + afterAll(() => connection.stop()) + }) + + describe('Test3 should be able to sign with second account and get the signer back with multiple local accounts', () => { + beforeAll(async () => { + await setupConnection() + connection.addAccount(PRIVATE_KEY1) + connection.addAccount(PRIVATE_KEY2) + }) + verifyLocalSigningInAllPermutations(ACCOUNT_ADDRESS2, ACCOUNT_ADDRESS1) + afterAll(() => connection.stop()) }) }) }) diff --git a/packages/sdk/wallets/wallet-local/tsconfig.json b/packages/sdk/wallets/wallet-local/tsconfig.json index e267672350c..b37d430f5cc 100644 --- a/packages/sdk/wallets/wallet-local/tsconfig.json +++ b/packages/sdk/wallets/wallet-local/tsconfig.json @@ -5,5 +5,6 @@ "outDir": "lib" }, "include": ["src"], + "exclude": ["**/*.test.ts"], "references": [{ "path": "../../utils" }] } diff --git a/packages/sdk/wallets/wallet-remote/package.json b/packages/sdk/wallets/wallet-remote/package.json index c59bb1090db..4bcacb62e1c 100644 --- a/packages/sdk/wallets/wallet-remote/package.json +++ b/packages/sdk/wallets/wallet-remote/package.json @@ -1,6 +1,6 @@ { "name": "@celo/wallet-remote", - "version": "4.1.2-dev", + "version": "5.0.3-dev", "description": "Remote wallet implementation", "author": "Celo", "license": "Apache-2.0", @@ -22,9 +22,9 @@ "prepublishOnly": "yarn build" }, "dependencies": { - "@celo/connect": "4.1.2-dev", - "@celo/utils": "4.1.2-dev", - "@celo/wallet-base": "4.1.2-dev", + "@celo/connect": "5.0.3-dev", + "@celo/utils": "5.0.3-dev", + "@celo/wallet-base": "5.0.3-dev", "@ethereumjs/util": "8.0.5", "@types/debug": "^4.1.5", "eth-lib": "^0.2.8" diff --git a/packages/sdk/wallets/wallet-rpc/package.json b/packages/sdk/wallets/wallet-rpc/package.json index 846b1e3d71d..a3b4b3a8650 100644 --- a/packages/sdk/wallets/wallet-rpc/package.json +++ b/packages/sdk/wallets/wallet-rpc/package.json @@ -1,6 +1,6 @@ { "name": "@celo/wallet-rpc", - "version": "4.1.2-dev", + "version": "5.0.3-dev", "description": "Geth RPC wallet implementation", "author": "Celo", "license": "Apache-2.0", @@ -22,16 +22,16 @@ "prepublishOnly": "yarn build" }, "dependencies": { - "@celo/connect": "4.1.2-dev", - "@celo/utils": "4.1.2-dev", - "@celo/wallet-base": "4.1.2-dev", - "@celo/wallet-remote": "4.1.2-dev", + "@celo/connect": "5.0.3-dev", + "@celo/utils": "5.0.3-dev", + "@celo/wallet-base": "5.0.3-dev", + "@celo/wallet-remote": "5.0.3-dev", "bignumber.js": "^9.0.0", "debug": "^4.1.1" }, "devDependencies": { "@celo/dev-utils": "0.0.1-dev", - "@celo/contractkit": "4.1.2-dev" + "@celo/contractkit": "5.0.3-dev" }, "engines": { "node": ">=8.14.2" diff --git a/packages/sdk/wallets/wallet-rpc/src/rpc-signer.ts b/packages/sdk/wallets/wallet-rpc/src/rpc-signer.ts index 2e6cca39f0f..00fce4de197 100644 --- a/packages/sdk/wallets/wallet-rpc/src/rpc-signer.ts +++ b/packages/sdk/wallets/wallet-rpc/src/rpc-signer.ts @@ -82,14 +82,21 @@ export class RpcSigner implements Signer { throw new Error(`RpcSigner cannot sign tx with 'from' ${tx.from}`) } // see geth SendTxArgs type - // https://github.com/celo-org/celo-blockchain/blob/bf2ba25426f9956384220b8b2ce302337e7fa8a4/internal/ethapi/api.go#L1363 + // https://github.com/celo-org/celo-blockchain/blob/fc20d6921478cda68fc88797078f20053bae8866/internal/ethapi/api.go#L1241C6-L1241C20 const rpcTx = { ...tx, nonce: toRpcHex(tx.nonce), value: toRpcHex(tx.value), gas: toRpcHex(tx.gas), - gasPrice: toRpcHex(tx.gasPrice), gatewayFee: toRpcHex(tx.gatewayFee), + ...(tx.gasPrice + ? { + gasPrice: toRpcHex(tx.gasPrice), + } + : { + maxPriorityFeePerGas: toRpcHex(tx.maxPriorityFeePerGas), + maxFeePerGas: toRpcHex(tx.maxFeePerGas), + }), } return this.callAndCheckResponse(RpcSignerEndpoint.SignTransaction, [rpcTx]) } diff --git a/packages/sdk/wallets/wallet-rpc/src/rpc-wallet.test.ts b/packages/sdk/wallets/wallet-rpc/src/rpc-wallet.test.ts index cb23c4942ee..8f25fe84d25 100644 --- a/packages/sdk/wallets/wallet-rpc/src/rpc-wallet.test.ts +++ b/packages/sdk/wallets/wallet-rpc/src/rpc-wallet.test.ts @@ -178,8 +178,26 @@ testWithGanache('rpc-wallet', (web3) => { } }) - test('succeeds', async () => { - await expect(rpcWallet.signTransaction(celoTransaction)).resolves.not.toBeUndefined() + test('succeeds with old school pricing', async () => { + await expect( + rpcWallet.signTransaction(celoTransaction) + ).resolves.toMatchInlineSnapshot( + `"0xf86b8081991094588e4b68193001e4d10928660ab4165b813717c08a0100000000000000000083abcdef25a073bb7eaa60c810af1fad0f68fa15d4714f9990d0202b62797f6134493ec9f6fba046c13e92017228c2c8f0fae74ddd735021817f2f9757cd66debed078daf4070e"` + ) + }) + + test('succeeds with with FeeMarketFields', async () => { + const feeMarketTransaction = { + ...celoTransaction, + gasPrice: undefined, + maxFeePerGas: '1500000000', + maxPriorityFeePerGas: '1500000000', + } + await expect( + rpcWallet.signTransaction(feeMarketTransaction) + ).resolves.toMatchInlineSnapshot( + `"0xf86a80801094588e4b68193001e4d10928660ab4165b813717c08a0100000000000000000083abcdef26a05e9c1e7690d05f3e1433c824fbd948643ff6c618e347ea8c23a6363f3b17cdffa072dc1c22d6147be7b4b7b3cf51eb73b8bedd7940d7b668dcd7ef688a2354a631"` + ) }) // TODO(yorke): enable once fixed: https://github.com/celo-org/celo-monorepo/issues/4077 diff --git a/yarn.lock b/yarn.lock index bc941833aaa..4f97f9380e0 100644 --- a/yarn.lock +++ b/yarn.lock @@ -267,6 +267,11 @@ ethers "~4.0.4" lodash "^4.17.21" +"@adraffy/ens-normalize@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@adraffy/ens-normalize/-/ens-normalize-1.9.0.tgz#223572538f6bea336750039bb43a4016dcc8182d" + integrity sha512-iowxq3U30sghZotgl4s/oJRci6WPBfNO5YYgk2cIOMCHr3LeGPcsZjCEr+33Q4N+oV3OABDAtA+pyvWjbvBifQ== + "@ampproject/remapping@^2.2.0": version "2.2.1" resolved "https://registry.yarnpkg.com/@ampproject/remapping/-/remapping-2.2.1.tgz#99e8e11851128b8702cd57c33684f1d0f260b630" @@ -933,6 +938,11 @@ resolved "https://registry.yarnpkg.com/@celo/base/-/base-1.5.2.tgz#168ab5e4e30b374079d8d139fafc52ca6bfd4100" integrity sha512-KGf6Dl9E6D01vAfkgkjL2sG+zqAjspAogILIpWstljWdG5ifyA75jihrnDEHaMCoQS0KxHvTdP1XYS/GS6BEyQ== +"@celo/base@5.0.1", "@celo/base@^5.0.1": + version "5.0.1" + resolved "https://registry.yarnpkg.com/@celo/base/-/base-5.0.1.tgz#406727217afceec479aa1c0fc8231194595ce84e" + integrity sha512-R0n+nkBv9HPl9IxXkxCGZS20waKWbidA1jyz5a9W5GHxPh6ooTv69KGBIsj1xAdbtlqdvaPbeWJHPxgr5X7nXg== + "@celo/bls12377js@0.1.1": version "0.1.1" resolved "https://registry.yarnpkg.com/@celo/bls12377js/-/bls12377js-0.1.1.tgz#ba3574f41697cdba96c10ae96bb1aac057285798" @@ -953,6 +963,19 @@ debug "^4.1.1" utf8 "3.0.0" +"@celo/connect@5.0.1": + version "5.0.1" + resolved "https://registry.yarnpkg.com/@celo/connect/-/connect-5.0.1.tgz#88a92f4f15fb2cb92fe711243e44deaf02a8ce7b" + integrity sha512-cN1hgdAzNP03Czgc70OkWepHSxsM21L0rpAU5nAagv4NTNfb8nuX89UwEIo1C4804gxR/MqGayHf48tZnnBZ5g== + dependencies: + "@celo/base" "5.0.1" + "@celo/utils" "5.0.1" + "@types/debug" "^4.1.5" + "@types/utf8" "^2.1.6" + bignumber.js "^9.0.0" + debug "^4.1.1" + utf8 "3.0.0" + "@celo/contractkit@1.5.2": version "1.5.2" resolved "https://registry.yarnpkg.com/@celo/contractkit/-/contractkit-1.5.2.tgz#be15d570f3044a190dabb6bbe53d5081c78ea605" @@ -971,6 +994,25 @@ semver "^7.3.5" web3 "1.3.6" +"@celo/contractkit@^5.0.1": + version "5.0.1" + resolved "https://registry.yarnpkg.com/@celo/contractkit/-/contractkit-5.0.1.tgz#2c76522784de0f9b03b3724b2cd9911a008f82ec" + integrity sha512-b9biRPA8+grwYkdkt6VYOuC+h2cN/MFcTSdqmAh4I4o5pxfHmTejbolVALjssSSC/3quV1XmTzeh9UMpPWJoDA== + dependencies: + "@celo/base" "5.0.1" + "@celo/connect" "5.0.1" + "@celo/utils" "5.0.1" + "@celo/wallet-local" "5.0.1" + "@types/bn.js" "^5.1.0" + "@types/debug" "^4.1.5" + bignumber.js "^9.0.0" + cross-fetch "3.0.6" + debug "^4.1.1" + fp-ts "2.1.1" + io-ts "2.0.1" + semver "^7.3.5" + web3 "1.10.0" + "@celo/phone-number-privacy-common@1.0.39": version "1.0.39" resolved "https://registry.yarnpkg.com/@celo/phone-number-privacy-common/-/phone-number-privacy-common-1.0.39.tgz#3c9568f70378d24d11afcc4306024c5cf4f8efe9" @@ -989,6 +1031,47 @@ elliptic "^6.5.4" is-base64 "^1.1.0" +"@celo/phone-number-privacy-common@^3.0.2": + version "3.0.2" + resolved "https://registry.yarnpkg.com/@celo/phone-number-privacy-common/-/phone-number-privacy-common-3.0.2.tgz#c6e1857635e1922e4f232cd44980ac5c67541856" + integrity sha512-WYTlx2UDn3ZQoQ4hXADfp16Gw5iUiHkEikReUilxGSRIgAH1MkGVMh2U2nKCU7/9RhaLxUVMXrfu3LulKet9WQ== + dependencies: + "@celo/base" "^5.0.1" + "@celo/contractkit" "^5.0.1" + "@celo/phone-utils" "^5.0.1" + "@celo/utils" "^5.0.1" + "@opentelemetry/api" "^1.4.1" + "@opentelemetry/auto-instrumentations-node" "^0.38.0" + "@opentelemetry/propagator-ot-trace" "^0.27.0" + "@opentelemetry/sdk-metrics" "^1.15.1" + "@opentelemetry/sdk-node" "^0.41.1" + "@opentelemetry/sdk-trace-web" "^1.15.1" + "@opentelemetry/semantic-conventions" "^1.15.1" + "@types/bunyan" "1.8.8" + bignumber.js "^9.0.0" + bunyan "1.8.12" + bunyan-debug-stream "2.0.0" + bunyan-gke-stackdriver "0.1.2" + dotenv "^8.2.0" + elliptic "^6.5.4" + io-ts "2.0.1" + is-base64 "^1.1.0" + +"@celo/phone-utils@^5.0.1": + version "5.0.1" + resolved "https://registry.yarnpkg.com/@celo/phone-utils/-/phone-utils-5.0.1.tgz#ccfdd302fdc36d7f414f23d08ab133937bce8d5e" + integrity sha512-cExztDocm2Wu2fvPPt2bu2mi7mnorjSaWTmL/Kxl4GNIpKf5Q3k5iEOb/bPNAMROAdiOqipge7ro1sTP9d9iQg== + dependencies: + "@celo/base" "5.0.1" + "@celo/utils" "5.0.1" + "@types/country-data" "^0.0.0" + "@types/google-libphonenumber" "^7.4.23" + "@types/node" "^10.12.18" + country-data "^0.0.31" + fp-ts "2.1.1" + google-libphonenumber "^3.2.27" + io-ts "2.0.1" + "@celo/poprf@^0.1.9": version "0.1.9" resolved "https://registry.yarnpkg.com/@celo/poprf/-/poprf-0.1.9.tgz#38c514ce0f572b80edeb9dc280b6cf5e9d7c2a75" @@ -1035,6 +1118,23 @@ web3-eth-abi "1.3.6" web3-utils "1.3.6" +"@celo/utils@5.0.1", "@celo/utils@^5.0.1": + version "5.0.1" + resolved "https://registry.yarnpkg.com/@celo/utils/-/utils-5.0.1.tgz#561725779e7ac39c029c81d3d175eaf70faef755" + integrity sha512-EHue0t0/ge8j59WivJ7PnFnT3V7omKPCbHSymx+ehauz01nT8Xt6q64ubqyS5hfPeWYL9JmuDJG7VmIaWpj8HQ== + dependencies: + "@celo/base" "5.0.1" + "@ethereumjs/util" "8.0.5" + "@types/bn.js" "^5.1.0" + "@types/elliptic" "^6.4.9" + "@types/node" "^10.12.18" + bignumber.js "^9.0.0" + elliptic "^6.5.4" + ethereum-cryptography "1.2.0" + io-ts "2.0.1" + web3-eth-abi "1.10.0" + web3-utils "1.10.0" + "@celo/wallet-base@1.5.2": version "1.5.2" resolved "https://registry.yarnpkg.com/@celo/wallet-base/-/wallet-base-1.5.2.tgz#ae8df425bf3c702277bb1b63a761a2ec8429e7aa" @@ -1050,6 +1150,21 @@ eth-lib "^0.2.8" ethereumjs-util "^5.2.0" +"@celo/wallet-base@5.0.1": + version "5.0.1" + resolved "https://registry.yarnpkg.com/@celo/wallet-base/-/wallet-base-5.0.1.tgz#0da3a072169c9877988287006386bf05371d0470" + integrity sha512-MWYwloV0MbP7sFXAYGNilz3QgrIDkcmv0M4NhV+zLyZbuj/iyn+Kw5wU0x85YalO+jDDA7eFYvly1DYlEM2H9Q== + dependencies: + "@celo/base" "5.0.1" + "@celo/connect" "5.0.1" + "@celo/utils" "5.0.1" + "@ethereumjs/util" "8.0.5" + "@types/debug" "^4.1.5" + bignumber.js "^9.0.0" + debug "^4.1.1" + eth-lib "^0.2.8" + ethereum-cryptography "^2.1.2" + "@celo/wallet-local@1.5.2": version "1.5.2" resolved "https://registry.yarnpkg.com/@celo/wallet-local/-/wallet-local-1.5.2.tgz#66ea5fb763e19724309e3d56f312f1a342e12b91" @@ -1062,6 +1177,17 @@ eth-lib "^0.2.8" ethereumjs-util "^5.2.0" +"@celo/wallet-local@5.0.1": + version "5.0.1" + resolved "https://registry.yarnpkg.com/@celo/wallet-local/-/wallet-local-5.0.1.tgz#61f0242d55c4258c3fdfc3bf0d887cb27877caa0" + integrity sha512-BQvxyLB85t5foyzFm5+zhTtlKUCDzPPAp+Ltpj7FUOYSy1bybuGys7iuhYWNg4hwTolEb6aOYh4ZSN5jZN958w== + dependencies: + "@celo/connect" "5.0.1" + "@celo/utils" "5.0.1" + "@celo/wallet-base" "5.0.1" + "@ethereumjs/util" "8.0.5" + eth-lib "^0.2.8" + "@chainsafe/as-sha256@^0.3.1": version "0.3.1" resolved "https://registry.yarnpkg.com/@chainsafe/as-sha256/-/as-sha256-0.3.1.tgz#3639df0e1435cab03f4d9870cc3ac079e57a6fc9" @@ -3529,11 +3655,35 @@ call-me-maybe "^1.0.1" glob-to-regexp "^0.3.0" +"@noble/curves@1.0.0", "@noble/curves@~1.0.0": + version "1.0.0" + resolved "https://registry.yarnpkg.com/@noble/curves/-/curves-1.0.0.tgz#e40be8c7daf088aaf291887cbc73f43464a92932" + integrity sha512-2upgEu0iLiDVDZkNLeFV2+ht0BAVgQnEmCk6JsOch9Rp8xfkMCbvbAZlA2pBHQc73dbl+vFOXfqkf4uemdn0bw== + dependencies: + "@noble/hashes" "1.3.0" + +"@noble/curves@1.1.0", "@noble/curves@~1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@noble/curves/-/curves-1.1.0.tgz#f13fc667c89184bc04cccb9b11e8e7bae27d8c3d" + integrity sha512-091oBExgENk/kGj3AZmtBDMpxQPDtxQABR2B9lb1JbVTs6ytdzZNwvhxQ4MWasRNEzlbEH8jCWFCwhF/Obj5AA== + dependencies: + "@noble/hashes" "1.3.1" + "@noble/hashes@1.2.0", "@noble/hashes@~1.2.0": version "1.2.0" resolved "https://registry.yarnpkg.com/@noble/hashes/-/hashes-1.2.0.tgz#a3150eeb09cc7ab207ebf6d7b9ad311a9bdbed12" integrity sha512-FZfhjEDbT5GRswV3C6uvLPHMiVD6lQBmpoX5+eSiPaMTXte/IKqI5dykDxzZB/WBeK/CDuQRBWarPdi3FNY2zQ== +"@noble/hashes@1.3.0": + version "1.3.0" + resolved "https://registry.yarnpkg.com/@noble/hashes/-/hashes-1.3.0.tgz#085fd70f6d7d9d109671090ccae1d3bec62554a1" + integrity sha512-ilHEACi9DwqJB0pw7kv+Apvh50jiiSyR/cQ3y4W7lOR5mhvn/50FLUfsnfJz0BDZtl/RR16kXvptiv6q1msYZg== + +"@noble/hashes@1.3.1", "@noble/hashes@~1.3.0", "@noble/hashes@~1.3.1": + version "1.3.1" + resolved "https://registry.yarnpkg.com/@noble/hashes/-/hashes-1.3.1.tgz#8831ef002114670c603c458ab8b11328406953a9" + integrity sha512-EbqwksQwz9xDRGfDST86whPBgM65E0OH/pCgqW0GBVzO22bNE+NuIbeTb714+IfSjU3aRk47EUvXIb5bTsenKA== + "@noble/secp256k1@1.7.1", "@noble/secp256k1@~1.7.0": version "1.7.1" resolved "https://registry.yarnpkg.com/@noble/secp256k1/-/secp256k1-1.7.1.tgz#b251c70f824ce3ca7f8dc3df08d58f005cc0507c" @@ -5033,6 +5183,24 @@ "@noble/secp256k1" "~1.7.0" "@scure/base" "~1.1.0" +"@scure/bip32@1.3.0": + version "1.3.0" + resolved "https://registry.yarnpkg.com/@scure/bip32/-/bip32-1.3.0.tgz#6c8d980ef3f290987736acd0ee2e0f0d50068d87" + integrity sha512-bcKpo1oj54hGholplGLpqPHRbIsnbixFtc06nwuNM5/dwSXOq/AAYoIBRsBmnZJSdfeNW5rnff7NTAz3ZCqR9Q== + dependencies: + "@noble/curves" "~1.0.0" + "@noble/hashes" "~1.3.0" + "@scure/base" "~1.1.0" + +"@scure/bip32@1.3.1": + version "1.3.1" + resolved "https://registry.yarnpkg.com/@scure/bip32/-/bip32-1.3.1.tgz#7248aea723667f98160f593d621c47e208ccbb10" + integrity sha512-osvveYtyzdEVbt3OfwwXFr4P2iVBL5u1Q3q4ONBfDY/UpOuXmOlbgwc1xECEboY8wIays8Yt6onaWMUdUbfl0A== + dependencies: + "@noble/curves" "~1.1.0" + "@noble/hashes" "~1.3.1" + "@scure/base" "~1.1.0" + "@scure/bip39@1.1.1": version "1.1.1" resolved "https://registry.yarnpkg.com/@scure/bip39/-/bip39-1.1.1.tgz#b54557b2e86214319405db819c4b6a370cf340c5" @@ -5041,6 +5209,22 @@ "@noble/hashes" "~1.2.0" "@scure/base" "~1.1.0" +"@scure/bip39@1.2.0": + version "1.2.0" + resolved "https://registry.yarnpkg.com/@scure/bip39/-/bip39-1.2.0.tgz#a207e2ef96de354de7d0002292ba1503538fc77b" + integrity sha512-SX/uKq52cuxm4YFXWFaVByaSHJh2w3BnokVSeUJVCv6K7WulT9u2BuNRBhuFl8vAuYnzx9bEu9WgpcNYTrYieg== + dependencies: + "@noble/hashes" "~1.3.0" + "@scure/base" "~1.1.0" + +"@scure/bip39@1.2.1": + version "1.2.1" + resolved "https://registry.yarnpkg.com/@scure/bip39/-/bip39-1.2.1.tgz#5cee8978656b272a917b7871c981e0541ad6ac2a" + integrity sha512-Z3/Fsz1yr904dduJD0NpiyRHhRYHdcnyh73FZWiV+/qhWi83wNJ3NWolYqCEN+ZWsUz2TWwajJggcRE9r1zUYg== + dependencies: + "@noble/hashes" "~1.3.0" + "@scure/base" "~1.1.0" + "@sideway/address@^4.1.3": version "4.1.4" resolved "https://registry.yarnpkg.com/@sideway/address/-/address-4.1.4.tgz#03dccebc6ea47fdc226f7d3d1ad512955d4783f0" @@ -6805,11 +6989,6 @@ resolved "https://registry.yarnpkg.com/@types/triple-beam/-/triple-beam-1.3.2.tgz#38ecb64f01aa0d02b7c8f4222d7c38af6316fef8" integrity sha512-txGIh+0eDFzKGC25zORnswy+br1Ha7hj5cMVwKIU7+s0U2AxxJru/jZSMU6OC9MJWP6+pc/hc6ZjyZShpsyY2g== -"@types/underscore@^1.8.8": - version "1.11.4" - resolved "https://registry.yarnpkg.com/@types/underscore/-/underscore-1.11.4.tgz#62e393f8bc4bd8a06154d110c7d042a93751def3" - integrity sha512-uO4CD2ELOjw8tasUrAhvnn2W4A0ZECOvMjCivJr4gA9pGgjv+qxKWY9GLTMVEK8ej85BxQOocUyE7hImmSQYcg== - "@types/utf8@^2.1.6": version "2.1.6" resolved "https://registry.yarnpkg.com/@types/utf8/-/utf8-2.1.6.tgz#430cabb71a42d0a3613cce5621324fe4f5a25753" @@ -6834,6 +7013,13 @@ dependencies: web3 "*" +"@types/ws@^8.5.4": + version "8.5.5" + resolved "https://registry.yarnpkg.com/@types/ws/-/ws-8.5.5.tgz#af587964aa06682702ee6dcbc7be41a80e4b28eb" + integrity sha512-lwhs8hktwxSjf9UaZ9tG5M03PGogvFaH8gUgLNbN9HKIg0dvv6q+gkSuJ8HN4/VbyxkuLzCjlN7GquQ0gUJfIg== + dependencies: + "@types/node" "*" + "@types/yargs-parser@*": version "21.0.0" resolved "https://registry.yarnpkg.com/@types/yargs-parser/-/yargs-parser-21.0.0.tgz#0c60e537fa790f5f9472ed2776c2b71ec117351b" @@ -6858,6 +7044,11 @@ dependencies: "@types/yargs-parser" "*" +"@wagmi/chains@1.6.0": + version "1.6.0" + resolved "https://registry.yarnpkg.com/@wagmi/chains/-/chains-1.6.0.tgz#eb992ad28dbaaab729b5bcab3e5b461e8a035656" + integrity sha512-5FRlVxse5P4ZaHG3GTvxwVANSmYJas1eQrTBHhjxVtqXoorm0aLmCHbhmN8Xo1yu09PaWKlleEvfE98yH4AgIw== + "@xmldom/xmldom@^0.8.3": version "0.8.7" resolved "https://registry.yarnpkg.com/@xmldom/xmldom/-/xmldom-0.8.7.tgz#8b1e39c547013941974d83ad5e9cf5042071a9a0" @@ -6917,6 +7108,11 @@ abi-to-sol@^0.6.6: prettier "^2.7.1" prettier-plugin-solidity "^1.0.0-dev.23" +abitype@0.9.3: + version "0.9.3" + resolved "https://registry.yarnpkg.com/abitype/-/abitype-0.9.3.tgz#294d25288ee683d72baf4e1fed757034e3c8c277" + integrity sha512-dz4qCQLurx97FQhnb/EIYTk/ldQ+oafEDUqC0VVIeQS1Q48/YWt/9YNfMmp9SLFqN41ktxny3c8aYxHjmFIB/w== + abort-controller@3.0.0, abort-controller@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/abort-controller/-/abort-controller-3.0.0.tgz#eaf54d53b62bae4138e809ca225c8439a6efb392" @@ -11762,6 +11958,16 @@ ethereum-cryptography@^0.1.3: secp256k1 "^4.0.1" setimmediate "^1.0.5" +ethereum-cryptography@^2.1.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/ethereum-cryptography/-/ethereum-cryptography-2.1.2.tgz#18fa7108622e56481157a5cb7c01c0c6a672eb67" + integrity sha512-Z5Ba0T0ImZ8fqXrJbpHcbpAvIswRte2wGNR/KePnu8GbbvgJ47lMxT/ZZPG6i9Jaht4azPDop4HaM00J0J59ug== + dependencies: + "@noble/curves" "1.1.0" + "@noble/hashes" "1.3.1" + "@scure/bip32" "1.3.1" + "@scure/bip39" "1.2.1" + ethereum-types@^3.7.1: version "3.7.1" resolved "https://registry.yarnpkg.com/ethereum-types/-/ethereum-types-3.7.1.tgz#8fa75e5d9f5da3c85535ea0d4bcd2614b1d650a8" @@ -15928,6 +16134,11 @@ isomorphic-fetch@^3.0.0: node-fetch "^2.6.1" whatwg-fetch "^3.4.1" +isomorphic-ws@5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/isomorphic-ws/-/isomorphic-ws-5.0.0.tgz#e5529148912ecb9b451b46ed44d53dae1ce04bbf" + integrity sha512-muId7Zzn9ywDsyXgTIafTry2sV3nySZeUDe6YedVd1Hvuuep5AsIlqK+XefWpYTyJG5e503F2xIuT2lcU6rCSw== + isomorphic-ws@^4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/isomorphic-ws/-/isomorphic-ws-4.0.1.tgz#55fd4cd6c5e6491e76dc125938dd863f5cd4f2dc" @@ -25623,6 +25834,22 @@ verror@1.10.0: core-util-is "1.0.2" extsprintf "^1.2.0" +viem@~1.5.4: + version "1.5.4" + resolved "https://registry.yarnpkg.com/viem/-/viem-1.5.4.tgz#4ba43cda4be5ec193d9f1c092955743705a37450" + integrity sha512-/B2KbAiTqiPd6fzJgz4pgS879IXbHfO44RP/0nsRvBEuFJvHQlekNIAHTa4d3LPlsHWAM8GcH4m2P5ZvtEHVxA== + dependencies: + "@adraffy/ens-normalize" "1.9.0" + "@noble/curves" "1.0.0" + "@noble/hashes" "1.3.0" + "@scure/bip32" "1.3.0" + "@scure/bip39" "1.2.0" + "@types/ws" "^8.5.4" + "@wagmi/chains" "1.6.0" + abitype "0.9.3" + isomorphic-ws "5.0.0" + ws "8.12.0" + vm2@^3.9.11: version "3.9.19" resolved "https://registry.yarnpkg.com/vm2/-/vm2-3.9.19.tgz#be1e1d7a106122c6c492b4d51c2e8b93d3ed6a4a" @@ -27449,6 +27676,11 @@ ws@7.4.6: resolved "https://registry.yarnpkg.com/ws/-/ws-7.4.6.tgz#5654ca8ecdeee47c33a9a4bf6d28e2be2980377c" integrity sha512-YmhHDO4MzaDLB+M9ym/mDA5z0naX8j7SIlT8f8z+I0VtzsRbekxEutHSme7NPS2qE8StCYQNUnfWdXta/Yu85A== +ws@8.12.0: + version "8.12.0" + resolved "https://registry.yarnpkg.com/ws/-/ws-8.12.0.tgz#485074cc392689da78e1828a9ff23585e06cddd8" + integrity sha512-kU62emKIdKVeEIOIKVegvqpXMSTAMLJozpHZaJNDYqBjzlSYXQGviYwN1osDLJ9av68qHd4a2oSjd7yD4pacig== + ws@8.2.3: version "8.2.3" resolved "https://registry.yarnpkg.com/ws/-/ws-8.2.3.tgz#63a56456db1b04367d0b721a0b80cae6d8becbba" From c15fb9381b9843f7003a50ff3074497e84e26276 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 12 Sep 2023 15:48:46 +0000 Subject: [PATCH 17/31] Bump apollo-server-core from 3.12.0 to 3.12.1 (#10532) Bumps [apollo-server-core](https://github.com/apollographql/apollo-server/tree/HEAD/packages/apollo-server-core) from 3.12.0 to 3.12.1. - [Release notes](https://github.com/apollographql/apollo-server/releases) - [Commits](https://github.com/apollographql/apollo-server/commits/apollo-server-core@3.12.1/packages/apollo-server-core) --- updated-dependencies: - dependency-name: apollo-server-core dependency-type: indirect ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- yarn.lock | 127 ++---------------------------------------------------- 1 file changed, 3 insertions(+), 124 deletions(-) diff --git a/yarn.lock b/yarn.lock index 4f97f9380e0..4cc06556d87 100644 --- a/yarn.lock +++ b/yarn.lock @@ -938,11 +938,6 @@ resolved "https://registry.yarnpkg.com/@celo/base/-/base-1.5.2.tgz#168ab5e4e30b374079d8d139fafc52ca6bfd4100" integrity sha512-KGf6Dl9E6D01vAfkgkjL2sG+zqAjspAogILIpWstljWdG5ifyA75jihrnDEHaMCoQS0KxHvTdP1XYS/GS6BEyQ== -"@celo/base@5.0.1", "@celo/base@^5.0.1": - version "5.0.1" - resolved "https://registry.yarnpkg.com/@celo/base/-/base-5.0.1.tgz#406727217afceec479aa1c0fc8231194595ce84e" - integrity sha512-R0n+nkBv9HPl9IxXkxCGZS20waKWbidA1jyz5a9W5GHxPh6ooTv69KGBIsj1xAdbtlqdvaPbeWJHPxgr5X7nXg== - "@celo/bls12377js@0.1.1": version "0.1.1" resolved "https://registry.yarnpkg.com/@celo/bls12377js/-/bls12377js-0.1.1.tgz#ba3574f41697cdba96c10ae96bb1aac057285798" @@ -963,19 +958,6 @@ debug "^4.1.1" utf8 "3.0.0" -"@celo/connect@5.0.1": - version "5.0.1" - resolved "https://registry.yarnpkg.com/@celo/connect/-/connect-5.0.1.tgz#88a92f4f15fb2cb92fe711243e44deaf02a8ce7b" - integrity sha512-cN1hgdAzNP03Czgc70OkWepHSxsM21L0rpAU5nAagv4NTNfb8nuX89UwEIo1C4804gxR/MqGayHf48tZnnBZ5g== - dependencies: - "@celo/base" "5.0.1" - "@celo/utils" "5.0.1" - "@types/debug" "^4.1.5" - "@types/utf8" "^2.1.6" - bignumber.js "^9.0.0" - debug "^4.1.1" - utf8 "3.0.0" - "@celo/contractkit@1.5.2": version "1.5.2" resolved "https://registry.yarnpkg.com/@celo/contractkit/-/contractkit-1.5.2.tgz#be15d570f3044a190dabb6bbe53d5081c78ea605" @@ -994,25 +976,6 @@ semver "^7.3.5" web3 "1.3.6" -"@celo/contractkit@^5.0.1": - version "5.0.1" - resolved "https://registry.yarnpkg.com/@celo/contractkit/-/contractkit-5.0.1.tgz#2c76522784de0f9b03b3724b2cd9911a008f82ec" - integrity sha512-b9biRPA8+grwYkdkt6VYOuC+h2cN/MFcTSdqmAh4I4o5pxfHmTejbolVALjssSSC/3quV1XmTzeh9UMpPWJoDA== - dependencies: - "@celo/base" "5.0.1" - "@celo/connect" "5.0.1" - "@celo/utils" "5.0.1" - "@celo/wallet-local" "5.0.1" - "@types/bn.js" "^5.1.0" - "@types/debug" "^4.1.5" - bignumber.js "^9.0.0" - cross-fetch "3.0.6" - debug "^4.1.1" - fp-ts "2.1.1" - io-ts "2.0.1" - semver "^7.3.5" - web3 "1.10.0" - "@celo/phone-number-privacy-common@1.0.39": version "1.0.39" resolved "https://registry.yarnpkg.com/@celo/phone-number-privacy-common/-/phone-number-privacy-common-1.0.39.tgz#3c9568f70378d24d11afcc4306024c5cf4f8efe9" @@ -1031,47 +994,6 @@ elliptic "^6.5.4" is-base64 "^1.1.0" -"@celo/phone-number-privacy-common@^3.0.2": - version "3.0.2" - resolved "https://registry.yarnpkg.com/@celo/phone-number-privacy-common/-/phone-number-privacy-common-3.0.2.tgz#c6e1857635e1922e4f232cd44980ac5c67541856" - integrity sha512-WYTlx2UDn3ZQoQ4hXADfp16Gw5iUiHkEikReUilxGSRIgAH1MkGVMh2U2nKCU7/9RhaLxUVMXrfu3LulKet9WQ== - dependencies: - "@celo/base" "^5.0.1" - "@celo/contractkit" "^5.0.1" - "@celo/phone-utils" "^5.0.1" - "@celo/utils" "^5.0.1" - "@opentelemetry/api" "^1.4.1" - "@opentelemetry/auto-instrumentations-node" "^0.38.0" - "@opentelemetry/propagator-ot-trace" "^0.27.0" - "@opentelemetry/sdk-metrics" "^1.15.1" - "@opentelemetry/sdk-node" "^0.41.1" - "@opentelemetry/sdk-trace-web" "^1.15.1" - "@opentelemetry/semantic-conventions" "^1.15.1" - "@types/bunyan" "1.8.8" - bignumber.js "^9.0.0" - bunyan "1.8.12" - bunyan-debug-stream "2.0.0" - bunyan-gke-stackdriver "0.1.2" - dotenv "^8.2.0" - elliptic "^6.5.4" - io-ts "2.0.1" - is-base64 "^1.1.0" - -"@celo/phone-utils@^5.0.1": - version "5.0.1" - resolved "https://registry.yarnpkg.com/@celo/phone-utils/-/phone-utils-5.0.1.tgz#ccfdd302fdc36d7f414f23d08ab133937bce8d5e" - integrity sha512-cExztDocm2Wu2fvPPt2bu2mi7mnorjSaWTmL/Kxl4GNIpKf5Q3k5iEOb/bPNAMROAdiOqipge7ro1sTP9d9iQg== - dependencies: - "@celo/base" "5.0.1" - "@celo/utils" "5.0.1" - "@types/country-data" "^0.0.0" - "@types/google-libphonenumber" "^7.4.23" - "@types/node" "^10.12.18" - country-data "^0.0.31" - fp-ts "2.1.1" - google-libphonenumber "^3.2.27" - io-ts "2.0.1" - "@celo/poprf@^0.1.9": version "0.1.9" resolved "https://registry.yarnpkg.com/@celo/poprf/-/poprf-0.1.9.tgz#38c514ce0f572b80edeb9dc280b6cf5e9d7c2a75" @@ -1118,23 +1040,6 @@ web3-eth-abi "1.3.6" web3-utils "1.3.6" -"@celo/utils@5.0.1", "@celo/utils@^5.0.1": - version "5.0.1" - resolved "https://registry.yarnpkg.com/@celo/utils/-/utils-5.0.1.tgz#561725779e7ac39c029c81d3d175eaf70faef755" - integrity sha512-EHue0t0/ge8j59WivJ7PnFnT3V7omKPCbHSymx+ehauz01nT8Xt6q64ubqyS5hfPeWYL9JmuDJG7VmIaWpj8HQ== - dependencies: - "@celo/base" "5.0.1" - "@ethereumjs/util" "8.0.5" - "@types/bn.js" "^5.1.0" - "@types/elliptic" "^6.4.9" - "@types/node" "^10.12.18" - bignumber.js "^9.0.0" - elliptic "^6.5.4" - ethereum-cryptography "1.2.0" - io-ts "2.0.1" - web3-eth-abi "1.10.0" - web3-utils "1.10.0" - "@celo/wallet-base@1.5.2": version "1.5.2" resolved "https://registry.yarnpkg.com/@celo/wallet-base/-/wallet-base-1.5.2.tgz#ae8df425bf3c702277bb1b63a761a2ec8429e7aa" @@ -1150,21 +1055,6 @@ eth-lib "^0.2.8" ethereumjs-util "^5.2.0" -"@celo/wallet-base@5.0.1": - version "5.0.1" - resolved "https://registry.yarnpkg.com/@celo/wallet-base/-/wallet-base-5.0.1.tgz#0da3a072169c9877988287006386bf05371d0470" - integrity sha512-MWYwloV0MbP7sFXAYGNilz3QgrIDkcmv0M4NhV+zLyZbuj/iyn+Kw5wU0x85YalO+jDDA7eFYvly1DYlEM2H9Q== - dependencies: - "@celo/base" "5.0.1" - "@celo/connect" "5.0.1" - "@celo/utils" "5.0.1" - "@ethereumjs/util" "8.0.5" - "@types/debug" "^4.1.5" - bignumber.js "^9.0.0" - debug "^4.1.1" - eth-lib "^0.2.8" - ethereum-cryptography "^2.1.2" - "@celo/wallet-local@1.5.2": version "1.5.2" resolved "https://registry.yarnpkg.com/@celo/wallet-local/-/wallet-local-1.5.2.tgz#66ea5fb763e19724309e3d56f312f1a342e12b91" @@ -1177,17 +1067,6 @@ eth-lib "^0.2.8" ethereumjs-util "^5.2.0" -"@celo/wallet-local@5.0.1": - version "5.0.1" - resolved "https://registry.yarnpkg.com/@celo/wallet-local/-/wallet-local-5.0.1.tgz#61f0242d55c4258c3fdfc3bf0d887cb27877caa0" - integrity sha512-BQvxyLB85t5foyzFm5+zhTtlKUCDzPPAp+Ltpj7FUOYSy1bybuGys7iuhYWNg4hwTolEb6aOYh4ZSN5jZN958w== - dependencies: - "@celo/connect" "5.0.1" - "@celo/utils" "5.0.1" - "@celo/wallet-base" "5.0.1" - "@ethereumjs/util" "8.0.5" - eth-lib "^0.2.8" - "@chainsafe/as-sha256@^0.3.1": version "0.3.1" resolved "https://registry.yarnpkg.com/@chainsafe/as-sha256/-/as-sha256-0.3.1.tgz#3639df0e1435cab03f4d9870cc3ac079e57a6fc9" @@ -7500,9 +7379,9 @@ apollo-reporting-protobuf@^3.4.0: "@apollo/protobufjs" "1.2.6" apollo-server-core@^3.12.0: - version "3.12.0" - resolved "https://registry.yarnpkg.com/apollo-server-core/-/apollo-server-core-3.12.0.tgz#8aa2a7329ce6fe1823290c45168c749db01548df" - integrity sha512-hq7iH6Cgldgmnjs9FVSZeKWRpi0/ZR+iJ1arzeD2VXGxxgk1mAm/cz1Tx0TYgegZI+FvvrRl0UhKEx7sLnIxIg== + version "3.12.1" + resolved "https://registry.yarnpkg.com/apollo-server-core/-/apollo-server-core-3.12.1.tgz#ba255c37345db29c48a2e0c064c519a8d62eb5af" + integrity sha512-9SF5WAkkV0FZQ2HVUWI9Jada1U0jg7e8NCN9EklbtvaCeUlOLyXyM+KCWuZ7+dqHxjshbtcwylPHutt3uzoNkw== dependencies: "@apollo/utils.keyvaluecache" "^1.0.1" "@apollo/utils.logger" "^1.0.0" From 4b885426e0a98965fb5128806b451f69e4908569 Mon Sep 17 00:00:00 2001 From: soloseng <102702451+soloseng@users.noreply.github.com> Date: Thu, 14 Sep 2023 17:56:16 -0400 Subject: [PATCH 18/31] switched pnp versions back to dev post sdk release (#10561) * switched pnp versions back to dev post sdk release * bump @types/node version to `^18` * Increased protocol matrix cmd timeout to 40 min --- .github/workflows/circleci.yml | 2 +- packages/phone-number-privacy/combiner/package.json | 4 ++-- packages/phone-number-privacy/common/package.json | 2 +- packages/phone-number-privacy/monitor/package.json | 4 ++-- packages/phone-number-privacy/signer/package.json | 4 ++-- packages/sdk/encrypted-backup/package.json | 2 +- packages/sdk/identity/package.json | 2 +- packages/sdk/phone-utils/package.json | 2 +- packages/sdk/utils/package.json | 2 +- 9 files changed, 12 insertions(+), 12 deletions(-) diff --git a/.github/workflows/circleci.yml b/.github/workflows/circleci.yml index 441740d5d16..d36ea9bdf6f 100644 --- a/.github/workflows/circleci.yml +++ b/.github/workflows/circleci.yml @@ -364,7 +364,7 @@ jobs: - name: Execute matrix command for test uses: nick-fields/retry@v2 with: - timeout_minutes: 30 + timeout_minutes: 40 max_attempts: 3 command: | ${{ matrix.command }} diff --git a/packages/phone-number-privacy/combiner/package.json b/packages/phone-number-privacy/combiner/package.json index 04c88952ce6..fdf6ed6c230 100644 --- a/packages/phone-number-privacy/combiner/package.json +++ b/packages/phone-number-privacy/combiner/package.json @@ -1,6 +1,6 @@ { "name": "@celo/phone-number-privacy-combiner", - "version": "3.0.3", + "version": "3.0.1-dev", "description": "Orchestrates and combines threshold signatures for use in ODIS", "author": "Celo", "license": "Apache-2.0", @@ -30,7 +30,7 @@ }, "dependencies": { "@celo/contractkit": "^5.0.3-dev", - "@celo/phone-number-privacy-common": "^3.0.3", + "@celo/phone-number-privacy-common": "^3.0.4-dev", "@celo/identity": "^5.0.3-dev", "@celo/encrypted-backup": "^5.0.3-dev", "@celo/poprf": "^0.1.9", diff --git a/packages/phone-number-privacy/common/package.json b/packages/phone-number-privacy/common/package.json index 0fe23a973ea..0b756b530b5 100644 --- a/packages/phone-number-privacy/common/package.json +++ b/packages/phone-number-privacy/common/package.json @@ -1,6 +1,6 @@ { "name": "@celo/phone-number-privacy-common", - "version": "3.0.3", + "version": "3.0.4-dev", "description": "Common library for the combiner and signer libraries", "author": "Celo", "license": "Apache-2.0", diff --git a/packages/phone-number-privacy/monitor/package.json b/packages/phone-number-privacy/monitor/package.json index 65b175990fd..78844fee56d 100644 --- a/packages/phone-number-privacy/monitor/package.json +++ b/packages/phone-number-privacy/monitor/package.json @@ -1,6 +1,6 @@ { "name": "@celo/phone-number-privacy-monitor", - "version": "3.0.3", + "version": "3.0.1-beta.1-dev", "description": "Regularly queries ODIS to ensure the system is functioning properly", "author": "Celo", "license": "Apache-2.0", @@ -27,7 +27,7 @@ "@celo/encrypted-backup": "^5.0.3-dev", "@celo/identity": "^5.0.3-dev", "@celo/wallet-local": "^5.0.3-dev", - "@celo/phone-number-privacy-common": "^3.0.2", + "@celo/phone-number-privacy-common": "^3.0.4-dev", "@celo/utils": "^5.0.3-dev", "firebase-admin": "^9.12.0", "firebase-functions": "^3.15.7" diff --git a/packages/phone-number-privacy/signer/package.json b/packages/phone-number-privacy/signer/package.json index 74951f461d5..544378538f2 100644 --- a/packages/phone-number-privacy/signer/package.json +++ b/packages/phone-number-privacy/signer/package.json @@ -1,6 +1,6 @@ { "name": "@celo/phone-number-privacy-signer", - "version": "3.0.3", + "version": "3.0.2-dev", "description": "Signing participator of ODIS", "author": "Celo", "license": "Apache-2.0", @@ -39,7 +39,7 @@ "dependencies": { "@celo/base": "^5.0.3-dev", "@celo/contractkit": "^5.0.3-dev", - "@celo/phone-number-privacy-common": "^3.0.3", + "@celo/phone-number-privacy-common": "^3.0.4-dev", "@celo/poprf": "^0.1.9", "@celo/utils": "^5.0.3-dev", "@celo/wallet-hsm-azure": "^5.0.3-dev", diff --git a/packages/sdk/encrypted-backup/package.json b/packages/sdk/encrypted-backup/package.json index 416a4622484..e938374badf 100644 --- a/packages/sdk/encrypted-backup/package.json +++ b/packages/sdk/encrypted-backup/package.json @@ -27,7 +27,7 @@ "dependencies": { "@celo/base": "5.0.3-dev", "@celo/identity": "5.0.3-dev", - "@celo/phone-number-privacy-common": "^3.0.3", + "@celo/phone-number-privacy-common": "^3.0.4-dev", "@celo/poprf": "^0.1.9", "@celo/utils": "5.0.3-dev", "@types/debug": "^4.1.5", diff --git a/packages/sdk/identity/package.json b/packages/sdk/identity/package.json index 04064ee4160..330c483ff59 100644 --- a/packages/sdk/identity/package.json +++ b/packages/sdk/identity/package.json @@ -28,7 +28,7 @@ "@celo/base": "5.0.3-dev", "@celo/utils": "5.0.3-dev", "@celo/contractkit": "5.0.3-dev", - "@celo/phone-number-privacy-common": "^3.0.3", + "@celo/phone-number-privacy-common": "^3.0.4-dev", "@types/debug": "^4.1.5", "bignumber.js": "^9.0.0", "blind-threshold-bls": "https://github.com/celo-org/blind-threshold-bls-wasm#e1e2f8a", diff --git a/packages/sdk/phone-utils/package.json b/packages/sdk/phone-utils/package.json index d47b5a40612..eeeb2a3799b 100644 --- a/packages/sdk/phone-utils/package.json +++ b/packages/sdk/phone-utils/package.json @@ -26,7 +26,7 @@ "@celo/utils": "5.0.3-dev", "@types/country-data": "^0.0.0", "@types/google-libphonenumber": "^7.4.23", - "@types/node": "^10.12.18", + "@types/node": "^18.7.16", "country-data": "^0.0.31", "fp-ts": "2.1.1", "google-libphonenumber": "^3.2.27", diff --git a/packages/sdk/utils/package.json b/packages/sdk/utils/package.json index e4c9f240bcb..d4084072cea 100644 --- a/packages/sdk/utils/package.json +++ b/packages/sdk/utils/package.json @@ -26,7 +26,7 @@ "@ethereumjs/util": "8.0.5", "@types/bn.js": "^5.1.0", "@types/elliptic": "^6.4.9", - "@types/node": "^10.12.18", + "@types/node": "^18.7.16", "bignumber.js": "^9.0.0", "elliptic": "^6.5.4", "ethereum-cryptography": "1.2.0", From 07f25e9a629d9a9f03ddc25b86dab0f88358526f Mon Sep 17 00:00:00 2001 From: Victoria <4222953+lvpeschke@users.noreply.github.com> Date: Mon, 18 Sep 2023 16:46:02 +0200 Subject: [PATCH 19/31] Remove eksportisto charts (#10558) * Remove eksportisto env values * Remove eksportisto from celotool * Remove eksportisto helm charts * Remove eksportisto metric exception --- .env | 4 - .env.alfajores | 4 - .env.baklava | 4 - .env.rc1 | 4 - .../src/cmds/deploy/destroy/eksportisto.ts | 16 -- .../src/cmds/deploy/initial/eksportisto.ts | 14 -- .../src/cmds/deploy/upgrade/eksportisto.ts | 14 -- packages/celotool/src/lib/eksportisto.ts | 233 ------------------ packages/celotool/src/lib/env-utils.ts | 3 - packages/helm-charts/eksportisto/Chart.yaml | 11 - .../eksportisto/templates/configmap.yaml | 44 ---- .../templates/statefulset-indexer.yaml | 86 ------- .../templates/statefulset-monitor.yaml | 69 ------ .../templates/statefulset-publisher.yaml | 69 ------ packages/helm-charts/eksportisto/values.yaml | 10 - .../prometheus-stackdriver/values.yaml | 1 - 16 files changed, 586 deletions(-) delete mode 100644 packages/celotool/src/cmds/deploy/destroy/eksportisto.ts delete mode 100644 packages/celotool/src/cmds/deploy/initial/eksportisto.ts delete mode 100644 packages/celotool/src/cmds/deploy/upgrade/eksportisto.ts delete mode 100644 packages/celotool/src/lib/eksportisto.ts delete mode 100644 packages/helm-charts/eksportisto/Chart.yaml delete mode 100644 packages/helm-charts/eksportisto/templates/configmap.yaml delete mode 100644 packages/helm-charts/eksportisto/templates/statefulset-indexer.yaml delete mode 100644 packages/helm-charts/eksportisto/templates/statefulset-monitor.yaml delete mode 100644 packages/helm-charts/eksportisto/templates/statefulset-publisher.yaml delete mode 100644 packages/helm-charts/eksportisto/values.yaml diff --git a/.env b/.env index a2fa43ce4d1..caa932d6c08 100644 --- a/.env +++ b/.env @@ -58,10 +58,6 @@ TRANSACTION_METRICS_EXPORTER_DOCKER_IMAGE_REPOSITORY="gcr.io/celo-testnet/celo-m TRANSACTION_METRICS_EXPORTER_DOCKER_IMAGE_TAG="transaction-metrics-exporter-dc5e5dfa07231a4ff4664816a95eae606293eae9" TRANSACTION_METRICS_EXPORTER_SUFFIX='1' -EKSPORTISTO_DOCKER_IMAGE_REPOSITORY="us.gcr.io/celo-testnet/eksportisto" -EKSPORTISTO_DOCKER_IMAGE_TAG="12f9f9e822ea35db2f965be616abef126f1724fb" -EKSPORTISTO_SUFFIX='1' - # Genesis Vars NETWORK_ID=1101 CONSENSUS_TYPE="istanbul" diff --git a/.env.alfajores b/.env.alfajores index f6762b6487e..dec5baa3993 100644 --- a/.env.alfajores +++ b/.env.alfajores @@ -82,10 +82,6 @@ MOCK_ORACLE_DOCKER_IMAGE_TAG="default" TRANSACTION_METRICS_EXPORTER_DOCKER_IMAGE_REPOSITORY="gcr.io/celo-testnet/celo-monorepo" TRANSACTION_METRICS_EXPORTER_DOCKER_IMAGE_TAG="transaction-metrics-exporter-f4a55e143932ea559cf4bcbd9bcccc14da43d6ed" -EKSPORTISTO_DOCKER_IMAGE_REPOSITORY="us.gcr.io/celo-testnet/eksportisto" -EKSPORTISTO_DOCKER_IMAGE_TAG="c88f7e8babcdb01062a6a12ae729705ba9769add" -EKSPORTISTO_SUFFIX='1' - # Genesis Vars NETWORK_ID=44787 CONSENSUS_TYPE="istanbul" diff --git a/.env.baklava b/.env.baklava index 4262cee6c2f..17702072eab 100644 --- a/.env.baklava +++ b/.env.baklava @@ -129,10 +129,6 @@ GCP_FORNO_EUROPE_WEST1_PROM_SIDECAR_DISABLED="true" TRANSACTION_METRICS_EXPORTER_DOCKER_IMAGE_REPOSITORY="gcr.io/celo-testnet/celo-monorepo" TRANSACTION_METRICS_EXPORTER_DOCKER_IMAGE_TAG="transaction-metrics-exporter-dc5e5dfa07231a4ff4664816a95eae606293eae9" -EKSPORTISTO_DOCKER_IMAGE_REPOSITORY="us.gcr.io/celo-testnet/eksportisto" -EKSPORTISTO_DOCKER_IMAGE_TAG="b199a634866ef34c4fa1925381dff4de40eb0a3c" -EKSPORTISTO_SUFFIX='1' - # Genesis Vars NETWORK_ID=62320 CONSENSUS_TYPE="istanbul" diff --git a/.env.rc1 b/.env.rc1 index a393d6377f3..3628fd88617 100644 --- a/.env.rc1 +++ b/.env.rc1 @@ -244,10 +244,6 @@ GCP_PRIVATE_TXNODES_FULL_NODES_WS_PORT="8545" TRANSACTION_METRICS_EXPORTER_DOCKER_IMAGE_REPOSITORY="gcr.io/celo-testnet/celo-monorepo" TRANSACTION_METRICS_EXPORTER_DOCKER_IMAGE_TAG="transaction-metrics-exporter-f4a55e143932ea559cf4bcbd9bcccc14da43d6ed" -EKSPORTISTO_DOCKER_IMAGE_REPOSITORY="us.gcr.io/celo-testnet/eksportisto" -EKSPORTISTO_DOCKER_IMAGE_TAG="41fd75246c7108716be373d2d36cac13996034fc" -EKSPORTISTO_SUFFIX='' - # Genesis Vars NETWORK_ID=42220 CONSENSUS_TYPE="istanbul" diff --git a/packages/celotool/src/cmds/deploy/destroy/eksportisto.ts b/packages/celotool/src/cmds/deploy/destroy/eksportisto.ts deleted file mode 100644 index 5ab1f7ce709..00000000000 --- a/packages/celotool/src/cmds/deploy/destroy/eksportisto.ts +++ /dev/null @@ -1,16 +0,0 @@ -import { switchToClusterFromEnv } from 'src/lib/cluster' -import { removeHelmRelease } from 'src/lib/eksportisto' -import { exitIfCelotoolHelmDryRun } from 'src/lib/helm_deploy' -import { DestroyArgv } from '../../deploy/destroy' - -export const command = 'eksportisto' - -export const describe = 'destroy the eksportisto deploy' - -export const builder = {} - -export const handler = async (argv: DestroyArgv) => { - exitIfCelotoolHelmDryRun() - await switchToClusterFromEnv(argv.celoEnv) - await removeHelmRelease(argv.celoEnv) -} diff --git a/packages/celotool/src/cmds/deploy/initial/eksportisto.ts b/packages/celotool/src/cmds/deploy/initial/eksportisto.ts deleted file mode 100644 index bd2115459d9..00000000000 --- a/packages/celotool/src/cmds/deploy/initial/eksportisto.ts +++ /dev/null @@ -1,14 +0,0 @@ -import { switchToClusterFromEnv } from 'src/lib/cluster' -import { installHelmChart } from 'src/lib/eksportisto' -import { InitialArgv } from '../../deploy/initial' - -export const command = 'eksportisto' - -export const describe = 'deploy eksportisto' - -export const builder = {} - -export const handler = async (argv: InitialArgv) => { - await switchToClusterFromEnv(argv.celoEnv) - await installHelmChart(argv.celoEnv) -} diff --git a/packages/celotool/src/cmds/deploy/upgrade/eksportisto.ts b/packages/celotool/src/cmds/deploy/upgrade/eksportisto.ts deleted file mode 100644 index 3c757935d31..00000000000 --- a/packages/celotool/src/cmds/deploy/upgrade/eksportisto.ts +++ /dev/null @@ -1,14 +0,0 @@ -import { switchToClusterFromEnv } from 'src/lib/cluster' -import { upgradeHelmChart } from 'src/lib/eksportisto' -import { UpgradeArgv } from '../../deploy/upgrade' - -export const command = 'eksportisto' - -export const describe = 'upgrade the eksportisto deploy' - -export const builder = {} - -export const handler = async (argv: UpgradeArgv) => { - await switchToClusterFromEnv(argv.celoEnv) - await upgradeHelmChart(argv.celoEnv) -} diff --git a/packages/celotool/src/lib/eksportisto.ts b/packages/celotool/src/lib/eksportisto.ts deleted file mode 100644 index 48ad00dcd18..00000000000 --- a/packages/celotool/src/lib/eksportisto.ts +++ /dev/null @@ -1,233 +0,0 @@ -import fs from 'fs' -import { execCmd, execCmdAndParseJson } from 'src/lib/cmd-utils' -import { envVar, fetchEnv, fetchEnvOrFallback } from 'src/lib/env-utils' -import { - getConfigMapHashes, - HelmAction, - installGenericHelmChart, - removeGenericHelmChart, - upgradeGenericHelmChart, -} from 'src/lib/helm_deploy' -import { - createServiceAccountIfNotExists, - getServiceAccountEmail, - getServiceAccountKey, -} from 'src/lib/service-account-utils' -import { switchToProjectFromEnv } from 'src/lib/utils' - -const yaml = require('js-yaml') - -const chartDir = '../helm-charts/eksportisto' - -function baseName(suffix: string) { - if (suffix.length > 0) { - return `eksportisto-${suffix}` - } else { - return 'eksportisto' - } -} - -function releaseName(celoEnv: string, suffix: string) { - return `${celoEnv}-${baseName(suffix)}` -} - -interface Context { - releaseName: string - suffix: string - celoEnv: string -} - -function buildContext(celoEnv: string): Context { - const suffix = fetchEnvOrFallback(envVar.EKSPORTISTO_SUFFIX, '') - - return { - releaseName: releaseName(celoEnv, suffix), - celoEnv, - suffix, - } -} - -export async function installHelmChart(celoEnv: string) { - const context = buildContext(celoEnv) - const params = await helmParameters(context) - - await installGenericHelmChart({ - namespace: context.celoEnv, - releaseName: context.releaseName, - chartDir, - parameters: params.concat( - `--set configHash="${await getConfigMapHash(context, params, 'install')}"` - ), - }) -} - -export async function upgradeHelmChart(celoEnv: string) { - const context = buildContext(celoEnv) - const params = await helmParameters(context) - - await upgradeGenericHelmChart({ - namespace: context.celoEnv, - releaseName: context.releaseName, - chartDir, - parameters: params.concat( - `--set configHash="${await getConfigMapHash(context, params, 'upgrade')}"` - ), - }) -} - -export async function removeHelmRelease(celoEnv: string) { - const suffix = fetchEnvOrFallback(envVar.EKSPORTISTO_SUFFIX, '') - await removeGenericHelmChart(releaseName(celoEnv, suffix), celoEnv) -} - -async function getServiceAccountKeyBase64FromHelm(celoEnv: string) { - const suffix = fetchEnvOrFallback(envVar.EKSPORTISTO_SUFFIX, '') - const relName = releaseName(celoEnv, suffix) - const installedCharts = await execCmdAndParseJson(`helm list --short -o json -n ${celoEnv}`) - const chartInstalled = installedCharts.includes(relName) - if (chartInstalled) { - const [output] = await execCmd(`helm get values -n ${celoEnv} ${relName}`) - const values: any = yaml.safeLoad(output) - return values.serviceAccountBase64 - } -} - -function getServiceAccountName(celoEnv: string) { - const suffix = fetchEnvOrFallback(envVar.EKSPORTISTO_SUFFIX, '') - return releaseName(celoEnv, suffix) -} - -async function getServiceAccountKeyBase64(celoEnv: string) { - // First check if value already exist in helm release. If so we pass the same value - // and we avoid creating a new key for the service account - const serviceAccountKeyBase64 = await getServiceAccountKeyBase64FromHelm(celoEnv) - if (serviceAccountKeyBase64) { - return serviceAccountKeyBase64 - } else { - // We do not have the service account key in helm so we need to create the SA (if it does not exist) - // and create a new key for the service account in any case - await switchToProjectFromEnv() - const serviceAccountName = getServiceAccountName(celoEnv) - await createServiceAccountIfNotExists(serviceAccountName) - const serviceAccountEmail = await getServiceAccountEmail(serviceAccountName) - const serviceAccountKeyPath = `/tmp/gcloud-key-${serviceAccountName}.json` - await getServiceAccountKey(serviceAccountEmail, serviceAccountKeyPath) - return fs.readFileSync(serviceAccountKeyPath).toString('base64') - } -} - -async function allowServiceAccountToWriteToBigquery(serviceAccountEmail: string) { - // This should be less broad but I couldn't figure out how to do it - const project = fetchEnv(envVar.TESTNET_PROJECT_NAME) - const [output] = await execCmd( - `gcloud projects get-iam-policy ${project} --format json`, - {}, - false, - false - ) - const policy = JSON.parse(output) as { bindings: Array<{ role: string; members: string[] }> } - - for (const binding of policy.bindings) { - if (binding.role === 'roles/bigquery.dataOwner') { - if ( - binding.members.find((m) => m === `serviceAccount:${serviceAccountEmail}`) !== undefined - ) { - console.info('Service account already has permissions, skipping policy update') - return - } else { - binding.members = binding.members.concat(`serviceAccount:${serviceAccountEmail}`) - } - } - } - - const fn = `/tmp/updated-policy.json` - fs.writeFileSync(fn, JSON.stringify(policy)) - await execCmd(`gcloud projects set-iam-policy ${project} ${fn}`, {}, false, true) -} - -async function getConfigMapHash(context: Context, params: string[], action: HelmAction) { - const hashes = await getConfigMapHashes( - context.celoEnv, - context.releaseName, - chartDir, - params, - action - ) - - return hashes['eksportisto/templates/configmap.yaml'] -} - -interface NodeInfo { - ip: string - labels: Record - status: string -} - -interface CeloNodes { - tip: NodeInfo | undefined - backfill: NodeInfo[] -} - -export async function getInternalTxNodeIps(context: Context): Promise { - const project = fetchEnv(envVar.TESTNET_PROJECT_NAME) - const instanceGroupURIs: string[] = await execCmdAndParseJson( - `gcloud compute instance-groups list --project '${project}' --filter="name~'${context.celoEnv}-tx-node-lb-internal-group'" --format json --uri` - ) - - if (instanceGroupURIs.length !== 1) { - throw Error('Expecting one (and only one) instance group to match filter') - } - - const instanceGroupURI = instanceGroupURIs[0] - const instanceURIs: string[] = await execCmdAndParseJson( - `gcloud compute instance-groups list-instances ${instanceGroupURI} --format json --uri` - ) - - const runningNodes = ( - await Promise.all( - instanceURIs.map(async (instanceURI) => { - const details = await execCmdAndParseJson( - `gcloud compute instances describe ${instanceURI} --format json` - ) - return { - ip: details.networkInterfaces[0].networkIP, - status: details.status, - labels: details.labels ?? {}, - } - }) - ) - ).filter((node) => node.status === 'RUNNING') - - const tipNodeLabel = `${baseName(context.suffix)}-tip` - const backfillNodeLabel = `${baseName(context.suffix)}-backfill` - - return { - tip: runningNodes.find((node) => node.labels[tipNodeLabel] === 'true'), - backfill: runningNodes.filter((node) => node.labels[backfillNodeLabel] === 'true'), - } -} - -async function helmParameters(context: Context) { - const { celoEnv } = context - const suffix = fetchEnvOrFallback(envVar.EKSPORTISTO_SUFFIX, '') - const params = [ - `--namespace ${celoEnv}`, - `--set environment="${celoEnv}"`, - `--set imageRepository="${fetchEnv(envVar.EKSPORTISTO_DOCKER_IMAGE_REPOSITORY)}"`, - `--set imageTag="${fetchEnv(envVar.EKSPORTISTO_DOCKER_IMAGE_TAG)}"`, - `--set deploymentSuffix=${suffix}`, - ] - - const serviceAccountKeyBase64 = await getServiceAccountKeyBase64(celoEnv) - const serviceAccountEmail = await getServiceAccountEmail(getServiceAccountName(celoEnv)) - await allowServiceAccountToWriteToBigquery(serviceAccountEmail) - params.push( - `--set bigquery.dataset=${celoEnv}_eksportisto`, - `--set serviceAccountBase64="${serviceAccountKeyBase64}"` - ) - - params.push(`--set celoTipNodeIP="tx-nodes"`) - params.push(`--set celoBackfillNodeIPs[0]="tx-nodes"`) - - return params -} diff --git a/packages/celotool/src/lib/env-utils.ts b/packages/celotool/src/lib/env-utils.ts index 26f8147443c..cc79a4be9ef 100644 --- a/packages/celotool/src/lib/env-utils.ts +++ b/packages/celotool/src/lib/env-utils.ts @@ -40,9 +40,6 @@ export enum envVar { CONTEXTS = 'CONTEXTS', DONUT_BLOCK = 'DONUT_BLOCK', E2E_TESTS_FORCE_USE_MYCELO = 'E2E_TESTS_FORCE_USE_MYCELO', - EKSPORTISTO_DOCKER_IMAGE_REPOSITORY = 'EKSPORTISTO_DOCKER_IMAGE_REPOSITORY', - EKSPORTISTO_DOCKER_IMAGE_TAG = 'EKSPORTISTO_DOCKER_IMAGE_TAG', - EKSPORTISTO_SUFFIX = 'EKSPORTISTO_SUFFIX', ENV_TYPE = 'ENV_TYPE', EPOCH = 'EPOCH', ESPRESSO_BLOCK = 'ESPRESSO_BLOCK', diff --git a/packages/helm-charts/eksportisto/Chart.yaml b/packages/helm-charts/eksportisto/Chart.yaml deleted file mode 100644 index 29e1c562211..00000000000 --- a/packages/helm-charts/eksportisto/Chart.yaml +++ /dev/null @@ -1,11 +0,0 @@ -name: eksportisto -version: "3.0" -description: Chart which is used to run eksportisto -keywords: -- ethereum -- blockchain -- monitoring -dependencies: -- name: redis - version: 12.8.3 - repository: https://raw.githubusercontent.com/bitnami/charts/archive-full-index/bitnami diff --git a/packages/helm-charts/eksportisto/templates/configmap.yaml b/packages/helm-charts/eksportisto/templates/configmap.yaml deleted file mode 100644 index 068f7a68596..00000000000 --- a/packages/helm-charts/eksportisto/templates/configmap.yaml +++ /dev/null @@ -1,44 +0,0 @@ -apiVersion: v1 -kind: ConfigMap -metadata: - name: eksportisto-config -data: - service-account.json: {{ .Values.serviceAccountBase64 | b64dec | quote }} - config_monitor.yaml: | - monitoring: - port: 8080 - address: 0.0.0.0 - requestTimeoutSeconds: 25 - - config.yaml: | - monitoring: - port: 8080 - address: 0.0.0.0 - requestTimeoutSeconds: 25 - - redis: - address: {{ .Release.Name }}-redis-headless:6379 - password: "" - db: 0 - - publisher: - backfill: - enabled: true - startBlock: 0 - batchSize: 40000 - tipBuffer: 3 - sleepIntervalMilliseconds: 2000 - chainTip: - enabled: true - - indexer: - concurrency: 10 - mode: both - bigquery: - projectID: celo-testnet-production - dataset: {{ .Values.bigquery.dataset }} - table: data - destination: bigquery - dequeueTimeoutMilliseconds: 5000 - blockRetryAttempts: 1 - blockRetryDelayMilliseconds: 1000 diff --git a/packages/helm-charts/eksportisto/templates/statefulset-indexer.yaml b/packages/helm-charts/eksportisto/templates/statefulset-indexer.yaml deleted file mode 100644 index 025ec2714e3..00000000000 --- a/packages/helm-charts/eksportisto/templates/statefulset-indexer.yaml +++ /dev/null @@ -1,86 +0,0 @@ -apiVersion: v1 -kind: Service -metadata: - name: eksportisto-indexer - labels: - component: eksportisto - release: {{ .Release.Name }} -spec: - clusterIP: None - selector: - component: eksportisto - release: {{ .Release.Name }} ---- -apiVersion: apps/v1 -kind: StatefulSet -metadata: - name: eksportisto-indexer - labels: - app: eksportisto - chart: eksportisto - release: {{ .Release.Name }} - heritage: {{ .Release.Service }} - component: eksportisto -spec: - serviceName: eksportisto-indexer - podManagementPolicy: Parallel - replicas: 8 - selector: - matchLabels: - app: eksportisto - release: {{ .Release.Name }} - component: eksportisto - template: - metadata: - labels: - app: eksportisto - release: {{ .Release.Name }} - component: eksportisto - annotations: - prometheus.io/path: /metrics - prometheus.io/port: "8080" - prometheus.io/scrape: "true" - configHash: "{{ .Values.configHash }}" - spec: - containers: - - name: eksportisto - image: {{ .Values.imageRepository }}:{{ .Values.imageTag }} - imagePullPolicy: {{ .Values.imagePullPolicy }} - args: - - "indexer" - - "--config=/var/config/config.yaml" - - "--celo-node-uri=http://rc1-fullnodes-rpc-internal-lb:8545" - livenessProbe: - exec: - # "eksportisto monitor" expects more parameters and will always - # fail when invoked like this. This is on purpose, as the - # livenessProbe is being used to restart the container every - # initialDelaySeconds seconds. The eksportisto binary is being - # used as it's the only binary present on the container image - # (regular user-space tools are not available). - command: - - /app/eksportisto - - monitor - initialDelaySeconds: 1800 - failureThreshold: 1 - env: - - name: GOOGLE_APPLICATION_CREDENTIALS - value: "/var/config/service-account.json" - - name: POD_NAME - valueFrom: - fieldRef: - fieldPath: metadata.name - resources: - requests: - memory: 100Mi - cpu: 100m - ports: - - name: prometheus - containerPort: 8080 - volumeMounts: - - name: config - mountPath: /var/config - volumes: - - name: config - configMap: - name: eksportisto-config diff --git a/packages/helm-charts/eksportisto/templates/statefulset-monitor.yaml b/packages/helm-charts/eksportisto/templates/statefulset-monitor.yaml deleted file mode 100644 index 1bb90b67b71..00000000000 --- a/packages/helm-charts/eksportisto/templates/statefulset-monitor.yaml +++ /dev/null @@ -1,69 +0,0 @@ -apiVersion: v1 -kind: Service -metadata: - name: eksportisto-monitor - labels: - component: eksportisto - release: {{ .Release.Name }} -spec: - clusterIP: None - selector: - component: eksportisto - release: {{ .Release.Name }} ---- -apiVersion: apps/v1 -kind: StatefulSet -metadata: - name: eksportisto-monitor - labels: - app: eksportisto - chart: eksportisto - release: {{ .Release.Name }} - heritage: {{ .Release.Service }} - component: eksportisto -spec: - serviceName: eksportisto-monitor - podManagementPolicy: Parallel - replicas: 1 - selector: - matchLabels: - app: eksportisto - release: {{ .Release.Name }} - component: eksportisto - template: - metadata: - labels: - app: eksportisto - release: {{ .Release.Name }} - component: eksportisto - annotations: - prometheus.io/path: /metrics - prometheus.io/port: "8080" - prometheus.io/scrape: "true" - configHash: "{{ .Values.configHash }}" - spec: - containers: - - name: eksportisto - image: {{ .Values.imageRepository }}:{{ .Values.imageTag }} - imagePullPolicy: {{ .Values.imagePullPolicy }} - args: - - "monitor" - - "--config=/var/config/config_monitor.yaml" - - "--celo-node-uri=ws://rc1-fullnodes-rpc-internal-lb:8545" - env: - - name: GOOGLE_APPLICATION_CREDENTIALS - value: "/var/config/service-account.json" - resources: - requests: - memory: 300Mi - cpu: 200m - ports: - - name: prometheus - containerPort: 8080 - volumeMounts: - - name: config - mountPath: /var/config - volumes: - - name: config - configMap: - name: eksportisto-config diff --git a/packages/helm-charts/eksportisto/templates/statefulset-publisher.yaml b/packages/helm-charts/eksportisto/templates/statefulset-publisher.yaml deleted file mode 100644 index 0035c6f22ec..00000000000 --- a/packages/helm-charts/eksportisto/templates/statefulset-publisher.yaml +++ /dev/null @@ -1,69 +0,0 @@ -apiVersion: v1 -kind: Service -metadata: - name: eksportisto-publisher - labels: - component: eksportisto - release: {{ .Release.Name }} -spec: - clusterIP: None - selector: - component: eksportisto - release: {{ .Release.Name }} ---- -apiVersion: apps/v1 -kind: StatefulSet -metadata: - name: eksportisto-publisher - labels: - app: eksportisto - chart: eksportisto - release: {{ .Release.Name }} - heritage: {{ .Release.Service }} - component: eksportisto -spec: - serviceName: eksportisto-publisher - podManagementPolicy: Parallel - replicas: 1 - selector: - matchLabels: - app: eksportisto - release: {{ .Release.Name }} - component: eksportisto - template: - metadata: - labels: - app: eksportisto - release: {{ .Release.Name }} - component: eksportisto - annotations: - prometheus.io/path: /metrics - prometheus.io/port: "8080" - prometheus.io/scrape: "true" - configHash: "{{ .Values.configHash }}" - spec: - containers: - - name: eksportisto - image: {{ .Values.imageRepository }}:{{ .Values.imageTag }} - imagePullPolicy: {{ .Values.imagePullPolicy }} - args: - - "publisher" - - "--config=/var/config/config.yaml" - - "--celo-node-uri=ws://rc1-fullnodes-rpc-internal-lb:8545" - env: - - name: GOOGLE_APPLICATION_CREDENTIALS - value: "/var/config/service-account.json" - resources: - requests: - memory: 300Mi - cpu: 200m - ports: - - name: prometheus - containerPort: 8080 - volumeMounts: - - name: config - mountPath: /var/config - volumes: - - name: config - configMap: - name: eksportisto-config diff --git a/packages/helm-charts/eksportisto/values.yaml b/packages/helm-charts/eksportisto/values.yaml deleted file mode 100644 index 82468832812..00000000000 --- a/packages/helm-charts/eksportisto/values.yaml +++ /dev/null @@ -1,10 +0,0 @@ -imagePullPolicy: IfNotPresent -configBase64: config.yaml in base64 -serviceAccountBase64: service account in base 64 - -configHash: "0" - -redis: - cluster: - enabled: false - usePassword: false diff --git a/packages/helm-charts/prometheus-stackdriver/values.yaml b/packages/helm-charts/prometheus-stackdriver/values.yaml index 225833bcea1..201a465f94b 100644 --- a/packages/helm-charts/prometheus-stackdriver/values.yaml +++ b/packages/helm-charts/prometheus-stackdriver/values.yaml @@ -136,7 +136,6 @@ remote_write: |coredns.*\ |cortex.*\ |csi_operations.*\ - |eksportisto_step_duration_bucket\ |erlang_.+\ |etcd_.+\ |go_gc_.*\ From 0afd1ce0bfe48804cdc3ec05b9aacfb8d6b81b05 Mon Sep 17 00:00:00 2001 From: soloseng <102702451+soloseng@users.noreply.github.com> Date: Mon, 18 Sep 2023 11:55:22 -0400 Subject: [PATCH 20/31] Changed Protocol Test with Coverage Schedule (#10571) changed to every saturday at 13:00 --- .github/workflows/cron-protocol-test-with-coverage.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/cron-protocol-test-with-coverage.yml b/.github/workflows/cron-protocol-test-with-coverage.yml index 4fab42b220e..e25e4ecd71b 100644 --- a/.github/workflows/cron-protocol-test-with-coverage.yml +++ b/.github/workflows/cron-protocol-test-with-coverage.yml @@ -4,8 +4,8 @@ name: Protocol tests with coverage # https://docs.github.com/en/actions/using-workflows/events-that-trigger-workflows#schedule on: schedule: - # daily at 13:00 UTC - - cron: 0 13 * * * + # Every Saturday at 13:00 UTC + - cron: 0 13 * * 6 workflow_dispatch: jobs: From 5b9fe3f3df885975fe1ad83a9deda884227b09ef Mon Sep 17 00:00:00 2001 From: Victoria <4222953+lvpeschke@users.noreply.github.com> Date: Mon, 18 Sep 2023 19:31:31 +0200 Subject: [PATCH 21/31] Fix NPM install test (#10569) * Add libudev-dev * Revert to Node 14 --- .github/workflows/cron-npm-install.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/cron-npm-install.yml b/.github/workflows/cron-npm-install.yml index f4ac8c43d4f..811c3cd17de 100644 --- a/.github/workflows/cron-npm-install.yml +++ b/.github/workflows/cron-npm-install.yml @@ -15,7 +15,7 @@ jobs: name: ${{ matrix.package }} NPM package install runs-on: ubuntu-latest container: - image: node:18-bullseye + image: node:16-bullseye strategy: fail-fast: false matrix: @@ -29,7 +29,7 @@ jobs: if: matrix.package == '@celo/celocli' run: | apt update - apt install -y libusb-1.0-0-dev + apt install -y libusb-1.0-0-dev libudev-dev - name: Installing npm package run: yarn add ${{ matrix.package }} - name: Test celocli command From bd8f74a0e896216bdb55a5cb57853c131b9a58c4 Mon Sep 17 00:00:00 2001 From: Aaron DeRuvo Date: Wed, 20 Sep 2023 13:58:59 +0200 Subject: [PATCH 22/31] celo cli 3 release | no longer include shrinkwrap (#10560) * celo cli 3 beta 2 | no longer include shrinkwrap * update releasing doc * fix src vs lib * 3.0 beta 4 also fix some dep listings * bump to 3.0 * add back dev suffix * dont use git repo use npm package * typo * no git deps! * use published version of @celo/blind-threshhold-bls * Debug * Remove debug * Add git config to use https for ssh git repos * declare module * add missing pkg * dadt * fix mismatch abort controller versions * no implicit imports! * cheeky * declare mod * use v3 of bip39 * revert * how? * another * map blind to celo blind to avoid a conflict (and maybe fix all the errors :) * eyes only * no shh * remove typo space, one bip to rule them all! * no comment --------- Co-authored-by: Javier Cortejoso Co-authored-by: alvarof2 --- .github/workflows/circleci.yml | 2 +- package.json | 3 + packages/celotool/src/types.d.ts | 3 + packages/cli/npm-shrinkwrap.json | 7684 --------------- packages/cli/package.json | 18 +- packages/cli/releasing.md | 6 - packages/cli/src/transfer-stable-base.ts | 2 +- packages/cli/src/utils/governance.ts | 2 +- .../combiner/package.json | 3 +- .../combiner/src/common/combine.ts | 1 + .../combiner/src/common/io.ts | 1 + .../combiner/src/tracing.ts | 1 + .../combiner/test/end-to-end/pnp.test.ts | 2 +- .../phone-number-privacy/signer/package.json | 2 +- .../signer/test/signing/bls-signature.test.ts | 2 +- packages/sdk/contractkit/package.json | 3 +- packages/sdk/contractkit/src/setupForKits.ts | 2 +- packages/sdk/cryptographic-utils/package.json | 1 + .../sdk/cryptographic-utils/src/types.d.ts | 1 + packages/sdk/identity/package.json | 2 +- packages/sdk/wallets/wallet-base/package.json | 1 + yarn.lock | 8370 +++++++++-------- 22 files changed, 4562 insertions(+), 11550 deletions(-) delete mode 100644 packages/cli/npm-shrinkwrap.json create mode 100644 packages/sdk/cryptographic-utils/src/types.d.ts diff --git a/.github/workflows/circleci.yml b/.github/workflows/circleci.yml index d36ea9bdf6f..1d15e1c502c 100644 --- a/.github/workflows/circleci.yml +++ b/.github/workflows/circleci.yml @@ -106,7 +106,7 @@ jobs: restore-keys: | code-${{ github.sha }} - name: Install yarn dependencies - run: yarn install + run: git config --global url."https://".insteadOf ssh:// && yarn install if: steps.cache_node.outputs.cache-hit != 'true' - name: Run yarn postinstall if cache hitted run: yarn run postinstall diff --git a/package.json b/package.json index d08276b47e3..e8395e19b83 100644 --- a/package.json +++ b/package.json @@ -5,6 +5,7 @@ "license": "SEE LICENSE IN SUB-PACKAGES", "private": true, "scripts": { + "preinstall": "git config --global url.\"https://\".insteadOf ssh://", "install-pkg": "yarn install --link-duplicates", "lint": "yarn lerna run lint && yarn run --silent lint:do-not-merge", "lint:do-not-merge": "! git grep -E 'DO[ _]*NOT[ _]*MERGE'", @@ -83,6 +84,8 @@ "typescript-tslint-plugin": "^0.5.4" }, "resolutions": { + "bip39": "https://github.com/bitcoinjs/bip39#d8ea080a18b40f301d4e2219a2991cd2417e83c2", + "blind-threshold-bls": "npm:@celo/blind-threshold-bls@1.0.0-beta", "ganache": "npm:@celo/ganache@7.8.0-unofficial.0", "@types/bn.js": "4.11.6", "bignumber.js": "9.0.0" diff --git a/packages/celotool/src/types.d.ts b/packages/celotool/src/types.d.ts index 8d14dd77d24..cb40e33c989 100644 --- a/packages/celotool/src/types.d.ts +++ b/packages/celotool/src/types.d.ts @@ -1,5 +1,8 @@ declare module 'web3-utils' declare module 'country-data' +declare module 'bip39' { + function mnemonicToSeedSync(mnemonic: string): Buffer +} declare module 'read-last-lines' { namespace readLastLines { function read(inputFilePath: string, maxLineCount: number, encoding?: string): Promise diff --git a/packages/cli/npm-shrinkwrap.json b/packages/cli/npm-shrinkwrap.json deleted file mode 100644 index ccfd34d41be..00000000000 --- a/packages/cli/npm-shrinkwrap.json +++ /dev/null @@ -1,7684 +0,0 @@ -{ - "name": "@celo/celocli", - "version": "2.1.0", - "lockfileVersion": 1, - "requires": true, - "dependencies": { - "@azure/abort-controller": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@azure/abort-controller/-/abort-controller-1.1.0.tgz", - "integrity": "sha512-TrRLIoSQVzfAJX9H1JeFjzAoDGcoK1IYX1UImfceTZpsyYfWr09Ss1aHW1y5TrrR3iq6RZLBwJ3E24uwPhwahw==", - "requires": { - "tslib": "^2.2.0" - }, - "dependencies": { - "tslib": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.5.0.tgz", - "integrity": "sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg==" - } - } - }, - "@azure/core-auth": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/@azure/core-auth/-/core-auth-1.4.0.tgz", - "integrity": "sha512-HFrcTgmuSuukRf/EdPmqBrc5l6Q5Uu+2TbuhaKbgaCpP2TfAeiNaQPAadxO+CYBRHGUzIDteMAjFspFLDLnKVQ==", - "requires": { - "@azure/abort-controller": "^1.0.0", - "tslib": "^2.2.0" - }, - "dependencies": { - "tslib": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.5.0.tgz", - "integrity": "sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg==" - } - } - }, - "@azure/core-client": { - "version": "1.7.2", - "resolved": "https://registry.npmjs.org/@azure/core-client/-/core-client-1.7.2.tgz", - "integrity": "sha512-ye5554gnVnXdfZ64hptUtETgacXoRWxYv1JF5MctoAzTSH5dXhDPZd9gOjDPyWMcLIk58pnP5+p5vGX6PYn1ag==", - "requires": { - "@azure/abort-controller": "^1.0.0", - "@azure/core-auth": "^1.4.0", - "@azure/core-rest-pipeline": "^1.9.1", - "@azure/core-tracing": "^1.0.0", - "@azure/core-util": "^1.0.0", - "@azure/logger": "^1.0.0", - "tslib": "^2.2.0" - }, - "dependencies": { - "@azure/core-tracing": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@azure/core-tracing/-/core-tracing-1.0.1.tgz", - "integrity": "sha512-I5CGMoLtX+pI17ZdiFJZgxMJApsK6jjfm85hpgp3oazCdq5Wxgh4wMr7ge/TTWW1B5WBuvIOI1fMU/FrOAMKrw==", - "requires": { - "tslib": "^2.2.0" - } - }, - "tslib": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.5.0.tgz", - "integrity": "sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg==" - } - } - }, - "@azure/core-http-compat": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/@azure/core-http-compat/-/core-http-compat-1.3.0.tgz", - "integrity": "sha512-ZN9avruqbQ5TxopzG3ih3KRy52n8OAbitX3fnZT5go4hzu0J+KVPSzkL+Wt3hpJpdG8WIfg1sBD1tWkgUdEpBA==", - "requires": { - "@azure/abort-controller": "^1.0.4", - "@azure/core-client": "^1.3.0", - "@azure/core-rest-pipeline": "^1.3.0" - } - }, - "@azure/core-lro": { - "version": "2.5.3", - "resolved": "https://registry.npmjs.org/@azure/core-lro/-/core-lro-2.5.3.tgz", - "integrity": "sha512-ubkOf2YCnVtq7KqEJQqAI8dDD5rH1M6OP5kW0KO/JQyTaxLA0N0pjFWvvaysCj9eHMNBcuuoZXhhl0ypjod2DA==", - "requires": { - "@azure/abort-controller": "^1.0.0", - "@azure/core-util": "^1.2.0", - "@azure/logger": "^1.0.0", - "tslib": "^2.2.0" - }, - "dependencies": { - "tslib": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.5.0.tgz", - "integrity": "sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg==" - } - } - }, - "@azure/core-paging": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/@azure/core-paging/-/core-paging-1.5.0.tgz", - "integrity": "sha512-zqWdVIt+2Z+3wqxEOGzR5hXFZ8MGKK52x4vFLw8n58pR6ZfKRx3EXYTxTaYxYHc/PexPUTyimcTWFJbji9Z6Iw==", - "requires": { - "tslib": "^2.2.0" - }, - "dependencies": { - "tslib": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.5.0.tgz", - "integrity": "sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg==" - } - } - }, - "@azure/core-rest-pipeline": { - "version": "1.10.3", - "resolved": "https://registry.npmjs.org/@azure/core-rest-pipeline/-/core-rest-pipeline-1.10.3.tgz", - "integrity": "sha512-AMQb0ttiGJ0MIV/r+4TVra6U4+90mPeOveehFnrqKlo7dknPJYdJ61wOzYJXJjDxF8LcCtSogfRelkq+fCGFTw==", - "requires": { - "@azure/abort-controller": "^1.0.0", - "@azure/core-auth": "^1.4.0", - "@azure/core-tracing": "^1.0.1", - "@azure/core-util": "^1.3.0", - "@azure/logger": "^1.0.0", - "form-data": "^4.0.0", - "http-proxy-agent": "^5.0.0", - "https-proxy-agent": "^5.0.0", - "tslib": "^2.2.0" - }, - "dependencies": { - "@azure/core-tracing": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@azure/core-tracing/-/core-tracing-1.0.1.tgz", - "integrity": "sha512-I5CGMoLtX+pI17ZdiFJZgxMJApsK6jjfm85hpgp3oazCdq5Wxgh4wMr7ge/TTWW1B5WBuvIOI1fMU/FrOAMKrw==", - "requires": { - "tslib": "^2.2.0" - } - }, - "form-data": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", - "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", - "requires": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.8", - "mime-types": "^2.1.12" - } - }, - "tslib": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.5.0.tgz", - "integrity": "sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg==" - } - } - }, - "@azure/core-tracing": { - "version": "1.0.0-preview.12", - "resolved": "https://registry.npmjs.org/@azure/core-tracing/-/core-tracing-1.0.0-preview.12.tgz", - "integrity": "sha512-nvo2Wc4EKZGN6eFu9n3U7OXmASmL8VxoPIH7xaD6OlQqi44bouF0YIi9ID5rEsKLiAU59IYx6M297nqWVMWPDg==", - "requires": { - "@opentelemetry/api": "^1.0.0", - "tslib": "^2.2.0" - }, - "dependencies": { - "tslib": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.5.0.tgz", - "integrity": "sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg==" - } - } - }, - "@azure/core-util": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/@azure/core-util/-/core-util-1.3.2.tgz", - "integrity": "sha512-2bECOUh88RvL1pMZTcc6OzfobBeWDBf5oBbhjIhT1MV9otMVWCzpOJkkiKtrnO88y5GGBelgY8At73KGAdbkeQ==", - "requires": { - "@azure/abort-controller": "^1.0.0", - "tslib": "^2.2.0" - }, - "dependencies": { - "tslib": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.5.0.tgz", - "integrity": "sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg==" - } - } - }, - "@azure/identity": { - "version": "1.5.2", - "resolved": "https://registry.npmjs.org/@azure/identity/-/identity-1.5.2.tgz", - "integrity": "sha512-vqyeRbd2i0h9F4mqW5JbkP1xfabqKQ21l/81osKhpOQ2LtwaJW6nw4+0PsVYnxcbPHFCIZt6EWAk74a3OGYZJA==", - "requires": { - "@azure/core-auth": "^1.3.0", - "@azure/core-client": "^1.0.0", - "@azure/core-rest-pipeline": "^1.1.0", - "@azure/core-tracing": "1.0.0-preview.12", - "@azure/logger": "^1.0.0", - "@azure/msal-node": "1.0.0-beta.6", - "@types/stoppable": "^1.1.0", - "axios": "^0.21.1", - "events": "^3.0.0", - "jws": "^4.0.0", - "keytar": "^7.3.0", - "msal": "^1.0.2", - "open": "^7.0.0", - "qs": "^6.7.0", - "stoppable": "^1.1.0", - "tslib": "^2.0.0", - "uuid": "^8.3.0" - }, - "dependencies": { - "tslib": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.5.0.tgz", - "integrity": "sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg==" - }, - "uuid": { - "version": "8.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", - "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==" - } - } - }, - "@azure/keyvault-keys": { - "version": "4.7.0", - "resolved": "https://registry.npmjs.org/@azure/keyvault-keys/-/keyvault-keys-4.7.0.tgz", - "integrity": "sha512-HScWdORbRCKi1vdKI6EChe/t/P/zV7jcGZWfj18BOyeensk5d1/Ynfx1t6xfAy5zUIQvAWVU97hXdCznDpULbQ==", - "requires": { - "@azure/abort-controller": "^1.0.0", - "@azure/core-auth": "^1.3.0", - "@azure/core-client": "^1.5.0", - "@azure/core-http-compat": "^1.3.0", - "@azure/core-lro": "^2.2.0", - "@azure/core-paging": "^1.1.1", - "@azure/core-rest-pipeline": "^1.8.0", - "@azure/core-tracing": "^1.0.0", - "@azure/core-util": "^1.0.0", - "@azure/logger": "^1.0.0", - "tslib": "^2.2.0" - }, - "dependencies": { - "@azure/core-tracing": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@azure/core-tracing/-/core-tracing-1.0.1.tgz", - "integrity": "sha512-I5CGMoLtX+pI17ZdiFJZgxMJApsK6jjfm85hpgp3oazCdq5Wxgh4wMr7ge/TTWW1B5WBuvIOI1fMU/FrOAMKrw==", - "requires": { - "tslib": "^2.2.0" - } - }, - "tslib": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.5.0.tgz", - "integrity": "sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg==" - } - } - }, - "@azure/keyvault-secrets": { - "version": "4.7.0", - "resolved": "https://registry.npmjs.org/@azure/keyvault-secrets/-/keyvault-secrets-4.7.0.tgz", - "integrity": "sha512-YvlFXRQ+SI5NT4GtSFbb6HGo6prW3yzDab8tr6vga2/SjDQew3wJsCAAr/xwZz6XshFXCYEX26CDKmPf+SJKJg==", - "requires": { - "@azure/abort-controller": "^1.0.0", - "@azure/core-auth": "^1.3.0", - "@azure/core-client": "^1.5.0", - "@azure/core-http-compat": "^1.3.0", - "@azure/core-lro": "^2.2.0", - "@azure/core-paging": "^1.1.1", - "@azure/core-rest-pipeline": "^1.8.0", - "@azure/core-tracing": "^1.0.0", - "@azure/core-util": "^1.0.0", - "@azure/logger": "^1.0.0", - "tslib": "^2.2.0" - }, - "dependencies": { - "@azure/core-tracing": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@azure/core-tracing/-/core-tracing-1.0.1.tgz", - "integrity": "sha512-I5CGMoLtX+pI17ZdiFJZgxMJApsK6jjfm85hpgp3oazCdq5Wxgh4wMr7ge/TTWW1B5WBuvIOI1fMU/FrOAMKrw==", - "requires": { - "tslib": "^2.2.0" - } - }, - "tslib": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.5.0.tgz", - "integrity": "sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg==" - } - } - }, - "@azure/logger": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/@azure/logger/-/logger-1.0.4.tgz", - "integrity": "sha512-ustrPY8MryhloQj7OWGe+HrYx+aoiOxzbXTtgblbV3xwCqpzUK36phH3XNHQKj3EPonyFUuDTfR3qFhTEAuZEg==", - "requires": { - "tslib": "^2.2.0" - }, - "dependencies": { - "tslib": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.5.0.tgz", - "integrity": "sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg==" - } - } - }, - "@azure/msal-common": { - "version": "4.5.1", - "resolved": "https://registry.npmjs.org/@azure/msal-common/-/msal-common-4.5.1.tgz", - "integrity": "sha512-/i5dXM+QAtO+6atYd5oHGBAx48EGSISkXNXViheliOQe+SIFMDo3gSq3lL54W0suOSAsVPws3XnTaIHlla0PIQ==", - "requires": { - "debug": "^4.1.1" - } - }, - "@azure/msal-node": { - "version": "1.0.0-beta.6", - "resolved": "https://registry.npmjs.org/@azure/msal-node/-/msal-node-1.0.0-beta.6.tgz", - "integrity": "sha512-ZQI11Uz1j0HJohb9JZLRD8z0moVcPks1AFW4Q/Gcl67+QvH4aKEJti7fjCcipEEZYb/qzLSO8U6IZgPYytsiJQ==", - "requires": { - "@azure/msal-common": "^4.0.0", - "axios": "^0.21.1", - "jsonwebtoken": "^8.5.1", - "uuid": "^8.3.0" - }, - "dependencies": { - "uuid": { - "version": "8.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", - "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==" - } - } - }, - "@celo/base": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/@celo/base/-/base-4.1.0.tgz", - "integrity": "sha512-Q9wKLa4JJw06FXpToZm5PYfFYjx+tvwIQlvFofx+GleX+uq+BT/gdxgTQ/c08OrxZUyc53TUdqSCs+88VlhmlA==" - }, - "@celo/bls12377js": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/@celo/bls12377js/-/bls12377js-0.1.1.tgz", - "integrity": "sha512-hQjTIegg1+ZX5lPyeBYUEHYW7ktG0xkWxf4tcj//bK+tzyeQd6mMrne7C4+tBZgn+I35HtxYIo+YOLYJxXBg7A==", - "requires": { - "@stablelib/blake2xs": "0.10.4", - "big-integer": "^1.6.44" - } - }, - "@celo/connect": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/@celo/connect/-/connect-4.1.0.tgz", - "integrity": "sha512-1PaPy/b9ZLtXGCNN7lqlt0Nqsw/Ql20iCcOZbrAhoN9HkxtHI/yMK7p9aMGDR0Qy4jEi123p8kt5qgJhH2IkKg==", - "requires": { - "@celo/base": "4.1.0", - "@celo/utils": "4.1.0", - "@types/debug": "^4.1.5", - "@types/utf8": "^2.1.6", - "bignumber.js": "^9.0.0", - "debug": "^4.1.1", - "utf8": "3.0.0" - } - }, - "@celo/contractkit": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/@celo/contractkit/-/contractkit-4.1.0.tgz", - "integrity": "sha512-JmlCMrU2o09zjA6hiRixdKzTTmwkm2STL39sraYD96JMJsywwnu300oRMEupDZN3HobwStKTuTnR8r+xGeWT9Q==", - "requires": { - "@celo/base": "4.1.0", - "@celo/connect": "4.1.0", - "@celo/utils": "4.1.0", - "@celo/wallet-local": "4.1.0", - "@types/bn.js": "^5.1.0", - "@types/debug": "^4.1.5", - "bignumber.js": "^9.0.0", - "cross-fetch": "^3.0.6", - "debug": "^4.1.1", - "fp-ts": "2.1.1", - "io-ts": "2.0.1", - "semver": "^7.3.5", - "web3": "1.3.6" - } - }, - "@celo/cryptographic-utils": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/@celo/cryptographic-utils/-/cryptographic-utils-4.1.0.tgz", - "integrity": "sha512-EBmzoDYRS+ZL99Ywm32w9iAb7MaHGfUkjtKwUPp9m20k5hhMhZb1+h34tgrH/F7HIs7GU5bwc262ykE9uHDLZQ==", - "requires": { - "@celo/base": "4.1.0", - "@celo/bls12377js": "0.1.1", - "@celo/utils": "4.1.0", - "@types/bn.js": "^5.1.0", - "@types/elliptic": "^6.4.9", - "@types/ethereumjs-util": "^5.2.0", - "@types/node": "^10.12.18", - "@types/randombytes": "^2.0.0", - "bigi": "^1.1.0", - "bip32": "^2.0.6", - "bip39": "git+https://github.com/bitcoinjs/bip39.git#d8ea080a18b40f301d4e2219a2991cd2417e83c2", - "buffer-reverse": "^1.0.1", - "elliptic": "^6.5.4", - "ethereumjs-util": "^5.2.0" - }, - "dependencies": { - "bip32": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/bip32/-/bip32-2.0.6.tgz", - "integrity": "sha512-HpV5OMLLGTjSVblmrtYRfFFKuQB+GArM0+XP8HGWfJ5vxYBqo+DesvJwOdC2WJ3bCkZShGf0QIfoIpeomVzVdA==", - "requires": { - "@types/node": "10.12.18", - "bs58check": "^2.1.1", - "create-hash": "^1.2.0", - "create-hmac": "^1.1.7", - "tiny-secp256k1": "^1.1.3", - "typeforce": "^1.11.5", - "wif": "^2.0.6" - }, - "dependencies": { - "@types/node": { - "version": "10.12.18", - "resolved": "https://registry.npmjs.org/@types/node/-/node-10.12.18.tgz", - "integrity": "sha512-fh+pAqt4xRzPfqA6eh3Z2y6fyZavRIumvjhaCL753+TVkGKGhpPeyrJG2JftD0T9q4GF00KjefsQ+PQNDdWQaQ==" - } - } - } - } - }, - "@celo/explorer": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/@celo/explorer/-/explorer-4.1.0.tgz", - "integrity": "sha512-/v07XW+EgfDoiKBBf9gq1BGKvVTkhrKF+jZACRvttFOLCYB+uKRv7gjwIoYrwTI4abr3c/7nFWcBvo4d6s7SIg==", - "requires": { - "@celo/base": "4.1.0", - "@celo/connect": "4.1.0", - "@celo/contractkit": "4.1.0", - "@celo/utils": "4.1.0", - "@types/debug": "^4.1.5", - "cross-fetch": "^3.1.5", - "debug": "^4.1.1" - } - }, - "@celo/governance": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/@celo/governance/-/governance-4.1.0.tgz", - "integrity": "sha512-IWUWuo8AIPG+dJri5QoH/NgZdD6hgs2Ued0CWSYPX/kZMcCa8y1Qxftw5IBSZ+tDtFVTMMxiAzudKU4vsFr2jg==", - "requires": { - "@celo/base": "4.1.0", - "@celo/connect": "4.1.0", - "@celo/contractkit": "4.1.0", - "@celo/explorer": "4.1.0", - "@celo/utils": "4.1.0", - "@types/debug": "^4.1.5", - "@types/ethereumjs-util": "^5.2.0", - "@types/inquirer": "^6.5.0", - "debug": "^4.1.1", - "ethereumjs-util": "^5.2.0", - "inquirer": "^7.0.5" - } - }, - "@celo/identity": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/@celo/identity/-/identity-4.1.0.tgz", - "integrity": "sha512-ZWOyohdQ2g2XZH7JYWYL+3nma3vtCSGclSu371ZWAp+BpS0wF1+Qo7L8a6Q2/rD0340+tZLqtinRz1k2JlfhkA==", - "requires": { - "@celo/base": "4.1.0", - "@celo/contractkit": "4.1.0", - "@celo/phone-number-privacy-common": "^2.0.2", - "@celo/utils": "4.1.0", - "@types/debug": "^4.1.5", - "bignumber.js": "^9.0.0", - "blind-threshold-bls": "git+https://github.com/celo-org/blind-threshold-bls-wasm.git#e1e2f8a", - "cross-fetch": "3.0.4", - "debug": "^4.1.1", - "elliptic": "^6.5.4", - "fp-ts": "2.1.1", - "io-ts": "2.0.1" - }, - "dependencies": { - "cross-fetch": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.0.4.tgz", - "integrity": "sha512-MSHgpjQqgbT/94D4CyADeNoYh52zMkCX4pcJvPP5WqPsLFMKjr2TCMg381ox5qI0ii2dPwaLx/00477knXqXVw==", - "requires": { - "node-fetch": "2.6.0", - "whatwg-fetch": "3.0.0" - } - }, - "node-fetch": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.0.tgz", - "integrity": "sha512-8dG4H5ujfvFiqDmVu9fQ5bOHUC15JMjMY/Zumv26oOvvVJjM67KF8koCWIabKQ1GJIa9r2mMZscBq/TbdOcmNA==" - } - } - }, - "@celo/phone-number-privacy-common": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/@celo/phone-number-privacy-common/-/phone-number-privacy-common-2.0.2.tgz", - "integrity": "sha512-bQ3ufYADU+LDnZyQPl+/zVQMTPREgwmYXFremKkm4nlTm+83Ti9G7obXeMkFtDrG//vvgC8ryMHq0ZkYh5XkFA==", - "requires": { - "@celo/base": "^3.1.0", - "@celo/contractkit": "^3.1.0", - "@celo/phone-utils": "^3.1.0", - "@celo/utils": "^3.1.0", - "bignumber.js": "^9.0.0", - "bunyan": "1.8.12", - "bunyan-debug-stream": "2.0.0", - "bunyan-gke-stackdriver": "0.1.2", - "dotenv": "^8.2.0", - "elliptic": "^6.5.4", - "io-ts": "2.0.1", - "is-base64": "^1.1.0" - }, - "dependencies": { - "@celo/base": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/@celo/base/-/base-3.2.0.tgz", - "integrity": "sha512-9wfZYiYv7dzt17a29fxU6sV7JssyXfpSQ9kPSpfOlsewPICXwfOMQ+25Jn6xZu20Vx9rmKebmLHiQyiuYEDOcQ==" - }, - "@celo/connect": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/@celo/connect/-/connect-3.2.0.tgz", - "integrity": "sha512-iLOLo8d1OqNcX827/iCfWCeWaewUl0kyhL1xgyXrf//YaPU+ljKtruJmiLLrxkfdB/etWUdcryrbmuUhjHZmKg==", - "requires": { - "@celo/base": "3.2.0", - "@celo/utils": "3.2.0", - "@types/debug": "^4.1.5", - "@types/utf8": "^2.1.6", - "bignumber.js": "^9.0.0", - "debug": "^4.1.1", - "utf8": "3.0.0" - } - }, - "@celo/contractkit": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/@celo/contractkit/-/contractkit-3.2.0.tgz", - "integrity": "sha512-kt4ViBRMg7ezCPi2SdcrYdDorA1Meg/qk97/u4izEIthl9GM4QSRfhhHYsbXYm0NV/MZ2BkS0cCsQ/SHcILSaA==", - "requires": { - "@celo/base": "3.2.0", - "@celo/connect": "3.2.0", - "@celo/utils": "3.2.0", - "@celo/wallet-local": "3.2.0", - "@types/bn.js": "^5.1.0", - "@types/debug": "^4.1.5", - "bignumber.js": "^9.0.0", - "cross-fetch": "^3.0.6", - "debug": "^4.1.1", - "fp-ts": "2.1.1", - "io-ts": "2.0.1", - "semver": "^7.3.5", - "web3": "1.3.6" - } - }, - "@celo/phone-utils": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/@celo/phone-utils/-/phone-utils-3.2.0.tgz", - "integrity": "sha512-TbEKN7emsQY3nac7Lv5XkPA7HWXjrhuRpbtVDsJ8uB3Pbu9zAYCs0J8QlikEUJLPGoRA3oCZLri54GhWFG84BQ==", - "requires": { - "@celo/base": "3.2.0", - "@celo/utils": "3.2.0", - "@types/country-data": "^0.0.0", - "@types/ethereumjs-util": "^5.2.0", - "@types/google-libphonenumber": "^7.4.23", - "@types/node": "^10.12.18", - "country-data": "^0.0.31", - "fp-ts": "2.1.1", - "google-libphonenumber": "^3.2.27", - "io-ts": "2.0.1" - } - }, - "@celo/utils": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/@celo/utils/-/utils-3.2.0.tgz", - "integrity": "sha512-Om1mTzwsdV6FVPvraafcJeRnzz7Xv/lyGmyZaoEZ9fErRadu9ZrOsuDQniYe+lD78DQ0NATxJL04WjhEKVkn+A==", - "requires": { - "@celo/base": "3.2.0", - "@types/bn.js": "^5.1.0", - "@types/elliptic": "^6.4.9", - "@types/ethereumjs-util": "^5.2.0", - "@types/node": "^10.12.18", - "bignumber.js": "^9.0.0", - "elliptic": "^6.5.4", - "ethereumjs-util": "^5.2.0", - "io-ts": "2.0.1", - "web3-eth-abi": "1.3.6", - "web3-utils": "1.3.6" - } - }, - "@celo/wallet-base": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/@celo/wallet-base/-/wallet-base-3.2.0.tgz", - "integrity": "sha512-lwhesT2BkXIyPI/ox/QbVVCRtLzTAGO25M3TlWBfSCzkRAf/AiV41lzEf9J7A1ozDKXS9s7bj8odiRkMAcelyQ==", - "requires": { - "@celo/base": "3.2.0", - "@celo/connect": "3.2.0", - "@celo/utils": "3.2.0", - "@types/debug": "^4.1.5", - "@types/ethereumjs-util": "^5.2.0", - "bignumber.js": "^9.0.0", - "debug": "^4.1.1", - "eth-lib": "^0.2.8", - "ethereumjs-util": "^5.2.0" - } - }, - "@celo/wallet-local": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/@celo/wallet-local/-/wallet-local-3.2.0.tgz", - "integrity": "sha512-hR70gzNCDHgf/GskaaLtB7Jz4AqJEW0b+1jG1rsuAyaXLJomSRADGBwUUgMy1dKU87fcQ9h7Uh+AuRAP4/5COQ==", - "requires": { - "@celo/connect": "3.2.0", - "@celo/utils": "3.2.0", - "@celo/wallet-base": "3.2.0", - "@types/ethereumjs-util": "^5.2.0", - "eth-lib": "^0.2.8", - "ethereumjs-util": "^5.2.0" - } - } - } - }, - "@celo/phone-utils": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/@celo/phone-utils/-/phone-utils-4.1.0.tgz", - "integrity": "sha512-qWvX1Po6+BYBj0a32ZNoqmggd3fA52OMJryIYS6eoRDOFC2qo9wRNEw6O8ZWIN3JJ24wEEbtiVATMrrt2qCKJg==", - "requires": { - "@celo/base": "4.1.0", - "@celo/utils": "4.1.0", - "@types/country-data": "^0.0.0", - "@types/ethereumjs-util": "^5.2.0", - "@types/google-libphonenumber": "^7.4.23", - "@types/node": "^10.12.18", - "country-data": "^0.0.31", - "fp-ts": "2.1.1", - "google-libphonenumber": "^3.2.27", - "io-ts": "2.0.1" - } - }, - "@celo/utils": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/@celo/utils/-/utils-4.1.0.tgz", - "integrity": "sha512-N0ijAXAGFQavX75clVXhGOVTzSpv/AJmh+igYUCNVzyF0s/Ms/l9WjjEQsd0c3uWRkWBLXiKmCNTI9LZXazjkw==", - "requires": { - "@celo/base": "4.1.0", - "@types/bn.js": "^5.1.0", - "@types/elliptic": "^6.4.9", - "@types/ethereumjs-util": "^5.2.0", - "@types/node": "^10.12.18", - "bignumber.js": "^9.0.0", - "elliptic": "^6.5.4", - "ethereumjs-util": "^5.2.0", - "io-ts": "2.0.1", - "web3-eth-abi": "1.3.6", - "web3-utils": "1.3.6" - } - }, - "@celo/wallet-base": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/@celo/wallet-base/-/wallet-base-4.1.0.tgz", - "integrity": "sha512-fc6DGI6vcwGE/z3hT/7rZkQ9nvv/7l8RAEmof05zqMCdXdqaq135GWuE5H7gcC/qCLJzRNVpPGcWAPKUQ4z03A==", - "requires": { - "@celo/base": "4.1.0", - "@celo/connect": "4.1.0", - "@celo/utils": "4.1.0", - "@types/debug": "^4.1.5", - "@types/ethereumjs-util": "^5.2.0", - "bignumber.js": "^9.0.0", - "debug": "^4.1.1", - "eth-lib": "^0.2.8", - "ethereumjs-util": "^5.2.0" - } - }, - "@celo/wallet-hsm": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/@celo/wallet-hsm/-/wallet-hsm-4.1.0.tgz", - "integrity": "sha512-n/j3JVoiJywCFYRZitcxrGphtoe/qUkrab3AMkrTIUko3XzgNhCeMLe8BszR7gpFr9HfTScM12xwsaIUv21Iww==", - "requires": { - "@celo/base": "4.1.0", - "@types/asn1js": "^0.0.2", - "@types/debug": "^4.1.5", - "@types/secp256k1": "^4.0.0", - "asn1js": "^2.0.26", - "elliptic": "^6.5.4", - "eth-lib": "^0.2.8", - "ethereumjs-util": "^5.2.0", - "secp256k1": "^4.0.0" - } - }, - "@celo/wallet-hsm-azure": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/@celo/wallet-hsm-azure/-/wallet-hsm-azure-4.1.0.tgz", - "integrity": "sha512-GL27+mZjXBKxQZ3uSl9PuhjuqXCiJpFqIH4Ge6ePsSc0BWV7fX2bzosj7Nw174Q5VQpUCVm3YPRDHSDzufHPVA==", - "requires": { - "@azure/identity": "^1.1.0", - "@azure/keyvault-keys": "^4.1.0", - "@azure/keyvault-secrets": "^4.1.0", - "@celo/connect": "4.1.0", - "@celo/utils": "4.1.0", - "@celo/wallet-base": "4.1.0", - "@celo/wallet-hsm": "4.1.0", - "@celo/wallet-remote": "4.1.0", - "@types/secp256k1": "^4.0.0", - "bignumber.js": "^9.0.0", - "debug": "^4.1.1", - "eth-lib": "^0.2.8", - "ethereumjs-util": "^5.2.0", - "secp256k1": "^4.0.0" - } - }, - "@celo/wallet-ledger": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/@celo/wallet-ledger/-/wallet-ledger-4.1.0.tgz", - "integrity": "sha512-8UVJsEIGGc2rWo3U70fq3dv9QoTpapYdiOQ/RJGctfoWduMLRWeTIApk4DJ9+wUS0Wjf3F5+U9q35UxVp/KTdA==", - "requires": { - "@celo/connect": "4.1.0", - "@celo/utils": "4.1.0", - "@celo/wallet-base": "4.1.0", - "@celo/wallet-remote": "4.1.0", - "@ledgerhq/hw-app-eth": "~5.11.0", - "@ledgerhq/hw-transport": "~5.11.0", - "@types/ethereumjs-util": "^5.2.0", - "debug": "^4.1.1", - "eth-lib": "^0.2.8", - "ethereumjs-util": "^5.2.0" - } - }, - "@celo/wallet-local": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/@celo/wallet-local/-/wallet-local-4.1.0.tgz", - "integrity": "sha512-nG7f77gblF3CQ3811LOtmoLr8yC+f+G6QjkgUV9GmFNBDdUNQZf7OM1ZQaYib10D6OwY0UPxlP9N+tweVWDOdA==", - "requires": { - "@celo/connect": "4.1.0", - "@celo/utils": "4.1.0", - "@celo/wallet-base": "4.1.0", - "@types/ethereumjs-util": "^5.2.0", - "eth-lib": "^0.2.8", - "ethereumjs-util": "^5.2.0" - } - }, - "@celo/wallet-remote": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/@celo/wallet-remote/-/wallet-remote-4.1.0.tgz", - "integrity": "sha512-SNxVdLa6ixJGDqOyBI2SOJN5CLr6gZG0AUCo0cPwkpV7c5Dy9ezJ2gRWxxvcbU1j++Jjh/H1yyKLmqbfUEtw8w==", - "requires": { - "@celo/connect": "4.1.0", - "@celo/utils": "4.1.0", - "@celo/wallet-base": "4.1.0", - "@types/debug": "^4.1.5", - "@types/ethereumjs-util": "^5.2.0", - "eth-lib": "^0.2.8", - "ethereumjs-util": "^5.2.0" - } - }, - "@ethersproject/abi": { - "version": "5.0.7", - "resolved": "https://registry.npmjs.org/@ethersproject/abi/-/abi-5.0.7.tgz", - "integrity": "sha512-Cqktk+hSIckwP/W8O47Eef60VwmoSC/L3lY0+dIBhQPCNn9E4V7rwmm2aFrNRRDJfFlGuZ1khkQUOc3oBX+niw==", - "requires": { - "@ethersproject/address": "^5.0.4", - "@ethersproject/bignumber": "^5.0.7", - "@ethersproject/bytes": "^5.0.4", - "@ethersproject/constants": "^5.0.4", - "@ethersproject/hash": "^5.0.4", - "@ethersproject/keccak256": "^5.0.3", - "@ethersproject/logger": "^5.0.5", - "@ethersproject/properties": "^5.0.3", - "@ethersproject/strings": "^5.0.4" - } - }, - "@ethersproject/abstract-provider": { - "version": "5.6.1", - "resolved": "https://registry.npmjs.org/@ethersproject/abstract-provider/-/abstract-provider-5.6.1.tgz", - "integrity": "sha512-BxlIgogYJtp1FS8Muvj8YfdClk3unZH0vRMVX791Z9INBNT/kuACZ9GzaY1Y4yFq+YSy6/w4gzj3HCRKrK9hsQ==", - "requires": { - "@ethersproject/bignumber": "^5.6.2", - "@ethersproject/bytes": "^5.6.1", - "@ethersproject/logger": "^5.6.0", - "@ethersproject/networks": "^5.6.3", - "@ethersproject/properties": "^5.6.0", - "@ethersproject/transactions": "^5.6.2", - "@ethersproject/web": "^5.6.1" - } - }, - "@ethersproject/abstract-signer": { - "version": "5.6.2", - "resolved": "https://registry.npmjs.org/@ethersproject/abstract-signer/-/abstract-signer-5.6.2.tgz", - "integrity": "sha512-n1r6lttFBG0t2vNiI3HoWaS/KdOt8xyDjzlP2cuevlWLG6EX0OwcKLyG/Kp/cuwNxdy/ous+R/DEMdTUwWQIjQ==", - "requires": { - "@ethersproject/abstract-provider": "^5.6.1", - "@ethersproject/bignumber": "^5.6.2", - "@ethersproject/bytes": "^5.6.1", - "@ethersproject/logger": "^5.6.0", - "@ethersproject/properties": "^5.6.0" - } - }, - "@ethersproject/address": { - "version": "5.6.1", - "resolved": "https://registry.npmjs.org/@ethersproject/address/-/address-5.6.1.tgz", - "integrity": "sha512-uOgF0kS5MJv9ZvCz7x6T2EXJSzotiybApn4XlOgoTX0xdtyVIJ7pF+6cGPxiEq/dpBiTfMiw7Yc81JcwhSYA0Q==", - "requires": { - "@ethersproject/bignumber": "^5.6.2", - "@ethersproject/bytes": "^5.6.1", - "@ethersproject/keccak256": "^5.6.1", - "@ethersproject/logger": "^5.6.0", - "@ethersproject/rlp": "^5.6.1" - } - }, - "@ethersproject/base64": { - "version": "5.6.1", - "resolved": "https://registry.npmjs.org/@ethersproject/base64/-/base64-5.6.1.tgz", - "integrity": "sha512-qB76rjop6a0RIYYMiB4Eh/8n+Hxu2NIZm8S/Q7kNo5pmZfXhHGHmS4MinUainiBC54SCyRnwzL+KZjj8zbsSsw==", - "requires": { - "@ethersproject/bytes": "^5.6.1" - } - }, - "@ethersproject/bignumber": { - "version": "5.6.2", - "resolved": "https://registry.npmjs.org/@ethersproject/bignumber/-/bignumber-5.6.2.tgz", - "integrity": "sha512-v7+EEUbhGqT3XJ9LMPsKvXYHFc8eHxTowFCG/HgJErmq4XHJ2WR7aeyICg3uTOAQ7Icn0GFHAohXEhxQHq4Ubw==", - "requires": { - "@ethersproject/bytes": "^5.6.1", - "@ethersproject/logger": "^5.6.0", - "bn.js": "^5.2.1" - }, - "dependencies": { - "bn.js": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz", - "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==" - } - } - }, - "@ethersproject/bytes": { - "version": "5.6.1", - "resolved": "https://registry.npmjs.org/@ethersproject/bytes/-/bytes-5.6.1.tgz", - "integrity": "sha512-NwQt7cKn5+ZE4uDn+X5RAXLp46E1chXoaMmrxAyA0rblpxz8t58lVkrHXoRIn0lz1joQElQ8410GqhTqMOwc6g==", - "requires": { - "@ethersproject/logger": "^5.6.0" - } - }, - "@ethersproject/constants": { - "version": "5.6.1", - "resolved": "https://registry.npmjs.org/@ethersproject/constants/-/constants-5.6.1.tgz", - "integrity": "sha512-QSq9WVnZbxXYFftrjSjZDUshp6/eKp6qrtdBtUCm0QxCV5z1fG/w3kdlcsjMCQuQHUnAclKoK7XpXMezhRDOLg==", - "requires": { - "@ethersproject/bignumber": "^5.6.2" - } - }, - "@ethersproject/hash": { - "version": "5.6.1", - "resolved": "https://registry.npmjs.org/@ethersproject/hash/-/hash-5.6.1.tgz", - "integrity": "sha512-L1xAHurbaxG8VVul4ankNX5HgQ8PNCTrnVXEiFnE9xoRnaUcgfD12tZINtDinSllxPLCtGwguQxJ5E6keE84pA==", - "requires": { - "@ethersproject/abstract-signer": "^5.6.2", - "@ethersproject/address": "^5.6.1", - "@ethersproject/bignumber": "^5.6.2", - "@ethersproject/bytes": "^5.6.1", - "@ethersproject/keccak256": "^5.6.1", - "@ethersproject/logger": "^5.6.0", - "@ethersproject/properties": "^5.6.0", - "@ethersproject/strings": "^5.6.1" - } - }, - "@ethersproject/keccak256": { - "version": "5.6.1", - "resolved": "https://registry.npmjs.org/@ethersproject/keccak256/-/keccak256-5.6.1.tgz", - "integrity": "sha512-bB7DQHCTRDooZZdL3lk9wpL0+XuG3XLGHLh3cePnybsO3V0rdCAOQGpn/0R3aODmnTOOkCATJiD2hnL+5bwthA==", - "requires": { - "@ethersproject/bytes": "^5.6.1", - "js-sha3": "0.8.0" - } - }, - "@ethersproject/logger": { - "version": "5.6.0", - "resolved": "https://registry.npmjs.org/@ethersproject/logger/-/logger-5.6.0.tgz", - "integrity": "sha512-BiBWllUROH9w+P21RzoxJKzqoqpkyM1pRnEKG69bulE9TSQD8SAIvTQqIMZmmCO8pUNkgLP1wndX1gKghSpBmg==" - }, - "@ethersproject/networks": { - "version": "5.6.4", - "resolved": "https://registry.npmjs.org/@ethersproject/networks/-/networks-5.6.4.tgz", - "integrity": "sha512-KShHeHPahHI2UlWdtDMn2lJETcbtaJge4k7XSjDR9h79QTd6yQJmv6Cp2ZA4JdqWnhszAOLSuJEd9C0PRw7hSQ==", - "requires": { - "@ethersproject/logger": "^5.6.0" - } - }, - "@ethersproject/properties": { - "version": "5.6.0", - "resolved": "https://registry.npmjs.org/@ethersproject/properties/-/properties-5.6.0.tgz", - "integrity": "sha512-szoOkHskajKePTJSZ46uHUWWkbv7TzP2ypdEK6jGMqJaEt2sb0jCgfBo0gH0m2HBpRixMuJ6TBRaQCF7a9DoCg==", - "requires": { - "@ethersproject/logger": "^5.6.0" - } - }, - "@ethersproject/rlp": { - "version": "5.6.1", - "resolved": "https://registry.npmjs.org/@ethersproject/rlp/-/rlp-5.6.1.tgz", - "integrity": "sha512-uYjmcZx+DKlFUk7a5/W9aQVaoEC7+1MOBgNtvNg13+RnuUwT4F0zTovC0tmay5SmRslb29V1B7Y5KCri46WhuQ==", - "requires": { - "@ethersproject/bytes": "^5.6.1", - "@ethersproject/logger": "^5.6.0" - } - }, - "@ethersproject/signing-key": { - "version": "5.6.2", - "resolved": "https://registry.npmjs.org/@ethersproject/signing-key/-/signing-key-5.6.2.tgz", - "integrity": "sha512-jVbu0RuP7EFpw82vHcL+GP35+KaNruVAZM90GxgQnGqB6crhBqW/ozBfFvdeImtmb4qPko0uxXjn8l9jpn0cwQ==", - "requires": { - "@ethersproject/bytes": "^5.6.1", - "@ethersproject/logger": "^5.6.0", - "@ethersproject/properties": "^5.6.0", - "bn.js": "^5.2.1", - "elliptic": "6.5.4", - "hash.js": "1.1.7" - }, - "dependencies": { - "bn.js": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz", - "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==" - } - } - }, - "@ethersproject/strings": { - "version": "5.6.1", - "resolved": "https://registry.npmjs.org/@ethersproject/strings/-/strings-5.6.1.tgz", - "integrity": "sha512-2X1Lgk6Jyfg26MUnsHiT456U9ijxKUybz8IM1Vih+NJxYtXhmvKBcHOmvGqpFSVJ0nQ4ZCoIViR8XlRw1v/+Cw==", - "requires": { - "@ethersproject/bytes": "^5.6.1", - "@ethersproject/constants": "^5.6.1", - "@ethersproject/logger": "^5.6.0" - } - }, - "@ethersproject/transactions": { - "version": "5.6.2", - "resolved": "https://registry.npmjs.org/@ethersproject/transactions/-/transactions-5.6.2.tgz", - "integrity": "sha512-BuV63IRPHmJvthNkkt9G70Ullx6AcM+SDc+a8Aw/8Yew6YwT51TcBKEp1P4oOQ/bP25I18JJr7rcFRgFtU9B2Q==", - "requires": { - "@ethersproject/address": "^5.6.1", - "@ethersproject/bignumber": "^5.6.2", - "@ethersproject/bytes": "^5.6.1", - "@ethersproject/constants": "^5.6.1", - "@ethersproject/keccak256": "^5.6.1", - "@ethersproject/logger": "^5.6.0", - "@ethersproject/properties": "^5.6.0", - "@ethersproject/rlp": "^5.6.1", - "@ethersproject/signing-key": "^5.6.2" - } - }, - "@ethersproject/web": { - "version": "5.6.1", - "resolved": "https://registry.npmjs.org/@ethersproject/web/-/web-5.6.1.tgz", - "integrity": "sha512-/vSyzaQlNXkO1WV+RneYKqCJwualcUdx/Z3gseVovZP0wIlOFcCE1hkRhKBH8ImKbGQbMl9EAAyJFrJu7V0aqA==", - "requires": { - "@ethersproject/base64": "^5.6.1", - "@ethersproject/bytes": "^5.6.1", - "@ethersproject/logger": "^5.6.0", - "@ethersproject/properties": "^5.6.0", - "@ethersproject/strings": "^5.6.1" - } - }, - "@firebase/analytics": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/@firebase/analytics/-/analytics-0.6.0.tgz", - "integrity": "sha512-6qYEOPUVYrMhqvJ46Z5Uf1S4uULd6d7vGpMP5Qz+u8kIWuOQGcPdJKQap+Hla6Rq164or9gC2HRXuYXKlgWfpw==", - "requires": { - "@firebase/analytics-types": "0.4.0", - "@firebase/component": "0.1.19", - "@firebase/installations": "0.4.17", - "@firebase/logger": "0.2.6", - "@firebase/util": "0.3.2", - "tslib": "^1.11.1" - } - }, - "@firebase/analytics-types": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/@firebase/analytics-types/-/analytics-types-0.4.0.tgz", - "integrity": "sha512-Jj2xW+8+8XPfWGkv9HPv/uR+Qrmq37NPYT352wf7MvE9LrstpLVmFg3LqG6MCRr5miLAom5sen2gZ+iOhVDeRA==" - }, - "@firebase/app": { - "version": "0.6.11", - "resolved": "https://registry.npmjs.org/@firebase/app/-/app-0.6.11.tgz", - "integrity": "sha512-FH++PaoyTzfTAVuJ0gITNYEIcjT5G+D0671La27MU8Vvr6MTko+5YUZ4xS9QItyotSeRF4rMJ1KR7G8LSyySiA==", - "requires": { - "@firebase/app-types": "0.6.1", - "@firebase/component": "0.1.19", - "@firebase/logger": "0.2.6", - "@firebase/util": "0.3.2", - "dom-storage": "2.1.0", - "tslib": "^1.11.1", - "xmlhttprequest": "1.8.0" - } - }, - "@firebase/app-types": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/@firebase/app-types/-/app-types-0.6.1.tgz", - "integrity": "sha512-L/ZnJRAq7F++utfuoTKX4CLBG5YR7tFO3PLzG1/oXXKEezJ0kRL3CMRoueBEmTCzVb/6SIs2Qlaw++uDgi5Xyg==" - }, - "@firebase/auth": { - "version": "0.15.0", - "resolved": "https://registry.npmjs.org/@firebase/auth/-/auth-0.15.0.tgz", - "integrity": "sha512-IFuzhxS+HtOQl7+SZ/Mhaghy/zTU7CENsJFWbC16tv2wfLZbayKF5jYGdAU3VFLehgC8KjlcIWd10akc3XivfQ==", - "requires": { - "@firebase/auth-types": "0.10.1" - } - }, - "@firebase/auth-interop-types": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/@firebase/auth-interop-types/-/auth-interop-types-0.1.5.tgz", - "integrity": "sha512-88h74TMQ6wXChPA6h9Q3E1Jg6TkTHep2+k63OWg3s0ozyGVMeY+TTOti7PFPzq5RhszQPQOoCi59es4MaRvgCw==" - }, - "@firebase/auth-types": { - "version": "0.10.1", - "resolved": "https://registry.npmjs.org/@firebase/auth-types/-/auth-types-0.10.1.tgz", - "integrity": "sha512-/+gBHb1O9x/YlG7inXfxff/6X3BPZt4zgBv4kql6HEmdzNQCodIRlEYnI+/da+lN+dha7PjaFH7C7ewMmfV7rw==" - }, - "@firebase/component": { - "version": "0.1.19", - "resolved": "https://registry.npmjs.org/@firebase/component/-/component-0.1.19.tgz", - "integrity": "sha512-L0S3g8eqaerg8y0zox3oOHSTwn/FE8RbcRHiurnbESvDViZtP5S5WnhuAPd7FnFxa8ElWK0z1Tr3ikzWDv1xdQ==", - "requires": { - "@firebase/util": "0.3.2", - "tslib": "^1.11.1" - } - }, - "@firebase/database": { - "version": "0.6.13", - "resolved": "https://registry.npmjs.org/@firebase/database/-/database-0.6.13.tgz", - "integrity": "sha512-NommVkAPzU7CKd1gyehmi3lz0K78q0KOfiex7Nfy7MBMwknLm7oNqKovXSgQV1PCLvKXvvAplDSFhDhzIf9obA==", - "requires": { - "@firebase/auth-interop-types": "0.1.5", - "@firebase/component": "0.1.19", - "@firebase/database-types": "0.5.2", - "@firebase/logger": "0.2.6", - "@firebase/util": "0.3.2", - "faye-websocket": "0.11.3", - "tslib": "^1.11.1" - } - }, - "@firebase/database-types": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/@firebase/database-types/-/database-types-0.5.2.tgz", - "integrity": "sha512-ap2WQOS3LKmGuVFKUghFft7RxXTyZTDr0Xd8y2aqmWsbJVjgozi0huL/EUMgTjGFrATAjcf2A7aNs8AKKZ2a8g==", - "requires": { - "@firebase/app-types": "0.6.1" - } - }, - "@firebase/firestore": { - "version": "1.18.0", - "resolved": "https://registry.npmjs.org/@firebase/firestore/-/firestore-1.18.0.tgz", - "integrity": "sha512-maMq4ltkrwjDRusR2nt0qS4wldHQMp+0IDSfXIjC+SNmjnWY/t/+Skn9U3Po+dB38xpz3i7nsKbs+8utpDnPSw==", - "requires": { - "@firebase/component": "0.1.19", - "@firebase/firestore-types": "1.14.0", - "@firebase/logger": "0.2.6", - "@firebase/util": "0.3.2", - "@firebase/webchannel-wrapper": "0.4.0", - "@grpc/grpc-js": "^1.0.0", - "@grpc/proto-loader": "^0.5.0", - "node-fetch": "2.6.1", - "tslib": "^1.11.1" - }, - "dependencies": { - "node-fetch": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.1.tgz", - "integrity": "sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw==" - } - } - }, - "@firebase/firestore-types": { - "version": "1.14.0", - "resolved": "https://registry.npmjs.org/@firebase/firestore-types/-/firestore-types-1.14.0.tgz", - "integrity": "sha512-WF8IBwHzZDhwyOgQnmB0pheVrLNP78A8PGxk1nxb/Nrgh1amo4/zYvFMGgSsTeaQK37xMYS/g7eS948te/dJxw==" - }, - "@firebase/functions": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/@firebase/functions/-/functions-0.5.1.tgz", - "integrity": "sha512-yyjPZXXvzFPjkGRSqFVS5Hc2Y7Y48GyyMH+M3i7hLGe69r/59w6wzgXKqTiSYmyE1pxfjxU4a1YqBDHNkQkrYQ==", - "requires": { - "@firebase/component": "0.1.19", - "@firebase/functions-types": "0.3.17", - "@firebase/messaging-types": "0.5.0", - "node-fetch": "2.6.1", - "tslib": "^1.11.1" - }, - "dependencies": { - "node-fetch": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.1.tgz", - "integrity": "sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw==" - } - } - }, - "@firebase/functions-types": { - "version": "0.3.17", - "resolved": "https://registry.npmjs.org/@firebase/functions-types/-/functions-types-0.3.17.tgz", - "integrity": "sha512-DGR4i3VI55KnYk4IxrIw7+VG7Q3gA65azHnZxo98Il8IvYLr2UTBlSh72dTLlDf25NW51HqvJgYJDKvSaAeyHQ==" - }, - "@firebase/installations": { - "version": "0.4.17", - "resolved": "https://registry.npmjs.org/@firebase/installations/-/installations-0.4.17.tgz", - "integrity": "sha512-AE/TyzIpwkC4UayRJD419xTqZkKzxwk0FLht3Dci8WI2OEKHSwoZG9xv4hOBZebe+fDzoV2EzfatQY8c/6Avig==", - "requires": { - "@firebase/component": "0.1.19", - "@firebase/installations-types": "0.3.4", - "@firebase/util": "0.3.2", - "idb": "3.0.2", - "tslib": "^1.11.1" - } - }, - "@firebase/installations-types": { - "version": "0.3.4", - "resolved": "https://registry.npmjs.org/@firebase/installations-types/-/installations-types-0.3.4.tgz", - "integrity": "sha512-RfePJFovmdIXb6rYwtngyxuEcWnOrzdZd9m7xAW0gRxDIjBT20n3BOhjpmgRWXo/DAxRmS7bRjWAyTHY9cqN7Q==" - }, - "@firebase/logger": { - "version": "0.2.6", - "resolved": "https://registry.npmjs.org/@firebase/logger/-/logger-0.2.6.tgz", - "integrity": "sha512-KIxcUvW/cRGWlzK9Vd2KB864HlUnCfdTH0taHE0sXW5Xl7+W68suaeau1oKNEqmc3l45azkd4NzXTCWZRZdXrw==" - }, - "@firebase/messaging": { - "version": "0.7.1", - "resolved": "https://registry.npmjs.org/@firebase/messaging/-/messaging-0.7.1.tgz", - "integrity": "sha512-iev/ST9v0xd/8YpGYrZtDcqdD9J6ZWzSuceRn8EKy5vIgQvW/rk2eTQc8axzvDpQ36ZfphMYuhW6XuNrR3Pd2Q==", - "requires": { - "@firebase/component": "0.1.19", - "@firebase/installations": "0.4.17", - "@firebase/messaging-types": "0.5.0", - "@firebase/util": "0.3.2", - "idb": "3.0.2", - "tslib": "^1.11.1" - } - }, - "@firebase/messaging-types": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/@firebase/messaging-types/-/messaging-types-0.5.0.tgz", - "integrity": "sha512-QaaBswrU6umJYb/ZYvjR5JDSslCGOH6D9P136PhabFAHLTR4TWjsaACvbBXuvwrfCXu10DtcjMxqfhdNIB1Xfg==" - }, - "@firebase/performance": { - "version": "0.4.2", - "resolved": "https://registry.npmjs.org/@firebase/performance/-/performance-0.4.2.tgz", - "integrity": "sha512-irHTCVWJ/sxJo0QHg+yQifBeVu8ZJPihiTqYzBUz/0AGc51YSt49FZwqSfknvCN2+OfHaazz/ARVBn87g7Ex8g==", - "requires": { - "@firebase/component": "0.1.19", - "@firebase/installations": "0.4.17", - "@firebase/logger": "0.2.6", - "@firebase/performance-types": "0.0.13", - "@firebase/util": "0.3.2", - "tslib": "^1.11.1" - } - }, - "@firebase/performance-types": { - "version": "0.0.13", - "resolved": "https://registry.npmjs.org/@firebase/performance-types/-/performance-types-0.0.13.tgz", - "integrity": "sha512-6fZfIGjQpwo9S5OzMpPyqgYAUZcFzZxHFqOyNtorDIgNXq33nlldTL/vtaUZA8iT9TT5cJlCrF/jthKU7X21EA==" - }, - "@firebase/polyfill": { - "version": "0.3.36", - "resolved": "https://registry.npmjs.org/@firebase/polyfill/-/polyfill-0.3.36.tgz", - "integrity": "sha512-zMM9oSJgY6cT2jx3Ce9LYqb0eIpDE52meIzd/oe/y70F+v9u1LDqk5kUF5mf16zovGBWMNFmgzlsh6Wj0OsFtg==", - "requires": { - "core-js": "3.6.5", - "promise-polyfill": "8.1.3", - "whatwg-fetch": "2.0.4" - }, - "dependencies": { - "whatwg-fetch": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-2.0.4.tgz", - "integrity": "sha512-dcQ1GWpOD/eEQ97k66aiEVpNnapVj90/+R+SXTPYGHpYBBypfKJEQjLrvMZ7YXbKm21gXd4NcuxUTjiv1YtLng==" - } - } - }, - "@firebase/remote-config": { - "version": "0.1.28", - "resolved": "https://registry.npmjs.org/@firebase/remote-config/-/remote-config-0.1.28.tgz", - "integrity": "sha512-4zSdyxpt94jAnFhO8toNjG8oMKBD+xTuBIcK+Nw8BdQWeJhEamgXlupdBARUk1uf3AvYICngHH32+Si/dMVTbw==", - "requires": { - "@firebase/component": "0.1.19", - "@firebase/installations": "0.4.17", - "@firebase/logger": "0.2.6", - "@firebase/remote-config-types": "0.1.9", - "@firebase/util": "0.3.2", - "tslib": "^1.11.1" - } - }, - "@firebase/remote-config-types": { - "version": "0.1.9", - "resolved": "https://registry.npmjs.org/@firebase/remote-config-types/-/remote-config-types-0.1.9.tgz", - "integrity": "sha512-G96qnF3RYGbZsTRut7NBX0sxyczxt1uyCgXQuH/eAfUCngxjEGcZQnBdy6mvSdqdJh5mC31rWPO4v9/s7HwtzA==" - }, - "@firebase/storage": { - "version": "0.3.43", - "resolved": "https://registry.npmjs.org/@firebase/storage/-/storage-0.3.43.tgz", - "integrity": "sha512-Jp54jcuyimLxPhZHFVAhNbQmgTu3Sda7vXjXrNpPEhlvvMSq4yuZBR6RrZxe/OrNVprLHh/6lTCjwjOVSo3bWA==", - "requires": { - "@firebase/component": "0.1.19", - "@firebase/storage-types": "0.3.13", - "@firebase/util": "0.3.2", - "tslib": "^1.11.1" - } - }, - "@firebase/storage-types": { - "version": "0.3.13", - "resolved": "https://registry.npmjs.org/@firebase/storage-types/-/storage-types-0.3.13.tgz", - "integrity": "sha512-pL7b8d5kMNCCL0w9hF7pr16POyKkb3imOW7w0qYrhBnbyJTdVxMWZhb0HxCFyQWC0w3EiIFFmxoz8NTFZDEFog==" - }, - "@firebase/util": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/@firebase/util/-/util-0.3.2.tgz", - "integrity": "sha512-Dqs00++c8rwKky6KCKLLY2T1qYO4Q+X5t+lF7DInXDNF4ae1Oau35bkD+OpJ9u7l1pEv7KHowP6CUKuySCOc8g==", - "requires": { - "tslib": "^1.11.1" - } - }, - "@firebase/webchannel-wrapper": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/@firebase/webchannel-wrapper/-/webchannel-wrapper-0.4.0.tgz", - "integrity": "sha512-8cUA/mg0S+BxIZ72TdZRsXKBP5n5uRcE3k29TZhZw6oIiHBt9JA7CTb/4pE1uKtE/q5NeTY2tBDcagoZ+1zjXQ==" - }, - "@grpc/grpc-js": { - "version": "1.6.9", - "resolved": "https://registry.npmjs.org/@grpc/grpc-js/-/grpc-js-1.6.9.tgz", - "integrity": "sha512-01Dy1wqXVsuiMI4m4tDoX+IPYAeNI8EsfNFPqAJBX4OiCSs5VU8Gw0pJq5NhGizH6nKUprmHb/QvxTq3d1xL5g==", - "requires": { - "@grpc/proto-loader": "^0.7.0", - "@types/node": ">=12.12.47" - }, - "dependencies": { - "@grpc/proto-loader": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/@grpc/proto-loader/-/proto-loader-0.7.0.tgz", - "integrity": "sha512-SGPZtVmqOvNfPFOA/nNPn+0Weqa5wubBgQ56+JgTbeLY2VezwtMjwPPFzh0kvQccwWT3a2TXT0ZGK/pJoOTk1A==", - "requires": { - "@types/long": "^4.0.1", - "lodash.camelcase": "^4.3.0", - "long": "^4.0.0", - "protobufjs": "^7.0.0", - "yargs": "^16.2.0" - } - }, - "@types/node": { - "version": "18.7.1", - "resolved": "https://registry.npmjs.org/@types/node/-/node-18.7.1.tgz", - "integrity": "sha512-GKX1Qnqxo4S+Z/+Z8KKPLpH282LD7jLHWJcVryOflnsnH+BtSDfieR6ObwBMwpnNws0bUK8GI7z0unQf9bARNQ==" - }, - "ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==" - }, - "cliui": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", - "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", - "requires": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.0", - "wrap-ansi": "^7.0.0" - } - }, - "string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "requires": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - } - }, - "strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "requires": { - "ansi-regex": "^5.0.1" - } - }, - "wrap-ansi": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", - "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", - "requires": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - } - }, - "y18n": { - "version": "5.0.8", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", - "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==" - }, - "yargs": { - "version": "16.2.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", - "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", - "requires": { - "cliui": "^7.0.2", - "escalade": "^3.1.1", - "get-caller-file": "^2.0.5", - "require-directory": "^2.1.1", - "string-width": "^4.2.0", - "y18n": "^5.0.5", - "yargs-parser": "^20.2.2" - } - }, - "yargs-parser": { - "version": "20.2.9", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", - "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==" - } - } - }, - "@grpc/proto-loader": { - "version": "0.5.6", - "resolved": "https://registry.npmjs.org/@grpc/proto-loader/-/proto-loader-0.5.6.tgz", - "integrity": "sha512-DT14xgw3PSzPxwS13auTEwxhMMOoz33DPUKNtmYK/QYbBSpLXJy78FGGs5yVoxVobEqPm4iW9MOIoz0A3bLTRQ==", - "requires": { - "lodash.camelcase": "^4.3.0", - "protobufjs": "^6.8.6" - }, - "dependencies": { - "@types/node": { - "version": "18.7.1", - "resolved": "https://registry.npmjs.org/@types/node/-/node-18.7.1.tgz", - "integrity": "sha512-GKX1Qnqxo4S+Z/+Z8KKPLpH282LD7jLHWJcVryOflnsnH+BtSDfieR6ObwBMwpnNws0bUK8GI7z0unQf9bARNQ==" - }, - "protobufjs": { - "version": "6.11.3", - "resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-6.11.3.tgz", - "integrity": "sha512-xL96WDdCZYdU7Slin569tFX712BxsxslWwAfAhCYjQKGTq7dAU91Lomy6nLLhh/dyGhk/YH4TwTSRxTzhuHyZg==", - "requires": { - "@protobufjs/aspromise": "^1.1.2", - "@protobufjs/base64": "^1.1.2", - "@protobufjs/codegen": "^2.0.4", - "@protobufjs/eventemitter": "^1.1.0", - "@protobufjs/fetch": "^1.1.0", - "@protobufjs/float": "^1.0.2", - "@protobufjs/inquire": "^1.1.0", - "@protobufjs/path": "^1.1.2", - "@protobufjs/pool": "^1.1.0", - "@protobufjs/utf8": "^1.1.0", - "@types/long": "^4.0.1", - "@types/node": ">=13.7.0", - "long": "^4.0.0" - } - } - } - }, - "@ledgerhq/devices": { - "version": "5.51.1", - "resolved": "https://registry.npmjs.org/@ledgerhq/devices/-/devices-5.51.1.tgz", - "integrity": "sha512-4w+P0VkbjzEXC7kv8T1GJ/9AVaP9I6uasMZ/JcdwZBS3qwvKo5A5z9uGhP5c7TvItzcmPb44b5Mw2kT+WjUuAA==", - "requires": { - "@ledgerhq/errors": "^5.50.0", - "@ledgerhq/logs": "^5.50.0", - "rxjs": "6", - "semver": "^7.3.5" - } - }, - "@ledgerhq/errors": { - "version": "5.50.0", - "resolved": "https://registry.npmjs.org/@ledgerhq/errors/-/errors-5.50.0.tgz", - "integrity": "sha512-gu6aJ/BHuRlpU7kgVpy2vcYk6atjB4iauP2ymF7Gk0ez0Y/6VSMVSJvubeEQN+IV60+OBK0JgeIZG7OiHaw8ow==" - }, - "@ledgerhq/hw-app-eth": { - "version": "5.11.0", - "resolved": "https://registry.npmjs.org/@ledgerhq/hw-app-eth/-/hw-app-eth-5.11.0.tgz", - "integrity": "sha512-qgpPwZzM8UMHYMC5+9xYV2O+8kgkDAl9+38w9JiBksaGmUFqcS4najsB1nj6AWf2rGEuXdKMb2WEYRskVypJrA==", - "requires": { - "@ledgerhq/errors": "^5.11.0", - "@ledgerhq/hw-transport": "^5.11.0" - } - }, - "@ledgerhq/hw-transport": { - "version": "5.11.0", - "resolved": "https://registry.npmjs.org/@ledgerhq/hw-transport/-/hw-transport-5.11.0.tgz", - "integrity": "sha512-z56iwv0DZZu20T5q9sNMHFQNVuRKYqzCuNFhY9woWSpmOQkyVHCRiEgOQbN5h6kVri6fkfPkDzqqcsYjJlnT9g==", - "requires": { - "@ledgerhq/devices": "^5.11.0", - "@ledgerhq/errors": "^5.11.0", - "events": "^3.1.0" - } - }, - "@ledgerhq/hw-transport-node-hid": { - "version": "5.11.0", - "resolved": "https://registry.npmjs.org/@ledgerhq/hw-transport-node-hid/-/hw-transport-node-hid-5.11.0.tgz", - "integrity": "sha512-J/hP3IqcgZn/sTGblELkwZcH68Gbv3ZeaRWdhei6K2dAuxae4dxoVUf6PoOcupEOcXT5XzJBNMc5800AwFeOgg==", - "requires": { - "@ledgerhq/devices": "^5.11.0", - "@ledgerhq/errors": "^5.11.0", - "@ledgerhq/hw-transport": "^5.11.0", - "@ledgerhq/hw-transport-node-hid-noevents": "^5.11.0", - "@ledgerhq/logs": "^5.11.0", - "lodash": "^4.17.15", - "node-hid": "^1.2.0", - "usb": "^1.6.0" - } - }, - "@ledgerhq/hw-transport-node-hid-noevents": { - "version": "5.51.1", - "resolved": "https://registry.npmjs.org/@ledgerhq/hw-transport-node-hid-noevents/-/hw-transport-node-hid-noevents-5.51.1.tgz", - "integrity": "sha512-9wFf1L8ZQplF7XOY2sQGEeOhpmBRzrn+4X43kghZ7FBDoltrcK+s/D7S+7ffg3j2OySyP6vIIIgloXylao5Scg==", - "requires": { - "@ledgerhq/devices": "^5.51.1", - "@ledgerhq/errors": "^5.50.0", - "@ledgerhq/hw-transport": "^5.51.1", - "@ledgerhq/logs": "^5.50.0", - "node-hid": "2.1.1" - }, - "dependencies": { - "@ledgerhq/hw-transport": { - "version": "5.51.1", - "resolved": "https://registry.npmjs.org/@ledgerhq/hw-transport/-/hw-transport-5.51.1.tgz", - "integrity": "sha512-6wDYdbWrw9VwHIcoDnqWBaDFyviyjZWv6H9vz9Vyhe4Qd7TIFmbTl/eWs6hZvtZBza9K8y7zD8ChHwRI4s9tSw==", - "requires": { - "@ledgerhq/devices": "^5.51.1", - "@ledgerhq/errors": "^5.50.0", - "events": "^3.3.0" - } - }, - "decompress-response": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-4.2.1.tgz", - "integrity": "sha512-jOSne2qbyE+/r8G1VU+G/82LBs2Fs4LAsTiLSHOCOMZQl2OKZ6i8i4IyHemTe+/yIXOtTcRQMzPcgyhoFlqPkw==", - "requires": { - "mimic-response": "^2.0.0" - } - }, - "detect-libc": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-1.0.3.tgz", - "integrity": "sha512-pGjwhsmsp4kL2RTz08wcOlGN83otlqHeD/Z5T8GXZB+/YcpQ/dgo+lbU8ZsGxV0HIvqqxo9l7mqYwyYMD9bKDg==" - }, - "mimic-response": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-2.1.0.tgz", - "integrity": "sha512-wXqjST+SLt7R009ySCglWBCFpjUygmCIfD790/kVbiGmUgfYGuB14PiTd5DwVxSV4NcYHjzMkoj5LjQZwTQLEA==" - }, - "node-abi": { - "version": "2.30.1", - "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-2.30.1.tgz", - "integrity": "sha512-/2D0wOQPgaUWzVSVgRMx+trKJRC2UG4SUc4oCJoXx9Uxjtp0Vy3/kt7zcbxHF8+Z/pK3UloLWzBISg72brfy1w==", - "requires": { - "semver": "^5.4.1" - } - }, - "node-addon-api": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-3.2.1.tgz", - "integrity": "sha512-mmcei9JghVNDYydghQmeDX8KoAm0FAiYyIcUt/N4nhyAipB17pllZQDOJD2fotxABnt4Mdz+dKTO7eftLg4d0A==" - }, - "node-hid": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/node-hid/-/node-hid-2.1.1.tgz", - "integrity": "sha512-Skzhqow7hyLZU93eIPthM9yjot9lszg9xrKxESleEs05V2NcbUptZc5HFqzjOkSmL0sFlZFr3kmvaYebx06wrw==", - "requires": { - "bindings": "^1.5.0", - "node-addon-api": "^3.0.2", - "prebuild-install": "^6.0.0" - } - }, - "prebuild-install": { - "version": "6.1.4", - "resolved": "https://registry.npmjs.org/prebuild-install/-/prebuild-install-6.1.4.tgz", - "integrity": "sha512-Z4vpywnK1lBg+zdPCVCsKq0xO66eEV9rWo2zrROGGiRS4JtueBOdlB1FnY8lcy7JsUud/Q3ijUxyWN26Ika0vQ==", - "requires": { - "detect-libc": "^1.0.3", - "expand-template": "^2.0.3", - "github-from-package": "0.0.0", - "minimist": "^1.2.3", - "mkdirp-classic": "^0.5.3", - "napi-build-utils": "^1.0.1", - "node-abi": "^2.21.0", - "npmlog": "^4.0.1", - "pump": "^3.0.0", - "rc": "^1.2.7", - "simple-get": "^3.0.3", - "tar-fs": "^2.0.0", - "tunnel-agent": "^0.6.0" - } - }, - "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" - }, - "simple-get": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/simple-get/-/simple-get-3.1.1.tgz", - "integrity": "sha512-CQ5LTKGfCpvE1K0n2us+kuMPbk/q0EKl82s4aheV9oXjFEz6W/Y7oQFVJuU6QG77hRT4Ghb5RURteF5vnWjupA==", - "requires": { - "decompress-response": "^4.2.0", - "once": "^1.3.1", - "simple-concat": "^1.0.0" - } - } - } - }, - "@ledgerhq/logs": { - "version": "5.50.0", - "resolved": "https://registry.npmjs.org/@ledgerhq/logs/-/logs-5.50.0.tgz", - "integrity": "sha512-swKHYCOZUGyVt4ge0u8a7AwNcA//h4nx5wIi0sruGye1IJ5Cva0GyK9L2/WdX+kWVTKp92ZiEo1df31lrWGPgA==" - }, - "@nodelib/fs.scandir": { - "version": "2.1.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", - "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", - "requires": { - "@nodelib/fs.stat": "2.0.5", - "run-parallel": "^1.1.9" - } - }, - "@nodelib/fs.stat": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", - "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==" - }, - "@nodelib/fs.walk": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", - "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", - "requires": { - "@nodelib/fs.scandir": "2.1.5", - "fastq": "^1.6.0" - } - }, - "@oclif/color": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/@oclif/color/-/color-0.1.2.tgz", - "integrity": "sha512-M9o+DOrb8l603qvgz1FogJBUGLqcMFL1aFg2ZEL0FbXJofiNTLOWIeB4faeZTLwE6dt0xH9GpCVpzksMMzGbmA==", - "requires": { - "ansi-styles": "^3.2.1", - "chalk": "^3.0.0", - "strip-ansi": "^5.2.0", - "supports-color": "^5.4.0", - "tslib": "^1" - }, - "dependencies": { - "ansi-regex": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz", - "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==" - }, - "ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "requires": { - "color-convert": "^1.9.0" - } - }, - "chalk": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", - "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "requires": { - "color-convert": "^2.0.1" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" - }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "requires": { - "has-flag": "^4.0.0" - } - } - } - }, - "color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "requires": { - "color-name": "1.1.3" - } - }, - "color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==" - }, - "strip-ansi": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", - "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", - "requires": { - "ansi-regex": "^4.1.0" - } - }, - "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "requires": { - "has-flag": "^3.0.0" - }, - "dependencies": { - "has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==" - } - } - } - } - }, - "@oclif/command": { - "version": "1.8.16", - "resolved": "https://registry.npmjs.org/@oclif/command/-/command-1.8.16.tgz", - "integrity": "sha512-rmVKYEsKzurfRU0xJz+iHelbi1LGlihIWZ7Qvmb/CBz1EkhL7nOkW4SVXmG2dA5Ce0si2gr88i6q4eBOMRNJ1w==", - "requires": { - "@oclif/config": "^1.18.2", - "@oclif/errors": "^1.3.5", - "@oclif/help": "^1.0.1", - "@oclif/parser": "^3.8.6", - "debug": "^4.1.1", - "semver": "^7.3.2" - } - }, - "@oclif/config": { - "version": "1.18.3", - "resolved": "https://registry.npmjs.org/@oclif/config/-/config-1.18.3.tgz", - "integrity": "sha512-sBpko86IrTscc39EvHUhL+c++81BVTsIZ3ETu/vG+cCdi0N6vb2DoahR67A9FI2CGnxRRHjnTfa3m6LulwNATA==", - "requires": { - "@oclif/errors": "^1.3.5", - "@oclif/parser": "^3.8.0", - "debug": "^4.1.1", - "globby": "^11.0.1", - "is-wsl": "^2.1.1", - "tslib": "^2.3.1" - }, - "dependencies": { - "globby": { - "version": "11.1.0", - "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", - "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", - "requires": { - "array-union": "^2.1.0", - "dir-glob": "^3.0.1", - "fast-glob": "^3.2.9", - "ignore": "^5.2.0", - "merge2": "^1.4.1", - "slash": "^3.0.0" - } - }, - "tslib": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz", - "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==" - } - } - }, - "@oclif/errors": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/@oclif/errors/-/errors-1.3.5.tgz", - "integrity": "sha512-OivucXPH/eLLlOT7FkCMoZXiaVYf8I/w1eTAM1+gKzfhALwWTusxEx7wBmW0uzvkSg/9ovWLycPaBgJbM3LOCQ==", - "requires": { - "clean-stack": "^3.0.0", - "fs-extra": "^8.1", - "indent-string": "^4.0.0", - "strip-ansi": "^6.0.0", - "wrap-ansi": "^7.0.0" - }, - "dependencies": { - "ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==" - }, - "string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "requires": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - } - }, - "strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "requires": { - "ansi-regex": "^5.0.1" - } - }, - "wrap-ansi": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", - "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", - "requires": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - } - } - } - }, - "@oclif/help": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@oclif/help/-/help-1.0.1.tgz", - "integrity": "sha512-8rsl4RHL5+vBUAKBL6PFI3mj58hjPCp2VYyXD4TAa7IMStikFfOH2gtWmqLzIlxAED2EpD0dfYwo9JJxYsH7Aw==", - "requires": { - "@oclif/config": "1.18.2", - "@oclif/errors": "1.3.5", - "chalk": "^4.1.2", - "indent-string": "^4.0.0", - "lodash": "^4.17.21", - "string-width": "^4.2.0", - "strip-ansi": "^6.0.0", - "widest-line": "^3.1.0", - "wrap-ansi": "^6.2.0" - }, - "dependencies": { - "@oclif/config": { - "version": "1.18.2", - "resolved": "https://registry.npmjs.org/@oclif/config/-/config-1.18.2.tgz", - "integrity": "sha512-cE3qfHWv8hGRCP31j7fIS7BfCflm/BNZ2HNqHexH+fDrdF2f1D5S8VmXWLC77ffv3oDvWyvE9AZeR0RfmHCCaA==", - "requires": { - "@oclif/errors": "^1.3.3", - "@oclif/parser": "^3.8.0", - "debug": "^4.1.1", - "globby": "^11.0.1", - "is-wsl": "^2.1.1", - "tslib": "^2.0.0" - } - }, - "ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==" - }, - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "globby": { - "version": "11.1.0", - "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", - "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", - "requires": { - "array-union": "^2.1.0", - "dir-glob": "^3.0.1", - "fast-glob": "^3.2.9", - "ignore": "^5.2.0", - "merge2": "^1.4.1", - "slash": "^3.0.0" - } - }, - "string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "requires": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - } - }, - "strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "requires": { - "ansi-regex": "^5.0.1" - } - }, - "tslib": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz", - "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==" - }, - "widest-line": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-3.1.0.tgz", - "integrity": "sha512-NsmoXalsWVDMGupxZ5R08ka9flZjjiLvHVAWYOKtiKM8ujtZWr9cRffak+uSE48+Ob8ObalXpwyeUiyDD6QFgg==", - "requires": { - "string-width": "^4.0.0" - } - }, - "wrap-ansi": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", - "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", - "requires": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - } - } - } - }, - "@oclif/linewrap": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@oclif/linewrap/-/linewrap-1.0.0.tgz", - "integrity": "sha512-Ups2dShK52xXa8w6iBWLgcjPJWjais6KPJQq3gQ/88AY6BXoTX+MIGFPrWQO1KLMiQfoTpcLnUwloN4brrVUHw==" - }, - "@oclif/parser": { - "version": "3.8.7", - "resolved": "https://registry.npmjs.org/@oclif/parser/-/parser-3.8.7.tgz", - "integrity": "sha512-b11xBmIUK+LuuwVGJpFs4LwQN2xj2cBWj2c4z1FtiXGrJ85h9xV6q+k136Hw0tGg1jQoRXuvuBnqQ7es7vO9/Q==", - "requires": { - "@oclif/errors": "^1.3.5", - "@oclif/linewrap": "^1.0.0", - "chalk": "^4.1.0", - "tslib": "^2.3.1" - }, - "dependencies": { - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "tslib": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz", - "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==" - } - } - }, - "@oclif/plugin-autocomplete": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/@oclif/plugin-autocomplete/-/plugin-autocomplete-0.1.5.tgz", - "integrity": "sha512-Afchpdd8FNfx9GaU/1D9IzyfiXvjfGybgzQ6G4GTFvPO0/hLdkXX3YyYq+SnxE6/bCrhg4pleiB+GuJACmmkEA==", - "requires": { - "@oclif/command": "^1.4.31", - "@oclif/config": "^1.6.22", - "chalk": "^2.4.1", - "cli-ux": "^4.4.0", - "debug": "^3.1.0", - "fs-extra": "^6.0.1", - "moment": "^2.22.1" - }, - "dependencies": { - "ansi-escapes": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.2.0.tgz", - "integrity": "sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ==" - }, - "ansi-regex": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz", - "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==" - }, - "ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "requires": { - "color-convert": "^1.9.0" - } - }, - "clean-stack": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", - "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==" - }, - "cli-ux": { - "version": "4.9.3", - "resolved": "https://registry.npmjs.org/cli-ux/-/cli-ux-4.9.3.tgz", - "integrity": "sha512-/1owvF0SZ5Gn54cgrikJ0QskgTzeg30HGjkmjFoaHDJzAqFpuX1DBpFR8aLvsE1J5s9MgeYRENQK4BFwOag5VA==", - "requires": { - "@oclif/errors": "^1.2.2", - "@oclif/linewrap": "^1.0.0", - "@oclif/screen": "^1.0.3", - "ansi-escapes": "^3.1.0", - "ansi-styles": "^3.2.1", - "cardinal": "^2.1.1", - "chalk": "^2.4.1", - "clean-stack": "^2.0.0", - "extract-stack": "^1.0.0", - "fs-extra": "^7.0.0", - "hyperlinker": "^1.0.0", - "indent-string": "^3.2.0", - "is-wsl": "^1.1.0", - "lodash": "^4.17.11", - "password-prompt": "^1.0.7", - "semver": "^5.6.0", - "strip-ansi": "^5.0.0", - "supports-color": "^5.5.0", - "supports-hyperlinks": "^1.0.1", - "treeify": "^1.1.0", - "tslib": "^1.9.3" - }, - "dependencies": { - "fs-extra": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-7.0.1.tgz", - "integrity": "sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==", - "requires": { - "graceful-fs": "^4.1.2", - "jsonfile": "^4.0.0", - "universalify": "^0.1.0" - } - } - } - }, - "color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "requires": { - "color-name": "1.1.3" - } - }, - "color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==" - }, - "debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", - "requires": { - "ms": "^2.1.1" - } - }, - "fs-extra": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-6.0.1.tgz", - "integrity": "sha512-GnyIkKhhzXZUWFCaJzvyDLEEgDkPfb4/TPvJCJVuS8MWZgoSsErf++QpiAlDnKFcqhRlm+tIOcencCjyJE6ZCA==", - "requires": { - "graceful-fs": "^4.1.2", - "jsonfile": "^4.0.0", - "universalify": "^0.1.0" - } - }, - "has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==" - }, - "indent-string": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-3.2.0.tgz", - "integrity": "sha512-BYqTHXTGUIvg7t1r4sJNKcbDZkL92nkXA8YtRpbjFHRHGDL/NtUeiBJMeE60kIFN/Mg8ESaWQvftaYMGJzQZCQ==" - }, - "is-wsl": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz", - "integrity": "sha512-gfygJYZ2gLTDlmbWMI0CE2MwnFzSN/2SZfkMlItC4K/JBlsWVDB0bO6XhqcY13YXE7iMcAJnzTCJjPiTeJJ0Mw==" - }, - "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" - }, - "strip-ansi": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", - "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", - "requires": { - "ansi-regex": "^4.1.0" - } - }, - "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "requires": { - "has-flag": "^3.0.0" - } - } - } - }, - "@oclif/plugin-commands": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/@oclif/plugin-commands/-/plugin-commands-1.3.0.tgz", - "integrity": "sha512-Qx9gJ7/aPBgo+Q/DHmGcWyxn2/0bjqmCwt/nO0lWuTZQIH3ZTqclTm68TMZLS4QnQyDGeeYK0GqZ5qJlrXD+SQ==", - "requires": { - "@oclif/command": "^1.5.4", - "@oclif/config": "^1.8.7", - "cli-ux": "^5.4.5", - "lodash": "^4.17.11" - } - }, - "@oclif/plugin-help": { - "version": "1.2.11", - "resolved": "https://registry.npmjs.org/@oclif/plugin-help/-/plugin-help-1.2.11.tgz", - "integrity": "sha512-tuzhvxxRtfLnWa96klngXBi5IwHt9S/twedCbQhl9dYIKTFMHI1BcOQcPra6ylct+M+b9jhEF5sjWLv78tB6tw==", - "requires": { - "@oclif/command": "^1.4.29", - "chalk": "^2.4.1", - "indent-string": "^3.2.0", - "lodash.template": "^4.4.0", - "string-width": "^2.1.1", - "widest-line": "^2.0.0", - "wrap-ansi": "^3.0.1" - }, - "dependencies": { - "indent-string": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-3.2.0.tgz", - "integrity": "sha512-BYqTHXTGUIvg7t1r4sJNKcbDZkL92nkXA8YtRpbjFHRHGDL/NtUeiBJMeE60kIFN/Mg8ESaWQvftaYMGJzQZCQ==" - } - } - }, - "@oclif/plugin-not-found": { - "version": "1.2.6", - "resolved": "https://registry.npmjs.org/@oclif/plugin-not-found/-/plugin-not-found-1.2.6.tgz", - "integrity": "sha512-cfkDub79I9EpselfU/W8FTXhslrkOgfqjaa25tyGo99dAX5UVr6BWL2wbUobsU+rUcm4HN3byzdHDcqfu6hoAw==", - "requires": { - "@oclif/color": "^0.1.2", - "@oclif/command": "1.8.11", - "cli-ux": "5.6.6", - "fast-levenshtein": "^3.0.0", - "lodash": "^4.17.21" - }, - "dependencies": { - "@oclif/command": { - "version": "1.8.11", - "resolved": "https://registry.npmjs.org/@oclif/command/-/command-1.8.11.tgz", - "integrity": "sha512-2fGLMvi6J5+oNxTaZfdWPMWY8oW15rYj0V8yLzmZBAEjfzjLqLIzJE9IlNccN1zwRqRHc1bcISSRDdxJ56IS/Q==", - "requires": { - "@oclif/config": "^1.18.2", - "@oclif/errors": "^1.3.5", - "@oclif/parser": "^3.8.6", - "@oclif/plugin-help": "3.2.14", - "debug": "^4.1.1", - "semver": "^7.3.2" - } - }, - "@oclif/plugin-help": { - "version": "3.2.14", - "resolved": "https://registry.npmjs.org/@oclif/plugin-help/-/plugin-help-3.2.14.tgz", - "integrity": "sha512-NP5qmE2YfcW3MmXjcrxiqKe9Hf3G0uK/qNc0zAMYKU4crFyIsWj7dBfQVFZSb28YXGioOOpjMzG1I7VMxKF38Q==", - "requires": { - "@oclif/command": "^1.8.9", - "@oclif/config": "^1.18.2", - "@oclif/errors": "^1.3.5", - "chalk": "^4.1.2", - "indent-string": "^4.0.0", - "lodash": "^4.17.21", - "string-width": "^4.2.0", - "strip-ansi": "^6.0.0", - "widest-line": "^3.1.0", - "wrap-ansi": "^6.2.0" - } - }, - "ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==" - }, - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "cli-ux": { - "version": "5.6.6", - "resolved": "https://registry.npmjs.org/cli-ux/-/cli-ux-5.6.6.tgz", - "integrity": "sha512-4wUB34zoFklcZV0z5YiOM5IqVMMt9c3TK3QYRK3dqyk3XoRC0ybiWDWHfsMDjkKrzsVTw95rXn9NrzSHbae4pg==", - "requires": { - "@oclif/command": "^1.8.9", - "@oclif/errors": "^1.3.5", - "@oclif/linewrap": "^1.0.0", - "@oclif/screen": "^1.0.4", - "ansi-escapes": "^4.3.0", - "ansi-styles": "^4.2.0", - "cardinal": "^2.1.1", - "chalk": "^4.1.0", - "clean-stack": "^3.0.0", - "cli-progress": "^3.4.0", - "extract-stack": "^2.0.0", - "fs-extra": "^8.1", - "hyperlinker": "^1.0.0", - "indent-string": "^4.0.0", - "is-wsl": "^2.2.0", - "js-yaml": "^3.13.1", - "lodash": "^4.17.21", - "natural-orderby": "^2.0.1", - "object-treeify": "^1.1.4", - "password-prompt": "^1.1.2", - "semver": "^7.3.2", - "string-width": "^4.2.0", - "strip-ansi": "^6.0.0", - "supports-color": "^8.1.0", - "supports-hyperlinks": "^2.1.0", - "tslib": "^2.0.0" - }, - "dependencies": { - "supports-color": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", - "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", - "requires": { - "has-flag": "^4.0.0" - } - } - } - }, - "extract-stack": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/extract-stack/-/extract-stack-2.0.0.tgz", - "integrity": "sha512-AEo4zm+TenK7zQorGK1f9mJ8L14hnTDi2ZQPR+Mub1NX8zimka1mXpV5LpH8x9HoUmFSHZCfLHqWvp0Y4FxxzQ==" - }, - "string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "requires": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - } - }, - "strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "requires": { - "ansi-regex": "^5.0.1" - } - }, - "supports-hyperlinks": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-2.2.0.tgz", - "integrity": "sha512-6sXEzV5+I5j8Bmq9/vUphGRM/RJNT9SCURJLjwfOg51heRtguGWDzcaBlgAzKhQa0EVNpPEKzQuBwZ8S8WaCeQ==", - "requires": { - "has-flag": "^4.0.0", - "supports-color": "^7.0.0" - } - }, - "tslib": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz", - "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==" - }, - "widest-line": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-3.1.0.tgz", - "integrity": "sha512-NsmoXalsWVDMGupxZ5R08ka9flZjjiLvHVAWYOKtiKM8ujtZWr9cRffak+uSE48+Ob8ObalXpwyeUiyDD6QFgg==", - "requires": { - "string-width": "^4.0.0" - } - }, - "wrap-ansi": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", - "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", - "requires": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - } - } - } - }, - "@oclif/plugin-plugins": { - "version": "1.10.11", - "resolved": "https://registry.npmjs.org/@oclif/plugin-plugins/-/plugin-plugins-1.10.11.tgz", - "integrity": "sha512-C9eHF10UkxwoAqRYrPW51YDuDOpDXASX4BEA++kTVcqhMQTKBQalmEJKw+gVnLl1YNmapse1ZSAcU1TrXjqykg==", - "requires": { - "@oclif/color": "^0.1.2", - "@oclif/command": "^1.8.15", - "@oclif/errors": "^1.3.5", - "chalk": "^4.1.2", - "cli-ux": "^5.6.7", - "debug": "^4.3.3", - "fs-extra": "^9.0", - "http-call": "^5.3.0", - "load-json-file": "^5.3.0", - "npm-run-path": "^4.0.1", - "semver": "^7.3.2", - "tslib": "^2.0.0", - "yarn": "^1.21.1" - }, - "dependencies": { - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "fs-extra": { - "version": "9.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", - "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", - "requires": { - "at-least-node": "^1.0.0", - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" - } - }, - "jsonfile": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", - "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", - "requires": { - "graceful-fs": "^4.1.6", - "universalify": "^2.0.0" - } - }, - "tslib": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz", - "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==" - }, - "universalify": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", - "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==" - } - } - }, - "@oclif/plugin-warn-if-update-available": { - "version": "1.7.3", - "resolved": "https://registry.npmjs.org/@oclif/plugin-warn-if-update-available/-/plugin-warn-if-update-available-1.7.3.tgz", - "integrity": "sha512-q8q0NIneVCwIAJzglUMsl3EbXR/H5aPDk6g+qs7uF0tToxe07SWSONoNaKPzViwRWvYChMPjL77/rXyW1HVn4A==", - "requires": { - "@oclif/command": "^1.8.6", - "@oclif/config": "^1.17.1", - "@oclif/errors": "^1.3.5", - "chalk": "^4.1.0", - "debug": "^4.1.0", - "fs-extra": "^9.0.1", - "http-call": "^5.2.2", - "lodash": "^4.17.21", - "semver": "^7.3.2" - }, - "dependencies": { - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "fs-extra": { - "version": "9.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", - "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", - "requires": { - "at-least-node": "^1.0.0", - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" - } - }, - "jsonfile": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", - "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", - "requires": { - "graceful-fs": "^4.1.6", - "universalify": "^2.0.0" - } - }, - "universalify": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", - "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==" - } - } - }, - "@oclif/screen": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/@oclif/screen/-/screen-1.0.4.tgz", - "integrity": "sha512-60CHpq+eqnTxLZQ4PGHYNwUX572hgpMHGPtTWMjdTMsAvlm69lZV/4ly6O3sAYkomo4NggGcomrDpBe34rxUqw==" - }, - "@opentelemetry/api": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/@opentelemetry/api/-/api-1.4.1.tgz", - "integrity": "sha512-O2yRJce1GOc6PAy3QxFM4NzFiWzvScDC1/5ihYBL6BUEVdq0XMWN01sppE+H6bBXbaFYipjwFLEWLg5PaSOThA==" - }, - "@protobufjs/aspromise": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@protobufjs/aspromise/-/aspromise-1.1.2.tgz", - "integrity": "sha512-j+gKExEuLmKwvz3OgROXtrJ2UG2x8Ch2YZUxahh+s1F2HZ+wAceUNLkvy6zKCPVRkU++ZWQrdxsUeQXmcg4uoQ==" - }, - "@protobufjs/base64": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@protobufjs/base64/-/base64-1.1.2.tgz", - "integrity": "sha512-AZkcAA5vnN/v4PDqKyMR5lx7hZttPDgClv83E//FMNhR2TMcLUhfRUBHCmSl0oi9zMgDDqRUJkSxO3wm85+XLg==" - }, - "@protobufjs/codegen": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/@protobufjs/codegen/-/codegen-2.0.4.tgz", - "integrity": "sha512-YyFaikqM5sH0ziFZCN3xDC7zeGaB/d0IUb9CATugHWbd1FRFwWwt4ld4OYMPWu5a3Xe01mGAULCdqhMlPl29Jg==" - }, - "@protobufjs/eventemitter": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@protobufjs/eventemitter/-/eventemitter-1.1.0.tgz", - "integrity": "sha512-j9ednRT81vYJ9OfVuXG6ERSTdEL1xVsNgqpkxMsbIabzSo3goCjDIveeGv5d03om39ML71RdmrGNjG5SReBP/Q==" - }, - "@protobufjs/fetch": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@protobufjs/fetch/-/fetch-1.1.0.tgz", - "integrity": "sha512-lljVXpqXebpsijW71PZaCYeIcE5on1w5DlQy5WH6GLbFryLUrBD4932W/E2BSpfRJWseIL4v/KPgBFxDOIdKpQ==", - "requires": { - "@protobufjs/aspromise": "^1.1.1", - "@protobufjs/inquire": "^1.1.0" - } - }, - "@protobufjs/float": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@protobufjs/float/-/float-1.0.2.tgz", - "integrity": "sha512-Ddb+kVXlXst9d+R9PfTIxh1EdNkgoRe5tOX6t01f1lYWOvJnSPDBlG241QLzcyPdoNTsblLUdujGSE4RzrTZGQ==" - }, - "@protobufjs/inquire": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@protobufjs/inquire/-/inquire-1.1.0.tgz", - "integrity": "sha512-kdSefcPdruJiFMVSbn801t4vFK7KB/5gd2fYvrxhuJYg8ILrmn9SKSX2tZdV6V+ksulWqS7aXjBcRXl3wHoD9Q==" - }, - "@protobufjs/path": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@protobufjs/path/-/path-1.1.2.tgz", - "integrity": "sha512-6JOcJ5Tm08dOHAbdR3GrvP+yUUfkjG5ePsHYczMFLq3ZmMkAD98cDgcT2iA1lJ9NVwFd4tH/iSSoe44YWkltEA==" - }, - "@protobufjs/pool": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@protobufjs/pool/-/pool-1.1.0.tgz", - "integrity": "sha512-0kELaGSIDBKvcgS4zkjz1PeddatrjYcmMWOlAuAPwAeccUrPHdUqo/J6LiymHHEiJT5NrF1UVwxY14f+fy4WQw==" - }, - "@protobufjs/utf8": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@protobufjs/utf8/-/utf8-1.1.0.tgz", - "integrity": "sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw==" - }, - "@sindresorhus/is": { - "version": "0.14.0", - "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-0.14.0.tgz", - "integrity": "sha512-9NET910DNaIPngYnLLPeg+Ogzqsi9uM4mSboU5y6p8S5DzMTVEsJZrawi+BoDNUVBa2DhJqQYUFvMDfgU062LQ==" - }, - "@stablelib/binary": { - "version": "0.7.2", - "resolved": "https://registry.npmjs.org/@stablelib/binary/-/binary-0.7.2.tgz", - "integrity": "sha512-J7iGppeKR112ICTZTAoALcT3yBpTrd2Z/F0wwiOUZPVPTDFTQFWHZZdYzfal9+mY1uMUPRSEnNmDuXRZbtE8Xg==", - "requires": { - "@stablelib/int": "^0.5.0" - } - }, - "@stablelib/blake2s": { - "version": "0.10.4", - "resolved": "https://registry.npmjs.org/@stablelib/blake2s/-/blake2s-0.10.4.tgz", - "integrity": "sha512-IasdklC7YfXXLmVbnsxqmd66+Ki+Ysbp0BtcrNxAtrGx/HRGjkUZbSTbEa7HxFhBWIstJRcE5ExgY+RCqAiULQ==", - "requires": { - "@stablelib/binary": "^0.7.2", - "@stablelib/hash": "^0.5.0", - "@stablelib/wipe": "^0.5.0" - } - }, - "@stablelib/blake2xs": { - "version": "0.10.4", - "resolved": "https://registry.npmjs.org/@stablelib/blake2xs/-/blake2xs-0.10.4.tgz", - "integrity": "sha512-1N0S4cruso/StV9TmoujPGj3RU0Cy42wlZneBWLWby7m2ssnY57l/CsYQSm03TshOoYss4hqc5kwSy5pmWAdUA==", - "requires": { - "@stablelib/blake2s": "^0.10.4", - "@stablelib/hash": "^0.5.0", - "@stablelib/wipe": "^0.5.0" - } - }, - "@stablelib/hash": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/@stablelib/hash/-/hash-0.5.0.tgz", - "integrity": "sha512-rlNEBTskjKVl9f4rpRgM2GV3IrZWfNJFY5Y/2tmQtA2ozEkPLoUp9J/uJnBRnOpCsuflPW2z+pwqPbEYOPCHwQ==" - }, - "@stablelib/int": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/@stablelib/int/-/int-0.5.0.tgz", - "integrity": "sha512-cuaPoxm3K14LiEICiA3iz0aeGurg75v+haZMV+xloVTw3CT25oMRJgQ6VxZ2p2cHy4kjhVI68kX4oaYrhnTm+g==" - }, - "@stablelib/wipe": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/@stablelib/wipe/-/wipe-0.5.0.tgz", - "integrity": "sha512-SifvRV0rTTFR1qEF6G1hondGZyrmiM1laR8PPrO6TZwQG03hJduVbUX8uQk+Q6FdkND2Z9B8uLPyUAquQIk3iA==" - }, - "@szmarczak/http-timer": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-1.1.2.tgz", - "integrity": "sha512-XIB2XbzHTN6ieIjfIMV9hlVcfPU26s2vafYWQcZHWXHOxiaRZYEDKEwdl129Zyg50+foYV2jCgtrqSA6qNuNSA==", - "requires": { - "defer-to-connect": "^1.0.1" - } - }, - "@tootallnate/once": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-2.0.0.tgz", - "integrity": "sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==" - }, - "@types/asn1js": { - "version": "0.0.2", - "resolved": "https://registry.npmjs.org/@types/asn1js/-/asn1js-0.0.2.tgz", - "integrity": "sha512-xtLPq140WhPqvDZDpY70rTx4qTezHs+8htbhWQGuevBRQko8FRjFSO5WVTwXOwd3W5tQRxJ7eni30fDUP2q4wQ==", - "requires": { - "@types/pvutils": "*" - } - }, - "@types/bn.js": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/@types/bn.js/-/bn.js-5.1.1.tgz", - "integrity": "sha512-qNrYbZqMx0uJAfKnKclPh+dTwK33KfLHYqtyODwd5HnXOjnkhc4qgn3BrK6RWyGZm5+sIFE7Q7Vz6QQtJB7w7g==", - "requires": { - "@types/node": "*" - } - }, - "@types/command-exists": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@types/command-exists/-/command-exists-1.2.0.tgz", - "integrity": "sha512-ugsxEJfsCuqMLSuCD4PIJkp5Uk2z6TCMRCgYVuhRo5cYQY3+1xXTQkSlPtkpGHuvWMjS2KTeVQXxkXRACMbM6A==" - }, - "@types/country-data": { - "version": "0.0.0", - "resolved": "https://registry.npmjs.org/@types/country-data/-/country-data-0.0.0.tgz", - "integrity": "sha512-lIxCk6G7AwmUagQ4gIQGxUBnvAq664prFD9nSAz6dgd1XmBXBtZABV/op+QsJsIyaP1GZsf/iXhYKHX3azSRCw==" - }, - "@types/debug": { - "version": "4.1.7", - "resolved": "https://registry.npmjs.org/@types/debug/-/debug-4.1.7.tgz", - "integrity": "sha512-9AonUzyTjXXhEOa0DnqpzZi6VHlqKMswga9EXjpXnnqxwLtdvPPtlO8evrI5D9S6asFRCQ6v+wpiUKbw+vKqyg==", - "requires": { - "@types/ms": "*" - } - }, - "@types/elliptic": { - "version": "6.4.14", - "resolved": "https://registry.npmjs.org/@types/elliptic/-/elliptic-6.4.14.tgz", - "integrity": "sha512-z4OBcDAU0GVwDTuwJzQCiL6188QvZMkvoERgcVjq0/mPM8jCfdwZ3x5zQEVoL9WCAru3aG5wl3Z5Ww5wBWn7ZQ==", - "requires": { - "@types/bn.js": "*" - } - }, - "@types/ethereumjs-util": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/@types/ethereumjs-util/-/ethereumjs-util-5.2.0.tgz", - "integrity": "sha512-qwQgQqXXTRv2h2AlJef+tMEszLFkCB9dWnrJYIdAwqjubERXEc/geB+S3apRw0yQyTVnsBf8r6BhlrE8vx+3WQ==", - "requires": { - "@types/bn.js": "*", - "@types/node": "*" - } - }, - "@types/google-libphonenumber": { - "version": "7.4.23", - "resolved": "https://registry.npmjs.org/@types/google-libphonenumber/-/google-libphonenumber-7.4.23.tgz", - "integrity": "sha512-C3ydakLTQa8HxtYf9ge4q6uT9krDX8smSIxmmW3oACFi5g5vv6T068PRExF7UyWbWpuYiDG8Nm24q2X5XhcZWw==" - }, - "@types/inquirer": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/@types/inquirer/-/inquirer-6.5.0.tgz", - "integrity": "sha512-rjaYQ9b9y/VFGOpqBEXRavc3jh0a+e6evAbI31tMda8VlPaSy0AZJfXsvmIe3wklc7W6C3zCSfleuMXR7NOyXw==", - "requires": { - "@types/through": "*", - "rxjs": "^6.4.0" - } - }, - "@types/long": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/@types/long/-/long-4.0.2.tgz", - "integrity": "sha512-MqTGEo5bj5t157U6fA/BiDynNkn0YknVdh48CMPkTSpFTVmvao5UQmm7uEF6xBEo7qIMAlY/JSleYaE6VOdpaA==" - }, - "@types/ms": { - "version": "0.7.31", - "resolved": "https://registry.npmjs.org/@types/ms/-/ms-0.7.31.tgz", - "integrity": "sha512-iiUgKzV9AuaEkZqkOLDIvlQiL6ltuZd9tGcW3gwpnX8JbuiuhFlEGmmFXEXkN50Cvq7Os88IY2v0dkDqXYWVgA==" - }, - "@types/node": { - "version": "10.14.10", - "resolved": "https://registry.npmjs.org/@types/node/-/node-10.14.10.tgz", - "integrity": "sha512-V8wj+w2YMNvGuhgl/MA5fmTxgjmVHVoasfIaxMMZJV6Y8Kk+Ydpi1z2whoShDCJ2BuNVoqH/h1hrygnBxkrw/Q==" - }, - "@types/pbkdf2": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@types/pbkdf2/-/pbkdf2-3.1.0.tgz", - "integrity": "sha512-Cf63Rv7jCQ0LaL8tNXmEyqTHuIJxRdlS5vMh1mj5voN4+QFhVZnlZruezqpWYDiJ8UTzhP0VmeLXCmBk66YrMQ==", - "requires": { - "@types/node": "*" - } - }, - "@types/pvutils": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@types/pvutils/-/pvutils-1.0.1.tgz", - "integrity": "sha512-OwGyloDb4Gz7cKzFt1ZfHkNXbh1gxd5706hPF5ot4cvsa2EfbqY1tz2nWtu6xWDccNSZ16p/pi027gloQu4hsQ==" - }, - "@types/randombytes": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@types/randombytes/-/randombytes-2.0.0.tgz", - "integrity": "sha512-bz8PhAVlwN72vqefzxa14DKNT8jK/mV66CSjwdVQM/k3Th3EPKfUtdMniwZgMedQTFuywAsfjnZsg+pEnltaMA==", - "requires": { - "@types/node": "*" - } - }, - "@types/secp256k1": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/@types/secp256k1/-/secp256k1-4.0.3.tgz", - "integrity": "sha512-Da66lEIFeIz9ltsdMZcpQvmrmmoqrfju8pm1BH8WbYjZSwUgCwXLb9C+9XYogwBITnbsSaMdVPb2ekf7TV+03w==", - "requires": { - "@types/node": "*" - } - }, - "@types/stoppable": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@types/stoppable/-/stoppable-1.1.1.tgz", - "integrity": "sha512-b8N+fCADRIYYrGZOcmOR8ZNBOqhktWTB/bMUl5LvGtT201QKJZOOH5UsFyI3qtteM6ZAJbJqZoBcLqqxKIwjhw==", - "requires": { - "@types/node": "*" - } - }, - "@types/through": { - "version": "0.0.30", - "resolved": "https://registry.npmjs.org/@types/through/-/through-0.0.30.tgz", - "integrity": "sha512-FvnCJljyxhPM3gkRgWmxmDZyAQSiBQQWLI0A0VFL0K7W1oRUrPJSqNO0NvTnLkBcotdlp3lKvaT0JrnyRDkzOg==", - "requires": { - "@types/node": "*" - } - }, - "@types/utf8": { - "version": "2.1.6", - "resolved": "https://registry.npmjs.org/@types/utf8/-/utf8-2.1.6.tgz", - "integrity": "sha512-pRs2gYF5yoKYrgSaira0DJqVg2tFuF+Qjp838xS7K+mJyY2jJzjsrl6y17GbIa4uMRogMbxs+ghNCvKg6XyNrA==" - }, - "accepts": { - "version": "1.3.8", - "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", - "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", - "requires": { - "mime-types": "~2.1.34", - "negotiator": "0.6.3" - } - }, - "agent-base": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", - "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", - "requires": { - "debug": "4" - } - }, - "ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "requires": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - } - }, - "ansi-escapes": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.1.tgz", - "integrity": "sha512-JWF7ocqNrp8u9oqpgV+wH5ftbt+cfvv+PTjOvKLT3AdYly/LmORARfEVT1iyjwN+4MqE5UmVKoAdIBqeoCHgLA==", - "requires": { - "type-fest": "^0.11.0" - } - }, - "ansi-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha512-wFUFA5bg5dviipbQQ32yOQhl6gcJaJXiHE7dvR8VYPG97+J/GNC5FKGepKdEDUFeXRzDxPF1X/Btc8L+v7oqIQ==" - }, - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "requires": { - "color-convert": "^2.0.1" - } - }, - "ansicolors": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/ansicolors/-/ansicolors-0.3.2.tgz", - "integrity": "sha512-QXu7BPrP29VllRxH8GwB7x5iX5qWKAAMLqKQGWTeLWVlNHNOpVMJ91dsxQAIWXpjuW5wqvxu3Jd/nRjrJ+0pqg==" - }, - "aproba": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz", - "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==" - }, - "are-we-there-yet": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.7.tgz", - "integrity": "sha512-nxwy40TuMiUGqMyRHgCSWZ9FM4VAoRP4xUYSTv5ImRog+h9yISPbVH7H8fASCIzYn9wlEv4zvFL7uKDMCFQm3g==", - "requires": { - "delegates": "^1.0.0", - "readable-stream": "^2.0.6" - }, - "dependencies": { - "readable-stream": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" - }, - "string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "requires": { - "safe-buffer": "~5.1.0" - } - } - } - }, - "argparse": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", - "requires": { - "sprintf-js": "~1.0.2" - } - }, - "array-flatten": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", - "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==" - }, - "array-union": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", - "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==" - }, - "asn1": { - "version": "0.2.6", - "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.6.tgz", - "integrity": "sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ==", - "requires": { - "safer-buffer": "~2.1.0" - } - }, - "asn1.js": { - "version": "5.4.1", - "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-5.4.1.tgz", - "integrity": "sha512-+I//4cYPccV8LdmBLiX8CYvf9Sp3vQsrqu2QNXRcrbiWvcx/UdlFiqUJJzxRQxgsZmvhXhn4cSKeSmoFjVdupA==", - "requires": { - "bn.js": "^4.0.0", - "inherits": "^2.0.1", - "minimalistic-assert": "^1.0.0", - "safer-buffer": "^2.1.0" - } - }, - "asn1js": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/asn1js/-/asn1js-2.4.0.tgz", - "integrity": "sha512-PvZC0FMyMut8aOnR2jAEGSkmRtHIUYPe9amUEnGjr9TdnUmsfoOkjrvUkOEU9mzpYBR1HyO9bF+8U1cLTMMHhQ==", - "requires": { - "pvutils": "^1.1.3" - } - }, - "assert-plus": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", - "integrity": "sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw==" - }, - "async": { - "version": "3.2.4", - "resolved": "https://registry.npmjs.org/async/-/async-3.2.4.tgz", - "integrity": "sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ==" - }, - "async-limiter": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.1.tgz", - "integrity": "sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ==" - }, - "asynckit": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==" - }, - "at-least-node": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz", - "integrity": "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==" - }, - "available-typed-arrays": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz", - "integrity": "sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==" - }, - "aws-sign2": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", - "integrity": "sha512-08kcGqnYf/YmjoRhfxyu+CLxBjUtHLXLXX/vUfx9l2LYzG3c1m61nrpyFUZI6zeS+Li/wWMMidD9KgrqtGq3mA==" - }, - "aws4": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.11.0.tgz", - "integrity": "sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA==" - }, - "axios": { - "version": "0.21.4", - "resolved": "https://registry.npmjs.org/axios/-/axios-0.21.4.tgz", - "integrity": "sha512-ut5vewkiu8jjGBdqpM44XxjuCjq9LAKeHVmoVfHVzy8eHgxxq8SbAVQNovDA8mVi05kP0Ea/n/UzcSHcTJQfNg==", - "requires": { - "follow-redirects": "^1.14.0" - } - }, - "balanced-match": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", - "optional": true - }, - "base-x": { - "version": "3.0.9", - "resolved": "https://registry.npmjs.org/base-x/-/base-x-3.0.9.tgz", - "integrity": "sha512-H7JU6iBHTal1gp56aKoaa//YUxEaAOUiydvrV/pILqIHXTtqxSkATOnDA2u+jZ/61sD+L/412+7kzXRtWukhpQ==", - "requires": { - "safe-buffer": "^5.0.1" - } - }, - "base64-js": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", - "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==" - }, - "bcrypt-pbkdf": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", - "integrity": "sha512-qeFIXtP4MSoi6NLqO12WfqARWWuCKi2Rn/9hJLEmtB5yTNr9DqFWkJRCf2qShWzPeAMRnOgCrq0sg/KLv5ES9w==", - "requires": { - "tweetnacl": "^0.14.3" - } - }, - "big-integer": { - "version": "1.6.51", - "resolved": "https://registry.npmjs.org/big-integer/-/big-integer-1.6.51.tgz", - "integrity": "sha512-GPEid2Y9QU1Exl1rpO9B2IPJGHPSupF5GnVIP0blYvNOMer2bTvSWs1jGOUg04hTmu67nmLsQ9TBo1puaotBHg==" - }, - "bigi": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/bigi/-/bigi-1.4.2.tgz", - "integrity": "sha512-ddkU+dFIuEIW8lE7ZwdIAf2UPoM90eaprg5m3YXAVVTmKlqV/9BX4A2M8BOK2yOq6/VgZFVhK6QAxJebhlbhzw==" - }, - "bignumber.js": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/bignumber.js/-/bignumber.js-9.0.0.tgz", - "integrity": "sha512-t/OYhhJ2SD+YGBQcjY8GzzDHEk9f3nerxjtfa6tlMXfe7frs/WozhvCNoGvpM0P3bNf3Gq5ZRMlGr5f3r4/N8A==" - }, - "bindings": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz", - "integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==", - "requires": { - "file-uri-to-path": "1.0.0" - } - }, - "bip32": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/bip32/-/bip32-2.0.5.tgz", - "integrity": "sha512-zVY4VvJV+b2fS0/dcap/5XLlpqtgwyN8oRkuGgAS1uLOeEp0Yo6Tw2yUTozTtlrMJO3G8n4g/KX/XGFHW6Pq3g==", - "requires": { - "@types/node": "10.12.18", - "bs58check": "^2.1.1", - "create-hash": "^1.2.0", - "create-hmac": "^1.1.7", - "tiny-secp256k1": "^1.1.3", - "typeforce": "^1.11.5", - "wif": "^2.0.6" - }, - "dependencies": { - "@types/node": { - "version": "10.12.18", - "resolved": "https://registry.npmjs.org/@types/node/-/node-10.12.18.tgz", - "integrity": "sha512-fh+pAqt4xRzPfqA6eh3Z2y6fyZavRIumvjhaCL753+TVkGKGhpPeyrJG2JftD0T9q4GF00KjefsQ+PQNDdWQaQ==" - } - } - }, - "bip39": { - "version": "git+https://github.com/bitcoinjs/bip39.git#d8ea080a18b40f301d4e2219a2991cd2417e83c2", - "from": "git+https://github.com/bitcoinjs/bip39.git#d8ea080a18b40f301d4e2219a2991cd2417e83c2", - "requires": { - "@types/node": "11.11.6", - "create-hash": "^1.1.0", - "pbkdf2": "^3.0.9", - "randombytes": "^2.0.1" - }, - "dependencies": { - "@types/node": { - "version": "11.11.6", - "resolved": "https://registry.npmjs.org/@types/node/-/node-11.11.6.tgz", - "integrity": "sha512-Exw4yUWMBXM3X+8oqzJNRqZSwUAaS4+7NdvHqQuFi/d+synz++xmX3QIf+BFqneW8N31R8Ky+sikfZUXq07ggQ==" - } - } - }, - "bl": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", - "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", - "requires": { - "buffer": "^5.5.0", - "inherits": "^2.0.4", - "readable-stream": "^3.4.0" - } - }, - "blakejs": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/blakejs/-/blakejs-1.2.1.tgz", - "integrity": "sha512-QXUSXI3QVc/gJME0dBpXrag1kbzOqCjCX8/b54ntNyW6sjtoqxqRk3LTmXzaJoh71zMsDCjM+47jS7XiwN/+fQ==" - }, - "blind-threshold-bls": { - "version": "git+https://github.com/celo-org/blind-threshold-bls-wasm.git#e1e2f8a1ab5154c2f0b1c55cb0d61fbb1d907208", - "from": "git+https://github.com/celo-org/blind-threshold-bls-wasm.git#e1e2f8a" - }, - "bluebird": { - "version": "3.7.2", - "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", - "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==" - }, - "bn.js": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" - }, - "body-parser": { - "version": "1.20.0", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.0.tgz", - "integrity": "sha512-DfJ+q6EPcGKZD1QWUjSpqp+Q7bDQTsQIF4zfUAtZ6qk+H/3/QRhg9CEp39ss+/T2vw0+HaidC0ecJj/DRLIaKg==", - "requires": { - "bytes": "3.1.2", - "content-type": "~1.0.4", - "debug": "2.6.9", - "depd": "2.0.0", - "destroy": "1.2.0", - "http-errors": "2.0.0", - "iconv-lite": "0.4.24", - "on-finished": "2.4.1", - "qs": "6.10.3", - "raw-body": "2.5.1", - "type-is": "~1.6.18", - "unpipe": "1.0.0" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "requires": { - "ms": "2.0.0" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" - } - } - }, - "brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "optional": true, - "requires": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", - "requires": { - "fill-range": "^7.0.1" - } - }, - "brorand": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", - "integrity": "sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w==" - }, - "browserify-aes": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz", - "integrity": "sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==", - "requires": { - "buffer-xor": "^1.0.3", - "cipher-base": "^1.0.0", - "create-hash": "^1.1.0", - "evp_bytestokey": "^1.0.3", - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" - } - }, - "browserify-cipher": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/browserify-cipher/-/browserify-cipher-1.0.1.tgz", - "integrity": "sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w==", - "requires": { - "browserify-aes": "^1.0.4", - "browserify-des": "^1.0.0", - "evp_bytestokey": "^1.0.0" - } - }, - "browserify-des": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/browserify-des/-/browserify-des-1.0.2.tgz", - "integrity": "sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A==", - "requires": { - "cipher-base": "^1.0.1", - "des.js": "^1.0.0", - "inherits": "^2.0.1", - "safe-buffer": "^5.1.2" - } - }, - "browserify-rsa": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.1.0.tgz", - "integrity": "sha512-AdEER0Hkspgno2aR97SAf6vi0y0k8NuOpGnVH3O99rcA5Q6sh8QxcngtHuJ6uXwnfAXNM4Gn1Gb7/MV1+Ymbog==", - "requires": { - "bn.js": "^5.0.0", - "randombytes": "^2.0.1" - }, - "dependencies": { - "bn.js": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz", - "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==" - } - } - }, - "browserify-sign": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.2.1.tgz", - "integrity": "sha512-/vrA5fguVAKKAVTNJjgSm1tRQDHUU6DbwO9IROu/0WAzC8PKhucDSh18J0RMvVeHAn5puMd+QHC2erPRNf8lmg==", - "requires": { - "bn.js": "^5.1.1", - "browserify-rsa": "^4.0.1", - "create-hash": "^1.2.0", - "create-hmac": "^1.1.7", - "elliptic": "^6.5.3", - "inherits": "^2.0.4", - "parse-asn1": "^5.1.5", - "readable-stream": "^3.6.0", - "safe-buffer": "^5.2.0" - }, - "dependencies": { - "bn.js": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz", - "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==" - } - } - }, - "bs58": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/bs58/-/bs58-4.0.1.tgz", - "integrity": "sha512-Ok3Wdf5vOIlBrgCvTq96gBkJw+JUEzdBgyaza5HLtPm7yTHkjRy8+JzNyHF7BHa0bNWOQIp3m5YF0nnFcOIKLw==", - "requires": { - "base-x": "^3.0.2" - } - }, - "bs58check": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/bs58check/-/bs58check-2.1.2.tgz", - "integrity": "sha512-0TS1jicxdU09dwJMNZtVAfzPi6Q6QeN0pM1Fkzrjn+XYHvzMKPU3pHVpva+769iNVSfIYWf7LJ6WR+BuuMf8cA==", - "requires": { - "bs58": "^4.0.0", - "create-hash": "^1.1.0", - "safe-buffer": "^5.1.2" - } - }, - "buffer": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", - "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", - "requires": { - "base64-js": "^1.3.1", - "ieee754": "^1.1.13" - } - }, - "buffer-equal-constant-time": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz", - "integrity": "sha512-zRpUiDwd/xk6ADqPMATG8vc9VPrkck7T07OIx0gnjmJAnHnTVXNQG3vfvWNuiZIkwu9KrKdA1iJKfsfTVxE6NA==" - }, - "buffer-reverse": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/buffer-reverse/-/buffer-reverse-1.0.1.tgz", - "integrity": "sha512-M87YIUBsZ6N924W57vDwT/aOu8hw7ZgdByz6ijksLjmHJELBASmYTTlNHRgjE+pTsT9oJXGaDSgqqwfdHotDUg==" - }, - "buffer-to-arraybuffer": { - "version": "0.0.5", - "resolved": "https://registry.npmjs.org/buffer-to-arraybuffer/-/buffer-to-arraybuffer-0.0.5.tgz", - "integrity": "sha512-3dthu5CYiVB1DEJp61FtApNnNndTckcqe4pFcLdvHtrpG+kcyekCJKg4MRiDcFW7A6AODnXB9U4dwQiCW5kzJQ==" - }, - "buffer-xor": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz", - "integrity": "sha512-571s0T7nZWK6vB67HI5dyUF7wXiNcfaPPPTl6zYCNApANjIvYJTg7hlud/+cJpdAhS7dVzqMLmfhfHR3rAcOjQ==" - }, - "bufferutil": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/bufferutil/-/bufferutil-4.0.6.tgz", - "integrity": "sha512-jduaYOYtnio4aIAyc6UbvPCVcgq7nYpVnucyxr6eCYg/Woad9Hf/oxxBRDnGGjPfjUm6j5O/uBWhIu4iLebFaw==", - "requires": { - "node-gyp-build": "^4.3.0" - }, - "dependencies": { - "node-gyp-build": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.5.0.tgz", - "integrity": "sha512-2iGbaQBV+ITgCz76ZEjmhUKAKVf7xfY1sRl4UiKQspfZMH2h06SyhNsnSVy50cwkFQDGLyif6m/6uFXHkOZ6rg==" - } - } - }, - "bunyan": { - "version": "1.8.12", - "resolved": "https://registry.npmjs.org/bunyan/-/bunyan-1.8.12.tgz", - "integrity": "sha512-dmDUbGHeGcvCDLRFOscZkwx1ZO/aFz3bJOCi5nCgzdhFGPxwK+y5AcDBnqagNGlJZ7lje/l6JUEz9mQcutttdg==", - "requires": { - "dtrace-provider": "~0.8", - "moment": "^2.10.6", - "mv": "~2", - "safe-json-stringify": "~1" - } - }, - "bunyan-debug-stream": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/bunyan-debug-stream/-/bunyan-debug-stream-2.0.0.tgz", - "integrity": "sha512-Ovl43CJ7nUwalLzdXc6E1nGIy6ift9Z/QpYXUtsjpDAg35ZFKXifKNZyfpMGuN3N7ijLLqbnxPsMMHsXDdXa9A==", - "requires": { - "colors": "^1.0.3", - "exception-formatter": "^1.0.4" - } - }, - "bunyan-gke-stackdriver": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/bunyan-gke-stackdriver/-/bunyan-gke-stackdriver-0.1.2.tgz", - "integrity": "sha512-eY5OLgAXvOvOq2YpxI0HlV5HjAcLm36Ln3PxxsztO+2GrFSgU3oXoic2LCif/heBKoyOZdMyXKWF5dvswSOS6w==" - }, - "bytes": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", - "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==" - }, - "cacheable-request": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-6.1.0.tgz", - "integrity": "sha512-Oj3cAGPCqOZX7Rz64Uny2GYAZNliQSqfbePrgAQ1wKAihYmCUnraBtJtKcGR4xz7wF+LoJC+ssFZvv5BgF9Igg==", - "requires": { - "clone-response": "^1.0.2", - "get-stream": "^5.1.0", - "http-cache-semantics": "^4.0.0", - "keyv": "^3.0.0", - "lowercase-keys": "^2.0.0", - "normalize-url": "^4.1.0", - "responselike": "^1.0.2" - }, - "dependencies": { - "get-stream": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", - "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", - "requires": { - "pump": "^3.0.0" - } - }, - "lowercase-keys": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz", - "integrity": "sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==" - } - } - }, - "call-bind": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", - "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", - "requires": { - "function-bind": "^1.1.1", - "get-intrinsic": "^1.0.2" - } - }, - "cardinal": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/cardinal/-/cardinal-2.1.1.tgz", - "integrity": "sha512-JSr5eOgoEymtYHBjNWyjrMqet9Am2miJhlfKNdqLp6zoeAh0KN5dRAcxlecj5mAJrmQomgiOBj35xHLrFjqBpw==", - "requires": { - "ansicolors": "~0.3.2", - "redeyed": "~2.1.0" - } - }, - "caseless": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", - "integrity": "sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw==" - }, - "chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - }, - "dependencies": { - "ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "requires": { - "color-convert": "^1.9.0" - } - }, - "color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "requires": { - "color-name": "1.1.3" - } - }, - "color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==" - }, - "has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==" - }, - "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "requires": { - "has-flag": "^3.0.0" - } - } - } - }, - "chardet": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz", - "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==" - }, - "chownr": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", - "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==" - }, - "cids": { - "version": "0.7.5", - "resolved": "https://registry.npmjs.org/cids/-/cids-0.7.5.tgz", - "integrity": "sha512-zT7mPeghoWAu+ppn8+BS1tQ5qGmbMfB4AregnQjA/qHY3GC1m1ptI9GkWNlgeu38r7CuRdXB47uY2XgAYt6QVA==", - "requires": { - "buffer": "^5.5.0", - "class-is": "^1.1.0", - "multibase": "~0.6.0", - "multicodec": "^1.0.0", - "multihashes": "~0.4.15" - }, - "dependencies": { - "multicodec": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/multicodec/-/multicodec-1.0.4.tgz", - "integrity": "sha512-NDd7FeS3QamVtbgfvu5h7fd1IlbaC4EQ0/pgU4zqE2vdHCmBGsUa0TiM8/TdSeG6BMPC92OOCf8F1ocE/Wkrrg==", - "requires": { - "buffer": "^5.6.0", - "varint": "^5.0.0" - } - } - } - }, - "cipher-base": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz", - "integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==", - "requires": { - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" - } - }, - "class-is": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/class-is/-/class-is-1.1.0.tgz", - "integrity": "sha512-rhjH9AG1fvabIDoGRVH587413LPjTZgmDF9fOFCbFJQV4yuocX1mHxxvXI4g3cGwbVY9wAYIoKlg1N79frJKQw==" - }, - "clean-stack": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-3.0.1.tgz", - "integrity": "sha512-lR9wNiMRcVQjSB3a7xXGLuz4cr4wJuuXlaAEbRutGowQTmlp7R72/DOgN21e8jdwblMWl9UOJMJXarX94pzKdg==", - "requires": { - "escape-string-regexp": "4.0.0" - }, - "dependencies": { - "escape-string-regexp": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", - "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==" - } - } - }, - "cli-cursor": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", - "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", - "requires": { - "restore-cursor": "^3.1.0" - } - }, - "cli-progress": { - "version": "3.11.2", - "resolved": "https://registry.npmjs.org/cli-progress/-/cli-progress-3.11.2.tgz", - "integrity": "sha512-lCPoS6ncgX4+rJu5bS3F/iCz17kZ9MPZ6dpuTtI0KXKABkhyXIdYB3Inby1OpaGti3YlI3EeEkM9AuWpelJrVA==", - "requires": { - "string-width": "^4.2.3" - }, - "dependencies": { - "ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==" - }, - "string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "requires": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - } - }, - "strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "requires": { - "ansi-regex": "^5.0.1" - } - } - } - }, - "cli-table": { - "version": "0.3.11", - "resolved": "https://registry.npmjs.org/cli-table/-/cli-table-0.3.11.tgz", - "integrity": "sha512-IqLQi4lO0nIB4tcdTpN4LCB9FI3uqrJZK7RC515EnhZ6qBaglkIgICb1wjeAqpdoOabm1+SuQtkXIPdYC93jhQ==", - "requires": { - "colors": "1.0.3" - }, - "dependencies": { - "colors": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/colors/-/colors-1.0.3.tgz", - "integrity": "sha512-pFGrxThWcWQ2MsAz6RtgeWe4NK2kUE1WfsrvvlctdII745EW9I0yflqhe7++M5LEc7bV2c/9/5zc8sFcpL0Drw==" - } - } - }, - "cli-ux": { - "version": "5.6.7", - "resolved": "https://registry.npmjs.org/cli-ux/-/cli-ux-5.6.7.tgz", - "integrity": "sha512-dsKAurMNyFDnO6X1TiiRNiVbL90XReLKcvIq4H777NMqXGBxBws23ag8ubCJE97vVZEgWG2eSUhsyLf63Jv8+g==", - "requires": { - "@oclif/command": "^1.8.15", - "@oclif/errors": "^1.3.5", - "@oclif/linewrap": "^1.0.0", - "@oclif/screen": "^1.0.4", - "ansi-escapes": "^4.3.0", - "ansi-styles": "^4.2.0", - "cardinal": "^2.1.1", - "chalk": "^4.1.0", - "clean-stack": "^3.0.0", - "cli-progress": "^3.4.0", - "extract-stack": "^2.0.0", - "fs-extra": "^8.1", - "hyperlinker": "^1.0.0", - "indent-string": "^4.0.0", - "is-wsl": "^2.2.0", - "js-yaml": "^3.13.1", - "lodash": "^4.17.21", - "natural-orderby": "^2.0.1", - "object-treeify": "^1.1.4", - "password-prompt": "^1.1.2", - "semver": "^7.3.2", - "string-width": "^4.2.0", - "strip-ansi": "^6.0.0", - "supports-color": "^8.1.0", - "supports-hyperlinks": "^2.1.0", - "tslib": "^2.0.0" - }, - "dependencies": { - "ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==" - }, - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "dependencies": { - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "requires": { - "has-flag": "^4.0.0" - } - } - } - }, - "extract-stack": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/extract-stack/-/extract-stack-2.0.0.tgz", - "integrity": "sha512-AEo4zm+TenK7zQorGK1f9mJ8L14hnTDi2ZQPR+Mub1NX8zimka1mXpV5LpH8x9HoUmFSHZCfLHqWvp0Y4FxxzQ==" - }, - "string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "requires": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - } - }, - "strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "requires": { - "ansi-regex": "^5.0.1" - } - }, - "supports-color": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", - "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", - "requires": { - "has-flag": "^4.0.0" - } - }, - "supports-hyperlinks": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-2.2.0.tgz", - "integrity": "sha512-6sXEzV5+I5j8Bmq9/vUphGRM/RJNT9SCURJLjwfOg51heRtguGWDzcaBlgAzKhQa0EVNpPEKzQuBwZ8S8WaCeQ==", - "requires": { - "has-flag": "^4.0.0", - "supports-color": "^7.0.0" - }, - "dependencies": { - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "requires": { - "has-flag": "^4.0.0" - } - } - } - }, - "tslib": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz", - "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==" - } - } - }, - "cli-width": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-3.0.0.tgz", - "integrity": "sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw==" - }, - "clone-response": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/clone-response/-/clone-response-1.0.3.tgz", - "integrity": "sha512-ROoL94jJH2dUVML2Y/5PEDNaSHgeOdSDicUyS7izcF63G6sTc/FTjLub4b8Il9S8S0beOfYt0TaA5qvFK+w0wA==", - "requires": { - "mimic-response": "^1.0.0" - } - }, - "code-point-at": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", - "integrity": "sha512-RpAVKQA5T63xEj6/giIbUEtZwJ4UFIc3ZtvEkiaUERylqe8xb5IvqcgOurZLahv93CLKfxcw5YI+DZcUBRyLXA==" - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" - }, - "colors": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/colors/-/colors-1.4.0.tgz", - "integrity": "sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA==" - }, - "combined-stream": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", - "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", - "requires": { - "delayed-stream": "~1.0.0" - } - }, - "command-exists": { - "version": "1.2.9", - "resolved": "https://registry.npmjs.org/command-exists/-/command-exists-1.2.9.tgz", - "integrity": "sha512-LTQ/SGc+s0Xc0Fu5WaKnR0YiygZkm9eKFvyS+fRsU7/ZWFF8ykFM6Pc9aCVf1+xasOOZpO3BAVgVrKvsqKHV7w==" - }, - "concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", - "optional": true - }, - "console-control-strings": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", - "integrity": "sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==" - }, - "content-disposition": { - "version": "0.5.4", - "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", - "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", - "requires": { - "safe-buffer": "5.2.1" - } - }, - "content-hash": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/content-hash/-/content-hash-2.5.2.tgz", - "integrity": "sha512-FvIQKy0S1JaWV10sMsA7TRx8bpU+pqPkhbsfvOJAdjRXvYxEckAwQWGwtRjiaJfh+E0DvcWUGqcdjwMGFjsSdw==", - "requires": { - "cids": "^0.7.1", - "multicodec": "^0.5.5", - "multihashes": "^0.4.15" - } - }, - "content-type": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", - "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==" - }, - "cookie": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz", - "integrity": "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==" - }, - "cookie-signature": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", - "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==" - }, - "cookiejar": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/cookiejar/-/cookiejar-2.1.3.tgz", - "integrity": "sha512-JxbCBUdrfr6AQjOXrxoTvAMJO4HBTUIlBzslcJPAz+/KT8yk53fXun51u+RenNYvad/+Vc2DIz5o9UxlCDymFQ==" - }, - "core-js": { - "version": "3.6.5", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.6.5.tgz", - "integrity": "sha512-vZVEEwZoIsI+vPEuoF9Iqf5H7/M3eeQqWlQnYa8FSKKePuYTf5MWnxb5SDAzCa60b3JBRS5g9b+Dq7b1y/RCrA==" - }, - "core-util-is": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "integrity": "sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ==" - }, - "cors": { - "version": "2.8.5", - "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz", - "integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==", - "requires": { - "object-assign": "^4", - "vary": "^1" - } - }, - "country-data": { - "version": "0.0.31", - "resolved": "https://registry.npmjs.org/country-data/-/country-data-0.0.31.tgz", - "integrity": "sha512-YqlY/i6ikZwoBFfdjK+hJTGaBdTgDpXLI15MCj2UsXZ2cPBb+Kx86AXmDH7PRGt0LUleck0cCgNdWeIhfbcxkQ==", - "requires": { - "currency-symbol-map": "~2", - "underscore": ">1.4.4" - } - }, - "create-ecdh": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.4.tgz", - "integrity": "sha512-mf+TCx8wWc9VpuxfP2ht0iSISLZnt0JgWlrOKZiNqyUZWnjIaCIVNQArMHnCZKfEYRg6IM7A+NeJoN8gf/Ws0A==", - "requires": { - "bn.js": "^4.1.0", - "elliptic": "^6.5.3" - } - }, - "create-hash": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz", - "integrity": "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==", - "requires": { - "cipher-base": "^1.0.1", - "inherits": "^2.0.1", - "md5.js": "^1.3.4", - "ripemd160": "^2.0.1", - "sha.js": "^2.4.0" - } - }, - "create-hmac": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz", - "integrity": "sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==", - "requires": { - "cipher-base": "^1.0.3", - "create-hash": "^1.1.0", - "inherits": "^2.0.1", - "ripemd160": "^2.0.0", - "safe-buffer": "^5.0.1", - "sha.js": "^2.4.8" - } - }, - "cross-fetch": { - "version": "3.1.5", - "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.1.5.tgz", - "integrity": "sha512-lvb1SBsI0Z7GDwmuid+mU3kWVBwTVUbe7S0H52yaaAdQOXq2YktTCZdlAcNKFzE6QtRz0snpw9bNiPeOIkkQvw==", - "requires": { - "node-fetch": "2.6.7" - } - }, - "cross-spawn": { - "version": "6.0.5", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", - "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", - "requires": { - "nice-try": "^1.0.4", - "path-key": "^2.0.1", - "semver": "^5.5.0", - "shebang-command": "^1.2.0", - "which": "^1.2.9" - }, - "dependencies": { - "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" - } - } - }, - "crypto-browserify": { - "version": "3.12.0", - "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.0.tgz", - "integrity": "sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==", - "requires": { - "browserify-cipher": "^1.0.0", - "browserify-sign": "^4.0.0", - "create-ecdh": "^4.0.0", - "create-hash": "^1.1.0", - "create-hmac": "^1.1.0", - "diffie-hellman": "^5.0.0", - "inherits": "^2.0.1", - "pbkdf2": "^3.0.3", - "public-encrypt": "^4.0.0", - "randombytes": "^2.0.0", - "randomfill": "^1.0.3" - } - }, - "currency-symbol-map": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/currency-symbol-map/-/currency-symbol-map-2.2.0.tgz", - "integrity": "sha512-fPZJ3jqM68+AAgqQ7UaGbgHL/39rp6l7GyqS2k1HJPu/kpS8D07x/+Uup6a9tCUKIlOFcRrDCf1qxSt8jnI5BA==" - }, - "d": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/d/-/d-1.0.1.tgz", - "integrity": "sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA==", - "requires": { - "es5-ext": "^0.10.50", - "type": "^1.0.1" - } - }, - "dashdash": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", - "integrity": "sha512-jRFi8UDGo6j+odZiEpjazZaWqEal3w/basFjQHQEwVtZJGDpxbH1MeYluwCS8Xq5wmLJooDlMgvVarmWfGM44g==", - "requires": { - "assert-plus": "^1.0.0" - } - }, - "debug": { - "version": "4.3.3", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.3.tgz", - "integrity": "sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==", - "requires": { - "ms": "2.1.2" - } - }, - "decode-uri-component": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", - "integrity": "sha512-hjf+xovcEn31w/EUYdTXQh/8smFL/dzYjohQGEIgjyNavaJfBY2p5F527Bo1VPATxv0VYTUC2bOcXvqFwk78Og==" - }, - "decompress-response": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-3.3.0.tgz", - "integrity": "sha512-BzRPQuY1ip+qDonAOz42gRm/pg9F768C+npV/4JOsxRC2sq+Rlk+Q4ZCAsOhnIaMrgarILY+RMUIvMmmX1qAEA==", - "requires": { - "mimic-response": "^1.0.0" - } - }, - "deep-extend": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", - "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==" - }, - "defer-to-connect": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-1.1.3.tgz", - "integrity": "sha512-0ISdNousHvZT2EiFlZeZAHBUvSxmKswVCEf8hW7KWgG4a8MVEu/3Vb6uWYozkjylyCxe0JBIiRB1jV45S70WVQ==" - }, - "define-properties": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.4.tgz", - "integrity": "sha512-uckOqKcfaVvtBdsVkdPv3XjveQJsNQqmhXgRi8uhvWWuPYZCNlzT8qAyblUgNoXdHdjMTzAqeGjAoli8f+bzPA==", - "requires": { - "has-property-descriptors": "^1.0.0", - "object-keys": "^1.1.1" - } - }, - "delayed-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==" - }, - "delegates": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", - "integrity": "sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==" - }, - "depd": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", - "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==" - }, - "des.js": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.0.1.tgz", - "integrity": "sha512-Q0I4pfFrv2VPd34/vfLrFOoRmlYj3OV50i7fskps1jZWK1kApMWWT9G6RRUeYedLcBDIhnSDaUvJMb3AhUlaEA==", - "requires": { - "inherits": "^2.0.1", - "minimalistic-assert": "^1.0.0" - } - }, - "destroy": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", - "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==" - }, - "detect-libc": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.1.tgz", - "integrity": "sha512-463v3ZeIrcWtdgIg6vI6XUncguvr2TnGl4SzDXinkt9mSLpBJKXT3mW6xT3VQdDN11+WVs29pgvivTc4Lp8v+w==", - "optional": true - }, - "diffie-hellman": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz", - "integrity": "sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==", - "requires": { - "bn.js": "^4.1.0", - "miller-rabin": "^4.0.0", - "randombytes": "^2.0.0" - } - }, - "dir-glob": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", - "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", - "requires": { - "path-type": "^4.0.0" - } - }, - "dom-storage": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/dom-storage/-/dom-storage-2.1.0.tgz", - "integrity": "sha512-g6RpyWXzl0RR6OTElHKBl7nwnK87GUyZMYC7JWsB/IA73vpqK2K6LT39x4VepLxlSsWBFrPVLnsSR5Jyty0+2Q==" - }, - "dom-walk": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/dom-walk/-/dom-walk-0.1.2.tgz", - "integrity": "sha512-6QvTW9mrGeIegrFXdtQi9pk7O/nSK6lSdXW2eqUspN5LWD7UTji2Fqw5V2YLjBpHEoU9Xl/eUWNpDeZvoyOv2w==" - }, - "dotenv": { - "version": "8.6.0", - "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-8.6.0.tgz", - "integrity": "sha512-IrPdXQsk2BbzvCBGBOTmmSH5SodmqZNt4ERAZDmW4CT+tL8VtvinqywuANaFu4bOMWki16nqf0e4oC0QIaDr/g==" - }, - "dtrace-provider": { - "version": "0.8.8", - "resolved": "https://registry.npmjs.org/dtrace-provider/-/dtrace-provider-0.8.8.tgz", - "integrity": "sha512-b7Z7cNtHPhH9EJhNNbbeqTcXB8LGFFZhq1PGgEvpeHlzd36bhbdTWoE/Ba/YguqpBSlAPKnARWhVlhunCMwfxg==", - "optional": true, - "requires": { - "nan": "^2.14.0" - } - }, - "duplexer": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.2.tgz", - "integrity": "sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==" - }, - "duplexer3": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.5.tgz", - "integrity": "sha512-1A8za6ws41LQgv9HrE/66jyC5yuSjQ3L/KOpFtoBilsAK2iA2wuS5rTt1OCzIvtS2V7nVmedsUU+DGRcjBmOYA==" - }, - "ecc-jsbn": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", - "integrity": "sha512-eh9O+hwRHNbG4BLTjEl3nw044CkGm5X6LoaCf7LPp7UU8Qrt47JYNi6nPX8xjW97TKGKm1ouctg0QSpZe9qrnw==", - "requires": { - "jsbn": "~0.1.0", - "safer-buffer": "^2.1.0" - } - }, - "ecdsa-sig-formatter": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz", - "integrity": "sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==", - "requires": { - "safe-buffer": "^5.0.1" - } - }, - "ee-first": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", - "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==" - }, - "elliptic": { - "version": "6.5.4", - "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.4.tgz", - "integrity": "sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==", - "requires": { - "bn.js": "^4.11.9", - "brorand": "^1.1.0", - "hash.js": "^1.0.0", - "hmac-drbg": "^1.0.1", - "inherits": "^2.0.4", - "minimalistic-assert": "^1.0.1", - "minimalistic-crypto-utils": "^1.0.1" - } - }, - "emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" - }, - "encodeurl": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", - "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==" - }, - "end-of-stream": { - "version": "1.4.4", - "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", - "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", - "requires": { - "once": "^1.4.0" - } - }, - "error-ex": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", - "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", - "requires": { - "is-arrayish": "^0.2.1" - } - }, - "es-abstract": { - "version": "1.20.1", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.20.1.tgz", - "integrity": "sha512-WEm2oBhfoI2sImeM4OF2zE2V3BYdSF+KnSi9Sidz51fQHd7+JuF8Xgcj9/0o+OWeIeIS/MiuNnlruQrJf16GQA==", - "requires": { - "call-bind": "^1.0.2", - "es-to-primitive": "^1.2.1", - "function-bind": "^1.1.1", - "function.prototype.name": "^1.1.5", - "get-intrinsic": "^1.1.1", - "get-symbol-description": "^1.0.0", - "has": "^1.0.3", - "has-property-descriptors": "^1.0.0", - "has-symbols": "^1.0.3", - "internal-slot": "^1.0.3", - "is-callable": "^1.2.4", - "is-negative-zero": "^2.0.2", - "is-regex": "^1.1.4", - "is-shared-array-buffer": "^1.0.2", - "is-string": "^1.0.7", - "is-weakref": "^1.0.2", - "object-inspect": "^1.12.0", - "object-keys": "^1.1.1", - "object.assign": "^4.1.2", - "regexp.prototype.flags": "^1.4.3", - "string.prototype.trimend": "^1.0.5", - "string.prototype.trimstart": "^1.0.5", - "unbox-primitive": "^1.0.2" - } - }, - "es-to-primitive": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", - "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", - "requires": { - "is-callable": "^1.1.4", - "is-date-object": "^1.0.1", - "is-symbol": "^1.0.2" - } - }, - "es5-ext": { - "version": "0.10.62", - "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.62.tgz", - "integrity": "sha512-BHLqn0klhEpnOKSrzn/Xsz2UIW8j+cGmo9JLzr8BiUapV8hPL9+FliFqjwr9ngW7jWdnxv6eO+/LqyhJVqgrjA==", - "requires": { - "es6-iterator": "^2.0.3", - "es6-symbol": "^3.1.3", - "next-tick": "^1.1.0" - } - }, - "es6-iterator": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz", - "integrity": "sha512-zw4SRzoUkd+cl+ZoE15A9o1oQd920Bb0iOJMQkQhl3jNc03YqVjAhG7scf9C5KWRU/R13Orf588uCC6525o02g==", - "requires": { - "d": "1", - "es5-ext": "^0.10.35", - "es6-symbol": "^3.1.1" - } - }, - "es6-symbol": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.3.tgz", - "integrity": "sha512-NJ6Yn3FuDinBaBRWl/q5X/s4koRHBrgKAu+yGI6JCBeiu3qrcbJhwT2GeR/EXVfylRk8dpQVJoLEFhK+Mu31NA==", - "requires": { - "d": "^1.0.1", - "ext": "^1.1.2" - } - }, - "escalade": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", - "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==" - }, - "escape-html": { - "version": "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": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==" - }, - "esprima": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", - "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==" - }, - "etag": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", - "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==" - }, - "eth-ens-namehash": { - "version": "2.0.8", - "resolved": "https://registry.npmjs.org/eth-ens-namehash/-/eth-ens-namehash-2.0.8.tgz", - "integrity": "sha512-VWEI1+KJfz4Km//dadyvBBoBeSQ0MHTXPvr8UIXiLW6IanxvAV+DmlZAijZwAyggqGUfwQBeHf7tc9wzc1piSw==", - "requires": { - "idna-uts46-hx": "^2.3.1", - "js-sha3": "^0.5.7" - }, - "dependencies": { - "js-sha3": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/js-sha3/-/js-sha3-0.5.7.tgz", - "integrity": "sha512-GII20kjaPX0zJ8wzkTbNDYMY7msuZcTWk8S5UOh6806Jq/wz1J8/bnr8uGU0DAUmYDjj2Mr4X1cW8v/GLYnR+g==" - } - } - }, - "eth-lib": { - "version": "0.2.8", - "resolved": "https://registry.npmjs.org/eth-lib/-/eth-lib-0.2.8.tgz", - "integrity": "sha512-ArJ7x1WcWOlSpzdoTBX8vkwlkSQ85CjjifSZtV4co64vWxSV8geWfPI9x4SVYu3DSxnX4yWFVTtGL+j9DUFLNw==", - "requires": { - "bn.js": "^4.11.6", - "elliptic": "^6.4.0", - "xhr-request-promise": "^0.1.2" - } - }, - "ethereum-bloom-filters": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/ethereum-bloom-filters/-/ethereum-bloom-filters-1.0.10.tgz", - "integrity": "sha512-rxJ5OFN3RwjQxDcFP2Z5+Q9ho4eIdEmSc2ht0fCu8Se9nbXjZ7/031uXoUYJ87KHCOdVeiUuwSnoS7hmYAGVHA==", - "requires": { - "js-sha3": "^0.8.0" - } - }, - "ethereum-cryptography": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/ethereum-cryptography/-/ethereum-cryptography-0.1.3.tgz", - "integrity": "sha512-w8/4x1SGGzc+tO97TASLja6SLd3fRIK2tLVcV2Gx4IB21hE19atll5Cq9o3d0ZmAYC/8aw0ipieTSiekAea4SQ==", - "requires": { - "@types/pbkdf2": "^3.0.0", - "@types/secp256k1": "^4.0.1", - "blakejs": "^1.1.0", - "browserify-aes": "^1.2.0", - "bs58check": "^2.1.2", - "create-hash": "^1.2.0", - "create-hmac": "^1.1.7", - "hash.js": "^1.1.7", - "keccak": "^3.0.0", - "pbkdf2": "^3.0.17", - "randombytes": "^2.1.0", - "safe-buffer": "^5.1.2", - "scrypt-js": "^3.0.0", - "secp256k1": "^4.0.1", - "setimmediate": "^1.0.5" - } - }, - "ethereumjs-common": { - "version": "1.5.2", - "resolved": "https://registry.npmjs.org/ethereumjs-common/-/ethereumjs-common-1.5.2.tgz", - "integrity": "sha512-hTfZjwGX52GS2jcVO6E2sx4YuFnf0Fhp5ylo4pEPhEffNln7vS59Hr5sLnp3/QCazFLluuBZ+FZ6J5HTp0EqCA==" - }, - "ethereumjs-tx": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ethereumjs-tx/-/ethereumjs-tx-2.1.2.tgz", - "integrity": "sha512-zZEK1onCeiORb0wyCXUvg94Ve5It/K6GD1K+26KfFKodiBiS6d9lfCXlUKGBBdQ+bv7Day+JK0tj1K+BeNFRAw==", - "requires": { - "ethereumjs-common": "^1.5.0", - "ethereumjs-util": "^6.0.0" - }, - "dependencies": { - "@types/bn.js": { - "version": "4.11.6", - "resolved": "https://registry.npmjs.org/@types/bn.js/-/bn.js-4.11.6.tgz", - "integrity": "sha512-pqr857jrp2kPuO9uRjZ3PwnJTjoQy+fcdxvBTvHm6dkmEL9q+hDD/2j/0ELOBPtPnS8LjCX0gI9nbl8lVkadpg==", - "requires": { - "@types/node": "*" - } - }, - "ethereumjs-util": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/ethereumjs-util/-/ethereumjs-util-6.2.1.tgz", - "integrity": "sha512-W2Ktez4L01Vexijrm5EB6w7dg4n/TgpoYU4avuT5T3Vmnw/eCRtiBrJfQYS/DCSvDIOLn2k57GcHdeBcgVxAqw==", - "requires": { - "@types/bn.js": "^4.11.3", - "bn.js": "^4.11.0", - "create-hash": "^1.1.2", - "elliptic": "^6.5.2", - "ethereum-cryptography": "^0.1.3", - "ethjs-util": "0.1.6", - "rlp": "^2.2.3" - } - } - } - }, - "ethereumjs-util": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/ethereumjs-util/-/ethereumjs-util-5.2.1.tgz", - "integrity": "sha512-v3kT+7zdyCm1HIqWlLNrHGqHGLpGYIhjeHxQjnDXjLT2FyGJDsd3LWMYUo7pAFRrk86CR3nUJfhC81CCoJNNGQ==", - "requires": { - "bn.js": "^4.11.0", - "create-hash": "^1.1.2", - "elliptic": "^6.5.2", - "ethereum-cryptography": "^0.1.3", - "ethjs-util": "^0.1.3", - "rlp": "^2.0.0", - "safe-buffer": "^5.1.1" - } - }, - "ethjs-unit": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/ethjs-unit/-/ethjs-unit-0.1.6.tgz", - "integrity": "sha512-/Sn9Y0oKl0uqQuvgFk/zQgR7aw1g36qX/jzSQ5lSwlO0GigPymk4eGQfeNTD03w1dPOqfz8V77Cy43jH56pagw==", - "requires": { - "bn.js": "4.11.6", - "number-to-bn": "1.7.0" - }, - "dependencies": { - "bn.js": { - "version": "4.11.6", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.6.tgz", - "integrity": "sha512-XWwnNNFCuuSQ0m3r3C4LE3EiORltHd9M05pq6FOlVeiophzRbMo50Sbz1ehl8K3Z+jw9+vmgnXefY1hz8X+2wA==" - } - } - }, - "ethjs-util": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/ethjs-util/-/ethjs-util-0.1.6.tgz", - "integrity": "sha512-CUnVOQq7gSpDHZVVrQW8ExxUETWrnrvXYvYz55wOU8Uj4VCgw56XC2B/fVqQN+f7gmrnRHSLVnFAwsCuNwji8w==", - "requires": { - "is-hex-prefixed": "1.0.0", - "strip-hex-prefix": "1.0.0" - } - }, - "event-stream": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/event-stream/-/event-stream-4.0.1.tgz", - "integrity": "sha512-qACXdu/9VHPBzcyhdOWR5/IahhGMf0roTeZJfzz077GwylcDd90yOHLouhmv7GJ5XzPi6ekaQWd8AvPP2nOvpA==", - "requires": { - "duplexer": "^0.1.1", - "from": "^0.1.7", - "map-stream": "0.0.7", - "pause-stream": "^0.0.11", - "split": "^1.0.1", - "stream-combiner": "^0.2.2", - "through": "^2.3.8" - } - }, - "eventemitter3": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.4.tgz", - "integrity": "sha512-rlaVLnVxtxvoyLsQQFBx53YmXHDxRIzzTLbdfxqi4yocpSjAxXwkU0cScM5JgSKMqEhrZpnvQ2D9gjylR0AimQ==" - }, - "events": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", - "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==" - }, - "evp_bytestokey": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz", - "integrity": "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==", - "requires": { - "md5.js": "^1.3.4", - "safe-buffer": "^5.1.1" - } - }, - "exception-formatter": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/exception-formatter/-/exception-formatter-1.0.7.tgz", - "integrity": "sha512-zV45vEsjytJrwfGq6X9qd1Ll56cW4NC2mhCO6lqwMk4ZpA1fZ6C3UiaQM/X7if+7wZFmCgss3ahp9B/uVFuLRw==", - "requires": { - "colors": "^1.0.3" - } - }, - "expand-template": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/expand-template/-/expand-template-2.0.3.tgz", - "integrity": "sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg==" - }, - "express": { - "version": "4.18.1", - "resolved": "https://registry.npmjs.org/express/-/express-4.18.1.tgz", - "integrity": "sha512-zZBcOX9TfehHQhtupq57OF8lFZ3UZi08Y97dwFCkD8p9d/d2Y3M+ykKcwaMDEL+4qyUolgBDX6AblpR3fL212Q==", - "requires": { - "accepts": "~1.3.8", - "array-flatten": "1.1.1", - "body-parser": "1.20.0", - "content-disposition": "0.5.4", - "content-type": "~1.0.4", - "cookie": "0.5.0", - "cookie-signature": "1.0.6", - "debug": "2.6.9", - "depd": "2.0.0", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "etag": "~1.8.1", - "finalhandler": "1.2.0", - "fresh": "0.5.2", - "http-errors": "2.0.0", - "merge-descriptors": "1.0.1", - "methods": "~1.1.2", - "on-finished": "2.4.1", - "parseurl": "~1.3.3", - "path-to-regexp": "0.1.7", - "proxy-addr": "~2.0.7", - "qs": "6.10.3", - "range-parser": "~1.2.1", - "safe-buffer": "5.2.1", - "send": "0.18.0", - "serve-static": "1.15.0", - "setprototypeof": "1.2.0", - "statuses": "2.0.1", - "type-is": "~1.6.18", - "utils-merge": "1.0.1", - "vary": "~1.1.2" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "requires": { - "ms": "2.0.0" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" - } - } - }, - "ext": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/ext/-/ext-1.6.0.tgz", - "integrity": "sha512-sdBImtzkq2HpkdRLtlLWDa6w4DX22ijZLKx8BMPUuKe1c5lbN6xwQDQCxSfxBQnHZ13ls/FH0MQZx/q/gr6FQg==", - "requires": { - "type": "^2.5.0" - }, - "dependencies": { - "type": { - "version": "2.7.2", - "resolved": "https://registry.npmjs.org/type/-/type-2.7.2.tgz", - "integrity": "sha512-dzlvlNlt6AXU7EBSfpAscydQ7gXB+pPGsPnfJnZpiNJBDj7IaJzQlBZYGdEi4R9HmPdBv2XmWJ6YUtoTa7lmCw==" - } - } - }, - "extend": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", - "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==" - }, - "external-editor": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz", - "integrity": "sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==", - "requires": { - "chardet": "^0.7.0", - "iconv-lite": "^0.4.24", - "tmp": "^0.0.33" - } - }, - "extract-stack": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/extract-stack/-/extract-stack-1.0.0.tgz", - "integrity": "sha512-M5Ge0JIrn12EtIVpje2G+hI5X78hmX4UDzynZ7Vnp1MiPSqleEonmgr2Rh59eygEEgq3YJ1GDP96rnM8tnVg/Q==" - }, - "extsprintf": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", - "integrity": "sha512-11Ndz7Nv+mvAC1j0ktTa7fAb0vLyGGX+rMHNBYQviQDGU0Hw7lhctJANqbPhu9nV9/izT/IntTgZ7Im/9LJs9g==" - }, - "fast-deep-equal": { - "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==" - }, - "fast-glob": { - "version": "3.2.11", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.11.tgz", - "integrity": "sha512-xrO3+1bxSo3ZVHAnqzyuewYT6aMFHRAd4Kcs92MAonjwQZLsK9d0SF1IyQ3k5PoirxTW0Oe/RqFgMQ6TcNE5Ew==", - "requires": { - "@nodelib/fs.stat": "^2.0.2", - "@nodelib/fs.walk": "^1.2.3", - "glob-parent": "^5.1.2", - "merge2": "^1.3.0", - "micromatch": "^4.0.4" - } - }, - "fast-json-stable-stringify": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", - "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==" - }, - "fast-levenshtein": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-3.0.0.tgz", - "integrity": "sha512-hKKNajm46uNmTlhHSyZkmToAc56uZJwYq7yrciZjqOxnlfQwERDQJmHPUp7m1m9wx8vgOe8IaCKZ5Kv2k1DdCQ==", - "requires": { - "fastest-levenshtein": "^1.0.7" - } - }, - "fastest-levenshtein": { - "version": "1.0.16", - "resolved": "https://registry.npmjs.org/fastest-levenshtein/-/fastest-levenshtein-1.0.16.tgz", - "integrity": "sha512-eRnCtTTtGZFpQCwhJiUOuxPQWRXVKYDn0b2PeHfXL6/Zi53SLAzAHfVhVWK2AryC/WH05kGfxhFIPvTF0SXQzg==" - }, - "fastq": { - "version": "1.13.0", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.13.0.tgz", - "integrity": "sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==", - "requires": { - "reusify": "^1.0.4" - } - }, - "faye-websocket": { - "version": "0.11.3", - "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.3.tgz", - "integrity": "sha512-D2y4bovYpzziGgbHYtGCMjlJM36vAl/y+xUyn1C+FVx8szd1E+86KwVw6XvYSzOP8iMpm1X0I4xJD+QtUb36OA==", - "requires": { - "websocket-driver": ">=0.5.1" - } - }, - "figures": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz", - "integrity": "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==", - "requires": { - "escape-string-regexp": "^1.0.5" - } - }, - "file-uri-to-path": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz", - "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==" - }, - "fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", - "requires": { - "to-regex-range": "^5.0.1" - } - }, - "finalhandler": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz", - "integrity": "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==", - "requires": { - "debug": "2.6.9", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "on-finished": "2.4.1", - "parseurl": "~1.3.3", - "statuses": "2.0.1", - "unpipe": "~1.0.0" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "requires": { - "ms": "2.0.0" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" - } - } - }, - "firebase": { - "version": "7.24.0", - "resolved": "https://registry.npmjs.org/firebase/-/firebase-7.24.0.tgz", - "integrity": "sha512-j6jIyGFFBlwWAmrlUg9HyQ/x+YpsPkc/TTkbTyeLwwAJrpAmmEHNPT6O9xtAnMV4g7d3RqLL/u9//aZlbY4rQA==", - "requires": { - "@firebase/analytics": "0.6.0", - "@firebase/app": "0.6.11", - "@firebase/app-types": "0.6.1", - "@firebase/auth": "0.15.0", - "@firebase/database": "0.6.13", - "@firebase/firestore": "1.18.0", - "@firebase/functions": "0.5.1", - "@firebase/installations": "0.4.17", - "@firebase/messaging": "0.7.1", - "@firebase/performance": "0.4.2", - "@firebase/polyfill": "0.3.36", - "@firebase/remote-config": "0.1.28", - "@firebase/storage": "0.3.43", - "@firebase/util": "0.3.2" - } - }, - "follow-redirects": { - "version": "1.15.2", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.2.tgz", - "integrity": "sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==" - }, - "for-each": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", - "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", - "requires": { - "is-callable": "^1.1.3" - } - }, - "forever-agent": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", - "integrity": "sha512-j0KLYPhm6zeac4lz3oJ3o65qvgQCcPubiyotZrXqEaG4hNagNYO8qdlUrX5vwqv9ohqeT/Z3j6+yW067yWWdUw==" - }, - "form-data": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", - "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", - "requires": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.6", - "mime-types": "^2.1.12" - } - }, - "forwarded": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", - "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==" - }, - "fp-ts": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/fp-ts/-/fp-ts-2.1.1.tgz", - "integrity": "sha512-YcWhMdDCFCja0MmaDroTgNu+NWWrrnUEn92nvDgrtVy9Z71YFnhNVIghoHPt8gs82ijoMzFGeWKvArbyICiJgw==" - }, - "fresh": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", - "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==" - }, - "from": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/from/-/from-0.1.7.tgz", - "integrity": "sha512-twe20eF1OxVxp/ML/kq2p1uc6KvFK/+vs8WjEbeKmV2He22MKm7YF2ANIt+EOqhJ5L3K/SuuPhk0hWQDjOM23g==" - }, - "fs-constants": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz", - "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==" - }, - "fs-extra": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", - "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", - "requires": { - "graceful-fs": "^4.2.0", - "jsonfile": "^4.0.0", - "universalify": "^0.1.0" - } - }, - "fs-minipass": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-1.2.7.tgz", - "integrity": "sha512-GWSSJGFy4e9GUeCcbIkED+bgAoFyj7XF1mV8rma3QW4NIqX9Kyx79N/PF61H5udOV3aY1IaMLs6pGbH71nlCTA==", - "requires": { - "minipass": "^2.6.0" - } - }, - "function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" - }, - "function.prototype.name": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.5.tgz", - "integrity": "sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA==", - "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "es-abstract": "^1.19.0", - "functions-have-names": "^1.2.2" - } - }, - "functions-have-names": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", - "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==" - }, - "gauge": { - "version": "2.7.4", - "resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz", - "integrity": "sha512-14x4kjc6lkD3ltw589k0NrPD6cCNTD6CWoVUNpB85+DrtONoZn+Rug6xZU5RvSC4+TZPxA5AnBibQYAvZn41Hg==", - "requires": { - "aproba": "^1.0.3", - "console-control-strings": "^1.0.0", - "has-unicode": "^2.0.0", - "object-assign": "^4.1.0", - "signal-exit": "^3.0.0", - "string-width": "^1.0.1", - "strip-ansi": "^3.0.1", - "wide-align": "^1.1.0" - }, - "dependencies": { - "ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==" - }, - "is-fullwidth-code-point": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", - "integrity": "sha512-1pqUqRjkhPJ9miNq9SwMfdvi6lBJcd6eFxvfaivQhaH3SgisfiuudvFntdKOmxuee/77l+FPjKrQjWvmPjWrRw==", - "requires": { - "number-is-nan": "^1.0.0" - } - }, - "string-width": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", - "integrity": "sha512-0XsVpQLnVCXHJfyEs8tC0zpTVIr5PKKsQtkT29IwupnPTjtPmQ3xT/4yCREF9hYkV/3M3kzcUTSAZT6a6h81tw==", - "requires": { - "code-point-at": "^1.0.0", - "is-fullwidth-code-point": "^1.0.0", - "strip-ansi": "^3.0.0" - } - }, - "strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==", - "requires": { - "ansi-regex": "^2.0.0" - } - } - } - }, - "get-caller-file": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", - "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==" - }, - "get-intrinsic": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.2.tgz", - "integrity": "sha512-Jfm3OyCxHh9DJyc28qGk+JmfkpO41A4XkneDSujN9MDXrm4oDKdHvndhZ2dN94+ERNfkYJWDclW6k2L/ZGHjXA==", - "requires": { - "function-bind": "^1.1.1", - "has": "^1.0.3", - "has-symbols": "^1.0.3" - } - }, - "get-stream": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", - "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", - "requires": { - "pump": "^3.0.0" - } - }, - "get-symbol-description": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz", - "integrity": "sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==", - "requires": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.1.1" - } - }, - "getpass": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", - "integrity": "sha512-0fzj9JxOLfJ+XGLhR8ze3unN0KZCgZwiSSDz168VERjK8Wl8kVSdcu2kspd4s4wtAa1y/qrVRiAA0WclVsu0ng==", - "requires": { - "assert-plus": "^1.0.0" - } - }, - "github-from-package": { - "version": "0.0.0", - "resolved": "https://registry.npmjs.org/github-from-package/-/github-from-package-0.0.0.tgz", - "integrity": "sha512-SyHy3T1v2NUXn29OsWdxmK6RwHD+vkj3v8en8AOBZ1wBQ/hCAQ5bAQTD02kW4W9tUp/3Qh6J8r9EvntiyCmOOw==" - }, - "glob": { - "version": "6.0.4", - "resolved": "https://registry.npmjs.org/glob/-/glob-6.0.4.tgz", - "integrity": "sha512-MKZeRNyYZAVVVG1oZeLaWie1uweH40m9AZwIwxyPbTSX4hHrVYSzLg0Ro5Z5R7XKkIX+Cc6oD1rqeDJnwsB8/A==", - "optional": true, - "requires": { - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "2 || 3", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - } - }, - "glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "requires": { - "is-glob": "^4.0.1" - } - }, - "global": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/global/-/global-4.4.0.tgz", - "integrity": "sha512-wv/LAoHdRE3BeTGz53FAamhGlPLhlssK45usmGFThIi4XqnBmjKQ16u+RNbP7WvigRZDxUsM0J3gcQ5yicaL0w==", - "requires": { - "min-document": "^2.19.0", - "process": "^0.11.10" - } - }, - "google-libphonenumber": { - "version": "3.2.32", - "resolved": "https://registry.npmjs.org/google-libphonenumber/-/google-libphonenumber-3.2.32.tgz", - "integrity": "sha512-mcNgakausov/B/eTgVeX8qc8IwWjRrupk9UzZZ/QDEvdh5fAjE7Aa211bkZpZj42zKkeS6MTT8avHUwjcLxuGQ==" - }, - "got": { - "version": "9.6.0", - "resolved": "https://registry.npmjs.org/got/-/got-9.6.0.tgz", - "integrity": "sha512-R7eWptXuGYxwijs0eV+v3o6+XH1IqVK8dJOEecQfTmkncw9AV4dcw/Dhxi8MdlqPthxxpZyizMzyg8RTmEsG+Q==", - "requires": { - "@sindresorhus/is": "^0.14.0", - "@szmarczak/http-timer": "^1.1.2", - "cacheable-request": "^6.0.0", - "decompress-response": "^3.3.0", - "duplexer3": "^0.1.4", - "get-stream": "^4.1.0", - "lowercase-keys": "^1.0.1", - "mimic-response": "^1.0.1", - "p-cancelable": "^1.0.0", - "to-readable-stream": "^1.0.0", - "url-parse-lax": "^3.0.0" - } - }, - "graceful-fs": { - "version": "4.2.10", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", - "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==" - }, - "har-schema": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", - "integrity": "sha512-Oqluz6zhGX8cyRaTQlFMPw80bSJVG2x/cFb8ZPhUILGgHka9SsokCCOQgpveePerqidZOrT14ipqfJb7ILcW5Q==" - }, - "har-validator": { - "version": "5.1.5", - "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.5.tgz", - "integrity": "sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==", - "requires": { - "ajv": "^6.12.3", - "har-schema": "^2.0.0" - } - }, - "has": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", - "requires": { - "function-bind": "^1.1.1" - } - }, - "has-bigints": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz", - "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==" - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" - }, - "has-property-descriptors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz", - "integrity": "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==", - "requires": { - "get-intrinsic": "^1.1.1" - } - }, - "has-symbol-support-x": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/has-symbol-support-x/-/has-symbol-support-x-1.4.2.tgz", - "integrity": "sha512-3ToOva++HaW+eCpgqZrCfN51IPB+7bJNVT6CUATzueB5Heb8o6Nam0V3HG5dlDvZU1Gn5QLcbahiKw/XVk5JJw==" - }, - "has-symbols": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", - "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==" - }, - "has-to-string-tag-x": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/has-to-string-tag-x/-/has-to-string-tag-x-1.4.1.tgz", - "integrity": "sha512-vdbKfmw+3LoOYVr+mtxHaX5a96+0f3DljYd8JOqvOLsf5mw2Otda2qCDT9qRqLAhrjyQ0h7ual5nOiASpsGNFw==", - "requires": { - "has-symbol-support-x": "^1.4.1" - } - }, - "has-tostringtag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz", - "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==", - "requires": { - "has-symbols": "^1.0.2" - } - }, - "has-unicode": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", - "integrity": "sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ==" - }, - "hash-base": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.1.0.tgz", - "integrity": "sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA==", - "requires": { - "inherits": "^2.0.4", - "readable-stream": "^3.6.0", - "safe-buffer": "^5.2.0" - } - }, - "hash.js": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz", - "integrity": "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==", - "requires": { - "inherits": "^2.0.3", - "minimalistic-assert": "^1.0.1" - } - }, - "hmac-drbg": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", - "integrity": "sha512-Tti3gMqLdZfhOQY1Mzf/AanLiqh1WTiJgEj26ZuYQ9fbkLomzGchCws4FyrSd4VkpBfiNhaE1On+lOz894jvXg==", - "requires": { - "hash.js": "^1.0.3", - "minimalistic-assert": "^1.0.0", - "minimalistic-crypto-utils": "^1.0.1" - } - }, - "http-cache-semantics": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.0.tgz", - "integrity": "sha512-carPklcUh7ROWRK7Cv27RPtdhYhUsela/ue5/jKzjegVvXDqM2ILE9Q2BGn9JZJh1g87cp56su/FgQSzcWS8cQ==" - }, - "http-call": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/http-call/-/http-call-5.3.0.tgz", - "integrity": "sha512-ahwimsC23ICE4kPl9xTBjKB4inbRaeLyZeRunC/1Jy/Z6X8tv22MEAjK+KBOMSVLaqXPTTmd8638waVIKLGx2w==", - "requires": { - "content-type": "^1.0.4", - "debug": "^4.1.1", - "is-retry-allowed": "^1.1.0", - "is-stream": "^2.0.0", - "parse-json": "^4.0.0", - "tunnel-agent": "^0.6.0" - }, - "dependencies": { - "is-stream": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", - "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==" - } - } - }, - "http-errors": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", - "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", - "requires": { - "depd": "2.0.0", - "inherits": "2.0.4", - "setprototypeof": "1.2.0", - "statuses": "2.0.1", - "toidentifier": "1.0.1" - } - }, - "http-https": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/http-https/-/http-https-1.0.0.tgz", - "integrity": "sha512-o0PWwVCSp3O0wS6FvNr6xfBCHgt0m1tvPLFOCc2iFDKTRAXhB7m8klDf7ErowFH8POa6dVdGatKU5I1YYwzUyg==" - }, - "http-parser-js": { - "version": "0.5.8", - "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.8.tgz", - "integrity": "sha512-SGeBX54F94Wgu5RH3X5jsDtf4eHyRogWX1XGT3b4HuW3tQPM4AaBzoUji/4AAJNXCEOWZ5O0DgZmJw1947gD5Q==" - }, - "http-proxy-agent": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz", - "integrity": "sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==", - "requires": { - "@tootallnate/once": "2", - "agent-base": "6", - "debug": "4" - } - }, - "http-signature": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", - "integrity": "sha512-CAbnr6Rz4CYQkLYUtSNXxQPUH2gK8f3iWexVlsnMeD+GjlsQ0Xsy1cOX+mN3dtxYomRy21CiOzU8Uhw6OwncEQ==", - "requires": { - "assert-plus": "^1.0.0", - "jsprim": "^1.2.2", - "sshpk": "^1.7.0" - } - }, - "https-proxy-agent": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", - "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", - "requires": { - "agent-base": "6", - "debug": "4" - } - }, - "humanize-duration": { - "version": "3.27.2", - "resolved": "https://registry.npmjs.org/humanize-duration/-/humanize-duration-3.27.2.tgz", - "integrity": "sha512-A15OmA3FLFRnehvF4ZMocsxTZYvHq4ze7L+AgR1DeHw0xC9vMd4euInY83uqGU9/XXKNnVIEeKc1R8G8nKqtzg==" - }, - "hyperlinker": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/hyperlinker/-/hyperlinker-1.0.0.tgz", - "integrity": "sha512-Ty8UblRWFEcfSuIaajM34LdPXIhbs1ajEX/BBPv24J+enSVaEVY63xQ6lTO9VRYS5LAoghIG0IDJ+p+IPzKUQQ==" - }, - "iconv-lite": { - "version": "0.4.24", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", - "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", - "requires": { - "safer-buffer": ">= 2.1.2 < 3" - } - }, - "idb": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/idb/-/idb-3.0.2.tgz", - "integrity": "sha512-+FLa/0sTXqyux0o6C+i2lOR0VoS60LU/jzUo5xjfY6+7sEEgy4Gz1O7yFBXvjd7N0NyIGWIRg8DcQSLEG+VSPw==" - }, - "idna-uts46-hx": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/idna-uts46-hx/-/idna-uts46-hx-2.3.1.tgz", - "integrity": "sha512-PWoF9Keq6laYdIRwwCdhTPl60xRqAloYNMQLiyUnG42VjT53oW07BXIRM+NK7eQjzXjAk2gUvX9caRxlnF9TAA==", - "requires": { - "punycode": "2.1.0" - }, - "dependencies": { - "punycode": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.0.tgz", - "integrity": "sha512-Yxz2kRwT90aPiWEMHVYnEf4+rhwF1tBmmZ4KepCP+Wkium9JxtWnUm1nqGwpiAHr/tnTSeHqr3wb++jgSkXjhA==" - } - } - }, - "ieee754": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", - "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==" - }, - "ignore": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz", - "integrity": "sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==" - }, - "indent-string": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", - "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==" - }, - "inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", - "optional": true, - "requires": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" - }, - "ini": { - "version": "1.3.8", - "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", - "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==" - }, - "inquirer": { - "version": "7.3.3", - "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-7.3.3.tgz", - "integrity": "sha512-JG3eIAj5V9CwcGvuOmoo6LB9kbAYT8HXffUl6memuszlwDC/qvFAJw49XJ5NROSFNPxp3iQg1GqkFhaY/CR0IA==", - "requires": { - "ansi-escapes": "^4.2.1", - "chalk": "^4.1.0", - "cli-cursor": "^3.1.0", - "cli-width": "^3.0.0", - "external-editor": "^3.0.3", - "figures": "^3.0.0", - "lodash": "^4.17.19", - "mute-stream": "0.0.8", - "run-async": "^2.4.0", - "rxjs": "^6.6.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0", - "through": "^2.3.6" - }, - "dependencies": { - "ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==" - }, - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "requires": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - } - }, - "strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "requires": { - "ansi-regex": "^5.0.1" - } - } - } - }, - "internal-slot": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.3.tgz", - "integrity": "sha512-O0DB1JC/sPyZl7cIo78n5dR7eUSwwpYPiXRhTzNxZVAMUuB8vlnRFyLxdrVToks6XPLVnFfbzaVd5WLjhgg+vA==", - "requires": { - "get-intrinsic": "^1.1.0", - "has": "^1.0.3", - "side-channel": "^1.0.4" - } - }, - "io-ts": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/io-ts/-/io-ts-2.0.1.tgz", - "integrity": "sha512-RezD+WcCfW4VkMkEcQWL/Nmy/nqsWTvTYg7oUmTGzglvSSV2P9h2z1PVeREPFf0GWNzruYleAt1XCMQZSg1xxQ==" - }, - "ipaddr.js": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", - "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==" - }, - "is-arguments": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.1.tgz", - "integrity": "sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==", - "requires": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" - } - }, - "is-arrayish": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==" - }, - "is-base64": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-base64/-/is-base64-1.1.0.tgz", - "integrity": "sha512-Nlhg7Z2dVC4/PTvIFkgVVNvPHSO2eR/Yd0XzhGiXCXEvWnptXlXa/clQ8aePPiMuxEGcWfzWbGw2Fe3d+Y3v1g==" - }, - "is-bigint": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", - "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", - "requires": { - "has-bigints": "^1.0.1" - } - }, - "is-boolean-object": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz", - "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==", - "requires": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" - } - }, - "is-callable": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.4.tgz", - "integrity": "sha512-nsuwtxZfMX67Oryl9LCQ+upnC0Z0BgpwntpS89m1H/TLF0zNfzfLMV/9Wa/6MZsj0acpEjAO0KF1xT6ZdLl95w==" - }, - "is-date-object": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", - "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", - "requires": { - "has-tostringtag": "^1.0.0" - } - }, - "is-docker": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", - "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==" - }, - "is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==" - }, - "is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==" - }, - "is-function": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-function/-/is-function-1.0.2.tgz", - "integrity": "sha512-lw7DUp0aWXYg+CBCN+JKkcE0Q2RayZnSvnZBlwgxHBQhqt5pZNVy4Ri7H9GmmXkdu7LUthszM+Tor1u/2iBcpQ==" - }, - "is-generator-function": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.0.10.tgz", - "integrity": "sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==", - "requires": { - "has-tostringtag": "^1.0.0" - } - }, - "is-glob": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", - "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", - "requires": { - "is-extglob": "^2.1.1" - } - }, - "is-hex-prefixed": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-hex-prefixed/-/is-hex-prefixed-1.0.0.tgz", - "integrity": "sha512-WvtOiug1VFrE9v1Cydwm+FnXd3+w9GaeVUss5W4v/SLy3UW00vP+6iNF2SdnfiBoLy4bTqVdkftNGTUeOFVsbA==" - }, - "is-negative-zero": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz", - "integrity": "sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==" - }, - "is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==" - }, - "is-number-object": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz", - "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==", - "requires": { - "has-tostringtag": "^1.0.0" - } - }, - "is-object": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-object/-/is-object-1.0.2.tgz", - "integrity": "sha512-2rRIahhZr2UWb45fIOuvZGpFtz0TyOZLf32KxBbSoUCeZR495zCKlWUKKUByk3geS2eAs7ZAABt0Y/Rx0GiQGA==" - }, - "is-plain-obj": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz", - "integrity": "sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg==" - }, - "is-regex": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", - "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", - "requires": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" - } - }, - "is-retry-allowed": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/is-retry-allowed/-/is-retry-allowed-1.2.0.tgz", - "integrity": "sha512-RUbUeKwvm3XG2VYamhJL1xFktgjvPzL0Hq8C+6yrWIswDy3BIXGqCxhxkc30N9jqK311gVU137K8Ei55/zVJRg==" - }, - "is-shared-array-buffer": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz", - "integrity": "sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==", - "requires": { - "call-bind": "^1.0.2" - } - }, - "is-stream": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", - "integrity": "sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ==" - }, - "is-string": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", - "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", - "requires": { - "has-tostringtag": "^1.0.0" - } - }, - "is-symbol": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", - "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", - "requires": { - "has-symbols": "^1.0.2" - } - }, - "is-typed-array": { - "version": "1.1.9", - "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.9.tgz", - "integrity": "sha512-kfrlnTTn8pZkfpJMUgYD7YZ3qzeJgWUn8XfVYBARc4wnmNOmLbmuuaAs3q5fvB0UJOn6yHAKaGTPM7d6ezoD/A==", - "requires": { - "available-typed-arrays": "^1.0.5", - "call-bind": "^1.0.2", - "es-abstract": "^1.20.0", - "for-each": "^0.3.3", - "has-tostringtag": "^1.0.0" - } - }, - "is-typedarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", - "integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==" - }, - "is-weakref": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz", - "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==", - "requires": { - "call-bind": "^1.0.2" - } - }, - "is-wsl": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", - "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", - "requires": { - "is-docker": "^2.0.0" - } - }, - "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==" - }, - "isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==" - }, - "isstream": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", - "integrity": "sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g==" - }, - "isurl": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isurl/-/isurl-1.0.0.tgz", - "integrity": "sha512-1P/yWsxPlDtn7QeRD+ULKQPaIaN6yF368GZ2vDfv0AL0NwpStafjWCDDdn0k8wgFMWpVAqG7oJhxHnlud42i9w==", - "requires": { - "has-to-string-tag-x": "^1.2.0", - "is-object": "^1.0.1" - } - }, - "js-sha3": { - "version": "0.8.0", - "resolved": "https://registry.npmjs.org/js-sha3/-/js-sha3-0.8.0.tgz", - "integrity": "sha512-gF1cRrHhIzNfToc802P800N8PpXS+evLLXfsVpowqmAFR9uwbi89WvXg2QspOmXL8QL86J4T1EpFu+yUkwJY3Q==" - }, - "js-yaml": { - "version": "3.13.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.13.1.tgz", - "integrity": "sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw==", - "requires": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" - } - }, - "jsbn": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", - "integrity": "sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg==" - }, - "json-buffer": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.0.tgz", - "integrity": "sha512-CuUqjv0FUZIdXkHPI8MezCnFCdaTAacej1TZYulLoAg1h/PhwkdXFN4V/gzY4g+fMBCOV2xF+rp7t2XD2ns/NQ==" - }, - "json-parse-better-errors": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", - "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==" - }, - "json-schema": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.4.0.tgz", - "integrity": "sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==" - }, - "json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" - }, - "json-stringify-safe": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", - "integrity": "sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==" - }, - "jsonfile": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", - "integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==", - "requires": { - "graceful-fs": "^4.1.6" - } - }, - "jsonwebtoken": { - "version": "8.5.1", - "resolved": "https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-8.5.1.tgz", - "integrity": "sha512-XjwVfRS6jTMsqYs0EsuJ4LGxXV14zQybNd4L2r0UvbVnSF9Af8x7p5MzbJ90Ioz/9TI41/hTCvznF/loiSzn8w==", - "requires": { - "jws": "^3.2.2", - "lodash.includes": "^4.3.0", - "lodash.isboolean": "^3.0.3", - "lodash.isinteger": "^4.0.4", - "lodash.isnumber": "^3.0.3", - "lodash.isplainobject": "^4.0.6", - "lodash.isstring": "^4.0.1", - "lodash.once": "^4.0.0", - "ms": "^2.1.1", - "semver": "^5.6.0" - }, - "dependencies": { - "jws": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/jws/-/jws-3.2.2.tgz", - "integrity": "sha512-YHlZCB6lMTllWDtSPHz/ZXTsi8S00usEV6v1tjq8tOUZzw7DpSDWVXjXDre6ed1w/pd495ODpHZYSdkRTsa0HA==", - "requires": { - "jwa": "^1.4.1", - "safe-buffer": "^5.0.1" - } - }, - "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" - } - } - }, - "jsprim": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.2.tgz", - "integrity": "sha512-P2bSOMAc/ciLz6DzgjVlGJP9+BrJWu5UDGK70C2iweC5QBIeFf0ZXRvGjEj2uYgrY2MkAAhsSWHDWlFtEroZWw==", - "requires": { - "assert-plus": "1.0.0", - "extsprintf": "1.3.0", - "json-schema": "0.4.0", - "verror": "1.10.0" - } - }, - "jwa": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/jwa/-/jwa-1.4.1.tgz", - "integrity": "sha512-qiLX/xhEEFKUAJ6FiBMbes3w9ATzyk5W7Hvzpa/SLYdxNtng+gcurvrI7TbACjIXlsJyr05/S1oUhZrc63evQA==", - "requires": { - "buffer-equal-constant-time": "1.0.1", - "ecdsa-sig-formatter": "1.0.11", - "safe-buffer": "^5.0.1" - } - }, - "jws": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/jws/-/jws-4.0.0.tgz", - "integrity": "sha512-KDncfTmOZoOMTFG4mBlG0qUIOlc03fmzH+ru6RgYVZhPkyiy/92Owlt/8UEN+a4TXR1FQetfIpJE8ApdvdVxTg==", - "requires": { - "jwa": "^2.0.0", - "safe-buffer": "^5.0.1" - }, - "dependencies": { - "jwa": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/jwa/-/jwa-2.0.0.tgz", - "integrity": "sha512-jrZ2Qx916EA+fq9cEAeCROWPTfCwi1IVHqT2tapuqLEVVDKFDENFw1oL+MwrTvH6msKxsd1YTDVw6uKEcsrLEA==", - "requires": { - "buffer-equal-constant-time": "1.0.1", - "ecdsa-sig-formatter": "1.0.11", - "safe-buffer": "^5.0.1" - } - } - } - }, - "keccak": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/keccak/-/keccak-3.0.2.tgz", - "integrity": "sha512-PyKKjkH53wDMLGrvmRGSNWgmSxZOUqbnXwKL9tmgbFYA1iAYqW21kfR7mZXV0MlESiefxQQE9X9fTa3X+2MPDQ==", - "requires": { - "node-addon-api": "^2.0.0", - "node-gyp-build": "^4.2.0", - "readable-stream": "^3.6.0" - } - }, - "keytar": { - "version": "7.9.0", - "resolved": "https://registry.npmjs.org/keytar/-/keytar-7.9.0.tgz", - "integrity": "sha512-VPD8mtVtm5JNtA2AErl6Chp06JBfy7diFQ7TQQhdpWOl6MrCRB+eRbvAZUsbGQS9kiMq0coJsy0W0vHpDCkWsQ==", - "optional": true, - "requires": { - "node-addon-api": "^4.3.0", - "prebuild-install": "^7.0.1" - }, - "dependencies": { - "node-addon-api": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-4.3.0.tgz", - "integrity": "sha512-73sE9+3UaLYYFmDsFZnqCInzPyh3MqIwZO9cw58yIqAZhONrrabrYyYe3TuIqtIiOuTXVhsGau8hcrhhwSsDIQ==", - "optional": true - } - } - }, - "keyv": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/keyv/-/keyv-3.1.0.tgz", - "integrity": "sha512-9ykJ/46SN/9KPM/sichzQ7OvXyGDYKGTaDlKMGCAlg2UK8KRy4jb0d8sFc+0Tt0YYnThq8X2RZgCg74RPxgcVA==", - "requires": { - "json-buffer": "3.0.0" - } - }, - "kleur": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz", - "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==" - }, - "load-json-file": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-5.3.0.tgz", - "integrity": "sha512-cJGP40Jc/VXUsp8/OrnyKyTZ1y6v/dphm3bioS+RrKXjK2BB6wHUd6JptZEFDGgGahMT+InnZO5i1Ei9mpC8Bw==", - "requires": { - "graceful-fs": "^4.1.15", - "parse-json": "^4.0.0", - "pify": "^4.0.1", - "strip-bom": "^3.0.0", - "type-fest": "^0.3.0" - }, - "dependencies": { - "type-fest": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.3.1.tgz", - "integrity": "sha512-cUGJnCdr4STbePCgqNFbpVNCepa+kAVohJs1sLhxzdH+gnEoOd8VhbYa7pD3zZYGiURWM2xzEII3fQcRizDkYQ==" - } - } - }, - "lodash": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" - }, - "lodash._reinterpolate": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz", - "integrity": "sha512-xYHt68QRoYGjeeM/XOE1uJtvXQAgvszfBhjV4yvsQH0u2i9I6cI6c6/eG4Hh3UAOVn0y/xAXwmTzEay49Q//HA==" - }, - "lodash.assign": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/lodash.assign/-/lodash.assign-4.2.0.tgz", - "integrity": "sha512-hFuH8TY+Yji7Eja3mGiuAxBqLagejScbG8GbG0j6o9vzn0YL14My+ktnqtZgFTosKymC9/44wP6s7xyuLfnClw==" - }, - "lodash.camelcase": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz", - "integrity": "sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA==" - }, - "lodash.includes": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/lodash.includes/-/lodash.includes-4.3.0.tgz", - "integrity": "sha512-W3Bx6mdkRTGtlJISOvVD/lbqjTlPPUDTMnlXZFnVwi9NKJ6tiAk6LVdlhZMm17VZisqhKcgzpO5Wz91PCt5b0w==" - }, - "lodash.isboolean": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/lodash.isboolean/-/lodash.isboolean-3.0.3.tgz", - "integrity": "sha512-Bz5mupy2SVbPHURB98VAcw+aHh4vRV5IPNhILUCsOzRmsTmSQ17jIuqopAentWoehktxGd9e/hbIXq980/1QJg==" - }, - "lodash.isinteger": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/lodash.isinteger/-/lodash.isinteger-4.0.4.tgz", - "integrity": "sha512-DBwtEWN2caHQ9/imiNeEA5ys1JoRtRfY3d7V9wkqtbycnAmTvRRmbHKDV4a0EYc678/dia0jrte4tjYwVBaZUA==" - }, - "lodash.isnumber": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/lodash.isnumber/-/lodash.isnumber-3.0.3.tgz", - "integrity": "sha512-QYqzpfwO3/CWf3XP+Z+tkQsfaLL/EnUlXWVkIk5FUPc4sBdTehEqZONuyRt2P67PXAk+NXmTBcc97zw9t1FQrw==" - }, - "lodash.isplainobject": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz", - "integrity": "sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==" - }, - "lodash.isstring": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/lodash.isstring/-/lodash.isstring-4.0.1.tgz", - "integrity": "sha512-0wJxfxH1wgO3GrbuP+dTTk7op+6L41QCXbGINEmD+ny/G/eCqGzxyCsh7159S+mgDDcoarnBw6PC1PS5+wUGgw==" - }, - "lodash.once": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/lodash.once/-/lodash.once-4.1.1.tgz", - "integrity": "sha512-Sb487aTOCr9drQVL8pIxOzVhafOjZN9UU54hiN8PU3uAiSV7lx1yYNpbNmex2PK6dSJoNTSJUUswT651yww3Mg==" - }, - "lodash.template": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/lodash.template/-/lodash.template-4.5.0.tgz", - "integrity": "sha512-84vYFxIkmidUiFxidA/KjjH9pAycqW+h980j7Fuz5qxRtO9pgB7MDFTdys1N7A5mcucRiDyEq4fusljItR1T/A==", - "requires": { - "lodash._reinterpolate": "^3.0.0", - "lodash.templatesettings": "^4.0.0" - } - }, - "lodash.templatesettings": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/lodash.templatesettings/-/lodash.templatesettings-4.2.0.tgz", - "integrity": "sha512-stgLz+i3Aa9mZgnjr/O+v9ruKZsPsndy7qPZOchbqk2cnTU1ZaldKK+v7m54WoKIyxiuMZTKT2H81F8BeAc3ZQ==", - "requires": { - "lodash._reinterpolate": "^3.0.0" - } - }, - "long": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/long/-/long-4.0.0.tgz", - "integrity": "sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA==" - }, - "lowercase-keys": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.1.tgz", - "integrity": "sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==" - }, - "lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "requires": { - "yallist": "^4.0.0" - } - }, - "map-stream": { - "version": "0.0.7", - "resolved": "https://registry.npmjs.org/map-stream/-/map-stream-0.0.7.tgz", - "integrity": "sha512-C0X0KQmGm3N2ftbTGBhSyuydQ+vV1LC3f3zPvT3RXHXNZrvfPZcoXp/N5DOa8vedX/rTMm2CjTtivFg2STJMRQ==" - }, - "md5.js": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz", - "integrity": "sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==", - "requires": { - "hash-base": "^3.0.0", - "inherits": "^2.0.1", - "safe-buffer": "^5.1.2" - } - }, - "media-typer": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", - "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==" - }, - "merge-descriptors": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", - "integrity": "sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==" - }, - "merge2": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", - "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==" - }, - "methods": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", - "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==" - }, - "micromatch": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", - "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", - "requires": { - "braces": "^3.0.2", - "picomatch": "^2.3.1" - } - }, - "miller-rabin": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.1.tgz", - "integrity": "sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==", - "requires": { - "bn.js": "^4.0.0", - "brorand": "^1.0.1" - } - }, - "mime": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", - "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==" - }, - "mime-db": { - "version": "1.52.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", - "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==" - }, - "mime-types": { - "version": "2.1.35", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", - "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", - "requires": { - "mime-db": "1.52.0" - } - }, - "mimic-fn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", - "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==" - }, - "mimic-response": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz", - "integrity": "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==" - }, - "min-document": { - "version": "2.19.0", - "resolved": "https://registry.npmjs.org/min-document/-/min-document-2.19.0.tgz", - "integrity": "sha512-9Wy1B3m3f66bPPmU5hdA4DR4PB2OfDU/+GS3yAB7IQozE3tqXaVv2zOjgla7MEGSRv95+ILmOuvhLkOK6wJtCQ==", - "requires": { - "dom-walk": "^0.1.0" - } - }, - "mingo": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/mingo/-/mingo-1.3.3.tgz", - "integrity": "sha512-Y4wGTD/M7AMqF8QxKaBGps+axq/Z48hdtRAeiKtInkEXMLzUWUwT0OPDzrB26xrav9GF1AOYJfwVWPcLwnkgTA==" - }, - "minimalistic-assert": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", - "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==" - }, - "minimalistic-crypto-utils": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz", - "integrity": "sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg==" - }, - "minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "optional": true, - "requires": { - "brace-expansion": "^1.1.7" - } - }, - "minimist": { - "version": "1.2.6", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz", - "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==" - }, - "minipass": { - "version": "2.9.0", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-2.9.0.tgz", - "integrity": "sha512-wxfUjg9WebH+CUDX/CdbRlh5SmfZiy/hpkxaRI16Y9W56Pa75sWgd/rvFilSgrauD9NyFymP/+JFV3KwzIsJeg==", - "requires": { - "safe-buffer": "^5.1.2", - "yallist": "^3.0.0" - }, - "dependencies": { - "yallist": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", - "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==" - } - } - }, - "minizlib": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-1.3.3.tgz", - "integrity": "sha512-6ZYMOEnmVsdCeTJVE0W9ZD+pVnE8h9Hma/iOwwRDsdQoePpoX56/8B6z3P9VNwppJuBKNRuFDRNRqRWexT9G9Q==", - "requires": { - "minipass": "^2.9.0" - } - }, - "mkdirp": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", - "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==" - }, - "mkdirp-classic": { - "version": "0.5.3", - "resolved": "https://registry.npmjs.org/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz", - "integrity": "sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==" - }, - "mkdirp-promise": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/mkdirp-promise/-/mkdirp-promise-5.0.1.tgz", - "integrity": "sha512-Hepn5kb1lJPtVW84RFT40YG1OddBNTOVUZR2bzQUHc+Z03en8/3uX0+060JDhcEzyO08HmipsN9DcnFMxhIL9w==", - "requires": { - "mkdirp": "*" - } - }, - "mock-fs": { - "version": "4.14.0", - "resolved": "https://registry.npmjs.org/mock-fs/-/mock-fs-4.14.0.tgz", - "integrity": "sha512-qYvlv/exQ4+svI3UOvPUpLDF0OMX5euvUH0Ny4N5QyRyhNdgAgUrVH3iUINSzEPLvx0kbo/Bp28GJKIqvE7URw==" - }, - "moment": { - "version": "2.29.4", - "resolved": "https://registry.npmjs.org/moment/-/moment-2.29.4.tgz", - "integrity": "sha512-5LC9SOxjSc2HF6vO2CyuTDNivEdoz2IvyJJGj6X8DJ0eFyfszE0QiEd+iXmBvUP3WHxSjFH/vIsA0EN00cgr8w==" - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" - }, - "msal": { - "version": "1.4.18", - "resolved": "https://registry.npmjs.org/msal/-/msal-1.4.18.tgz", - "integrity": "sha512-QyWMWrZqpwtK6LEqhwtbikxIWqA1EOcdMvDeIDjIXdGU29wM4orwq538sPe1+JfKDIgPmJj1Fgi5B7luaw/IyA==", - "requires": { - "tslib": "^1.9.3" - } - }, - "multibase": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/multibase/-/multibase-0.6.1.tgz", - "integrity": "sha512-pFfAwyTjbbQgNc3G7D48JkJxWtoJoBMaR4xQUOuB8RnCgRqaYmWNFeJTTvrJ2w51bjLq2zTby6Rqj9TQ9elSUw==", - "requires": { - "base-x": "^3.0.8", - "buffer": "^5.5.0" - } - }, - "multicodec": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/multicodec/-/multicodec-0.5.7.tgz", - "integrity": "sha512-PscoRxm3f+88fAtELwUnZxGDkduE2HD9Q6GHUOywQLjOGT/HAdhjLDYNZ1e7VR0s0TP0EwZ16LNUTFpoBGivOA==", - "requires": { - "varint": "^5.0.0" - } - }, - "multihashes": { - "version": "0.4.21", - "resolved": "https://registry.npmjs.org/multihashes/-/multihashes-0.4.21.tgz", - "integrity": "sha512-uVSvmeCWf36pU2nB4/1kzYZjsXD9vofZKpgudqkceYY5g2aZZXJ5r9lxuzoRLl1OAp28XljXsEJ/X/85ZsKmKw==", - "requires": { - "buffer": "^5.5.0", - "multibase": "^0.7.0", - "varint": "^5.0.0" - }, - "dependencies": { - "multibase": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/multibase/-/multibase-0.7.0.tgz", - "integrity": "sha512-TW8q03O0f6PNFTQDvh3xxH03c8CjGaaYrjkl9UQPG6rz53TQzzxJVCIWVjzcbN/Q5Y53Zd0IBQBMVktVgNx4Fg==", - "requires": { - "base-x": "^3.0.8", - "buffer": "^5.5.0" - } - } - } - }, - "mute-stream": { - "version": "0.0.8", - "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz", - "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==" - }, - "mv": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/mv/-/mv-2.1.1.tgz", - "integrity": "sha512-at/ZndSy3xEGJ8i0ygALh8ru9qy7gWW1cmkaqBN29JmMlIvM//MEO9y1sk/avxuwnPcfhkejkLsuPxH81BrkSg==", - "optional": true, - "requires": { - "mkdirp": "~0.5.1", - "ncp": "~2.0.0", - "rimraf": "~2.4.0" - }, - "dependencies": { - "mkdirp": { - "version": "0.5.6", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", - "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", - "optional": true, - "requires": { - "minimist": "^1.2.6" - } - } - } - }, - "nan": { - "version": "2.16.0", - "resolved": "https://registry.npmjs.org/nan/-/nan-2.16.0.tgz", - "integrity": "sha512-UdAqHyFngu7TfQKsCBgAA6pWDkT8MAO7d0jyOecVhN5354xbLqdn8mV9Tat9gepAupm0bt2DbeaSC8vS52MuFA==" - }, - "nano-json-stream-parser": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/nano-json-stream-parser/-/nano-json-stream-parser-0.1.2.tgz", - "integrity": "sha512-9MqxMH/BSJC7dnLsEMPyfN5Dvoo49IsPFYMcHw3Bcfc2kN0lpHRBSzlMSVx4HGyJ7s9B31CyBTVehWJoQ8Ctew==" - }, - "napi-build-utils": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/napi-build-utils/-/napi-build-utils-1.0.2.tgz", - "integrity": "sha512-ONmRUqK7zj7DWX0D9ADe03wbwOBZxNAfF20PlGfCWQcD3+/MakShIHrMqx9YwPTfxDdF1zLeL+RGZiR9kGMLdg==" - }, - "natural-orderby": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/natural-orderby/-/natural-orderby-2.0.3.tgz", - "integrity": "sha512-p7KTHxU0CUrcOXe62Zfrb5Z13nLvPhSWR/so3kFulUQU0sgUll2Z0LwpsLN351eOOD+hRGu/F1g+6xDfPeD++Q==" - }, - "ncp": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ncp/-/ncp-2.0.0.tgz", - "integrity": "sha512-zIdGUrPRFTUELUvr3Gmc7KZ2Sw/h1PiVM0Af/oHB6zgnV1ikqSfRk+TOufi79aHYCW3NiOXmr1BP5nWbzojLaA==", - "optional": true - }, - "negotiator": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", - "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==" - }, - "next-tick": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.1.0.tgz", - "integrity": "sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ==" - }, - "nice-try": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", - "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==" - }, - "node-abi": { - "version": "3.40.0", - "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-3.40.0.tgz", - "integrity": "sha512-zNy02qivjjRosswoYmPi8hIKJRr8MpQyeKT6qlcq/OnOgA3Rhoae+IYOqsM9V5+JnHWmxKnWOT2GxvtqdtOCXA==", - "optional": true, - "requires": { - "semver": "^7.3.5" - } - }, - "node-addon-api": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-2.0.2.tgz", - "integrity": "sha512-Ntyt4AIXyaLIuMHF6IOoTakB3K+RWxwtsHNRxllEoA6vPwP9o4866g6YWDLUdnucilZhmkxiHwHr11gAENw+QA==" - }, - "node-fetch": { - "version": "2.6.7", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz", - "integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==", - "requires": { - "whatwg-url": "^5.0.0" - } - }, - "node-gyp-build": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.2.3.tgz", - "integrity": "sha512-MN6ZpzmfNCRM+3t57PTJHgHyw/h4OWnZ6mR8P5j/uZtqQr46RRuDE/P+g3n0YR/AiYXeWixZZzaip77gdICfRg==" - }, - "node-hid": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/node-hid/-/node-hid-1.3.2.tgz", - "integrity": "sha512-dRFRpCAoZvMSVN+GYjtbA7D86GPBEAvyv262CV60NF18s/KgtKAGSqHUm677KZtf2rUvBkbccp9QhCXy/0gBmg==", - "requires": { - "bindings": "^1.5.0", - "nan": "^2.14.0", - "node-abi": "^2.19.3", - "prebuild-install": "^6.0.0" - }, - "dependencies": { - "decompress-response": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-4.2.1.tgz", - "integrity": "sha512-jOSne2qbyE+/r8G1VU+G/82LBs2Fs4LAsTiLSHOCOMZQl2OKZ6i8i4IyHemTe+/yIXOtTcRQMzPcgyhoFlqPkw==", - "requires": { - "mimic-response": "^2.0.0" - } - }, - "detect-libc": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-1.0.3.tgz", - "integrity": "sha512-pGjwhsmsp4kL2RTz08wcOlGN83otlqHeD/Z5T8GXZB+/YcpQ/dgo+lbU8ZsGxV0HIvqqxo9l7mqYwyYMD9bKDg==" - }, - "mimic-response": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-2.1.0.tgz", - "integrity": "sha512-wXqjST+SLt7R009ySCglWBCFpjUygmCIfD790/kVbiGmUgfYGuB14PiTd5DwVxSV4NcYHjzMkoj5LjQZwTQLEA==" - }, - "node-abi": { - "version": "2.30.1", - "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-2.30.1.tgz", - "integrity": "sha512-/2D0wOQPgaUWzVSVgRMx+trKJRC2UG4SUc4oCJoXx9Uxjtp0Vy3/kt7zcbxHF8+Z/pK3UloLWzBISg72brfy1w==", - "requires": { - "semver": "^5.4.1" - } - }, - "prebuild-install": { - "version": "6.1.4", - "resolved": "https://registry.npmjs.org/prebuild-install/-/prebuild-install-6.1.4.tgz", - "integrity": "sha512-Z4vpywnK1lBg+zdPCVCsKq0xO66eEV9rWo2zrROGGiRS4JtueBOdlB1FnY8lcy7JsUud/Q3ijUxyWN26Ika0vQ==", - "requires": { - "detect-libc": "^1.0.3", - "expand-template": "^2.0.3", - "github-from-package": "0.0.0", - "minimist": "^1.2.3", - "mkdirp-classic": "^0.5.3", - "napi-build-utils": "^1.0.1", - "node-abi": "^2.21.0", - "npmlog": "^4.0.1", - "pump": "^3.0.0", - "rc": "^1.2.7", - "simple-get": "^3.0.3", - "tar-fs": "^2.0.0", - "tunnel-agent": "^0.6.0" - } - }, - "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" - }, - "simple-get": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/simple-get/-/simple-get-3.1.1.tgz", - "integrity": "sha512-CQ5LTKGfCpvE1K0n2us+kuMPbk/q0EKl82s4aheV9oXjFEz6W/Y7oQFVJuU6QG77hRT4Ghb5RURteF5vnWjupA==", - "requires": { - "decompress-response": "^4.2.0", - "once": "^1.3.1", - "simple-concat": "^1.0.0" - } - } - } - }, - "normalize-url": { - "version": "4.5.1", - "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-4.5.1.tgz", - "integrity": "sha512-9UZCFRHQdNrfTpGg8+1INIg93B6zE0aXMVFkw1WFwvO4SlZywU6aLg5Of0Ap/PgcbSw4LNxvMWXMeugwMCX0AA==" - }, - "npm-run-path": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", - "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", - "requires": { - "path-key": "^3.0.0" - }, - "dependencies": { - "path-key": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==" - } - } - }, - "npmlog": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz", - "integrity": "sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==", - "requires": { - "are-we-there-yet": "~1.1.2", - "console-control-strings": "~1.1.0", - "gauge": "~2.7.3", - "set-blocking": "~2.0.0" - } - }, - "number-is-nan": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", - "integrity": "sha512-4jbtZXNAsfZbAHiiqjLPBiCl16dES1zI4Hpzzxw61Tk+loF+sBDBKx1ICKKKwIqQ7M0mFn1TmkN7euSncWgHiQ==" - }, - "number-to-bn": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/number-to-bn/-/number-to-bn-1.7.0.tgz", - "integrity": "sha512-wsJ9gfSz1/s4ZsJN01lyonwuxA1tml6X1yBDnfpMglypcBRFZZkus26EdPSlqS5GJfYddVZa22p3VNb3z5m5Ig==", - "requires": { - "bn.js": "4.11.6", - "strip-hex-prefix": "1.0.0" - }, - "dependencies": { - "bn.js": { - "version": "4.11.6", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.6.tgz", - "integrity": "sha512-XWwnNNFCuuSQ0m3r3C4LE3EiORltHd9M05pq6FOlVeiophzRbMo50Sbz1ehl8K3Z+jw9+vmgnXefY1hz8X+2wA==" - } - } - }, - "oauth-sign": { - "version": "0.9.0", - "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", - "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==" - }, - "object-assign": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==" - }, - "object-inspect": { - "version": "1.12.2", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.2.tgz", - "integrity": "sha512-z+cPxW0QGUp0mcqcsgQyLVRDoXFQbXOwBaqyF7VIgI4TWNQsDHrBpUQslRmIfAoYWdYzs6UlKJtB2XJpTaNSpQ==" - }, - "object-keys": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", - "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==" - }, - "object-treeify": { - "version": "1.1.33", - "resolved": "https://registry.npmjs.org/object-treeify/-/object-treeify-1.1.33.tgz", - "integrity": "sha512-EFVjAYfzWqWsBMRHPMAXLCDIJnpMhdWAqR7xG6M6a2cs6PMFpl/+Z20w9zDW4vkxOFfddegBKq9Rehd0bxWE7A==" - }, - "object.assign": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.3.tgz", - "integrity": "sha512-ZFJnX3zltyjcYJL0RoCJuzb+11zWGyaDbjgxZbdV7rFEcHQuYxrZqhow67aA7xpes6LhojyFDaBKAFfogQrikA==", - "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "has-symbols": "^1.0.3", - "object-keys": "^1.1.1" - } - }, - "oboe": { - "version": "2.1.5", - "resolved": "https://registry.npmjs.org/oboe/-/oboe-2.1.5.tgz", - "integrity": "sha512-zRFWiF+FoicxEs3jNI/WYUrVEgA7DeET/InK0XQuudGHRg8iIob3cNPrJTKaz4004uaA9Pbe+Dwa8iluhjLZWA==", - "requires": { - "http-https": "^1.0.0" - } - }, - "on-finished": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", - "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", - "requires": { - "ee-first": "1.1.1" - } - }, - "once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", - "requires": { - "wrappy": "1" - } - }, - "onetime": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", - "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", - "requires": { - "mimic-fn": "^2.1.0" - } - }, - "open": { - "version": "7.4.2", - "resolved": "https://registry.npmjs.org/open/-/open-7.4.2.tgz", - "integrity": "sha512-MVHddDVweXZF3awtlAS+6pgKLlm/JgxZ90+/NBurBoQctVOOB/zDdVjcyPzQ+0laDGbsWgrRkflI65sQeOgT9Q==", - "requires": { - "is-docker": "^2.0.0", - "is-wsl": "^2.1.1" - } - }, - "os-tmpdir": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", - "integrity": "sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==" - }, - "p-cancelable": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-1.1.0.tgz", - "integrity": "sha512-s73XxOZ4zpt1edZYZzvhqFa6uvQc1vwUa0K0BdtIZgQMAJj9IbebH+JkgKZc9h+B05PKHLOTl4ajG1BmNrVZlw==" - }, - "p-finally": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", - "integrity": "sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow==" - }, - "p-timeout": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/p-timeout/-/p-timeout-1.2.1.tgz", - "integrity": "sha512-gb0ryzr+K2qFqFv6qi3khoeqMZF/+ajxQipEF6NteZVnvz9tzdsfAVj3lYtn1gAXvH5lfLwfxEII799gt/mRIA==", - "requires": { - "p-finally": "^1.0.0" - } - }, - "parse-asn1": { - "version": "5.1.6", - "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.6.tgz", - "integrity": "sha512-RnZRo1EPU6JBnra2vGHj0yhp6ebyjBZpmUCLHWiFhxlzvBCCpAuZ7elsBp1PVAbQN0/04VD/19rfzlBSwLstMw==", - "requires": { - "asn1.js": "^5.2.0", - "browserify-aes": "^1.0.0", - "evp_bytestokey": "^1.0.0", - "pbkdf2": "^3.0.3", - "safe-buffer": "^5.1.1" - } - }, - "parse-headers": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/parse-headers/-/parse-headers-2.0.5.tgz", - "integrity": "sha512-ft3iAoLOB/MlwbNXgzy43SWGP6sQki2jQvAyBg/zDFAgr9bfNWZIUj42Kw2eJIl8kEi4PbgE6U1Zau/HwI75HA==" - }, - "parse-json": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", - "integrity": "sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw==", - "requires": { - "error-ex": "^1.3.1", - "json-parse-better-errors": "^1.0.1" - } - }, - "parseurl": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", - "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==" - }, - "password-prompt": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/password-prompt/-/password-prompt-1.1.2.tgz", - "integrity": "sha512-bpuBhROdrhuN3E7G/koAju0WjVw9/uQOG5Co5mokNj0MiOSBVZS1JTwM4zl55hu0WFmIEFvO9cU9sJQiBIYeIA==", - "requires": { - "ansi-escapes": "^3.1.0", - "cross-spawn": "^6.0.5" - }, - "dependencies": { - "ansi-escapes": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.2.0.tgz", - "integrity": "sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ==" - } - } - }, - "path": { - "version": "0.12.7", - "resolved": "https://registry.npmjs.org/path/-/path-0.12.7.tgz", - "integrity": "sha512-aXXC6s+1w7otVF9UletFkFcDsJeO7lSZBPUQhtb5O0xJe8LtYhj/GxldoL09bBj9+ZmE2hNoHqQSFMN5fikh4Q==", - "requires": { - "process": "^0.11.1", - "util": "^0.10.3" - }, - "dependencies": { - "inherits": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==" - }, - "util": { - "version": "0.10.4", - "resolved": "https://registry.npmjs.org/util/-/util-0.10.4.tgz", - "integrity": "sha512-0Pm9hTQ3se5ll1XihRic3FDIku70C+iHUdT/W926rSgHV5QgXsYbKZN8MSC3tJtSkhuROzvsQjAaFENRXr+19A==", - "requires": { - "inherits": "2.0.3" - } - } - } - }, - "path-is-absolute": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", - "optional": true - }, - "path-key": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", - "integrity": "sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==" - }, - "path-to-regexp": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", - "integrity": "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==" - }, - "path-type": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", - "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==" - }, - "pause-stream": { - "version": "0.0.11", - "resolved": "https://registry.npmjs.org/pause-stream/-/pause-stream-0.0.11.tgz", - "integrity": "sha512-e3FBlXLmN/D1S+zHzanP4E/4Z60oFAa3O051qt1pxa7DEJWKAyil6upYVXCWadEnuoqa4Pkc9oUx9zsxYeRv8A==", - "requires": { - "through": "~2.3" - } - }, - "pbkdf2": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.1.2.tgz", - "integrity": "sha512-iuh7L6jA7JEGu2WxDwtQP1ddOpaJNC4KlDEFfdQajSGgGPNi4OyDc2R7QnbY2bR9QjBVGwgvTdNJZoE7RaxUMA==", - "requires": { - "create-hash": "^1.1.2", - "create-hmac": "^1.1.4", - "ripemd160": "^2.0.1", - "safe-buffer": "^5.0.1", - "sha.js": "^2.4.8" - } - }, - "performance-now": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", - "integrity": "sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow==" - }, - "picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==" - }, - "pify": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", - "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==" - }, - "prebuild-install": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/prebuild-install/-/prebuild-install-7.1.1.tgz", - "integrity": "sha512-jAXscXWMcCK8GgCoHOfIr0ODh5ai8mj63L2nWrjuAgXE6tDyYGnx4/8o/rCgU+B4JSyZBKbeZqzhtwtC3ovxjw==", - "optional": true, - "requires": { - "detect-libc": "^2.0.0", - "expand-template": "^2.0.3", - "github-from-package": "0.0.0", - "minimist": "^1.2.3", - "mkdirp-classic": "^0.5.3", - "napi-build-utils": "^1.0.1", - "node-abi": "^3.3.0", - "pump": "^3.0.0", - "rc": "^1.2.7", - "simple-get": "^4.0.0", - "tar-fs": "^2.0.0", - "tunnel-agent": "^0.6.0" - }, - "dependencies": { - "decompress-response": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz", - "integrity": "sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==", - "optional": true, - "requires": { - "mimic-response": "^3.1.0" - } - }, - "mimic-response": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-3.1.0.tgz", - "integrity": "sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==", - "optional": true - }, - "simple-get": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/simple-get/-/simple-get-4.0.1.tgz", - "integrity": "sha512-brv7p5WgH0jmQJr1ZDDfKDOSeWWg+OVypG99A/5vYGPqJ6pxiaHLy8nxtFjBA7oMa01ebA9gfh1uMCFqOuXxvA==", - "optional": true, - "requires": { - "decompress-response": "^6.0.0", - "once": "^1.3.1", - "simple-concat": "^1.0.0" - } - } - } - }, - "prepend-http": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-2.0.0.tgz", - "integrity": "sha512-ravE6m9Atw9Z/jjttRUZ+clIXogdghyZAuWJ3qEzjT+jI/dL1ifAqhZeC5VHzQp1MSt1+jxKkFNemj/iO7tVUA==" - }, - "process": { - "version": "0.11.10", - "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", - "integrity": "sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==" - }, - "process-nextick-args": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", - "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" - }, - "promise-polyfill": { - "version": "8.1.3", - "resolved": "https://registry.npmjs.org/promise-polyfill/-/promise-polyfill-8.1.3.tgz", - "integrity": "sha512-MG5r82wBzh7pSKDRa9y+vllNHz3e3d4CNj1PQE4BQYxLme0gKYYBm9YENq+UkEikyZ0XbiGWxYlVw3Rl9O/U8g==" - }, - "prompts": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz", - "integrity": "sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==", - "requires": { - "kleur": "^3.0.3", - "sisteransi": "^1.0.5" - } - }, - "protobufjs": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-7.0.0.tgz", - "integrity": "sha512-ffNIEm+quOcYtQvHdW406v1NQmZSuqVklxsXk076BtuFnlYZfigLU+JOMrTD8TUOyqHYbRI/fSVNvgd25YeN3w==", - "requires": { - "@protobufjs/aspromise": "^1.1.2", - "@protobufjs/base64": "^1.1.2", - "@protobufjs/codegen": "^2.0.4", - "@protobufjs/eventemitter": "^1.1.0", - "@protobufjs/fetch": "^1.1.0", - "@protobufjs/float": "^1.0.2", - "@protobufjs/inquire": "^1.1.0", - "@protobufjs/path": "^1.1.2", - "@protobufjs/pool": "^1.1.0", - "@protobufjs/utf8": "^1.1.0", - "@types/long": "^4.0.1", - "@types/node": ">=13.7.0", - "long": "^5.0.0" - }, - "dependencies": { - "@types/node": { - "version": "18.7.1", - "resolved": "https://registry.npmjs.org/@types/node/-/node-18.7.1.tgz", - "integrity": "sha512-GKX1Qnqxo4S+Z/+Z8KKPLpH282LD7jLHWJcVryOflnsnH+BtSDfieR6ObwBMwpnNws0bUK8GI7z0unQf9bARNQ==" - }, - "long": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/long/-/long-5.2.0.tgz", - "integrity": "sha512-9RTUNjK60eJbx3uz+TEGF7fUr29ZDxR5QzXcyDpeSfeH28S9ycINflOgOlppit5U+4kNTe83KQnMEerw7GmE8w==" - } - } - }, - "proxy-addr": { - "version": "2.0.7", - "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", - "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", - "requires": { - "forwarded": "0.2.0", - "ipaddr.js": "1.9.1" - } - }, - "psl": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/psl/-/psl-1.9.0.tgz", - "integrity": "sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==" - }, - "public-encrypt": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.3.tgz", - "integrity": "sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q==", - "requires": { - "bn.js": "^4.1.0", - "browserify-rsa": "^4.0.0", - "create-hash": "^1.1.0", - "parse-asn1": "^5.0.0", - "randombytes": "^2.0.1", - "safe-buffer": "^5.1.2" - } - }, - "pump": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", - "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", - "requires": { - "end-of-stream": "^1.1.0", - "once": "^1.3.1" - } - }, - "punycode": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", - "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==" - }, - "pvutils": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/pvutils/-/pvutils-1.1.3.tgz", - "integrity": "sha512-pMpnA0qRdFp32b1sJl1wOJNxZLQ2cbQx+k6tjNtZ8CpvVhNqEPRgivZ2WOUev2YMajecdH7ctUPDvEe87nariQ==" - }, - "qs": { - "version": "6.10.3", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.10.3.tgz", - "integrity": "sha512-wr7M2E0OFRfIfJZjKGieI8lBKb7fRCH4Fv5KNPEs7gJ8jadvotdsS08PzOKR7opXhZ/Xkjtt3WF9g38drmyRqQ==", - "requires": { - "side-channel": "^1.0.4" - } - }, - "query-string": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/query-string/-/query-string-5.1.1.tgz", - "integrity": "sha512-gjWOsm2SoGlgLEdAGt7a6slVOk9mGiXmPFMqrEhLQ68rhQuBnpfs3+EmlvqKyxnCo9/PPlF+9MtY02S1aFg+Jw==", - "requires": { - "decode-uri-component": "^0.2.0", - "object-assign": "^4.1.0", - "strict-uri-encode": "^1.0.0" - } - }, - "queue-microtask": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", - "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==" - }, - "randombytes": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", - "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", - "requires": { - "safe-buffer": "^5.1.0" - } - }, - "randomfill": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/randomfill/-/randomfill-1.0.4.tgz", - "integrity": "sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==", - "requires": { - "randombytes": "^2.0.5", - "safe-buffer": "^5.1.0" - } - }, - "range-parser": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", - "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==" - }, - "raw-body": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.1.tgz", - "integrity": "sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==", - "requires": { - "bytes": "3.1.2", - "http-errors": "2.0.0", - "iconv-lite": "0.4.24", - "unpipe": "1.0.0" - } - }, - "rc": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", - "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", - "requires": { - "deep-extend": "^0.6.0", - "ini": "~1.3.0", - "minimist": "^1.2.0", - "strip-json-comments": "~2.0.1" - } - }, - "readable-stream": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", - "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", - "requires": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - } - }, - "redeyed": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/redeyed/-/redeyed-2.1.1.tgz", - "integrity": "sha512-FNpGGo1DycYAdnrKFxCMmKYgo/mILAqtRYbkdQD8Ep/Hk2PQ5+aEAEx+IU713RTDmuBaH0c8P5ZozurNu5ObRQ==", - "requires": { - "esprima": "~4.0.0" - } - }, - "regexp.prototype.flags": { - "version": "1.4.3", - "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.4.3.tgz", - "integrity": "sha512-fjggEOO3slI6Wvgjwflkc4NFRCTZAu5CnNfBd5qOMYhWdn67nJBBu34/TkD++eeFmd8C9r9jfXJ27+nSiRkSUA==", - "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "functions-have-names": "^1.2.2" - } - }, - "request": { - "version": "2.88.2", - "resolved": "https://registry.npmjs.org/request/-/request-2.88.2.tgz", - "integrity": "sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==", - "requires": { - "aws-sign2": "~0.7.0", - "aws4": "^1.8.0", - "caseless": "~0.12.0", - "combined-stream": "~1.0.6", - "extend": "~3.0.2", - "forever-agent": "~0.6.1", - "form-data": "~2.3.2", - "har-validator": "~5.1.3", - "http-signature": "~1.2.0", - "is-typedarray": "~1.0.0", - "isstream": "~0.1.2", - "json-stringify-safe": "~5.0.1", - "mime-types": "~2.1.19", - "oauth-sign": "~0.9.0", - "performance-now": "^2.1.0", - "qs": "~6.5.2", - "safe-buffer": "^5.1.2", - "tough-cookie": "~2.5.0", - "tunnel-agent": "^0.6.0", - "uuid": "^3.3.2" - }, - "dependencies": { - "qs": { - "version": "6.5.3", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.3.tgz", - "integrity": "sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA==" - } - } - }, - "require-directory": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", - "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==" - }, - "responselike": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/responselike/-/responselike-1.0.2.tgz", - "integrity": "sha512-/Fpe5guzJk1gPqdJLJR5u7eG/gNY4nImjbRDaVWVMRhne55TCmj2i9Q+54PBRfatRC8v/rIiv9BN0pMd9OV5EQ==", - "requires": { - "lowercase-keys": "^1.0.0" - } - }, - "restore-cursor": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", - "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", - "requires": { - "onetime": "^5.1.0", - "signal-exit": "^3.0.2" - } - }, - "reusify": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", - "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==" - }, - "rimraf": { - "version": "2.4.5", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.4.5.tgz", - "integrity": "sha512-J5xnxTyqaiw06JjMftq7L9ouA448dw/E7dKghkP9WpKNuwmARNNg+Gk8/u5ryb9N/Yo2+z3MCwuqFK/+qPOPfQ==", - "optional": true, - "requires": { - "glob": "^6.0.1" - } - }, - "ripemd160": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.2.tgz", - "integrity": "sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==", - "requires": { - "hash-base": "^3.0.0", - "inherits": "^2.0.1" - } - }, - "rlp": { - "version": "2.2.7", - "resolved": "https://registry.npmjs.org/rlp/-/rlp-2.2.7.tgz", - "integrity": "sha512-d5gdPmgQ0Z+AklL2NVXr/IoSjNZFfTVvQWzL/AM2AOcSzYP2xjlb0AC8YyCLc41MSNf6P6QVtjgPdmVtzb+4lQ==", - "requires": { - "bn.js": "^5.2.0" - }, - "dependencies": { - "bn.js": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz", - "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==" - } - } - }, - "run-async": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.4.1.tgz", - "integrity": "sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==" - }, - "run-parallel": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", - "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", - "requires": { - "queue-microtask": "^1.2.2" - } - }, - "rxjs": { - "version": "6.6.7", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz", - "integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==", - "requires": { - "tslib": "^1.9.0" - } - }, - "safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==" - }, - "safe-json-stringify": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/safe-json-stringify/-/safe-json-stringify-1.2.0.tgz", - "integrity": "sha512-gH8eh2nZudPQO6TytOvbxnuhYBOvDBBLW52tz5q6X58lJcd/tkmqFR+5Z9adS8aJtURSXWThWy/xJtJwixErvg==", - "optional": true - }, - "safer-buffer": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" - }, - "save": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/save/-/save-2.5.0.tgz", - "integrity": "sha512-xiVLpKVbx8EmW0HDkNRjYL271OnIRCo8VGWAEq6/K+E0dgNrwKV2xvKXdfPj6HGYA6l760800LyewSY3ooljCg==", - "requires": { - "async": "^3.2.2", - "event-stream": "^4.0.1", - "lodash.assign": "^4.2.0", - "mingo": "1" - } - }, - "scrypt-js": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/scrypt-js/-/scrypt-js-3.0.1.tgz", - "integrity": "sha512-cdwTTnqPu0Hyvf5in5asVdZocVDTNRmR7XEcJuIzMjJeSHybHl7vpB66AzwTaIg6CLSbtjcxc8fqcySfnTkccA==" - }, - "secp256k1": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/secp256k1/-/secp256k1-4.0.2.tgz", - "integrity": "sha512-UDar4sKvWAksIlfX3xIaQReADn+WFnHvbVujpcbr+9Sf/69odMwy2MUsz5CKLQgX9nsIyrjuxL2imVyoNHa3fg==", - "requires": { - "elliptic": "^6.5.2", - "node-addon-api": "^2.0.0", - "node-gyp-build": "^4.2.0" - } - }, - "semver": { - "version": "7.3.7", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", - "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", - "requires": { - "lru-cache": "^6.0.0" - } - }, - "send": { - "version": "0.18.0", - "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz", - "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==", - "requires": { - "debug": "2.6.9", - "depd": "2.0.0", - "destroy": "1.2.0", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "etag": "~1.8.1", - "fresh": "0.5.2", - "http-errors": "2.0.0", - "mime": "1.6.0", - "ms": "2.1.3", - "on-finished": "2.4.1", - "range-parser": "~1.2.1", - "statuses": "2.0.1" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "requires": { - "ms": "2.0.0" - }, - "dependencies": { - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" - } - } - }, - "ms": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" - } - } - }, - "serve-static": { - "version": "1.15.0", - "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz", - "integrity": "sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==", - "requires": { - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "parseurl": "~1.3.3", - "send": "0.18.0" - } - }, - "servify": { - "version": "0.1.12", - "resolved": "https://registry.npmjs.org/servify/-/servify-0.1.12.tgz", - "integrity": "sha512-/xE6GvsKKqyo1BAY+KxOWXcLpPsUUyji7Qg3bVD7hh1eRze5bR1uYiuDA/k3Gof1s9BTzQZEJK8sNcNGFIzeWw==", - "requires": { - "body-parser": "^1.16.0", - "cors": "^2.8.1", - "express": "^4.14.0", - "request": "^2.79.0", - "xhr": "^2.3.3" - } - }, - "set-blocking": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", - "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==" - }, - "setimmediate": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", - "integrity": "sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==" - }, - "setprototypeof": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", - "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==" - }, - "sha.js": { - "version": "2.4.11", - "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz", - "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==", - "requires": { - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" - } - }, - "shebang-command": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", - "integrity": "sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==", - "requires": { - "shebang-regex": "^1.0.0" - } - }, - "shebang-regex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", - "integrity": "sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==" - }, - "side-channel": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", - "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", - "requires": { - "call-bind": "^1.0.0", - "get-intrinsic": "^1.0.2", - "object-inspect": "^1.9.0" - } - }, - "signal-exit": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", - "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==" - }, - "simple-concat": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/simple-concat/-/simple-concat-1.0.1.tgz", - "integrity": "sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==" - }, - "simple-get": { - "version": "2.8.2", - "resolved": "https://registry.npmjs.org/simple-get/-/simple-get-2.8.2.tgz", - "integrity": "sha512-Ijd/rV5o+mSBBs4F/x9oDPtTx9Zb6X9brmnXvMW4J7IR15ngi9q5xxqWBKU744jTZiaXtxaPL7uHG6vtN8kUkw==", - "requires": { - "decompress-response": "^3.3.0", - "once": "^1.3.1", - "simple-concat": "^1.0.0" - } - }, - "sisteransi": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz", - "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==" - }, - "slash": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", - "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==" - }, - "split": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/split/-/split-1.0.1.tgz", - "integrity": "sha512-mTyOoPbrivtXnwnIxZRFYRrPNtEFKlpB2fvjSnCQUiAA6qAZzqwna5envK4uk6OIeP17CsdF3rSBGYVBsU0Tkg==", - "requires": { - "through": "2" - } - }, - "sprintf-js": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==" - }, - "sshpk": { - "version": "1.17.0", - "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.17.0.tgz", - "integrity": "sha512-/9HIEs1ZXGhSPE8X6Ccm7Nam1z8KcoCqPdI7ecm1N33EzAetWahvQWVqLZtaZQ+IDKX4IyA2o0gBzqIMkAagHQ==", - "requires": { - "asn1": "~0.2.3", - "assert-plus": "^1.0.0", - "bcrypt-pbkdf": "^1.0.0", - "dashdash": "^1.12.0", - "ecc-jsbn": "~0.1.1", - "getpass": "^0.1.1", - "jsbn": "~0.1.0", - "safer-buffer": "^2.0.2", - "tweetnacl": "~0.14.0" - } - }, - "statuses": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", - "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==" - }, - "stoppable": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/stoppable/-/stoppable-1.1.0.tgz", - "integrity": "sha512-KXDYZ9dszj6bzvnEMRYvxgeTHU74QBFL54XKtP3nyMuJ81CFYtABZ3bAzL2EdFUaEwJOBOgENyFj3R7oTzDyyw==" - }, - "stream-combiner": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/stream-combiner/-/stream-combiner-0.2.2.tgz", - "integrity": "sha512-6yHMqgLYDzQDcAkL+tjJDC5nSNuNIx0vZtRZeiPh7Saef7VHX9H5Ijn9l2VIol2zaNYlYEX6KyuT/237A58qEQ==", - "requires": { - "duplexer": "~0.1.1", - "through": "~2.3.4" - } - }, - "strict-uri-encode": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz", - "integrity": "sha512-R3f198pcvnB+5IpnBlRkphuE9n46WyVl8I39W/ZUTZLz4nqSP/oLYUrcnJrw462Ds8he4YKMov2efsTIw1BDGQ==" - }, - "string-width": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", - "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", - "requires": { - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^4.0.0" - }, - "dependencies": { - "is-fullwidth-code-point": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w==" - } - } - }, - "string.prototype.trimend": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.5.tgz", - "integrity": "sha512-I7RGvmjV4pJ7O3kdf+LXFpVfdNOxtCW/2C8f6jNiW4+PQchwxkCDzlk1/7p+Wl4bqFIZeF47qAHXLuHHWKAxog==", - "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.19.5" - } - }, - "string.prototype.trimstart": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.5.tgz", - "integrity": "sha512-THx16TJCGlsN0o6dl2o6ncWUsdgnLRSA23rRE5pyGBw/mLr3Ej/R2LaqCtgP8VNMGZsvMWnf9ooZPyY2bHvUFg==", - "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.19.5" - } - }, - "string_decoder": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", - "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", - "requires": { - "safe-buffer": "~5.2.0" - } - }, - "strip-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha512-4XaJ2zQdCzROZDivEVIDPkcQn8LMFSa8kj8Gxb/Lnwzv9A8VctNZ+lfivC/sV3ivW8ElJTERXZoPBRrZKkNKow==", - "requires": { - "ansi-regex": "^3.0.0" - } - }, - "strip-bom": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", - "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==" - }, - "strip-hex-prefix": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/strip-hex-prefix/-/strip-hex-prefix-1.0.0.tgz", - "integrity": "sha512-q8d4ue7JGEiVcypji1bALTos+0pWtyGlivAWyPuTkHzuTCJqrK9sWxYQZUq6Nq3cuyv3bm734IhHvHtGGURU6A==", - "requires": { - "is-hex-prefixed": "1.0.0" - } - }, - "strip-json-comments": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", - "integrity": "sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==" - }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "requires": { - "has-flag": "^4.0.0" - } - }, - "supports-hyperlinks": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-1.0.1.tgz", - "integrity": "sha512-HHi5kVSefKaJkGYXbDuKbUGRVxqnWGn3J2e39CYcNJEfWciGq2zYtOhXLTlvrOZW1QU7VX67w7fMmWafHX9Pfw==", - "requires": { - "has-flag": "^2.0.0", - "supports-color": "^5.0.0" - }, - "dependencies": { - "has-flag": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz", - "integrity": "sha512-P+1n3MnwjR/Epg9BBo1KT8qbye2g2Ou4sFumihwt6I4tsUX7jnLcX4BTOSKg/B1ZrIYMN9FcEnG4x5a7NB8Eng==" - }, - "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "requires": { - "has-flag": "^3.0.0" - }, - "dependencies": { - "has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==" - } - } - } - } - }, - "swarm-js": { - "version": "0.1.40", - "resolved": "https://registry.npmjs.org/swarm-js/-/swarm-js-0.1.40.tgz", - "integrity": "sha512-yqiOCEoA4/IShXkY3WKwP5PvZhmoOOD8clsKA7EEcRILMkTEYHCQ21HDCAcVpmIxZq4LyZvWeRJ6quIyHk1caA==", - "requires": { - "bluebird": "^3.5.0", - "buffer": "^5.0.5", - "eth-lib": "^0.1.26", - "fs-extra": "^4.0.2", - "got": "^7.1.0", - "mime-types": "^2.1.16", - "mkdirp-promise": "^5.0.1", - "mock-fs": "^4.1.0", - "setimmediate": "^1.0.5", - "tar": "^4.0.2", - "xhr-request": "^1.0.1" - }, - "dependencies": { - "eth-lib": { - "version": "0.1.29", - "resolved": "https://registry.npmjs.org/eth-lib/-/eth-lib-0.1.29.tgz", - "integrity": "sha512-bfttrr3/7gG4E02HoWTDUcDDslN003OlOoBxk9virpAZQ1ja/jDgwkWB8QfJF7ojuEowrqy+lzp9VcJG7/k5bQ==", - "requires": { - "bn.js": "^4.11.6", - "elliptic": "^6.4.0", - "nano-json-stream-parser": "^0.1.2", - "servify": "^0.1.12", - "ws": "^3.0.0", - "xhr-request-promise": "^0.1.2" - } - }, - "fs-extra": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-4.0.3.tgz", - "integrity": "sha512-q6rbdDd1o2mAnQreO7YADIxf/Whx4AHBiRf6d+/cVT8h44ss+lHgxf1FemcqDnQt9X3ct4McHr+JMGlYSsK7Cg==", - "requires": { - "graceful-fs": "^4.1.2", - "jsonfile": "^4.0.0", - "universalify": "^0.1.0" - } - }, - "get-stream": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", - "integrity": "sha512-GlhdIUuVakc8SJ6kK0zAFbiGzRFzNnY4jUuEbV9UROo4Y+0Ny4fjvcZFVTeDA4odpFyOQzaw6hXukJSq/f28sQ==" - }, - "got": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/got/-/got-7.1.0.tgz", - "integrity": "sha512-Y5WMo7xKKq1muPsxD+KmrR8DH5auG7fBdDVueZwETwV6VytKyU9OX/ddpq2/1hp1vIPvVb4T81dKQz3BivkNLw==", - "requires": { - "decompress-response": "^3.2.0", - "duplexer3": "^0.1.4", - "get-stream": "^3.0.0", - "is-plain-obj": "^1.1.0", - "is-retry-allowed": "^1.0.0", - "is-stream": "^1.0.0", - "isurl": "^1.0.0-alpha5", - "lowercase-keys": "^1.0.0", - "p-cancelable": "^0.3.0", - "p-timeout": "^1.1.1", - "safe-buffer": "^5.0.1", - "timed-out": "^4.0.0", - "url-parse-lax": "^1.0.0", - "url-to-options": "^1.0.1" - } - }, - "p-cancelable": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-0.3.0.tgz", - "integrity": "sha512-RVbZPLso8+jFeq1MfNvgXtCRED2raz/dKpacfTNxsx6pLEpEomM7gah6VeHSYV3+vo0OAi4MkArtQcWWXuQoyw==" - }, - "prepend-http": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-1.0.4.tgz", - "integrity": "sha512-PhmXi5XmoyKw1Un4E+opM2KcsJInDvKyuOumcjjw3waw86ZNjHwVUOOWLc4bCzLdcKNaWBH9e99sbWzDQsVaYg==" - }, - "url-parse-lax": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-1.0.0.tgz", - "integrity": "sha512-BVA4lR5PIviy2PMseNd2jbFQ+jwSwQGdJejf5ctd1rEXt0Ypd7yanUK9+lYechVlN5VaTJGsu2U/3MDDu6KgBA==", - "requires": { - "prepend-http": "^1.0.1" - } - } - } - }, - "tar": { - "version": "4.4.19", - "resolved": "https://registry.npmjs.org/tar/-/tar-4.4.19.tgz", - "integrity": "sha512-a20gEsvHnWe0ygBY8JbxoM4w3SJdhc7ZAuxkLqh+nvNQN2IOt0B5lLgM490X5Hl8FF0dl0tOf2ewFYAlIFgzVA==", - "requires": { - "chownr": "^1.1.4", - "fs-minipass": "^1.2.7", - "minipass": "^2.9.0", - "minizlib": "^1.3.3", - "mkdirp": "^0.5.5", - "safe-buffer": "^5.2.1", - "yallist": "^3.1.1" - }, - "dependencies": { - "mkdirp": { - "version": "0.5.6", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", - "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", - "requires": { - "minimist": "^1.2.6" - } - }, - "yallist": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", - "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==" - } - } - }, - "tar-fs": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-2.1.1.tgz", - "integrity": "sha512-V0r2Y9scmbDRLCNex/+hYzvp/zyYjvFbHPNgVTKfQvVrb6guiE/fxP+XblDNR011utopbkex2nM4dHNV6GDsng==", - "requires": { - "chownr": "^1.1.1", - "mkdirp-classic": "^0.5.2", - "pump": "^3.0.0", - "tar-stream": "^2.1.4" - } - }, - "tar-stream": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.2.0.tgz", - "integrity": "sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==", - "requires": { - "bl": "^4.0.3", - "end-of-stream": "^1.4.1", - "fs-constants": "^1.0.0", - "inherits": "^2.0.3", - "readable-stream": "^3.1.1" - } - }, - "through": { - "version": "2.3.8", - "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", - "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==" - }, - "timed-out": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/timed-out/-/timed-out-4.0.1.tgz", - "integrity": "sha512-G7r3AhovYtr5YKOWQkta8RKAPb+J9IsO4uVmzjl8AZwfhs8UcUwTiD6gcJYSgOtzyjvQKrKYn41syHbUWMkafA==" - }, - "tiny-secp256k1": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/tiny-secp256k1/-/tiny-secp256k1-1.1.6.tgz", - "integrity": "sha512-FmqJZGduTyvsr2cF3375fqGHUovSwDi/QytexX1Se4BPuPZpTE5Ftp5fg+EFSuEf3lhZqgCRjEG3ydUQ/aNiwA==", - "requires": { - "bindings": "^1.3.0", - "bn.js": "^4.11.8", - "create-hmac": "^1.1.7", - "elliptic": "^6.4.0", - "nan": "^2.13.2" - } - }, - "tmp": { - "version": "0.0.33", - "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", - "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", - "requires": { - "os-tmpdir": "~1.0.2" - } - }, - "to-readable-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/to-readable-stream/-/to-readable-stream-1.0.0.tgz", - "integrity": "sha512-Iq25XBt6zD5npPhlLVXGFN3/gyR2/qODcKNNyTMd4vbm39HUaOiAM4PMq0eMVC/Tkxz+Zjdsc55g9yyz+Yq00Q==" - }, - "to-regex-range": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", - "requires": { - "is-number": "^7.0.0" - } - }, - "toidentifier": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", - "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==" - }, - "tough-cookie": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz", - "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==", - "requires": { - "psl": "^1.1.28", - "punycode": "^2.1.1" - } - }, - "tr46": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", - "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==" - }, - "treeify": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/treeify/-/treeify-1.1.0.tgz", - "integrity": "sha512-1m4RA7xVAJrSGrrXGs0L3YTwyvBs2S8PbRHaLZAkFw7JR8oIFwYtysxlBZhYIa7xSyiYJKZ3iGrrk55cGA3i9A==" - }, - "tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" - }, - "tunnel-agent": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", - "integrity": "sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==", - "requires": { - "safe-buffer": "^5.0.1" - } - }, - "tweetnacl": { - "version": "0.14.5", - "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", - "integrity": "sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA==" - }, - "type": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/type/-/type-1.2.0.tgz", - "integrity": "sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg==" - }, - "type-fest": { - "version": "0.11.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.11.0.tgz", - "integrity": "sha512-OdjXJxnCN1AvyLSzeKIgXTXxV+99ZuXl3Hpo9XpJAv9MBcHrrJOQ5kV7ypXOuQie+AmWG25hLbiKdwYTifzcfQ==" - }, - "type-is": { - "version": "1.6.18", - "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", - "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", - "requires": { - "media-typer": "0.3.0", - "mime-types": "~2.1.24" - } - }, - "typedarray-to-buffer": { - "version": "3.1.5", - "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz", - "integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==", - "requires": { - "is-typedarray": "^1.0.0" - } - }, - "typeforce": { - "version": "1.18.0", - "resolved": "https://registry.npmjs.org/typeforce/-/typeforce-1.18.0.tgz", - "integrity": "sha512-7uc1O8h1M1g0rArakJdf0uLRSSgFcYexrVoKo+bzJd32gd4gDy2L/Z+8/FjPnU9ydY3pEnVPtr9FyscYY60K1g==" - }, - "ultron": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/ultron/-/ultron-1.1.1.tgz", - "integrity": "sha512-UIEXBNeYmKptWH6z8ZnqTeS8fV74zG0/eRU9VGkpzz+LIJNs8W/zM/L+7ctCkRrgbNnnR0xxw4bKOr0cW0N0Og==" - }, - "unbox-primitive": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz", - "integrity": "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==", - "requires": { - "call-bind": "^1.0.2", - "has-bigints": "^1.0.2", - "has-symbols": "^1.0.3", - "which-boxed-primitive": "^1.0.2" - } - }, - "underscore": { - "version": "1.12.1", - "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.12.1.tgz", - "integrity": "sha512-hEQt0+ZLDVUMhebKxL4x1BTtDY7bavVofhZ9KZ4aI26X9SRaE+Y3m83XUL1UP2jn8ynjndwCCpEHdUG+9pP1Tw==" - }, - "universalify": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", - "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==" - }, - "unpipe": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", - "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==" - }, - "uri-js": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", - "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", - "requires": { - "punycode": "^2.1.0" - } - }, - "url-parse-lax": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-3.0.0.tgz", - "integrity": "sha512-NjFKA0DidqPa5ciFcSrXnAltTtzz84ogy+NebPvfEgAck0+TNg4UJ4IN+fB7zRZfbgUf0syOo9MDxFkDSMuFaQ==", - "requires": { - "prepend-http": "^2.0.0" - } - }, - "url-set-query": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/url-set-query/-/url-set-query-1.0.0.tgz", - "integrity": "sha512-3AChu4NiXquPfeckE5R5cGdiHCMWJx1dwCWOmWIL4KHAziJNOFIYJlpGFeKDvwLPHovZRCxK3cYlwzqI9Vp+Gg==" - }, - "url-to-options": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/url-to-options/-/url-to-options-1.0.1.tgz", - "integrity": "sha512-0kQLIzG4fdk/G5NONku64rSH/x32NOA39LVQqlK8Le6lvTF6GGRJpqaQFGgU+CLwySIqBSMdwYM0sYcW9f6P4A==" - }, - "usb": { - "version": "1.9.2", - "resolved": "https://registry.npmjs.org/usb/-/usb-1.9.2.tgz", - "integrity": "sha512-dryNz030LWBPAf6gj8vyq0Iev3vPbCLHCT8dBw3gQRXRzVNsIdeuU+VjPp3ksmSPkeMAl1k+kQ14Ij0QHyeiAg==", - "requires": { - "node-addon-api": "^4.2.0", - "node-gyp-build": "^4.3.0" - }, - "dependencies": { - "node-addon-api": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-4.3.0.tgz", - "integrity": "sha512-73sE9+3UaLYYFmDsFZnqCInzPyh3MqIwZO9cw58yIqAZhONrrabrYyYe3TuIqtIiOuTXVhsGau8hcrhhwSsDIQ==" - }, - "node-gyp-build": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.5.0.tgz", - "integrity": "sha512-2iGbaQBV+ITgCz76ZEjmhUKAKVf7xfY1sRl4UiKQspfZMH2h06SyhNsnSVy50cwkFQDGLyif6m/6uFXHkOZ6rg==" - } - } - }, - "utf-8-validate": { - "version": "5.0.9", - "resolved": "https://registry.npmjs.org/utf-8-validate/-/utf-8-validate-5.0.9.tgz", - "integrity": "sha512-Yek7dAy0v3Kl0orwMlvi7TPtiCNrdfHNd7Gcc/pLq4BLXqfAmd0J7OWMizUQnTTJsyjKn02mU7anqwfmUP4J8Q==", - "requires": { - "node-gyp-build": "^4.3.0" - }, - "dependencies": { - "node-gyp-build": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.5.0.tgz", - "integrity": "sha512-2iGbaQBV+ITgCz76ZEjmhUKAKVf7xfY1sRl4UiKQspfZMH2h06SyhNsnSVy50cwkFQDGLyif6m/6uFXHkOZ6rg==" - } - } - }, - "utf8": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/utf8/-/utf8-3.0.0.tgz", - "integrity": "sha512-E8VjFIQ/TyQgp+TZfS6l8yp/xWppSAHzidGiRrqe4bK4XP9pTRyKFgGJpO3SN7zdX4DeomTrwaseCHovfpFcqQ==" - }, - "util": { - "version": "0.12.4", - "resolved": "https://registry.npmjs.org/util/-/util-0.12.4.tgz", - "integrity": "sha512-bxZ9qtSlGUWSOy9Qa9Xgk11kSslpuZwaxCg4sNIDj6FLucDab2JxnHwyNTCpHMtK1MjoQiWQ6DiUMZYbSrO+Sw==", - "requires": { - "inherits": "^2.0.3", - "is-arguments": "^1.0.4", - "is-generator-function": "^1.0.7", - "is-typed-array": "^1.1.3", - "safe-buffer": "^5.1.2", - "which-typed-array": "^1.1.2" - } - }, - "util-deprecate": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" - }, - "utils-merge": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", - "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==" - }, - "uuid": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", - "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==" - }, - "varint": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/varint/-/varint-5.0.2.tgz", - "integrity": "sha512-lKxKYG6H03yCZUpAGOPOsMcGxd1RHCu1iKvEHYDPmTyq2HueGhD73ssNBqqQWfvYs04G9iUFRvmAVLW20Jw6ow==" - }, - "vary": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", - "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==" - }, - "verror": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", - "integrity": "sha512-ZZKSmDAEFOijERBLkmYfJ+vmk3w+7hOLYDNkRCuRuMJGEmqYNCNLyBBFwWKVMhfwaEF3WOd0Zlw86U/WC/+nYw==", - "requires": { - "assert-plus": "^1.0.0", - "core-util-is": "1.0.2", - "extsprintf": "^1.2.0" - } - }, - "web3": { - "version": "1.3.6", - "resolved": "https://registry.npmjs.org/web3/-/web3-1.3.6.tgz", - "integrity": "sha512-jEpPhnL6GDteifdVh7ulzlPrtVQeA30V9vnki9liYlUvLV82ZM7BNOQJiuzlDePuE+jZETZSP/0G/JlUVt6pOA==", - "requires": { - "web3-bzz": "1.3.6", - "web3-core": "1.3.6", - "web3-eth": "1.3.6", - "web3-eth-personal": "1.3.6", - "web3-net": "1.3.6", - "web3-shh": "1.3.6", - "web3-utils": "1.3.6" - } - }, - "web3-bzz": { - "version": "1.3.6", - "resolved": "https://registry.npmjs.org/web3-bzz/-/web3-bzz-1.3.6.tgz", - "integrity": "sha512-ibHdx1wkseujFejrtY7ZyC0QxQ4ATXjzcNUpaLrvM6AEae8prUiyT/OloG9FWDgFD2CPLwzKwfSQezYQlANNlw==", - "requires": { - "@types/node": "^12.12.6", - "got": "9.6.0", - "swarm-js": "^0.1.40", - "underscore": "1.12.1" - }, - "dependencies": { - "@types/node": { - "version": "12.20.55", - "resolved": "https://registry.npmjs.org/@types/node/-/node-12.20.55.tgz", - "integrity": "sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ==" - } - } - }, - "web3-core": { - "version": "1.3.6", - "resolved": "https://registry.npmjs.org/web3-core/-/web3-core-1.3.6.tgz", - "integrity": "sha512-gkLDM4T1Sc0T+HZIwxrNrwPg0IfWI0oABSglP2X5ZbBAYVUeEATA0o92LWV8BeF+okvKXLK1Fek/p6axwM/h3Q==", - "requires": { - "@types/bn.js": "^4.11.5", - "@types/node": "^12.12.6", - "bignumber.js": "^9.0.0", - "web3-core-helpers": "1.3.6", - "web3-core-method": "1.3.6", - "web3-core-requestmanager": "1.3.6", - "web3-utils": "1.3.6" - }, - "dependencies": { - "@types/bn.js": { - "version": "4.11.6", - "resolved": "https://registry.npmjs.org/@types/bn.js/-/bn.js-4.11.6.tgz", - "integrity": "sha512-pqr857jrp2kPuO9uRjZ3PwnJTjoQy+fcdxvBTvHm6dkmEL9q+hDD/2j/0ELOBPtPnS8LjCX0gI9nbl8lVkadpg==", - "requires": { - "@types/node": "*" - } - }, - "@types/node": { - "version": "12.20.55", - "resolved": "https://registry.npmjs.org/@types/node/-/node-12.20.55.tgz", - "integrity": "sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ==" - } - } - }, - "web3-core-helpers": { - "version": "1.3.6", - "resolved": "https://registry.npmjs.org/web3-core-helpers/-/web3-core-helpers-1.3.6.tgz", - "integrity": "sha512-nhtjA2ZbkppjlxTSwG0Ttu6FcPkVu1rCN5IFAOVpF/L0SEt+jy+O5l90+cjDq0jAYvlBwUwnbh2mR9hwDEJCNA==", - "requires": { - "underscore": "1.12.1", - "web3-eth-iban": "1.3.6", - "web3-utils": "1.3.6" - } - }, - "web3-core-method": { - "version": "1.3.6", - "resolved": "https://registry.npmjs.org/web3-core-method/-/web3-core-method-1.3.6.tgz", - "integrity": "sha512-RyegqVGxn0cyYW5yzAwkPlsSEynkdPiegd7RxgB4ak1eKk2Cv1q2x4C7D2sZjeeCEF+q6fOkVmo2OZNqS2iQxg==", - "requires": { - "@ethersproject/transactions": "^5.0.0-beta.135", - "underscore": "1.12.1", - "web3-core-helpers": "1.3.6", - "web3-core-promievent": "1.3.6", - "web3-core-subscriptions": "1.3.6", - "web3-utils": "1.3.6" - } - }, - "web3-core-promievent": { - "version": "1.3.6", - "resolved": "https://registry.npmjs.org/web3-core-promievent/-/web3-core-promievent-1.3.6.tgz", - "integrity": "sha512-Z+QzfyYDTXD5wJmZO5wwnRO8bAAHEItT1XNSPVb4J1CToV/I/SbF7CuF8Uzh2jns0Cm1109o666H7StFFvzVKw==", - "requires": { - "eventemitter3": "4.0.4" - } - }, - "web3-core-requestmanager": { - "version": "1.3.6", - "resolved": "https://registry.npmjs.org/web3-core-requestmanager/-/web3-core-requestmanager-1.3.6.tgz", - "integrity": "sha512-2rIaeuqeo7QN1Eex7aXP0ZqeteJEPWXYFS/M3r3LXMiV8R4STQBKE+//dnHJXoo2ctzEB5cgd+7NaJM8S3gPyA==", - "requires": { - "underscore": "1.12.1", - "util": "^0.12.0", - "web3-core-helpers": "1.3.6", - "web3-providers-http": "1.3.6", - "web3-providers-ipc": "1.3.6", - "web3-providers-ws": "1.3.6" - } - }, - "web3-core-subscriptions": { - "version": "1.3.6", - "resolved": "https://registry.npmjs.org/web3-core-subscriptions/-/web3-core-subscriptions-1.3.6.tgz", - "integrity": "sha512-wi9Z9X5X75OKvxAg42GGIf81ttbNR2TxzkAsp1g+nnp5K8mBwgZvXrIsDuj7Z7gx72Y45mWJADCWjk/2vqNu8g==", - "requires": { - "eventemitter3": "4.0.4", - "underscore": "1.12.1", - "web3-core-helpers": "1.3.6" - } - }, - "web3-eth": { - "version": "1.3.6", - "resolved": "https://registry.npmjs.org/web3-eth/-/web3-eth-1.3.6.tgz", - "integrity": "sha512-9+rnywRRpyX3C4hfsAQXPQh6vHh9XzQkgLxo3gyeXfbhbShUoq2gFVuy42vsRs//6JlsKdyZS7Z3hHPHz2wreA==", - "requires": { - "underscore": "1.12.1", - "web3-core": "1.3.6", - "web3-core-helpers": "1.3.6", - "web3-core-method": "1.3.6", - "web3-core-subscriptions": "1.3.6", - "web3-eth-abi": "1.3.6", - "web3-eth-accounts": "1.3.6", - "web3-eth-contract": "1.3.6", - "web3-eth-ens": "1.3.6", - "web3-eth-iban": "1.3.6", - "web3-eth-personal": "1.3.6", - "web3-net": "1.3.6", - "web3-utils": "1.3.6" - } - }, - "web3-eth-abi": { - "version": "1.3.6", - "resolved": "https://registry.npmjs.org/web3-eth-abi/-/web3-eth-abi-1.3.6.tgz", - "integrity": "sha512-Or5cRnZu6WzgScpmbkvC6bfNxR26hqiKK4i8sMPFeTUABQcb/FU3pBj7huBLYbp9dH+P5W79D2MqwbWwjj9DoQ==", - "requires": { - "@ethersproject/abi": "5.0.7", - "underscore": "1.12.1", - "web3-utils": "1.3.6" - } - }, - "web3-eth-accounts": { - "version": "1.3.6", - "resolved": "https://registry.npmjs.org/web3-eth-accounts/-/web3-eth-accounts-1.3.6.tgz", - "integrity": "sha512-Ilr0hG6ONbCdSlVKffasCmNwftD5HsNpwyQASevocIQwHdTlvlwO0tb3oGYuajbKOaDzNTwXfz25bttAEoFCGA==", - "requires": { - "crypto-browserify": "3.12.0", - "eth-lib": "0.2.8", - "ethereumjs-common": "^1.3.2", - "ethereumjs-tx": "^2.1.1", - "scrypt-js": "^3.0.1", - "underscore": "1.12.1", - "uuid": "3.3.2", - "web3-core": "1.3.6", - "web3-core-helpers": "1.3.6", - "web3-core-method": "1.3.6", - "web3-utils": "1.3.6" - }, - "dependencies": { - "uuid": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.3.2.tgz", - "integrity": "sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA==" - } - } - }, - "web3-eth-contract": { - "version": "1.3.6", - "resolved": "https://registry.npmjs.org/web3-eth-contract/-/web3-eth-contract-1.3.6.tgz", - "integrity": "sha512-8gDaRrLF2HCg+YEZN1ov0zN35vmtPnGf3h1DxmJQK5Wm2lRMLomz9rsWsuvig3UJMHqZAQKD7tOl3ocJocQsmA==", - "requires": { - "@types/bn.js": "^4.11.5", - "underscore": "1.12.1", - "web3-core": "1.3.6", - "web3-core-helpers": "1.3.6", - "web3-core-method": "1.3.6", - "web3-core-promievent": "1.3.6", - "web3-core-subscriptions": "1.3.6", - "web3-eth-abi": "1.3.6", - "web3-utils": "1.3.6" - }, - "dependencies": { - "@types/bn.js": { - "version": "4.11.6", - "resolved": "https://registry.npmjs.org/@types/bn.js/-/bn.js-4.11.6.tgz", - "integrity": "sha512-pqr857jrp2kPuO9uRjZ3PwnJTjoQy+fcdxvBTvHm6dkmEL9q+hDD/2j/0ELOBPtPnS8LjCX0gI9nbl8lVkadpg==", - "requires": { - "@types/node": "*" - } - } - } - }, - "web3-eth-ens": { - "version": "1.3.6", - "resolved": "https://registry.npmjs.org/web3-eth-ens/-/web3-eth-ens-1.3.6.tgz", - "integrity": "sha512-n27HNj7lpSkRxTgSx+Zo7cmKAgyg2ElFilaFlUu/X2CNH23lXfcPm2bWssivH9z0ndhg0OyR4AYFZqPaqDHkJA==", - "requires": { - "content-hash": "^2.5.2", - "eth-ens-namehash": "2.0.8", - "underscore": "1.12.1", - "web3-core": "1.3.6", - "web3-core-helpers": "1.3.6", - "web3-core-promievent": "1.3.6", - "web3-eth-abi": "1.3.6", - "web3-eth-contract": "1.3.6", - "web3-utils": "1.3.6" - } - }, - "web3-eth-iban": { - "version": "1.3.6", - "resolved": "https://registry.npmjs.org/web3-eth-iban/-/web3-eth-iban-1.3.6.tgz", - "integrity": "sha512-nfMQaaLA/zsg5W4Oy/EJQbs8rSs1vBAX6b/35xzjYoutXlpHMQadujDx2RerTKhSHqFXSJeQAfE+2f6mdhYkRQ==", - "requires": { - "bn.js": "^4.11.9", - "web3-utils": "1.3.6" - } - }, - "web3-eth-personal": { - "version": "1.3.6", - "resolved": "https://registry.npmjs.org/web3-eth-personal/-/web3-eth-personal-1.3.6.tgz", - "integrity": "sha512-pOHU0+/h1RFRYoh1ehYBehRbcKWP4OSzd4F7mDljhHngv6W8ewMHrAN8O1ol9uysN2MuCdRE19qkRg5eNgvzFQ==", - "requires": { - "@types/node": "^12.12.6", - "web3-core": "1.3.6", - "web3-core-helpers": "1.3.6", - "web3-core-method": "1.3.6", - "web3-net": "1.3.6", - "web3-utils": "1.3.6" - }, - "dependencies": { - "@types/node": { - "version": "12.20.55", - "resolved": "https://registry.npmjs.org/@types/node/-/node-12.20.55.tgz", - "integrity": "sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ==" - } - } - }, - "web3-net": { - "version": "1.3.6", - "resolved": "https://registry.npmjs.org/web3-net/-/web3-net-1.3.6.tgz", - "integrity": "sha512-KhzU3wMQY/YYjyMiQzbaLPt2kut88Ncx2iqjy3nw28vRux3gVX0WOCk9EL/KVJBiAA/fK7VklTXvgy9dZnnipw==", - "requires": { - "web3-core": "1.3.6", - "web3-core-method": "1.3.6", - "web3-utils": "1.3.6" - } - }, - "web3-providers-http": { - "version": "1.3.6", - "resolved": "https://registry.npmjs.org/web3-providers-http/-/web3-providers-http-1.3.6.tgz", - "integrity": "sha512-OQkT32O1A06dISIdazpGLveZcOXhEo5cEX6QyiSQkiPk/cjzDrXMw4SKZOGQbbS1+0Vjizm1Hrp7O8Vp2D1M5Q==", - "requires": { - "web3-core-helpers": "1.3.6", - "xhr2-cookies": "1.1.0" - } - }, - "web3-providers-ipc": { - "version": "1.3.6", - "resolved": "https://registry.npmjs.org/web3-providers-ipc/-/web3-providers-ipc-1.3.6.tgz", - "integrity": "sha512-+TVsSd2sSVvVgHG4s6FXwwYPPT91boKKcRuEFXqEfAbUC5t52XOgmyc2LNiD9LzPhed65FbV4LqICpeYGUvSwA==", - "requires": { - "oboe": "2.1.5", - "underscore": "1.12.1", - "web3-core-helpers": "1.3.6" - } - }, - "web3-providers-ws": { - "version": "1.3.6", - "resolved": "https://registry.npmjs.org/web3-providers-ws/-/web3-providers-ws-1.3.6.tgz", - "integrity": "sha512-bk7MnJf5or0Re2zKyhR3L3CjGululLCHXx4vlbc/drnaTARUVvi559OI5uLytc/1k5HKUUyENAxLvetz2G1dnQ==", - "requires": { - "eventemitter3": "4.0.4", - "underscore": "1.12.1", - "web3-core-helpers": "1.3.6", - "websocket": "^1.0.32" - } - }, - "web3-shh": { - "version": "1.3.6", - "resolved": "https://registry.npmjs.org/web3-shh/-/web3-shh-1.3.6.tgz", - "integrity": "sha512-9zRo415O0iBslxBnmu9OzYjNErzLnzOsy+IOvSpIreLYbbAw0XkDWxv3SfcpKnTIWIACBR4AYMIxmmyi5iB3jw==", - "requires": { - "web3-core": "1.3.6", - "web3-core-method": "1.3.6", - "web3-core-subscriptions": "1.3.6", - "web3-net": "1.3.6" - } - }, - "web3-utils": { - "version": "1.3.6", - "resolved": "https://registry.npmjs.org/web3-utils/-/web3-utils-1.3.6.tgz", - "integrity": "sha512-hHatFaQpkQgjGVER17gNx8u1qMyaXFZtM0y0XLGH1bzsjMPlkMPLRcYOrZ00rOPfTEuYFOdrpGOqZXVmGrMZRg==", - "requires": { - "bn.js": "^4.11.9", - "eth-lib": "0.2.8", - "ethereum-bloom-filters": "^1.0.6", - "ethjs-unit": "0.1.6", - "number-to-bn": "1.7.0", - "randombytes": "^2.1.0", - "underscore": "1.12.1", - "utf8": "3.0.0" - } - }, - "webidl-conversions": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", - "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==" - }, - "websocket": { - "version": "1.0.34", - "resolved": "https://registry.npmjs.org/websocket/-/websocket-1.0.34.tgz", - "integrity": "sha512-PRDso2sGwF6kM75QykIesBijKSVceR6jL2G8NGYyq2XrItNC2P5/qL5XeR056GhA+Ly7JMFvJb9I312mJfmqnQ==", - "requires": { - "bufferutil": "^4.0.1", - "debug": "^2.2.0", - "es5-ext": "^0.10.50", - "typedarray-to-buffer": "^3.1.5", - "utf-8-validate": "^5.0.2", - "yaeti": "^0.0.6" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "requires": { - "ms": "2.0.0" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" - } - } - }, - "websocket-driver": { - "version": "0.7.4", - "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.4.tgz", - "integrity": "sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg==", - "requires": { - "http-parser-js": ">=0.5.1", - "safe-buffer": ">=5.1.0", - "websocket-extensions": ">=0.1.1" - } - }, - "websocket-extensions": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.4.tgz", - "integrity": "sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg==" - }, - "whatwg-fetch": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-3.0.0.tgz", - "integrity": "sha512-9GSJUgz1D4MfyKU7KRqwOjXCXTqWdFNvEr7eUBYchQiVc744mqK/MzXPNR2WsPkmkOa4ywfg8C2n8h+13Bey1Q==" - }, - "whatwg-url": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", - "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", - "requires": { - "tr46": "~0.0.3", - "webidl-conversions": "^3.0.0" - } - }, - "which": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", - "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", - "requires": { - "isexe": "^2.0.0" - } - }, - "which-boxed-primitive": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", - "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", - "requires": { - "is-bigint": "^1.0.1", - "is-boolean-object": "^1.1.0", - "is-number-object": "^1.0.4", - "is-string": "^1.0.5", - "is-symbol": "^1.0.3" - } - }, - "which-typed-array": { - "version": "1.1.8", - "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.8.tgz", - "integrity": "sha512-Jn4e5PItbcAHyLoRDwvPj1ypu27DJbtdYXUa5zsinrUx77Uvfb0cXwwnGMTn7cjUfhhqgVQnVJCwF+7cgU7tpw==", - "requires": { - "available-typed-arrays": "^1.0.5", - "call-bind": "^1.0.2", - "es-abstract": "^1.20.0", - "for-each": "^0.3.3", - "has-tostringtag": "^1.0.0", - "is-typed-array": "^1.1.9" - } - }, - "wide-align": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.3.tgz", - "integrity": "sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA==", - "requires": { - "string-width": "^1.0.2 || 2" - } - }, - "widest-line": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-2.0.1.tgz", - "integrity": "sha512-Ba5m9/Fa4Xt9eb2ELXt77JxVDV8w7qQrH0zS/TWSJdLyAwQjWoOzpzj5lwVftDz6n/EOu3tNACS84v509qwnJA==", - "requires": { - "string-width": "^2.1.1" - } - }, - "wif": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/wif/-/wif-2.0.6.tgz", - "integrity": "sha512-HIanZn1zmduSF+BQhkE+YXIbEiH0xPr1012QbFEGB0xsKqJii0/SqJjyn8dFv6y36kOznMgMB+LGcbZTJ1xACQ==", - "requires": { - "bs58check": "<3.0.0" - } - }, - "wrap-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-3.0.1.tgz", - "integrity": "sha512-iXR3tDXpbnTpzjKSylUJRkLuOrEC7hwEB221cgn6wtF8wpmz28puFXAEfPT5zrjM3wahygB//VuWEr1vTkDcNQ==", - "requires": { - "string-width": "^2.1.1", - "strip-ansi": "^4.0.0" - } - }, - "wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" - }, - "ws": { - "version": "3.3.3", - "resolved": "https://registry.npmjs.org/ws/-/ws-3.3.3.tgz", - "integrity": "sha512-nnWLa/NwZSt4KQJu51MYlCcSQ5g7INpOrOMt4XV8j4dqTXdmlUmSHQ8/oLC069ckre0fRsgfvsKwbTdtKLCDkA==", - "requires": { - "async-limiter": "~1.0.0", - "safe-buffer": "~5.1.0", - "ultron": "~1.1.0" - }, - "dependencies": { - "safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" - } - } - }, - "xhr": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/xhr/-/xhr-2.6.0.tgz", - "integrity": "sha512-/eCGLb5rxjx5e3mF1A7s+pLlR6CGyqWN91fv1JgER5mVWg1MZmlhBvy9kjcsOdRk8RrIujotWyJamfyrp+WIcA==", - "requires": { - "global": "~4.4.0", - "is-function": "^1.0.1", - "parse-headers": "^2.0.0", - "xtend": "^4.0.0" - } - }, - "xhr-request": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/xhr-request/-/xhr-request-1.1.0.tgz", - "integrity": "sha512-Y7qzEaR3FDtL3fP30k9wO/e+FBnBByZeybKOhASsGP30NIkRAAkKD/sCnLvgEfAIEC1rcmK7YG8f4oEnIrrWzA==", - "requires": { - "buffer-to-arraybuffer": "^0.0.5", - "object-assign": "^4.1.1", - "query-string": "^5.0.1", - "simple-get": "^2.7.0", - "timed-out": "^4.0.1", - "url-set-query": "^1.0.0", - "xhr": "^2.0.4" - } - }, - "xhr-request-promise": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/xhr-request-promise/-/xhr-request-promise-0.1.3.tgz", - "integrity": "sha512-YUBytBsuwgitWtdRzXDDkWAXzhdGB8bYm0sSzMPZT7Z2MBjMSTHFsyCT1yCRATY+XC69DUrQraRAEgcoCRaIPg==", - "requires": { - "xhr-request": "^1.1.0" - } - }, - "xhr2-cookies": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/xhr2-cookies/-/xhr2-cookies-1.1.0.tgz", - "integrity": "sha512-hjXUA6q+jl/bd8ADHcVfFsSPIf+tyLIjuO9TwJC9WI6JP2zKcS7C+p56I9kCLLsaCiNT035iYvEUUzdEFj/8+g==", - "requires": { - "cookiejar": "^2.1.1" - } - }, - "xmlhttprequest": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/xmlhttprequest/-/xmlhttprequest-1.8.0.tgz", - "integrity": "sha512-58Im/U0mlVBLM38NdZjHyhuMtCqa61469k2YP/AaPbvCoV9aQGUpbJBj1QRm2ytRiVQBD/fsw7L2bJGDVQswBA==" - }, - "xtend": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", - "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==" - }, - "yaeti": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/yaeti/-/yaeti-0.0.6.tgz", - "integrity": "sha512-MvQa//+KcZCUkBTIC9blM+CU9J2GzuTytsOUwf2lidtvkx/6gnEp1QvJv34t9vdjhFmha/mUiNDbN0D0mJWdug==" - }, - "yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" - }, - "yarn": { - "version": "1.22.19", - "resolved": "https://registry.npmjs.org/yarn/-/yarn-1.22.19.tgz", - "integrity": "sha512-/0V5q0WbslqnwP91tirOvldvYISzaqhClxzyUKXYxs07yUILIs5jx/k6CFe8bvKSkds5w+eiOqta39Wk3WxdcQ==" - } - } -} diff --git a/packages/cli/package.json b/packages/cli/package.json index 4446ca2e520..5d46cf5121d 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -1,7 +1,7 @@ { "name": "@celo/celocli", "description": "CLI Tool for transacting with the Celo protocol", - "version": "2.1.1-dev", + "version": "3.0.0", "author": "Celo", "license": "Apache-2.0", "repository": "celo-org/celo-monorepo", @@ -18,7 +18,7 @@ "celo-cli" ], "engines": { - "node": ">=14" + "node": ">=16" }, "scripts": { "clean": "tsc -b . --clean", @@ -26,15 +26,12 @@ "docs": "./generate_docs.sh", "lint": "tslint -c tslint.json --project tsconfig.json", "prepublish": "", - "generate:shrinkwrap": "npm install --production && npm shrinkwrap", - "check:shrinkwrap": "npm install --production && npm shrinkwrap && ./scripts/check_shrinkwrap_dirty.sh", - "prepack": "yarn run build && oclif-dev manifest && oclif-dev readme && yarn run check:shrinkwrap", + "prepack": "yarn run build && oclif-dev manifest && oclif-dev readme", "test:reset": "yarn --cwd ../protocol devchain generate-tar .tmp/devchain.tar.gz --migration_override ../dev-utils/src/migration-override.json --upto 27 --release_gold_contracts scripts/truffle/releaseGoldExampleConfigs.json", "test:livechain": "yarn --cwd ../protocol devchain run-tar .tmp/devchain.tar.gz", "test": "TZ=UTC jest --runInBand" }, "dependencies": { - "@celo/bls12377js": "0.1.1", "@celo/contractkit": "^5.0.3-dev", "@celo/explorer": "^5.0.3-dev", "@celo/governance": "^5.0.3-dev", @@ -56,9 +53,7 @@ "@oclif/plugin-warn-if-update-available": "^1.7.0", "@ethereumjs/util": "8.0.5", "@types/command-exists": "^1.2.0", - "bip32": "3.1.0", "bignumber.js": "9.0.0", - "bip39": "https://github.com/bitcoinjs/bip39#d8ea080a18b40f301d4e2219a2991cd2417e83c2", "chalk": "^2.4.2", "cli-table": "^0.3.1", "cli-ux": "^5.4.9", @@ -66,7 +61,7 @@ "debug": "^4.1.1", "events": "^3.0.0", "fs-extra": "^8.1.0", - "humanize-duration": "^3.21.0", + "humanize-duration": "^3.29.0", "moment": "^2.29.0", "path": "^0.12.7", "prompts": "^2.0.1", @@ -80,7 +75,7 @@ "@types/cli-table": "^0.3.0", "@types/debug": "^4.1.4", "@types/fs-extra": "^8.0.0", - "@types/humanize-duration": "^3.18.0", + "@types/humanize-duration": "^3.27.0", "@types/inquirer": "^6.5.0", "@types/ledgerhq__hw-transport-node-hid": "^4.22.2", "@types/mocha": "^7.0.2", @@ -99,8 +94,7 @@ "!lib/test-utils", "!lib/**/*.test.**", "!lib/**/*.d.ts", - "/oclif.manifest.json", - "/npm-shrinkwrap.json" + "/oclif.manifest.json" ], "oclif": { "bin": "celocli", diff --git a/packages/cli/releasing.md b/packages/cli/releasing.md index 847f7fed20f..7ce7b4b07ba 100644 --- a/packages/cli/releasing.md +++ b/packages/cli/releasing.md @@ -2,14 +2,8 @@ - change all @celo/** dependencies which are pointing to the unpublished -dev version to published versions -- check that @celo/phone-number-privacy-common in @celo/identity and @celo/encrypted-backup packages points to a published version. (actually check on npm because just removing -dev might not be enough) - - update cli version in cli/package.json to next version with a pre-release (eg -beta.x) suffix -- run `yarn generate:shrinkwrap` (if you got some nonsense about @celo/phone-number-privacy-signer not being found try removing from peer deps of combiner running yarn again and retrying) - -- commit the the package.json and shrinkwrap - - run `yarn prepack` - *IMPORTANT* double check version in package.json is correct! diff --git a/packages/cli/src/transfer-stable-base.ts b/packages/cli/src/transfer-stable-base.ts index fe18e297a37..f3901c0ea0b 100644 --- a/packages/cli/src/transfer-stable-base.ts +++ b/packages/cli/src/transfer-stable-base.ts @@ -1,6 +1,6 @@ import { StableToken } from '@celo/contractkit' +import { stableTokenInfos } from '@celo/contractkit/lib/celo-tokens' import { StableTokenWrapper } from '@celo/contractkit/lib/wrappers/StableTokenWrapper' -import { stableTokenInfos } from '@celo/contractkit/src/celo-tokens' import { flags } from '@oclif/command' import { ParserOutput } from '@oclif/parser/lib/parse' import BigNumber from 'bignumber.js' diff --git a/packages/cli/src/utils/governance.ts b/packages/cli/src/utils/governance.ts index 90c8dc69076..c1dd228c05f 100644 --- a/packages/cli/src/utils/governance.ts +++ b/packages/cli/src/utils/governance.ts @@ -1,6 +1,6 @@ import { toTxResult } from '@celo/connect' import { ContractKit } from '@celo/contractkit' -import { ProposalTransaction } from '@celo/contractkit/src/wrappers/Governance' +import { ProposalTransaction } from '@celo/contractkit/lib/wrappers/Governance' import { ProposalBuilder, proposalToJSON, ProposalTransactionJSON } from '@celo/governance' import chalk from 'chalk' import { readJsonSync } from 'fs-extra' diff --git a/packages/phone-number-privacy/combiner/package.json b/packages/phone-number-privacy/combiner/package.json index fdf6ed6c230..a729d17cc41 100644 --- a/packages/phone-number-privacy/combiner/package.json +++ b/packages/phone-number-privacy/combiner/package.json @@ -42,8 +42,9 @@ "@opentelemetry/sdk-metrics": "^1.15.2", "@opentelemetry/sdk-node": "^0.41.2", "@opentelemetry/sdk-trace-web": "^1.15.2", + "@opentelemetry/sdk-trace-base": "^1.17.0", "@opentelemetry/semantic-conventions": "^1.15.2", - "blind-threshold-bls": "https://github.com/celo-org/blind-threshold-bls-wasm#e1e2f8a", + "blind-threshold-bls": "npm:@celo/blind-threshold-bls@1.0.0-beta", "dotenv": "^8.2.0", "express": "^4.17.1", "firebase-admin": "^11.10.1", diff --git a/packages/phone-number-privacy/combiner/src/common/combine.ts b/packages/phone-number-privacy/combiner/src/common/combine.ts index abfc0dcc534..2f10b5a2d6f 100644 --- a/packages/phone-number-privacy/combiner/src/common/combine.ts +++ b/packages/phone-number-privacy/combiner/src/common/combine.ts @@ -79,6 +79,7 @@ export async function thresholdCallToSigners( keyVersionInfo.keyVersion, request, logger, + // @ts-ignore abortSignal ) diff --git a/packages/phone-number-privacy/combiner/src/common/io.ts b/packages/phone-number-privacy/combiner/src/common/io.ts index 22dfd6a8089..58aafaca4c1 100644 --- a/packages/phone-number-privacy/combiner/src/common/io.ts +++ b/packages/phone-number-privacy/combiner/src/common/io.ts @@ -85,6 +85,7 @@ export async function fetchSignerResponseWithFallback( [KEY_VERSION_HEADER]: keyVersion.toString() }, body: JSON.stringify(request.body), + // @ts-expect-error -- wants a param for abortifThrown but thats not available on the incoming yet. @alec will fix it ;) signal: abortSignal, agent: url.startsWith("https://") ? httpsAgent : httpAgent }) diff --git a/packages/phone-number-privacy/combiner/src/tracing.ts b/packages/phone-number-privacy/combiner/src/tracing.ts index a9290366b53..3d3f699da32 100644 --- a/packages/phone-number-privacy/combiner/src/tracing.ts +++ b/packages/phone-number-privacy/combiner/src/tracing.ts @@ -44,6 +44,7 @@ const provider = new NodeTracerProvider({ }) const exporter = new JaegerExporter(options) const processor = new BatchSpanProcessor(exporter) +// @ts-ignore TODO @alec fix this provider.addSpanProcessor(processor) provider.register() diff --git a/packages/phone-number-privacy/combiner/test/end-to-end/pnp.test.ts b/packages/phone-number-privacy/combiner/test/end-to-end/pnp.test.ts index 4dff6569640..17c5f0fdb61 100644 --- a/packages/phone-number-privacy/combiner/test/end-to-end/pnp.test.ts +++ b/packages/phone-number-privacy/combiner/test/end-to-end/pnp.test.ts @@ -1,3 +1,4 @@ +import { sleep } from '@celo/base' import { StableToken } from '@celo/contractkit' import { OdisUtils } from '@celo/identity' import { ErrorMessages, getServiceContext, OdisAPI } from '@celo/identity/lib/odis/query' @@ -25,7 +26,6 @@ import { PHONE_NUMBER, walletAuthSigner, } from './resources' -import { sleep } from '@celo/base' const { IdentifierPrefix } = OdisUtils.Identifier diff --git a/packages/phone-number-privacy/signer/package.json b/packages/phone-number-privacy/signer/package.json index 544378538f2..aa6de6d69f6 100644 --- a/packages/phone-number-privacy/signer/package.json +++ b/packages/phone-number-privacy/signer/package.json @@ -38,6 +38,7 @@ }, "dependencies": { "@celo/base": "^5.0.3-dev", + "blind-threshold-bls": "npm:@celo/blind-threshold-bls@1.0.0-beta", "@celo/contractkit": "^5.0.3-dev", "@celo/phone-number-privacy-common": "^3.0.4-dev", "@celo/poprf": "^0.1.9", @@ -53,7 +54,6 @@ "@opentelemetry/sdk-trace-web": "^1.15.1", "@types/bunyan": "^1.8.8", "aws-sdk": "^2.705.0", - "blind-threshold-bls": "https://github.com/celo-org/blind-threshold-bls-wasm#e1e2f8a", "dotenv": "^8.2.0", "express": "^4.17.1", "knex": "^2.1.0", diff --git a/packages/phone-number-privacy/signer/test/signing/bls-signature.test.ts b/packages/phone-number-privacy/signer/test/signing/bls-signature.test.ts index 75a26a3da85..779fbd63578 100644 --- a/packages/phone-number-privacy/signer/test/signing/bls-signature.test.ts +++ b/packages/phone-number-privacy/signer/test/signing/bls-signature.test.ts @@ -1,5 +1,5 @@ -import { rootLogger, TestUtils } from '@celo/phone-number-privacy-common' import threshold_bls from 'blind-threshold-bls' +import { rootLogger, TestUtils } from '@celo/phone-number-privacy-common' import { computeBlindedSignature } from '../../src/common/bls/bls-cryptography-client' import { config } from '../../src/config' diff --git a/packages/sdk/contractkit/package.json b/packages/sdk/contractkit/package.json index 4f15b54875b..3c289aa4fe9 100644 --- a/packages/sdk/contractkit/package.json +++ b/packages/sdk/contractkit/package.json @@ -41,7 +41,8 @@ "fp-ts": "2.1.1", "io-ts": "2.0.1", "semver": "^7.3.5", - "web3": "1.10.0" + "web3": "1.10.0", + "web3-core-helpers": "1.10.0" }, "devDependencies": { "@celo/phone-utils": "5.0.3-dev", diff --git a/packages/sdk/contractkit/src/setupForKits.ts b/packages/sdk/contractkit/src/setupForKits.ts index 61d1756dbfc..4a27513da6e 100644 --- a/packages/sdk/contractkit/src/setupForKits.ts +++ b/packages/sdk/contractkit/src/setupForKits.ts @@ -1,5 +1,5 @@ import Web3 from 'web3' -import { HttpProviderOptions as Web3HttpProviderOptions } from 'web3-providers-http' +import { HttpProviderOptions as Web3HttpProviderOptions } from 'web3-core-helpers' export type HttpProviderOptions = Web3HttpProviderOptions export const API_KEY_HEADER_KEY = 'apiKey' diff --git a/packages/sdk/cryptographic-utils/package.json b/packages/sdk/cryptographic-utils/package.json index 46eb3b50000..74720420a43 100644 --- a/packages/sdk/cryptographic-utils/package.json +++ b/packages/sdk/cryptographic-utils/package.json @@ -36,6 +36,7 @@ "buffer-reverse": "^1.0.1", "elliptic": "^6.5.4", "ethereum-cryptography": "1.2.0", + "randombytes": "^2.0.1", "tiny-secp256k1": "2.2.1" }, "devDependencies": { diff --git a/packages/sdk/cryptographic-utils/src/types.d.ts b/packages/sdk/cryptographic-utils/src/types.d.ts new file mode 100644 index 00000000000..e54094850fc --- /dev/null +++ b/packages/sdk/cryptographic-utils/src/types.d.ts @@ -0,0 +1 @@ +declare module 'bip39' diff --git a/packages/sdk/identity/package.json b/packages/sdk/identity/package.json index 330c483ff59..c836119b2e1 100644 --- a/packages/sdk/identity/package.json +++ b/packages/sdk/identity/package.json @@ -31,7 +31,7 @@ "@celo/phone-number-privacy-common": "^3.0.4-dev", "@types/debug": "^4.1.5", "bignumber.js": "^9.0.0", - "blind-threshold-bls": "https://github.com/celo-org/blind-threshold-bls-wasm#e1e2f8a", + "blind-threshold-bls": "npm:@celo/blind-threshold-bls@1.0.0-beta", "cross-fetch": "3.0.6", "debug": "^4.1.1", "elliptic": "^6.5.4", diff --git a/packages/sdk/wallets/wallet-base/package.json b/packages/sdk/wallets/wallet-base/package.json index 53ac7ceaabb..166d5c834fc 100644 --- a/packages/sdk/wallets/wallet-base/package.json +++ b/packages/sdk/wallets/wallet-base/package.json @@ -32,6 +32,7 @@ "ethereum-cryptography": "^2.1.2", "@types/debug": "^4.1.5", "bignumber.js": "^9.0.0", + "web3-eth-accounts": "1.10.0", "debug": "^4.1.1", "eth-lib": "^0.2.8" }, diff --git a/yarn.lock b/yarn.lock index 4cc06556d87..dbba727f93c 100644 --- a/yarn.lock +++ b/yarn.lock @@ -4,7 +4,7 @@ "@0x/assert@^3.0.35", "@0x/assert@^3.0.36": version "3.0.36" - resolved "https://registry.yarnpkg.com/@0x/assert/-/assert-3.0.36.tgz#91f82973e11826c08011a5830508246262b43284" + resolved "https://registry.npmjs.org/@0x/assert/-/assert-3.0.36.tgz" integrity sha512-sUtrV5MhixXvWZpATjFqIDtgvvv64duSTuOyPdPJjB+/Lcl5jQhlSNuoN0X3XP0P79Sp+6tuez5MupgFGPA2QQ== dependencies: "@0x/json-schemas" "^6.4.6" @@ -16,7 +16,7 @@ "@0x/dev-utils@^5.0.3": version "5.0.3" - resolved "https://registry.yarnpkg.com/@0x/dev-utils/-/dev-utils-5.0.3.tgz#8de9b2f8241caa649ceffc6b891122aa923150a0" + resolved "https://registry.npmjs.org/@0x/dev-utils/-/dev-utils-5.0.3.tgz" integrity sha512-V58tT2aiiHNSQtEt2XQWZDsPMsQ4wPDnjZRUaW38W46QasIFfCbcpKmfCsAGJyFxM7t0m0JJJwmYTJwZhCGcoQ== dependencies: "@0x/subproviders" "^8.0.1" @@ -36,7 +36,7 @@ "@0x/json-schemas@^6.4.6": version "6.4.6" - resolved "https://registry.yarnpkg.com/@0x/json-schemas/-/json-schemas-6.4.6.tgz#3904b8219ad2fefdf47ddb94fb65c1b9fb82d1d7" + resolved "https://registry.npmjs.org/@0x/json-schemas/-/json-schemas-6.4.6.tgz" integrity sha512-TaqvhOkmLN/vkcpMUNVFZBTnWP05ZVo9iGAnP1CG/B8l4rvnUbLZvWx8KeDKs62I/5d7jdYISvXyOwP4EwrG4w== dependencies: "@0x/typescript-typings" "^5.3.2" @@ -46,7 +46,7 @@ "@0x/sol-compiler@^4.8.3", "@0x/sol-compiler@^4.8.5": version "4.8.5" - resolved "https://registry.yarnpkg.com/@0x/sol-compiler/-/sol-compiler-4.8.5.tgz#49579cee7de838d8ebd1bfd094a0d30a9e96506c" + resolved "https://registry.npmjs.org/@0x/sol-compiler/-/sol-compiler-4.8.5.tgz" integrity sha512-hAc3ZjpD+/fgSt/UQaAim8d2fQL3kWpnP5+tSEVf3/xetDDp3BhTOMi+wKnVuYo9FzuTgHx5MFueWM+mojE41A== dependencies: "@0x/assert" "^3.0.36" @@ -75,7 +75,7 @@ "@0x/sol-coverage@^4.0.47": version "4.0.49" - resolved "https://registry.yarnpkg.com/@0x/sol-coverage/-/sol-coverage-4.0.49.tgz#15bb1210263a7dacc5a19f939892a9fb15bf2e5a" + resolved "https://registry.npmjs.org/@0x/sol-coverage/-/sol-coverage-4.0.49.tgz" integrity sha512-gphKAO63NBysXgFV2fqxHmnBnHnD/i6rarmEwMKMKjWJ1shqQsKgJL984jBtek0UPsR5X4QM5tcHNKuCSe2Tuw== dependencies: "@0x/sol-tracing-utils" "^7.3.5" @@ -90,7 +90,7 @@ "@0x/sol-profiler@^4.1.37": version "4.1.39" - resolved "https://registry.yarnpkg.com/@0x/sol-profiler/-/sol-profiler-4.1.39.tgz#2a2f13056d8306bdea242df1d2566c0d80ac5e1e" + resolved "https://registry.npmjs.org/@0x/sol-profiler/-/sol-profiler-4.1.39.tgz" integrity sha512-yrEHRun6RvXsg1NWhx4iH/YBeJXZDTQRAyNGQai+P1hrcOE7yoZ7PKtMv+69r3vCH38xVcWzF6xQKa7p4BIvlA== dependencies: "@0x/sol-tracing-utils" "^7.3.5" @@ -105,7 +105,7 @@ "@0x/sol-resolver@^3.1.13": version "3.1.13" - resolved "https://registry.yarnpkg.com/@0x/sol-resolver/-/sol-resolver-3.1.13.tgz#d985be51cec600384c4df101ad33956b844e3ed7" + resolved "https://registry.npmjs.org/@0x/sol-resolver/-/sol-resolver-3.1.13.tgz" integrity sha512-nQHqW7sOsDEH4ejH9nu60sCgFXEW08LM0v+5DimA/R7MizOW4LAG7OoHM+Oq8uPcHbeU0peFEDOW0idBsIzZ6g== dependencies: "@0x/types" "^3.3.7" @@ -115,7 +115,7 @@ "@0x/sol-trace@^3.0.47": version "3.0.49" - resolved "https://registry.yarnpkg.com/@0x/sol-trace/-/sol-trace-3.0.49.tgz#10b2a4e079c187a11d3fca9d32031c10fb3d0a7e" + resolved "https://registry.npmjs.org/@0x/sol-trace/-/sol-trace-3.0.49.tgz" integrity sha512-mCNbUCX6Oh1Z1e1g4AsD7sSbgMN7IGQyR0w+4xQYApgjwtYOaRPZMiluMXqp9nNHX75LwCfVd7NEIJIUMVQf2A== dependencies: "@0x/sol-tracing-utils" "^7.3.5" @@ -131,7 +131,7 @@ "@0x/sol-tracing-utils@^7.3.5": version "7.3.5" - resolved "https://registry.yarnpkg.com/@0x/sol-tracing-utils/-/sol-tracing-utils-7.3.5.tgz#9fe3fb36462424a72437a0310d872611bc5f970a" + resolved "https://registry.npmjs.org/@0x/sol-tracing-utils/-/sol-tracing-utils-7.3.5.tgz" integrity sha512-KzLTcUcLiQD5N/NzkZnIwI0i4w775z4w/H0o2FeM3Gp/0BcBx2DZ+sqKVoCEUSussm+jx2v8MNJnM3wcdvvDlg== dependencies: "@0x/dev-utils" "^5.0.3" @@ -159,7 +159,7 @@ "@0x/subproviders@^7.0.1": version "7.0.1" - resolved "https://registry.yarnpkg.com/@0x/subproviders/-/subproviders-7.0.1.tgz#3e74cbe61ae746bea67766821f226398978a0cc0" + resolved "https://registry.npmjs.org/@0x/subproviders/-/subproviders-7.0.1.tgz" integrity sha512-S5LrUg12szE8T3U+2ymcdiH4zOkSyGJIh3FRN9jXspwQCe6+fggEymt6n0SyK3p1QiHipVkCxhjTR/53+shwsg== dependencies: "@0x/assert" "^3.0.35" @@ -189,7 +189,7 @@ "@0x/subproviders@^8.0.1": version "8.0.1" - resolved "https://registry.yarnpkg.com/@0x/subproviders/-/subproviders-8.0.1.tgz#b934547bfa1c8049030b243a134de9755792d53a" + resolved "https://registry.npmjs.org/@0x/subproviders/-/subproviders-8.0.1.tgz" integrity sha512-Lax7Msb1Ef9D6Dd7PQ19oPgjl5GIrKje7XsrO7YCfx5A0RM3Hr4nSQIxgg78jwvuulSFxQ5Sr8WiZ2hTHATtQg== dependencies: "@0x/assert" "^3.0.36" @@ -213,7 +213,7 @@ "@0x/types@^3.3.7": version "3.3.7" - resolved "https://registry.yarnpkg.com/@0x/types/-/types-3.3.7.tgz#2a8556b3398b6d6fac942c63de23ab22836624ee" + resolved "https://registry.npmjs.org/@0x/types/-/types-3.3.7.tgz" integrity sha512-6lPXPnvKaIfAJ5hIgs81SytqNCPCLstQ/DA598iLpb90KKjjz8QsdrfII4JeKdrEREvLcWSH9SeH4sNPWyLhlA== dependencies: "@types/node" "12.12.54" @@ -222,7 +222,7 @@ "@0x/typescript-typings@^5.3.2": version "5.3.2" - resolved "https://registry.yarnpkg.com/@0x/typescript-typings/-/typescript-typings-5.3.2.tgz#b2b2a46ebff7f9d885b1357feae615225cb0bb31" + resolved "https://registry.npmjs.org/@0x/typescript-typings/-/typescript-typings-5.3.2.tgz" integrity sha512-VIo8PS/IRXrI1aEzM8TenUMViX4MFMKBnIAwqC4K/ewVDSnKyYZSk8fzw0XZph6tN07obchPf+1sHIWYe8EUow== dependencies: "@types/bn.js" "^4.11.0" @@ -234,7 +234,7 @@ "@0x/utils@^7.0.0": version "7.0.0" - resolved "https://registry.yarnpkg.com/@0x/utils/-/utils-7.0.0.tgz#322168b21cf11741003c9cc490b13adafbe57393" + resolved "https://registry.npmjs.org/@0x/utils/-/utils-7.0.0.tgz" integrity sha512-g+Bp0eHUGhnVGeVZqGn7UVtpzs/FuoXksiDaajfJrHFW0owwo5YwpwFIAVU7/ca0B6IKa74e71gskLwWGINEFg== dependencies: "@0x/types" "^3.3.7" @@ -254,7 +254,7 @@ "@0x/web3-wrapper@^8.0.0", "@0x/web3-wrapper@^8.0.1": version "8.0.1" - resolved "https://registry.yarnpkg.com/@0x/web3-wrapper/-/web3-wrapper-8.0.1.tgz#3625e63737d005fe6a92b71d0e676b4d03e88c60" + resolved "https://registry.npmjs.org/@0x/web3-wrapper/-/web3-wrapper-8.0.1.tgz" integrity sha512-2rqugeCld5r/3yg+Un9sPCUNVeZW5J64Fm6i/W6qRE87X+spIJG48oJymTjSMDXw/w3FaP4nAvhSj2C5fvhN6w== dependencies: "@0x/assert" "^3.0.36" @@ -272,9 +272,14 @@ resolved "https://registry.yarnpkg.com/@adraffy/ens-normalize/-/ens-normalize-1.9.0.tgz#223572538f6bea336750039bb43a4016dcc8182d" integrity sha512-iowxq3U30sghZotgl4s/oJRci6WPBfNO5YYgk2cIOMCHr3LeGPcsZjCEr+33Q4N+oV3OABDAtA+pyvWjbvBifQ== +"@adraffy/ens-normalize@^1.8.8": + version "1.9.4" + resolved "https://registry.yarnpkg.com/@adraffy/ens-normalize/-/ens-normalize-1.9.4.tgz#aae21cb858bbb0411949d5b7b3051f4209043f62" + integrity sha512-UK0bHA7hh9cR39V+4gl2/NnBBjoXIxkuWAPCaY4X7fbH4L/azIi7ilWOCjMUYfpJgraLUAqkRi2BqrjME8Rynw== + "@ampproject/remapping@^2.2.0": version "2.2.1" - resolved "https://registry.yarnpkg.com/@ampproject/remapping/-/remapping-2.2.1.tgz#99e8e11851128b8702cd57c33684f1d0f260b630" + resolved "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.1.tgz" integrity sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg== dependencies: "@jridgewell/gen-mapping" "^0.3.0" @@ -282,7 +287,7 @@ "@apidevtools/json-schema-ref-parser@^9.0.3": version "9.1.2" - resolved "https://registry.yarnpkg.com/@apidevtools/json-schema-ref-parser/-/json-schema-ref-parser-9.1.2.tgz#8ff5386b365d4c9faa7c8b566ff16a46a577d9b8" + resolved "https://registry.npmjs.org/@apidevtools/json-schema-ref-parser/-/json-schema-ref-parser-9.1.2.tgz" integrity sha512-r1w81DpR+KyRWd3f+rk6TNqMgedmAxZP5v5KWlXQWlgMUUtyEJch0DKEci1SorPMiSeM8XPl7MZ3miJ60JIpQg== dependencies: "@jsdevtools/ono" "^7.1.3" @@ -292,7 +297,7 @@ "@apollo/protobufjs@1.2.6": version "1.2.6" - resolved "https://registry.yarnpkg.com/@apollo/protobufjs/-/protobufjs-1.2.6.tgz#d601e65211e06ae1432bf5993a1a0105f2862f27" + resolved "https://registry.npmjs.org/@apollo/protobufjs/-/protobufjs-1.2.6.tgz" integrity sha512-Wqo1oSHNUj/jxmsVp4iR3I480p6qdqHikn38lKrFhfzcDJ7lwd7Ck7cHRl4JE81tWNArl77xhnG/OkZhxKBYOw== dependencies: "@protobufjs/aspromise" "^1.1.2" @@ -311,7 +316,7 @@ "@apollo/protobufjs@1.2.7": version "1.2.7" - resolved "https://registry.yarnpkg.com/@apollo/protobufjs/-/protobufjs-1.2.7.tgz#3a8675512817e4a046a897e5f4f16415f16a7d8a" + resolved "https://registry.npmjs.org/@apollo/protobufjs/-/protobufjs-1.2.7.tgz" integrity sha512-Lahx5zntHPZia35myYDBRuF58tlwPskwHc5CWBZC/4bMKB6siTBWwtMrkqXcsNwQiFSzSx5hKdRPUmemrEp3Gg== dependencies: "@protobufjs/aspromise" "^1.1.2" @@ -329,19 +334,19 @@ "@apollo/usage-reporting-protobuf@^4.0.0": version "4.1.0" - resolved "https://registry.yarnpkg.com/@apollo/usage-reporting-protobuf/-/usage-reporting-protobuf-4.1.0.tgz#b54b8c32702bbe81aa0e399076ddabaf75a13f9b" + resolved "https://registry.npmjs.org/@apollo/usage-reporting-protobuf/-/usage-reporting-protobuf-4.1.0.tgz" integrity sha512-hXouMuw5pQVkzi8dgMybmr6Y11+eRmMQVoB5TF0HyTwAg9SOq/v3OCuiYqcVUKdBcskU9Msp+XvjAk0GKpWCwQ== dependencies: "@apollo/protobufjs" "1.2.7" "@apollo/utils.dropunuseddefinitions@^1.1.0": version "1.1.0" - resolved "https://registry.yarnpkg.com/@apollo/utils.dropunuseddefinitions/-/utils.dropunuseddefinitions-1.1.0.tgz#02b04006442eaf037f4c4624146b12775d70d929" + resolved "https://registry.npmjs.org/@apollo/utils.dropunuseddefinitions/-/utils.dropunuseddefinitions-1.1.0.tgz" integrity sha512-jU1XjMr6ec9pPoL+BFWzEPW7VHHulVdGKMkPAMiCigpVIT11VmCbnij0bWob8uS3ODJ65tZLYKAh/55vLw2rbg== "@apollo/utils.keyvaluecache@^1.0.1": version "1.0.2" - resolved "https://registry.yarnpkg.com/@apollo/utils.keyvaluecache/-/utils.keyvaluecache-1.0.2.tgz#2bfe358c4d82f3a0950518451996758c52613f57" + resolved "https://registry.npmjs.org/@apollo/utils.keyvaluecache/-/utils.keyvaluecache-1.0.2.tgz" integrity sha512-p7PVdLPMnPzmXSQVEsy27cYEjVON+SH/Wb7COyW3rQN8+wJgT1nv9jZouYtztWW8ZgTkii5T6tC9qfoDREd4mg== dependencies: "@apollo/utils.logger" "^1.0.0" @@ -349,34 +354,34 @@ "@apollo/utils.logger@^1.0.0": version "1.0.1" - resolved "https://registry.yarnpkg.com/@apollo/utils.logger/-/utils.logger-1.0.1.tgz#aea0d1bb7ceb237f506c6bbf38f10a555b99a695" + resolved "https://registry.npmjs.org/@apollo/utils.logger/-/utils.logger-1.0.1.tgz" integrity sha512-XdlzoY7fYNK4OIcvMD2G94RoFZbzTQaNP0jozmqqMudmaGo2I/2Jx71xlDJ801mWA/mbYRihyaw6KJii7k5RVA== "@apollo/utils.printwithreducedwhitespace@^1.1.0": version "1.1.0" - resolved "https://registry.yarnpkg.com/@apollo/utils.printwithreducedwhitespace/-/utils.printwithreducedwhitespace-1.1.0.tgz#c466299a4766eef8577a2a64c8f27712e8bd7e30" + resolved "https://registry.npmjs.org/@apollo/utils.printwithreducedwhitespace/-/utils.printwithreducedwhitespace-1.1.0.tgz" integrity sha512-GfFSkAv3n1toDZ4V6u2d7L4xMwLA+lv+6hqXicMN9KELSJ9yy9RzuEXaX73c/Ry+GzRsBy/fdSUGayGqdHfT2Q== "@apollo/utils.removealiases@1.0.0": version "1.0.0" - resolved "https://registry.yarnpkg.com/@apollo/utils.removealiases/-/utils.removealiases-1.0.0.tgz#75f6d83098af1fcae2d3beb4f515ad4a8452a8c1" + resolved "https://registry.npmjs.org/@apollo/utils.removealiases/-/utils.removealiases-1.0.0.tgz" integrity sha512-6cM8sEOJW2LaGjL/0vHV0GtRaSekrPQR4DiywaApQlL9EdROASZU5PsQibe2MWeZCOhNrPRuHh4wDMwPsWTn8A== "@apollo/utils.sortast@^1.1.0": version "1.1.0" - resolved "https://registry.yarnpkg.com/@apollo/utils.sortast/-/utils.sortast-1.1.0.tgz#93218c7008daf3e2a0725196085a33f5aab5ad07" + resolved "https://registry.npmjs.org/@apollo/utils.sortast/-/utils.sortast-1.1.0.tgz" integrity sha512-VPlTsmUnOwzPK5yGZENN069y6uUHgeiSlpEhRnLFYwYNoJHsuJq2vXVwIaSmts015WTPa2fpz1inkLYByeuRQA== dependencies: lodash.sortby "^4.7.0" "@apollo/utils.stripsensitiveliterals@^1.2.0": version "1.2.0" - resolved "https://registry.yarnpkg.com/@apollo/utils.stripsensitiveliterals/-/utils.stripsensitiveliterals-1.2.0.tgz#4920651f36beee8e260e12031a0c5863ad0c7b28" + resolved "https://registry.npmjs.org/@apollo/utils.stripsensitiveliterals/-/utils.stripsensitiveliterals-1.2.0.tgz" integrity sha512-E41rDUzkz/cdikM5147d8nfCFVKovXxKBcjvLEQ7bjZm/cg9zEcXvS6vFY8ugTubI3fn6zoqo0CyU8zT+BGP9w== "@apollo/utils.usagereporting@^1.0.0": version "1.0.1" - resolved "https://registry.yarnpkg.com/@apollo/utils.usagereporting/-/utils.usagereporting-1.0.1.tgz#3c70b49e554771659576fe35381c7a4b321d27fd" + resolved "https://registry.npmjs.org/@apollo/utils.usagereporting/-/utils.usagereporting-1.0.1.tgz" integrity sha512-6dk+0hZlnDbahDBB2mP/PZ5ybrtCJdLMbeNJD+TJpKyZmSY6bA3SjI8Cr2EM9QA+AdziywuWg+SgbWUF3/zQqQ== dependencies: "@apollo/usage-reporting-protobuf" "^4.0.0" @@ -388,26 +393,35 @@ "@apollographql/apollo-tools@^0.5.3": version "0.5.4" - resolved "https://registry.yarnpkg.com/@apollographql/apollo-tools/-/apollo-tools-0.5.4.tgz#cb3998c6cf12e494b90c733f44dd9935e2d8196c" + resolved "https://registry.npmjs.org/@apollographql/apollo-tools/-/apollo-tools-0.5.4.tgz" integrity sha512-shM3q7rUbNyXVVRkQJQseXv6bnYM3BUma/eZhwXR4xsuM+bqWnJKvW7SAfRjP7LuSCocrexa5AXhjjawNHrIlw== "@apollographql/graphql-playground-html@1.6.29": version "1.6.29" - resolved "https://registry.yarnpkg.com/@apollographql/graphql-playground-html/-/graphql-playground-html-1.6.29.tgz#a7a646614a255f62e10dcf64a7f68ead41dec453" + resolved "https://registry.npmjs.org/@apollographql/graphql-playground-html/-/graphql-playground-html-1.6.29.tgz" integrity sha512-xCcXpoz52rI4ksJSdOCxeOCn2DLocxwHf9dVT/Q90Pte1LX+LY+91SFtJF3KXVHH8kEin+g1KKCQPKBjZJfWNA== dependencies: xss "^1.0.8" "@azure/abort-controller@^1.0.0", "@azure/abort-controller@^1.0.4": version "1.1.0" - resolved "https://registry.yarnpkg.com/@azure/abort-controller/-/abort-controller-1.1.0.tgz#788ee78457a55af8a1ad342acb182383d2119249" + resolved "https://registry.npmjs.org/@azure/abort-controller/-/abort-controller-1.1.0.tgz" integrity sha512-TrRLIoSQVzfAJX9H1JeFjzAoDGcoK1IYX1UImfceTZpsyYfWr09Ss1aHW1y5TrrR3iq6RZLBwJ3E24uwPhwahw== dependencies: tslib "^2.2.0" -"@azure/core-auth@^1.1.4", "@azure/core-auth@^1.3.0", "@azure/core-auth@^1.4.0": +"@azure/core-auth@^1.1.4": + version "1.5.0" + resolved "https://registry.npmjs.org/@azure/core-auth/-/core-auth-1.5.0.tgz" + integrity sha512-udzoBuYG1VBoHVohDTrvKjyzel34zt77Bhp7dQntVGGD0ehVq48owENbBG8fIgkHRNUBQH5k1r0hpoMu5L8+kw== + dependencies: + "@azure/abort-controller" "^1.0.0" + "@azure/core-util" "^1.1.0" + tslib "^2.2.0" + +"@azure/core-auth@^1.3.0", "@azure/core-auth@^1.4.0": version "1.4.0" - resolved "https://registry.yarnpkg.com/@azure/core-auth/-/core-auth-1.4.0.tgz#6fa9661c1705857820dbc216df5ba5665ac36a9e" + resolved "https://registry.npmjs.org/@azure/core-auth/-/core-auth-1.4.0.tgz" integrity sha512-HFrcTgmuSuukRf/EdPmqBrc5l6Q5Uu+2TbuhaKbgaCpP2TfAeiNaQPAadxO+CYBRHGUzIDteMAjFspFLDLnKVQ== dependencies: "@azure/abort-controller" "^1.0.0" @@ -415,7 +429,7 @@ "@azure/core-client@^1.0.0", "@azure/core-client@^1.3.0", "@azure/core-client@^1.5.0": version "1.7.2" - resolved "https://registry.yarnpkg.com/@azure/core-client/-/core-client-1.7.2.tgz#e1e0670c9a5086dd62fd0080d2fd8b426babad9e" + resolved "https://registry.npmjs.org/@azure/core-client/-/core-client-1.7.2.tgz" integrity sha512-ye5554gnVnXdfZ64hptUtETgacXoRWxYv1JF5MctoAzTSH5dXhDPZd9gOjDPyWMcLIk58pnP5+p5vGX6PYn1ag== dependencies: "@azure/abort-controller" "^1.0.0" @@ -428,7 +442,7 @@ "@azure/core-http-compat@^1.3.0": version "1.3.0" - resolved "https://registry.yarnpkg.com/@azure/core-http-compat/-/core-http-compat-1.3.0.tgz#bf3d8ae1e310103f2b82550f36fd2a99c9b4d3f4" + resolved "https://registry.npmjs.org/@azure/core-http-compat/-/core-http-compat-1.3.0.tgz" integrity sha512-ZN9avruqbQ5TxopzG3ih3KRy52n8OAbitX3fnZT5go4hzu0J+KVPSzkL+Wt3hpJpdG8WIfg1sBD1tWkgUdEpBA== dependencies: "@azure/abort-controller" "^1.0.4" @@ -437,7 +451,7 @@ "@azure/core-lro@^2.2.0": version "2.5.2" - resolved "https://registry.yarnpkg.com/@azure/core-lro/-/core-lro-2.5.2.tgz#712439f12b39ade7576f55780a4e005472c67b19" + resolved "https://registry.npmjs.org/@azure/core-lro/-/core-lro-2.5.2.tgz" integrity sha512-tucUutPhBwCPu6v16KEFYML81npEL6gnT+iwewXvK5ZD55sr0/Vw2jfQETMiKVeARRrXHB2QQ3SpxxGi1zAUWg== dependencies: "@azure/abort-controller" "^1.0.0" @@ -447,14 +461,14 @@ "@azure/core-paging@^1.1.1": version "1.5.0" - resolved "https://registry.yarnpkg.com/@azure/core-paging/-/core-paging-1.5.0.tgz#5a5b09353e636072e6a7fc38f7879e11d0afb15f" + resolved "https://registry.npmjs.org/@azure/core-paging/-/core-paging-1.5.0.tgz" integrity sha512-zqWdVIt+2Z+3wqxEOGzR5hXFZ8MGKK52x4vFLw8n58pR6ZfKRx3EXYTxTaYxYHc/PexPUTyimcTWFJbji9Z6Iw== dependencies: tslib "^2.2.0" "@azure/core-rest-pipeline@^1.1.0", "@azure/core-rest-pipeline@^1.3.0", "@azure/core-rest-pipeline@^1.8.0", "@azure/core-rest-pipeline@^1.9.1": version "1.10.3" - resolved "https://registry.yarnpkg.com/@azure/core-rest-pipeline/-/core-rest-pipeline-1.10.3.tgz#7603afd71ff3c290351dbeeab2c814832e47b8ef" + resolved "https://registry.npmjs.org/@azure/core-rest-pipeline/-/core-rest-pipeline-1.10.3.tgz" integrity sha512-AMQb0ttiGJ0MIV/r+4TVra6U4+90mPeOveehFnrqKlo7dknPJYdJ61wOzYJXJjDxF8LcCtSogfRelkq+fCGFTw== dependencies: "@azure/abort-controller" "^1.0.0" @@ -469,7 +483,7 @@ "@azure/core-tracing@1.0.0-preview.12": version "1.0.0-preview.12" - resolved "https://registry.yarnpkg.com/@azure/core-tracing/-/core-tracing-1.0.0-preview.12.tgz#f53ff452c0742ad981c244f97d93d37ca2b5e139" + resolved "https://registry.npmjs.org/@azure/core-tracing/-/core-tracing-1.0.0-preview.12.tgz" integrity sha512-nvo2Wc4EKZGN6eFu9n3U7OXmASmL8VxoPIH7xaD6OlQqi44bouF0YIi9ID5rEsKLiAU59IYx6M297nqWVMWPDg== dependencies: "@opentelemetry/api" "^1.0.0" @@ -477,22 +491,30 @@ "@azure/core-tracing@^1.0.0", "@azure/core-tracing@^1.0.1": version "1.0.1" - resolved "https://registry.yarnpkg.com/@azure/core-tracing/-/core-tracing-1.0.1.tgz#352a38cbea438c4a83c86b314f48017d70ba9503" + resolved "https://registry.npmjs.org/@azure/core-tracing/-/core-tracing-1.0.1.tgz" integrity sha512-I5CGMoLtX+pI17ZdiFJZgxMJApsK6jjfm85hpgp3oazCdq5Wxgh4wMr7ge/TTWW1B5WBuvIOI1fMU/FrOAMKrw== dependencies: tslib "^2.2.0" "@azure/core-util@^1.0.0", "@azure/core-util@^1.2.0", "@azure/core-util@^1.3.0": version "1.3.1" - resolved "https://registry.yarnpkg.com/@azure/core-util/-/core-util-1.3.1.tgz#e830b99231e2091a2dc9ed652fff1cda69ba6582" + resolved "https://registry.npmjs.org/@azure/core-util/-/core-util-1.3.1.tgz" integrity sha512-pjfOUAb+MPLODhGuXot/Hy8wUgPD0UTqYkY3BiYcwEETrLcUCVM1t0roIvlQMgvn1lc48TGy5bsonsFpF862Jw== dependencies: "@azure/abort-controller" "^1.0.0" tslib "^2.2.0" +"@azure/core-util@^1.1.0": + version "1.4.0" + resolved "https://registry.npmjs.org/@azure/core-util/-/core-util-1.4.0.tgz" + integrity sha512-eGAyJpm3skVQoLiRqm/xPa+SXi/NPDdSHMxbRAz2lSprd+Zs+qrpQGQQ2VQ3Nttu+nSZR4XoYQC71LbEI7jsig== + dependencies: + "@azure/abort-controller" "^1.0.0" + tslib "^2.2.0" + "@azure/identity@^1.1.0": version "1.5.2" - resolved "https://registry.yarnpkg.com/@azure/identity/-/identity-1.5.2.tgz#09da6aa8e14f2dace3dd8f66de7d7d56bfee5db7" + resolved "https://registry.npmjs.org/@azure/identity/-/identity-1.5.2.tgz" integrity sha512-vqyeRbd2i0h9F4mqW5JbkP1xfabqKQ21l/81osKhpOQ2LtwaJW6nw4+0PsVYnxcbPHFCIZt6EWAk74a3OGYZJA== dependencies: "@azure/core-auth" "^1.3.0" @@ -516,7 +538,7 @@ "@azure/keyvault-keys@^4.1.0": version "4.7.0" - resolved "https://registry.yarnpkg.com/@azure/keyvault-keys/-/keyvault-keys-4.7.0.tgz#a117935fc3a87ff2f9a5393352a96814c2f33c01" + resolved "https://registry.npmjs.org/@azure/keyvault-keys/-/keyvault-keys-4.7.0.tgz" integrity sha512-HScWdORbRCKi1vdKI6EChe/t/P/zV7jcGZWfj18BOyeensk5d1/Ynfx1t6xfAy5zUIQvAWVU97hXdCznDpULbQ== dependencies: "@azure/abort-controller" "^1.0.0" @@ -533,7 +555,7 @@ "@azure/keyvault-secrets@^4.1.0": version "4.7.0" - resolved "https://registry.yarnpkg.com/@azure/keyvault-secrets/-/keyvault-secrets-4.7.0.tgz#a9b7aa460cd3e6a47f6a7eb0027f45f23df8eb45" + resolved "https://registry.npmjs.org/@azure/keyvault-secrets/-/keyvault-secrets-4.7.0.tgz" integrity sha512-YvlFXRQ+SI5NT4GtSFbb6HGo6prW3yzDab8tr6vga2/SjDQew3wJsCAAr/xwZz6XshFXCYEX26CDKmPf+SJKJg== dependencies: "@azure/abort-controller" "^1.0.0" @@ -550,26 +572,25 @@ "@azure/logger@^1.0.0": version "1.0.4" - resolved "https://registry.yarnpkg.com/@azure/logger/-/logger-1.0.4.tgz#28bc6d0e5b3c38ef29296b32d35da4e483593fa1" + resolved "https://registry.npmjs.org/@azure/logger/-/logger-1.0.4.tgz" integrity sha512-ustrPY8MryhloQj7OWGe+HrYx+aoiOxzbXTtgblbV3xwCqpzUK36phH3XNHQKj3EPonyFUuDTfR3qFhTEAuZEg== dependencies: tslib "^2.2.0" "@azure/ms-rest-azure-env@^2.0.0": version "2.0.0" - resolved "https://registry.yarnpkg.com/@azure/ms-rest-azure-env/-/ms-rest-azure-env-2.0.0.tgz#45809f89763a480924e21d3c620cd40866771625" + resolved "https://registry.npmjs.org/@azure/ms-rest-azure-env/-/ms-rest-azure-env-2.0.0.tgz" integrity sha512-dG76W7ElfLi+fbTjnZVGj+M9e0BIEJmRxU6fHaUQ12bZBe8EJKYb2GV50YWNaP2uJiVQ5+7nXEVj1VN1UQtaEw== "@azure/ms-rest-js@^2.0.4": - version "2.6.6" - resolved "https://registry.yarnpkg.com/@azure/ms-rest-js/-/ms-rest-js-2.6.6.tgz#a2ae4a515565ae1b73729b52b25875853bb3240a" - integrity sha512-WYIda8VvrkZE68xHgOxUXvjThxNf1nnGPPe0rAljqK5HJHIZ12Pi3YhEDOn3Ge7UnwaaM3eFO0VtAy4nGVI27Q== + version "2.7.0" + resolved "https://registry.npmjs.org/@azure/ms-rest-js/-/ms-rest-js-2.7.0.tgz" + integrity sha512-ngbzWbqF+NmztDOpLBVDxYM+XLcUj7nKhxGbSU9WtIsXfRB//cf2ZbAG5HkOrhU9/wd/ORRB6lM/d69RKVjiyA== dependencies: "@azure/core-auth" "^1.1.4" abort-controller "^3.0.0" form-data "^2.5.0" node-fetch "^2.6.7" - tough-cookie "^3.0.1" tslib "^1.10.0" tunnel "0.0.6" uuid "^8.3.2" @@ -577,7 +598,7 @@ "@azure/ms-rest-nodeauth@^3.0.10": version "3.1.1" - resolved "https://registry.yarnpkg.com/@azure/ms-rest-nodeauth/-/ms-rest-nodeauth-3.1.1.tgz#2624222f0685ae580801d6f1abeab20923814693" + resolved "https://registry.npmjs.org/@azure/ms-rest-nodeauth/-/ms-rest-nodeauth-3.1.1.tgz" integrity sha512-UA/8dgLy3+ZiwJjAZHxL4MUB14fFQPkaAOZ94jsTW/Z6WmoOeny2+cLk0+dyIX/iH6qSrEWKwbStEeB970B9pA== dependencies: "@azure/ms-rest-azure-env" "^2.0.0" @@ -586,14 +607,14 @@ "@azure/msal-common@^4.0.0": version "4.5.1" - resolved "https://registry.yarnpkg.com/@azure/msal-common/-/msal-common-4.5.1.tgz#f35af8b634ae24aebd0906deb237c0db1afa5826" + resolved "https://registry.npmjs.org/@azure/msal-common/-/msal-common-4.5.1.tgz" integrity sha512-/i5dXM+QAtO+6atYd5oHGBAx48EGSISkXNXViheliOQe+SIFMDo3gSq3lL54W0suOSAsVPws3XnTaIHlla0PIQ== dependencies: debug "^4.1.1" "@azure/msal-node@1.0.0-beta.6": version "1.0.0-beta.6" - resolved "https://registry.yarnpkg.com/@azure/msal-node/-/msal-node-1.0.0-beta.6.tgz#da6bc3a3a861057c85586055960e069f162548ee" + resolved "https://registry.npmjs.org/@azure/msal-node/-/msal-node-1.0.0-beta.6.tgz" integrity sha512-ZQI11Uz1j0HJohb9JZLRD8z0moVcPks1AFW4Q/Gcl67+QvH4aKEJti7fjCcipEEZYb/qzLSO8U6IZgPYytsiJQ== dependencies: "@azure/msal-common" "^4.0.0" @@ -603,19 +624,19 @@ "@babel/code-frame@^7.0.0", "@babel/code-frame@^7.12.13", "@babel/code-frame@^7.18.6", "@babel/code-frame@^7.21.4": version "7.21.4" - resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.21.4.tgz#d0fa9e4413aca81f2b23b9442797bda1826edb39" + resolved "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.21.4.tgz" integrity sha512-LYvhNKfwWSPpocw8GI7gpK2nq3HSDuEPC/uSYaALSJu9xjsalaaYFOq0Pwt5KmVqwEbZlDu81aLXwBOmD/Fv9g== dependencies: "@babel/highlight" "^7.18.6" "@babel/compat-data@^7.17.7", "@babel/compat-data@^7.21.4": version "7.21.4" - resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.21.4.tgz#457ffe647c480dff59c2be092fc3acf71195c87f" + resolved "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.21.4.tgz" integrity sha512-/DYyDpeCfaVinT40FPGdkkb+lYSKvsVuMjDAG7jPOWWiM1ibOaB9CXJAlc4d1QpP/U2q2P9jbrSlClKSErd55g== "@babel/core@^7.0.0", "@babel/core@^7.11.6", "@babel/core@^7.12.3", "@babel/core@^7.8.4": version "7.21.4" - resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.21.4.tgz#c6dc73242507b8e2a27fd13a9c1814f9fa34a659" + resolved "https://registry.npmjs.org/@babel/core/-/core-7.21.4.tgz" integrity sha512-qt/YV149Jman/6AfmlxJ04LMIu8bMoyl3RB91yTFrxQmgbrSvQMy7cI8Q62FHx1t8wJ8B5fu0UDoLwHAhUo1QA== dependencies: "@ampproject/remapping" "^2.2.0" @@ -636,7 +657,7 @@ "@babel/generator@^7.21.4", "@babel/generator@^7.7.2": version "7.21.4" - resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.21.4.tgz#64a94b7448989f421f919d5239ef553b37bb26bc" + resolved "https://registry.npmjs.org/@babel/generator/-/generator-7.21.4.tgz" integrity sha512-NieM3pVIYW2SwGzKoqfPrQsf4xGs9M9AIG3ThppsSRmO+m7eQhmI6amajKMUeIO37wFfsvnvcxQFx6x6iqxDnA== dependencies: "@babel/types" "^7.21.4" @@ -646,7 +667,7 @@ "@babel/helper-compilation-targets@^7.17.7", "@babel/helper-compilation-targets@^7.21.4": version "7.21.4" - resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.21.4.tgz#770cd1ce0889097ceacb99418ee6934ef0572656" + resolved "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.21.4.tgz" integrity sha512-Fa0tTuOXZ1iL8IeDFUWCzjZcn+sJGd9RZdH9esYVjEejGmzf+FFYQpMi/kZUk2kPy/q1H3/GPw7np8qar/stfg== dependencies: "@babel/compat-data" "^7.21.4" @@ -657,7 +678,7 @@ "@babel/helper-define-polyfill-provider@^0.3.3": version "0.3.3" - resolved "https://registry.yarnpkg.com/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.3.3.tgz#8612e55be5d51f0cd1f36b4a5a83924e89884b7a" + resolved "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.3.3.tgz" integrity sha512-z5aQKU4IzbqCC1XH0nAqfsFLMVSo22SBKUc0BxGrLkolTdPTructy0ToNnlO2zA4j9Q/7pjMZf0DSY+DSTYzww== dependencies: "@babel/helper-compilation-targets" "^7.17.7" @@ -669,12 +690,12 @@ "@babel/helper-environment-visitor@^7.18.9": version "7.18.9" - resolved "https://registry.yarnpkg.com/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.9.tgz#0c0cee9b35d2ca190478756865bb3528422f51be" + resolved "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.9.tgz" integrity sha512-3r/aACDJ3fhQ/EVgFy0hpj8oHyHpQc+LPtJoY9SzTThAsStm4Ptegq92vqKoE3vD706ZVFWITnMnxucw+S9Ipg== "@babel/helper-function-name@^7.21.0": version "7.21.0" - resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.21.0.tgz#d552829b10ea9f120969304023cd0645fa00b1b4" + resolved "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.21.0.tgz" integrity sha512-HfK1aMRanKHpxemaY2gqBmL04iAPOPRj7DxtNbiDOrJK+gdwkiNRVpCpUJYbUT+aZyemKN8brqTOxzCaG6ExRg== dependencies: "@babel/template" "^7.20.7" @@ -682,21 +703,21 @@ "@babel/helper-hoist-variables@^7.18.6": version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.18.6.tgz#d4d2c8fb4baeaa5c68b99cc8245c56554f926678" + resolved "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.18.6.tgz" integrity sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q== dependencies: "@babel/types" "^7.18.6" "@babel/helper-module-imports@^7.18.6", "@babel/helper-module-imports@^7.21.4": version "7.21.4" - resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.21.4.tgz#ac88b2f76093637489e718a90cec6cf8a9b029af" + resolved "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.21.4.tgz" integrity sha512-orajc5T2PsRYUN3ZryCEFeMDYwyw09c/pZeaQEZPH0MpKzSvn3e0uXsDBu3k03VI+9DBiRo+l22BfKTpKwa/Wg== dependencies: "@babel/types" "^7.21.4" "@babel/helper-module-transforms@^7.21.2": version "7.21.2" - resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.21.2.tgz#160caafa4978ac8c00ac66636cb0fa37b024e2d2" + resolved "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.21.2.tgz" integrity sha512-79yj2AR4U/Oqq/WOV7Lx6hUjau1Zfo4cI+JLAVYeMV5XIlbOhmjEk5ulbTc9fMpmlojzZHkUUxAiK+UKn+hNQQ== dependencies: "@babel/helper-environment-visitor" "^7.18.9" @@ -710,41 +731,41 @@ "@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.12.13", "@babel/helper-plugin-utils@^7.14.5", "@babel/helper-plugin-utils@^7.16.7", "@babel/helper-plugin-utils@^7.20.2", "@babel/helper-plugin-utils@^7.8.0": version "7.20.2" - resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.20.2.tgz#d1b9000752b18d0877cff85a5c376ce5c3121629" + resolved "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.20.2.tgz" integrity sha512-8RvlJG2mj4huQ4pZ+rU9lqKi9ZKiRmuvGuM2HlWmkmgOhbs6zEAw6IEiJ5cQqGbDzGZOhwuOQNtZMi/ENLjZoQ== "@babel/helper-simple-access@^7.20.2": version "7.20.2" - resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.20.2.tgz#0ab452687fe0c2cfb1e2b9e0015de07fc2d62dd9" + resolved "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.20.2.tgz" integrity sha512-+0woI/WPq59IrqDYbVGfshjT5Dmk/nnbdpcF8SnMhhXObpTq2KNBdLFRFrkVdbDOyUmHBCxzm5FHV1rACIkIbA== dependencies: "@babel/types" "^7.20.2" "@babel/helper-split-export-declaration@^7.18.6": version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.18.6.tgz#7367949bc75b20c6d5a5d4a97bba2824ae8ef075" + resolved "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.18.6.tgz" integrity sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA== dependencies: "@babel/types" "^7.18.6" "@babel/helper-string-parser@^7.19.4": version "7.19.4" - resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.19.4.tgz#38d3acb654b4701a9b77fb0615a96f775c3a9e63" + resolved "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.19.4.tgz" integrity sha512-nHtDoQcuqFmwYNYPz3Rah5ph2p8PFeFCsZk9A/48dPc/rGocJ5J3hAAZ7pb76VWX3fZKu+uEr/FhH5jLx7umrw== "@babel/helper-validator-identifier@^7.18.6", "@babel/helper-validator-identifier@^7.19.1": version "7.19.1" - resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz#7eea834cf32901ffdc1a7ee555e2f9c27e249ca2" + resolved "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz" integrity sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w== "@babel/helper-validator-option@^7.21.0": version "7.21.0" - resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.21.0.tgz#8224c7e13ace4bafdc4004da2cf064ef42673180" + resolved "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.21.0.tgz" integrity sha512-rmL/B8/f0mKS2baE9ZpyTcTavvEuWhTTW8amjzXNvYG4AwBsqTLikfXsEofsJEfKHf+HQVQbFOHy6o+4cnC/fQ== "@babel/helpers@^7.21.0": version "7.21.0" - resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.21.0.tgz#9dd184fb5599862037917cdc9eecb84577dc4e7e" + resolved "https://registry.npmjs.org/@babel/helpers/-/helpers-7.21.0.tgz" integrity sha512-XXve0CBtOW0pd7MRzzmoyuSj0e3SEzj8pgyFxnTT1NJZL38BD1MK7yYrm8yefRPIDvNNe14xR4FdbHwpInD4rA== dependencies: "@babel/template" "^7.20.7" @@ -753,7 +774,7 @@ "@babel/highlight@^7.18.6": version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.18.6.tgz#81158601e93e2563795adcbfbdf5d64be3f2ecdf" + resolved "https://registry.npmjs.org/@babel/highlight/-/highlight-7.18.6.tgz" integrity sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g== dependencies: "@babel/helper-validator-identifier" "^7.18.6" @@ -762,115 +783,115 @@ "@babel/parser@^7.1.0", "@babel/parser@^7.14.7", "@babel/parser@^7.20.7", "@babel/parser@^7.21.4": version "7.21.4" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.21.4.tgz#94003fdfc520bbe2875d4ae557b43ddb6d880f17" + resolved "https://registry.npmjs.org/@babel/parser/-/parser-7.21.4.tgz" integrity sha512-alVJj7k7zIxqBZ7BTRhz0IqJFxW1VJbm6N8JbcYhQ186df9ZBPbZBmWSqAMXwHGsCJdYks7z/voa3ibiS5bCIw== "@babel/parser@^7.20.15": - version "7.22.7" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.22.7.tgz#df8cf085ce92ddbdbf668a7f186ce848c9036cae" - integrity sha512-7NF8pOkHP5o2vpmGgNGcfAeCvOYhGLyA3Z4eBQkT1RJlWu47n63bCs93QfJ2hIAFCil7L5P2IWhs1oToVgrL0Q== + version "7.22.16" + resolved "https://registry.npmjs.org/@babel/parser/-/parser-7.22.16.tgz" + integrity sha512-+gPfKv8UWeKKeJTUxe59+OobVcrYHETCsORl61EmSkmgymguYk/X5bp7GuUIXaFsc6y++v8ZxPsLSSuujqDphA== "@babel/plugin-syntax-async-generators@^7.8.4": version "7.8.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz#a983fb1aeb2ec3f6ed042a210f640e90e786fe0d" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz" integrity sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw== dependencies: "@babel/helper-plugin-utils" "^7.8.0" "@babel/plugin-syntax-bigint@^7.8.3": version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz#4c9a6f669f5d0cdf1b90a1671e9a146be5300cea" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz" integrity sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg== dependencies: "@babel/helper-plugin-utils" "^7.8.0" "@babel/plugin-syntax-class-properties@^7.8.3": version "7.12.13" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz#b5c987274c4a3a82b89714796931a6b53544ae10" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz" integrity sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA== dependencies: "@babel/helper-plugin-utils" "^7.12.13" "@babel/plugin-syntax-import-meta@^7.8.3": version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz#ee601348c370fa334d2207be158777496521fd51" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz" integrity sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g== dependencies: "@babel/helper-plugin-utils" "^7.10.4" "@babel/plugin-syntax-json-strings@^7.8.3": version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz#01ca21b668cd8218c9e640cb6dd88c5412b2c96a" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz" integrity sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA== dependencies: "@babel/helper-plugin-utils" "^7.8.0" "@babel/plugin-syntax-jsx@^7.7.2": version "7.21.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.21.4.tgz#f264ed7bf40ffc9ec239edabc17a50c4f5b6fea2" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.21.4.tgz" integrity sha512-5hewiLct5OKyh6PLKEYaFclcqtIgCb6bmELouxjF6up5q3Sov7rOayW4RwhbaBL0dit8rA80GNfY+UuDp2mBbQ== dependencies: "@babel/helper-plugin-utils" "^7.20.2" "@babel/plugin-syntax-logical-assignment-operators@^7.8.3": version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz#ca91ef46303530448b906652bac2e9fe9941f699" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz" integrity sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig== dependencies: "@babel/helper-plugin-utils" "^7.10.4" "@babel/plugin-syntax-nullish-coalescing-operator@^7.8.3": version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz#167ed70368886081f74b5c36c65a88c03b66d1a9" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz" integrity sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ== dependencies: "@babel/helper-plugin-utils" "^7.8.0" "@babel/plugin-syntax-numeric-separator@^7.8.3": version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz#b9b070b3e33570cd9fd07ba7fa91c0dd37b9af97" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz" integrity sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug== dependencies: "@babel/helper-plugin-utils" "^7.10.4" "@babel/plugin-syntax-object-rest-spread@^7.8.3": version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz#60e225edcbd98a640332a2e72dd3e66f1af55871" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz" integrity sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA== dependencies: "@babel/helper-plugin-utils" "^7.8.0" "@babel/plugin-syntax-optional-catch-binding@^7.8.3": version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz#6111a265bcfb020eb9efd0fdfd7d26402b9ed6c1" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz" integrity sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q== dependencies: "@babel/helper-plugin-utils" "^7.8.0" "@babel/plugin-syntax-optional-chaining@^7.8.3": version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz#4f69c2ab95167e0180cd5336613f8c5788f7d48a" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz" integrity sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg== dependencies: "@babel/helper-plugin-utils" "^7.8.0" "@babel/plugin-syntax-top-level-await@^7.8.3": version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz#c1cfdadc35a646240001f06138247b741c34d94c" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz" integrity sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw== dependencies: "@babel/helper-plugin-utils" "^7.14.5" "@babel/plugin-syntax-typescript@^7.7.2": version "7.21.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.21.4.tgz#2751948e9b7c6d771a8efa59340c15d4a2891ff8" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.21.4.tgz" integrity sha512-xz0D39NvhQn4t4RNsHmDnnsaQizIlUkdtYvLs8La1BlfjQ6JEwxkJGeqJMW2tAXx+q6H+WFuUTXNdYVpEya0YA== dependencies: "@babel/helper-plugin-utils" "^7.20.2" "@babel/plugin-transform-runtime@^7.5.5": version "7.21.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.21.4.tgz#2e1da21ca597a7d01fc96b699b21d8d2023191aa" + resolved "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.21.4.tgz" integrity sha512-1J4dhrw1h1PqnNNpzwxQ2UBymJUF8KuPjAAnlLwZcGhHAIqUigFW7cdK6GHoB64ubY4qXQNYknoUeks4Wz7CUA== dependencies: "@babel/helper-module-imports" "^7.21.4" @@ -880,23 +901,30 @@ babel-plugin-polyfill-regenerator "^0.4.1" semver "^6.3.0" -"@babel/runtime@^7.0.0", "@babel/runtime@^7.12.1", "@babel/runtime@^7.15.4", "@babel/runtime@^7.3.1", "@babel/runtime@^7.4.4", "@babel/runtime@^7.5.5", "@babel/runtime@^7.8.4": +"@babel/runtime@^7.0.0", "@babel/runtime@^7.12.1", "@babel/runtime@^7.15.4", "@babel/runtime@^7.4.4", "@babel/runtime@^7.5.5", "@babel/runtime@^7.8.4": version "7.21.0" - resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.21.0.tgz#5b55c9d394e5fcf304909a8b00c07dc217b56673" + resolved "https://registry.npmjs.org/@babel/runtime/-/runtime-7.21.0.tgz" integrity sha512-xwII0//EObnq89Ji5AKYQaRYiW/nZ3llSv29d49IuxPhKbtJoLP+9QUUZ4nVragQVtaVGeZrpB+ZtG/Pdy/POw== dependencies: regenerator-runtime "^0.13.11" +"@babel/runtime@^7.3.1": + version "7.22.15" + resolved "https://registry.npmjs.org/@babel/runtime/-/runtime-7.22.15.tgz" + integrity sha512-T0O+aa+4w0u06iNmapipJXMV4HoUir03hpx3/YqXXhu9xim3w+dVphjFWl1OH8NbZHw5Lbm9k45drDkgq2VNNA== + dependencies: + regenerator-runtime "^0.14.0" + "@babel/runtime@^7.6.3", "@babel/runtime@^7.9.2": version "7.21.5" - resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.21.5.tgz#8492dddda9644ae3bda3b45eabe87382caee7200" + resolved "https://registry.npmjs.org/@babel/runtime/-/runtime-7.21.5.tgz" integrity sha512-8jI69toZqqcsnqGGqwGS4Qb1VwLOEp4hz+CXPywcvjs60u3B4Pom/U/7rm4W8tMOYEB+E9wgD0mW1l3r8qlI9Q== dependencies: regenerator-runtime "^0.13.11" "@babel/template@^7.20.7", "@babel/template@^7.3.3": version "7.20.7" - resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.20.7.tgz#a15090c2839a83b02aa996c0b4994005841fd5a8" + resolved "https://registry.npmjs.org/@babel/template/-/template-7.20.7.tgz" integrity sha512-8SegXApWe6VoNw0r9JHpSteLKTpTiLZ4rMlGIm9JQ18KiCtyQiAMEazujAHrUS5flrcqYZa75ukev3P6QmUwUw== dependencies: "@babel/code-frame" "^7.18.6" @@ -905,7 +933,7 @@ "@babel/traverse@^7.21.0", "@babel/traverse@^7.21.2", "@babel/traverse@^7.21.4", "@babel/traverse@^7.7.2": version "7.21.4" - resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.21.4.tgz#a836aca7b116634e97a6ed99976236b3282c9d36" + resolved "https://registry.npmjs.org/@babel/traverse/-/traverse-7.21.4.tgz" integrity sha512-eyKrRHKdyZxqDm+fV1iqL9UAHMoIg0nDaGqfIOd8rKH17m5snv7Gn4qgjBoFfLz9APvjFU/ICT00NVCv1Epp8Q== dependencies: "@babel/code-frame" "^7.21.4" @@ -921,7 +949,7 @@ "@babel/types@^7.0.0", "@babel/types@^7.18.6", "@babel/types@^7.20.2", "@babel/types@^7.20.7", "@babel/types@^7.21.0", "@babel/types@^7.21.2", "@babel/types@^7.21.4", "@babel/types@^7.3.0", "@babel/types@^7.3.3": version "7.21.4" - resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.21.4.tgz#2d5d6bb7908699b3b416409ffd3b5daa25b030d4" + resolved "https://registry.npmjs.org/@babel/types/-/types-7.21.4.tgz" integrity sha512-rU2oY501qDxE8Pyo7i/Orqma4ziCOrby0/9mvbDUGEfvZjb279Nk9k19e2fiCxHbRRpY2ZyrgW1eq22mvmOIzA== dependencies: "@babel/helper-string-parser" "^7.19.4" @@ -930,17 +958,17 @@ "@bcoe/v8-coverage@^0.2.3": version "0.2.3" - resolved "https://registry.yarnpkg.com/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz#75a2e8b51cb758a7553d6804a5932d7aace75c39" + resolved "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz" integrity sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw== "@celo/base@1.5.2": version "1.5.2" - resolved "https://registry.yarnpkg.com/@celo/base/-/base-1.5.2.tgz#168ab5e4e30b374079d8d139fafc52ca6bfd4100" + resolved "https://registry.npmjs.org/@celo/base/-/base-1.5.2.tgz" integrity sha512-KGf6Dl9E6D01vAfkgkjL2sG+zqAjspAogILIpWstljWdG5ifyA75jihrnDEHaMCoQS0KxHvTdP1XYS/GS6BEyQ== "@celo/bls12377js@0.1.1": version "0.1.1" - resolved "https://registry.yarnpkg.com/@celo/bls12377js/-/bls12377js-0.1.1.tgz#ba3574f41697cdba96c10ae96bb1aac057285798" + resolved "https://registry.npmjs.org/@celo/bls12377js/-/bls12377js-0.1.1.tgz" integrity sha512-hQjTIegg1+ZX5lPyeBYUEHYW7ktG0xkWxf4tcj//bK+tzyeQd6mMrne7C4+tBZgn+I35HtxYIo+YOLYJxXBg7A== dependencies: "@stablelib/blake2xs" "0.10.4" @@ -948,7 +976,7 @@ "@celo/connect@1.5.2": version "1.5.2" - resolved "https://registry.yarnpkg.com/@celo/connect/-/connect-1.5.2.tgz#09f0b03bda6f8a6d523fd010492f204cbe82aabd" + resolved "https://registry.npmjs.org/@celo/connect/-/connect-1.5.2.tgz" integrity sha512-IHsvYp1HizIPfPPeIHyvsmJytIf7HNtNWo9CqCbsqfNfmw53q6dFJu2p5X0qz/fUnR5840cUga8cEyuYZTfp+w== dependencies: "@celo/utils" "1.5.2" @@ -960,7 +988,7 @@ "@celo/contractkit@1.5.2": version "1.5.2" - resolved "https://registry.yarnpkg.com/@celo/contractkit/-/contractkit-1.5.2.tgz#be15d570f3044a190dabb6bbe53d5081c78ea605" + resolved "https://registry.npmjs.org/@celo/contractkit/-/contractkit-1.5.2.tgz" integrity sha512-b0r5TlfYDEscxze1Ai2jyJayiVElA9jvEehMD6aOSNtVhfP8oirjFIIffRe0Wzw1MSDGkw+q1c4m0Yw5sEOlvA== dependencies: "@celo/base" "1.5.2" @@ -978,7 +1006,7 @@ "@celo/phone-number-privacy-common@1.0.39": version "1.0.39" - resolved "https://registry.yarnpkg.com/@celo/phone-number-privacy-common/-/phone-number-privacy-common-1.0.39.tgz#3c9568f70378d24d11afcc4306024c5cf4f8efe9" + resolved "https://registry.npmjs.org/@celo/phone-number-privacy-common/-/phone-number-privacy-common-1.0.39.tgz" integrity sha512-0sbeuoYCN2ZQYO1CryR0Hf9HhOQKuIDZraWFMpUlwrUKk5qKmSMlV16xobG4VL5qUpXHgIRjKPfmcaf0rkrn8A== dependencies: "@celo/base" "1.5.2" @@ -996,7 +1024,7 @@ "@celo/poprf@^0.1.9": version "0.1.9" - resolved "https://registry.yarnpkg.com/@celo/poprf/-/poprf-0.1.9.tgz#38c514ce0f572b80edeb9dc280b6cf5e9d7c2a75" + resolved "https://registry.npmjs.org/@celo/poprf/-/poprf-0.1.9.tgz" integrity sha512-+993EA/W+TBCZyY5G0B2EVdXnPX6t2AldgRAIMaT9WIqTwZKi/TcdJDUQl8mj7HEHMPHlpgCBOVgaHkUcwo/5A== "@celo/typechain-target-web3-v1-celo@0.2.0": @@ -1009,7 +1037,7 @@ "@celo/utils@1.5.2": version "1.5.2" - resolved "https://registry.yarnpkg.com/@celo/utils/-/utils-1.5.2.tgz#ddb7f3b50c801225ab41d2355fbe010976329099" + resolved "https://registry.npmjs.org/@celo/utils/-/utils-1.5.2.tgz" integrity sha512-JyKjuVMbdkyFOb1TpQw6zqamPQWYg7I9hOnva3MeIcQ3ZrJIaNHx0/I+JXFjuu3YYBc1mG8nXp2uPJJTGrwzCQ== dependencies: "@celo/base" "1.5.2" @@ -1042,7 +1070,7 @@ "@celo/wallet-base@1.5.2": version "1.5.2" - resolved "https://registry.yarnpkg.com/@celo/wallet-base/-/wallet-base-1.5.2.tgz#ae8df425bf3c702277bb1b63a761a2ec8429e7aa" + resolved "https://registry.npmjs.org/@celo/wallet-base/-/wallet-base-1.5.2.tgz" integrity sha512-NYJu7OtSRFpGcvSMl2Wc8zN32S6oTkAzKqhH7rXisQ0I2q4yNwCzoquzPVYB0G2UVUFKuuxgsA5V+Zda/LQCyw== dependencies: "@celo/base" "1.5.2" @@ -1057,7 +1085,7 @@ "@celo/wallet-local@1.5.2": version "1.5.2" - resolved "https://registry.yarnpkg.com/@celo/wallet-local/-/wallet-local-1.5.2.tgz#66ea5fb763e19724309e3d56f312f1a342e12b91" + resolved "https://registry.npmjs.org/@celo/wallet-local/-/wallet-local-1.5.2.tgz" integrity sha512-Aas4SwqQc8ap0OFAOZc+jBR4cXr20V9AReHNEI8Y93R3g1+RlSEJ1Zmsu4vN+Rriz58YqgMnr+pihorw8QydFQ== dependencies: "@celo/connect" "1.5.2" @@ -1069,19 +1097,19 @@ "@chainsafe/as-sha256@^0.3.1": version "0.3.1" - resolved "https://registry.yarnpkg.com/@chainsafe/as-sha256/-/as-sha256-0.3.1.tgz#3639df0e1435cab03f4d9870cc3ac079e57a6fc9" + resolved "https://registry.npmjs.org/@chainsafe/as-sha256/-/as-sha256-0.3.1.tgz" integrity sha512-hldFFYuf49ed7DAakWVXSJODuq3pzJEguD8tQ7h+sGkM18vja+OFoJI9krnGmgzyuZC2ETX0NOIcCTy31v2Mtg== "@chainsafe/persistent-merkle-tree@^0.4.2": version "0.4.2" - resolved "https://registry.yarnpkg.com/@chainsafe/persistent-merkle-tree/-/persistent-merkle-tree-0.4.2.tgz#4c9ee80cc57cd3be7208d98c40014ad38f36f7ff" + resolved "https://registry.npmjs.org/@chainsafe/persistent-merkle-tree/-/persistent-merkle-tree-0.4.2.tgz" integrity sha512-lLO3ihKPngXLTus/L7WHKaw9PnNJWizlOF1H9NNzHP6Xvh82vzg9F2bzkXhYIFshMZ2gTCEz8tq6STe7r5NDfQ== dependencies: "@chainsafe/as-sha256" "^0.3.1" "@chainsafe/ssz@0.9.4": version "0.9.4" - resolved "https://registry.yarnpkg.com/@chainsafe/ssz/-/ssz-0.9.4.tgz#696a8db46d6975b600f8309ad3a12f7c0e310497" + resolved "https://registry.npmjs.org/@chainsafe/ssz/-/ssz-0.9.4.tgz" integrity sha512-77Qtg2N1ayqs4Bg/wvnWfg5Bta7iy7IRh8XqXh7oNMeP2HBbBwx8m6yTpA8p0EHItWPEBkgZd5S5/LSlp3GXuQ== dependencies: "@chainsafe/as-sha256" "^0.3.1" @@ -1090,19 +1118,19 @@ "@colors/colors@1.5.0": version "1.5.0" - resolved "https://registry.yarnpkg.com/@colors/colors/-/colors-1.5.0.tgz#bb504579c1cae923e6576a4f5da43d25f97bdbd9" + resolved "https://registry.npmjs.org/@colors/colors/-/colors-1.5.0.tgz" integrity sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ== "@cspotcode/source-map-support@^0.8.0": version "0.8.1" - resolved "https://registry.yarnpkg.com/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz#00629c35a688e05a88b1cda684fb9d5e73f000a1" + resolved "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz" integrity sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw== dependencies: "@jridgewell/trace-mapping" "0.3.9" "@dabh/diagnostics@^2.0.2": version "2.0.3" - resolved "https://registry.yarnpkg.com/@dabh/diagnostics/-/diagnostics-2.0.3.tgz#7f7e97ee9a725dffc7808d93668cc984e1dc477a" + resolved "https://registry.npmjs.org/@dabh/diagnostics/-/diagnostics-2.0.3.tgz" integrity sha512-hrlQOIi7hAfzsMqlGSFyVucrx38O+j6wiGOf//H2ecvIEqYN4ADBSS2iLMh5UFyDunCNniUIPk/q3riFv45xRA== dependencies: colorspace "1.1.x" @@ -1111,7 +1139,7 @@ "@ensdomains/address-encoder@^0.1.7": version "0.1.9" - resolved "https://registry.yarnpkg.com/@ensdomains/address-encoder/-/address-encoder-0.1.9.tgz#f948c485443d9ef7ed2c0c4790e931c33334d02d" + resolved "https://registry.npmjs.org/@ensdomains/address-encoder/-/address-encoder-0.1.9.tgz" integrity sha512-E2d2gP4uxJQnDu2Kfg1tHNspefzbLT8Tyjrm5sEuim32UkU2sm5xL4VXtgc2X33fmPEw9+jUMpGs4veMbf+PYg== dependencies: bech32 "^1.1.3" @@ -1124,7 +1152,7 @@ "@ensdomains/ens@0.4.5": version "0.4.5" - resolved "https://registry.yarnpkg.com/@ensdomains/ens/-/ens-0.4.5.tgz#e0aebc005afdc066447c6e22feb4eda89a5edbfc" + resolved "https://registry.npmjs.org/@ensdomains/ens/-/ens-0.4.5.tgz" integrity sha512-JSvpj1iNMFjK6K+uVl4unqMoa9rf5jopb8cya5UGBWz23Nw8hSNT7efgUx4BTlAPAgpNlEioUfeTyQ6J9ZvTVw== dependencies: bluebird "^3.5.2" @@ -1135,7 +1163,7 @@ "@ensdomains/ensjs@^2.1.0": version "2.1.0" - resolved "https://registry.yarnpkg.com/@ensdomains/ensjs/-/ensjs-2.1.0.tgz#0a7296c1f3d735ef019320d863a7846a0760c460" + resolved "https://registry.npmjs.org/@ensdomains/ensjs/-/ensjs-2.1.0.tgz" integrity sha512-GRbGPT8Z/OJMDuxs75U/jUNEC0tbL0aj7/L/QQznGYKm/tiasp+ndLOaoULy9kKJFC0TBByqfFliEHDgoLhyog== dependencies: "@babel/runtime" "^7.4.4" @@ -1149,12 +1177,12 @@ "@ensdomains/resolver@0.2.4": version "0.2.4" - resolved "https://registry.yarnpkg.com/@ensdomains/resolver/-/resolver-0.2.4.tgz#c10fe28bf5efbf49bff4666d909aed0265efbc89" + resolved "https://registry.npmjs.org/@ensdomains/resolver/-/resolver-0.2.4.tgz" integrity sha512-bvaTH34PMCbv6anRa9I/0zjLJgY4EuznbEMgbV77JBCQ9KNC46rzi0avuxpOfu+xDjPEtSFGqVEOr5GlUSGudA== "@ethereumjs/block@4.2.1", "@ethereumjs/block@^4.2.1": version "4.2.1" - resolved "https://registry.yarnpkg.com/@ethereumjs/block/-/block-4.2.1.tgz#cb0d8b770fe69c61e6e41d6693d285de76b3a7cb" + resolved "https://registry.npmjs.org/@ethereumjs/block/-/block-4.2.1.tgz" integrity sha512-Z/Ty8EkD8o5tvEX5JPrr0pvf60JkSxmwV231aBZ744N75SLvq54dTu/Gk7azC/2xaWhSu1dOp5D5+bryqgG5Cg== dependencies: "@ethereumjs/common" "^3.1.1" @@ -1167,7 +1195,7 @@ "@ethereumjs/blockchain@6.2.1": version "6.2.1" - resolved "https://registry.yarnpkg.com/@ethereumjs/blockchain/-/blockchain-6.2.1.tgz#9bda6b26dff7399a8f6f71efa86ae6dfe343f916" + resolved "https://registry.npmjs.org/@ethereumjs/blockchain/-/blockchain-6.2.1.tgz" integrity sha512-gP7EtXAPMDna/e28ZMDErfatF/2FRYi4HA2qleIKuEC33RbizGmTK34BoEuSXVeWHTIyNBLO5m9fwQhsF2LNyA== dependencies: "@ethereumjs/block" "^4.2.1" @@ -1186,7 +1214,7 @@ "@ethereumjs/common@2.5.0": version "2.5.0" - resolved "https://registry.yarnpkg.com/@ethereumjs/common/-/common-2.5.0.tgz#ec61551b31bef7a69d1dc634d8932468866a4268" + resolved "https://registry.npmjs.org/@ethereumjs/common/-/common-2.5.0.tgz" integrity sha512-DEHjW6e38o+JmB/NO3GZBpW4lpaiBpkFgXF6jLcJ6gETBYpEyaA5nTimsWBUJR3Vmtm/didUEbNjajskugZORg== dependencies: crc-32 "^1.2.0" @@ -1194,7 +1222,7 @@ "@ethereumjs/common@3.1.1", "@ethereumjs/common@^3.1.1": version "3.1.1" - resolved "https://registry.yarnpkg.com/@ethereumjs/common/-/common-3.1.1.tgz#6f754c8933727ad781f63ca3929caab542fe184e" + resolved "https://registry.npmjs.org/@ethereumjs/common/-/common-3.1.1.tgz" integrity sha512-iEl4gQtcrj2udNhEizs04z7WA15ez1QoXL0XzaCyaNgwRyXezIg1DnfNeZUUpJnkrOF/0rYXyq2UFSLxt1NPQg== dependencies: "@ethereumjs/util" "^8.0.5" @@ -1202,7 +1230,7 @@ "@ethereumjs/common@^2.5.0", "@ethereumjs/common@^2.6.3", "@ethereumjs/common@^2.6.4": version "2.6.5" - resolved "https://registry.yarnpkg.com/@ethereumjs/common/-/common-2.6.5.tgz#0a75a22a046272579d91919cb12d84f2756e8d30" + resolved "https://registry.npmjs.org/@ethereumjs/common/-/common-2.6.5.tgz" integrity sha512-lRyVQOeCDaIVtgfbowla32pzeDv2Obr8oR8Put5RdUBNRGr1VGPGQNGP6elWIpgK3YdpzqTOh4GyUGOureVeeA== dependencies: crc-32 "^1.2.0" @@ -1210,7 +1238,7 @@ "@ethereumjs/ethash@^2.0.4": version "2.0.4" - resolved "https://registry.yarnpkg.com/@ethereumjs/ethash/-/ethash-2.0.4.tgz#1892e8e17a11b10efeee3075fb09cd3cbd12c33b" + resolved "https://registry.npmjs.org/@ethereumjs/ethash/-/ethash-2.0.4.tgz" integrity sha512-WREZZEZKh8baGbG4IwLXvjA+ItFWzD/myUnefKALuAcB9+um93e1YBaeSQzeyY6m5jiDmpxu55SxF0mB8e+xdQ== dependencies: "@ethereumjs/block" "^4.2.1" @@ -1222,7 +1250,7 @@ "@ethereumjs/evm@npm:@celo/ethereumjs-evm@1.3.1-unofficial.0": version "1.3.1-unofficial.0" - resolved "https://registry.yarnpkg.com/@celo/ethereumjs-evm/-/ethereumjs-evm-1.3.1-unofficial.0.tgz#9083573f0fbf3d45a3ed3d69af8c78509e86803c" + resolved "https://registry.npmjs.org/@celo/ethereumjs-evm/-/ethereumjs-evm-1.3.1-unofficial.0.tgz" integrity sha512-N321IctdVHY6PHesKGnUitjQ0dTRUBggordAmuBRF58foUwW5gMVzAY8c6L7rZVHiuiLYIvxQuQf8iadVzO5TA== dependencies: "@ethereumjs/common" "3.1.1" @@ -1236,12 +1264,12 @@ "@ethereumjs/rlp@4.0.1", "@ethereumjs/rlp@^4.0.0-beta.2", "@ethereumjs/rlp@^4.0.1": version "4.0.1" - resolved "https://registry.yarnpkg.com/@ethereumjs/rlp/-/rlp-4.0.1.tgz#626fabfd9081baab3d0a3074b0c7ecaf674aaa41" + resolved "https://registry.npmjs.org/@ethereumjs/rlp/-/rlp-4.0.1.tgz" integrity sha512-tqsQiBQDQdmPWE1xkkBq4rlSW5QZpLOUJ5RJh2/9fug+q9tnUhuZoVLk7s0scUIKTOzEtR72DFBXI4WiZcMpvw== "@ethereumjs/statemanager@1.0.4": version "1.0.4" - resolved "https://registry.yarnpkg.com/@ethereumjs/statemanager/-/statemanager-1.0.4.tgz#02fb3f05794a2476a78d73660745e9815b476e02" + resolved "https://registry.npmjs.org/@ethereumjs/statemanager/-/statemanager-1.0.4.tgz" integrity sha512-+dNZGqOUXlA+ifkSlz6AvEF/PCRZD7vqKcruoyGtaxOQ0gdfvL/lDiuzV07fECjrqPAEDnQwcO4CTGv+On/0wA== dependencies: "@ethereumjs/common" "^3.1.1" @@ -1253,7 +1281,7 @@ "@ethereumjs/trie@5.0.4", "@ethereumjs/trie@^5.0.4": version "5.0.4" - resolved "https://registry.yarnpkg.com/@ethereumjs/trie/-/trie-5.0.4.tgz#eb06ce2c7957f6a8f07c0db43fb0335b256f3705" + resolved "https://registry.npmjs.org/@ethereumjs/trie/-/trie-5.0.4.tgz" integrity sha512-ycYtAF7BJAu9eaCtrEX+efE5xEQEfItRXXHBcTSMHsF7NfLHcniI0S7KUVYXbJ6imczBmnMHeggCqv8PYQbbOw== dependencies: "@ethereumjs/rlp" "^4.0.1" @@ -1264,7 +1292,7 @@ "@ethereumjs/tx@3.3.2": version "3.3.2" - resolved "https://registry.yarnpkg.com/@ethereumjs/tx/-/tx-3.3.2.tgz#348d4624bf248aaab6c44fec2ae67265efe3db00" + resolved "https://registry.npmjs.org/@ethereumjs/tx/-/tx-3.3.2.tgz" integrity sha512-6AaJhwg4ucmwTvw/1qLaZUX5miWrwZ4nLOUsKyb/HtzS3BMw/CasKhdi1ims9mBKeK9sOJCH4qGKOBGyJCeeog== dependencies: "@ethereumjs/common" "^2.5.0" @@ -1272,7 +1300,7 @@ "@ethereumjs/tx@4.1.1", "@ethereumjs/tx@^4.1.1": version "4.1.1" - resolved "https://registry.yarnpkg.com/@ethereumjs/tx/-/tx-4.1.1.tgz#d1b5bf2c4fd3618f2f333b66e262848530d4686a" + resolved "https://registry.npmjs.org/@ethereumjs/tx/-/tx-4.1.1.tgz" integrity sha512-QDj7nuROfoeyK83RObMA0XCZ+LUDdneNkSCIekO498uEKTY25FxI4Whduc/6j0wdd4IqpQvkq+/7vxSULjGIBQ== dependencies: "@chainsafe/ssz" "0.9.4" @@ -1284,7 +1312,7 @@ "@ethereumjs/tx@^3.3.0", "@ethereumjs/tx@^3.5.1": version "3.5.2" - resolved "https://registry.yarnpkg.com/@ethereumjs/tx/-/tx-3.5.2.tgz#197b9b6299582ad84f9527ca961466fce2296c1c" + resolved "https://registry.npmjs.org/@ethereumjs/tx/-/tx-3.5.2.tgz" integrity sha512-gQDNJWKrSDGu2w7w0PzVXVBNMzb7wwdDOmOqczmhNjqFxFuIbhVJDwiGEnxFNC2/b8ifcZzY7MLcluizohRzNw== dependencies: "@ethereumjs/common" "^2.6.4" @@ -1292,7 +1320,7 @@ "@ethereumjs/util@8.0.2": version "8.0.2" - resolved "https://registry.yarnpkg.com/@ethereumjs/util/-/util-8.0.2.tgz#b7348fc7253649b0f00685a94546c6eee1fad819" + resolved "https://registry.npmjs.org/@ethereumjs/util/-/util-8.0.2.tgz" integrity sha512-b1Fcxmq+ckCdoLPhVIBkTcH8szigMapPuEmD8EDakvtI5Na5rzmX1sBW73YQqaPc7iUxGCAzZP1LrFQ7aEMugA== dependencies: "@ethereumjs/rlp" "^4.0.0-beta.2" @@ -1301,7 +1329,7 @@ "@ethereumjs/util@8.0.5", "@ethereumjs/util@^8.0.5": version "8.0.5" - resolved "https://registry.yarnpkg.com/@ethereumjs/util/-/util-8.0.5.tgz#b9088fc687cc13f0c1243d6133d145dfcf3fe446" + resolved "https://registry.npmjs.org/@ethereumjs/util/-/util-8.0.5.tgz" integrity sha512-259rXKK3b3D8HRVdRmlOEi6QFvwxdt304hhrEAmpZhsj7ufXEOTIc9JRZPMnXatKjECokdLNBcDOFBeBSzAIaw== dependencies: "@chainsafe/ssz" "0.9.4" @@ -1310,7 +1338,7 @@ "@ethereumjs/vm@npm:@celo/ethereumjs-vm@6.4.1-unofficial.0": version "6.4.1-unofficial.0" - resolved "https://registry.yarnpkg.com/@celo/ethereumjs-vm/-/ethereumjs-vm-6.4.1-unofficial.0.tgz#8a6b10e08bde5fe80ad9a2e01fe1a0fa8ef74bf5" + resolved "https://registry.npmjs.org/@celo/ethereumjs-vm/-/ethereumjs-vm-6.4.1-unofficial.0.tgz" integrity sha512-fkCKEjeYVyt/fuLmIERRGCtp/oaGbxd0rzgYCAgHJrGDKGB+LdvzvvyuMOUEbIRzE0jLe4OrDOrnSFLv6QjvVg== dependencies: "@ethereumjs/block" "4.2.1" @@ -1329,7 +1357,7 @@ "@ethersproject/abi@5.0.7": version "5.0.7" - resolved "https://registry.yarnpkg.com/@ethersproject/abi/-/abi-5.0.7.tgz#79e52452bd3ca2956d0e1c964207a58ad1a0ee7b" + resolved "https://registry.npmjs.org/@ethersproject/abi/-/abi-5.0.7.tgz" integrity sha512-Cqktk+hSIckwP/W8O47Eef60VwmoSC/L3lY0+dIBhQPCNn9E4V7rwmm2aFrNRRDJfFlGuZ1khkQUOc3oBX+niw== dependencies: "@ethersproject/address" "^5.0.4" @@ -1344,7 +1372,7 @@ "@ethersproject/abi@5.7.0", "@ethersproject/abi@^5.0.0-beta.146", "@ethersproject/abi@^5.6.3", "@ethersproject/abi@^5.7.0": version "5.7.0" - resolved "https://registry.yarnpkg.com/@ethersproject/abi/-/abi-5.7.0.tgz#b3f3e045bbbeed1af3947335c247ad625a44e449" + resolved "https://registry.npmjs.org/@ethersproject/abi/-/abi-5.7.0.tgz" integrity sha512-351ktp42TiRcYB3H1OP8yajPeAQstMW/yCFokj/AthP9bLHzQFPlOrxOcwYEDkUAICmOHljvN4K39OMTMUa9RA== dependencies: "@ethersproject/address" "^5.7.0" @@ -1359,7 +1387,7 @@ "@ethersproject/abstract-provider@5.7.0", "@ethersproject/abstract-provider@^5.7.0": version "5.7.0" - resolved "https://registry.yarnpkg.com/@ethersproject/abstract-provider/-/abstract-provider-5.7.0.tgz#b0a8550f88b6bf9d51f90e4795d48294630cb9ef" + resolved "https://registry.npmjs.org/@ethersproject/abstract-provider/-/abstract-provider-5.7.0.tgz" integrity sha512-R41c9UkchKCpAqStMYUpdunjo3pkEvZC3FAwZn5S5MGbXoMQOHIdHItezTETxAO5bevtMApSyEhn9+CHcDsWBw== dependencies: "@ethersproject/bignumber" "^5.7.0" @@ -1372,7 +1400,7 @@ "@ethersproject/abstract-signer@5.7.0", "@ethersproject/abstract-signer@^5.7.0": version "5.7.0" - resolved "https://registry.yarnpkg.com/@ethersproject/abstract-signer/-/abstract-signer-5.7.0.tgz#13f4f32117868452191a4649723cb086d2b596b2" + resolved "https://registry.npmjs.org/@ethersproject/abstract-signer/-/abstract-signer-5.7.0.tgz" integrity sha512-a16V8bq1/Cz+TGCkE2OPMTOUDLS3grCpdjoJCYNnVBbdYEMSgKrU0+B90s8b6H+ByYTBZN7a3g76jdIJi7UfKQ== dependencies: "@ethersproject/abstract-provider" "^5.7.0" @@ -1383,7 +1411,7 @@ "@ethersproject/address@5.7.0", "@ethersproject/address@^5.0.4", "@ethersproject/address@^5.7.0": version "5.7.0" - resolved "https://registry.yarnpkg.com/@ethersproject/address/-/address-5.7.0.tgz#19b56c4d74a3b0a46bfdbb6cfcc0a153fc697f37" + resolved "https://registry.npmjs.org/@ethersproject/address/-/address-5.7.0.tgz" integrity sha512-9wYhYt7aghVGo758POM5nqcOMaE168Q6aRLJZwUmiqSrAungkG74gSSeKEIR7ukixesdRZGPgVqme6vmxs1fkA== dependencies: "@ethersproject/bignumber" "^5.7.0" @@ -1394,14 +1422,14 @@ "@ethersproject/base64@5.7.0", "@ethersproject/base64@^5.7.0": version "5.7.0" - resolved "https://registry.yarnpkg.com/@ethersproject/base64/-/base64-5.7.0.tgz#ac4ee92aa36c1628173e221d0d01f53692059e1c" + resolved "https://registry.npmjs.org/@ethersproject/base64/-/base64-5.7.0.tgz" integrity sha512-Dr8tcHt2mEbsZr/mwTPIQAf3Ai0Bks/7gTw9dSqk1mQvhW3XvRlmDJr/4n+wg1JmCl16NZue17CDh8xb/vZ0sQ== dependencies: "@ethersproject/bytes" "^5.7.0" "@ethersproject/basex@5.7.0", "@ethersproject/basex@^5.7.0": version "5.7.0" - resolved "https://registry.yarnpkg.com/@ethersproject/basex/-/basex-5.7.0.tgz#97034dc7e8938a8ca943ab20f8a5e492ece4020b" + resolved "https://registry.npmjs.org/@ethersproject/basex/-/basex-5.7.0.tgz" integrity sha512-ywlh43GwZLv2Voc2gQVTKBoVQ1mti3d8HK5aMxsfu/nRDnMmNqaSJ3r3n85HBByT8OpoY96SXM1FogC533T4zw== dependencies: "@ethersproject/bytes" "^5.7.0" @@ -1409,7 +1437,7 @@ "@ethersproject/bignumber@5.7.0", "@ethersproject/bignumber@^5.0.7", "@ethersproject/bignumber@^5.7.0": version "5.7.0" - resolved "https://registry.yarnpkg.com/@ethersproject/bignumber/-/bignumber-5.7.0.tgz#e2f03837f268ba655ffba03a57853e18a18dc9c2" + resolved "https://registry.npmjs.org/@ethersproject/bignumber/-/bignumber-5.7.0.tgz" integrity sha512-n1CAdIHRWjSucQO3MC1zPSVgV/6dy/fjL9pMrPP9peL+QxEg9wOsVqwD4+818B6LUEtaXzVHQiuivzRoxPxUGw== dependencies: "@ethersproject/bytes" "^5.7.0" @@ -1418,21 +1446,21 @@ "@ethersproject/bytes@5.7.0", "@ethersproject/bytes@^5.0.4", "@ethersproject/bytes@^5.7.0": version "5.7.0" - resolved "https://registry.yarnpkg.com/@ethersproject/bytes/-/bytes-5.7.0.tgz#a00f6ea8d7e7534d6d87f47188af1148d71f155d" + resolved "https://registry.npmjs.org/@ethersproject/bytes/-/bytes-5.7.0.tgz" integrity sha512-nsbxwgFXWh9NyYWo+U8atvmMsSdKJprTcICAkvbBffT75qDocbuggBU0SJiVK2MuTrp0q+xvLkTnGMPK1+uA9A== dependencies: "@ethersproject/logger" "^5.7.0" "@ethersproject/constants@5.7.0", "@ethersproject/constants@^5.0.4", "@ethersproject/constants@^5.7.0": version "5.7.0" - resolved "https://registry.yarnpkg.com/@ethersproject/constants/-/constants-5.7.0.tgz#df80a9705a7e08984161f09014ea012d1c75295e" + resolved "https://registry.npmjs.org/@ethersproject/constants/-/constants-5.7.0.tgz" integrity sha512-DHI+y5dBNvkpYUMiRQyxRBYBefZkJfo70VUkUAsRjcPs47muV9evftfZ0PJVCXYbAiCgght0DtcF9srFQmIgWA== dependencies: "@ethersproject/bignumber" "^5.7.0" "@ethersproject/contracts@5.7.0": version "5.7.0" - resolved "https://registry.yarnpkg.com/@ethersproject/contracts/-/contracts-5.7.0.tgz#c305e775abd07e48aa590e1a877ed5c316f8bd1e" + resolved "https://registry.npmjs.org/@ethersproject/contracts/-/contracts-5.7.0.tgz" integrity sha512-5GJbzEU3X+d33CdfPhcyS+z8MzsTrBGk/sc+G+59+tPa9yFkl6HQ9D6L0QMgNTA9q8dT0XKxxkyp883XsQvbbg== dependencies: "@ethersproject/abi" "^5.7.0" @@ -1448,7 +1476,7 @@ "@ethersproject/hash@5.7.0", "@ethersproject/hash@^5.0.4", "@ethersproject/hash@^5.7.0": version "5.7.0" - resolved "https://registry.yarnpkg.com/@ethersproject/hash/-/hash-5.7.0.tgz#eb7aca84a588508369562e16e514b539ba5240a7" + resolved "https://registry.npmjs.org/@ethersproject/hash/-/hash-5.7.0.tgz" integrity sha512-qX5WrQfnah1EFnO5zJv1v46a8HW0+E5xuBBDTwMFZLuVTx0tbU2kkx15NqdjxecrLGatQN9FGQKpb1FKdHCt+g== dependencies: "@ethersproject/abstract-signer" "^5.7.0" @@ -1463,7 +1491,7 @@ "@ethersproject/hdnode@5.7.0", "@ethersproject/hdnode@^5.7.0": version "5.7.0" - resolved "https://registry.yarnpkg.com/@ethersproject/hdnode/-/hdnode-5.7.0.tgz#e627ddc6b466bc77aebf1a6b9e47405ca5aef9cf" + resolved "https://registry.npmjs.org/@ethersproject/hdnode/-/hdnode-5.7.0.tgz" integrity sha512-OmyYo9EENBPPf4ERhR7oj6uAtUAhYGqOnIS+jE5pTXvdKBS99ikzq1E7Iv0ZQZ5V36Lqx1qZLeak0Ra16qpeOg== dependencies: "@ethersproject/abstract-signer" "^5.7.0" @@ -1481,7 +1509,7 @@ "@ethersproject/json-wallets@5.7.0", "@ethersproject/json-wallets@^5.7.0": version "5.7.0" - resolved "https://registry.yarnpkg.com/@ethersproject/json-wallets/-/json-wallets-5.7.0.tgz#5e3355287b548c32b368d91014919ebebddd5360" + resolved "https://registry.npmjs.org/@ethersproject/json-wallets/-/json-wallets-5.7.0.tgz" integrity sha512-8oee5Xgu6+RKgJTkvEMl2wDgSPSAQ9MB/3JYjFV9jlKvcYHUXZC+cQp0njgmxdHkYWn8s6/IqIZYm0YWCjO/0g== dependencies: "@ethersproject/abstract-signer" "^5.7.0" @@ -1500,7 +1528,7 @@ "@ethersproject/keccak256@5.7.0", "@ethersproject/keccak256@^5.0.3", "@ethersproject/keccak256@^5.7.0": version "5.7.0" - resolved "https://registry.yarnpkg.com/@ethersproject/keccak256/-/keccak256-5.7.0.tgz#3186350c6e1cd6aba7940384ec7d6d9db01f335a" + resolved "https://registry.npmjs.org/@ethersproject/keccak256/-/keccak256-5.7.0.tgz" integrity sha512-2UcPboeL/iW+pSg6vZ6ydF8tCnv3Iu/8tUmLLzWWGzxWKFFqOBQFLo6uLUv6BDrLgCDfN28RJ/wtByx+jZ4KBg== dependencies: "@ethersproject/bytes" "^5.7.0" @@ -1508,19 +1536,19 @@ "@ethersproject/logger@5.7.0", "@ethersproject/logger@^5.0.5", "@ethersproject/logger@^5.7.0": version "5.7.0" - resolved "https://registry.yarnpkg.com/@ethersproject/logger/-/logger-5.7.0.tgz#6ce9ae168e74fecf287be17062b590852c311892" + resolved "https://registry.npmjs.org/@ethersproject/logger/-/logger-5.7.0.tgz" integrity sha512-0odtFdXu/XHtjQXJYA3u9G0G8btm0ND5Cu8M7i5vhEcE8/HmF4Lbdqanwyv4uQTr2tx6b7fQRmgLrsnpQlmnig== "@ethersproject/networks@5.7.1", "@ethersproject/networks@^5.7.0": version "5.7.1" - resolved "https://registry.yarnpkg.com/@ethersproject/networks/-/networks-5.7.1.tgz#118e1a981d757d45ccea6bb58d9fd3d9db14ead6" + resolved "https://registry.npmjs.org/@ethersproject/networks/-/networks-5.7.1.tgz" integrity sha512-n/MufjFYv3yFcUyfhnXotyDlNdFb7onmkSy8aQERi2PjNcnWQ66xXxa3XlS8nCcA8aJKJjIIMNJTC7tu80GwpQ== dependencies: "@ethersproject/logger" "^5.7.0" "@ethersproject/pbkdf2@5.7.0", "@ethersproject/pbkdf2@^5.7.0": version "5.7.0" - resolved "https://registry.yarnpkg.com/@ethersproject/pbkdf2/-/pbkdf2-5.7.0.tgz#d2267d0a1f6e123f3771007338c47cccd83d3102" + resolved "https://registry.npmjs.org/@ethersproject/pbkdf2/-/pbkdf2-5.7.0.tgz" integrity sha512-oR/dBRZR6GTyaofd86DehG72hY6NpAjhabkhxgr3X2FpJtJuodEl2auADWBZfhDHgVCbu3/H/Ocq2uC6dpNjjw== dependencies: "@ethersproject/bytes" "^5.7.0" @@ -1528,14 +1556,14 @@ "@ethersproject/properties@5.7.0", "@ethersproject/properties@^5.0.3", "@ethersproject/properties@^5.7.0": version "5.7.0" - resolved "https://registry.yarnpkg.com/@ethersproject/properties/-/properties-5.7.0.tgz#a6e12cb0439b878aaf470f1902a176033067ed30" + resolved "https://registry.npmjs.org/@ethersproject/properties/-/properties-5.7.0.tgz" integrity sha512-J87jy8suntrAkIZtecpxEPxY//szqr1mlBaYlQ0r4RCaiD2hjheqF9s1LVE8vVuJCXisjIP+JgtK/Do54ej4Sw== dependencies: "@ethersproject/logger" "^5.7.0" "@ethersproject/providers@5.7.2", "@ethersproject/providers@^5.7.1", "@ethersproject/providers@^5.7.2": version "5.7.2" - resolved "https://registry.yarnpkg.com/@ethersproject/providers/-/providers-5.7.2.tgz#f8b1a4f275d7ce58cf0a2eec222269a08beb18cb" + resolved "https://registry.npmjs.org/@ethersproject/providers/-/providers-5.7.2.tgz" integrity sha512-g34EWZ1WWAVgr4aptGlVBF8mhl3VWjv+8hoAnzStu8Ah22VHBsuGzP17eb6xDVRzw895G4W7vvx60lFFur/1Rg== dependencies: "@ethersproject/abstract-provider" "^5.7.0" @@ -1561,7 +1589,7 @@ "@ethersproject/random@5.7.0", "@ethersproject/random@^5.7.0": version "5.7.0" - resolved "https://registry.yarnpkg.com/@ethersproject/random/-/random-5.7.0.tgz#af19dcbc2484aae078bb03656ec05df66253280c" + resolved "https://registry.npmjs.org/@ethersproject/random/-/random-5.7.0.tgz" integrity sha512-19WjScqRA8IIeWclFme75VMXSBvi4e6InrUNuaR4s5pTF2qNhcGdCUwdxUVGtDDqC00sDLCO93jPQoDUH4HVmQ== dependencies: "@ethersproject/bytes" "^5.7.0" @@ -1569,7 +1597,7 @@ "@ethersproject/rlp@5.7.0", "@ethersproject/rlp@^5.7.0": version "5.7.0" - resolved "https://registry.yarnpkg.com/@ethersproject/rlp/-/rlp-5.7.0.tgz#de39e4d5918b9d74d46de93af80b7685a9c21304" + resolved "https://registry.npmjs.org/@ethersproject/rlp/-/rlp-5.7.0.tgz" integrity sha512-rBxzX2vK8mVF7b0Tol44t5Tb8gomOHkj5guL+HhzQ1yBh/ydjGnpw6at+X6Iw0Kp3OzzzkcKp8N9r0W4kYSs9w== dependencies: "@ethersproject/bytes" "^5.7.0" @@ -1577,7 +1605,7 @@ "@ethersproject/sha2@5.7.0", "@ethersproject/sha2@^5.7.0": version "5.7.0" - resolved "https://registry.yarnpkg.com/@ethersproject/sha2/-/sha2-5.7.0.tgz#9a5f7a7824ef784f7f7680984e593a800480c9fb" + resolved "https://registry.npmjs.org/@ethersproject/sha2/-/sha2-5.7.0.tgz" integrity sha512-gKlH42riwb3KYp0reLsFTokByAKoJdgFCwI+CCiX/k+Jm2mbNs6oOaCjYQSlI1+XBVejwH2KrmCbMAT/GnRDQw== dependencies: "@ethersproject/bytes" "^5.7.0" @@ -1586,7 +1614,7 @@ "@ethersproject/signing-key@5.7.0", "@ethersproject/signing-key@^5.7.0": version "5.7.0" - resolved "https://registry.yarnpkg.com/@ethersproject/signing-key/-/signing-key-5.7.0.tgz#06b2df39411b00bc57c7c09b01d1e41cf1b16ab3" + resolved "https://registry.npmjs.org/@ethersproject/signing-key/-/signing-key-5.7.0.tgz" integrity sha512-MZdy2nL3wO0u7gkB4nA/pEf8lu1TlFswPNmy8AiYkfKTdO6eXBJyUdmHO/ehm/htHw9K/qF8ujnTyUAD+Ry54Q== dependencies: "@ethersproject/bytes" "^5.7.0" @@ -1598,7 +1626,7 @@ "@ethersproject/solidity@5.7.0": version "5.7.0" - resolved "https://registry.yarnpkg.com/@ethersproject/solidity/-/solidity-5.7.0.tgz#5e9c911d8a2acce2a5ebb48a5e2e0af20b631cb8" + resolved "https://registry.npmjs.org/@ethersproject/solidity/-/solidity-5.7.0.tgz" integrity sha512-HmabMd2Dt/raavyaGukF4XxizWKhKQ24DoLtdNbBmNKUOPqwjsKQSdV9GQtj9CBEea9DlzETlVER1gYeXXBGaA== dependencies: "@ethersproject/bignumber" "^5.7.0" @@ -1610,7 +1638,7 @@ "@ethersproject/strings@5.7.0", "@ethersproject/strings@^5.0.4", "@ethersproject/strings@^5.7.0": version "5.7.0" - resolved "https://registry.yarnpkg.com/@ethersproject/strings/-/strings-5.7.0.tgz#54c9d2a7c57ae8f1205c88a9d3a56471e14d5ed2" + resolved "https://registry.npmjs.org/@ethersproject/strings/-/strings-5.7.0.tgz" integrity sha512-/9nu+lj0YswRNSH0NXYqrh8775XNyEdUQAuf3f+SmOrnVewcJ5SBNAjF7lpgehKi4abvNNXyf+HX86czCdJ8Mg== dependencies: "@ethersproject/bytes" "^5.7.0" @@ -1619,7 +1647,7 @@ "@ethersproject/transactions@5.7.0", "@ethersproject/transactions@^5.0.0-beta.135", "@ethersproject/transactions@^5.6.2", "@ethersproject/transactions@^5.7.0": version "5.7.0" - resolved "https://registry.yarnpkg.com/@ethersproject/transactions/-/transactions-5.7.0.tgz#91318fc24063e057885a6af13fdb703e1f993d3b" + resolved "https://registry.npmjs.org/@ethersproject/transactions/-/transactions-5.7.0.tgz" integrity sha512-kmcNicCp1lp8qanMTC3RIikGgoJ80ztTyvtsFvCYpSCfkjhD0jZ2LOrnbcuxuToLIUYYf+4XwD1rP+B/erDIhQ== dependencies: "@ethersproject/address" "^5.7.0" @@ -1634,7 +1662,7 @@ "@ethersproject/units@5.7.0": version "5.7.0" - resolved "https://registry.yarnpkg.com/@ethersproject/units/-/units-5.7.0.tgz#637b563d7e14f42deeee39245275d477aae1d8b1" + resolved "https://registry.npmjs.org/@ethersproject/units/-/units-5.7.0.tgz" integrity sha512-pD3xLMy3SJu9kG5xDGI7+xhTEmGXlEqXU4OfNapmfnxLVY4EMSSRp7j1k7eezutBPH7RBN/7QPnwR7hzNlEFeg== dependencies: "@ethersproject/bignumber" "^5.7.0" @@ -1643,7 +1671,7 @@ "@ethersproject/wallet@5.7.0": version "5.7.0" - resolved "https://registry.yarnpkg.com/@ethersproject/wallet/-/wallet-5.7.0.tgz#4e5d0790d96fe21d61d38fb40324e6c7ef350b2d" + resolved "https://registry.npmjs.org/@ethersproject/wallet/-/wallet-5.7.0.tgz" integrity sha512-MhmXlJXEJFBFVKrDLB4ZdDzxcBxQ3rLyCkhNqVu3CDYvR97E+8r01UgrI+TI99Le+aYm/in/0vp86guJuM7FCA== dependencies: "@ethersproject/abstract-provider" "^5.7.0" @@ -1664,7 +1692,7 @@ "@ethersproject/web@5.7.1", "@ethersproject/web@^5.7.0": version "5.7.1" - resolved "https://registry.yarnpkg.com/@ethersproject/web/-/web-5.7.1.tgz#de1f285b373149bee5928f4eb7bcb87ee5fbb4ae" + resolved "https://registry.npmjs.org/@ethersproject/web/-/web-5.7.1.tgz" integrity sha512-Gueu8lSvyjBWL4cYsWsjh6MtMwM0+H4HvqFPZfB6dV8ctbP9zFAO73VG1cMWae0FLPCtz0peKPpZY8/ugJJX2w== dependencies: "@ethersproject/base64" "^5.7.0" @@ -1675,7 +1703,7 @@ "@ethersproject/wordlists@5.7.0", "@ethersproject/wordlists@^5.7.0": version "5.7.0" - resolved "https://registry.yarnpkg.com/@ethersproject/wordlists/-/wordlists-5.7.0.tgz#8fb2c07185d68c3e09eb3bfd6e779ba2774627f5" + resolved "https://registry.npmjs.org/@ethersproject/wordlists/-/wordlists-5.7.0.tgz" integrity sha512-S2TFNJNfHWVHNE6cNDjbVlZ6MgE17MIxMbMg2zv3wn+3XSJGosL1m9ZVv3GXCf/2ymSsQ+hRI5IzoMJTG6aoVA== dependencies: "@ethersproject/bytes" "^5.7.0" @@ -1686,39 +1714,39 @@ "@fastify/busboy@^1.2.1": version "1.2.1" - resolved "https://registry.yarnpkg.com/@fastify/busboy/-/busboy-1.2.1.tgz#9c6db24a55f8b803b5222753b24fe3aea2ba9ca3" + resolved "https://registry.npmjs.org/@fastify/busboy/-/busboy-1.2.1.tgz" integrity sha512-7PQA7EH43S0CxcOa9OeAnaeA0oQ+e/DHNPZwSQM9CQHW76jle5+OvLdibRp/Aafs9KXbLhxyjOTkRjWUbQEd3Q== dependencies: text-decoding "^1.0.0" "@firebase/app-types@0.6.3": version "0.6.3" - resolved "https://registry.yarnpkg.com/@firebase/app-types/-/app-types-0.6.3.tgz#3f10514786aad846d74cd63cb693556309918f4b" + resolved "https://registry.npmjs.org/@firebase/app-types/-/app-types-0.6.3.tgz" integrity sha512-/M13DPPati7FQHEQ9Minjk1HGLm/4K4gs9bR4rzLCWJg64yGtVC0zNg9gDpkw9yc2cvol/mNFxqTtd4geGrwdw== "@firebase/app-types@0.7.0": version "0.7.0" - resolved "https://registry.yarnpkg.com/@firebase/app-types/-/app-types-0.7.0.tgz#c9e16d1b8bed1a991840b8d2a725fb58d0b5899f" + resolved "https://registry.npmjs.org/@firebase/app-types/-/app-types-0.7.0.tgz" integrity sha512-6fbHQwDv2jp/v6bXhBw2eSRbNBpxHcd1NBF864UksSMVIqIyri9qpJB1Mn6sGZE+bnDsSQBC5j2TbMxYsJQkQg== "@firebase/app-types@0.9.0": version "0.9.0" - resolved "https://registry.yarnpkg.com/@firebase/app-types/-/app-types-0.9.0.tgz#35b5c568341e9e263b29b3d2ba0e9cfc9ec7f01e" + resolved "https://registry.npmjs.org/@firebase/app-types/-/app-types-0.9.0.tgz" integrity sha512-AeweANOIo0Mb8GiYm3xhTEBVCmPwTYAu9Hcd2qSkLuga/6+j9b1Jskl5bpiSQWy9eJ/j5pavxj6eYogmnuzm+Q== "@firebase/auth-interop-types@0.1.6": version "0.1.6" - resolved "https://registry.yarnpkg.com/@firebase/auth-interop-types/-/auth-interop-types-0.1.6.tgz#5ce13fc1c527ad36f1bb1322c4492680a6cf4964" + resolved "https://registry.npmjs.org/@firebase/auth-interop-types/-/auth-interop-types-0.1.6.tgz" integrity sha512-etIi92fW3CctsmR9e3sYM3Uqnoq861M0Id9mdOPF6PWIg38BXL5k4upCNBggGUpLIS0H1grMOvy/wn1xymwe2g== "@firebase/auth-interop-types@0.2.1": version "0.2.1" - resolved "https://registry.yarnpkg.com/@firebase/auth-interop-types/-/auth-interop-types-0.2.1.tgz#78884f24fa539e34a06c03612c75f222fcc33742" + resolved "https://registry.npmjs.org/@firebase/auth-interop-types/-/auth-interop-types-0.2.1.tgz" integrity sha512-VOaGzKp65MY6P5FI84TfYKBXEPi6LmOCSMMzys6o2BN2LOsqy7pCuZCup7NYnfbk5OkkQKzvIfHOzTm0UDpkyg== "@firebase/component@0.5.13": version "0.5.13" - resolved "https://registry.yarnpkg.com/@firebase/component/-/component-0.5.13.tgz#65a382e83bddd109380c9aa1f280791b1b4567c4" + resolved "https://registry.npmjs.org/@firebase/component/-/component-0.5.13.tgz" integrity sha512-hxhJtpD8Ppf/VU2Rlos6KFCEV77TGIGD5bJlkPK1+B/WUe0mC6dTjW7KhZtXTc+qRBp9nFHWcsIORnT8liHP9w== dependencies: "@firebase/util" "1.5.2" @@ -1726,7 +1754,7 @@ "@firebase/component@0.6.4": version "0.6.4" - resolved "https://registry.yarnpkg.com/@firebase/component/-/component-0.6.4.tgz#8981a6818bd730a7554aa5e0516ffc9b1ae3f33d" + resolved "https://registry.npmjs.org/@firebase/component/-/component-0.6.4.tgz" integrity sha512-rLMyrXuO9jcAUCaQXCMjCMUsWrba5fzHlNK24xz5j2W6A/SRmK8mZJ/hn7V0fViLbxC0lPMtrK1eYzk6Fg03jA== dependencies: "@firebase/util" "1.9.3" @@ -1734,7 +1762,7 @@ "@firebase/database-compat@^0.1.1": version "0.1.8" - resolved "https://registry.yarnpkg.com/@firebase/database-compat/-/database-compat-0.1.8.tgz#ab627f2bdbe94367f515d5bded880c86886bbd28" + resolved "https://registry.npmjs.org/@firebase/database-compat/-/database-compat-0.1.8.tgz" integrity sha512-dhXr5CSieBuKNdU96HgeewMQCT9EgOIkfF1GNy+iRrdl7BWLxmlKuvLfK319rmIytSs/vnCzcD9uqyxTeU/A3A== dependencies: "@firebase/component" "0.5.13" @@ -1746,7 +1774,7 @@ "@firebase/database-compat@^0.3.4": version "0.3.4" - resolved "https://registry.yarnpkg.com/@firebase/database-compat/-/database-compat-0.3.4.tgz#4e57932f7a5ba761cd5ac946ab6b6ab3f660522c" + resolved "https://registry.npmjs.org/@firebase/database-compat/-/database-compat-0.3.4.tgz" integrity sha512-kuAW+l+sLMUKBThnvxvUZ+Q1ZrF/vFJ58iUY9kAcbX48U03nVzIF6Tmkf0p3WVQwMqiXguSgtOPIB6ZCeF+5Gg== dependencies: "@firebase/component" "0.6.4" @@ -1758,7 +1786,7 @@ "@firebase/database-types@0.10.4", "@firebase/database-types@^0.10.4": version "0.10.4" - resolved "https://registry.yarnpkg.com/@firebase/database-types/-/database-types-0.10.4.tgz#47ba81113512dab637abace61cfb65f63d645ca7" + resolved "https://registry.npmjs.org/@firebase/database-types/-/database-types-0.10.4.tgz" integrity sha512-dPySn0vJ/89ZeBac70T+2tWWPiJXWbmRygYv0smT5TfE3hDrQ09eKMF3Y+vMlTdrMWq7mUdYW5REWPSGH4kAZQ== dependencies: "@firebase/app-types" "0.9.0" @@ -1766,7 +1794,7 @@ "@firebase/database-types@0.9.7": version "0.9.7" - resolved "https://registry.yarnpkg.com/@firebase/database-types/-/database-types-0.9.7.tgz#c5ee0ea9bb2703a13c1c47fe880fc577d5ce7f33" + resolved "https://registry.npmjs.org/@firebase/database-types/-/database-types-0.9.7.tgz" integrity sha512-EFhgL89Fz6DY3kkB8TzdHvdu8XaqqvzcF2DLVOXEnQ3Ms7L755p5EO42LfxXoJqb9jKFvgLpFmKicyJG25WFWw== dependencies: "@firebase/app-types" "0.7.0" @@ -1774,14 +1802,14 @@ "@firebase/database-types@^0.7.2": version "0.7.3" - resolved "https://registry.yarnpkg.com/@firebase/database-types/-/database-types-0.7.3.tgz#819f16dd4c767c864b460004458620f265a3f735" + resolved "https://registry.npmjs.org/@firebase/database-types/-/database-types-0.7.3.tgz" integrity sha512-dSOJmhKQ0nL8O4EQMRNGpSExWCXeHtH57gGg0BfNAdWcKhC8/4Y+qfKLfWXzyHvrSecpLmO0SmAi/iK2D5fp5A== dependencies: "@firebase/app-types" "0.6.3" "@firebase/database@0.12.8": version "0.12.8" - resolved "https://registry.yarnpkg.com/@firebase/database/-/database-0.12.8.tgz#11a1b6752ba0614892af15c71958e00ce16f5824" + resolved "https://registry.npmjs.org/@firebase/database/-/database-0.12.8.tgz" integrity sha512-JBQVfFLzfhxlQbl4OU6ov9fdsddkytBQdtSSR49cz48homj38ccltAhK6seum+BI7f28cV2LFHF9672lcN+qxA== dependencies: "@firebase/auth-interop-types" "0.1.6" @@ -1793,7 +1821,7 @@ "@firebase/database@0.14.4": version "0.14.4" - resolved "https://registry.yarnpkg.com/@firebase/database/-/database-0.14.4.tgz#9e7435a16a540ddfdeb5d99d45618e6ede179aa6" + resolved "https://registry.npmjs.org/@firebase/database/-/database-0.14.4.tgz" integrity sha512-+Ea/IKGwh42jwdjCyzTmeZeLM3oy1h0mFPsTy6OqCWzcu/KFqRAr5Tt1HRCOBlNOdbh84JPZC47WLU18n2VbxQ== dependencies: "@firebase/auth-interop-types" "0.2.1" @@ -1805,35 +1833,35 @@ "@firebase/logger@0.3.2": version "0.3.2" - resolved "https://registry.yarnpkg.com/@firebase/logger/-/logger-0.3.2.tgz#5046ffa8295c577846d54b6ca95645a03809800e" + resolved "https://registry.npmjs.org/@firebase/logger/-/logger-0.3.2.tgz" integrity sha512-lzLrcJp9QBWpo40OcOM9B8QEtBw2Fk1zOZQdvv+rWS6gKmhQBCEMc4SMABQfWdjsylBcDfniD1Q+fUX1dcBTXA== dependencies: tslib "^2.1.0" "@firebase/logger@0.4.0": version "0.4.0" - resolved "https://registry.yarnpkg.com/@firebase/logger/-/logger-0.4.0.tgz#15ecc03c452525f9d47318ad9491b81d1810f113" + resolved "https://registry.npmjs.org/@firebase/logger/-/logger-0.4.0.tgz" integrity sha512-eRKSeykumZ5+cJPdxxJRgAC3G5NknY2GwEbKfymdnXtnT0Ucm4pspfR6GT4MUQEDuJwRVbVcSx85kgJulMoFFA== dependencies: tslib "^2.1.0" "@firebase/util@1.5.2": version "1.5.2" - resolved "https://registry.yarnpkg.com/@firebase/util/-/util-1.5.2.tgz#bdd2bc11c956a8a6a0fa25fbd752a13e033558bc" + resolved "https://registry.npmjs.org/@firebase/util/-/util-1.5.2.tgz" integrity sha512-YvBH2UxFcdWG2HdFnhxZptPl2eVFlpOyTH66iDo13JPEYraWzWToZ5AMTtkyRHVmu7sssUpQlU9igy1KET7TOw== dependencies: tslib "^2.1.0" "@firebase/util@1.9.3": version "1.9.3" - resolved "https://registry.yarnpkg.com/@firebase/util/-/util-1.9.3.tgz#45458dd5cd02d90e55c656e84adf6f3decf4b7ed" + resolved "https://registry.npmjs.org/@firebase/util/-/util-1.9.3.tgz" integrity sha512-DY02CRhOZwpzO36fHpuVysz6JZrscPiBXD0fXp6qSrL9oNOx5KWICKdR95C0lSITzxp0TZosVyHqzatE8JbcjA== dependencies: tslib "^2.1.0" "@ganache/console.log@0.2.0": version "0.2.0" - resolved "https://registry.yarnpkg.com/@ganache/console.log/-/console.log-0.2.0.tgz#32ea0df806ed735d61bd0537d7b7fc350e511479" + resolved "https://registry.npmjs.org/@ganache/console.log/-/console.log-0.2.0.tgz" integrity sha512-+SNBUZzrbe4DE4F0jdl9SU8w3ek5k4cUE73ttUFweo8FaKEDQsMbFjZ3ZU0LM6QM/zCMqE7euSq0s/IlsYxf7A== dependencies: "@ganache/utils" "0.3.0" @@ -1841,7 +1869,7 @@ "@ganache/console.log@0.3.0": version "0.3.0" - resolved "https://registry.yarnpkg.com/@ganache/console.log/-/console.log-0.3.0.tgz#be7bb0875e883d7c219c3543cc7e854203c5233d" + resolved "https://registry.npmjs.org/@ganache/console.log/-/console.log-0.3.0.tgz" integrity sha512-cRkjY3gn1zxPxy+PKK/xl12p3KbGwXeS7oGTkXFeey4bhQgd5QBa/+HNMVPflT2BcWLZ91Ir+CRRiRekeyHUWQ== dependencies: "@ethereumjs/util" "8.0.2" @@ -1849,7 +1877,7 @@ "@ganache/utils@0.3.0": version "0.3.0" - resolved "https://registry.yarnpkg.com/@ganache/utils/-/utils-0.3.0.tgz#f95d7a4746d4e062febf3ce59f65f6ca1336be8a" + resolved "https://registry.npmjs.org/@ganache/utils/-/utils-0.3.0.tgz" integrity sha512-cxoG8KQxkYPl71BPdKZihjVKqN2AE7WLXjU65BVOQ5jEYrUH3CWSxA9v7CCUJj4e0HoXFpVFIZ+1HRkiBKKiKg== dependencies: emittery "0.10.0" @@ -1860,12 +1888,12 @@ "@gar/promisify@^1.0.1", "@gar/promisify@^1.1.3": version "1.1.3" - resolved "https://registry.yarnpkg.com/@gar/promisify/-/promisify-1.1.3.tgz#555193ab2e3bb3b6adc3d551c9c030d9e860daf6" + resolved "https://registry.npmjs.org/@gar/promisify/-/promisify-1.1.3.tgz" integrity sha512-k2Ty1JcVojjJFwrg/ThKi2ujJ7XNLYaFGNB/bWT9wGR+oSMJHMa5w+CUq6p/pVrKeNNgA7pCqEcjSnHVoqJQFw== "@google-cloud/common@^0.32.0": version "0.32.1" - resolved "https://registry.yarnpkg.com/@google-cloud/common/-/common-0.32.1.tgz#6a32c340172cea3db6674d0e0e34e78740a0073f" + resolved "https://registry.npmjs.org/@google-cloud/common/-/common-0.32.1.tgz" integrity sha512-bLdPzFvvBMtVkwsoBtygE9oUm3yrNmPa71gvOgucYI/GqvNP2tb6RYsDHPq98kvignhcgHGDI5wyNgxaCo8bKQ== dependencies: "@google-cloud/projectify" "^0.3.3" @@ -1882,7 +1910,7 @@ "@google-cloud/firestore@^4.5.0": version "4.15.1" - resolved "https://registry.yarnpkg.com/@google-cloud/firestore/-/firestore-4.15.1.tgz#ed764fc76823ce120e68fe8c27ef1edd0650cd93" + resolved "https://registry.npmjs.org/@google-cloud/firestore/-/firestore-4.15.1.tgz" integrity sha512-2PWsCkEF1W02QbghSeRsNdYKN1qavrHBP3m72gPDMHQSYrGULOaTi7fSJquQmAtc4iPVB2/x6h80rdLHTATQtA== dependencies: fast-deep-equal "^3.1.1" @@ -1892,7 +1920,7 @@ "@google-cloud/firestore@^6.6.0": version "6.7.0" - resolved "https://registry.yarnpkg.com/@google-cloud/firestore/-/firestore-6.7.0.tgz#9b6105442f972307ffc252b372ba7e67e38243fd" + resolved "https://registry.npmjs.org/@google-cloud/firestore/-/firestore-6.7.0.tgz" integrity sha512-bkH2jb5KkQSUa+NAvpip9HQ+rpYhi77IaqHovWuN07adVmvNXX08gPpvPWEzoXYa/wDjEVI7LiAtCWkJJEYTNg== dependencies: fast-deep-equal "^3.1.1" @@ -1902,14 +1930,14 @@ "@google-cloud/kms@~2.9.0": version "2.9.0" - resolved "https://registry.yarnpkg.com/@google-cloud/kms/-/kms-2.9.0.tgz#3f7e51a3e30795a69ded4ea4f96609a59b503001" + resolved "https://registry.npmjs.org/@google-cloud/kms/-/kms-2.9.0.tgz" integrity sha512-AWzkMdpQewBMhsdu3Os5UNvYsgJU8y6uSDtXFK36llmk7DeZbqRFpDviGkSImOIOOJgz1Spu1WN61veKZW9yTQ== dependencies: google-gax "^2.24.1" "@google-cloud/monitoring@0.7.1": version "0.7.1" - resolved "https://registry.yarnpkg.com/@google-cloud/monitoring/-/monitoring-0.7.1.tgz#9afd2c8b237f01675dcaea8c5c7b3de9b58e24ad" + resolved "https://registry.npmjs.org/@google-cloud/monitoring/-/monitoring-0.7.1.tgz" integrity sha512-RsBM/3pvlKvJdSuiMKU0cJ7XKZiMsrXvdY2AexK75659cou4SxhbqM60iaU9lqAbIcMcuhH8rc1AG3cRsDhYhQ== dependencies: google-gax "^0.25.0" @@ -1917,7 +1945,7 @@ "@google-cloud/paginator@^0.2.0": version "0.2.0" - resolved "https://registry.yarnpkg.com/@google-cloud/paginator/-/paginator-0.2.0.tgz#eab2e6aa4b81df7418f6c51e2071f64dab2c2fa5" + resolved "https://registry.npmjs.org/@google-cloud/paginator/-/paginator-0.2.0.tgz" integrity sha512-2ZSARojHDhkLvQ+CS32K+iUhBsWg3AEw+uxtqblA7xoCABDyhpj99FPp35xy6A+XlzMhOSrHHaxFE+t6ZTQq0w== dependencies: arrify "^1.0.1" @@ -1927,7 +1955,7 @@ "@google-cloud/paginator@^3.0.6", "@google-cloud/paginator@^3.0.7": version "3.0.7" - resolved "https://registry.yarnpkg.com/@google-cloud/paginator/-/paginator-3.0.7.tgz#fb6f8e24ec841f99defaebf62c75c2e744dd419b" + resolved "https://registry.npmjs.org/@google-cloud/paginator/-/paginator-3.0.7.tgz" integrity sha512-jJNutk0arIQhmpUUQJPJErsojqo834KcyB6X7a1mxuic8i1tKXxde8E69IZxNZawRIlZdIK2QY4WALvlK5MzYQ== dependencies: arrify "^2.0.0" @@ -1935,7 +1963,7 @@ "@google-cloud/paginator@^4.0.0": version "4.0.1" - resolved "https://registry.yarnpkg.com/@google-cloud/paginator/-/paginator-4.0.1.tgz#5fb8793d4f84d18c50a6f2fad3dadab8d2c533ef" + resolved "https://registry.npmjs.org/@google-cloud/paginator/-/paginator-4.0.1.tgz" integrity sha512-6G1ui6bWhNyHjmbYwavdN7mpVPRBtyDg/bfqBTAlwr413On2TnFNfDxc9UhTJctkgoCDgQXEKiRPLPR9USlkbQ== dependencies: arrify "^2.0.0" @@ -1943,52 +1971,52 @@ "@google-cloud/precise-date@^0.1.0": version "0.1.0" - resolved "https://registry.yarnpkg.com/@google-cloud/precise-date/-/precise-date-0.1.0.tgz#02ccda04b4413fa64f098fc93db51e95af5c855a" + resolved "https://registry.npmjs.org/@google-cloud/precise-date/-/precise-date-0.1.0.tgz" integrity sha512-nXt4AskYjmDLRIO+nquVVppjiLE5ficFRP3WF1JYtPnSRFRpuMusa1kysPsD/yOxt5NMmvlkUCkaFI4rHYeckQ== "@google-cloud/precise-date@^2.0.0": version "2.0.4" - resolved "https://registry.yarnpkg.com/@google-cloud/precise-date/-/precise-date-2.0.4.tgz#930b0cbf557ef3a4bfeeb121cfc6da341212a2cb" + resolved "https://registry.npmjs.org/@google-cloud/precise-date/-/precise-date-2.0.4.tgz" integrity sha512-nOB+mZdevI/1Si0QAfxWfzzIqFdc7wrO+DYePFvgbOoMtvX+XfFTINNt7e9Zg66AbDbWCPRnikU+6f5LTm9Wyg== "@google-cloud/precise-date@^3.0.0": version "3.0.1" - resolved "https://registry.yarnpkg.com/@google-cloud/precise-date/-/precise-date-3.0.1.tgz#1e6659a14af662442037b8f4d20dbc82bf1a78bd" + resolved "https://registry.npmjs.org/@google-cloud/precise-date/-/precise-date-3.0.1.tgz" integrity sha512-crK2rgNFfvLoSgcKJY7ZBOLW91IimVNmPfi1CL+kMTf78pTJYd29XqEVedAeBu4DwCJc0EDIp1MpctLgoPq+Uw== "@google-cloud/projectify@^0.3.0", "@google-cloud/projectify@^0.3.3": version "0.3.3" - resolved "https://registry.yarnpkg.com/@google-cloud/projectify/-/projectify-0.3.3.tgz#bde9103d50b20a3ea3337df8c6783a766e70d41d" + resolved "https://registry.npmjs.org/@google-cloud/projectify/-/projectify-0.3.3.tgz" integrity sha512-7522YHQ4IhaafgSunsFF15nG0TGVmxgXidy9cITMe+256RgqfcrfWphiMufW+Ou4kqagW/u3yxwbzVEW3dk2Uw== "@google-cloud/projectify@^2.0.0": version "2.1.1" - resolved "https://registry.yarnpkg.com/@google-cloud/projectify/-/projectify-2.1.1.tgz#ae6af4fee02d78d044ae434699a630f8df0084ef" + resolved "https://registry.npmjs.org/@google-cloud/projectify/-/projectify-2.1.1.tgz" integrity sha512-+rssMZHnlh0twl122gXY4/aCrk0G1acBqkHFfYddtsqpYXGxA29nj9V5V9SfC+GyOG00l650f6lG9KL+EpFEWQ== "@google-cloud/projectify@^3.0.0": version "3.0.0" - resolved "https://registry.yarnpkg.com/@google-cloud/projectify/-/projectify-3.0.0.tgz#302b25f55f674854dce65c2532d98919b118a408" + resolved "https://registry.npmjs.org/@google-cloud/projectify/-/projectify-3.0.0.tgz" integrity sha512-HRkZsNmjScY6Li8/kb70wjGlDDyLkVk3KvoEo9uIoxSjYLJasGiCch9+PqRVDOCGUFvEIqyogl+BeqILL4OJHA== "@google-cloud/promisify@^0.4.0": version "0.4.0" - resolved "https://registry.yarnpkg.com/@google-cloud/promisify/-/promisify-0.4.0.tgz#4fbfcf4d85bb6a2e4ccf05aa63d2b10d6c9aad9b" + resolved "https://registry.npmjs.org/@google-cloud/promisify/-/promisify-0.4.0.tgz" integrity sha512-4yAHDC52TEMCNcMzVC8WlqnKKKq+Ssi2lXoUg9zWWkZ6U6tq9ZBRYLHHCRdfU+EU9YJsVmivwGcKYCjRGjnf4Q== "@google-cloud/promisify@^2.0.0": version "2.0.4" - resolved "https://registry.yarnpkg.com/@google-cloud/promisify/-/promisify-2.0.4.tgz#9d8705ecb2baa41b6b2673f3a8e9b7b7e1abc52a" + resolved "https://registry.npmjs.org/@google-cloud/promisify/-/promisify-2.0.4.tgz" integrity sha512-j8yRSSqswWi1QqUGKVEKOG03Q7qOoZP6/h2zN2YO+F5h2+DHU0bSrHCK9Y7lo2DI9fBd8qGAw795sf+3Jva4yA== "@google-cloud/promisify@^3.0.0": version "3.0.1" - resolved "https://registry.yarnpkg.com/@google-cloud/promisify/-/promisify-3.0.1.tgz#8d724fb280f47d1ff99953aee0c1669b25238c2e" + resolved "https://registry.npmjs.org/@google-cloud/promisify/-/promisify-3.0.1.tgz" integrity sha512-z1CjRjtQyBOYL+5Qr9DdYIfrdLBe746jRTYfaYU6MeXkqp7UfYs/jX16lFFVzZ7PGEJvqZNqYUEtb1mvDww4pA== "@google-cloud/pubsub@^0.28.1": version "0.28.1" - resolved "https://registry.yarnpkg.com/@google-cloud/pubsub/-/pubsub-0.28.1.tgz#8d0605e155f5a8c36f7b51363c1e139f534b5fd8" + resolved "https://registry.npmjs.org/@google-cloud/pubsub/-/pubsub-0.28.1.tgz" integrity sha512-ukvR2S6DgerEJ5T0e9G2XTyk83Ajjfhy2GdNHR3qOIkFZTn1VjqnMbGK8oWtnYm4+hZ9PHPiZY4LnxvapmwaRA== dependencies: "@google-cloud/paginator" "^0.2.0" @@ -2012,7 +2040,7 @@ "@google-cloud/pubsub@^2.7.0": version "2.19.4" - resolved "https://registry.yarnpkg.com/@google-cloud/pubsub/-/pubsub-2.19.4.tgz#6a52f2fe7458dc13064863024a4f9941567c0536" + resolved "https://registry.npmjs.org/@google-cloud/pubsub/-/pubsub-2.19.4.tgz" integrity sha512-+aZxq6N5XGarQS3xGXjKSRFy4TB+3PMpI0CBmSrcC59g3TB5nmwps3pv/KkdLa0Cd+CPHDdfrEW1uSrGBMLICw== dependencies: "@google-cloud/paginator" "^3.0.6" @@ -2033,7 +2061,7 @@ "@google-cloud/pubsub@^3.0.1": version "3.7.3" - resolved "https://registry.yarnpkg.com/@google-cloud/pubsub/-/pubsub-3.7.3.tgz#4ec354fab0e6492654b4365024e0b15def23a08b" + resolved "https://registry.npmjs.org/@google-cloud/pubsub/-/pubsub-3.7.3.tgz" integrity sha512-ZRDC4g7tpIJ8fkAp4MiU+tDfousM/q6pXK6ytFn0cbYEdNQuWOf4wqopNYMOUJ+AIjaTbgmNw77dStOKTc9Acg== dependencies: "@google-cloud/paginator" "^4.0.0" @@ -2055,14 +2083,14 @@ "@google-cloud/secret-manager@3.0.0": version "3.0.0" - resolved "https://registry.yarnpkg.com/@google-cloud/secret-manager/-/secret-manager-3.0.0.tgz#31842287bd0eee380210488ae40cae3732b2b32f" + resolved "https://registry.npmjs.org/@google-cloud/secret-manager/-/secret-manager-3.0.0.tgz" integrity sha512-ZAWoqiMbWv2Osx6Enq6TLPw/LR8kuSUWKhAsaJVy+q1GCR7clVNVuaPhizWIc4p88QYjW0h2j/wUBJ6OKFUmAw== dependencies: google-gax "^2.0.1" "@google-cloud/storage@^2.4.3": version "2.5.0" - resolved "https://registry.yarnpkg.com/@google-cloud/storage/-/storage-2.5.0.tgz#9dd3566d8155cf5ba0c212208f69f9ecd47fbd7e" + resolved "https://registry.npmjs.org/@google-cloud/storage/-/storage-2.5.0.tgz" integrity sha512-q1mwB6RUebIahbA3eriRs8DbG2Ij81Ynb9k8hMqTPkmbd8/S6Z0d6hVvfPmnyvX9Ej13IcmEYIbymuq/RBLghA== dependencies: "@google-cloud/common" "^0.32.0" @@ -2089,7 +2117,7 @@ "@google-cloud/storage@^5.3.0": version "5.20.5" - resolved "https://registry.yarnpkg.com/@google-cloud/storage/-/storage-5.20.5.tgz#1de71fc88d37934a886bc815722c134b162d335d" + resolved "https://registry.npmjs.org/@google-cloud/storage/-/storage-5.20.5.tgz" integrity sha512-lOs/dCyveVF8TkVFnFSF7IGd0CJrTm91qiK6JLu+Z8qiT+7Ag0RyVhxZIWkhiACqwABo7kSHDm8FdH8p2wxSSw== dependencies: "@google-cloud/paginator" "^3.0.7" @@ -2118,7 +2146,7 @@ "@google-cloud/storage@^6.9.5": version "6.12.0" - resolved "https://registry.yarnpkg.com/@google-cloud/storage/-/storage-6.12.0.tgz#a5d3093cc075252dca5bd19a3cfda406ad3a9de1" + resolved "https://registry.npmjs.org/@google-cloud/storage/-/storage-6.12.0.tgz" integrity sha512-78nNAY7iiZ4O/BouWMWTD/oSF2YtYgYB3GZirn0To6eBOugjXVoK+GXgUXOl+HlqbAOyHxAVXOlsj3snfbQ1dw== dependencies: "@google-cloud/paginator" "^3.0.7" @@ -2142,7 +2170,7 @@ "@graphql-tools/batch-execute@8.5.1": version "8.5.1" - resolved "https://registry.yarnpkg.com/@graphql-tools/batch-execute/-/batch-execute-8.5.1.tgz#fa3321d58c64041650be44250b1ebc3aab0ba7a9" + resolved "https://registry.npmjs.org/@graphql-tools/batch-execute/-/batch-execute-8.5.1.tgz" integrity sha512-hRVDduX0UDEneVyEWtc2nu5H2PxpfSfM/riUlgZvo/a/nG475uyehxR5cFGvTEPEQUKY3vGIlqvtRigzqTfCew== dependencies: "@graphql-tools/utils" "8.9.0" @@ -2152,7 +2180,7 @@ "@graphql-tools/delegate@^8.4.3": version "8.8.1" - resolved "https://registry.yarnpkg.com/@graphql-tools/delegate/-/delegate-8.8.1.tgz#0653a72f38947f38ab7917dfac50ebf6a6b883e9" + resolved "https://registry.npmjs.org/@graphql-tools/delegate/-/delegate-8.8.1.tgz" integrity sha512-NDcg3GEQmdEHlnF7QS8b4lM1PSF+DKeFcIlLEfZFBvVq84791UtJcDj8734sIHLukmyuAxXMfA1qLd2l4lZqzA== dependencies: "@graphql-tools/batch-execute" "8.5.1" @@ -2164,7 +2192,7 @@ "@graphql-tools/merge@8.3.1": version "8.3.1" - resolved "https://registry.yarnpkg.com/@graphql-tools/merge/-/merge-8.3.1.tgz#06121942ad28982a14635dbc87b5d488a041d722" + resolved "https://registry.npmjs.org/@graphql-tools/merge/-/merge-8.3.1.tgz" integrity sha512-BMm99mqdNZbEYeTPK3it9r9S6rsZsQKtlqJsSBknAclXq2pGEfOxjcIZi+kBSkHZKPKCRrYDd5vY0+rUmIHVLg== dependencies: "@graphql-tools/utils" "8.9.0" @@ -2172,7 +2200,7 @@ "@graphql-tools/merge@^8.4.1": version "8.4.2" - resolved "https://registry.yarnpkg.com/@graphql-tools/merge/-/merge-8.4.2.tgz#95778bbe26b635e8d2f60ce9856b388f11fe8288" + resolved "https://registry.npmjs.org/@graphql-tools/merge/-/merge-8.4.2.tgz" integrity sha512-XbrHAaj8yDuINph+sAfuq3QCZ/tKblrTLOpirK0+CAgNlZUCHs0Fa+xtMUURgwCVThLle1AF7svJCxFizygLsw== dependencies: "@graphql-tools/utils" "^9.2.1" @@ -2180,7 +2208,7 @@ "@graphql-tools/mock@^8.1.2": version "8.7.20" - resolved "https://registry.yarnpkg.com/@graphql-tools/mock/-/mock-8.7.20.tgz#c83ae0f1940d194a3982120c9c85f3ac6b4f7f20" + resolved "https://registry.npmjs.org/@graphql-tools/mock/-/mock-8.7.20.tgz" integrity sha512-ljcHSJWjC/ZyzpXd5cfNhPI7YljRVvabKHPzKjEs5ElxWu2cdlLGvyNYepApXDsM/OJG/2xuhGM+9GWu5gEAPQ== dependencies: "@graphql-tools/schema" "^9.0.18" @@ -2190,7 +2218,7 @@ "@graphql-tools/schema@8.5.1", "@graphql-tools/schema@^8.0.0", "@graphql-tools/schema@^8.3.1": version "8.5.1" - resolved "https://registry.yarnpkg.com/@graphql-tools/schema/-/schema-8.5.1.tgz#c2f2ff1448380919a330312399c9471db2580b58" + resolved "https://registry.npmjs.org/@graphql-tools/schema/-/schema-8.5.1.tgz" integrity sha512-0Esilsh0P/qYcB5DKQpiKeQs/jevzIadNTaT0jeWklPMwNbT7yMX4EqZany7mbeRRlSRwMzNzL5olyFdffHBZg== dependencies: "@graphql-tools/merge" "8.3.1" @@ -2200,7 +2228,7 @@ "@graphql-tools/schema@^9.0.18": version "9.0.19" - resolved "https://registry.yarnpkg.com/@graphql-tools/schema/-/schema-9.0.19.tgz#c4ad373b5e1b8a0cf365163435b7d236ebdd06e7" + resolved "https://registry.npmjs.org/@graphql-tools/schema/-/schema-9.0.19.tgz" integrity sha512-oBRPoNBtCkk0zbUsyP4GaIzCt8C0aCI4ycIRUL67KK5pOHljKLBBtGT+Jr6hkzA74C8Gco8bpZPe7aWFjiaK2w== dependencies: "@graphql-tools/merge" "^8.4.1" @@ -2210,14 +2238,14 @@ "@graphql-tools/utils@8.9.0": version "8.9.0" - resolved "https://registry.yarnpkg.com/@graphql-tools/utils/-/utils-8.9.0.tgz#c6aa5f651c9c99e1aca55510af21b56ec296cdb7" + resolved "https://registry.npmjs.org/@graphql-tools/utils/-/utils-8.9.0.tgz" integrity sha512-pjJIWH0XOVnYGXCqej8g/u/tsfV4LvLlj0eATKQu5zwnxd/TiTHq7Cg313qUPTFFHZ3PP5wJ15chYVtLDwaymg== dependencies: tslib "^2.4.0" "@graphql-tools/utils@^9.2.1": version "9.2.1" - resolved "https://registry.yarnpkg.com/@graphql-tools/utils/-/utils-9.2.1.tgz#1b3df0ef166cfa3eae706e3518b17d5922721c57" + resolved "https://registry.npmjs.org/@graphql-tools/utils/-/utils-9.2.1.tgz" integrity sha512-WUw506Ql6xzmOORlriNrD6Ugx+HjVgYxt9KCXD9mHAak+eaXSwuGGPyE60hy9xaDEoXKBsG7SkG69ybitaVl6A== dependencies: "@graphql-typed-document-node/core" "^3.1.1" @@ -2225,19 +2253,19 @@ "@graphql-typed-document-node/core@^3.1.1": version "3.2.0" - resolved "https://registry.yarnpkg.com/@graphql-typed-document-node/core/-/core-3.2.0.tgz#5f3d96ec6b2354ad6d8a28bf216a1d97b5426861" + resolved "https://registry.npmjs.org/@graphql-typed-document-node/core/-/core-3.2.0.tgz" integrity sha512-mB9oAsNCm9aM3/SOv4YtBMqZbYj10R7dkq8byBqxGY/ncFwhf2oQzMV+LCRlWoDSEBJ3COiR1yeDvMtsoOsuFQ== "@grpc/grpc-js@^0.3.0": version "0.3.6" - resolved "https://registry.yarnpkg.com/@grpc/grpc-js/-/grpc-js-0.3.6.tgz#d9b52043907170d38e06711d9477fde29ab46fa8" + resolved "https://registry.npmjs.org/@grpc/grpc-js/-/grpc-js-0.3.6.tgz" integrity sha512-SmLNuPGlUur64bNS9aHZguqWDVQ8+Df1CGn+xsh7l6T2wiP5ArOMlywZ3TZo6z/rwKtGQgUJY9ZrPYUmHEXd/Q== dependencies: semver "^5.5.0" "@grpc/grpc-js@^1.7.1": version "1.9.0" - resolved "https://registry.yarnpkg.com/@grpc/grpc-js/-/grpc-js-1.9.0.tgz#bdb599e339adabb16aa7243e70c311f75a572867" + resolved "https://registry.npmjs.org/@grpc/grpc-js/-/grpc-js-1.9.0.tgz" integrity sha512-H8+iZh+kCE6VR/Krj6W28Y/ZlxoZ1fOzsNt77nrdE3knkbSelW1Uus192xOFCxHyeszLj8i4APQkSIXjAoOxXg== dependencies: "@grpc/proto-loader" "^0.7.0" @@ -2245,7 +2273,7 @@ "@grpc/grpc-js@~1.6.0": version "1.6.12" - resolved "https://registry.yarnpkg.com/@grpc/grpc-js/-/grpc-js-1.6.12.tgz#20f710d8a8c5c396b2ae9530ba6c06b984614fdf" + resolved "https://registry.npmjs.org/@grpc/grpc-js/-/grpc-js-1.6.12.tgz" integrity sha512-JmvQ03OTSpVd9JTlj/K3IWHSz4Gk/JMLUTtW7Zb0KvO1LcOYGATh5cNuRYzCAeDR3O8wq+q8FZe97eO9MBrkUw== dependencies: "@grpc/proto-loader" "^0.7.0" @@ -2253,7 +2281,7 @@ "@grpc/grpc-js@~1.8.0": version "1.8.21" - resolved "https://registry.yarnpkg.com/@grpc/grpc-js/-/grpc-js-1.8.21.tgz#d282b122c71227859bf6c5866f4c40f4a2696513" + resolved "https://registry.npmjs.org/@grpc/grpc-js/-/grpc-js-1.8.21.tgz" integrity sha512-KeyQeZpxeEBSqFVTi3q2K7PiPXmgBfECc4updA1ejCLjYmoAlvvM3ZMp5ztTDUCUQmoY3CpDxvchjO1+rFkoHg== dependencies: "@grpc/proto-loader" "^0.7.0" @@ -2261,7 +2289,7 @@ "@grpc/proto-loader@0.6.9": version "0.6.9" - resolved "https://registry.yarnpkg.com/@grpc/proto-loader/-/proto-loader-0.6.9.tgz#4014eef366da733f8e04a9ddd7376fe8a58547b7" + resolved "https://registry.npmjs.org/@grpc/proto-loader/-/proto-loader-0.6.9.tgz" integrity sha512-UlcCS8VbsU9d3XTXGiEVFonN7hXk+oMXZtoHHG2oSA1/GcDP1q6OUgs20PzHDGizzyi8ufGSUDlk3O2NyY7leg== dependencies: "@types/long" "^4.0.1" @@ -2272,7 +2300,7 @@ "@grpc/proto-loader@^0.4.0": version "0.4.0" - resolved "https://registry.yarnpkg.com/@grpc/proto-loader/-/proto-loader-0.4.0.tgz#a823a51eb2fde58369bef1deb5445fd808d70901" + resolved "https://registry.npmjs.org/@grpc/proto-loader/-/proto-loader-0.4.0.tgz" integrity sha512-Jm6o+75uWT7E6+lt8edg4J1F/9+BedOjaMgwE14pxS/AO43/0ZqK+rCLVVrXLoExwSAZvgvOD2B0ivy3Spsspw== dependencies: lodash.camelcase "^4.3.0" @@ -2280,7 +2308,7 @@ "@grpc/proto-loader@^0.6.12": version "0.6.13" - resolved "https://registry.yarnpkg.com/@grpc/proto-loader/-/proto-loader-0.6.13.tgz#008f989b72a40c60c96cd4088522f09b05ac66bc" + resolved "https://registry.npmjs.org/@grpc/proto-loader/-/proto-loader-0.6.13.tgz" integrity sha512-FjxPYDRTn6Ec3V0arm1FtSpmP6V50wuph2yILpyvTKzjc76oDdoihXqM1DzOW5ubvCC8GivfCnNtfaRE8myJ7g== dependencies: "@types/long" "^4.0.1" @@ -2291,7 +2319,7 @@ "@grpc/proto-loader@^0.7.0": version "0.7.6" - resolved "https://registry.yarnpkg.com/@grpc/proto-loader/-/proto-loader-0.7.6.tgz#b71fdf92b184af184b668c4e9395a5ddc23d61de" + resolved "https://registry.npmjs.org/@grpc/proto-loader/-/proto-loader-0.7.6.tgz" integrity sha512-QyAXR8Hyh7uMDmveWxDSUcJr9NAWaZ2I6IXgAYvQmfflwouTM+rArE2eEaCtLlRqO81j7pRLCt81IefUei6Zbw== dependencies: "@types/long" "^4.0.1" @@ -2302,38 +2330,38 @@ "@hapi/b64@5.x.x": version "5.0.0" - resolved "https://registry.yarnpkg.com/@hapi/b64/-/b64-5.0.0.tgz#b8210cbd72f4774985e78569b77e97498d24277d" + resolved "https://registry.npmjs.org/@hapi/b64/-/b64-5.0.0.tgz" integrity sha512-ngu0tSEmrezoiIaNGG6rRvKOUkUuDdf4XTPnONHGYfSGRmDqPZX5oJL6HAdKTo1UQHECbdB4OzhWrfgVppjHUw== dependencies: "@hapi/hoek" "9.x.x" "@hapi/boom@9.x.x", "@hapi/boom@^9.0.0": version "9.1.4" - resolved "https://registry.yarnpkg.com/@hapi/boom/-/boom-9.1.4.tgz#1f9dad367c6a7da9f8def24b4a986fc5a7bd9db6" + resolved "https://registry.npmjs.org/@hapi/boom/-/boom-9.1.4.tgz" integrity sha512-Ls1oH8jaN1vNsqcaHVYJrKmgMcKsC1wcp8bujvXrHaAqD2iDYq3HoOwsxwo09Cuda5R5nC0o0IxlrlTuvPuzSw== dependencies: "@hapi/hoek" "9.x.x" "@hapi/bourne@2.x.x": version "2.1.0" - resolved "https://registry.yarnpkg.com/@hapi/bourne/-/bourne-2.1.0.tgz#66aff77094dc3080bd5df44ec63881f2676eb020" + resolved "https://registry.npmjs.org/@hapi/bourne/-/bourne-2.1.0.tgz" integrity sha512-i1BpaNDVLJdRBEKeJWkVO6tYX6DMFBuwMhSuWqLsY4ufeTKGVuV5rBsUhxPayXqnnWHgXUAmWK16H/ykO5Wj4Q== "@hapi/cryptiles@5.x.x": version "5.1.0" - resolved "https://registry.yarnpkg.com/@hapi/cryptiles/-/cryptiles-5.1.0.tgz#655de4cbbc052c947f696148c83b187fc2be8f43" + resolved "https://registry.npmjs.org/@hapi/cryptiles/-/cryptiles-5.1.0.tgz" integrity sha512-fo9+d1Ba5/FIoMySfMqPBR/7Pa29J2RsiPrl7bkwo5W5o+AN1dAYQRi4SPrPwwVxVGKjgLOEWrsvt1BonJSfLA== dependencies: "@hapi/boom" "9.x.x" "@hapi/hoek@9.x.x", "@hapi/hoek@^9.0.0": version "9.3.0" - resolved "https://registry.yarnpkg.com/@hapi/hoek/-/hoek-9.3.0.tgz#8368869dcb735be2e7f5cb7647de78e167a251fb" + resolved "https://registry.npmjs.org/@hapi/hoek/-/hoek-9.3.0.tgz" integrity sha512-/c6rf4UJlmHlC9b5BaNvzAcFv7HZ2QHaV0D4/HNlBdvFnvQq8RI4kYdhyPCl7Xj+oWvTWQ8ujhqS53LIgAe6KQ== "@hapi/iron@^6.0.0": version "6.0.0" - resolved "https://registry.yarnpkg.com/@hapi/iron/-/iron-6.0.0.tgz#ca3f9136cda655bdd6028de0045da0de3d14436f" + resolved "https://registry.npmjs.org/@hapi/iron/-/iron-6.0.0.tgz" integrity sha512-zvGvWDufiTGpTJPG1Y/McN8UqWBu0k/xs/7l++HVU535NLHXsHhy54cfEMdW7EjwKfbBfM9Xy25FmTiobb7Hvw== dependencies: "@hapi/b64" "5.x.x" @@ -2344,7 +2372,7 @@ "@hapi/podium@^4.1.3": version "4.1.3" - resolved "https://registry.yarnpkg.com/@hapi/podium/-/podium-4.1.3.tgz#91e20838fc2b5437f511d664aabebbb393578a26" + resolved "https://registry.npmjs.org/@hapi/podium/-/podium-4.1.3.tgz" integrity sha512-ljsKGQzLkFqnQxE7qeanvgGj4dejnciErYd30dbrYzUOF/FyS/DOF97qcrT3bhoVwCYmxa6PEMhxfCPlnUcD2g== dependencies: "@hapi/hoek" "9.x.x" @@ -2353,19 +2381,19 @@ "@hapi/teamwork@5.x.x": version "5.1.1" - resolved "https://registry.yarnpkg.com/@hapi/teamwork/-/teamwork-5.1.1.tgz#4d2ba3cac19118a36c44bf49a3a47674de52e4e4" + resolved "https://registry.npmjs.org/@hapi/teamwork/-/teamwork-5.1.1.tgz" integrity sha512-1oPx9AE5TIv+V6Ih54RP9lTZBso3rP8j4Xhb6iSVwPXtAM+sDopl5TFMv5Paw73UnpZJ9gjcrTE1BXrWt9eQrg== "@hapi/topo@^5.0.0": version "5.1.0" - resolved "https://registry.yarnpkg.com/@hapi/topo/-/topo-5.1.0.tgz#dc448e332c6c6e37a4dc02fd84ba8d44b9afb012" + resolved "https://registry.npmjs.org/@hapi/topo/-/topo-5.1.0.tgz" integrity sha512-foQZKJig7Ob0BMAYBfcJk8d77QtOe7Wo4ox7ff1lQYoNNAb6jwcY1ncdoy2e9wQZzvNy7ODZCYJkK8kzmcAnAg== dependencies: "@hapi/hoek" "^9.0.0" "@hapi/validate@1.x.x": version "1.1.3" - resolved "https://registry.yarnpkg.com/@hapi/validate/-/validate-1.1.3.tgz#f750a07283929e09b51aa16be34affb44e1931ad" + resolved "https://registry.npmjs.org/@hapi/validate/-/validate-1.1.3.tgz" integrity sha512-/XMR0N0wjw0Twzq2pQOzPBZlDzkekGcoCtzO314BpIEsbXdYGthQUbxgkGDf4nhk1+IPDAsXqWjMohRQYO06UA== dependencies: "@hapi/hoek" "^9.0.0" @@ -2373,12 +2401,12 @@ "@hutson/parse-repository-url@^3.0.0": version "3.0.2" - resolved "https://registry.yarnpkg.com/@hutson/parse-repository-url/-/parse-repository-url-3.0.2.tgz#98c23c950a3d9b6c8f0daed06da6c3af06981340" + resolved "https://registry.npmjs.org/@hutson/parse-repository-url/-/parse-repository-url-3.0.2.tgz" integrity sha512-H9XAx3hc0BQHY6l+IFSWHDySypcXsvsuLhgYLUGywmJ5pswRVQJUHpOsobnLYp2ZUaUlKiKDrgWWhosOwAEM8Q== "@isaacs/cliui@^8.0.2": version "8.0.2" - resolved "https://registry.yarnpkg.com/@isaacs/cliui/-/cliui-8.0.2.tgz#b37667b7bc181c168782259bab42474fbf52b550" + resolved "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz" integrity sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA== dependencies: string-width "^5.1.2" @@ -2390,12 +2418,12 @@ "@isaacs/string-locale-compare@^1.1.0": version "1.1.0" - resolved "https://registry.yarnpkg.com/@isaacs/string-locale-compare/-/string-locale-compare-1.1.0.tgz#291c227e93fd407a96ecd59879a35809120e432b" + resolved "https://registry.npmjs.org/@isaacs/string-locale-compare/-/string-locale-compare-1.1.0.tgz" integrity sha512-SQ7Kzhh9+D+ZW9MA0zkYv3VXhIDNx+LzM6EJ+/65I3QY+enU6Itte7E5XX7EWrqLW2FN4n06GWzBnPoC3th2aQ== "@istanbuljs/load-nyc-config@^1.0.0": version "1.1.0" - resolved "https://registry.yarnpkg.com/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz#fd3db1d59ecf7cf121e80650bb86712f9b55eced" + resolved "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz" integrity sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ== dependencies: camelcase "^5.3.1" @@ -2406,12 +2434,12 @@ "@istanbuljs/schema@^0.1.2": version "0.1.3" - resolved "https://registry.yarnpkg.com/@istanbuljs/schema/-/schema-0.1.3.tgz#e45e384e4b8ec16bce2fd903af78450f6bf7ec98" + resolved "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz" integrity sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA== "@jest/console@^29.5.0": version "29.5.0" - resolved "https://registry.yarnpkg.com/@jest/console/-/console-29.5.0.tgz#593a6c5c0d3f75689835f1b3b4688c4f8544cb57" + resolved "https://registry.npmjs.org/@jest/console/-/console-29.5.0.tgz" integrity sha512-NEpkObxPwyw/XxZVLPmAGKE89IQRp4puc6IQRPru6JKd1M3fW9v1xM1AnzIJE65hbCkzQAdnL8P47e9hzhiYLQ== dependencies: "@jest/types" "^29.5.0" @@ -2423,7 +2451,7 @@ "@jest/core@^29.5.0": version "29.5.0" - resolved "https://registry.yarnpkg.com/@jest/core/-/core-29.5.0.tgz#76674b96904484e8214614d17261cc491e5f1f03" + resolved "https://registry.npmjs.org/@jest/core/-/core-29.5.0.tgz" integrity sha512-28UzQc7ulUrOQw1IsN/kv1QES3q2kkbl/wGslyhAclqZ/8cMdB5M68BffkIdSJgKBUt50d3hbwJ92XESlE7LiQ== dependencies: "@jest/console" "^29.5.0" @@ -2457,7 +2485,7 @@ "@jest/environment@^29.5.0": version "29.5.0" - resolved "https://registry.yarnpkg.com/@jest/environment/-/environment-29.5.0.tgz#9152d56317c1fdb1af389c46640ba74ef0bb4c65" + resolved "https://registry.npmjs.org/@jest/environment/-/environment-29.5.0.tgz" integrity sha512-5FXw2+wD29YU1d4I2htpRX7jYnAyTRjP2CsXQdo9SAM8g3ifxWPSV0HnClSn71xwctr0U3oZIIH+dtbfmnbXVQ== dependencies: "@jest/fake-timers" "^29.5.0" @@ -2467,14 +2495,21 @@ "@jest/expect-utils@^29.5.0": version "29.5.0" - resolved "https://registry.yarnpkg.com/@jest/expect-utils/-/expect-utils-29.5.0.tgz#f74fad6b6e20f924582dc8ecbf2cb800fe43a036" + resolved "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-29.5.0.tgz" integrity sha512-fmKzsidoXQT2KwnrwE0SQq3uj8Z763vzR8LnLBwC2qYWEFpjX8daRsk6rHUM1QvNlEW/UJXNXm59ztmJJWs2Mg== dependencies: jest-get-type "^29.4.3" +"@jest/expect-utils@^29.7.0": + version "29.7.0" + resolved "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-29.7.0.tgz" + integrity sha512-GlsNBWiFQFCVi9QVSx7f5AgMeLxe9YCCs5PuP2O2LdjDAA8Jh9eX7lA1Jq/xdXw3Wb3hyvlFNfZIfcRetSzYcA== + dependencies: + jest-get-type "^29.6.3" + "@jest/expect@^29.5.0": version "29.5.0" - resolved "https://registry.yarnpkg.com/@jest/expect/-/expect-29.5.0.tgz#80952f5316b23c483fbca4363ce822af79c38fba" + resolved "https://registry.npmjs.org/@jest/expect/-/expect-29.5.0.tgz" integrity sha512-PueDR2HGihN3ciUNGr4uelropW7rqUfTiOn+8u0leg/42UhblPxHkfoh0Ruu3I9Y1962P3u2DY4+h7GVTSVU6g== dependencies: expect "^29.5.0" @@ -2482,7 +2517,7 @@ "@jest/fake-timers@^29.5.0": version "29.5.0" - resolved "https://registry.yarnpkg.com/@jest/fake-timers/-/fake-timers-29.5.0.tgz#d4d09ec3286b3d90c60bdcd66ed28d35f1b4dc2c" + resolved "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-29.5.0.tgz" integrity sha512-9ARvuAAQcBwDAqOnglWq2zwNIRUDtk/SCkp/ToGEhFv5r86K21l+VEs0qNTaXtyiY0lEePl3kylijSYJQqdbDg== dependencies: "@jest/types" "^29.5.0" @@ -2494,7 +2529,7 @@ "@jest/globals@^29.5.0": version "29.5.0" - resolved "https://registry.yarnpkg.com/@jest/globals/-/globals-29.5.0.tgz#6166c0bfc374c58268677539d0c181f9c1833298" + resolved "https://registry.npmjs.org/@jest/globals/-/globals-29.5.0.tgz" integrity sha512-S02y0qMWGihdzNbUiqSAiKSpSozSuHX5UYc7QbnHP+D9Lyw8DgGGCinrN9uSuHPeKgSSzvPom2q1nAtBvUsvPQ== dependencies: "@jest/environment" "^29.5.0" @@ -2504,7 +2539,7 @@ "@jest/reporters@^29.5.0": version "29.5.0" - resolved "https://registry.yarnpkg.com/@jest/reporters/-/reporters-29.5.0.tgz#985dfd91290cd78ddae4914ba7921bcbabe8ac9b" + resolved "https://registry.npmjs.org/@jest/reporters/-/reporters-29.5.0.tgz" integrity sha512-D05STXqj/M8bP9hQNSICtPqz97u7ffGzZu+9XLucXhkOFBqKcXe04JLZOgIekOxdb73MAoBUFnqvf7MCpKk5OA== dependencies: "@bcoe/v8-coverage" "^0.2.3" @@ -2532,16 +2567,16 @@ strip-ansi "^6.0.0" v8-to-istanbul "^9.0.1" -"@jest/schemas@^29.4.3": - version "29.4.3" - resolved "https://registry.yarnpkg.com/@jest/schemas/-/schemas-29.4.3.tgz#39cf1b8469afc40b6f5a2baaa146e332c4151788" - integrity sha512-VLYKXQmtmuEz6IxJsrZwzG9NvtkQsWNnWMsKxqWNu3+CnfzJQhp0WDDKWLVV9hLKr0l3SLLFRqcYHjhtyuDVxg== +"@jest/schemas@^29.4.3", "@jest/schemas@^29.6.3": + version "29.6.3" + resolved "https://registry.npmjs.org/@jest/schemas/-/schemas-29.6.3.tgz" + integrity sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA== dependencies: - "@sinclair/typebox" "^0.25.16" + "@sinclair/typebox" "^0.27.8" "@jest/source-map@^29.4.3": version "29.4.3" - resolved "https://registry.yarnpkg.com/@jest/source-map/-/source-map-29.4.3.tgz#ff8d05cbfff875d4a791ab679b4333df47951d20" + resolved "https://registry.npmjs.org/@jest/source-map/-/source-map-29.4.3.tgz" integrity sha512-qyt/mb6rLyd9j1jUts4EQncvS6Yy3PM9HghnNv86QBlV+zdL2inCdK1tuVlL+J+lpiw2BI67qXOrX3UurBqQ1w== dependencies: "@jridgewell/trace-mapping" "^0.3.15" @@ -2550,7 +2585,7 @@ "@jest/test-result@^29.5.0": version "29.5.0" - resolved "https://registry.yarnpkg.com/@jest/test-result/-/test-result-29.5.0.tgz#7c856a6ca84f45cc36926a4e9c6b57f1973f1408" + resolved "https://registry.npmjs.org/@jest/test-result/-/test-result-29.5.0.tgz" integrity sha512-fGl4rfitnbfLsrfx1uUpDEESS7zM8JdgZgOCQuxQvL1Sn/I6ijeAVQWGfXI9zb1i9Mzo495cIpVZhA0yr60PkQ== dependencies: "@jest/console" "^29.5.0" @@ -2560,7 +2595,7 @@ "@jest/test-sequencer@^29.5.0": version "29.5.0" - resolved "https://registry.yarnpkg.com/@jest/test-sequencer/-/test-sequencer-29.5.0.tgz#34d7d82d3081abd523dbddc038a3ddcb9f6d3cc4" + resolved "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-29.5.0.tgz" integrity sha512-yPafQEcKjkSfDXyvtgiV4pevSeyuA6MQr6ZIdVkWJly9vkqjnFfcfhRQqpD5whjoU8EORki752xQmjaqoFjzMQ== dependencies: "@jest/test-result" "^29.5.0" @@ -2570,7 +2605,7 @@ "@jest/transform@^29.5.0": version "29.5.0" - resolved "https://registry.yarnpkg.com/@jest/transform/-/transform-29.5.0.tgz#cf9c872d0965f0cbd32f1458aa44a2b1988b00f9" + resolved "https://registry.npmjs.org/@jest/transform/-/transform-29.5.0.tgz" integrity sha512-8vbeZWqLJOvHaDfeMuoHITGKSz5qWc9u04lnWrQE3VyuSw604PzQM824ZeX9XSjUCeDiE3GuxZe5UKa8J61NQw== dependencies: "@babel/core" "^7.11.6" @@ -2589,12 +2624,12 @@ slash "^3.0.0" write-file-atomic "^4.0.2" -"@jest/types@^29.5.0": - version "29.5.0" - resolved "https://registry.yarnpkg.com/@jest/types/-/types-29.5.0.tgz#f59ef9b031ced83047c67032700d8c807d6e1593" - integrity sha512-qbu7kN6czmVRc3xWFQcAN03RAUamgppVUdXrvl1Wr3jlNF93o9mJbGcDWrwGB6ht44u7efB1qCFgVQmca24Uog== +"@jest/types@^29.5.0", "@jest/types@^29.6.3": + version "29.6.3" + resolved "https://registry.npmjs.org/@jest/types/-/types-29.6.3.tgz" + integrity sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw== dependencies: - "@jest/schemas" "^29.4.3" + "@jest/schemas" "^29.6.3" "@types/istanbul-lib-coverage" "^2.0.0" "@types/istanbul-reports" "^3.0.0" "@types/node" "*" @@ -2603,12 +2638,12 @@ "@josephg/resolvable@^1.0.0": version "1.0.1" - resolved "https://registry.yarnpkg.com/@josephg/resolvable/-/resolvable-1.0.1.tgz#69bc4db754d79e1a2f17a650d3466e038d94a5eb" + resolved "https://registry.npmjs.org/@josephg/resolvable/-/resolvable-1.0.1.tgz" integrity sha512-CtzORUwWTTOTqfVtHaKRJ0I1kNQd1bpn3sUh8I3nJDVY+5/M/Oe1DnEWzPQvqq/xPIIkzzzIP7mfCoAjFRvDhg== "@jridgewell/gen-mapping@^0.3.0", "@jridgewell/gen-mapping@^0.3.2": version "0.3.3" - resolved "https://registry.yarnpkg.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz#7e02e6eb5df901aaedb08514203b096614024098" + resolved "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz" integrity sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ== dependencies: "@jridgewell/set-array" "^1.0.1" @@ -2617,32 +2652,32 @@ "@jridgewell/resolve-uri@3.1.0": version "3.1.0" - resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz#2203b118c157721addfe69d47b70465463066d78" + resolved "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz" integrity sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w== "@jridgewell/resolve-uri@^3.0.3": version "3.1.1" - resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.1.tgz#c08679063f279615a3326583ba3a90d1d82cc721" + resolved "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.1.tgz" integrity sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA== "@jridgewell/set-array@^1.0.1": version "1.1.2" - resolved "https://registry.yarnpkg.com/@jridgewell/set-array/-/set-array-1.1.2.tgz#7c6cf998d6d20b914c0a55a91ae928ff25965e72" + resolved "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz" integrity sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw== "@jridgewell/sourcemap-codec@1.4.14": version "1.4.14" - resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz#add4c98d341472a289190b424efbdb096991bb24" + resolved "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz" integrity sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw== "@jridgewell/sourcemap-codec@^1.4.10": version "1.4.15" - resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz#d7c6e6755c78567a951e04ab52ef0fd26de59f32" + resolved "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz" integrity sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg== "@jridgewell/trace-mapping@0.3.9": version "0.3.9" - resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz#6534fd5933a53ba7cbf3a17615e273a0d1273ff9" + resolved "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz" integrity sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ== dependencies: "@jridgewell/resolve-uri" "^3.0.3" @@ -2650,7 +2685,7 @@ "@jridgewell/trace-mapping@^0.3.12", "@jridgewell/trace-mapping@^0.3.15", "@jridgewell/trace-mapping@^0.3.17", "@jridgewell/trace-mapping@^0.3.9": version "0.3.18" - resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.18.tgz#25783b2086daf6ff1dcb53c9249ae480e4dd4cd6" + resolved "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.18.tgz" integrity sha512-w+niJYzMHdd7USdiH2U6869nqhD2nbfZXND5Yp93qIbEmnDNk7PD48o+YchRVpzMU7M6jVCbenTR7PA1FLQ9pA== dependencies: "@jridgewell/resolve-uri" "3.1.0" @@ -2658,26 +2693,26 @@ "@jsdevtools/ono@^7.1.3": version "7.1.3" - resolved "https://registry.yarnpkg.com/@jsdevtools/ono/-/ono-7.1.3.tgz#9df03bbd7c696a5c58885c34aa06da41c8543796" + resolved "https://registry.npmjs.org/@jsdevtools/ono/-/ono-7.1.3.tgz" integrity sha512-4JQNk+3mVzK3xh2rqd6RB4J46qUR19azEHBneZyTZM+c456qOrbbM/5xcR8huNCCcbVt7+UmizG6GuUvPvKUYg== "@jsdoc/salty@^0.2.1": version "0.2.5" - resolved "https://registry.yarnpkg.com/@jsdoc/salty/-/salty-0.2.5.tgz#1b2fa5bb8c66485b536d86eee877c263d322f692" + resolved "https://registry.npmjs.org/@jsdoc/salty/-/salty-0.2.5.tgz" integrity sha512-TfRP53RqunNe2HBobVBJ0VLhK1HbfvBYeTC1ahnN64PWvyYyGebmMiPkuwvD9fpw2ZbkoPb8Q7mwy0aR8Z9rvw== dependencies: lodash "^4.17.21" "@ledgerhq/cryptoassets@^5.53.0": version "5.53.0" - resolved "https://registry.yarnpkg.com/@ledgerhq/cryptoassets/-/cryptoassets-5.53.0.tgz#11dcc93211960c6fd6620392e4dd91896aaabe58" + resolved "https://registry.npmjs.org/@ledgerhq/cryptoassets/-/cryptoassets-5.53.0.tgz" integrity sha512-M3ibc3LRuHid5UtL7FI3IC6nMEppvly98QHFoSa7lJU0HDzQxY6zHec/SPM4uuJUC8sXoGVAiRJDkgny54damw== dependencies: invariant "2" "@ledgerhq/devices@^5.11.0", "@ledgerhq/devices@^5.51.1": version "5.51.1" - resolved "https://registry.yarnpkg.com/@ledgerhq/devices/-/devices-5.51.1.tgz#d741a4a5d8f17c2f9d282fd27147e6fe1999edb7" + resolved "https://registry.npmjs.org/@ledgerhq/devices/-/devices-5.51.1.tgz" integrity sha512-4w+P0VkbjzEXC7kv8T1GJ/9AVaP9I6uasMZ/JcdwZBS3qwvKo5A5z9uGhP5c7TvItzcmPb44b5Mw2kT+WjUuAA== dependencies: "@ledgerhq/errors" "^5.50.0" @@ -2687,7 +2722,7 @@ "@ledgerhq/devices@^8.0.1": version "8.0.1" - resolved "https://registry.yarnpkg.com/@ledgerhq/devices/-/devices-8.0.1.tgz#4c475f6ae249daf00ef08f5098924206233f3179" + resolved "https://registry.npmjs.org/@ledgerhq/devices/-/devices-8.0.1.tgz" integrity sha512-8uuyR8DGowYBLatur+MyJtRJ8RYDWSFFqGnNmgBBdlRG6VPf9vjhrFZlmYqukWesPwkZNZstP475W4TS+j6EFw== dependencies: "@ledgerhq/errors" "^6.12.4" @@ -2697,17 +2732,17 @@ "@ledgerhq/errors@^5.11.0", "@ledgerhq/errors@^5.50.0": version "5.50.0" - resolved "https://registry.yarnpkg.com/@ledgerhq/errors/-/errors-5.50.0.tgz#e3a6834cb8c19346efca214c1af84ed28e69dad9" + resolved "https://registry.npmjs.org/@ledgerhq/errors/-/errors-5.50.0.tgz" integrity sha512-gu6aJ/BHuRlpU7kgVpy2vcYk6atjB4iauP2ymF7Gk0ez0Y/6VSMVSJvubeEQN+IV60+OBK0JgeIZG7OiHaw8ow== "@ledgerhq/errors@^6.12.4": version "6.12.4" - resolved "https://registry.yarnpkg.com/@ledgerhq/errors/-/errors-6.12.4.tgz#1c2f75dc3dee91b069f3446be484fa28676d1b45" + resolved "https://registry.npmjs.org/@ledgerhq/errors/-/errors-6.12.4.tgz" integrity sha512-qi5poMrcIuFuivdzRjjQsNp7rRwUA5v3eo6D4yEy+l+w8wT4d4JtQ5u1TbrlGfFHfgLq7Lv6dsvh2ooLyWTyfg== "@ledgerhq/hw-app-eth@^5.53.0": version "5.53.0" - resolved "https://registry.yarnpkg.com/@ledgerhq/hw-app-eth/-/hw-app-eth-5.53.0.tgz#5df2d7427db9f387099d0cc437e9730101d7c404" + resolved "https://registry.npmjs.org/@ledgerhq/hw-app-eth/-/hw-app-eth-5.53.0.tgz" integrity sha512-LKi/lDA9tW0GdoYP1ng0VY/PXNYjSrwZ1cj0R0MQ9z+knmFlPcVkGK2MEqE8W8cXrC0tjsUXITMcngvpk5yfKA== dependencies: "@ledgerhq/cryptoassets" "^5.53.0" @@ -2719,7 +2754,7 @@ "@ledgerhq/hw-app-eth@~5.11.0": version "5.11.0" - resolved "https://registry.yarnpkg.com/@ledgerhq/hw-app-eth/-/hw-app-eth-5.11.0.tgz#5db6abe0ddf5b5266ed09868de12021f59c1a33e" + resolved "https://registry.npmjs.org/@ledgerhq/hw-app-eth/-/hw-app-eth-5.11.0.tgz" integrity sha512-qgpPwZzM8UMHYMC5+9xYV2O+8kgkDAl9+38w9JiBksaGmUFqcS4najsB1nj6AWf2rGEuXdKMb2WEYRskVypJrA== dependencies: "@ledgerhq/errors" "^5.11.0" @@ -2727,7 +2762,7 @@ "@ledgerhq/hw-transport-node-hid-noevents@^5.51.1": version "5.51.1" - resolved "https://registry.yarnpkg.com/@ledgerhq/hw-transport-node-hid-noevents/-/hw-transport-node-hid-noevents-5.51.1.tgz#71f37f812e448178ad0bcc2258982150d211c1ab" + resolved "https://registry.npmjs.org/@ledgerhq/hw-transport-node-hid-noevents/-/hw-transport-node-hid-noevents-5.51.1.tgz" integrity sha512-9wFf1L8ZQplF7XOY2sQGEeOhpmBRzrn+4X43kghZ7FBDoltrcK+s/D7S+7ffg3j2OySyP6vIIIgloXylao5Scg== dependencies: "@ledgerhq/devices" "^5.51.1" @@ -2738,7 +2773,7 @@ "@ledgerhq/hw-transport-node-hid-noevents@^6.27.13": version "6.27.13" - resolved "https://registry.yarnpkg.com/@ledgerhq/hw-transport-node-hid-noevents/-/hw-transport-node-hid-noevents-6.27.13.tgz#96f3667a18ea3602160af5d08db677ae0b8e3bb7" + resolved "https://registry.npmjs.org/@ledgerhq/hw-transport-node-hid-noevents/-/hw-transport-node-hid-noevents-6.27.13.tgz" integrity sha512-Lq85zoc95eb5npudlgTARVrB57jbk8oZ8KuyVOovNm1AjR0OrYfl0iCqw49h+SL/UFWWVyBisLg6IOYCpj1SNQ== dependencies: "@ledgerhq/devices" "^8.0.1" @@ -2749,7 +2784,7 @@ "@ledgerhq/hw-transport-node-hid@^5.51.1": version "5.51.1" - resolved "https://registry.yarnpkg.com/@ledgerhq/hw-transport-node-hid/-/hw-transport-node-hid-5.51.1.tgz#fe8eb81e18929663540698c80905952cdbe542d5" + resolved "https://registry.npmjs.org/@ledgerhq/hw-transport-node-hid/-/hw-transport-node-hid-5.51.1.tgz" integrity sha512-Y2eVCCdhVs2Lfr7N2x2cNb+ogcZ24ZATO4QxaQ7LogjiPwYmzmvuXFn8zFjMSrKUCn9CtbptXcuiu0NkGsjWlw== dependencies: "@ledgerhq/devices" "^5.51.1" @@ -2763,7 +2798,7 @@ "@ledgerhq/hw-transport-node-hid@^6.27.4": version "6.27.13" - resolved "https://registry.yarnpkg.com/@ledgerhq/hw-transport-node-hid/-/hw-transport-node-hid-6.27.13.tgz#741644d7b8761f682b36eda36e1bf7876357efda" + resolved "https://registry.npmjs.org/@ledgerhq/hw-transport-node-hid/-/hw-transport-node-hid-6.27.13.tgz" integrity sha512-j4c1UOMylX9cE9ebTh+qqMfzZDJpK8WZ7/kalxdY/MHWQcO+F2XAMvEqdZOaMjSIhI0vbgL/OoEvO2nxGFhObA== dependencies: "@ledgerhq/devices" "^8.0.1" @@ -2777,7 +2812,7 @@ "@ledgerhq/hw-transport-webusb@^5.53.1": version "5.53.1" - resolved "https://registry.yarnpkg.com/@ledgerhq/hw-transport-webusb/-/hw-transport-webusb-5.53.1.tgz#3df8c401417571e3bcacc378d8aca587214b05ae" + resolved "https://registry.npmjs.org/@ledgerhq/hw-transport-webusb/-/hw-transport-webusb-5.53.1.tgz" integrity sha512-A/f+xcrkIAZiJrvPpDvsrjxQX4cI2kbdiunQkwsYmOG3Bp4z89ZnsBiC7YBst4n2/g+QgTg0/KPVtODU5djooQ== dependencies: "@ledgerhq/devices" "^5.51.1" @@ -2787,7 +2822,7 @@ "@ledgerhq/hw-transport@^5.11.0", "@ledgerhq/hw-transport@^5.51.1": version "5.51.1" - resolved "https://registry.yarnpkg.com/@ledgerhq/hw-transport/-/hw-transport-5.51.1.tgz#8dd14a8e58cbee4df0c29eaeef983a79f5f22578" + resolved "https://registry.npmjs.org/@ledgerhq/hw-transport/-/hw-transport-5.51.1.tgz" integrity sha512-6wDYdbWrw9VwHIcoDnqWBaDFyviyjZWv6H9vz9Vyhe4Qd7TIFmbTl/eWs6hZvtZBza9K8y7zD8ChHwRI4s9tSw== dependencies: "@ledgerhq/devices" "^5.51.1" @@ -2796,7 +2831,7 @@ "@ledgerhq/hw-transport@^6.28.2": version "6.28.2" - resolved "https://registry.yarnpkg.com/@ledgerhq/hw-transport/-/hw-transport-6.28.2.tgz#483f9a39403ee63b03d452e30bfe8189dcca5785" + resolved "https://registry.npmjs.org/@ledgerhq/hw-transport/-/hw-transport-6.28.2.tgz" integrity sha512-2LxQdZnhSzu394brKuUZIWfuT2YAyNI3glRMf8+yHx3wUFqi10v8NzII99SHDyT8tN3Ovzmq+hbGHvrR2PqYRA== dependencies: "@ledgerhq/devices" "^8.0.1" @@ -2805,7 +2840,7 @@ "@ledgerhq/hw-transport@~5.11.0": version "5.11.0" - resolved "https://registry.yarnpkg.com/@ledgerhq/hw-transport/-/hw-transport-5.11.0.tgz#f5c45a34d9b68d81fd2f6641b49815527720364b" + resolved "https://registry.npmjs.org/@ledgerhq/hw-transport/-/hw-transport-5.11.0.tgz" integrity sha512-z56iwv0DZZu20T5q9sNMHFQNVuRKYqzCuNFhY9woWSpmOQkyVHCRiEgOQbN5h6kVri6fkfPkDzqqcsYjJlnT9g== dependencies: "@ledgerhq/devices" "^5.11.0" @@ -2814,17 +2849,17 @@ "@ledgerhq/logs@^5.50.0": version "5.50.0" - resolved "https://registry.yarnpkg.com/@ledgerhq/logs/-/logs-5.50.0.tgz#29c6419e8379d496ab6d0426eadf3c4d100cd186" + resolved "https://registry.npmjs.org/@ledgerhq/logs/-/logs-5.50.0.tgz" integrity sha512-swKHYCOZUGyVt4ge0u8a7AwNcA//h4nx5wIi0sruGye1IJ5Cva0GyK9L2/WdX+kWVTKp92ZiEo1df31lrWGPgA== "@ledgerhq/logs@^6.10.1": version "6.10.1" - resolved "https://registry.yarnpkg.com/@ledgerhq/logs/-/logs-6.10.1.tgz#5bd16082261d7364eabb511c788f00937dac588d" + resolved "https://registry.npmjs.org/@ledgerhq/logs/-/logs-6.10.1.tgz" integrity sha512-z+ILK8Q3y+nfUl43ctCPuR4Y2bIxk/ooCQFwZxhtci1EhAtMDzMAx2W25qx8G1PPL9UUOdnUax19+F0OjXoj4w== "@lerna/add@5.6.2": version "5.6.2" - resolved "https://registry.yarnpkg.com/@lerna/add/-/add-5.6.2.tgz#d0e25fd4900b6f8a9548f940cc016ce8a3e2d2ba" + resolved "https://registry.npmjs.org/@lerna/add/-/add-5.6.2.tgz" integrity sha512-NHrm7kYiqP+EviguY7/NltJ3G9vGmJW6v2BASUOhP9FZDhYbq3O+rCDlFdoVRNtcyrSg90rZFMOWHph4KOoCQQ== dependencies: "@lerna/bootstrap" "5.6.2" @@ -2840,7 +2875,7 @@ "@lerna/bootstrap@5.6.2": version "5.6.2" - resolved "https://registry.yarnpkg.com/@lerna/bootstrap/-/bootstrap-5.6.2.tgz#a0f015ae7c30189a3064c0d5940134010ece635e" + resolved "https://registry.npmjs.org/@lerna/bootstrap/-/bootstrap-5.6.2.tgz" integrity sha512-S2fMOEXbef7nrybQhzBywIGSLhuiQ5huPp1sU+v9Y6XEBsy/2IA+lb0gsZosvPqlRfMtiaFstL+QunaBhlWECA== dependencies: "@lerna/command" "5.6.2" @@ -2868,7 +2903,7 @@ "@lerna/changed@5.6.2": version "5.6.2" - resolved "https://registry.yarnpkg.com/@lerna/changed/-/changed-5.6.2.tgz#96a647ed202d8146b2077bf13a682466e8607f9a" + resolved "https://registry.npmjs.org/@lerna/changed/-/changed-5.6.2.tgz" integrity sha512-uUgrkdj1eYJHQGsXXlpH5oEAfu3x0qzeTjgvpdNrxHEdQWi7zWiW59hRadmiImc14uJJYIwVK5q/QLugrsdGFQ== dependencies: "@lerna/collect-updates" "5.6.2" @@ -2878,7 +2913,7 @@ "@lerna/check-working-tree@5.6.2": version "5.6.2" - resolved "https://registry.yarnpkg.com/@lerna/check-working-tree/-/check-working-tree-5.6.2.tgz#dd03b0c3fe9f141c31c0c47a9a0162ee9c0f6c28" + resolved "https://registry.npmjs.org/@lerna/check-working-tree/-/check-working-tree-5.6.2.tgz" integrity sha512-6Vf3IB6p+iNIubwVgr8A/KOmGh5xb4SyRmhFtAVqe33yWl2p3yc+mU5nGoz4ET3JLF1T9MhsePj0hNt6qyOTLQ== dependencies: "@lerna/collect-uncommitted" "5.6.2" @@ -2887,7 +2922,7 @@ "@lerna/child-process@5.6.2": version "5.6.2" - resolved "https://registry.yarnpkg.com/@lerna/child-process/-/child-process-5.6.2.tgz#4adbd09ff5a8e43b9471f1a987ae65a7d669421b" + resolved "https://registry.npmjs.org/@lerna/child-process/-/child-process-5.6.2.tgz" integrity sha512-QIOQ3jIbWdduHd5892fbo3u7/dQgbhzEBB7cvf+Ys/iCPP8UQrBECi1lfRgA4kcTKC2MyMz0SoyXZz/lFcXc3A== dependencies: chalk "^4.1.0" @@ -2896,7 +2931,7 @@ "@lerna/clean@5.6.2": version "5.6.2" - resolved "https://registry.yarnpkg.com/@lerna/clean/-/clean-5.6.2.tgz#9611adf3e3035731af2b71aabeb850f7d16fc27d" + resolved "https://registry.npmjs.org/@lerna/clean/-/clean-5.6.2.tgz" integrity sha512-A7j8r0Hk2pGyLUyaCmx4keNHen1L/KdcOjb4nR6X8GtTJR5AeA47a8rRKOCz9wwdyMPlo2Dau7d3RV9viv7a5g== dependencies: "@lerna/command" "5.6.2" @@ -2910,7 +2945,7 @@ "@lerna/cli@5.6.2": version "5.6.2" - resolved "https://registry.yarnpkg.com/@lerna/cli/-/cli-5.6.2.tgz#87a3dea0f066fa4b01c38ab191f316885dfe9fcd" + resolved "https://registry.npmjs.org/@lerna/cli/-/cli-5.6.2.tgz" integrity sha512-w0NRIEqDOmYKlA5t0iyqx0hbY7zcozvApmfvwF0lhkuhf3k6LRAFSamtimGQWicC779a7J2NXw4ASuBV47Fs1Q== dependencies: "@lerna/global-options" "5.6.2" @@ -2920,7 +2955,7 @@ "@lerna/collect-uncommitted@5.6.2": version "5.6.2" - resolved "https://registry.yarnpkg.com/@lerna/collect-uncommitted/-/collect-uncommitted-5.6.2.tgz#8f62d5a57c7800e9f5278897c7b254c1e3d425fe" + resolved "https://registry.npmjs.org/@lerna/collect-uncommitted/-/collect-uncommitted-5.6.2.tgz" integrity sha512-i0jhxpypyOsW2PpPwIw4xg6EPh7/N3YuiI6P2yL7PynZ8nOv8DkIdoyMkhUP4gALjBfckH8Bj94eIaKMviqW4w== dependencies: "@lerna/child-process" "5.6.2" @@ -2929,7 +2964,7 @@ "@lerna/collect-updates@5.6.2": version "5.6.2" - resolved "https://registry.yarnpkg.com/@lerna/collect-updates/-/collect-updates-5.6.2.tgz#7dc9df48183ef35a975154182d338c64de76104f" + resolved "https://registry.npmjs.org/@lerna/collect-updates/-/collect-updates-5.6.2.tgz" integrity sha512-DdTK13X6PIsh9HINiMniFeiivAizR/1FBB+hDVe6tOhsXFBfjHMw1xZhXlE+mYIoFmDm1UFK7zvQSexoaxRqFA== dependencies: "@lerna/child-process" "5.6.2" @@ -2940,7 +2975,7 @@ "@lerna/command@5.6.2": version "5.6.2" - resolved "https://registry.yarnpkg.com/@lerna/command/-/command-5.6.2.tgz#6cbb42b63c40a33565a7d39302d0e171e8e0f5b6" + resolved "https://registry.npmjs.org/@lerna/command/-/command-5.6.2.tgz" integrity sha512-eLVGI9TmxcaGt1M7TXGhhBZoeWOtOedMiH7NuCGHtL6TMJ9k+SCExyx+KpNmE6ImyNOzws6EvYLPLjftiqmoaA== dependencies: "@lerna/child-process" "5.6.2" @@ -2956,7 +2991,7 @@ "@lerna/conventional-commits@5.6.2": version "5.6.2" - resolved "https://registry.yarnpkg.com/@lerna/conventional-commits/-/conventional-commits-5.6.2.tgz#23f1a86ab79e48609c98a572eb59a705d7f0512f" + resolved "https://registry.npmjs.org/@lerna/conventional-commits/-/conventional-commits-5.6.2.tgz" integrity sha512-fPrJpYJhxCgY2uyOCTcAAC6+T6lUAtpEGxLbjWHWTb13oKKEygp9THoFpe6SbAD0fYMb3jeZCZCqNofM62rmuA== dependencies: "@lerna/validation-error" "5.6.2" @@ -2972,7 +3007,7 @@ "@lerna/create-symlink@5.6.2": version "5.6.2" - resolved "https://registry.yarnpkg.com/@lerna/create-symlink/-/create-symlink-5.6.2.tgz#9bd327128e30a144ef50a45242433a2325081391" + resolved "https://registry.npmjs.org/@lerna/create-symlink/-/create-symlink-5.6.2.tgz" integrity sha512-0WIs3P6ohPVh2+t5axrLZDE5Dt7fe3Kv0Auj0sBiBd6MmKZ2oS76apIl0Bspdbv8jX8+TRKGv6ib0280D0dtEw== dependencies: cmd-shim "^5.0.0" @@ -2981,7 +3016,7 @@ "@lerna/create@5.6.2": version "5.6.2" - resolved "https://registry.yarnpkg.com/@lerna/create/-/create-5.6.2.tgz#2c2e4b089cd8426cd256c6b0a0df5e676aa3503a" + resolved "https://registry.npmjs.org/@lerna/create/-/create-5.6.2.tgz" integrity sha512-+Y5cMUxMNXjTTU9IHpgRYIwKo39w+blui1P+s+qYlZUSCUAew0xNpOBG8iN0Nc5X9op4U094oIdHxv7Dyz6tWQ== dependencies: "@lerna/child-process" "5.6.2" @@ -3003,7 +3038,7 @@ "@lerna/describe-ref@5.6.2": version "5.6.2" - resolved "https://registry.yarnpkg.com/@lerna/describe-ref/-/describe-ref-5.6.2.tgz#8beb9884b59c419c67cec935cd90c08704e4c9b0" + resolved "https://registry.npmjs.org/@lerna/describe-ref/-/describe-ref-5.6.2.tgz" integrity sha512-UqU0N77aT1W8duYGir7R+Sk3jsY/c4lhcCEcnayMpFScMbAp0ETGsW04cYsHK29sgg+ZCc5zEwebBqabWhMhnA== dependencies: "@lerna/child-process" "5.6.2" @@ -3011,7 +3046,7 @@ "@lerna/diff@5.6.2": version "5.6.2" - resolved "https://registry.yarnpkg.com/@lerna/diff/-/diff-5.6.2.tgz#059f62c95e08a506574e0e66044934a395e15b11" + resolved "https://registry.npmjs.org/@lerna/diff/-/diff-5.6.2.tgz" integrity sha512-aHKzKvUvUI8vOcshC2Za/bdz+plM3r/ycqUrPqaERzp+kc1pYHyPeXezydVdEmgmmwmyKI5hx4+2QNnzOnun2A== dependencies: "@lerna/child-process" "5.6.2" @@ -3021,7 +3056,7 @@ "@lerna/exec@5.6.2": version "5.6.2" - resolved "https://registry.yarnpkg.com/@lerna/exec/-/exec-5.6.2.tgz#b4edee66e26760de28bbf8472993ae8ad7508073" + resolved "https://registry.npmjs.org/@lerna/exec/-/exec-5.6.2.tgz" integrity sha512-meZozok5stK7S0oAVn+kdbTmU+kHj9GTXjW7V8kgwG9ld+JJMTH3nKK1L3mEKyk9TFu9vFWyEOF7HNK6yEOoVg== dependencies: "@lerna/child-process" "5.6.2" @@ -3034,7 +3069,7 @@ "@lerna/filter-options@5.6.2": version "5.6.2" - resolved "https://registry.yarnpkg.com/@lerna/filter-options/-/filter-options-5.6.2.tgz#0201d3aaf71eb7d7f8b1d28193218710c3220aa0" + resolved "https://registry.npmjs.org/@lerna/filter-options/-/filter-options-5.6.2.tgz" integrity sha512-4Z0HIhPak2TabTsUqEBQaQeOqgqEt0qyskvsY0oviYvqP/nrJfJBZh4H93jIiNQF59LJCn5Ce3KJJrLExxjlzw== dependencies: "@lerna/collect-updates" "5.6.2" @@ -3044,7 +3079,7 @@ "@lerna/filter-packages@5.6.2": version "5.6.2" - resolved "https://registry.yarnpkg.com/@lerna/filter-packages/-/filter-packages-5.6.2.tgz#1118a9318f3e08f9e21fb03d23f91e1f77f4a72a" + resolved "https://registry.npmjs.org/@lerna/filter-packages/-/filter-packages-5.6.2.tgz" integrity sha512-el9V2lTEG0Bbz+Omo45hATkRVnChCTJhcTpth19cMJ6mQ4M5H4IgbWCJdFMBi/RpTnOhz9BhJxDbj95kuIvvzw== dependencies: "@lerna/validation-error" "5.6.2" @@ -3053,14 +3088,14 @@ "@lerna/get-npm-exec-opts@5.6.2": version "5.6.2" - resolved "https://registry.yarnpkg.com/@lerna/get-npm-exec-opts/-/get-npm-exec-opts-5.6.2.tgz#a5e1a93f62eba817961210b7be148c0768ee4eee" + resolved "https://registry.npmjs.org/@lerna/get-npm-exec-opts/-/get-npm-exec-opts-5.6.2.tgz" integrity sha512-0RbSDJ+QC9D5UWZJh3DN7mBIU1NhBmdHOE289oHSkjDY+uEjdzMPkEUy+wZ8fCzMLFnnNQkAEqNaOAzZ7dmFLA== dependencies: npmlog "^6.0.2" "@lerna/get-packed@5.6.2": version "5.6.2" - resolved "https://registry.yarnpkg.com/@lerna/get-packed/-/get-packed-5.6.2.tgz#cc5008008442ae00cfa5ed9484e76a44d48e37b6" + resolved "https://registry.npmjs.org/@lerna/get-packed/-/get-packed-5.6.2.tgz" integrity sha512-pp5nNDmtrtd21aKHjwwOY5CS7XNIHxINzGa+Jholn1jMDYUtdskpN++ZqYbATGpW831++NJuiuBVyqAWi9xbXg== dependencies: fs-extra "^9.1.0" @@ -3069,7 +3104,7 @@ "@lerna/github-client@5.6.2": version "5.6.2" - resolved "https://registry.yarnpkg.com/@lerna/github-client/-/github-client-5.6.2.tgz#b40a71ddf5d40aefe178a48713aa107ef735f056" + resolved "https://registry.npmjs.org/@lerna/github-client/-/github-client-5.6.2.tgz" integrity sha512-pjALazZoRZtKqfwLBwmW3HPptVhQm54PvA8s3qhCQ+3JkqrZiIFwkkxNZxs3jwzr+aaSOzfhSzCndg0urb0GXA== dependencies: "@lerna/child-process" "5.6.2" @@ -3080,7 +3115,7 @@ "@lerna/gitlab-client@5.6.2": version "5.6.2" - resolved "https://registry.yarnpkg.com/@lerna/gitlab-client/-/gitlab-client-5.6.2.tgz#3bb3c350d28f38f719ddbba083ca28dbd353494e" + resolved "https://registry.npmjs.org/@lerna/gitlab-client/-/gitlab-client-5.6.2.tgz" integrity sha512-TInJmbrsmYIwUyrRxytjO82KjJbRwm67F7LoZs1shAq6rMvNqi4NxSY9j+hT/939alFmEq1zssoy/caeLXHRfQ== dependencies: node-fetch "^2.6.1" @@ -3088,12 +3123,12 @@ "@lerna/global-options@5.6.2": version "5.6.2" - resolved "https://registry.yarnpkg.com/@lerna/global-options/-/global-options-5.6.2.tgz#30bec81cdb4ac0bb47588e4a502ce908a982ff7c" + resolved "https://registry.npmjs.org/@lerna/global-options/-/global-options-5.6.2.tgz" integrity sha512-kaKELURXTlczthNJskdOvh6GGMyt24qat0xMoJZ8plYMdofJfhz24h1OFcvB/EwCUwP/XV1+ohE5P+vdktbrEg== "@lerna/has-npm-version@5.6.2": version "5.6.2" - resolved "https://registry.yarnpkg.com/@lerna/has-npm-version/-/has-npm-version-5.6.2.tgz#5359e9870941f66fb3b859995120801800880944" + resolved "https://registry.npmjs.org/@lerna/has-npm-version/-/has-npm-version-5.6.2.tgz" integrity sha512-kXCnSzffmTWsaK0ol30coyCfO8WH26HFbmJjRBzKv7VGkuAIcB6gX2gqRRgNLLlvI+Yrp+JSlpVNVnu15SEH2g== dependencies: "@lerna/child-process" "5.6.2" @@ -3101,7 +3136,7 @@ "@lerna/import@5.6.2": version "5.6.2" - resolved "https://registry.yarnpkg.com/@lerna/import/-/import-5.6.2.tgz#7be2321fbc41fa0f7fdd233eb62571e8418fcb75" + resolved "https://registry.npmjs.org/@lerna/import/-/import-5.6.2.tgz" integrity sha512-xQUE49mtcP0z3KUdXBsyvp8rGDz6phuYUoQbhcFRJ7WPcQKzMvtm0XYrER6c2YWEX7QOuDac6tU82P8zTrTBaA== dependencies: "@lerna/child-process" "5.6.2" @@ -3115,7 +3150,7 @@ "@lerna/info@5.6.2": version "5.6.2" - resolved "https://registry.yarnpkg.com/@lerna/info/-/info-5.6.2.tgz#82280cdae6e08aab5b3017c359f6e496116a62ae" + resolved "https://registry.npmjs.org/@lerna/info/-/info-5.6.2.tgz" integrity sha512-MPjY5Olj+fiZHgfEdwXUFRKamdEuLr9Ob/qut8JsB/oQSQ4ALdQfnrOcMT8lJIcC2R67EA5yav2lHPBIkezm8A== dependencies: "@lerna/command" "5.6.2" @@ -3124,7 +3159,7 @@ "@lerna/init@5.6.2": version "5.6.2" - resolved "https://registry.yarnpkg.com/@lerna/init/-/init-5.6.2.tgz#8f92868c3f9081245f5a8e0b94ce6b5979b8541e" + resolved "https://registry.npmjs.org/@lerna/init/-/init-5.6.2.tgz" integrity sha512-ahU3/lgF+J8kdJAQysihFJROHthkIDXfHmvhw7AYnzf94HjxGNXj7nz6i3At1/dM/1nQhR+4/uNR1/OU4tTYYQ== dependencies: "@lerna/child-process" "5.6.2" @@ -3136,7 +3171,7 @@ "@lerna/link@5.6.2": version "5.6.2" - resolved "https://registry.yarnpkg.com/@lerna/link/-/link-5.6.2.tgz#6af5addff89cd455c1837a47a36f430a2c6ae6a5" + resolved "https://registry.npmjs.org/@lerna/link/-/link-5.6.2.tgz" integrity sha512-hXxQ4R3z6rUF1v2x62oIzLyeHL96u7ZBhxqYMJrm763D1VMSDcHKF9CjJfc6J9vH5Z2ZbL6CQg50Hw5mUpJbjg== dependencies: "@lerna/command" "5.6.2" @@ -3148,7 +3183,7 @@ "@lerna/list@5.6.2": version "5.6.2" - resolved "https://registry.yarnpkg.com/@lerna/list/-/list-5.6.2.tgz#5fdf8c678891eacef1d90afb84fb461deb6bb662" + resolved "https://registry.npmjs.org/@lerna/list/-/list-5.6.2.tgz" integrity sha512-WjE5O2tQ3TcS+8LqXUaxi0YdldhxUhNihT5+Gg4vzGdIlrPDioO50Zjo9d8jOU7i3LMIk6EzCma0sZr2CVfEGg== dependencies: "@lerna/command" "5.6.2" @@ -3158,7 +3193,7 @@ "@lerna/listable@5.6.2": version "5.6.2" - resolved "https://registry.yarnpkg.com/@lerna/listable/-/listable-5.6.2.tgz#1a35e8da081f2dc286647cbf4a4a7fb3c7fb1102" + resolved "https://registry.npmjs.org/@lerna/listable/-/listable-5.6.2.tgz" integrity sha512-8Yp49BwkY/5XqVru38Zko+6Wj/sgbwzJfIGEPy3Qu575r1NA/b9eI1gX22aMsEeXUeGOybR7nWT5ewnPQHjqvA== dependencies: "@lerna/query-graph" "5.6.2" @@ -3167,7 +3202,7 @@ "@lerna/log-packed@5.6.2": version "5.6.2" - resolved "https://registry.yarnpkg.com/@lerna/log-packed/-/log-packed-5.6.2.tgz#05d26f038ce64e8ce8395c1745dfeb7589f89790" + resolved "https://registry.npmjs.org/@lerna/log-packed/-/log-packed-5.6.2.tgz" integrity sha512-O9GODG7tMtWk+2fufn2MOkIDBYMRoKBhYMHshO5Aw/VIsH76DIxpX1koMzWfUngM/C70R4uNAKcVWineX4qzIw== dependencies: byte-size "^7.0.0" @@ -3177,7 +3212,7 @@ "@lerna/npm-conf@5.6.2": version "5.6.2" - resolved "https://registry.yarnpkg.com/@lerna/npm-conf/-/npm-conf-5.6.2.tgz#3b72fc528c8a1cd0acc9b277749a6153bd8de083" + resolved "https://registry.npmjs.org/@lerna/npm-conf/-/npm-conf-5.6.2.tgz" integrity sha512-gWDPhw1wjXYXphk/PAghTLexO5T6abVFhXb+KOMCeem366mY0F5bM88PiorL73aErTNUoR8n+V4X29NTZzDZpQ== dependencies: config-chain "^1.1.12" @@ -3185,7 +3220,7 @@ "@lerna/npm-dist-tag@5.6.2": version "5.6.2" - resolved "https://registry.yarnpkg.com/@lerna/npm-dist-tag/-/npm-dist-tag-5.6.2.tgz#6115aa4b005b57520d76428926ee7d12030f5e53" + resolved "https://registry.npmjs.org/@lerna/npm-dist-tag/-/npm-dist-tag-5.6.2.tgz" integrity sha512-t2RmxV6Eog4acXkUI+EzWuYVbeVVY139pANIWS9qtdajfgp4GVXZi1S8mAIb70yeHdNpCp1mhK0xpCrFH9LvGQ== dependencies: "@lerna/otplease" "5.6.2" @@ -3195,7 +3230,7 @@ "@lerna/npm-install@5.6.2": version "5.6.2" - resolved "https://registry.yarnpkg.com/@lerna/npm-install/-/npm-install-5.6.2.tgz#d5bd1e10c1c31f69a9ca5351b0cbe72dbc288dc2" + resolved "https://registry.npmjs.org/@lerna/npm-install/-/npm-install-5.6.2.tgz" integrity sha512-AT226zdEo+uGENd37jwYgdALKJAIJK4pNOfmXWZWzVb9oMOr8I2YSjPYvSYUNG7gOo2YJQU8x5Zd7OShv2924Q== dependencies: "@lerna/child-process" "5.6.2" @@ -3208,7 +3243,7 @@ "@lerna/npm-publish@5.6.2": version "5.6.2" - resolved "https://registry.yarnpkg.com/@lerna/npm-publish/-/npm-publish-5.6.2.tgz#4e5e225b47589a7f8f96b7eee68b547e8ce432a2" + resolved "https://registry.npmjs.org/@lerna/npm-publish/-/npm-publish-5.6.2.tgz" integrity sha512-ldSyewCfv9fAeC5xNjL0HKGSUxcC048EJoe/B+KRUmd+IPidvZxMEzRu08lSC/q3V9YeUv9ZvRnxATXOM8CffA== dependencies: "@lerna/otplease" "5.6.2" @@ -3222,7 +3257,7 @@ "@lerna/npm-run-script@5.6.2": version "5.6.2" - resolved "https://registry.yarnpkg.com/@lerna/npm-run-script/-/npm-run-script-5.6.2.tgz#66e3391ebdd6136312277be37a1b62ce48c12abf" + resolved "https://registry.npmjs.org/@lerna/npm-run-script/-/npm-run-script-5.6.2.tgz" integrity sha512-MOQoWNcAyJivM8SYp0zELM7vg/Dj07j4YMdxZkey+S1UO0T4/vKBxb575o16hH4WeNzC3Pd7WBlb7C8dLOfNwQ== dependencies: "@lerna/child-process" "5.6.2" @@ -3231,21 +3266,21 @@ "@lerna/otplease@5.6.2": version "5.6.2" - resolved "https://registry.yarnpkg.com/@lerna/otplease/-/otplease-5.6.2.tgz#a94e4daf9d3d42bfc0366a6889b8809ed32dbdd0" + resolved "https://registry.npmjs.org/@lerna/otplease/-/otplease-5.6.2.tgz" integrity sha512-dGS4lzkEQVTMAgji82jp8RK6UK32wlzrBAO4P4iiVHCUTuwNLsY9oeBXvVXSMrosJnl6Hbe0NOvi43mqSucGoA== dependencies: "@lerna/prompt" "5.6.2" "@lerna/output@5.6.2": version "5.6.2" - resolved "https://registry.yarnpkg.com/@lerna/output/-/output-5.6.2.tgz#fa97315d16cfe005a2891a3fc98f6f4fd3f518ed" + resolved "https://registry.npmjs.org/@lerna/output/-/output-5.6.2.tgz" integrity sha512-++d+bfOQwY66yo7q1XuAvRcqtRHCG45e/awP5xQomTZ6R1rhWiZ3whWdc9Z6lF7+UtBB9toSYYffKU/xc3L0yQ== dependencies: npmlog "^6.0.2" "@lerna/pack-directory@5.6.2": version "5.6.2" - resolved "https://registry.yarnpkg.com/@lerna/pack-directory/-/pack-directory-5.6.2.tgz#ced0287d13d8575fe928ad7d9ad92dc6554cc86d" + resolved "https://registry.npmjs.org/@lerna/pack-directory/-/pack-directory-5.6.2.tgz" integrity sha512-w5Jk5fo+HkN4Le7WMOudTcmAymcf0xPd302TqAQncjXpk0cb8tZbj+5bbNHsGb58GRjOIm5icQbHXooQUxbHhA== dependencies: "@lerna/get-packed" "5.6.2" @@ -3258,7 +3293,7 @@ "@lerna/package-graph@5.6.2": version "5.6.2" - resolved "https://registry.yarnpkg.com/@lerna/package-graph/-/package-graph-5.6.2.tgz#cb0a70b83afc418c5b5363bb96746d501decdbeb" + resolved "https://registry.npmjs.org/@lerna/package-graph/-/package-graph-5.6.2.tgz" integrity sha512-TmL61qBBvA3Tc4qICDirZzdFFwWOA6qicIXUruLiE2PblRowRmCO1bKrrP6XbDOspzwrkPef6N2F2/5gHQAnkQ== dependencies: "@lerna/prerelease-id-from-version" "5.6.2" @@ -3269,7 +3304,7 @@ "@lerna/package@5.6.2": version "5.6.2" - resolved "https://registry.yarnpkg.com/@lerna/package/-/package-5.6.2.tgz#da73b350693fdd4154cf5b19799bfaadff57442e" + resolved "https://registry.npmjs.org/@lerna/package/-/package-5.6.2.tgz" integrity sha512-LaOC8moyM5J9WnRiWZkedjOninSclBOJyPqhif6mHb2kCFX6jAroNYzE8KM4cphu8CunHuhI6Ixzswtv+Dultw== dependencies: load-json-file "^6.2.0" @@ -3278,14 +3313,14 @@ "@lerna/prerelease-id-from-version@5.6.2": version "5.6.2" - resolved "https://registry.yarnpkg.com/@lerna/prerelease-id-from-version/-/prerelease-id-from-version-5.6.2.tgz#63002662024a261310c6fbf01a50cb5f50569ca8" + resolved "https://registry.npmjs.org/@lerna/prerelease-id-from-version/-/prerelease-id-from-version-5.6.2.tgz" integrity sha512-7gIm9fecWFVNy2kpj/KbH11bRcpyANAwpsft3X5m6J7y7A6FTUscCbEvl3ZNdpQKHNuvnHgCtkm3A5PMSCEgkA== dependencies: semver "^7.3.4" "@lerna/profiler@5.6.2": version "5.6.2" - resolved "https://registry.yarnpkg.com/@lerna/profiler/-/profiler-5.6.2.tgz#5bfd52fb666ad0506cac3b8d2839e904d0acf90a" + resolved "https://registry.npmjs.org/@lerna/profiler/-/profiler-5.6.2.tgz" integrity sha512-okwkagP5zyRIOYTceu/9/esW7UZFt7lyL6q6ZgpSG3TYC5Ay+FXLtS6Xiha/FQdVdumFqKULDWTGovzUlxcwaw== dependencies: fs-extra "^9.1.0" @@ -3294,7 +3329,7 @@ "@lerna/project@5.6.2": version "5.6.2" - resolved "https://registry.yarnpkg.com/@lerna/project/-/project-5.6.2.tgz#a893851cdceeace36d30fdfdbc2da9159a9e2041" + resolved "https://registry.npmjs.org/@lerna/project/-/project-5.6.2.tgz" integrity sha512-kPIMcIy/0DVWM91FPMMFmXyAnCuuLm3NdhnA8NusE//VuY9wC6QC/3OwuCY39b2dbko/fPZheqKeAZkkMH6sGg== dependencies: "@lerna/package" "5.6.2" @@ -3313,7 +3348,7 @@ "@lerna/prompt@5.6.2": version "5.6.2" - resolved "https://registry.yarnpkg.com/@lerna/prompt/-/prompt-5.6.2.tgz#7ea10fd3543aced0bf5521741808d86ffcf4b320" + resolved "https://registry.npmjs.org/@lerna/prompt/-/prompt-5.6.2.tgz" integrity sha512-4hTNmVYADEr0GJTMegWV+GW6n+dzKx1vN9v2ISqyle283Myv930WxuyO0PeYGqTrkneJsyPreCMovuEGCvZ0iQ== dependencies: inquirer "^8.2.4" @@ -3321,7 +3356,7 @@ "@lerna/publish@5.6.2": version "5.6.2" - resolved "https://registry.yarnpkg.com/@lerna/publish/-/publish-5.6.2.tgz#c8a26610c4fb2c7c5a232e04852bf545b242ee65" + resolved "https://registry.npmjs.org/@lerna/publish/-/publish-5.6.2.tgz" integrity sha512-QaW0GjMJMuWlRNjeDCjmY/vjriGSWgkLS23yu8VKNtV5U3dt5yIKA3DNGV3HgZACuu45kQxzMDsfLzgzbGNtYA== dependencies: "@lerna/check-working-tree" "5.6.2" @@ -3355,21 +3390,21 @@ "@lerna/pulse-till-done@5.6.2": version "5.6.2" - resolved "https://registry.yarnpkg.com/@lerna/pulse-till-done/-/pulse-till-done-5.6.2.tgz#061c4ba2894fa08333fe4502299f9f9f24bdb91c" + resolved "https://registry.npmjs.org/@lerna/pulse-till-done/-/pulse-till-done-5.6.2.tgz" integrity sha512-eA/X1RCxU5YGMNZmbgPi+Kyfx1Q3bn4P9jo/LZy+/NRRr1po3ASXP2GJZ1auBh/9A2ELDvvKTOXCVHqczKC6rA== dependencies: npmlog "^6.0.2" "@lerna/query-graph@5.6.2": version "5.6.2" - resolved "https://registry.yarnpkg.com/@lerna/query-graph/-/query-graph-5.6.2.tgz#c507e9a9cb613c6d4d163d7d115a52ef8c1a9d3f" + resolved "https://registry.npmjs.org/@lerna/query-graph/-/query-graph-5.6.2.tgz" integrity sha512-KRngr96yBP8XYDi9/U62fnGO+ZXqm04Qk6a2HtoTr/ha8QvO1s7Tgm0xs/G7qWXDQHZgunWIbmK/LhxM7eFQrw== dependencies: "@lerna/package-graph" "5.6.2" "@lerna/resolve-symlink@5.6.2": version "5.6.2" - resolved "https://registry.yarnpkg.com/@lerna/resolve-symlink/-/resolve-symlink-5.6.2.tgz#51b6f4bbee36a1dcbf52634d05dcd08bb286f2cf" + resolved "https://registry.npmjs.org/@lerna/resolve-symlink/-/resolve-symlink-5.6.2.tgz" integrity sha512-PDQy+7M8JEFtwIVHJgWvSxHkxJf9zXCENkvIWDB+SsoDPhw9+caewt46bTeP5iGm9pOMu3oZukaWo/TvF7sNjg== dependencies: fs-extra "^9.1.0" @@ -3378,7 +3413,7 @@ "@lerna/rimraf-dir@5.6.2": version "5.6.2" - resolved "https://registry.yarnpkg.com/@lerna/rimraf-dir/-/rimraf-dir-5.6.2.tgz#219c51a46c27b94789d683fc0424539f14505fea" + resolved "https://registry.npmjs.org/@lerna/rimraf-dir/-/rimraf-dir-5.6.2.tgz" integrity sha512-jgEfzz7uBUiQKteq3G8MtJiA2D2VoKmZSSY3VSiW/tPOSXYxxSHxEsClQdCeNa6+sYrDNDT8fP6MJ3lPLjDeLA== dependencies: "@lerna/child-process" "5.6.2" @@ -3388,7 +3423,7 @@ "@lerna/run-lifecycle@5.6.2": version "5.6.2" - resolved "https://registry.yarnpkg.com/@lerna/run-lifecycle/-/run-lifecycle-5.6.2.tgz#b6954f334b40ca80caeb9e0cb7ca936222f39915" + resolved "https://registry.npmjs.org/@lerna/run-lifecycle/-/run-lifecycle-5.6.2.tgz" integrity sha512-u9gGgq/50Fm8dvfcc/TSHOCAQvzLD7poVanDMhHYWOAqRDnellJEEmA1K/Yka4vZmySrzluahkry9G6jcREt+g== dependencies: "@lerna/npm-conf" "5.6.2" @@ -3398,7 +3433,7 @@ "@lerna/run-topologically@5.6.2": version "5.6.2" - resolved "https://registry.yarnpkg.com/@lerna/run-topologically/-/run-topologically-5.6.2.tgz#ef00aa6751b4164ae4825244917cdd4bc2562501" + resolved "https://registry.npmjs.org/@lerna/run-topologically/-/run-topologically-5.6.2.tgz" integrity sha512-QQ/jGOIsVvUg3izShWsd67RlWYh9UOH2yw97Ol1zySX9+JspCMVQrn9eKq1Pk8twQOFhT87LpT/aaxbTBgREPw== dependencies: "@lerna/query-graph" "5.6.2" @@ -3406,7 +3441,7 @@ "@lerna/run@5.6.2": version "5.6.2" - resolved "https://registry.yarnpkg.com/@lerna/run/-/run-5.6.2.tgz#a964110d2fd13e4a3fe0fb4d752d0497651b26cb" + resolved "https://registry.npmjs.org/@lerna/run/-/run-5.6.2.tgz" integrity sha512-c2kJxdFrNg5KOkrhmgwKKUOsfSrGNlFCe26EttufOJ3xfY0VnXlEw9rHOkTgwtu7969rfCdyaVP1qckMrF1Dgw== dependencies: "@lerna/command" "5.6.2" @@ -3422,7 +3457,7 @@ "@lerna/symlink-binary@5.6.2": version "5.6.2" - resolved "https://registry.yarnpkg.com/@lerna/symlink-binary/-/symlink-binary-5.6.2.tgz#f8c68273f8a4f382bc0420593815dc13027f245a" + resolved "https://registry.npmjs.org/@lerna/symlink-binary/-/symlink-binary-5.6.2.tgz" integrity sha512-Cth+miwYyO81WAmrQbPBrLHuF+F0UUc0el5kRXLH6j5zzaRS3kMM68r40M7MmfH8m3GPi7691UARoWFEotW5jw== dependencies: "@lerna/create-symlink" "5.6.2" @@ -3432,7 +3467,7 @@ "@lerna/symlink-dependencies@5.6.2": version "5.6.2" - resolved "https://registry.yarnpkg.com/@lerna/symlink-dependencies/-/symlink-dependencies-5.6.2.tgz#263866a869c253db805a9a385741e8919b0aa341" + resolved "https://registry.npmjs.org/@lerna/symlink-dependencies/-/symlink-dependencies-5.6.2.tgz" integrity sha512-dUVNQLEcjVOIQiT9OlSAKt0ykjyJPy8l9i4NJDe2/0XYaUjo8PWsxJ0vrutz27jzi2aZUy07ASmowQZEmnLHAw== dependencies: "@lerna/create-symlink" "5.6.2" @@ -3444,7 +3479,7 @@ "@lerna/temp-write@5.6.2": version "5.6.2" - resolved "https://registry.yarnpkg.com/@lerna/temp-write/-/temp-write-5.6.2.tgz#724fcadfe12bfaa723c1ea0fbc14804653816db0" + resolved "https://registry.npmjs.org/@lerna/temp-write/-/temp-write-5.6.2.tgz" integrity sha512-S5ZNVTurSwWBmc9kh5alfSjmO3+BnRT6shYtOlmVIUYqWeYVYA5C1Htj322bbU4CSNCMFK6NQl4qGKL17HMuig== dependencies: graceful-fs "^4.1.15" @@ -3455,19 +3490,19 @@ "@lerna/timer@5.6.2": version "5.6.2" - resolved "https://registry.yarnpkg.com/@lerna/timer/-/timer-5.6.2.tgz#57de5dde716539c699f295b8a8c182dd41801b2e" + resolved "https://registry.npmjs.org/@lerna/timer/-/timer-5.6.2.tgz" integrity sha512-AjMOiLc2B+5Nzdd9hNORetAdZ/WK8YNGX/+2ypzM68TMAPfIT5C40hMlSva9Yg4RsBz22REopXgM5s2zQd5ZQA== "@lerna/validation-error@5.6.2": version "5.6.2" - resolved "https://registry.yarnpkg.com/@lerna/validation-error/-/validation-error-5.6.2.tgz#75310749d94395f009c67a8fd47e146a86ce2943" + resolved "https://registry.npmjs.org/@lerna/validation-error/-/validation-error-5.6.2.tgz" integrity sha512-4WlDUHaa+RSJNyJRtX3gVIAPVzjZD2tle8AJ0ZYBfdZnZmG0VlB2pD1FIbOQPK8sY2h5m0cHLRvfLoLncqHvdQ== dependencies: npmlog "^6.0.2" "@lerna/version@5.6.2": version "5.6.2" - resolved "https://registry.yarnpkg.com/@lerna/version/-/version-5.6.2.tgz#211ed1c0af3be0bb6bf6f79ef0d3e8daa1266ff0" + resolved "https://registry.npmjs.org/@lerna/version/-/version-5.6.2.tgz" integrity sha512-odNSR2rTbHW++xMZSQKu/F6Syrd/sUvwDLPaMKktoOSPKmycHt/eWcuQQyACdtc43Iqeu4uQd7PCLsniqOVFrw== dependencies: "@lerna/check-working-tree" "5.6.2" @@ -3500,16 +3535,16 @@ "@lerna/write-log-file@5.6.2": version "5.6.2" - resolved "https://registry.yarnpkg.com/@lerna/write-log-file/-/write-log-file-5.6.2.tgz#a297307c80356abe4c3cfc75664febfa4658ec31" + resolved "https://registry.npmjs.org/@lerna/write-log-file/-/write-log-file-5.6.2.tgz" integrity sha512-J09l18QnWQ3sXIRwuJkjXY3+KwPR2uO5NgbZGE3GXJK1V/LzOBRMvjGAIbuQHXw25uqe7vpLUpB8drtnFrubCQ== dependencies: npmlog "^6.0.2" write-file-atomic "^4.0.1" -"@mapbox/node-pre-gyp@^1.0.0": - version "1.0.10" - resolved "https://registry.yarnpkg.com/@mapbox/node-pre-gyp/-/node-pre-gyp-1.0.10.tgz#8e6735ccebbb1581e5a7e652244cadc8a844d03c" - integrity sha512-4ySo4CjzStuprMwk35H5pPbkymjv1SF3jGLj6rAHp/xT/RF7TL7bd9CTm1xDY49K2qF7jmR/g7k+SkLETP6opA== +"@mapbox/node-pre-gyp@^1.0.0", "@mapbox/node-pre-gyp@^1.0.4": + version "1.0.11" + resolved "https://registry.npmjs.org/@mapbox/node-pre-gyp/-/node-pre-gyp-1.0.11.tgz" + integrity sha512-Yhlar6v9WQgUp/He7BdgzOz8lqMQ8sU+jkCq7Wx8Myc5YFJLbEe7lgui/V7G1qB1DJykHSGwreceSaD60Y0PUQ== dependencies: detect-libc "^2.0.0" https-proxy-agent "^5.0.0" @@ -3523,7 +3558,7 @@ "@metamask/safe-event-emitter@^2.0.0": version "2.0.0" - resolved "https://registry.yarnpkg.com/@metamask/safe-event-emitter/-/safe-event-emitter-2.0.0.tgz#af577b477c683fad17c619a78208cede06f9605c" + resolved "https://registry.npmjs.org/@metamask/safe-event-emitter/-/safe-event-emitter-2.0.0.tgz" integrity sha512-/kSXhY692qiV1MXu6EeOZvg5nECLclxNXcKCxJ3cXQgYuRymRHpdx/t7JXfsK+JLjwA1e1c1/SBrlQYpusC29Q== "@mrmlnc/readdir-enhanced@^2.2.1": @@ -3543,14 +3578,14 @@ "@noble/curves@1.1.0", "@noble/curves@~1.1.0": version "1.1.0" - resolved "https://registry.yarnpkg.com/@noble/curves/-/curves-1.1.0.tgz#f13fc667c89184bc04cccb9b11e8e7bae27d8c3d" + resolved "https://registry.npmjs.org/@noble/curves/-/curves-1.1.0.tgz" integrity sha512-091oBExgENk/kGj3AZmtBDMpxQPDtxQABR2B9lb1JbVTs6ytdzZNwvhxQ4MWasRNEzlbEH8jCWFCwhF/Obj5AA== dependencies: "@noble/hashes" "1.3.1" "@noble/hashes@1.2.0", "@noble/hashes@~1.2.0": version "1.2.0" - resolved "https://registry.yarnpkg.com/@noble/hashes/-/hashes-1.2.0.tgz#a3150eeb09cc7ab207ebf6d7b9ad311a9bdbed12" + resolved "https://registry.npmjs.org/@noble/hashes/-/hashes-1.2.0.tgz" integrity sha512-FZfhjEDbT5GRswV3C6uvLPHMiVD6lQBmpoX5+eSiPaMTXte/IKqI5dykDxzZB/WBeK/CDuQRBWarPdi3FNY2zQ== "@noble/hashes@1.3.0": @@ -3560,17 +3595,17 @@ "@noble/hashes@1.3.1", "@noble/hashes@~1.3.0", "@noble/hashes@~1.3.1": version "1.3.1" - resolved "https://registry.yarnpkg.com/@noble/hashes/-/hashes-1.3.1.tgz#8831ef002114670c603c458ab8b11328406953a9" + resolved "https://registry.npmjs.org/@noble/hashes/-/hashes-1.3.1.tgz" integrity sha512-EbqwksQwz9xDRGfDST86whPBgM65E0OH/pCgqW0GBVzO22bNE+NuIbeTb714+IfSjU3aRk47EUvXIb5bTsenKA== "@noble/secp256k1@1.7.1", "@noble/secp256k1@~1.7.0": version "1.7.1" - resolved "https://registry.yarnpkg.com/@noble/secp256k1/-/secp256k1-1.7.1.tgz#b251c70f824ce3ca7f8dc3df08d58f005cc0507c" + resolved "https://registry.npmjs.org/@noble/secp256k1/-/secp256k1-1.7.1.tgz" integrity sha512-hOUk6AyBFmqVrv7k5WAw/LpszxVbj9gGN4JRkIX52fdFAj1UA61KXmZDvqVEm+pOyec3+fIeZB02LYa/pWOArw== "@nodelib/fs.scandir@2.1.5": version "2.1.5" - resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz#7619c2eb21b25483f6d167548b4cfd5a7488c3d5" + resolved "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz" integrity sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g== dependencies: "@nodelib/fs.stat" "2.0.5" @@ -3578,17 +3613,17 @@ "@nodelib/fs.stat@2.0.5", "@nodelib/fs.stat@^2.0.2": version "2.0.5" - resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz#5bd262af94e9d25bd1e71b05deed44876a222e8b" + resolved "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz" integrity sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A== "@nodelib/fs.stat@^1.1.2": version "1.1.3" - resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-1.1.3.tgz#2b5a3ab3f918cca48a8c754c08168e3f03eba61b" + resolved "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-1.1.3.tgz" integrity sha512-shAmDyaQC4H92APFoIaVDHCx5bStIocgvbwQyxPRrbUY20V1EYTbSDchWbuwlMG3V17cprZhA6+78JfB+3DTPw== "@nodelib/fs.walk@^1.2.3": version "1.2.8" - resolved "https://registry.yarnpkg.com/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz#e95737e8bb6746ddedf69c556953494f196fe69a" + resolved "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz" integrity sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg== dependencies: "@nodelib/fs.scandir" "2.1.5" @@ -3596,7 +3631,7 @@ "@npmcli/arborist@5.3.0": version "5.3.0" - resolved "https://registry.yarnpkg.com/@npmcli/arborist/-/arborist-5.3.0.tgz#321d9424677bfc08569e98a5ac445ee781f32053" + resolved "https://registry.npmjs.org/@npmcli/arborist/-/arborist-5.3.0.tgz" integrity sha512-+rZ9zgL1lnbl8Xbb1NQdMjveOMwj4lIYfcDtyJHHi5x4X8jtR6m8SXooJMZy5vmFVZ8w7A2Bnd/oX9eTuU8w5A== dependencies: "@isaacs/string-locale-compare" "^1.1.0" @@ -3636,7 +3671,7 @@ "@npmcli/fs@^1.0.0": version "1.1.1" - resolved "https://registry.yarnpkg.com/@npmcli/fs/-/fs-1.1.1.tgz#72f719fe935e687c56a4faecf3c03d06ba593257" + resolved "https://registry.npmjs.org/@npmcli/fs/-/fs-1.1.1.tgz" integrity sha512-8KG5RD0GVP4ydEzRn/I4BNDuxDtqVbOdm8675T49OIG/NGhaK0pjPX7ZcDlvKYbA+ulvVK3ztfcF4uBdOxuJbQ== dependencies: "@gar/promisify" "^1.0.1" @@ -3644,7 +3679,7 @@ "@npmcli/fs@^2.1.0": version "2.1.2" - resolved "https://registry.yarnpkg.com/@npmcli/fs/-/fs-2.1.2.tgz#a9e2541a4a2fec2e69c29b35e6060973da79b865" + resolved "https://registry.npmjs.org/@npmcli/fs/-/fs-2.1.2.tgz" integrity sha512-yOJKRvohFOaLqipNtwYB9WugyZKhC/DZC4VYPmpaCzDBrA8YpK3qHZ8/HGscMnE4GqbkLNuVcCnxkeQEdGt6LQ== dependencies: "@gar/promisify" "^1.1.3" @@ -3652,14 +3687,14 @@ "@npmcli/fs@^3.1.0": version "3.1.0" - resolved "https://registry.yarnpkg.com/@npmcli/fs/-/fs-3.1.0.tgz#233d43a25a91d68c3a863ba0da6a3f00924a173e" + resolved "https://registry.npmjs.org/@npmcli/fs/-/fs-3.1.0.tgz" integrity sha512-7kZUAaLscfgbwBQRbvdMYaZOWyMEcPTH/tJjnyAWJ/dvvs9Ef+CERx/qJb9GExJpl1qipaDGn7KqHnFGGixd0w== dependencies: semver "^7.3.5" "@npmcli/git@^3.0.0": version "3.0.2" - resolved "https://registry.yarnpkg.com/@npmcli/git/-/git-3.0.2.tgz#5c5de6b4d70474cf2d09af149ce42e4e1dacb931" + resolved "https://registry.npmjs.org/@npmcli/git/-/git-3.0.2.tgz" integrity sha512-CAcd08y3DWBJqJDpfuVL0uijlq5oaXaOJEKHKc4wqrjd00gkvTZB+nFuLn+doOOKddaQS9JfqtNoFCO2LCvA3w== dependencies: "@npmcli/promise-spawn" "^3.0.0" @@ -3674,7 +3709,7 @@ "@npmcli/installed-package-contents@^1.0.7": version "1.0.7" - resolved "https://registry.yarnpkg.com/@npmcli/installed-package-contents/-/installed-package-contents-1.0.7.tgz#ab7408c6147911b970a8abe261ce512232a3f4fa" + resolved "https://registry.npmjs.org/@npmcli/installed-package-contents/-/installed-package-contents-1.0.7.tgz" integrity sha512-9rufe0wnJusCQoLpV9ZPKIVP55itrM5BxOXs10DmdbRfgWtHy1LDyskbwRnBghuB0PrF7pNPOqREVtpz4HqzKw== dependencies: npm-bundled "^1.1.1" @@ -3682,7 +3717,7 @@ "@npmcli/map-workspaces@^2.0.3": version "2.0.4" - resolved "https://registry.yarnpkg.com/@npmcli/map-workspaces/-/map-workspaces-2.0.4.tgz#9e5e8ab655215a262aefabf139782b894e0504fc" + resolved "https://registry.npmjs.org/@npmcli/map-workspaces/-/map-workspaces-2.0.4.tgz" integrity sha512-bMo0aAfwhVwqoVM5UzX1DJnlvVvzDCHae821jv48L1EsrYwfOZChlqWYXEtto/+BkBXetPbEWgau++/brh4oVg== dependencies: "@npmcli/name-from-folder" "^1.0.1" @@ -3692,7 +3727,7 @@ "@npmcli/metavuln-calculator@^3.0.1": version "3.1.1" - resolved "https://registry.yarnpkg.com/@npmcli/metavuln-calculator/-/metavuln-calculator-3.1.1.tgz#9359bd72b400f8353f6a28a25c8457b562602622" + resolved "https://registry.npmjs.org/@npmcli/metavuln-calculator/-/metavuln-calculator-3.1.1.tgz" integrity sha512-n69ygIaqAedecLeVH3KnO39M6ZHiJ2dEv5A7DGvcqCB8q17BGUgW8QaanIkbWUo2aYGZqJaOORTLAlIvKjNDKA== dependencies: cacache "^16.0.0" @@ -3702,7 +3737,7 @@ "@npmcli/move-file@^1.0.1": version "1.1.2" - resolved "https://registry.yarnpkg.com/@npmcli/move-file/-/move-file-1.1.2.tgz#1a82c3e372f7cae9253eb66d72543d6b8685c674" + resolved "https://registry.npmjs.org/@npmcli/move-file/-/move-file-1.1.2.tgz" integrity sha512-1SUf/Cg2GzGDyaf15aR9St9TWlb+XvbZXWpDx8YKs7MLzMH/BCeopv+y9vzrzgkfykCGuWOlSu3mZhj2+FQcrg== dependencies: mkdirp "^1.0.4" @@ -3710,7 +3745,7 @@ "@npmcli/move-file@^2.0.0": version "2.0.1" - resolved "https://registry.yarnpkg.com/@npmcli/move-file/-/move-file-2.0.1.tgz#26f6bdc379d87f75e55739bab89db525b06100e4" + resolved "https://registry.npmjs.org/@npmcli/move-file/-/move-file-2.0.1.tgz" integrity sha512-mJd2Z5TjYWq/ttPLLGqArdtnC74J6bOzg4rMDnN+p1xTacZ2yPRCk2y0oSWQtygLR9YVQXgOcONrwtnk3JupxQ== dependencies: mkdirp "^1.0.4" @@ -3718,31 +3753,31 @@ "@npmcli/name-from-folder@^1.0.1": version "1.0.1" - resolved "https://registry.yarnpkg.com/@npmcli/name-from-folder/-/name-from-folder-1.0.1.tgz#77ecd0a4fcb772ba6fe927e2e2e155fbec2e6b1a" + resolved "https://registry.npmjs.org/@npmcli/name-from-folder/-/name-from-folder-1.0.1.tgz" integrity sha512-qq3oEfcLFwNfEYOQ8HLimRGKlD8WSeGEdtUa7hmzpR8Sa7haL1KVQrvgO6wqMjhWFFVjgtrh1gIxDz+P8sjUaA== "@npmcli/node-gyp@^2.0.0": version "2.0.0" - resolved "https://registry.yarnpkg.com/@npmcli/node-gyp/-/node-gyp-2.0.0.tgz#8c20e53e34e9078d18815c1d2dda6f2420d75e35" + resolved "https://registry.npmjs.org/@npmcli/node-gyp/-/node-gyp-2.0.0.tgz" integrity sha512-doNI35wIe3bBaEgrlPfdJPaCpUR89pJWep4Hq3aRdh6gKazIVWfs0jHttvSSoq47ZXgC7h73kDsUl8AoIQUB+A== "@npmcli/package-json@^2.0.0": version "2.0.0" - resolved "https://registry.yarnpkg.com/@npmcli/package-json/-/package-json-2.0.0.tgz#3bbcf4677e21055adbe673d9f08c9f9cde942e4a" + resolved "https://registry.npmjs.org/@npmcli/package-json/-/package-json-2.0.0.tgz" integrity sha512-42jnZ6yl16GzjWSH7vtrmWyJDGVa/LXPdpN2rcUWolFjc9ON2N3uz0qdBbQACfmhuJZ2lbKYtmK5qx68ZPLHMA== dependencies: json-parse-even-better-errors "^2.3.1" "@npmcli/promise-spawn@^3.0.0": version "3.0.0" - resolved "https://registry.yarnpkg.com/@npmcli/promise-spawn/-/promise-spawn-3.0.0.tgz#53283b5f18f855c6925f23c24e67c911501ef573" + resolved "https://registry.npmjs.org/@npmcli/promise-spawn/-/promise-spawn-3.0.0.tgz" integrity sha512-s9SgS+p3a9Eohe68cSI3fi+hpcZUmXq5P7w0kMlAsWVtR7XbK3ptkZqKT2cK1zLDObJ3sR+8P59sJE0w/KTL1g== dependencies: infer-owner "^1.0.4" "@npmcli/run-script@^4.1.0", "@npmcli/run-script@^4.1.3", "@npmcli/run-script@^4.1.7": version "4.2.1" - resolved "https://registry.yarnpkg.com/@npmcli/run-script/-/run-script-4.2.1.tgz#c07c5c71bc1c70a5f2a06b0d4da976641609b946" + resolved "https://registry.npmjs.org/@npmcli/run-script/-/run-script-4.2.1.tgz" integrity sha512-7dqywvVudPSrRCW5nTHpHgeWnbBtz8cFkOuKrecm6ih+oO9ciydhWt6OF7HlqupRRmB8Q/gECVdB9LMfToJbRg== dependencies: "@npmcli/node-gyp" "^2.0.0" @@ -3751,17 +3786,17 @@ read-package-json-fast "^2.0.3" which "^2.0.2" -"@nrwl/cli@15.9.2": - version "15.9.2" - resolved "https://registry.yarnpkg.com/@nrwl/cli/-/cli-15.9.2.tgz#82537d3d85410b0143d37a3b4fade09675356084" - integrity sha512-QoCmyrcGakHAYTJaNBbOerRQAmqJHMYGCdqtQidV+aP9p1Dy33XxDELfhd+IYmGqngutXuEWChNpWNhPloLnoA== +"@nrwl/cli@15.9.6": + version "15.9.6" + resolved "https://registry.npmjs.org/@nrwl/cli/-/cli-15.9.6.tgz" + integrity sha512-cwMEQLTL47Tj+AfY1PyqU4NcA1rF/WW2eoqA9YR+BFReIQlCkodJBmuQ8xjLXnyfQtG8uzZ6vt/SKWzcghsccw== dependencies: - nx "15.9.2" + nx "15.9.6" "@nrwl/devkit@>=14.8.1 < 16": - version "15.9.2" - resolved "https://registry.yarnpkg.com/@nrwl/devkit/-/devkit-15.9.2.tgz#482b89f1bf88d3600b11f8b7e3e4452c5766eca4" - integrity sha512-2DvTstVZb91m+d4wqUJMBHQ3elxyabdmFE6/3aXmtOGeDxTyXyDzf/1O6JvBBiL8K6XC3ZYchjtxUHgxl/NJ5A== + version "15.9.6" + resolved "https://registry.npmjs.org/@nrwl/devkit/-/devkit-15.9.6.tgz" + integrity sha512-+gPyrvcUmZMzyVadFSkgfQJItJV8xhydsPMNL1g+KBYu9EzsLG6bqlioJvsOFT8v3zcFrzvoF84imEDs/Cym9Q== dependencies: ejs "^3.1.7" ignore "^5.0.4" @@ -3769,61 +3804,61 @@ tmp "~0.2.1" tslib "^2.3.0" -"@nrwl/nx-darwin-arm64@15.9.2": - version "15.9.2" - resolved "https://registry.yarnpkg.com/@nrwl/nx-darwin-arm64/-/nx-darwin-arm64-15.9.2.tgz#612d8d714ec876cafd6f1483bf5565704d1b75be" - integrity sha512-Yv+OVsQt3C/hmWOC+YhJZQlsyph5w1BHfbp4jyCvV1ZXBbb8NdvwxgDHPWXxKPTc1EXuB7aEX3qzxM3/OWEUJg== - -"@nrwl/nx-darwin-x64@15.9.2": - version "15.9.2" - resolved "https://registry.yarnpkg.com/@nrwl/nx-darwin-x64/-/nx-darwin-x64-15.9.2.tgz#3f77bd90dbabf4782d81f773cfb2739a443e595f" - integrity sha512-qHfdluHlPzV0UHOwj1ZJ+qNEhzfLGiBuy1cOth4BSzDlvMnkuqBWoprfaXoztzYcus2NSILY1/7b3Jw4DAWmMw== - -"@nrwl/nx-linux-arm-gnueabihf@15.9.2": - version "15.9.2" - resolved "https://registry.yarnpkg.com/@nrwl/nx-linux-arm-gnueabihf/-/nx-linux-arm-gnueabihf-15.9.2.tgz#3374a5a1692b222ce18f2213a47b4d68fb509e70" - integrity sha512-0GzwbablosnYnnJDCJvAeZv8LlelSrNwUnGhe43saeoZdAew35Ay1E34zBrg/GCGTASuz+knEEYFM+gDD9Mc6A== - -"@nrwl/nx-linux-arm64-gnu@15.9.2": - version "15.9.2" - resolved "https://registry.yarnpkg.com/@nrwl/nx-linux-arm64-gnu/-/nx-linux-arm64-gnu-15.9.2.tgz#e3ec95c6ee3285c77422886cf4cbec1f04804460" - integrity sha512-3mFIY7iUTPG45hSIRaM2DmraCy8W6hNoArAGRrTgYw40BIJHtLrW+Rt7DLyvVXaYCvrKugWOKtxC+jG7kpIZVA== - -"@nrwl/nx-linux-arm64-musl@15.9.2": - version "15.9.2" - resolved "https://registry.yarnpkg.com/@nrwl/nx-linux-arm64-musl/-/nx-linux-arm64-musl-15.9.2.tgz#72ce601d256083ded7380c598f1b3eb4dc2a3472" - integrity sha512-FNBnXEtockwxZa4I3NqggrJp0YIbNokJvt/clrICP+ijOacdUDkv8mJedavobkFsRsNq9gzCbRbUScKymrOLrg== - -"@nrwl/nx-linux-x64-gnu@15.9.2": - version "15.9.2" - resolved "https://registry.yarnpkg.com/@nrwl/nx-linux-x64-gnu/-/nx-linux-x64-gnu-15.9.2.tgz#2da6bb50cd80d699310e91c7331baa6cfc8ce197" - integrity sha512-gHWsP5lbe4FNQCa1Q/VLxIuik+BqAOcSzyPjdUa4gCDcbxPa8xiE57PgXB5E1XUzOWNnDTlXa/Ll07/TIuKuog== - -"@nrwl/nx-linux-x64-musl@15.9.2": - version "15.9.2" - resolved "https://registry.yarnpkg.com/@nrwl/nx-linux-x64-musl/-/nx-linux-x64-musl-15.9.2.tgz#39b3bda5868a53b722f1d42700dce71c5ff3f6b9" - integrity sha512-EaFUukCbmoHsYECX2AS4pxXH933yesBFVvBgD38DkoFDxDoJMVt6JqYwm+d5R7S4R2P9U3l++aurljQTRq567Q== - -"@nrwl/nx-win32-arm64-msvc@15.9.2": - version "15.9.2" - resolved "https://registry.yarnpkg.com/@nrwl/nx-win32-arm64-msvc/-/nx-win32-arm64-msvc-15.9.2.tgz#bc350be5cb7d0bfa6c2c5ced40c5af163a457a2c" - integrity sha512-PGAe7QMr51ivx1X3avvs8daNlvv1wGo3OFrobjlu5rSyjC1Y3qHwT9+wdlwzNZ93FIqWOq09s+rE5gfZRfpdAg== - -"@nrwl/nx-win32-x64-msvc@15.9.2": - version "15.9.2" - resolved "https://registry.yarnpkg.com/@nrwl/nx-win32-x64-msvc/-/nx-win32-x64-msvc-15.9.2.tgz#3e46c3f7af196bdbf0deb336ec4f9448c54e4a9f" - integrity sha512-Q8onNzhuAZ0l9DNkm8D4Z1AEIzJr8JiT4L2fVBLYrV/R75C2HS3q7lzvfo6oqMY6mXge1cFPcrTtg3YXBQaSWA== - -"@nrwl/tao@15.9.2": - version "15.9.2" - resolved "https://registry.yarnpkg.com/@nrwl/tao/-/tao-15.9.2.tgz#e970efa8b3fb828007b02286e9e505247032b5b3" - integrity sha512-+LqNC37w9c6q6Ukdpf0z0tt1PQFNi4gwhHpJvkYQiKRETHjyrrlyqTNEPEyA7PI62RuYC6VrpVw2gzI7ufqZEA== - dependencies: - nx "15.9.2" +"@nrwl/nx-darwin-arm64@15.9.6": + version "15.9.6" + resolved "https://registry.yarnpkg.com/@nrwl/nx-darwin-arm64/-/nx-darwin-arm64-15.9.6.tgz#e4a0f2989deb3b98018647b4f4977d499a2d4fba" + integrity sha512-9J2HLA6ePfVIoyymIQmwBm2cHvh0hdWuSVldHq3GSpL1tbWEUVwrLxRwcG1ryO2HCNPPb2Z9h8jrSd6BVgEMsA== + +"@nrwl/nx-darwin-x64@15.9.6": + version "15.9.6" + resolved "https://registry.npmjs.org/@nrwl/nx-darwin-x64/-/nx-darwin-x64-15.9.6.tgz" + integrity sha512-QUbQYUxStLEDHndYFRxSH+Ir1ciezViy+kS9vfwsNLpBAfEE5kkoKk6Owv74gLQncTFB5/4vwkb7VT+LtVP/2w== + +"@nrwl/nx-linux-arm-gnueabihf@15.9.6": + version "15.9.6" + resolved "https://registry.yarnpkg.com/@nrwl/nx-linux-arm-gnueabihf/-/nx-linux-arm-gnueabihf-15.9.6.tgz#8358820446b16bfd782dc6fa75c760887ff14dda" + integrity sha512-IjwE1Q6wi4iww67uU5i8XIg9LXhwhOIVuDMQ28pB03kahwL87s0z/MvQ7yXISgskamkFEUzffI/Zei+OHYST3g== + +"@nrwl/nx-linux-arm64-gnu@15.9.6": + version "15.9.6" + resolved "https://registry.yarnpkg.com/@nrwl/nx-linux-arm64-gnu/-/nx-linux-arm64-gnu-15.9.6.tgz#f1fdd502e62852703f04831ccd1dfafdba6a5f78" + integrity sha512-iqgUZMtD8UZx5IeOzGREcP+vQ98czdBh3NmevqVJPGSfFtV7QixsUnRPk5v15bbfSg97Z+/6c7KRb9HsUAl13Q== + +"@nrwl/nx-linux-arm64-musl@15.9.6": + version "15.9.6" + resolved "https://registry.yarnpkg.com/@nrwl/nx-linux-arm64-musl/-/nx-linux-arm64-musl-15.9.6.tgz#6f1014fbba655962e91286401a26640348a3c913" + integrity sha512-9UA2X2n998brY5YBLqgVmL1Jf5qrlFXToDADhUrsN5kqhgd3TqPhdgSBXhzUfUeMVtq6Bm4mhVHzM3bK49jxZA== + +"@nrwl/nx-linux-x64-gnu@15.9.6": + version "15.9.6" + resolved "https://registry.yarnpkg.com/@nrwl/nx-linux-x64-gnu/-/nx-linux-x64-gnu-15.9.6.tgz#e70e6c72015b47a683c12f95a8d7f83a4d5b8639" + integrity sha512-9Oe0BZJuf4lmeL3KV8woLL+NIauBFbMHmSgxhUKUWwNVC/VDJhDSkkUCTlM1R6lTj3KYrJzpZ9ymSuZM4ftd5g== + +"@nrwl/nx-linux-x64-musl@15.9.6": + version "15.9.6" + resolved "https://registry.yarnpkg.com/@nrwl/nx-linux-x64-musl/-/nx-linux-x64-musl-15.9.6.tgz#83f6f11bf67b1625d2194de53588507da2a6ec5b" + integrity sha512-GNJDsmF0W7WOEnSbB9b/bOyS+Jl0S/zJEoGG0J9mpWTQCVx2HYvxl5EesTxO1Q/H2XmaraRNDS3xpk4l9ofo4w== + +"@nrwl/nx-win32-arm64-msvc@15.9.6": + version "15.9.6" + resolved "https://registry.yarnpkg.com/@nrwl/nx-win32-arm64-msvc/-/nx-win32-arm64-msvc-15.9.6.tgz#e1fff1890dcfbc3e9402b147d1b5d4a9cb6396c5" + integrity sha512-kFl9naZtZcSbZEXcjCJJlxWZPcZdp5AW+FGKnRKcAU3rdcsghtnf9ErMhIWJEaIxjMURV6C0ddw9YZNSVCumGA== + +"@nrwl/nx-win32-x64-msvc@15.9.6": + version "15.9.6" + resolved "https://registry.yarnpkg.com/@nrwl/nx-win32-x64-msvc/-/nx-win32-x64-msvc-15.9.6.tgz#dd13f82b75752cb65faa9f13cabb903b1619555a" + integrity sha512-omUJK6ZC6Ht5dPNxo+78hUAUhVVPsvjWhGoG1Et70rDhhNdY4c9BWU9vqmutWeDlr+ZlYNadtD/HPOikGVHfAw== + +"@nrwl/tao@15.9.6": + version "15.9.6" + resolved "https://registry.npmjs.org/@nrwl/tao/-/tao-15.9.6.tgz" + integrity sha512-1NGREpUbm9gjLQNmEpyH4cwVJSTawVZaksUQcotJLuVoZ8Hglx4Wci4zgD5hjtR5IML4N7pE8uN2Q3osIcUiXw== + dependencies: + nx "15.9.6" "@oclif/color@^0.1.2": version "0.1.2" - resolved "https://registry.yarnpkg.com/@oclif/color/-/color-0.1.2.tgz#28b07e2850d9ce814d0b587ce3403b7ad8f7d987" + resolved "https://registry.npmjs.org/@oclif/color/-/color-0.1.2.tgz" integrity sha512-M9o+DOrb8l603qvgz1FogJBUGLqcMFL1aFg2ZEL0FbXJofiNTLOWIeB4faeZTLwE6dt0xH9GpCVpzksMMzGbmA== dependencies: ansi-styles "^3.2.1" @@ -3834,7 +3869,7 @@ "@oclif/command@1.8.11": version "1.8.11" - resolved "https://registry.yarnpkg.com/@oclif/command/-/command-1.8.11.tgz#926919fe8ddb7ab778fef8a8f2951c975f35e0c2" + resolved "https://registry.npmjs.org/@oclif/command/-/command-1.8.11.tgz" integrity sha512-2fGLMvi6J5+oNxTaZfdWPMWY8oW15rYj0V8yLzmZBAEjfzjLqLIzJE9IlNccN1zwRqRHc1bcISSRDdxJ56IS/Q== dependencies: "@oclif/config" "^1.18.2" @@ -3844,9 +3879,9 @@ debug "^4.1.1" semver "^7.3.2" -"@oclif/command@^1.4.29", "@oclif/command@^1.4.31", "@oclif/command@^1.5.4", "@oclif/command@^1.6.0", "@oclif/command@^1.8.14", "@oclif/command@^1.8.15", "@oclif/command@^1.8.6", "@oclif/command@^1.8.9": +"@oclif/command@^1.4.29", "@oclif/command@^1.4.31", "@oclif/command@^1.5.4", "@oclif/command@^1.6.0", "@oclif/command@^1.8.15", "@oclif/command@^1.8.6", "@oclif/command@^1.8.9": version "1.8.23" - resolved "https://registry.yarnpkg.com/@oclif/command/-/command-1.8.23.tgz#b27e6b35b48c692eba53a35db7be736cdf5e4411" + resolved "https://registry.npmjs.org/@oclif/command/-/command-1.8.23.tgz" integrity sha512-H78+YbPKw9VankmlFizkHPP81UpoPC2x0MrTdU5/kzy0CCyTBmSGAxaUsiNi9tK7wKxMXOUbCYkk9MHr99zBaw== dependencies: "@oclif/config" "^1.18.2" @@ -3856,6 +3891,30 @@ debug "^4.1.1" semver "^7.4.0" +"@oclif/command@^1.8.14": + version "1.8.36" + resolved "https://registry.yarnpkg.com/@oclif/command/-/command-1.8.36.tgz#9739b9c268580d064a50887c4597d1b4e86ca8b5" + integrity sha512-/zACSgaYGtAQRzc7HjzrlIs14FuEYAZrMOEwicRoUnZVyRunG4+t5iSEeQu0Xy2bgbCD0U1SP/EdeNZSTXRwjQ== + dependencies: + "@oclif/config" "^1.18.2" + "@oclif/errors" "^1.3.6" + "@oclif/help" "^1.0.1" + "@oclif/parser" "^3.8.17" + debug "^4.1.1" + semver "^7.5.4" + +"@oclif/config@1.18.16": + version "1.18.16" + resolved "https://registry.yarnpkg.com/@oclif/config/-/config-1.18.16.tgz#3235d260ab1eb8388ebb6255bca3dd956249d796" + integrity sha512-VskIxVcN22qJzxRUq+raalq6Q3HUde7sokB7/xk5TqRZGEKRVbFeqdQBxDWwQeudiJEgcNiMvIFbMQ43dY37FA== + dependencies: + "@oclif/errors" "^1.3.6" + "@oclif/parser" "^3.8.16" + debug "^4.3.4" + globby "^11.1.0" + is-wsl "^2.1.1" + tslib "^2.6.1" + "@oclif/config@1.18.2": version "1.18.2" resolved "https://registry.yarnpkg.com/@oclif/config/-/config-1.18.2.tgz#5bfe74a9ba6a8ca3dceb314a81bd9ce2e15ebbfe" @@ -3870,7 +3929,7 @@ "@oclif/config@1.18.6": version "1.18.6" - resolved "https://registry.yarnpkg.com/@oclif/config/-/config-1.18.6.tgz#37367026b3110a2f04875509b1920a8ee4489f21" + resolved "https://registry.npmjs.org/@oclif/config/-/config-1.18.6.tgz" integrity sha512-OWhCpdu4QqggOPX1YPZ4XVmLLRX+lhGjXV6RNA7sogOwLqlEmSslnN/lhR5dkhcWZbKWBQH29YCrB3LDPRu/IA== dependencies: "@oclif/errors" "^1.3.6" @@ -3882,7 +3941,7 @@ "@oclif/config@^1.17.1", "@oclif/config@^1.18.2", "@oclif/config@^1.6.0", "@oclif/config@^1.6.22", "@oclif/config@^1.8.7": version "1.18.8" - resolved "https://registry.yarnpkg.com/@oclif/config/-/config-1.18.8.tgz#efaccbd0381f90a98fa69c9131e14c5a91fc0659" + resolved "https://registry.npmjs.org/@oclif/config/-/config-1.18.8.tgz" integrity sha512-FetS52+emaZQui0roFSdbBP8ddBkIezEoH2NcjLJRjqkMGdE9Z1V+jsISVqTYXk2KJ1gAI0CHDXFjJlNBYbJBg== dependencies: "@oclif/errors" "^1.3.6" @@ -3924,7 +3983,7 @@ "@oclif/errors@1.3.6", "@oclif/errors@^1.2.2", "@oclif/errors@^1.3.3", "@oclif/errors@^1.3.5", "@oclif/errors@^1.3.6": version "1.3.6" - resolved "https://registry.yarnpkg.com/@oclif/errors/-/errors-1.3.6.tgz#e8fe1fc12346cb77c4f274e26891964f5175f75d" + resolved "https://registry.npmjs.org/@oclif/errors/-/errors-1.3.6.tgz" integrity sha512-fYaU4aDceETd89KXP+3cLyg9EHZsLD3RxF2IU9yxahhBpspWjkWi3Dy3bTgcwZ3V47BgxQaGapzJWDM33XIVDQ== dependencies: clean-stack "^3.0.0" @@ -3933,9 +3992,24 @@ strip-ansi "^6.0.1" wrap-ansi "^7.0.0" -"@oclif/help@^1.0.0", "@oclif/help@^1.0.1": +"@oclif/help@^1.0.0": + version "1.0.15" + resolved "https://registry.yarnpkg.com/@oclif/help/-/help-1.0.15.tgz#5e36e576b8132a4906d2662204ad9de7ece87e8f" + integrity sha512-Yt8UHoetk/XqohYX76DfdrUYLsPKMc5pgkzsZVHDyBSkLiGRzujVaGZdjr32ckVZU9q3a47IjhWxhip7Dz5W/g== + dependencies: + "@oclif/config" "1.18.16" + "@oclif/errors" "1.3.6" + chalk "^4.1.2" + indent-string "^4.0.0" + lodash "^4.17.21" + string-width "^4.2.0" + strip-ansi "^6.0.0" + widest-line "^3.1.0" + wrap-ansi "^6.2.0" + +"@oclif/help@^1.0.1": version "1.0.5" - resolved "https://registry.yarnpkg.com/@oclif/help/-/help-1.0.5.tgz#0a370d0340fcf167ec3cb7a4f3074ebb3db8a94a" + resolved "https://registry.npmjs.org/@oclif/help/-/help-1.0.5.tgz" integrity sha512-77ZXqVXcd+bQ6EafN56KbL4PbNtZM/Lq4GQElekNav+CPIgPNKT3AtMTQrc0fWke6bb/BTLB+1Fu1gWgx643jQ== dependencies: "@oclif/config" "1.18.6" @@ -3950,12 +4024,22 @@ "@oclif/linewrap@^1.0.0": version "1.0.0" - resolved "https://registry.yarnpkg.com/@oclif/linewrap/-/linewrap-1.0.0.tgz#aedcb64b479d4db7be24196384897b5000901d91" + resolved "https://registry.npmjs.org/@oclif/linewrap/-/linewrap-1.0.0.tgz" integrity sha512-Ups2dShK52xXa8w6iBWLgcjPJWjais6KPJQq3gQ/88AY6BXoTX+MIGFPrWQO1KLMiQfoTpcLnUwloN4brrVUHw== -"@oclif/parser@^3.8.0", "@oclif/parser@^3.8.10", "@oclif/parser@^3.8.6", "@oclif/parser@^3.8.9": +"@oclif/parser@^3.8.0", "@oclif/parser@^3.8.16", "@oclif/parser@^3.8.17": + version "3.8.17" + resolved "https://registry.yarnpkg.com/@oclif/parser/-/parser-3.8.17.tgz#e1ce0f29b22762d752d9da1c7abd57ad81c56188" + integrity sha512-l04iSd0xoh/16TGVpXb81Gg3z7tlQGrEup16BrVLsZBK6SEYpYHRJZnM32BwZrHI97ZSFfuSwVlzoo6HdsaK8A== + dependencies: + "@oclif/errors" "^1.3.6" + "@oclif/linewrap" "^1.0.0" + chalk "^4.1.0" + tslib "^2.6.2" + +"@oclif/parser@^3.8.10", "@oclif/parser@^3.8.6", "@oclif/parser@^3.8.9": version "3.8.10" - resolved "https://registry.yarnpkg.com/@oclif/parser/-/parser-3.8.10.tgz#7b1048566e1d3f45ed09ca92b2e30f09bd9647e1" + resolved "https://registry.npmjs.org/@oclif/parser/-/parser-3.8.10.tgz" integrity sha512-J4l/NcnfbIU84+NNdy6bxq9yJt4joFWNvpk59hq+uaQPUNtjmNJDVGuRvf6GUOxHNgRsVK1JRmd/Ez+v7Z9GqQ== dependencies: "@oclif/errors" "^1.3.6" @@ -3965,7 +4049,7 @@ "@oclif/plugin-autocomplete@^0.1.5": version "0.1.5" - resolved "https://registry.yarnpkg.com/@oclif/plugin-autocomplete/-/plugin-autocomplete-0.1.5.tgz#b021b50db6d6b0d9e7d2227c58f43906578ae175" + resolved "https://registry.npmjs.org/@oclif/plugin-autocomplete/-/plugin-autocomplete-0.1.5.tgz" integrity sha512-Afchpdd8FNfx9GaU/1D9IzyfiXvjfGybgzQ6G4GTFvPO0/hLdkXX3YyYq+SnxE6/bCrhg4pleiB+GuJACmmkEA== dependencies: "@oclif/command" "^1.4.31" @@ -3978,7 +4062,7 @@ "@oclif/plugin-commands@^1.3.0": version "1.3.0" - resolved "https://registry.yarnpkg.com/@oclif/plugin-commands/-/plugin-commands-1.3.0.tgz#ba95e2c7f7c50345b806aa3728fe7868452d08a0" + resolved "https://registry.npmjs.org/@oclif/plugin-commands/-/plugin-commands-1.3.0.tgz" integrity sha512-Qx9gJ7/aPBgo+Q/DHmGcWyxn2/0bjqmCwt/nO0lWuTZQIH3ZTqclTm68TMZLS4QnQyDGeeYK0GqZ5qJlrXD+SQ== dependencies: "@oclif/command" "^1.5.4" @@ -3988,7 +4072,7 @@ "@oclif/plugin-help@3.2.14": version "3.2.14" - resolved "https://registry.yarnpkg.com/@oclif/plugin-help/-/plugin-help-3.2.14.tgz#7149eb322d36abc6cbf09f205bad128141e7eba4" + resolved "https://registry.npmjs.org/@oclif/plugin-help/-/plugin-help-3.2.14.tgz" integrity sha512-NP5qmE2YfcW3MmXjcrxiqKe9Hf3G0uK/qNc0zAMYKU4crFyIsWj7dBfQVFZSb28YXGioOOpjMzG1I7VMxKF38Q== dependencies: "@oclif/command" "^1.8.9" @@ -4021,7 +4105,7 @@ "@oclif/plugin-help@^1.2.4": version "1.2.11" - resolved "https://registry.yarnpkg.com/@oclif/plugin-help/-/plugin-help-1.2.11.tgz#e6413a6009519230bc4c7e7fe45d8e139939e657" + resolved "https://registry.npmjs.org/@oclif/plugin-help/-/plugin-help-1.2.11.tgz" integrity sha512-tuzhvxxRtfLnWa96klngXBi5IwHt9S/twedCbQhl9dYIKTFMHI1BcOQcPra6ylct+M+b9jhEF5sjWLv78tB6tw== dependencies: "@oclif/command" "^1.4.29" @@ -4034,7 +4118,7 @@ "@oclif/plugin-not-found@^1.2.4": version "1.2.6" - resolved "https://registry.yarnpkg.com/@oclif/plugin-not-found/-/plugin-not-found-1.2.6.tgz#7e354f7de6866477fe415c8fde357765876fe8ec" + resolved "https://registry.npmjs.org/@oclif/plugin-not-found/-/plugin-not-found-1.2.6.tgz" integrity sha512-cfkDub79I9EpselfU/W8FTXhslrkOgfqjaa25tyGo99dAX5UVr6BWL2wbUobsU+rUcm4HN3byzdHDcqfu6hoAw== dependencies: "@oclif/color" "^0.1.2" @@ -4045,7 +4129,7 @@ "@oclif/plugin-plugins@^1.9.4": version "1.10.11" - resolved "https://registry.yarnpkg.com/@oclif/plugin-plugins/-/plugin-plugins-1.10.11.tgz#f2d11dc164a3dd96392298670b4aafc04e89a44a" + resolved "https://registry.npmjs.org/@oclif/plugin-plugins/-/plugin-plugins-1.10.11.tgz" integrity sha512-C9eHF10UkxwoAqRYrPW51YDuDOpDXASX4BEA++kTVcqhMQTKBQalmEJKw+gVnLl1YNmapse1ZSAcU1TrXjqykg== dependencies: "@oclif/color" "^0.1.2" @@ -4064,7 +4148,7 @@ "@oclif/plugin-warn-if-update-available@^1.7.0": version "1.7.3" - resolved "https://registry.yarnpkg.com/@oclif/plugin-warn-if-update-available/-/plugin-warn-if-update-available-1.7.3.tgz#efe6676655fabbed2e90cc9e646e9da4c99bc8ae" + resolved "https://registry.npmjs.org/@oclif/plugin-warn-if-update-available/-/plugin-warn-if-update-available-1.7.3.tgz" integrity sha512-q8q0NIneVCwIAJzglUMsl3EbXR/H5aPDk6g+qs7uF0tToxe07SWSONoNaKPzViwRWvYChMPjL77/rXyW1HVn4A== dependencies: "@oclif/command" "^1.8.6" @@ -4079,20 +4163,18 @@ "@oclif/screen@^1.0.3", "@oclif/screen@^1.0.4": version "1.0.4" - resolved "https://registry.yarnpkg.com/@oclif/screen/-/screen-1.0.4.tgz#b740f68609dfae8aa71c3a6cab15d816407ba493" + resolved "https://registry.npmjs.org/@oclif/screen/-/screen-1.0.4.tgz" integrity sha512-60CHpq+eqnTxLZQ4PGHYNwUX572hgpMHGPtTWMjdTMsAvlm69lZV/4ly6O3sAYkomo4NggGcomrDpBe34rxUqw== "@octokit/auth-token@^3.0.0": - version "3.0.3" - resolved "https://registry.yarnpkg.com/@octokit/auth-token/-/auth-token-3.0.3.tgz#ce7e48a3166731f26068d7a7a7996b5da58cbe0c" - integrity sha512-/aFM2M4HVDBT/jjDBa84sJniv1t9Gm/rLkalaz9htOm+L+8JMj1k9w0CkUdcxNyNxZPlTxKPVko+m1VlM58ZVA== - dependencies: - "@octokit/types" "^9.0.0" + version "3.0.4" + resolved "https://registry.npmjs.org/@octokit/auth-token/-/auth-token-3.0.4.tgz" + integrity sha512-TWFX7cZF2LXoCvdmJWY7XVPi74aSY0+FfBZNSXEXFkMpjcqsQwDSYVv5FhRFaI0V1ECnwbz4j59T/G+rXNWaIQ== -"@octokit/core@^4.1.0": - version "4.2.0" - resolved "https://registry.yarnpkg.com/@octokit/core/-/core-4.2.0.tgz#8c253ba9605aca605bc46187c34fcccae6a96648" - integrity sha512-AgvDRUg3COpR82P7PBdGZF/NNqGmtMq2NiPqeSsDIeCfYFOZ9gddqWNQHnFdEUf+YwOj4aZYmJnlPp7OXmDIDg== +"@octokit/core@^4.2.1": + version "4.2.4" + resolved "https://registry.npmjs.org/@octokit/core/-/core-4.2.4.tgz" + integrity sha512-rYKilwgzQ7/imScn3M9/pFfUf4I1AZEH3KhyJmtPdE2zfaXAn2mFfUy4FbKewzc2We5y/LlKLj36fWJLKC2SIQ== dependencies: "@octokit/auth-token" "^3.0.0" "@octokit/graphql" "^5.0.0" @@ -4103,56 +4185,56 @@ universal-user-agent "^6.0.0" "@octokit/endpoint@^7.0.0": - version "7.0.5" - resolved "https://registry.yarnpkg.com/@octokit/endpoint/-/endpoint-7.0.5.tgz#2bb2a911c12c50f10014183f5d596ce30ac67dd1" - integrity sha512-LG4o4HMY1Xoaec87IqQ41TQ+glvIeTKqfjkCEmt5AIwDZJwQeVZFIEYXrYY6yLwK+pAScb9Gj4q+Nz2qSw1roA== + version "7.0.6" + resolved "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-7.0.6.tgz" + integrity sha512-5L4fseVRUsDFGR00tMWD/Trdeeihn999rTMGRMC1G/Ldi1uWlWJzI98H4Iak5DB/RVvQuyMYKqSK/R6mbSOQyg== dependencies: "@octokit/types" "^9.0.0" is-plain-object "^5.0.0" universal-user-agent "^6.0.0" "@octokit/graphql@^5.0.0": - version "5.0.5" - resolved "https://registry.yarnpkg.com/@octokit/graphql/-/graphql-5.0.5.tgz#a4cb3ea73f83b861893a6370ee82abb36e81afd2" - integrity sha512-Qwfvh3xdqKtIznjX9lz2D458r7dJPP8l6r4GQkIdWQouZwHQK0mVT88uwiU2bdTU2OtT1uOlKpRciUWldpG0yQ== + version "5.0.6" + resolved "https://registry.npmjs.org/@octokit/graphql/-/graphql-5.0.6.tgz" + integrity sha512-Fxyxdy/JH0MnIB5h+UQ3yCoh1FG4kWXfFKkpWqjZHw/p+Kc8Y44Hu/kCgNBT6nU1shNumEchmW/sUO1JuQnPcw== dependencies: "@octokit/request" "^6.0.0" "@octokit/types" "^9.0.0" universal-user-agent "^6.0.0" -"@octokit/openapi-types@^17.0.0": - version "17.0.0" - resolved "https://registry.yarnpkg.com/@octokit/openapi-types/-/openapi-types-17.0.0.tgz#7356d287f48b20e9a1f497ef8dfaabdff9cf8622" - integrity sha512-V8BVJGN0ZmMlURF55VFHFd/L92XQQ43KvFjNmY1IYbCN3V/h/uUFV6iQi19WEHM395Nn+1qhUbViCAD/1czzog== +"@octokit/openapi-types@^18.0.0": + version "18.0.0" + resolved "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-18.0.0.tgz" + integrity sha512-V8GImKs3TeQRxRtXFpG2wl19V7444NIOTDF24AWuIbmNaNYOQMWRbjcGDXV5B+0n887fgDcuMNOmlul+k+oJtw== "@octokit/plugin-enterprise-rest@^6.0.1": version "6.0.1" - resolved "https://registry.yarnpkg.com/@octokit/plugin-enterprise-rest/-/plugin-enterprise-rest-6.0.1.tgz#e07896739618dab8da7d4077c658003775f95437" + resolved "https://registry.npmjs.org/@octokit/plugin-enterprise-rest/-/plugin-enterprise-rest-6.0.1.tgz" integrity sha512-93uGjlhUD+iNg1iWhUENAtJata6w5nE+V4urXOAlIXdco6xNZtUSfYY8dzp3Udy74aqO/B5UZL80x/YMa5PKRw== -"@octokit/plugin-paginate-rest@^6.0.0": - version "6.0.0" - resolved "https://registry.yarnpkg.com/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-6.0.0.tgz#f34b5a7d9416019126042cd7d7b811e006c0d561" - integrity sha512-Sq5VU1PfT6/JyuXPyt04KZNVsFOSBaYOAq2QRZUwzVlI10KFvcbUo8lR258AAQL1Et60b0WuVik+zOWKLuDZxw== +"@octokit/plugin-paginate-rest@^6.1.2": + version "6.1.2" + resolved "https://registry.npmjs.org/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-6.1.2.tgz" + integrity sha512-qhrmtQeHU/IivxucOV1bbI/xZyC/iOBhclokv7Sut5vnejAIAEXVcGQeRpQlU39E0WwK9lNvJHphHri/DB6lbQ== dependencies: - "@octokit/types" "^9.0.0" + "@octokit/tsconfig" "^1.0.2" + "@octokit/types" "^9.2.3" "@octokit/plugin-request-log@^1.0.4": version "1.0.4" - resolved "https://registry.yarnpkg.com/@octokit/plugin-request-log/-/plugin-request-log-1.0.4.tgz#5e50ed7083a613816b1e4a28aeec5fb7f1462e85" + resolved "https://registry.npmjs.org/@octokit/plugin-request-log/-/plugin-request-log-1.0.4.tgz" integrity sha512-mLUsMkgP7K/cnFEw07kWqXGF5LKrOkD+lhCrKvPHXWDywAwuDUeDwWBpc69XK3pNX0uKiVt8g5z96PJ6z9xCFA== -"@octokit/plugin-rest-endpoint-methods@^7.0.0": - version "7.0.1" - resolved "https://registry.yarnpkg.com/@octokit/plugin-rest-endpoint-methods/-/plugin-rest-endpoint-methods-7.0.1.tgz#f7ebe18144fd89460f98f35a587b056646e84502" - integrity sha512-pnCaLwZBudK5xCdrR823xHGNgqOzRnJ/mpC/76YPpNP7DybdsJtP7mdOwh+wYZxK5jqeQuhu59ogMI4NRlBUvA== +"@octokit/plugin-rest-endpoint-methods@^7.1.2": + version "7.2.3" + resolved "https://registry.npmjs.org/@octokit/plugin-rest-endpoint-methods/-/plugin-rest-endpoint-methods-7.2.3.tgz" + integrity sha512-I5Gml6kTAkzVlN7KCtjOM+Ruwe/rQppp0QU372K1GP7kNOYEKe8Xn5BW4sE62JAHdwpq95OQK/qGNyKQMUzVgA== dependencies: - "@octokit/types" "^9.0.0" - deprecation "^2.3.1" + "@octokit/types" "^10.0.0" "@octokit/request-error@^3.0.0": version "3.0.3" - resolved "https://registry.yarnpkg.com/@octokit/request-error/-/request-error-3.0.3.tgz#ef3dd08b8e964e53e55d471acfe00baa892b9c69" + resolved "https://registry.npmjs.org/@octokit/request-error/-/request-error-3.0.3.tgz" integrity sha512-crqw3V5Iy2uOU5Np+8M/YexTlT8zxCfI+qu+LxUB7SZpje4Qmx3mub5DfEKSO8Ylyk0aogi6TYdf6kxzh2BguQ== dependencies: "@octokit/types" "^9.0.0" @@ -4160,9 +4242,9 @@ once "^1.4.0" "@octokit/request@^6.0.0": - version "6.2.3" - resolved "https://registry.yarnpkg.com/@octokit/request/-/request-6.2.3.tgz#76d5d6d44da5c8d406620a4c285d280ae310bdb4" - integrity sha512-TNAodj5yNzrrZ/VxP+H5HiYaZep0H3GU0O7PaF+fhDrt8FPrnkei9Aal/txsN/1P7V3CPiThG0tIvpPDYUsyAA== + version "6.2.8" + resolved "https://registry.npmjs.org/@octokit/request/-/request-6.2.8.tgz" + integrity sha512-ow4+pkVQ+6XVVsekSYBzJC0VTVvh/FCTUUgTsboGq+DTeWdyIFV8WSCdo0RIxk6wSkBTHqIK1mYuY7nOBXOchw== dependencies: "@octokit/endpoint" "^7.0.0" "@octokit/request-error" "^3.0.0" @@ -4172,37 +4254,49 @@ universal-user-agent "^6.0.0" "@octokit/rest@^19.0.3": - version "19.0.7" - resolved "https://registry.yarnpkg.com/@octokit/rest/-/rest-19.0.7.tgz#d2e21b4995ab96ae5bfae50b4969da7e04e0bb70" - integrity sha512-HRtSfjrWmWVNp2uAkEpQnuGMJsu/+dBr47dRc5QVgsCbnIc1+GFEaoKBWkYG+zjrsHpSqcAElMio+n10c0b5JA== + version "19.0.13" + resolved "https://registry.npmjs.org/@octokit/rest/-/rest-19.0.13.tgz" + integrity sha512-/EzVox5V9gYGdbAI+ovYj3nXQT1TtTHRT+0eZPcuC05UFSWO3mdO9UY1C0i2eLF9Un1ONJkAk+IEtYGAC+TahA== dependencies: - "@octokit/core" "^4.1.0" - "@octokit/plugin-paginate-rest" "^6.0.0" + "@octokit/core" "^4.2.1" + "@octokit/plugin-paginate-rest" "^6.1.2" "@octokit/plugin-request-log" "^1.0.4" - "@octokit/plugin-rest-endpoint-methods" "^7.0.0" + "@octokit/plugin-rest-endpoint-methods" "^7.1.2" + +"@octokit/tsconfig@^1.0.2": + version "1.0.2" + resolved "https://registry.npmjs.org/@octokit/tsconfig/-/tsconfig-1.0.2.tgz" + integrity sha512-I0vDR0rdtP8p2lGMzvsJzbhdOWy405HcGovrspJ8RRibHnyRgggUSNO5AIox5LmqiwmatHKYsvj6VGFHkqS7lA== -"@octokit/types@^9.0.0": - version "9.1.1" - resolved "https://registry.yarnpkg.com/@octokit/types/-/types-9.1.1.tgz#8a71f05c4e72fe51aac2c66ed71999abdd7e2777" - integrity sha512-hFheiHJEZzE5qn/u4R2IeMLXqUzXgd1vSokHS5x4oq+klHhXNFLL69kanAtrlTqj3K9Dps9XhOqOtDhDmPdlxQ== +"@octokit/types@^10.0.0": + version "10.0.0" + resolved "https://registry.npmjs.org/@octokit/types/-/types-10.0.0.tgz" + integrity sha512-Vm8IddVmhCgU1fxC1eyinpwqzXPEYu0NrYzD3YZjlGjyftdLBTeqNblRC0jmJmgxbJIsQlyogVeGnrNaaMVzIg== + dependencies: + "@octokit/openapi-types" "^18.0.0" + +"@octokit/types@^9.0.0", "@octokit/types@^9.2.3": + version "9.3.2" + resolved "https://registry.npmjs.org/@octokit/types/-/types-9.3.2.tgz" + integrity sha512-D4iHGTdAnEEVsB8fl95m1hiz7D5YiRdQ9b/OEb3BYRVwbLsGHcRVPz+u+BgRLNk0Q0/4iZCBqDN96j2XNxfXrA== dependencies: - "@octokit/openapi-types" "^17.0.0" + "@octokit/openapi-types" "^18.0.0" "@opentelemetry/api-logs@0.41.2": version "0.41.2" - resolved "https://registry.yarnpkg.com/@opentelemetry/api-logs/-/api-logs-0.41.2.tgz#600c9b3d79018e7421d2ff7189f41b6d2c987d6a" + resolved "https://registry.npmjs.org/@opentelemetry/api-logs/-/api-logs-0.41.2.tgz" integrity sha512-JEV2RAqijAFdWeT6HddYymfnkiRu2ASxoTBr4WsnGJhOjWZkEy6vp+Sx9ozr1NaIODOa2HUyckExIqQjn6qywQ== dependencies: "@opentelemetry/api" "^1.0.0" "@opentelemetry/api@^1.0.0", "@opentelemetry/api@^1.4.1": version "1.4.1" - resolved "https://registry.yarnpkg.com/@opentelemetry/api/-/api-1.4.1.tgz#ff22eb2e5d476fbc2450a196e40dd243cc20c28f" + resolved "https://registry.npmjs.org/@opentelemetry/api/-/api-1.4.1.tgz" integrity sha512-O2yRJce1GOc6PAy3QxFM4NzFiWzvScDC1/5ihYBL6BUEVdq0XMWN01sppE+H6bBXbaFYipjwFLEWLg5PaSOThA== "@opentelemetry/auto-instrumentations-node@^0.38.0": version "0.38.0" - resolved "https://registry.yarnpkg.com/@opentelemetry/auto-instrumentations-node/-/auto-instrumentations-node-0.38.0.tgz#9841ebc87d696aff10cf1ad03b19f5b233868bd2" + resolved "https://registry.npmjs.org/@opentelemetry/auto-instrumentations-node/-/auto-instrumentations-node-0.38.0.tgz" integrity sha512-lQXiUAGs79+SkaTycwmtamzH0bsXpGOccl2jNFDztZrCvMn2xD4TJkKm5PuoFp9fnRgtY/vEJck+ViefJnSCdA== dependencies: "@opentelemetry/instrumentation" "^0.41.0" @@ -4252,19 +4346,26 @@ "@opentelemetry/context-async-hooks@1.15.2": version "1.15.2" - resolved "https://registry.yarnpkg.com/@opentelemetry/context-async-hooks/-/context-async-hooks-1.15.2.tgz#116bd5fef231137198d5bf551e8c0521fbdfe928" + resolved "https://registry.npmjs.org/@opentelemetry/context-async-hooks/-/context-async-hooks-1.15.2.tgz" integrity sha512-VAMHG67srGFQDG/N2ns5AyUT9vUcoKpZ/NpJ5fDQIPfJd7t3ju+aHwvDsMcrYBWuCh03U3Ky6o16+872CZchBg== "@opentelemetry/core@1.15.2", "@opentelemetry/core@^1.0.0", "@opentelemetry/core@^1.1.0", "@opentelemetry/core@^1.8.0": version "1.15.2" - resolved "https://registry.yarnpkg.com/@opentelemetry/core/-/core-1.15.2.tgz#5b170bf223a2333884bbc2d29d95812cdbda7c9f" + resolved "https://registry.npmjs.org/@opentelemetry/core/-/core-1.15.2.tgz" integrity sha512-+gBv15ta96WqkHZaPpcDHiaz0utiiHZVfm2YOYSqFGrUaJpPkMoSuLBB58YFQGi6Rsb9EHos84X6X5+9JspmLw== dependencies: "@opentelemetry/semantic-conventions" "1.15.2" -"@opentelemetry/exporter-jaeger@1.15.2", "@opentelemetry/exporter-jaeger@^1.15.2": +"@opentelemetry/core@1.17.0": + version "1.17.0" + resolved "https://registry.npmjs.org/@opentelemetry/core/-/core-1.17.0.tgz" + integrity sha512-tfnl3h+UefCgx1aeN2xtrmr6BmdWGKXypk0pflQR0urFS40aE88trnkOMc2HTJZbMrqEEl4HsaBeFhwLVXsrJg== + dependencies: + "@opentelemetry/semantic-conventions" "1.17.0" + +"@opentelemetry/exporter-jaeger@1.15.2": version "1.15.2" - resolved "https://registry.yarnpkg.com/@opentelemetry/exporter-jaeger/-/exporter-jaeger-1.15.2.tgz#1ac7020d798ec4e47417bd90e00763e0947e17de" + resolved "https://registry.npmjs.org/@opentelemetry/exporter-jaeger/-/exporter-jaeger-1.15.2.tgz" integrity sha512-BwYd5836GYvuiQcF4l5X0ca09jGJr/F37MMGyz94VH0b1dp0uYBwRJw2CQh56RlVZEdpKv29JyDRVZ/4UrRgLQ== dependencies: "@opentelemetry/core" "1.15.2" @@ -4272,9 +4373,19 @@ "@opentelemetry/semantic-conventions" "1.15.2" jaeger-client "^3.15.0" +"@opentelemetry/exporter-jaeger@^1.15.2": + version "1.17.0" + resolved "https://registry.npmjs.org/@opentelemetry/exporter-jaeger/-/exporter-jaeger-1.17.0.tgz" + integrity sha512-rWS5CQ+ns0NM3pmOAebaQdOmSnH6/7/P82EotaIq3zWrV5XRnKCRuILii457KnLqAI5zWjRTTEz2judEXNcCgg== + dependencies: + "@opentelemetry/core" "1.17.0" + "@opentelemetry/sdk-trace-base" "1.17.0" + "@opentelemetry/semantic-conventions" "1.17.0" + jaeger-client "^3.15.0" + "@opentelemetry/exporter-trace-otlp-grpc@0.41.2": version "0.41.2" - resolved "https://registry.yarnpkg.com/@opentelemetry/exporter-trace-otlp-grpc/-/exporter-trace-otlp-grpc-0.41.2.tgz#445f850f4675e0afc3e326b2663576fa0b5fbee4" + resolved "https://registry.npmjs.org/@opentelemetry/exporter-trace-otlp-grpc/-/exporter-trace-otlp-grpc-0.41.2.tgz" integrity sha512-tRM/mq7PFj7mXCws5ICMVp/rmgU93JvZdoLE0uLj4tugNz231u2ZgeRYXulBjdeHM88ZQSsWTJMu2mvr/3JV1A== dependencies: "@grpc/grpc-js" "^1.7.1" @@ -4286,7 +4397,7 @@ "@opentelemetry/exporter-trace-otlp-http@0.41.2": version "0.41.2" - resolved "https://registry.yarnpkg.com/@opentelemetry/exporter-trace-otlp-http/-/exporter-trace-otlp-http-0.41.2.tgz#4818088c652f2077a55c9c1364d8320e994dc00f" + resolved "https://registry.npmjs.org/@opentelemetry/exporter-trace-otlp-http/-/exporter-trace-otlp-http-0.41.2.tgz" integrity sha512-Y0fGLipjZXLMelWtlS1/MDtrPxf25oM408KukRdkN31a1MEFo4h/ZkNwS7ZfmqHGUa+4rWRt2bi6JBiqy7Ytgw== dependencies: "@opentelemetry/core" "1.15.2" @@ -4297,7 +4408,7 @@ "@opentelemetry/exporter-trace-otlp-proto@0.41.2": version "0.41.2" - resolved "https://registry.yarnpkg.com/@opentelemetry/exporter-trace-otlp-proto/-/exporter-trace-otlp-proto-0.41.2.tgz#8e8f823d5264e34dc7c8b400f9d03871c7bfcbc5" + resolved "https://registry.npmjs.org/@opentelemetry/exporter-trace-otlp-proto/-/exporter-trace-otlp-proto-0.41.2.tgz" integrity sha512-IGZga9IIckqYE3IpRE9FO9G5umabObIrChlXUHYpMJtDgx797dsb3qXCvLeuAwB+HoB8NsEZstlzmLnoa6/HmA== dependencies: "@opentelemetry/core" "1.15.2" @@ -4309,7 +4420,7 @@ "@opentelemetry/exporter-zipkin@1.15.2": version "1.15.2" - resolved "https://registry.yarnpkg.com/@opentelemetry/exporter-zipkin/-/exporter-zipkin-1.15.2.tgz#4f72482909fd7a197fb614fc1f285b15ca008a39" + resolved "https://registry.npmjs.org/@opentelemetry/exporter-zipkin/-/exporter-zipkin-1.15.2.tgz" integrity sha512-j9dPe8tyx4KqIqJAfZ/LCYfkF9+ggsT0V1+bVg9ZKTBNcLf5dTsTMdcxUxc/9s599kgcn6UERnti/tozbzwa6Q== dependencies: "@opentelemetry/core" "1.15.2" @@ -4319,7 +4430,7 @@ "@opentelemetry/instrumentation-amqplib@^0.33.0": version "0.33.1" - resolved "https://registry.yarnpkg.com/@opentelemetry/instrumentation-amqplib/-/instrumentation-amqplib-0.33.1.tgz#a459073939691a4a1dabf96ef7c1af168fb27e35" + resolved "https://registry.npmjs.org/@opentelemetry/instrumentation-amqplib/-/instrumentation-amqplib-0.33.1.tgz" integrity sha512-Eg797WDHVDcRr6+5tihh7ab+ZjS5yCOoW4PkUYCcJHVT31AGfi+PlkLgHknW+uT1oKijMC4D1p6jDa/2rzRv/g== dependencies: "@opentelemetry/core" "^1.8.0" @@ -4328,7 +4439,7 @@ "@opentelemetry/instrumentation-aws-lambda@^0.36.0": version "0.36.0" - resolved "https://registry.yarnpkg.com/@opentelemetry/instrumentation-aws-lambda/-/instrumentation-aws-lambda-0.36.0.tgz#bfd3ffac407a1339fc0bdc9afb4bb9e2dfe2ef39" + resolved "https://registry.npmjs.org/@opentelemetry/instrumentation-aws-lambda/-/instrumentation-aws-lambda-0.36.0.tgz" integrity sha512-GkehkjN4vHTc5HNIBlKddrm+EVch2cNEfbLcV7tXLu0Hu95kt6PPOwxHDYRxgvu1auFpJY0epUzmPd11zI706A== dependencies: "@opentelemetry/instrumentation" "^0.41.0" @@ -4340,7 +4451,7 @@ "@opentelemetry/instrumentation-aws-sdk@^0.35.0": version "0.35.0" - resolved "https://registry.yarnpkg.com/@opentelemetry/instrumentation-aws-sdk/-/instrumentation-aws-sdk-0.35.0.tgz#359f56c956afbf526d729e1e8f7d1c28347afaef" + resolved "https://registry.npmjs.org/@opentelemetry/instrumentation-aws-sdk/-/instrumentation-aws-sdk-0.35.0.tgz" integrity sha512-jKf2nuTe3kYhtINGmgaVlw54q5pgX959zK2abGdvoUSdSP3Pv36YwNZk1K+jAKCN4I71R8/Qp1driAuKKj/Kxg== dependencies: "@opentelemetry/core" "^1.8.0" @@ -4351,7 +4462,7 @@ "@opentelemetry/instrumentation-bunyan@^0.32.0": version "0.32.1" - resolved "https://registry.yarnpkg.com/@opentelemetry/instrumentation-bunyan/-/instrumentation-bunyan-0.32.1.tgz#ed315aa3ed6c5e47733c1c74d116c46a5ac1d468" + resolved "https://registry.npmjs.org/@opentelemetry/instrumentation-bunyan/-/instrumentation-bunyan-0.32.1.tgz" integrity sha512-TjH357ldA5DpK09XUDWffqV9Km++N9H0dwmxHrElM2TSe4Usgkgw6mlodbuh45hoVDD+cCPi+GO6Dq1QLVEdZg== dependencies: "@opentelemetry/instrumentation" "^0.41.2" @@ -4359,7 +4470,7 @@ "@opentelemetry/instrumentation-cassandra-driver@^0.33.0": version "0.33.1" - resolved "https://registry.yarnpkg.com/@opentelemetry/instrumentation-cassandra-driver/-/instrumentation-cassandra-driver-0.33.1.tgz#c68af7c975deb1e5793d2051ca327a5834a5037f" + resolved "https://registry.npmjs.org/@opentelemetry/instrumentation-cassandra-driver/-/instrumentation-cassandra-driver-0.33.1.tgz" integrity sha512-nn8XtLB1XmViEAnNnZ43jHojYxgNJ1W+QF2B3yBmfVqXJnE0IbzhIiPmU+Zx3ZSzIoWS0EQQM3ljcgDC03FZ7A== dependencies: "@opentelemetry/instrumentation" "^0.41.2" @@ -4367,7 +4478,7 @@ "@opentelemetry/instrumentation-connect@^0.32.0": version "0.32.1" - resolved "https://registry.yarnpkg.com/@opentelemetry/instrumentation-connect/-/instrumentation-connect-0.32.1.tgz#020bcaf1b384e0c4a60b2023ffcdc89e998eb2c1" + resolved "https://registry.npmjs.org/@opentelemetry/instrumentation-connect/-/instrumentation-connect-0.32.1.tgz" integrity sha512-QHi0hTXtqZj3wSyvKwFmkGYHRnGdl8w76MHZj3Rekxe4ILpcn78fZGJSbA+0eYdOWHnGP0c483uMOeGH08XYmA== dependencies: "@opentelemetry/core" "^1.8.0" @@ -4377,14 +4488,14 @@ "@opentelemetry/instrumentation-dataloader@^0.5.0": version "0.5.1" - resolved "https://registry.yarnpkg.com/@opentelemetry/instrumentation-dataloader/-/instrumentation-dataloader-0.5.1.tgz#1b63770793ceedacb42051b22b6a5eb7b54b26d8" + resolved "https://registry.npmjs.org/@opentelemetry/instrumentation-dataloader/-/instrumentation-dataloader-0.5.1.tgz" integrity sha512-dqYITnlCo7FSZ8mhyxh9TtogwcebGcuMaXTjYDyIKGshDcjCxhvhNjFDe4y3RD/g/EFKINkYVkVXB1lDqZdxTA== dependencies: "@opentelemetry/instrumentation" "^0.41.2" "@opentelemetry/instrumentation-dns@^0.32.0": version "0.32.1" - resolved "https://registry.yarnpkg.com/@opentelemetry/instrumentation-dns/-/instrumentation-dns-0.32.1.tgz#cb0e24e1e2f043112461e533aa7bdaf3389c3d7f" + resolved "https://registry.npmjs.org/@opentelemetry/instrumentation-dns/-/instrumentation-dns-0.32.1.tgz" integrity sha512-WtfwHITUUs2CkRCDT+hbSBy4+ltHIvQDbl/B7TZLQHwpZ6jTRQFsCBzPdhgND4XpHvsXDfLhQihguXyXRGILkg== dependencies: "@opentelemetry/instrumentation" "^0.41.2" @@ -4393,7 +4504,7 @@ "@opentelemetry/instrumentation-express@^0.33.0": version "0.33.1" - resolved "https://registry.yarnpkg.com/@opentelemetry/instrumentation-express/-/instrumentation-express-0.33.1.tgz#0710f839d2a395014d2ffef9390074bb60009841" + resolved "https://registry.npmjs.org/@opentelemetry/instrumentation-express/-/instrumentation-express-0.33.1.tgz" integrity sha512-awrpiTZWnLOCJ4TeDMTrs6/gH/oXbNipoPx3WUKQlA1yfMlpNynqokTyCYv1n10Zu9Y2P/nIhoNnUw0ywp61nA== dependencies: "@opentelemetry/core" "^1.8.0" @@ -4403,7 +4514,7 @@ "@opentelemetry/instrumentation-fastify@^0.32.0": version "0.32.1" - resolved "https://registry.yarnpkg.com/@opentelemetry/instrumentation-fastify/-/instrumentation-fastify-0.32.1.tgz#59a2bcb9c0d233c9893ab3c73e951800caa87ab5" + resolved "https://registry.npmjs.org/@opentelemetry/instrumentation-fastify/-/instrumentation-fastify-0.32.1.tgz" integrity sha512-DGWWGAe8SCULvqlJpL2zJ7o1gYzmhAfKRjJrWmwyZshnjGEw3PQ3b1GHivoxZ6zB7D6ykttxanQovrAKk83WoA== dependencies: "@opentelemetry/core" "^1.8.0" @@ -4412,7 +4523,7 @@ "@opentelemetry/instrumentation-fs@^0.8.0": version "0.8.1" - resolved "https://registry.yarnpkg.com/@opentelemetry/instrumentation-fs/-/instrumentation-fs-0.8.1.tgz#752f286d285374afd65e92ba721c9fa9119b67ac" + resolved "https://registry.npmjs.org/@opentelemetry/instrumentation-fs/-/instrumentation-fs-0.8.1.tgz" integrity sha512-a5U6ydfqVeT4Zp6GL5lZDZNJAmic3CCtgg/f2yqvnpq2fE0cyD/XlW9JWzGhAJaq29E1bxtb9FJ0n6ee3c9dYQ== dependencies: "@opentelemetry/core" "^1.8.0" @@ -4421,7 +4532,7 @@ "@opentelemetry/instrumentation-generic-pool@^0.32.0": version "0.32.2" - resolved "https://registry.yarnpkg.com/@opentelemetry/instrumentation-generic-pool/-/instrumentation-generic-pool-0.32.2.tgz#dbe1283ccc832ef651f7082b0d1ed8357d2dbce9" + resolved "https://registry.npmjs.org/@opentelemetry/instrumentation-generic-pool/-/instrumentation-generic-pool-0.32.2.tgz" integrity sha512-HMAkKOfSZMKy4YfDLwSByR2q74pk3TMpSxgwWYLeezNpscnNAc4mtZtbWdUL62v8IaCXIc/qizwQYkcKqvGnZQ== dependencies: "@opentelemetry/instrumentation" "^0.41.2" @@ -4429,14 +4540,14 @@ "@opentelemetry/instrumentation-graphql@^0.35.0": version "0.35.1" - resolved "https://registry.yarnpkg.com/@opentelemetry/instrumentation-graphql/-/instrumentation-graphql-0.35.1.tgz#e49ec2256bcc4820458688abac0212ac781864c0" + resolved "https://registry.npmjs.org/@opentelemetry/instrumentation-graphql/-/instrumentation-graphql-0.35.1.tgz" integrity sha512-bAM4W5wU0lZ1UIKK/5b4p8LEU8N6W+VgpcnUIK7GTTDxdhcWTd3Q6oyS6nauhZSzEnAEmmJVXaLQAGIU4sEkyA== dependencies: "@opentelemetry/instrumentation" "^0.41.2" "@opentelemetry/instrumentation-grpc@^0.41.0": version "0.41.2" - resolved "https://registry.yarnpkg.com/@opentelemetry/instrumentation-grpc/-/instrumentation-grpc-0.41.2.tgz#38b51eda1bcb6bf8d422410fa4596b56b03e98ab" + resolved "https://registry.npmjs.org/@opentelemetry/instrumentation-grpc/-/instrumentation-grpc-0.41.2.tgz" integrity sha512-+fh9GUFv97p25CMreUv4OdP5L21hPgfX3d4fuQ0KIgIZIaX2M6/8cr5Ik+8zWsyhYzfFX3CKq6BXm3UBg7cswQ== dependencies: "@opentelemetry/instrumentation" "0.41.2" @@ -4444,7 +4555,7 @@ "@opentelemetry/instrumentation-hapi@^0.32.0": version "0.32.0" - resolved "https://registry.yarnpkg.com/@opentelemetry/instrumentation-hapi/-/instrumentation-hapi-0.32.0.tgz#59362dab5d2a2d7fdfe47bda0cd75dec923b0ece" + resolved "https://registry.npmjs.org/@opentelemetry/instrumentation-hapi/-/instrumentation-hapi-0.32.0.tgz" integrity sha512-Wl43lSVqqJZAxhWE1BWlV9yoInEOGiKeGqNhphoGJLqblmlF8Yxob1t2fK/wTj2srmmm1XU70olwhN09uOQxpg== dependencies: "@opentelemetry/core" "^1.8.0" @@ -4455,7 +4566,7 @@ "@opentelemetry/instrumentation-http@^0.41.0": version "0.41.2" - resolved "https://registry.yarnpkg.com/@opentelemetry/instrumentation-http/-/instrumentation-http-0.41.2.tgz#dad5a693eaad2113ce7ed089fa46ef98d79f2bfc" + resolved "https://registry.npmjs.org/@opentelemetry/instrumentation-http/-/instrumentation-http-0.41.2.tgz" integrity sha512-dzOC6xkfK0LM6Dzo91aInLdSbdIzKA0IgSDnyLi6YZ0Z7c1bfrFncFx/3gZs8vi+KXLALgfMlpzE7IYDW/cM3A== dependencies: "@opentelemetry/core" "1.15.2" @@ -4465,7 +4576,7 @@ "@opentelemetry/instrumentation-ioredis@^0.35.0": version "0.35.1" - resolved "https://registry.yarnpkg.com/@opentelemetry/instrumentation-ioredis/-/instrumentation-ioredis-0.35.1.tgz#86d77dc0878707ab456ccebf78233cb0e7127635" + resolved "https://registry.npmjs.org/@opentelemetry/instrumentation-ioredis/-/instrumentation-ioredis-0.35.1.tgz" integrity sha512-lixraoS9rs81783QRjQ56/S5KzVBllC+zs7UJuTGODi5Egn/YMGp5lNnlbkUxeJl9LMyADMiP7ZGpQtfKwdc3g== dependencies: "@opentelemetry/instrumentation" "^0.41.2" @@ -4475,7 +4586,7 @@ "@opentelemetry/instrumentation-knex@^0.32.0": version "0.32.1" - resolved "https://registry.yarnpkg.com/@opentelemetry/instrumentation-knex/-/instrumentation-knex-0.32.1.tgz#0c21b1d35be82a9e1732879192a373b145453ed8" + resolved "https://registry.npmjs.org/@opentelemetry/instrumentation-knex/-/instrumentation-knex-0.32.1.tgz" integrity sha512-s+5BtsYUendDTrWAxkr50X3+kb+sVffFzp4z5DC+aZt52P/kF85wm6GyC1mREvvhhK2UKrCq2yMVKD90z0FKsA== dependencies: "@opentelemetry/instrumentation" "^0.41.2" @@ -4483,7 +4594,7 @@ "@opentelemetry/instrumentation-koa@^0.35.0": version "0.35.0" - resolved "https://registry.yarnpkg.com/@opentelemetry/instrumentation-koa/-/instrumentation-koa-0.35.0.tgz#499ff61accd398e2444c0e52f008be88eec8fb33" + resolved "https://registry.npmjs.org/@opentelemetry/instrumentation-koa/-/instrumentation-koa-0.35.0.tgz" integrity sha512-Q/KclXdHKE3sGlalxxX43lx4b8eY5lv5LSdG3mY8aBsrmw1Mx6Cv4VAeqA4ecCygeapTmf9jjOLmgro15IJ3AQ== dependencies: "@opentelemetry/core" "^1.8.0" @@ -4495,14 +4606,14 @@ "@opentelemetry/instrumentation-lru-memoizer@^0.33.0": version "0.33.1" - resolved "https://registry.yarnpkg.com/@opentelemetry/instrumentation-lru-memoizer/-/instrumentation-lru-memoizer-0.33.1.tgz#636343165dfd83ed66d14abdc19f0e4c070cb1a3" + resolved "https://registry.npmjs.org/@opentelemetry/instrumentation-lru-memoizer/-/instrumentation-lru-memoizer-0.33.1.tgz" integrity sha512-1FFOlGTEigMWppEkv7o+IyeyWTXXpFAfmcFjJRph5m88RsotgzPLCnxaSeS0GMU7E8UJplusNmmsnu7jPJ2YqA== dependencies: "@opentelemetry/instrumentation" "^0.41.2" "@opentelemetry/instrumentation-memcached@^0.32.0": version "0.32.1" - resolved "https://registry.yarnpkg.com/@opentelemetry/instrumentation-memcached/-/instrumentation-memcached-0.32.1.tgz#7b21aa22d90d37f353d6cc2220c98390227f5396" + resolved "https://registry.npmjs.org/@opentelemetry/instrumentation-memcached/-/instrumentation-memcached-0.32.1.tgz" integrity sha512-laolY41/k6KHYnBQrWpnMlEK49/g8/OQBtvSiPdHiF46wW3eWpXmaTGMRksrRGUtyE+VMRhf7WIDRUYLZULP1g== dependencies: "@opentelemetry/instrumentation" "^0.41.2" @@ -4511,7 +4622,7 @@ "@opentelemetry/instrumentation-mongodb@^0.36.0": version "0.36.1" - resolved "https://registry.yarnpkg.com/@opentelemetry/instrumentation-mongodb/-/instrumentation-mongodb-0.36.1.tgz#a92e48f2cb4e2e2de430d900c96e21911709e137" + resolved "https://registry.npmjs.org/@opentelemetry/instrumentation-mongodb/-/instrumentation-mongodb-0.36.1.tgz" integrity sha512-//FdYXGcUO08Y1tVPXlcEvUYCnRU8tlBgYBe3ZMjF7E1GMaFti4Xy6sAHVreyl0ZQjBTaGtHdyORHIOTKUM4ZA== dependencies: "@opentelemetry/instrumentation" "^0.41.2" @@ -4520,7 +4631,7 @@ "@opentelemetry/instrumentation-mongoose@^0.33.0": version "0.33.1" - resolved "https://registry.yarnpkg.com/@opentelemetry/instrumentation-mongoose/-/instrumentation-mongoose-0.33.1.tgz#0e37eed215fb7fbf8adc0e70199bb8992cb1ea21" + resolved "https://registry.npmjs.org/@opentelemetry/instrumentation-mongoose/-/instrumentation-mongoose-0.33.1.tgz" integrity sha512-IzYcEZSmlaOlkyACt8gTl0z3eEQafxzEAt/+W+FdNBiUdm81qpVx/1bpzJwSgIsgcLf27Dl5WsPmrSAi4+Bcng== dependencies: "@opentelemetry/core" "^1.8.0" @@ -4529,7 +4640,7 @@ "@opentelemetry/instrumentation-mysql2@^0.34.0": version "0.34.1" - resolved "https://registry.yarnpkg.com/@opentelemetry/instrumentation-mysql2/-/instrumentation-mysql2-0.34.1.tgz#d7ce741a7d9a7da270fa791e1c64d8cedd58b5b7" + resolved "https://registry.npmjs.org/@opentelemetry/instrumentation-mysql2/-/instrumentation-mysql2-0.34.1.tgz" integrity sha512-SPwgLI2H+gH+GP7b5cWQlFqO/7UeHvw6ZzFKxwLr4vy8wmxYF4aBMLc8qVO8bdXFHd114v0IzOIAvpG6sl/zYQ== dependencies: "@opentelemetry/instrumentation" "^0.41.2" @@ -4538,7 +4649,7 @@ "@opentelemetry/instrumentation-mysql@^0.34.0": version "0.34.1" - resolved "https://registry.yarnpkg.com/@opentelemetry/instrumentation-mysql/-/instrumentation-mysql-0.34.1.tgz#9703d21615dd5ee6b9eda1d74029ba75eec46c9a" + resolved "https://registry.npmjs.org/@opentelemetry/instrumentation-mysql/-/instrumentation-mysql-0.34.1.tgz" integrity sha512-zQq7hN3ILm1vIJCGeKHRc4pTK8LOmkTt8oKWf0v+whFs7axieIhXZMoCqIBm6BigLy3Trg5iaKyuSrx7kO6q2g== dependencies: "@opentelemetry/instrumentation" "^0.41.2" @@ -4547,7 +4658,7 @@ "@opentelemetry/instrumentation-nestjs-core@^0.33.0": version "0.33.1" - resolved "https://registry.yarnpkg.com/@opentelemetry/instrumentation-nestjs-core/-/instrumentation-nestjs-core-0.33.1.tgz#a6e0175bcda25e455339a5527268e746be969297" + resolved "https://registry.npmjs.org/@opentelemetry/instrumentation-nestjs-core/-/instrumentation-nestjs-core-0.33.1.tgz" integrity sha512-Y5Khvp8ODA6TuDcZKAc63cYDeeZAA/n0ceF0pcVCJwA2NBeD0hmTrCJXES2cvt7wVbHV/SYCu7OpYDQkNjbBWw== dependencies: "@opentelemetry/instrumentation" "^0.41.2" @@ -4555,7 +4666,7 @@ "@opentelemetry/instrumentation-net@^0.32.0": version "0.32.1" - resolved "https://registry.yarnpkg.com/@opentelemetry/instrumentation-net/-/instrumentation-net-0.32.1.tgz#7b394b5250f160b46f2363d37c1ebe7c8c1ac6b7" + resolved "https://registry.npmjs.org/@opentelemetry/instrumentation-net/-/instrumentation-net-0.32.1.tgz" integrity sha512-r9YC8fFDi+B/JiNfMn+vJaOpgdA83bQM3u4mW9mJi2hAI/LcvjJYPx4aTRLWAPSd/HRG/Olzdvx5LdWvzL8LHg== dependencies: "@opentelemetry/instrumentation" "^0.41.2" @@ -4563,7 +4674,7 @@ "@opentelemetry/instrumentation-pg@^0.36.0": version "0.36.1" - resolved "https://registry.yarnpkg.com/@opentelemetry/instrumentation-pg/-/instrumentation-pg-0.36.1.tgz#66e3aa10948c6e3188d04676dbf304ae8571ce2f" + resolved "https://registry.npmjs.org/@opentelemetry/instrumentation-pg/-/instrumentation-pg-0.36.1.tgz" integrity sha512-k8L7RSRTQ6e+DbHEXZB8Tmf/efkQnWKeClpZb3TEdb34Pvme4PmcpG2zb6JtM99nNrshNlVDLCZ90U3xDneTbw== dependencies: "@opentelemetry/core" "^1.8.0" @@ -4575,14 +4686,14 @@ "@opentelemetry/instrumentation-pino@^0.34.0": version "0.34.1" - resolved "https://registry.yarnpkg.com/@opentelemetry/instrumentation-pino/-/instrumentation-pino-0.34.1.tgz#7567d2e2298536229f5a72c6c222b79b3b6689c7" + resolved "https://registry.npmjs.org/@opentelemetry/instrumentation-pino/-/instrumentation-pino-0.34.1.tgz" integrity sha512-/FW/wxTshwwmiSE8KgVoWvfjxz5omKBdDbP0McKZk84V02lwwJk0m7+kc2cSOed5rk7iprpZolwO8a8AFVanNA== dependencies: "@opentelemetry/instrumentation" "^0.41.2" "@opentelemetry/instrumentation-redis-4@^0.35.0": version "0.35.1" - resolved "https://registry.yarnpkg.com/@opentelemetry/instrumentation-redis-4/-/instrumentation-redis-4-0.35.1.tgz#40ae092c04ef9f92148197f8b3fe9eef4657123e" + resolved "https://registry.npmjs.org/@opentelemetry/instrumentation-redis-4/-/instrumentation-redis-4-0.35.1.tgz" integrity sha512-tQ07wvtjUbHSvvhPPvWyZjYTSzVBTpC746ro5szLnniodvxtKkmP/N+R9KyFXfyH7wwaLIR1Scgq3XSGSppt+Q== dependencies: "@opentelemetry/instrumentation" "^0.41.2" @@ -4591,7 +4702,7 @@ "@opentelemetry/instrumentation-redis@^0.35.0": version "0.35.1" - resolved "https://registry.yarnpkg.com/@opentelemetry/instrumentation-redis/-/instrumentation-redis-0.35.1.tgz#d821e8d0e9470c9ab144aa45292ec7991dca6bb1" + resolved "https://registry.npmjs.org/@opentelemetry/instrumentation-redis/-/instrumentation-redis-0.35.1.tgz" integrity sha512-zY7eTzGyJCMX/0o04Q9yLy7gllf7Zh4s+g7Kv1d2cMLtTt9zGSlncqj49uNCnneywnpMNRUIwcmd+Ch1bQeh+g== dependencies: "@opentelemetry/instrumentation" "^0.41.2" @@ -4600,7 +4711,7 @@ "@opentelemetry/instrumentation-restify@^0.33.0": version "0.33.0" - resolved "https://registry.yarnpkg.com/@opentelemetry/instrumentation-restify/-/instrumentation-restify-0.33.0.tgz#4f7fbcda93e428052c07d6edc05c192e868917be" + resolved "https://registry.npmjs.org/@opentelemetry/instrumentation-restify/-/instrumentation-restify-0.33.0.tgz" integrity sha512-evDjcF6M9G+KH/GCjtUx9Vnm/CBZ9CBfmm/RP6Aeo20y6Kset1ZEoPK79JT7JK1sCPqViBPoj4qnFePz9/20lg== dependencies: "@opentelemetry/core" "^1.8.0" @@ -4610,7 +4721,7 @@ "@opentelemetry/instrumentation-router@^0.33.0": version "0.33.1" - resolved "https://registry.yarnpkg.com/@opentelemetry/instrumentation-router/-/instrumentation-router-0.33.1.tgz#ec37e7470675a442e48c2e9e4753f595951c16d8" + resolved "https://registry.npmjs.org/@opentelemetry/instrumentation-router/-/instrumentation-router-0.33.1.tgz" integrity sha512-nz8PvjYMQWFgR17Yc5Sj624CamhXP021mWaWfHx6RhI6o67sPt+DT5468yZJZV1gMnaOSQfiBkjWZ7AGQkRutw== dependencies: "@opentelemetry/instrumentation" "^0.41.2" @@ -4618,7 +4729,7 @@ "@opentelemetry/instrumentation-socket.io@^0.34.0": version "0.34.1" - resolved "https://registry.yarnpkg.com/@opentelemetry/instrumentation-socket.io/-/instrumentation-socket.io-0.34.1.tgz#ac5814f8a805a550c9e63e5f7f9ac4186ec8d579" + resolved "https://registry.npmjs.org/@opentelemetry/instrumentation-socket.io/-/instrumentation-socket.io-0.34.1.tgz" integrity sha512-v9US0hXJaY7dkKOC2/CMLB526wn9F3CQrkeVUidvSm+AxFBoYXKdAUJijdBPWT4PKY98/VjFHuZ3HSe4QD8zPA== dependencies: "@opentelemetry/instrumentation" "^0.41.2" @@ -4626,7 +4737,7 @@ "@opentelemetry/instrumentation-tedious@^0.6.0": version "0.6.1" - resolved "https://registry.yarnpkg.com/@opentelemetry/instrumentation-tedious/-/instrumentation-tedious-0.6.1.tgz#2b488581161839c19ef0641d0afdc9fa6cc8210b" + resolved "https://registry.npmjs.org/@opentelemetry/instrumentation-tedious/-/instrumentation-tedious-0.6.1.tgz" integrity sha512-zwgLKmWtAn0XsMb98aMaI7gCawzPqpy+LOgGTlYmUdqSVYnzMAn4QKrx24Rrd5pgmzOEIbAWHlpN7pOc1eIqxA== dependencies: "@opentelemetry/instrumentation" "^0.41.2" @@ -4635,14 +4746,14 @@ "@opentelemetry/instrumentation-winston@^0.32.0": version "0.32.1" - resolved "https://registry.yarnpkg.com/@opentelemetry/instrumentation-winston/-/instrumentation-winston-0.32.1.tgz#0548543151ac7505cffc64c0019ca3d5bdda5638" + resolved "https://registry.npmjs.org/@opentelemetry/instrumentation-winston/-/instrumentation-winston-0.32.1.tgz" integrity sha512-wgXb2W2cbNdRQfXTH0jcnfbhlVPapmu13Wqhedj2pMpXS2aBnWAdvNFlArS6q84MEhzv3A4fVevjbwXa4uCzwQ== dependencies: "@opentelemetry/instrumentation" "^0.41.2" "@opentelemetry/instrumentation@0.41.2", "@opentelemetry/instrumentation@^0.41.0", "@opentelemetry/instrumentation@^0.41.2": version "0.41.2" - resolved "https://registry.yarnpkg.com/@opentelemetry/instrumentation/-/instrumentation-0.41.2.tgz#cae11fa64485dcf03dae331f35b315b64bc6189f" + resolved "https://registry.npmjs.org/@opentelemetry/instrumentation/-/instrumentation-0.41.2.tgz" integrity sha512-rxU72E0pKNH6ae2w5+xgVYZLzc5mlxAbGzF4shxMVK8YC2QQsfN38B2GPbj0jvrKWWNUElfclQ+YTykkNg/grw== dependencies: "@types/shimmer" "^1.0.2" @@ -4653,14 +4764,14 @@ "@opentelemetry/otlp-exporter-base@0.41.2": version "0.41.2" - resolved "https://registry.yarnpkg.com/@opentelemetry/otlp-exporter-base/-/otlp-exporter-base-0.41.2.tgz#5928dfedb2a70117f03809862cf2cbdf8b7f9bf3" + resolved "https://registry.npmjs.org/@opentelemetry/otlp-exporter-base/-/otlp-exporter-base-0.41.2.tgz" integrity sha512-pfwa6d+Dax3itZcGWiA0AoXeVaCuZbbqUTsCtOysd2re8C2PWXNxDONUfBWsn+KgxAdi+ljwTjJGiaVLDaIEvQ== dependencies: "@opentelemetry/core" "1.15.2" "@opentelemetry/otlp-grpc-exporter-base@0.41.2": version "0.41.2" - resolved "https://registry.yarnpkg.com/@opentelemetry/otlp-grpc-exporter-base/-/otlp-grpc-exporter-base-0.41.2.tgz#b056915aa274947517ac86b0c78533db274404e8" + resolved "https://registry.npmjs.org/@opentelemetry/otlp-grpc-exporter-base/-/otlp-grpc-exporter-base-0.41.2.tgz" integrity sha512-OErK8dYjXG01XIMIpmOV2SzL9ctkZ0Nyhf2UumICOAKtgLvR5dG1JMlsNVp8Jn0RzpsKc6Urv7JpP69wzRXN+A== dependencies: "@grpc/grpc-js" "^1.7.1" @@ -4670,7 +4781,7 @@ "@opentelemetry/otlp-proto-exporter-base@0.41.2": version "0.41.2" - resolved "https://registry.yarnpkg.com/@opentelemetry/otlp-proto-exporter-base/-/otlp-proto-exporter-base-0.41.2.tgz#10b1a4bb973bd6e0e741931d90f22387c5a3a151" + resolved "https://registry.npmjs.org/@opentelemetry/otlp-proto-exporter-base/-/otlp-proto-exporter-base-0.41.2.tgz" integrity sha512-BxmEMiP6tHiFroe5/dTt9BsxCci7BTLtF7A6d4DKHLiLweWWZxQ9l7hON7qt/IhpKrQcAFD1OzZ1Gq2ZkNzhCw== dependencies: "@opentelemetry/core" "1.15.2" @@ -4679,7 +4790,7 @@ "@opentelemetry/otlp-transformer@0.41.2": version "0.41.2" - resolved "https://registry.yarnpkg.com/@opentelemetry/otlp-transformer/-/otlp-transformer-0.41.2.tgz#cd3a7185ef77fe9b7b4c2d2f9e001fa1d2fa6cf8" + resolved "https://registry.npmjs.org/@opentelemetry/otlp-transformer/-/otlp-transformer-0.41.2.tgz" integrity sha512-jJbPwB0tNu2v+Xi0c/v/R3YBLJKLonw1p+v3RVjT2VfzeUyzSp/tBeVdY7RZtL6dzZpA9XSmp8UEfWIFQo33yA== dependencies: "@opentelemetry/api-logs" "0.41.2" @@ -4691,43 +4802,43 @@ "@opentelemetry/propagation-utils@^0.30.0": version "0.30.1" - resolved "https://registry.yarnpkg.com/@opentelemetry/propagation-utils/-/propagation-utils-0.30.1.tgz#2fbb48cec2c118d14e5814258990973fca5e2860" + resolved "https://registry.npmjs.org/@opentelemetry/propagation-utils/-/propagation-utils-0.30.1.tgz" integrity sha512-GCZg19gBSOTCeHvSCVy08WUyKAp2LyIRcRQPZk8MMAbmz8JWha3huBS9tNXjB4hYwRqW2SJOZzoYjt2P/BxvEw== "@opentelemetry/propagator-aws-xray@^1.3.0": version "1.3.1" - resolved "https://registry.yarnpkg.com/@opentelemetry/propagator-aws-xray/-/propagator-aws-xray-1.3.1.tgz#7fc77a95fe89c705442b0e5a4218422c2954cc07" + resolved "https://registry.npmjs.org/@opentelemetry/propagator-aws-xray/-/propagator-aws-xray-1.3.1.tgz" integrity sha512-6fDMzFlt5r6VWv7MUd0eOpglXPFqykW8CnOuUxJ1VZyLy6mV1bzBlzpsqEmhx1bjvZYvH93vhGkQZqrm95mlrQ== dependencies: "@opentelemetry/core" "^1.0.0" "@opentelemetry/propagator-b3@1.15.2": version "1.15.2" - resolved "https://registry.yarnpkg.com/@opentelemetry/propagator-b3/-/propagator-b3-1.15.2.tgz#7bcb9fa645042a440922669fbac06a1a91e6704b" + resolved "https://registry.npmjs.org/@opentelemetry/propagator-b3/-/propagator-b3-1.15.2.tgz" integrity sha512-ZSrL3DpMEDsjD8dPt9Ze3ue53nEXJt512KyxXlLgLWnSNbe1mrWaXWkh7OLDoVJh9LqFw+tlvAhDVt/x3DaFGg== dependencies: "@opentelemetry/core" "1.15.2" "@opentelemetry/propagator-jaeger@1.15.2": version "1.15.2" - resolved "https://registry.yarnpkg.com/@opentelemetry/propagator-jaeger/-/propagator-jaeger-1.15.2.tgz#90757fc9529da806a1845f502acb6d0eb821e3db" + resolved "https://registry.npmjs.org/@opentelemetry/propagator-jaeger/-/propagator-jaeger-1.15.2.tgz" integrity sha512-6m1yu7PVDIRz6BwA36lacfBZJCfAEHKgu+kSyukNwVdVjsTNeyD9xNPQnkl0WN7Rvhk8/yWJ83tLPEyGhk1wCQ== dependencies: "@opentelemetry/core" "1.15.2" "@opentelemetry/propagator-ot-trace@^0.27.0": version "0.27.1" - resolved "https://registry.yarnpkg.com/@opentelemetry/propagator-ot-trace/-/propagator-ot-trace-0.27.1.tgz#6718aefd6d0401726e2232fd7ad84515f2b34ca9" + resolved "https://registry.npmjs.org/@opentelemetry/propagator-ot-trace/-/propagator-ot-trace-0.27.1.tgz" integrity sha512-+Aeht0+1kv/7KAYxNVQFDczEgMQIhi+yO/QNBTxEUGWEQshxznqT2Knqd5nARY8IF3okFdkP4PJUFubYfjWSzw== "@opentelemetry/redis-common@^0.36.1": version "0.36.1" - resolved "https://registry.yarnpkg.com/@opentelemetry/redis-common/-/redis-common-0.36.1.tgz#79bca902603dd27862223a751be0f4bb0be54c2b" + resolved "https://registry.npmjs.org/@opentelemetry/redis-common/-/redis-common-0.36.1.tgz" integrity sha512-YjfNEr7DK1Ymc5H0bzhmqVvMcCs+PUEUerzrpTFdHfZxj3HpnnjZTIFKx/gxiL/sajQ8dxycjlreoYTVYKBXlw== "@opentelemetry/resource-detector-alibaba-cloud@^0.28.0": version "0.28.1" - resolved "https://registry.yarnpkg.com/@opentelemetry/resource-detector-alibaba-cloud/-/resource-detector-alibaba-cloud-0.28.1.tgz#f65bfc25d0f26d55bce33a8caa788274353445cf" + resolved "https://registry.npmjs.org/@opentelemetry/resource-detector-alibaba-cloud/-/resource-detector-alibaba-cloud-0.28.1.tgz" integrity sha512-0ucRgwid6bSAgYL5fiTkLh7aS9cPyz+Ijyv961SZbpMeIgVBvU931676xrdGNqlmuxavt24BrNUUWZ4XKq8ViA== dependencies: "@opentelemetry/resources" "^1.0.0" @@ -4735,7 +4846,7 @@ "@opentelemetry/resource-detector-aws@^1.3.0": version "1.3.1" - resolved "https://registry.yarnpkg.com/@opentelemetry/resource-detector-aws/-/resource-detector-aws-1.3.1.tgz#4d221859c19b0e4e604ac88224129e82a78ec8b6" + resolved "https://registry.npmjs.org/@opentelemetry/resource-detector-aws/-/resource-detector-aws-1.3.1.tgz" integrity sha512-1n3U0ns0xlA8EIOMY1oEP5+5rZE/nfhIld6nw8T8PK4PkS3kAQb1ZCj3RXajs3qA+qWWIaEvCNREx3A0Ifyt3Q== dependencies: "@opentelemetry/core" "^1.0.0" @@ -4744,7 +4855,7 @@ "@opentelemetry/resource-detector-container@^0.3.0": version "0.3.1" - resolved "https://registry.yarnpkg.com/@opentelemetry/resource-detector-container/-/resource-detector-container-0.3.1.tgz#7b59f5c9d2062db78f3dd2e2c59adbfafdd7d5a9" + resolved "https://registry.npmjs.org/@opentelemetry/resource-detector-container/-/resource-detector-container-0.3.1.tgz" integrity sha512-7zQASISRLmsaCKurvaoi7kTa0ab4iQEvPVfRo4k5RLSVi4puaCcC+2qOd6Fk4jEqNueevhyn2upGUeH+0EJ6yQ== dependencies: "@opentelemetry/resources" "^1.0.0" @@ -4752,7 +4863,7 @@ "@opentelemetry/resource-detector-gcp@^0.29.0": version "0.29.1" - resolved "https://registry.yarnpkg.com/@opentelemetry/resource-detector-gcp/-/resource-detector-gcp-0.29.1.tgz#eef9a08fbac816f3906a327be508e77f23a15a90" + resolved "https://registry.npmjs.org/@opentelemetry/resource-detector-gcp/-/resource-detector-gcp-0.29.1.tgz" integrity sha512-u5mB53I49m0cXQ97dgZlgEnNin9xqwl9au2sXmblHG9XS6PocGoAgAiXGYYvITWhR3ID5Ei2GyGoJDFdAtCrVA== dependencies: "@opentelemetry/core" "^1.0.0" @@ -4762,32 +4873,49 @@ "@opentelemetry/resources@1.15.2", "@opentelemetry/resources@^1.0.0", "@opentelemetry/resources@^1.12.0", "@opentelemetry/resources@^1.8.0": version "1.15.2" - resolved "https://registry.yarnpkg.com/@opentelemetry/resources/-/resources-1.15.2.tgz#0c9e26cb65652a1402834a3c030cce6028d6dd9d" + resolved "https://registry.npmjs.org/@opentelemetry/resources/-/resources-1.15.2.tgz" integrity sha512-xmMRLenT9CXmm5HMbzpZ1hWhaUowQf8UB4jMjFlAxx1QzQcsD3KFNAVX/CAWzFPtllTyTplrA4JrQ7sCH3qmYw== dependencies: "@opentelemetry/core" "1.15.2" "@opentelemetry/semantic-conventions" "1.15.2" +"@opentelemetry/resources@1.17.0": + version "1.17.0" + resolved "https://registry.npmjs.org/@opentelemetry/resources/-/resources-1.17.0.tgz" + integrity sha512-+u0ciVnj8lhuL/qGRBPeVYvk7fL+H/vOddfvmOeJaA1KC+5/3UED1c9KoZQlRsNT5Kw1FaK8LkY2NVLYfOVZQw== + dependencies: + "@opentelemetry/core" "1.17.0" + "@opentelemetry/semantic-conventions" "1.17.0" + "@opentelemetry/sdk-logs@0.41.2": version "0.41.2" - resolved "https://registry.yarnpkg.com/@opentelemetry/sdk-logs/-/sdk-logs-0.41.2.tgz#c3eeb6793bdfa52351d66e2e66637e433abed672" + resolved "https://registry.npmjs.org/@opentelemetry/sdk-logs/-/sdk-logs-0.41.2.tgz" integrity sha512-smqKIw0tTW15waj7BAPHFomii5c3aHnSE4LQYTszGoK5P9nZs8tEAIpu15UBxi3aG31ZfsLmm4EUQkjckdlFrw== dependencies: "@opentelemetry/core" "1.15.2" "@opentelemetry/resources" "1.15.2" -"@opentelemetry/sdk-metrics@1.15.2", "@opentelemetry/sdk-metrics@^1.15.1", "@opentelemetry/sdk-metrics@^1.15.2", "@opentelemetry/sdk-metrics@^1.9.1": +"@opentelemetry/sdk-metrics@1.15.2", "@opentelemetry/sdk-metrics@^1.15.1", "@opentelemetry/sdk-metrics@^1.9.1": version "1.15.2" - resolved "https://registry.yarnpkg.com/@opentelemetry/sdk-metrics/-/sdk-metrics-1.15.2.tgz#eadd0a049de9cd860e1e0d49eea01156469c4b60" + resolved "https://registry.npmjs.org/@opentelemetry/sdk-metrics/-/sdk-metrics-1.15.2.tgz" integrity sha512-9aIlcX8GnhcsAHW/Wl8bzk4ZnWTpNlLtud+fxUfBtFATu6OZ6TrGrF4JkT9EVrnoxwtPIDtjHdEsSjOqisY/iA== dependencies: "@opentelemetry/core" "1.15.2" "@opentelemetry/resources" "1.15.2" lodash.merge "^4.6.2" +"@opentelemetry/sdk-metrics@^1.15.2": + version "1.17.0" + resolved "https://registry.npmjs.org/@opentelemetry/sdk-metrics/-/sdk-metrics-1.17.0.tgz" + integrity sha512-HlWM27yGmYuwCoVRe3yg2PqKnIsq0kEF0HQgvkeDWz2NYkq9fFaSspR6kvjxUTbghAlZrabiqbgyKoYpYaXS3w== + dependencies: + "@opentelemetry/core" "1.17.0" + "@opentelemetry/resources" "1.17.0" + lodash.merge "^4.6.2" + "@opentelemetry/sdk-node@^0.41.0", "@opentelemetry/sdk-node@^0.41.1", "@opentelemetry/sdk-node@^0.41.2": version "0.41.2" - resolved "https://registry.yarnpkg.com/@opentelemetry/sdk-node/-/sdk-node-0.41.2.tgz#7ac2fc149d371a9f17c2adba395a9aa257ed1bf4" + resolved "https://registry.npmjs.org/@opentelemetry/sdk-node/-/sdk-node-0.41.2.tgz" integrity sha512-t3vaB5ajoXLtVFoL8TSoSgaVATmOyUfkIfBE4nvykm0dM2vQjMS/SUUelzR06eiPTbMPsr2UkevWhy2/oXy2vg== dependencies: "@opentelemetry/api-logs" "0.41.2" @@ -4807,16 +4935,25 @@ "@opentelemetry/sdk-trace-base@1.15.2": version "1.15.2" - resolved "https://registry.yarnpkg.com/@opentelemetry/sdk-trace-base/-/sdk-trace-base-1.15.2.tgz#4821f94033c55a6c8bbd35ae387b715b6108517a" + resolved "https://registry.npmjs.org/@opentelemetry/sdk-trace-base/-/sdk-trace-base-1.15.2.tgz" integrity sha512-BEaxGZbWtvnSPchV98qqqqa96AOcb41pjgvhfzDij10tkBhIu9m0Jd6tZ1tJB5ZHfHbTffqYVYE0AOGobec/EQ== dependencies: "@opentelemetry/core" "1.15.2" "@opentelemetry/resources" "1.15.2" "@opentelemetry/semantic-conventions" "1.15.2" +"@opentelemetry/sdk-trace-base@1.17.0", "@opentelemetry/sdk-trace-base@^1.17.0": + version "1.17.0" + resolved "https://registry.npmjs.org/@opentelemetry/sdk-trace-base/-/sdk-trace-base-1.17.0.tgz" + integrity sha512-2T5HA1/1iE36Q9eg6D4zYlC4Y4GcycI1J6NsHPKZY9oWfAxWsoYnRlkPfUqyY5XVtocCo/xHpnJvGNHwzT70oQ== + dependencies: + "@opentelemetry/core" "1.17.0" + "@opentelemetry/resources" "1.17.0" + "@opentelemetry/semantic-conventions" "1.17.0" + "@opentelemetry/sdk-trace-node@1.15.2": version "1.15.2" - resolved "https://registry.yarnpkg.com/@opentelemetry/sdk-trace-node/-/sdk-trace-node-1.15.2.tgz#987c929597ca274995164508f57a15f682d9de2f" + resolved "https://registry.npmjs.org/@opentelemetry/sdk-trace-node/-/sdk-trace-node-1.15.2.tgz" integrity sha512-5deakfKLCbPpKJRCE2GPI8LBE2LezyvR17y3t37ZI3sbaeogtyxmBaFV+slmG9fN8OaIT+EUsm1QAT1+z59gbQ== dependencies: "@opentelemetry/context-async-hooks" "1.15.2" @@ -4826,40 +4963,54 @@ "@opentelemetry/sdk-trace-base" "1.15.2" semver "^7.5.1" -"@opentelemetry/sdk-trace-web@^1.15.1", "@opentelemetry/sdk-trace-web@^1.15.2": +"@opentelemetry/sdk-trace-web@^1.15.1": version "1.15.2" - resolved "https://registry.yarnpkg.com/@opentelemetry/sdk-trace-web/-/sdk-trace-web-1.15.2.tgz#1db22d0afbd07b1287e8a331e30862eb19b24e20" + resolved "https://registry.npmjs.org/@opentelemetry/sdk-trace-web/-/sdk-trace-web-1.15.2.tgz" integrity sha512-OjCrwtu4b+cAt540wyIr7d0lCA/cY9y42lmYDFUfJ8Ixj2bByIUJ4yyd9M7mXHpQHdiR/Kq2vzsgS14Uj+RU0Q== dependencies: "@opentelemetry/core" "1.15.2" "@opentelemetry/sdk-trace-base" "1.15.2" "@opentelemetry/semantic-conventions" "1.15.2" -"@opentelemetry/semantic-conventions@1.15.2", "@opentelemetry/semantic-conventions@^1.15.1", "@opentelemetry/semantic-conventions@^1.15.2": +"@opentelemetry/sdk-trace-web@^1.15.2": + version "1.17.0" + resolved "https://registry.npmjs.org/@opentelemetry/sdk-trace-web/-/sdk-trace-web-1.17.0.tgz" + integrity sha512-vvE0zcco5tuOi16PsG6QkLOfEuzGAdzSLQPQgzRa6OGOo6ZeCpQ2JP+1U5a0pliAhmWYpVsW9u8T0qAYrHh3Bw== + dependencies: + "@opentelemetry/core" "1.17.0" + "@opentelemetry/sdk-trace-base" "1.17.0" + "@opentelemetry/semantic-conventions" "1.17.0" + +"@opentelemetry/semantic-conventions@1.15.2", "@opentelemetry/semantic-conventions@^1.15.1": version "1.15.2" - resolved "https://registry.yarnpkg.com/@opentelemetry/semantic-conventions/-/semantic-conventions-1.15.2.tgz#3bafb5de3e20e841dff6cb3c66f4d6e9694c4241" + resolved "https://registry.npmjs.org/@opentelemetry/semantic-conventions/-/semantic-conventions-1.15.2.tgz" integrity sha512-CjbOKwk2s+3xPIMcd5UNYQzsf+v94RczbdNix9/kQh38WiQkM90sUOi3if8eyHFgiBjBjhwXrA7W3ydiSQP9mw== +"@opentelemetry/semantic-conventions@1.17.0", "@opentelemetry/semantic-conventions@^1.15.2": + version "1.17.0" + resolved "https://registry.npmjs.org/@opentelemetry/semantic-conventions/-/semantic-conventions-1.17.0.tgz" + integrity sha512-+fguCd2d8d2qruk0H0DsCEy2CTK3t0Tugg7MhZ/UQMvmewbZLNnJ6heSYyzIZWG5IPfAXzoj4f4F/qpM7l4VBA== + "@opentelemetry/semantic-conventions@^1.0.0": version "1.12.0" - resolved "https://registry.yarnpkg.com/@opentelemetry/semantic-conventions/-/semantic-conventions-1.12.0.tgz#19c959bdb900986e74939d4227e757aa16936b91" + resolved "https://registry.npmjs.org/@opentelemetry/semantic-conventions/-/semantic-conventions-1.12.0.tgz" integrity sha512-hO+bdeGOlJwqowUBoZF5LyP3ORUFOP1G0GRv8N45W/cztXbT2ZEXaAzfokRS9Xc9FWmYrDj32mF6SzH6wuoIyA== "@opentelemetry/semantic-conventions@~1.3.0": version "1.3.1" - resolved "https://registry.yarnpkg.com/@opentelemetry/semantic-conventions/-/semantic-conventions-1.3.1.tgz#ba07b864a3c955f061aa30ea3ef7f4ae4449794a" + resolved "https://registry.npmjs.org/@opentelemetry/semantic-conventions/-/semantic-conventions-1.3.1.tgz" integrity sha512-wU5J8rUoo32oSef/rFpOT1HIjLjAv3qIDHkw1QIhODV3OpAVHi5oVzlouozg9obUmZKtbZ0qUe/m7FP0y0yBzA== "@opentelemetry/sql-common@^0.40.0": version "0.40.0" - resolved "https://registry.yarnpkg.com/@opentelemetry/sql-common/-/sql-common-0.40.0.tgz#8cbed0722354d62997c3b9e1adf0e16257be6b15" + resolved "https://registry.npmjs.org/@opentelemetry/sql-common/-/sql-common-0.40.0.tgz" integrity sha512-vSqRJYUPJVjMFQpYkQS3ruexCPSZJ8esne3LazLwtCPaPRvzZ7WG3tX44RouAn7w4wMp8orKguBqtt+ng2UTnw== dependencies: "@opentelemetry/core" "^1.1.0" "@openzeppelin/upgrades@^2.8.0": version "2.8.0" - resolved "https://registry.yarnpkg.com/@openzeppelin/upgrades/-/upgrades-2.8.0.tgz#8086ab9c99d9f8dac7205030b0f9e7e4a280c4a3" + resolved "https://registry.npmjs.org/@openzeppelin/upgrades/-/upgrades-2.8.0.tgz" integrity sha512-LzjTQPeljPsgHDPdZyH9cMCbIHZILgd2cpNcYEkdsC2IylBYRHShlbEDXJV9snnqg9JWfzPiKIqyj3XVliwtqQ== dependencies: "@types/cbor" "^2.0.0" @@ -4880,12 +5031,12 @@ "@panva/asn1.js@^1.0.0": version "1.0.0" - resolved "https://registry.yarnpkg.com/@panva/asn1.js/-/asn1.js-1.0.0.tgz#dd55ae7b8129e02049f009408b97c61ccf9032f6" + resolved "https://registry.npmjs.org/@panva/asn1.js/-/asn1.js-1.0.0.tgz" integrity sha512-UdkG3mLEqXgnlKsWanWcgb6dOjUzJ+XC5f+aWw30qrtjxeNUSfKX1cd5FBzOaXQumoe9nIqeZUvrRJS03HCCtw== "@parcel/watcher@2.0.4": version "2.0.4" - resolved "https://registry.yarnpkg.com/@parcel/watcher/-/watcher-2.0.4.tgz#f300fef4cc38008ff4b8c29d92588eced3ce014b" + resolved "https://registry.npmjs.org/@parcel/watcher/-/watcher-2.0.4.tgz" integrity sha512-cTDi+FUDBIUOBKEtj+nhiJ71AZVlkAsQFuGQTun5tV9mwQBQgZvhCzG+URPQc8myeN32yRVZEfVAPCs1RW+Jvg== dependencies: node-addon-api "^3.2.1" @@ -4893,24 +5044,24 @@ "@pkgjs/parseargs@^0.11.0": version "0.11.0" - resolved "https://registry.yarnpkg.com/@pkgjs/parseargs/-/parseargs-0.11.0.tgz#a77ea742fab25775145434eb1d2328cf5013ac33" + resolved "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz" integrity sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg== "@pnpm/config.env-replace@^1.1.0": version "1.1.0" - resolved "https://registry.yarnpkg.com/@pnpm/config.env-replace/-/config.env-replace-1.1.0.tgz#ab29da53df41e8948a00f2433f085f54de8b3a4c" + resolved "https://registry.npmjs.org/@pnpm/config.env-replace/-/config.env-replace-1.1.0.tgz" integrity sha512-htyl8TWnKL7K/ESFa1oW2UB5lVDxuF5DpM7tBi6Hu2LNL3mWkIzNLG6N4zoCUP1lCKNxWy/3iu8mS8MvToGd6w== "@pnpm/network.ca-file@^1.0.1": version "1.0.2" - resolved "https://registry.yarnpkg.com/@pnpm/network.ca-file/-/network.ca-file-1.0.2.tgz#2ab05e09c1af0cdf2fcf5035bea1484e222f7983" + resolved "https://registry.npmjs.org/@pnpm/network.ca-file/-/network.ca-file-1.0.2.tgz" integrity sha512-YcPQ8a0jwYU9bTdJDpXjMi7Brhkr1mXsXrUJvjqM2mQDgkRiz8jFaQGOdaLxgjtUfQgZhKy/O3cG/YwmgKaxLA== dependencies: graceful-fs "4.2.10" "@pnpm/npm-conf@^2.1.0": version "2.2.2" - resolved "https://registry.yarnpkg.com/@pnpm/npm-conf/-/npm-conf-2.2.2.tgz#0058baf1c26cbb63a828f0193795401684ac86f0" + resolved "https://registry.npmjs.org/@pnpm/npm-conf/-/npm-conf-2.2.2.tgz" integrity sha512-UA91GwWPhFExt3IizW6bOeY/pQ0BkuNwKjk9iQW9KqxluGCrg4VenZ0/L+2Y0+ZOtme72EVvg6v0zo3AMQRCeA== dependencies: "@pnpm/config.env-replace" "^1.1.0" @@ -4919,27 +5070,27 @@ "@protobufjs/aspromise@^1.1.1", "@protobufjs/aspromise@^1.1.2": version "1.1.2" - resolved "https://registry.yarnpkg.com/@protobufjs/aspromise/-/aspromise-1.1.2.tgz#9b8b0cc663d669a7d8f6f5d0893a14d348f30fbf" + resolved "https://registry.npmjs.org/@protobufjs/aspromise/-/aspromise-1.1.2.tgz" integrity sha512-j+gKExEuLmKwvz3OgROXtrJ2UG2x8Ch2YZUxahh+s1F2HZ+wAceUNLkvy6zKCPVRkU++ZWQrdxsUeQXmcg4uoQ== "@protobufjs/base64@^1.1.2": version "1.1.2" - resolved "https://registry.yarnpkg.com/@protobufjs/base64/-/base64-1.1.2.tgz#4c85730e59b9a1f1f349047dbf24296034bb2735" + resolved "https://registry.npmjs.org/@protobufjs/base64/-/base64-1.1.2.tgz" integrity sha512-AZkcAA5vnN/v4PDqKyMR5lx7hZttPDgClv83E//FMNhR2TMcLUhfRUBHCmSl0oi9zMgDDqRUJkSxO3wm85+XLg== "@protobufjs/codegen@^2.0.4": version "2.0.4" - resolved "https://registry.yarnpkg.com/@protobufjs/codegen/-/codegen-2.0.4.tgz#7ef37f0d010fb028ad1ad59722e506d9262815cb" + resolved "https://registry.npmjs.org/@protobufjs/codegen/-/codegen-2.0.4.tgz" integrity sha512-YyFaikqM5sH0ziFZCN3xDC7zeGaB/d0IUb9CATugHWbd1FRFwWwt4ld4OYMPWu5a3Xe01mGAULCdqhMlPl29Jg== "@protobufjs/eventemitter@^1.1.0": version "1.1.0" - resolved "https://registry.yarnpkg.com/@protobufjs/eventemitter/-/eventemitter-1.1.0.tgz#355cbc98bafad5978f9ed095f397621f1d066b70" + resolved "https://registry.npmjs.org/@protobufjs/eventemitter/-/eventemitter-1.1.0.tgz" integrity sha512-j9ednRT81vYJ9OfVuXG6ERSTdEL1xVsNgqpkxMsbIabzSo3goCjDIveeGv5d03om39ML71RdmrGNjG5SReBP/Q== "@protobufjs/fetch@^1.1.0": version "1.1.0" - resolved "https://registry.yarnpkg.com/@protobufjs/fetch/-/fetch-1.1.0.tgz#ba99fb598614af65700c1619ff06d454b0d84c45" + resolved "https://registry.npmjs.org/@protobufjs/fetch/-/fetch-1.1.0.tgz" integrity sha512-lljVXpqXebpsijW71PZaCYeIcE5on1w5DlQy5WH6GLbFryLUrBD4932W/E2BSpfRJWseIL4v/KPgBFxDOIdKpQ== dependencies: "@protobufjs/aspromise" "^1.1.1" @@ -4947,32 +5098,32 @@ "@protobufjs/float@^1.0.2": version "1.0.2" - resolved "https://registry.yarnpkg.com/@protobufjs/float/-/float-1.0.2.tgz#5e9e1abdcb73fc0a7cb8b291df78c8cbd97b87d1" + resolved "https://registry.npmjs.org/@protobufjs/float/-/float-1.0.2.tgz" integrity sha512-Ddb+kVXlXst9d+R9PfTIxh1EdNkgoRe5tOX6t01f1lYWOvJnSPDBlG241QLzcyPdoNTsblLUdujGSE4RzrTZGQ== "@protobufjs/inquire@^1.1.0": version "1.1.0" - resolved "https://registry.yarnpkg.com/@protobufjs/inquire/-/inquire-1.1.0.tgz#ff200e3e7cf2429e2dcafc1140828e8cc638f089" + resolved "https://registry.npmjs.org/@protobufjs/inquire/-/inquire-1.1.0.tgz" integrity sha512-kdSefcPdruJiFMVSbn801t4vFK7KB/5gd2fYvrxhuJYg8ILrmn9SKSX2tZdV6V+ksulWqS7aXjBcRXl3wHoD9Q== "@protobufjs/path@^1.1.2": version "1.1.2" - resolved "https://registry.yarnpkg.com/@protobufjs/path/-/path-1.1.2.tgz#6cc2b20c5c9ad6ad0dccfd21ca7673d8d7fbf68d" + resolved "https://registry.npmjs.org/@protobufjs/path/-/path-1.1.2.tgz" integrity sha512-6JOcJ5Tm08dOHAbdR3GrvP+yUUfkjG5ePsHYczMFLq3ZmMkAD98cDgcT2iA1lJ9NVwFd4tH/iSSoe44YWkltEA== "@protobufjs/pool@^1.1.0": version "1.1.0" - resolved "https://registry.yarnpkg.com/@protobufjs/pool/-/pool-1.1.0.tgz#09fd15f2d6d3abfa9b65bc366506d6ad7846ff54" + resolved "https://registry.npmjs.org/@protobufjs/pool/-/pool-1.1.0.tgz" integrity sha512-0kELaGSIDBKvcgS4zkjz1PeddatrjYcmMWOlAuAPwAeccUrPHdUqo/J6LiymHHEiJT5NrF1UVwxY14f+fy4WQw== "@protobufjs/utf8@^1.1.0": version "1.1.0" - resolved "https://registry.yarnpkg.com/@protobufjs/utf8/-/utf8-1.1.0.tgz#a777360b5b39a1a2e5106f8e858f2fd2d060c570" + resolved "https://registry.npmjs.org/@protobufjs/utf8/-/utf8-1.1.0.tgz" integrity sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw== "@redux-saga/core@^1.0.0": version "1.2.3" - resolved "https://registry.yarnpkg.com/@redux-saga/core/-/core-1.2.3.tgz#882ed9ac58b5f42c6abb23349542315b871de305" + resolved "https://registry.npmjs.org/@redux-saga/core/-/core-1.2.3.tgz" integrity sha512-U1JO6ncFBAklFTwoQ3mjAeQZ6QGutsJzwNBjgVLSWDpZTRhobUzuVDS1qH3SKGJD8fvqoaYOjp6XJ3gCmeZWgA== dependencies: "@babel/runtime" "^7.6.3" @@ -4986,19 +5137,19 @@ "@redux-saga/deferred@^1.2.1": version "1.2.1" - resolved "https://registry.yarnpkg.com/@redux-saga/deferred/-/deferred-1.2.1.tgz#aca373a08ccafd6f3481037f2f7ee97f2c87c3ec" + resolved "https://registry.npmjs.org/@redux-saga/deferred/-/deferred-1.2.1.tgz" integrity sha512-cmin3IuuzMdfQjA0lG4B+jX+9HdTgHZZ+6u3jRAOwGUxy77GSlTi4Qp2d6PM1PUoTmQUR5aijlA39scWWPF31g== "@redux-saga/delay-p@^1.2.1": version "1.2.1" - resolved "https://registry.yarnpkg.com/@redux-saga/delay-p/-/delay-p-1.2.1.tgz#e72ac4731c5080a21f75b61bedc31cb639d9e446" + resolved "https://registry.npmjs.org/@redux-saga/delay-p/-/delay-p-1.2.1.tgz" integrity sha512-MdiDxZdvb1m+Y0s4/hgdcAXntpUytr9g0hpcOO1XFVyyzkrDu3SKPgBFOtHn7lhu7n24ZKIAT1qtKyQjHqRd+w== dependencies: "@redux-saga/symbols" "^1.1.3" "@redux-saga/is@^1.1.3": version "1.1.3" - resolved "https://registry.yarnpkg.com/@redux-saga/is/-/is-1.1.3.tgz#b333f31967e87e32b4e6b02c75b78d609dd4ad73" + resolved "https://registry.npmjs.org/@redux-saga/is/-/is-1.1.3.tgz" integrity sha512-naXrkETG1jLRfVfhOx/ZdLj0EyAzHYbgJWkXbB3qFliPcHKiWbv/ULQryOAEKyjrhiclmr6AMdgsXFyx7/yE6Q== dependencies: "@redux-saga/symbols" "^1.1.3" @@ -5006,17 +5157,17 @@ "@redux-saga/symbols@^1.1.3": version "1.1.3" - resolved "https://registry.yarnpkg.com/@redux-saga/symbols/-/symbols-1.1.3.tgz#b731d56201719e96dc887dc3ae9016e761654367" + resolved "https://registry.npmjs.org/@redux-saga/symbols/-/symbols-1.1.3.tgz" integrity sha512-hCx6ZvU4QAEUojETnX8EVg4ubNLBFl1Lps4j2tX7o45x/2qg37m3c6v+kSp8xjDJY+2tJw4QB3j8o8dsl1FDXg== "@redux-saga/types@^1.2.1": version "1.2.1" - resolved "https://registry.yarnpkg.com/@redux-saga/types/-/types-1.2.1.tgz#9403f51c17cae37edf870c6bc0c81c1ece5ccef8" + resolved "https://registry.npmjs.org/@redux-saga/types/-/types-1.2.1.tgz" integrity sha512-1dgmkh+3so0+LlBWRhGA33ua4MYr7tUOj+a9Si28vUi0IUFNbff1T3sgpeDJI/LaC75bBYnQ0A3wXjn0OrRNBA== "@resolver-engine/core@^0.2.1": version "0.2.1" - resolved "https://registry.yarnpkg.com/@resolver-engine/core/-/core-0.2.1.tgz#0d71803f6d3b8cb2e9ed481a1bf0ca5f5256d0c0" + resolved "https://registry.npmjs.org/@resolver-engine/core/-/core-0.2.1.tgz" integrity sha512-nsLQHmPJ77QuifqsIvqjaF5B9aHnDzJjp73Q1z6apY3e9nqYrx4Dtowhpsf7Jwftg/XzVDEMQC+OzUBNTS+S1A== dependencies: debug "^3.1.0" @@ -5024,7 +5175,7 @@ "@resolver-engine/fs@^0.2.1": version "0.2.1" - resolved "https://registry.yarnpkg.com/@resolver-engine/fs/-/fs-0.2.1.tgz#f98a308d77568cc02651d03636f46536b941b241" + resolved "https://registry.npmjs.org/@resolver-engine/fs/-/fs-0.2.1.tgz" integrity sha512-7kJInM1Qo2LJcKyDhuYzh9ZWd+mal/fynfL9BNjWOiTcOpX+jNfqb/UmGUqros5pceBITlWGqS4lU709yHFUbg== dependencies: "@resolver-engine/core" "^0.2.1" @@ -5032,7 +5183,7 @@ "@resolver-engine/imports-fs@^0.2.2": version "0.2.2" - resolved "https://registry.yarnpkg.com/@resolver-engine/imports-fs/-/imports-fs-0.2.2.tgz#5a81ef3285dbf0411ab3b15205080a1ad7622d9e" + resolved "https://registry.npmjs.org/@resolver-engine/imports-fs/-/imports-fs-0.2.2.tgz" integrity sha512-gFCgMvCwyppjwq0UzIjde/WI+yDs3oatJhozG9xdjJdewwtd7LiF0T5i9lrHAUtqrQbqoFE4E+ZMRVHWpWHpKQ== dependencies: "@resolver-engine/fs" "^0.2.1" @@ -5041,7 +5192,7 @@ "@resolver-engine/imports@^0.2.2": version "0.2.2" - resolved "https://registry.yarnpkg.com/@resolver-engine/imports/-/imports-0.2.2.tgz#d3de55a1bb5f3beb7703fdde743298f321175843" + resolved "https://registry.npmjs.org/@resolver-engine/imports/-/imports-0.2.2.tgz" integrity sha512-u5/HUkvo8q34AA+hnxxqqXGfby5swnH0Myw91o3Sm2TETJlNKXibFGSKBavAH+wvWdBi4Z5gS2Odu0PowgVOUg== dependencies: "@resolver-engine/core" "^0.2.1" @@ -5050,12 +5201,12 @@ "@scure/base@~1.1.0": version "1.1.1" - resolved "https://registry.yarnpkg.com/@scure/base/-/base-1.1.1.tgz#ebb651ee52ff84f420097055f4bf46cfba403938" + resolved "https://registry.npmjs.org/@scure/base/-/base-1.1.1.tgz" integrity sha512-ZxOhsSyxYwLJj3pLZCefNitxsj093tb2vq90mp2txoYeBqbcjDjqFhyM8eUjq/uFm6zJ+mUuqxlS2FkuSY1MTA== "@scure/bip32@1.1.5": version "1.1.5" - resolved "https://registry.yarnpkg.com/@scure/bip32/-/bip32-1.1.5.tgz#d2ccae16dcc2e75bc1d75f5ef3c66a338d1ba300" + resolved "https://registry.npmjs.org/@scure/bip32/-/bip32-1.1.5.tgz" integrity sha512-XyNh1rB0SkEqd3tXcXMi+Xe1fvg+kUIcoRIEujP1Jgv7DqW2r9lg3Ah0NkFaCs9sTkQAQA8kw7xiRXzENi9Rtw== dependencies: "@noble/hashes" "~1.2.0" @@ -5073,7 +5224,7 @@ "@scure/bip32@1.3.1": version "1.3.1" - resolved "https://registry.yarnpkg.com/@scure/bip32/-/bip32-1.3.1.tgz#7248aea723667f98160f593d621c47e208ccbb10" + resolved "https://registry.npmjs.org/@scure/bip32/-/bip32-1.3.1.tgz" integrity sha512-osvveYtyzdEVbt3OfwwXFr4P2iVBL5u1Q3q4ONBfDY/UpOuXmOlbgwc1xECEboY8wIays8Yt6onaWMUdUbfl0A== dependencies: "@noble/curves" "~1.1.0" @@ -5082,7 +5233,7 @@ "@scure/bip39@1.1.1": version "1.1.1" - resolved "https://registry.yarnpkg.com/@scure/bip39/-/bip39-1.1.1.tgz#b54557b2e86214319405db819c4b6a370cf340c5" + resolved "https://registry.npmjs.org/@scure/bip39/-/bip39-1.1.1.tgz" integrity sha512-t+wDck2rVkh65Hmv280fYdVdY25J9YeEUIgn2LG1WM6gxFkGzcksoDiUkWVpVp3Oex9xGC68JU2dSbUfwZ2jPg== dependencies: "@noble/hashes" "~1.2.0" @@ -5098,7 +5249,7 @@ "@scure/bip39@1.2.1": version "1.2.1" - resolved "https://registry.yarnpkg.com/@scure/bip39/-/bip39-1.2.1.tgz#5cee8978656b272a917b7871c981e0541ad6ac2a" + resolved "https://registry.npmjs.org/@scure/bip39/-/bip39-1.2.1.tgz" integrity sha512-Z3/Fsz1yr904dduJD0NpiyRHhRYHdcnyh73FZWiV+/qhWi83wNJ3NWolYqCEN+ZWsUz2TWwajJggcRE9r1zUYg== dependencies: "@noble/hashes" "~1.3.0" @@ -5106,79 +5257,79 @@ "@sideway/address@^4.1.3": version "4.1.4" - resolved "https://registry.yarnpkg.com/@sideway/address/-/address-4.1.4.tgz#03dccebc6ea47fdc226f7d3d1ad512955d4783f0" + resolved "https://registry.npmjs.org/@sideway/address/-/address-4.1.4.tgz" integrity sha512-7vwq+rOHVWjyXxVlR76Agnvhy8I9rpzjosTESvmhNeXOXdZZB15Fl+TI9x1SiHZH5Jv2wTGduSxFDIaq0m3DUw== dependencies: "@hapi/hoek" "^9.0.0" "@sideway/formula@^3.0.1": version "3.0.1" - resolved "https://registry.yarnpkg.com/@sideway/formula/-/formula-3.0.1.tgz#80fcbcbaf7ce031e0ef2dd29b1bfc7c3f583611f" + resolved "https://registry.npmjs.org/@sideway/formula/-/formula-3.0.1.tgz" integrity sha512-/poHZJJVjx3L+zVD6g9KgHfYnb443oi7wLu/XKojDviHy6HOEOA6z1Trk5aR1dGcmPenJEgb2sK2I80LeS3MIg== "@sideway/pinpoint@^2.0.0": version "2.0.0" - resolved "https://registry.yarnpkg.com/@sideway/pinpoint/-/pinpoint-2.0.0.tgz#cff8ffadc372ad29fd3f78277aeb29e632cc70df" + resolved "https://registry.npmjs.org/@sideway/pinpoint/-/pinpoint-2.0.0.tgz" integrity sha512-RNiOoTPkptFtSVzQevY/yWtZwf/RxyVnPy/OcA9HBM3MlGDnBEYL5B41H0MTn0Uec8Hi+2qUtTfG2WWZBmMejQ== -"@sinclair/typebox@^0.25.16": - version "0.25.24" - resolved "https://registry.yarnpkg.com/@sinclair/typebox/-/typebox-0.25.24.tgz#8c7688559979f7079aacaf31aa881c3aa410b718" - integrity sha512-XJfwUVUKDHF5ugKwIcxEgc9k8b7HbznCp6eUfWgu710hMPNIO4aw4/zB5RogDQz8nd6gyCDpU9O/m6qYEWY6yQ== +"@sinclair/typebox@^0.27.8": + version "0.27.8" + resolved "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.27.8.tgz" + integrity sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA== "@sindresorhus/is@^0.14.0": version "0.14.0" - resolved "https://registry.yarnpkg.com/@sindresorhus/is/-/is-0.14.0.tgz#9fb3a3cf3132328151f353de4632e01e52102bea" + resolved "https://registry.npmjs.org/@sindresorhus/is/-/is-0.14.0.tgz" integrity sha512-9NET910DNaIPngYnLLPeg+Ogzqsi9uM4mSboU5y6p8S5DzMTVEsJZrawi+BoDNUVBa2DhJqQYUFvMDfgU062LQ== "@sindresorhus/is@^0.15.0": version "0.15.0" - resolved "https://registry.yarnpkg.com/@sindresorhus/is/-/is-0.15.0.tgz#96915baa05e6a6a1d137badf4984d3fc05820bb6" + resolved "https://registry.npmjs.org/@sindresorhus/is/-/is-0.15.0.tgz" integrity sha512-lu8BpxjAtRCAo5ifytTpCPCj99LF7o/2Myn+NXyNCBqvPYn7Pjd76AMmUB5l7XF1U6t0hcWrlEM5ESufW7wAeA== "@sindresorhus/is@^4.0.0", "@sindresorhus/is@^4.6.0": version "4.6.0" - resolved "https://registry.yarnpkg.com/@sindresorhus/is/-/is-4.6.0.tgz#3c7c9c46e678feefe7a2e5bb609d3dbd665ffb3f" + resolved "https://registry.npmjs.org/@sindresorhus/is/-/is-4.6.0.tgz" integrity sha512-t09vSN3MdfsyCHoFcTRCH/iUtG7OJ0CsjzB8cjAmKc/va/kIgeDI/TxsigdncE/4be734m0cvIYwNaV4i2XqAw== "@sinonjs/commons@^2.0.0": version "2.0.0" - resolved "https://registry.yarnpkg.com/@sinonjs/commons/-/commons-2.0.0.tgz#fd4ca5b063554307e8327b4564bd56d3b73924a3" + resolved "https://registry.npmjs.org/@sinonjs/commons/-/commons-2.0.0.tgz" integrity sha512-uLa0j859mMrg2slwQYdO/AkrOfmH+X6LTVmNTS9CqexuE2IvVORIkSpJLqePAbEnKJ77aMmCwr1NUZ57120Xcg== dependencies: type-detect "4.0.8" "@sinonjs/fake-timers@^10.0.2": version "10.0.2" - resolved "https://registry.yarnpkg.com/@sinonjs/fake-timers/-/fake-timers-10.0.2.tgz#d10549ed1f423d80639c528b6c7f5a1017747d0c" + resolved "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-10.0.2.tgz" integrity sha512-SwUDyjWnah1AaNl7kxsa7cfLhlTYoiyhDAIgyh+El30YvXs/o7OLXpYH88Zdhyx9JExKrmHDJ+10bwIcY80Jmw== dependencies: "@sinonjs/commons" "^2.0.0" "@solidity-parser/parser@^0.14.0", "@solidity-parser/parser@^0.14.1": version "0.14.5" - resolved "https://registry.yarnpkg.com/@solidity-parser/parser/-/parser-0.14.5.tgz#87bc3cc7b068e08195c219c91cd8ddff5ef1a804" + resolved "https://registry.npmjs.org/@solidity-parser/parser/-/parser-0.14.5.tgz" integrity sha512-6dKnHZn7fg/iQATVEzqyUOyEidbn05q7YA2mQ9hC0MMXhhV3/JrsxmFSYZAcr7j1yUP700LLhTruvJ3MiQmjJg== dependencies: antlr4ts "^0.5.0-alpha.4" "@solidity-parser/parser@^0.16.0": version "0.16.0" - resolved "https://registry.yarnpkg.com/@solidity-parser/parser/-/parser-0.16.0.tgz#1fb418c816ca1fc3a1e94b08bcfe623ec4e1add4" + resolved "https://registry.npmjs.org/@solidity-parser/parser/-/parser-0.16.0.tgz" integrity sha512-ESipEcHyRHg4Np4SqBCfcXwyxxna1DgFVz69bgpLV8vzl/NP1DtcKsJ4dJZXWQhY/Z4J2LeKBiOkOVZn9ct33Q== dependencies: antlr4ts "^0.5.0-alpha.4" "@stablelib/binary@^0.7.2": version "0.7.2" - resolved "https://registry.yarnpkg.com/@stablelib/binary/-/binary-0.7.2.tgz#1b3392170c8a8741c8b8f843ea294de71aeb2cf7" + resolved "https://registry.npmjs.org/@stablelib/binary/-/binary-0.7.2.tgz" integrity sha512-J7iGppeKR112ICTZTAoALcT3yBpTrd2Z/F0wwiOUZPVPTDFTQFWHZZdYzfal9+mY1uMUPRSEnNmDuXRZbtE8Xg== dependencies: "@stablelib/int" "^0.5.0" "@stablelib/blake2s@^0.10.4": version "0.10.4" - resolved "https://registry.yarnpkg.com/@stablelib/blake2s/-/blake2s-0.10.4.tgz#8a708f28a9c78d4a1a9fbcc6ce8bacbda469f302" + resolved "https://registry.npmjs.org/@stablelib/blake2s/-/blake2s-0.10.4.tgz" integrity sha512-IasdklC7YfXXLmVbnsxqmd66+Ki+Ysbp0BtcrNxAtrGx/HRGjkUZbSTbEa7HxFhBWIstJRcE5ExgY+RCqAiULQ== dependencies: "@stablelib/binary" "^0.7.2" @@ -5187,7 +5338,7 @@ "@stablelib/blake2xs@0.10.4": version "0.10.4" - resolved "https://registry.yarnpkg.com/@stablelib/blake2xs/-/blake2xs-0.10.4.tgz#b3ae9e145cbf924a7f598412b586e4af24d10cb7" + resolved "https://registry.npmjs.org/@stablelib/blake2xs/-/blake2xs-0.10.4.tgz" integrity sha512-1N0S4cruso/StV9TmoujPGj3RU0Cy42wlZneBWLWby7m2ssnY57l/CsYQSm03TshOoYss4hqc5kwSy5pmWAdUA== dependencies: "@stablelib/blake2s" "^0.10.4" @@ -5196,73 +5347,73 @@ "@stablelib/hash@^0.5.0": version "0.5.0" - resolved "https://registry.yarnpkg.com/@stablelib/hash/-/hash-0.5.0.tgz#89fe9040a3d4383b1921c7d8a60948bc30846068" + resolved "https://registry.npmjs.org/@stablelib/hash/-/hash-0.5.0.tgz" integrity sha512-rlNEBTskjKVl9f4rpRgM2GV3IrZWfNJFY5Y/2tmQtA2ozEkPLoUp9J/uJnBRnOpCsuflPW2z+pwqPbEYOPCHwQ== "@stablelib/int@^0.5.0": version "0.5.0" - resolved "https://registry.yarnpkg.com/@stablelib/int/-/int-0.5.0.tgz#cca9225951d55d2de48656755784788633660c2b" + resolved "https://registry.npmjs.org/@stablelib/int/-/int-0.5.0.tgz" integrity sha512-cuaPoxm3K14LiEICiA3iz0aeGurg75v+haZMV+xloVTw3CT25oMRJgQ6VxZ2p2cHy4kjhVI68kX4oaYrhnTm+g== "@stablelib/wipe@^0.5.0": version "0.5.0" - resolved "https://registry.yarnpkg.com/@stablelib/wipe/-/wipe-0.5.0.tgz#a682d5f9448e950e099e537e6f72fc960275d151" + resolved "https://registry.npmjs.org/@stablelib/wipe/-/wipe-0.5.0.tgz" integrity sha512-SifvRV0rTTFR1qEF6G1hondGZyrmiM1laR8PPrO6TZwQG03hJduVbUX8uQk+Q6FdkND2Z9B8uLPyUAquQIk3iA== "@summa-tx/memview.sol@^1.1.0": version "1.1.0" - resolved "https://registry.yarnpkg.com/@summa-tx/memview.sol/-/memview.sol-1.1.0.tgz#f54a09faef46ca52deb94e10d0daacd28efe5be6" + resolved "https://registry.npmjs.org/@summa-tx/memview.sol/-/memview.sol-1.1.0.tgz" integrity sha512-nLEfdC0ayn+PND5WWGalv+IyQ0NYomz43s1IJWDjawUh4JvW03LeP7ZjuMJPLdyJqYX3p8x1LwYt8Klde7cluw== "@szmarczak/http-timer@^1.1.2": version "1.1.2" - resolved "https://registry.yarnpkg.com/@szmarczak/http-timer/-/http-timer-1.1.2.tgz#b1665e2c461a2cd92f4c1bbf50d5454de0d4b421" + resolved "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-1.1.2.tgz" integrity sha512-XIB2XbzHTN6ieIjfIMV9hlVcfPU26s2vafYWQcZHWXHOxiaRZYEDKEwdl129Zyg50+foYV2jCgtrqSA6qNuNSA== dependencies: defer-to-connect "^1.0.1" "@szmarczak/http-timer@^4.0.5": version "4.0.6" - resolved "https://registry.yarnpkg.com/@szmarczak/http-timer/-/http-timer-4.0.6.tgz#b4a914bb62e7c272d4e5989fe4440f812ab1d807" + resolved "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-4.0.6.tgz" integrity sha512-4BAffykYOgO+5nzBWYwE3W90sBgLJoUPRWWcL8wlyiM8IB8ipJz3UMJ9KXQd1RKQXpKp8Tutn80HZtWsu2u76w== dependencies: defer-to-connect "^2.0.0" "@szmarczak/http-timer@^5.0.1": version "5.0.1" - resolved "https://registry.yarnpkg.com/@szmarczak/http-timer/-/http-timer-5.0.1.tgz#c7c1bf1141cdd4751b0399c8fc7b8b664cd5be3a" + resolved "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-5.0.1.tgz" integrity sha512-+PmQX0PiAYPMeVYe237LJAYvOMYW1j2rH5YROyS3b4CTVJum34HfRvKvAzozHAQG0TnHNdUfY9nCeUyRAs//cw== dependencies: defer-to-connect "^2.0.1" "@tootallnate/once@1": version "1.1.2" - resolved "https://registry.yarnpkg.com/@tootallnate/once/-/once-1.1.2.tgz#ccb91445360179a04e7fe6aff78c00ffc1eeaf82" + resolved "https://registry.npmjs.org/@tootallnate/once/-/once-1.1.2.tgz" integrity sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw== "@tootallnate/once@2": version "2.0.0" - resolved "https://registry.yarnpkg.com/@tootallnate/once/-/once-2.0.0.tgz#f544a148d3ab35801c1f633a7441fd87c2e484bf" + resolved "https://registry.npmjs.org/@tootallnate/once/-/once-2.0.0.tgz" integrity sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A== "@tootallnate/quickjs-emscripten@^0.23.0": version "0.23.0" - resolved "https://registry.yarnpkg.com/@tootallnate/quickjs-emscripten/-/quickjs-emscripten-0.23.0.tgz#db4ecfd499a9765ab24002c3b696d02e6d32a12c" + resolved "https://registry.npmjs.org/@tootallnate/quickjs-emscripten/-/quickjs-emscripten-0.23.0.tgz" integrity sha512-C5Mc6rdnsaJDjO3UpGW/CQTHtCKaYlScZTly4JIu97Jxo/odCiH0ITnDXSJPTOrEKk/ycSZ0AOgTmkDtkOsvIA== -"@truffle/abi-utils@^0.3.0", "@truffle/abi-utils@^0.3.9": - version "0.3.9" - resolved "https://registry.yarnpkg.com/@truffle/abi-utils/-/abi-utils-0.3.9.tgz#c476f5cfe01072b513b3e93fd7bea05cf7bd9d96" - integrity sha512-G5dqgwRHx5zwlXjz3QT8OJVfB2cOqWwD6DwKso0KttUt/zejhCjnkKq72rSgyeLMkz7wBB9ERLOsupLBILM8MA== +"@truffle/abi-utils@^0.3.0", "@truffle/abi-utils@^0.3.10", "@truffle/abi-utils@^0.3.9": + version "0.3.10" + resolved "https://registry.npmjs.org/@truffle/abi-utils/-/abi-utils-0.3.10.tgz" + integrity sha512-Q3TXsF0NIct3KFLL2giF/alfSoKf5axyw+4wQdDRlihFrG1nbTBzWq+Q0ya6oHffZDida0NSpnJIf5IhFMV+JQ== dependencies: change-case "3.0.2" fast-check "3.1.1" - web3-utils "1.8.2" + web3-utils "1.10.0" -"@truffle/abi-utils@^0.3.10": - version "0.3.10" - resolved "https://registry.yarnpkg.com/@truffle/abi-utils/-/abi-utils-0.3.10.tgz#693684d6cd3e86bd48ddbf615cd159156fac1605" - integrity sha512-Q3TXsF0NIct3KFLL2giF/alfSoKf5axyw+4wQdDRlihFrG1nbTBzWq+Q0ya6oHffZDida0NSpnJIf5IhFMV+JQ== +"@truffle/abi-utils@^1.0.3": + version "1.0.3" + resolved "https://registry.npmjs.org/@truffle/abi-utils/-/abi-utils-1.0.3.tgz" + integrity sha512-AWhs01HCShaVKjml7Z4AbVREr/u4oiWxCcoR7Cktm0mEvtT04pvnxW5xB/cI4znRkrbPdFQlFt67kgrAjesYkw== dependencies: change-case "3.0.2" fast-check "3.1.1" @@ -5270,7 +5421,7 @@ "@truffle/artifactor@4.0.180": version "4.0.180" - resolved "https://registry.yarnpkg.com/@truffle/artifactor/-/artifactor-4.0.180.tgz#5dded58d923d5c2e6442d09d4d3d3d9b10646c05" + resolved "https://registry.npmjs.org/@truffle/artifactor/-/artifactor-4.0.180.tgz" integrity sha512-XWY1w5KMYsYQ9XN+QbR5W95HXLKumxdi3so70SRUkmmEx9+vTlvhzJ/aeyCtuOzRO6WjdZ6pOaUxMNcW5BqQDg== dependencies: "@truffle/contract-schema" "^3.4.11" @@ -5279,28 +5430,33 @@ "@truffle/artifactor@^4.0.36": version "4.0.188" - resolved "https://registry.yarnpkg.com/@truffle/artifactor/-/artifactor-4.0.188.tgz#2197300fd61a4196f2be9599fc0bb82e5d0b1817" + resolved "https://registry.npmjs.org/@truffle/artifactor/-/artifactor-4.0.188.tgz" integrity sha512-PqSiLHLGyWhoRWt6dimXBM5JsEXvVY3KejSEw3g8X+QInyNTivwSpHQMdP+9avVWkRjX8OltRAbg5i3fzS1Suw== dependencies: "@truffle/contract-schema" "^3.4.13" fs-extra "^9.1.0" lodash "^4.17.21" -"@truffle/blockchain-utils@^0.1.6", "@truffle/blockchain-utils@^0.1.7": +"@truffle/blockchain-utils@^0.1.6": + version "0.1.9" + resolved "https://registry.npmjs.org/@truffle/blockchain-utils/-/blockchain-utils-0.1.9.tgz" + integrity sha512-RHfumgbIVo68Rv9ofDYfynjnYZIfP/f1vZy4RoqkfYAO+fqfc58PDRzB1WAGq2U6GPuOnipOJxQhnqNnffORZg== + +"@truffle/blockchain-utils@^0.1.7": version "0.1.7" - resolved "https://registry.yarnpkg.com/@truffle/blockchain-utils/-/blockchain-utils-0.1.7.tgz#cf7923a3ae5b591ae4c2a5ee45994a310ccaf1ee" + resolved "https://registry.npmjs.org/@truffle/blockchain-utils/-/blockchain-utils-0.1.7.tgz" integrity sha512-1nibqGjEHC7KAyDThEFvbm2+EO8zAHee/VjCtxkYBE3ySwP50joh0QCEBjy7K/9z+icpMoDucfxmgaKToBFUgQ== "@truffle/code-utils@^3.0.2": version "3.0.2" - resolved "https://registry.yarnpkg.com/@truffle/code-utils/-/code-utils-3.0.2.tgz#603b0662a1fc27d24a92aaf66417559a3f3e3915" + resolved "https://registry.npmjs.org/@truffle/code-utils/-/code-utils-3.0.2.tgz" integrity sha512-Q4FyYIX9G4GyMa8RJDk19kvgiyGZ1CGEx2RmVcXoCDZqEyiHLzqjvCRp+/fuBz2fv7szO6d+60LO1gLCGS1drQ== dependencies: cbor "^5.2.0" "@truffle/codec@^0.14.17": version "0.14.17" - resolved "https://registry.yarnpkg.com/@truffle/codec/-/codec-0.14.17.tgz#4ab11fab335854dad0d4aef75db2960ebd76fcd8" + resolved "https://registry.npmjs.org/@truffle/codec/-/codec-0.14.17.tgz" integrity sha512-kD4dD86huLeaBEq5R8D1zleJEu6NsXbyYLdXl1V1TKdiO8odw5CBC6Y/+wdu5d3t1dyEYrTbhn1dqknZa52pmw== dependencies: "@truffle/abi-utils" "^0.3.9" @@ -5316,7 +5472,7 @@ "@truffle/codec@^0.15.0": version "0.15.0" - resolved "https://registry.yarnpkg.com/@truffle/codec/-/codec-0.15.0.tgz#c6dffe4c5f779dbc5187cc13aa99a5350377fe97" + resolved "https://registry.npmjs.org/@truffle/codec/-/codec-0.15.0.tgz" integrity sha512-FEcwtDUuMr85a9u39eqvNgmUgXDvIkwhJjMCCi/bC4/GmLisOpih8vAidDgdYMJldukMPaOX5XIIgsG5k615YA== dependencies: "@truffle/abi-utils" "^0.3.10" @@ -5330,9 +5486,25 @@ utf8 "^3.0.0" web3-utils "1.10.0" +"@truffle/codec@^0.17.3": + version "0.17.3" + resolved "https://registry.npmjs.org/@truffle/codec/-/codec-0.17.3.tgz" + integrity sha512-Ko/+dsnntNyrJa57jUD9u4qx9nQby+H4GsUO6yjiCPSX0TQnEHK08XWqBSg0WdmCH2+h0y1nr2CXSx8gbZapxg== + dependencies: + "@truffle/abi-utils" "^1.0.3" + "@truffle/compile-common" "^0.9.8" + big.js "^6.0.3" + bn.js "^5.1.3" + cbor "^5.2.0" + debug "^4.3.1" + lodash "^4.17.21" + semver "^7.5.4" + utf8 "^3.0.0" + web3-utils "1.10.0" + "@truffle/compile-common@^0.3.9": version "0.3.12" - resolved "https://registry.yarnpkg.com/@truffle/compile-common/-/compile-common-0.3.12.tgz#73e3849aa61de1f98596b440f0bfce7e3063c2e4" + resolved "https://registry.npmjs.org/@truffle/compile-common/-/compile-common-0.3.12.tgz" integrity sha512-X4mnCiaoUD9+0XL7HYF3I+nW3EXggj207DF1uOJUSrS/wjIbs2eqUo1aqMPp0uw0o3Ek2EpDLq9w5Jm3myHLqw== dependencies: "@truffle/contract-schema" "^3.2.5" @@ -5342,15 +5514,23 @@ "@truffle/compile-common@^0.9.4": version "0.9.4" - resolved "https://registry.yarnpkg.com/@truffle/compile-common/-/compile-common-0.9.4.tgz#064208cda70491692b538f717809bb904a122c20" + resolved "https://registry.npmjs.org/@truffle/compile-common/-/compile-common-0.9.4.tgz" integrity sha512-mnqJB/hLiPHNf+WKwt/2MH6lv34xSG/SFCib7+ckAklutUqVLeFo8EwQxinuHNkU7LY0C+YgZXhK1WTCO5YRJQ== dependencies: "@truffle/error" "^0.2.0" colors "1.4.0" +"@truffle/compile-common@^0.9.8": + version "0.9.8" + resolved "https://registry.npmjs.org/@truffle/compile-common/-/compile-common-0.9.8.tgz" + integrity sha512-DTpiyo32t/YhLI1spn84D3MHYHrnoVqO+Gp7ZHrYNwDs86mAxtNiH5lsVzSb8cPgiqlvNsRCU9nm9R0YmKMTBQ== + dependencies: + "@truffle/error" "^0.2.2" + colors "1.4.0" + "@truffle/compile-solidity@^4.3.22": version "4.3.22" - resolved "https://registry.yarnpkg.com/@truffle/compile-solidity/-/compile-solidity-4.3.22.tgz#b9f0b8834c8095f7d91e4061e1fa67994752d506" + resolved "https://registry.npmjs.org/@truffle/compile-solidity/-/compile-solidity-4.3.22.tgz" integrity sha512-hYogrD836KhM4V6YED15ioS7NtmfiermgXqZpTtMJcy5klf0Q2tLhVg96dcOZsHM26tNV9wiJPSViJhLN0PNjw== dependencies: "@truffle/compile-common" "^0.3.9" @@ -5371,7 +5551,7 @@ "@truffle/compile-solidity@^6.0.54": version "6.0.66" - resolved "https://registry.yarnpkg.com/@truffle/compile-solidity/-/compile-solidity-6.0.66.tgz#28b432a90766d49530bba6371a7a00f8246e79d9" + resolved "https://registry.npmjs.org/@truffle/compile-solidity/-/compile-solidity-6.0.66.tgz" integrity sha512-IAOSBRf32kI6SzD3G9ZA8D6Df96TX2G+XW9m8tKEUghYk38NCTqKTg13u6GKrIuDrtTzWw/f/Eq8mn0bTdDoig== dependencies: "@truffle/compile-common" "^0.9.4" @@ -5393,7 +5573,7 @@ "@truffle/compile-vyper@^1.0.33": version "1.0.71" - resolved "https://registry.yarnpkg.com/@truffle/compile-vyper/-/compile-vyper-1.0.71.tgz#b068fafcf7967c969ece9bb6fd4b505c39c4d1cc" + resolved "https://registry.npmjs.org/@truffle/compile-vyper/-/compile-vyper-1.0.71.tgz" integrity sha512-p7szaENTOjzCc9LT99gqqqvy1hWJmnul4iRgkStjYOjJIqiNanEDZ715VMisewPK7q/Xa/FYxqTP51XL+ZWKHw== dependencies: "@truffle/compile-solidity" "^4.3.22" @@ -5403,7 +5583,7 @@ "@truffle/config@^1.2.29", "@truffle/config@^1.2.6", "@truffle/config@^1.3.55": version "1.3.55" - resolved "https://registry.yarnpkg.com/@truffle/config/-/config-1.3.55.tgz#70ac7103e5a844717303d04deab32ca16356ad83" + resolved "https://registry.npmjs.org/@truffle/config/-/config-1.3.55.tgz" integrity sha512-18nLgtnkDCwMiTB3fyJxXzRzuO28wtJyY3YIgJBMg4ujKYpAxeI6hOPafhrp9qGqR7tC0Pj1o+ip3wFxEZJtuQ== dependencies: "@truffle/error" "^0.2.0" @@ -5417,7 +5597,7 @@ "@truffle/config@^1.3.56": version "1.3.56" - resolved "https://registry.yarnpkg.com/@truffle/config/-/config-1.3.56.tgz#bb4e9c51fbcfb17117a9d6754b27f3a1491be888" + resolved "https://registry.npmjs.org/@truffle/config/-/config-1.3.56.tgz" integrity sha512-2wg6zfaUlP3iZP9jHugx3WsyJ2dbIB+nEBULPK5YVbSkqBfXrzW0b9RJYQvyuk/AyFrp/7ycD4r5LnFLq1IHZA== dependencies: "@truffle/error" "^0.2.0" @@ -5431,7 +5611,7 @@ "@truffle/contract-schema@^3.2.5", "@truffle/contract-schema@^3.3.1", "@truffle/contract-schema@^3.4.11", "@truffle/contract-schema@^3.4.13": version "3.4.13" - resolved "https://registry.yarnpkg.com/@truffle/contract-schema/-/contract-schema-3.4.13.tgz#48447673f29380830f5821e8139ceefbbd545aac" + resolved "https://registry.npmjs.org/@truffle/contract-schema/-/contract-schema-3.4.13.tgz" integrity sha512-emG7upuryYFrsPDbHqeASPWXL824M1tinhQwSPG0phSoa3g+RX9fUNNN/VPmF3tSkXLWUMhRnb7ehxnaCuRbZg== dependencies: ajv "^6.10.0" @@ -5439,7 +5619,7 @@ "@truffle/contract-sources@^0.1.6", "@truffle/contract-sources@^0.1.8": version "0.1.12" - resolved "https://registry.yarnpkg.com/@truffle/contract-sources/-/contract-sources-0.1.12.tgz#7a3dfec1bcf6f3632c0f54e522fb6f12b0bdf34b" + resolved "https://registry.npmjs.org/@truffle/contract-sources/-/contract-sources-0.1.12.tgz" integrity sha512-7OH8P+N4n2LewbNiVpuleshPqj8G7n9Qkd5ot79sZ/R6xIRyXF05iBtg3/IbjIzOeQCrCE9aYUHNe2go9RuM0g== dependencies: debug "^4.3.1" @@ -5447,7 +5627,7 @@ "@truffle/contract-sources@^0.2.0": version "0.2.0" - resolved "https://registry.yarnpkg.com/@truffle/contract-sources/-/contract-sources-0.2.0.tgz#b8dd1a5e985eb8cf507f23a751aa7aadc0645ab4" + resolved "https://registry.npmjs.org/@truffle/contract-sources/-/contract-sources-0.2.0.tgz" integrity sha512-S14SKQW3EGbLip3rBU7i+VtB5ImBfBz6TpviSXxQsYY6Udy+aqJEmTkVKA/KhHeOG6yQyZqvb4dWIbMtEh+tYg== dependencies: debug "^4.3.1" @@ -5455,7 +5635,7 @@ "@truffle/contract@4.6.10": version "4.6.10" - resolved "https://registry.yarnpkg.com/@truffle/contract/-/contract-4.6.10.tgz#94b2c59273cd142021a6d2fe4de7ac30f572e184" + resolved "https://registry.npmjs.org/@truffle/contract/-/contract-4.6.10.tgz" integrity sha512-69IZSXeQKRP3EutILqe+vLY5A5gUpeXUiZhm/Fy/qHHkP238vMjtOkTZGkY6bonYqmgk+vDY7KSYSYKzDNPdCA== dependencies: "@ensdomains/ensjs" "^2.1.0" @@ -5475,7 +5655,7 @@ "@truffle/contract@^4.0.37", "@truffle/contract@^4.2.3", "@truffle/contract@^4.6.10": version "4.6.20" - resolved "https://registry.yarnpkg.com/@truffle/contract/-/contract-4.6.20.tgz#48237b9d3fe3e5019eac2c8ce9794201ae84fdf8" + resolved "https://registry.npmjs.org/@truffle/contract/-/contract-4.6.20.tgz" integrity sha512-s7Mbc37L/CF5Apy/cjPnalkgACmG9tTAmcIW28cIZLRLOUAze18pqhtdHryxAQhEOtKGaDAho6TriqL7/74uHw== dependencies: "@ensdomains/ensjs" "^2.1.0" @@ -5495,7 +5675,7 @@ "@truffle/dashboard-message-bus-client@^0.1.10": version "0.1.10" - resolved "https://registry.yarnpkg.com/@truffle/dashboard-message-bus-client/-/dashboard-message-bus-client-0.1.10.tgz#bd1cef19956f06716d55a327b8ea6f983e41f0b0" + resolved "https://registry.npmjs.org/@truffle/dashboard-message-bus-client/-/dashboard-message-bus-client-0.1.10.tgz" integrity sha512-r9GpdR96T8xzk2Z3Qq5lowixT6hQwDZ9F3D3oNjOv2AOwBrC7dGkt1Ra1FQRsABn4K7LUVvnjjn6rALlsatAdw== dependencies: "@truffle/dashboard-message-bus-common" "^0.1.5" @@ -5510,19 +5690,19 @@ "@truffle/dashboard-message-bus-common@^0.1.5": version "0.1.5" - resolved "https://registry.yarnpkg.com/@truffle/dashboard-message-bus-common/-/dashboard-message-bus-common-0.1.5.tgz#180c8c421b2836b7bd109944e7956f427236d8ab" + resolved "https://registry.npmjs.org/@truffle/dashboard-message-bus-common/-/dashboard-message-bus-common-0.1.5.tgz" integrity sha512-F4RfXi7ymNA3HFOlaujRJxAb3I8ciErCRQq+MZVaqjSPF9LSw23IizZsGpLaY43K2bGoBSxyNQRZWxsUEBujPQ== "@truffle/db-loader@^0.2.24": version "0.2.24" - resolved "https://registry.yarnpkg.com/@truffle/db-loader/-/db-loader-0.2.24.tgz#a8df634755f49e9849374e0160f6a5e5912d0a65" + resolved "https://registry.npmjs.org/@truffle/db-loader/-/db-loader-0.2.24.tgz" integrity sha512-ucnZqVb4Aw9fnsUnqwgKZiaDUcw2n6C4tuGyl2iVOr1Xpl+F5Cgrz1cfjJ1igdZrtZnmKl0tDvymt2YwPeeYgw== optionalDependencies: "@truffle/db" "^2.0.24" "@truffle/db@^2.0.24": version "2.0.24" - resolved "https://registry.yarnpkg.com/@truffle/db/-/db-2.0.24.tgz#8c603c625b89b60ade0df405f684aba7b851b42c" + resolved "https://registry.npmjs.org/@truffle/db/-/db-2.0.24.tgz" integrity sha512-p4UsUKd47/Iv2SJ2m24+ObIalb4Ljt7ysv3mY/gKvEIw3fKxSErPgxDKaC0l3kPOVaz8gfXkbWDGeuLf/f66+Q== dependencies: "@graphql-tools/delegate" "^8.4.3" @@ -5545,9 +5725,21 @@ pouchdb-find "^7.0.0" web3-utils "1.10.0" -"@truffle/debug-utils@^6.0.42", "@truffle/debug-utils@^6.0.48": +"@truffle/debug-utils@^6.0.42": + version "6.0.57" + resolved "https://registry.npmjs.org/@truffle/debug-utils/-/debug-utils-6.0.57.tgz" + integrity sha512-Q6oI7zLaeNLB69ixjwZk2UZEWBY6b2OD1sjLMGDKBGR7GaHYiw96GLR2PFgPH1uwEeLmV4N78LYaQCrDsHbNeA== + dependencies: + "@truffle/codec" "^0.17.3" + "@trufflesuite/chromafi" "^3.0.0" + bn.js "^5.1.3" + chalk "^2.4.2" + debug "^4.3.1" + highlightjs-solidity "^2.0.6" + +"@truffle/debug-utils@^6.0.48": version "6.0.48" - resolved "https://registry.yarnpkg.com/@truffle/debug-utils/-/debug-utils-6.0.48.tgz#218caa0e00d95a03abadb05dfe63d621530e113a" + resolved "https://registry.npmjs.org/@truffle/debug-utils/-/debug-utils-6.0.48.tgz" integrity sha512-HdK/7eH5EFrcTPeZVEgKaKkkzuZ4xsrH8yw+EoLEsScLsOEuQeKynY61NctjuU93voATWrYmV99Sfb/MRq2i2g== dependencies: "@truffle/codec" "^0.14.17" @@ -5559,7 +5751,7 @@ "@truffle/debugger@^11.1.0": version "11.1.0" - resolved "https://registry.yarnpkg.com/@truffle/debugger/-/debugger-11.1.0.tgz#2668b50689c88bd93b8a6e44ef7691a9bd2cc216" + resolved "https://registry.npmjs.org/@truffle/debugger/-/debugger-11.1.0.tgz" integrity sha512-ws3z3ktvW631W6zi9jd9O6+osF6jh+Z6naumIf9ySfAM1cdV4wTHd8iyYwEEc180pJinlc4oCZGvcr5cE97NVw== dependencies: "@ensdomains/ensjs" "^2.1.0" @@ -5580,27 +5772,32 @@ "@truffle/error@0.0.7": version "0.0.7" - resolved "https://registry.yarnpkg.com/@truffle/error/-/error-0.0.7.tgz#e9db39885575647ef08bf624b0c13fe46d41a209" + resolved "https://registry.npmjs.org/@truffle/error/-/error-0.0.7.tgz" integrity sha512-UIfVKsXSXocKnn5+RNklUXNoGd/JVj7V8KmC48TQzmjU33HQI86PX0JDS7SpHMHasI3w9X//1q7Lu7nZtj3Zzg== "@truffle/error@^0.0.11": version "0.0.11" - resolved "https://registry.yarnpkg.com/@truffle/error/-/error-0.0.11.tgz#2789c0042d7e796dcbb840c7a9b5d2bcd8e0e2d8" + resolved "https://registry.npmjs.org/@truffle/error/-/error-0.0.11.tgz" integrity sha512-ju6TucjlJkfYMmdraYY/IBJaFb+Sa+huhYtOoyOJ+G29KcgytUVnDzKGwC7Kgk6IsxQMm62Mc1E0GZzFbGGipw== "@truffle/error@^0.1.1": version "0.1.1" - resolved "https://registry.yarnpkg.com/@truffle/error/-/error-0.1.1.tgz#e52026ac8ca7180d83443dca73c03e07ace2a301" + resolved "https://registry.npmjs.org/@truffle/error/-/error-0.1.1.tgz" integrity sha512-sE7c9IHIGdbK4YayH4BC8i8qMjoAOeg6nUXUDZZp8wlU21/EMpaG+CLx+KqcIPyR+GSWIW3Dm0PXkr2nlggFDA== "@truffle/error@^0.2.0": version "0.2.0" - resolved "https://registry.yarnpkg.com/@truffle/error/-/error-0.2.0.tgz#65de6f03f5c041f883cc87677eecf8231428f1ab" + resolved "https://registry.npmjs.org/@truffle/error/-/error-0.2.0.tgz" integrity sha512-Fe0/z4WWb7IP2gBnv3l6zqP87Y0kSMs7oiSLakKJq17q3GUunrHSdioKuNspdggxkXIBhEQLhi8C+LJdwmHKWQ== +"@truffle/error@^0.2.2": + version "0.2.2" + resolved "https://registry.npmjs.org/@truffle/error/-/error-0.2.2.tgz" + integrity sha512-TqbzJ0O8DHh34cu8gDujnYl4dUl6o2DE4PR6iokbybvnIm/L2xl6+Gv1VC+YJS45xfH83Yo3/Zyg/9Oq8/xZWg== + "@truffle/events@^0.1.22": version "0.1.22" - resolved "https://registry.yarnpkg.com/@truffle/events/-/events-0.1.22.tgz#007617de4d20093e8c257a63ddc1193a21a9c5b8" + resolved "https://registry.npmjs.org/@truffle/events/-/events-0.1.22.tgz" integrity sha512-WBEfaQ5zagS3J1M66J8wQ8N1As/EnBjLQsRlCCFs3/KbmeWhsoalVZ5Effhe0Vxd+e+k7lvwbloQBdS6roc+wg== dependencies: "@truffle/dashboard-message-bus-client" "^0.1.10" @@ -5611,7 +5808,7 @@ "@truffle/events@^0.1.23": version "0.1.23" - resolved "https://registry.yarnpkg.com/@truffle/events/-/events-0.1.23.tgz#26c5824623795724fb1bfbff12753a59c121587e" + resolved "https://registry.npmjs.org/@truffle/events/-/events-0.1.23.tgz" integrity sha512-OIcOZXDCJPz9zzK4uTj0HxCqASNKVcs6g3Z9fT6sehGZRD4ubGHpQZoMchLBwXcggoDRApq2svTdghai624pLg== dependencies: "@truffle/dashboard-message-bus-client" "^0.1.10" @@ -5622,27 +5819,27 @@ "@truffle/expect@0.0.12": version "0.0.12" - resolved "https://registry.yarnpkg.com/@truffle/expect/-/expect-0.0.12.tgz#ed609cc538753e79438eb5a9bda7c2fda8ec2535" + resolved "https://registry.npmjs.org/@truffle/expect/-/expect-0.0.12.tgz" integrity sha512-5Hyhrf42wvxCdzv6r8q94lDEQa1onMj6A+/lHTTmirfzqIpk4V32yV22DeFL5QuDFfPaParIT5oHOcQGVAg6XQ== "@truffle/expect@^0.0.13": version "0.0.13" - resolved "https://registry.yarnpkg.com/@truffle/expect/-/expect-0.0.13.tgz#c8e23edc1a1c3b13f768611e6199113026cf8bf2" + resolved "https://registry.npmjs.org/@truffle/expect/-/expect-0.0.13.tgz" integrity sha512-iLRALoFphCCA2ygDjyG+633dCMp81i09+V/oMDkdvDdYDF6KHjSt3Ov9eZMDnzl5PVBvmf2221U4qXSFB8V4fg== "@truffle/expect@^0.0.15": version "0.0.15" - resolved "https://registry.yarnpkg.com/@truffle/expect/-/expect-0.0.15.tgz#293b773680d3e088b8c102480df55907234db533" + resolved "https://registry.npmjs.org/@truffle/expect/-/expect-0.0.15.tgz" integrity sha512-hrIbDRsaEoIkapvY2unw8W5b5qfkz3A3ayxUVxfdPlnevdDUVmvfqfYJrJOSdtbIucwDIhU74VaBPKyiqoTJOw== "@truffle/expect@^0.1.4", "@truffle/expect@^0.1.5": version "0.1.5" - resolved "https://registry.yarnpkg.com/@truffle/expect/-/expect-0.1.5.tgz#9b6d3d8e2f3765d8975506d50cd70a47e71161f7" + resolved "https://registry.npmjs.org/@truffle/expect/-/expect-0.1.5.tgz" integrity sha512-CkrR2BbT2ORwy1l39few03JlXysthXQIjWPk8vC2uA8orcUpMv7PWC4AoVbTvE2OgcnbClpYekGFyaQ9iToyAg== "@truffle/external-compile@^1.0.19": version "1.0.36" - resolved "https://registry.yarnpkg.com/@truffle/external-compile/-/external-compile-1.0.36.tgz#92b9a7e427e11c930159ac130028a565ad2df5d4" + resolved "https://registry.npmjs.org/@truffle/external-compile/-/external-compile-1.0.36.tgz" integrity sha512-01qd3lHCrk+mA6D93YP3dguFmYjehToz5VQgiYRwf2d7XzH7iXlRRk2rqG3PUGx5awgAJFsyGIwqGyy04NXVfw== dependencies: "@truffle/contract-schema" "^3.2.5" @@ -5651,9 +5848,18 @@ glob "^7.1.2" web3-utils "1.2.1" -"@truffle/interface-adapter@^0.5.26", "@truffle/interface-adapter@^0.5.32": +"@truffle/interface-adapter@^0.5.26": + version "0.5.37" + resolved "https://registry.npmjs.org/@truffle/interface-adapter/-/interface-adapter-0.5.37.tgz" + integrity sha512-lPH9MDgU+7sNDlJSClwyOwPCfuOimqsCx0HfGkznL3mcFRymc1pukAR1k17zn7ErHqBwJjiKAZ6Ri72KkS+IWw== + dependencies: + bn.js "^5.1.3" + ethers "^4.0.32" + web3 "1.10.0" + +"@truffle/interface-adapter@^0.5.32": version "0.5.32" - resolved "https://registry.yarnpkg.com/@truffle/interface-adapter/-/interface-adapter-0.5.32.tgz#2ae896ea85a9d267abcd5d0139afc0f06ebc5745" + resolved "https://registry.npmjs.org/@truffle/interface-adapter/-/interface-adapter-0.5.32.tgz" integrity sha512-7Hgmdb4nJUcWtq4vvgWY7Mr2RLOTOp5FZaWyMiFmjkcEEhDlezm2QstALWAXgT0W6q7tDmDBpw3vTIFenRhHBA== dependencies: bn.js "^5.1.3" @@ -5662,7 +5868,7 @@ "@truffle/interface-adapter@^0.5.33": version "0.5.33" - resolved "https://registry.yarnpkg.com/@truffle/interface-adapter/-/interface-adapter-0.5.33.tgz#249c9a378a91e12c5e5e0657b419596a43caa088" + resolved "https://registry.npmjs.org/@truffle/interface-adapter/-/interface-adapter-0.5.33.tgz" integrity sha512-vbVcH2I8hX+wM0Xj9uAjpgxMHqfT+y6m26zSkOVvZ2wo9Ez1slaOJkK1/TZK+7nJitGZSXeJeB4purMDuADvGA== dependencies: bn.js "^5.1.3" @@ -5671,7 +5877,7 @@ "@truffle/profiler@^0.1.47": version "0.1.47" - resolved "https://registry.yarnpkg.com/@truffle/profiler/-/profiler-0.1.47.tgz#fee15be5ff2131115762f973228d64d960862f3c" + resolved "https://registry.npmjs.org/@truffle/profiler/-/profiler-0.1.47.tgz" integrity sha512-CMX6TzlrFFpRb8RoHmlICRbusFPp0F8u0d1GaC2TW1tvfe5Ug4oLjAh5dBGpENDbm9DpMrbHV/2YvAyJzSYa1w== dependencies: "@truffle/contract-sources" "^0.2.0" @@ -5680,12 +5886,12 @@ "@truffle/promise-tracker@^0.1.5": version "0.1.5" - resolved "https://registry.yarnpkg.com/@truffle/promise-tracker/-/promise-tracker-0.1.5.tgz#df68df14d45a32bda6237ab85169d1808e4b3928" + resolved "https://registry.npmjs.org/@truffle/promise-tracker/-/promise-tracker-0.1.5.tgz" integrity sha512-wZx8eeu/6rcwwkmRF0Y832/NSQR9A9u6pyhTozv+j77jklnd/KZvu2JlACaAjP30eL5SOtSrSOzAMcSh/trJjg== "@truffle/provider@^0.3.8": version "0.3.8" - resolved "https://registry.yarnpkg.com/@truffle/provider/-/provider-0.3.8.tgz#8b34d17edf701226c8fab05e34cd6b09742c4041" + resolved "https://registry.npmjs.org/@truffle/provider/-/provider-0.3.8.tgz" integrity sha512-qukkmGOZPsbV7WeKlj/bfYWOu/dbHWlF67QHDhV2KHBVardN06VDf40aB8WeeVkONHijb623hkUI/DE4DpHO+Q== dependencies: "@truffle/error" "^0.2.0" @@ -5695,7 +5901,7 @@ "@truffle/provider@^0.3.9": version "0.3.9" - resolved "https://registry.yarnpkg.com/@truffle/provider/-/provider-0.3.9.tgz#d1e66dbeaa743ba4d3e67911f722f841fbd81d0b" + resolved "https://registry.npmjs.org/@truffle/provider/-/provider-0.3.9.tgz" integrity sha512-6vVSpbP8b2SuNz1fE1KeeQHMBaQ7oD5Nf4CLikXNWrj3SVyMpN3PxsEnaHMnlslAfHICpLSOHpcIWETGxfOgbg== dependencies: "@truffle/error" "^0.2.0" @@ -5705,14 +5911,14 @@ "@truffle/provisioner@^0.2.0", "@truffle/provisioner@^0.2.70": version "0.2.78" - resolved "https://registry.yarnpkg.com/@truffle/provisioner/-/provisioner-0.2.78.tgz#4aad0b8b911bd5a182637504e9b629015150b1eb" + resolved "https://registry.npmjs.org/@truffle/provisioner/-/provisioner-0.2.78.tgz" integrity sha512-DFT3n6oXIsvTRwg4/f5RA+iyQB8ivQTyo44JkgUecBgpX1tQ20wRgbfww/018kkeKVix4n9J/CzRJvv3YOve/w== dependencies: "@truffle/config" "^1.3.55" "@truffle/resolver@9.0.27": version "9.0.27" - resolved "https://registry.yarnpkg.com/@truffle/resolver/-/resolver-9.0.27.tgz#7c0eaa1cb30ada2951cde44f537baa53fce4c49c" + resolved "https://registry.npmjs.org/@truffle/resolver/-/resolver-9.0.27.tgz" integrity sha512-sNYMXqyEEtKAp2zkT+NQJ5pTXa41aEUF3HuLi2Sqt+bBKT8RjQoqM7PwNO0DzoLIwmRba8mpLoNMq87ALb8N5Q== dependencies: "@ganache/console.log" "0.2.0" @@ -5731,7 +5937,7 @@ "@truffle/resolver@^5.0.18": version "5.1.12" - resolved "https://registry.yarnpkg.com/@truffle/resolver/-/resolver-5.1.12.tgz#69c220973bb3326c3513a8e3e5a524f3aaa30f62" + resolved "https://registry.npmjs.org/@truffle/resolver/-/resolver-5.1.12.tgz" integrity sha512-xiv7okPFT9mUZ9kc4iNMVPE85bGDdDwpMYE/LTmcpLNechmXlphgc3DzwJdQypZd6NjCrc/C1XMF178UiS+Szg== dependencies: "@truffle/contract" "^4.2.3" @@ -5746,7 +5952,7 @@ "@truffle/source-map-utils@^1.3.111": version "1.3.111" - resolved "https://registry.yarnpkg.com/@truffle/source-map-utils/-/source-map-utils-1.3.111.tgz#8ebc52f6a7f7f77f4ff302141c11e09dd7f8a220" + resolved "https://registry.npmjs.org/@truffle/source-map-utils/-/source-map-utils-1.3.111.tgz" integrity sha512-/2kP4muycNMvMwar/QuzRdF8NE8LpQS1cRHF43XLx3b89D/upzqTylQwv3EDx/rcd7u6AQ/7lrUSmKlh0+k40Q== dependencies: "@truffle/code-utils" "^3.0.2" @@ -5758,28 +5964,28 @@ "@truffle/spinners@^0.2.3": version "0.2.3" - resolved "https://registry.yarnpkg.com/@truffle/spinners/-/spinners-0.2.3.tgz#5689d06ef16855a9f6b70dc0cd40188de54450ec" + resolved "https://registry.npmjs.org/@truffle/spinners/-/spinners-0.2.3.tgz" integrity sha512-YnaQ+oBRQ1I1+/P18i8oSW4orUYi6vwpZQxauEZ5X0L8atjKq+RWdiNaza6J6L+KOLunXM4+pWxnNzuUmxlJZw== dependencies: "@trufflesuite/spinnies" "^0.1.1" "@trufflesuite/bigint-buffer@1.1.10": version "1.1.10" - resolved "https://registry.yarnpkg.com/@trufflesuite/bigint-buffer/-/bigint-buffer-1.1.10.tgz#a1d9ca22d3cad1a138b78baaf15543637a3e1692" + resolved "https://registry.npmjs.org/@trufflesuite/bigint-buffer/-/bigint-buffer-1.1.10.tgz" integrity sha512-pYIQC5EcMmID74t26GCC67946mgTJFiLXOT/BYozgrd4UEY2JHEGLhWi9cMiQCt5BSqFEvKkCHNnoj82SRjiEw== dependencies: node-gyp-build "4.4.0" "@trufflesuite/bigint-buffer@1.1.9": version "1.1.9" - resolved "https://registry.yarnpkg.com/@trufflesuite/bigint-buffer/-/bigint-buffer-1.1.9.tgz#e2604d76e1e4747b74376d68f1312f9944d0d75d" + resolved "https://registry.npmjs.org/@trufflesuite/bigint-buffer/-/bigint-buffer-1.1.9.tgz" integrity sha512-bdM5cEGCOhDSwminryHJbRmXc1x7dPKg6Pqns3qyTwFlxsqUgxE29lsERS3PlIW1HTjoIGMUqsk1zQQwST1Yxw== dependencies: node-gyp-build "4.3.0" "@trufflesuite/chromafi@^3.0.0": version "3.0.0" - resolved "https://registry.yarnpkg.com/@trufflesuite/chromafi/-/chromafi-3.0.0.tgz#f6956408c1af6a38a6ed1657783ce59504a1eb8b" + resolved "https://registry.npmjs.org/@trufflesuite/chromafi/-/chromafi-3.0.0.tgz" integrity sha512-oqWcOqn8nT1bwlPPfidfzS55vqcIDdpfzo3HbU9EnUmcSTX+I8z0UyUFI3tZQjByVJulbzxHxUGS3ZJPwK/GPQ== dependencies: camelcase "^4.1.0" @@ -5793,7 +5999,7 @@ "@trufflesuite/spinnies@^0.1.1": version "0.1.1" - resolved "https://registry.yarnpkg.com/@trufflesuite/spinnies/-/spinnies-0.1.1.tgz#719230993f55ab39f936ed8778979e7661af188d" + resolved "https://registry.npmjs.org/@trufflesuite/spinnies/-/spinnies-0.1.1.tgz" integrity sha512-jltEtmFJj6xmQqr85gP8OqBHCEiId+zw+uAsb3DyLLRD17O6sySW6Afa2Z/jpzSafj+32ssDfLJ+c0of1NLqcA== dependencies: chalk "^4.1.2" @@ -5802,7 +6008,7 @@ "@trufflesuite/uws-js-unofficial@20.10.0-unofficial.2": version "20.10.0-unofficial.2" - resolved "https://registry.yarnpkg.com/@trufflesuite/uws-js-unofficial/-/uws-js-unofficial-20.10.0-unofficial.2.tgz#7ed613ce3260cd5d1773a4d5787a2a106acd1a91" + resolved "https://registry.npmjs.org/@trufflesuite/uws-js-unofficial/-/uws-js-unofficial-20.10.0-unofficial.2.tgz" integrity sha512-oQQlnS3oNeGsgS4K3KCSSavJgSb0W9D5ktZs4FacX9VbM7b+NlhjH96d6/G4fMrz+bc5MXRyco419on0X0dvRA== dependencies: ws "8.2.3" @@ -5812,58 +6018,58 @@ "@tsconfig/node10@^1.0.7": version "1.0.9" - resolved "https://registry.yarnpkg.com/@tsconfig/node10/-/node10-1.0.9.tgz#df4907fc07a886922637b15e02d4cebc4c0021b2" + resolved "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.9.tgz" integrity sha512-jNsYVVxU8v5g43Erja32laIDHXeoNvFEpX33OK4d6hljo3jDhCBDhx5dhCCTMWUojscpAagGiRkBKxpdl9fxqA== "@tsconfig/node12@^1.0.7": version "1.0.11" - resolved "https://registry.yarnpkg.com/@tsconfig/node12/-/node12-1.0.11.tgz#ee3def1f27d9ed66dac6e46a295cffb0152e058d" + resolved "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.11.tgz" integrity sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag== "@tsconfig/node14@^1.0.0": version "1.0.3" - resolved "https://registry.yarnpkg.com/@tsconfig/node14/-/node14-1.0.3.tgz#e4386316284f00b98435bf40f72f75a09dabf6c1" + resolved "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.3.tgz" integrity sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow== "@tsconfig/node16@^1.0.2": version "1.0.3" - resolved "https://registry.yarnpkg.com/@tsconfig/node16/-/node16-1.0.3.tgz#472eaab5f15c1ffdd7f8628bd4c4f753995ec79e" + resolved "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.3.tgz" integrity sha512-yOlFc+7UtL/89t2ZhjPvvB/DeAr3r+Dq58IgzsFkOAvVC6NMJXmCGjbptdXdR9qsX7pKcTL+s87FtYREi2dEEQ== "@types/abstract-leveldown@*": - version "7.2.1" - resolved "https://registry.yarnpkg.com/@types/abstract-leveldown/-/abstract-leveldown-7.2.1.tgz#bb16403c17754b0c4d5772d71d03b924a03d4c80" - integrity sha512-YK8irIC+eMrrmtGx0H4ISn9GgzLd9dojZWJaMbjp1YHLl2VqqNFBNrL5Q3KjGf4VE3sf/4hmq6EhQZ7kZp1NoQ== + version "7.2.2" + resolved "https://registry.yarnpkg.com/@types/abstract-leveldown/-/abstract-leveldown-7.2.2.tgz#45fed99f966749a6fc351131465026584e99456b" + integrity sha512-EVVYLp4D3zwP5/sS2S5x70t1w0BDrjbv0x0d0znngFKX/YExe+il/JAlHOEpo0cTdtY4Ohnllen32hPganG20w== "@types/accepts@*", "@types/accepts@^1.3.5": version "1.3.5" - resolved "https://registry.yarnpkg.com/@types/accepts/-/accepts-1.3.5.tgz#c34bec115cfc746e04fe5a059df4ce7e7b391575" + resolved "https://registry.npmjs.org/@types/accepts/-/accepts-1.3.5.tgz" integrity sha512-jOdnI/3qTpHABjM5cx1Hc0sKsPoYCp+DP/GJRGtDlPd7fiV9oXGGIcjW/ZOxLIvjGz8MA+uMZI9metHlgqbgwQ== dependencies: "@types/node" "*" "@types/archiver@^5.1.0": version "5.3.2" - resolved "https://registry.yarnpkg.com/@types/archiver/-/archiver-5.3.2.tgz#a9f0bcb0f0b991400e7766d35f6e19d163bdadcc" + resolved "https://registry.npmjs.org/@types/archiver/-/archiver-5.3.2.tgz" integrity sha512-IctHreBuWE5dvBDz/0WeKtyVKVRs4h75IblxOACL92wU66v+HGAfEYAOyXkOFphvRJMhuXdI9huDXpX0FC6lCw== dependencies: "@types/readdir-glob" "*" "@types/asn1js@^0.0.2": version "0.0.2" - resolved "https://registry.yarnpkg.com/@types/asn1js/-/asn1js-0.0.2.tgz#f278a8af81861813d4fc9cd0a86c8b1ac5f16db3" + resolved "https://registry.npmjs.org/@types/asn1js/-/asn1js-0.0.2.tgz" integrity sha512-xtLPq140WhPqvDZDpY70rTx4qTezHs+8htbhWQGuevBRQko8FRjFSO5WVTwXOwd3W5tQRxJ7eni30fDUP2q4wQ== dependencies: "@types/pvutils" "*" "@types/aws-lambda@8.10.81": version "8.10.81" - resolved "https://registry.yarnpkg.com/@types/aws-lambda/-/aws-lambda-8.10.81.tgz#6d405269aad82e05a348687631aa9a587cdbe158" + resolved "https://registry.npmjs.org/@types/aws-lambda/-/aws-lambda-8.10.81.tgz" integrity sha512-C1rFKGVZ8KwqhwBOYlpoybTSRtxu2433ea6JaO3amc6ubEe08yQoFsPa9aU9YqvX7ppeZ25CnCtC4AH9mhtxsQ== "@types/babel__core@^7.1.14": version "7.20.0" - resolved "https://registry.yarnpkg.com/@types/babel__core/-/babel__core-7.20.0.tgz#61bc5a4cae505ce98e1e36c5445e4bee060d8891" + resolved "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.0.tgz" integrity sha512-+n8dL/9GWblDO0iU6eZAwEIJVr5DWigtle+Q6HLOrh/pdbXOhOtqzq8VPPE2zvNJzSKY4vH/z3iT3tn0A3ypiQ== dependencies: "@babel/parser" "^7.20.7" @@ -5874,14 +6080,14 @@ "@types/babel__generator@*": version "7.6.4" - resolved "https://registry.yarnpkg.com/@types/babel__generator/-/babel__generator-7.6.4.tgz#1f20ce4c5b1990b37900b63f050182d28c2439b7" + resolved "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.4.tgz" integrity sha512-tFkciB9j2K755yrTALxD44McOrk+gfpIpvC3sxHjRawj6PfnQxrse4Clq5y/Rq+G3mrBurMax/lG8Qn2t9mSsg== dependencies: "@babel/types" "^7.0.0" "@types/babel__template@*": version "7.4.1" - resolved "https://registry.yarnpkg.com/@types/babel__template/-/babel__template-7.4.1.tgz#3d1a48fd9d6c0edfd56f2ff578daed48f36c8969" + resolved "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.1.tgz" integrity sha512-azBFKemX6kMg5Io+/rdGT0dkGreboUVR0Cdm3fz9QJWpaQGJRQXl7C+6hOTCZcMll7KFyEQpgbYI2lHdsS4U7g== dependencies: "@babel/parser" "^7.1.0" @@ -5889,7 +6095,7 @@ "@types/babel__traverse@*", "@types/babel__traverse@^7.0.6": version "7.18.3" - resolved "https://registry.yarnpkg.com/@types/babel__traverse/-/babel__traverse-7.18.3.tgz#dfc508a85781e5698d5b33443416b6268c4b3e8d" + resolved "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.18.3.tgz" integrity sha512-1kbcJ40lLB7MHsj39U4Sh1uTd2E7rLEa79kmDpI6cy+XiXsteB3POdQomoq4FxszMrO3ZYchkhYJw7A2862b3w== dependencies: "@babel/types" "^7.3.0" @@ -5903,7 +6109,7 @@ "@types/body-parser@*", "@types/body-parser@1.19.2": version "1.19.2" - resolved "https://registry.yarnpkg.com/@types/body-parser/-/body-parser-1.19.2.tgz#aea2059e28b7658639081347ac4fab3de166e6f0" + resolved "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.2.tgz" integrity sha512-ALYone6pm6QmwZoAgeyNksccT9Q4AWZQ6PvfwR37GT6r6FWUPguq6sUmNGSMV2Wr761oQoBxwGGa6DR5o1DC9g== dependencies: "@types/connect" "*" @@ -5911,14 +6117,14 @@ "@types/bunyan@1.8.8", "@types/bunyan@^1.8.8": version "1.8.8" - resolved "https://registry.yarnpkg.com/@types/bunyan/-/bunyan-1.8.8.tgz#8d6d33f090f37c07e2a80af30ae728450a101008" + resolved "https://registry.npmjs.org/@types/bunyan/-/bunyan-1.8.8.tgz" integrity sha512-Cblq+Yydg3u+sGiz2mjHjC5MPmdjY+No4qvHrF+BUhblsmSfMvsHLbOG62tPbonsqBj6sbWv1LHcsoe5Jw+/Ow== dependencies: "@types/node" "*" "@types/bytebuffer@^5.0.40": version "5.0.44" - resolved "https://registry.yarnpkg.com/@types/bytebuffer/-/bytebuffer-5.0.44.tgz#553015fb34db1fc3eb3f7b232bff91c006c251a1" + resolved "https://registry.npmjs.org/@types/bytebuffer/-/bytebuffer-5.0.44.tgz" integrity sha512-k1qonHga/SfQT02NF633i+7tIfKd+cfC/8pjnedcfuXJNMWooss/FkCgRMSnLf2WorLjbuH4bfgAZEbtyHBDoQ== dependencies: "@types/long" "^3.0.0" @@ -5926,7 +6132,7 @@ "@types/cacheable-request@^6.0.1", "@types/cacheable-request@^6.0.2": version "6.0.3" - resolved "https://registry.yarnpkg.com/@types/cacheable-request/-/cacheable-request-6.0.3.tgz#a430b3260466ca7b5ca5bfd735693b36e7a9d183" + resolved "https://registry.npmjs.org/@types/cacheable-request/-/cacheable-request-6.0.3.tgz" integrity sha512-IQ3EbTzGxIigb1I3qPZc1rWJnH0BmSKv5QYTalEwweFvyBDLSAe24zP0le/hyi7ecGfZVlIVAg4BZqb8WBwKqw== dependencies: "@types/http-cache-semantics" "*" @@ -5935,13 +6141,13 @@ "@types/responselike" "^1.0.0" "@types/caseless@*": - version "0.12.2" - resolved "https://registry.yarnpkg.com/@types/caseless/-/caseless-0.12.2.tgz#f65d3d6389e01eeb458bd54dc8f52b95a9463bc8" - integrity sha512-6ckxMjBBD8URvjB6J3NcnuAn5Pkl7t3TizAg+xdlzzQGSPSmBcXf8KoIH0ua/i+tio+ZRUHEXp0HEmvaR4kt0w== + version "0.12.3" + resolved "https://registry.npmjs.org/@types/caseless/-/caseless-0.12.3.tgz" + integrity sha512-ZD/NsIJYq/2RH+hY7lXmstfp/v9djGt9ah+xRQ3pcgR79qiKsG4pLl25AI7IcXxVO8dH9GiBE5rAknC0ePntlw== "@types/cbor@^2.0.0": version "2.0.0" - resolved "https://registry.yarnpkg.com/@types/cbor/-/cbor-2.0.0.tgz#c627afc2ee22f23f2337fecb34628a4f97c6afbb" + resolved "https://registry.npmjs.org/@types/cbor/-/cbor-2.0.0.tgz" integrity sha512-yQH0JLcrHrH/GBIFFFq6DAsj9M4rmYsmSpGGGs67JrLGWPepYr2c1YugGjMd2Ib5pebluRAfNPJ4O1p80qX9HQ== dependencies: "@types/node" "*" @@ -5954,18 +6160,18 @@ "@types/chai" "*" "@types/chai@*", "@types/chai@^4.1.3", "@types/chai@^4.1.4": - version "4.3.4" - resolved "https://registry.yarnpkg.com/@types/chai/-/chai-4.3.4.tgz#e913e8175db8307d78b4e8fa690408ba6b65dee4" - integrity sha512-KnRanxnpfpjUTqTCXslZSEdLfXExwgNxYPdiO2WGUj8+HDjFi8R3k5RVKPeSCzLjCcshCAtVO2QBbVuAV4kTnw== + version "4.3.6" + resolved "https://registry.yarnpkg.com/@types/chai/-/chai-4.3.6.tgz#7b489e8baf393d5dd1266fb203ddd4ea941259e6" + integrity sha512-VOVRLM1mBxIRxydiViqPcKn6MIxZytrbMpd6RJLIWKxUNr3zux8no0Oc7kJx0WAPIitgZ0gkrDS+btlqQpubpw== "@types/cli-table@^0.3.0": - version "0.3.1" - resolved "https://registry.yarnpkg.com/@types/cli-table/-/cli-table-0.3.1.tgz#a0ae06290284f7abebb90a2ddc0187de6d22e963" - integrity sha512-m3+6WWfSSl6zqoXy8uQQifbgqV7Gt6fsyWnHLgUWVtJQk75+OfUB+edSZ52YDj7leSiZtX7w1/E4w2x/Hb0orA== + version "0.3.2" + resolved "https://registry.yarnpkg.com/@types/cli-table/-/cli-table-0.3.2.tgz#5619c66a5011f8588456292beff98cf33220b08d" + integrity sha512-yEwKAYmZsgb59xHtNRXaQAloxrm5xr8CQcrYerYlPK+3nwhPk1VC3QFwuiCd/jVWFu2hm4uFiiWDCJQSKhkROQ== "@types/command-exists@^1.2.0": version "1.2.0" - resolved "https://registry.yarnpkg.com/@types/command-exists/-/command-exists-1.2.0.tgz#d97e0ed10097090e4ab0367ed425b0312fad86f3" + resolved "https://registry.npmjs.org/@types/command-exists/-/command-exists-1.2.0.tgz" integrity sha512-ugsxEJfsCuqMLSuCD4PIJkp5Uk2z6TCMRCgYVuhRo5cYQY3+1xXTQkSlPtkpGHuvWMjS2KTeVQXxkXRACMbM6A== "@types/concat-stream@^1.6.0": @@ -5977,24 +6183,24 @@ "@types/connect@*", "@types/connect@3.4.35": version "3.4.35" - resolved "https://registry.yarnpkg.com/@types/connect/-/connect-3.4.35.tgz#5fcf6ae445e4021d1fc2219a4873cc73a3bb2ad1" + resolved "https://registry.npmjs.org/@types/connect/-/connect-3.4.35.tgz" integrity sha512-cdeYyv4KWoEgpBISTxWvqYsVy444DOqehiF3fM3ne10AmJ62RSyNkUnxMJXHQWRQQX2eR94m5y1IZyDwBjV9FQ== dependencies: "@types/node" "*" "@types/content-disposition@*": version "0.5.5" - resolved "https://registry.yarnpkg.com/@types/content-disposition/-/content-disposition-0.5.5.tgz#650820e95de346e1f84e30667d168c8fd25aa6e3" + resolved "https://registry.npmjs.org/@types/content-disposition/-/content-disposition-0.5.5.tgz" integrity sha512-v6LCdKfK6BwcqMo+wYW05rLS12S0ZO0Fl4w1h4aaZMD7bqT3gVUns6FvLJKGZHQmYn3SX55JWGpziwJRwVgutA== "@types/cookiejar@*": version "2.1.2" - resolved "https://registry.yarnpkg.com/@types/cookiejar/-/cookiejar-2.1.2.tgz#66ad9331f63fe8a3d3d9d8c6e3906dd10f6446e8" + resolved "https://registry.npmjs.org/@types/cookiejar/-/cookiejar-2.1.2.tgz" integrity sha512-t73xJJrvdTjXrn4jLS9VSGRbz0nUY3cl2DMGDU48lKl+HR9dbbjW2A9r3g40VA++mQpy6uuHg33gy7du2BKpog== "@types/cookies@*": version "0.7.7" - resolved "https://registry.yarnpkg.com/@types/cookies/-/cookies-0.7.7.tgz#7a92453d1d16389c05a5301eef566f34946cfd81" + resolved "https://registry.npmjs.org/@types/cookies/-/cookies-0.7.7.tgz" integrity sha512-h7BcvPUogWbKCzBR2lY4oqaZbO3jXZksexYJVFvkrFeLgbZjQkU4x8pRq6eg2MHXQhY0McQdqmmsxRWlVAHooA== dependencies: "@types/connect" "*" @@ -6004,76 +6210,77 @@ "@types/cors@2.8.12": version "2.8.12" - resolved "https://registry.yarnpkg.com/@types/cors/-/cors-2.8.12.tgz#6b2c510a7ad7039e98e7b8d3d6598f4359e5c080" + resolved "https://registry.npmjs.org/@types/cors/-/cors-2.8.12.tgz" integrity sha512-vt+kDhq/M2ayberEtJcIN/hxXy1Pk+59g2FV/ZQceeaTyCtCucjL2Q7FXlFjtWn4n15KCr1NE2lNNFhp0lEThw== "@types/cors@^2.8.5": - version "2.8.13" - resolved "https://registry.yarnpkg.com/@types/cors/-/cors-2.8.13.tgz#b8ade22ba455a1b8cb3b5d3f35910fd204f84f94" - integrity sha512-RG8AStHlUiV5ysZQKq97copd2UmVYw3/pRMLefISZ3S1hK104Cwm7iLQ3fTKx+lsUH2CE8FlLaYeEA2LSeqYUA== + version "2.8.14" + resolved "https://registry.npmjs.org/@types/cors/-/cors-2.8.14.tgz" + integrity sha512-RXHUvNWYICtbP6s18PnOCaqToK8y14DnLd75c6HfyKf228dxy7pHNOQkxPtvXKp/hINFMDjbYzsj63nnpPMSRQ== dependencies: "@types/node" "*" "@types/country-data@^0.0.0": version "0.0.0" - resolved "https://registry.yarnpkg.com/@types/country-data/-/country-data-0.0.0.tgz#6f5563cae3d148780c5b6539803a29bd93f8f1a1" + resolved "https://registry.npmjs.org/@types/country-data/-/country-data-0.0.0.tgz" integrity sha512-lIxCk6G7AwmUagQ4gIQGxUBnvAq664prFD9nSAz6dgd1XmBXBtZABV/op+QsJsIyaP1GZsf/iXhYKHX3azSRCw== "@types/debug@^4.1.4", "@types/debug@^4.1.5": version "4.1.7" - resolved "https://registry.yarnpkg.com/@types/debug/-/debug-4.1.7.tgz#7cc0ea761509124709b8b2d1090d8f6c17aadb82" + resolved "https://registry.npmjs.org/@types/debug/-/debug-4.1.7.tgz" integrity sha512-9AonUzyTjXXhEOa0DnqpzZi6VHlqKMswga9EXjpXnnqxwLtdvPPtlO8evrI5D9S6asFRCQ6v+wpiUKbw+vKqyg== dependencies: "@types/ms" "*" "@types/dotenv@^8.2.0": version "8.2.0" - resolved "https://registry.yarnpkg.com/@types/dotenv/-/dotenv-8.2.0.tgz#5cd64710c3c98e82d9d15844375a33bf1b45d053" + resolved "https://registry.npmjs.org/@types/dotenv/-/dotenv-8.2.0.tgz" integrity sha512-ylSC9GhfRH7m1EUXBXofhgx4lUWmFeQDINW5oLuS+gxWdfUeW4zJdeVTYVkexEW+e2VUvlZR2kGnGGipAWR7kw== dependencies: dotenv "*" "@types/duplexify@^3.6.0": version "3.6.1" - resolved "https://registry.yarnpkg.com/@types/duplexify/-/duplexify-3.6.1.tgz#5685721cf7dc4a21b6f0e8a8efbec6b4d2fbafad" + resolved "https://registry.npmjs.org/@types/duplexify/-/duplexify-3.6.1.tgz" integrity sha512-n0zoEj/fMdMOvqbHxmqnza/kXyoGgJmEpsXjpP+gEqE1Ye4yNqc7xWipKnUoMpWhMuzJQSfK2gMrwlElly7OGQ== dependencies: "@types/node" "*" "@types/elliptic@^6.4.12", "@types/elliptic@^6.4.9": version "6.4.14" - resolved "https://registry.yarnpkg.com/@types/elliptic/-/elliptic-6.4.14.tgz#7bbaad60567a588c1f08b10893453e6b9b4de48e" + resolved "https://registry.npmjs.org/@types/elliptic/-/elliptic-6.4.14.tgz" integrity sha512-z4OBcDAU0GVwDTuwJzQCiL6188QvZMkvoERgcVjq0/mPM8jCfdwZ3x5zQEVoL9WCAru3aG5wl3Z5Ww5wBWn7ZQ== dependencies: "@types/bn.js" "*" "@types/ethereum-protocol@*": version "1.0.2" - resolved "https://registry.yarnpkg.com/@types/ethereum-protocol/-/ethereum-protocol-1.0.2.tgz#e765d4c6f4b5ebe906932bd20333e307c56a9bc7" + resolved "https://registry.npmjs.org/@types/ethereum-protocol/-/ethereum-protocol-1.0.2.tgz" integrity sha512-Ri/hwt4UckZlF7eqhhAQcXsNvcgQmSJOKZteLco1/5NsRcneW/cJuQcrQNILN2Ohs9WUQjeGW3ZRRNqkEVMzuQ== dependencies: bignumber.js "7.2.1" "@types/ethereumjs-util@^5.2.0": version "5.2.0" - resolved "https://registry.yarnpkg.com/@types/ethereumjs-util/-/ethereumjs-util-5.2.0.tgz#f49fe8114789ec0871721392c09318c3eb56671b" + resolved "https://registry.npmjs.org/@types/ethereumjs-util/-/ethereumjs-util-5.2.0.tgz" integrity sha512-qwQgQqXXTRv2h2AlJef+tMEszLFkCB9dWnrJYIdAwqjubERXEc/geB+S3apRw0yQyTVnsBf8r6BhlrE8vx+3WQ== dependencies: "@types/bn.js" "*" "@types/node" "*" -"@types/express-serve-static-core@*", "@types/express-serve-static-core@^4.17.33": - version "4.17.33" - resolved "https://registry.yarnpkg.com/@types/express-serve-static-core/-/express-serve-static-core-4.17.33.tgz#de35d30a9d637dc1450ad18dd583d75d5733d543" - integrity sha512-TPBqmR/HRYI3eC2E5hmiivIzv+bidAfXofM+sbonAGvyDhySGw9/PQZFt2BLOrjUUR++4eJVpx6KnLQK1Fk9tA== +"@types/express-serve-static-core@*": + version "4.17.36" + resolved "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.36.tgz" + integrity sha512-zbivROJ0ZqLAtMzgzIUC4oNqDG9iF0lSsAqpOD9kbs5xcIM3dTiyuHvBc7R8MtWBp3AAWGaovJa+wzWPjLYW7Q== dependencies: "@types/node" "*" "@types/qs" "*" "@types/range-parser" "*" + "@types/send" "*" "@types/express-serve-static-core@4.17.31": version "4.17.31" - resolved "https://registry.yarnpkg.com/@types/express-serve-static-core/-/express-serve-static-core-4.17.31.tgz#a1139efeab4e7323834bb0226e62ac019f474b2f" + resolved "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.31.tgz" integrity sha512-DxMhY+NAsTwMMFHBTtJFNp5qiHKJ7TeqOo23zVEM9alT1Ml27Q3xcTH0xwxn7Q0BbMcVEJOs/7aQtUWupUQN3Q== dependencies: "@types/node" "*" @@ -6082,7 +6289,7 @@ "@types/express-serve-static-core@^4.17.18": version "4.17.35" - resolved "https://registry.yarnpkg.com/@types/express-serve-static-core/-/express-serve-static-core-4.17.35.tgz#c95dd4424f0d32e525d23812aa8ab8e4d3906c4f" + resolved "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.35.tgz" integrity sha512-wALWQwrgiB2AWTT91CB62b6Yt0sNHpznUXeZEcnPU3DRdlDIz74x8Qg1UUYKSVFi+va5vKOLYRBI1bRKiLLKIg== dependencies: "@types/node" "*" @@ -6090,9 +6297,18 @@ "@types/range-parser" "*" "@types/send" "*" +"@types/express-serve-static-core@^4.17.33": + version "4.17.33" + resolved "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.33.tgz" + integrity sha512-TPBqmR/HRYI3eC2E5hmiivIzv+bidAfXofM+sbonAGvyDhySGw9/PQZFt2BLOrjUUR++4eJVpx6KnLQK1Fk9tA== + dependencies: + "@types/node" "*" + "@types/qs" "*" + "@types/range-parser" "*" + "@types/express@*", "@types/express@4.17.17", "@types/express@^4.17.14", "@types/express@^4.17.6": version "4.17.17" - resolved "https://registry.yarnpkg.com/@types/express/-/express-4.17.17.tgz#01d5437f6ef9cfa8668e616e13c2f2ac9a491ae4" + resolved "https://registry.npmjs.org/@types/express/-/express-4.17.17.tgz" integrity sha512-Q4FmmuLGBG58btUnfS1c1r/NQdlp3DMfGDGig8WhfpA2YRUtEkxAjkZb0yvplJGYdF1fsQ81iMDcH24sSCNC/Q== dependencies: "@types/body-parser" "*" @@ -6102,7 +6318,7 @@ "@types/express@4.17.14": version "4.17.14" - resolved "https://registry.yarnpkg.com/@types/express/-/express-4.17.14.tgz#143ea0557249bc1b3b54f15db4c81c3d4eb3569c" + resolved "https://registry.npmjs.org/@types/express/-/express-4.17.14.tgz" integrity sha512-TEbt+vaPFQ+xpxFLFssxUDXj5cWCxZJjIcB7Yg0k0GMHGtgtQgpvx/MUQUeAkNbA9AAGrwkAsoeItdTgS7FMyg== dependencies: "@types/body-parser" "*" @@ -6112,7 +6328,7 @@ "@types/express@4.17.3": version "4.17.3" - resolved "https://registry.yarnpkg.com/@types/express/-/express-4.17.3.tgz#38e4458ce2067873b09a73908df488870c303bd9" + resolved "https://registry.npmjs.org/@types/express/-/express-4.17.3.tgz" integrity sha512-I8cGRJj3pyOLs/HndoP+25vOqhqWkAZsWMEmq1qXy/b/M3ppufecUwaK2/TVDVxcV61/iSdhykUjQQ2DLSrTdg== dependencies: "@types/body-parser" "*" @@ -6121,7 +6337,7 @@ "@types/fetch-mock@^7.3.5": version "7.3.5" - resolved "https://registry.yarnpkg.com/@types/fetch-mock/-/fetch-mock-7.3.5.tgz#7aee678c4e7c7e1a168bae8fdab5b8d712e377f6" + resolved "https://registry.npmjs.org/@types/fetch-mock/-/fetch-mock-7.3.5.tgz" integrity sha512-sLecm9ohBdGIpYUP9rWk5/XIKY2xHMYTBJIcJuBBM8IJWnYoQ1DAj8F4OVjnfD0API1drlkWEV0LPNk+ACuhsg== "@types/form-data@0.0.33": @@ -6140,7 +6356,7 @@ "@types/glob@*": version "8.1.0" - resolved "https://registry.yarnpkg.com/@types/glob/-/glob-8.1.0.tgz#b63e70155391b0584dce44e7ea25190bbc38f2fc" + resolved "https://registry.npmjs.org/@types/glob/-/glob-8.1.0.tgz" integrity sha512-IO+MJPVhoqz+28h1qLAcBEH2+xHMK6MTyHJc7MTnnYb6wsoLR29POVGJ7LycmVXIqyy/4/2ShP5sUwTXuOwb/w== dependencies: "@types/minimatch" "^5.1.2" @@ -6154,26 +6370,31 @@ "@types/minimatch" "*" "@types/node" "*" -"@types/google-libphonenumber@^7.4.17", "@types/google-libphonenumber@^7.4.23": +"@types/google-libphonenumber@^7.4.17": + version "7.4.26" + resolved "https://registry.npmjs.org/@types/google-libphonenumber/-/google-libphonenumber-7.4.26.tgz" + integrity sha512-VkVHbNOMW3TFmXNvdShXjp6LBxaU5N88KotDb6ypkiSuwUyxNK4SM78EBNBh/0RjV0fiIbPcDzEVhDGSemHExw== + +"@types/google-libphonenumber@^7.4.23": version "7.4.23" - resolved "https://registry.yarnpkg.com/@types/google-libphonenumber/-/google-libphonenumber-7.4.23.tgz#c44c9125d45f042943694d605fd8d8d796cafc3b" + resolved "https://registry.npmjs.org/@types/google-libphonenumber/-/google-libphonenumber-7.4.23.tgz" integrity sha512-C3ydakLTQa8HxtYf9ge4q6uT9krDX8smSIxmmW3oACFi5g5vv6T068PRExF7UyWbWpuYiDG8Nm24q2X5XhcZWw== "@types/graceful-fs@^4.1.3": version "4.1.6" - resolved "https://registry.yarnpkg.com/@types/graceful-fs/-/graceful-fs-4.1.6.tgz#e14b2576a1c25026b7f02ede1de3b84c3a1efeae" + resolved "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.6.tgz" integrity sha512-Sig0SNORX9fdW+bQuTEovKj3uHcUL6LQKbCrrqb1X7J6/ReAbhCXRAhc+SMejhLELFj2QcyuxmUooZ4bt5ReSw== dependencies: "@types/node" "*" "@types/hapi__catbox@*": version "10.2.4" - resolved "https://registry.yarnpkg.com/@types/hapi__catbox/-/hapi__catbox-10.2.4.tgz#4d0531a6c2d0e45024f724020d536041ef8ffe30" + resolved "https://registry.npmjs.org/@types/hapi__catbox/-/hapi__catbox-10.2.4.tgz" integrity sha512-A6ivRrXD5glmnJna1UAGw87QNZRp/vdFO9U4GS+WhOMWzHnw+oTGkMvg0g6y1930CbeheGOCm7A1qHsqH7AXqg== "@types/hapi__hapi@20.0.9": version "20.0.9" - resolved "https://registry.yarnpkg.com/@types/hapi__hapi/-/hapi__hapi-20.0.9.tgz#9d570846c96268266a14c970c13aeeaccfc8e172" + resolved "https://registry.npmjs.org/@types/hapi__hapi/-/hapi__hapi-20.0.9.tgz" integrity sha512-fGpKScknCKZityRXdZgpCLGbm41R1ppFgnKHerfZlqOOlCX/jI129S6ghgBqkqCE8m9A0CIu1h7Ch04lD9KOoA== dependencies: "@hapi/boom" "^9.0.0" @@ -6187,48 +6408,48 @@ "@types/hapi__mimos@*": version "4.1.4" - resolved "https://registry.yarnpkg.com/@types/hapi__mimos/-/hapi__mimos-4.1.4.tgz#4f8a1c58345fc468553708d3cb508724aa081bd9" + resolved "https://registry.npmjs.org/@types/hapi__mimos/-/hapi__mimos-4.1.4.tgz" integrity sha512-i9hvJpFYTT/qzB5xKWvDYaSXrIiNqi4ephi+5Lo6+DoQdwqPXQgmVVOZR+s3MBiHoFqsCZCX9TmVWG3HczmTEQ== dependencies: "@types/mime-db" "*" "@types/hapi__shot@*": version "4.1.2" - resolved "https://registry.yarnpkg.com/@types/hapi__shot/-/hapi__shot-4.1.2.tgz#d4011999a91e8101030fece1462fe99769455855" + resolved "https://registry.npmjs.org/@types/hapi__shot/-/hapi__shot-4.1.2.tgz" integrity sha512-8wWgLVP1TeGqgzZtCdt+F+k15DWQvLG1Yv6ZzPfb3D5WIo5/S+GGKtJBVo2uNEcqabP5Ifc71QnJTDnTmw1axA== dependencies: "@types/node" "*" "@types/hdkey@^0.7.0": version "0.7.1" - resolved "https://registry.yarnpkg.com/@types/hdkey/-/hdkey-0.7.1.tgz#9bc63ebbe96b107b277b65ea7a95442a677d0d61" + resolved "https://registry.npmjs.org/@types/hdkey/-/hdkey-0.7.1.tgz" integrity sha512-4Kkr06hq+R8a9EzVNqXGOY2x1xA7dhY6qlp6OvaZ+IJy1BCca1Cv126RD9X7CMJoXoLo8WvAizy8gQHpqW6K0Q== dependencies: "@types/node" "*" "@types/http-assert@*": version "1.5.3" - resolved "https://registry.yarnpkg.com/@types/http-assert/-/http-assert-1.5.3.tgz#ef8e3d1a8d46c387f04ab0f2e8ab8cb0c5078661" + resolved "https://registry.npmjs.org/@types/http-assert/-/http-assert-1.5.3.tgz" integrity sha512-FyAOrDuQmBi8/or3ns4rwPno7/9tJTijVW6aQQjK02+kOQ8zmoNg2XJtAuQhvQcy1ASJq38wirX5//9J1EqoUA== "@types/http-cache-semantics@*": version "4.0.1" - resolved "https://registry.yarnpkg.com/@types/http-cache-semantics/-/http-cache-semantics-4.0.1.tgz#0ea7b61496902b95890dc4c3a116b60cb8dae812" + resolved "https://registry.npmjs.org/@types/http-cache-semantics/-/http-cache-semantics-4.0.1.tgz" integrity sha512-SZs7ekbP8CN0txVG2xVRH6EgKmEm31BOxA07vkFaETzZz1xh+cbt8BcI0slpymvwhx5dlFnQG2rTlPVQn+iRPQ== "@types/http-errors@*": version "2.0.1" - resolved "https://registry.yarnpkg.com/@types/http-errors/-/http-errors-2.0.1.tgz#20172f9578b225f6c7da63446f56d4ce108d5a65" + resolved "https://registry.npmjs.org/@types/http-errors/-/http-errors-2.0.1.tgz" integrity sha512-/K3ds8TRAfBvi5vfjuz8y6+GiAYBZ0x4tXv1Av6CWBWn0IlADc+ZX9pMq7oU0fNQPnBwIZl3rmeLp6SBApbxSQ== -"@types/humanize-duration@^3.18.0": +"@types/humanize-duration@^3.27.0": version "3.27.1" resolved "https://registry.yarnpkg.com/@types/humanize-duration/-/humanize-duration-3.27.1.tgz#f14740d1f585a0a8e3f46359b62fda8b0eaa31e7" integrity sha512-K3e+NZlpCKd6Bd/EIdqjFJRFHbrq5TzPPLwREk5Iv/YoIjQrs6ljdAUCo+Lb2xFlGNOjGSE0dqsVD19cZL137w== "@types/inquirer@^6.5.0": version "6.5.0" - resolved "https://registry.yarnpkg.com/@types/inquirer/-/inquirer-6.5.0.tgz#b83b0bf30b88b8be7246d40e51d32fe9d10e09be" + resolved "https://registry.npmjs.org/@types/inquirer/-/inquirer-6.5.0.tgz" integrity sha512-rjaYQ9b9y/VFGOpqBEXRavc3jh0a+e6evAbI31tMda8VlPaSy0AZJfXsvmIe3wklc7W6C3zCSfleuMXR7NOyXw== dependencies: "@types/through" "*" @@ -6236,7 +6457,7 @@ "@types/ioredis4@npm:@types/ioredis@^4.28.10": version "4.28.10" - resolved "https://registry.yarnpkg.com/@types/ioredis/-/ioredis-4.28.10.tgz#40ceb157a4141088d1394bb87c98ed09a75a06ff" + resolved "https://registry.npmjs.org/@types/ioredis/-/ioredis-4.28.10.tgz" integrity sha512-69LyhUgrXdgcNDv7ogs1qXZomnfOEnSmrmMFqKgt1XMJxmoOSG/u3wYy13yACIfKuMJ8IhKgHafDO3sx19zVQQ== dependencies: "@types/node" "*" @@ -6248,82 +6469,82 @@ "@types/isomorphic-fetch@0.0.31": version "0.0.31" - resolved "https://registry.yarnpkg.com/@types/isomorphic-fetch/-/isomorphic-fetch-0.0.31.tgz#ec120166ce22f0b134e8770f40c97cd076068fae" + resolved "https://registry.npmjs.org/@types/isomorphic-fetch/-/isomorphic-fetch-0.0.31.tgz" integrity sha512-mJLpWAOSe9LmccuMkgL2wMfqTFt4kW5kEw2PhhnDT+J0AUn6e1c7dq5CJKL+iUmc9N1QrgWrah8kWqePpmemKA== "@types/istanbul-lib-coverage@*", "@types/istanbul-lib-coverage@^2.0.0", "@types/istanbul-lib-coverage@^2.0.1": version "2.0.4" - resolved "https://registry.yarnpkg.com/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.4.tgz#8467d4b3c087805d63580480890791277ce35c44" + resolved "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.4.tgz" integrity sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g== "@types/istanbul-lib-report@*": version "3.0.0" - resolved "https://registry.yarnpkg.com/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz#c14c24f18ea8190c118ee7562b7ff99a36552686" + resolved "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz" integrity sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg== dependencies: "@types/istanbul-lib-coverage" "*" "@types/istanbul-reports@^3.0.0": version "3.0.1" - resolved "https://registry.yarnpkg.com/@types/istanbul-reports/-/istanbul-reports-3.0.1.tgz#9153fe98bba2bd565a63add9436d6f0d7f8468ff" + resolved "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.1.tgz" integrity sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw== dependencies: "@types/istanbul-lib-report" "*" "@types/jest@^29.1.1": - version "29.5.1" - resolved "https://registry.yarnpkg.com/@types/jest/-/jest-29.5.1.tgz#83c818aa9a87da27d6da85d3378e5a34d2f31a47" - integrity sha512-tEuVcHrpaixS36w7hpsfLBLpjtMRJUE09/MHXn923LOVojDwyC14cWcfc0rDs0VEfUyYmt/+iX1kxxp+gZMcaQ== + version "29.5.4" + resolved "https://registry.npmjs.org/@types/jest/-/jest-29.5.4.tgz" + integrity sha512-PhglGmhWeD46FYOVLt3X7TiWjzwuVGW9wG/4qocPevXMjCmrIc5b6db9WjeGE4QYVpUAWMDv3v0IiBwObY289A== dependencies: expect "^29.0.0" pretty-format "^29.0.0" "@types/json-schema@^7.0.6": - version "7.0.11" - resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.11.tgz#d421b6c527a3037f7c84433fd2c4229e016863d3" - integrity sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ== + version "7.0.12" + resolved "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.12.tgz" + integrity sha512-Hr5Jfhc9eYOQNPYO5WLDq/n4jqijdHNlDXjuAQkkt+mWdQR+XJToOHrsD4cPaMXpn6KO7y2+wM8AZEs8VpBLVA== "@types/json5@^0.0.29": version "0.0.29" - resolved "https://registry.yarnpkg.com/@types/json5/-/json5-0.0.29.tgz#ee28707ae94e11d2b827bcbe5270bcea7f3e71ee" + resolved "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz" integrity sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ== "@types/jsonwebtoken@^8.5.9": version "8.5.9" - resolved "https://registry.yarnpkg.com/@types/jsonwebtoken/-/jsonwebtoken-8.5.9.tgz#2c064ecb0b3128d837d2764aa0b117b0ff6e4586" + resolved "https://registry.npmjs.org/@types/jsonwebtoken/-/jsonwebtoken-8.5.9.tgz" integrity sha512-272FMnFGzAVMGtu9tkr29hRL6bZj4Zs1KZNeHLnKqAvp06tAIcarTMwOh8/8bz4FmKRcMxZhZNeUAQsNLoiPhg== dependencies: "@types/node" "*" "@types/jsonwebtoken@^9.0.0": version "9.0.2" - resolved "https://registry.yarnpkg.com/@types/jsonwebtoken/-/jsonwebtoken-9.0.2.tgz#9eeb56c76dd555039be2a3972218de5bd3b8d83e" + resolved "https://registry.npmjs.org/@types/jsonwebtoken/-/jsonwebtoken-9.0.2.tgz" integrity sha512-drE6uz7QBKq1fYqqoFKTDRdFCPHd5TCub75BM+D+cMx7NU9hUz7SESLfC2fSCXVFMO5Yj8sOWHuGqPgjc+fz0Q== dependencies: "@types/node" "*" "@types/keygrip@*": version "1.0.2" - resolved "https://registry.yarnpkg.com/@types/keygrip/-/keygrip-1.0.2.tgz#513abfd256d7ad0bf1ee1873606317b33b1b2a72" + resolved "https://registry.npmjs.org/@types/keygrip/-/keygrip-1.0.2.tgz" integrity sha512-GJhpTepz2udxGexqos8wgaBx4I/zWIDPh/KOGEwAqtuGDkOUJu5eFvwmdBX4AmB8Odsr+9pHCQqiAqDL/yKMKw== "@types/keyv@^3.1.4": version "3.1.4" - resolved "https://registry.yarnpkg.com/@types/keyv/-/keyv-3.1.4.tgz#3ccdb1c6751b0c7e52300bcdacd5bcbf8faa75b6" + resolved "https://registry.npmjs.org/@types/keyv/-/keyv-3.1.4.tgz" integrity sha512-BQ5aZNSCpj7D6K2ksrRCTmKRLEpnPvWDiLPfoGyhZ++8YtiK9d/3DBKPJgry359X/P1PfruyYwvnvwFjuEiEIg== dependencies: "@types/node" "*" "@types/koa-compose@*": version "3.2.5" - resolved "https://registry.yarnpkg.com/@types/koa-compose/-/koa-compose-3.2.5.tgz#85eb2e80ac50be95f37ccf8c407c09bbe3468e9d" + resolved "https://registry.npmjs.org/@types/koa-compose/-/koa-compose-3.2.5.tgz" integrity sha512-B8nG/OoE1ORZqCkBVsup/AKcvjdgoHnfi4pZMn5UwAPCbhk/96xyv284eBYW8JlQbQ7zDmnpFr68I/40mFoIBQ== dependencies: "@types/koa" "*" "@types/koa@*": version "2.13.8" - resolved "https://registry.yarnpkg.com/@types/koa/-/koa-2.13.8.tgz#4302d2f2712348aadb6c0b03eb614f30afde486b" + resolved "https://registry.npmjs.org/@types/koa/-/koa-2.13.8.tgz" integrity sha512-Ugmxmgk/yPRW3ptBTh9VjOLwsKWJuGbymo1uGX0qdaqqL18uJiiG1ZoV0rxCOYSaDGhvEp5Ece02Amx0iwaxQQ== dependencies: "@types/accepts" "*" @@ -6337,7 +6558,7 @@ "@types/koa@2.13.6": version "2.13.6" - resolved "https://registry.yarnpkg.com/@types/koa/-/koa-2.13.6.tgz#6dc14e727baf397310aa6f414ebe5d144983af42" + resolved "https://registry.npmjs.org/@types/koa/-/koa-2.13.6.tgz" integrity sha512-diYUfp/GqfWBAiwxHtYJ/FQYIXhlEhlyaU7lB/bWQrx4Il9lCET5UwpFy3StOAohfsxxvEQ11qIJgT1j2tfBvw== dependencies: "@types/accepts" "*" @@ -6351,24 +6572,24 @@ "@types/koa__router@8.0.7": version "8.0.7" - resolved "https://registry.yarnpkg.com/@types/koa__router/-/koa__router-8.0.7.tgz#663d69d5ddebff5aaca27c0594430b3ba6ea20be" + resolved "https://registry.npmjs.org/@types/koa__router/-/koa__router-8.0.7.tgz" integrity sha512-OB3Ax75nmTP+WR9AgdzA42DI7YmBtiNKN2g1Wxl+d5Dyek9SWt740t+ukwXSmv/jMBCUPyV3YEI93vZHgdP7UQ== dependencies: "@types/koa" "*" "@types/ledgerhq__hw-transport-node-hid@^4.22.2": - version "4.22.2" - resolved "https://registry.yarnpkg.com/@types/ledgerhq__hw-transport-node-hid/-/ledgerhq__hw-transport-node-hid-4.22.2.tgz#f3de58b9b49b461dd96e5bfb646328c242e70aca" - integrity sha512-b9dXYEZ8Iijv20LykEVhbThVzSjchMpvj8y/mSsCSP1n7Ncs+YqD8mjEV/bGTks9jAP8CdxhRqOGq+h47/4B9g== + version "4.22.3" + resolved "https://registry.yarnpkg.com/@types/ledgerhq__hw-transport-node-hid/-/ledgerhq__hw-transport-node-hid-4.22.3.tgz#e21f05bc4625083cbd24d2e98d3ef4219beb1d89" + integrity sha512-r9x2cpLixU1JBPBOk/efyoE+9/0D+gK6180RNXuWP1h1CSbyNzrJ9kvlj26aPuLecAj61HA2IqkfCLRQiBPFkA== dependencies: "@types/ledgerhq__hw-transport" "*" "@types/node" "*" "@types/node-hid" "*" "@types/ledgerhq__hw-transport@*": - version "4.21.4" - resolved "https://registry.yarnpkg.com/@types/ledgerhq__hw-transport/-/ledgerhq__hw-transport-4.21.4.tgz#3a78a02d2b51d2b0dd8099412d5567d21118225c" - integrity sha512-vep+6yZnGv6owAthIY0w3f72w4dJIb4+yE5PCHveInTlZE9wukvU6Wc5Eig0OUUxcdhTazzeZx1xUaNVLqyQSg== + version "4.21.5" + resolved "https://registry.yarnpkg.com/@types/ledgerhq__hw-transport/-/ledgerhq__hw-transport-4.21.5.tgz#32c11b0bbcaeb42ee5af1144b0dd6cfc26806236" + integrity sha512-P/Og33z6FcpxM51jSZTPds+4T78u4+QjgeNSUlCTDIas1MBbA1UNWiG+AsXBcmYAWg3TbTO0nK+cTCUKAVUxEQ== dependencies: "@types/node" "*" @@ -6381,33 +6602,38 @@ "@types/node" "*" "@types/linkify-it@*": - version "3.0.2" - resolved "https://registry.yarnpkg.com/@types/linkify-it/-/linkify-it-3.0.2.tgz#fd2cd2edbaa7eaac7e7f3c1748b52a19143846c9" - integrity sha512-HZQYqbiFVWufzCwexrvh694SOim8z2d+xJl5UNamcvQFejLY/2YUtzXHYi3cHdI7PMlS8ejH2slRAOJQ32aNbA== + version "3.0.3" + resolved "https://registry.npmjs.org/@types/linkify-it/-/linkify-it-3.0.3.tgz" + integrity sha512-pTjcqY9E4nOI55Wgpz7eiI8+LzdYnw3qxXCfHyBDdPbYvbyLgWLJGh8EdPvqawwMK1Uo1794AUkkR38Fr0g+2g== "@types/lodash@^4.14.104", "@types/lodash@^4.14.170": - version "4.14.194" - resolved "https://registry.yarnpkg.com/@types/lodash/-/lodash-4.14.194.tgz#b71eb6f7a0ff11bff59fc987134a093029258a76" - integrity sha512-r22s9tAS7imvBt2lyHC9B8AGwWnXaYb1tY09oyLkXDs4vArpYJzw09nj8MLx5VfciBPGIb+ZwG0ssYnEPJxn/g== + version "4.14.198" + resolved "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.198.tgz" + integrity sha512-trNJ/vtMZYMLhfN45uLq4ShQSw0/S7xCTLLVM+WM1rmFpba/VS42jVUgaO3w/NOLiWR/09lnYk0yMaA/atdIsg== "@types/long@^3.0.0": version "3.0.32" - resolved "https://registry.yarnpkg.com/@types/long/-/long-3.0.32.tgz#f4e5af31e9e9b196d8e5fca8a5e2e20aa3d60b69" + resolved "https://registry.npmjs.org/@types/long/-/long-3.0.32.tgz" integrity sha512-ZXyOOm83p7X8p3s0IYM3VeueNmHpkk/yMlP8CLeOnEcu6hIwPH7YjZBvhQkR0ZFS2DqZAxKtJ/M5fcuv3OU5BA== "@types/long@^4.0.0", "@types/long@^4.0.1": version "4.0.2" - resolved "https://registry.yarnpkg.com/@types/long/-/long-4.0.2.tgz#b74129719fc8d11c01868010082d483b7545591a" + resolved "https://registry.npmjs.org/@types/long/-/long-4.0.2.tgz" integrity sha512-MqTGEo5bj5t157U6fA/BiDynNkn0YknVdh48CMPkTSpFTVmvao5UQmm7uEF6xBEo7qIMAlY/JSleYaE6VOdpaA== "@types/lru-cache@5.1.1": version "5.1.1" - resolved "https://registry.yarnpkg.com/@types/lru-cache/-/lru-cache-5.1.1.tgz#c48c2e27b65d2a153b19bfc1a317e30872e01eef" + resolved "https://registry.npmjs.org/@types/lru-cache/-/lru-cache-5.1.1.tgz" integrity sha512-ssE3Vlrys7sdIzs5LOxCzTVMsU7i9oa/IaW92wF32JFb3CVczqOkru2xspuKczHEbG3nvmPY7IFqVmGGHdNbYw== +"@types/luxon@~3.3.0": + version "3.3.2" + resolved "https://registry.npmjs.org/@types/luxon/-/luxon-3.3.2.tgz" + integrity sha512-l5cpE57br4BIjK+9BSkFBOsWtwv6J9bJpC7gdXIzZyI0vuKvNTk0wZZrkQxMGsUAuGW9+WMNWF2IJMD7br2yeQ== + "@types/markdown-it@^12.2.3": version "12.2.3" - resolved "https://registry.yarnpkg.com/@types/markdown-it/-/markdown-it-12.2.3.tgz#0d6f6e5e413f8daaa26522904597be3d6cd93b51" + resolved "https://registry.npmjs.org/@types/markdown-it/-/markdown-it-12.2.3.tgz" integrity sha512-GKMHFfv3458yYy+v/N8gjufHO6MSZKCOXpZc5GXIWWy8uldwfmPn98vp81gZ5f9SVw8YYBctgfJ22a2d7AOMeQ== dependencies: "@types/linkify-it" "*" @@ -6422,44 +6648,44 @@ "@types/mdurl@*": version "1.0.2" - resolved "https://registry.yarnpkg.com/@types/mdurl/-/mdurl-1.0.2.tgz#e2ce9d83a613bacf284c7be7d491945e39e1f8e9" + resolved "https://registry.npmjs.org/@types/mdurl/-/mdurl-1.0.2.tgz" integrity sha512-eC4U9MlIcu2q0KQmXszyn5Akca/0jrQmwDRgpAMJai7qBWq4amIQhZyNau4VYGtCeALvW1/NtjzJJ567aZxfKA== "@types/memcached@^2.2.6": version "2.2.7" - resolved "https://registry.yarnpkg.com/@types/memcached/-/memcached-2.2.7.tgz#b3de026a11a4c0a18fb079cfeeaea10a41da20f9" + resolved "https://registry.npmjs.org/@types/memcached/-/memcached-2.2.7.tgz" integrity sha512-ImJbz1i8pl+OnyhYdIDnHe8jAuM8TOwM/7VsciqhYX3IL0jPPUToAtVxklfcWFGYckahEYZxhd9FS0z3MM1dpA== dependencies: "@types/node" "*" "@types/mime-db@*": version "1.43.1" - resolved "https://registry.yarnpkg.com/@types/mime-db/-/mime-db-1.43.1.tgz#c2a0522453bb9b6e84ee48b7eef765d19bcd519e" + resolved "https://registry.npmjs.org/@types/mime-db/-/mime-db-1.43.1.tgz" integrity sha512-kGZJY+R+WnR5Rk+RPHUMERtb2qBRViIHCBdtUrY+NmwuGb8pQdfTqQiCKPrxpdoycl8KWm2DLdkpoSdt479XoQ== "@types/mime@*": version "3.0.1" - resolved "https://registry.yarnpkg.com/@types/mime/-/mime-3.0.1.tgz#5f8f2bca0a5863cb69bc0b0acd88c96cb1d4ae10" + resolved "https://registry.npmjs.org/@types/mime/-/mime-3.0.1.tgz" integrity sha512-Y4XFY5VJAuw0FgAqPNd6NNoV44jbq9Bz2L7Rh/J6jLTiHBSBJa9fxqQIvkIld4GsoDOcCbvzOUAbLPsSKKg+uA== "@types/mime@^1": version "1.3.2" - resolved "https://registry.yarnpkg.com/@types/mime/-/mime-1.3.2.tgz#93e25bf9ee75fe0fd80b594bc4feb0e862111b5a" + resolved "https://registry.npmjs.org/@types/mime/-/mime-1.3.2.tgz" integrity sha512-YATxVxgRqNH6nHEIsvg6k2Boc1JHI9ZbH5iWFFv/MTkchz3b1ieGDa5T0a9RznNdI0KhVbdbWSN+KWWrQZRxTw== "@types/minimatch@*", "@types/minimatch@^5.1.2": version "5.1.2" - resolved "https://registry.yarnpkg.com/@types/minimatch/-/minimatch-5.1.2.tgz#07508b45797cb81ec3f273011b054cd0755eddca" + resolved "https://registry.npmjs.org/@types/minimatch/-/minimatch-5.1.2.tgz" integrity sha512-K0VQKziLUWkVKiRVrx4a40iPaxTUefQmjtkQofBkYRcoaaL/8rhwDWww9qWbrgicNOgnpIsMxyNIUM4+n6dUIA== "@types/minimatch@^3.0.3": version "3.0.5" - resolved "https://registry.yarnpkg.com/@types/minimatch/-/minimatch-3.0.5.tgz#1001cc5e6a3704b83c236027e77f2f58ea010f40" + resolved "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.5.tgz" integrity sha512-Klz949h02Gz2uZCMGwDUSDS1YBlTdDDgbWHi+81l29tQALUtvz4rAYi5uoVhE5Lagoq6DeqAUlbrHvW/mXDgdQ== "@types/minimist@^1.2.0": version "1.2.2" - resolved "https://registry.yarnpkg.com/@types/minimist/-/minimist-1.2.2.tgz#ee771e2ba4b3dc5b372935d549fd9617bf345b8c" + resolved "https://registry.npmjs.org/@types/minimist/-/minimist-1.2.2.tgz" integrity sha512-jhuKLIRrhvCPLqwPcx6INqmKeiA5EWrsCOPhrlFSrbrmU4ZMPjj5Ul/oLCMDO98XRUIwVm78xICz4EPCektzeQ== "@types/mkdirp@^0.5.2": @@ -6471,35 +6697,35 @@ "@types/mocha@^10.0.1": version "10.0.1" - resolved "https://registry.yarnpkg.com/@types/mocha/-/mocha-10.0.1.tgz#2f4f65bb08bc368ac39c96da7b2f09140b26851b" + resolved "https://registry.npmjs.org/@types/mocha/-/mocha-10.0.1.tgz" integrity sha512-/fvYntiO1GeICvqbQ3doGDIP97vWmvFt83GKguJ6prmQM2iXZfFcq6YE8KteFyRtX2/h5Hf91BYvPodJKFYv5Q== "@types/mocha@^5.2.5", "@types/mocha@^5.2.7": version "5.2.7" - resolved "https://registry.yarnpkg.com/@types/mocha/-/mocha-5.2.7.tgz#315d570ccb56c53452ff8638738df60726d5b6ea" + resolved "https://registry.npmjs.org/@types/mocha/-/mocha-5.2.7.tgz" integrity sha512-NYrtPht0wGzhwe9+/idPaBB+TqkY9AhTvOLMkThm0IoEfLaiVQZwBwyJ5puCkO3AUCWrmcoePjp2mbFocKy4SQ== "@types/mocha@^7.0.2": version "7.0.2" - resolved "https://registry.yarnpkg.com/@types/mocha/-/mocha-7.0.2.tgz#b17f16cf933597e10d6d78eae3251e692ce8b0ce" + resolved "https://registry.npmjs.org/@types/mocha/-/mocha-7.0.2.tgz" integrity sha512-ZvO2tAcjmMi8V/5Z3JsyofMe3hasRcaw88cto5etSVMwVQfeivGAlEYmaQgceUSVYFofVjT+ioHsATjdWcFt1w== "@types/ms@*": version "0.7.31" - resolved "https://registry.yarnpkg.com/@types/ms/-/ms-0.7.31.tgz#31b7ca6407128a3d2bbc27fe2d21b345397f6197" + resolved "https://registry.npmjs.org/@types/ms/-/ms-0.7.31.tgz" integrity sha512-iiUgKzV9AuaEkZqkOLDIvlQiL6ltuZd9tGcW3gwpnX8JbuiuhFlEGmmFXEXkN50Cvq7Os88IY2v0dkDqXYWVgA== "@types/mysql@2.15.21": version "2.15.21" - resolved "https://registry.yarnpkg.com/@types/mysql/-/mysql-2.15.21.tgz#7516cba7f9d077f980100c85fd500c8210bd5e45" + resolved "https://registry.npmjs.org/@types/mysql/-/mysql-2.15.21.tgz" integrity sha512-NPotx5CVful7yB+qZbWtXL2fA4e7aEHkihHLjklc6ID8aq7bhguHgeIoC1EmSNTAuCgI6ZXrjt2ZSaXnYX0EUg== dependencies: "@types/node" "*" "@types/node-fetch@^2.5.7": - version "2.6.3" - resolved "https://registry.yarnpkg.com/@types/node-fetch/-/node-fetch-2.6.3.tgz#175d977f5e24d93ad0f57602693c435c57ad7e80" - integrity sha512-ETTL1mOEdq/sxUtgtOhKjyB2Irra4cjxksvcMUR5Zr4n+PxVhsCD9WS46oPbHL3et9Zde7CNRr+WUNlcHvsX+w== + version "2.6.4" + resolved "https://registry.yarnpkg.com/@types/node-fetch/-/node-fetch-2.6.4.tgz#1bc3a26de814f6bf466b25aeb1473fa1afe6a660" + integrity sha512-1ZX9fcN4Rvkvgv4E6PAY5WXUFWFcRWxZa3EW83UjycOB9ljJCedb2CupIP4RZMEwF/M3eTcCihbBRgwtGbg5Rg== dependencies: "@types/node" "*" form-data "^3.0.0" @@ -6511,44 +6737,44 @@ dependencies: "@types/node" "*" -"@types/node@*", "@types/node@18.15.13", "@types/node@>=12.12.47", "@types/node@>=13.7.0", "@types/node@^18.7.16": - version "18.15.13" - resolved "https://registry.yarnpkg.com/@types/node/-/node-18.15.13.tgz#f64277c341150c979e42b00e4ac289290c9df469" - integrity sha512-N+0kuo9KgrUQ1Sn/ifDXsvg0TTleP7rIy4zOBGECxAljqvqfqpTfzx0Q1NUedOixRMBfe2Whhb056a42cWs26Q== +"@types/node@*", "@types/node@18.7.16": + version "18.7.16" + resolved "https://registry.npmjs.org/@types/node/-/node-18.7.16.tgz" + integrity sha512-EQHhixfu+mkqHMZl1R2Ovuvn47PUw18azMJOTwSZr9/fhzHNGXAJ0ma0dayRVchprpCj0Kc1K1xKoWaATWF1qg== "@types/node@10.12.18": version "10.12.18" - resolved "https://registry.yarnpkg.com/@types/node/-/node-10.12.18.tgz#1d3ca764718915584fcd9f6344621b7672665c67" + resolved "https://registry.npmjs.org/@types/node/-/node-10.12.18.tgz" integrity sha512-fh+pAqt4xRzPfqA6eh3Z2y6fyZavRIumvjhaCL753+TVkGKGhpPeyrJG2JftD0T9q4GF00KjefsQ+PQNDdWQaQ== "@types/node@11.11.6": version "11.11.6" - resolved "https://registry.yarnpkg.com/@types/node/-/node-11.11.6.tgz#df929d1bb2eee5afdda598a41930fe50b43eaa6a" + resolved "https://registry.npmjs.org/@types/node/-/node-11.11.6.tgz" integrity sha512-Exw4yUWMBXM3X+8oqzJNRqZSwUAaS4+7NdvHqQuFi/d+synz++xmX3QIf+BFqneW8N31R8Ky+sikfZUXq07ggQ== "@types/node@12.12.54": version "12.12.54" - resolved "https://registry.yarnpkg.com/@types/node/-/node-12.12.54.tgz#a4b58d8df3a4677b6c08bfbc94b7ad7a7a5f82d1" + resolved "https://registry.npmjs.org/@types/node/-/node-12.12.54.tgz" integrity sha512-ge4xZ3vSBornVYlDnk7yZ0gK6ChHf/CHB7Gl1I0Jhah8DDnEQqBzgohYG4FX4p81TNirSETOiSyn+y1r9/IR6w== -"@types/node@18.7.16": - version "18.7.16" - resolved "https://registry.yarnpkg.com/@types/node/-/node-18.7.16.tgz#0eb3cce1e37c79619943d2fd903919fc30850601" - integrity sha512-EQHhixfu+mkqHMZl1R2Ovuvn47PUw18azMJOTwSZr9/fhzHNGXAJ0ma0dayRVchprpCj0Kc1K1xKoWaATWF1qg== +"@types/node@18.15.13", "@types/node@>=12.12.47", "@types/node@>=13.7.0", "@types/node@^18.7.16": + version "18.15.13" + resolved "https://registry.npmjs.org/@types/node/-/node-18.15.13.tgz" + integrity sha512-N+0kuo9KgrUQ1Sn/ifDXsvg0TTleP7rIy4zOBGECxAljqvqfqpTfzx0Q1NUedOixRMBfe2Whhb056a42cWs26Q== "@types/node@^10.0.3", "@types/node@^10.1.0", "@types/node@^10.12.18", "@types/node@^10.3.2": version "10.17.60" - resolved "https://registry.yarnpkg.com/@types/node/-/node-10.17.60.tgz#35f3d6213daed95da7f0f73e75bcc6980e90597b" + resolved "https://registry.npmjs.org/@types/node/-/node-10.17.60.tgz" integrity sha512-F0KIgDJfy2nA3zMLmWGKxcH2ZVEtCZXHHdOQs2gSaQ27+lNeEfGxzkIw90aXswATX7AZ33tahPbzy6KAfUreVw== "@types/node@^12.11.7", "@types/node@^12.12.17", "@types/node@^12.12.6", "@types/node@^12.6.1": version "12.20.55" - resolved "https://registry.yarnpkg.com/@types/node/-/node-12.20.55.tgz#c329cbd434c42164f846b909bd6f85b5537f6240" + resolved "https://registry.npmjs.org/@types/node/-/node-12.20.55.tgz" integrity sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ== "@types/node@^6.0.52": version "6.14.13" - resolved "https://registry.yarnpkg.com/@types/node/-/node-6.14.13.tgz#b6649578fc0b5dac88c4ef48a46cab33c50a6c72" + resolved "https://registry.npmjs.org/@types/node/-/node-6.14.13.tgz" integrity sha512-J1F0XJ/9zxlZel5ZlbeSuHW2OpabrUAqpFuC2sm2I3by8sERQ8+KCjNKUcq8QHuzpGMWiJpo9ZxeHrqrP2KzQw== "@types/node@^8.0.0": @@ -6558,36 +6784,36 @@ "@types/normalize-package-data@^2.4.0": version "2.4.1" - resolved "https://registry.yarnpkg.com/@types/normalize-package-data/-/normalize-package-data-2.4.1.tgz#d3357479a0fdfdd5907fe67e17e0a85c906e1301" + resolved "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.1.tgz" integrity sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw== "@types/p-defer@^1.0.3": version "1.0.3" - resolved "https://registry.yarnpkg.com/@types/p-defer/-/p-defer-1.0.3.tgz#786ce79c86f779fcd9e9bec4f1fbd1167aeac064" + resolved "https://registry.npmjs.org/@types/p-defer/-/p-defer-1.0.3.tgz" integrity sha512-0CK39nXek0mSZL/lnGYjhcR1QLAxg9N0/5S1BvU+MQwjlP4Jd2ebbEkJ/bEUqYMAvKLMZcGd4sJE13dnUKlDnQ== "@types/parse-json@^4.0.0": version "4.0.0" - resolved "https://registry.yarnpkg.com/@types/parse-json/-/parse-json-4.0.0.tgz#2f8bb441434d163b35fb8ffdccd7138927ffb8c0" + resolved "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.0.tgz" integrity sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA== "@types/pbkdf2@^3.0.0": version "3.1.0" - resolved "https://registry.yarnpkg.com/@types/pbkdf2/-/pbkdf2-3.1.0.tgz#039a0e9b67da0cdc4ee5dab865caa6b267bb66b1" + resolved "https://registry.npmjs.org/@types/pbkdf2/-/pbkdf2-3.1.0.tgz" integrity sha512-Cf63Rv7jCQ0LaL8tNXmEyqTHuIJxRdlS5vMh1mj5voN4+QFhVZnlZruezqpWYDiJ8UTzhP0VmeLXCmBk66YrMQ== dependencies: "@types/node" "*" "@types/pg-pool@2.0.3": version "2.0.3" - resolved "https://registry.yarnpkg.com/@types/pg-pool/-/pg-pool-2.0.3.tgz#3eb8df2933f617f219a53091ad4080c94ba1c959" + resolved "https://registry.npmjs.org/@types/pg-pool/-/pg-pool-2.0.3.tgz" integrity sha512-fwK5WtG42Yb5RxAwxm3Cc2dJ39FlgcaNiXKvtTLAwtCn642X7dgel+w1+cLWwpSOFImR3YjsZtbkfjxbHtFAeg== dependencies: "@types/pg" "*" "@types/pg@*": version "8.10.2" - resolved "https://registry.yarnpkg.com/@types/pg/-/pg-8.10.2.tgz#7814d1ca02c8071f4d0864c1b17c589b061dba43" + resolved "https://registry.npmjs.org/@types/pg/-/pg-8.10.2.tgz" integrity sha512-MKFs9P6nJ+LAeHLU3V0cODEOgyThJ3OAnmOlsZsxux6sfQs3HRXR5bBn7xG5DjckEFhTAxsXi7k7cd0pCMxpJw== dependencies: "@types/node" "*" @@ -6596,7 +6822,7 @@ "@types/pg@8.6.1": version "8.6.1" - resolved "https://registry.yarnpkg.com/@types/pg/-/pg-8.6.1.tgz#099450b8dc977e8197a44f5229cedef95c8747f9" + resolved "https://registry.npmjs.org/@types/pg/-/pg-8.6.1.tgz" integrity sha512-1Kc4oAGzAl7uqUStZCDvaLFqZrW9qWSjXOmBfdgyBP5La7Us6Mg4GBvRlSoaZMhQF/zSj1C8CtKMBkoiT8eL8w== dependencies: "@types/node" "*" @@ -6605,7 +6831,7 @@ "@types/pg@^7.14.3": version "7.14.11" - resolved "https://registry.yarnpkg.com/@types/pg/-/pg-7.14.11.tgz#daf5555504a1f7af4263df265d91f140fece52e3" + resolved "https://registry.npmjs.org/@types/pg/-/pg-7.14.11.tgz" integrity sha512-EnZkZ1OMw9DvNfQkn2MTJrwKmhJYDEs5ujWrPfvseWNoI95N8B4HzU/Ltrq5ZfYxDX/Zg8mTzwr6UAyTjjFvXA== dependencies: "@types/node" "*" @@ -6619,12 +6845,12 @@ "@types/prettier@^2.1.5": version "2.7.2" - resolved "https://registry.yarnpkg.com/@types/prettier/-/prettier-2.7.2.tgz#6c2324641cc4ba050a8c710b2b251b377581fbf0" + resolved "https://registry.npmjs.org/@types/prettier/-/prettier-2.7.2.tgz" integrity sha512-KufADq8uQqo1pYKVIYzfKbJfBAc0sOeXqGbFaSpv8MRmC/zXgowNZmFcbngndGk922QDmOASEXUZCaY48gs4cg== "@types/prompt@1.1.1": version "1.1.1" - resolved "https://registry.yarnpkg.com/@types/prompt/-/prompt-1.1.1.tgz#b78e9964db26910e41aea68fbfb204adcb548e16" + resolved "https://registry.npmjs.org/@types/prompt/-/prompt-1.1.1.tgz" integrity sha512-Ht3nSZy87jqKM5Y92GWKD6RQTqQIi6tAKhrWgEvFPh+P13L5olqBYs+P1HySBYRHyIezEqrB3StK4X7lBFmIEQ== dependencies: "@types/node" "*" @@ -6632,46 +6858,51 @@ "@types/prompts@^1.1.1": version "1.2.0" - resolved "https://registry.yarnpkg.com/@types/prompts/-/prompts-1.2.0.tgz#891e73f735ad5e82e8adae3a99424128e105fb62" + resolved "https://registry.npmjs.org/@types/prompts/-/prompts-1.2.0.tgz" integrity sha512-7JXpT2rSd4hqd2oBWU1wfEW6x6gX+qPH+gLzGEx+My3wcb67K9Rc02xNQRVn67phusmXm5Yqn4oTP2OW1G5zdQ== "@types/prop-types@*": version "15.7.5" - resolved "https://registry.yarnpkg.com/@types/prop-types/-/prop-types-15.7.5.tgz#5f19d2b85a98e9558036f6a3cacc8819420f05cf" + resolved "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.5.tgz" integrity sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w== "@types/pvutils@*": version "1.0.1" - resolved "https://registry.yarnpkg.com/@types/pvutils/-/pvutils-1.0.1.tgz#f23c5c7915faedf4d281226579cf361127adea11" + resolved "https://registry.npmjs.org/@types/pvutils/-/pvutils-1.0.1.tgz" integrity sha512-OwGyloDb4Gz7cKzFt1ZfHkNXbh1gxd5706hPF5ot4cvsa2EfbqY1tz2nWtu6xWDccNSZ16p/pi027gloQu4hsQ== "@types/qrcode@^1.3.4": - version "1.5.0" - resolved "https://registry.yarnpkg.com/@types/qrcode/-/qrcode-1.5.0.tgz#6a98fe9a9a7b2a9a3167b6dde17eff999eabe40b" - integrity sha512-x5ilHXRxUPIMfjtM+1vf/GPTRWZ81nqscursm5gMznJeK9M0YnZ1c3bEvRLQ0zSSgedLx1J6MGL231ObQGGhaA== + version "1.5.2" + resolved "https://registry.npmjs.org/@types/qrcode/-/qrcode-1.5.2.tgz" + integrity sha512-W4KDz75m7rJjFbyCctzCtRzZUj+PrUHV+YjqDp50sSRezTbrtEAIq2iTzC6lISARl3qw+8IlcCyljdcVJE0Wug== dependencies: "@types/node" "*" -"@types/qs@*", "@types/qs@^6.2.31": +"@types/qs@*": version "6.9.7" - resolved "https://registry.yarnpkg.com/@types/qs/-/qs-6.9.7.tgz#63bb7d067db107cc1e457c303bc25d511febf6cb" + resolved "https://registry.npmjs.org/@types/qs/-/qs-6.9.7.tgz" integrity sha512-FGa1F62FT09qcrueBA6qYTrJPVDzah9a+493+o2PCXsesWHIn27G98TsSMs3WPNbZIEj4+VJf6saSFpvD+3Zsw== +"@types/qs@^6.2.31": + version "6.9.8" + resolved "https://registry.yarnpkg.com/@types/qs/-/qs-6.9.8.tgz#f2a7de3c107b89b441e071d5472e6b726b4adf45" + integrity sha512-u95svzDlTysU5xecFNTgfFG5RUWu1A9P0VzgpcIiGZA9iraHOdSzcxMxQ55DyeRaGCSxQi7LxXDI4rzq/MYfdg== + "@types/randombytes@^2.0.0": version "2.0.0" - resolved "https://registry.yarnpkg.com/@types/randombytes/-/randombytes-2.0.0.tgz#0087ff5e60ae68023b9bc4398b406fea7ad18304" + resolved "https://registry.npmjs.org/@types/randombytes/-/randombytes-2.0.0.tgz" integrity sha512-bz8PhAVlwN72vqefzxa14DKNT8jK/mV66CSjwdVQM/k3Th3EPKfUtdMniwZgMedQTFuywAsfjnZsg+pEnltaMA== dependencies: "@types/node" "*" "@types/range-parser@*": version "1.2.4" - resolved "https://registry.yarnpkg.com/@types/range-parser/-/range-parser-1.2.4.tgz#cd667bcfdd025213aafb7ca5915a932590acdcdc" + resolved "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.4.tgz" integrity sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw== "@types/react@*": version "18.0.38" - resolved "https://registry.yarnpkg.com/@types/react/-/react-18.0.38.tgz#02a23bef8848b360a0d1dceef4432c15c21c600c" + resolved "https://registry.npmjs.org/@types/react/-/react-18.0.38.tgz" integrity sha512-ExsidLLSzYj4cvaQjGnQCk4HFfVT9+EZ9XZsQ8Hsrcn8QNgXtpZ3m9vSIC2MWtx7jHictK6wYhQgGh6ic58oOw== dependencies: "@types/prop-types" "*" @@ -6680,7 +6911,7 @@ "@types/readable-stream@^2.3.13", "@types/readable-stream@^2.3.5": version "2.3.15" - resolved "https://registry.yarnpkg.com/@types/readable-stream/-/readable-stream-2.3.15.tgz#3d79c9ceb1b6a57d5f6e6976f489b9b5384321ae" + resolved "https://registry.npmjs.org/@types/readable-stream/-/readable-stream-2.3.15.tgz" integrity sha512-oM5JSKQCcICF1wvGgmecmHldZ48OZamtMxcGGVICOJA8o8cahXC1zEVAif8iwoc5j8etxFaRFnf095+CDsuoFQ== dependencies: "@types/node" "*" @@ -6688,14 +6919,14 @@ "@types/readdir-glob@*": version "1.1.1" - resolved "https://registry.yarnpkg.com/@types/readdir-glob/-/readdir-glob-1.1.1.tgz#27ac2db283e6aa3d110b14ff9da44fcd1a5c38b1" + resolved "https://registry.npmjs.org/@types/readdir-glob/-/readdir-glob-1.1.1.tgz" integrity sha512-ImM6TmoF8bgOwvehGviEj3tRdRBbQujr1N+0ypaln/GWjaerOB26jb93vsRHmdMtvVQZQebOlqt2HROark87mQ== dependencies: "@types/node" "*" "@types/request@^2.48.1": version "2.48.8" - resolved "https://registry.yarnpkg.com/@types/request/-/request-2.48.8.tgz#0b90fde3b655ab50976cb8c5ac00faca22f5a82c" + resolved "https://registry.npmjs.org/@types/request/-/request-2.48.8.tgz" integrity sha512-whjk1EDJPcAR2kYHRbFl/lKeeKYTi05A15K9bnLInCVroNDCtXce57xKdI0/rQaA3K+6q0eFyUBPmqfSndUZdQ== dependencies: "@types/caseless" "*" @@ -6712,19 +6943,19 @@ "@types/responselike@^1.0.0": version "1.0.0" - resolved "https://registry.yarnpkg.com/@types/responselike/-/responselike-1.0.0.tgz#251f4fe7d154d2bad125abe1b429b23afd262e29" + resolved "https://registry.npmjs.org/@types/responselike/-/responselike-1.0.0.tgz" integrity sha512-85Y2BjiufFzaMIlvJDvTTB8Fxl2xfLo4HgmHzVBz08w4wDePCTjYw66PdrolO0kzli3yam/YCgRufyo1DdQVTA== dependencies: "@types/node" "*" "@types/revalidator@*": - version "0.3.8" - resolved "https://registry.yarnpkg.com/@types/revalidator/-/revalidator-0.3.8.tgz#86e0b03b49736000ad42ce6b002725e74c6805ff" - integrity sha512-q6KSi3PklLGQ0CesZ/XuLwly4DXXlnJuucYOG9lrBqrP8rKiuPZThav2h2+pFjaheNpnT0qKK3i304QWIePeJw== + version "0.3.9" + resolved "https://registry.npmjs.org/@types/revalidator/-/revalidator-0.3.9.tgz" + integrity sha512-oE8dY0aO6mmunrxZY1IfS23kpiPK5qqWfEkZzApQ1KegMRtc7LFx0wU+gGxDcIAvBTmO42x4vH10E++HVIs3gg== "@types/rimraf@3.0.2", "@types/rimraf@^3.0.2": version "3.0.2" - resolved "https://registry.yarnpkg.com/@types/rimraf/-/rimraf-3.0.2.tgz#a63d175b331748e5220ad48c901d7bbf1f44eef8" + resolved "https://registry.npmjs.org/@types/rimraf/-/rimraf-3.0.2.tgz" integrity sha512-F3OznnSLAUxFrCEu/L5PY8+ny8DtcFRjx7fZZ9bycvXRi3KPTRS9HOitGZwvPg0juRhXFWIeKX58cnX5YqLohQ== dependencies: "@types/glob" "*" @@ -6732,29 +6963,29 @@ "@types/scheduler@*": version "0.16.3" - resolved "https://registry.yarnpkg.com/@types/scheduler/-/scheduler-0.16.3.tgz#cef09e3ec9af1d63d2a6cc5b383a737e24e6dcf5" + resolved "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.3.tgz" integrity sha512-5cJ8CB4yAx7BH1oMvdU0Jh9lrEXyPkar6F9G/ERswkCuvP4KQZfZkSjcMbAICCpQTN4OuZn8tz0HiKv9TGZgrQ== "@types/secp256k1@^4.0.0", "@types/secp256k1@^4.0.1": version "4.0.3" - resolved "https://registry.yarnpkg.com/@types/secp256k1/-/secp256k1-4.0.3.tgz#1b8e55d8e00f08ee7220b4d59a6abe89c37a901c" + resolved "https://registry.npmjs.org/@types/secp256k1/-/secp256k1-4.0.3.tgz" integrity sha512-Da66lEIFeIz9ltsdMZcpQvmrmmoqrfju8pm1BH8WbYjZSwUgCwXLb9C+9XYogwBITnbsSaMdVPb2ekf7TV+03w== dependencies: "@types/node" "*" "@types/seedrandom@3.0.1": version "3.0.1" - resolved "https://registry.yarnpkg.com/@types/seedrandom/-/seedrandom-3.0.1.tgz#1254750a4fec4aff2ebec088ccd0bb02e91fedb4" + resolved "https://registry.npmjs.org/@types/seedrandom/-/seedrandom-3.0.1.tgz" integrity sha512-giB9gzDeiCeloIXDgzFBCgjj1k4WxcDrZtGl6h1IqmUPlxF+Nx8Ve+96QCyDZ/HseB/uvDsKbpib9hU5cU53pw== "@types/semver@7.3.8": version "7.3.8" - resolved "https://registry.yarnpkg.com/@types/semver/-/semver-7.3.8.tgz#508a27995498d7586dcecd77c25e289bfaf90c59" + resolved "https://registry.npmjs.org/@types/semver/-/semver-7.3.8.tgz" integrity sha512-D/2EJvAlCEtYFEYmmlGwbGXuK886HzyCc3nZX/tkFTQdEU8jZDAgiv08P162yB17y4ZXZoq7yFAnW4GDBb9Now== "@types/send@*": version "0.17.1" - resolved "https://registry.yarnpkg.com/@types/send/-/send-0.17.1.tgz#ed4932b8a2a805f1fe362a70f4e62d0ac994e301" + resolved "https://registry.npmjs.org/@types/send/-/send-0.17.1.tgz" integrity sha512-Cwo8LE/0rnvX7kIIa3QHCkcuF21c05Ayb0ZfxPiv0W8VRiZiNW/WuRupHKpqqGVGf7SUA44QSOUKaEd9lIrd/Q== dependencies: "@types/mime" "^1" @@ -6762,7 +6993,7 @@ "@types/serve-static@*": version "1.15.1" - resolved "https://registry.yarnpkg.com/@types/serve-static/-/serve-static-1.15.1.tgz#86b1753f0be4f9a1bee68d459fcda5be4ea52b5d" + resolved "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.1.tgz" integrity sha512-NUo5XNiAdULrJENtJXZZ3fHtfMolzZwczzBbnAeBbqBwG+LaG6YaJtuwzwGSQZ2wsCrxjEhNNjAkKigy3n8teQ== dependencies: "@types/mime" "*" @@ -6770,58 +7001,58 @@ "@types/shimmer@^1.0.2": version "1.0.2" - resolved "https://registry.yarnpkg.com/@types/shimmer/-/shimmer-1.0.2.tgz#93eb2c243c351f3f17d5c580c7467ae5d686b65f" + resolved "https://registry.npmjs.org/@types/shimmer/-/shimmer-1.0.2.tgz" integrity sha512-dKkr1bTxbEsFlh2ARpKzcaAmsYixqt9UyCdoEZk8rHyE4iQYcDCyvSjDSf7JUWJHlJiTtbIoQjxKh6ViywqDAg== "@types/solidity-parser-antlr@^0.2.3": version "0.2.3" - resolved "https://registry.yarnpkg.com/@types/solidity-parser-antlr/-/solidity-parser-antlr-0.2.3.tgz#bb2d9c6511bf483afe4fc3e2714da8a924e59e3f" + resolved "https://registry.npmjs.org/@types/solidity-parser-antlr/-/solidity-parser-antlr-0.2.3.tgz" integrity sha512-FoSyZT+1TTaofbEtGW1oC9wHND1YshvVeHerME/Jh6gIdHbBAWFW8A97YYqO/dpHcFjIwEPEepX0Efl2ckJgwA== "@types/stack-utils@^2.0.0": version "2.0.1" - resolved "https://registry.yarnpkg.com/@types/stack-utils/-/stack-utils-2.0.1.tgz#20f18294f797f2209b5f65c8e3b5c8e8261d127c" + resolved "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.1.tgz" integrity sha512-Hl219/BT5fLAaz6NDkSuhzasy49dwQS/DSdu4MdggFB8zcXv7vflBI3xp7FEmkmdDkBUI2bPUNeMttp2knYdxw== "@types/stoppable@^1.1.0": version "1.1.1" - resolved "https://registry.yarnpkg.com/@types/stoppable/-/stoppable-1.1.1.tgz#a6f1f280e29f8f3c743277534425e0a75041d2f9" + resolved "https://registry.npmjs.org/@types/stoppable/-/stoppable-1.1.1.tgz" integrity sha512-b8N+fCADRIYYrGZOcmOR8ZNBOqhktWTB/bMUl5LvGtT201QKJZOOH5UsFyI3qtteM6ZAJbJqZoBcLqqxKIwjhw== dependencies: "@types/node" "*" "@types/string-hash@^1.1.1": version "1.1.1" - resolved "https://registry.yarnpkg.com/@types/string-hash/-/string-hash-1.1.1.tgz#4c336e61d1e13ce2d3efaaa5910005fd080e106b" + resolved "https://registry.npmjs.org/@types/string-hash/-/string-hash-1.1.1.tgz" integrity sha512-ijt3zdHi2DmZxQpQTmozXszzDo78V4R3EdvX0jFMfnMH2ZzQSmCbaWOMPGXFUYSzSIdStv78HDjg32m5dxc+tA== "@types/superagent@*": - version "4.1.16" - resolved "https://registry.yarnpkg.com/@types/superagent/-/superagent-4.1.16.tgz#12c9c16f232f9d89beab91d69368f96ce8e2d881" - integrity sha512-tLfnlJf6A5mB6ddqF159GqcDizfzbMUB1/DeT59/wBNqzRTNNKsaw79A/1TZ84X+f/EwWH8FeuSkjlCLyqS/zQ== + version "4.1.18" + resolved "https://registry.npmjs.org/@types/superagent/-/superagent-4.1.18.tgz" + integrity sha512-LOWgpacIV8GHhrsQU+QMZuomfqXiqzz3ILLkCtKx3Us6AmomFViuzKT9D693QTKgyut2oCytMG8/efOop+DB+w== dependencies: "@types/cookiejar" "*" "@types/node" "*" "@types/supertest@^2.0.12": version "2.0.12" - resolved "https://registry.yarnpkg.com/@types/supertest/-/supertest-2.0.12.tgz#ddb4a0568597c9aadff8dbec5b2e8fddbe8692fc" + resolved "https://registry.npmjs.org/@types/supertest/-/supertest-2.0.12.tgz" integrity sha512-X3HPWTwXRerBZS7Mo1k6vMVR1Z6zmJcDVn5O/31whe0tnjE4te6ZJSJGq1RiqHPjzPdMTfjCFogDJmwng9xHaQ== dependencies: "@types/superagent" "*" "@types/tar-fs@*": - version "2.0.1" - resolved "https://registry.yarnpkg.com/@types/tar-fs/-/tar-fs-2.0.1.tgz#6391dcad1b03dea2d79fac07371585ab54472bb1" - integrity sha512-qlsQyIY9sN7p221xHuXKNoMfUenOcvEBN4zI8dGsYbYCqHtTarXOEXSIgUnK+GcR0fZDse6pAIc5pIrCh9NefQ== + version "2.0.2" + resolved "https://registry.yarnpkg.com/@types/tar-fs/-/tar-fs-2.0.2.tgz#d10b844cc1fcfa87de990a7cec350ee3d168c48b" + integrity sha512-XuZRAvdo7FbDfgQCNkc8NOdSae5XtG+of2mTSgJ85G4OG0miN4E8BTGT+JBTLO87RQ7iCwsIDCqCsHnf2IaSXA== dependencies: "@types/node" "*" "@types/tar-stream" "*" "@types/tar-stream@*": - version "2.2.2" - resolved "https://registry.yarnpkg.com/@types/tar-stream/-/tar-stream-2.2.2.tgz#be9d0be9404166e4b114151f93e8442e6ab6fb1d" - integrity sha512-1AX+Yt3icFuU6kxwmPakaiGrJUwG44MpuiqPg4dSolRFk6jmvs4b3IbUol9wKDLIgU76gevn3EwE8y/DkSJCZQ== + version "2.2.3" + resolved "https://registry.yarnpkg.com/@types/tar-stream/-/tar-stream-2.2.3.tgz#f17780c6628b27ade3cd8ff3be7deebb4480f462" + integrity sha512-if3mugZfjVkXOMZdFjIHySxY13r6GXPpyOlsDmLffvyI7tLz9wXE8BFjNivXsvUeyJ1KNlOpfLnag+ISmxgxPw== dependencies: "@types/node" "*" @@ -6833,22 +7064,22 @@ "@types/tar-fs" "*" "@types/targz@^1.0.0": - version "1.0.1" - resolved "https://registry.yarnpkg.com/@types/targz/-/targz-1.0.1.tgz#8b68a867b5dc28a755fd57e62d8b17f94e28462f" - integrity sha512-Uf5QxuLICkVOmSyDhPicBpIXk2oLIqaldObfr/WsTKTAPk666OpbeL0wZuNXwc5yg9OH1cBVj1rpMHGBJe4ilg== + version "1.0.2" + resolved "https://registry.npmjs.org/@types/targz/-/targz-1.0.2.tgz" + integrity sha512-dp4IVKAWNbwG6y/qGlphwq6cd5S1f6BTc95TIRZrvJ8grsDnreKicfil5DvY7LRXAjD2ZR3uvXS2TLfHOC+NcQ== dependencies: "@types/tar-fs" "*" "@types/tedious@^4.0.6": version "4.0.9" - resolved "https://registry.yarnpkg.com/@types/tedious/-/tedious-4.0.9.tgz#baa3892e45c63d7aac54d7bf5b01385d210ff19e" + resolved "https://registry.npmjs.org/@types/tedious/-/tedious-4.0.9.tgz" integrity sha512-ipwFvfy9b2m0gjHsIX0D6NAAwGCKokzf5zJqUZHUGt+7uWVlBIy6n2eyMgiKQ8ChLFVxic/zwQUhjLYNzbHDRA== dependencies: "@types/node" "*" "@types/through@*": version "0.0.30" - resolved "https://registry.yarnpkg.com/@types/through/-/through-0.0.30.tgz#e0e42ce77e897bd6aead6f6ea62aeb135b8a3895" + resolved "https://registry.npmjs.org/@types/through/-/through-0.0.30.tgz" integrity sha512-FvnCJljyxhPM3gkRgWmxmDZyAQSiBQQWLI0A0VFL0K7W1oRUrPJSqNO0NvTnLkBcotdlp3lKvaT0JrnyRDkzOg== dependencies: "@types/node" "*" @@ -6859,28 +7090,28 @@ integrity sha512-6IwZ9HzWbCq6XoQWhxLpDjuADodH/MKXRUIDFudvgjcVdjFknvmR+DNsoUeer4XPrEnrZs04Jj+kfV9pFsrhmA== "@types/tough-cookie@*": - version "4.0.2" - resolved "https://registry.yarnpkg.com/@types/tough-cookie/-/tough-cookie-4.0.2.tgz#6286b4c7228d58ab7866d19716f3696e03a09397" - integrity sha512-Q5vtl1W5ue16D+nIaW8JWebSSraJVlK+EthKn7e7UcD4KWsaSJ8BqGPXNaPghgtcn/fhvrN17Tv8ksUsQpiplw== + version "4.0.3" + resolved "https://registry.npmjs.org/@types/tough-cookie/-/tough-cookie-4.0.3.tgz" + integrity sha512-THo502dA5PzG/sfQH+42Lw3fvmYkceefOspdCwpHRul8ik2Jv1K8I5OZz1AT3/rs46kwgMCe9bSBmDLYkkOMGg== "@types/triple-beam@^1.3.2": - version "1.3.2" - resolved "https://registry.yarnpkg.com/@types/triple-beam/-/triple-beam-1.3.2.tgz#38ecb64f01aa0d02b7c8f4222d7c38af6316fef8" - integrity sha512-txGIh+0eDFzKGC25zORnswy+br1Ha7hj5cMVwKIU7+s0U2AxxJru/jZSMU6OC9MJWP6+pc/hc6ZjyZShpsyY2g== + version "1.3.3" + resolved "https://registry.npmjs.org/@types/triple-beam/-/triple-beam-1.3.3.tgz" + integrity sha512-6tOUG+nVHn0cJbVp25JFayS5UE6+xlbcNF9Lo9mU7U0zk3zeUShZied4YEQZjy1JBF043FSkdXw8YkUJuVtB5g== "@types/utf8@^2.1.6": version "2.1.6" - resolved "https://registry.yarnpkg.com/@types/utf8/-/utf8-2.1.6.tgz#430cabb71a42d0a3613cce5621324fe4f5a25753" + resolved "https://registry.npmjs.org/@types/utf8/-/utf8-2.1.6.tgz" integrity sha512-pRs2gYF5yoKYrgSaira0DJqVg2tFuF+Qjp838xS7K+mJyY2jJzjsrl6y17GbIa4uMRogMbxs+ghNCvKg6XyNrA== "@types/uuid@^7.0.3": - version "7.0.5" - resolved "https://registry.yarnpkg.com/@types/uuid/-/uuid-7.0.5.tgz#b1d2f772142a301538fae9bdf9cf15b9f2573a29" - integrity sha512-hKB88y3YHL8oPOs/CNlaXtjWn93+Bs48sDQR37ZUqG2tLeCS7EA1cmnkKsuQsub9OKEB/y/Rw9zqJqqNSbqVlQ== + version "7.0.6" + resolved "https://registry.npmjs.org/@types/uuid/-/uuid-7.0.6.tgz" + integrity sha512-U/wu4HTp6T2dUmKqDtOUKS9cYhawuf8txqKF3Jp1iMDG8fP5HtjSldcN0g4m+/h7XHU1to1/HDCT0qeeUiu0EA== "@types/web3-provider-engine@^14.0.0": version "14.0.1" - resolved "https://registry.yarnpkg.com/@types/web3-provider-engine/-/web3-provider-engine-14.0.1.tgz#9ceb76af025e9359a28cff1f0fc4c19070c40ab7" + resolved "https://registry.npmjs.org/@types/web3-provider-engine/-/web3-provider-engine-14.0.1.tgz" integrity sha512-SaAfLJY/40wKFDsNFwaNfwqFSL6kVhTx9JD18qM+Gaw1qdAXLYF/6E7TIqWEdoG4so6fki/zxURP5NsoCePYJw== dependencies: "@types/ethereum-protocol" "*" @@ -6892,6 +7123,13 @@ dependencies: web3 "*" +"@types/ws@8.5.3": + version "8.5.3" + resolved "https://registry.yarnpkg.com/@types/ws/-/ws-8.5.3.tgz#7d25a1ffbecd3c4f2d35068d0b283c037003274d" + integrity sha512-6YOoWjruKj1uLf3INHH7D3qTXwFfEsg1kf3c0uDdSBJwfa/llkwIjrAGV7j7mVgGNbzTQ3HiHKKDXl6bJPD97w== + dependencies: + "@types/node" "*" + "@types/ws@^8.5.4": version "8.5.5" resolved "https://registry.yarnpkg.com/@types/ws/-/ws-8.5.5.tgz#af587964aa06682702ee6dcbc7be41a80e4b28eb" @@ -6901,12 +7139,12 @@ "@types/yargs-parser@*": version "21.0.0" - resolved "https://registry.yarnpkg.com/@types/yargs-parser/-/yargs-parser-21.0.0.tgz#0c60e537fa790f5f9472ed2776c2b71ec117351b" + resolved "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.0.tgz" integrity sha512-iO9ZQHkZxHn4mSakYV0vFHAVDyEOIJQrV2uZ06HxEPcx+mt8swXoZHIbaaJ2crJYFfErySgktuTZ3BeLz+XmFA== "@types/yargs@^11.0.0": version "11.1.8" - resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-11.1.8.tgz#b730ecb2bde209d12194cdf8bf9f12c4bd21965a" + resolved "https://registry.npmjs.org/@types/yargs/-/yargs-11.1.8.tgz" integrity sha512-49Pmk3GBUOrs/ZKJodGMJeEeiulv2VdfAYpGgkTCSXpNWx7KCX36+PbrkItwzrjTDHO2QoEZDpbhFoMN1lxe9A== "@types/yargs@^13.0.2": @@ -6918,7 +7156,7 @@ "@types/yargs@^17.0.8": version "17.0.24" - resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-17.0.24.tgz#b3ef8d50ad4aa6aecf6ddc97c580a00f5aa11902" + resolved "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.24.tgz" integrity sha512-6i0aC7jV6QzQB8ne1joVZ0eSFIstHsCrobmOtghM11yGlH0j43FKL2UhWdELkyps0zuf7qVTUVCCR+tgSlyLLw== dependencies: "@types/yargs-parser" "*" @@ -6929,33 +7167,33 @@ integrity sha512-5FRlVxse5P4ZaHG3GTvxwVANSmYJas1eQrTBHhjxVtqXoorm0aLmCHbhmN8Xo1yu09PaWKlleEvfE98yH4AgIw== "@xmldom/xmldom@^0.8.3": - version "0.8.7" - resolved "https://registry.yarnpkg.com/@xmldom/xmldom/-/xmldom-0.8.7.tgz#8b1e39c547013941974d83ad5e9cf5042071a9a0" - integrity sha512-sI1Ly2cODlWStkINzqGrZ8K6n+MTSbAeQnAipGyL+KZCXuHaRlj2gyyy8B/9MvsFFqN7XHryQnB2QwhzvJXovg== + version "0.8.10" + resolved "https://registry.npmjs.org/@xmldom/xmldom/-/xmldom-0.8.10.tgz" + integrity sha512-2WALfTl4xo2SkGCYRt6rDTFfk9R1czmBvUQy12gK2KuRKIpWEhcbbzy8EZXtz/jkRqHX8bFEc6FC1HjX4TUWYw== "@yarnpkg/lockfile@^1.1.0": version "1.1.0" - resolved "https://registry.yarnpkg.com/@yarnpkg/lockfile/-/lockfile-1.1.0.tgz#e77a97fbd345b76d83245edcd17d393b1b41fb31" + resolved "https://registry.npmjs.org/@yarnpkg/lockfile/-/lockfile-1.1.0.tgz" integrity sha512-GpSwvyXOcOOlV70vbnzjj4fW5xW/FdUF6nQEt1ENy7m4ZCczi1+/buVUPAqmGfqznsORNFzUMjctTIp8a9tuCQ== -"@yarnpkg/parsers@^3.0.0-rc.18": - version "3.0.0-rc.42" - resolved "https://registry.yarnpkg.com/@yarnpkg/parsers/-/parsers-3.0.0-rc.42.tgz#3814e90a81bb1f9c06cc83c6a009139c55efe94d" - integrity sha512-eW9Mbegmb5bJjwawJM9ghjUjUqciNMhC6L7XrQPF/clXS5bbP66MstsgCT5hy9VlfUh/CfBT+0Wucf531dMjHA== +"@yarnpkg/parsers@3.0.0-rc.46": + version "3.0.0-rc.46" + resolved "https://registry.npmjs.org/@yarnpkg/parsers/-/parsers-3.0.0-rc.46.tgz" + integrity sha512-aiATs7pSutzda/rq8fnuPwTglyVwjM22bNnK2ZgjrpAjQHSSl3lztd2f9evst1W/qnC58DRz7T7QndUDumAR4Q== dependencies: js-yaml "^3.10.0" tslib "^2.4.0" "@zkochan/js-yaml@0.0.6": version "0.0.6" - resolved "https://registry.yarnpkg.com/@zkochan/js-yaml/-/js-yaml-0.0.6.tgz#975f0b306e705e28b8068a07737fa46d3fc04826" + resolved "https://registry.npmjs.org/@zkochan/js-yaml/-/js-yaml-0.0.6.tgz" integrity sha512-nzvgl3VfhcELQ8LyVrYOru+UtAy1nrygk2+AGbTm8a5YcO6o8lSjAT+pfg3vJWxIoZKOUhrK6UU7xW/+00kQrg== dependencies: argparse "^2.0.1" JSONStream@^1.0.4, JSONStream@^1.2.1: version "1.3.5" - resolved "https://registry.yarnpkg.com/JSONStream/-/JSONStream-1.3.5.tgz#3208c1f08d3a4d99261ab64f92302bc15e111ca0" + resolved "https://registry.npmjs.org/JSONStream/-/JSONStream-1.3.5.tgz" integrity sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ== dependencies: jsonparse "^1.2.0" @@ -6963,17 +7201,17 @@ JSONStream@^1.0.4, JSONStream@^1.2.1: abbrev@1, abbrev@^1.0.0: version "1.1.1" - resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.1.tgz#f8f2c887ad10bf67f634f005b6987fed3179aac8" + resolved "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz" integrity sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q== abbrev@1.0.x: version "1.0.9" - resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.0.9.tgz#91b4792588a7738c25f35dd6f63752a2f8776135" + resolved "https://registry.npmjs.org/abbrev/-/abbrev-1.0.9.tgz" integrity sha512-LEyx4aLEC3x6T0UguF6YILf+ntvmOaWsVfENmIW0E9H09vKlLDGelMjjSm0jkDHALj8A8quZ/HapKNigzwge+Q== abi-to-sol@^0.6.6: version "0.6.6" - resolved "https://registry.yarnpkg.com/abi-to-sol/-/abi-to-sol-0.6.6.tgz#2f0b7ea949f7015c1a7939d200b9e8d07f2c3c6d" + resolved "https://registry.npmjs.org/abi-to-sol/-/abi-to-sol-0.6.6.tgz" integrity sha512-PRn81rSpv6NXFPYQSw7ujruqIP6UkwZ/XoFldtiqCX8+2kHVc73xVaUVvdbro06vvBVZiwnxhEIGdI4BRMwGHw== dependencies: "@truffle/abi-utils" "^0.3.0" @@ -6994,26 +7232,26 @@ abitype@0.9.3: abort-controller@3.0.0, abort-controller@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/abort-controller/-/abort-controller-3.0.0.tgz#eaf54d53b62bae4138e809ca225c8439a6efb392" + resolved "https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz" integrity sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg== dependencies: event-target-shim "^5.0.0" abort-controller@^2.0.2: version "2.0.3" - resolved "https://registry.yarnpkg.com/abort-controller/-/abort-controller-2.0.3.tgz#b174827a732efadff81227ed4b8d1cc569baf20a" + resolved "https://registry.npmjs.org/abort-controller/-/abort-controller-2.0.3.tgz" integrity sha512-EPSq5wr2aFyAZ1PejJB32IX9Qd4Nwus+adnp7STYFM5/23nLPBazqZ1oor6ZqbH+4otaaGXTlC8RN5hq3C8w9Q== dependencies: event-target-shim "^5.0.0" abortcontroller-polyfill@^1.1.9, abortcontroller-polyfill@^1.7.3: version "1.7.5" - resolved "https://registry.yarnpkg.com/abortcontroller-polyfill/-/abortcontroller-polyfill-1.7.5.tgz#6738495f4e901fbb57b6c0611d0c75f76c485bed" + resolved "https://registry.npmjs.org/abortcontroller-polyfill/-/abortcontroller-polyfill-1.7.5.tgz" integrity sha512-JMJ5soJWP18htbbxJjG7bG6yuI6pRhgJ0scHHTfkUjf6wjP912xZWvM+A4sJK3gqd9E8fcPbDnOefbA9Th/FIQ== abstract-level@1.0.3, abstract-level@^1.0.0, abstract-level@^1.0.2, abstract-level@^1.0.3: version "1.0.3" - resolved "https://registry.yarnpkg.com/abstract-level/-/abstract-level-1.0.3.tgz#78a67d3d84da55ee15201486ab44c09560070741" + resolved "https://registry.npmjs.org/abstract-level/-/abstract-level-1.0.3.tgz" integrity sha512-t6jv+xHy+VYwc4xqZMn2Pa9DjcdzvzZmQGRjTFc8spIbRGHgBrEKbPq+rYXc7CCo0lxgYvSgKVg9qZAhpVQSjA== dependencies: buffer "^6.0.3" @@ -7026,7 +7264,7 @@ abstract-level@1.0.3, abstract-level@^1.0.0, abstract-level@^1.0.2, abstract-lev abstract-leveldown@7.2.0, abstract-leveldown@^7.2.0: version "7.2.0" - resolved "https://registry.yarnpkg.com/abstract-leveldown/-/abstract-leveldown-7.2.0.tgz#08d19d4e26fb5be426f7a57004851b39e1795a2e" + resolved "https://registry.npmjs.org/abstract-leveldown/-/abstract-leveldown-7.2.0.tgz" integrity sha512-DnhQwcFEaYsvYDnACLZhMmCWd3rkOeEvglpa4q5i/5Jlm3UIsWaxVzuXvDLFCSCWRO3yy2/+V/G7FusFgejnfQ== dependencies: buffer "^6.0.3" @@ -7038,14 +7276,14 @@ abstract-leveldown@7.2.0, abstract-leveldown@^7.2.0: abstract-leveldown@^5.0.0, abstract-leveldown@~5.0.0: version "5.0.0" - resolved "https://registry.yarnpkg.com/abstract-leveldown/-/abstract-leveldown-5.0.0.tgz#f7128e1f86ccabf7d2893077ce5d06d798e386c6" + resolved "https://registry.npmjs.org/abstract-leveldown/-/abstract-leveldown-5.0.0.tgz" integrity sha512-5mU5P1gXtsMIXg65/rsYGsi93+MlogXZ9FA8JnwKurHQg64bfXwGYVdVdijNTVNOlAsuIiOwHdvFFD5JqCJQ7A== dependencies: xtend "~4.0.0" abstract-leveldown@^6.2.1: version "6.3.0" - resolved "https://registry.yarnpkg.com/abstract-leveldown/-/abstract-leveldown-6.3.0.tgz#d25221d1e6612f820c35963ba4bd739928f6026a" + resolved "https://registry.npmjs.org/abstract-leveldown/-/abstract-leveldown-6.3.0.tgz" integrity sha512-TU5nlYgta8YrBMNpc9FwQzRbiXsj49gsALsXadbGHt9CROPzX5fB0rWDR5mtdpOOKa5XqRFpbj1QroPAoPzVjQ== dependencies: buffer "^5.5.0" @@ -7056,21 +7294,21 @@ abstract-leveldown@^6.2.1: abstract-leveldown@~2.6.0: version "2.6.3" - resolved "https://registry.yarnpkg.com/abstract-leveldown/-/abstract-leveldown-2.6.3.tgz#1c5e8c6a5ef965ae8c35dfb3a8770c476b82c4b8" + resolved "https://registry.npmjs.org/abstract-leveldown/-/abstract-leveldown-2.6.3.tgz" integrity sha512-2++wDf/DYqkPR3o5tbfdhF96EfMApo1GpPfzOsR/ZYXdkSmELlvOOEAl9iKkRsktMPHdGjO4rtkBpf2I7TiTeA== dependencies: xtend "~4.0.0" abstract-leveldown@~2.7.1: version "2.7.2" - resolved "https://registry.yarnpkg.com/abstract-leveldown/-/abstract-leveldown-2.7.2.tgz#87a44d7ebebc341d59665204834c8b7e0932cc93" + resolved "https://registry.npmjs.org/abstract-leveldown/-/abstract-leveldown-2.7.2.tgz" integrity sha512-+OVvxH2rHVEhWLdbudP6p0+dNMXu8JA1CbhP19T8paTYAcX7oJ4OVjT+ZUVpv7mITxXHqDMej+GdqXBmXkw09w== dependencies: xtend "~4.0.0" abstract-leveldown@~6.2.1, abstract-leveldown@~6.2.3: version "6.2.3" - resolved "https://registry.yarnpkg.com/abstract-leveldown/-/abstract-leveldown-6.2.3.tgz#036543d87e3710f2528e47040bc3261b77a9a8eb" + resolved "https://registry.npmjs.org/abstract-leveldown/-/abstract-leveldown-6.2.3.tgz" integrity sha512-BsLm5vFMRUrrLeCcRc+G0t2qOaTzpoJQLOubq2XM72eNpjF5UdU5o/5NvlNhx95XHcAvcl8OMXr4mlg/fRgUXQ== dependencies: buffer "^5.5.0" @@ -7081,7 +7319,7 @@ abstract-leveldown@~6.2.1, abstract-leveldown@~6.2.3: accepts@^1.3.5, accepts@~1.3.5, accepts@~1.3.8: version "1.3.8" - resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.8.tgz#0bf0be125b67014adcb0b0921e62db7bffe16b2e" + resolved "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz" integrity sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw== dependencies: mime-types "~2.1.34" @@ -7089,37 +7327,32 @@ accepts@^1.3.5, accepts@~1.3.5, accepts@~1.3.8: acorn-import-assertions@^1.9.0: version "1.9.0" - resolved "https://registry.yarnpkg.com/acorn-import-assertions/-/acorn-import-assertions-1.9.0.tgz#507276249d684797c84e0734ef84860334cfb1ac" + resolved "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.9.0.tgz" integrity sha512-cmMwop9x+8KFhxvKrKfPYmN6/pKTYYHBqLa0DfvVZcKMJWNyWLnaqND7dx/qn66R7ewM1UX5XMaDVP5wlVTaVA== acorn-jsx@^5.0.0, acorn-jsx@^5.3.2: version "5.3.2" - resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.2.tgz#7ed5bb55908b3b2f1bc55c6af1653bada7f07937" + resolved "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz" integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ== acorn-walk@^8.1.1, acorn-walk@^8.2.0: version "8.2.0" - resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-8.2.0.tgz#741210f2e2426454508853a2f44d0ab83b7f69c1" + resolved "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.2.0.tgz" integrity sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA== acorn@^6.0.7: version "6.4.2" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-6.4.2.tgz#35866fd710528e92de10cf06016498e47e39e1e6" + resolved "https://registry.npmjs.org/acorn/-/acorn-6.4.2.tgz" integrity sha512-XtGIhXwF8YM8bJhGxG5kXgjkEuNGLTkoYqVE+KMR+aspr4KGYmKYg7yUe3KghyQ9yheNwLnjmzh/7+gfDBmHCQ== -acorn@^8.4.1, acorn@^8.7.0: - version "8.8.2" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.8.2.tgz#1b2f25db02af965399b9776b0c2c391276d37c4a" - integrity sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw== - -acorn@^8.8.2, acorn@^8.9.0: +acorn@^8.4.1, acorn@^8.7.0, acorn@^8.8.2, acorn@^8.9.0: version "8.10.0" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.10.0.tgz#8be5b3907a67221a81ab23c7889c4c5526b62ec5" + resolved "https://registry.npmjs.org/acorn/-/acorn-8.10.0.tgz" integrity sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw== adal-node@^0.2.2: version "0.2.4" - resolved "https://registry.yarnpkg.com/adal-node/-/adal-node-0.2.4.tgz#881beed9d493b76a86706ad5c8dc6f60eff04520" + resolved "https://registry.npmjs.org/adal-node/-/adal-node-0.2.4.tgz" integrity sha512-zIcvbwQFKMUtKxxj8YMHeTT1o/TPXfVNsTXVgXD8sxwV6h4AFQgK77dRciGhuEF9/Sdm3UQPJVPc/6XxrccSeA== dependencies: "@xmldom/xmldom" "^0.8.3" @@ -7133,52 +7366,50 @@ adal-node@^0.2.2: add-stream@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/add-stream/-/add-stream-1.0.0.tgz#6a7990437ca736d5e1288db92bd3266d5f5cb2aa" + resolved "https://registry.npmjs.org/add-stream/-/add-stream-1.0.0.tgz" integrity sha512-qQLMr+8o0WC4FZGQTcJiKBVC59JylcPSrTtk6usvmIDFUOCKegapy1VHQwRbFMOFyb/inzUVqHs+eMYKDM1YeQ== aes-js@3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/aes-js/-/aes-js-3.0.0.tgz#e21df10ad6c2053295bcbb8dab40b09dbea87e4d" + resolved "https://registry.npmjs.org/aes-js/-/aes-js-3.0.0.tgz" integrity sha512-H7wUZRn8WpTq9jocdxQ2c8x2sKo9ZVmzfRE13GiNJXfp7NcKYEdvl3vspKjXox6RIG2VtaRe4JFvxG4rqp2Zuw== aes-js@^3.1.1, aes-js@^3.1.2: version "3.1.2" - resolved "https://registry.yarnpkg.com/aes-js/-/aes-js-3.1.2.tgz#db9aabde85d5caabbfc0d4f2a4446960f627146a" + resolved "https://registry.npmjs.org/aes-js/-/aes-js-3.1.2.tgz" integrity sha512-e5pEa2kBnBOgR4Y/p20pskXI74UEz7de8ZGVo58asOtvSVG5YAbJeELPZxOmt+Bnz3rX753YKhfIn4X4l1PPRQ== agent-base@6, agent-base@^6.0.0, agent-base@^6.0.2: version "6.0.2" - resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-6.0.2.tgz#49fff58577cfee3f37176feab4c22e00f86d7f77" + resolved "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz" integrity sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ== dependencies: debug "4" agent-base@^4.3.0: version "4.3.0" - resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-4.3.0.tgz#8165f01c436009bccad0b1d122f05ed770efc6ee" + resolved "https://registry.npmjs.org/agent-base/-/agent-base-4.3.0.tgz" integrity sha512-salcGninV0nPrwpGNn4VTXBb1SOuXQBiqbrNXoeizJsHrsL6ERFM2Ne3JUSBWRE6aeNJI2ROP/WEEIDUiDe3cg== dependencies: es6-promisify "^5.0.0" -agent-base@^7.0.1, agent-base@^7.0.2, agent-base@^7.1.0: +agent-base@^7.0.2, agent-base@^7.1.0: version "7.1.0" - resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-7.1.0.tgz#536802b76bc0b34aa50195eb2442276d613e3434" + resolved "https://registry.npmjs.org/agent-base/-/agent-base-7.1.0.tgz" integrity sha512-o/zjMZRhJxny7OyEF+Op8X+efiELC7k7yOjMzgfzVqOzXqkBkWI79YoTdOtsuWd5BWhAGAuOY/Xa6xpiaWXiNg== dependencies: debug "^4.3.4" agentkeepalive@^4.1.3, agentkeepalive@^4.2.1: - version "4.3.0" - resolved "https://registry.yarnpkg.com/agentkeepalive/-/agentkeepalive-4.3.0.tgz#bb999ff07412653c1803b3ced35e50729830a255" - integrity sha512-7Epl1Blf4Sy37j4v9f9FjICCh4+KAQOyXgHEwlyBiAQLbhKdq/i2QQU3amQalS/wPhdPzDXPL5DMR5bkn+YeWg== + version "4.5.0" + resolved "https://registry.npmjs.org/agentkeepalive/-/agentkeepalive-4.5.0.tgz" + integrity sha512-5GG/5IbQQpC9FpkRGsSvZI5QYeSCzlJHdpBQntCsuTOxhKD8lqKhrleg2Yi7yvMIf82Ycmmqln9U8V9qwEiJew== dependencies: - debug "^4.1.0" - depd "^2.0.0" humanize-ms "^1.2.1" aggregate-error@^3.0.0: version "3.1.0" - resolved "https://registry.yarnpkg.com/aggregate-error/-/aggregate-error-3.1.0.tgz#92670ff50f5359bdb7a3e0d40d0ec30c5737687a" + resolved "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz" integrity sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA== dependencies: clean-stack "^2.0.0" @@ -7186,14 +7417,14 @@ aggregate-error@^3.0.0: ajv-formats@^2.1.0, ajv-formats@^2.1.1: version "2.1.1" - resolved "https://registry.yarnpkg.com/ajv-formats/-/ajv-formats-2.1.1.tgz#6e669400659eb74973bbf2e33327180a0996b520" + resolved "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.1.tgz" integrity sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA== dependencies: ajv "^8.0.0" ajv@^6.10.0, ajv@^6.10.2, ajv@^6.12.2, ajv@^6.12.3, ajv@^6.12.5, ajv@^6.12.6, ajv@^6.6.1, ajv@^6.9.1: version "6.12.6" - resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4" + resolved "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz" integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== dependencies: fast-deep-equal "^3.1.1" @@ -7203,7 +7434,7 @@ ajv@^6.10.0, ajv@^6.10.2, ajv@^6.12.2, ajv@^6.12.3, ajv@^6.12.5, ajv@^6.12.6, aj ajv@^8.0.0, ajv@^8.3.0, ajv@^8.6.3: version "8.12.0" - resolved "https://registry.yarnpkg.com/ajv/-/ajv-8.12.0.tgz#d1a0527323e22f53562c567c00991577dfbe19d1" + resolved "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz" integrity sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA== dependencies: fast-deep-equal "^3.1.1" @@ -7213,151 +7444,151 @@ ajv@^8.0.0, ajv@^8.3.0, ajv@^8.6.3: algebrite@^0.2.23: version "0.2.23" - resolved "https://registry.yarnpkg.com/algebrite/-/algebrite-0.2.23.tgz#e0490d7c6ea7ddb0dc46fc98d1026415dfe2d853" + resolved "https://registry.npmjs.org/algebrite/-/algebrite-0.2.23.tgz" integrity sha512-9eLHJVW3QqIZMq679gqbqEl/DXux4KvSWFyvLJ75ovl92RG3lm5mkL5UmjKcUveUH5WF1/TImP8UqiWbRZJTKg== dependencies: big-integer "^1.6.15" amdefine@>=0.0.4: version "1.0.1" - resolved "https://registry.yarnpkg.com/amdefine/-/amdefine-1.0.1.tgz#4a5282ac164729e93619bcfd3ad151f817ce91f5" + resolved "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz" integrity sha512-S2Hw0TtNkMJhIabBwIojKL9YHO5T0n5eNqWJ7Lrlel/zDbftQpxpapi8tZs3X1HWa+u+QeydGmzzNU0m09+Rcg== ansi-align@^3.0.0: version "3.0.1" - resolved "https://registry.yarnpkg.com/ansi-align/-/ansi-align-3.0.1.tgz#0cdf12e111ace773a86e9a1fad1225c43cb19a59" + resolved "https://registry.npmjs.org/ansi-align/-/ansi-align-3.0.1.tgz" integrity sha512-IOfwwBF5iczOjp/WeY4YxyjqAFMQoZufdQWDd19SEExbVLNXqvpzSJ/M7Za4/sCPmQ0+GRquoA7bGcINcxew6w== dependencies: string-width "^4.1.0" ansi-color@^0.2.1: version "0.2.1" - resolved "https://registry.yarnpkg.com/ansi-color/-/ansi-color-0.2.1.tgz#3e75c037475217544ed763a8db5709fa9ae5bf9a" + resolved "https://registry.npmjs.org/ansi-color/-/ansi-color-0.2.1.tgz" integrity sha512-bF6xLaZBLpOQzgYUtYEhJx090nPSZk1BQ/q2oyBK9aMMcJHzx9uXGCjI2Y+LebsN4Jwoykr0V9whbPiogdyHoQ== ansi-colors@3.2.3: version "3.2.3" - resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-3.2.3.tgz#57d35b8686e851e2cc04c403f1c00203976a1813" + resolved "https://registry.npmjs.org/ansi-colors/-/ansi-colors-3.2.3.tgz" integrity sha512-LEHHyuhlPY3TmuUYMh2oz89lTShfvgbmzaBcxve9t/9Wuy7Dwf4yoAKcND7KFT1HAQfqZ12qtc+DUrBMeKF9nw== ansi-colors@4.1.1: version "4.1.1" - resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-4.1.1.tgz#cbb9ae256bf750af1eab344f229aa27fe94ba348" + resolved "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz" integrity sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA== ansi-colors@^4.1.1: version "4.1.3" - resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-4.1.3.tgz#37611340eb2243e70cc604cad35d63270d48781b" + resolved "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.3.tgz" integrity sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw== ansi-escapes@^3.1.0, ansi-escapes@^3.2.0: version "3.2.0" - resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-3.2.0.tgz#8780b98ff9dbf5638152d1f1fe5c1d7b4442976b" + resolved "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.2.0.tgz" integrity sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ== ansi-escapes@^4.2.1, ansi-escapes@^4.3.0: version "4.3.2" - resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-4.3.2.tgz#6b2291d1db7d98b6521d5f1efa42d0f3a9feb65e" + resolved "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz" integrity sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ== dependencies: type-fest "^0.21.3" ansi-escapes@^6.2.0: version "6.2.0" - resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-6.2.0.tgz#8a13ce75286f417f1963487d86ba9f90dccf9947" + resolved "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-6.2.0.tgz" integrity sha512-kzRaCqXnpzWs+3z5ABPQiVke+iq0KXkHo8xiWV4RPTi5Yli0l97BEQuhXV1s7+aSU/fu1kUuxgS4MsQ0fRuygw== dependencies: type-fest "^3.0.0" ansi-regex@^2.0.0, ansi-regex@^2.1.1: version "2.1.1" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df" + resolved "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz" integrity sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA== ansi-regex@^3.0.0: version "3.0.1" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-3.0.1.tgz#123d6479e92ad45ad897d4054e3c7ca7db4944e1" + resolved "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.1.tgz" integrity sha512-+O9Jct8wf++lXxxFc4hc8LsjaSq0HFzzL7cVsw8pRDIPdjKD2mT4ytDZlLuSBZ4cLKZFXIrMGO7DbQCtMJJMKw== ansi-regex@^4.1.0: version "4.1.1" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-4.1.1.tgz#164daac87ab2d6f6db3a29875e2d1766582dabed" + resolved "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz" integrity sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g== ansi-regex@^5.0.1: version "5.0.1" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304" + resolved "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz" integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ== ansi-regex@^6.0.1: version "6.0.1" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-6.0.1.tgz#3183e38fae9a65d7cb5e53945cd5897d0260a06a" + resolved "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz" integrity sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA== ansi-styles@^2.2.1: version "2.2.1" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe" + resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz" integrity sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA== ansi-styles@^3.2.0, ansi-styles@^3.2.1: version "3.2.1" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" + resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz" integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== dependencies: color-convert "^1.9.0" ansi-styles@^4.0.0, ansi-styles@^4.1.0, ansi-styles@^4.2.0: version "4.3.0" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937" + resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz" integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== dependencies: color-convert "^2.0.1" ansi-styles@^5.0.0: version "5.2.0" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-5.2.0.tgz#07449690ad45777d1924ac2abb2fc8895dba836b" + resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz" integrity sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA== ansi-styles@^6.1.0: version "6.2.1" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-6.2.1.tgz#0e62320cf99c21afff3b3012192546aacbfb05c5" + resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz" integrity sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug== ansi-wrap@0.1.0: version "0.1.0" - resolved "https://registry.yarnpkg.com/ansi-wrap/-/ansi-wrap-0.1.0.tgz#a82250ddb0015e9a27ca82e82ea603bbfa45efaf" + resolved "https://registry.npmjs.org/ansi-wrap/-/ansi-wrap-0.1.0.tgz" integrity sha512-ZyznvL8k/FZeQHr2T6LzcJ/+vBApDnMNZvfVFy3At0knswWd6rJ3/0Hhmpu8oqa6C92npmozs890sX9Dl6q+Qw== ansi-yellow@^0.1.1: version "0.1.1" - resolved "https://registry.yarnpkg.com/ansi-yellow/-/ansi-yellow-0.1.1.tgz#cb9356f2f46c732f0e3199e6102955a77da83c1d" + resolved "https://registry.npmjs.org/ansi-yellow/-/ansi-yellow-0.1.1.tgz" integrity sha512-6E3D4BQLXHLl3c/NwirWVZ+BCkMq2qsYxdeAGGOijKrx09FaqU+HktFL6QwAwNvgJiMLnv6AQ2C1gFZx0h1CBg== dependencies: ansi-wrap "0.1.0" ansicolors@~0.3.2: version "0.3.2" - resolved "https://registry.yarnpkg.com/ansicolors/-/ansicolors-0.3.2.tgz#665597de86a9ffe3aa9bfbe6cae5c6ea426b4979" + resolved "https://registry.npmjs.org/ansicolors/-/ansicolors-0.3.2.tgz" integrity sha512-QXu7BPrP29VllRxH8GwB7x5iX5qWKAAMLqKQGWTeLWVlNHNOpVMJ91dsxQAIWXpjuW5wqvxu3Jd/nRjrJ+0pqg== antlr4@4.7.1: version "4.7.1" - resolved "https://registry.yarnpkg.com/antlr4/-/antlr4-4.7.1.tgz#69984014f096e9e775f53dd9744bf994d8959773" + resolved "https://registry.npmjs.org/antlr4/-/antlr4-4.7.1.tgz" integrity sha512-haHyTW7Y9joE5MVs37P2lNYfU2RWBLfcRDD8OWldcdZm5TiCE91B5Xl1oWSwiDUSd4rlExpt2pu1fksYQjRBYQ== antlr4ts@^0.5.0-alpha.4: version "0.5.0-alpha.4" - resolved "https://registry.yarnpkg.com/antlr4ts/-/antlr4ts-0.5.0-alpha.4.tgz#71702865a87478ed0b40c0709f422cf14d51652a" + resolved "https://registry.npmjs.org/antlr4ts/-/antlr4ts-0.5.0-alpha.4.tgz" integrity sha512-WPQDt1B74OfPv/IMS2ekXAKkTZIHl88uMetg6q3OTqgFxZ/dxDXI0EWLyZid/1Pe6hTftyg5N7gel5wNAGxXyQ== any-promise@1.3.0, any-promise@^1.0.0: version "1.3.0" - resolved "https://registry.yarnpkg.com/any-promise/-/any-promise-1.3.0.tgz#abc6afeedcea52e809cdc0376aed3ce39635d17f" + resolved "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz" integrity sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A== anymatch@^3.0.3, anymatch@~3.1.1, anymatch@~3.1.2: version "3.1.3" - resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.3.tgz#790c58b19ba1720a84205b57c618d5ad8524973e" + resolved "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz" integrity sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw== dependencies: normalize-path "^3.0.0" @@ -7365,7 +7596,7 @@ anymatch@^3.0.3, anymatch@~3.1.1, anymatch@~3.1.2: apollo-datasource@^3.3.2: version "3.3.2" - resolved "https://registry.yarnpkg.com/apollo-datasource/-/apollo-datasource-3.3.2.tgz#5711f8b38d4b7b53fb788cb4dbd4a6a526ea74c8" + resolved "https://registry.npmjs.org/apollo-datasource/-/apollo-datasource-3.3.2.tgz" integrity sha512-L5TiS8E2Hn/Yz7SSnWIVbZw0ZfEIXZCa5VUiVxD9P53JvSrf4aStvsFDlGWPvpIdCR+aly2CfoB79B9/JjKFqg== dependencies: "@apollo/utils.keyvaluecache" "^1.0.1" @@ -7373,14 +7604,14 @@ apollo-datasource@^3.3.2: apollo-reporting-protobuf@^3.4.0: version "3.4.0" - resolved "https://registry.yarnpkg.com/apollo-reporting-protobuf/-/apollo-reporting-protobuf-3.4.0.tgz#6edd31f09d4a3704d9e808d1db30eca2229ded26" + resolved "https://registry.npmjs.org/apollo-reporting-protobuf/-/apollo-reporting-protobuf-3.4.0.tgz" integrity sha512-h0u3EbC/9RpihWOmcSsvTW2O6RXVaD/mPEjfrPkxRPTEPWqncsgOoRJw+wih4OqfH3PvTJvoEIf4LwKrUaqWog== dependencies: "@apollo/protobufjs" "1.2.6" apollo-server-core@^3.12.0: version "3.12.1" - resolved "https://registry.yarnpkg.com/apollo-server-core/-/apollo-server-core-3.12.1.tgz#ba255c37345db29c48a2e0c064c519a8d62eb5af" + resolved "https://registry.npmjs.org/apollo-server-core/-/apollo-server-core-3.12.1.tgz" integrity sha512-9SF5WAkkV0FZQ2HVUWI9Jada1U0jg7e8NCN9EklbtvaCeUlOLyXyM+KCWuZ7+dqHxjshbtcwylPHutt3uzoNkw== dependencies: "@apollo/utils.keyvaluecache" "^1.0.1" @@ -7409,19 +7640,19 @@ apollo-server-core@^3.12.0: apollo-server-env@^4.2.1: version "4.2.1" - resolved "https://registry.yarnpkg.com/apollo-server-env/-/apollo-server-env-4.2.1.tgz#ea5b1944accdbdba311f179e4dfaeca482c20185" + resolved "https://registry.npmjs.org/apollo-server-env/-/apollo-server-env-4.2.1.tgz" integrity sha512-vm/7c7ld+zFMxibzqZ7SSa5tBENc4B0uye9LTfjJwGoQFY5xsUPH5FpO5j0bMUDZ8YYNbrF9SNtzc5Cngcr90g== dependencies: node-fetch "^2.6.7" apollo-server-errors@^3.3.1: version "3.3.1" - resolved "https://registry.yarnpkg.com/apollo-server-errors/-/apollo-server-errors-3.3.1.tgz#ba5c00cdaa33d4cbd09779f8cb6f47475d1cd655" + resolved "https://registry.npmjs.org/apollo-server-errors/-/apollo-server-errors-3.3.1.tgz" integrity sha512-xnZJ5QWs6FixHICXHxUfm+ZWqqxrNuPlQ+kj5m6RtEgIpekOPssH/SD9gf2B4HuWV0QozorrygwZnux8POvyPA== apollo-server-express@^3.12.0: version "3.12.0" - resolved "https://registry.yarnpkg.com/apollo-server-express/-/apollo-server-express-3.12.0.tgz#a6e392bb0427544b8c7e5d841ef07f7691b0c105" + resolved "https://registry.npmjs.org/apollo-server-express/-/apollo-server-express-3.12.0.tgz" integrity sha512-m8FaGPUfDOEGSm7QRWRmUUGjG/vqvpQoorkId9/FXkC57fz/A59kEdrzkMt9538Xgsa5AV+X4MEWLJhTvlW3LQ== dependencies: "@types/accepts" "^1.3.5" @@ -7438,14 +7669,14 @@ apollo-server-express@^3.12.0: apollo-server-plugin-base@^3.7.2: version "3.7.2" - resolved "https://registry.yarnpkg.com/apollo-server-plugin-base/-/apollo-server-plugin-base-3.7.2.tgz#c19cd137bc4c993ba2490ba2b571b0f3ce60a0cd" + resolved "https://registry.npmjs.org/apollo-server-plugin-base/-/apollo-server-plugin-base-3.7.2.tgz" integrity sha512-wE8dwGDvBOGehSsPTRZ8P/33Jan6/PmL0y0aN/1Z5a5GcbFhDaaJCjK5cav6npbbGL2DPKK0r6MPXi3k3N45aw== dependencies: apollo-server-types "^3.8.0" apollo-server-types@^3.8.0: version "3.8.0" - resolved "https://registry.yarnpkg.com/apollo-server-types/-/apollo-server-types-3.8.0.tgz#d976b6967878681f715fe2b9e4dad9ba86b1346f" + resolved "https://registry.npmjs.org/apollo-server-types/-/apollo-server-types-3.8.0.tgz" integrity sha512-ZI/8rTE4ww8BHktsVpb91Sdq7Cb71rdSkXELSwdSR0eXu600/sY+1UXhTWdiJvk+Eq5ljqoHLwLbY2+Clq2b9A== dependencies: "@apollo/utils.keyvaluecache" "^1.0.1" @@ -7455,7 +7686,7 @@ apollo-server-types@^3.8.0: apollo-server@^3.11.0: version "3.12.0" - resolved "https://registry.yarnpkg.com/apollo-server/-/apollo-server-3.12.0.tgz#bd43d6dadb8cb16ed34edfc6ad97a81b1fab748a" + resolved "https://registry.npmjs.org/apollo-server/-/apollo-server-3.12.0.tgz" integrity sha512-wZHLgBoIdGxr/YpPTG5RwNnS+B2y70T/nCegCnU6Yl+H3PXB92OIguLMhdJIZVjukIOhiQT12dNIehqLQ+1hMQ== dependencies: "@types/express" "4.17.14" @@ -7465,22 +7696,22 @@ apollo-server@^3.11.0: app-module-path@^2.2.0: version "2.2.0" - resolved "https://registry.yarnpkg.com/app-module-path/-/app-module-path-2.2.0.tgz#641aa55dfb7d6a6f0a8141c4b9c0aa50b6c24dd5" + resolved "https://registry.npmjs.org/app-module-path/-/app-module-path-2.2.0.tgz" integrity sha512-gkco+qxENJV+8vFcDiiFhuoSvRXb2a/QPqpSoWhVz829VNJfOTnELbBmPmNKFxf3xdNnw4DWCkzkDaavcX/1YQ== aproba@^1.0.3: version "1.2.0" - resolved "https://registry.yarnpkg.com/aproba/-/aproba-1.2.0.tgz#6802e6264efd18c790a1b0d517f0f2627bf2c94a" + resolved "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz" integrity sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw== "aproba@^1.0.3 || ^2.0.0", aproba@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/aproba/-/aproba-2.0.0.tgz#52520b8ae5b569215b354efc0caa3fe1e45a8adc" + resolved "https://registry.npmjs.org/aproba/-/aproba-2.0.0.tgz" integrity sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ== archiver-utils@^2.1.0: version "2.1.0" - resolved "https://registry.yarnpkg.com/archiver-utils/-/archiver-utils-2.1.0.tgz#e8a460e94b693c3e3da182a098ca6285ba9249e2" + resolved "https://registry.npmjs.org/archiver-utils/-/archiver-utils-2.1.0.tgz" integrity sha512-bEL/yUb/fNNiNTuUz979Z0Yg5L+LzLxGJz8x79lYmR54fmTIb6ob/hNQgkQnIUDWIFjZVQwl9Xs356I6BAMHfw== dependencies: glob "^7.1.4" @@ -7494,22 +7725,38 @@ archiver-utils@^2.1.0: normalize-path "^3.0.0" readable-stream "^2.0.0" +archiver-utils@^3.0.4: + version "3.0.4" + resolved "https://registry.npmjs.org/archiver-utils/-/archiver-utils-3.0.4.tgz" + integrity sha512-KVgf4XQVrTjhyWmx6cte4RxonPLR9onExufI1jhvw/MQ4BB6IsZD5gT8Lq+u/+pRkWna/6JoHpiQioaqFP5Rzw== + dependencies: + glob "^7.2.3" + graceful-fs "^4.2.0" + lazystream "^1.0.0" + lodash.defaults "^4.2.0" + lodash.difference "^4.5.0" + lodash.flatten "^4.4.0" + lodash.isplainobject "^4.0.6" + lodash.union "^4.6.0" + normalize-path "^3.0.0" + readable-stream "^3.6.0" + archiver@^5.0.0: - version "5.3.1" - resolved "https://registry.yarnpkg.com/archiver/-/archiver-5.3.1.tgz#21e92811d6f09ecfce649fbefefe8c79e57cbbb6" - integrity sha512-8KyabkmbYrH+9ibcTScQ1xCJC/CGcugdVIwB+53f5sZziXgwUh3iXlAlANMxcZyDEfTHMe6+Z5FofV8nopXP7w== + version "5.3.2" + resolved "https://registry.npmjs.org/archiver/-/archiver-5.3.2.tgz" + integrity sha512-+25nxyyznAXF7Nef3y0EbBeqmGZgeN/BxHX29Rs39djAfaFalmQ89SE6CWyDCHzGL0yt/ycBtNOmGTW0FyGWNw== dependencies: archiver-utils "^2.1.0" - async "^3.2.3" + async "^3.2.4" buffer-crc32 "^0.2.1" readable-stream "^3.6.0" - readdir-glob "^1.0.0" + readdir-glob "^1.1.2" tar-stream "^2.2.0" zip-stream "^4.1.0" are-we-there-yet@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/are-we-there-yet/-/are-we-there-yet-2.0.0.tgz#372e0e7bd279d8e94c653aaa1f67200884bf3e1c" + resolved "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-2.0.0.tgz" integrity sha512-Ci/qENmwHnsYo9xKIcUJN5LeDKdJ6R1Z1j9V/J5wyq8nh/mYPEpIKJbBZXtZjG04HiK7zV/p6Vs9952MrMeUIw== dependencies: delegates "^1.0.0" @@ -7517,7 +7764,7 @@ are-we-there-yet@^2.0.0: are-we-there-yet@^3.0.0: version "3.0.1" - resolved "https://registry.yarnpkg.com/are-we-there-yet/-/are-we-there-yet-3.0.1.tgz#679df222b278c64f2cdba1175cdc00b0d96164bd" + resolved "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-3.0.1.tgz" integrity sha512-QZW4EDmGwlYur0Yyf/b2uGucHQMa8aFUP7eu9ddR73vvhFyt4V0Vl3QHPcTNJ8l6qYOBdxgXdnBXQrHilfRQBg== dependencies: delegates "^1.0.0" @@ -7525,7 +7772,7 @@ are-we-there-yet@^3.0.0: are-we-there-yet@~1.1.2: version "1.1.7" - resolved "https://registry.yarnpkg.com/are-we-there-yet/-/are-we-there-yet-1.1.7.tgz#b15474a932adab4ff8a50d9adfa7e4e926f21146" + resolved "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.7.tgz" integrity sha512-nxwy40TuMiUGqMyRHgCSWZ9FM4VAoRP4xUYSTv5ImRog+h9yISPbVH7H8fASCIzYn9wlEv4zvFL7uKDMCFQm3g== dependencies: delegates "^1.0.0" @@ -7533,34 +7780,34 @@ are-we-there-yet@~1.1.2: arg@^4.1.0: version "4.1.3" - resolved "https://registry.yarnpkg.com/arg/-/arg-4.1.3.tgz#269fc7ad5b8e42cb63c896d5666017261c144089" + resolved "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz" integrity sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA== argparse@^1.0.7: version "1.0.10" - resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911" + 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.yarnpkg.com/argparse/-/argparse-2.0.1.tgz#246f50f3ca78a3240f6c997e8a9bd1eac49e4b38" + resolved "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz" integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q== argsarray@0.0.1: version "0.0.1" - resolved "https://registry.yarnpkg.com/argsarray/-/argsarray-0.0.1.tgz#6e7207b4ecdb39b0af88303fa5ae22bda8df61cb" + resolved "https://registry.npmjs.org/argsarray/-/argsarray-0.0.1.tgz" integrity sha512-u96dg2GcAKtpTrBdDoFIM7PjcBA+6rSP0OR94MOReNRyUECL6MtQt5XXmRr4qrftYaef9+l5hcpO5te7sML1Cg== argv@0.0.2: version "0.0.2" - resolved "https://registry.yarnpkg.com/argv/-/argv-0.0.2.tgz#ecbd16f8949b157183711b1bda334f37840185ab" + resolved "https://registry.npmjs.org/argv/-/argv-0.0.2.tgz" integrity sha512-dEamhpPEwRUBpLNHeuCm/v+g0anFByHahxodVO/BbAarHVBBg2MccCwf9K+o1Pof+2btdnkJelYVUWjW/VrATw== armlet@^2.7.0: version "2.7.0" - resolved "https://registry.yarnpkg.com/armlet/-/armlet-2.7.0.tgz#21c4f9884de17fd75785d8468a669c0f12b01370" + resolved "https://registry.npmjs.org/armlet/-/armlet-2.7.0.tgz" integrity sha512-+j89VqGIf/E9a6aBaJa1OG9AZ93OnlfBzZz76TegU40ELcHcKb5b05XU7a1xKJsikdt6Da/fRaYHQ36oyLLj9Q== dependencies: http-errors "^1.7.1" @@ -7571,7 +7818,7 @@ armlet@^2.7.0: arr-diff@^1.0.1: version "1.1.0" - resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-1.1.0.tgz#687c32758163588fef7de7b36fabe495eb1a399a" + resolved "https://registry.npmjs.org/arr-diff/-/arr-diff-1.1.0.tgz" integrity sha512-OQwDZUqYaQwyyhDJHThmzId8daf4/RFNLaeh3AevmSeZ5Y7ug4Ga/yKc6l6kTZOBW781rCj103ZuTh8GAsB3+Q== dependencies: arr-flatten "^1.0.1" @@ -7579,7 +7826,7 @@ arr-diff@^1.0.1: arr-diff@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-2.0.0.tgz#8f3b827f955a8bd669697e4a4256ac3ceae356cf" + resolved "https://registry.npmjs.org/arr-diff/-/arr-diff-2.0.0.tgz" integrity sha512-dtXTVMkh6VkEEA7OhXnN1Ecb8aAGFdZ1LFxtOCoqj4qkyOJMt7+qs6Ahdy6p/NQCPYsRSXXivhSB/J5E9jmYKA== dependencies: arr-flatten "^1.0.1" @@ -7591,7 +7838,7 @@ arr-diff@^4.0.0: arr-flatten@^1.0.1, arr-flatten@^1.1.0: version "1.1.0" - resolved "https://registry.yarnpkg.com/arr-flatten/-/arr-flatten-1.1.0.tgz#36048bbff4e7b47e136644316c99669ea5ae91f1" + resolved "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz" integrity sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg== arr-union@^3.1.0: @@ -7615,7 +7862,7 @@ array-back@^2.0.0: 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" + resolved "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.0.tgz" integrity sha512-LPuwb2P+NrQw3XhxGc36+XSvuBPopovXYTR9Ew++Du9Yb/bx5AzBfrIsBoj0EZUifjQU+sHL21sseZ3jerWO/A== dependencies: call-bind "^1.0.2" @@ -7623,39 +7870,39 @@ array-buffer-byte-length@^1.0.0: array-differ@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/array-differ/-/array-differ-3.0.0.tgz#3cbb3d0f316810eafcc47624734237d6aee4ae6b" + resolved "https://registry.npmjs.org/array-differ/-/array-differ-3.0.0.tgz" integrity sha512-THtfYS6KtME/yIAhKjZ2ul7XI96lQGHRputJQHO80LAWQnuGP4iCIN8vdMRboGbIEYBwU33q8Tch1os2+X0kMg== array-flatten@1.1.1, array-flatten@^1.0.0: version "1.1.1" - resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-1.1.1.tgz#9a5f699051b1e7073328f2a008968b64ea2955d2" + resolved "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz" integrity sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg== array-flatten@3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-3.0.0.tgz#6428ca2ee52c7b823192ec600fa3ed2f157cd541" + resolved "https://registry.npmjs.org/array-flatten/-/array-flatten-3.0.0.tgz" integrity sha512-zPMVc3ZYlGLNk4mpK1NzP2wg0ml9t7fUgDsayR5Y5rSzxQilzR9FGu/EH2jQOcKSAeAfWeylyW8juy3OkWRvNA== array-ify@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/array-ify/-/array-ify-1.0.0.tgz#9e528762b4a9066ad163a6962a364418e9626ece" + resolved "https://registry.npmjs.org/array-ify/-/array-ify-1.0.0.tgz" integrity sha512-c5AMf34bKdvPhQ7tBGhqkgKNUzMr4WUs+WDtC2ZUGOUncbxKMTvqxYctiseW3+L4bA8ec+GcZ6/A/FW4m8ukng== array-slice@^0.2.3: version "0.2.3" - resolved "https://registry.yarnpkg.com/array-slice/-/array-slice-0.2.3.tgz#dd3cfb80ed7973a75117cdac69b0b99ec86186f5" + resolved "https://registry.npmjs.org/array-slice/-/array-slice-0.2.3.tgz" integrity sha512-rlVfZW/1Ph2SNySXwR9QYkChp8EkOEiTMO5Vwx60usw04i4nWemkm9RXmQqgkQFaLHsqLuADvjp6IfgL9l2M8Q== array-union@^1.0.1: version "1.0.2" - resolved "https://registry.yarnpkg.com/array-union/-/array-union-1.0.2.tgz#9a34410e4f4e3da23dea375be5be70f24778ec39" + resolved "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz" integrity sha512-Dxr6QJj/RdU/hCaBjOfxW+q6lyuVE6JFWIrAUpuOOhoJJoQ99cUn3igRaHVB5P9WrgFVN0FfArM3x0cueOU8ng== dependencies: array-uniq "^1.0.1" array-union@^2.1.0: version "2.1.0" - resolved "https://registry.yarnpkg.com/array-union/-/array-union-2.1.0.tgz#b798420adbeb1de828d84acd8a2e23d3efe85e8d" + resolved "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz" integrity sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw== array-uniq@^1.0.1: @@ -7665,7 +7912,7 @@ array-uniq@^1.0.1: array-unique@^0.2.1: version "0.2.1" - resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.2.1.tgz#a1d97ccafcbc2625cc70fadceb36a50c58b01a53" + resolved "https://registry.npmjs.org/array-unique/-/array-unique-0.2.1.tgz" integrity sha512-G2n5bG5fSUCpnsXz4+8FUkYsGPkNfLn9YvS66U5qbTIXI2Ynnlo4Bi42bWv+omKUCqz+ejzfClwne0alJWJPhg== array-unique@^0.3.2: @@ -7673,9 +7920,9 @@ array-unique@^0.3.2: resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.3.2.tgz#a894b75d4bc4f6cd679ef3244a9fd8f46ae2d428" integrity sha512-SleRWjh9JUud2wH1hPs9rZBZ33H6T9HOiL0uwGnGx9FpE6wKGyfWugmbkEOIs6qWrZhg0LWeLziLrEwQJhs5mQ== -array.prototype.map@^1.0.1, array.prototype.map@^1.0.5: +array.prototype.map@^1.0.1: version "1.0.5" - resolved "https://registry.yarnpkg.com/array.prototype.map/-/array.prototype.map-1.0.5.tgz#6e43c2fee6c0fb5e4806da2dc92eb00970809e55" + resolved "https://registry.npmjs.org/array.prototype.map/-/array.prototype.map-1.0.5.tgz" integrity sha512-gfaKntvwqYIuC7mLLyv2wzZIJqrRhn5PZ9EfFejSx6a78sV7iDsGpG9P+3oUPtm1Rerqm6nrKS4FYuTIvWfo3g== dependencies: call-bind "^1.0.2" @@ -7684,9 +7931,20 @@ array.prototype.map@^1.0.1, array.prototype.map@^1.0.5: es-array-method-boxes-properly "^1.0.0" is-string "^1.0.7" +array.prototype.map@^1.0.5: + version "1.0.6" + resolved "https://registry.npmjs.org/array.prototype.map/-/array.prototype.map-1.0.6.tgz" + integrity sha512-nK1psgF2cXqP3wSyCSq0Hc7zwNq3sfljQqaG27r/7a7ooNUnn5nGq6yYWyks9jMO5EoFQ0ax80hSg6oXSRNXaw== + dependencies: + call-bind "^1.0.2" + define-properties "^1.2.0" + es-abstract "^1.22.1" + es-array-method-boxes-properly "^1.0.0" + is-string "^1.0.7" + array.prototype.reduce@^1.0.5: version "1.0.5" - resolved "https://registry.yarnpkg.com/array.prototype.reduce/-/array.prototype.reduce-1.0.5.tgz#6b20b0daa9d9734dd6bc7ea66b5bbce395471eac" + resolved "https://registry.npmjs.org/array.prototype.reduce/-/array.prototype.reduce-1.0.5.tgz" integrity sha512-kDdugMl7id9COE8R7MHF5jWk7Dqt/fs4Pv+JXoICnYwqpjjjbUurz6w5fT5IG6brLdJhv6/VoHB0H7oyIBXd+Q== dependencies: call-bind "^1.0.2" @@ -7695,19 +7953,43 @@ array.prototype.reduce@^1.0.5: es-array-method-boxes-properly "^1.0.0" is-string "^1.0.7" +array.prototype.reduce@^1.0.6: + version "1.0.6" + resolved "https://registry.yarnpkg.com/array.prototype.reduce/-/array.prototype.reduce-1.0.6.tgz#63149931808c5fc1e1354814923d92d45f7d96d5" + integrity sha512-UW+Mz8LG/sPSU8jRDCjVr6J/ZKAGpHfwrZ6kWTG5qCxIEiXdVshqGnu5vEZA8S1y6X4aCSbQZ0/EEsfvEvBiSg== + dependencies: + call-bind "^1.0.2" + define-properties "^1.2.0" + es-abstract "^1.22.1" + es-array-method-boxes-properly "^1.0.0" + is-string "^1.0.7" + +arraybuffer.prototype.slice@^1.0.1: + version "1.0.2" + resolved "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.2.tgz" + 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" + arrify@^1.0.0, arrify@^1.0.1: version "1.0.1" - resolved "https://registry.yarnpkg.com/arrify/-/arrify-1.0.1.tgz#898508da2226f380df904728456849c1501a4b0d" + resolved "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz" integrity sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA== arrify@^2.0.0, arrify@^2.0.1: version "2.0.1" - resolved "https://registry.yarnpkg.com/arrify/-/arrify-2.0.1.tgz#c9655e9331e0abcd588d2a7cad7e9956f66701fa" + resolved "https://registry.npmjs.org/arrify/-/arrify-2.0.1.tgz" integrity sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug== as-array@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/as-array/-/as-array-1.0.0.tgz#28a6eeeaa5729f1f4eca2047df5e9de1abda0ed1" + resolved "https://registry.npmjs.org/as-array/-/as-array-1.0.0.tgz" integrity sha512-yTEVeqmnVlLJV0j8IAz/mcMGbr88+yX9SqTxyFc1HJwmW8Zy347jEmWFIg34MRqCUS8CXRKy8a8B/9BaoYDW2w== dependencies: lodash.isarguments "2.4.x" @@ -7716,7 +7998,7 @@ as-array@^1.0.0: as-array@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/as-array/-/as-array-2.0.0.tgz#4f04805d87f8fce8e511bc2108f8e5e3a287d547" + resolved "https://registry.npmjs.org/as-array/-/as-array-2.0.0.tgz" integrity sha512-1Sd1LrodN0XYxYeZcN1J4xYZvmvTwD5tDWaPUGPIzH1mFsmzsPnVtd2exWhecMjtZk/wYWjNZJiD3b1SLCeJqg== asap@^2.0.0, asap@~2.0.6: @@ -7726,7 +8008,7 @@ asap@^2.0.0, asap@~2.0.6: ascli@~1: version "1.0.1" - resolved "https://registry.yarnpkg.com/ascli/-/ascli-1.0.1.tgz#bcfa5974a62f18e81cabaeb49732ab4a88f906bc" + resolved "https://registry.npmjs.org/ascli/-/ascli-1.0.1.tgz" integrity sha512-JGQaNxpaCJz9Bd1JvVaFIHuWn9S+l3xhN17R0V/vmUDiGE0QngNMXhjlqpwqV+91plWz9Fg+Lt28Lj7p5vjs8A== dependencies: colour "~0.7.1" @@ -7734,7 +8016,7 @@ ascli@~1: asn1.js@^5.2.0: version "5.4.1" - resolved "https://registry.yarnpkg.com/asn1.js/-/asn1.js-5.4.1.tgz#11a980b84ebb91781ce35b0fdc2ee294e3783f07" + resolved "https://registry.npmjs.org/asn1.js/-/asn1.js-5.4.1.tgz" integrity sha512-+I//4cYPccV8LdmBLiX8CYvf9Sp3vQsrqu2QNXRcrbiWvcx/UdlFiqUJJzxRQxgsZmvhXhn4cSKeSmoFjVdupA== dependencies: bn.js "^4.0.0" @@ -7744,26 +8026,26 @@ asn1.js@^5.2.0: asn1@~0.2.3: version "0.2.6" - resolved "https://registry.yarnpkg.com/asn1/-/asn1-0.2.6.tgz#0d3a7bb6e64e02a90c0303b31f292868ea09a08d" + resolved "https://registry.npmjs.org/asn1/-/asn1-0.2.6.tgz" integrity sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ== dependencies: safer-buffer "~2.1.0" asn1js@^2.0.26: version "2.4.0" - resolved "https://registry.yarnpkg.com/asn1js/-/asn1js-2.4.0.tgz#9ca61dbdd7e4eb49b9ae95b36ab0615b77daff93" + resolved "https://registry.npmjs.org/asn1js/-/asn1js-2.4.0.tgz" integrity sha512-PvZC0FMyMut8aOnR2jAEGSkmRtHIUYPe9amUEnGjr9TdnUmsfoOkjrvUkOEU9mzpYBR1HyO9bF+8U1cLTMMHhQ== dependencies: pvutils "^1.1.3" assert-plus@1.0.0, assert-plus@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-1.0.0.tgz#f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525" + resolved "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz" integrity sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw== assertion-error@^1.1.0: version "1.1.0" - resolved "https://registry.yarnpkg.com/assertion-error/-/assertion-error-1.1.0.tgz#e60b6b0e8f301bd97e5375215bda406c85118c0b" + resolved "https://registry.npmjs.org/assertion-error/-/assertion-error-1.1.0.tgz" integrity sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw== assign-symbols@^1.0.0: @@ -7773,89 +8055,89 @@ assign-symbols@^1.0.0: ast-types@^0.13.2, ast-types@^0.13.4: version "0.13.4" - resolved "https://registry.yarnpkg.com/ast-types/-/ast-types-0.13.4.tgz#ee0d77b343263965ecc3fb62da16e7222b2b6782" + resolved "https://registry.npmjs.org/ast-types/-/ast-types-0.13.4.tgz" integrity sha512-x1FCFnFifvYDDzTaLII71vG5uvDwgtmDTEVWAxrgeiR8VjMONcCXJx7E+USjDtHlwFmt9MysbqgF9b9Vjr6w+w== dependencies: tslib "^2.0.1" astral-regex@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/astral-regex/-/astral-regex-1.0.0.tgz#6c8c3fb827dd43ee3918f27b82782ab7658a6fd9" + resolved "https://registry.npmjs.org/astral-regex/-/astral-regex-1.0.0.tgz" integrity sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg== async-each@^1.0.1: version "1.0.6" - resolved "https://registry.yarnpkg.com/async-each/-/async-each-1.0.6.tgz#52f1d9403818c179b7561e11a5d1b77eb2160e77" + resolved "https://registry.npmjs.org/async-each/-/async-each-1.0.6.tgz" integrity sha512-c646jH1avxr+aVpndVMeAfYw7wAa6idufrlN3LPA4PmKS0QEGp6PIC9nwz0WQkkvBGAMEki3pFdtxaF39J9vvg== async-eventemitter@0.2.4, async-eventemitter@^0.2.2: version "0.2.4" - resolved "https://registry.yarnpkg.com/async-eventemitter/-/async-eventemitter-0.2.4.tgz#f5e7c8ca7d3e46aab9ec40a292baf686a0bafaca" + resolved "https://registry.npmjs.org/async-eventemitter/-/async-eventemitter-0.2.4.tgz" integrity sha512-pd20BwL7Yt1zwDFy+8MX8F1+WCT8aQeKj0kQnTrH9WaeRETlRamVhD0JtRPmrV4GfOJ2F9CvdQkZeZhnh2TuHw== dependencies: async "^2.4.0" async-limiter@~1.0.0: version "1.0.1" - resolved "https://registry.yarnpkg.com/async-limiter/-/async-limiter-1.0.1.tgz#dd379e94f0db8310b08291f9d64c3209766617fd" + resolved "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.1.tgz" integrity sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ== async-lock@1.3.2: version "1.3.2" - resolved "https://registry.yarnpkg.com/async-lock/-/async-lock-1.3.2.tgz#56668613f91c1c55432b4db73e65c9ced664e789" + resolved "https://registry.npmjs.org/async-lock/-/async-lock-1.3.2.tgz" integrity sha512-phnXdS3RP7PPcmP6NWWzWMU0sLTeyvtZCxBPpZdkYE3seGLKSQZs9FrmVO/qwypq98FUtWWUEYxziLkdGk5nnA== async-mutex@^0.2.6: version "0.2.6" - resolved "https://registry.yarnpkg.com/async-mutex/-/async-mutex-0.2.6.tgz#0d7a3deb978bc2b984d5908a2038e1ae2e54ff40" + resolved "https://registry.npmjs.org/async-mutex/-/async-mutex-0.2.6.tgz" integrity sha512-Hs4R+4SPgamu6rSGW8C7cV9gaWUKEHykfzCCvIRuaVv636Ju10ZdeUbvb4TBEW0INuq2DHZqXbK4Nd3yG4RaRw== dependencies: tslib "^2.0.0" async-retry@^1.2.1, async-retry@^1.3.3: version "1.3.3" - resolved "https://registry.yarnpkg.com/async-retry/-/async-retry-1.3.3.tgz#0e7f36c04d8478e7a58bdbed80cedf977785f280" + resolved "https://registry.npmjs.org/async-retry/-/async-retry-1.3.3.tgz" integrity sha512-wfr/jstw9xNi/0teMHrRW7dsz3Lt5ARhYNZ2ewpadnhaIp5mbALhOAP+EAdsC7t4Z6wqsDVv9+W6gm1Dk9mEyw== dependencies: retry "0.13.1" async@1.x, async@^1.3.0, async@^1.4.2: version "1.5.2" - resolved "https://registry.yarnpkg.com/async/-/async-1.5.2.tgz#ec6a61ae56480c0c3cb241c95618e20892f9672a" + resolved "https://registry.npmjs.org/async/-/async-1.5.2.tgz" integrity sha512-nSVgobk4rv61R9PUSDtYt7mPVB2olxNR5RWJcAsH676/ef11bUZwvu7+RGYrYauVdDPcO519v68wRhXQtxsV9w== async@^2.0.1, async@^2.1.2, async@^2.4.0, async@^2.5.0, async@^2.6.1: version "2.6.3" - resolved "https://registry.yarnpkg.com/async/-/async-2.6.3.tgz#d72625e2344a3656e3a3ad4fa749fa83299d82ff" + resolved "https://registry.npmjs.org/async/-/async-2.6.3.tgz" integrity sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg== dependencies: lodash "^4.17.14" async@^2.6.3, async@^2.6.4: version "2.6.4" - resolved "https://registry.yarnpkg.com/async/-/async-2.6.4.tgz#706b7ff6084664cd7eae713f6f965433b5504221" + resolved "https://registry.npmjs.org/async/-/async-2.6.4.tgz" integrity sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA== dependencies: lodash "^4.17.14" async@^3.2.3, async@^3.2.4: version "3.2.4" - resolved "https://registry.yarnpkg.com/async/-/async-3.2.4.tgz#2d22e00f8cddeb5fde5dd33522b56d1cf569a81c" + resolved "https://registry.npmjs.org/async/-/async-3.2.4.tgz" integrity sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ== async@~0.9.0: version "0.9.2" - resolved "https://registry.yarnpkg.com/async/-/async-0.9.2.tgz#aea74d5e61c1f899613bf64bda66d4c78f2fd17d" + resolved "https://registry.npmjs.org/async/-/async-0.9.2.tgz" integrity sha512-l6ToIJIotphWahxxHyzK9bnLR6kM4jJIIgLShZeqLY7iboHoGkdgFl7W2/Ivi4SkMJYGKqW8vSuk0uKUj6qsSw== asynckit@^0.4.0: version "0.4.0" - resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" + resolved "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz" integrity sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q== at-least-node@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/at-least-node/-/at-least-node-1.0.0.tgz#602cd4b46e844ad4effc92a8011a3c46e0238dc2" + resolved "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz" integrity sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg== atob@^2.1.2: @@ -7865,18 +8147,18 @@ atob@^2.1.2: atomically@^1.7.0: version "1.7.0" - resolved "https://registry.yarnpkg.com/atomically/-/atomically-1.7.0.tgz#c07a0458432ea6dbc9a3506fffa424b48bccaafe" + resolved "https://registry.npmjs.org/atomically/-/atomically-1.7.0.tgz" integrity sha512-Xcz9l0z7y9yQ9rdDaxlmaI4uJHf/T8g9hOEzJcsEqX2SjCj4J20uK7+ldkDHMbpJDK76wF7xEIgxc/vSlsfw5w== available-typed-arrays@^1.0.5: version "1.0.5" - resolved "https://registry.yarnpkg.com/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz#92f95616501069d07d10edb2fc37d3e1c65123b7" + resolved "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz" integrity sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw== aws-sdk@^2.705.0: - version "2.1363.0" - resolved "https://registry.yarnpkg.com/aws-sdk/-/aws-sdk-2.1363.0.tgz#30c3b7fe999ee2ba1103a533ea27e1b0f5708e1f" - integrity sha512-M2MZZXehgi/EMQv5GlzRkn3TlhoOYHg2cYdSAAqhjv67WaEG50MjaQy5vRvfN1i8XvB24aJFJ5pCrx69TaCaIg== + version "2.1456.0" + resolved "https://registry.npmjs.org/aws-sdk/-/aws-sdk-2.1456.0.tgz" + integrity sha512-0fzxx55Skc44i4q6iMuNjYSHEEaCZIbjvl4jaT3Jki6GNYQAdWb0/+BPaTalkb8UgrY9wSZ0h86DH2w+nf6e7g== dependencies: buffer "4.9.2" events "1.1.1" @@ -7891,17 +8173,17 @@ aws-sdk@^2.705.0: aws-sign2@~0.7.0: version "0.7.0" - resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.7.0.tgz#b46e890934a9591f2d2f6f86d7e6a9f1b3fe76a8" + resolved "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz" integrity sha512-08kcGqnYf/YmjoRhfxyu+CLxBjUtHLXLXX/vUfx9l2LYzG3c1m61nrpyFUZI6zeS+Li/wWMMidD9KgrqtGq3mA== aws4@^1.8.0: version "1.12.0" - resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.12.0.tgz#ce1c9d143389679e253b314241ea9aa5cec980d3" + resolved "https://registry.npmjs.org/aws4/-/aws4-1.12.0.tgz" integrity sha512-NmWvPnx0F1SfrQbYwOi7OeaNGokp9XhzNioJ/CSBs8Qa4vxug81mhJEAVZwxXuBmYB5KDRfMq/F3RR0BIU7sWg== axios-retry@^3.1.9: version "3.4.0" - resolved "https://registry.yarnpkg.com/axios-retry/-/axios-retry-3.4.0.tgz#f464dbe9408e5aa78fa319afd38bb69b533d8854" + resolved "https://registry.npmjs.org/axios-retry/-/axios-retry-3.4.0.tgz" integrity sha512-VdgaP+gHH4iQYCCNUWF2pcqeciVOdGrBBAYUfTY+wPcO5Ltvp/37MLFNCmJKo7Gj3SHvCSdL8ouI1qLYJN3liA== dependencies: "@babel/runtime" "^7.15.4" @@ -7909,7 +8191,7 @@ axios-retry@^3.1.9: axios@1.2.4: version "1.2.4" - resolved "https://registry.yarnpkg.com/axios/-/axios-1.2.4.tgz#6555dd955d2efa9b8f4cb4cb0b3371b7b243537a" + resolved "https://registry.npmjs.org/axios/-/axios-1.2.4.tgz" integrity sha512-lIQuCfBJvZB/Bv7+RWUqEJqNShGOVpk9v7P0ZWx5Ip0qY6u7JBAU6dzQPMLasU9vHL2uD8av/1FDJXj7n6c39w== dependencies: follow-redirects "^1.15.0" @@ -7918,7 +8200,7 @@ axios@1.2.4: axios@^0.18.0: version "0.18.1" - resolved "https://registry.yarnpkg.com/axios/-/axios-0.18.1.tgz#ff3f0de2e7b5d180e757ad98000f1081b87bcea3" + resolved "https://registry.npmjs.org/axios/-/axios-0.18.1.tgz" integrity sha512-0BfJq4NSfQXd+SkFdrvFbG7addhYSBA2mQwISr46pD6E5iqkWg02RAs8vyTT/j0RTnoYmeXauBuSv1qKwR179g== dependencies: follow-redirects "1.5.10" @@ -7926,22 +8208,22 @@ axios@^0.18.0: axios@^0.21.1: version "0.21.4" - resolved "https://registry.yarnpkg.com/axios/-/axios-0.21.4.tgz#c67b90dc0568e5c1cf2b0b858c43ba28e2eda575" + resolved "https://registry.npmjs.org/axios/-/axios-0.21.4.tgz" integrity sha512-ut5vewkiu8jjGBdqpM44XxjuCjq9LAKeHVmoVfHVzy8eHgxxq8SbAVQNovDA8mVi05kP0Ea/n/UzcSHcTJQfNg== dependencies: follow-redirects "^1.14.0" axios@^0.25.0: version "0.25.0" - resolved "https://registry.yarnpkg.com/axios/-/axios-0.25.0.tgz#349cfbb31331a9b4453190791760a8d35b093e0a" + resolved "https://registry.npmjs.org/axios/-/axios-0.25.0.tgz" integrity sha512-cD8FOb0tRH3uuEe6+evtAbgJtfxr7ly3fQjYcMcuPlgkwVS9xboaVIpcDV+cYQe+yGykgwZCs1pzjntcGa6l5g== dependencies: follow-redirects "^1.14.7" axios@^1.0.0: - version "1.3.6" - resolved "https://registry.yarnpkg.com/axios/-/axios-1.3.6.tgz#1ace9a9fb994314b5f6327960918406fa92c6646" - integrity sha512-PEcdkk7JcdPiMDkvM4K6ZBRYq9keuVJsToxm2zQIM70Qqo2WHTdJZMXcG9X+RmRp2VPNUQC8W1RAGbgt6b1yMg== + version "1.5.0" + resolved "https://registry.npmjs.org/axios/-/axios-1.5.0.tgz" + integrity sha512-D4DdjDo5CY50Qms0qGQTTw6Q44jl7zRwY7bthds06pUGfChBCTcQs+N743eFWGEd6pRTMd6A+I87aWyFV5wiZQ== dependencies: follow-redirects "^1.15.0" form-data "^4.0.0" @@ -7949,7 +8231,7 @@ axios@^1.0.0: babel-jest@^29.1.2, babel-jest@^29.5.0: version "29.5.0" - resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-29.5.0.tgz#3fe3ddb109198e78b1c88f9ebdecd5e4fc2f50a5" + resolved "https://registry.npmjs.org/babel-jest/-/babel-jest-29.5.0.tgz" integrity sha512-mA4eCDh5mSo2EcA9xQjVTpmbbNk32Zb3Q3QFQsNhaK56Q+yoXowzFodLux30HRgyOho5rsQ6B0P9QpMkvvnJ0Q== dependencies: "@jest/transform" "^29.5.0" @@ -7962,7 +8244,7 @@ babel-jest@^29.1.2, babel-jest@^29.5.0: babel-plugin-istanbul@^6.1.1: version "6.1.1" - resolved "https://registry.yarnpkg.com/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz#fa88ec59232fd9b4e36dbbc540a8ec9a9b47da73" + resolved "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz" integrity sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA== dependencies: "@babel/helper-plugin-utils" "^7.0.0" @@ -7973,7 +8255,7 @@ babel-plugin-istanbul@^6.1.1: babel-plugin-jest-hoist@^29.5.0: version "29.5.0" - resolved "https://registry.yarnpkg.com/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-29.5.0.tgz#a97db437936f441ec196990c9738d4b88538618a" + resolved "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-29.5.0.tgz" integrity sha512-zSuuuAlTMT4mzLj2nPnUm6fsE6270vdOfnpbJ+RmruU75UhLFvL0N2NgI7xpeS7NaB6hGqmd5pVpGTDYvi4Q3w== dependencies: "@babel/template" "^7.3.3" @@ -7983,7 +8265,7 @@ babel-plugin-jest-hoist@^29.5.0: babel-plugin-polyfill-corejs2@^0.3.3: version "0.3.3" - resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.3.3.tgz#5d1bd3836d0a19e1b84bbf2d9640ccb6f951c122" + resolved "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.3.3.tgz" integrity sha512-8hOdmFYFSZhqg2C/JgLUQ+t52o5nirNwaWM2B9LWteozwIvM14VSwdsCAUET10qT+kmySAlseadmfeeSWFCy+Q== dependencies: "@babel/compat-data" "^7.17.7" @@ -7992,7 +8274,7 @@ babel-plugin-polyfill-corejs2@^0.3.3: babel-plugin-polyfill-corejs3@^0.6.0: version "0.6.0" - resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.6.0.tgz#56ad88237137eade485a71b52f72dbed57c6230a" + resolved "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.6.0.tgz" integrity sha512-+eHqR6OPcBhJOGgsIar7xoAB1GcSwVUA3XjAd7HJNzOXT4wv6/H7KIdA/Nc60cvUlDbKApmqNvD1B1bzOt4nyA== dependencies: "@babel/helper-define-polyfill-provider" "^0.3.3" @@ -8000,14 +8282,14 @@ babel-plugin-polyfill-corejs3@^0.6.0: babel-plugin-polyfill-regenerator@^0.4.1: version "0.4.1" - resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.4.1.tgz#390f91c38d90473592ed43351e801a9d3e0fd747" + resolved "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.4.1.tgz" integrity sha512-NtQGmyQDXjQqQ+IzRkBVwEOz9lQ4zxAQZgoAYEtU9dJjnl1Oc98qnN7jcp+bE7O7aYzVpavXE3/VKXNzUbh7aw== dependencies: "@babel/helper-define-polyfill-provider" "^0.3.3" babel-preset-current-node-syntax@^1.0.0: version "1.0.1" - resolved "https://registry.yarnpkg.com/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.0.1.tgz#b4399239b89b2a011f9ddbe3e4f401fc40cff73b" + resolved "https://registry.npmjs.org/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.0.1.tgz" integrity sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ== dependencies: "@babel/plugin-syntax-async-generators" "^7.8.4" @@ -8025,7 +8307,7 @@ babel-preset-current-node-syntax@^1.0.0: babel-preset-jest@^29.5.0: version "29.5.0" - resolved "https://registry.yarnpkg.com/babel-preset-jest/-/babel-preset-jest-29.5.0.tgz#57bc8cc88097af7ff6a5ab59d1cd29d52a5916e2" + resolved "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-29.5.0.tgz" integrity sha512-JOMloxOqdiBSxMAzjRaH023/vvcaSaec49zvg+2LmNsktC7ei39LTJGw02J+9uUtTZUq6xbLyJ4dxe9sSmIuAg== dependencies: babel-plugin-jest-hoist "^29.5.0" @@ -8041,26 +8323,26 @@ babel-runtime@^6.26.0: backoff@^2.5.0: version "2.5.0" - resolved "https://registry.yarnpkg.com/backoff/-/backoff-2.5.0.tgz#f616eda9d3e4b66b8ca7fca79f695722c5f8e26f" + resolved "https://registry.npmjs.org/backoff/-/backoff-2.5.0.tgz" integrity sha512-wC5ihrnUXmR2douXmXLCe5O3zg3GKIyvRi/hi58a/XyRxVI+3/yM0PYueQOZXPXQ9pxBislYkw+sF9b7C/RuMA== dependencies: precond "0.2" balanced-match@^1.0.0: version "1.0.2" - resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" + resolved "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz" integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== base-x@^3.0.2, base-x@^3.0.8: version "3.0.9" - resolved "https://registry.yarnpkg.com/base-x/-/base-x-3.0.9.tgz#6349aaabb58526332de9f60995e548a53fe21320" + resolved "https://registry.npmjs.org/base-x/-/base-x-3.0.9.tgz" integrity sha512-H7JU6iBHTal1gp56aKoaa//YUxEaAOUiydvrV/pILqIHXTtqxSkATOnDA2u+jZ/61sD+L/412+7kzXRtWukhpQ== dependencies: safe-buffer "^5.0.1" base64-js@^1.0.2, base64-js@^1.3.0, base64-js@^1.3.1: version "1.5.1" - resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a" + resolved "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz" integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA== base@^0.11.1: @@ -8078,41 +8360,41 @@ base@^0.11.1: basic-auth-connect@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/basic-auth-connect/-/basic-auth-connect-1.0.0.tgz#fdb0b43962ca7b40456a7c2bb48fe173da2d2122" + resolved "https://registry.npmjs.org/basic-auth-connect/-/basic-auth-connect-1.0.0.tgz" integrity sha512-kiV+/DTgVro4aZifY/hwRwALBISViL5NP4aReaR2EVJEObpbUBHIkdJh/YpcoEiYt7nBodZ6U2ajZeZvSxUCCg== basic-auth@~2.0.1: version "2.0.1" - resolved "https://registry.yarnpkg.com/basic-auth/-/basic-auth-2.0.1.tgz#b998279bf47ce38344b4f3cf916d4679bbf51e3a" + resolved "https://registry.npmjs.org/basic-auth/-/basic-auth-2.0.1.tgz" integrity sha512-NF+epuEdnUYVlGuhaxbbq+dvJttwLnGY+YixlXlME5KpQ5W3CnXA5cVTneY3SPbPDRkcjMbifrwmFYcClgOZeg== dependencies: safe-buffer "5.1.2" basic-ftp@^5.0.2: version "5.0.3" - resolved "https://registry.yarnpkg.com/basic-ftp/-/basic-ftp-5.0.3.tgz#b14c0fe8111ce001ec913686434fe0c2fb461228" + resolved "https://registry.npmjs.org/basic-ftp/-/basic-ftp-5.0.3.tgz" integrity sha512-QHX8HLlncOLpy54mh+k/sWIFd0ThmRqwe9ZjELybGZK+tZ8rUb9VO0saKJUROTbE+KhzDUT7xziGpGrW8Kmd+g== bcrypt-pbkdf@^1.0.0: version "1.0.2" - resolved "https://registry.yarnpkg.com/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz#a4301d389b6a43f9b67ff3ca11a3f6637e360e9e" + resolved "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz" integrity sha512-qeFIXtP4MSoi6NLqO12WfqARWWuCKi2Rn/9hJLEmtB5yTNr9DqFWkJRCf2qShWzPeAMRnOgCrq0sg/KLv5ES9w== dependencies: tweetnacl "^0.14.3" bech32@1.1.4, bech32@^1.1.3: version "1.1.4" - resolved "https://registry.yarnpkg.com/bech32/-/bech32-1.1.4.tgz#e38c9f37bf179b8eb16ae3a772b40c356d4832e9" + resolved "https://registry.npmjs.org/bech32/-/bech32-1.1.4.tgz" integrity sha512-s0IrSOzLlbvX7yp4WBfPITzpAU8sqQcpsmwXDiKwrG4r491vwCO/XpejasRNl0piBMe/DvP4Tz0mIS/X1DPJBQ== before-after-hook@^2.2.0: version "2.2.3" - resolved "https://registry.yarnpkg.com/before-after-hook/-/before-after-hook-2.2.3.tgz#c51e809c81a4e354084422b9b26bad88249c517c" + resolved "https://registry.npmjs.org/before-after-hook/-/before-after-hook-2.2.3.tgz" integrity sha512-NzUnlZexiaH/46WDhANlyR2bXRopNg4F/zuSA3OpZnllCUgRaOF2znDioDWrmbNVsuZk6l9pMquQB38cfBZwkQ== better-ajv-errors@^0.8.2: version "0.8.2" - resolved "https://registry.yarnpkg.com/better-ajv-errors/-/better-ajv-errors-0.8.2.tgz#9abf27e19d2cee60f400753510f7a3a96d655adf" + resolved "https://registry.npmjs.org/better-ajv-errors/-/better-ajv-errors-0.8.2.tgz" integrity sha512-FnODTBJSQSHmJXDLPiC7ca0dC4S1HSTPv1+Hg2sm/C71i3Dj0l1jcUEaq/3OQ6MmnUveshTsUvUj65pDSr3Qow== dependencies: "@babel/code-frame" "^7.0.0" @@ -8125,37 +8407,37 @@ better-ajv-errors@^0.8.2: big-integer@1.6.36: version "1.6.36" - resolved "https://registry.yarnpkg.com/big-integer/-/big-integer-1.6.36.tgz#78631076265d4ae3555c04f85e7d9d2f3a071a36" + resolved "https://registry.npmjs.org/big-integer/-/big-integer-1.6.36.tgz" integrity sha512-t70bfa7HYEA1D9idDbmuv7YbsbVkQ+Hp+8KFSul4aE5e/i1bjCNIRYJZlA8Q8p0r9T8cF/RVvwUgRA//FydEyg== big-integer@^1.6.15, big-integer@^1.6.17, big-integer@^1.6.44: version "1.6.51" - resolved "https://registry.yarnpkg.com/big-integer/-/big-integer-1.6.51.tgz#0df92a5d9880560d3ff2d5fd20245c889d130686" + resolved "https://registry.npmjs.org/big-integer/-/big-integer-1.6.51.tgz" integrity sha512-GPEid2Y9QU1Exl1rpO9B2IPJGHPSupF5GnVIP0blYvNOMer2bTvSWs1jGOUg04hTmu67nmLsQ9TBo1puaotBHg== big.js@^6.0.3: version "6.2.1" - resolved "https://registry.yarnpkg.com/big.js/-/big.js-6.2.1.tgz#7205ce763efb17c2e41f26f121c420c6a7c2744f" + resolved "https://registry.npmjs.org/big.js/-/big.js-6.2.1.tgz" integrity sha512-bCtHMwL9LeDIozFn+oNhhFoq+yQ3BNdnsLSASUxLciOb1vgvpHsIO1dsENiGMgbb4SkP5TrzWzRiLddn8ahVOQ== bigi@^1.1.0, bigi@^1.4.2: version "1.4.2" - resolved "https://registry.yarnpkg.com/bigi/-/bigi-1.4.2.tgz#9c665a95f88b8b08fc05cfd731f561859d725825" + resolved "https://registry.npmjs.org/bigi/-/bigi-1.4.2.tgz" integrity sha512-ddkU+dFIuEIW8lE7ZwdIAf2UPoM90eaprg5m3YXAVVTmKlqV/9BX4A2M8BOK2yOq6/VgZFVhK6QAxJebhlbhzw== bigint-crypto-utils@^3.0.23: version "3.2.2" - resolved "https://registry.yarnpkg.com/bigint-crypto-utils/-/bigint-crypto-utils-3.2.2.tgz#e30a49ec38357c6981cd3da5aaa6480b1f752ee4" + resolved "https://registry.npmjs.org/bigint-crypto-utils/-/bigint-crypto-utils-3.2.2.tgz" integrity sha512-U1RbE3aX9ayCUVcIPHuPDPKcK3SFOXf93J1UK/iHlJuQB7bhagPIX06/CLpLEsDThJ7KA4Dhrnzynl+d2weTiw== bignumber.js@7.2.1, bignumber.js@9.0.0, bignumber.js@9.1.0, bignumber.js@^7.2.0, bignumber.js@^7.2.1, bignumber.js@^9.0.0, bignumber.js@^9.0.1, "bignumber.js@git+https://github.com/debris/bignumber.js#master", "bignumber.js@git+https://github.com/debris/bignumber.js.git#94d7146671b9719e00a09c29b01a691bc85048c2", bignumber.js@~9.0.2: version "9.0.0" - resolved "https://registry.yarnpkg.com/bignumber.js/-/bignumber.js-9.0.0.tgz#805880f84a329b5eac6e7cb6f8274b6d82bdf075" + resolved "https://registry.npmjs.org/bignumber.js/-/bignumber.js-9.0.0.tgz" integrity sha512-t/OYhhJ2SD+YGBQcjY8GzzDHEk9f3nerxjtfa6tlMXfe7frs/WozhvCNoGvpM0P3bNf3Gq5ZRMlGr5f3r4/N8A== bin-links@^3.0.0: version "3.0.3" - resolved "https://registry.yarnpkg.com/bin-links/-/bin-links-3.0.3.tgz#3842711ef3db2cd9f16a5f404a996a12db355a6e" + resolved "https://registry.npmjs.org/bin-links/-/bin-links-3.0.3.tgz" integrity sha512-zKdnMPWEdh4F5INR07/eBrodC7QrF5JKvqskjz/ZZRXg5YSAZIbn8zGhbhUrElzHBZ2fvEQdOU59RHcTG3GiwA== dependencies: cmd-shim "^5.0.0" @@ -8167,12 +8449,12 @@ bin-links@^3.0.0: binary-extensions@^2.0.0: version "2.2.0" - resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.2.0.tgz#75f502eeaf9ffde42fc98829645be4ea76bd9e2d" + resolved "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz" integrity sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA== binary@~0.3.0: version "0.3.0" - resolved "https://registry.yarnpkg.com/binary/-/binary-0.3.0.tgz#9f60553bc5ce8c3386f3b553cff47462adecaa79" + resolved "https://registry.npmjs.org/binary/-/binary-0.3.0.tgz" integrity sha512-D4H1y5KYwpJgK8wk1Cue5LLPgmwHKYSChkbspQg5JtVuR5ulGckxfR62H3AE9UDkdMC8yyXlqYihuz3Aqg2XZg== dependencies: buffers "~0.1.1" @@ -8180,19 +8462,19 @@ binary@~0.3.0: bindings@^1.2.1, bindings@^1.3.0, bindings@^1.5.0: version "1.5.0" - resolved "https://registry.yarnpkg.com/bindings/-/bindings-1.5.0.tgz#10353c9e945334bc0511a6d90b38fbc7c9c504df" + resolved "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz" integrity sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ== dependencies: file-uri-to-path "1.0.0" bintrees@1.0.2: version "1.0.2" - resolved "https://registry.yarnpkg.com/bintrees/-/bintrees-1.0.2.tgz#49f896d6e858a4a499df85c38fb399b9aff840f8" + resolved "https://registry.npmjs.org/bintrees/-/bintrees-1.0.2.tgz" integrity sha512-VOMgTMwjAaUG580SXn3LacVgjurrbMme7ZZNYGSSV7mmtY6QQRh0Eg3pwIcntQ77DErK1L0NxkbetjcoXzVwKw== bip32@2.0.5: version "2.0.5" - resolved "https://registry.yarnpkg.com/bip32/-/bip32-2.0.5.tgz#e3808a9e97a880dbafd0f5f09ca4a1e14ee275d2" + resolved "https://registry.npmjs.org/bip32/-/bip32-2.0.5.tgz" integrity sha512-zVY4VvJV+b2fS0/dcap/5XLlpqtgwyN8oRkuGgAS1uLOeEp0Yo6Tw2yUTozTtlrMJO3G8n4g/KX/XGFHW6Pq3g== dependencies: "@types/node" "10.12.18" @@ -8205,7 +8487,7 @@ bip32@2.0.5: bip32@3.1.0, bip32@^3.1.0: version "3.1.0" - resolved "https://registry.yarnpkg.com/bip32/-/bip32-3.1.0.tgz#ce90e020d0e6b41e891a0122ff053efabcce1ccc" + resolved "https://registry.npmjs.org/bip32/-/bip32-3.1.0.tgz" integrity sha512-eoeajYEzJ4d6yyVtby8C+XkCeKItiC4Mx56a0M9VaqTMC73SWOm4xVZG7SaR8e/yp4eSyky2XcBpH3DApPdu7Q== dependencies: bs58check "^2.1.1" @@ -8215,29 +8497,7 @@ bip32@3.1.0, bip32@^3.1.0: typeforce "^1.11.5" wif "^2.0.6" -bip39@2.5.0: - version "2.5.0" - resolved "https://registry.yarnpkg.com/bip39/-/bip39-2.5.0.tgz#51cbd5179460504a63ea3c000db3f787ca051235" - integrity sha512-xwIx/8JKoT2+IPJpFEfXoWdYwP7UVAoUxxLNfGCfVowaJE7yg1Y5B1BVPqlUNsBq5/nGwmFkwRJ8xDW4sX8OdA== - dependencies: - create-hash "^1.1.0" - pbkdf2 "^3.0.9" - randombytes "^2.0.1" - safe-buffer "^5.0.1" - unorm "^1.3.3" - -bip39@^2.2.0, bip39@^2.5.0: - version "2.6.0" - resolved "https://registry.yarnpkg.com/bip39/-/bip39-2.6.0.tgz#9e3a720b42ec8b3fbe4038f1e445317b6a99321c" - integrity sha512-RrnQRG2EgEoqO24ea+Q/fftuPUZLmrEM3qNhhGsA3PbaXaCW791LTzPuVyx/VprXQcTbPJ3K3UeTna8ZnVl2sg== - dependencies: - create-hash "^1.1.0" - pbkdf2 "^3.0.9" - randombytes "^2.0.1" - safe-buffer "^5.0.1" - unorm "^1.3.3" - -"bip39@https://github.com/bitcoinjs/bip39#d8ea080a18b40f301d4e2219a2991cd2417e83c2": +bip39@2.5.0, bip39@^2.2.0, bip39@^2.5.0, "bip39@https://github.com/bitcoinjs/bip39#d8ea080a18b40f301d4e2219a2991cd2417e83c2": version "3.0.3" resolved "https://github.com/bitcoinjs/bip39#d8ea080a18b40f301d4e2219a2991cd2417e83c2" dependencies: @@ -8248,14 +8508,14 @@ bip39@^2.2.0, bip39@^2.5.0: bip66@^1.1.5: version "1.1.5" - resolved "https://registry.yarnpkg.com/bip66/-/bip66-1.1.5.tgz#01fa8748785ca70955d5011217d1b3139969ca22" + resolved "https://registry.npmjs.org/bip66/-/bip66-1.1.5.tgz" integrity sha512-nemMHz95EmS38a26XbbdxIYj5csHd3RMP3H5bwQknX0WYHF01qhpufP42mLOwVICuH2JmhIhXiWs89MfUGL7Xw== dependencies: safe-buffer "^5.0.1" bl@^1.0.0: version "1.2.3" - resolved "https://registry.yarnpkg.com/bl/-/bl-1.2.3.tgz#1e8dd80142eac80d7158c9dccc047fb620e035e7" + resolved "https://registry.npmjs.org/bl/-/bl-1.2.3.tgz" integrity sha512-pvcNpa0UU69UT341rO6AYy4FVAIkUHuZXRIWbq+zHnsVcRzDDjIAhGuuYoi0d//cwIwtt4pkpKycWEfjdV+vww== dependencies: readable-stream "^2.3.5" @@ -8263,14 +8523,14 @@ bl@^1.0.0: bl@^3.0.0: version "3.0.1" - resolved "https://registry.yarnpkg.com/bl/-/bl-3.0.1.tgz#1cbb439299609e419b5a74d7fce2f8b37d8e5c6f" + resolved "https://registry.npmjs.org/bl/-/bl-3.0.1.tgz" integrity sha512-jrCW5ZhfQ/Vt07WX1Ngs+yn9BDqPL/gw28S7s9H6QK/gupnizNzJAss5akW20ISgOrbLTlXOOCTJeNUQqruAWQ== dependencies: readable-stream "^3.0.1" bl@^4.0.3, bl@^4.1.0: version "4.1.0" - resolved "https://registry.yarnpkg.com/bl/-/bl-4.1.0.tgz#451535264182bec2fbbc83a62ab98cf11d9f7b3a" + resolved "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz" integrity sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w== dependencies: buffer "^5.5.0" @@ -8279,12 +8539,13 @@ bl@^4.0.3, bl@^4.1.0: blakejs@^1.1.0: version "1.2.1" - resolved "https://registry.yarnpkg.com/blakejs/-/blakejs-1.2.1.tgz#5057e4206eadb4a97f7c0b6e197a505042fc3814" + resolved "https://registry.npmjs.org/blakejs/-/blakejs-1.2.1.tgz" integrity sha512-QXUSXI3QVc/gJME0dBpXrag1kbzOqCjCX8/b54ntNyW6sjtoqxqRk3LTmXzaJoh71zMsDCjM+47jS7XiwN/+fQ== -"blind-threshold-bls@https://github.com/celo-org/blind-threshold-bls-wasm#e1e2f8a": - version "0.1.0" - resolved "https://github.com/celo-org/blind-threshold-bls-wasm#e1e2f8a1ab5154c2f0b1c55cb0d61fbb1d907208" +"blind-threshold-bls@https://github.com/celo-org/blind-threshold-bls-wasm#e1e2f8a", "blind-threshold-bls@npm:@celo/blind-threshold-bls@1.0.0-beta": + version "1.0.0-beta" + resolved "https://registry.yarnpkg.com/@celo/blind-threshold-bls/-/blind-threshold-bls-1.0.0-beta.tgz#6c46e55c3720d99929d6d34dd3770b1623a09900" + integrity sha512-sk9XLvbv0M0TJKJPHPc8FkIRTfP/PiPHeyKXPBTMZBW8URL4pRix9IfcT98zT5sA7hvMDJwgw3p3tM/L6Z1iGw== "bls12377js@https://github.com/celo-org/bls12377js#cb38a4cfb643c778619d79b20ca3e5283a2122a6": version "0.1.0" @@ -8300,47 +8561,47 @@ blakejs@^1.1.0: bluebird@^2.9.33: version "2.11.0" - resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-2.11.0.tgz#534b9033c022c9579c56ba3b3e5a5caafbb650e1" + resolved "https://registry.npmjs.org/bluebird/-/bluebird-2.11.0.tgz" integrity sha512-UfFSr22dmHPQqPP9XWHRhq+gWnHCYguQGkXQlbyPtW5qTnhFWA8/iXg765tH0cAjy7l/zPJ1aBTO0g5XgA7kvQ== bluebird@^3.5.0, bluebird@^3.5.2, bluebird@^3.7.2: version "3.7.2" - resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.7.2.tgz#9f229c15be272454ffa973ace0dbee79a1b0c36f" + resolved "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz" integrity sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg== bluebird@~3.4.1: version "3.4.7" - resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.4.7.tgz#f72d760be09b7f76d08ed8fae98b289a8d05fab3" + resolved "https://registry.npmjs.org/bluebird/-/bluebird-3.4.7.tgz" integrity sha512-iD3898SR7sWVRHbiQv+sHUtHnMvC1o3nW5rAcqnq3uOn07DSAppZYUkIGslDz6gXC7HfunPe7YVBgoEJASPcHA== bn.js@4.11.6: version "4.11.6" - resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.11.6.tgz#53344adb14617a13f6e8dd2ce28905d1c0ba3215" + resolved "https://registry.npmjs.org/bn.js/-/bn.js-4.11.6.tgz" integrity sha512-XWwnNNFCuuSQ0m3r3C4LE3EiORltHd9M05pq6FOlVeiophzRbMo50Sbz1ehl8K3Z+jw9+vmgnXefY1hz8X+2wA== bn.js@4.11.8: version "4.11.8" - resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.11.8.tgz#2cde09eb5ee341f484746bb0309b3253b1b1442f" + resolved "https://registry.npmjs.org/bn.js/-/bn.js-4.11.8.tgz" integrity sha512-ItfYfPLkWHUjckQCk8xC+LwxgK8NYcXywGigJgSwOP8Y2iyWT4f2vsZnoOXTTbo+o5yXmIUJ4gn5538SO5S3gA== bn.js@4.11.9: version "4.11.9" - resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.11.9.tgz#26d556829458f9d1e81fc48952493d0ba3507828" + resolved "https://registry.npmjs.org/bn.js/-/bn.js-4.11.9.tgz" integrity sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw== bn.js@^4.0.0, bn.js@^4.1.0, bn.js@^4.11.0, bn.js@^4.11.6, bn.js@^4.11.8, bn.js@^4.11.9, bn.js@^4.4.0: version "4.12.0" - resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.12.0.tgz#775b3f278efbb9718eec7361f483fb36fbbfea88" + resolved "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz" integrity sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA== bn.js@^5.0.0, bn.js@^5.1.1, bn.js@^5.1.2, bn.js@^5.1.3, bn.js@^5.2.0, bn.js@^5.2.1: version "5.2.1" - resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-5.2.1.tgz#0bc527a6a0d18d0aa8d5b0538ce4a77dccfa7b70" + resolved "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz" integrity sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ== body-parser@1.20.1: version "1.20.1" - resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.20.1.tgz#b1812a8912c195cd371a3ee5e66faa2338a5c668" + resolved "https://registry.npmjs.org/body-parser/-/body-parser-1.20.1.tgz" integrity sha512-jWi7abTbYwajOytWCQc37VulmWiRae5RyTpaCyDcS5/lMdtwSz5lOpDE67srw/HYe35f1z3fDQw+3txg7gNtWw== dependencies: bytes "3.1.2" @@ -8358,7 +8619,7 @@ body-parser@1.20.1: body-parser@^1.16.0, body-parser@^1.18.3, body-parser@^1.19.0: version "1.20.2" - resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.20.2.tgz#6feb0e21c4724d06de7ff38da36dad4f57a747fd" + resolved "https://registry.npmjs.org/body-parser/-/body-parser-1.20.2.tgz" integrity sha512-ml9pReCu3M61kGlqoTm2umSXTlRTuGTx0bfYj+uIUKKYycG5NtSbeetV3faSU6R7ajOPw0g/J1PvK4qNy7s5bA== dependencies: bytes "3.1.2" @@ -8376,12 +8637,12 @@ body-parser@^1.16.0, body-parser@^1.18.3, body-parser@^1.19.0: boolbase@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/boolbase/-/boolbase-1.0.0.tgz#68dff5fbe60c51eb37725ea9e3ed310dcc1e776e" + resolved "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz" integrity sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww== boxen@^4.2.0: version "4.2.0" - resolved "https://registry.yarnpkg.com/boxen/-/boxen-4.2.0.tgz#e411b62357d6d6d36587c8ac3d5d974daa070e64" + resolved "https://registry.npmjs.org/boxen/-/boxen-4.2.0.tgz" integrity sha512-eB4uT9RGzg2odpER62bBwSLvUeGC+WbRjjyyFhGsKnc8wp/m0+hQsMUvUe3H2V0D5vw0nBdO1hCJoZo5mKeuIQ== dependencies: ansi-align "^3.0.0" @@ -8395,7 +8656,7 @@ boxen@^4.2.0: boxen@^5.0.0: version "5.1.2" - resolved "https://registry.yarnpkg.com/boxen/-/boxen-5.1.2.tgz#788cb686fc83c1f486dfa8a40c68fc2b831d2b50" + resolved "https://registry.npmjs.org/boxen/-/boxen-5.1.2.tgz" integrity sha512-9gYgQKXx+1nP8mP7CzFyaUARhg7D3n1dF/FnErWmu9l6JvGpNUN278h0aSb+QjoiKSWG+iZ3uHrcqk0qrY9RQQ== dependencies: ansi-align "^3.0.0" @@ -8409,7 +8670,7 @@ boxen@^5.0.0: brace-expansion@^1.1.7: version "1.1.11" - resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" + resolved "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz" integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== dependencies: balanced-match "^1.0.0" @@ -8417,14 +8678,14 @@ brace-expansion@^1.1.7: brace-expansion@^2.0.1: version "2.0.1" - resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-2.0.1.tgz#1edc459e0f0c548486ecf9fc99f2221364b9a0ae" + resolved "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz" integrity sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA== dependencies: balanced-match "^1.0.0" braces@^1.8.0, braces@^1.8.2: version "1.8.5" - resolved "https://registry.yarnpkg.com/braces/-/braces-1.8.5.tgz#ba77962e12dff969d6b76711e914b737857bf6a7" + resolved "https://registry.npmjs.org/braces/-/braces-1.8.5.tgz" integrity sha512-xU7bpz2ytJl1bH9cgIurjpg/n8Gohy9GTw81heDYLJQ4RU60dlyJsa+atVF2pI0yMMvKxI9HkKwjePCj5XI1hw== dependencies: expand-range "^1.8.1" @@ -8433,7 +8694,7 @@ braces@^1.8.0, braces@^1.8.2: braces@^2.3.1: version "2.3.2" - resolved "https://registry.yarnpkg.com/braces/-/braces-2.3.2.tgz#5979fd3f14cd531565e5fa2df1abfff1dfaee729" + resolved "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz" integrity sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w== dependencies: arr-flatten "^1.1.0" @@ -8449,19 +8710,19 @@ braces@^2.3.1: braces@^3.0.2, braces@~3.0.2: version "3.0.2" - resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107" + resolved "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz" integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== dependencies: fill-range "^7.0.1" brorand@^1.0.1, brorand@^1.1.0: version "1.1.0" - resolved "https://registry.yarnpkg.com/brorand/-/brorand-1.1.0.tgz#12c25efe40a45e3c323eb8675a0a0ce57b22371f" + resolved "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz" integrity sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w== browser-level@^1.0.1: version "1.0.1" - resolved "https://registry.yarnpkg.com/browser-level/-/browser-level-1.0.1.tgz#36e8c3183d0fe1c405239792faaab5f315871011" + resolved "https://registry.npmjs.org/browser-level/-/browser-level-1.0.1.tgz" integrity sha512-XECYKJ+Dbzw0lbydyQuJzwNXtOpbMSq737qxJN11sIRTErOMShvDpbzTlgju7orJKvx4epULolZAuJGLzCmWRQ== dependencies: abstract-level "^1.0.2" @@ -8471,12 +8732,12 @@ browser-level@^1.0.1: browser-stdout@1.3.1: version "1.3.1" - resolved "https://registry.yarnpkg.com/browser-stdout/-/browser-stdout-1.3.1.tgz#baa559ee14ced73452229bad7326467c61fabd60" + resolved "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.1.tgz" integrity sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw== browserify-aes@^1.0.0, browserify-aes@^1.0.4, browserify-aes@^1.0.6, browserify-aes@^1.2.0: version "1.2.0" - resolved "https://registry.yarnpkg.com/browserify-aes/-/browserify-aes-1.2.0.tgz#326734642f403dabc3003209853bb70ad428ef48" + resolved "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz" integrity sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA== dependencies: buffer-xor "^1.0.3" @@ -8488,7 +8749,7 @@ browserify-aes@^1.0.0, browserify-aes@^1.0.4, browserify-aes@^1.0.6, browserify- browserify-cipher@^1.0.0: version "1.0.1" - resolved "https://registry.yarnpkg.com/browserify-cipher/-/browserify-cipher-1.0.1.tgz#8d6474c1b870bfdabcd3bcfcc1934a10e94f15f0" + resolved "https://registry.npmjs.org/browserify-cipher/-/browserify-cipher-1.0.1.tgz" integrity sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w== dependencies: browserify-aes "^1.0.4" @@ -8497,7 +8758,7 @@ browserify-cipher@^1.0.0: browserify-des@^1.0.0: version "1.0.2" - resolved "https://registry.yarnpkg.com/browserify-des/-/browserify-des-1.0.2.tgz#3af4f1f59839403572f1c66204375f7a7f703e9c" + resolved "https://registry.npmjs.org/browserify-des/-/browserify-des-1.0.2.tgz" integrity sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A== dependencies: cipher-base "^1.0.1" @@ -8507,7 +8768,7 @@ browserify-des@^1.0.0: browserify-rsa@^4.0.0, browserify-rsa@^4.0.1: version "4.1.0" - resolved "https://registry.yarnpkg.com/browserify-rsa/-/browserify-rsa-4.1.0.tgz#b2fd06b5b75ae297f7ce2dc651f918f5be158c8d" + resolved "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.1.0.tgz" integrity sha512-AdEER0Hkspgno2aR97SAf6vi0y0k8NuOpGnVH3O99rcA5Q6sh8QxcngtHuJ6uXwnfAXNM4Gn1Gb7/MV1+Ymbog== dependencies: bn.js "^5.0.0" @@ -8515,7 +8776,7 @@ browserify-rsa@^4.0.0, browserify-rsa@^4.0.1: browserify-sign@^4.0.0: version "4.2.1" - resolved "https://registry.yarnpkg.com/browserify-sign/-/browserify-sign-4.2.1.tgz#eaf4add46dd54be3bb3b36c0cf15abbeba7956c3" + resolved "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.2.1.tgz" integrity sha512-/vrA5fguVAKKAVTNJjgSm1tRQDHUU6DbwO9IROu/0WAzC8PKhucDSh18J0RMvVeHAn5puMd+QHC2erPRNf8lmg== dependencies: bn.js "^5.1.1" @@ -8530,7 +8791,7 @@ browserify-sign@^4.0.0: browserslist@^4.21.3, browserslist@^4.21.5: version "4.21.5" - resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.21.5.tgz#75c5dae60063ee641f977e00edd3cfb2fb7af6a7" + resolved "https://registry.npmjs.org/browserslist/-/browserslist-4.21.5.tgz" integrity sha512-tUkiguQGW7S3IhB7N+c2MV/HZPSCPAAiYBZXLsBhFB/PCy6ZKKsZrmBayHV9fdGV/ARIfJ14NkxKzRDjvp7L6w== dependencies: caniuse-lite "^1.0.30001449" @@ -8540,26 +8801,26 @@ browserslist@^4.21.3, browserslist@^4.21.5: bs-logger@0.x: version "0.2.6" - resolved "https://registry.yarnpkg.com/bs-logger/-/bs-logger-0.2.6.tgz#eb7d365307a72cf974cc6cda76b68354ad336bd8" + resolved "https://registry.npmjs.org/bs-logger/-/bs-logger-0.2.6.tgz" integrity sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog== dependencies: fast-json-stable-stringify "2.x" bs58@^2.0.1: version "2.0.1" - resolved "https://registry.yarnpkg.com/bs58/-/bs58-2.0.1.tgz#55908d58f1982aba2008fa1bed8f91998a29bf8d" + resolved "https://registry.npmjs.org/bs58/-/bs58-2.0.1.tgz" integrity sha512-77ld2g7Hn1GyIUpuUVfbZdhO1q9R9gv/GYam4HAeAW/tzhQDrbJ2ZttN1tIe4hmKrWFE+oUtAhBNx/EA5SVdTg== bs58@^4.0.0, bs58@^4.0.1: version "4.0.1" - resolved "https://registry.yarnpkg.com/bs58/-/bs58-4.0.1.tgz#be161e76c354f6f788ae4071f63f34e8c4f0a42a" + resolved "https://registry.npmjs.org/bs58/-/bs58-4.0.1.tgz" integrity sha512-Ok3Wdf5vOIlBrgCvTq96gBkJw+JUEzdBgyaza5HLtPm7yTHkjRy8+JzNyHF7BHa0bNWOQIp3m5YF0nnFcOIKLw== dependencies: base-x "^3.0.2" bs58check@<3.0.0, bs58check@^2.1.1, bs58check@^2.1.2: version "2.1.2" - resolved "https://registry.yarnpkg.com/bs58check/-/bs58check-2.1.2.tgz#53b018291228d82a5aa08e7d796fdafda54aebfc" + resolved "https://registry.npmjs.org/bs58check/-/bs58check-2.1.2.tgz" integrity sha512-0TS1jicxdU09dwJMNZtVAfzPi6Q6QeN0pM1Fkzrjn+XYHvzMKPU3pHVpva+769iNVSfIYWf7LJ6WR+BuuMf8cA== dependencies: bs58 "^4.0.0" @@ -8568,24 +8829,24 @@ bs58check@<3.0.0, bs58check@^2.1.1, bs58check@^2.1.2: bser@2.1.1: version "2.1.1" - resolved "https://registry.yarnpkg.com/bser/-/bser-2.1.1.tgz#e6787da20ece9d07998533cfd9de6f5c38f4bc05" + resolved "https://registry.npmjs.org/bser/-/bser-2.1.1.tgz" integrity sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ== dependencies: node-int64 "^0.4.0" btoa@1.2.1, btoa@^1.2.1: version "1.2.1" - resolved "https://registry.yarnpkg.com/btoa/-/btoa-1.2.1.tgz#01a9909f8b2c93f6bf680ba26131eb30f7fa3d73" + resolved "https://registry.npmjs.org/btoa/-/btoa-1.2.1.tgz" integrity sha512-SB4/MIGlsiVkMcHmT+pSmIPoNDoHg+7cMzmt3Uxt628MTz2487DKSqK/fuhFBrkuqrYv5UCEnACpF4dTFNKc/g== buffer-alloc-unsafe@^1.1.0: version "1.1.0" - resolved "https://registry.yarnpkg.com/buffer-alloc-unsafe/-/buffer-alloc-unsafe-1.1.0.tgz#bd7dc26ae2972d0eda253be061dba992349c19f0" + resolved "https://registry.npmjs.org/buffer-alloc-unsafe/-/buffer-alloc-unsafe-1.1.0.tgz" integrity sha512-TEM2iMIEQdJ2yjPJoSIsldnleVaAk1oW3DBVUykyOLsEsFmEc9kn+SFFPz+gl54KQNxlDnAwCXosOS9Okx2xAg== buffer-alloc@^1.2.0: version "1.2.0" - resolved "https://registry.yarnpkg.com/buffer-alloc/-/buffer-alloc-1.2.0.tgz#890dd90d923a873e08e10e5fd51a57e5b7cce0ec" + resolved "https://registry.npmjs.org/buffer-alloc/-/buffer-alloc-1.2.0.tgz" integrity sha512-CFsHQgjtW1UChdXgbyJGtnm+O/uLQeZdtbDo8mfUgYXCHSM1wgrVxXm6bSyrUuErEb+4sYVGCzASBRot7zyrow== dependencies: buffer-alloc-unsafe "^1.1.0" @@ -8593,59 +8854,59 @@ buffer-alloc@^1.2.0: buffer-crc32@^0.2.1, buffer-crc32@^0.2.13, buffer-crc32@~0.2.3: version "0.2.13" - resolved "https://registry.yarnpkg.com/buffer-crc32/-/buffer-crc32-0.2.13.tgz#0d333e3f00eac50aa1454abd30ef8c2a5d9a7242" + resolved "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz" integrity sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ== buffer-equal-constant-time@1.0.1: version "1.0.1" - resolved "https://registry.yarnpkg.com/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz#f8e71132f7ffe6e01a5c9697a4c6f3e48d5cc819" + resolved "https://registry.npmjs.org/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz" integrity sha512-zRpUiDwd/xk6ADqPMATG8vc9VPrkck7T07OIx0gnjmJAnHnTVXNQG3vfvWNuiZIkwu9KrKdA1iJKfsfTVxE6NA== buffer-fill@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/buffer-fill/-/buffer-fill-1.0.0.tgz#f8f78b76789888ef39f205cd637f68e702122b2c" + resolved "https://registry.npmjs.org/buffer-fill/-/buffer-fill-1.0.0.tgz" integrity sha512-T7zexNBwiiaCOGDg9xNX9PBmjrubblRkENuptryuI64URkXDFum9il/JGL8Lm8wYfAXpredVXXZz7eMHilimiQ== buffer-from@1.1.2, buffer-from@^1.0.0, buffer-from@^1.1.1: version "1.1.2" - resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.2.tgz#2b146a6fd72e80b4f55d255f35ed59a3a9a41bd5" + resolved "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz" integrity sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ== buffer-indexof-polyfill@~1.0.0: version "1.0.2" - resolved "https://registry.yarnpkg.com/buffer-indexof-polyfill/-/buffer-indexof-polyfill-1.0.2.tgz#d2732135c5999c64b277fcf9b1abe3498254729c" + resolved "https://registry.npmjs.org/buffer-indexof-polyfill/-/buffer-indexof-polyfill-1.0.2.tgz" integrity sha512-I7wzHwA3t1/lwXQh+A5PbNvJxgfo5r3xulgpYDB5zckTu/Z9oUK9biouBKQUjEqzaz3HnAT6TYoovmE+GqSf7A== buffer-reverse@^1.0.1: version "1.0.1" - resolved "https://registry.yarnpkg.com/buffer-reverse/-/buffer-reverse-1.0.1.tgz#49283c8efa6f901bc01fa3304d06027971ae2f60" + resolved "https://registry.npmjs.org/buffer-reverse/-/buffer-reverse-1.0.1.tgz" integrity sha512-M87YIUBsZ6N924W57vDwT/aOu8hw7ZgdByz6ijksLjmHJELBASmYTTlNHRgjE+pTsT9oJXGaDSgqqwfdHotDUg== buffer-to-arraybuffer@^0.0.5: version "0.0.5" - resolved "https://registry.yarnpkg.com/buffer-to-arraybuffer/-/buffer-to-arraybuffer-0.0.5.tgz#6064a40fa76eb43c723aba9ef8f6e1216d10511a" + resolved "https://registry.npmjs.org/buffer-to-arraybuffer/-/buffer-to-arraybuffer-0.0.5.tgz" integrity sha512-3dthu5CYiVB1DEJp61FtApNnNndTckcqe4pFcLdvHtrpG+kcyekCJKg4MRiDcFW7A6AODnXB9U4dwQiCW5kzJQ== buffer-writer@2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/buffer-writer/-/buffer-writer-2.0.0.tgz#ce7eb81a38f7829db09c873f2fbb792c0c98ec04" + resolved "https://registry.npmjs.org/buffer-writer/-/buffer-writer-2.0.0.tgz" integrity sha512-a7ZpuTZU1TRtnwyCNW3I5dc0wWNC3VR9S++Ewyk2HHZdrO3CQJqSpd+95Us590V6AL7JqUAH2IwZ/398PmNFgw== buffer-xor@^1.0.3: version "1.0.3" - resolved "https://registry.yarnpkg.com/buffer-xor/-/buffer-xor-1.0.3.tgz#26e61ed1422fb70dd42e6e36729ed51d855fe8d9" + resolved "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz" integrity sha512-571s0T7nZWK6vB67HI5dyUF7wXiNcfaPPPTl6zYCNApANjIvYJTg7hlud/+cJpdAhS7dVzqMLmfhfHR3rAcOjQ== buffer-xor@^2.0.1: version "2.0.2" - resolved "https://registry.yarnpkg.com/buffer-xor/-/buffer-xor-2.0.2.tgz#34f7c64f04c777a1f8aac5e661273bb9dd320289" + resolved "https://registry.npmjs.org/buffer-xor/-/buffer-xor-2.0.2.tgz" integrity sha512-eHslX0bin3GB+Lx2p7lEYRShRewuNZL3fUl4qlVJGGiwoPGftmt8JQgk2Y9Ji5/01TnVDo33E5b5O3vUB1HdqQ== dependencies: safe-buffer "^5.1.1" buffer@4.9.2: version "4.9.2" - resolved "https://registry.yarnpkg.com/buffer/-/buffer-4.9.2.tgz#230ead344002988644841ab0244af8c44bbe3ef8" + resolved "https://registry.npmjs.org/buffer/-/buffer-4.9.2.tgz" integrity sha512-xq+q3SRMOxGivLhBNaUdC64hDTQwejJ+H0T/NB1XMtTVEwNTrfFF3gAxiyW0Bu/xWEGhjVKgUcMhCrUy2+uCWg== dependencies: base64-js "^1.0.2" @@ -8654,7 +8915,7 @@ buffer@4.9.2: buffer@6.0.3, buffer@^6.0.3: version "6.0.3" - resolved "https://registry.yarnpkg.com/buffer/-/buffer-6.0.3.tgz#2ace578459cc8fbe2a70aaa8f52ee63b6a74c6c6" + resolved "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz" integrity sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA== dependencies: base64-js "^1.3.1" @@ -8662,7 +8923,7 @@ buffer@6.0.3, buffer@^6.0.3: buffer@^5.0.5, buffer@^5.2.1, buffer@^5.4.3, buffer@^5.5.0, buffer@^5.6.0: version "5.7.1" - resolved "https://registry.yarnpkg.com/buffer/-/buffer-5.7.1.tgz#ba62e7c13133053582197160851a8f648e99eed0" + resolved "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz" integrity sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ== dependencies: base64-js "^1.3.1" @@ -8670,26 +8931,19 @@ buffer@^5.0.5, buffer@^5.2.1, buffer@^5.4.3, buffer@^5.5.0, buffer@^5.6.0: buffers@~0.1.1: version "0.1.1" - resolved "https://registry.yarnpkg.com/buffers/-/buffers-0.1.1.tgz#b24579c3bed4d6d396aeee6d9a8ae7f5482ab7bb" + resolved "https://registry.npmjs.org/buffers/-/buffers-0.1.1.tgz" integrity sha512-9q/rDEGSb/Qsvv2qvzIzdluL5k7AaJOTrw23z9reQthrbF7is4CtlT0DXyO1oei2DCp4uojjzQ7igaSHp1kAEQ== -bufferutil@4.0.5: +bufferutil@4.0.5, bufferutil@^4.0.1: version "4.0.5" - resolved "https://registry.yarnpkg.com/bufferutil/-/bufferutil-4.0.5.tgz#da9ea8166911cc276bf677b8aed2d02d31f59028" + resolved "https://registry.npmjs.org/bufferutil/-/bufferutil-4.0.5.tgz" integrity sha512-HTm14iMQKK2FjFLRTM5lAVcyaUzOnqbPtesFIvREgXpJHdQm8bWS+GkQgIkfaBYRHuCnea7w8UVNfwiAQhlr9A== dependencies: node-gyp-build "^4.3.0" -bufferutil@^4.0.1: - version "4.0.7" - resolved "https://registry.yarnpkg.com/bufferutil/-/bufferutil-4.0.7.tgz#60c0d19ba2c992dd8273d3f73772ffc894c153ad" - integrity sha512-kukuqc39WOHtdxtw4UScxF/WVnMFVSQVKhtx3AjZJzhd0RGZZldcrfSEbVsWWe6KNH253574cq5F+wpv0G9pJw== - dependencies: - node-gyp-build "^4.3.0" - bufrw@^1.2.1: version "1.3.0" - resolved "https://registry.yarnpkg.com/bufrw/-/bufrw-1.3.0.tgz#28d6cfdaf34300376836310f5c31d57eeb40c8fa" + resolved "https://registry.npmjs.org/bufrw/-/bufrw-1.3.0.tgz" integrity sha512-jzQnSbdJqhIltU9O5KUiTtljP9ccw2u5ix59McQy4pV2xGhVLhRZIndY8GIrgh5HjXa6+QJ9AQhOd2QWQizJFQ== dependencies: ansi-color "^0.2.1" @@ -8704,19 +8958,19 @@ builtin-modules@^1.1.1: builtins@^1.0.3: version "1.0.3" - resolved "https://registry.yarnpkg.com/builtins/-/builtins-1.0.3.tgz#cb94faeb61c8696451db36534e1422f94f0aee88" + resolved "https://registry.npmjs.org/builtins/-/builtins-1.0.3.tgz" integrity sha512-uYBjakWipfaO/bXI7E8rq6kpwHRZK5cNYrUv2OzZSI/FvmdMyXJ2tG9dKcjEC5YHmHpUAwsargWIZNWdxb/bnQ== builtins@^5.0.0: version "5.0.1" - resolved "https://registry.yarnpkg.com/builtins/-/builtins-5.0.1.tgz#87f6db9ab0458be728564fa81d876d8d74552fa9" + resolved "https://registry.npmjs.org/builtins/-/builtins-5.0.1.tgz" integrity sha512-qwVpFEHNfhYJIzNRBvd2C1kyo6jz3ZSMPyyuR47OPdiKWlbYnZNyDWuyR175qDnAJLiCo5fBBqPb3RiXgWlkOQ== dependencies: semver "^7.0.0" bunyan-debug-stream@2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/bunyan-debug-stream/-/bunyan-debug-stream-2.0.0.tgz#b9593e38753f594e3f9db3eb2fdebdc2af147a9f" + resolved "https://registry.npmjs.org/bunyan-debug-stream/-/bunyan-debug-stream-2.0.0.tgz" integrity sha512-Ovl43CJ7nUwalLzdXc6E1nGIy6ift9Z/QpYXUtsjpDAg35ZFKXifKNZyfpMGuN3N7ijLLqbnxPsMMHsXDdXa9A== dependencies: colors "^1.0.3" @@ -8724,7 +8978,7 @@ bunyan-debug-stream@2.0.0: bunyan-debug-stream@^2.0.0: version "2.0.1" - resolved "https://registry.yarnpkg.com/bunyan-debug-stream/-/bunyan-debug-stream-2.0.1.tgz#9bd7c7e30c7b2cf711317e9d37529b0464c3b164" + resolved "https://registry.npmjs.org/bunyan-debug-stream/-/bunyan-debug-stream-2.0.1.tgz" integrity sha512-MCEoqggU7NMt7f2O+PU8VkqfSkoQoa4lmN/OWhaRfqFRBF1Se2TOXQyLF6NxC+EtfrdthnquQe8jOe83fpEoGA== dependencies: colors "1.4.0" @@ -8732,12 +8986,12 @@ bunyan-debug-stream@^2.0.0: bunyan-gke-stackdriver@0.1.2: version "0.1.2" - resolved "https://registry.yarnpkg.com/bunyan-gke-stackdriver/-/bunyan-gke-stackdriver-0.1.2.tgz#a47e3724bbb324b1ec0b7dc4350c4d7073aae66d" + resolved "https://registry.npmjs.org/bunyan-gke-stackdriver/-/bunyan-gke-stackdriver-0.1.2.tgz" integrity sha512-eY5OLgAXvOvOq2YpxI0HlV5HjAcLm36Ln3PxxsztO+2GrFSgU3oXoic2LCif/heBKoyOZdMyXKWF5dvswSOS6w== bunyan@1.8.12: version "1.8.12" - resolved "https://registry.yarnpkg.com/bunyan/-/bunyan-1.8.12.tgz#f150f0f6748abdd72aeae84f04403be2ef113797" + resolved "https://registry.npmjs.org/bunyan/-/bunyan-1.8.12.tgz" integrity sha512-dmDUbGHeGcvCDLRFOscZkwx1ZO/aFz3bJOCi5nCgzdhFGPxwK+y5AcDBnqagNGlJZ7lje/l6JUEz9mQcutttdg== optionalDependencies: dtrace-provider "~0.8" @@ -8747,29 +9001,29 @@ bunyan@1.8.12: byte-size@^7.0.0: version "7.0.1" - resolved "https://registry.yarnpkg.com/byte-size/-/byte-size-7.0.1.tgz#b1daf3386de7ab9d706b941a748dbfc71130dee3" + resolved "https://registry.npmjs.org/byte-size/-/byte-size-7.0.1.tgz" integrity sha512-crQdqyCwhokxwV1UyDzLZanhkugAgft7vt0qbbdt60C6Zf3CAiGmtUCylbtYwrU6loOUw3euGrNtW1J651ot1A== bytebuffer@~5: version "5.0.1" - resolved "https://registry.yarnpkg.com/bytebuffer/-/bytebuffer-5.0.1.tgz#582eea4b1a873b6d020a48d58df85f0bba6cfddd" + resolved "https://registry.npmjs.org/bytebuffer/-/bytebuffer-5.0.1.tgz" integrity sha512-IuzSdmADppkZ6DlpycMkm8l9zeEq16fWtLvunEwFiYciR/BHo4E8/xs5piFquG+Za8OWmMqHF8zuRviz2LHvRQ== dependencies: long "~3" bytes@3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.0.0.tgz#d32815404d689699f85a4ea4fa8755dd13a96048" + resolved "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz" integrity sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw== bytes@3.1.2: version "3.1.2" - resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.1.2.tgz#8b0beeb98605adf1b128fa4386403c009e0221a5" + resolved "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz" integrity sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg== cacache@^15.2.0: version "15.3.0" - resolved "https://registry.yarnpkg.com/cacache/-/cacache-15.3.0.tgz#dc85380fb2f556fe3dda4c719bfa0ec875a7f1eb" + resolved "https://registry.npmjs.org/cacache/-/cacache-15.3.0.tgz" integrity sha512-VVdYzXEn+cnbXpFgWs5hTT7OScegHVmLhJIR8Ufqk3iFD6A6j5iSX1KuBTfNEv4tdJWE2PzA6IVFtcLC7fN9wQ== dependencies: "@npmcli/fs" "^1.0.0" @@ -8793,7 +9047,7 @@ cacache@^15.2.0: cacache@^16.0.0, cacache@^16.0.6, cacache@^16.1.0: version "16.1.3" - resolved "https://registry.yarnpkg.com/cacache/-/cacache-16.1.3.tgz#a02b9f34ecfaf9a78c9f4bc16fceb94d5d67a38e" + resolved "https://registry.npmjs.org/cacache/-/cacache-16.1.3.tgz" integrity sha512-/+Emcj9DAXxX4cwlLmRI9c166RuL3w30zp4R7Joiv2cQTtTtA+jeuCAjH3ZlGnYS3tKENSrKhAzVVP9GVyzeYQ== dependencies: "@npmcli/fs" "^2.1.0" @@ -8816,15 +9070,15 @@ cacache@^16.0.0, cacache@^16.0.6, cacache@^16.1.0: unique-filename "^2.0.0" cacache@^17.0.0: - version "17.1.3" - resolved "https://registry.yarnpkg.com/cacache/-/cacache-17.1.3.tgz#c6ac23bec56516a7c0c52020fd48b4909d7c7044" - integrity sha512-jAdjGxmPxZh0IipMdR7fK/4sDSrHMLUV0+GvVUsjwyGNKHsh79kW/otg+GkbXwl6Uzvy9wsvHOX4nUoWldeZMg== + version "17.1.4" + resolved "https://registry.npmjs.org/cacache/-/cacache-17.1.4.tgz" + integrity sha512-/aJwG2l3ZMJ1xNAnqbMpA40of9dj/pIH3QfiuQSqjfPJF747VR0J/bHn+/KdNnHKc6XQcWt/AfRSBft82W1d2A== dependencies: "@npmcli/fs" "^3.1.0" fs-minipass "^3.0.0" glob "^10.2.2" lru-cache "^7.7.1" - minipass "^5.0.0" + minipass "^7.0.3" minipass-collect "^1.0.2" minipass-flush "^1.0.5" minipass-pipeline "^1.2.4" @@ -8850,17 +9104,17 @@ cache-base@^1.0.1: cacheable-lookup@^5.0.3: version "5.0.4" - resolved "https://registry.yarnpkg.com/cacheable-lookup/-/cacheable-lookup-5.0.4.tgz#5a6b865b2c44357be3d5ebc2a467b032719a7005" + resolved "https://registry.npmjs.org/cacheable-lookup/-/cacheable-lookup-5.0.4.tgz" integrity sha512-2/kNscPhpcxrOigMZzbiWF7dz8ilhb/nIHU3EyZiXWXpeq/au8qJ8VhdftMkty3n7Gj6HIGalQG8oiBNB3AJgA== cacheable-lookup@^6.0.4: version "6.1.0" - resolved "https://registry.yarnpkg.com/cacheable-lookup/-/cacheable-lookup-6.1.0.tgz#0330a543471c61faa4e9035db583aad753b36385" + resolved "https://registry.npmjs.org/cacheable-lookup/-/cacheable-lookup-6.1.0.tgz" integrity sha512-KJ/Dmo1lDDhmW2XDPMo+9oiy/CeqosPguPCrgcVzKyZrL6pM1gU2GmPY/xo6OQPTUaA/c0kwHuywB4E6nmT9ww== cacheable-request@^6.0.0: version "6.1.0" - resolved "https://registry.yarnpkg.com/cacheable-request/-/cacheable-request-6.1.0.tgz#20ffb8bd162ba4be11e9567d823db651052ca912" + resolved "https://registry.npmjs.org/cacheable-request/-/cacheable-request-6.1.0.tgz" integrity sha512-Oj3cAGPCqOZX7Rz64Uny2GYAZNliQSqfbePrgAQ1wKAihYmCUnraBtJtKcGR4xz7wF+LoJC+ssFZvv5BgF9Igg== dependencies: clone-response "^1.0.2" @@ -8873,7 +9127,7 @@ cacheable-request@^6.0.0: cacheable-request@^7.0.2: version "7.0.2" - resolved "https://registry.yarnpkg.com/cacheable-request/-/cacheable-request-7.0.2.tgz#ea0d0b889364a25854757301ca12b2da77f91d27" + resolved "https://registry.npmjs.org/cacheable-request/-/cacheable-request-7.0.2.tgz" integrity sha512-pouW8/FmiPQbuGpkXQ9BAPv/Mo5xDGANgSNXzTzJ8DrKGuXOssM4wIQRjfanNRh3Yu5cfYPvcorqbhg2KIJtew== dependencies: clone-response "^1.0.2" @@ -8886,7 +9140,7 @@ cacheable-request@^7.0.2: call-bind@^1.0.0, call-bind@^1.0.2, call-bind@~1.0.2: version "1.0.2" - resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.2.tgz#b1d4e89e688119c3c9a903ad30abb2f6a919be3c" + resolved "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz" integrity sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA== dependencies: function-bind "^1.1.1" @@ -8899,31 +9153,31 @@ call-me-maybe@^1.0.1: caller-callsite@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/caller-callsite/-/caller-callsite-2.0.0.tgz#847e0fce0a223750a9a027c54b33731ad3154134" + resolved "https://registry.npmjs.org/caller-callsite/-/caller-callsite-2.0.0.tgz" integrity sha512-JuG3qI4QOftFsZyOn1qq87fq5grLIyk1JYd5lJmdA+fG7aQ9pA/i3JIJGcO3q0MrRcHlOt1U+ZeHW8Dq9axALQ== dependencies: callsites "^2.0.0" caller-path@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/caller-path/-/caller-path-2.0.0.tgz#468f83044e369ab2010fac5f06ceee15bb2cb1f4" + resolved "https://registry.npmjs.org/caller-path/-/caller-path-2.0.0.tgz" integrity sha512-MCL3sf6nCSXOwCTzvPKhN18TU7AHTvdtam8DAogxcrJ8Rjfbbg7Lgng64H9Iy+vUV6VGFClN/TyxBkAebLRR4A== dependencies: caller-callsite "^2.0.0" callsites@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/callsites/-/callsites-2.0.0.tgz#06eb84f00eea413da86affefacbffb36093b3c50" + resolved "https://registry.npmjs.org/callsites/-/callsites-2.0.0.tgz" integrity sha512-ksWePWBloaWPxJYQ8TL0JHvtci6G5QTKwQ95RcWAa/lzoAKuAOflGdAK92hpHXjkwb8zLxoLNUoNYZgVsaJzvQ== callsites@^3.0.0: version "3.1.0" - resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" + resolved "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz" integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== camel-case@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/camel-case/-/camel-case-3.0.0.tgz#ca3c3688a4e9cf3a4cda777dc4dcbc713249cf73" + resolved "https://registry.npmjs.org/camel-case/-/camel-case-3.0.0.tgz" integrity sha512-+MbKztAYHXPr1jNTSKQF52VpcFjwY5RkR7fxksV8Doo4KAYc5Fl4UJRgthBbTmEx8C54DqahhbLJkDwjI3PI/w== dependencies: no-case "^2.2.0" @@ -8931,7 +9185,7 @@ camel-case@^3.0.0: camelcase-keys@^6.2.2: version "6.2.2" - resolved "https://registry.yarnpkg.com/camelcase-keys/-/camelcase-keys-6.2.2.tgz#5e755d6ba51aa223ec7d3d52f25778210f9dc3c0" + resolved "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-6.2.2.tgz" integrity sha512-YrwaA0vEKazPBkn0ipTiMpSajYDSe+KjQfrjhcBMxJt/znbvlHd8Pw/Vamaz5EB4Wfhs3SUR3Z9mwRu/P3s3Yg== dependencies: camelcase "^5.3.1" @@ -8940,37 +9194,37 @@ camelcase-keys@^6.2.2: camelcase@^2.0.1: version "2.1.1" - resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-2.1.1.tgz#7c1d16d679a1bbe59ca02cacecfb011e201f5a1f" + resolved "https://registry.npmjs.org/camelcase/-/camelcase-2.1.1.tgz" integrity sha512-DLIsRzJVBQu72meAKPkWQOLcujdXT32hwdfnkI1frSiSRMK1MofjKHf+MEx0SB6fjEFXL8fBDv1dKymBlOp4Qw== camelcase@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-3.0.0.tgz#32fc4b9fcdaf845fcdf7e73bb97cac2261f0ab0a" + resolved "https://registry.npmjs.org/camelcase/-/camelcase-3.0.0.tgz" integrity sha512-4nhGqUkc4BqbBBB4Q6zLuD7lzzrHYrjKGeYaEji/3tFR5VdJu9v+LilhGIVe8wxEJPPOeWo7eg8dwY13TZ1BNg== camelcase@^4.1.0: version "4.1.0" - resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-4.1.0.tgz#d545635be1e33c542649c69173e5de6acfae34dd" + resolved "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz" integrity sha512-FxAv7HpHrXbh3aPo4o2qxHay2lkLY3x5Mw3KeE4KQE8ysVfziWeRZDwcjauvwBSGEC/nXUPzZy8zeh4HokqOnw== camelcase@^5.0.0, camelcase@^5.3.1: version "5.3.1" - resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320" + resolved "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz" integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== camelcase@^6.0.0, camelcase@^6.2.0: version "6.3.0" - resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-6.3.0.tgz#5685b95eb209ac9c0c177467778c9c84df58ba9a" + resolved "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz" integrity sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA== caniuse-lite@^1.0.30001449: version "1.0.30001481" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001481.tgz#f58a717afe92f9e69d0e35ff64df596bfad93912" + resolved "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001481.tgz" integrity sha512-KCqHwRnaa1InZBtqXzP98LPg0ajCVujMKjqKDhZEthIpAsJl/YEIa3YvXjGXPVqzZVguccuu7ga9KOE1J9rKPQ== cardinal@^2.1.1: version "2.1.1" - resolved "https://registry.yarnpkg.com/cardinal/-/cardinal-2.1.1.tgz#7cc1055d822d212954d07b085dea251cc7bc5505" + resolved "https://registry.npmjs.org/cardinal/-/cardinal-2.1.1.tgz" integrity sha512-JSr5eOgoEymtYHBjNWyjrMqet9Am2miJhlfKNdqLp6zoeAh0KN5dRAcxlecj5mAJrmQomgiOBj35xHLrFjqBpw== dependencies: ansicolors "~0.3.2" @@ -8978,29 +9232,29 @@ cardinal@^2.1.1: case@^1.6.3: version "1.6.3" - resolved "https://registry.yarnpkg.com/case/-/case-1.6.3.tgz#0a4386e3e9825351ca2e6216c60467ff5f1ea1c9" + resolved "https://registry.npmjs.org/case/-/case-1.6.3.tgz" integrity sha512-mzDSXIPaFwVDvZAHqZ9VlbyF4yyXRuX6IvB06WvPYkqJVO24kX1PPhv9bfpKNFZyxYFmmgo03HUiD8iklmJYRQ== caseless@^0.12.0, caseless@~0.12.0: version "0.12.0" - resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc" + resolved "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz" integrity sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw== catering@^2.0.0, catering@^2.1.0, catering@^2.1.1: version "2.1.1" - resolved "https://registry.yarnpkg.com/catering/-/catering-2.1.1.tgz#66acba06ed5ee28d5286133982a927de9a04b510" + resolved "https://registry.npmjs.org/catering/-/catering-2.1.1.tgz" integrity sha512-K7Qy8O9p76sL3/3m7/zLKbRkyOlSZAgzEaLhyj2mXS8PsCud2Eo4hAb8aLtZqHh0QGqLcb9dlJSu6lHRVENm1w== catharsis@^0.9.0: version "0.9.0" - resolved "https://registry.yarnpkg.com/catharsis/-/catharsis-0.9.0.tgz#40382a168be0e6da308c277d3a2b3eb40c7d2121" + resolved "https://registry.npmjs.org/catharsis/-/catharsis-0.9.0.tgz" integrity sha512-prMTQVpcns/tzFgFVkVp6ak6RykZyWb3gu8ckUpd6YkTlacOd3DXGJjIpD4Q6zJirizvaiAjSSHlOsA+6sNh2A== dependencies: lodash "^4.17.15" caw@^1.2.0: version "1.2.0" - resolved "https://registry.yarnpkg.com/caw/-/caw-1.2.0.tgz#ffb226fe7efc547288dc62ee3e97073c212d1034" + resolved "https://registry.npmjs.org/caw/-/caw-1.2.0.tgz" integrity sha512-GIAlMoessjWW8p0mkStU4kMvV35toVCAyOWhUajk7O0d7wJI8F9TDjfrkSoO26b0d1QsnDLmw5I3X+yd6OKorQ== dependencies: get-proxy "^1.0.1" @@ -9010,7 +9264,7 @@ caw@^1.2.0: cbor@^4.1.5: version "4.3.0" - resolved "https://registry.yarnpkg.com/cbor/-/cbor-4.3.0.tgz#0217c1cadd067d9112f44336dca07e72020bb804" + resolved "https://registry.npmjs.org/cbor/-/cbor-4.3.0.tgz" integrity sha512-CvzaxQlaJVa88sdtTWvLJ++MbdtPHtZOBBNjm7h3YKUHILMs9nQyD4AC6hvFZy7GBVB3I6bRibJcxeHydyT2IQ== dependencies: bignumber.js "^9.0.0" @@ -9020,7 +9274,7 @@ cbor@^4.1.5: cbor@^5.2.0: version "5.2.0" - resolved "https://registry.yarnpkg.com/cbor/-/cbor-5.2.0.tgz#4cca67783ccd6de7b50ab4ed62636712f287a67c" + resolved "https://registry.npmjs.org/cbor/-/cbor-5.2.0.tgz" integrity sha512-5IMhi9e1QU76ppa5/ajP1BmMWZ2FHkhAhjeVKQ/EFCgYSEaeVaoGtL7cxJskf9oCCk+XjzaIdc3IuU/dbA/o2A== dependencies: bignumber.js "^9.0.1" @@ -9028,24 +9282,24 @@ cbor@^5.2.0: chai-as-promised@^7.1.0, chai-as-promised@^7.1.1: version "7.1.1" - resolved "https://registry.yarnpkg.com/chai-as-promised/-/chai-as-promised-7.1.1.tgz#08645d825deb8696ee61725dbf590c012eb00ca0" + resolved "https://registry.npmjs.org/chai-as-promised/-/chai-as-promised-7.1.1.tgz" integrity sha512-azL6xMoi+uxu6z4rhWQ1jbdUhOMhis2PvscD/xjLqNMkv3BPPp2JyyuTHOrf9BOosGpNQ11v6BKv/g57RXbiaA== dependencies: check-error "^1.0.2" chai-bignumber@^3.0.0: version "3.1.0" - resolved "https://registry.yarnpkg.com/chai-bignumber/-/chai-bignumber-3.1.0.tgz#e196456c760df21f0e124f6df922289ea15a7e4c" + resolved "https://registry.npmjs.org/chai-bignumber/-/chai-bignumber-3.1.0.tgz" integrity sha512-omxEc80jAU+pZwRmoWr3aEzeLad4JW3iBhLRQlgISvghBdIxrMT7mVAGsDz4WSyCkKowENshH2j9OABAhld7QQ== chai-subset@^1.6.0: version "1.6.0" - resolved "https://registry.yarnpkg.com/chai-subset/-/chai-subset-1.6.0.tgz#a5d0ca14e329a79596ed70058b6646bd6988cfe9" + resolved "https://registry.npmjs.org/chai-subset/-/chai-subset-1.6.0.tgz" integrity sha512-K3d+KmqdS5XKW5DWPd5sgNffL3uxdDe+6GdnJh3AYPhwnBGRY5urfvfcbRtWIvvpz+KxkL9FeBB6MZewLUNwug== -chai@^4.0.1, chai@^4.2.0, chai@^4.3.6, chai@^4.3.7: +chai@^4.0.1, chai@^4.3.6: version "4.3.7" - resolved "https://registry.yarnpkg.com/chai/-/chai-4.3.7.tgz#ec63f6df01829088e8bf55fca839bcd464a8ec51" + resolved "https://registry.npmjs.org/chai/-/chai-4.3.7.tgz" integrity sha512-HLnAzZ2iupm25PlN0xFreAlBA5zaBSv3og0DdeGA4Ar6h6rJ3A0rolRUKJhSF2V10GZKDgWF/VmAEsNWjCRB+A== dependencies: assertion-error "^1.1.0" @@ -9056,16 +9310,29 @@ chai@^4.0.1, chai@^4.2.0, chai@^4.3.6, chai@^4.3.7: pathval "^1.1.1" type-detect "^4.0.5" +chai@^4.2.0, chai@^4.3.7: + version "4.3.8" + resolved "https://registry.npmjs.org/chai/-/chai-4.3.8.tgz" + integrity sha512-vX4YvVVtxlfSZ2VecZgFUTU5qPCYsobVI2O9FmwEXBhDigYGQA6jRXCycIs1yJnnWbZ6/+a2zNIF5DfVCcJBFQ== + dependencies: + assertion-error "^1.1.0" + check-error "^1.0.2" + deep-eql "^4.1.2" + get-func-name "^2.0.0" + loupe "^2.3.1" + pathval "^1.1.1" + type-detect "^4.0.5" + chainsaw@~0.1.0: version "0.1.0" - resolved "https://registry.yarnpkg.com/chainsaw/-/chainsaw-0.1.0.tgz#5eab50b28afe58074d0d58291388828b5e5fbc98" + resolved "https://registry.npmjs.org/chainsaw/-/chainsaw-0.1.0.tgz" integrity sha512-75kWfWt6MEKNC8xYXIdRpDehRYY/tNSgwKaJq+dbbDcxORuVrrQ+SEHoWsniVn9XPYfP4gmdWIeDk/4YNp1rNQ== dependencies: traverse ">=0.3.0 <0.4" chalk@^1.1.3: version "1.1.3" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98" + resolved "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz" integrity sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A== dependencies: ansi-styles "^2.2.1" @@ -9076,7 +9343,7 @@ chalk@^1.1.3: chalk@^2.0.0, chalk@^2.0.1, chalk@^2.1.0, chalk@^2.3.0, chalk@^2.3.2, chalk@^2.4.1, chalk@^2.4.2: version "2.4.2" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" + resolved "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz" integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== dependencies: ansi-styles "^3.2.1" @@ -9085,7 +9352,7 @@ chalk@^2.0.0, chalk@^2.0.1, chalk@^2.1.0, chalk@^2.3.0, chalk@^2.3.2, chalk@^2.4 chalk@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-3.0.0.tgz#3f73c2bf526591f574cc492c51e2456349f844e4" + resolved "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz" integrity sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg== dependencies: ansi-styles "^4.1.0" @@ -9093,7 +9360,7 @@ chalk@^3.0.0: chalk@^4.0.0, chalk@^4.0.2, chalk@^4.1.0, chalk@^4.1.1, chalk@^4.1.2: version "4.1.2" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01" + resolved "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz" integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== dependencies: ansi-styles "^4.1.0" @@ -9101,12 +9368,12 @@ chalk@^4.0.0, chalk@^4.0.2, chalk@^4.1.0, chalk@^4.1.1, chalk@^4.1.2: chalk@^5.2.0: version "5.3.0" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-5.3.0.tgz#67c20a7ebef70e7f3970a01f90fa210cb6860385" + resolved "https://registry.npmjs.org/chalk/-/chalk-5.3.0.tgz" integrity sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w== change-case@3.0.2: version "3.0.2" - resolved "https://registry.yarnpkg.com/change-case/-/change-case-3.0.2.tgz#fd48746cce02f03f0a672577d1d3a8dc2eceb037" + resolved "https://registry.npmjs.org/change-case/-/change-case-3.0.2.tgz" integrity sha512-Mww+SLF6MZ0U6kdg11algyKd5BARbyM4TbFBepwowYSR5ClfQGCGtxNXgykpN0uF/bstWeaGDT4JWaDh8zWAHA== dependencies: camel-case "^3.0.0" @@ -9130,12 +9397,12 @@ change-case@3.0.2: char-regex@^1.0.2: version "1.0.2" - resolved "https://registry.yarnpkg.com/char-regex/-/char-regex-1.0.2.tgz#d744358226217f981ed58f479b1d6bcc29545dcf" + resolved "https://registry.npmjs.org/char-regex/-/char-regex-1.0.2.tgz" integrity sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw== chardet@^0.7.0: version "0.7.0" - resolved "https://registry.yarnpkg.com/chardet/-/chardet-0.7.0.tgz#90094849f0937f2eedc2425d0d28a9e5f0cbad9e" + resolved "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz" integrity sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA== "charenc@>= 0.0.1": @@ -9145,19 +9412,19 @@ chardet@^0.7.0: check-error@^1.0.2: version "1.0.2" - resolved "https://registry.yarnpkg.com/check-error/-/check-error-1.0.2.tgz#574d312edd88bb5dd8912e9286dd6c0aed4aac82" + resolved "https://registry.npmjs.org/check-error/-/check-error-1.0.2.tgz" integrity sha512-BrgHpW9NURQgzoNyjfq0Wu6VFO6D7IZEmJNdtgNqpzGG8RuNFHt2jQxWlAs4HMe119chBnv+34syEZtc6IhLtA== checkpoint-store@^1.1.0: version "1.1.0" - resolved "https://registry.yarnpkg.com/checkpoint-store/-/checkpoint-store-1.1.0.tgz#04e4cb516b91433893581e6d4601a78e9552ea06" + resolved "https://registry.npmjs.org/checkpoint-store/-/checkpoint-store-1.1.0.tgz" integrity sha512-J/NdY2WvIx654cc6LWSq/IYFFCUf75fFTgwzFnmbqyORH4MwgiQCgswLLKBGzmsyTI5V7i5bp/So6sMbDWhedg== dependencies: functional-red-black-tree "^1.0.1" cheerio-select@^2.1.0: version "2.1.0" - resolved "https://registry.yarnpkg.com/cheerio-select/-/cheerio-select-2.1.0.tgz#4d8673286b8126ca2a8e42740d5e3c4884ae21b4" + resolved "https://registry.npmjs.org/cheerio-select/-/cheerio-select-2.1.0.tgz" integrity sha512-9v9kG0LvzrlcungtnJtpGNxY+fzECQKhK4EGJX2vByejiMX84MFNQw4UxPJl3bFbTMw+Dfs37XaIkCwTZfLh4g== dependencies: boolbase "^1.0.0" @@ -9169,7 +9436,7 @@ cheerio-select@^2.1.0: cheerio@^1.0.0-rc.2: version "1.0.0-rc.12" - resolved "https://registry.yarnpkg.com/cheerio/-/cheerio-1.0.0-rc.12.tgz#788bf7466506b1c6bf5fae51d24a2c4d62e47683" + resolved "https://registry.npmjs.org/cheerio/-/cheerio-1.0.0-rc.12.tgz" integrity sha512-VqR8m68vM46BNnuZ5NtnGBKIE/DfN0cRIzg9n40EIq9NOv90ayxLBXA8fXC5gquFRGJSTRqBq25Jt2ECLR431Q== dependencies: cheerio-select "^2.1.0" @@ -9182,7 +9449,7 @@ cheerio@^1.0.0-rc.2: chevrotain@6.5.0: version "6.5.0" - resolved "https://registry.yarnpkg.com/chevrotain/-/chevrotain-6.5.0.tgz#dcbef415516b0af80fd423cc0d96b28d3f11374e" + resolved "https://registry.npmjs.org/chevrotain/-/chevrotain-6.5.0.tgz" integrity sha512-BwqQ/AgmKJ8jcMEjaSnfMybnKMgGTrtDKowfTP3pX4jwVy0kNjRsT/AP6h+wC3+3NC+X8X15VWBnTCQlX+wQFg== dependencies: regexp-to-ast "0.4.0" @@ -9204,7 +9471,7 @@ chokidar@3.3.0: chokidar@3.3.1: version "3.3.1" - resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.3.1.tgz#c84e5b3d18d9a4d77558fef466b1bf16bbeb3450" + resolved "https://registry.npmjs.org/chokidar/-/chokidar-3.3.1.tgz" integrity sha512-4QYCEWOcK3OJrxwvyyAOxFuhpvOVCYkr33LPfFNBjAD/w3sEzWsp2BUOkI4l9bHvWioAd0rc6NlHUOEaWkTeqg== dependencies: anymatch "~3.1.1" @@ -9219,7 +9486,7 @@ chokidar@3.3.1: chokidar@3.5.3, chokidar@^3.0.2: version "3.5.3" - resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.5.3.tgz#1cf37c8707b932bd1af1ae22c0432e2acd1903bd" + resolved "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz" integrity sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw== dependencies: anymatch "~3.1.2" @@ -9234,27 +9501,27 @@ chokidar@3.5.3, chokidar@^3.0.2: chownr@^1.0.1, chownr@^1.1.1, chownr@^1.1.4: version "1.1.4" - resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.1.4.tgz#6fc9d7b42d32a583596337666e7d08084da2cc6b" + resolved "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz" integrity sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg== chownr@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/chownr/-/chownr-2.0.0.tgz#15bfbe53d2eab4cf70f18a8cd68ebe5b3cb1dece" + resolved "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz" integrity sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ== ci-info@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-2.0.0.tgz#67a9e964be31a51e15e5010d58e6f12834002f46" + resolved "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz" integrity sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ== ci-info@^3.2.0: version "3.8.0" - resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-3.8.0.tgz#81408265a5380c929f0bc665d62256628ce9ef91" + resolved "https://registry.npmjs.org/ci-info/-/ci-info-3.8.0.tgz" integrity sha512-eXTggHWSooYhq49F2opQhuHWgzucfF2YgODK4e1566GQs5BIfP30B0oenwBJHfWxAs2fyPB1s7Mg949zLf61Yw== cids@^0.7.1: version "0.7.5" - resolved "https://registry.yarnpkg.com/cids/-/cids-0.7.5.tgz#60a08138a99bfb69b6be4ceb63bfef7a396b28b2" + resolved "https://registry.npmjs.org/cids/-/cids-0.7.5.tgz" integrity sha512-zT7mPeghoWAu+ppn8+BS1tQ5qGmbMfB4AregnQjA/qHY3GC1m1ptI9GkWNlgeu38r7CuRdXB47uY2XgAYt6QVA== dependencies: buffer "^5.5.0" @@ -9265,7 +9532,7 @@ cids@^0.7.1: cipher-base@^1.0.0, cipher-base@^1.0.1, cipher-base@^1.0.3: version "1.0.4" - resolved "https://registry.yarnpkg.com/cipher-base/-/cipher-base-1.0.4.tgz#8760e4ecc272f4c363532f926d874aae2c1397de" + resolved "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz" integrity sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q== dependencies: inherits "^2.0.1" @@ -9273,24 +9540,24 @@ cipher-base@^1.0.0, cipher-base@^1.0.1, cipher-base@^1.0.3: cjs-module-lexer@^1.0.0: version "1.2.2" - resolved "https://registry.yarnpkg.com/cjs-module-lexer/-/cjs-module-lexer-1.2.2.tgz#9f84ba3244a512f3a54e5277e8eef4c489864e40" + resolved "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.2.2.tgz" integrity sha512-cOU9usZw8/dXIXKtwa8pM0OTJQuJkxMN6w30csNRUerHfeQ5R6U3kkU/FtJeIf3M202OHfY2U8ccInBG7/xogA== cjs-module-lexer@^1.2.2: version "1.2.3" - resolved "https://registry.yarnpkg.com/cjs-module-lexer/-/cjs-module-lexer-1.2.3.tgz#6c370ab19f8a3394e318fe682686ec0ac684d107" + resolved "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.2.3.tgz" integrity sha512-0TNiGstbQmCFwt4akjjBg5pLRTSyj/PkWQ1ZoO2zntmg9yLqSRxwEa4iCfQLGjqhiqBfOJa7W/E8wfGrTDmlZQ== cjson@^0.3.1: version "0.3.3" - resolved "https://registry.yarnpkg.com/cjson/-/cjson-0.3.3.tgz#a92d9c786e5bf9b930806329ee05d5d3261b4afa" + resolved "https://registry.npmjs.org/cjson/-/cjson-0.3.3.tgz" integrity sha512-yKNcXi/Mvi5kb1uK0sahubYiyfUO2EUgOp4NcY9+8NX5Xmc+4yeNogZuLFkpLBBj7/QI9MjRUIuXrV9XOw5kVg== dependencies: json-parse-helpfulerror "^1.0.3" class-is@^1.1.0: version "1.1.0" - resolved "https://registry.yarnpkg.com/class-is/-/class-is-1.1.0.tgz#9d3c0fba0440d211d843cec3dedfa48055005825" + resolved "https://registry.npmjs.org/class-is/-/class-is-1.1.0.tgz" integrity sha512-rhjH9AG1fvabIDoGRVH587413LPjTZgmDF9fOFCbFJQV4yuocX1mHxxvXI4g3cGwbVY9wAYIoKlg1N79frJKQw== class-utils@^0.3.5: @@ -9305,7 +9572,7 @@ class-utils@^0.3.5: classic-level@^1.2.0: version "1.3.0" - resolved "https://registry.yarnpkg.com/classic-level/-/classic-level-1.3.0.tgz#5e36680e01dc6b271775c093f2150844c5edd5c8" + resolved "https://registry.npmjs.org/classic-level/-/classic-level-1.3.0.tgz" integrity sha512-iwFAJQYtqRTRM0F6L8h4JCt00ZSGdOyqh7yVrhhjrOpFhmBjNlRUey64MCiyo6UmQHMJ+No3c81nujPv+n9yrg== dependencies: abstract-level "^1.0.2" @@ -9316,24 +9583,24 @@ classic-level@^1.2.0: clean-stack@^2.0.0: version "2.2.0" - resolved "https://registry.yarnpkg.com/clean-stack/-/clean-stack-2.2.0.tgz#ee8472dbb129e727b31e8a10a427dee9dfe4008b" + resolved "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz" integrity sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A== clean-stack@^3.0.0: version "3.0.1" - resolved "https://registry.yarnpkg.com/clean-stack/-/clean-stack-3.0.1.tgz#155bf0b2221bf5f4fba89528d24c5953f17fe3a8" + resolved "https://registry.npmjs.org/clean-stack/-/clean-stack-3.0.1.tgz" integrity sha512-lR9wNiMRcVQjSB3a7xXGLuz4cr4wJuuXlaAEbRutGowQTmlp7R72/DOgN21e8jdwblMWl9UOJMJXarX94pzKdg== dependencies: escape-string-regexp "4.0.0" cli-boxes@^2.2.0, cli-boxes@^2.2.1: version "2.2.1" - resolved "https://registry.yarnpkg.com/cli-boxes/-/cli-boxes-2.2.1.tgz#ddd5035d25094fce220e9cab40a45840a440318f" + resolved "https://registry.npmjs.org/cli-boxes/-/cli-boxes-2.2.1.tgz" integrity sha512-y4coMcylgSCdVinjiDBuR8PCC2bLjyGTwEmPb9NHR/QaNU6EUOXcTY/s6VjGMD6ENSEaeQYHCY0GNGS5jfMwPw== cli-color@^1.2.0: version "1.4.0" - resolved "https://registry.yarnpkg.com/cli-color/-/cli-color-1.4.0.tgz#7d10738f48526824f8fe7da51857cb0f572fe01f" + resolved "https://registry.npmjs.org/cli-color/-/cli-color-1.4.0.tgz" integrity sha512-xu6RvQqqrWEo6MPR1eixqGPywhYBHRs653F9jfXB2Hx4jdM/3WxiNE1vppRmxtMIfl16SFYTpYlrnqH/HsK/2w== dependencies: ansi-regex "^2.1.1" @@ -9345,35 +9612,40 @@ cli-color@^1.2.0: cli-cursor@3.1.0, cli-cursor@^3.0.0, cli-cursor@^3.1.0: version "3.1.0" - resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-3.1.0.tgz#264305a7ae490d1d03bf0c9ba7c925d1753af307" + resolved "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz" integrity sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw== dependencies: restore-cursor "^3.1.0" cli-cursor@^2.1.0: version "2.1.0" - resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-2.1.0.tgz#b35dac376479facc3e94747d41d0d0f5238ffcb5" + resolved "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz" integrity sha512-8lgKz8LmCRYZZQDpRyT2m5rKJ08TnU4tR9FFFW2rxpxR1FzWi4PQ/NfyODchAatHaUgnSPVcx/R5w6NuTBzFiw== dependencies: restore-cursor "^2.0.0" cli-progress@^3.4.0: version "3.12.0" - resolved "https://registry.yarnpkg.com/cli-progress/-/cli-progress-3.12.0.tgz#807ee14b66bcc086258e444ad0f19e7d42577942" + resolved "https://registry.npmjs.org/cli-progress/-/cli-progress-3.12.0.tgz" integrity sha512-tRkV3HJ1ASwm19THiiLIXLO7Im7wlTuKnvkYaTkyoAPefqjNg7W7DHKUlGRxy9vxDvbyCYQkQozvptuMkGCg8A== dependencies: string-width "^4.2.3" cli-spinners@2.6.1: version "2.6.1" - resolved "https://registry.yarnpkg.com/cli-spinners/-/cli-spinners-2.6.1.tgz#adc954ebe281c37a6319bfa401e6dd2488ffb70d" + resolved "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.6.1.tgz" integrity sha512-x/5fWmGMnbKQAaNwN+UZlV79qBLM9JFnJuJ03gIi5whrob0xV0ofNVHy9DhwGdsMJQc2OKv0oGmLzvaqvAVv+g== -cli-spinners@^2.0.0, cli-spinners@^2.5.0: +cli-spinners@^2.0.0: version "2.8.0" - resolved "https://registry.yarnpkg.com/cli-spinners/-/cli-spinners-2.8.0.tgz#e97a3e2bd00e6d85aa0c13d7f9e3ce236f7787fc" + resolved "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.8.0.tgz" integrity sha512-/eG5sJcvEIwxcdYM86k5tPwn0MUzkX5YY3eImTGpJOZgVe4SdTMY14vQpcxgBzJ0wXwAYrS8E+c3uHeK4JNyzQ== +cli-spinners@^2.5.0: + version "2.9.1" + resolved "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.9.1.tgz" + integrity sha512-jHgecW0pxkonBJdrKsqxgRX9AcG+u/5k0Q7WPDfi8AogLAdwxEkyYYNWwZ5GvVFoFx2uiY1eNcSK00fh+1+FyQ== + cli-table3@^0.5.0: version "0.5.1" resolved "https://registry.yarnpkg.com/cli-table3/-/cli-table3-0.5.1.tgz#0252372d94dfc40dbd8df06005f48f31f656f202" @@ -9386,7 +9658,7 @@ cli-table3@^0.5.0: cli-table3@^0.6.3: version "0.6.3" - resolved "https://registry.yarnpkg.com/cli-table3/-/cli-table3-0.6.3.tgz#61ab765aac156b52f222954ffc607a6f01dbeeb2" + resolved "https://registry.npmjs.org/cli-table3/-/cli-table3-0.6.3.tgz" integrity sha512-w5Jac5SykAeZJKntOxJCrm63Eg5/4dhMWIcuTbo9rpE+brgaSZo0RuNJZeOyMgsUdhDeojvgyQLmjI+K50ZGyg== dependencies: string-width "^4.2.0" @@ -9395,14 +9667,14 @@ cli-table3@^0.6.3: cli-table@0.3.11, cli-table@^0.3.1: version "0.3.11" - resolved "https://registry.yarnpkg.com/cli-table/-/cli-table-0.3.11.tgz#ac69cdecbe81dccdba4889b9a18b7da312a9d3ee" + resolved "https://registry.npmjs.org/cli-table/-/cli-table-0.3.11.tgz" integrity sha512-IqLQi4lO0nIB4tcdTpN4LCB9FI3uqrJZK7RC515EnhZ6qBaglkIgICb1wjeAqpdoOabm1+SuQtkXIPdYC93jhQ== dependencies: colors "1.0.3" cli-ux@5.6.6: version "5.6.6" - resolved "https://registry.yarnpkg.com/cli-ux/-/cli-ux-5.6.6.tgz#1424f5a9fbddcd796ad985b867a3de7f5a452090" + resolved "https://registry.npmjs.org/cli-ux/-/cli-ux-5.6.6.tgz" integrity sha512-4wUB34zoFklcZV0z5YiOM5IqVMMt9c3TK3QYRK3dqyk3XoRC0ybiWDWHfsMDjkKrzsVTw95rXn9NrzSHbae4pg== dependencies: "@oclif/command" "^1.8.9" @@ -9434,7 +9706,7 @@ cli-ux@5.6.6: cli-ux@5.6.7, cli-ux@^5.4.5, cli-ux@^5.4.9, cli-ux@^5.6.7: version "5.6.7" - resolved "https://registry.yarnpkg.com/cli-ux/-/cli-ux-5.6.7.tgz#32ef9e6cb2b457be834280cc799028a11c8235a8" + resolved "https://registry.npmjs.org/cli-ux/-/cli-ux-5.6.7.tgz" integrity sha512-dsKAurMNyFDnO6X1TiiRNiVbL90XReLKcvIq4H777NMqXGBxBws23ag8ubCJE97vVZEgWG2eSUhsyLf63Jv8+g== dependencies: "@oclif/command" "^1.8.15" @@ -9466,7 +9738,7 @@ cli-ux@5.6.7, cli-ux@^5.4.5, cli-ux@^5.4.9, cli-ux@^5.6.7: cli-ux@^4.4.0: version "4.9.3" - resolved "https://registry.yarnpkg.com/cli-ux/-/cli-ux-4.9.3.tgz#4c3e070c1ea23eef010bbdb041192e0661be84ce" + resolved "https://registry.npmjs.org/cli-ux/-/cli-ux-4.9.3.tgz" integrity sha512-/1owvF0SZ5Gn54cgrikJ0QskgTzeg30HGjkmjFoaHDJzAqFpuX1DBpFR8aLvsE1J5s9MgeYRENQK4BFwOag5VA== dependencies: "@oclif/errors" "^1.2.2" @@ -9493,17 +9765,17 @@ cli-ux@^4.4.0: cli-width@^2.0.0: version "2.2.1" - resolved "https://registry.yarnpkg.com/cli-width/-/cli-width-2.2.1.tgz#b0433d0b4e9c847ef18868a4ef16fd5fc8271c48" + resolved "https://registry.npmjs.org/cli-width/-/cli-width-2.2.1.tgz" integrity sha512-GRMWDxpOB6Dgk2E5Uo+3eEBvtOOlimMmpbFiKuLFnQzYDavtLFY3K5ona41jgN/WdRZtG7utuVSVTL4HbZHGkw== cli-width@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/cli-width/-/cli-width-3.0.0.tgz#a2f48437a2caa9a22436e794bf071ec9e61cedf6" + resolved "https://registry.npmjs.org/cli-width/-/cli-width-3.0.0.tgz" integrity sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw== cliui@^3.0.3, cliui@^3.2.0: version "3.2.0" - resolved "https://registry.yarnpkg.com/cliui/-/cliui-3.2.0.tgz#120601537a916d29940f934da3b48d585a39213d" + resolved "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz" integrity sha512-0yayqDxWQbqk3ojkYqUKqaAQ6AfNKeKWRNA8kR0WXzAsdHpP4BIaOmMAG87JGuO6qcobyW4GjxHd9PmhEd+T9w== dependencies: string-width "^1.0.1" @@ -9512,7 +9784,7 @@ cliui@^3.0.3, cliui@^3.2.0: cliui@^4.0.0: version "4.1.0" - resolved "https://registry.yarnpkg.com/cliui/-/cliui-4.1.0.tgz#348422dbe82d800b3022eef4f6ac10bf2e4d1b49" + resolved "https://registry.npmjs.org/cliui/-/cliui-4.1.0.tgz" integrity sha512-4FG+RSG9DL7uEwRUZXZn3SS34DiDPfzP0VOiEwtUWlE+AR2EIg+hSyvrIgUUfhdgR/UkAeW2QHgeP+hWrXs7jQ== dependencies: string-width "^2.1.1" @@ -9521,7 +9793,7 @@ cliui@^4.0.0: cliui@^5.0.0: version "5.0.0" - resolved "https://registry.yarnpkg.com/cliui/-/cliui-5.0.0.tgz#deefcfdb2e800784aa34f46fa08e06851c7bbbc5" + resolved "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz" integrity sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA== dependencies: string-width "^3.1.0" @@ -9530,7 +9802,7 @@ cliui@^5.0.0: cliui@^7.0.2: version "7.0.4" - resolved "https://registry.yarnpkg.com/cliui/-/cliui-7.0.4.tgz#a0265ee655476fc807aea9df3df8df7783808b4f" + resolved "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz" integrity sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ== dependencies: string-width "^4.2.0" @@ -9539,7 +9811,7 @@ cliui@^7.0.2: cliui@^8.0.1: version "8.0.1" - resolved "https://registry.yarnpkg.com/cliui/-/cliui-8.0.1.tgz#0c04b075db02cbfe60dc8e6cf2f5486b1a3608aa" + resolved "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz" integrity sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ== dependencies: string-width "^4.2.0" @@ -9548,12 +9820,12 @@ cliui@^8.0.1: clone-buffer@1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/clone-buffer/-/clone-buffer-1.0.0.tgz#e3e25b207ac4e701af721e2cb5a16792cac3dc58" + resolved "https://registry.npmjs.org/clone-buffer/-/clone-buffer-1.0.0.tgz" integrity sha512-KLLTJWrvwIP+OPfMn0x2PheDEP20RPUcGXj/ERegTgdmPEZylALQldygiqrPPu8P45uNuPs7ckmReLY6v/iA5g== clone-deep@^4.0.1: version "4.0.1" - resolved "https://registry.yarnpkg.com/clone-deep/-/clone-deep-4.0.1.tgz#c19fd9bdbbf85942b4fd979c84dcf7d5f07c2387" + resolved "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz" integrity sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ== dependencies: is-plain-object "^2.0.4" @@ -9562,46 +9834,46 @@ clone-deep@^4.0.1: clone-response@^1.0.2: version "1.0.3" - resolved "https://registry.yarnpkg.com/clone-response/-/clone-response-1.0.3.tgz#af2032aa47816399cf5f0a1d0db902f517abb8c3" + resolved "https://registry.npmjs.org/clone-response/-/clone-response-1.0.3.tgz" integrity sha512-ROoL94jJH2dUVML2Y/5PEDNaSHgeOdSDicUyS7izcF63G6sTc/FTjLub4b8Il9S8S0beOfYt0TaA5qvFK+w0wA== dependencies: mimic-response "^1.0.0" clone@^1.0.2: version "1.0.4" - resolved "https://registry.yarnpkg.com/clone/-/clone-1.0.4.tgz#da309cc263df15994c688ca902179ca3c7cd7c7e" + resolved "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz" integrity sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg== clone@^2.0.0, clone@^2.1.1: version "2.1.2" - resolved "https://registry.yarnpkg.com/clone/-/clone-2.1.2.tgz#1b7f4b9f591f1e8f83670401600345a02887435f" + resolved "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz" integrity sha512-3Pe/CF1Nn94hyhIYpjtiLhdCoEoz0DqQ+988E9gmeEdQZlojxnOb74wctFyuwWQHzqyf9X7C7MG8juUpqBJT8w== cmd-shim@^5.0.0: version "5.0.0" - resolved "https://registry.yarnpkg.com/cmd-shim/-/cmd-shim-5.0.0.tgz#8d0aaa1a6b0708630694c4dbde070ed94c707724" + resolved "https://registry.npmjs.org/cmd-shim/-/cmd-shim-5.0.0.tgz" integrity sha512-qkCtZ59BidfEwHltnJwkyVZn+XQojdAySM1D1gSeh11Z4pW1Kpolkyo53L5noc0nrxmIvyFwTmJRo4xs7FFLPw== dependencies: mkdirp-infer-owner "^2.0.0" co@^4.6.0: version "4.6.0" - resolved "https://registry.yarnpkg.com/co/-/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184" + resolved "https://registry.npmjs.org/co/-/co-4.6.0.tgz" integrity sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ== code-error-fragment@0.0.230: version "0.0.230" - resolved "https://registry.yarnpkg.com/code-error-fragment/-/code-error-fragment-0.0.230.tgz#d736d75c832445342eca1d1fedbf17d9618b14d7" + resolved "https://registry.npmjs.org/code-error-fragment/-/code-error-fragment-0.0.230.tgz" integrity sha512-cadkfKp6932H8UkhzE/gcUqhRMNf8jHzkAN7+5Myabswaghu4xABTgPHDCjW+dBAJxj/SpkTYokpzDqY4pCzQw== code-point-at@^1.0.0: version "1.1.0" - resolved "https://registry.yarnpkg.com/code-point-at/-/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77" + resolved "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz" integrity sha512-RpAVKQA5T63xEj6/giIbUEtZwJ4UFIc3ZtvEkiaUERylqe8xb5IvqcgOurZLahv93CLKfxcw5YI+DZcUBRyLXA== codecov@^3.6.5: version "3.8.3" - resolved "https://registry.yarnpkg.com/codecov/-/codecov-3.8.3.tgz#9c3e364b8a700c597346ae98418d09880a3fdbe7" + resolved "https://registry.npmjs.org/codecov/-/codecov-3.8.3.tgz" integrity sha512-Y8Hw+V3HgR7V71xWH2vQ9lyS358CbGCldWlJFR0JirqoGtOoas3R3/OclRTvgUYFK29mmJICDPauVKmpqbwhOA== dependencies: argv "0.0.2" @@ -9612,7 +9884,7 @@ codecov@^3.6.5: coinstring@^2.0.0: version "2.3.0" - resolved "https://registry.yarnpkg.com/coinstring/-/coinstring-2.3.0.tgz#cdb63363a961502404a25afb82c2e26d5ff627a4" + resolved "https://registry.npmjs.org/coinstring/-/coinstring-2.3.0.tgz" integrity sha512-2xMhQ++4ETUPiy2oqOlfydsuQArNLB6TExNF33Jmv+IgpmV8Hf6v6yICQAwH4uEHTnkJ3DscSyeKFrg37ljIOw== dependencies: bs58 "^2.0.1" @@ -9620,7 +9892,7 @@ coinstring@^2.0.0: collect-v8-coverage@^1.0.0: version "1.0.1" - resolved "https://registry.yarnpkg.com/collect-v8-coverage/-/collect-v8-coverage-1.0.1.tgz#cc2c8e94fc18bbdffe64d6534570c8a673b27f59" + resolved "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.1.tgz" integrity sha512-iBPtljfCNcTKNAto0KEtDfZ3qzjJvqE3aTGZsbhjSBlorqpXJlaWWtPO35D+ZImoC3KWejX64o+yPGxhWSTzfg== collection-visit@^1.0.0: @@ -9633,31 +9905,31 @@ collection-visit@^1.0.0: color-convert@^1.9.0, color-convert@^1.9.3: version "1.9.3" - resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" + resolved "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz" integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== dependencies: color-name "1.1.3" color-convert@^2.0.1: version "2.0.1" - resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3" + resolved "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz" integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== dependencies: color-name "~1.1.4" color-name@1.1.3: version "1.1.3" - resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" + resolved "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz" integrity sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw== color-name@^1.0.0, color-name@~1.1.4: version "1.1.4" - resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" + resolved "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz" integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== color-string@^1.6.0: version "1.9.1" - resolved "https://registry.yarnpkg.com/color-string/-/color-string-1.9.1.tgz#4467f9146f036f855b764dfb5bf8582bf342c7a4" + resolved "https://registry.npmjs.org/color-string/-/color-string-1.9.1.tgz" integrity sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg== dependencies: color-name "^1.0.0" @@ -9665,12 +9937,12 @@ color-string@^1.6.0: color-support@^1.1.2, color-support@^1.1.3: version "1.1.3" - resolved "https://registry.yarnpkg.com/color-support/-/color-support-1.1.3.tgz#93834379a1cc9a0c61f82f52f0d04322251bd5a2" + resolved "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz" integrity sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg== color@^3.1.3: version "3.2.1" - resolved "https://registry.yarnpkg.com/color/-/color-3.2.1.tgz#3544dc198caf4490c3ecc9a790b54fe9ff45e164" + resolved "https://registry.npmjs.org/color/-/color-3.2.1.tgz" integrity sha512-aBl7dZI9ENN6fUGC7mWpMTPNHmWUSNan9tuWN6ahh5ZLNk9baLJOnSMlrQkHcrfFgz2/RigjUVAjdx36VcemKA== dependencies: color-convert "^1.9.3" @@ -9678,27 +9950,27 @@ color@^3.1.3: colorette@2.0.19: version "2.0.19" - resolved "https://registry.yarnpkg.com/colorette/-/colorette-2.0.19.tgz#cdf044f47ad41a0f4b56b3a0d5b4e6e1a2d5a798" + resolved "https://registry.npmjs.org/colorette/-/colorette-2.0.19.tgz" integrity sha512-3tlv/dIP7FWvj3BsbHrGLJ6l/oKh1O3TcgBqMn+yyCagOxc23fyzDS6HypQbgxWbkpDnf52p1LuR4eWDQ/K9WQ== colorette@^2.0.19: version "2.0.20" - resolved "https://registry.yarnpkg.com/colorette/-/colorette-2.0.20.tgz#9eb793e6833067f7235902fcd3b09917a000a95a" + resolved "https://registry.npmjs.org/colorette/-/colorette-2.0.20.tgz" integrity sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w== colors@1.0.3, colors@1.0.x: version "1.0.3" - resolved "https://registry.yarnpkg.com/colors/-/colors-1.0.3.tgz#0433f44d809680fdeb60ed260f1b0c262e82a40b" + resolved "https://registry.npmjs.org/colors/-/colors-1.0.3.tgz" integrity sha512-pFGrxThWcWQ2MsAz6RtgeWe4NK2kUE1WfsrvvlctdII745EW9I0yflqhe7++M5LEc7bV2c/9/5zc8sFcpL0Drw== colors@1.4.0, colors@^1.0.3, colors@^1.1.2: version "1.4.0" - resolved "https://registry.yarnpkg.com/colors/-/colors-1.4.0.tgz#c50491479d4c1bdaed2c9ced32cf7c7dc2360f78" + resolved "https://registry.npmjs.org/colors/-/colors-1.4.0.tgz" integrity sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA== colorspace@1.1.x: version "1.1.4" - resolved "https://registry.yarnpkg.com/colorspace/-/colorspace-1.1.4.tgz#8d442d1186152f60453bf8070cd66eb364e59243" + resolved "https://registry.npmjs.org/colorspace/-/colorspace-1.1.4.tgz" integrity sha512-BgvKJiuVu1igBUF2kEjRCZXol6wiiGbY5ipL/oVPwm0BL9sIpMIzM8IK7vwuxIIzOXMV3Ey5w+vxhm0rR/TN8w== dependencies: color "^3.1.3" @@ -9706,12 +9978,12 @@ colorspace@1.1.x: colour@~0.7.1: version "0.7.1" - resolved "https://registry.yarnpkg.com/colour/-/colour-0.7.1.tgz#9cb169917ec5d12c0736d3e8685746df1cadf778" + resolved "https://registry.npmjs.org/colour/-/colour-0.7.1.tgz" integrity sha512-Rel466v0EnmKPcsxHo91L4kgPs/6XF7Pu2LJNszq9lXYwi5CFWEeIiRaTX5ym7PPMdj4udDHkLSVC1//JVkZQg== columnify@^1.6.0: version "1.6.0" - resolved "https://registry.yarnpkg.com/columnify/-/columnify-1.6.0.tgz#6989531713c9008bb29735e61e37acf5bd553cf3" + resolved "https://registry.npmjs.org/columnify/-/columnify-1.6.0.tgz" integrity sha512-lomjuFZKfM6MSAnV9aCZC9sc0qGbmZdfygNv+nCpqVkSKdCxCklLtd16O0EILGkImHw9ZpHkAnHaB+8Zxq5W6Q== dependencies: strip-ansi "^6.0.1" @@ -9719,14 +9991,14 @@ columnify@^1.6.0: combined-stream@^1.0.6, combined-stream@^1.0.8, combined-stream@~1.0.6: version "1.0.8" - resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f" + resolved "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz" integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg== dependencies: delayed-stream "~1.0.0" command-exists@^1.2.8, command-exists@^1.2.9: version "1.2.9" - resolved "https://registry.yarnpkg.com/command-exists/-/command-exists-1.2.9.tgz#c50725af3808c8ab0260fd60b01fbfa25b954f69" + resolved "https://registry.npmjs.org/command-exists/-/command-exists-1.2.9.tgz" integrity sha512-LTQ/SGc+s0Xc0Fu5WaKnR0YiygZkm9eKFvyS+fRsU7/ZWFF8ykFM6Pc9aCVf1+xasOOZpO3BAVgVrKvsqKHV7w== command-line-args@^4.0.7: @@ -9740,22 +10012,22 @@ command-line-args@^4.0.7: commander@2.15.1: version "2.15.1" - resolved "https://registry.yarnpkg.com/commander/-/commander-2.15.1.tgz#df46e867d0fc2aec66a34662b406a9ccafff5b0f" + resolved "https://registry.npmjs.org/commander/-/commander-2.15.1.tgz" integrity sha512-VlfT9F3V0v+jr4yxPc5gg9s62/fIVWsd2Bk2iD435um1NlGMYdVCq+MjcXnhYq2icNOizHr1kK+5TI6H0Hy0ag== commander@2.18.0: version "2.18.0" - resolved "https://registry.yarnpkg.com/commander/-/commander-2.18.0.tgz#2bf063ddee7c7891176981a2cc798e5754bc6970" + resolved "https://registry.npmjs.org/commander/-/commander-2.18.0.tgz" integrity sha512-6CYPa+JP2ftfRU2qkDK+UTVeQYosOg/2GbcjIcKPHfinyOLPVGXu/ovN86RP49Re5ndJK1N0kuiidFFuepc4ZQ== commander@3.0.2, commander@^3.0.0: version "3.0.2" - resolved "https://registry.yarnpkg.com/commander/-/commander-3.0.2.tgz#6837c3fb677ad9933d1cfba42dd14d5117d6b39e" + resolved "https://registry.npmjs.org/commander/-/commander-3.0.2.tgz" integrity sha512-Gar0ASD4BDyKC4hl4DwHqDrmvjoxWKZigVnAbn5H1owvm4CxCPdb0HQDehwNYMJpla5+M2tPmPARzhtYuwpHow== commander@^10.0.0: version "10.0.1" - resolved "https://registry.yarnpkg.com/commander/-/commander-10.0.1.tgz#881ee46b4f77d1c1dccc5823433aa39b022cbe06" + resolved "https://registry.npmjs.org/commander/-/commander-10.0.1.tgz" integrity sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug== commander@^2.12.1, commander@^2.20.3, commander@^2.8.1: @@ -9765,32 +10037,27 @@ commander@^2.12.1, commander@^2.20.3, commander@^2.8.1: commander@^4.0.1: version "4.1.1" - resolved "https://registry.yarnpkg.com/commander/-/commander-4.1.1.tgz#9fd602bd936294e9e9ef46a3f4d6964044b18068" + resolved "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz" integrity sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA== commander@^8.1.0: version "8.3.0" - resolved "https://registry.yarnpkg.com/commander/-/commander-8.3.0.tgz#4837ea1b2da67b9c616a67afbb0fafee567bca66" + resolved "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz" integrity sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww== -commander@^9.1.0: - version "9.5.0" - resolved "https://registry.yarnpkg.com/commander/-/commander-9.5.0.tgz#bc08d1eb5cedf7ccb797a96199d41c7bc3e60d30" - integrity sha512-KRs7WVDKg86PWiuAqhDrAQnTXZKraVcCc6vFdL14qrZ/DcWwuRo7VoiYXalXO7S5GKpqYiVEwCbgFDfxNHKJBQ== - common-ancestor-path@^1.0.1: version "1.0.1" - resolved "https://registry.yarnpkg.com/common-ancestor-path/-/common-ancestor-path-1.0.1.tgz#4f7d2d1394d91b7abdf51871c62f71eadb0182a7" + resolved "https://registry.npmjs.org/common-ancestor-path/-/common-ancestor-path-1.0.1.tgz" integrity sha512-L3sHRo1pXXEqX8VU28kfgUY+YGsk09hPqZiZmLacNib6XNTCM8ubYeT7ryXQw8asB1sKgcU5lkB7ONug08aB8w== commondir@^1.0.1: version "1.0.1" - resolved "https://registry.yarnpkg.com/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b" + resolved "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz" integrity sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg== compare-func@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/compare-func/-/compare-func-2.0.0.tgz#fb65e75edbddfd2e568554e8b5b05fff7a51fcb3" + resolved "https://registry.npmjs.org/compare-func/-/compare-func-2.0.0.tgz" integrity sha512-zHig5N+tPWARooBnb0Zx1MFcdfpyJrfTJ3Y5L+IFvUm8rM74hHz66z0gw0x4tijh5CorKkKUCnW82R2vmpeCRA== dependencies: array-ify "^1.0.0" @@ -9798,30 +10065,30 @@ compare-func@^2.0.0: compare-semver@^1.0.0: version "1.1.0" - resolved "https://registry.yarnpkg.com/compare-semver/-/compare-semver-1.1.0.tgz#7c0a79a27bb80b6c6994445f82958259d3d02153" + resolved "https://registry.npmjs.org/compare-semver/-/compare-semver-1.1.0.tgz" integrity sha512-AENcdfhxsMCzzl+QRdOwMQeA8tZBEEacAmA4pGPoyco27G9sIaM98WNYkcToC9O0wIx1vE+1ErmaM4t0/fXhMw== dependencies: semver "^5.0.1" compare-versions@^3.5.1: version "3.6.0" - resolved "https://registry.yarnpkg.com/compare-versions/-/compare-versions-3.6.0.tgz#1a5689913685e5a87637b8d3ffca75514ec41d62" + resolved "https://registry.npmjs.org/compare-versions/-/compare-versions-3.6.0.tgz" integrity sha512-W6Af2Iw1z4CB7q4uU4hv646dW9GQuBM+YpC0UvUCWSD8w90SJjp+ujJuXaEMtAXBtSqGfMPuFOVn4/+FlaqfBA== complex.js@2.0.11: version "2.0.11" - resolved "https://registry.yarnpkg.com/complex.js/-/complex.js-2.0.11.tgz#09a873fbf15ffd8c18c9c2201ccef425c32b8bf1" + resolved "https://registry.npmjs.org/complex.js/-/complex.js-2.0.11.tgz" integrity sha512-6IArJLApNtdg1P1dFtn3dnyzoZBEF0MwMnrfF1exSBRpZYoy4yieMkpZhQDC0uwctw48vii0CFVyHfpgZ/DfGw== component-emitter@^1.2.0, component-emitter@^1.2.1, component-emitter@^1.3.0: version "1.3.0" - resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.3.0.tgz#16e4070fba8ae29b679f2215853ee181ab2eabc0" + resolved "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz" integrity sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg== -compress-commons@^4.1.0: - version "4.1.1" - resolved "https://registry.yarnpkg.com/compress-commons/-/compress-commons-4.1.1.tgz#df2a09a7ed17447642bad10a85cc9a19e5c42a7d" - integrity sha512-QLdDLCKNV2dtoTorqgxngQCMA+gWXkM/Nwu7FpeBhk/RdkzimqC3jueb/FDmaZeXh+uby1jkBqE3xArsLBE5wQ== +compress-commons@^4.1.2: + version "4.1.2" + resolved "https://registry.npmjs.org/compress-commons/-/compress-commons-4.1.2.tgz" + integrity sha512-D3uMHtGc/fcO1Gt1/L7i1e33VOvD4A9hfQLP+6ewd+BvG/gQ84Yh4oftEhAdjSMgBgwGL+jsppT7JYNpo6MHHg== dependencies: buffer-crc32 "^0.2.13" crc32-stream "^4.0.2" @@ -9830,14 +10097,14 @@ compress-commons@^4.1.0: compressible@^2.0.12, compressible@~2.0.16: version "2.0.18" - resolved "https://registry.yarnpkg.com/compressible/-/compressible-2.0.18.tgz#af53cca6b070d4c3c0750fbd77286a6d7cc46fba" + resolved "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz" integrity sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg== dependencies: mime-db ">= 1.43.0 < 2" compression@^1.7.0: version "1.7.4" - resolved "https://registry.yarnpkg.com/compression/-/compression-1.7.4.tgz#95523eff170ca57c29a0ca41e6fe131f41e5bb8f" + resolved "https://registry.npmjs.org/compression/-/compression-1.7.4.tgz" integrity sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ== dependencies: accepts "~1.3.5" @@ -9850,7 +10117,7 @@ compression@^1.7.0: concat-map@0.0.1: version "0.0.1" - resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" + resolved "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz" integrity sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg== concat-stream@^1.6.0, concat-stream@^1.6.2: @@ -9865,7 +10132,7 @@ concat-stream@^1.6.0, concat-stream@^1.6.2: concat-stream@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-2.0.0.tgz#414cf5af790a48c60ab9be4527d56d5e41133cb1" + resolved "https://registry.npmjs.org/concat-stream/-/concat-stream-2.0.0.tgz" integrity sha512-MWufYdFw53ccGjCA+Ol7XJYpAlW6/prSMzuPOTRnJGcGzuhLn4Scrz7qf6o8bROZ514ltazcIFJZevcfbo0x7A== dependencies: buffer-from "^1.0.0" @@ -9875,7 +10142,7 @@ concat-stream@^2.0.0: conf@^10.1.2: version "10.2.0" - resolved "https://registry.yarnpkg.com/conf/-/conf-10.2.0.tgz#838e757be963f1a2386dfe048a98f8f69f7b55d6" + resolved "https://registry.npmjs.org/conf/-/conf-10.2.0.tgz" integrity sha512-8fLl9F04EJqjSqH+QjITQfJF8BrOVaYr1jewVgSRAEWePfxT0sku4w2hrGQ60BC/TNLGQ2pgxNlTbWQmMPFvXg== dependencies: ajv "^8.6.3" @@ -9891,7 +10158,7 @@ conf@^10.1.2: config-chain@^1.1.11, config-chain@^1.1.12: version "1.1.13" - resolved "https://registry.yarnpkg.com/config-chain/-/config-chain-1.1.13.tgz#fad0795aa6a6cdaff9ed1b68e9dff94372c232f4" + resolved "https://registry.npmjs.org/config-chain/-/config-chain-1.1.13.tgz" integrity sha512-qj+f8APARXHrM0hraqXYb2/bOVSV4PvJQlNZ/DVj0QrmNM2q2euizkeuVckQ57J+W0mRH6Hvi+k50M4Jul2VRQ== dependencies: ini "^1.3.4" @@ -9899,7 +10166,7 @@ config-chain@^1.1.11, config-chain@^1.1.12: configstore@^4.0.0: version "4.0.0" - resolved "https://registry.yarnpkg.com/configstore/-/configstore-4.0.0.tgz#5933311e95d3687efb592c528b922d9262d227e7" + resolved "https://registry.npmjs.org/configstore/-/configstore-4.0.0.tgz" integrity sha512-CmquAXFBocrzaSM8mtGPMM/HiWmyIpr4CcJl/rgY2uCObZ/S7cKU0silxslqJejl+t/T9HS8E0PUNQD81JGUEQ== dependencies: dot-prop "^4.1.0" @@ -9911,7 +10178,7 @@ configstore@^4.0.0: configstore@^5.0.0, configstore@^5.0.1: version "5.0.1" - resolved "https://registry.yarnpkg.com/configstore/-/configstore-5.0.1.tgz#d365021b5df4b98cdd187d6a3b0e3f6a7cc5ed96" + resolved "https://registry.npmjs.org/configstore/-/configstore-5.0.1.tgz" integrity sha512-aMKprgk5YhBNyH25hj8wGt2+D52Sw1DRRIzqBwLp2Ya9mFmY8KPvvtvmna8SxVR9JMZ4kzMD68N22vlaRpkeFA== dependencies: dot-prop "^5.2.0" @@ -9923,7 +10190,7 @@ configstore@^5.0.0, configstore@^5.0.1: connect@^3.6.2, connect@^3.7.0: version "3.7.0" - resolved "https://registry.yarnpkg.com/connect/-/connect-3.7.0.tgz#5d49348910caa5e07a01800b030d0c35f20484f8" + resolved "https://registry.npmjs.org/connect/-/connect-3.7.0.tgz" integrity sha512-ZqRXc+tZukToSNmh5C2iWMSoV3X1YUcPbqEM4DkEG5tNQXrQUZCNVGGv3IuicnkMtPfGf3Xtp8WCXs295iQ1pQ== dependencies: debug "2.6.9" @@ -9933,12 +10200,12 @@ connect@^3.6.2, connect@^3.7.0: console-control-strings@^1.0.0, console-control-strings@^1.1.0, console-control-strings@~1.1.0: version "1.1.0" - resolved "https://registry.yarnpkg.com/console-control-strings/-/console-control-strings-1.1.0.tgz#3d7cf4464db6446ea644bf4b39507f9851008e8e" + resolved "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz" integrity sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ== constant-case@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/constant-case/-/constant-case-2.0.0.tgz#4175764d389d3fa9c8ecd29186ed6005243b6a46" + resolved "https://registry.npmjs.org/constant-case/-/constant-case-2.0.0.tgz" integrity sha512-eS0N9WwmjTqrOmR3o83F5vW8Z+9R1HnVz3xmzT2PMFug9ly+Au/fxRWlEBSb6LcZwspSsEn9Xs1uw9YgzAg1EQ== dependencies: snake-case "^2.1.0" @@ -9946,14 +10213,14 @@ constant-case@^2.0.0: content-disposition@0.5.4: version "0.5.4" - resolved "https://registry.yarnpkg.com/content-disposition/-/content-disposition-0.5.4.tgz#8b82b4efac82512a02bb0b1dcec9d2c5e8eb5bfe" + resolved "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz" integrity sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ== dependencies: safe-buffer "5.2.1" content-hash@^2.5.2: version "2.5.2" - resolved "https://registry.yarnpkg.com/content-hash/-/content-hash-2.5.2.tgz#bbc2655e7c21f14fd3bfc7b7d4bfe6e454c9e211" + resolved "https://registry.npmjs.org/content-hash/-/content-hash-2.5.2.tgz" integrity sha512-FvIQKy0S1JaWV10sMsA7TRx8bpU+pqPkhbsfvOJAdjRXvYxEckAwQWGwtRjiaJfh+E0DvcWUGqcdjwMGFjsSdw== dependencies: cids "^0.7.1" @@ -9962,12 +10229,12 @@ content-hash@^2.5.2: content-type@^1.0.4, content-type@~1.0.4, content-type@~1.0.5: version "1.0.5" - resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.5.tgz#8b773162656d1d1086784c8f23a54ce6d73d7918" + resolved "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz" integrity sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA== conventional-changelog-angular@^5.0.12: version "5.0.13" - resolved "https://registry.yarnpkg.com/conventional-changelog-angular/-/conventional-changelog-angular-5.0.13.tgz#896885d63b914a70d4934b59d2fe7bde1832b28c" + resolved "https://registry.npmjs.org/conventional-changelog-angular/-/conventional-changelog-angular-5.0.13.tgz" integrity sha512-i/gipMxs7s8L/QeuavPF2hLnJgH6pEZAttySB6aiQLWcX3puWDL3ACVmvBhJGxnAy52Qc15ua26BufY6KpmrVA== dependencies: compare-func "^2.0.0" @@ -9975,7 +10242,7 @@ conventional-changelog-angular@^5.0.12: conventional-changelog-core@^4.2.4: version "4.2.4" - resolved "https://registry.yarnpkg.com/conventional-changelog-core/-/conventional-changelog-core-4.2.4.tgz#e50d047e8ebacf63fac3dc67bf918177001e1e9f" + resolved "https://registry.npmjs.org/conventional-changelog-core/-/conventional-changelog-core-4.2.4.tgz" integrity sha512-gDVS+zVJHE2v4SLc6B0sLsPiloR0ygU7HaDW14aNJE1v4SlqJPILPl/aJC7YdtRE4CybBf8gDwObBvKha8Xlyg== dependencies: add-stream "^1.0.0" @@ -9995,12 +10262,12 @@ conventional-changelog-core@^4.2.4: conventional-changelog-preset-loader@^2.3.4: version "2.3.4" - resolved "https://registry.yarnpkg.com/conventional-changelog-preset-loader/-/conventional-changelog-preset-loader-2.3.4.tgz#14a855abbffd59027fd602581f1f34d9862ea44c" + resolved "https://registry.npmjs.org/conventional-changelog-preset-loader/-/conventional-changelog-preset-loader-2.3.4.tgz" integrity sha512-GEKRWkrSAZeTq5+YjUZOYxdHq+ci4dNwHvpaBC3+ENalzFWuCWa9EZXSuZBpkr72sMdKB+1fyDV4takK1Lf58g== conventional-changelog-writer@^5.0.0: version "5.0.1" - resolved "https://registry.yarnpkg.com/conventional-changelog-writer/-/conventional-changelog-writer-5.0.1.tgz#e0757072f045fe03d91da6343c843029e702f359" + resolved "https://registry.npmjs.org/conventional-changelog-writer/-/conventional-changelog-writer-5.0.1.tgz" integrity sha512-5WsuKUfxW7suLblAbFnxAcrvf6r+0b7GvNaWUwUIk0bXMnENP/PEieGKVUQrjPqwPT4o3EPAASBXiY6iHooLOQ== dependencies: conventional-commits-filter "^2.0.7" @@ -10015,7 +10282,7 @@ conventional-changelog-writer@^5.0.0: conventional-commits-filter@^2.0.7: version "2.0.7" - resolved "https://registry.yarnpkg.com/conventional-commits-filter/-/conventional-commits-filter-2.0.7.tgz#f8d9b4f182fce00c9af7139da49365b136c8a0b3" + resolved "https://registry.npmjs.org/conventional-commits-filter/-/conventional-commits-filter-2.0.7.tgz" integrity sha512-ASS9SamOP4TbCClsRHxIHXRfcGCnIoQqkvAzCSbZzTFLfcTqJVugB0agRgsEELsqaeWgsXv513eS116wnlSSPA== dependencies: lodash.ismatch "^4.4.0" @@ -10023,7 +10290,7 @@ conventional-commits-filter@^2.0.7: conventional-commits-parser@^3.2.0: version "3.2.4" - resolved "https://registry.yarnpkg.com/conventional-commits-parser/-/conventional-commits-parser-3.2.4.tgz#a7d3b77758a202a9b2293d2112a8d8052c740972" + resolved "https://registry.npmjs.org/conventional-commits-parser/-/conventional-commits-parser-3.2.4.tgz" integrity sha512-nK7sAtfi+QXbxHCYfhpZsfRtaitZLIA6889kFIouLvz6repszQDgxBu7wf2WbU+Dco7sAnNCJYERCwt54WPC2Q== dependencies: JSONStream "^1.0.4" @@ -10035,7 +10302,7 @@ conventional-commits-parser@^3.2.0: conventional-recommended-bump@^6.1.0: version "6.1.0" - resolved "https://registry.yarnpkg.com/conventional-recommended-bump/-/conventional-recommended-bump-6.1.0.tgz#cfa623285d1de554012f2ffde70d9c8a22231f55" + resolved "https://registry.npmjs.org/conventional-recommended-bump/-/conventional-recommended-bump-6.1.0.tgz" integrity sha512-uiApbSiNGM/kkdL9GTOLAqC4hbptObFo4wW2QRyHsKciGAfQuLU1ShZ1BIVI/+K2BE/W1AWYQMCXAsv4dyKPaw== dependencies: concat-stream "^2.0.0" @@ -10049,27 +10316,27 @@ conventional-recommended-bump@^6.1.0: convert-source-map@^1.6.0, convert-source-map@^1.7.0: version "1.9.0" - resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.9.0.tgz#7faae62353fb4213366d0ca98358d22e8368b05f" + resolved "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz" integrity sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A== convert-source-map@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-2.0.0.tgz#4b560f649fc4e918dd0ab75cf4961e8bc882d82a" + resolved "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz" integrity sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg== cookie-signature@1.0.6: version "1.0.6" - resolved "https://registry.yarnpkg.com/cookie-signature/-/cookie-signature-1.0.6.tgz#e303a882b342cc3ee8ca513a79999734dab3ae2c" + resolved "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz" integrity sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ== cookie@0.5.0: version "0.5.0" - resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.5.0.tgz#d1f5d71adec6558c58f389987c366aa47e994f8b" + resolved "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz" integrity sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw== cookiejar@^2.1.1, cookiejar@^2.1.4: version "2.1.4" - resolved "https://registry.yarnpkg.com/cookiejar/-/cookiejar-2.1.4.tgz#ee669c1fea2cf42dc31585469d193fef0d65771b" + resolved "https://registry.npmjs.org/cookiejar/-/cookiejar-2.1.4.tgz" integrity sha512-LDx6oHrK+PhzLKJU9j5S7/Y3jM/mUHvD/DeI1WQmJn652iPC5Y4TBzC9l+5OMOXlyTTA+SmVUPm0HQUwpD5Jqw== copy-descriptor@^0.1.0: @@ -10079,14 +10346,14 @@ copy-descriptor@^0.1.0: core-js-compat@^3.25.1: version "3.30.1" - resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.30.1.tgz#961541e22db9c27fc48bfc13a3cafa8734171dfe" + resolved "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.30.1.tgz" integrity sha512-d690npR7MC6P0gq4npTl5n2VQeNAmUrJ90n+MHiKS7W2+xno4o3F5GDEuylSdi6EJ3VssibSGXOa1r3YXD3Mhw== dependencies: browserslist "^4.21.5" core-js-pure@^3.0.1: version "3.30.1" - resolved "https://registry.yarnpkg.com/core-js-pure/-/core-js-pure-3.30.1.tgz#7d93dc89e7d47b8ef05d7e79f507b0e99ea77eec" + resolved "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.30.1.tgz" integrity sha512-nXBEVpmUnNRhz83cHd9JRQC52cTMcuXAmR56+9dSMpRdpeA4I1PX6yjmhd71Eyc/wXNsdBdUDIj1QTIeZpU5Tg== core-js@^2.4.0: @@ -10094,24 +10361,29 @@ core-js@^2.4.0: resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.6.12.tgz#d9333dfa7b065e347cc5682219d6f690859cc2ec" integrity sha512-Kb2wC0fvsWfQrgk8HU5lW6U/Lcs8+9aaYcy4ZFc6DDlo4nZ7n70dEgE5rtR0oG6ufKDUnrwfWL1mXR5ljDatrQ== -core-js@^3.0.0, core-js@^3.2.1: +core-js@^3.0.0: + version "3.32.2" + resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.32.2.tgz#172fb5949ef468f93b4be7841af6ab1f21992db7" + integrity sha512-pxXSw1mYZPDGvTQqEc5vgIb83jGQKFGYWY76z4a7weZXUolw3G+OvpZqSRcfYOoOVUQJYEPsWeQK8pKEnUtWxQ== + +core-js@^3.2.1: version "3.30.1" - resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.30.1.tgz#fc9c5adcc541d8e9fa3e381179433cbf795628ba" + resolved "https://registry.npmjs.org/core-js/-/core-js-3.30.1.tgz" integrity sha512-ZNS5nbiSwDTq4hFosEDqm65izl2CWmLz0hARJMyNQBgkUZMIF51cQiMvIQKA6hvuaeWxQDP3hEedM1JZIgTldQ== core-util-is@1.0.2: version "1.0.2" - resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" + resolved "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz" integrity sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ== core-util-is@~1.0.0: version "1.0.3" - resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.3.tgz#a6042d3634c2b27e9328f837b965fac83808db85" + resolved "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz" integrity sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ== cors@^2.8.1, cors@^2.8.5: version "2.8.5" - resolved "https://registry.yarnpkg.com/cors/-/cors-2.8.5.tgz#eac11da51592dd86b9f06f6e7ac293b3df875d29" + resolved "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz" integrity sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g== dependencies: object-assign "^4" @@ -10119,7 +10391,7 @@ cors@^2.8.1, cors@^2.8.5: cosmiconfig@^5.0.7, cosmiconfig@^5.2.1: version "5.2.1" - resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-5.2.1.tgz#040f726809c591e77a17c0a3626ca45b4f168b1a" + resolved "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-5.2.1.tgz" integrity sha512-H65gsXo1SKjf8zmrJ67eJk8aIRKV5ff2D4uKZIBZShbhGSpEmsQOPW/SKMKYhSTrqR7ufy6RP69rPogdaPh/kA== dependencies: import-fresh "^2.0.0" @@ -10129,7 +10401,7 @@ cosmiconfig@^5.0.7, cosmiconfig@^5.2.1: cosmiconfig@^7.0.0: version "7.1.0" - resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-7.1.0.tgz#1443b9afa596b670082ea46cbd8f6a62b84635f6" + resolved "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.1.0.tgz" integrity sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA== dependencies: "@types/parse-json" "^4.0.0" @@ -10140,28 +10412,28 @@ cosmiconfig@^7.0.0: country-data@^0.0.31: version "0.0.31" - resolved "https://registry.yarnpkg.com/country-data/-/country-data-0.0.31.tgz#80966b8e1d147fa6d6a589d32933f8793774956d" + resolved "https://registry.npmjs.org/country-data/-/country-data-0.0.31.tgz" integrity sha512-YqlY/i6ikZwoBFfdjK+hJTGaBdTgDpXLI15MCj2UsXZ2cPBb+Kx86AXmDH7PRGt0LUleck0cCgNdWeIhfbcxkQ== dependencies: currency-symbol-map "~2" underscore ">1.4.4" -crc-32@^1.2.0: +crc-32@^1.2.0, crc-32@^1.2.2: version "1.2.2" - resolved "https://registry.yarnpkg.com/crc-32/-/crc-32-1.2.2.tgz#3cad35a934b8bf71f25ca524b6da51fb7eace2ff" + resolved "https://registry.npmjs.org/crc-32/-/crc-32-1.2.2.tgz" integrity sha512-ROmzCKrTnOwybPcJApAA6WBWij23HVfGVNKqqrZpuyZOHqK2CwHSvpGuyt/UNNvaIjEd8X5IFGp4Mh+Ie1IHJQ== crc32-stream@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/crc32-stream/-/crc32-stream-4.0.2.tgz#c922ad22b38395abe9d3870f02fa8134ed709007" - integrity sha512-DxFZ/Hk473b/muq1VJ///PMNLj0ZMnzye9thBpmjpJKCc5eMgB95aK8zCGrGfQ90cWo561Te6HK9D+j4KPdM6w== + version "4.0.3" + resolved "https://registry.npmjs.org/crc32-stream/-/crc32-stream-4.0.3.tgz" + integrity sha512-NT7w2JVU7DFroFdYkeq8cywxrgjPHWkdX1wjpRQXPX5Asews3tA+Ght6lddQO5Mkumffp3X7GEqku3epj2toIw== dependencies: crc-32 "^1.2.0" readable-stream "^3.4.0" create-ecdh@^4.0.0: version "4.0.4" - resolved "https://registry.yarnpkg.com/create-ecdh/-/create-ecdh-4.0.4.tgz#d6e7f4bffa66736085a0762fd3a632684dabcc4e" + resolved "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.4.tgz" integrity sha512-mf+TCx8wWc9VpuxfP2ht0iSISLZnt0JgWlrOKZiNqyUZWnjIaCIVNQArMHnCZKfEYRg6IM7A+NeJoN8gf/Ws0A== dependencies: bn.js "^4.1.0" @@ -10169,7 +10441,7 @@ create-ecdh@^4.0.0: create-hash@^1.1.0, create-hash@^1.1.1, create-hash@^1.1.2, create-hash@^1.2.0: version "1.2.0" - resolved "https://registry.yarnpkg.com/create-hash/-/create-hash-1.2.0.tgz#889078af11a63756bcfb59bd221996be3a9ef196" + resolved "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz" integrity sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg== dependencies: cipher-base "^1.0.1" @@ -10180,7 +10452,7 @@ create-hash@^1.1.0, create-hash@^1.1.1, create-hash@^1.1.2, create-hash@^1.2.0: create-hmac@^1.1.0, create-hmac@^1.1.4, create-hmac@^1.1.7: version "1.1.7" - resolved "https://registry.yarnpkg.com/create-hmac/-/create-hmac-1.1.7.tgz#69170c78b3ab957147b2b8b04572e47ead2243ff" + resolved "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz" integrity sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg== dependencies: cipher-base "^1.0.3" @@ -10192,15 +10464,16 @@ create-hmac@^1.1.0, create-hmac@^1.1.4, create-hmac@^1.1.7: create-require@^1.1.0: version "1.1.1" - resolved "https://registry.yarnpkg.com/create-require/-/create-require-1.1.1.tgz#c1d7e8f1e5f6cfc9ff65f9cd352d37348756c333" + resolved "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz" integrity sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ== cron@^2.4.1: - version "2.4.1" - resolved "https://registry.yarnpkg.com/cron/-/cron-2.4.1.tgz#90000398576beb3787339a1b3131f336aed10771" - integrity sha512-ty0hUSPuENwDtIShDFxUxWEIsqiu2vhoFtt6Vwrbg4lHGtJX2/cV2p0hH6/qaEM9Pj+i6mQoau48BO5wBpkP4w== + version "2.4.3" + resolved "https://registry.npmjs.org/cron/-/cron-2.4.3.tgz" + integrity sha512-YBvExkQYF7w0PxyeFLRyr817YVDhGxaCi5/uRRMqa4aWD3IFKRd+uNbpW1VWMdqQy8PZ7CElc+accXJcauPKzQ== dependencies: - luxon "^3.2.1" + "@types/luxon" "~3.3.0" + luxon "~3.3.0" cross-env@^5.1.3, cross-env@^5.1.6: version "5.2.1" @@ -10211,7 +10484,7 @@ cross-env@^5.1.3, cross-env@^5.1.6: cross-fetch@3.0.4: version "3.0.4" - resolved "https://registry.yarnpkg.com/cross-fetch/-/cross-fetch-3.0.4.tgz#7bef7020207e684a7638ef5f2f698e24d9eb283c" + resolved "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.0.4.tgz" integrity sha512-MSHgpjQqgbT/94D4CyADeNoYh52zMkCX4pcJvPP5WqPsLFMKjr2TCMg381ox5qI0ii2dPwaLx/00477knXqXVw== dependencies: node-fetch "2.6.0" @@ -10219,21 +10492,28 @@ cross-fetch@3.0.4: cross-fetch@3.0.6: version "3.0.6" - resolved "https://registry.yarnpkg.com/cross-fetch/-/cross-fetch-3.0.6.tgz#3a4040bc8941e653e0e9cf17f29ebcd177d3365c" + resolved "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.0.6.tgz" integrity sha512-KBPUbqgFjzWlVcURG+Svp9TlhA5uliYtiNx/0r8nv0pdypeQCRJ9IaSIc3q/x3q8t3F75cHuwxVql1HFGHCNJQ== dependencies: node-fetch "2.6.1" -cross-fetch@^3.0.6, cross-fetch@^3.1.4: +cross-fetch@^3.0.6, cross-fetch@^3.1.5: + version "3.1.8" + resolved "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.1.8.tgz" + integrity sha512-cvA+JwZoU0Xq+h6WkMvAUqPEYy92Obet6UdKLfW60qn99ftItKjB5T+BkyWOFWe2pUyfQ+IJHmpOTznqk1M6Kg== + dependencies: + node-fetch "^2.6.12" + +cross-fetch@^3.1.4: version "3.1.5" - resolved "https://registry.yarnpkg.com/cross-fetch/-/cross-fetch-3.1.5.tgz#e1389f44d9e7ba767907f7af8454787952ab534f" + resolved "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.1.5.tgz" integrity sha512-lvb1SBsI0Z7GDwmuid+mU3kWVBwTVUbe7S0H52yaaAdQOXq2YktTCZdlAcNKFzE6QtRz0snpw9bNiPeOIkkQvw== dependencies: node-fetch "2.6.7" cross-spawn@^6.0.0, cross-spawn@^6.0.5: version "6.0.5" - resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-6.0.5.tgz#4a5ec7c64dfae22c3a14124dbacdee846d80cbc4" + resolved "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz" integrity sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ== dependencies: nice-try "^1.0.4" @@ -10244,7 +10524,7 @@ cross-spawn@^6.0.0, cross-spawn@^6.0.5: cross-spawn@^7.0.0, cross-spawn@^7.0.1, cross-spawn@^7.0.3: version "7.0.3" - resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6" + resolved "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz" integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== dependencies: path-key "^3.1.0" @@ -10258,7 +10538,7 @@ cross-spawn@^7.0.0, cross-spawn@^7.0.1, cross-spawn@^7.0.3: crypto-addr-codec@^0.1.7: version "0.1.7" - resolved "https://registry.yarnpkg.com/crypto-addr-codec/-/crypto-addr-codec-0.1.7.tgz#e16cea892730178fe25a38f6d15b680cab3124ae" + resolved "https://registry.npmjs.org/crypto-addr-codec/-/crypto-addr-codec-0.1.7.tgz" integrity sha512-X4hzfBzNhy4mAc3UpiXEC/L0jo5E8wAa9unsnA8nNXYzXjCcGk83hfC5avJWCSGT8V91xMnAS9AKMHmjw5+XCg== dependencies: base-x "^3.0.8" @@ -10271,7 +10551,7 @@ crypto-addr-codec@^0.1.7: crypto-browserify@3.12.0: version "3.12.0" - resolved "https://registry.yarnpkg.com/crypto-browserify/-/crypto-browserify-3.12.0.tgz#396cf9f3137f03e4b8e532c58f698254e00f80ec" + resolved "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.0.tgz" integrity sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg== dependencies: browserify-cipher "^1.0.0" @@ -10288,22 +10568,22 @@ crypto-browserify@3.12.0: crypto-js@^3.1.4, crypto-js@^3.1.9-1: version "3.3.0" - resolved "https://registry.yarnpkg.com/crypto-js/-/crypto-js-3.3.0.tgz#846dd1cce2f68aacfa156c8578f926a609b7976b" + resolved "https://registry.npmjs.org/crypto-js/-/crypto-js-3.3.0.tgz" integrity sha512-DIT51nX0dCfKltpRiXV+/TVZq+Qq2NgF4644+K7Ttnla7zEzqc+kjJyiB96BHNyUTBxyjzRcZYpUdZa+QAqi6Q== crypto-random-string@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/crypto-random-string/-/crypto-random-string-1.0.0.tgz#a230f64f568310e1498009940790ec99545bca7e" + resolved "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-1.0.0.tgz" integrity sha512-GsVpkFPlycH7/fRR7Dhcmnoii54gV1nz7y4CWyeFS14N+JVBBhY+r8amRHE4BwSYal7BPTDp8isvAlCxyFt3Hg== crypto-random-string@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/crypto-random-string/-/crypto-random-string-2.0.0.tgz#ef2a7a966ec11083388369baa02ebead229b30d5" + resolved "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-2.0.0.tgz" integrity sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA== css-select@^5.1.0: version "5.1.0" - resolved "https://registry.yarnpkg.com/css-select/-/css-select-5.1.0.tgz#b8ebd6554c3637ccc76688804ad3f6a6fdaea8a6" + resolved "https://registry.npmjs.org/css-select/-/css-select-5.1.0.tgz" integrity sha512-nwoRF1rvRRnnCqqY7updORDsuqKzqYJ28+oSMaJMMgOauh3fvwHqMS7EZpIPqK8GL+g9mKxF1vP/ZjSeNjEVHg== dependencies: boolbase "^1.0.0" @@ -10314,27 +10594,27 @@ css-select@^5.1.0: css-what@^6.1.0: version "6.1.0" - resolved "https://registry.yarnpkg.com/css-what/-/css-what-6.1.0.tgz#fb5effcf76f1ddea2c81bdfaa4de44e79bac70f4" + resolved "https://registry.npmjs.org/css-what/-/css-what-6.1.0.tgz" integrity sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw== cssfilter@0.0.10: version "0.0.10" - resolved "https://registry.yarnpkg.com/cssfilter/-/cssfilter-0.0.10.tgz#c6d2672632a2e5c83e013e6864a42ce8defd20ae" + resolved "https://registry.npmjs.org/cssfilter/-/cssfilter-0.0.10.tgz" integrity sha512-FAaLDaplstoRsDR8XGYH51znUN0UY7nMc6Z9/fvE8EXGwvJE9hu7W2vHwx1+bd6gCYnln9nLbzxFTrcO9YQDZw== csstype@^3.0.2: version "3.1.2" - resolved "https://registry.yarnpkg.com/csstype/-/csstype-3.1.2.tgz#1d4bf9d572f11c14031f0436e1c10bc1f571f50b" + resolved "https://registry.npmjs.org/csstype/-/csstype-3.1.2.tgz" integrity sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ== csv-parse@^5.0.4: - version "5.4.0" - resolved "https://registry.yarnpkg.com/csv-parse/-/csv-parse-5.4.0.tgz#6793210a4a49a9a74b3fde3f9d00f3f52044fd89" - integrity sha512-JiQosUWiOFgp4hQn0an+SBoV9IKdqzhROM0iiN4LB7UpfJBlsSJlWl9nq4zGgxgMAzHJ6V4t29VAVD+3+2NJAg== + version "5.5.0" + resolved "https://registry.npmjs.org/csv-parse/-/csv-parse-5.5.0.tgz" + integrity sha512-RxruSK3M4XgzcD7Trm2wEN+SJ26ChIb903+IWxNOcB5q4jT2Cs+hFr6QP39J05EohshRFEvyzEBoZ/466S2sbw== csv-parser@^2.0.0: version "2.3.5" - resolved "https://registry.yarnpkg.com/csv-parser/-/csv-parser-2.3.5.tgz#6b3bf0907684914ff2c5abfbadab111a69eae5db" + resolved "https://registry.npmjs.org/csv-parser/-/csv-parser-2.3.5.tgz" integrity sha512-LCHolC4AlNwL+5EuD5LH2VVNKpD8QixZW2zzK1XmrVYUaslFY4c5BooERHOCIubG9iv/DAyFjs4x0HvWNZuyWg== dependencies: minimist "^1.2.0" @@ -10342,31 +10622,31 @@ csv-parser@^2.0.0: csv-streamify@^3.0.4: version "3.0.4" - resolved "https://registry.yarnpkg.com/csv-streamify/-/csv-streamify-3.0.4.tgz#4cb614c57e3f299cca17b63fdcb4ad167777f47a" + resolved "https://registry.npmjs.org/csv-streamify/-/csv-streamify-3.0.4.tgz" integrity sha512-IQkxN0zu0gym8/5CHrSyReeRewbw+aRDrMrGI5WmIY/LmEcNpAcPOyETBHREKgsWHeEQWEihiBmx5EcKAsKWZw== dependencies: through2 "2.0.1" csv-stringify@^4.3.1: version "4.3.1" - resolved "https://registry.yarnpkg.com/csv-stringify/-/csv-stringify-4.3.1.tgz#7bee36f746ef555dd481a735a9e2938965f8478b" + resolved "https://registry.npmjs.org/csv-stringify/-/csv-stringify-4.3.1.tgz" integrity sha512-VRjPYIUzex5kfbsOY7LaJcNE2qMWGQQAanb3/Vv85WbOgA+dAfDNfwntRvv335icJgGYrnTX403WxJxRVpLDFA== dependencies: lodash.get "~4.4.2" currency-symbol-map@~2: version "2.2.0" - resolved "https://registry.yarnpkg.com/currency-symbol-map/-/currency-symbol-map-2.2.0.tgz#2b3c1872ff1ac2ce595d8273e58e1fff0272aea2" + resolved "https://registry.npmjs.org/currency-symbol-map/-/currency-symbol-map-2.2.0.tgz" integrity sha512-fPZJ3jqM68+AAgqQ7UaGbgHL/39rp6l7GyqS2k1HJPu/kpS8D07x/+Uup6a9tCUKIlOFcRrDCf1qxSt8jnI5BA== cycle@1.0.x: version "1.0.3" - resolved "https://registry.yarnpkg.com/cycle/-/cycle-1.0.3.tgz#21e80b2be8580f98b468f379430662b046c34ad2" + resolved "https://registry.npmjs.org/cycle/-/cycle-1.0.3.tgz" integrity sha512-TVF6svNzeQCOpjCqsy0/CSy8VgObG3wXusJ73xW2GbG5rGx7lC8zxDSURicsXI2UsGdi2L0QNRCi745/wUDvsA== d@1, d@^1.0.1: version "1.0.1" - resolved "https://registry.yarnpkg.com/d/-/d-1.0.1.tgz#8698095372d58dbee346ffd0c7093f99f8f9eb5a" + resolved "https://registry.npmjs.org/d/-/d-1.0.1.tgz" integrity sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA== dependencies: es5-ext "^0.10.50" @@ -10374,103 +10654,103 @@ d@1, d@^1.0.1: dargs@^7.0.0: version "7.0.0" - resolved "https://registry.yarnpkg.com/dargs/-/dargs-7.0.0.tgz#04015c41de0bcb69ec84050f3d9be0caf8d6d5cc" + resolved "https://registry.npmjs.org/dargs/-/dargs-7.0.0.tgz" integrity sha512-2iy1EkLdlBzQGvbweYRFxmFath8+K7+AKB0TlhHWkNuH+TmovaMH/Wp7V7R4u7f4SnX3OgLsU9t1NI9ioDnUpg== dashdash@^1.12.0: version "1.14.1" - resolved "https://registry.yarnpkg.com/dashdash/-/dashdash-1.14.1.tgz#853cfa0f7cbe2fed5de20326b8dd581035f6e2f0" + resolved "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz" integrity sha512-jRFi8UDGo6j+odZiEpjazZaWqEal3w/basFjQHQEwVtZJGDpxbH1MeYluwCS8Xq5wmLJooDlMgvVarmWfGM44g== dependencies: assert-plus "^1.0.0" data-uri-to-buffer@3: version "3.0.1" - resolved "https://registry.yarnpkg.com/data-uri-to-buffer/-/data-uri-to-buffer-3.0.1.tgz#594b8973938c5bc2c33046535785341abc4f3636" + resolved "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-3.0.1.tgz" integrity sha512-WboRycPNsVw3B3TL559F7kuBUM4d8CgMEvk6xEJlOp7OBPjt6G7z8WMWlD2rOFZLk6OYfFIUGsCOWzcQH9K2og== data-uri-to-buffer@^5.0.1: version "5.0.1" - resolved "https://registry.yarnpkg.com/data-uri-to-buffer/-/data-uri-to-buffer-5.0.1.tgz#db89a9e279c2ffe74f50637a59a32fb23b3e4d7c" + resolved "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-5.0.1.tgz" integrity sha512-a9l6T1qqDogvvnw0nKlfZzqsyikEBZBClF39V3TFoKhDtGBqHu2HkuomJc02j5zft8zrUaXEuoicLeW54RkzPg== dataloader@2.1.0: version "2.1.0" - resolved "https://registry.yarnpkg.com/dataloader/-/dataloader-2.1.0.tgz#c69c538235e85e7ac6c6c444bae8ecabf5de9df7" + resolved "https://registry.npmjs.org/dataloader/-/dataloader-2.1.0.tgz" integrity sha512-qTcEYLen3r7ojZNgVUaRggOI+KM7jrKxXeSHhogh/TWxYMeONEMqY+hmkobiYQozsGIyg9OYVzO4ZIfoB4I0pQ== date-and-time@^0.6.3: version "0.6.3" - resolved "https://registry.yarnpkg.com/date-and-time/-/date-and-time-0.6.3.tgz#2daee52df67c28bd93bce862756ac86b68cf4237" + resolved "https://registry.npmjs.org/date-and-time/-/date-and-time-0.6.3.tgz" integrity sha512-lcWy3AXDRJOD7MplwZMmNSRM//kZtJaLz4n6D1P5z9wEmZGBKhJRBIr1Xs9KNQJmdXPblvgffynYji4iylUTcA== date-utils@*: version "1.2.21" - resolved "https://registry.yarnpkg.com/date-utils/-/date-utils-1.2.21.tgz#61fb16cdc1274b3c9acaaffe9fc69df8720a2b64" + resolved "https://registry.npmjs.org/date-utils/-/date-utils-1.2.21.tgz" integrity sha512-wJMBjqlwXR0Iv0wUo/lFbhSQ7MmG1hl36iuxuE91kW+5b5sWbase73manEqNH9sOLFAMG83B4ffNKq9/Iq0FVA== dateformat@^3.0.0: version "3.0.3" - resolved "https://registry.yarnpkg.com/dateformat/-/dateformat-3.0.3.tgz#a6e37499a4d9a9cf85ef5872044d62901c9889ae" + resolved "https://registry.npmjs.org/dateformat/-/dateformat-3.0.3.tgz" integrity sha512-jyCETtSl3VMZMWeRo7iY1FL19ges1t55hMo5yaam4Jrsm5EPL89UQkoQRyiI+Yf4k8r2ZpdngkV8hr1lIdjb3Q== debounce-fn@^4.0.0: version "4.0.0" - resolved "https://registry.yarnpkg.com/debounce-fn/-/debounce-fn-4.0.0.tgz#ed76d206d8a50e60de0dd66d494d82835ffe61c7" + resolved "https://registry.npmjs.org/debounce-fn/-/debounce-fn-4.0.0.tgz" integrity sha512-8pYCQiL9Xdcg0UPSD3d+0KMlOjp+KGU5EPwYddgzQ7DATsg4fuUDjQtsYLmWjnk2obnNHgV3vE2Y4jejSOJVBQ== dependencies: mimic-fn "^3.0.0" debug@2.6.9, debug@^2.2.0, debug@^2.3.3: version "2.6.9" - resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" + resolved "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz" integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== dependencies: ms "2.0.0" debug@3.1.0, debug@=3.1.0: version "3.1.0" - resolved "https://registry.yarnpkg.com/debug/-/debug-3.1.0.tgz#5bb5a0672628b64149566ba16819e61518c67261" + resolved "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz" integrity sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g== dependencies: ms "2.0.0" debug@3.2.6: version "3.2.6" - resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.6.tgz#e83d17de16d8a7efb7717edbe5fb10135eee629b" + resolved "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz" integrity sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ== dependencies: ms "^2.1.1" debug@4, debug@4.3.4, debug@^4.0.1, debug@^4.1.0, debug@^4.1.1, debug@^4.3.1, debug@^4.3.3, debug@^4.3.4: version "4.3.4" - resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865" + resolved "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz" integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ== dependencies: ms "2.1.2" debug@4.3.1: version "4.3.1" - resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.1.tgz#f0d229c505e0c6d8c49ac553d1b13dc183f6b2ee" + resolved "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz" integrity sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ== dependencies: ms "2.1.2" -debug@^3.0.1, debug@^3.1.0, debug@^3.2.6, debug@^3.2.7: +debug@^3.0.1, debug@^3.1.0, debug@^3.2.7: version "3.2.7" - resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.7.tgz#72580b7e9145fb39b6676f9c5e5fb100b934179a" + resolved "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz" integrity sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ== dependencies: ms "^2.1.1" debuglog@^1.0.1: version "1.0.1" - resolved "https://registry.yarnpkg.com/debuglog/-/debuglog-1.0.1.tgz#aa24ffb9ac3df9a2351837cfb2d279360cd78492" + resolved "https://registry.npmjs.org/debuglog/-/debuglog-1.0.1.tgz" integrity sha512-syBZ+rnAK3EgMsH2aYEOLUW7mZSY9Gb+0wUMCFsZvcmiz+HigA0LOcq/HoQqVuGG+EKykunc7QG2bzrponfaSw== decamelize-keys@^1.1.0: version "1.1.1" - resolved "https://registry.yarnpkg.com/decamelize-keys/-/decamelize-keys-1.1.1.tgz#04a2d523b2f18d80d0158a43b895d56dff8d19d8" + resolved "https://registry.npmjs.org/decamelize-keys/-/decamelize-keys-1.1.1.tgz" integrity sha512-WiPxgEirIV0/eIOMcnFBA3/IJZAZqKnwAwWyvvdi4lsr1WCN22nhdf/3db3DoZcUjTV2SqfzIwNyp6y2xs3nmg== dependencies: decamelize "^1.1.0" @@ -10478,17 +10758,17 @@ decamelize-keys@^1.1.0: decamelize@^1.1.0, decamelize@^1.1.1, decamelize@^1.2.0: version "1.2.0" - resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" + resolved "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz" integrity sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA== decamelize@^4.0.0: version "4.0.0" - resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-4.0.0.tgz#aa472d7bf660eb15f3494efd531cab7f2a709837" + resolved "https://registry.npmjs.org/decamelize/-/decamelize-4.0.0.tgz" integrity sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ== decimal.js@10.2.0: version "10.2.0" - resolved "https://registry.yarnpkg.com/decimal.js/-/decimal.js-10.2.0.tgz#39466113a9e036111d02f82489b5fd6b0b5ed231" + resolved "https://registry.npmjs.org/decimal.js/-/decimal.js-10.2.0.tgz" integrity sha512-vDPw+rDgn3bZe1+F/pyEwb1oMG2XTlRVgAa6B4KccTEpYgF8w6eQllVbQcfIJnZyvzFtFpxnpGtx8dd7DJp/Rw== decimal.js@^10.0.0: @@ -10498,33 +10778,33 @@ decimal.js@^10.0.0: decode-uri-component@^0.2.0: version "0.2.2" - resolved "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.2.tgz#e69dbe25d37941171dd540e024c444cd5188e1e9" + resolved "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.2.tgz" integrity sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ== decompress-response@^3.2.0, decompress-response@^3.3.0: version "3.3.0" - resolved "https://registry.yarnpkg.com/decompress-response/-/decompress-response-3.3.0.tgz#80a4dd323748384bfa248083622aedec982adff3" + resolved "https://registry.npmjs.org/decompress-response/-/decompress-response-3.3.0.tgz" integrity sha512-BzRPQuY1ip+qDonAOz42gRm/pg9F768C+npV/4JOsxRC2sq+Rlk+Q4ZCAsOhnIaMrgarILY+RMUIvMmmX1qAEA== dependencies: mimic-response "^1.0.0" decompress-response@^4.2.0: version "4.2.1" - resolved "https://registry.yarnpkg.com/decompress-response/-/decompress-response-4.2.1.tgz#414023cc7a302da25ce2ec82d0d5238ccafd8986" + resolved "https://registry.npmjs.org/decompress-response/-/decompress-response-4.2.1.tgz" integrity sha512-jOSne2qbyE+/r8G1VU+G/82LBs2Fs4LAsTiLSHOCOMZQl2OKZ6i8i4IyHemTe+/yIXOtTcRQMzPcgyhoFlqPkw== dependencies: mimic-response "^2.0.0" decompress-response@^6.0.0: version "6.0.0" - resolved "https://registry.yarnpkg.com/decompress-response/-/decompress-response-6.0.0.tgz#ca387612ddb7e104bd16d85aab00d5ecf09c66fc" + resolved "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz" integrity sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ== dependencies: mimic-response "^3.1.0" decompress-tar@^4.0.0, decompress-tar@^4.1.0, decompress-tar@^4.1.1: version "4.1.1" - resolved "https://registry.yarnpkg.com/decompress-tar/-/decompress-tar-4.1.1.tgz#718cbd3fcb16209716e70a26b84e7ba4592e5af1" + resolved "https://registry.npmjs.org/decompress-tar/-/decompress-tar-4.1.1.tgz" integrity sha512-JdJMaCrGpB5fESVyxwpCx4Jdj2AagLmv3y58Qy4GE6HMVjWz1FeVQk1Ct4Kye7PftcdOo/7U7UKzYBJgqnGeUQ== dependencies: file-type "^5.2.0" @@ -10533,7 +10813,7 @@ decompress-tar@^4.0.0, decompress-tar@^4.1.0, decompress-tar@^4.1.1: decompress-tarbz2@^4.0.0: version "4.1.1" - resolved "https://registry.yarnpkg.com/decompress-tarbz2/-/decompress-tarbz2-4.1.1.tgz#3082a5b880ea4043816349f378b56c516be1a39b" + resolved "https://registry.npmjs.org/decompress-tarbz2/-/decompress-tarbz2-4.1.1.tgz" integrity sha512-s88xLzf1r81ICXLAVQVzaN6ZmX4A6U4z2nMbOwobxkLoIIfjVMBg7TeguTUXkKeXni795B6y5rnvDw7rxhAq9A== dependencies: decompress-tar "^4.1.0" @@ -10544,7 +10824,7 @@ decompress-tarbz2@^4.0.0: decompress-targz@^4.0.0: version "4.1.1" - resolved "https://registry.yarnpkg.com/decompress-targz/-/decompress-targz-4.1.1.tgz#c09bc35c4d11f3de09f2d2da53e9de23e7ce1eee" + resolved "https://registry.npmjs.org/decompress-targz/-/decompress-targz-4.1.1.tgz" integrity sha512-4z81Znfr6chWnRDNfFNqLwPvm4db3WuZkqV+UgXQzSngG3CEKdBkw5jrv3axjjL96glyiiKjsxJG3X6WBZwX3w== dependencies: decompress-tar "^4.1.1" @@ -10553,7 +10833,7 @@ decompress-targz@^4.0.0: decompress-unzip@^4.0.1: version "4.0.1" - resolved "https://registry.yarnpkg.com/decompress-unzip/-/decompress-unzip-4.0.1.tgz#deaaccdfd14aeaf85578f733ae8210f9b4848f69" + resolved "https://registry.npmjs.org/decompress-unzip/-/decompress-unzip-4.0.1.tgz" integrity sha512-1fqeluvxgnn86MOh66u8FjbtJpAFv5wgCT9Iw8rcBqQcCo5tO8eiJw7NNTrvt9n4CRBVq7CstiS922oPgyGLrw== dependencies: file-type "^3.8.0" @@ -10563,7 +10843,7 @@ decompress-unzip@^4.0.1: decompress@^4.0.0: version "4.2.1" - resolved "https://registry.yarnpkg.com/decompress/-/decompress-4.2.1.tgz#007f55cc6a62c055afa37c07eb6a4ee1b773f118" + resolved "https://registry.npmjs.org/decompress/-/decompress-4.2.1.tgz" integrity sha512-e48kc2IjU+2Zw8cTb6VZcJQ3lgVbS4uuB1TfCHbiZIP/haNXm+SVyhu+87jts5/3ROpd82GSVCoNs/z8l4ZOaQ== dependencies: decompress-tar "^4.0.0" @@ -10577,19 +10857,19 @@ decompress@^4.0.0: dedent@^0.7.0: version "0.7.0" - resolved "https://registry.yarnpkg.com/dedent/-/dedent-0.7.0.tgz#2495ddbaf6eb874abb0e1be9df22d2e5a544326c" + resolved "https://registry.npmjs.org/dedent/-/dedent-0.7.0.tgz" integrity sha512-Q6fKUPqnAHAyhiUgFU7BUzLiv0kd8saH9al7tnu5Q/okj6dnupxyTgFIBjVzJATdfIAm9NAsvXNzjaKa+bxVyA== deep-eql@^4.1.2: version "4.1.3" - resolved "https://registry.yarnpkg.com/deep-eql/-/deep-eql-4.1.3.tgz#7c7775513092f7df98d8df9996dd085eb668cc6d" + resolved "https://registry.npmjs.org/deep-eql/-/deep-eql-4.1.3.tgz" integrity sha512-WaEtAOpRA1MQ0eohqZjpGD8zdI0Ovsm8mmFhaDN8dvDZzyoUMcYDnf5Y6iu7HTXxf8JDS23qWa4a+hKCDyOPzw== dependencies: type-detect "^4.0.0" deep-equal@~1.1.1: version "1.1.1" - resolved "https://registry.yarnpkg.com/deep-equal/-/deep-equal-1.1.1.tgz#b5c98c942ceffaf7cb051e24e1434a25a2e6076a" + resolved "https://registry.npmjs.org/deep-equal/-/deep-equal-1.1.1.tgz" integrity sha512-yd9c5AdiqVcR+JjcwUQb9DkhJc8ngNr0MahEBGvDiJw8puWab2yZlh+nkasOnZP+EGTAP6rRp2JzJhJZzvNF8g== dependencies: is-arguments "^1.0.4" @@ -10601,51 +10881,51 @@ deep-equal@~1.1.1: deep-extend@^0.6.0: version "0.6.0" - resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.6.0.tgz#c4fa7c95404a17a9c3e8ca7e1537312b736330ac" + resolved "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz" integrity sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA== deep-freeze@0.0.1: version "0.0.1" - resolved "https://registry.yarnpkg.com/deep-freeze/-/deep-freeze-0.0.1.tgz#3a0b0005de18672819dfd38cd31f91179c893e84" + resolved "https://registry.npmjs.org/deep-freeze/-/deep-freeze-0.0.1.tgz" integrity sha512-Z+z8HiAvsGwmjqlphnHW5oz6yWlOwu6EQfFTjmeTWlDeda3FS2yv3jhq35TX/ewmsnqB+RX2IdsIOyjJCQN5tg== deep-is@^0.1.3, deep-is@~0.1.3: version "0.1.4" - resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.4.tgz#a6f2dce612fadd2ef1f519b73551f17e85199831" + resolved "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz" integrity sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ== deepmerge@^4.2.2: version "4.3.1" - resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-4.3.1.tgz#44b5f2147cd3b00d4b56137685966f26fd25dd4a" + resolved "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz" integrity sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A== defaults@^1.0.3: version "1.0.4" - resolved "https://registry.yarnpkg.com/defaults/-/defaults-1.0.4.tgz#b0b02062c1e2aa62ff5d9528f0f98baa90978d7a" + resolved "https://registry.npmjs.org/defaults/-/defaults-1.0.4.tgz" integrity sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A== dependencies: clone "^1.0.2" defer-to-connect@^1.0.1: version "1.1.3" - resolved "https://registry.yarnpkg.com/defer-to-connect/-/defer-to-connect-1.1.3.tgz#331ae050c08dcf789f8c83a7b81f0ed94f4ac591" + resolved "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-1.1.3.tgz" integrity sha512-0ISdNousHvZT2EiFlZeZAHBUvSxmKswVCEf8hW7KWgG4a8MVEu/3Vb6uWYozkjylyCxe0JBIiRB1jV45S70WVQ== defer-to-connect@^2.0.0, defer-to-connect@^2.0.1: version "2.0.1" - resolved "https://registry.yarnpkg.com/defer-to-connect/-/defer-to-connect-2.0.1.tgz#8016bdb4143e4632b77a3449c6236277de520587" + resolved "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-2.0.1.tgz" integrity sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg== deferred-leveldown@~1.2.1: version "1.2.2" - resolved "https://registry.yarnpkg.com/deferred-leveldown/-/deferred-leveldown-1.2.2.tgz#3acd2e0b75d1669924bc0a4b642851131173e1eb" + resolved "https://registry.npmjs.org/deferred-leveldown/-/deferred-leveldown-1.2.2.tgz" integrity sha512-uukrWD2bguRtXilKt6cAWKyoXrTSMo5m7crUdLfWQmu8kIm88w3QZoUL+6nhpfKVmhHANER6Re3sKoNoZ3IKMA== dependencies: abstract-leveldown "~2.6.0" deferred-leveldown@~4.0.0: version "4.0.2" - resolved "https://registry.yarnpkg.com/deferred-leveldown/-/deferred-leveldown-4.0.2.tgz#0b0570087827bf480a23494b398f04c128c19a20" + resolved "https://registry.npmjs.org/deferred-leveldown/-/deferred-leveldown-4.0.2.tgz" integrity sha512-5fMC8ek8alH16QiV0lTCis610D1Zt1+LA4MS4d63JgS32lrCjTFDUFz2ao09/j2I4Bqb5jL4FZYwu7Jz0XO1ww== dependencies: abstract-leveldown "~5.0.0" @@ -10653,20 +10933,29 @@ deferred-leveldown@~4.0.0: deferred-leveldown@~5.3.0: version "5.3.0" - resolved "https://registry.yarnpkg.com/deferred-leveldown/-/deferred-leveldown-5.3.0.tgz#27a997ad95408b61161aa69bd489b86c71b78058" + resolved "https://registry.npmjs.org/deferred-leveldown/-/deferred-leveldown-5.3.0.tgz" integrity sha512-a59VOT+oDy7vtAbLRCZwWgxu2BaCfd5Hk7wxJd48ei7I+nsg8Orlb9CLG0PMZienk9BSUKgeAqkO2+Lw+1+Ukw== dependencies: abstract-leveldown "~6.2.1" inherits "^2.0.3" +define-data-property@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/define-data-property/-/define-data-property-1.0.1.tgz" + integrity sha512-22M+6zEspQHx10bfFQl2ET39IvfuQ7+rZIH7+ard8fCC4hPmkOSy+8JhKxBRLaWUziJ0O63NTYT97LR8zUfPTw== + dependencies: + get-intrinsic "^1.2.1" + gopd "^1.0.1" + has-property-descriptors "^1.0.0" + define-lazy-prop@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz#3f7ae421129bcaaac9bc74905c98a0009ec9ee7f" + resolved "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz" integrity sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og== define-properties@^1.1.2, define-properties@^1.1.3, define-properties@^1.1.4, define-properties@^1.2.0: version "1.2.0" - resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.2.0.tgz#52988570670c9eacedd8064f4a990f2405849bd5" + resolved "https://registry.npmjs.org/define-properties/-/define-properties-1.2.0.tgz" integrity sha512-xvqAVKGfT1+UAvPwKTVw/njhdQ8ZhXK4lI0bCIuCMrp2up9nPnaDftrLtmpTazqd1o+UY4zgzU+avtMbDP+ldA== dependencies: has-property-descriptors "^1.0.0" @@ -10674,21 +10963,21 @@ define-properties@^1.1.2, define-properties@^1.1.3, define-properties@^1.1.4, de define-property@^0.2.5: version "0.2.5" - resolved "https://registry.yarnpkg.com/define-property/-/define-property-0.2.5.tgz#c35b1ef918ec3c990f9a5bc57be04aacec5c8116" + resolved "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz" integrity sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA== dependencies: is-descriptor "^0.1.0" define-property@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/define-property/-/define-property-1.0.0.tgz#769ebaaf3f4a63aad3af9e8d304c9bbe79bfb0e6" + resolved "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz" integrity sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA== dependencies: is-descriptor "^1.0.0" define-property@^2.0.2: version "2.0.2" - resolved "https://registry.yarnpkg.com/define-property/-/define-property-2.0.2.tgz#d459689e8d654ba77e02a817f8710d702cb16e9d" + resolved "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz" integrity sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ== dependencies: is-descriptor "^1.0.2" @@ -10696,22 +10985,22 @@ define-property@^2.0.2: defined@~1.0.1: version "1.0.1" - resolved "https://registry.yarnpkg.com/defined/-/defined-1.0.1.tgz#c0b9db27bfaffd95d6f61399419b893df0f91ebf" + resolved "https://registry.npmjs.org/defined/-/defined-1.0.1.tgz" integrity sha512-hsBd2qSVCRE+5PmNdHt1uzyrFu5d3RwmFDKzyNZMFq/EwDNJF7Ee5+D5oEKF0hU6LhtoUF1macFvOe4AskQC1Q== degenerator@^3.0.2: - version "3.0.3" - resolved "https://registry.yarnpkg.com/degenerator/-/degenerator-3.0.3.tgz#a081ac30052ca84e1d1c6e86c972ae8dabbc4079" - integrity sha512-FTq/qYMeBJACu1gHcXJvzsRBTK6aw5zWCYbEnIOyamOt5UJufWJRQ5XfDb6OuayfJWvmWAHgcZyt43vm/hbj7g== + version "3.0.4" + resolved "https://registry.npmjs.org/degenerator/-/degenerator-3.0.4.tgz" + integrity sha512-Z66uPeBfHZAHVmue3HPfyKu2Q0rC2cRxbTOsvmU/po5fvvcx27W4mIu9n0PUlQih4oUYvcG1BsbtVv8x7KDOSw== dependencies: ast-types "^0.13.2" escodegen "^1.8.1" esprima "^4.0.0" - vm2 "^3.9.11" + vm2 "^3.9.17" degenerator@^5.0.0: version "5.0.1" - resolved "https://registry.yarnpkg.com/degenerator/-/degenerator-5.0.1.tgz#9403bf297c6dad9a1ece409b37db27954f91f2f5" + resolved "https://registry.npmjs.org/degenerator/-/degenerator-5.0.1.tgz" integrity sha512-TllpMR/t0M5sqCXfj85i4XaAzxmS5tVA16dqvdkMwGmzI+dXLXnw3J+3Vdv7VKw+ThlTMboK6i9rnZ6Nntj5CQ== dependencies: ast-types "^0.13.4" @@ -10720,47 +11009,47 @@ degenerator@^5.0.0: delay@^5.0.0: version "5.0.0" - resolved "https://registry.yarnpkg.com/delay/-/delay-5.0.0.tgz#137045ef1b96e5071060dd5be60bf9334436bd1d" + resolved "https://registry.npmjs.org/delay/-/delay-5.0.0.tgz" integrity sha512-ReEBKkIfe4ya47wlPYf/gu5ib6yUG0/Aez0JQZQz94kiWtRQvZIQbTiehsnwHvLSWJnQdhVeqYue7Id1dKr0qw== delayed-stream@~1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" + resolved "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz" integrity sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ== delegates@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/delegates/-/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a" + resolved "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz" integrity sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ== delimit-stream@0.1.0: version "0.1.0" - resolved "https://registry.yarnpkg.com/delimit-stream/-/delimit-stream-0.1.0.tgz#9b8319477c0e5f8aeb3ce357ae305fc25ea1cd2b" + resolved "https://registry.npmjs.org/delimit-stream/-/delimit-stream-0.1.0.tgz" integrity sha512-a02fiQ7poS5CnjiJBAsjGLPp5EwVoGHNeu9sziBd9huppRfsAFIpv5zNLv0V1gbop53ilngAf5Kf331AwcoRBQ== denque@^2.0.1: version "2.1.0" - resolved "https://registry.yarnpkg.com/denque/-/denque-2.1.0.tgz#e93e1a6569fb5e66f16a3c2a2964617d349d6ab1" + resolved "https://registry.npmjs.org/denque/-/denque-2.1.0.tgz" integrity sha512-HVQE3AAb/pxF8fQAoiqpvg9i3evqug3hoiwakOyZAwJm+6vZehbkYXZ0l4JxS+I3QxM97v5aaRNhj8v5oBhekw== depd@2.0.0, depd@^2.0.0, depd@~2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/depd/-/depd-2.0.0.tgz#b696163cc757560d09cf22cc8fad1571b79e76df" + resolved "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz" integrity sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw== depd@~1.1.2: version "1.1.2" - resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.2.tgz#9bcd52e14c097763e749b274c4346ed2e560b5a9" + resolved "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz" integrity sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ== -deprecation@^2.0.0, deprecation@^2.3.1: +deprecation@^2.0.0: version "2.3.1" - resolved "https://registry.yarnpkg.com/deprecation/-/deprecation-2.3.1.tgz#6368cbdb40abf3373b525ac87e4a260c3a700919" + resolved "https://registry.npmjs.org/deprecation/-/deprecation-2.3.1.tgz" integrity sha512-xmHIy4F3scKVwMsQ4WnVaS8bHOx0DmVwRywosKhaILI0ywMDWPtBSku2HNxRvF7jtwDRsoEwYQSfbxj8b7RlJQ== des.js@^1.0.0: version "1.0.1" - resolved "https://registry.yarnpkg.com/des.js/-/des.js-1.0.1.tgz#5382142e1bdc53f85d86d53e5f4aa7deb91e0843" + resolved "https://registry.npmjs.org/des.js/-/des.js-1.0.1.tgz" integrity sha512-Q0I4pfFrv2VPd34/vfLrFOoRmlYj3OV50i7fskps1jZWK1kApMWWT9G6RRUeYedLcBDIhnSDaUvJMb3AhUlaEA== dependencies: inherits "^2.0.1" @@ -10768,19 +11057,19 @@ des.js@^1.0.0: destroy@1.2.0, destroy@^1.0.4: version "1.2.0" - resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.2.0.tgz#4803735509ad8be552934c67df614f94e66fa015" + resolved "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz" integrity sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg== detect-file@^0.1.0: version "0.1.0" - resolved "https://registry.yarnpkg.com/detect-file/-/detect-file-0.1.0.tgz#4935dedfd9488648e006b0129566e9386711ea63" + resolved "https://registry.npmjs.org/detect-file/-/detect-file-0.1.0.tgz" integrity sha512-akiVcMZym+vO3IxctGG9dnuJT4AYQTAhjsGbjeGqqMUr9Ffy7XEAUmfKLSHugr/tGLaAZ4jWROErPPrsfG8+bQ== dependencies: fs-exists-sync "^0.1.0" detect-indent@^5.0.0: version "5.0.0" - resolved "https://registry.yarnpkg.com/detect-indent/-/detect-indent-5.0.0.tgz#3871cc0a6a002e8c3e5b3cf7f336264675f06b9d" + resolved "https://registry.npmjs.org/detect-indent/-/detect-indent-5.0.0.tgz" integrity sha512-rlpvsxUtM0PQvy9iZe640/IWwWYyBsTApREbA1pHOpmOUIl9MkP/U4z7vTtg4Oaojvqhxt7sdufnT0EzGaR31g== detect-indent@^6.0.0: @@ -10790,34 +11079,34 @@ detect-indent@^6.0.0: detect-installed@^2.0.4: version "2.0.4" - resolved "https://registry.yarnpkg.com/detect-installed/-/detect-installed-2.0.4.tgz#a0850465e7c3ebcff979d6b6535ad344b80dd7c5" + resolved "https://registry.npmjs.org/detect-installed/-/detect-installed-2.0.4.tgz" integrity sha512-IpGo06Ff/rMGTKjFvVPbY9aE4mRT2XP3eYHC/ZS25LKDr2h8Gbv74Ez2q/qd7IYDqD9ZjI/VGedHNXsbKZ/Eig== dependencies: get-installed-path "^2.0.3" -detect-libc@^1.0.2, detect-libc@^1.0.3: +detect-libc@^1.0.3: version "1.0.3" - resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-1.0.3.tgz#fa137c4bd698edf55cd5cd02ac559f91a4c4ba9b" + resolved "https://registry.npmjs.org/detect-libc/-/detect-libc-1.0.3.tgz" integrity sha512-pGjwhsmsp4kL2RTz08wcOlGN83otlqHeD/Z5T8GXZB+/YcpQ/dgo+lbU8ZsGxV0HIvqqxo9l7mqYwyYMD9bKDg== detect-libc@^2.0.0: version "2.0.1" - resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-2.0.1.tgz#e1897aa88fa6ad197862937fbc0441ef352ee0cd" + resolved "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.1.tgz" integrity sha512-463v3ZeIrcWtdgIg6vI6XUncguvr2TnGl4SzDXinkt9mSLpBJKXT3mW6xT3VQdDN11+WVs29pgvivTc4Lp8v+w== detect-newline@^3.0.0: version "3.1.0" - resolved "https://registry.yarnpkg.com/detect-newline/-/detect-newline-3.1.0.tgz#576f5dfc63ae1a192ff192d8ad3af6308991b651" + resolved "https://registry.npmjs.org/detect-newline/-/detect-newline-3.1.0.tgz" integrity sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA== detect-node@2.0.3: version "2.0.3" - resolved "https://registry.yarnpkg.com/detect-node/-/detect-node-2.0.3.tgz#a2033c09cc8e158d37748fbde7507832bd6ce127" + resolved "https://registry.npmjs.org/detect-node/-/detect-node-2.0.3.tgz" integrity sha512-64uDTOK+fKEa6XoSbkkDoeAX8Ep1XhwxwZtL1aw1En5p5UOK/ekJoFqd5BB1o+uOvF1iHVv6qDUxdOQ/VgWEQg== dezalgo@^1.0.0, dezalgo@^1.0.4: version "1.0.4" - resolved "https://registry.yarnpkg.com/dezalgo/-/dezalgo-1.0.4.tgz#751235260469084c132157dfa857f386d4c33d81" + resolved "https://registry.npmjs.org/dezalgo/-/dezalgo-1.0.4.tgz" integrity sha512-rXSP0bf+5n0Qonsb+SVVfNfIsimO4HEtmnIpPHY8Q1UCzKlQrDMfdobr8nJOOsRgWCyMRqeSBQzmWUMq7zvVig== dependencies: asap "^2.0.0" @@ -10825,34 +11114,39 @@ dezalgo@^1.0.0, dezalgo@^1.0.4: dicer@^0.3.0: version "0.3.1" - resolved "https://registry.yarnpkg.com/dicer/-/dicer-0.3.1.tgz#abf28921e3475bc5e801e74e0159fd94f927ba97" + resolved "https://registry.npmjs.org/dicer/-/dicer-0.3.1.tgz" integrity sha512-ObioMtXnmjYs3aRtpIJt9rgQSPCIhKVkFPip+E9GUDyWl8N435znUxK/JfNwGZJ2wnn5JKQ7Ly3vOK5Q5dylGA== dependencies: streamsearch "^1.1.0" diff-sequences@^29.4.3: version "29.4.3" - resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-29.4.3.tgz#9314bc1fabe09267ffeca9cbafc457d8499a13f2" + resolved "https://registry.npmjs.org/diff-sequences/-/diff-sequences-29.4.3.tgz" integrity sha512-ofrBgwpPhCD85kMKtE9RYFFq6OC1A89oW2vvgWZNCwxrUpRUILopY7lsYyMDSjc8g6U6aiO0Qubg6r4Wgt5ZnA== +diff-sequences@^29.6.3: + version "29.6.3" + resolved "https://registry.npmjs.org/diff-sequences/-/diff-sequences-29.6.3.tgz" + integrity sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q== + diff@3.5.0: version "3.5.0" - resolved "https://registry.yarnpkg.com/diff/-/diff-3.5.0.tgz#800c0dd1e0a8bfbc95835c202ad220fe317e5a12" + resolved "https://registry.npmjs.org/diff/-/diff-3.5.0.tgz" integrity sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA== diff@4.0.2, diff@^4.0.1: version "4.0.2" - resolved "https://registry.yarnpkg.com/diff/-/diff-4.0.2.tgz#60f3aecb89d5fae520c11aa19efc2bb982aade7d" + resolved "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz" integrity sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A== diff@5.0.0: version "5.0.0" - resolved "https://registry.yarnpkg.com/diff/-/diff-5.0.0.tgz#7ed6ad76d859d030787ec35855f5b1daf31d852b" + resolved "https://registry.npmjs.org/diff/-/diff-5.0.0.tgz" integrity sha512-/VTCrvm5Z0JGty/BWHljh+BAiw3IK+2j87NGMu8Nwc/f48WoDAC395uomO9ZD117ZOBaHmkX1oyLvkVM/aIT3w== diffie-hellman@^5.0.0: version "5.0.3" - resolved "https://registry.yarnpkg.com/diffie-hellman/-/diffie-hellman-5.0.3.tgz#40e8ee98f55a2149607146921c63e1ae5f3d2875" + resolved "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz" integrity sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg== dependencies: bn.js "^4.1.0" @@ -10861,12 +11155,12 @@ diffie-hellman@^5.0.0: dijkstrajs@^1.0.1: version "1.0.3" - resolved "https://registry.yarnpkg.com/dijkstrajs/-/dijkstrajs-1.0.3.tgz#4c8dbdea1f0f6478bff94d9c49c784d623e4fc23" + resolved "https://registry.npmjs.org/dijkstrajs/-/dijkstrajs-1.0.3.tgz" integrity sha512-qiSlmBq9+BCdCA/L46dw8Uy93mloxsPSbwnm5yrKn2vMPiy8KyAskTF6zuV/j5BMsmOGZDPs7KjU+mjb670kfA== dir-glob@2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-2.0.0.tgz#0b205d2b6aef98238ca286598a8204d29d0a0034" + resolved "https://registry.npmjs.org/dir-glob/-/dir-glob-2.0.0.tgz" integrity sha512-37qirFDz8cA5fimp9feo43fSuRo2gHwaIn6dXL8Ber1dGwUosDrGZeCCXq57WnIqE4aQ+u3eQZzsk1yOzhdwag== dependencies: arrify "^1.0.1" @@ -10874,19 +11168,19 @@ dir-glob@2.0.0: dir-glob@^3.0.1: version "3.0.1" - resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-3.0.1.tgz#56dbf73d992a4a93ba1584f4534063fd2e41717f" + resolved "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz" integrity sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA== dependencies: path-type "^4.0.0" dir-to-object@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/dir-to-object/-/dir-to-object-2.0.0.tgz#29723e9bd1c3e58e4f307bd04ff634c0370c8f8a" + resolved "https://registry.npmjs.org/dir-to-object/-/dir-to-object-2.0.0.tgz" integrity sha512-sXs0JKIhymON7T1UZuO2Ud6VTNAx/VTBXIl4+3mjb2RgfOpt+hectX0x04YqPOPdkeOAKoJuKqwqnXXURNPNEA== dirty-chai@^2.0.1: version "2.0.1" - resolved "https://registry.yarnpkg.com/dirty-chai/-/dirty-chai-2.0.1.tgz#6b2162ef17f7943589da840abc96e75bda01aff3" + resolved "https://registry.npmjs.org/dirty-chai/-/dirty-chai-2.0.1.tgz" integrity sha512-ys79pWKvDMowIDEPC6Fig8d5THiC0DJ2gmTeGzVAoEH18J8OzLud0Jh7I9IWg3NSk8x2UocznUuFmfHCXYZx9w== doctrine@0.7.2: @@ -10899,14 +11193,14 @@ doctrine@0.7.2: doctrine@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-3.0.0.tgz#addebead72a6574db783639dc87a121773973961" + resolved "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz" integrity sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w== dependencies: esutils "^2.0.2" dom-serializer@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-2.0.0.tgz#e41b802e1eedf9f6cae183ce5e622d789d7d8e53" + resolved "https://registry.npmjs.org/dom-serializer/-/dom-serializer-2.0.0.tgz" integrity sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg== dependencies: domelementtype "^2.3.0" @@ -10915,24 +11209,24 @@ dom-serializer@^2.0.0: dom-walk@^0.1.0: version "0.1.2" - resolved "https://registry.yarnpkg.com/dom-walk/-/dom-walk-0.1.2.tgz#0c548bef048f4d1f2a97249002236060daa3fd84" + resolved "https://registry.npmjs.org/dom-walk/-/dom-walk-0.1.2.tgz" integrity sha512-6QvTW9mrGeIegrFXdtQi9pk7O/nSK6lSdXW2eqUspN5LWD7UTji2Fqw5V2YLjBpHEoU9Xl/eUWNpDeZvoyOv2w== domelementtype@^2.3.0: version "2.3.0" - resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-2.3.0.tgz#5c45e8e869952626331d7aab326d01daf65d589d" + resolved "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz" integrity sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw== domhandler@^5.0.1, domhandler@^5.0.2, domhandler@^5.0.3: version "5.0.3" - resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-5.0.3.tgz#cc385f7f751f1d1fc650c21374804254538c7d31" + resolved "https://registry.npmjs.org/domhandler/-/domhandler-5.0.3.tgz" integrity sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w== dependencies: domelementtype "^2.3.0" domutils@^3.0.1: version "3.0.1" - resolved "https://registry.yarnpkg.com/domutils/-/domutils-3.0.1.tgz#696b3875238338cb186b6c0612bd4901c89a4f1c" + resolved "https://registry.npmjs.org/domutils/-/domutils-3.0.1.tgz" integrity sha512-z08c1l761iKhDFtfXO04C7kTdPBLi41zwOZl00WS8b5eiaebNpY00HKbztwBq+e3vyqWNwWF3mP9YLUeqIrF+Q== dependencies: dom-serializer "^2.0.0" @@ -10941,77 +11235,77 @@ domutils@^3.0.1: dot-case@^2.1.0: version "2.1.1" - resolved "https://registry.yarnpkg.com/dot-case/-/dot-case-2.1.1.tgz#34dcf37f50a8e93c2b3bca8bb7fb9155c7da3bee" + resolved "https://registry.npmjs.org/dot-case/-/dot-case-2.1.1.tgz" integrity sha512-HnM6ZlFqcajLsyudHq7LeeLDr2rFAVYtDv/hV5qchQEidSck8j9OPUsXY9KwJv/lHMtYlX4DjRQqwFYa+0r8Ug== dependencies: no-case "^2.2.0" dot-prop@^4.1.0: version "4.2.1" - resolved "https://registry.yarnpkg.com/dot-prop/-/dot-prop-4.2.1.tgz#45884194a71fc2cda71cbb4bceb3a4dd2f433ba4" + resolved "https://registry.npmjs.org/dot-prop/-/dot-prop-4.2.1.tgz" integrity sha512-l0p4+mIuJIua0mhxGoh4a+iNL9bmeK5DvnSVQa6T0OhrVmaEa1XScX5Etc673FePCJOArq/4Pa2cLGODUWTPOQ== dependencies: is-obj "^1.0.0" dot-prop@^5.1.0, dot-prop@^5.2.0: version "5.3.0" - resolved "https://registry.yarnpkg.com/dot-prop/-/dot-prop-5.3.0.tgz#90ccce708cd9cd82cc4dc8c3ddd9abdd55b20e88" + resolved "https://registry.npmjs.org/dot-prop/-/dot-prop-5.3.0.tgz" integrity sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q== dependencies: is-obj "^2.0.0" dot-prop@^6.0.1: version "6.0.1" - resolved "https://registry.yarnpkg.com/dot-prop/-/dot-prop-6.0.1.tgz#fc26b3cf142b9e59b74dbd39ed66ce620c681083" + resolved "https://registry.npmjs.org/dot-prop/-/dot-prop-6.0.1.tgz" integrity sha512-tE7ztYzXHIeyvc7N+hR3oi7FIbf/NIjVP9hmAt3yMXzrQ072/fpjGLx2GxNxGxUl5V73MEqYzioOMoVhGMJ5cA== dependencies: is-obj "^2.0.0" dotdir-regex@^0.1.0: version "0.1.0" - resolved "https://registry.yarnpkg.com/dotdir-regex/-/dotdir-regex-0.1.0.tgz#d45df4c8863be6f5593d716914381767e938c0b6" + resolved "https://registry.npmjs.org/dotdir-regex/-/dotdir-regex-0.1.0.tgz" integrity sha512-00odj/E9hnwoi/W0ZcudUwlR/OSjhMgcBgevA4G8tgSJdGy0cVIKrmKLkh97Kw6aXvE47islrIisBld19+X1AQ== dotenv@*, dotenv@^16.0.3: - version "16.0.3" - resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-16.0.3.tgz#115aec42bac5053db3c456db30cc243a5a836a07" - integrity sha512-7GO6HghkA5fYG9TYnNxi14/7K9f5occMlp3zXAuSxn7CKCxt9xbNWG7yF8hTCSUchlfWSe3uLmlPfigevRItzQ== + version "16.3.1" + resolved "https://registry.npmjs.org/dotenv/-/dotenv-16.3.1.tgz" + integrity sha512-IPzF4w4/Rd94bA9imS68tZBaYyBWSCE47V1RGuMrB94iyTOIEwRmVL2x/4An+6mETpLrKJ5hQkB8W4kFAadeIQ== dotenv@8.2.0: version "8.2.0" - resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-8.2.0.tgz#97e619259ada750eea3e4ea3e26bceea5424b16a" + resolved "https://registry.npmjs.org/dotenv/-/dotenv-8.2.0.tgz" integrity sha512-8sJ78ElpbDJBHNeBzUbUVLsqKdccaa/BXF1uPTw3GrvQTBgrQrtObr2mUrE38vzYd8cEv+m/JBfDLioYcfXoaw== dotenv@^6.1.0: version "6.2.0" - resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-6.2.0.tgz#941c0410535d942c8becf28d3f357dbd9d476064" + resolved "https://registry.npmjs.org/dotenv/-/dotenv-6.2.0.tgz" integrity sha512-HygQCKUBSFl8wKQZBSemMywRWcEDNidvNbjGVyZu3nbZ8qq9ubiPoGLMdRDpfSrpkkm9BXYFkpKxxFX38o/76w== dotenv@^8.2.0: version "8.6.0" - resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-8.6.0.tgz#061af664d19f7f4d8fc6e4ff9b584ce237adcb8b" + resolved "https://registry.npmjs.org/dotenv/-/dotenv-8.6.0.tgz" integrity sha512-IrPdXQsk2BbzvCBGBOTmmSH5SodmqZNt4ERAZDmW4CT+tL8VtvinqywuANaFu4bOMWki16nqf0e4oC0QIaDr/g== dotenv@~10.0.0: version "10.0.0" - resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-10.0.0.tgz#3d4227b8fb95f81096cdd2b66653fb2c7085ba81" + resolved "https://registry.npmjs.org/dotenv/-/dotenv-10.0.0.tgz" integrity sha512-rlBi9d8jpv9Sf1klPjNfFAuWDjKLwTIJJ/VxtoTwIR6hnZxcEOQCZg2oIL3MWBYw5GpUDKOEnND7LXTbIpQ03Q== dotignore@~0.1.2: version "0.1.2" - resolved "https://registry.yarnpkg.com/dotignore/-/dotignore-0.1.2.tgz#f942f2200d28c3a76fbdd6f0ee9f3257c8a2e905" + resolved "https://registry.npmjs.org/dotignore/-/dotignore-0.1.2.tgz" integrity sha512-UGGGWfSauusaVJC+8fgV+NVvBXkCTmVv7sk6nojDZZvuOUNGUy0Zk4UpHQD6EDjS0jpBwcACvH4eofvyzBcRDw== dependencies: minimatch "^3.0.4" double-ended-queue@2.1.0-0: version "2.1.0-0" - resolved "https://registry.yarnpkg.com/double-ended-queue/-/double-ended-queue-2.1.0-0.tgz#103d3527fd31528f40188130c841efdd78264e5c" + resolved "https://registry.npmjs.org/double-ended-queue/-/double-ended-queue-2.1.0-0.tgz" integrity sha512-+BNfZ+deCo8hMNpDqDnvT+c0XpJ5cUa6mqYq89bho2Ifze4URTqRkcwR399hWoTrTkbZ/XJYDgP6rc7pRgffEQ== drbg.js@^1.0.1: version "1.0.1" - resolved "https://registry.yarnpkg.com/drbg.js/-/drbg.js-1.0.1.tgz#3e36b6c42b37043823cdbc332d58f31e2445480b" + resolved "https://registry.npmjs.org/drbg.js/-/drbg.js-1.0.1.tgz" integrity sha512-F4wZ06PvqxYLFEZKkFxTDcns9oFNk34hvmJSEwdzsxVQ8YI5YaxtACgQatkYgv2VI2CFkUd2Y+xosPQnHv809g== dependencies: browserify-aes "^1.0.6" @@ -11020,31 +11314,31 @@ drbg.js@^1.0.1: dtrace-provider@~0.8: version "0.8.8" - resolved "https://registry.yarnpkg.com/dtrace-provider/-/dtrace-provider-0.8.8.tgz#2996d5490c37e1347be263b423ed7b297fb0d97e" + resolved "https://registry.npmjs.org/dtrace-provider/-/dtrace-provider-0.8.8.tgz" integrity sha512-b7Z7cNtHPhH9EJhNNbbeqTcXB8LGFFZhq1PGgEvpeHlzd36bhbdTWoE/Ba/YguqpBSlAPKnARWhVlhunCMwfxg== dependencies: nan "^2.14.0" duplexer2@~0.1.4: version "0.1.4" - resolved "https://registry.yarnpkg.com/duplexer2/-/duplexer2-0.1.4.tgz#8b12dab878c0d69e3e7891051662a32fc6bddcc1" + resolved "https://registry.npmjs.org/duplexer2/-/duplexer2-0.1.4.tgz" integrity sha512-asLFVfWWtJ90ZyOUHMqk7/S2w2guQKxUI2itj3d92ADHhxUSbCMGi1f1cBcJ7xM1To+pE/Khbwo1yuNbMEPKeA== dependencies: readable-stream "^2.0.2" duplexer3@^0.1.4: version "0.1.5" - resolved "https://registry.yarnpkg.com/duplexer3/-/duplexer3-0.1.5.tgz#0b5e4d7bad5de8901ea4440624c8e1d20099217e" + resolved "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.5.tgz" integrity sha512-1A8za6ws41LQgv9HrE/66jyC5yuSjQ3L/KOpFtoBilsAK2iA2wuS5rTt1OCzIvtS2V7nVmedsUU+DGRcjBmOYA== duplexer@^0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/duplexer/-/duplexer-0.1.1.tgz#ace6ff808c1ce66b57d1ebf97977acb02334cfc1" - integrity sha1-rOb/gIwc5mtX0ev5eXessCM0z8E= + version "0.1.2" + resolved "https://registry.npmjs.org/duplexer/-/duplexer-0.1.2.tgz" + integrity sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg== duplexify@^3.5.0, duplexify@^3.6.0: version "3.7.1" - resolved "https://registry.yarnpkg.com/duplexify/-/duplexify-3.7.1.tgz#2a4df5317f6ccfd91f86d6fd25d8d8a103b88309" + resolved "https://registry.npmjs.org/duplexify/-/duplexify-3.7.1.tgz" integrity sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g== dependencies: end-of-stream "^1.0.0" @@ -11054,7 +11348,7 @@ duplexify@^3.5.0, duplexify@^3.6.0: duplexify@^4.0.0, duplexify@^4.1.1: version "4.1.2" - resolved "https://registry.yarnpkg.com/duplexify/-/duplexify-4.1.2.tgz#18b4f8d28289132fa0b9573c898d9f903f81c7b0" + resolved "https://registry.npmjs.org/duplexify/-/duplexify-4.1.2.tgz" integrity sha512-fz3OjcNCHmRP12MJoZMPglx8m4rrFP8rovnk4vT8Fs+aonZoCwGg10dSsQsfP/E62eZcPTMSMP6686fu9Qlqtw== dependencies: end-of-stream "^1.4.1" @@ -11064,12 +11358,12 @@ duplexify@^4.0.0, duplexify@^4.1.1: eastasianwidth@^0.2.0: version "0.2.0" - resolved "https://registry.yarnpkg.com/eastasianwidth/-/eastasianwidth-0.2.0.tgz#696ce2ec0aa0e6ea93a397ffcf24aa7840c827cb" + resolved "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz" integrity sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA== ecc-jsbn@~0.1.1: version "0.1.2" - resolved "https://registry.yarnpkg.com/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz#3a83a904e54353287874c564b7549386849a98c9" + resolved "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz" integrity sha512-eh9O+hwRHNbG4BLTjEl3nw044CkGm5X6LoaCf7LPp7UU8Qrt47JYNi6nPX8xjW97TKGKm1ouctg0QSpZe9qrnw== dependencies: jsbn "~0.1.0" @@ -11077,14 +11371,14 @@ ecc-jsbn@~0.1.1: ecdsa-sig-formatter@1.0.11, ecdsa-sig-formatter@^1.0.11: version "1.0.11" - resolved "https://registry.yarnpkg.com/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz#ae0f0fa2d85045ef14a817daa3ce9acd0489e5bf" + resolved "https://registry.npmjs.org/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz" integrity sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ== dependencies: safe-buffer "^5.0.1" ecurve@^1.0.6: version "1.0.6" - resolved "https://registry.yarnpkg.com/ecurve/-/ecurve-1.0.6.tgz#dfdabbb7149f8d8b78816be5a7d5b83fcf6de797" + resolved "https://registry.npmjs.org/ecurve/-/ecurve-1.0.6.tgz" integrity sha512-/BzEjNfiSuB7jIWKcS/z8FK9jNjmEWvUV2YZ4RLSmcDtP7Lq0m6FvDuSnJpBlDpGRpfRQeTLGLBI8H+kEv0r+w== dependencies: bigi "^1.1.0" @@ -11092,24 +11386,24 @@ ecurve@^1.0.6: ee-first@1.1.1: version "1.1.1" - resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" + resolved "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz" integrity sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow== ejs@^3.1.7: version "3.1.9" - resolved "https://registry.yarnpkg.com/ejs/-/ejs-3.1.9.tgz#03c9e8777fe12686a9effcef22303ca3d8eeb361" + resolved "https://registry.npmjs.org/ejs/-/ejs-3.1.9.tgz" integrity sha512-rC+QVNMJWv+MtPgkt0y+0rVEIdbtxVADApW9JXrUVlzHetgcyczP/E7DJmWJ4fJCZF2cPcBk0laWO9ZHMG3DmQ== dependencies: jake "^10.8.5" electron-to-chromium@^1.4.284: version "1.4.369" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.369.tgz#a98d838cdd79be4471cd04e9b4dffe891d037874" + resolved "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.369.tgz" integrity sha512-LfxbHXdA/S+qyoTEA4EbhxGjrxx7WK2h6yb5K2v0UCOufUKX+VZaHbl3svlzZfv9sGseym/g3Ne4DpsgRULmqg== elliptic@6.3.3: version "6.3.3" - resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.3.3.tgz#5482d9646d54bcb89fd7d994fc9e2e9568876e3f" + resolved "https://registry.npmjs.org/elliptic/-/elliptic-6.3.3.tgz" integrity sha512-cIky9SO2H8W2eU1NOLySnhOYJnuEWCq9ZJeHvHd/lXzEL9vyraIMfilZSn57X3aVX+wkfYmqkch2LvmTzkjFpA== dependencies: bn.js "^4.4.0" @@ -11119,7 +11413,7 @@ elliptic@6.3.3: elliptic@6.5.4, elliptic@^6.4.0, elliptic@^6.5.2, elliptic@^6.5.3, elliptic@^6.5.4: version "6.5.4" - resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.5.4.tgz#da37cebd31e79a1367e941b592ed1fbebd58abbb" + resolved "https://registry.npmjs.org/elliptic/-/elliptic-6.5.4.tgz" integrity sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ== dependencies: bn.js "^4.11.9" @@ -11132,47 +11426,47 @@ elliptic@6.5.4, elliptic@^6.4.0, elliptic@^6.5.2, elliptic@^6.5.3, elliptic@^6.5 emittery@0.10.0: version "0.10.0" - resolved "https://registry.yarnpkg.com/emittery/-/emittery-0.10.0.tgz#bb373c660a9d421bb44706ec4967ed50c02a8026" + resolved "https://registry.npmjs.org/emittery/-/emittery-0.10.0.tgz" integrity sha512-AGvFfs+d0JKCJQ4o01ASQLGPmSCxgfU9RFXvzPvZdjKK8oscynksuJhWrSTSw7j7Ep/sZct5b5ZhYCi8S/t0HQ== emittery@^0.13.1: version "0.13.1" - resolved "https://registry.yarnpkg.com/emittery/-/emittery-0.13.1.tgz#c04b8c3457490e0847ae51fced3af52d338e3dad" + resolved "https://registry.npmjs.org/emittery/-/emittery-0.13.1.tgz" integrity sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ== emittery@^0.4.1: version "0.4.1" - resolved "https://registry.yarnpkg.com/emittery/-/emittery-0.4.1.tgz#abe9d3297389ba424ac87e53d1c701962ce7433d" + resolved "https://registry.npmjs.org/emittery/-/emittery-0.4.1.tgz" integrity sha512-r4eRSeStEGf6M5SKdrQhhLK5bOwOBxQhIE3YSTnZE3GpKiLfnnhE+tPtrJE79+eDJgm39BM6LSoI8SCx4HbwlQ== emoji-regex@^7.0.1: version "7.0.3" - resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-7.0.3.tgz#933a04052860c85e83c122479c4748a8e4c72156" + 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.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" + resolved "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz" integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== emoji-regex@^9.2.2: version "9.2.2" - resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-9.2.2.tgz#840c8803b0d8047f4ff0cf963176b32d4ef3ed72" + resolved "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz" integrity sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg== enabled@2.0.x: version "2.0.0" - resolved "https://registry.yarnpkg.com/enabled/-/enabled-2.0.0.tgz#f9dd92ec2d6f4bbc0d5d1e64e21d61cd4665e7c2" + resolved "https://registry.npmjs.org/enabled/-/enabled-2.0.0.tgz" integrity sha512-AKrN98kuwOzMIdAizXGI86UFBoo26CL21UM763y1h/GMSJ4/OHU9k2YlsmBpyScFo/wbLzWQJBMCW4+IO3/+OQ== encodeurl@~1.0.2: version "1.0.2" - resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59" + resolved "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz" integrity sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w== encoding-down@^6.3.0: version "6.3.0" - resolved "https://registry.yarnpkg.com/encoding-down/-/encoding-down-6.3.0.tgz#b1c4eb0e1728c146ecaef8e32963c549e76d082b" + resolved "https://registry.npmjs.org/encoding-down/-/encoding-down-6.3.0.tgz" integrity sha512-QKrV0iKR6MZVJV08QY0wp1e7vF6QbhnbQhb07bwpEyuz4uZiZgPlEGdkCROuFkUwdxlFaiPIhjyarH1ee/3vhw== dependencies: abstract-leveldown "^6.2.1" @@ -11182,7 +11476,7 @@ encoding-down@^6.3.0: encoding-down@~5.0.0: version "5.0.4" - resolved "https://registry.yarnpkg.com/encoding-down/-/encoding-down-5.0.4.tgz#1e477da8e9e9d0f7c8293d320044f8b2cd8e9614" + resolved "https://registry.npmjs.org/encoding-down/-/encoding-down-5.0.4.tgz" integrity sha512-8CIZLDcSKxgzT+zX8ZVfgNbu8Md2wq/iqa1Y7zyVR18QBEAc0Nmzuvj/N5ykSKpfGzjM8qxbaFntLPwnVoUhZw== dependencies: abstract-leveldown "^5.0.0" @@ -11193,84 +11487,84 @@ encoding-down@~5.0.0: encoding@^0.1.11, encoding@^0.1.12, encoding@^0.1.13: version "0.1.13" - resolved "https://registry.yarnpkg.com/encoding/-/encoding-0.1.13.tgz#56574afdd791f54a8e9b2785c0582a2d26210fa9" + resolved "https://registry.npmjs.org/encoding/-/encoding-0.1.13.tgz" integrity sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A== dependencies: iconv-lite "^0.6.2" end-of-stream@^1.0.0, end-of-stream@^1.1.0, end-of-stream@^1.4.1: version "1.4.4" - resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.4.tgz#5ae64a5f45057baf3626ec14da0ca5e4b2431eb0" + resolved "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz" integrity sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q== dependencies: once "^1.4.0" end-stream@~0.1.0: version "0.1.0" - resolved "https://registry.yarnpkg.com/end-stream/-/end-stream-0.1.0.tgz#32003f3f438a2b0143168137f8fa6e9866c81ed5" + resolved "https://registry.npmjs.org/end-stream/-/end-stream-0.1.0.tgz" integrity sha512-Brl10T8kYnc75IepKizW6Y9liyW8ikz1B7n/xoHrJxoVSSjoqPn30sb7XVFfQERK4QfUMYRGs9dhWwtt2eu6uA== dependencies: write-stream "~0.4.3" ends-with@^0.2.0: version "0.2.0" - resolved "https://registry.yarnpkg.com/ends-with/-/ends-with-0.2.0.tgz#2f9da98d57a50cfda4571ce4339000500f4e6b8a" + resolved "https://registry.npmjs.org/ends-with/-/ends-with-0.2.0.tgz" integrity sha512-lRppY4dK3VkqBdR242sKcAJeYc8Gf/DhoX9AWvWI2RzccmLnqBQfwm2k4oSDv5MPDjUqawCauXhZkyWxkVhRsg== enquirer@~2.3.6: version "2.3.6" - resolved "https://registry.yarnpkg.com/enquirer/-/enquirer-2.3.6.tgz#2a7fe5dd634a1e4125a975ec994ff5456dc3734d" + resolved "https://registry.npmjs.org/enquirer/-/enquirer-2.3.6.tgz" integrity sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg== dependencies: ansi-colors "^4.1.1" ent@^2.2.0: version "2.2.0" - resolved "https://registry.yarnpkg.com/ent/-/ent-2.2.0.tgz#e964219325a21d05f44466a2f686ed6ce5f5dd1d" + resolved "https://registry.npmjs.org/ent/-/ent-2.2.0.tgz" integrity sha512-GHrMyVZQWvTIdDtpiEXdHZnFQKzeO09apj8Cbl4pKWy4i0Oprcq17usfDt5aO63swf0JOeMWjWQE/LzgSRuWpA== entities@^4.2.0, entities@^4.4.0: version "4.5.0" - resolved "https://registry.yarnpkg.com/entities/-/entities-4.5.0.tgz#5d268ea5e7113ec74c4d033b79ea5a35a488fb48" + resolved "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz" integrity sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw== entities@~2.1.0: version "2.1.0" - resolved "https://registry.yarnpkg.com/entities/-/entities-2.1.0.tgz#992d3129cf7df6870b96c57858c249a120f8b8b5" + resolved "https://registry.npmjs.org/entities/-/entities-2.1.0.tgz" integrity sha512-hCx1oky9PFrJ611mf0ifBLBRW8lUUVRlFolb5gWRfIELabBlbp9xZvrqZLZAs+NxFnbfQoeGd8wDkygjg7U85w== env-paths@^2.2.0, env-paths@^2.2.1: version "2.2.1" - resolved "https://registry.yarnpkg.com/env-paths/-/env-paths-2.2.1.tgz#420399d416ce1fbe9bc0a07c62fa68d67fd0f8f2" + resolved "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz" integrity sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A== envinfo@^7.7.4: - version "7.8.1" - resolved "https://registry.yarnpkg.com/envinfo/-/envinfo-7.8.1.tgz#06377e3e5f4d379fea7ac592d5ad8927e0c4d475" - integrity sha512-/o+BXHmB7ocbHEAs6F2EnG0ogybVVUdkRunTT2glZU9XAaGmhqskrvKwqXuDfNjEO0LZKWdejEEpnq8aM0tOaw== + version "7.10.0" + resolved "https://registry.npmjs.org/envinfo/-/envinfo-7.10.0.tgz" + integrity sha512-ZtUjZO6l5mwTHvc1L9+1q5p/R3wTopcfqMW8r5t8SJSKqeVI/LtajORwRFEKpEFuekjD0VBjwu1HMxL4UalIRw== err-code@^2.0.2: version "2.0.3" - resolved "https://registry.yarnpkg.com/err-code/-/err-code-2.0.3.tgz#23c2f3b756ffdfc608d30e27c9a941024807e7f9" + resolved "https://registry.npmjs.org/err-code/-/err-code-2.0.3.tgz" integrity sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA== errno@~0.1.1: version "0.1.8" - resolved "https://registry.yarnpkg.com/errno/-/errno-0.1.8.tgz#8bb3e9c7d463be4976ff888f76b4809ebc2e811f" + resolved "https://registry.npmjs.org/errno/-/errno-0.1.8.tgz" integrity sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A== dependencies: prr "~1.0.1" error-ex@^1.2.0, error-ex@^1.3.1: version "1.3.2" - resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf" + 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" error@7.0.2: version "7.0.2" - resolved "https://registry.yarnpkg.com/error/-/error-7.0.2.tgz#a5f75fff4d9926126ddac0ea5dc38e689153cb02" + resolved "https://registry.npmjs.org/error/-/error-7.0.2.tgz" integrity sha512-UtVv4l5MhijsYUxPJo4390gzfZvAnTHreNnDjnTZaKIiZ/SemXxAhBkYSKtWa5RtBXbLP8tMgn/n0RUa/H7jXw== dependencies: string-template "~0.2.1" @@ -11278,14 +11572,14 @@ error@7.0.2: error@^7.0.0: version "7.2.1" - resolved "https://registry.yarnpkg.com/error/-/error-7.2.1.tgz#eab21a4689b5f684fc83da84a0e390de82d94894" + resolved "https://registry.npmjs.org/error/-/error-7.2.1.tgz" integrity sha512-fo9HBvWnx3NGUKMvMwB/CBCMMrfEJgbDTVDEkPygA3Bdd3lM1OyCd+rbQ8BwnpF6GdVeOLDNmyL4N5Bg80ZvdA== dependencies: string-template "~0.2.1" es-abstract@^1.17.0-next.1, es-abstract@^1.19.0, es-abstract@^1.20.4, es-abstract@^1.21.2: version "1.21.2" - resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.21.2.tgz#a56b9695322c8a185dc25975aa3b8ec31d0e7eff" + resolved "https://registry.npmjs.org/es-abstract/-/es-abstract-1.21.2.tgz" integrity sha512-y/B5POM2iBnIxCiernH1G7rC9qQoM77lLIMQLuob0zhp8C56Po81+2Nj0WFKnd0pNReDTnkYryc+zhOzpEIROg== dependencies: array-buffer-byte-length "^1.0.0" @@ -11323,14 +11617,59 @@ es-abstract@^1.17.0-next.1, es-abstract@^1.19.0, es-abstract@^1.20.4, es-abstrac unbox-primitive "^1.0.2" which-typed-array "^1.1.9" +es-abstract@^1.22.1: + version "1.22.1" + resolved "https://registry.npmjs.org/es-abstract/-/es-abstract-1.22.1.tgz" + integrity sha512-ioRRcXMO6OFyRpyzV3kE1IIBd4WG5/kltnzdxSCqoP8CMGs/Li+M1uF5o7lOkZVFjDs+NLesthnF66Pg/0q0Lw== + dependencies: + array-buffer-byte-length "^1.0.0" + arraybuffer.prototype.slice "^1.0.1" + 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.5" + 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.10" + 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.0" + safe-array-concat "^1.0.0" + safe-regex-test "^1.0.0" + string.prototype.trim "^1.2.7" + string.prototype.trimend "^1.0.6" + string.prototype.trimstart "^1.0.6" + 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.10" + es-array-method-boxes-properly@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/es-array-method-boxes-properly/-/es-array-method-boxes-properly-1.0.0.tgz#873f3e84418de4ee19c5be752990b2e44718d09e" + resolved "https://registry.npmjs.org/es-array-method-boxes-properly/-/es-array-method-boxes-properly-1.0.0.tgz" integrity sha512-wd6JXUmyHmt8T5a2xreUwKcGPq6f1f+WwIJkijUqiGcJz1qqnZgP6XIK+QyIWU5lT7imeNxUll48bziG+TSYcA== es-get-iterator@^1.0.2: version "1.1.3" - resolved "https://registry.yarnpkg.com/es-get-iterator/-/es-get-iterator-1.1.3.tgz#3ef87523c5d464d41084b2c3c9c214f1199763d6" + resolved "https://registry.npmjs.org/es-get-iterator/-/es-get-iterator-1.1.3.tgz" integrity sha512-sPZmqHBe6JIiTfN5q2pEi//TwxmAFHwj/XEuYjTuse78i8KxaqMTTzxPoFKuzRpDpTJ+0NAbpfenkmH2rePtuw== dependencies: call-bind "^1.0.2" @@ -11345,7 +11684,7 @@ es-get-iterator@^1.0.2: 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" + resolved "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.1.tgz" integrity sha512-g3OMbtlwY3QewlqAiMLI47KywjWZoEytKr8pf6iTC8uJq5bIAH52Z9pnQ8pVL6whrCto53JZDuUIsifGeLorTg== dependencies: get-intrinsic "^1.1.3" @@ -11354,7 +11693,7 @@ es-set-tostringtag@^2.0.1: es-to-primitive@^1.2.1: version "1.2.1" - resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.2.1.tgz#e55cd4c9cdc188bcefb03b366c736323fc5c898a" + resolved "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz" integrity sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA== dependencies: is-callable "^1.1.4" @@ -11363,7 +11702,7 @@ es-to-primitive@^1.2.1: es5-ext@^0.10.35, es5-ext@^0.10.46, es5-ext@^0.10.50, es5-ext@^0.10.53, es5-ext@~0.10.14, es5-ext@~0.10.2, es5-ext@~0.10.46: version "0.10.62" - resolved "https://registry.yarnpkg.com/es5-ext/-/es5-ext-0.10.62.tgz#5e6adc19a6da524bf3d1e02bbc8960e5eb49a9a5" + resolved "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.62.tgz" integrity sha512-BHLqn0klhEpnOKSrzn/Xsz2UIW8j+cGmo9JLzr8BiUapV8hPL9+FliFqjwr9ngW7jWdnxv6eO+/LqyhJVqgrjA== dependencies: es6-iterator "^2.0.3" @@ -11372,7 +11711,7 @@ es5-ext@^0.10.35, es5-ext@^0.10.46, es5-ext@^0.10.50, es5-ext@^0.10.53, es5-ext@ es6-iterator@^2.0.3: version "2.0.3" - resolved "https://registry.yarnpkg.com/es6-iterator/-/es6-iterator-2.0.3.tgz#a7de889141a05a94b0854403b2d0a0fbfa98f3b7" + resolved "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz" integrity sha512-zw4SRzoUkd+cl+ZoE15A9o1oQd920Bb0iOJMQkQhl3jNc03YqVjAhG7scf9C5KWRU/R13Orf588uCC6525o02g== dependencies: d "1" @@ -11381,19 +11720,19 @@ es6-iterator@^2.0.3: es6-promise@^4.0.3, es6-promise@^4.2.8: version "4.2.8" - resolved "https://registry.yarnpkg.com/es6-promise/-/es6-promise-4.2.8.tgz#4eb21594c972bc40553d276e510539143db53e0a" + resolved "https://registry.npmjs.org/es6-promise/-/es6-promise-4.2.8.tgz" integrity sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w== es6-promisify@^5.0.0: version "5.0.0" - resolved "https://registry.yarnpkg.com/es6-promisify/-/es6-promisify-5.0.0.tgz#5109d62f3e56ea967c4b63505aef08291c8a5203" + resolved "https://registry.npmjs.org/es6-promisify/-/es6-promisify-5.0.0.tgz" integrity sha512-C+d6UdsYDk0lMebHNR4S2NybQMMngAOnOwYBQjTOiv0MkoJMP0Myw2mgpDLBcpfCmRLxyFqYhS/CfOENq4SJhQ== dependencies: es6-promise "^4.0.3" es6-symbol@^3.1.1, es6-symbol@^3.1.3: version "3.1.3" - resolved "https://registry.yarnpkg.com/es6-symbol/-/es6-symbol-3.1.3.tgz#bad5d3c1bcdac28269f4cb331e431c78ac705d18" + resolved "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.3.tgz" integrity sha512-NJ6Yn3FuDinBaBRWl/q5X/s4koRHBrgKAu+yGI6JCBeiu3qrcbJhwT2GeR/EXVfylRk8dpQVJoLEFhK+Mu31NA== dependencies: d "^1.0.1" @@ -11401,7 +11740,7 @@ es6-symbol@^3.1.1, es6-symbol@^3.1.3: es6-weak-map@^2.0.3: version "2.0.3" - resolved "https://registry.yarnpkg.com/es6-weak-map/-/es6-weak-map-2.0.3.tgz#b6da1f16cc2cc0d9be43e6bdbfc5e7dfcdf31d53" + resolved "https://registry.npmjs.org/es6-weak-map/-/es6-weak-map-2.0.3.tgz" integrity sha512-p5um32HOTO1kP+w7PRnB+5lQ43Z6muuMuIMffvDN8ZB4GcnjLBV6zGStpbASIMk4DCAvEaamhe2zhyCb/QXXsA== dependencies: d "1" @@ -11411,42 +11750,42 @@ es6-weak-map@^2.0.3: escalade@^3.1.1: version "3.1.1" - resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40" + resolved "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz" integrity sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw== escape-goat@^2.0.0: version "2.1.1" - resolved "https://registry.yarnpkg.com/escape-goat/-/escape-goat-2.1.1.tgz#1b2dc77003676c457ec760b2dc68edb648188675" + resolved "https://registry.npmjs.org/escape-goat/-/escape-goat-2.1.1.tgz" integrity sha512-8/uIhbG12Csjy2JEW7D9pHbreaVaS/OpN3ycnyvElTdwM5n6GY6W6e2IPemfvGZeUMqZ9A/3GqIZMgKnBhAw/Q== escape-html@~1.0.3: version "1.0.3" - resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988" + resolved "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz" integrity sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow== escape-latex@1.2.0: version "1.2.0" - resolved "https://registry.yarnpkg.com/escape-latex/-/escape-latex-1.2.0.tgz#07c03818cf7dac250cce517f4fda1b001ef2bca1" + resolved "https://registry.npmjs.org/escape-latex/-/escape-latex-1.2.0.tgz" integrity sha512-nV5aVWW1K0wEiUIEdZ4erkGGH8mDxGyxSeqPzRNtWP7ataw+/olFObw7hujFWlVjNsaDFw5VZ5NzVSIqRgfTiw== escape-string-regexp@1.0.5, escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.5: version "1.0.5" - resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" + resolved "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz" integrity sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg== escape-string-regexp@4.0.0: version "4.0.0" - resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34" + resolved "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz" integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA== escape-string-regexp@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz#a30304e99daa32e23b2fd20f51babd07cffca344" + resolved "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz" integrity sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w== escodegen@1.8.x: version "1.8.1" - resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-1.8.1.tgz#5a5b53af4693110bebb0867aa3430dd3b70a1018" + resolved "https://registry.npmjs.org/escodegen/-/escodegen-1.8.1.tgz" integrity sha512-yhi5S+mNTOuRvyW4gWlg5W1byMaQGWWSYHXsuFZ7GBo7tpyOwi2EdzMP/QWxh9hwkD2m+wDVHJsxhRIj+v/b/A== dependencies: esprima "^2.7.1" @@ -11458,7 +11797,7 @@ escodegen@1.8.x: escodegen@^1.13.0, escodegen@^1.8.1: version "1.14.3" - resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-1.14.3.tgz#4e7b81fba61581dc97582ed78cab7f0e8d63f503" + resolved "https://registry.npmjs.org/escodegen/-/escodegen-1.14.3.tgz" integrity sha512-qFcX0XJkdg+PB3xjZZG/wKSuT1PnQWx57+TVSjIMmILd2yC/6ByYElPwJnslDsuWuSAp4AwJGumarAAmJch5Kw== dependencies: esprima "^4.0.1" @@ -11470,7 +11809,7 @@ escodegen@^1.13.0, escodegen@^1.8.1: escodegen@^2.1.0: version "2.1.0" - resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-2.1.0.tgz#ba93bbb7a43986d29d6041f99f5262da773e2e17" + resolved "https://registry.npmjs.org/escodegen/-/escodegen-2.1.0.tgz" integrity sha512-2NlIDTwUWJN0mRPQOdtQBzbUHvdGY2P1VXSyU83Q3xKxM7WHX2Ql8dKq782Q9TgQUNOLEzEYu9bzLNj1q88I5w== dependencies: esprima "^4.0.1" @@ -11481,7 +11820,7 @@ escodegen@^2.1.0: eslint-scope@^4.0.3: version "4.0.3" - resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-4.0.3.tgz#ca03833310f6889a3264781aa82e63eb9cfe7848" + resolved "https://registry.npmjs.org/eslint-scope/-/eslint-scope-4.0.3.tgz" integrity sha512-p7VutNr1O/QrxysMo3E45FjYDTeXBy0iTltPFNSqKAIfjDSXC+4dj+qfyuD8bfAXrW/y6lW3O76VaYNPKfpKrg== dependencies: esrecurse "^4.1.0" @@ -11489,24 +11828,24 @@ eslint-scope@^4.0.3: eslint-utils@^1.3.1: version "1.4.3" - resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-1.4.3.tgz#74fec7c54d0776b6f67e0251040b5806564e981f" + resolved "https://registry.npmjs.org/eslint-utils/-/eslint-utils-1.4.3.tgz" integrity sha512-fbBN5W2xdY45KulGXmLHZ3c3FHfVYmKg0IrAKGOkT/464PQsx2UeIzfz1RmEci+KLm1bBaAzZAh8+/E+XAeZ8Q== dependencies: eslint-visitor-keys "^1.1.0" eslint-visitor-keys@^1.0.0, eslint-visitor-keys@^1.1.0: version "1.3.0" - resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz#30ebd1ef7c2fdff01c3a4f151044af25fab0523e" + 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@^3.4.1: - version "3.4.2" - resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-3.4.2.tgz#8c2095440eca8c933bedcadf16fefa44dbe9ba5f" - integrity sha512-8drBzUEyZ2llkpCA67iYrgEssKDUu68V8ChqqOfFupIaG/LCVPUT+CoGJpT77zJprs4T/W7p07LP7zAIMuweVw== + version "3.4.3" + resolved "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz" + integrity sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag== eslint@^5.16.0, eslint@^5.5.0, eslint@^5.6.0: version "5.16.0" - resolved "https://registry.yarnpkg.com/eslint/-/eslint-5.16.0.tgz#a1e3ac1aae4a3fbd8296fcf8f7ab7314cbb6abea" + resolved "https://registry.npmjs.org/eslint/-/eslint-5.16.0.tgz" integrity sha512-S3Rz11i7c8AA5JPv7xAH+dOyq/Cu/VXHiHXBPOU1k/JAM5dXqQPt3qcrhpHSorXmrpu2g0gkIBVXAqCpzfoZIg== dependencies: "@babel/code-frame" "^7.0.0" @@ -11548,12 +11887,12 @@ eslint@^5.16.0, eslint@^5.5.0, eslint@^5.6.0: esm@^3.2.25: version "3.2.25" - resolved "https://registry.yarnpkg.com/esm/-/esm-3.2.25.tgz#342c18c29d56157688ba5ce31f8431fbb795cc10" + resolved "https://registry.npmjs.org/esm/-/esm-3.2.25.tgz" integrity sha512-U1suiZ2oDVWv4zPO56S0NcR5QriEahGtdN2OR6FiOG4WJvcjBVFB0qI4+eKoWFH483PKGuLuu6V8Z4T5g63UVA== espree@^5.0.1: version "5.0.1" - resolved "https://registry.yarnpkg.com/espree/-/espree-5.0.1.tgz#5d6526fa4fc7f0788a5cf75b15f30323e2f81f7a" + resolved "https://registry.npmjs.org/espree/-/espree-5.0.1.tgz" integrity sha512-qWAZcWh4XE/RwzLJejfcofscgMc9CamR6Tn1+XRXNzrvUSSbiAjGOI/fggztjIi7y9VLPqnICMIPiGyr8JaZ0A== dependencies: acorn "^6.0.7" @@ -11562,7 +11901,7 @@ espree@^5.0.1: espree@^9.0.0: version "9.6.1" - resolved "https://registry.yarnpkg.com/espree/-/espree-9.6.1.tgz#a2a17b8e434690a5432f2f8018ce71d331a48c6f" + resolved "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz" integrity sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ== dependencies: acorn "^8.9.0" @@ -11571,48 +11910,48 @@ espree@^9.0.0: esprima-extract-comments@^1.1.0: version "1.1.0" - resolved "https://registry.yarnpkg.com/esprima-extract-comments/-/esprima-extract-comments-1.1.0.tgz#0dacab567a5900240de6d344cf18c33617becbc9" + resolved "https://registry.npmjs.org/esprima-extract-comments/-/esprima-extract-comments-1.1.0.tgz" integrity sha512-sBQUnvJwpeE9QnPrxh7dpI/dp67erYG4WXEAreAMoelPRpMR7NWb4YtwRPn9b+H1uLQKl/qS8WYmyaljTpjIsw== dependencies: esprima "^4.0.0" esprima@2.7.x, esprima@^2.7.1: version "2.7.3" - resolved "https://registry.yarnpkg.com/esprima/-/esprima-2.7.3.tgz#96e3b70d5779f6ad49cd032673d1c312767ba581" + resolved "https://registry.npmjs.org/esprima/-/esprima-2.7.3.tgz" integrity sha512-OarPfz0lFCiW4/AV2Oy1Rp9qu0iusTKqykwTspGCZtPxmF81JR4MmIebvF1F9+UOKth2ZubLQ4XGGaU+hSn99A== esprima@^4.0.0, esprima@^4.0.1, esprima@~4.0.0: version "4.0.1" - resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" + resolved "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz" integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== esquery@^1.0.1: version "1.5.0" - resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.5.0.tgz#6ce17738de8577694edd7361c57182ac8cb0db0b" + resolved "https://registry.npmjs.org/esquery/-/esquery-1.5.0.tgz" integrity sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg== dependencies: estraverse "^5.1.0" esrecurse@^4.1.0: version "4.3.0" - resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.3.0.tgz#7ad7964d679abb28bee72cec63758b1c5d2c9921" + resolved "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz" integrity sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag== dependencies: estraverse "^5.2.0" estraverse@^1.9.1: version "1.9.3" - resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-1.9.3.tgz#af67f2dc922582415950926091a4005d29c9bb44" + resolved "https://registry.npmjs.org/estraverse/-/estraverse-1.9.3.tgz" integrity sha512-25w1fMXQrGdoquWnScXZGckOv+Wes+JDnuN/+7ex3SauFRS72r2lFDec0EKPt2YD1wUJ/IrfEex+9yp4hfSOJA== estraverse@^4.1.1, estraverse@^4.2.0: version "4.3.0" - resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.3.0.tgz#398ad3f3c5a24948be7725e83d11a7de28cdbd1d" + resolved "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz" integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw== estraverse@^5.1.0, estraverse@^5.2.0: version "5.3.0" - resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.3.0.tgz#2eea5290702f26ab8fe5370370ff86c965d21123" + resolved "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz" integrity sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA== esutils@^1.1.6: @@ -11622,17 +11961,17 @@ esutils@^1.1.6: esutils@^2.0.2: version "2.0.3" - resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64" + resolved "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz" integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== etag@~1.8.1: version "1.8.1" - resolved "https://registry.yarnpkg.com/etag/-/etag-1.8.1.tgz#41ae2eeb65efa62268aebfea83ac7d79299b0887" + resolved "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz" integrity sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg== eth-block-tracker@^4.4.2: version "4.4.3" - resolved "https://registry.yarnpkg.com/eth-block-tracker/-/eth-block-tracker-4.4.3.tgz#766a0a0eb4a52c867a28328e9ae21353812cf626" + resolved "https://registry.npmjs.org/eth-block-tracker/-/eth-block-tracker-4.4.3.tgz" integrity sha512-A8tG4Z4iNg4mw5tP1Vung9N9IjgMNqpiMoJ/FouSFwNCGHv2X0mmOYwtQOJzki6XN7r7Tyo01S29p7b224I4jw== dependencies: "@babel/plugin-transform-runtime" "^7.5.5" @@ -11644,7 +11983,7 @@ eth-block-tracker@^4.4.2: eth-block-tracker@^5.0.1: version "5.0.1" - resolved "https://registry.yarnpkg.com/eth-block-tracker/-/eth-block-tracker-5.0.1.tgz#c5ad39902bd0454223b601ec0874f9fcc9f30eed" + resolved "https://registry.npmjs.org/eth-block-tracker/-/eth-block-tracker-5.0.1.tgz" integrity sha512-NVs+JDSux0FdmOrl3A2YDcQFkkYf9/qW9irvPmtC7bhMoPAe6oBlaqqe/m9Ixh5rkKqAox4mEyWGpsFmf/IsNw== dependencies: "@metamask/safe-event-emitter" "^2.0.0" @@ -11653,7 +11992,7 @@ eth-block-tracker@^5.0.1: eth-ens-namehash@2.0.8, eth-ens-namehash@^2.0.8: version "2.0.8" - resolved "https://registry.yarnpkg.com/eth-ens-namehash/-/eth-ens-namehash-2.0.8.tgz#229ac46eca86d52e0c991e7cb2aef83ff0f68bcf" + resolved "https://registry.npmjs.org/eth-ens-namehash/-/eth-ens-namehash-2.0.8.tgz" integrity sha512-VWEI1+KJfz4Km//dadyvBBoBeSQ0MHTXPvr8UIXiLW6IanxvAV+DmlZAijZwAyggqGUfwQBeHf7tc9wzc1piSw== dependencies: idna-uts46-hx "^2.3.1" @@ -11682,7 +12021,7 @@ eth-gas-reporter@^0.2.16: eth-json-rpc-filters@^4.2.1: version "4.2.2" - resolved "https://registry.yarnpkg.com/eth-json-rpc-filters/-/eth-json-rpc-filters-4.2.2.tgz#eb35e1dfe9357ace8a8908e7daee80b2cd60a10d" + resolved "https://registry.npmjs.org/eth-json-rpc-filters/-/eth-json-rpc-filters-4.2.2.tgz" integrity sha512-DGtqpLU7bBg63wPMWg1sCpkKCf57dJ+hj/k3zF26anXMzkmtSBDExL8IhUu7LUd34f0Zsce3PYNO2vV2GaTzaw== dependencies: "@metamask/safe-event-emitter" "^2.0.0" @@ -11694,7 +12033,7 @@ eth-json-rpc-filters@^4.2.1: eth-json-rpc-infura@^5.1.0: version "5.1.0" - resolved "https://registry.yarnpkg.com/eth-json-rpc-infura/-/eth-json-rpc-infura-5.1.0.tgz#e6da7dc47402ce64c54e7018170d89433c4e8fb6" + resolved "https://registry.npmjs.org/eth-json-rpc-infura/-/eth-json-rpc-infura-5.1.0.tgz" integrity sha512-THzLye3PHUSGn1EXMhg6WTLW9uim7LQZKeKaeYsS9+wOBcamRiCQVGHa6D2/4P0oS0vSaxsBnU/J6qvn0MPdow== dependencies: eth-json-rpc-middleware "^6.0.0" @@ -11704,7 +12043,7 @@ eth-json-rpc-infura@^5.1.0: eth-json-rpc-middleware@^6.0.0: version "6.0.0" - resolved "https://registry.yarnpkg.com/eth-json-rpc-middleware/-/eth-json-rpc-middleware-6.0.0.tgz#4fe16928b34231a2537856f08a5ebbc3d0c31175" + resolved "https://registry.npmjs.org/eth-json-rpc-middleware/-/eth-json-rpc-middleware-6.0.0.tgz" integrity sha512-qqBfLU2Uq1Ou15Wox1s+NX05S9OcAEL4JZ04VZox2NS0U+RtCMjSxzXhLFWekdShUPZ+P8ax3zCO2xcPrp6XJQ== dependencies: btoa "^1.2.1" @@ -11721,7 +12060,7 @@ eth-json-rpc-middleware@^6.0.0: eth-lib@0.2.7: version "0.2.7" - resolved "https://registry.yarnpkg.com/eth-lib/-/eth-lib-0.2.7.tgz#2f93f17b1e23aec3759cd4a3fe20c1286a3fc1ca" + resolved "https://registry.npmjs.org/eth-lib/-/eth-lib-0.2.7.tgz" integrity sha512-VqEBQKH92jNsaE8lG9CTq8M/bc12gdAfb5MY8Ro1hVyXkh7rOtY3m5tRHK3Hus5HqIAAwU2ivcUjTLVwsvf/kw== dependencies: bn.js "^4.11.6" @@ -11730,7 +12069,7 @@ eth-lib@0.2.7: eth-lib@0.2.8, eth-lib@^0.2.8: version "0.2.8" - resolved "https://registry.yarnpkg.com/eth-lib/-/eth-lib-0.2.8.tgz#b194058bef4b220ad12ea497431d6cb6aa0623c8" + resolved "https://registry.npmjs.org/eth-lib/-/eth-lib-0.2.8.tgz" integrity sha512-ArJ7x1WcWOlSpzdoTBX8vkwlkSQ85CjjifSZtV4co64vWxSV8geWfPI9x4SVYu3DSxnX4yWFVTtGL+j9DUFLNw== dependencies: bn.js "^4.11.6" @@ -11739,7 +12078,7 @@ eth-lib@0.2.8, eth-lib@^0.2.8: eth-lib@^0.1.26: version "0.1.29" - resolved "https://registry.yarnpkg.com/eth-lib/-/eth-lib-0.1.29.tgz#0c11f5060d42da9f931eab6199084734f4dbd1d9" + resolved "https://registry.npmjs.org/eth-lib/-/eth-lib-0.1.29.tgz" integrity sha512-bfttrr3/7gG4E02HoWTDUcDDslN003OlOoBxk9virpAZQ1ja/jDgwkWB8QfJF7ojuEowrqy+lzp9VcJG7/k5bQ== dependencies: bn.js "^4.11.6" @@ -11751,7 +12090,7 @@ eth-lib@^0.1.26: eth-query@^2.1.0, eth-query@^2.1.2: version "2.1.2" - resolved "https://registry.yarnpkg.com/eth-query/-/eth-query-2.1.2.tgz#d6741d9000106b51510c72db92d6365456a6da5e" + resolved "https://registry.npmjs.org/eth-query/-/eth-query-2.1.2.tgz" integrity sha512-srES0ZcvwkR/wd5OQBRA1bIJMww1skfGS0s8wlwK3/oNP4+wnds60krvu5R1QbpRQjMmpG5OMIWro5s7gvDPsA== dependencies: json-rpc-random-id "^1.0.0" @@ -11759,21 +12098,21 @@ eth-query@^2.1.0, eth-query@^2.1.2: eth-rpc-errors@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/eth-rpc-errors/-/eth-rpc-errors-3.0.0.tgz#d7b22653c70dbf9defd4ef490fd08fe70608ca10" + resolved "https://registry.npmjs.org/eth-rpc-errors/-/eth-rpc-errors-3.0.0.tgz" integrity sha512-iPPNHPrLwUlR9xCSYm7HHQjWBasor3+KZfRvwEWxMz3ca0yqnlBeJrnyphkGIXZ4J7AMAaOLmwy4AWhnxOiLxg== dependencies: fast-safe-stringify "^2.0.6" eth-rpc-errors@^4.0.2: version "4.0.3" - resolved "https://registry.yarnpkg.com/eth-rpc-errors/-/eth-rpc-errors-4.0.3.tgz#6ddb6190a4bf360afda82790bb7d9d5e724f423a" + resolved "https://registry.npmjs.org/eth-rpc-errors/-/eth-rpc-errors-4.0.3.tgz" integrity sha512-Z3ymjopaoft7JDoxZcEb3pwdGh7yiYMhOwm2doUt6ASXlMavpNlK6Cre0+IMl2VSGyEU9rkiperQhp5iRxn5Pg== dependencies: fast-safe-stringify "^2.0.6" eth-sig-util@^1.4.2: version "1.4.2" - resolved "https://registry.yarnpkg.com/eth-sig-util/-/eth-sig-util-1.4.2.tgz#8d958202c7edbaae839707fba6f09ff327606210" + resolved "https://registry.npmjs.org/eth-sig-util/-/eth-sig-util-1.4.2.tgz" integrity sha512-iNZ576iTOGcfllftB73cPB5AN+XUQAT/T8xzsILsghXC1o8gJUqe3RHlcDqagu+biFpYQ61KQrZZJza8eRSYqw== dependencies: ethereumjs-abi "git+https://github.com/ethereumjs/ethereumjs-abi.git" @@ -11781,7 +12120,7 @@ eth-sig-util@^1.4.2: ethashjs@~0.0.7: version "0.0.8" - resolved "https://registry.yarnpkg.com/ethashjs/-/ethashjs-0.0.8.tgz#227442f1bdee409a548fb04136e24c874f3aa6f9" + resolved "https://registry.npmjs.org/ethashjs/-/ethashjs-0.0.8.tgz" integrity sha512-/MSbf/r2/Ld8o0l15AymjOTlPqpN8Cr4ByUEA9GtR4x0yAh3TdtDzEg29zMjXCNPI7u6E5fOQdj/Cf9Tc7oVNw== dependencies: async "^2.1.2" @@ -11791,24 +12130,24 @@ ethashjs@~0.0.7: ethereum-bloom-filters@^1.0.6: version "1.0.10" - resolved "https://registry.yarnpkg.com/ethereum-bloom-filters/-/ethereum-bloom-filters-1.0.10.tgz#3ca07f4aed698e75bd134584850260246a5fed8a" + resolved "https://registry.npmjs.org/ethereum-bloom-filters/-/ethereum-bloom-filters-1.0.10.tgz" integrity sha512-rxJ5OFN3RwjQxDcFP2Z5+Q9ho4eIdEmSc2ht0fCu8Se9nbXjZ7/031uXoUYJ87KHCOdVeiUuwSnoS7hmYAGVHA== dependencies: js-sha3 "^0.8.0" ethereum-common@0.2.0: version "0.2.0" - resolved "https://registry.yarnpkg.com/ethereum-common/-/ethereum-common-0.2.0.tgz#13bf966131cce1eeade62a1b434249bb4cb120ca" + resolved "https://registry.npmjs.org/ethereum-common/-/ethereum-common-0.2.0.tgz" integrity sha512-XOnAR/3rntJgbCdGhqdaLIxDLWKLmsZOGhHdBKadEr6gEnJLH52k93Ou+TUdFaPN3hJc3isBZBal3U/XZ15abA== ethereum-common@^0.0.18: version "0.0.18" - resolved "https://registry.yarnpkg.com/ethereum-common/-/ethereum-common-0.0.18.tgz#2fdc3576f232903358976eb39da783213ff9523f" + resolved "https://registry.npmjs.org/ethereum-common/-/ethereum-common-0.0.18.tgz" integrity sha512-EoltVQTRNg2Uy4o84qpa2aXymXDJhxm7eos/ACOg0DG4baAbMjhbdAEsx9GeE8sC3XCxnYvrrzZDH8D8MtA2iQ== ethereum-cryptography@1.2.0, ethereum-cryptography@^1.0.3, ethereum-cryptography@^1.1.2: version "1.2.0" - resolved "https://registry.yarnpkg.com/ethereum-cryptography/-/ethereum-cryptography-1.2.0.tgz#5ccfa183e85fdaf9f9b299a79430c044268c9b3a" + resolved "https://registry.npmjs.org/ethereum-cryptography/-/ethereum-cryptography-1.2.0.tgz" integrity sha512-6yFQC9b5ug6/17CQpCyE3k9eKBMdhyVjzUy1WkiuY/E4vj/SXDBbCw8QEIaXqf0Mf2SnY6RmpDcwlUmBSS0EJw== dependencies: "@noble/hashes" "1.2.0" @@ -11818,7 +12157,7 @@ ethereum-cryptography@1.2.0, ethereum-cryptography@^1.0.3, ethereum-cryptography ethereum-cryptography@^0.1.3: version "0.1.3" - resolved "https://registry.yarnpkg.com/ethereum-cryptography/-/ethereum-cryptography-0.1.3.tgz#8d6143cfc3d74bf79bbd8edecdf29e4ae20dd191" + resolved "https://registry.npmjs.org/ethereum-cryptography/-/ethereum-cryptography-0.1.3.tgz" integrity sha512-w8/4x1SGGzc+tO97TASLja6SLd3fRIK2tLVcV2Gx4IB21hE19atll5Cq9o3d0ZmAYC/8aw0ipieTSiekAea4SQ== dependencies: "@types/pbkdf2" "^3.0.0" @@ -11837,9 +12176,9 @@ ethereum-cryptography@^0.1.3: secp256k1 "^4.0.1" setimmediate "^1.0.5" -ethereum-cryptography@^2.1.2: +ethereum-cryptography@^2.0.0, ethereum-cryptography@^2.1.2: version "2.1.2" - resolved "https://registry.yarnpkg.com/ethereum-cryptography/-/ethereum-cryptography-2.1.2.tgz#18fa7108622e56481157a5cb7c01c0c6a672eb67" + resolved "https://registry.npmjs.org/ethereum-cryptography/-/ethereum-cryptography-2.1.2.tgz" integrity sha512-Z5Ba0T0ImZ8fqXrJbpHcbpAvIswRte2wGNR/KePnu8GbbvgJ47lMxT/ZZPG6i9Jaht4azPDop4HaM00J0J59ug== dependencies: "@noble/curves" "1.1.0" @@ -11849,30 +12188,23 @@ ethereum-cryptography@^2.1.2: ethereum-types@^3.7.1: version "3.7.1" - resolved "https://registry.yarnpkg.com/ethereum-types/-/ethereum-types-3.7.1.tgz#8fa75e5d9f5da3c85535ea0d4bcd2614b1d650a8" + resolved "https://registry.npmjs.org/ethereum-types/-/ethereum-types-3.7.1.tgz" integrity sha512-EBQwTGnGZQ9oHK7Za3DFEOxiElksRCoZECkk418vHiE2d59lLSejDZ1hzRVphtFjAu5YqONz4/XuAYdMBg+gWA== dependencies: "@types/node" "12.12.54" bignumber.js "~9.0.2" -ethereumjs-abi@^0.6.8: +ethereumjs-abi@^0.6.8, "ethereumjs-abi@git+https://github.com/ethereumjs/ethereumjs-abi.git": version "0.6.8" - resolved "https://registry.yarnpkg.com/ethereumjs-abi/-/ethereumjs-abi-0.6.8.tgz#71bc152db099f70e62f108b7cdfca1b362c6fcae" + resolved "https://registry.npmjs.org/ethereumjs-abi/-/ethereumjs-abi-0.6.8.tgz" integrity sha512-Tx0r/iXI6r+lRsdvkFDlut0N08jWMnKRZ6Gkq+Nmw75lZe4e6o3EkSnkaBP5NF6+m5PTGAr9JP43N3LyeoglsA== dependencies: bn.js "^4.11.8" ethereumjs-util "^6.0.0" -"ethereumjs-abi@git+https://github.com/ethereumjs/ethereumjs-abi.git": - version "0.6.8" - resolved "git+https://github.com/ethereumjs/ethereumjs-abi.git#ee3994657fa7a427238e6ba92a84d0b529bbcde0" - dependencies: - bn.js "^4.11.8" - ethereumjs-util "^6.0.0" - ethereumjs-account@^2.0.3: version "2.0.5" - resolved "https://registry.yarnpkg.com/ethereumjs-account/-/ethereumjs-account-2.0.5.tgz#eeafc62de544cb07b0ee44b10f572c9c49e00a84" + resolved "https://registry.npmjs.org/ethereumjs-account/-/ethereumjs-account-2.0.5.tgz" integrity sha512-bgDojnXGjhMwo6eXQC0bY6UK2liSFUSMwwylOmQvZbSl/D7NXQ3+vrGO46ZeOgjGfxXmgIeVNDIiHw7fNZM4VA== dependencies: ethereumjs-util "^5.0.0" @@ -11881,7 +12213,7 @@ ethereumjs-account@^2.0.3: ethereumjs-account@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/ethereumjs-account/-/ethereumjs-account-3.0.0.tgz#728f060c8e0c6e87f1e987f751d3da25422570a9" + resolved "https://registry.npmjs.org/ethereumjs-account/-/ethereumjs-account-3.0.0.tgz" integrity sha512-WP6BdscjiiPkQfF9PVfMcwx/rDvfZTjFKY0Uwc09zSQr9JfIVH87dYIJu0gNhBhpmovV4yq295fdllS925fnBA== dependencies: ethereumjs-util "^6.0.0" @@ -11890,7 +12222,7 @@ ethereumjs-account@^3.0.0: ethereumjs-block@^1.2.2: version "1.7.1" - resolved "https://registry.yarnpkg.com/ethereumjs-block/-/ethereumjs-block-1.7.1.tgz#78b88e6cc56de29a6b4884ee75379b6860333c3f" + resolved "https://registry.npmjs.org/ethereumjs-block/-/ethereumjs-block-1.7.1.tgz" integrity sha512-B+sSdtqm78fmKkBq78/QLKJbu/4Ts4P2KFISdgcuZUPDm9x+N7qgBPIIFUGbaakQh8bzuquiRVbdmvPKqbILRg== dependencies: async "^2.0.1" @@ -11901,7 +12233,7 @@ ethereumjs-block@^1.2.2: ethereumjs-block@^2.2.2, ethereumjs-block@~2.2.0, ethereumjs-block@~2.2.2: version "2.2.2" - resolved "https://registry.yarnpkg.com/ethereumjs-block/-/ethereumjs-block-2.2.2.tgz#c7654be7e22df489fda206139ecd63e2e9c04965" + resolved "https://registry.npmjs.org/ethereumjs-block/-/ethereumjs-block-2.2.2.tgz" integrity sha512-2p49ifhek3h2zeg/+da6XpdFR3GlqY3BIEiqxGF8j9aSRIgkb7M1Ky+yULBKJOu8PAZxfhsYA+HxUk2aCQp3vg== dependencies: async "^2.0.1" @@ -11912,7 +12244,7 @@ ethereumjs-block@^2.2.2, ethereumjs-block@~2.2.0, ethereumjs-block@~2.2.2: ethereumjs-blockchain@^4.0.3: version "4.0.4" - resolved "https://registry.yarnpkg.com/ethereumjs-blockchain/-/ethereumjs-blockchain-4.0.4.tgz#30f2228dc35f6dcf94423692a6902604ae34960f" + resolved "https://registry.npmjs.org/ethereumjs-blockchain/-/ethereumjs-blockchain-4.0.4.tgz" integrity sha512-zCxaRMUOzzjvX78DTGiKjA+4h2/sF0OYL1QuPux0DHpyq8XiNoF5GYHtb++GUxVlMsMfZV7AVyzbtgcRdIcEPQ== dependencies: async "^2.6.1" @@ -11928,12 +12260,12 @@ ethereumjs-blockchain@^4.0.3: ethereumjs-common@^1.1.0, ethereumjs-common@^1.3.2, ethereumjs-common@^1.5.0: version "1.5.2" - resolved "https://registry.yarnpkg.com/ethereumjs-common/-/ethereumjs-common-1.5.2.tgz#2065dbe9214e850f2e955a80e650cb6999066979" + resolved "https://registry.npmjs.org/ethereumjs-common/-/ethereumjs-common-1.5.2.tgz" integrity sha512-hTfZjwGX52GS2jcVO6E2sx4YuFnf0Fhp5ylo4pEPhEffNln7vS59Hr5sLnp3/QCazFLluuBZ+FZ6J5HTp0EqCA== ethereumjs-tx@^1.2.0, ethereumjs-tx@^1.2.2: version "1.3.7" - resolved "https://registry.yarnpkg.com/ethereumjs-tx/-/ethereumjs-tx-1.3.7.tgz#88323a2d875b10549b8347e09f4862b546f3d89a" + resolved "https://registry.npmjs.org/ethereumjs-tx/-/ethereumjs-tx-1.3.7.tgz" integrity sha512-wvLMxzt1RPhAQ9Yi3/HKZTn0FZYpnsmQdbKYfUUpi4j1SEIcbkd9tndVjcPrufY3V7j2IebOpC00Zp2P/Ay2kA== dependencies: ethereum-common "^0.0.18" @@ -11941,7 +12273,7 @@ ethereumjs-tx@^1.2.0, ethereumjs-tx@^1.2.2: ethereumjs-tx@^2.1.1, ethereumjs-tx@^2.1.2: version "2.1.2" - resolved "https://registry.yarnpkg.com/ethereumjs-tx/-/ethereumjs-tx-2.1.2.tgz#5dfe7688bf177b45c9a23f86cf9104d47ea35fed" + resolved "https://registry.npmjs.org/ethereumjs-tx/-/ethereumjs-tx-2.1.2.tgz" integrity sha512-zZEK1onCeiORb0wyCXUvg94Ve5It/K6GD1K+26KfFKodiBiS6d9lfCXlUKGBBdQ+bv7Day+JK0tj1K+BeNFRAw== dependencies: ethereumjs-common "^1.5.0" @@ -11949,7 +12281,7 @@ ethereumjs-tx@^2.1.1, ethereumjs-tx@^2.1.2: ethereumjs-util@7.1.5, ethereumjs-util@^7.0.10, ethereumjs-util@^7.0.2, ethereumjs-util@^7.1.0, ethereumjs-util@^7.1.1, ethereumjs-util@^7.1.2, ethereumjs-util@^7.1.5: version "7.1.5" - resolved "https://registry.yarnpkg.com/ethereumjs-util/-/ethereumjs-util-7.1.5.tgz#9ecf04861e4fbbeed7465ece5f23317ad1129181" + resolved "https://registry.npmjs.org/ethereumjs-util/-/ethereumjs-util-7.1.5.tgz" integrity sha512-SDl5kKrQAudFBUe5OJM9Ac6WmMyYmXX/6sTmLZ3ffG2eY6ZIGBes3pEDxNN6V72WyOw4CPD5RomKdsa8DAAwLg== dependencies: "@types/bn.js" "^5.1.0" @@ -11960,7 +12292,7 @@ ethereumjs-util@7.1.5, ethereumjs-util@^7.0.10, ethereumjs-util@^7.0.2, ethereum ethereumjs-util@^5.0.0, ethereumjs-util@^5.0.1, ethereumjs-util@^5.1.1, ethereumjs-util@^5.1.2, ethereumjs-util@^5.1.5, ethereumjs-util@^5.2.0: version "5.2.1" - resolved "https://registry.yarnpkg.com/ethereumjs-util/-/ethereumjs-util-5.2.1.tgz#a833f0e5fca7e5b361384dc76301a721f537bf65" + resolved "https://registry.npmjs.org/ethereumjs-util/-/ethereumjs-util-5.2.1.tgz" integrity sha512-v3kT+7zdyCm1HIqWlLNrHGqHGLpGYIhjeHxQjnDXjLT2FyGJDsd3LWMYUo7pAFRrk86CR3nUJfhC81CCoJNNGQ== dependencies: bn.js "^4.11.0" @@ -11973,7 +12305,7 @@ ethereumjs-util@^5.0.0, ethereumjs-util@^5.0.1, ethereumjs-util@^5.1.1, ethereum ethereumjs-util@^6.0.0, ethereumjs-util@^6.1.0, ethereumjs-util@^6.2.0: version "6.2.1" - resolved "https://registry.yarnpkg.com/ethereumjs-util/-/ethereumjs-util-6.2.1.tgz#fcb4e4dd5ceacb9d2305426ab1a5cd93e3163b69" + resolved "https://registry.npmjs.org/ethereumjs-util/-/ethereumjs-util-6.2.1.tgz" integrity sha512-W2Ktez4L01Vexijrm5EB6w7dg4n/TgpoYU4avuT5T3Vmnw/eCRtiBrJfQYS/DCSvDIOLn2k57GcHdeBcgVxAqw== dependencies: "@types/bn.js" "^4.11.3" @@ -11986,7 +12318,7 @@ ethereumjs-util@^6.0.0, ethereumjs-util@^6.1.0, ethereumjs-util@^6.2.0: ethereumjs-vm@4.1.3: version "4.1.3" - resolved "https://registry.yarnpkg.com/ethereumjs-vm/-/ethereumjs-vm-4.1.3.tgz#dc8eb45f47d775da9f0b2437d5e20896fdf66f37" + resolved "https://registry.npmjs.org/ethereumjs-vm/-/ethereumjs-vm-4.1.3.tgz" integrity sha512-RTrD0y7My4O6Qr1P2ZIsMfD6RzL6kU/RhBZ0a5XrPzAeR61crBS7or66ohDrvxDI/rDBxMi+6SnsELih6fzalw== dependencies: async "^2.1.2" @@ -12007,7 +12339,7 @@ ethereumjs-vm@4.1.3: ethereumjs-vm@^2.0.2, ethereumjs-vm@^2.3.4: version "2.6.0" - resolved "https://registry.yarnpkg.com/ethereumjs-vm/-/ethereumjs-vm-2.6.0.tgz#76243ed8de031b408793ac33907fb3407fe400c6" + resolved "https://registry.npmjs.org/ethereumjs-vm/-/ethereumjs-vm-2.6.0.tgz" integrity sha512-r/XIUik/ynGbxS3y+mvGnbOKnuLo40V5Mj1J25+HEO63aWYREIqvWeRO/hnROlMBE5WoniQmPmhiaN0ctiHaXw== dependencies: async "^2.1.2" @@ -12024,7 +12356,7 @@ ethereumjs-vm@^2.0.2, ethereumjs-vm@^2.3.4: ethereumjs-wallet@^0.6.0, ethereumjs-wallet@^0.6.3: version "0.6.5" - resolved "https://registry.yarnpkg.com/ethereumjs-wallet/-/ethereumjs-wallet-0.6.5.tgz#685e9091645cee230ad125c007658833991ed474" + resolved "https://registry.npmjs.org/ethereumjs-wallet/-/ethereumjs-wallet-0.6.5.tgz" integrity sha512-MDwjwB9VQVnpp/Dc1XzA6J1a3wgHQ4hSvA1uWNatdpOrtCbPVuQSKSyRnjLvS0a+KKMw2pvQ9Ybqpb3+eW8oNA== dependencies: aes-js "^3.1.1" @@ -12039,7 +12371,7 @@ ethereumjs-wallet@^0.6.0, ethereumjs-wallet@^0.6.3: ethereumjs-wallet@^1.0.1: version "1.0.2" - resolved "https://registry.yarnpkg.com/ethereumjs-wallet/-/ethereumjs-wallet-1.0.2.tgz#2c000504b4c71e8f3782dabe1113d192522e99b6" + resolved "https://registry.npmjs.org/ethereumjs-wallet/-/ethereumjs-wallet-1.0.2.tgz" integrity sha512-CCWV4RESJgRdHIvFciVQFnCHfqyhXWchTPlkfp28Qc53ufs+doi5I/cV2+xeK9+qEo25XCWfP9MiL+WEPAZfdA== dependencies: aes-js "^3.1.2" @@ -12053,7 +12385,7 @@ ethereumjs-wallet@^1.0.1: ethers@4.0.0-beta.3: version "4.0.0-beta.3" - resolved "https://registry.yarnpkg.com/ethers/-/ethers-4.0.0-beta.3.tgz#15bef14e57e94ecbeb7f9b39dd0a4bd435bc9066" + resolved "https://registry.npmjs.org/ethers/-/ethers-4.0.0-beta.3.tgz" integrity sha512-YYPogooSknTwvHg3+Mv71gM/3Wcrx+ZpCzarBj3mqs9njjRkrOo2/eufzhHloOCo3JSoNI4TQJJ6yU5ABm3Uog== dependencies: "@types/node" "^10.3.2" @@ -12069,7 +12401,7 @@ ethers@4.0.0-beta.3: ethers@^4.0.20, ethers@^4.0.32, ethers@^4.0.40, ethers@~4.0.4: version "4.0.49" - resolved "https://registry.yarnpkg.com/ethers/-/ethers-4.0.49.tgz#0eb0e9161a0c8b4761be547396bbe2fb121a8894" + resolved "https://registry.npmjs.org/ethers/-/ethers-4.0.49.tgz" integrity sha512-kPltTvWiyu+OktYy1IStSO16i2e7cS9D9OxZ81q2UUaiNPVrm/RTcbxamCXF9VUSKzJIdJV68EAIhTEVBalRWg== dependencies: aes-js "3.0.0" @@ -12084,7 +12416,7 @@ ethers@^4.0.20, ethers@^4.0.32, ethers@^4.0.40, ethers@~4.0.4: ethers@^5.0.13, ethers@^5.2.0, ethers@^5.7.1: version "5.7.2" - resolved "https://registry.yarnpkg.com/ethers/-/ethers-5.7.2.tgz#3a7deeabbb8c030d4126b24f84e525466145872e" + resolved "https://registry.npmjs.org/ethers/-/ethers-5.7.2.tgz" integrity sha512-wswUsmWo1aOK8rR7DIKiWSw9DbLWe6x98Jrn8wcTflTVvaXhAMaB5zGAXy0GYQEQp9iO1iSHWVyARQm11zUtyg== dependencies: "@ethersproject/abi" "5.7.0" @@ -12120,7 +12452,7 @@ ethers@^5.0.13, ethers@^5.2.0, ethers@^5.7.1: ethjs-unit@0.1.6, ethjs-unit@^0.1.6: version "0.1.6" - resolved "https://registry.yarnpkg.com/ethjs-unit/-/ethjs-unit-0.1.6.tgz#c665921e476e87bce2a9d588a6fe0405b2c41699" + resolved "https://registry.npmjs.org/ethjs-unit/-/ethjs-unit-0.1.6.tgz" integrity sha512-/Sn9Y0oKl0uqQuvgFk/zQgR7aw1g36qX/jzSQ5lSwlO0GigPymk4eGQfeNTD03w1dPOqfz8V77Cy43jH56pagw== dependencies: bn.js "4.11.6" @@ -12128,7 +12460,7 @@ ethjs-unit@0.1.6, ethjs-unit@^0.1.6: ethjs-util@0.1.6, ethjs-util@^0.1.3: version "0.1.6" - resolved "https://registry.yarnpkg.com/ethjs-util/-/ethjs-util-0.1.6.tgz#f308b62f185f9fe6237132fb2a9818866a5cd536" + resolved "https://registry.npmjs.org/ethjs-util/-/ethjs-util-0.1.6.tgz" integrity sha512-CUnVOQq7gSpDHZVVrQW8ExxUETWrnrvXYvYz55wOU8Uj4VCgw56XC2B/fVqQN+f7gmrnRHSLVnFAwsCuNwji8w== dependencies: is-hex-prefixed "1.0.0" @@ -12136,7 +12468,7 @@ ethjs-util@0.1.6, ethjs-util@^0.1.3: event-emitter@^0.3.5: version "0.3.5" - resolved "https://registry.yarnpkg.com/event-emitter/-/event-emitter-0.3.5.tgz#df8c69eef1647923c7157b9ce83840610b02cc39" + resolved "https://registry.npmjs.org/event-emitter/-/event-emitter-0.3.5.tgz" integrity sha512-D9rRn9y7kLPnJ+hMq7S/nhvoKwwvVJahBi2BPmx3bvbsEdK3W9ii8cBSGjP+72/LnM4n6fo3+dkCX5FeTQruXA== dependencies: d "1" @@ -12144,47 +12476,47 @@ event-emitter@^0.3.5: event-target-shim@^5.0.0: version "5.0.1" - resolved "https://registry.yarnpkg.com/event-target-shim/-/event-target-shim-5.0.1.tgz#5d4d3ebdf9583d63a5333ce2deb7480ab2b05789" + resolved "https://registry.npmjs.org/event-target-shim/-/event-target-shim-5.0.1.tgz" integrity sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ== eventemitter3@3.1.0: version "3.1.0" - resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-3.1.0.tgz#090b4d6cdbd645ed10bf750d4b5407942d7ba163" + resolved "https://registry.npmjs.org/eventemitter3/-/eventemitter3-3.1.0.tgz" integrity sha512-ivIvhpq/Y0uSjcHDcOIccjmYjGLcP09MFGE7ysAwkAvkXfpZlC985pH2/ui64DKazbTW/4kN3yqozUxlXzI6cA== eventemitter3@3.1.2, eventemitter3@^3.1.0: version "3.1.2" - resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-3.1.2.tgz#2d3d48f9c346698fce83a85d7d664e98535df6e7" + resolved "https://registry.npmjs.org/eventemitter3/-/eventemitter3-3.1.2.tgz" integrity sha512-tvtQIeLVHjDkJYnzf2dgVMxfuSGJeM/7UCG17TT4EumTfNtF+0nebF/4zWOIkCreAbtNqhGEboB6BWrwqNaw4Q== eventemitter3@4.0.4: version "4.0.4" - resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-4.0.4.tgz#b5463ace635a083d018bdc7c917b4c5f10a85384" + resolved "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.4.tgz" integrity sha512-rlaVLnVxtxvoyLsQQFBx53YmXHDxRIzzTLbdfxqi4yocpSjAxXwkU0cScM5JgSKMqEhrZpnvQ2D9gjylR0AimQ== eventemitter3@^4.0.4: version "4.0.7" - resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-4.0.7.tgz#2de9b68f6528d5644ef5c59526a1b4a07306169f" + resolved "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz" integrity sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw== events-listener@^1.1.0: version "1.1.0" - resolved "https://registry.yarnpkg.com/events-listener/-/events-listener-1.1.0.tgz#dd49b4628480eba58fde31b870ee346b3990b349" + resolved "https://registry.npmjs.org/events-listener/-/events-listener-1.1.0.tgz" integrity sha512-Kd3EgYfODHueq6GzVfs/VUolh2EgJsS8hkO3KpnDrxVjU3eq63eXM2ujXkhPP+OkeUOhL8CxdfZbQXzryb5C4g== events@1.1.1: version "1.1.1" - resolved "https://registry.yarnpkg.com/events/-/events-1.1.1.tgz#9ebdb7635ad099c70dcc4c2a1f5004288e8bd924" + resolved "https://registry.npmjs.org/events/-/events-1.1.1.tgz" integrity sha512-kEcvvCBByWXGnZy6JUlgAp2gBIUjfCAV6P6TgT1/aaQKcmuAEC4OZTV1I4EWQLz2gxZw76atuVyvHhTxvi0Flw== events@^3.0.0, events@^3.1.0, events@^3.3.0: version "3.3.0" - resolved "https://registry.yarnpkg.com/events/-/events-3.3.0.tgz#31a95ad0a924e2d2c419a813aeb2c4e878ea7400" + resolved "https://registry.npmjs.org/events/-/events-3.3.0.tgz" integrity sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q== evp_bytestokey@^1.0.0, evp_bytestokey@^1.0.3: version "1.0.3" - resolved "https://registry.yarnpkg.com/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz#7fcbdb198dc71959432efe13842684e0525acb02" + resolved "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz" integrity sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA== dependencies: md5.js "^1.3.4" @@ -12192,7 +12524,7 @@ evp_bytestokey@^1.0.0, evp_bytestokey@^1.0.3: exception-formatter@^1.0.4: version "1.0.7" - resolved "https://registry.yarnpkg.com/exception-formatter/-/exception-formatter-1.0.7.tgz#3291616b86fceabefa97aee6a4708032c6e3b96d" + resolved "https://registry.npmjs.org/exception-formatter/-/exception-formatter-1.0.7.tgz" integrity sha512-zV45vEsjytJrwfGq6X9qd1Ll56cW4NC2mhCO6lqwMk4ZpA1fZ6C3UiaQM/X7if+7wZFmCgss3ahp9B/uVFuLRw== dependencies: colors "^1.0.3" @@ -12212,7 +12544,7 @@ execa@^0.10.0: execa@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/execa/-/execa-1.0.0.tgz#c6236a5bb4df6d6f15e88e7f017798216749ddd8" + resolved "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz" integrity sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA== dependencies: cross-spawn "^6.0.0" @@ -12225,7 +12557,7 @@ execa@^1.0.0: execa@^2.1.0: version "2.1.0" - resolved "https://registry.yarnpkg.com/execa/-/execa-2.1.0.tgz#e5d3ecd837d2a60ec50f3da78fd39767747bbe99" + resolved "https://registry.npmjs.org/execa/-/execa-2.1.0.tgz" integrity sha512-Y/URAVapfbYy2Xp/gb6A0E7iR8xeqOCXsuuaoMn7A5PzrXUK84E1gyiEfq0wQd/GHA6GsoHWwhNq8anb0mleIw== dependencies: cross-spawn "^7.0.0" @@ -12240,7 +12572,7 @@ execa@^2.1.0: execa@^5.0.0: version "5.1.1" - resolved "https://registry.yarnpkg.com/execa/-/execa-5.1.1.tgz#f80ad9cbf4298f7bd1d4c9555c21e93741c411dd" + resolved "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz" integrity sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg== dependencies: cross-spawn "^7.0.3" @@ -12255,21 +12587,21 @@ execa@^5.0.0: exegesis-express@^2.0.0: version "2.0.1" - resolved "https://registry.yarnpkg.com/exegesis-express/-/exegesis-express-2.0.1.tgz#f162cdd68ee93dc14d832b02b1dbeab053697ee9" + resolved "https://registry.npmjs.org/exegesis-express/-/exegesis-express-2.0.1.tgz" integrity sha512-8ORl1YRygYGPdR+zcClMqzaU+JQuvdNIw/s0RNwYluxNecEHkDEcXFmO6A5T79p7e48KI8iXJYt6KIn4Z9z4bg== dependencies: exegesis "^2.5.7" exegesis-express@^4.0.0: version "4.0.0" - resolved "https://registry.yarnpkg.com/exegesis-express/-/exegesis-express-4.0.0.tgz#f5f8486f6f0d81739e8e27ce75ce0f61ba3f3578" + resolved "https://registry.npmjs.org/exegesis-express/-/exegesis-express-4.0.0.tgz" integrity sha512-V2hqwTtYRj0bj43K4MCtm0caD97YWkqOUHFMRCBW5L1x9IjyqOEc7Xa4oQjjiFbeFOSQzzwPV+BzXsQjSz08fw== dependencies: exegesis "^4.1.0" exegesis@^2.5.7: version "2.5.7" - resolved "https://registry.yarnpkg.com/exegesis/-/exegesis-2.5.7.tgz#232c4b01361bc2bf0d9d4c07549c479e77f2b7a3" + resolved "https://registry.npmjs.org/exegesis/-/exegesis-2.5.7.tgz" integrity sha512-Y0gEY3hgoLa80aMUm8rhhlIW3/KWo4uqN5hKJqok2GLh3maZjRLRC+p0gj33Jw3upAOKOXeRgScT5rtRoMyxwQ== dependencies: "@apidevtools/json-schema-ref-parser" "^9.0.3" @@ -12291,7 +12623,7 @@ exegesis@^2.5.7: exegesis@^4.1.0: version "4.1.1" - resolved "https://registry.yarnpkg.com/exegesis/-/exegesis-4.1.1.tgz#555dfbec663e71d0d71297a9fe13edfdd64f8849" + resolved "https://registry.npmjs.org/exegesis/-/exegesis-4.1.1.tgz" integrity sha512-PvSqaMOw2absLBgsthtJyVOeCHN4lxQ1dM7ibXb6TfZZJaoXtGELoEAGJRFvdN16+u9kg8oy1okZXRk8VpimWA== dependencies: "@apidevtools/json-schema-ref-parser" "^9.0.3" @@ -12314,24 +12646,24 @@ exegesis@^4.1.0: exit-code@^1.0.2: version "1.0.2" - resolved "https://registry.yarnpkg.com/exit-code/-/exit-code-1.0.2.tgz#ce165811c9f117af6a5f882940b96ae7f9aecc34" + resolved "https://registry.npmjs.org/exit-code/-/exit-code-1.0.2.tgz" integrity sha512-U80QYrKun5np62yRqG6geNRP5TZKU2HF73Bb6IE3XjDHXKlserAdP14tIaP3W9J6ezv84DwbpbRTAtu4FsKcgw== exit@^0.1.2: version "0.1.2" - resolved "https://registry.yarnpkg.com/exit/-/exit-0.1.2.tgz#0632638f8d877cc82107d30a0fff1a17cba1cd0c" + resolved "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz" integrity sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ== expand-brackets@^0.1.1, expand-brackets@^0.1.4: version "0.1.5" - resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-0.1.5.tgz#df07284e342a807cd733ac5af72411e581d1177b" + resolved "https://registry.npmjs.org/expand-brackets/-/expand-brackets-0.1.5.tgz" integrity sha512-hxx03P2dJxss6ceIeri9cmYOT4SRs3Zk3afZwWpOsRqLqprhTR8u++SlC+sFGsQr7WGFPdMF7Gjc1njDLDK6UA== dependencies: is-posix-bracket "^0.1.0" expand-brackets@^2.1.4: version "2.1.4" - resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-2.1.4.tgz#b77735e315ce30f6b6eff0f83b04151a22449622" + resolved "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz" integrity sha512-w/ozOKR9Obk3qoWeY/WDi6MFta9AoMR+zud60mdnbniMcBxRuFJyDt2LdX/14A1UABeqk+Uk+LDfUpvoGKppZA== dependencies: debug "^2.3.3" @@ -12344,33 +12676,44 @@ expand-brackets@^2.1.4: expand-range@^1.8.1: version "1.8.2" - resolved "https://registry.yarnpkg.com/expand-range/-/expand-range-1.8.2.tgz#a299effd335fe2721ebae8e257ec79644fc85337" + resolved "https://registry.npmjs.org/expand-range/-/expand-range-1.8.2.tgz" integrity sha512-AFASGfIlnIbkKPQwX1yHaDjFvh/1gyKJODme52V6IORh69uEYgZp0o9C+qsIGNVEiuuhQU0CSSl++Rlegg1qvA== dependencies: fill-range "^2.1.0" expand-template@^2.0.3: version "2.0.3" - resolved "https://registry.yarnpkg.com/expand-template/-/expand-template-2.0.3.tgz#6e14b3fcee0f3a6340ecb57d2e8918692052a47c" + resolved "https://registry.npmjs.org/expand-template/-/expand-template-2.0.3.tgz" integrity sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg== expand-tilde@^1.2.2: version "1.2.2" - resolved "https://registry.yarnpkg.com/expand-tilde/-/expand-tilde-1.2.2.tgz#0b81eba897e5a3d31d1c3d102f8f01441e559449" + resolved "https://registry.npmjs.org/expand-tilde/-/expand-tilde-1.2.2.tgz" integrity sha512-rtmc+cjLZqnu9dSYosX9EWmSJhTwpACgJQTfj4hgg2JjOD/6SIQalZrt4a3aQeh++oNxkazcaxrhPUj6+g5G/Q== dependencies: os-homedir "^1.0.1" expand-tilde@^2.0.0, expand-tilde@^2.0.2: version "2.0.2" - resolved "https://registry.yarnpkg.com/expand-tilde/-/expand-tilde-2.0.2.tgz#97e801aa052df02454de46b02bf621642cdc8502" + resolved "https://registry.npmjs.org/expand-tilde/-/expand-tilde-2.0.2.tgz" integrity sha512-A5EmesHW6rfnZ9ysHQjPdJRni0SRar0tjtG5MNtm9n5TUvsYU8oozprtRD4AqHxcZWWlVuAmQo2nWKfN9oyjTw== dependencies: homedir-polyfill "^1.0.1" -expect@^29.0.0, expect@^29.5.0: +expect@^29.0.0: + version "29.7.0" + resolved "https://registry.npmjs.org/expect/-/expect-29.7.0.tgz" + integrity sha512-2Zks0hf1VLFYI1kbh0I5jP3KHHyCHpkfyHBzsSXRFgl/Bg9mWYfMW8oD+PdMPlEwy5HNsR9JutYy6pMeOh61nw== + dependencies: + "@jest/expect-utils" "^29.7.0" + jest-get-type "^29.6.3" + jest-matcher-utils "^29.7.0" + jest-message-util "^29.7.0" + jest-util "^29.7.0" + +expect@^29.5.0: version "29.5.0" - resolved "https://registry.yarnpkg.com/expect/-/expect-29.5.0.tgz#68c0509156cb2a0adb8865d413b137eeaae682f7" + resolved "https://registry.npmjs.org/expect/-/expect-29.5.0.tgz" integrity sha512-yM7xqUrCO2JdpFo4XpM82t+PJBFybdqoQuJLDGeDX2ij8NZzqRHyu3Hp188/JX7SWqud+7t4MUdvcgGBICMHZg== dependencies: "@jest/expect-utils" "^29.5.0" @@ -12381,19 +12724,19 @@ expect@^29.0.0, expect@^29.5.0: exponential-backoff@^3.1.1: version "3.1.1" - resolved "https://registry.yarnpkg.com/exponential-backoff/-/exponential-backoff-3.1.1.tgz#64ac7526fe341ab18a39016cd22c787d01e00bf6" + resolved "https://registry.npmjs.org/exponential-backoff/-/exponential-backoff-3.1.1.tgz" integrity sha512-dX7e/LHVJ6W3DE1MHWi9S1EYzDESENfLrYohG2G++ovZrYOkm4Knwa0mc1cn84xJOR4KEU0WSchhLbd0UklbHw== export-files@^2.0.1: version "2.1.1" - resolved "https://registry.yarnpkg.com/export-files/-/export-files-2.1.1.tgz#bbf64574053a09e4eb98e5f43501d572b2c3ce7f" + resolved "https://registry.npmjs.org/export-files/-/export-files-2.1.1.tgz" integrity sha512-r2x1Zt0OKgdXRy0bXis3sOI8TNYmo5Fe71qXwsvpYaMvIlH5G0fWEf3AYiE2bONjePdSOojca7Jw+p9CQ6/6NQ== dependencies: lazy-cache "^1.0.3" express@^4.14.0, express@^4.16.4, express@^4.17.1: version "4.18.2" - resolved "https://registry.yarnpkg.com/express/-/express-4.18.2.tgz#3fabe08296e930c796c19e3c516979386ba9fd59" + resolved "https://registry.npmjs.org/express/-/express-4.18.2.tgz" integrity sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ== dependencies: accepts "~1.3.8" @@ -12430,21 +12773,21 @@ express@^4.14.0, express@^4.16.4, express@^4.17.1: ext@^1.1.2: version "1.7.0" - resolved "https://registry.yarnpkg.com/ext/-/ext-1.7.0.tgz#0ea4383c0103d60e70be99e9a7f11027a33c4f5f" + resolved "https://registry.npmjs.org/ext/-/ext-1.7.0.tgz" integrity sha512-6hxeJYaL110a9b5TEJSj0gojyHQAmA2ch5Os+ySCiA1QGdS697XWY1pzsrSjqA9LDEEgdB/KypIlR59RcLuHYw== dependencies: type "^2.7.2" extend-shallow@^2.0.0, extend-shallow@^2.0.1: version "2.0.1" - resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-2.0.1.tgz#51af7d614ad9a9f610ea1bafbb989d6b1c56890f" + resolved "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz" integrity sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug== dependencies: is-extendable "^0.1.0" extend-shallow@^3.0.0, extend-shallow@^3.0.2: version "3.0.2" - resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-3.0.2.tgz#26a71aaf073b39fb2127172746131c2704028db8" + resolved "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz" integrity sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q== dependencies: assign-symbols "^1.0.0" @@ -12452,12 +12795,12 @@ extend-shallow@^3.0.0, extend-shallow@^3.0.2: extend@^3.0.0, extend@^3.0.1, extend@^3.0.2, extend@~3.0.2: version "3.0.2" - resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa" + resolved "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz" integrity sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g== external-editor@^3.0.3: version "3.1.0" - resolved "https://registry.yarnpkg.com/external-editor/-/external-editor-3.1.0.tgz#cb03f740befae03ea4d283caed2741a83f335495" + resolved "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz" integrity sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew== dependencies: chardet "^0.7.0" @@ -12466,14 +12809,14 @@ external-editor@^3.0.3: extglob@^0.3.0, extglob@^0.3.1: version "0.3.2" - resolved "https://registry.yarnpkg.com/extglob/-/extglob-0.3.2.tgz#2e18ff3d2f49ab2765cec9023f011daa8d8349a1" + resolved "https://registry.npmjs.org/extglob/-/extglob-0.3.2.tgz" integrity sha512-1FOj1LOwn42TMrruOHGt18HemVnbwAmAak7krWk+wa93KXxGbK+2jpezm+ytJYDaBX0/SPLZFHKM7m+tKobWGg== dependencies: is-extglob "^1.0.0" extglob@^2.0.4: version "2.0.4" - resolved "https://registry.yarnpkg.com/extglob/-/extglob-2.0.4.tgz#ad00fe4dc612a9232e8718711dc5cb5ab0285543" + resolved "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz" integrity sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw== dependencies: array-unique "^0.3.2" @@ -12487,7 +12830,7 @@ extglob@^2.0.4: extract-comments@^1.1.0: version "1.1.0" - resolved "https://registry.yarnpkg.com/extract-comments/-/extract-comments-1.1.0.tgz#b90bca033a056bd69b8ba1c6b6b120fc2ee95c18" + resolved "https://registry.npmjs.org/extract-comments/-/extract-comments-1.1.0.tgz" integrity sha512-dzbZV2AdSSVW/4E7Ti5hZdHWbA+Z80RJsJhr5uiL10oyjl/gy7/o+HI1HwK4/WSZhlq4SNKU3oUzXlM13Qx02Q== dependencies: esprima-extract-comments "^1.1.0" @@ -12495,56 +12838,56 @@ extract-comments@^1.1.0: extract-stack@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/extract-stack/-/extract-stack-1.0.0.tgz#b97acaf9441eea2332529624b732fc5a1c8165fa" + resolved "https://registry.npmjs.org/extract-stack/-/extract-stack-1.0.0.tgz" integrity sha512-M5Ge0JIrn12EtIVpje2G+hI5X78hmX4UDzynZ7Vnp1MiPSqleEonmgr2Rh59eygEEgq3YJ1GDP96rnM8tnVg/Q== extract-stack@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/extract-stack/-/extract-stack-2.0.0.tgz#11367bc865bfcd9bc0db3123e5edb57786f11f9b" + resolved "https://registry.npmjs.org/extract-stack/-/extract-stack-2.0.0.tgz" integrity sha512-AEo4zm+TenK7zQorGK1f9mJ8L14hnTDi2ZQPR+Mub1NX8zimka1mXpV5LpH8x9HoUmFSHZCfLHqWvp0Y4FxxzQ== extsprintf@1.3.0: version "1.3.0" - resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.3.0.tgz#96918440e3041a7a414f8c52e3c574eb3c3e1e05" + resolved "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz" integrity sha512-11Ndz7Nv+mvAC1j0ktTa7fAb0vLyGGX+rMHNBYQviQDGU0Hw7lhctJANqbPhu9nV9/izT/IntTgZ7Im/9LJs9g== extsprintf@^1.2.0: version "1.4.1" - resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.4.1.tgz#8d172c064867f235c0c84a596806d279bf4bcc07" + resolved "https://registry.npmjs.org/extsprintf/-/extsprintf-1.4.1.tgz" integrity sha512-Wrk35e8ydCKDj/ArClo1VrPVmN8zph5V4AtHwIuHhvMXsKf73UT3BOD+azBIW+3wOJ4FhEH7zyaJCFvChjYvMA== eyes@0.1.x: version "0.1.8" - resolved "https://registry.yarnpkg.com/eyes/-/eyes-0.1.8.tgz#62cf120234c683785d902348a800ef3e0cc20bc0" + resolved "https://registry.npmjs.org/eyes/-/eyes-0.1.8.tgz" integrity sha512-GipyPsXO1anza0AOZdy69Im7hGFCNB7Y/NGjDlZGJ3GJJLtwNSb2vrzYrTYJRrRloVx7pl+bhUaTB8yiccPvFQ== fake-merkle-patricia-tree@^1.0.1: version "1.0.1" - resolved "https://registry.yarnpkg.com/fake-merkle-patricia-tree/-/fake-merkle-patricia-tree-1.0.1.tgz#4b8c3acfb520afadf9860b1f14cd8ce3402cddd3" + resolved "https://registry.npmjs.org/fake-merkle-patricia-tree/-/fake-merkle-patricia-tree-1.0.1.tgz" integrity sha512-Tgq37lkc9pUIgIKw5uitNUKcgcYL3R6JvXtKQbOf/ZSavXbidsksgp/pAY6p//uhw0I4yoMsvTSovvVIsk/qxA== dependencies: checkpoint-store "^1.1.0" fast-check@3.1.1: version "3.1.1" - resolved "https://registry.yarnpkg.com/fast-check/-/fast-check-3.1.1.tgz#72c5ae7022a4e86504762e773adfb8a5b0b01252" + resolved "https://registry.npmjs.org/fast-check/-/fast-check-3.1.1.tgz" integrity sha512-3vtXinVyuUKCKFKYcwXhGE6NtGWkqF8Yh3rvMZNzmwz8EPrgoc/v4pDdLHyLnCyCI5MZpZZkDEwFyXyEONOxpA== dependencies: pure-rand "^5.0.1" fast-deep-equal@^3.1.1: version "3.1.3" - resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" + resolved "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz" integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== fast-diff@^1.1.2: version "1.2.0" - resolved "https://registry.yarnpkg.com/fast-diff/-/fast-diff-1.2.0.tgz#73ee11982d86caaf7959828d519cfe927fac5f03" + resolved "https://registry.npmjs.org/fast-diff/-/fast-diff-1.2.0.tgz" integrity sha512-xJuoT5+L99XlZ8twedaRf6Ax2TgQVxvgZOYoPKqZufmJib0tL2tegPBOZb1pVNgIhlqDlA0eO0c3wBvQcmzx4w== fast-glob@3.2.7: version "3.2.7" - resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.2.7.tgz#fd6cb7a2d7e9aa7a7846111e85a196d6b2f766a1" + resolved "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.7.tgz" integrity sha512-rYGMRwip6lUMvYD3BTScMwT1HtAs2d71SMv66Vrxs0IekGZEjhM0pcMfjQPnknBt2zeCwQMEupiN02ZP4DiT1Q== dependencies: "@nodelib/fs.stat" "^2.0.2" @@ -12555,7 +12898,7 @@ fast-glob@3.2.7: fast-glob@^2.0.2: version "2.2.7" - resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-2.2.7.tgz#6953857c3afa475fff92ee6015d52da70a4cd39d" + resolved "https://registry.npmjs.org/fast-glob/-/fast-glob-2.2.7.tgz" integrity sha512-g1KuQwHOZAmOZMuBtHdxDtju+T2RT8jgCC9aANsbpdiDDTSnjgfuVsIBNKbUeJI3oKMRExcfNDtJl4OhbffMsw== dependencies: "@mrmlnc/readdir-enhanced" "^2.2.1" @@ -12565,9 +12908,20 @@ fast-glob@^2.0.2: merge2 "^1.2.3" micromatch "^3.1.10" -fast-glob@^3.0.3, fast-glob@^3.2.9: +fast-glob@^3.0.3: + version "3.3.1" + resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.3.1.tgz#784b4e897340f3dbbef17413b3f11acf03c874c4" + integrity sha512-kNFPyjhh5cKjrUltxs+wFx+ZkbRaxxmZ+X0ZU31SOsxCEtP9VPgtq2teZw1DebupL5GmDaNQ6yKMMVcM41iqDg== + dependencies: + "@nodelib/fs.stat" "^2.0.2" + "@nodelib/fs.walk" "^1.2.3" + glob-parent "^5.1.2" + merge2 "^1.3.0" + micromatch "^4.0.4" + +fast-glob@^3.2.9: version "3.2.12" - resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.2.12.tgz#7f39ec99c2e6ab030337142da9e0c18f37afae80" + resolved "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.12.tgz" integrity sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w== dependencies: "@nodelib/fs.stat" "^2.0.2" @@ -12578,86 +12932,86 @@ fast-glob@^3.0.3, fast-glob@^3.2.9: fast-json-stable-stringify@2.x, fast-json-stable-stringify@^2.0.0, fast-json-stable-stringify@^2.1.0: version "2.1.0" - resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" + resolved "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz" integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== fast-levenshtein@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-3.0.0.tgz#37b899ae47e1090e40e3fd2318e4d5f0142ca912" + resolved "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-3.0.0.tgz" integrity sha512-hKKNajm46uNmTlhHSyZkmToAc56uZJwYq7yrciZjqOxnlfQwERDQJmHPUp7m1m9wx8vgOe8IaCKZ5Kv2k1DdCQ== dependencies: fastest-levenshtein "^1.0.7" fast-levenshtein@~2.0.6: version "2.0.6" - resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" + resolved "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz" integrity sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw== fast-safe-stringify@^2.0.6, fast-safe-stringify@^2.1.1: version "2.1.1" - resolved "https://registry.yarnpkg.com/fast-safe-stringify/-/fast-safe-stringify-2.1.1.tgz#c406a83b6e70d9e35ce3b30a81141df30aeba884" + resolved "https://registry.npmjs.org/fast-safe-stringify/-/fast-safe-stringify-2.1.1.tgz" integrity sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA== fast-text-encoding@^1.0.0, fast-text-encoding@^1.0.3: version "1.0.6" - resolved "https://registry.yarnpkg.com/fast-text-encoding/-/fast-text-encoding-1.0.6.tgz#0aa25f7f638222e3396d72bf936afcf1d42d6867" + resolved "https://registry.npmjs.org/fast-text-encoding/-/fast-text-encoding-1.0.6.tgz" integrity sha512-VhXlQgj9ioXCqGstD37E/HBeqEGV/qOD/kmbVG8h5xKBYvM1L3lR1Zn4555cQ8GkYbJa8aJSipLPndE1k6zK2w== fast-url-parser@^1.1.3: version "1.1.3" - resolved "https://registry.yarnpkg.com/fast-url-parser/-/fast-url-parser-1.1.3.tgz#f4af3ea9f34d8a271cf58ad2b3759f431f0b318d" + resolved "https://registry.npmjs.org/fast-url-parser/-/fast-url-parser-1.1.3.tgz" integrity sha512-5jOCVXADYNuRkKFzNJ0dCCewsZiYo0dz8QNYljkOpFC6r2U4OBmKtvm/Tsuh4w1YYdDqDb31a8TVhBJ2OJKdqQ== dependencies: punycode "^1.3.2" fast-xml-parser@^4.2.2: version "4.2.7" - resolved "https://registry.yarnpkg.com/fast-xml-parser/-/fast-xml-parser-4.2.7.tgz#871f2ca299dc4334b29f8da3658c164e68395167" + resolved "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-4.2.7.tgz" integrity sha512-J8r6BriSLO1uj2miOk1NW0YVm8AGOOu3Si2HQp/cSmo6EA4m3fcwu2WKjJ4RK9wMLBtg69y1kS8baDiQBR41Ig== dependencies: strnum "^1.0.5" fastest-levenshtein@^1.0.7: version "1.0.16" - resolved "https://registry.yarnpkg.com/fastest-levenshtein/-/fastest-levenshtein-1.0.16.tgz#210e61b6ff181de91ea9b3d1b84fdedd47e034e5" + resolved "https://registry.npmjs.org/fastest-levenshtein/-/fastest-levenshtein-1.0.16.tgz" integrity sha512-eRnCtTTtGZFpQCwhJiUOuxPQWRXVKYDn0b2PeHfXL6/Zi53SLAzAHfVhVWK2AryC/WH05kGfxhFIPvTF0SXQzg== fastq@^1.6.0: version "1.15.0" - resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.15.0.tgz#d04d07c6a2a68fe4599fea8d2e103a937fae6b3a" + resolved "https://registry.npmjs.org/fastq/-/fastq-1.15.0.tgz" integrity sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw== dependencies: reusify "^1.0.4" faye-websocket@0.11.4: version "0.11.4" - resolved "https://registry.yarnpkg.com/faye-websocket/-/faye-websocket-0.11.4.tgz#7f0d9275cfdd86a1c963dc8b65fcc451edcbb1da" + resolved "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.4.tgz" integrity sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g== dependencies: websocket-driver ">=0.5.1" fb-watchman@^2.0.0: version "2.0.2" - resolved "https://registry.yarnpkg.com/fb-watchman/-/fb-watchman-2.0.2.tgz#e9524ee6b5c77e9e5001af0f85f3adbb8623255c" + resolved "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.2.tgz" integrity sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA== dependencies: bser "2.1.1" fd-slicer@~1.1.0: version "1.1.0" - resolved "https://registry.yarnpkg.com/fd-slicer/-/fd-slicer-1.1.0.tgz#25c7c89cb1f9077f8891bbe61d8f390eae256f1e" + resolved "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz" integrity sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g== dependencies: pend "~1.2.0" fecha@^4.2.0: version "4.2.3" - resolved "https://registry.yarnpkg.com/fecha/-/fecha-4.2.3.tgz#4d9ccdbc61e8629b259fdca67e65891448d569fd" + resolved "https://registry.npmjs.org/fecha/-/fecha-4.2.3.tgz" integrity sha512-OP2IUU6HeYKJi3i0z4A19kHMQoLVs4Hc+DPqqxI2h/DPZHTm/vjsfC6P0b4jCMy14XizLBqvndQ+UilD7707Jw== fetch-cookie@0.11.0: version "0.11.0" - resolved "https://registry.yarnpkg.com/fetch-cookie/-/fetch-cookie-0.11.0.tgz#e046d2abadd0ded5804ce7e2cae06d4331c15407" + resolved "https://registry.npmjs.org/fetch-cookie/-/fetch-cookie-0.11.0.tgz" integrity sha512-BQm7iZLFhMWFy5CZ/162sAGjBfdNWb7a8LEqqnzsHFhxT/X/SVj/z2t2nu3aJvjlbQkrAlTUApplPRjWyH4mhA== dependencies: tough-cookie "^2.3.3 || ^3.0.1 || ^4.0.0" @@ -12679,7 +13033,7 @@ fetch-mock@9.10.4: fetch-mock@^9.11.0: version "9.11.0" - resolved "https://registry.yarnpkg.com/fetch-mock/-/fetch-mock-9.11.0.tgz#371c6fb7d45584d2ae4a18ee6824e7ad4b637a3f" + resolved "https://registry.npmjs.org/fetch-mock/-/fetch-mock-9.11.0.tgz" integrity sha512-PG1XUv+x7iag5p/iNHD4/jdpxL9FtVSqRMUQhPab4hVDt80T1MH5ehzVrL2IdXO9Q2iBggArFvPqjUbHFuI58Q== dependencies: "@babel/core" "^7.0.0" @@ -12695,70 +13049,70 @@ fetch-mock@^9.11.0: figures@3.2.0, figures@^3.0.0: version "3.2.0" - resolved "https://registry.yarnpkg.com/figures/-/figures-3.2.0.tgz#625c18bd293c604dc4a8ddb2febf0c88341746af" + resolved "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz" integrity sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg== dependencies: escape-string-regexp "^1.0.5" figures@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/figures/-/figures-2.0.0.tgz#3ab1a2d2a62c8bfb431a0c94cb797a2fce27c962" + resolved "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz" integrity sha512-Oa2M9atig69ZkfwiApY8F2Yy+tzMbazyvqv21R0NsSC8floSOC09BbT1ITWAdoMGQvJ/aZnR1KMwdx9tvHnTNA== dependencies: escape-string-regexp "^1.0.5" file-entry-cache@^5.0.1: version "5.0.1" - resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-5.0.1.tgz#ca0f6efa6dd3d561333fb14515065c2fafdf439c" + resolved "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-5.0.1.tgz" integrity sha512-bCg29ictuBaKUwwArK4ouCaqDgLZcysCFLmM/Yn/FDoqndh/9vNuQfXRDvTuXKLxfD/JtZQGKFT8MGcJBK644g== dependencies: flat-cache "^2.0.1" file-type@^3.8.0: version "3.9.0" - resolved "https://registry.yarnpkg.com/file-type/-/file-type-3.9.0.tgz#257a078384d1db8087bc449d107d52a52672b9e9" + resolved "https://registry.npmjs.org/file-type/-/file-type-3.9.0.tgz" integrity sha512-RLoqTXE8/vPmMuTI88DAzhMYC99I8BWv7zYP4A1puo5HIjEJ5EX48ighy4ZyKMG9EDXxBgW6e++cn7d1xuFghA== file-type@^5.2.0: version "5.2.0" - resolved "https://registry.yarnpkg.com/file-type/-/file-type-5.2.0.tgz#2ddbea7c73ffe36368dfae49dc338c058c2b8ad6" + resolved "https://registry.npmjs.org/file-type/-/file-type-5.2.0.tgz" integrity sha512-Iq1nJ6D2+yIO4c8HHg4fyVb8mAJieo1Oloy1mLLaB2PvezNedhBVm+QU7g0qM42aiMbRXTxKKwGD17rjKNJYVQ== file-type@^6.1.0: version "6.2.0" - resolved "https://registry.yarnpkg.com/file-type/-/file-type-6.2.0.tgz#e50cd75d356ffed4e306dc4f5bcf52a79903a919" + resolved "https://registry.npmjs.org/file-type/-/file-type-6.2.0.tgz" integrity sha512-YPcTBDV+2Tm0VqjybVd32MHdlEGAtuxS3VAYsumFokDSMG+ROT5wawGlnHDoz7bfMcMDt9hxuXvXwoKUx2fkOg== file-uri-to-path@1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz#553a7b8446ff6f684359c445f1e37a05dacc33dd" + resolved "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz" integrity sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw== file-uri-to-path@2: version "2.0.0" - resolved "https://registry.yarnpkg.com/file-uri-to-path/-/file-uri-to-path-2.0.0.tgz#7b415aeba227d575851e0a5b0c640d7656403fba" + resolved "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-2.0.0.tgz" integrity sha512-hjPFI8oE/2iQPVe4gbrJ73Pp+Xfub2+WI2LlXDbsaJBwT5wuMh35WNWVYYTpnz895shtwfyutMFLFywpQAFdLg== -filelist@^1.0.1: +filelist@^1.0.4: version "1.0.4" - resolved "https://registry.yarnpkg.com/filelist/-/filelist-1.0.4.tgz#f78978a1e944775ff9e62e744424f215e58352b5" + resolved "https://registry.npmjs.org/filelist/-/filelist-1.0.4.tgz" integrity sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q== dependencies: minimatch "^5.0.1" filename-regex@^2.0.0: version "2.0.1" - resolved "https://registry.yarnpkg.com/filename-regex/-/filename-regex-2.0.1.tgz#c1c4b9bee3e09725ddb106b75c1e301fe2f18b26" + resolved "https://registry.npmjs.org/filename-regex/-/filename-regex-2.0.1.tgz" integrity sha512-BTCqyBaWBTsauvnHiE8i562+EdJj+oUpkqWp2R1iCoR8f6oo8STRu3of7WJJ0TqWtxN50a5YFpzYK4Jj9esYfQ== filesize@^6.1.0: version "6.4.0" - resolved "https://registry.yarnpkg.com/filesize/-/filesize-6.4.0.tgz#914f50471dd66fdca3cefe628bd0cde4ef769bcd" + resolved "https://registry.npmjs.org/filesize/-/filesize-6.4.0.tgz" integrity sha512-mjFIpOHC4jbfcTfoh4rkWpI31mF7viw9ikj/JyLoKzqlwG/YsefKfvYlYhdYdg/9mtK2z1AzgN/0LvVQ3zdlSQ== fill-keys@^1.0.2: version "1.0.2" - resolved "https://registry.yarnpkg.com/fill-keys/-/fill-keys-1.0.2.tgz#9a8fa36f4e8ad634e3bf6b4f3c8882551452eb20" + resolved "https://registry.npmjs.org/fill-keys/-/fill-keys-1.0.2.tgz" integrity sha512-tcgI872xXjwFF4xgQmLxi76GnwJG3g/3isB1l4/G5Z4zrbddGpBjqZCO9oEAcB5wX0Hj/5iQB3toxfO7in1hHA== dependencies: is-object "~1.0.1" @@ -12766,7 +13120,7 @@ fill-keys@^1.0.2: fill-range@^2.1.0: version "2.2.4" - resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-2.2.4.tgz#eb1e773abb056dcd8df2bfdf6af59b8b3a936565" + resolved "https://registry.npmjs.org/fill-range/-/fill-range-2.2.4.tgz" integrity sha512-cnrcCbj01+j2gTG921VZPnHbjmdAf8oQV/iGeV2kZxGSyfYjjTyY79ErsK1WJWMpw6DaApEX72binqJE+/d+5Q== dependencies: is-number "^2.1.0" @@ -12777,7 +13131,7 @@ fill-range@^2.1.0: fill-range@^4.0.0: version "4.0.0" - resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-4.0.0.tgz#d544811d428f98eb06a63dc402d2403c328c38f7" + resolved "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz" integrity sha512-VcpLTWqWDiTerugjj8e3+esbg+skS3M9e54UuR3iCeIDMXCLTsAH8hTSzDQU/X6/6t3eYkOKoZSef2PlU6U1XQ== dependencies: extend-shallow "^2.0.1" @@ -12787,14 +13141,14 @@ fill-range@^4.0.0: fill-range@^7.0.1: version "7.0.1" - resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40" + resolved "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz" integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ== dependencies: to-regex-range "^5.0.1" finalhandler@1.1.2: version "1.1.2" - resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.1.2.tgz#b7e7d000ffd11938d0fdb053506f6ebabe9f587d" + resolved "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz" integrity sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA== dependencies: debug "2.6.9" @@ -12807,7 +13161,7 @@ finalhandler@1.1.2: finalhandler@1.2.0: version "1.2.0" - resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.2.0.tgz#7d23fe5731b207b4640e4fcd00aec1f9207a7b32" + resolved "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz" integrity sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg== dependencies: debug "2.6.9" @@ -12820,7 +13174,7 @@ finalhandler@1.2.0: find-cache-dir@^2.1.0: version "2.1.0" - resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-2.1.0.tgz#8d0f94cd13fe43c6c7c261a0d86115ca918c05f7" + resolved "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-2.1.0.tgz" integrity sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ== dependencies: commondir "^1.0.1" @@ -12837,14 +13191,14 @@ find-replace@^1.0.3: find-up@3.0.0, find-up@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/find-up/-/find-up-3.0.0.tgz#49169f1d7993430646da61ecc5ae355c21c97b73" + resolved "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz" integrity sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg== dependencies: locate-path "^3.0.0" find-up@4.1.0, find-up@^4.0.0, find-up@^4.1.0: version "4.1.0" - resolved "https://registry.yarnpkg.com/find-up/-/find-up-4.1.0.tgz#97afe7d6cdc0bc5928584b7c8d7b16e8a9aa5d19" + resolved "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz" integrity sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw== dependencies: locate-path "^5.0.0" @@ -12852,7 +13206,7 @@ find-up@4.1.0, find-up@^4.0.0, find-up@^4.1.0: find-up@5.0.0: version "5.0.0" - resolved "https://registry.yarnpkg.com/find-up/-/find-up-5.0.0.tgz#4c92819ecb7083561e4f4a240a86be5198f536fc" + resolved "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz" integrity sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng== dependencies: locate-path "^6.0.0" @@ -12860,7 +13214,7 @@ find-up@5.0.0: find-up@^1.0.0: version "1.1.2" - resolved "https://registry.yarnpkg.com/find-up/-/find-up-1.1.2.tgz#6b2e9822b1a2ce0a60ab64d610eccad53cb24d0f" + resolved "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz" integrity sha512-jvElSjyuo4EMQGoTwo1uJU5pQMwTW5lS1x05zzfJuTIyLR3zwO27LYrxNg+dlvKpGOuGy/MzBdXh80g0ve5+HA== dependencies: path-exists "^2.0.0" @@ -12868,7 +13222,7 @@ find-up@^1.0.0: find-up@^2.0.0, find-up@^2.1.0: version "2.1.0" - resolved "https://registry.yarnpkg.com/find-up/-/find-up-2.1.0.tgz#45d1b7e506c717ddd482775a2b77920a3c0c57a7" + resolved "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz" integrity sha512-NWzkk0jSJtTt08+FBFMvXoeZnOJD+jTtsRmBYbAIzJdX6l7dLgR7CTubCM5/eDdPUBvLCeVasP1brfVR/9/EZQ== dependencies: locate-path "^2.0.0" @@ -12882,7 +13236,7 @@ find-yarn-workspace-root@^2.0.0: findup-sync@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/findup-sync/-/findup-sync-1.0.0.tgz#6f7e4b57b6ee3a4037b4414eaedea3f58f71e0ec" + resolved "https://registry.npmjs.org/findup-sync/-/findup-sync-1.0.0.tgz" integrity sha512-VyWlYDW822Fybow9EjxaArNhS296zu4eYUWI+l2SVfo0/iqvodwI83RBwXSMczgcEejZGOg5+cGJc53OIdtjjA== dependencies: detect-file "^0.1.0" @@ -12892,7 +13246,7 @@ findup-sync@^1.0.0: firebase-admin@^11.10.1: version "11.10.1" - resolved "https://registry.yarnpkg.com/firebase-admin/-/firebase-admin-11.10.1.tgz#5f0f83a44627e89938d350c5e4bbac76596c963e" + resolved "https://registry.npmjs.org/firebase-admin/-/firebase-admin-11.10.1.tgz" integrity sha512-atv1E6GbuvcvWaD3eHwrjeP5dAVs+EaHEJhu9CThMzPY6In8QYDiUR6tq5SwGl4SdA/GcAU0nhwWc/FSJsAzfQ== dependencies: "@fastify/busboy" "^1.2.1" @@ -12909,7 +13263,7 @@ firebase-admin@^11.10.1: firebase-admin@^9.12.0: version "9.12.0" - resolved "https://registry.yarnpkg.com/firebase-admin/-/firebase-admin-9.12.0.tgz#d7e889e97c9c31610efbcd131bb6d06a783af757" + resolved "https://registry.npmjs.org/firebase-admin/-/firebase-admin-9.12.0.tgz" integrity sha512-AtA7OH5RbIFGoc0gZOQgaYC6cdjdhZv4w3XgWoupkPKO1HY+0GzixOuXDa75kFeoVyhIyo4PkLg/GAC1dC1P6w== dependencies: "@firebase/database-compat" "^0.1.1" @@ -12925,7 +13279,7 @@ firebase-admin@^9.12.0: firebase-functions-test@^0.3.3: version "0.3.3" - resolved "https://registry.yarnpkg.com/firebase-functions-test/-/firebase-functions-test-0.3.3.tgz#d26626d6c3edb03cd27eb79c12980c2551722517" + resolved "https://registry.npmjs.org/firebase-functions-test/-/firebase-functions-test-0.3.3.tgz" integrity sha512-dCppF/2Ztv87IyyBaUQlT1Z05ial5v/3LB0huS2ktXz05yNiID5FVIKtO0/+w9Q7/SThJ8qIDG0hoGDPt4Xcug== dependencies: "@types/lodash" "^4.14.104" @@ -12933,7 +13287,7 @@ firebase-functions-test@^0.3.3: firebase-functions-test@^3.1.0: version "3.1.0" - resolved "https://registry.yarnpkg.com/firebase-functions-test/-/firebase-functions-test-3.1.0.tgz#5f0946237d004d86db5ff8cfab2ab0a566ffdb75" + resolved "https://registry.npmjs.org/firebase-functions-test/-/firebase-functions-test-3.1.0.tgz" integrity sha512-yfm9ToguShxmRXb7TINN88zE2bM9gsBbs7vMWVKJAxGcl/n1f/U0sT5k2yho676QIcSqXVSjCONU8W4cUEL+Sw== dependencies: "@types/lodash" "^4.14.104" @@ -12942,7 +13296,7 @@ firebase-functions-test@^3.1.0: firebase-functions@^3.15.7: version "3.24.1" - resolved "https://registry.yarnpkg.com/firebase-functions/-/firebase-functions-3.24.1.tgz#50d13274c4ae96b2308a67e9fc76f1a74cff690d" + resolved "https://registry.npmjs.org/firebase-functions/-/firebase-functions-3.24.1.tgz" integrity sha512-GYhoyOV0864HFMU1h/JNBXYNmDk2MlbvU7VO/5qliHX6u/6vhSjTJjlyCG4leDEI8ew8IvmkIC5QquQ1U8hAuA== dependencies: "@types/cors" "^2.8.5" @@ -12954,7 +13308,7 @@ firebase-functions@^3.15.7: firebase-functions@^4.4.1: version "4.4.1" - resolved "https://registry.yarnpkg.com/firebase-functions/-/firebase-functions-4.4.1.tgz#209fa3a157476722382e71782fe3375b78a529ff" + resolved "https://registry.npmjs.org/firebase-functions/-/firebase-functions-4.4.1.tgz" integrity sha512-3no53Lg12ToNlPSgLZtAFLQAz6si7ilHvzO8NC3/2EybyUwegpj5YhHwNiCw839lmAWp3znjATJDTvADFiZMrg== dependencies: "@types/cors" "^2.8.5" @@ -12966,7 +13320,7 @@ firebase-functions@^4.4.1: firebase-tools@12.4.7: version "12.4.7" - resolved "https://registry.yarnpkg.com/firebase-tools/-/firebase-tools-12.4.7.tgz#3c581b9ef32d39221eaa11735bbb59a299d6d74a" + resolved "https://registry.npmjs.org/firebase-tools/-/firebase-tools-12.4.7.tgz" integrity sha512-L5nULzh0PElm2OK5lXsj7zkIwBBB4KsGOg0CvCnjdvJ1ROMN2IqffJ0KR/8paXuGWf5SA0VJj2QjG37jFxrAjg== dependencies: "@google-cloud/pubsub" "^3.0.1" @@ -13032,7 +13386,7 @@ firebase-tools@12.4.7: firebase-tools@9.20.0: version "9.20.0" - resolved "https://registry.yarnpkg.com/firebase-tools/-/firebase-tools-9.20.0.tgz#96a551147ccc8720e976357c85fb037e371a030d" + resolved "https://registry.npmjs.org/firebase-tools/-/firebase-tools-9.20.0.tgz" integrity sha512-/5LzkZtW8aC57syHf34FXY1w6g9unb7qdvtlYROdJA33sk2xsWsJmuvtJylhYhTNX8zrwFsmiTHRlaBxA9YWtg== dependencies: "@google-cloud/pubsub" "^2.7.0" @@ -13096,7 +13450,7 @@ firebase-tools@9.20.0: flat-arguments@^1.0.0: version "1.0.2" - resolved "https://registry.yarnpkg.com/flat-arguments/-/flat-arguments-1.0.2.tgz#9baa780adf0501f282d726c9c6a038dba44ea76f" + resolved "https://registry.npmjs.org/flat-arguments/-/flat-arguments-1.0.2.tgz" integrity sha512-ZIkB09bqQdKP9buPOiZcS/4HK3q992C5q62qAE72d0xWAXfaSbP840BZYUBgHRkzdx6jYRIpKT4ur+Nay/JRlg== dependencies: array-flatten "^1.0.0" @@ -13106,7 +13460,7 @@ flat-arguments@^1.0.0: flat-cache@^2.0.1: version "2.0.1" - resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-2.0.1.tgz#5d296d6f04bda44a4630a301413bdbc2ec085ec0" + resolved "https://registry.npmjs.org/flat-cache/-/flat-cache-2.0.1.tgz" integrity sha512-LoQe6yDuUMDzQAEH8sgmh4Md6oZnc/7PjtwjNFSzveXqSHt6ka9fPBuso7IGf9Rz4uqnSnWiFH2B/zj24a5ReA== dependencies: flatted "^2.0.0" @@ -13115,75 +13469,75 @@ flat-cache@^2.0.1: flat@^4.1.0: version "4.1.1" - resolved "https://registry.yarnpkg.com/flat/-/flat-4.1.1.tgz#a392059cc382881ff98642f5da4dde0a959f309b" + resolved "https://registry.npmjs.org/flat/-/flat-4.1.1.tgz" integrity sha512-FmTtBsHskrU6FJ2VxCnsDb84wu9zhmO3cUX2kGFb5tuwhfXxGciiT0oRY+cck35QmG+NmGh5eLz6lLCpWTqwpA== dependencies: is-buffer "~2.0.3" flat@^5.0.2: version "5.0.2" - resolved "https://registry.yarnpkg.com/flat/-/flat-5.0.2.tgz#8ca6fe332069ffa9d324c327198c598259ceb241" + 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.yarnpkg.com/flatted/-/flatted-2.0.2.tgz#4575b21e2bcee7434aa9be662f4b7b5f9c2b5138" + resolved "https://registry.npmjs.org/flatted/-/flatted-2.0.2.tgz" integrity sha512-r5wGx7YeOwNWNlCA0wQ86zKyDLMQr+/RB8xy74M4hTphfmjlijTSSXGuH8rnvKZnfT9i+75zmd8jcKdMR4O6jA== flow-stoplight@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/flow-stoplight/-/flow-stoplight-1.0.0.tgz#4a292c5bcff8b39fa6cc0cb1a853d86f27eeff7b" + resolved "https://registry.npmjs.org/flow-stoplight/-/flow-stoplight-1.0.0.tgz" integrity sha512-rDjbZUKpN8OYhB0IE/vY/I8UWO/602IIJEU/76Tv4LvYnwHCk0BCsvz4eRr9n+FQcri7L5cyaXOo0+/Kh4HisA== fn.name@1.x.x: version "1.1.0" - resolved "https://registry.yarnpkg.com/fn.name/-/fn.name-1.1.0.tgz#26cad8017967aea8731bc42961d04a3d5988accc" + resolved "https://registry.npmjs.org/fn.name/-/fn.name-1.1.0.tgz" integrity sha512-GRnmB5gPyJpAhTQdSZTSp9uaPSvl09KoYcMQtsB9rQoOmzs9dH6ffeccH+Z+cv6P68Hu5bC6JjRh4Ah/mHSNRw== follow-redirects@1.5.10: version "1.5.10" - resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.5.10.tgz#7b7a9f9aea2fdff36786a94ff643ed07f4ff5e2a" + resolved "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.5.10.tgz" integrity sha512-0V5l4Cizzvqt5D44aTXbFZz+FtyXV1vrDN6qrelxtfYQKW0KO0W2T/hkE8xvGa/540LkZlkaUjO4ailYTFtHVQ== dependencies: debug "=3.1.0" follow-redirects@^1.12.1, follow-redirects@^1.14.0, follow-redirects@^1.14.7, follow-redirects@^1.15.0: version "1.15.2" - resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.15.2.tgz#b460864144ba63f2681096f274c4e57026da2c13" + resolved "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.2.tgz" integrity sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA== for-each@^0.3.3, for-each@~0.3.3: version "0.3.3" - resolved "https://registry.yarnpkg.com/for-each/-/for-each-0.3.3.tgz#69b447e88a0a5d32c3e7084f3f1710034b21376e" + resolved "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz" integrity sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw== dependencies: is-callable "^1.1.3" for-in@^0.1.3: version "0.1.8" - resolved "https://registry.yarnpkg.com/for-in/-/for-in-0.1.8.tgz#d8773908e31256109952b1fdb9b3fa867d2775e1" + resolved "https://registry.npmjs.org/for-in/-/for-in-0.1.8.tgz" integrity sha512-F0to7vbBSHP8E3l6dCjxNOLuSFAACIxFy3UehTUlG7svlXi37HHsDkyVcHo0Pq8QwrE+pXvWSVX3ZT1T9wAZ9g== for-in@^1.0.1, for-in@^1.0.2: version "1.0.2" - resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80" + resolved "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz" integrity sha512-7EwmXrOjyL+ChxMhmG5lnW9MPt1aIeZEwKhQzoBUdTV0N3zuwWDZYVJatDvZ2OyzPUvdIAZDsCetk3coyMfcnQ== for-own@^0.1.3, for-own@^0.1.4: version "0.1.5" - resolved "https://registry.yarnpkg.com/for-own/-/for-own-0.1.5.tgz#5265c681a4f294dabbf17c9509b6763aa84510ce" + resolved "https://registry.npmjs.org/for-own/-/for-own-0.1.5.tgz" integrity sha512-SKmowqGTJoPzLO1T0BBJpkfp3EMacCMOuH40hOUbrbzElVktk4DioXVM99QkLCyKoiuOmyjgcWMpVz2xjE7LZw== dependencies: for-in "^1.0.1" foreach@^2.0.4: version "2.0.6" - resolved "https://registry.yarnpkg.com/foreach/-/foreach-2.0.6.tgz#87bcc8a1a0e74000ff2bf9802110708cfb02eb6e" + resolved "https://registry.npmjs.org/foreach/-/foreach-2.0.6.tgz" integrity sha512-k6GAGDyqLe9JaebCsFCoudPPWfihKu8pylYXRlqP1J7ms39iPoTtk2fviNglIeQEwdh0bQeKJ01ZPyuyQvKzwg== foreground-child@^3.1.0: version "3.1.1" - resolved "https://registry.yarnpkg.com/foreground-child/-/foreground-child-3.1.1.tgz#1d173e776d75d2772fed08efe4a0de1ea1b12d0d" + resolved "https://registry.npmjs.org/foreground-child/-/foreground-child-3.1.1.tgz" integrity sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg== dependencies: cross-spawn "^7.0.0" @@ -13191,17 +13545,17 @@ foreground-child@^3.1.0: forever-agent@~0.6.1: version "0.6.1" - resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91" + resolved "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz" integrity sha512-j0KLYPhm6zeac4lz3oJ3o65qvgQCcPubiyotZrXqEaG4hNagNYO8qdlUrX5vwqv9ohqeT/Z3j6+yW067yWWdUw== form-data-encoder@1.7.1: version "1.7.1" - resolved "https://registry.yarnpkg.com/form-data-encoder/-/form-data-encoder-1.7.1.tgz#ac80660e4f87ee0d3d3c3638b7da8278ddb8ec96" + resolved "https://registry.npmjs.org/form-data-encoder/-/form-data-encoder-1.7.1.tgz" integrity sha512-EFRDrsMm/kyqbTQocNvRXMLjc7Es2Vk+IQFx/YW7hkUH1eBl4J1fqiP34l74Yt0pFLCNpc06fkbVk00008mzjg== form-data@^2.2.0, form-data@^2.5.0: version "2.5.1" - resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.5.1.tgz#f2cbec57b5e59e23716e128fe44d4e5dd23895f4" + resolved "https://registry.npmjs.org/form-data/-/form-data-2.5.1.tgz" integrity sha512-m21N3WOmEEURgk6B9GLOE4RuWOFf28Lhh9qGYeNlGq4VDXUlJy2th2slBNU8Gp8EzloYZOibZJ7t5ecIrFSjVA== dependencies: asynckit "^0.4.0" @@ -13219,7 +13573,7 @@ form-data@^3.0.0: form-data@^4.0.0: version "4.0.0" - resolved "https://registry.yarnpkg.com/form-data/-/form-data-4.0.0.tgz#93919daeaf361ee529584b9b31664dc12c9fa452" + resolved "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz" integrity sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww== dependencies: asynckit "^0.4.0" @@ -13228,7 +13582,7 @@ form-data@^4.0.0: form-data@~2.3.2: version "2.3.3" - resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.3.3.tgz#dcce52c05f644f298c6a7ab936bd724ceffbf3a6" + resolved "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz" integrity sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ== dependencies: asynckit "^0.4.0" @@ -13237,7 +13591,7 @@ form-data@~2.3.2: formidable@^2.1.2: version "2.1.2" - resolved "https://registry.yarnpkg.com/formidable/-/formidable-2.1.2.tgz#fa973a2bec150e4ce7cac15589d7a25fc30ebd89" + resolved "https://registry.npmjs.org/formidable/-/formidable-2.1.2.tgz" integrity sha512-CM3GuJ57US06mlpQ47YcunuUZ9jpm8Vx+P2CGt2j7HpgkKZO/DJYQ0Bobim8G6PFQmK5lOqOOdUXboU+h73A4g== dependencies: dezalgo "^1.0.4" @@ -13247,17 +13601,17 @@ formidable@^2.1.2: forwarded@0.2.0: version "0.2.0" - resolved "https://registry.yarnpkg.com/forwarded/-/forwarded-0.2.0.tgz#2269936428aad4c15c7ebe9779a84bf0b2a81811" + resolved "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz" integrity sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow== fp-ts@2.1.1: version "2.1.1" - resolved "https://registry.yarnpkg.com/fp-ts/-/fp-ts-2.1.1.tgz#c910544499d7c959351bb4260ee7c44a544084c1" + resolved "https://registry.npmjs.org/fp-ts/-/fp-ts-2.1.1.tgz" integrity sha512-YcWhMdDCFCja0MmaDroTgNu+NWWrrnUEn92nvDgrtVy9Z71YFnhNVIghoHPt8gs82ijoMzFGeWKvArbyICiJgw== fraction.js@4.0.12: version "4.0.12" - resolved "https://registry.yarnpkg.com/fraction.js/-/fraction.js-4.0.12.tgz#0526d47c65a5fb4854df78bc77f7bec708d7b8c3" + resolved "https://registry.npmjs.org/fraction.js/-/fraction.js-4.0.12.tgz" integrity sha512-8Z1K0VTG4hzYY7kA/1sj4/r1/RWLBD3xwReT/RCrUCbzPszjNQCCsy3ktkU/eaEqX3MYa4pY37a52eiBlPMlhA== fragment-cache@^0.2.1: @@ -13269,22 +13623,22 @@ fragment-cache@^0.2.1: fresh@0.5.2: version "0.5.2" - resolved "https://registry.yarnpkg.com/fresh/-/fresh-0.5.2.tgz#3d8cadd90d976569fa835ab1f8e4b23a105605a7" + resolved "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz" integrity sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q== fs-constants@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/fs-constants/-/fs-constants-1.0.0.tgz#6be0de9be998ce16af8afc24497b9ee9b7ccd9ad" + resolved "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz" integrity sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow== fs-exists-sync@^0.1.0: version "0.1.0" - resolved "https://registry.yarnpkg.com/fs-exists-sync/-/fs-exists-sync-0.1.0.tgz#982d6893af918e72d08dec9e8673ff2b5a8d6add" + resolved "https://registry.npmjs.org/fs-exists-sync/-/fs-exists-sync-0.1.0.tgz" integrity sha512-cR/vflFyPZtrN6b38ZyWxpWdhlXrzZEBawlpBQMq7033xVY7/kg0GDMBK5jg8lDYQckdJ5x/YC88lM3C7VMsLg== fs-extra@^0.30.0: version "0.30.0" - resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-0.30.0.tgz#f233ffcc08d4da7d432daa449776989db1df93f0" + resolved "https://registry.npmjs.org/fs-extra/-/fs-extra-0.30.0.tgz" integrity sha512-UvSPKyhMn6LEd/WpUaV9C9t3zATuqoqfWc3QdPhPLb58prN9tqYPlPWi8Krxi44loBoUzlobqZ3+8tGpxxSzwA== dependencies: graceful-fs "^4.1.2" @@ -13295,7 +13649,7 @@ fs-extra@^0.30.0: fs-extra@^10.1.0: version "10.1.0" - resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-10.1.0.tgz#02873cfbc4084dde127eaa5f9905eef2325d1abf" + resolved "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz" integrity sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ== dependencies: graceful-fs "^4.2.0" @@ -13304,7 +13658,7 @@ fs-extra@^10.1.0: fs-extra@^11.1.0: version "11.1.1" - resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-11.1.1.tgz#da69f7c39f3b002378b0954bb6ae7efdc0876e2d" + resolved "https://registry.npmjs.org/fs-extra/-/fs-extra-11.1.1.tgz" integrity sha512-MGIE4HOvQCeUCzmlHs0vXpih4ysz4wg9qiSAu6cd42lVwPbTM1TjV7RusoyQqMmk/95gdQZX72u+YW+c3eEpFQ== dependencies: graceful-fs "^4.2.0" @@ -13313,7 +13667,7 @@ fs-extra@^11.1.0: fs-extra@^4.0.2: version "4.0.3" - resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-4.0.3.tgz#0d852122e5bc5beb453fb028e9c0c9bf36340c94" + resolved "https://registry.npmjs.org/fs-extra/-/fs-extra-4.0.3.tgz" integrity sha512-q6rbdDd1o2mAnQreO7YADIxf/Whx4AHBiRf6d+/cVT8h44ss+lHgxf1FemcqDnQt9X3ct4McHr+JMGlYSsK7Cg== dependencies: graceful-fs "^4.1.2" @@ -13322,7 +13676,7 @@ fs-extra@^4.0.2: fs-extra@^5.0.0: version "5.0.0" - resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-5.0.0.tgz#414d0110cdd06705734d055652c5411260c31abd" + resolved "https://registry.npmjs.org/fs-extra/-/fs-extra-5.0.0.tgz" integrity sha512-66Pm4RYbjzdyeuqudYqhFiNBbCIuI9kgRqLPSHIlXHidW8NIQtVdkM1yeZ4lXwuhbTETv3EUGMNHAAw6hiundQ== dependencies: graceful-fs "^4.1.2" @@ -13331,7 +13685,7 @@ fs-extra@^5.0.0: fs-extra@^6.0.1: version "6.0.1" - resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-6.0.1.tgz#8abc128f7946e310135ddc93b98bddb410e7a34b" + resolved "https://registry.npmjs.org/fs-extra/-/fs-extra-6.0.1.tgz" integrity sha512-GnyIkKhhzXZUWFCaJzvyDLEEgDkPfb4/TPvJCJVuS8MWZgoSsErf++QpiAlDnKFcqhRlm+tIOcencCjyJE6ZCA== dependencies: graceful-fs "^4.1.2" @@ -13340,7 +13694,7 @@ fs-extra@^6.0.1: fs-extra@^7.0.0: version "7.0.1" - resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-7.0.1.tgz#4f189c44aa123b895f722804f55ea23eadc348e9" + resolved "https://registry.npmjs.org/fs-extra/-/fs-extra-7.0.1.tgz" integrity sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw== dependencies: graceful-fs "^4.1.2" @@ -13349,7 +13703,7 @@ fs-extra@^7.0.0: fs-extra@^8.1, fs-extra@^8.1.0: version "8.1.0" - resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-8.1.0.tgz#49d43c45a88cd9677668cb7be1b46efdb8d2e1c0" + resolved "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz" integrity sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g== dependencies: graceful-fs "^4.2.0" @@ -13358,7 +13712,7 @@ fs-extra@^8.1, fs-extra@^8.1.0: fs-extra@^9.0, fs-extra@^9.0.0, fs-extra@^9.0.1, fs-extra@^9.1.0: version "9.1.0" - resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-9.1.0.tgz#5954460c764a8da2094ba3554bf839e6b9a7c86d" + resolved "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz" integrity sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ== dependencies: at-least-node "^1.0.0" @@ -13368,24 +13722,24 @@ fs-extra@^9.0, fs-extra@^9.0.0, fs-extra@^9.0.1, fs-extra@^9.1.0: fs-minipass@^1.2.7: version "1.2.7" - resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-1.2.7.tgz#ccff8570841e7fe4265693da88936c55aed7f7c7" + resolved "https://registry.npmjs.org/fs-minipass/-/fs-minipass-1.2.7.tgz" integrity sha512-GWSSJGFy4e9GUeCcbIkED+bgAoFyj7XF1mV8rma3QW4NIqX9Kyx79N/PF61H5udOV3aY1IaMLs6pGbH71nlCTA== dependencies: minipass "^2.6.0" fs-minipass@^2.0.0, fs-minipass@^2.1.0: version "2.1.0" - resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-2.1.0.tgz#7f5036fdbf12c63c169190cbe4199c852271f9fb" + resolved "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz" integrity sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg== dependencies: minipass "^3.0.0" fs-minipass@^3.0.0: - version "3.0.2" - resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-3.0.2.tgz#5b383858efa8c1eb8c33b39e994f7e8555b8b3a3" - integrity sha512-2GAfyfoaCDRrM6jaOS3UsBts8yJ55VioXdWcOL7dK9zdAuKT71+WBA4ifnNYqVjYv+4SsPxjK0JT4yIIn4cA/g== + version "3.0.3" + resolved "https://registry.npmjs.org/fs-minipass/-/fs-minipass-3.0.3.tgz" + integrity sha512-XUBA9XClHbnJWSfBzjkm6RvPsyg3sryZt06BEQoXcF7EK/xpGaQYJgQKDJSUH5SGZ76Y7pFx1QBnXz09rU5Fbw== dependencies: - minipass "^5.0.0" + minipass "^7.0.3" fs-readdir-recursive@^1.1.0: version "1.1.0" @@ -13394,22 +13748,22 @@ fs-readdir-recursive@^1.1.0: fs.realpath@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" + resolved "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz" integrity sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw== fsevents@^2.3.2, fsevents@~2.3.2: version "2.3.2" - resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.2.tgz#8a526f78b8fdf4623b709e0b975c52c24c02fd1a" + resolved "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz" integrity sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA== fsevents@~2.1.1, fsevents@~2.1.2: version "2.1.3" - resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.1.3.tgz#fb738703ae8d2f9fe900c33836ddebee8b97f23e" + resolved "https://registry.npmjs.org/fsevents/-/fsevents-2.1.3.tgz" integrity sha512-Auw9a4AxqWpa9GUfj370BMPzzyncfBABW8Mab7BGWBYDj4Isgq+cDKtx0i6u9jcX9pQDnswsaaOTgTmA5pEjuQ== fstream@^1.0.12: version "1.0.12" - resolved "https://registry.yarnpkg.com/fstream/-/fstream-1.0.12.tgz#4e8ba8ee2d48be4f7d0de505455548eae5932045" + resolved "https://registry.npmjs.org/fstream/-/fstream-1.0.12.tgz" integrity sha512-WvJ193OHa0GHPEL+AycEJgxvBEwyfRkN1vhjca23OaPVMCaLCXTd5qAu82AjTcgP1UJmytkOKb63Ypde7raDIg== dependencies: graceful-fs "^4.1.2" @@ -13419,7 +13773,7 @@ fstream@^1.0.12: ftp@^0.3.10: version "0.3.10" - resolved "https://registry.yarnpkg.com/ftp/-/ftp-0.3.10.tgz#9197d861ad8142f3e63d5a83bfe4c59f7330885d" + resolved "https://registry.npmjs.org/ftp/-/ftp-0.3.10.tgz" integrity sha512-faFVML1aBx2UoDStmLwv2Wptt4vw5x03xxX172nhA5Y5HBshW5JweqQ2W4xL4dezQTG8inJsuYcpPHHU3X5OTQ== dependencies: readable-stream "1.1.x" @@ -13427,12 +13781,12 @@ ftp@^0.3.10: function-bind@^1.1.1: version "1.1.1" - resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" + resolved "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz" integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== function.prototype.name@^1.1.5: version "1.1.5" - resolved "https://registry.yarnpkg.com/function.prototype.name/-/function.prototype.name-1.1.5.tgz#cce0505fe1ffb80503e6f9e46cc64e46a12a9621" + resolved "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.5.tgz" integrity sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA== dependencies: call-bind "^1.0.2" @@ -13442,17 +13796,17 @@ function.prototype.name@^1.1.5: functional-red-black-tree@^1.0.1, functional-red-black-tree@~1.0.1: version "1.0.1" - resolved "https://registry.yarnpkg.com/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz#1b0ab3bd553b2a0d6399d29c0e3ea0b252078327" + resolved "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz" integrity sha512-dsKNQNdj6xA3T+QlADDA7mOSlX0qiMINjn0cgr+eGHGsbSHzTabcIogz2+p/iqP1Xs6EP/sS2SbqH+brGTbq0g== functions-have-names@^1.2.2, 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" + resolved "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz" integrity sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ== ganache@7.8.0, ganache@^7.4.0, "ganache@npm:@celo/ganache@7.8.0-unofficial.0": version "7.8.0-unofficial.0" - resolved "https://registry.yarnpkg.com/@celo/ganache/-/ganache-7.8.0-unofficial.0.tgz#7930a68ea8df36c7862425a164b44e3e89cb3d0f" + resolved "https://registry.npmjs.org/@celo/ganache/-/ganache-7.8.0-unofficial.0.tgz" integrity sha512-csobquRjvgG/0mzw6NRB4ga+idPq7yQKLISNbxn2JSS/nCkGCTKn4yvTJqhmZ1dzwL2U3qHmGer2qXlxFQgbdg== dependencies: "@trufflesuite/bigint-buffer" "1.1.10" @@ -13473,7 +13827,7 @@ ganache@7.8.0, ganache@^7.4.0, "ganache@npm:@celo/ganache@7.8.0-unofficial.0": gauge@^3.0.0: version "3.0.2" - resolved "https://registry.yarnpkg.com/gauge/-/gauge-3.0.2.tgz#03bf4441c044383908bcfa0656ad91803259b395" + resolved "https://registry.npmjs.org/gauge/-/gauge-3.0.2.tgz" integrity sha512-+5J6MS/5XksCuXq++uFRsnUd7Ovu1XenbeuIuNRJxYWjgQbPuFhT14lAvsWfqfAmnwluf1OwMjz39HjfLPci0Q== dependencies: aproba "^1.0.3 || ^2.0.0" @@ -13488,7 +13842,7 @@ gauge@^3.0.0: gauge@^4.0.3: version "4.0.4" - resolved "https://registry.yarnpkg.com/gauge/-/gauge-4.0.4.tgz#52ff0652f2bbf607a989793d53b751bef2328dce" + resolved "https://registry.npmjs.org/gauge/-/gauge-4.0.4.tgz" integrity sha512-f9m+BEN5jkg6a0fZjleidjN51VE1X+mPFQ2DJ0uv1V39oCLCbsGe6yjbBnp7eK7z/+GAon99a3nHuqbuuthyPg== dependencies: aproba "^1.0.3 || ^2.0.0" @@ -13502,7 +13856,7 @@ gauge@^4.0.3: gauge@~2.7.3: version "2.7.4" - resolved "https://registry.yarnpkg.com/gauge/-/gauge-2.7.4.tgz#2c03405c7538c39d7eb37b317022e325fb018bf7" + resolved "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz" integrity sha512-14x4kjc6lkD3ltw589k0NrPD6cCNTD6CWoVUNpB85+DrtONoZn+Rug6xZU5RvSC4+TZPxA5AnBibQYAvZn41Hg== dependencies: aproba "^1.0.3" @@ -13516,7 +13870,7 @@ gauge@~2.7.3: gaxios@^1.0.2, gaxios@^1.0.4, gaxios@^1.2.1, gaxios@^1.2.2, gaxios@^1.5.0: version "1.8.4" - resolved "https://registry.yarnpkg.com/gaxios/-/gaxios-1.8.4.tgz#e08c34fe93c0a9b67a52b7b9e7a64e6435f9a339" + resolved "https://registry.npmjs.org/gaxios/-/gaxios-1.8.4.tgz" integrity sha512-BoENMnu1Gav18HcpV9IleMPZ9exM+AvUjrAOV4Mzs/vfz2Lu/ABv451iEXByKiMPn2M140uul1txXCg83sAENw== dependencies: abort-controller "^3.0.0" @@ -13526,7 +13880,7 @@ gaxios@^1.0.2, gaxios@^1.0.4, gaxios@^1.2.1, gaxios@^1.2.2, gaxios@^1.5.0: gaxios@^4.0.0: version "4.3.3" - resolved "https://registry.yarnpkg.com/gaxios/-/gaxios-4.3.3.tgz#d44bdefe52d34b6435cc41214fdb160b64abfc22" + resolved "https://registry.npmjs.org/gaxios/-/gaxios-4.3.3.tgz" integrity sha512-gSaYYIO1Y3wUtdfHmjDUZ8LWaxJQpiavzbF5Kq53akSzvmVg0RfyOcFDbO1KJ/KCGRFz2qG+lS81F0nkr7cRJA== dependencies: abort-controller "^3.0.0" @@ -13537,7 +13891,7 @@ gaxios@^4.0.0: gaxios@^5.0.0, gaxios@^5.0.1: version "5.1.3" - resolved "https://registry.yarnpkg.com/gaxios/-/gaxios-5.1.3.tgz#f7fa92da0fe197c846441e5ead2573d4979e9013" + resolved "https://registry.npmjs.org/gaxios/-/gaxios-5.1.3.tgz" integrity sha512-95hVgBRgEIRQQQHIbnxBXeHbW4TqFk4ZDJW7wmVtvYar72FdhRIo1UGOLS2eRAKCPEdPBWu+M7+A33D9CdX9rA== dependencies: extend "^3.0.2" @@ -13547,7 +13901,7 @@ gaxios@^5.0.0, gaxios@^5.0.1: gcp-metadata@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/gcp-metadata/-/gcp-metadata-1.0.0.tgz#5212440229fa099fc2f7c2a5cdcb95575e9b2ca6" + resolved "https://registry.npmjs.org/gcp-metadata/-/gcp-metadata-1.0.0.tgz" integrity sha512-Q6HrgfrCQeEircnNP3rCcEgiDv7eF9+1B+1MMgpE190+/+0mjQR8PxeOaRgxZWmdDAF9EIryHB9g1moPiw1SbQ== dependencies: gaxios "^1.0.2" @@ -13555,7 +13909,7 @@ gcp-metadata@^1.0.0: gcp-metadata@^4.2.0: version "4.3.1" - resolved "https://registry.yarnpkg.com/gcp-metadata/-/gcp-metadata-4.3.1.tgz#fb205fe6a90fef2fd9c85e6ba06e5559ee1eefa9" + resolved "https://registry.npmjs.org/gcp-metadata/-/gcp-metadata-4.3.1.tgz" integrity sha512-x850LS5N7V1F3UcV7PoupzGsyD6iVwTVvsh3tbXfkctZnBnjW5yu5z1/3k3SehF7TyoTIe78rJs02GMMy+LF+A== dependencies: gaxios "^4.0.0" @@ -13563,7 +13917,7 @@ gcp-metadata@^4.2.0: gcp-metadata@^5.0.0, gcp-metadata@^5.3.0: version "5.3.0" - resolved "https://registry.yarnpkg.com/gcp-metadata/-/gcp-metadata-5.3.0.tgz#6f45eb473d0cb47d15001476b48b663744d25408" + resolved "https://registry.npmjs.org/gcp-metadata/-/gcp-metadata-5.3.0.tgz" integrity sha512-FNTkdNEnBdlqF2oatizolQqNANMrcqJt6AAYt99B3y1aLLC8Hc5IOBb+ZnnzllodEEf6xMBp6wRcBbc16fa65w== dependencies: gaxios "^5.0.0" @@ -13571,7 +13925,7 @@ gcp-metadata@^5.0.0, gcp-metadata@^5.3.0: gcs-resumable-upload@^1.0.0: version "1.1.0" - resolved "https://registry.yarnpkg.com/gcs-resumable-upload/-/gcs-resumable-upload-1.1.0.tgz#2b06f5876dcf60f18a309343f79ed951aff01399" + resolved "https://registry.npmjs.org/gcs-resumable-upload/-/gcs-resumable-upload-1.1.0.tgz" integrity sha512-uBz7uHqp44xjSDzG3kLbOYZDjxxR/UAGbB47A0cC907W6yd2LkcyFDTHg+bjivkHMwiJlKv4guVWcjPCk2zScg== dependencies: abort-controller "^2.0.2" @@ -13583,67 +13937,77 @@ gcs-resumable-upload@^1.0.0: generate-function@^2.3.1: version "2.3.1" - resolved "https://registry.yarnpkg.com/generate-function/-/generate-function-2.3.1.tgz#f069617690c10c868e73b8465746764f97c3479f" + resolved "https://registry.npmjs.org/generate-function/-/generate-function-2.3.1.tgz" integrity sha512-eeB5GfMNeevm/GRYq20ShmsaGcmI81kIX2K9XQx5miC8KdHaC6Jm0qQ8ZNeGOi7wYB8OsdxKs+Y2oVuTFuVwKQ== dependencies: is-property "^1.0.2" generate-password@^1.5.1: version "1.7.0" - resolved "https://registry.yarnpkg.com/generate-password/-/generate-password-1.7.0.tgz#00ba4eb1e71f89a72307b0d6604ee0d4e7f5770c" + resolved "https://registry.npmjs.org/generate-password/-/generate-password-1.7.0.tgz" integrity sha512-WPCtlfy0jexf7W5IbwxGUgpIDvsZIohbI2DAq2Q6TSlKKis+G4GT9sxvPxrZUGL8kP6WUXMWNqYnxY6DDKAdFA== gensync@^1.0.0-beta.2: version "1.0.0-beta.2" - resolved "https://registry.yarnpkg.com/gensync/-/gensync-1.0.0-beta.2.tgz#32a6ee76c3d7f52d46b2b1ae5d93fea8580a25e0" + resolved "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz" integrity sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg== get-caller-file@^1.0.1, get-caller-file@^1.0.2: version "1.0.3" - resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-1.0.3.tgz#f978fa4c90d1dfe7ff2d6beda2a515e713bdcf4a" + resolved "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.3.tgz" integrity sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w== get-caller-file@^2.0.1, get-caller-file@^2.0.5: version "2.0.5" - resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" + resolved "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz" integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== get-func-name@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/get-func-name/-/get-func-name-2.0.0.tgz#ead774abee72e20409433a066366023dd6887a41" + resolved "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.0.tgz" integrity sha512-Hm0ixYtaSZ/V7C8FJrtZIuBBI+iSgL+1Aq82zSu8VQNB4S3Gk8e7Qs3VwBDJAhmRZcFqkl3tQu36g/Foh5I5ig== get-installed-path@^2.0.3: version "2.1.1" - resolved "https://registry.yarnpkg.com/get-installed-path/-/get-installed-path-2.1.1.tgz#a1f33dc6b8af542c9331084e8edbe37fe2634152" + resolved "https://registry.npmjs.org/get-installed-path/-/get-installed-path-2.1.1.tgz" integrity sha512-Qkn9eq6tW5/q9BDVdMpB8tOHljX9OSP0jRC5TRNVA4qRc839t4g8KQaR8t0Uv0EFVL0MlyG7m/ofjEgAROtYsA== dependencies: global-modules "1.0.0" get-installed-path@^4.0.8: version "4.0.8" - resolved "https://registry.yarnpkg.com/get-installed-path/-/get-installed-path-4.0.8.tgz#a4fee849f5f327c12c551bb37477acd5151e5f7d" + resolved "https://registry.npmjs.org/get-installed-path/-/get-installed-path-4.0.8.tgz" integrity sha512-PmANK1xElIHlHH2tXfOoTnSDUjX1X3GvKK6ZyLbUnSCCn1pADwu67eVWttuPzJWrXDDT2MfO6uAaKILOFfitmA== dependencies: global-modules "1.0.0" get-intrinsic@^1.0.2, get-intrinsic@^1.1.1, get-intrinsic@^1.1.3, get-intrinsic@^1.2.0: version "1.2.0" - resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.2.0.tgz#7ad1dc0535f3a2904bba075772763e5051f6d05f" + resolved "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.0.tgz" integrity sha512-L049y6nFOuom5wGyRc3/gdTLO94dySVKRACj1RmJZBQXlbTMhtNIgkWkUHq+jYmZvKf14EW1EoJnnjbmoHij0Q== dependencies: function-bind "^1.1.1" has "^1.0.3" has-symbols "^1.0.3" +get-intrinsic@^1.2.1: + version "1.2.1" + resolved "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.1.tgz" + 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-package-type@^0.1.0: version "0.1.0" - resolved "https://registry.yarnpkg.com/get-package-type/-/get-package-type-0.1.0.tgz#8de2d803cff44df3bc6c456e6668b36c3926e11a" + resolved "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz" integrity sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q== get-pkg-repo@^4.0.0: version "4.2.1" - resolved "https://registry.yarnpkg.com/get-pkg-repo/-/get-pkg-repo-4.2.1.tgz#75973e1c8050c73f48190c52047c4cee3acbf385" + resolved "https://registry.npmjs.org/get-pkg-repo/-/get-pkg-repo-4.2.1.tgz" integrity sha512-2+QbHjFRfGB74v/pYWjd5OhU3TDIC2Gv/YKUTk/tCvAz0pkn/Mz6P3uByuBimLOcPvN2jYdScl3xGFSrx0jEcA== dependencies: "@hutson/parse-repository-url" "^3.0.0" @@ -13658,24 +14022,24 @@ get-port@^3.1.0: get-port@^5.1.1: version "5.1.1" - resolved "https://registry.yarnpkg.com/get-port/-/get-port-5.1.1.tgz#0469ed07563479de6efb986baf053dcd7d4e3193" + resolved "https://registry.npmjs.org/get-port/-/get-port-5.1.1.tgz" integrity sha512-g/Q1aTSDOxFpchXC4i8ZWvxA1lnPqx/JHqcpIw0/LX9T8x/GBbi6YnlN5nhaKIFkT8oFsscUKgDJYxfwfS6QsQ== get-proxy@^1.0.1: version "1.1.0" - resolved "https://registry.yarnpkg.com/get-proxy/-/get-proxy-1.1.0.tgz#894854491bc591b0f147d7ae570f5c678b7256eb" + resolved "https://registry.npmjs.org/get-proxy/-/get-proxy-1.1.0.tgz" integrity sha512-3cJ+77wC52qD2PqWNXtB2HkU6tQXc/X3hSMtSN0Y8c8nbYMMxF7vpsjH4H0iSt+28l/NK13DKl8iKAVGkqDFnA== dependencies: rc "^1.1.2" get-stdin@^7.0.0: version "7.0.0" - resolved "https://registry.yarnpkg.com/get-stdin/-/get-stdin-7.0.0.tgz#8d5de98f15171a125c5e516643c7a6d0ea8a96f6" + resolved "https://registry.npmjs.org/get-stdin/-/get-stdin-7.0.0.tgz" integrity sha512-zRKcywvrXlXsA0v0i9Io4KDRaAw7+a1ZpjRwl9Wox8PFlVCCHra7E9c4kqXCoCM9nR5tBkaTTZRBoCm60bFqTQ== get-stream@^2.2.0: version "2.3.1" - resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-2.3.1.tgz#5f38f93f346009666ee0150a054167f91bdd95de" + resolved "https://registry.npmjs.org/get-stream/-/get-stream-2.3.1.tgz" integrity sha512-AUGhbbemXxrZJRD5cDvKtQxLuYaIbNtDTK8YqupCI393Q2KSTreEsLUN3ZxAWFGiKTzL6nKuzfcIvieflUX9qA== dependencies: object-assign "^4.0.1" @@ -13683,31 +14047,31 @@ get-stream@^2.2.0: get-stream@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-3.0.0.tgz#8e943d1358dc37555054ecbe2edb05aa174ede14" + resolved "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz" integrity sha512-GlhdIUuVakc8SJ6kK0zAFbiGzRFzNnY4jUuEbV9UROo4Y+0Ny4fjvcZFVTeDA4odpFyOQzaw6hXukJSq/f28sQ== get-stream@^4.0.0, get-stream@^4.1.0: version "4.1.0" - resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-4.1.0.tgz#c1b255575f3dc21d59bfc79cd3d2b46b1c3a54b5" + resolved "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz" integrity sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w== dependencies: pump "^3.0.0" get-stream@^5.0.0, get-stream@^5.1.0: version "5.2.0" - resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-5.2.0.tgz#4966a1795ee5ace65e706c4b7beb71257d6e22d3" + resolved "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz" integrity sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA== dependencies: pump "^3.0.0" get-stream@^6.0.0, get-stream@^6.0.1: version "6.0.1" - resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-6.0.1.tgz#a262d8eef67aced57c2852ad6167526a43cbf7b7" + resolved "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz" integrity sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg== get-symbol-description@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/get-symbol-description/-/get-symbol-description-1.0.0.tgz#7fdb81c900101fbd564dd5f1a30af5aadc1e58d6" + resolved "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz" integrity sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw== dependencies: call-bind "^1.0.2" @@ -13715,7 +14079,7 @@ get-symbol-description@^1.0.0: get-uri@3: version "3.0.2" - resolved "https://registry.yarnpkg.com/get-uri/-/get-uri-3.0.2.tgz#f0ef1356faabc70e1f9404fa3b66b2ba9bfc725c" + resolved "https://registry.npmjs.org/get-uri/-/get-uri-3.0.2.tgz" integrity sha512-+5s0SJbGoyiJTZZ2JTpFPLMPSch72KEqGOTvQsBqg0RBWvwhWUSYZFAtz3TPW0GXJuLBJPts1E241iHg+VRfhg== dependencies: "@tootallnate/once" "1" @@ -13727,7 +14091,7 @@ get-uri@3: get-uri@^6.0.1: version "6.0.1" - resolved "https://registry.yarnpkg.com/get-uri/-/get-uri-6.0.1.tgz#cff2ba8d456c3513a04b70c45de4dbcca5b1527c" + resolved "https://registry.npmjs.org/get-uri/-/get-uri-6.0.1.tgz" integrity sha512-7ZqONUVqaabogsYNWlYj0t3YZaL6dhuEueZXGF+/YVmf6dHmaFg8/6psJKqhx9QykIDKzpGcy2cn4oV4YC7V/Q== dependencies: basic-ftp "^5.0.2" @@ -13737,7 +14101,7 @@ get-uri@^6.0.1: get-value@^1.1.5: version "1.3.1" - resolved "https://registry.yarnpkg.com/get-value/-/get-value-1.3.1.tgz#8ac7ef4f20382392b2646548f9b9ad2dc6c89642" + resolved "https://registry.npmjs.org/get-value/-/get-value-1.3.1.tgz" integrity sha512-TrDxHI5wqgpM5Guhoz7xmblwy7kzhDauSs4df3NP907yFmLtCkOau8YtGo087jZXKDwP22NG6fCo0UA4EFLjOw== dependencies: arr-flatten "^1.0.1" @@ -13752,19 +14116,19 @@ get-value@^2.0.3, get-value@^2.0.6: getopts@2.3.0: version "2.3.0" - resolved "https://registry.yarnpkg.com/getopts/-/getopts-2.3.0.tgz#71e5593284807e03e2427449d4f6712a268666f4" + resolved "https://registry.npmjs.org/getopts/-/getopts-2.3.0.tgz" integrity sha512-5eDf9fuSXwxBL6q5HX+dhDj+dslFGWzU5thZ9kNKUkcPtaPdatmUFKwHFrLb/uf/WpA4BHET+AX3Scl56cAjpA== getpass@^0.1.1: version "0.1.7" - resolved "https://registry.yarnpkg.com/getpass/-/getpass-0.1.7.tgz#5eff8e3e684d569ae4cb2b1282604e8ba62149fa" + resolved "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz" integrity sha512-0fzj9JxOLfJ+XGLhR8ze3unN0KZCgZwiSSDz168VERjK8Wl8kVSdcu2kspd4s4wtAa1y/qrVRiAA0WclVsu0ng== dependencies: assert-plus "^1.0.0" git-raw-commits@^2.0.8: version "2.0.11" - resolved "https://registry.yarnpkg.com/git-raw-commits/-/git-raw-commits-2.0.11.tgz#bc3576638071d18655e1cc60d7f524920008d723" + resolved "https://registry.npmjs.org/git-raw-commits/-/git-raw-commits-2.0.11.tgz" integrity sha512-VnctFhw+xfj8Va1xtfEqCUD2XDrbAPSJx+hSrE5K7fGdjZruW7XV+QOrN7LF/RJyvspRiD2I0asWsxFp0ya26A== dependencies: dargs "^7.0.0" @@ -13775,7 +14139,7 @@ git-raw-commits@^2.0.8: git-remote-origin-url@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/git-remote-origin-url/-/git-remote-origin-url-2.0.0.tgz#5282659dae2107145a11126112ad3216ec5fa65f" + resolved "https://registry.npmjs.org/git-remote-origin-url/-/git-remote-origin-url-2.0.0.tgz" integrity sha512-eU+GGrZgccNJcsDH5LkXR3PB9M958hxc7sbA8DFJjrv9j4L2P/eZfKhM+QD6wyzpiv+b1BpK0XrYCxkovtjSLw== dependencies: gitconfiglocal "^1.0.0" @@ -13783,7 +14147,7 @@ git-remote-origin-url@^2.0.0: git-semver-tags@^4.1.1: version "4.1.1" - resolved "https://registry.yarnpkg.com/git-semver-tags/-/git-semver-tags-4.1.1.tgz#63191bcd809b0ec3e151ba4751c16c444e5b5780" + resolved "https://registry.npmjs.org/git-semver-tags/-/git-semver-tags-4.1.1.tgz" integrity sha512-OWyMt5zBe7xFs8vglMmhM9lRQzCWL3WjHtxNNfJTMngGym7pC1kh8sP6jevfydJ6LP3ZvGxfb6ABYgPUM0mtsA== dependencies: meow "^8.0.0" @@ -13791,7 +14155,7 @@ git-semver-tags@^4.1.1: git-up@^7.0.0: version "7.0.0" - resolved "https://registry.yarnpkg.com/git-up/-/git-up-7.0.0.tgz#bace30786e36f56ea341b6f69adfd83286337467" + resolved "https://registry.npmjs.org/git-up/-/git-up-7.0.0.tgz" integrity sha512-ONdIrbBCFusq1Oy0sC71F5azx8bVkvtZtMJAsv+a6lz5YAmbNnLD6HAB4gptHZVLPR8S2/kVN6Gab7lryq5+lQ== dependencies: is-ssh "^1.4.0" @@ -13799,21 +14163,21 @@ git-up@^7.0.0: git-url-parse@^13.1.0: version "13.1.0" - resolved "https://registry.yarnpkg.com/git-url-parse/-/git-url-parse-13.1.0.tgz#07e136b5baa08d59fabdf0e33170de425adf07b4" + resolved "https://registry.npmjs.org/git-url-parse/-/git-url-parse-13.1.0.tgz" integrity sha512-5FvPJP/70WkIprlUZ33bm4UAaFdjcLkJLpWft1BeZKqwR0uhhNGoKwlUaPtVb4LxCSQ++erHapRak9kWGj+FCA== dependencies: git-up "^7.0.0" gitconfiglocal@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/gitconfiglocal/-/gitconfiglocal-1.0.0.tgz#41d045f3851a5ea88f03f24ca1c6178114464b9b" + resolved "https://registry.npmjs.org/gitconfiglocal/-/gitconfiglocal-1.0.0.tgz" integrity sha512-spLUXeTAVHxDtKsJc8FkFVgFtMdEN9qPGpL23VfSHx4fP4+Ds097IXLvymbnDH8FnmxX5Nr9bPw3A+AQ6mWEaQ== dependencies: ini "^1.3.2" github-from-package@0.0.0: version "0.0.0" - resolved "https://registry.yarnpkg.com/github-from-package/-/github-from-package-0.0.0.tgz#97fb5d96bfde8973313f20e8288ef9a167fa64ce" + resolved "https://registry.npmjs.org/github-from-package/-/github-from-package-0.0.0.tgz" integrity sha512-SyHy3T1v2NUXn29OsWdxmK6RwHD+vkj3v8en8AOBZ1wBQ/hCAQ5bAQTD02kW4W9tUp/3Qh6J8r9EvntiyCmOOw== github-slugger@^1.2.1: @@ -13823,7 +14187,7 @@ github-slugger@^1.2.1: glob-base@^0.3.0: version "0.3.0" - resolved "https://registry.yarnpkg.com/glob-base/-/glob-base-0.3.0.tgz#dbb164f6221b1c0b1ccf82aea328b497df0ea3c4" + resolved "https://registry.npmjs.org/glob-base/-/glob-base-0.3.0.tgz" integrity sha512-ab1S1g1EbO7YzauaJLkgLp7DZVAqj9M/dvKlTt8DkXA2tiOIcSMrlVI2J1RZyB5iJVccEscjGn+kpOG9788MHA== dependencies: glob-parent "^2.0.0" @@ -13831,12 +14195,12 @@ glob-base@^0.3.0: glob-fs-dotfiles@^0.1.6: version "0.1.6" - resolved "https://registry.yarnpkg.com/glob-fs-dotfiles/-/glob-fs-dotfiles-0.1.6.tgz#b4f17b73c188418aba47cd206cf5a7226b4a8949" + resolved "https://registry.npmjs.org/glob-fs-dotfiles/-/glob-fs-dotfiles-0.1.6.tgz" integrity sha512-CUTouLo3beDkPJG3Pt/3Qieq1tfGEKVSb/kM7j3m93sdM6LUx/NRlnpy7SGA2Q8/NPXoUUd4F7CNqngX0PdYPg== glob-fs-gitignore@^0.1.5: version "0.1.6" - resolved "https://registry.yarnpkg.com/glob-fs-gitignore/-/glob-fs-gitignore-0.1.6.tgz#885e6f412f859cc59756154829dbd55726cde992" + resolved "https://registry.npmjs.org/glob-fs-gitignore/-/glob-fs-gitignore-0.1.6.tgz" integrity sha512-0NSbtFTLX0mS2QTgAqATtLiEAYI8xsyLmkQ3Pm+RoOTxhOqVMfzOYI5kzaqt8oECoUmmw7xk+Gp2pjjhRfFq7w== dependencies: findup-sync "^1.0.0" @@ -13845,7 +14209,7 @@ glob-fs-gitignore@^0.1.5: glob-fs@^0.1.7: version "0.1.7" - resolved "https://registry.yarnpkg.com/glob-fs/-/glob-fs-0.1.7.tgz#9a7ebbfc694fae9cebec5d59dace93ecfb364f26" + resolved "https://registry.npmjs.org/glob-fs/-/glob-fs-0.1.7.tgz" integrity sha512-f0U3u9xK8MEYtKDCnZXvZrZAy4uNp+KSA4xfaKI/NxbE6HXhqUBQ485Uwd6jQa/Q6z1yKi804WT9y53RrwuMxQ== dependencies: async "^1.3.0" @@ -13877,21 +14241,21 @@ glob-fs@^0.1.7: glob-parent@^1.2.0: version "1.3.0" - resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-1.3.0.tgz#971edd816ed5db58705b58079647a64d0aef7968" + resolved "https://registry.npmjs.org/glob-parent/-/glob-parent-1.3.0.tgz" integrity sha512-hTmuuCjsIMiB85432X8VgmlgWVn99Np49NOWsRyfPkvsFBmsHOoCkOoFGNrMgauLMDD06Mzw+uVTw+oWNCAzgQ== dependencies: is-glob "^2.0.0" glob-parent@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-2.0.0.tgz#81383d72db054fcccf5336daa902f182f6edbb28" + resolved "https://registry.npmjs.org/glob-parent/-/glob-parent-2.0.0.tgz" integrity sha512-JDYOvfxio/t42HKdxkAYaCiBN7oYiuxykOxKxdaUW5Qn0zaYN3gRQWolrwdnf0shM9/EP0ebuuTmyoXNr1cC5w== dependencies: is-glob "^2.0.0" glob-parent@^3.1.0: version "3.1.0" - resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-3.1.0.tgz#9e6af6299d8d3bd2bd40430832bd113df906c5ae" + resolved "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz" integrity sha512-E8Ak/2+dZY6fnzlR7+ueWvhsH1SjHr4jjss4YS/h4py44jY9MhK/VFdaZJAWDz6BbL21KeteKxFSFpq8OS5gVA== dependencies: is-glob "^3.1.0" @@ -13899,19 +14263,19 @@ glob-parent@^3.1.0: glob-parent@^5.1.1, glob-parent@^5.1.2, glob-parent@~5.1.0, glob-parent@~5.1.2: version "5.1.2" - resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" + 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-slash@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/glob-slash/-/glob-slash-1.0.0.tgz#fe52efa433233f74a2fe64c7abb9bc848202ab95" + resolved "https://registry.npmjs.org/glob-slash/-/glob-slash-1.0.0.tgz" integrity sha512-ZwFh34WZhZX28ntCMAP1mwyAJkn8+Omagvt/GvA+JQM/qgT0+MR2NPF3vhvgdshfdvDyGZXs8fPXW84K32Wjuw== glob-slasher@^1.0.1: version "1.0.1" - resolved "https://registry.yarnpkg.com/glob-slasher/-/glob-slasher-1.0.1.tgz#747a0e5bb222642ee10d3e05443e109493cb0f8e" + resolved "https://registry.npmjs.org/glob-slasher/-/glob-slasher-1.0.1.tgz" integrity sha512-5MUzqFiycIKLMD1B0dYOE4hGgLLUZUNGGYO4BExdwT32wUwW3DBOE7lMQars7vB1q43Fb3Tyt+HmgLKsJhDYdg== dependencies: glob-slash "^1.0.0" @@ -13930,7 +14294,7 @@ glob-to-regexp@^0.4.0: glob@7.1.2: version "7.1.2" - resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.2.tgz#c19c9df9a028702d678612384a6552404c636d15" + resolved "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz" integrity sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ== dependencies: fs.realpath "^1.0.0" @@ -13942,7 +14306,7 @@ glob@7.1.2: glob@7.1.3: version "7.1.3" - resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.3.tgz#3960832d3f1574108342dafd3a67b332c0969df1" + resolved "https://registry.npmjs.org/glob/-/glob-7.1.3.tgz" integrity sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ== dependencies: fs.realpath "^1.0.0" @@ -13954,7 +14318,7 @@ glob@7.1.3: glob@7.1.4: version "7.1.4" - resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.4.tgz#aa608a2f6c577ad357e1ae5a5c26d9a8d1969255" + resolved "https://registry.npmjs.org/glob/-/glob-7.1.4.tgz" integrity sha512-hkLPepehmnKk41pUGm3sYxoFs/umurYfYJCerbXEyFIWcAzvpipAgVkBqqT9RBKMGjnq6kMuyYwha6csxbiM1A== dependencies: fs.realpath "^1.0.0" @@ -13966,7 +14330,7 @@ glob@7.1.4: glob@7.1.6: version "7.1.6" - resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.6.tgz#141f33b81a7c2492e125594307480c46679278a6" + resolved "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz" integrity sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA== dependencies: fs.realpath "^1.0.0" @@ -13978,7 +14342,7 @@ glob@7.1.6: glob@7.2.0: version "7.2.0" - resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.0.tgz#d15535af7732e02e948f4c41628bd910293f6023" + resolved "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz" integrity sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q== dependencies: fs.realpath "^1.0.0" @@ -13989,9 +14353,9 @@ glob@7.2.0: path-is-absolute "^1.0.0" glob@^10.2.2: - version "10.3.3" - resolved "https://registry.yarnpkg.com/glob/-/glob-10.3.3.tgz#8360a4ffdd6ed90df84aa8d52f21f452e86a123b" - integrity sha512-92vPiMb/iqpmEgsOoIDvTjc50wf9CCCvMzsi6W0JLPeUKE8TWP1a73PgqSrqy7iAZxaSD1YdzU7QZR5LF51MJw== + version "10.3.4" + resolved "https://registry.npmjs.org/glob/-/glob-10.3.4.tgz" + integrity sha512-6LFElP3A+i/Q8XQKEvZjkEWEOTgAIALR9AO2rwT8bgPhDd1anmqDJDZ6lLddI4ehxxxR1S5RIqKe1uapMQfYaQ== dependencies: foreground-child "^3.1.0" jackspeak "^2.0.3" @@ -14001,7 +14365,7 @@ glob@^10.2.2: glob@^5.0.15: version "5.0.15" - resolved "https://registry.yarnpkg.com/glob/-/glob-5.0.15.tgz#1bc936b9e02f4a603fcc222ecf7633d30b8b93b1" + resolved "https://registry.npmjs.org/glob/-/glob-5.0.15.tgz" integrity sha512-c9IPMazfRITpmAAKi22dK1VKxGDX9ehhqfABDriL/lzO92xcUKEJPQHrVA/2YHSNFB4iFlykVmWvwo48nr3OxA== dependencies: inflight "^1.0.4" @@ -14012,7 +14376,7 @@ glob@^5.0.15: glob@^6.0.1: version "6.0.4" - resolved "https://registry.yarnpkg.com/glob/-/glob-6.0.4.tgz#0f08860f6a155127b2fadd4f9ce24b1aab6e4d22" + resolved "https://registry.npmjs.org/glob/-/glob-6.0.4.tgz" integrity sha512-MKZeRNyYZAVVVG1oZeLaWie1uweH40m9AZwIwxyPbTSX4hHrVYSzLg0Ro5Z5R7XKkIX+Cc6oD1rqeDJnwsB8/A== dependencies: inflight "^1.0.4" @@ -14021,9 +14385,9 @@ glob@^6.0.1: once "^1.3.0" path-is-absolute "^1.0.0" -glob@^7.0.0, glob@^7.0.5, glob@^7.1.1, glob@^7.1.2, glob@^7.1.3, glob@^7.1.4, glob@^7.1.6, glob@~7.2.3: +glob@^7.0.0, glob@^7.0.5, glob@^7.1.1, glob@^7.1.2, glob@^7.1.3, glob@^7.1.4, glob@^7.1.6, glob@^7.2.3, glob@~7.2.3: version "7.2.3" - resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.3.tgz#b8df0fb802bbfa8e89bd1d938b4e16578ed44f2b" + resolved "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz" integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q== dependencies: fs.realpath "^1.0.0" @@ -14035,7 +14399,7 @@ glob@^7.0.0, glob@^7.0.5, glob@^7.1.1, glob@^7.1.2, glob@^7.1.3, glob@^7.1.4, gl glob@^8.0.0, glob@^8.0.1: version "8.1.0" - resolved "https://registry.yarnpkg.com/glob/-/glob-8.1.0.tgz#d388f656593ef708ee3e34640fdfb99a9fd1c33e" + resolved "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz" integrity sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ== dependencies: fs.realpath "^1.0.0" @@ -14046,21 +14410,21 @@ glob@^8.0.0, glob@^8.0.1: global-dirs@^2.0.1: version "2.1.0" - resolved "https://registry.yarnpkg.com/global-dirs/-/global-dirs-2.1.0.tgz#e9046a49c806ff04d6c1825e196c8f0091e8df4d" + resolved "https://registry.npmjs.org/global-dirs/-/global-dirs-2.1.0.tgz" integrity sha512-MG6kdOUh/xBnyo9cJFeIKkLEc1AyFq42QTU4XiX51i2NEdxLxLWXIjEjmqKeSuKR7pAZjTqUVoT2b2huxVLgYQ== dependencies: ini "1.3.7" global-dirs@^3.0.0: version "3.0.1" - resolved "https://registry.yarnpkg.com/global-dirs/-/global-dirs-3.0.1.tgz#0c488971f066baceda21447aecb1a8b911d22485" + resolved "https://registry.npmjs.org/global-dirs/-/global-dirs-3.0.1.tgz" integrity sha512-NBcGGFbBA9s1VzD41QXDG+3++t9Mn5t1FpLdhESY6oKY4gYTFpX4wO3sqGUa0Srjtbfj3szX0RnemmrVRUdULA== dependencies: ini "2.0.0" global-modules@1.0.0, global-modules@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/global-modules/-/global-modules-1.0.0.tgz#6d770f0eb523ac78164d72b5e71a8877265cc3ea" + resolved "https://registry.npmjs.org/global-modules/-/global-modules-1.0.0.tgz" integrity sha512-sKzpEkf11GpOFuw0Zzjzmt4B4UZwjOcG757PPvrfhxcLFbq0wpsgpOqxpxtxFiCG4DtG93M6XRVbF2oGdev7bg== dependencies: global-prefix "^1.0.1" @@ -14069,7 +14433,7 @@ global-modules@1.0.0, global-modules@^1.0.0: global-modules@^0.2.3: version "0.2.3" - resolved "https://registry.yarnpkg.com/global-modules/-/global-modules-0.2.3.tgz#ea5a3bed42c6d6ce995a4f8a1269b5dae223828d" + resolved "https://registry.npmjs.org/global-modules/-/global-modules-0.2.3.tgz" integrity sha512-JeXuCbvYzYXcwE6acL9V2bAOeSIGl4dD+iwLY9iUx2VBJJ80R18HCn+JCwHM9Oegdfya3lEkGCdaRkSyc10hDA== dependencies: global-prefix "^0.1.4" @@ -14077,7 +14441,7 @@ global-modules@^0.2.3: global-prefix@^0.1.4: version "0.1.5" - resolved "https://registry.yarnpkg.com/global-prefix/-/global-prefix-0.1.5.tgz#8d3bc6b8da3ca8112a160d8d496ff0462bfef78f" + resolved "https://registry.npmjs.org/global-prefix/-/global-prefix-0.1.5.tgz" integrity sha512-gOPiyxcD9dJGCEArAhF4Hd0BAqvAe/JzERP7tYumE4yIkmIedPUVXcJFWbV3/p/ovIIvKjkrTk+f1UVkq7vvbw== dependencies: homedir-polyfill "^1.0.0" @@ -14087,7 +14451,7 @@ global-prefix@^0.1.4: global-prefix@^1.0.1: version "1.0.2" - resolved "https://registry.yarnpkg.com/global-prefix/-/global-prefix-1.0.2.tgz#dbf743c6c14992593c655568cb66ed32c0122ebe" + resolved "https://registry.npmjs.org/global-prefix/-/global-prefix-1.0.2.tgz" integrity sha512-5lsx1NUDHtSjfg0eHlmYvZKv8/nVqX4ckFbM+FrGcQ+04KWcWFo9P5MxPZYSzUvyzmdTbI7Eix8Q4IbELDqzKg== dependencies: expand-tilde "^2.0.2" @@ -14098,7 +14462,7 @@ global-prefix@^1.0.1: global@~4.4.0: version "4.4.0" - resolved "https://registry.yarnpkg.com/global/-/global-4.4.0.tgz#3e7b105179006a323ed71aafca3e9c57a5cc6406" + resolved "https://registry.npmjs.org/global/-/global-4.4.0.tgz" integrity sha512-wv/LAoHdRE3BeTGz53FAamhGlPLhlssK45usmGFThIi4XqnBmjKQ16u+RNbP7WvigRZDxUsM0J3gcQ5yicaL0w== dependencies: min-document "^2.19.0" @@ -14106,12 +14470,12 @@ global@~4.4.0: globals@^11.1.0, globals@^11.7.0: version "11.12.0" - resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e" + resolved "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz" integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA== globalthis@^1.0.3: version "1.0.3" - resolved "https://registry.yarnpkg.com/globalthis/-/globalthis-1.0.3.tgz#5852882a52b80dc301b0660273e1ed082f0b6ccf" + resolved "https://registry.npmjs.org/globalthis/-/globalthis-1.0.3.tgz" integrity sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA== dependencies: define-properties "^1.1.3" @@ -14132,7 +14496,7 @@ globby@^10.0.1: globby@^11.0.1, globby@^11.0.2, globby@^11.1.0: version "11.1.0" - resolved "https://registry.yarnpkg.com/globby/-/globby-11.1.0.tgz#bd4be98bb042f83d796f7e3811991fbe82a0d34b" + resolved "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz" integrity sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g== dependencies: array-union "^2.1.0" @@ -14144,7 +14508,7 @@ globby@^11.0.1, globby@^11.0.2, globby@^11.1.0: globby@^8: version "8.0.2" - resolved "https://registry.yarnpkg.com/globby/-/globby-8.0.2.tgz#5697619ccd95c5275dbb2d6faa42087c1a941d8d" + resolved "https://registry.npmjs.org/globby/-/globby-8.0.2.tgz" integrity sha512-yTzMmKygLp8RUpG1Ymu2VXPSJQZjNAZPD4ywgYEaG7e4tBJeUQBO8OpXrf1RCNcEs5alsoJYPAMiIHP0cmeC7w== dependencies: array-union "^1.0.1" @@ -14157,7 +14521,7 @@ globby@^8: google-auth-library@^3.0.0, google-auth-library@^3.1.1: version "3.1.2" - resolved "https://registry.yarnpkg.com/google-auth-library/-/google-auth-library-3.1.2.tgz#ff2f88cd5cd2118a57bd3d5ad3c093c8837fc350" + resolved "https://registry.npmjs.org/google-auth-library/-/google-auth-library-3.1.2.tgz" integrity sha512-cDQMzTotwyWMrg5jRO7q0A4TL/3GWBgO7I7q5xGKNiiFf9SmGY/OJ1YsLMgI2MVHHsEGyrqYnbnmV1AE+Z6DnQ== dependencies: base64-js "^1.3.0" @@ -14172,7 +14536,7 @@ google-auth-library@^3.0.0, google-auth-library@^3.1.1: google-auth-library@^6.1.3: version "6.1.6" - resolved "https://registry.yarnpkg.com/google-auth-library/-/google-auth-library-6.1.6.tgz#deacdcdb883d9ed6bac78bb5d79a078877fdf572" + resolved "https://registry.npmjs.org/google-auth-library/-/google-auth-library-6.1.6.tgz" integrity sha512-Q+ZjUEvLQj/lrVHF/IQwRo6p3s8Nc44Zk/DALsN+ac3T4HY/g/3rrufkgtl+nZ1TW7DNAw5cTChdVp4apUXVgQ== dependencies: arrify "^2.0.0" @@ -14187,7 +14551,7 @@ google-auth-library@^6.1.3: google-auth-library@^7.0.0, google-auth-library@^7.11.0, google-auth-library@^7.14.0, google-auth-library@^7.14.1: version "7.14.1" - resolved "https://registry.yarnpkg.com/google-auth-library/-/google-auth-library-7.14.1.tgz#e3483034162f24cc71b95c8a55a210008826213c" + resolved "https://registry.npmjs.org/google-auth-library/-/google-auth-library-7.14.1.tgz" integrity sha512-5Rk7iLNDFhFeBYc3s8l1CqzbEBcdhwR193RlD4vSNFajIcINKI8W8P0JLmBpwymHqqWbX34pJDQu39cSy/6RsA== dependencies: arrify "^2.0.0" @@ -14202,7 +14566,7 @@ google-auth-library@^7.0.0, google-auth-library@^7.11.0, google-auth-library@^7. google-auth-library@^8.0.1, google-auth-library@^8.0.2: version "8.9.0" - resolved "https://registry.yarnpkg.com/google-auth-library/-/google-auth-library-8.9.0.tgz#15a271eb2ec35d43b81deb72211bd61b1ef14dd0" + resolved "https://registry.npmjs.org/google-auth-library/-/google-auth-library-8.9.0.tgz" integrity sha512-f7aQCJODJFmYWN6PeNKzgvy9LI2tYmXnzpNDHEjG5sDNPgGb2FXQyTBnXeSH+PAtpKESFD+LmHw3Ox3mN7e1Fg== dependencies: arrify "^2.0.0" @@ -14217,7 +14581,7 @@ google-auth-library@^8.0.1, google-auth-library@^8.0.2: google-gax@2.30.3: version "2.30.3" - resolved "https://registry.yarnpkg.com/google-gax/-/google-gax-2.30.3.tgz#5d2c227972d99d6a6cd77963c44d0575974e7b60" + resolved "https://registry.npmjs.org/google-gax/-/google-gax-2.30.3.tgz" integrity sha512-Zsd6hbJBMvAcJS3cYpAsmupvfsxygFR2meUZJcGeR7iUqYHCR/1Hf2aQNB9srrlXQMm91pNiUvW0Kz6Qld8QkA== dependencies: "@grpc/grpc-js" "~1.6.0" @@ -14236,7 +14600,7 @@ google-gax@2.30.3: google-gax@^0.25.0: version "0.25.6" - resolved "https://registry.yarnpkg.com/google-gax/-/google-gax-0.25.6.tgz#5ea5c743933ba957da63951bc828aef91fb69340" + resolved "https://registry.npmjs.org/google-gax/-/google-gax-0.25.6.tgz" integrity sha512-+CVtOSLQt42mwVvJJirhBiAvWsp8zKeb9zW5Wy3wyvb3VG9OugHzZpwvYO9D4yNPPspe7L9CpIs80I5nUJlS8w== dependencies: "@grpc/grpc-js" "^0.3.0" @@ -14256,7 +14620,7 @@ google-gax@^0.25.0: google-gax@^2.0.1, google-gax@^2.24.1: version "2.30.5" - resolved "https://registry.yarnpkg.com/google-gax/-/google-gax-2.30.5.tgz#e836f984f3228900a8336f608c83d75f9cb73eff" + resolved "https://registry.npmjs.org/google-gax/-/google-gax-2.30.5.tgz" integrity sha512-Jey13YrAN2hfpozHzbtrwEfEHdStJh1GwaQ2+Akh1k0Tv/EuNVSuBtHZoKSBm5wBMvNsxTsEIZ/152NrYyZgxQ== dependencies: "@grpc/grpc-js" "~1.6.0" @@ -14275,7 +14639,7 @@ google-gax@^2.0.1, google-gax@^2.24.1: google-gax@^3.5.7, google-gax@^3.6.1: version "3.6.1" - resolved "https://registry.yarnpkg.com/google-gax/-/google-gax-3.6.1.tgz#02c78fc496f5adf86f2ca9145545f4b6575f6118" + resolved "https://registry.npmjs.org/google-gax/-/google-gax-3.6.1.tgz" integrity sha512-g/lcUjGcB6DSw2HxgEmCDOrI/CByOwqRvsuUvNalHUK2iPPPlmAIpbMbl62u0YufGMr8zgE3JL7th6dCb1Ry+w== dependencies: "@grpc/grpc-js" "~1.8.0" @@ -14294,14 +14658,19 @@ google-gax@^3.5.7, google-gax@^3.6.1: protobufjs-cli "1.1.1" retry-request "^5.0.0" -google-libphonenumber@^3.2.15, google-libphonenumber@^3.2.27: +google-libphonenumber@^3.2.15: + version "3.2.33" + resolved "https://registry.npmjs.org/google-libphonenumber/-/google-libphonenumber-3.2.33.tgz" + integrity sha512-1QKCvAlfq8zY1mviORI9lDzM3I/hwm9+h0CwYBTLq59DBbSHMd5zBOLqHZFiBLicRpwIz46Nynvbywj1XApKvA== + +google-libphonenumber@^3.2.27: version "3.2.32" - resolved "https://registry.yarnpkg.com/google-libphonenumber/-/google-libphonenumber-3.2.32.tgz#63c48a9c247b64a3bc2eec21bdf3fcfbf2e148c0" + resolved "https://registry.npmjs.org/google-libphonenumber/-/google-libphonenumber-3.2.32.tgz" integrity sha512-mcNgakausov/B/eTgVeX8qc8IwWjRrupk9UzZZ/QDEvdh5fAjE7Aa211bkZpZj42zKkeS6MTT8avHUwjcLxuGQ== google-p12-pem@^1.0.0: version "1.0.5" - resolved "https://registry.yarnpkg.com/google-p12-pem/-/google-p12-pem-1.0.5.tgz#0b4721cdfc818759d884f0c62803518decdaf0d0" + resolved "https://registry.npmjs.org/google-p12-pem/-/google-p12-pem-1.0.5.tgz" integrity sha512-50rTrqYPTPPwlu9TNl/HkJbBENEpbRzTOVLFJ4YWM86njZgXHFy+FP+tLRSd9m132Li9Dqi27Z3KIWDEv5y+EA== dependencies: node-forge "^0.10.0" @@ -14309,21 +14678,21 @@ google-p12-pem@^1.0.0: google-p12-pem@^3.1.3: version "3.1.4" - resolved "https://registry.yarnpkg.com/google-p12-pem/-/google-p12-pem-3.1.4.tgz#123f7b40da204de4ed1fbf2fd5be12c047fc8b3b" + resolved "https://registry.npmjs.org/google-p12-pem/-/google-p12-pem-3.1.4.tgz" integrity sha512-HHuHmkLgwjdmVRngf5+gSmpkyaRI6QmOg77J8tkNBHhNEI62sGHyw4/+UkgyZEI7h84NbWprXDJ+sa3xOYFvTg== dependencies: node-forge "^1.3.1" google-p12-pem@^4.0.0: version "4.0.1" - resolved "https://registry.yarnpkg.com/google-p12-pem/-/google-p12-pem-4.0.1.tgz#82841798253c65b7dc2a4e5fe9df141db670172a" + resolved "https://registry.npmjs.org/google-p12-pem/-/google-p12-pem-4.0.1.tgz" integrity sha512-WPkN4yGtz05WZ5EhtlxNDWPhC4JIic6G8ePitwUWy4l+XPVYec+a0j0Ts47PDtW59y3RwAhUd9/h9ZZ63px6RQ== dependencies: node-forge "^1.3.1" google-proto-files@^0.20.0: version "0.20.0" - resolved "https://registry.yarnpkg.com/google-proto-files/-/google-proto-files-0.20.0.tgz#dfcd1635a0c3f00f49ca057462cf369108ff4b5e" + resolved "https://registry.npmjs.org/google-proto-files/-/google-proto-files-0.20.0.tgz" integrity sha512-ORU+XhOeDv/UPtnCYLkO1ItmfhRCRPR3ZoeVQ7GfVzEs7PVitPIhsYlY5ZzG8XXnsdmtK27ENurfQ1jhAWpZHg== dependencies: "@google-cloud/promisify" "^0.4.0" @@ -14332,7 +14701,7 @@ google-proto-files@^0.20.0: googleapis-common@^0.7.0: version "0.7.2" - resolved "https://registry.yarnpkg.com/googleapis-common/-/googleapis-common-0.7.2.tgz#a694f55d979cb7c2eac21a0e0439af12f9b418ba" + resolved "https://registry.npmjs.org/googleapis-common/-/googleapis-common-0.7.2.tgz" integrity sha512-9DEJIiO4nS7nw0VE1YVkEfXEj8x8MxsuB+yZIpOBULFSN9OIKcUU8UuKgSZFU4lJmRioMfngktrbkMwWJcUhQg== dependencies: gaxios "^1.2.2" @@ -14344,7 +14713,7 @@ googleapis-common@^0.7.0: googleapis@^39.2.0: version "39.2.0" - resolved "https://registry.yarnpkg.com/googleapis/-/googleapis-39.2.0.tgz#5c81f721e9da2e80cb0b25821ed60d3bc200c3da" + resolved "https://registry.npmjs.org/googleapis/-/googleapis-39.2.0.tgz" integrity sha512-66X8TG1B33zAt177sG1CoKoYHPP/B66tEpnnSANGCqotMuY5gqSQO8G/0gqHZR2jRgc5CHSSNOJCnpI0SuDxMQ== dependencies: google-auth-library "^3.0.0" @@ -14352,14 +14721,14 @@ googleapis@^39.2.0: gopd@^1.0.1: version "1.0.1" - resolved "https://registry.yarnpkg.com/gopd/-/gopd-1.0.1.tgz#29ff76de69dac7489b7c0918a5788e56477c332c" + resolved "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz" integrity sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA== dependencies: get-intrinsic "^1.1.3" got@12.1.0: version "12.1.0" - resolved "https://registry.yarnpkg.com/got/-/got-12.1.0.tgz#099f3815305c682be4fd6b0ee0726d8e4c6b0af4" + resolved "https://registry.npmjs.org/got/-/got-12.1.0.tgz" integrity sha512-hBv2ty9QN2RdbJJMK3hesmSkFTjVIHyIDDbssCKnSmq62edGgImJWD10Eb1k77TiV1bxloxqcFAVK8+9pkhOig== dependencies: "@sindresorhus/is" "^4.6.0" @@ -14378,7 +14747,7 @@ got@12.1.0: got@9.6.0, got@^9.6.0: version "9.6.0" - resolved "https://registry.yarnpkg.com/got/-/got-9.6.0.tgz#edf45e7d67f99545705de1f7bbeeeb121765ed85" + resolved "https://registry.npmjs.org/got/-/got-9.6.0.tgz" integrity sha512-R7eWptXuGYxwijs0eV+v3o6+XH1IqVK8dJOEecQfTmkncw9AV4dcw/Dhxi8MdlqPthxxpZyizMzyg8RTmEsG+Q== dependencies: "@sindresorhus/is" "^0.14.0" @@ -14395,7 +14764,7 @@ got@9.6.0, got@^9.6.0: got@^11.8.5: version "11.8.6" - resolved "https://registry.yarnpkg.com/got/-/got-11.8.6.tgz#276e827ead8772eddbcfc97170590b841823233a" + resolved "https://registry.npmjs.org/got/-/got-11.8.6.tgz" integrity sha512-6tfZ91bOr7bOXnK7PRDCGBLa1H4U080YHNaAQ2KsMGlLEzRbk44nsZF2E1IeRc3vtJHPVbKCYgdFbaGO2ljd8g== dependencies: "@sindresorhus/is" "^4.0.0" @@ -14412,7 +14781,7 @@ got@^11.8.5: got@^7.1.0: version "7.1.0" - resolved "https://registry.yarnpkg.com/got/-/got-7.1.0.tgz#05450fd84094e6bbea56f451a43a9c289166385a" + resolved "https://registry.npmjs.org/got/-/got-7.1.0.tgz" integrity sha512-Y5WMo7xKKq1muPsxD+KmrR8DH5auG7fBdDVueZwETwV6VytKyU9OX/ddpq2/1hp1vIPvVb4T81dKQz3BivkNLw== dependencies: decompress-response "^3.2.0" @@ -14432,66 +14801,66 @@ got@^7.1.0: graceful-fs@4.2.10: version "4.2.10" - resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.10.tgz#147d3a006da4ca3ce14728c7aefc287c367d7a6c" + resolved "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz" integrity sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA== graceful-fs@^4.1.10, graceful-fs@^4.1.11, graceful-fs@^4.1.15, graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.1.9, graceful-fs@^4.2.0, graceful-fs@^4.2.2, graceful-fs@^4.2.6, graceful-fs@^4.2.9: version "4.2.11" - resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.11.tgz#4183e4e8bf08bb6e05bbb2f7d2e0c8f712ca40e3" + resolved "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz" integrity sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ== grapheme-splitter@^1.0.4: version "1.0.4" - resolved "https://registry.yarnpkg.com/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz#9cf3a665c6247479896834af35cf1dbb4400767e" + resolved "https://registry.npmjs.org/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz" integrity sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ== graphql-tag@^2.11.0, graphql-tag@^2.12.6: version "2.12.6" - resolved "https://registry.yarnpkg.com/graphql-tag/-/graphql-tag-2.12.6.tgz#d441a569c1d2537ef10ca3d1633b48725329b5f1" + resolved "https://registry.npmjs.org/graphql-tag/-/graphql-tag-2.12.6.tgz" integrity sha512-FdSNcu2QQcWnM2VNvSCCDCVS5PpPqpzgFT8+GXzqJuoDd0CBncxCY278u4mhRO7tMgo2JjgJA5aZ+nWSQ/Z+xg== dependencies: tslib "^2.1.0" graphql@^14.1.1: version "14.7.0" - resolved "https://registry.yarnpkg.com/graphql/-/graphql-14.7.0.tgz#7fa79a80a69be4a31c27dda824dc04dac2035a72" + resolved "https://registry.npmjs.org/graphql/-/graphql-14.7.0.tgz" integrity sha512-l0xWZpoPKpppFzMfvVyFmp9vLN7w/ZZJPefUicMCepfJeQ8sMcztloGYY9DfjVPo6tIUDzU5Hw3MUbIjj9AVVA== dependencies: iterall "^1.2.2" graphql@^15.3.0: version "15.8.0" - resolved "https://registry.yarnpkg.com/graphql/-/graphql-15.8.0.tgz#33410e96b012fa3bdb1091cc99a94769db212b38" + resolved "https://registry.npmjs.org/graphql/-/graphql-15.8.0.tgz" integrity sha512-5gghUc24tP9HRznNpV2+FIoq3xKkj5dTQqf4v0CpdPbFVwFkWoxOM+o+2OC9ZSvjEMTjfmG9QT+gcvggTwW1zw== growl@1.10.5: version "1.10.5" - resolved "https://registry.yarnpkg.com/growl/-/growl-1.10.5.tgz#f2735dc2283674fa67478b10181059355c369e5e" + resolved "https://registry.npmjs.org/growl/-/growl-1.10.5.tgz" integrity sha512-qBr4OuELkhPenW6goKVXiv47US3clb3/IbuWF9KNKEijAy9oeHxU9IgzjvJhHkUzhaj7rOUD7+YGWqUjLp5oSA== grpc-gcp@^0.1.1: version "0.1.1" - resolved "https://registry.yarnpkg.com/grpc-gcp/-/grpc-gcp-0.1.1.tgz#a11be8a7e7a6edf5f636b44a6a24fb4cc028f71f" + resolved "https://registry.npmjs.org/grpc-gcp/-/grpc-gcp-0.1.1.tgz" integrity sha512-MAt0Ae9QuL2Lbbt2d+kDta5AxqRD1JVXtBcJuQKp9GeFL5TxPw/hxIyDNyivPjKEXjbG3cBGwSE3CXq6a3KHEQ== dependencies: grpc "^1.16.0" protobufjs "^6.8.8" grpc@^1.16.0: - version "1.24.2" - resolved "https://registry.yarnpkg.com/grpc/-/grpc-1.24.2.tgz#76d047bfa7b05b607cbbe3abb99065dcefe0c099" - integrity sha512-EG3WH6AWMVvAiV15d+lr+K77HJ/KV/3FvMpjKjulXHbTwgDZkhkcWbwhxFAoTdxTkQvy0WFcO3Nog50QBbHZWw== + version "1.24.11" + resolved "https://registry.npmjs.org/grpc/-/grpc-1.24.11.tgz" + integrity sha512-8/AQdFCzCeCDWW3SoaMNp6ccbRvTQEH1O1u1uFtt29eWsg5gSZCJ3m6fbkduEIh3smY7WAPP+LgVJ5n3nZRxcA== dependencies: + "@mapbox/node-pre-gyp" "^1.0.4" "@types/bytebuffer" "^5.0.40" lodash.camelcase "^4.3.0" lodash.clone "^4.5.0" nan "^2.13.2" - node-pre-gyp "^0.14.0" protobufjs "^5.0.3" gtoken@^2.3.2: version "2.3.3" - resolved "https://registry.yarnpkg.com/gtoken/-/gtoken-2.3.3.tgz#8a7fe155c5ce0c4b71c886cfb282a9060d94a641" + resolved "https://registry.npmjs.org/gtoken/-/gtoken-2.3.3.tgz" integrity sha512-EaB49bu/TCoNeQjhCYKI/CurooBKkGxIqFHsWABW0b25fobBYVTMe84A8EBVVZhl8emiUdNypil9huMOTmyAnw== dependencies: gaxios "^1.0.4" @@ -14502,7 +14871,7 @@ gtoken@^2.3.2: gtoken@^5.0.4: version "5.3.2" - resolved "https://registry.yarnpkg.com/gtoken/-/gtoken-5.3.2.tgz#deb7dc876abe002178e0515e383382ea9446d58f" + resolved "https://registry.npmjs.org/gtoken/-/gtoken-5.3.2.tgz" integrity sha512-gkvEKREW7dXWF8NV8pVrKfW7WqReAmjjkMBh6lNCCGOM4ucS0r0YyXXl0r/9Yj8wcW/32ISkfc8h5mPTDbtifQ== dependencies: gaxios "^4.0.0" @@ -14511,16 +14880,16 @@ gtoken@^5.0.4: gtoken@^6.1.0: version "6.1.2" - resolved "https://registry.yarnpkg.com/gtoken/-/gtoken-6.1.2.tgz#aeb7bdb019ff4c3ba3ac100bbe7b6e74dce0e8bc" + resolved "https://registry.npmjs.org/gtoken/-/gtoken-6.1.2.tgz" integrity sha512-4ccGpzz7YAr7lxrT2neugmXQ3hP9ho2gcaityLVkiUecAiwiy60Ii8gRbZeOsXV19fYaRjgBSshs8kXw+NKCPQ== dependencies: gaxios "^5.0.1" google-p12-pem "^4.0.0" jws "^4.0.0" -handlebars@^4.0.1, handlebars@^4.7.6, handlebars@^4.7.7: +handlebars@^4.0.1: version "4.7.7" - resolved "https://registry.yarnpkg.com/handlebars/-/handlebars-4.7.7.tgz#9ce33416aad02dbd6c8fafa8240d5d98004945a1" + resolved "https://registry.npmjs.org/handlebars/-/handlebars-4.7.7.tgz" integrity sha512-aAcXm5OAfE/8IXkcZvCepKU3VzW1/39Fb5ZuqMtgI/hT8X2YgoMvBY5dLhq/cpOvw7Lk1nK/UF71aLG/ZnVYRA== dependencies: minimist "^1.2.5" @@ -14530,14 +14899,26 @@ handlebars@^4.0.1, handlebars@^4.7.6, handlebars@^4.7.7: optionalDependencies: uglify-js "^3.1.4" +handlebars@^4.7.6, handlebars@^4.7.7: + version "4.7.8" + resolved "https://registry.yarnpkg.com/handlebars/-/handlebars-4.7.8.tgz#41c42c18b1be2365439188c77c6afae71c0cd9e9" + integrity sha512-vafaFqs8MZkRrSX7sFVUdo3ap/eNiLnb4IakshzvP56X5Nr1iGKAIqdX6tMlm6HcNRIkr6AxO5jFEoJzzpT8aQ== + dependencies: + minimist "^1.2.5" + neo-async "^2.6.2" + source-map "^0.6.1" + wordwrap "^1.0.0" + optionalDependencies: + uglify-js "^3.1.4" + har-schema@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/har-schema/-/har-schema-2.0.0.tgz#a94c2224ebcac04782a0d9035521f24735b7ec92" + resolved "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz" integrity sha512-Oqluz6zhGX8cyRaTQlFMPw80bSJVG2x/cFb8ZPhUILGgHka9SsokCCOQgpveePerqidZOrT14ipqfJb7ILcW5Q== har-validator@~5.1.3: version "5.1.5" - resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-5.1.5.tgz#1f0803b9f8cb20c0fa13822df1ecddb36bde1efd" + resolved "https://registry.npmjs.org/har-validator/-/har-validator-5.1.5.tgz" integrity sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w== dependencies: ajv "^6.12.3" @@ -14545,80 +14926,80 @@ har-validator@~5.1.3: hard-rejection@^2.1.0: version "2.1.0" - resolved "https://registry.yarnpkg.com/hard-rejection/-/hard-rejection-2.1.0.tgz#1c6eda5c1685c63942766d79bb40ae773cecd883" + resolved "https://registry.npmjs.org/hard-rejection/-/hard-rejection-2.1.0.tgz" integrity sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA== has-ansi@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/has-ansi/-/has-ansi-2.0.0.tgz#34f5049ce1ecdf2b0649af3ef24e45ed35416d91" + resolved "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz" integrity sha512-C8vBJ8DwUCx19vhm7urhTuUsr4/IyP6l4VzNQDv+ryHQObW3TTTp9yB68WpYgRe2bbaGuZ/se74IqFeVnMnLZg== dependencies: ansi-regex "^2.0.0" has-bigints@^1.0.1, has-bigints@^1.0.2: version "1.0.2" - resolved "https://registry.yarnpkg.com/has-bigints/-/has-bigints-1.0.2.tgz#0871bd3e3d51626f6ca0966668ba35d5602d6eaa" + resolved "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz" integrity sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ== has-flag@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-1.0.0.tgz#9d9e793165ce017a00f00418c43f942a7b1d11fa" + resolved "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz" integrity sha512-DyYHfIYwAJmjAjSSPKANxI8bFY9YtFrgkAfinBojQ8YJTOuOuav64tMUJv584SES4xl74PmuaevIyaLESHdTAA== has-flag@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-2.0.0.tgz#e8207af1cc7b30d446cc70b734b5e8be18f88d51" + resolved "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz" integrity sha512-P+1n3MnwjR/Epg9BBo1KT8qbye2g2Ou4sFumihwt6I4tsUX7jnLcX4BTOSKg/B1ZrIYMN9FcEnG4x5a7NB8Eng== has-flag@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" + resolved "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz" integrity sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw== has-flag@^4.0.0: version "4.0.0" - resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" + 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" + resolved "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz" 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" + resolved "https://registry.npmjs.org/has-proto/-/has-proto-1.0.1.tgz" integrity sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg== has-symbol-support-x@^1.4.1: version "1.4.2" - resolved "https://registry.yarnpkg.com/has-symbol-support-x/-/has-symbol-support-x-1.4.2.tgz#1409f98bc00247da45da67cee0a36f282ff26455" + resolved "https://registry.npmjs.org/has-symbol-support-x/-/has-symbol-support-x-1.4.2.tgz" integrity sha512-3ToOva++HaW+eCpgqZrCfN51IPB+7bJNVT6CUATzueB5Heb8o6Nam0V3HG5dlDvZU1Gn5QLcbahiKw/XVk5JJw== has-symbols@^1.0.0, has-symbols@^1.0.2, has-symbols@^1.0.3: version "1.0.3" - resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.3.tgz#bb7b2c4349251dce87b125f7bdf874aa7c8b39f8" + resolved "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz" integrity sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A== has-to-string-tag-x@^1.2.0: version "1.4.1" - resolved "https://registry.yarnpkg.com/has-to-string-tag-x/-/has-to-string-tag-x-1.4.1.tgz#a045ab383d7b4b2012a00148ab0aa5f290044d4d" + resolved "https://registry.npmjs.org/has-to-string-tag-x/-/has-to-string-tag-x-1.4.1.tgz" integrity sha512-vdbKfmw+3LoOYVr+mtxHaX5a96+0f3DljYd8JOqvOLsf5mw2Otda2qCDT9qRqLAhrjyQ0h7ual5nOiASpsGNFw== dependencies: has-symbol-support-x "^1.4.1" has-tostringtag@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/has-tostringtag/-/has-tostringtag-1.0.0.tgz#7e133818a7d394734f941e73c3d3f9291e658b25" + resolved "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz" integrity sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ== dependencies: has-symbols "^1.0.2" has-unicode@^2.0.0, has-unicode@^2.0.1: version "2.0.1" - resolved "https://registry.yarnpkg.com/has-unicode/-/has-unicode-2.0.1.tgz#e0e6fe6a28cf51138855e086d1691e771de2a8b9" + resolved "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz" integrity sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ== has-value@^0.3.1: @@ -14654,19 +15035,19 @@ has-values@^1.0.0: has-yarn@^2.1.0: version "2.1.0" - resolved "https://registry.yarnpkg.com/has-yarn/-/has-yarn-2.1.0.tgz#137e11354a7b5bf11aa5cb649cf0c6f3ff2b2e77" + resolved "https://registry.npmjs.org/has-yarn/-/has-yarn-2.1.0.tgz" integrity sha512-UqBRqi4ju7T+TqGNdqAO0PaSVGsDGJUBQvk9eUWNGRY1CFGDzYhLWoM7JQEemnlvVcv/YEmc2wNW8BC24EnUsw== has@^1.0.3, has@~1.0.3: version "1.0.3" - resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" + resolved "https://registry.npmjs.org/has/-/has-1.0.3.tgz" integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw== dependencies: function-bind "^1.1.1" hash-base@^3.0.0: version "3.1.0" - resolved "https://registry.yarnpkg.com/hash-base/-/hash-base-3.1.0.tgz#55c381d9e06e1d2997a883b4a3fddfe7f0d3af33" + resolved "https://registry.npmjs.org/hash-base/-/hash-base-3.1.0.tgz" integrity sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA== dependencies: inherits "^2.0.4" @@ -14675,12 +15056,12 @@ hash-base@^3.0.0: hash-stream-validation@^0.2.1, hash-stream-validation@^0.2.2: version "0.2.4" - resolved "https://registry.yarnpkg.com/hash-stream-validation/-/hash-stream-validation-0.2.4.tgz#ee68b41bf822f7f44db1142ec28ba9ee7ccb7512" + resolved "https://registry.npmjs.org/hash-stream-validation/-/hash-stream-validation-0.2.4.tgz" integrity sha512-Gjzu0Xn7IagXVkSu9cSFuK1fqzwtLwFhNhVL8IFJijRNMgUttFbBSIAzKuSIrsFMO1+g1RlsoN49zPIbwPDMGQ== hash.js@1.1.3: version "1.1.3" - resolved "https://registry.yarnpkg.com/hash.js/-/hash.js-1.1.3.tgz#340dedbe6290187151c1ea1d777a3448935df846" + resolved "https://registry.npmjs.org/hash.js/-/hash.js-1.1.3.tgz" integrity sha512-/UETyP0W22QILqS+6HowevwhEFJ3MBJnwTf75Qob9Wz9t0DPuisL8kW8YZMK62dHAKE1c1p+gY1TtOLY+USEHA== dependencies: inherits "^2.0.3" @@ -14688,7 +15069,7 @@ hash.js@1.1.3: hash.js@1.1.7, hash.js@^1.0.0, hash.js@^1.0.3, hash.js@^1.1.7: version "1.1.7" - resolved "https://registry.yarnpkg.com/hash.js/-/hash.js-1.1.7.tgz#0babca538e8d4ee4a0f8988d68866537a003cf42" + resolved "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz" integrity sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA== dependencies: inherits "^2.0.3" @@ -14696,7 +15077,7 @@ hash.js@1.1.7, hash.js@^1.0.0, hash.js@^1.0.3, hash.js@^1.1.7: hdkey@2.1.0: version "2.1.0" - resolved "https://registry.yarnpkg.com/hdkey/-/hdkey-2.1.0.tgz#755b30b73f54e93c31919c1b2f19205a8e57cb92" + resolved "https://registry.npmjs.org/hdkey/-/hdkey-2.1.0.tgz" integrity sha512-i9Wzi0Dy49bNS4tXXeGeu0vIcn86xXdPQUpEYg+SO1YiO8HtomjmmRMaRyqL0r59QfcD4PfVbSF3qmsWFwAemA== dependencies: bs58check "^2.1.2" @@ -14706,7 +15087,7 @@ hdkey@2.1.0: hdkey@^0.7.1: version "0.7.1" - resolved "https://registry.yarnpkg.com/hdkey/-/hdkey-0.7.1.tgz#caee4be81aa77921e909b8d228dd0f29acaee632" + resolved "https://registry.npmjs.org/hdkey/-/hdkey-0.7.1.tgz" integrity sha512-ADjIY5Bqdvp3Sh+SLSS1W3/gTJnlDwwM3UsM/5sHPojc4pLf6X3MfMMiTa96MgtADNhTPa+E+SAKMtqdv1zUfw== dependencies: coinstring "^2.0.0" @@ -14714,17 +15095,17 @@ hdkey@^0.7.1: he@1.1.1: version "1.1.1" - resolved "https://registry.yarnpkg.com/he/-/he-1.1.1.tgz#93410fd21b009735151f8868c2f271f3427e23fd" + resolved "https://registry.npmjs.org/he/-/he-1.1.1.tgz" integrity sha512-z/GDPjlRMNOa2XJiB4em8wJpuuBfrFOlYKTZxtpkdr1uPdibHI8rYA3MY0KDObpVyaes0e/aunid/t88ZI2EKA== he@1.2.0: version "1.2.0" - resolved "https://registry.yarnpkg.com/he/-/he-1.2.0.tgz#84ae65fa7eafb165fddb61566ae14baf05664f0f" + resolved "https://registry.npmjs.org/he/-/he-1.2.0.tgz" integrity sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw== header-case@^1.0.0: version "1.0.1" - resolved "https://registry.yarnpkg.com/header-case/-/header-case-1.0.1.tgz#9535973197c144b09613cd65d317ef19963bd02d" + resolved "https://registry.npmjs.org/header-case/-/header-case-1.0.1.tgz" integrity sha512-i0q9mkOeSuhXw6bGgiQCCBgY/jlZuV/7dZXyZ9c6LcBrqwvT8eT719E9uxE5LiZftdl+z81Ugbg/VvXV4OJOeQ== dependencies: no-case "^2.2.0" @@ -14732,12 +15113,12 @@ header-case@^1.0.0: heap-js@^2.2.0: version "2.3.0" - resolved "https://registry.yarnpkg.com/heap-js/-/heap-js-2.3.0.tgz#8eed2cede31ec312aa696eef1d4df0565841f183" + resolved "https://registry.npmjs.org/heap-js/-/heap-js-2.3.0.tgz" integrity sha512-E5303mzwQ+4j/n2J0rDvEPBN7GKjhis10oHiYOgjxsmxYgqG++hz9NyLLOXttzH8as/DyiBHYpUrJTZWYaMo8Q== hexer@^1.5.0: version "1.5.0" - resolved "https://registry.yarnpkg.com/hexer/-/hexer-1.5.0.tgz#b86ce808598e8a9d1892c571f3cedd86fc9f0653" + resolved "https://registry.npmjs.org/hexer/-/hexer-1.5.0.tgz" integrity sha512-dyrPC8KzBzUJ19QTIo1gXNqIISRXQ0NwteW6OeQHRN4ZuZeHkdODfj0zHBdOlHbRY8GqbqK57C9oWSvQZizFsg== dependencies: ansi-color "^0.2.1" @@ -14747,22 +15128,22 @@ hexer@^1.5.0: hexoid@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/hexoid/-/hexoid-1.0.0.tgz#ad10c6573fb907de23d9ec63a711267d9dc9bc18" + resolved "https://registry.npmjs.org/hexoid/-/hexoid-1.0.0.tgz" integrity sha512-QFLV0taWQOZtvIRIAdBChesmogZrtuXvVWsFHZTk2SU+anspqZ2vMnoLg7IE1+Uk16N19APic1BuF8bC8c2m5g== highlight.js@^10.2.0, highlight.js@^10.4.1: version "10.7.3" - resolved "https://registry.yarnpkg.com/highlight.js/-/highlight.js-10.7.3.tgz#697272e3991356e40c3cac566a74eef681756531" + resolved "https://registry.npmjs.org/highlight.js/-/highlight.js-10.7.3.tgz" integrity sha512-tzcUFauisWKNHaRkN4Wjl/ZA07gENAjFl3J/c480dprkGTg5EQstgaNFqBfUqCq54kZRIEcreTsAgF/m2quD7A== highlightjs-solidity@^2.0.6: version "2.0.6" - resolved "https://registry.yarnpkg.com/highlightjs-solidity/-/highlightjs-solidity-2.0.6.tgz#e7a702a2b05e0a97f185e6ba39fd4846ad23a990" + resolved "https://registry.npmjs.org/highlightjs-solidity/-/highlightjs-solidity-2.0.6.tgz" integrity sha512-DySXWfQghjm2l6a/flF+cteroJqD4gI8GSdL4PtvxZSsAHie8m3yVe2JFoRg03ROKT6hp2Lc/BxXkqerNmtQYg== hmac-drbg@^1.0.1: version "1.0.1" - resolved "https://registry.yarnpkg.com/hmac-drbg/-/hmac-drbg-1.0.1.tgz#d2745701025a6c775a6c545793ed502fc0c649a1" + resolved "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz" integrity sha512-Tti3gMqLdZfhOQY1Mzf/AanLiqh1WTiJgEj26ZuYQ9fbkLomzGchCws4FyrSd4VkpBfiNhaE1On+lOz894jvXg== dependencies: hash.js "^1.0.3" @@ -14771,50 +15152,50 @@ hmac-drbg@^1.0.1: home-dir@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/home-dir/-/home-dir-1.0.0.tgz#2917eb44bdc9072ceda942579543847e3017fe4e" + resolved "https://registry.npmjs.org/home-dir/-/home-dir-1.0.0.tgz" integrity sha512-PPAP0BMY72XQ0sYwFow8EgHwUYfptkZusnZEGHkBjdKRXIYcVFsbEViqU4k8VrJWf0m7wMr9gscQX9klJYh7zg== homedir-polyfill@^1.0.0, homedir-polyfill@^1.0.1: version "1.0.3" - resolved "https://registry.yarnpkg.com/homedir-polyfill/-/homedir-polyfill-1.0.3.tgz#743298cef4e5af3e194161fbadcc2151d3a058e8" + resolved "https://registry.npmjs.org/homedir-polyfill/-/homedir-polyfill-1.0.3.tgz" integrity sha512-eSmmWE5bZTK2Nou4g0AI3zZ9rswp7GRKoKXS1BLUkvPviOqs4YTN1djQIqrXy9k5gEtdLPy86JjRwsNM9tnDcA== dependencies: parse-passwd "^1.0.0" hosted-git-info@^2.1.4, hosted-git-info@^2.6.0: version "2.8.9" - resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.8.9.tgz#dffc0bf9a21c02209090f2aa69429e1414daf3f9" + resolved "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz" integrity sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw== hosted-git-info@^3.0.6: version "3.0.8" - resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-3.0.8.tgz#6e35d4cc87af2c5f816e4cb9ce350ba87a3f370d" + resolved "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-3.0.8.tgz" integrity sha512-aXpmwoOhRBrw6X3j0h5RloK4x1OzsxMPyxqIHyNfSe2pypkVTZFpEiRoSipPEPlMrh0HW/XsjkJ5WgnCirpNUw== dependencies: lru-cache "^6.0.0" hosted-git-info@^4.0.0, hosted-git-info@^4.0.1: version "4.1.0" - resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-4.1.0.tgz#827b82867e9ff1c8d0c4d9d53880397d2c86d224" + resolved "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.1.0.tgz" integrity sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA== dependencies: lru-cache "^6.0.0" hosted-git-info@^5.0.0: version "5.2.1" - resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-5.2.1.tgz#0ba1c97178ef91f3ab30842ae63d6a272341156f" + resolved "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-5.2.1.tgz" integrity sha512-xIcQYMnhcx2Nr4JTjsFmwwnr9vldugPy9uVm0o87bjqqWMv9GaqsTeT+i99wTl0mk1uLxJtHxLb8kymqTENQsw== dependencies: lru-cache "^7.5.1" html-escaper@^2.0.0: version "2.0.2" - resolved "https://registry.yarnpkg.com/html-escaper/-/html-escaper-2.0.2.tgz#dfd60027da36a36dfcbe236262c00a5822681453" + resolved "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz" integrity sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg== htmlparser2@^8.0.1: version "8.0.2" - resolved "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-8.0.2.tgz#f002151705b383e62433b5cf466f5b716edaec21" + resolved "https://registry.npmjs.org/htmlparser2/-/htmlparser2-8.0.2.tgz" integrity sha512-GYdjWKDkbRLkZ5geuHs5NY1puJ+PXwP7+fHPRz06Eirsb9ugf6d8kkXav6ADhcODhFFPMIXyxkxSuMf3D6NCFA== dependencies: domelementtype "^2.3.0" @@ -14834,12 +15215,12 @@ http-basic@^8.1.1: http-cache-semantics@^4.0.0, http-cache-semantics@^4.1.0, http-cache-semantics@^4.1.1: version "4.1.1" - resolved "https://registry.yarnpkg.com/http-cache-semantics/-/http-cache-semantics-4.1.1.tgz#abe02fcb2985460bf0323be664436ec3476a6d5a" + resolved "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.1.tgz" integrity sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ== http-call@^5.1.2, http-call@^5.2.2, http-call@^5.3.0: version "5.3.0" - resolved "https://registry.yarnpkg.com/http-call/-/http-call-5.3.0.tgz#4ded815b13f423de176eb0942d69c43b25b148db" + resolved "https://registry.npmjs.org/http-call/-/http-call-5.3.0.tgz" integrity sha512-ahwimsC23ICE4kPl9xTBjKB4inbRaeLyZeRunC/1Jy/Z6X8tv22MEAjK+KBOMSVLaqXPTTmd8638waVIKLGx2w== dependencies: content-type "^1.0.4" @@ -14851,7 +15232,7 @@ http-call@^5.1.2, http-call@^5.2.2, http-call@^5.3.0: http-errors@2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-2.0.0.tgz#b7774a1486ef73cf7667ac9ae0858c012c57b9d3" + resolved "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz" integrity sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ== dependencies: depd "2.0.0" @@ -14862,7 +15243,7 @@ http-errors@2.0.0: http-errors@^1.7.1: version "1.8.1" - resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.8.1.tgz#7c3f28577cbc8a207388455dbd62295ed07bd68c" + resolved "https://registry.npmjs.org/http-errors/-/http-errors-1.8.1.tgz" integrity sha512-Kpk9Sm7NmI+RHhnj6OIWDI1d6fIoFAtFt9RLaTMRlg/8w49juAStsrBgp0Dp4OdxdVbRIeKhtCUvoi/RuAhO4g== dependencies: depd "~1.1.2" @@ -14873,17 +15254,17 @@ http-errors@^1.7.1: http-https@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/http-https/-/http-https-1.0.0.tgz#2f908dd5f1db4068c058cd6e6d4ce392c913389b" + resolved "https://registry.npmjs.org/http-https/-/http-https-1.0.0.tgz" integrity sha512-o0PWwVCSp3O0wS6FvNr6xfBCHgt0m1tvPLFOCc2iFDKTRAXhB7m8klDf7ErowFH8POa6dVdGatKU5I1YYwzUyg== http-parser-js@>=0.5.1: version "0.5.8" - resolved "https://registry.yarnpkg.com/http-parser-js/-/http-parser-js-0.5.8.tgz#af23090d9ac4e24573de6f6aecc9d84a48bf20e3" + resolved "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.8.tgz" integrity sha512-SGeBX54F94Wgu5RH3X5jsDtf4eHyRogWX1XGT3b4HuW3tQPM4AaBzoUji/4AAJNXCEOWZ5O0DgZmJw1947gD5Q== http-proxy-agent@^4.0.0, http-proxy-agent@^4.0.1: version "4.0.1" - resolved "https://registry.yarnpkg.com/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz#8a8c8ef7f5932ccf953c296ca8291b95aa74aa3a" + resolved "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz" integrity sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg== dependencies: "@tootallnate/once" "1" @@ -14892,7 +15273,7 @@ http-proxy-agent@^4.0.0, http-proxy-agent@^4.0.1: http-proxy-agent@^5.0.0: version "5.0.0" - resolved "https://registry.yarnpkg.com/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz#5129800203520d434f142bc78ff3c170800f2b43" + resolved "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz" integrity sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w== dependencies: "@tootallnate/once" "2" @@ -14901,7 +15282,7 @@ http-proxy-agent@^5.0.0: http-proxy-agent@^7.0.0: version "7.0.0" - resolved "https://registry.yarnpkg.com/http-proxy-agent/-/http-proxy-agent-7.0.0.tgz#e9096c5afd071a3fce56e6252bb321583c124673" + resolved "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-7.0.0.tgz" integrity sha512-+ZT+iBxVUQ1asugqnD6oWoRiS25AkjNfG085dKJGtGxkdwLQrMKU5wJr2bOOFAXzKcTuqq+7fZlTMgG3SRfIYQ== dependencies: agent-base "^7.1.0" @@ -14916,7 +15297,7 @@ http-response-object@^3.0.1: http-signature@~1.2.0: version "1.2.0" - resolved "https://registry.yarnpkg.com/http-signature/-/http-signature-1.2.0.tgz#9aecd925114772f3d95b65a60abb8f7c18fbace1" + resolved "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz" integrity sha512-CAbnr6Rz4CYQkLYUtSNXxQPUH2gK8f3iWexVlsnMeD+GjlsQ0Xsy1cOX+mN3dtxYomRy21CiOzU8Uhw6OwncEQ== dependencies: assert-plus "^1.0.0" @@ -14925,7 +15306,7 @@ http-signature@~1.2.0: http2-wrapper@^1.0.0-beta.5.2: version "1.0.3" - resolved "https://registry.yarnpkg.com/http2-wrapper/-/http2-wrapper-1.0.3.tgz#b8f55e0c1f25d4ebd08b3b0c2c079f9590800b3d" + resolved "https://registry.npmjs.org/http2-wrapper/-/http2-wrapper-1.0.3.tgz" integrity sha512-V+23sDMr12Wnz7iTcDeJr3O6AIxlnvT/bmaAAAP/Xda35C90p9599p0F1eHR/N1KILWSoWVAiOMFjBBXaXSMxg== dependencies: quick-lru "^5.1.1" @@ -14933,7 +15314,7 @@ http2-wrapper@^1.0.0-beta.5.2: http2-wrapper@^2.1.10: version "2.2.0" - resolved "https://registry.yarnpkg.com/http2-wrapper/-/http2-wrapper-2.2.0.tgz#b80ad199d216b7d3680195077bd7b9060fa9d7f3" + resolved "https://registry.npmjs.org/http2-wrapper/-/http2-wrapper-2.2.0.tgz" integrity sha512-kZB0wxMo0sh1PehyjJUWRFEd99KC5TLjZ2cULC4f9iqJBAmKQQXEICjxl5iPJRwP40dpeHFqqhm7tYCvODpqpQ== dependencies: quick-lru "^5.1.1" @@ -14941,7 +15322,7 @@ http2-wrapper@^2.1.10: https-proxy-agent@5, https-proxy-agent@^5.0.0: version "5.0.1" - resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz#c59ef224a04fe8b754f3db0063a25ea30d0005d6" + resolved "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz" integrity sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA== dependencies: agent-base "6" @@ -14949,40 +15330,40 @@ https-proxy-agent@5, https-proxy-agent@^5.0.0: https-proxy-agent@^2.2.1: version "2.2.4" - resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-2.2.4.tgz#4ee7a737abd92678a293d9b34a1af4d0d08c787b" + resolved "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-2.2.4.tgz" integrity sha512-OmvfoQ53WLjtA9HeYP9RNrWMJzzAz1JGaSFr1nijg0PVR1JaD/xbJq1mdEIIlxGpXp9eSe/O2LgU9DJmTPd0Eg== dependencies: agent-base "^4.3.0" debug "^3.1.0" -https-proxy-agent@^7.0.0: - version "7.0.1" - resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-7.0.1.tgz#0277e28f13a07d45c663633841e20a40aaafe0ab" - integrity sha512-Eun8zV0kcYS1g19r78osiQLEFIRspRUDd9tIfBCTBPBeMieF/EsJNL8VI3xOIdYRDEkjQnqOYPsZ2DsWsVsFwQ== +https-proxy-agent@^7.0.2: + version "7.0.2" + resolved "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.2.tgz" + integrity sha512-NmLNjm6ucYwtcUmL7JQC1ZQ57LmHP4lT15FQ8D61nak1rO6DH+fz5qNK2Ap5UN4ZapYICE3/0KodcLYSPsPbaA== dependencies: agent-base "^7.0.2" debug "4" human-signals@^2.1.0: version "2.1.0" - resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-2.1.0.tgz#dc91fcba42e4d06e4abaed33b3e7a3c02f514ea0" + resolved "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz" integrity sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw== -humanize-duration@^3.17.0, humanize-duration@^3.21.0: - version "3.28.0" - resolved "https://registry.yarnpkg.com/humanize-duration/-/humanize-duration-3.28.0.tgz#f79770c0bec34d3bfd4899338cc40643bc04df72" - integrity sha512-jMAxraOOmHuPbffLVDKkEKi/NeG8dMqP8lGRd6Tbf7JgAeG33jjgPWDbXXU7ypCI0o+oNKJFgbSB9FKVdWNI2A== +humanize-duration@^3.17.0, humanize-duration@^3.29.0: + version "3.29.0" + resolved "https://registry.npmjs.org/humanize-duration/-/humanize-duration-3.29.0.tgz" + integrity sha512-G5wZGwYTLaQAmYqhfK91aw3xt6wNbJW1RnWDh4qP1PvF4T/jnkjx2RVhG5kzB2PGsYGTn+oSDBQp+dMdILLxcg== humanize-ms@^1.2.1: version "1.2.1" - resolved "https://registry.yarnpkg.com/humanize-ms/-/humanize-ms-1.2.1.tgz#c46e3159a293f6b896da29316d8b6fe8bb79bbed" + resolved "https://registry.npmjs.org/humanize-ms/-/humanize-ms-1.2.1.tgz" integrity sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ== dependencies: ms "^2.0.0" husky@^3.1.0: version "3.1.0" - resolved "https://registry.yarnpkg.com/husky/-/husky-3.1.0.tgz#5faad520ab860582ed94f0c1a77f0f04c90b57c0" + resolved "https://registry.npmjs.org/husky/-/husky-3.1.0.tgz" integrity sha512-FJkPoHHB+6s4a+jwPqBudBDvYZsoQW5/HBuMSehC8qDiCe50kpcxeqFoDSlow+9I6wg47YxBoT3WxaURlrDIIQ== dependencies: chalk "^2.4.2" @@ -14999,89 +15380,89 @@ husky@^3.1.0: hyperlinker@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/hyperlinker/-/hyperlinker-1.0.0.tgz#23dc9e38a206b208ee49bc2d6c8ef47027df0c0e" + resolved "https://registry.npmjs.org/hyperlinker/-/hyperlinker-1.0.0.tgz" integrity sha512-Ty8UblRWFEcfSuIaajM34LdPXIhbs1ajEX/BBPv24J+enSVaEVY63xQ6lTO9VRYS5LAoghIG0IDJ+p+IPzKUQQ== -iconv-lite@0.4.24, iconv-lite@^0.4.24, iconv-lite@^0.4.4: +iconv-lite@0.4.24, iconv-lite@^0.4.24: version "0.4.24" - resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" + resolved "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz" integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== dependencies: safer-buffer ">= 2.1.2 < 3" iconv-lite@^0.5.0: version "0.5.2" - resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.5.2.tgz#af6d628dccfb463b7364d97f715e4b74b8c8c2b8" + resolved "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.5.2.tgz" integrity sha512-kERHXvpSaB4aU3eANwidg79K8FlrN77m8G9V+0vOR3HYaRifrlwMEpT7ZBJqLSEIHnEgJTHcWK82wwLwwKwtag== dependencies: safer-buffer ">= 2.1.2 < 3" iconv-lite@^0.6.2, iconv-lite@^0.6.3: version "0.6.3" - resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.6.3.tgz#a52f80bf38da1952eb5c681790719871a1a72501" + resolved "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz" integrity sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw== dependencies: safer-buffer ">= 2.1.2 < 3.0.0" idna-uts46-hx@^2.3.1: version "2.3.1" - resolved "https://registry.yarnpkg.com/idna-uts46-hx/-/idna-uts46-hx-2.3.1.tgz#a1dc5c4df37eee522bf66d969cc980e00e8711f9" + resolved "https://registry.npmjs.org/idna-uts46-hx/-/idna-uts46-hx-2.3.1.tgz" integrity sha512-PWoF9Keq6laYdIRwwCdhTPl60xRqAloYNMQLiyUnG42VjT53oW07BXIRM+NK7eQjzXjAk2gUvX9caRxlnF9TAA== dependencies: punycode "2.1.0" ieee754@1.1.13: version "1.1.13" - resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.1.13.tgz#ec168558e95aa181fd87d37f55c32bbcb6708b84" + resolved "https://registry.npmjs.org/ieee754/-/ieee754-1.1.13.tgz" integrity sha512-4vf7I2LYV/HaWerSo3XmlMkp5eZ83i+/CDluXi/IGTs/O1sejBNhTtnxzmRZfvOUqj7lZjqHkeTvpgSFDlWZTg== ieee754@^1.1.13, ieee754@^1.1.4, ieee754@^1.2.1: version "1.2.1" - resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352" + resolved "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz" integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA== -ignore-walk@3.0.4, ignore-walk@^3.0.1: +ignore-walk@3.0.4: version "3.0.4" - resolved "https://registry.yarnpkg.com/ignore-walk/-/ignore-walk-3.0.4.tgz#c9a09f69b7c7b479a5d74ac1a3c0d4236d2a6335" + resolved "https://registry.npmjs.org/ignore-walk/-/ignore-walk-3.0.4.tgz" integrity sha512-PY6Ii8o1jMRA1z4F2hRkH/xN59ox43DavKvD3oDpfurRlOJyAHpifIwpbdv1n4jt4ov0jSpw3kQ4GhJnpBL6WQ== dependencies: minimatch "^3.0.4" ignore-walk@^5.0.1: version "5.0.1" - resolved "https://registry.yarnpkg.com/ignore-walk/-/ignore-walk-5.0.1.tgz#5f199e23e1288f518d90358d461387788a154776" + resolved "https://registry.npmjs.org/ignore-walk/-/ignore-walk-5.0.1.tgz" integrity sha512-yemi4pMf51WKT7khInJqAvsIGzoqYXblnsz0ql8tM+yi1EKYTY1evX4NAbJrLL/Aanr2HyZeluqU+Oi7MGHokw== dependencies: minimatch "^5.0.1" ignore@^3.3.5: version "3.3.10" - resolved "https://registry.yarnpkg.com/ignore/-/ignore-3.3.10.tgz#0a97fb876986e8081c631160f8f9f389157f0043" + resolved "https://registry.npmjs.org/ignore/-/ignore-3.3.10.tgz" integrity sha512-Pgs951kaMm5GXP7MOvxERINe3gsaVjUWFm+UZPSq9xYriQAksyhg0csnS0KXSNRD5NmNdapXEpjxG49+AKh/ug== ignore@^4.0.6: version "4.0.6" - resolved "https://registry.yarnpkg.com/ignore/-/ignore-4.0.6.tgz#750e3db5862087b4737ebac8207ffd1ef27b25fc" + resolved "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz" integrity sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg== ignore@^5.0.4, ignore@^5.1.1, ignore@^5.1.4, ignore@^5.2.0: version "5.2.4" - resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.2.4.tgz#a291c0c6178ff1b960befe47fcdec301674a6324" + resolved "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz" integrity sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ== immediate@3.3.0, immediate@^3.2.3: version "3.3.0" - resolved "https://registry.yarnpkg.com/immediate/-/immediate-3.3.0.tgz#1aef225517836bcdf7f2a2de2600c79ff0269266" + resolved "https://registry.npmjs.org/immediate/-/immediate-3.3.0.tgz" integrity sha512-HR7EVodfFUdQCTIeySw+WDRFJlPcLOJbXfwwZ7Oom6tjsvZ3bOkCDJHehQC3nxJrv7+f9XecwazynjU8e4Vw3Q== immediate@~3.2.3: version "3.2.3" - resolved "https://registry.yarnpkg.com/immediate/-/immediate-3.2.3.tgz#d140fa8f614659bd6541233097ddaac25cdd991c" + resolved "https://registry.npmjs.org/immediate/-/immediate-3.2.3.tgz" integrity sha512-RrGCXRm/fRVqMIhqXrGEX9rRADavPiDFSoMb/k64i9XMk8uH4r/Omi5Ctierj6XzNecwDbO4WuFbDD1zmpl3Tg== import-fresh@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-2.0.0.tgz#d81355c15612d386c61f9ddd3922d4304822a546" + resolved "https://registry.npmjs.org/import-fresh/-/import-fresh-2.0.0.tgz" integrity sha512-eZ5H8rcgYazHbKC3PG4ClHNykCSxtAhxSSEM+2mb+7evD2CKF5V7c0dNum7AdpDh0ZdICwZY9sRSn8f+KH96sg== dependencies: caller-path "^2.0.0" @@ -15089,7 +15470,7 @@ import-fresh@^2.0.0: import-fresh@^3.0.0, import-fresh@^3.2.1: version "3.3.0" - resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.3.0.tgz#37162c25fcb9ebaa2e6e53d5b4d88ce17d9e0c2b" + resolved "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz" integrity sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw== dependencies: parent-module "^1.0.0" @@ -15097,7 +15478,7 @@ import-fresh@^3.0.0, import-fresh@^3.2.1: import-in-the-middle@1.4.2: version "1.4.2" - resolved "https://registry.yarnpkg.com/import-in-the-middle/-/import-in-the-middle-1.4.2.tgz#2a266676e3495e72c04bbaa5ec14756ba168391b" + resolved "https://registry.npmjs.org/import-in-the-middle/-/import-in-the-middle-1.4.2.tgz" integrity sha512-9WOz1Yh/cvO/p69sxRmhyQwrIGGSp7EIdcb+fFNVi7CzQGQB8U1/1XrKVSbEd/GNOAeM0peJtmi7+qphe7NvAw== dependencies: acorn "^8.8.2" @@ -15107,12 +15488,12 @@ import-in-the-middle@1.4.2: import-lazy@^2.1.0: version "2.1.0" - resolved "https://registry.yarnpkg.com/import-lazy/-/import-lazy-2.1.0.tgz#05698e3d45c88e8d7e9d92cb0584e77f096f3e43" + resolved "https://registry.npmjs.org/import-lazy/-/import-lazy-2.1.0.tgz" integrity sha512-m7ZEHgtw69qOGw+jwxXkHlrlIPdTGkyh66zXZ1ajZbxkDBNjSY/LGbmjc7h0s2ELsUDTAhFr55TrPSSqJGPG0A== import-local@^3.0.2: version "3.1.0" - resolved "https://registry.yarnpkg.com/import-local/-/import-local-3.1.0.tgz#b4479df8a5fd44f6cdce24070675676063c95cb4" + resolved "https://registry.npmjs.org/import-local/-/import-local-3.1.0.tgz" integrity sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg== dependencies: pkg-dir "^4.2.0" @@ -15120,27 +15501,27 @@ import-local@^3.0.2: imurmurhash@^0.1.4: version "0.1.4" - resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" + resolved "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz" integrity sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA== indent-string@^3.2.0: version "3.2.0" - resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-3.2.0.tgz#4a5fd6d27cc332f37e5419a504dbb837105c9289" + resolved "https://registry.npmjs.org/indent-string/-/indent-string-3.2.0.tgz" integrity sha512-BYqTHXTGUIvg7t1r4sJNKcbDZkL92nkXA8YtRpbjFHRHGDL/NtUeiBJMeE60kIFN/Mg8ESaWQvftaYMGJzQZCQ== indent-string@^4.0.0: version "4.0.0" - resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-4.0.0.tgz#624f8f4497d619b2d9768531d58f4122854d7251" + resolved "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz" integrity sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg== infer-owner@^1.0.4: version "1.0.4" - resolved "https://registry.yarnpkg.com/infer-owner/-/infer-owner-1.0.4.tgz#c4cefcaa8e51051c2a40ba2ce8a3d27295af9467" + resolved "https://registry.npmjs.org/infer-owner/-/infer-owner-1.0.4.tgz" integrity sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A== inflight@^1.0.4: version "1.0.6" - resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" + resolved "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz" integrity sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA== dependencies: once "^1.3.0" @@ -15148,32 +15529,32 @@ inflight@^1.0.4: inherits@2, inherits@2.0.4, inherits@^2.0.1, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.0, inherits@~2.0.1, inherits@~2.0.3, inherits@~2.0.4: version "2.0.4" - resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" + resolved "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz" integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== inherits@2.0.3: version "2.0.3" - resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" + resolved "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz" integrity sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw== ini@1.3.7: version "1.3.7" - resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.7.tgz#a09363e1911972ea16d7a8851005d84cf09a9a84" + resolved "https://registry.npmjs.org/ini/-/ini-1.3.7.tgz" integrity sha512-iKpRpXP+CrP2jyrxvg1kMUpXDyRUFDWurxbnVT1vQPx+Wz9uCYsMIqYuSBLV+PAaZG/d7kRLKRFc9oDMsH+mFQ== ini@2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/ini/-/ini-2.0.0.tgz#e5fd556ecdd5726be978fa1001862eacb0a94bc5" + resolved "https://registry.npmjs.org/ini/-/ini-2.0.0.tgz" integrity sha512-7PnF4oN3CvZF23ADhA5wRaYEQpJ8qygSkbtTXWBeXWXmEVRXK+1ITciHWwHhsjv1TmW0MgacIv6hEi5pX5NQdA== ini@^1.3.2, ini@^1.3.4, ini@~1.3.0: version "1.3.8" - resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.8.tgz#a29da425b48806f34767a4efce397269af28432c" + resolved "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz" integrity sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew== init-package-json@^3.0.2: version "3.0.2" - resolved "https://registry.yarnpkg.com/init-package-json/-/init-package-json-3.0.2.tgz#f5bc9bac93f2bdc005778bc2271be642fecfcd69" + resolved "https://registry.npmjs.org/init-package-json/-/init-package-json-3.0.2.tgz" integrity sha512-YhlQPEjNFqlGdzrBfDNRLhvoSgX7iQRgSxgsNknRQ9ITXFT7UMfVMWhBTOh2Y+25lRnGrv5Xz8yZwQ3ACR6T3A== dependencies: npm-package-arg "^9.0.1" @@ -15186,7 +15567,7 @@ init-package-json@^3.0.2: inquirer@^6.2.2: version "6.5.2" - resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-6.5.2.tgz#ad50942375d036d327ff528c08bd5fab089928ca" + resolved "https://registry.npmjs.org/inquirer/-/inquirer-6.5.2.tgz" integrity sha512-cntlB5ghuB0iuO65Ovoi8ogLHiWGs/5yNrtUcKjFhSSiVeAIVpD7koaSU9RM8mpXw5YDi9RdYXGQMaOURB7ycQ== dependencies: ansi-escapes "^3.2.0" @@ -15205,7 +15586,7 @@ inquirer@^6.2.2: inquirer@^7.0.5: version "7.3.3" - resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-7.3.3.tgz#04d176b2af04afc157a83fd7c100e98ee0aad003" + resolved "https://registry.npmjs.org/inquirer/-/inquirer-7.3.3.tgz" integrity sha512-JG3eIAj5V9CwcGvuOmoo6LB9kbAYT8HXffUl6memuszlwDC/qvFAJw49XJ5NROSFNPxp3iQg1GqkFhaY/CR0IA== dependencies: ansi-escapes "^4.2.1" @@ -15222,9 +15603,9 @@ inquirer@^7.0.5: strip-ansi "^6.0.0" through "^2.3.6" -inquirer@^8.2.0: +inquirer@^8.2.0, inquirer@^8.2.4: version "8.2.6" - resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-8.2.6.tgz#733b74888195d8d400a67ac332011b5fae5ea562" + resolved "https://registry.npmjs.org/inquirer/-/inquirer-8.2.6.tgz" integrity sha512-M1WuAmb7pn9zdFRtQYk26ZBoY043Sse0wVDdk4Bppr+JOXyQYybdtvK+l9wUibhtjdjvtoiNy8tk+EgsYIUqKg== dependencies: ansi-escapes "^4.2.1" @@ -15243,30 +15624,9 @@ inquirer@^8.2.0: through "^2.3.6" wrap-ansi "^6.0.1" -inquirer@^8.2.4: - version "8.2.5" - resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-8.2.5.tgz#d8654a7542c35a9b9e069d27e2df4858784d54f8" - integrity sha512-QAgPDQMEgrDssk1XiwwHoOGYF9BAbUcc1+j+FhEvaOt8/cKRqyLn0U5qA6F74fGhTMGxf92pOvPBeh29jQJDTQ== - dependencies: - ansi-escapes "^4.2.1" - chalk "^4.1.1" - cli-cursor "^3.1.0" - cli-width "^3.0.0" - external-editor "^3.0.3" - figures "^3.0.0" - lodash "^4.17.21" - mute-stream "0.0.8" - ora "^5.4.1" - run-async "^2.4.0" - rxjs "^7.5.5" - string-width "^4.1.0" - strip-ansi "^6.0.0" - through "^2.3.6" - wrap-ansi "^7.0.0" - inquirer@~6.3.1: version "6.3.1" - resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-6.3.1.tgz#7a413b5e7950811013a3db491c61d1f3b776e8e7" + resolved "https://registry.npmjs.org/inquirer/-/inquirer-6.3.1.tgz" integrity sha512-MmL624rfkFt4TG9y/Jvmt8vdmOo836U7Y0Hxr2aFk3RelZEGX4Igk0KabWrcaaZaTv9uzglOqWh1Vly+FAWAXA== dependencies: ansi-escapes "^3.2.0" @@ -15283,19 +15643,14 @@ inquirer@~6.3.1: strip-ansi "^5.1.0" through "^2.3.6" -install-artifact-from-github@^1.3.1: - version "1.3.2" - resolved "https://registry.yarnpkg.com/install-artifact-from-github/-/install-artifact-from-github-1.3.2.tgz#1a16d9508e40330523a3017ae0d4713ccc64de82" - integrity sha512-yCFcLvqk0yQdxx0uJz4t9Z3adDMLAYrcGYv546uRXCSvxE+GqNYhhz/KmrGcUKGI/gVLR9n/e/zM9jX/+ASMJQ== - install-artifact-from-github@^1.3.3: version "1.3.3" - resolved "https://registry.yarnpkg.com/install-artifact-from-github/-/install-artifact-from-github-1.3.3.tgz#57d89bacfa0f47d7307fe41b6247cda9f9a8079c" + resolved "https://registry.npmjs.org/install-artifact-from-github/-/install-artifact-from-github-1.3.3.tgz" integrity sha512-x79SL0d8WOi1ZjXSTUqqs0GPQZ92YArJAN9O46wgU9wdH2U9ecyyhB9YGDbPe2OLV4ptmt6AZYRQZ2GydQZosQ== internal-slot@^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" + resolved "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.5.tgz" integrity sha512-Y+R5hJrzs52QCG2laLn4udYVnxsfny9CpOhNhUvk/SSSVyF6T27FzRbF0sroPidSu3X8oEAkOn2K804mjpt6UQ== dependencies: get-intrinsic "^1.2.0" @@ -15309,59 +15664,54 @@ interpret@^1.0.0: interpret@^2.2.0: version "2.2.0" - resolved "https://registry.yarnpkg.com/interpret/-/interpret-2.2.0.tgz#1a78a0b5965c40a5416d007ad6f50ad27c417df9" + resolved "https://registry.npmjs.org/interpret/-/interpret-2.2.0.tgz" integrity sha512-Ju0Bz/cEia55xDwUWEa8+olFpCiQoypjnQySseKtmjNrnps3P+xfpUmGr90T7yjlVJmOtybRvPXhKMbHr+fWnw== invariant@2: version "2.2.4" - resolved "https://registry.yarnpkg.com/invariant/-/invariant-2.2.4.tgz#610f3c92c9359ce1db616e538008d23ff35158e6" + resolved "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz" integrity sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA== dependencies: loose-envify "^1.0.0" invert-kv@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/invert-kv/-/invert-kv-1.0.0.tgz#104a8e4aaca6d3d8cd157a8ef8bfab2d7a3ffdb6" + resolved "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz" integrity sha512-xgs2NH9AE66ucSq4cNG1nhSFghr5l6tdL15Pk+jl46bmmBapgoaY/AacXyaDznAqmGL99TiLSQgO/XazFSKYeQ== invert-kv@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/invert-kv/-/invert-kv-2.0.0.tgz#7393f5afa59ec9ff5f67a27620d11c226e3eec02" + resolved "https://registry.npmjs.org/invert-kv/-/invert-kv-2.0.0.tgz" integrity sha512-wPVv/y/QQ/Uiirj/vh3oP+1Ww+AWehmi1g5fFWGPF6IpCBCDVrhgHRMvrLfdYcwDh3QJbGXDW4JAuzxElLSqKA== io-ts@2.0.1: version "2.0.1" - resolved "https://registry.yarnpkg.com/io-ts/-/io-ts-2.0.1.tgz#1261c12f915c2f48d16393a36966636b48a45aa1" + resolved "https://registry.npmjs.org/io-ts/-/io-ts-2.0.1.tgz" integrity sha512-RezD+WcCfW4VkMkEcQWL/Nmy/nqsWTvTYg7oUmTGzglvSSV2P9h2z1PVeREPFf0GWNzruYleAt1XCMQZSg1xxQ== -ip-regex@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/ip-regex/-/ip-regex-2.1.0.tgz#fa78bf5d2e6913c911ce9f819ee5146bb6d844e9" - integrity sha512-58yWmlHpp7VYfcdTwMTvwMmqx/Elfxjd9RXTDyMsbL7lLWmhMylLEqiYVLKuLzOZqVgiWXD9MfR62Vv89VRxkw== - ip-regex@^4.1.0: version "4.3.0" - resolved "https://registry.yarnpkg.com/ip-regex/-/ip-regex-4.3.0.tgz#687275ab0f57fa76978ff8f4dddc8a23d5990db5" + resolved "https://registry.npmjs.org/ip-regex/-/ip-regex-4.3.0.tgz" integrity sha512-B9ZWJxHHOHUhUjCPrMpLD4xEq35bUTClHM1S6CBU5ixQnkZmwipwgc96vAd7AAGM9TGHvJR+Uss+/Ak6UphK+Q== ip@^1.1.5, ip@^1.1.8: version "1.1.8" - resolved "https://registry.yarnpkg.com/ip/-/ip-1.1.8.tgz#ae05948f6b075435ed3307acce04629da8cdbf48" + resolved "https://registry.npmjs.org/ip/-/ip-1.1.8.tgz" integrity sha512-PuExPYUiu6qMBQb4l06ecm6T6ujzhmh+MeJcW9wa89PoAz5pvd4zPgN5WJV104mb6S2T1AwNIAaB70JNrLQWhg== ip@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/ip/-/ip-2.0.0.tgz#4cf4ab182fee2314c75ede1276f8c80b479936da" + resolved "https://registry.npmjs.org/ip/-/ip-2.0.0.tgz" integrity sha512-WKa+XuLG1A1R0UWhl2+1XQSi+fZWMsYKffMZTTYsiZaUD8k2yDAj5atimTUD2TZkyCkNEeYE5NhFZmupOGtjYQ== ipaddr.js@1.9.1: version "1.9.1" - resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.9.1.tgz#bff38543eeb8984825079ff3a2a8e6cbd46781b3" + resolved "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz" integrity sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g== is-absolute@^0.2.2: version "0.2.6" - resolved "https://registry.yarnpkg.com/is-absolute/-/is-absolute-0.2.6.tgz#20de69f3db942ef2d87b9c2da36f172235b1b5eb" + resolved "https://registry.npmjs.org/is-absolute/-/is-absolute-0.2.6.tgz" integrity sha512-7Kr05z5LkcOpoMvxHN1PC11WbPabdNFmMYYo0eZvWu3BfVS0T03yoqYDczoCBx17xqk2x1XAZrcKiFVL88jxlQ== dependencies: is-relative "^0.2.1" @@ -15369,7 +15719,7 @@ is-absolute@^0.2.2: is-accessor-descriptor@^0.1.6: version "0.1.6" - resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz#a9e12cb3ae8d876727eeef3843f8a0897b5c98d6" + resolved "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz" integrity sha512-e1BM1qnDbMRG3ll2U9dSK0UMHuWOs3pY3AtcFsmvwPtKL3MML/Q86i+GilLfvqEs4GW+ExB91tQ3Ig9noDIZ+A== dependencies: kind-of "^3.0.2" @@ -15383,7 +15733,7 @@ is-accessor-descriptor@^1.0.0: is-arguments@^1.0.4, is-arguments@^1.1.1: version "1.1.1" - resolved "https://registry.yarnpkg.com/is-arguments/-/is-arguments-1.1.1.tgz#15b3f88fda01f2a97fec84ca761a560f123efa9b" + resolved "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.1.tgz" integrity sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA== dependencies: call-bind "^1.0.2" @@ -15391,7 +15741,7 @@ is-arguments@^1.0.4, is-arguments@^1.1.1: 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" + resolved "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.2.tgz" integrity sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w== dependencies: call-bind "^1.0.2" @@ -15400,36 +15750,36 @@ is-array-buffer@^3.0.1, is-array-buffer@^3.0.2: is-arrayish@^0.2.1: version "0.2.1" - resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" + resolved "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz" integrity sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg== is-arrayish@^0.3.1: version "0.3.2" - resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.3.2.tgz#4574a2ae56f7ab206896fb431eaeed066fdf8f03" + resolved "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.3.2.tgz" integrity sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ== is-base64@^1.1.0: version "1.1.0" - resolved "https://registry.yarnpkg.com/is-base64/-/is-base64-1.1.0.tgz#8ce1d719895030a457c59a7dcaf39b66d99d56b4" + resolved "https://registry.npmjs.org/is-base64/-/is-base64-1.1.0.tgz" integrity sha512-Nlhg7Z2dVC4/PTvIFkgVVNvPHSO2eR/Yd0XzhGiXCXEvWnptXlXa/clQ8aePPiMuxEGcWfzWbGw2Fe3d+Y3v1g== is-bigint@^1.0.1: version "1.0.4" - resolved "https://registry.yarnpkg.com/is-bigint/-/is-bigint-1.0.4.tgz#08147a1875bc2b32005d41ccd8291dffc6691df3" + resolved "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz" integrity sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg== dependencies: has-bigints "^1.0.1" is-binary-path@~2.1.0: version "2.1.0" - resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09" + resolved "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz" integrity sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw== dependencies: binary-extensions "^2.0.0" is-boolean-object@^1.1.0: version "1.1.2" - resolved "https://registry.yarnpkg.com/is-boolean-object/-/is-boolean-object-1.1.2.tgz#5c6dc200246dd9321ae4b885a114bb1f75f63719" + resolved "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz" integrity sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA== dependencies: call-bind "^1.0.2" @@ -15437,43 +15787,43 @@ is-boolean-object@^1.1.0: is-buffer@^1.0.2, is-buffer@^1.1.5: version "1.1.6" - resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be" + resolved "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz" integrity sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w== is-buffer@^2.0.2, is-buffer@^2.0.5, is-buffer@~2.0.3: version "2.0.5" - resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-2.0.5.tgz#ebc252e400d22ff8d77fa09888821a24a658c191" + resolved "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.5.tgz" integrity sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ== is-callable@^1.1.3, is-callable@^1.1.4, is-callable@^1.2.7: version "1.2.7" - resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.7.tgz#3bc2a85ea742d9e36205dcacdd72ca1fdc51b055" + resolved "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz" integrity sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA== is-ci@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/is-ci/-/is-ci-2.0.0.tgz#6bc6334181810e04b5c22b3d589fdca55026404c" + resolved "https://registry.npmjs.org/is-ci/-/is-ci-2.0.0.tgz" integrity sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w== dependencies: ci-info "^2.0.0" -is-core-module@^2.11.0, is-core-module@^2.5.0, is-core-module@^2.8.1: +is-core-module@^2.11.0: version "2.12.0" - resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.12.0.tgz#36ad62f6f73c8253fd6472517a12483cf03e7ec4" + resolved "https://registry.npmjs.org/is-core-module/-/is-core-module-2.12.0.tgz" integrity sha512-RECHCBCd/viahWmwj6enj19sKbHfJrddi/6cBDsNTKbNq0f7VeaUkBo60BqzvPqo/W54ChS62Z5qyun7cfOMqQ== dependencies: has "^1.0.3" -is-core-module@^2.13.0: +is-core-module@^2.13.0, is-core-module@^2.5.0, is-core-module@^2.8.1: version "2.13.0" - resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.13.0.tgz#bb52aa6e2cbd49a30c2ba68c42bf3435ba6072db" + resolved "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.0.tgz" integrity sha512-Z7dk6Qo8pOCp3l4tsX2C5ZVas4V+UxwQodwZhLopL91TX8UyyHEXafPcyoeeWuLrwzHcr3igO78wNLwHJHsMCQ== dependencies: has "^1.0.3" is-data-descriptor@^0.1.4: version "0.1.4" - resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz#0b5ee648388e2c860282e793f1856fec3f301b56" + resolved "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz" integrity sha512-+w9D5ulSoBNlmw9OHn3U2v51SyoCd0he+bB3xMl62oijhrspxowjU+AIcDY0N3iEJbUEkB15IlMASQsxYigvXg== dependencies: kind-of "^3.0.2" @@ -15487,14 +15837,14 @@ is-data-descriptor@^1.0.0: is-date-object@^1.0.1: version "1.0.5" - resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.5.tgz#0841d5536e724c25597bf6ea62e1bd38298df31f" + resolved "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz" integrity sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ== dependencies: has-tostringtag "^1.0.0" is-descriptor@^0.1.0: version "0.1.6" - resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-0.1.6.tgz#366d8240dde487ca51823b1ab9f07a10a78251ca" + resolved "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz" integrity sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg== dependencies: is-accessor-descriptor "^0.1.6" @@ -15512,128 +15862,128 @@ is-descriptor@^1.0.0, is-descriptor@^1.0.2: is-directory@^0.3.1: version "0.3.1" - resolved "https://registry.yarnpkg.com/is-directory/-/is-directory-0.3.1.tgz#61339b6f2475fc772fd9c9d83f5c8575dc154ae1" + resolved "https://registry.npmjs.org/is-directory/-/is-directory-0.3.1.tgz" integrity sha512-yVChGzahRFvbkscn2MlwGismPO12i9+znNruC5gVEntG3qu0xQMzsGg/JFbrsqDOHtHFPci+V5aP5T9I+yeKqw== is-docker@^2.0.0, is-docker@^2.1.1: version "2.2.1" - resolved "https://registry.yarnpkg.com/is-docker/-/is-docker-2.2.1.tgz#33eeabe23cfe86f14bde4408a02c0cfb853acdaa" + resolved "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz" integrity sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ== is-dotdir@^0.1.0: version "0.1.0" - resolved "https://registry.yarnpkg.com/is-dotdir/-/is-dotdir-0.1.0.tgz#da1e5464f59fc3a83c1d822b5ace091b45fe6b31" + resolved "https://registry.npmjs.org/is-dotdir/-/is-dotdir-0.1.0.tgz" integrity sha512-o5DMjqNJBNvA8Irv57+jeEFf/15AP29DCpG157wABj6XjBBzJSJ8NpYsRwNSTkjBc9xw2OVGAMiqmef3EMpMvA== dependencies: dotdir-regex "^0.1.0" is-dotfile@^1.0.0, is-dotfile@^1.0.1: version "1.0.3" - resolved "https://registry.yarnpkg.com/is-dotfile/-/is-dotfile-1.0.3.tgz#a6a2f32ffd2dfb04f5ca25ecd0f6b83cf798a1e1" + resolved "https://registry.npmjs.org/is-dotfile/-/is-dotfile-1.0.3.tgz" integrity sha512-9YclgOGtN/f8zx0Pr4FQYMdibBiTaH3sn52vjYip4ZSf6C4/6RfTEZ+MR4GvKhCxdPh21Bg42/WL55f6KSnKpg== is-equal-shallow@^0.1.3: version "0.1.3" - resolved "https://registry.yarnpkg.com/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz#2238098fc221de0bcfa5d9eac4c45d638aa1c534" + resolved "https://registry.npmjs.org/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz" integrity sha512-0EygVC5qPvIyb+gSz7zdD5/AAoS6Qrx1e//6N4yv4oNm30kqvdmG66oZFWVlQHUWe5OjP08FuTw2IdT0EOTcYA== dependencies: is-primitive "^2.0.0" is-extendable@^0.1.0, is-extendable@^0.1.1: version "0.1.1" - resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-0.1.1.tgz#62b110e289a471418e3ec36a617d472e301dfc89" + resolved "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz" integrity sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw== is-extendable@^1.0.1: version "1.0.1" - resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-1.0.1.tgz#a7470f9e426733d81bd81e1155264e3a3507cab4" + resolved "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz" integrity sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA== dependencies: is-plain-object "^2.0.4" is-extglob@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-1.0.0.tgz#ac468177c4943405a092fc8f29760c6ffc6206c0" + resolved "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz" integrity sha512-7Q+VbVafe6x2T+Tu6NcOf6sRklazEPmBoB3IWk3WdGZM2iGUwU/Oe3Wtq5lSEkDTTlpp8yx+5t4pzO/i9Ty1ww== is-extglob@^2.1.0, is-extglob@^2.1.1: version "2.1.1" - resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" + resolved "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz" integrity sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ== is-fn@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/is-fn/-/is-fn-1.0.0.tgz#9543d5de7bcf5b08a22ec8a20bae6e286d510d8c" + resolved "https://registry.npmjs.org/is-fn/-/is-fn-1.0.0.tgz" integrity sha512-XoFPJQmsAShb3jEQRfzf2rqXavq7fIqF/jOekp308JlThqrODnMpweVSGilKTCXELfLhltGP2AGgbQGVP8F1dg== is-fullwidth-code-point@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz#ef9e31386f031a7f0d643af82fde50c457ef00cb" + resolved "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz" integrity sha512-1pqUqRjkhPJ9miNq9SwMfdvi6lBJcd6eFxvfaivQhaH3SgisfiuudvFntdKOmxuee/77l+FPjKrQjWvmPjWrRw== dependencies: number-is-nan "^1.0.0" is-fullwidth-code-point@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f" + resolved "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz" integrity sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w== is-fullwidth-code-point@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" + resolved "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz" integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== is-function@^1.0.1: version "1.0.2" - resolved "https://registry.yarnpkg.com/is-function/-/is-function-1.0.2.tgz#4f097f30abf6efadac9833b17ca5dc03f8144e08" + resolved "https://registry.npmjs.org/is-function/-/is-function-1.0.2.tgz" integrity sha512-lw7DUp0aWXYg+CBCN+JKkcE0Q2RayZnSvnZBlwgxHBQhqt5pZNVy4Ri7H9GmmXkdu7LUthszM+Tor1u/2iBcpQ== is-generator-fn@^2.0.0: version "2.1.0" - resolved "https://registry.yarnpkg.com/is-generator-fn/-/is-generator-fn-2.1.0.tgz#7d140adc389aaf3011a8f2a2a4cfa6faadffb118" + resolved "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-2.1.0.tgz" integrity sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ== is-generator-function@^1.0.7: version "1.0.10" - resolved "https://registry.yarnpkg.com/is-generator-function/-/is-generator-function-1.0.10.tgz#f1558baf1ac17e0deea7c0415c438351ff2b3c72" + resolved "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.0.10.tgz" integrity sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A== dependencies: has-tostringtag "^1.0.0" is-glob@^1.1.3: version "1.1.3" - resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-1.1.3.tgz#b4c64b8303d39114492a460d364ccfb0d3c0a045" + resolved "https://registry.npmjs.org/is-glob/-/is-glob-1.1.3.tgz" integrity sha512-tKLBgs6hhR6eI0mq8M2b91eUynY27ydu7MbY68IxVE1mlX2r7vbvXJ5qNz/KgDGMXAqMis156hxfvQVh7DcYTA== is-glob@^2.0.0, is-glob@^2.0.1: version "2.0.1" - resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-2.0.1.tgz#d096f926a3ded5600f3fdfd91198cb0888c2d863" + resolved "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz" integrity sha512-a1dBeB19NXsf/E0+FHqkagizel/LQw2DjSQpvQrj3zT+jYPpaUCryPnrQajXKFLCMuf4I6FhRpaGtw4lPrG6Eg== dependencies: is-extglob "^1.0.0" is-glob@^3.1.0: version "3.1.0" - resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-3.1.0.tgz#7ba5ae24217804ac70707b96922567486cc3e84a" + resolved "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz" integrity sha512-UFpDDrPgM6qpnFNI+rh/p3bUaq9hKLZN8bMUWzxmcnZVS3omf4IPK+BrewlnWjO1WmUsMYuSjKh4UJuV4+Lqmw== dependencies: is-extglob "^2.1.0" is-glob@^4.0.0, is-glob@^4.0.1, is-glob@~4.0.1: version "4.0.3" - resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084" + resolved "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz" integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg== dependencies: is-extglob "^2.1.1" is-hex-prefixed@1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/is-hex-prefixed/-/is-hex-prefixed-1.0.0.tgz#7d8d37e6ad77e5d127148913c573e082d777f554" + resolved "https://registry.npmjs.org/is-hex-prefixed/-/is-hex-prefixed-1.0.0.tgz" integrity sha512-WvtOiug1VFrE9v1Cydwm+FnXd3+w9GaeVUss5W4v/SLy3UW00vP+6iNF2SdnfiBoLy4bTqVdkftNGTUeOFVsbA== is-installed-globally@^0.3.1: version "0.3.2" - resolved "https://registry.yarnpkg.com/is-installed-globally/-/is-installed-globally-0.3.2.tgz#fd3efa79ee670d1187233182d5b0a1dd00313141" + resolved "https://registry.npmjs.org/is-installed-globally/-/is-installed-globally-0.3.2.tgz" integrity sha512-wZ8x1js7Ia0kecP/CHM/3ABkAmujX7WPvQk6uu3Fly/Mk44pySulQpnHG46OMjHGXApINnV4QhY3SWnECO2z5g== dependencies: global-dirs "^2.0.1" @@ -15641,7 +15991,7 @@ is-installed-globally@^0.3.1: is-installed-globally@^0.4.0: version "0.4.0" - resolved "https://registry.yarnpkg.com/is-installed-globally/-/is-installed-globally-0.4.0.tgz#9a0fd407949c30f86eb6959ef1b7994ed0b7b520" + resolved "https://registry.npmjs.org/is-installed-globally/-/is-installed-globally-0.4.0.tgz" integrity sha512-iwGqO3J21aaSkC7jWnHP/difazwS7SFeIqxv6wEtLU8Y5KlzFTjyqcSIT0d8s4+dDhKytsk9PJZ2BkS5eZwQRQ== dependencies: global-dirs "^3.0.0" @@ -15649,56 +15999,56 @@ is-installed-globally@^0.4.0: is-interactive@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/is-interactive/-/is-interactive-1.0.0.tgz#cea6e6ae5c870a7b0a0004070b7b587e0252912e" + resolved "https://registry.npmjs.org/is-interactive/-/is-interactive-1.0.0.tgz" integrity sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w== is-lambda@^1.0.1: version "1.0.1" - resolved "https://registry.yarnpkg.com/is-lambda/-/is-lambda-1.0.1.tgz#3d9877899e6a53efc0160504cde15f82e6f061d5" + resolved "https://registry.npmjs.org/is-lambda/-/is-lambda-1.0.1.tgz" integrity sha512-z7CMFGNrENq5iFB9Bqo64Xk6Y9sg+epq1myIcdHaGnbMTYOxvzsEtdYqQUylB7LxfkvgrrjP32T6Ywciio9UIQ== is-lower-case@^1.1.0: version "1.1.3" - resolved "https://registry.yarnpkg.com/is-lower-case/-/is-lower-case-1.1.3.tgz#7e147be4768dc466db3bfb21cc60b31e6ad69393" + resolved "https://registry.npmjs.org/is-lower-case/-/is-lower-case-1.1.3.tgz" integrity sha512-+5A1e/WJpLLXZEDlgz4G//WYSHyQBD32qa4Jd3Lw06qQlv3fJHnp3YIHjTQSGzHMgzmVKz2ZP3rBxTHkPw/lxA== dependencies: lower-case "^1.1.0" is-map@^2.0.2: version "2.0.2" - resolved "https://registry.yarnpkg.com/is-map/-/is-map-2.0.2.tgz#00922db8c9bf73e81b7a335827bc2a43f2b91127" + resolved "https://registry.npmjs.org/is-map/-/is-map-2.0.2.tgz" integrity sha512-cOZFQQozTha1f4MxLFzlgKYPTyj26picdZTx82hbc/Xf4K/tZOOXSCkMvU4pKioRXGDLJRn0GM7Upe7kR721yg== is-natural-number@^4.0.1: version "4.0.1" - resolved "https://registry.yarnpkg.com/is-natural-number/-/is-natural-number-4.0.1.tgz#ab9d76e1db4ced51e35de0c72ebecf09f734cde8" + resolved "https://registry.npmjs.org/is-natural-number/-/is-natural-number-4.0.1.tgz" integrity sha512-Y4LTamMe0DDQIIAlaer9eKebAlDSV6huy+TWhJVPlzZh2o4tRP5SQWFlLn5N0To4mDD22/qdOq+veo1cSISLgQ== is-negative-zero@^2.0.2: version "2.0.2" - resolved "https://registry.yarnpkg.com/is-negative-zero/-/is-negative-zero-2.0.2.tgz#7bf6f03a28003b8b3965de3ac26f664d765f3150" + resolved "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz" integrity sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA== is-npm@^4.0.0: version "4.0.0" - resolved "https://registry.yarnpkg.com/is-npm/-/is-npm-4.0.0.tgz#c90dd8380696df87a7a6d823c20d0b12bbe3c84d" + resolved "https://registry.npmjs.org/is-npm/-/is-npm-4.0.0.tgz" integrity sha512-96ECIfh9xtDDlPylNPXhzjsykHsMJZ18ASpaWzQyBr4YRTcVjUvzaHayDAES2oU/3KpljhHUjtSRNiDwi0F0ig== is-npm@^5.0.0: version "5.0.0" - resolved "https://registry.yarnpkg.com/is-npm/-/is-npm-5.0.0.tgz#43e8d65cc56e1b67f8d47262cf667099193f45a8" + resolved "https://registry.npmjs.org/is-npm/-/is-npm-5.0.0.tgz" integrity sha512-WW/rQLOazUq+ST/bCAVBp/2oMERWLsR7OrKyt052dNDk4DHcDE0/7QSXITlmi+VBcV13DfIbysG3tZJm5RfdBA== is-number-object@^1.0.4: version "1.0.7" - resolved "https://registry.yarnpkg.com/is-number-object/-/is-number-object-1.0.7.tgz#59d50ada4c45251784e9904f5246c742f07a42fc" + resolved "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz" integrity sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ== dependencies: has-tostringtag "^1.0.0" is-number@^2.1.0: version "2.1.0" - resolved "https://registry.yarnpkg.com/is-number/-/is-number-2.1.0.tgz#01fcbbb393463a548f2f466cce16dece49db908f" + resolved "https://registry.npmjs.org/is-number/-/is-number-2.1.0.tgz" integrity sha512-QUzH43Gfb9+5yckcrSA0VBDwEtDUchrk4F6tfJZQuNzDJbEDB9cZNzSfXGQ1jqmdDY/kl41lUOWM9syA8z8jlg== dependencies: kind-of "^3.0.2" @@ -15712,37 +16062,37 @@ is-number@^3.0.0: is-number@^4.0.0: version "4.0.0" - resolved "https://registry.yarnpkg.com/is-number/-/is-number-4.0.0.tgz#0026e37f5454d73e356dfe6564699867c6a7f0ff" + resolved "https://registry.npmjs.org/is-number/-/is-number-4.0.0.tgz" integrity sha512-rSklcAIlf1OmFdyAqbnWTLVelsQ58uvZ66S/ZyawjWqIviTWCjg2PzVGw8WUA+nNuPTqb4wgA+NszrJ+08LlgQ== is-number@^7.0.0: version "7.0.0" - resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" + resolved "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz" integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== is-obj@^1.0.0: version "1.0.1" - resolved "https://registry.yarnpkg.com/is-obj/-/is-obj-1.0.1.tgz#3e4729ac1f5fde025cd7d83a896dab9f4f67db0f" + resolved "https://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz" integrity sha512-l4RyHgRqGN4Y3+9JHVrNqO+tN0rV5My76uW5/nuO4K1b6vw5G8d/cmFjP9tRfEsdhZNt0IFdZuK/c2Vr4Nb+Qg== is-obj@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/is-obj/-/is-obj-2.0.0.tgz#473fb05d973705e3fd9620545018ca8e22ef4982" + resolved "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz" integrity sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w== is-object@^1.0.1, is-object@~1.0.1: version "1.0.2" - resolved "https://registry.yarnpkg.com/is-object/-/is-object-1.0.2.tgz#a56552e1c665c9e950b4a025461da87e72f86fcf" + resolved "https://registry.npmjs.org/is-object/-/is-object-1.0.2.tgz" integrity sha512-2rRIahhZr2UWb45fIOuvZGpFtz0TyOZLf32KxBbSoUCeZR495zCKlWUKKUByk3geS2eAs7ZAABt0Y/Rx0GiQGA== is-path-inside@^3.0.1, is-path-inside@^3.0.2: version "3.0.3" - resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-3.0.3.tgz#d231362e53a07ff2b0e0ea7fed049161ffd16283" + resolved "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz" integrity sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ== is-plain-obj@^1.0.0, is-plain-obj@^1.1.0: version "1.1.0" - resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-1.1.0.tgz#71a50c8429dfca773c92a390a4a03b39fcd51d3e" + resolved "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz" integrity sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg== is-plain-obj@^2.0.0, is-plain-obj@^2.1.0: @@ -15759,32 +16109,32 @@ is-plain-object@^2.0.3, is-plain-object@^2.0.4: is-plain-object@^5.0.0: version "5.0.0" - resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-5.0.0.tgz#4427f50ab3429e9025ea7d52e9043a9ef4159344" + resolved "https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.0.0.tgz" integrity sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q== is-posix-bracket@^0.1.0: version "0.1.1" - resolved "https://registry.yarnpkg.com/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz#3334dc79774368e92f016e6fbc0a88f5cd6e6bc4" + resolved "https://registry.npmjs.org/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz" integrity sha512-Yu68oeXJ7LeWNmZ3Zov/xg/oDBnBK2RNxwYY1ilNJX+tKKZqgPK+qOn/Gs9jEu66KDY9Netf5XLKNGzas/vPfQ== is-primitive@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/is-primitive/-/is-primitive-2.0.0.tgz#207bab91638499c07b2adf240a41a87210034575" + resolved "https://registry.npmjs.org/is-primitive/-/is-primitive-2.0.0.tgz" integrity sha512-N3w1tFaRfk3UrPfqeRyD+GYDASU3W5VinKhlORy8EWVf/sIdDL9GAcew85XmktCfH+ngG7SRXEVDoO18WMdB/Q== is-promise@^2.2.2: version "2.2.2" - resolved "https://registry.yarnpkg.com/is-promise/-/is-promise-2.2.2.tgz#39ab959ccbf9a774cf079f7b40c7a26f763135f1" + resolved "https://registry.npmjs.org/is-promise/-/is-promise-2.2.2.tgz" integrity sha512-+lP4/6lKUBfQjZ2pdxThZvLUAafmZb8OAxFb8XXtiQmS35INgr85hdOGoEs124ez1FCnZJt6jau/T+alh58QFQ== is-property@^1.0.2: version "1.0.2" - resolved "https://registry.yarnpkg.com/is-property/-/is-property-1.0.2.tgz#57fe1c4e48474edd65b09911f26b1cd4095dda84" + resolved "https://registry.npmjs.org/is-property/-/is-property-1.0.2.tgz" integrity sha512-Ks/IoX00TtClbGQr4TWXemAnktAQvYB7HzcCxDGqEZU6oCmb2INHuOoKxbtR+HFkmYWBKv/dOZtGRiAjDhj92g== is-regex@^1.0.4, is-regex@^1.1.4, is-regex@~1.1.4: version "1.1.4" - resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.1.4.tgz#eef5663cd59fa4c0ae339505323df6854bb15958" + resolved "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz" integrity sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg== dependencies: call-bind "^1.0.2" @@ -15792,58 +16142,58 @@ is-regex@^1.0.4, is-regex@^1.1.4, is-regex@~1.1.4: is-relative@^0.2.1: version "0.2.1" - resolved "https://registry.yarnpkg.com/is-relative/-/is-relative-0.2.1.tgz#d27f4c7d516d175fb610db84bbeef23c3bc97aa5" + resolved "https://registry.npmjs.org/is-relative/-/is-relative-0.2.1.tgz" integrity sha512-9AMzjRmLqcue629b4ezEVSK6kJsYJlUIhMcygmYORUgwUNJiavHcC3HkaGx0XYpyVKQSOqFbMEZmW42cY87sYw== dependencies: is-unc-path "^0.1.1" is-retry-allowed@^1.0.0, is-retry-allowed@^1.1.0: version "1.2.0" - resolved "https://registry.yarnpkg.com/is-retry-allowed/-/is-retry-allowed-1.2.0.tgz#d778488bd0a4666a3be8a1482b9f2baafedea8b4" + resolved "https://registry.npmjs.org/is-retry-allowed/-/is-retry-allowed-1.2.0.tgz" integrity sha512-RUbUeKwvm3XG2VYamhJL1xFktgjvPzL0Hq8C+6yrWIswDy3BIXGqCxhxkc30N9jqK311gVU137K8Ei55/zVJRg== is-retry-allowed@^2.2.0: version "2.2.0" - resolved "https://registry.yarnpkg.com/is-retry-allowed/-/is-retry-allowed-2.2.0.tgz#88f34cbd236e043e71b6932d09b0c65fb7b4d71d" + resolved "https://registry.npmjs.org/is-retry-allowed/-/is-retry-allowed-2.2.0.tgz" integrity sha512-XVm7LOeLpTW4jV19QSH38vkswxoLud8sQ57YwJVTPWdiaI9I8keEhGFpBlslyVsgdQy4Opg8QOLb8YRgsyZiQg== is-set@^2.0.2: version "2.0.2" - resolved "https://registry.yarnpkg.com/is-set/-/is-set-2.0.2.tgz#90755fa4c2562dc1c5d4024760d6119b94ca18ec" + resolved "https://registry.npmjs.org/is-set/-/is-set-2.0.2.tgz" integrity sha512-+2cnTEZeY5z/iXGbLhPrOAaK/Mau5k5eXq9j14CpRTftq0pAJu2MwVRSZhyZWBzx3o6X795Lz6Bpb6R0GKf37g== 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" + resolved "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz" integrity sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA== dependencies: call-bind "^1.0.2" is-ssh@^1.4.0: version "1.4.0" - resolved "https://registry.yarnpkg.com/is-ssh/-/is-ssh-1.4.0.tgz#4f8220601d2839d8fa624b3106f8e8884f01b8b2" + resolved "https://registry.npmjs.org/is-ssh/-/is-ssh-1.4.0.tgz" integrity sha512-x7+VxdxOdlV3CYpjvRLBv5Lo9OJerlYanjwFrPR9fuGPjCiNiCzFgAWpiLAohSbsnH4ZAys3SBh+hq5rJosxUQ== dependencies: protocols "^2.0.1" is-stream-ended@^0.1.4: version "0.1.4" - resolved "https://registry.yarnpkg.com/is-stream-ended/-/is-stream-ended-0.1.4.tgz#f50224e95e06bce0e356d440a4827cd35b267eda" + resolved "https://registry.npmjs.org/is-stream-ended/-/is-stream-ended-0.1.4.tgz" integrity sha512-xj0XPvmr7bQFTvirqnFr50o0hQIh6ZItDqloxt5aJrR4NQsYeSsyFQERYGCAzfindAcnKjINnwEEgLx4IqVzQw== is-stream@^1.0.0, is-stream@^1.0.1, is-stream@^1.1.0: version "1.1.0" - resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44" + resolved "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz" integrity sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ== is-stream@^2.0.0: version "2.0.1" - resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-2.0.1.tgz#fac1e3d53b97ad5a9d0ae9cef2389f5810a5c077" + resolved "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz" integrity sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg== is-string@^1.0.5, is-string@^1.0.7: version "1.0.7" - resolved "https://registry.yarnpkg.com/is-string/-/is-string-1.0.7.tgz#0dd12bf2006f255bb58f695110eff7491eebc0fd" + resolved "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz" integrity sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg== dependencies: has-tostringtag "^1.0.0" @@ -15855,21 +16205,21 @@ is-subset@^0.1.1: is-symbol@^1.0.2, is-symbol@^1.0.3: version "1.0.4" - resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.4.tgz#a6dac93b635b063ca6872236de88910a57af139c" + resolved "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz" integrity sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg== dependencies: has-symbols "^1.0.2" is-text-path@^1.0.1: version "1.0.1" - resolved "https://registry.yarnpkg.com/is-text-path/-/is-text-path-1.0.1.tgz#4e1aa0fb51bfbcb3e92688001397202c1775b66e" + resolved "https://registry.npmjs.org/is-text-path/-/is-text-path-1.0.1.tgz" integrity sha512-xFuJpne9oFz5qDaodwmmG08e3CawH/2ZV8Qqza1Ko7Sk8POWbkRdwIoAWVhqvq0XeUzANEhKo2n0IXUGBm7A/w== dependencies: text-extensions "^1.0.0" is-typed-array@^1.1.10, is-typed-array@^1.1.3, is-typed-array@^1.1.9: version "1.1.10" - resolved "https://registry.yarnpkg.com/is-typed-array/-/is-typed-array-1.1.10.tgz#36a5b5cb4189b575d1a3e4b08536bfb485801e3f" + resolved "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.10.tgz" integrity sha512-PJqgEHiWZvMpaFZ3uTc8kHPM4+4ADTlDniuQL7cU/UDA0Ql7F70yGfHph3cLNe+c9toaigv+DFzTJKhc2CtO6A== dependencies: available-typed-arrays "^1.0.5" @@ -15880,80 +16230,80 @@ is-typed-array@^1.1.10, is-typed-array@^1.1.3, is-typed-array@^1.1.9: is-typedarray@^1.0.0, is-typedarray@~1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" + resolved "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz" integrity sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA== is-unc-path@^0.1.1: version "0.1.2" - resolved "https://registry.yarnpkg.com/is-unc-path/-/is-unc-path-0.1.2.tgz#6ab053a72573c10250ff416a3814c35178af39b9" + resolved "https://registry.npmjs.org/is-unc-path/-/is-unc-path-0.1.2.tgz" integrity sha512-HhLc5VDMH4pu3oMtIuunz/DFQUIoR561kMME3U3Afhj8b7vH085vkIkemrz1kLXCEIuoMAmO3yVmafWdSbGW8w== dependencies: unc-path-regex "^0.1.0" is-unicode-supported@^0.1.0: version "0.1.0" - resolved "https://registry.yarnpkg.com/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz#3f26c76a809593b52bfa2ecb5710ed2779b522a7" + resolved "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz" integrity sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw== is-upper-case@^1.1.0: version "1.1.2" - resolved "https://registry.yarnpkg.com/is-upper-case/-/is-upper-case-1.1.2.tgz#8d0b1fa7e7933a1e58483600ec7d9661cbaf756f" + resolved "https://registry.npmjs.org/is-upper-case/-/is-upper-case-1.1.2.tgz" integrity sha512-GQYSJMgfeAmVwh9ixyk888l7OIhNAGKtY6QA+IrWlu9MDTCaXmeozOZ2S9Knj7bQwBO/H6J2kb+pbyTUiMNbsw== dependencies: upper-case "^1.1.0" is-url@^1.2.2, is-url@^1.2.4: version "1.2.4" - resolved "https://registry.yarnpkg.com/is-url/-/is-url-1.2.4.tgz#04a4df46d28c4cff3d73d01ff06abeb318a1aa52" + resolved "https://registry.npmjs.org/is-url/-/is-url-1.2.4.tgz" integrity sha512-ITvGim8FhRiYe4IQ5uHSkj7pVaPDrCTkNd3yq3cV7iZAcJdHTUMPMEHcqSOy9xZ9qFenQCvi+2wjH9a1nXqHww== is-utf8@^0.2.0: version "0.2.1" - resolved "https://registry.yarnpkg.com/is-utf8/-/is-utf8-0.2.1.tgz#4b0da1442104d1b336340e80797e865cf39f7d72" + resolved "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz" integrity sha512-rMYPYvCzsXywIsldgLaSoPlw5PfoB/ssr7hY4pLfcodrA5M/eArza1a9VmTiNIBNMjOGr1Ow9mTyU2o69U6U9Q== is-weakref@^1.0.2: version "1.0.2" - resolved "https://registry.yarnpkg.com/is-weakref/-/is-weakref-1.0.2.tgz#9529f383a9338205e89765e0392efc2f100f06f2" + 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-windows@^0.1.0: version "0.1.1" - resolved "https://registry.yarnpkg.com/is-windows/-/is-windows-0.1.1.tgz#be310715431cfabccc54ab3951210fa0b6d01abe" + resolved "https://registry.npmjs.org/is-windows/-/is-windows-0.1.1.tgz" integrity sha512-3wf9CiLayWrH2O5E99jdTwVZyZwVckl+Gz4CkAtjssBPkawQBoPWDEyAHmwZnODQxqYduCBrlGfKQfvE/Mxh+A== is-windows@^0.2.0: version "0.2.0" - resolved "https://registry.yarnpkg.com/is-windows/-/is-windows-0.2.0.tgz#de1aa6d63ea29dd248737b69f1ff8b8002d2108c" + resolved "https://registry.npmjs.org/is-windows/-/is-windows-0.2.0.tgz" integrity sha512-n67eJYmXbniZB7RF4I/FTjK1s6RPOCTxhYrVYLRaCt3lF0mpWZPKr3T2LSZAqyjQsxR2qMmGYXXzK0YWwcPM1Q== is-windows@^1.0.1, is-windows@^1.0.2: version "1.0.2" - resolved "https://registry.yarnpkg.com/is-windows/-/is-windows-1.0.2.tgz#d1850eb9791ecd18e6182ce12a30f396634bb19d" + resolved "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz" integrity sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA== is-wsl@^1.1.0: version "1.1.0" - resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-1.1.0.tgz#1f16e4aa22b04d1336b66188a66af3c600c3a66d" + resolved "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz" integrity sha512-gfygJYZ2gLTDlmbWMI0CE2MwnFzSN/2SZfkMlItC4K/JBlsWVDB0bO6XhqcY13YXE7iMcAJnzTCJjPiTeJJ0Mw== is-wsl@^2.1.1, is-wsl@^2.2.0: version "2.2.0" - resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-2.2.0.tgz#74a4c76e77ca9fd3f932f290c17ea326cd157271" + resolved "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz" integrity sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww== dependencies: is-docker "^2.0.0" is-yarn-global@^0.3.0: version "0.3.0" - resolved "https://registry.yarnpkg.com/is-yarn-global/-/is-yarn-global-0.3.0.tgz#d502d3382590ea3004893746754c89139973e232" + resolved "https://registry.npmjs.org/is-yarn-global/-/is-yarn-global-0.3.0.tgz" integrity sha512-VjSeb/lHmkoyd8ryPVIKvOCn4D1koMqY+vqyjjUfc3xyKtP4dYOxM44sZrnqQSzSds3xyOrUTLTC9LVCVgLngw== is2@^2.0.6: version "2.0.9" - resolved "https://registry.yarnpkg.com/is2/-/is2-2.0.9.tgz#ff63b441f90de343fa8fac2125ee170da8e8240d" + resolved "https://registry.npmjs.org/is2/-/is2-2.0.9.tgz" integrity sha512-rZkHeBn9Zzq52sd9IUIV3a5mfwBY+o2HePMh0wkGBM4z4qjvy2GwVxQ6nNXSfw6MmVP6gf1QIlWjiOavhM3x5g== dependencies: deep-is "^0.1.3" @@ -15962,32 +16312,32 @@ is2@^2.0.6: isarray@0.0.1: version "0.0.1" - resolved "https://registry.yarnpkg.com/isarray/-/isarray-0.0.1.tgz#8a18acfca9a8f4177e09abfc6038939b05d1eedf" + resolved "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz" integrity sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ== isarray@1.0.0, isarray@^1.0.0, isarray@~1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" + resolved "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz" integrity sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ== isarray@^2.0.1, isarray@^2.0.5: version "2.0.5" - resolved "https://registry.yarnpkg.com/isarray/-/isarray-2.0.5.tgz#8af1e4c1221244cc62459faf38940d4e644a5723" + resolved "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz" integrity sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw== isexe@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" + resolved "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz" integrity sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw== isobject@^1.0.0: version "1.0.2" - resolved "https://registry.yarnpkg.com/isobject/-/isobject-1.0.2.tgz#f0f9b8ce92dd540fa0740882e3835a2e022ec78a" + resolved "https://registry.npmjs.org/isobject/-/isobject-1.0.2.tgz" integrity sha512-WQQgFoML/sLgmhu9zTekYHZUJaPoa/fpVMQ8oxIuOvppzs70DxxyHZdAIjwcuuNDOVtNYsahhqtBbUvKwhRcGw== isobject@^2.0.0: version "2.1.0" - resolved "https://registry.yarnpkg.com/isobject/-/isobject-2.1.0.tgz#f065561096a3f1da2ef46272f815c840d87e0c89" + resolved "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz" integrity sha512-+OUdGJlgjOBZDfxnDjYYG6zp487z0JGNQq3cYQYg5f5hKR+syHMsaztzGeml/4kGG55CSpKSpWTY+jYGgsHLgA== dependencies: isarray "1.0.0" @@ -15999,7 +16349,7 @@ isobject@^3.0.0, isobject@^3.0.1: isomorphic-fetch@^2.2.0, isomorphic-fetch@^2.2.1: version "2.2.1" - resolved "https://registry.yarnpkg.com/isomorphic-fetch/-/isomorphic-fetch-2.2.1.tgz#611ae1acf14f5e81f729507472819fe9733558a9" + resolved "https://registry.npmjs.org/isomorphic-fetch/-/isomorphic-fetch-2.2.1.tgz" integrity sha512-9c4TNAKYXM5PRyVcwUZrF3W09nQ+sO7+jydgs4ZGW9dhsLG2VOlISJABombdQqQRXCwuYG3sYV/puGf5rp0qmA== dependencies: node-fetch "^1.0.1" @@ -16007,35 +16357,35 @@ isomorphic-fetch@^2.2.0, isomorphic-fetch@^2.2.1: isomorphic-fetch@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/isomorphic-fetch/-/isomorphic-fetch-3.0.0.tgz#0267b005049046d2421207215d45d6a262b8b8b4" + resolved "https://registry.npmjs.org/isomorphic-fetch/-/isomorphic-fetch-3.0.0.tgz" integrity sha512-qvUtwJ3j6qwsF3jLxkZ72qCgjMysPzDfeV240JHiGZsANBYd+EEuu35v7dfrJ9Up0Ak07D7GGSkGhCHTqg/5wA== dependencies: node-fetch "^2.6.1" whatwg-fetch "^3.4.1" -isomorphic-ws@5.0.0: +isomorphic-ws@5.0.0, isomorphic-ws@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/isomorphic-ws/-/isomorphic-ws-5.0.0.tgz#e5529148912ecb9b451b46ed44d53dae1ce04bbf" integrity sha512-muId7Zzn9ywDsyXgTIafTry2sV3nySZeUDe6YedVd1Hvuuep5AsIlqK+XefWpYTyJG5e503F2xIuT2lcU6rCSw== isomorphic-ws@^4.0.1: version "4.0.1" - resolved "https://registry.yarnpkg.com/isomorphic-ws/-/isomorphic-ws-4.0.1.tgz#55fd4cd6c5e6491e76dc125938dd863f5cd4f2dc" + resolved "https://registry.npmjs.org/isomorphic-ws/-/isomorphic-ws-4.0.1.tgz" integrity sha512-BhBvN2MBpWTaSHdWRb/bwdZJ1WaehQ2L1KngkCkfLUGF0mAWAT1sQUQacEmQ0jXkFw/czDXPNQSL5u2/Krsz1w== isstream@0.1.x, isstream@~0.1.2: version "0.1.2" - resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a" + resolved "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz" integrity sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g== istanbul-lib-coverage@^3.0.0, istanbul-lib-coverage@^3.2.0: version "3.2.0" - resolved "https://registry.yarnpkg.com/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.0.tgz#189e7909d0a39fa5a3dfad5b03f71947770191d3" + resolved "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.0.tgz" integrity sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw== istanbul-lib-instrument@^5.0.4, istanbul-lib-instrument@^5.1.0: version "5.2.1" - resolved "https://registry.yarnpkg.com/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.1.tgz#d10c8885c2125574e1c231cacadf955675e1ce3d" + resolved "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.1.tgz" integrity sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg== dependencies: "@babel/core" "^7.12.3" @@ -16046,7 +16396,7 @@ istanbul-lib-instrument@^5.0.4, istanbul-lib-instrument@^5.1.0: istanbul-lib-report@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz#7518fe52ea44de372f460a76b5ecda9ffb73d8a6" + resolved "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz" integrity sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw== dependencies: istanbul-lib-coverage "^3.0.0" @@ -16055,7 +16405,7 @@ istanbul-lib-report@^3.0.0: istanbul-lib-source-maps@^4.0.0: version "4.0.1" - resolved "https://registry.yarnpkg.com/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz#895f3a709fcfba34c6de5a42939022f3e4358551" + resolved "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz" integrity sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw== dependencies: debug "^4.1.1" @@ -16064,7 +16414,7 @@ istanbul-lib-source-maps@^4.0.0: istanbul-reports@^3.1.3: version "3.1.5" - resolved "https://registry.yarnpkg.com/istanbul-reports/-/istanbul-reports-3.1.5.tgz#cc9a6ab25cb25659810e4785ed9d9fb742578bae" + resolved "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.5.tgz" integrity sha512-nUsEMa9pBt/NOHqbcbeJEgqIlY/K7rVWUX6Lql2orY5e9roQOthbR3vtY4zzf2orPELg80fnxxk9zUyPlgwD1w== dependencies: html-escaper "^2.0.0" @@ -16072,7 +16422,7 @@ istanbul-reports@^3.1.3: istanbul@^0.4.5: version "0.4.5" - resolved "https://registry.yarnpkg.com/istanbul/-/istanbul-0.4.5.tgz#65c7d73d4c4da84d4f3ac310b918fb0b8033733b" + resolved "https://registry.npmjs.org/istanbul/-/istanbul-0.4.5.tgz" integrity sha512-nMtdn4hvK0HjUlzr1DrKSUY8ychprt8dzHOgY2KXsIhHu5PuQQEOTM27gV9Xblyon7aUH/TSFIjRHEODF/FRPg== dependencies: abbrev "1.0.x" @@ -16092,7 +16442,7 @@ istanbul@^0.4.5: isurl@^1.0.0-alpha5: version "1.0.0" - resolved "https://registry.yarnpkg.com/isurl/-/isurl-1.0.0.tgz#b27f4f49f3cdaa3ea44a0a5b7f3462e6edc39d67" + resolved "https://registry.npmjs.org/isurl/-/isurl-1.0.0.tgz" integrity sha512-1P/yWsxPlDtn7QeRD+ULKQPaIaN6yF368GZ2vDfv0AL0NwpStafjWCDDdn0k8wgFMWpVAqG7oJhxHnlud42i9w== dependencies: has-to-string-tag-x "^1.2.0" @@ -16100,24 +16450,24 @@ isurl@^1.0.0-alpha5: iter-tools@^7.0.2: version "7.5.1" - resolved "https://registry.yarnpkg.com/iter-tools/-/iter-tools-7.5.1.tgz#0b0253403bf9364335917d562ba7735d19b4c16a" + resolved "https://registry.npmjs.org/iter-tools/-/iter-tools-7.5.1.tgz" integrity sha512-YWfjOIj1x3mPY6zB+c1HqnVzOHAVM2iWmNlylvBtSnXC0mnSmCAlmUhfEO4M82m1avdSxe//TlxmLQ3hdj75Cg== dependencies: "@babel/runtime" "^7.12.1" iterall@^1.2.2: version "1.3.0" - resolved "https://registry.yarnpkg.com/iterall/-/iterall-1.3.0.tgz#afcb08492e2915cbd8a0884eb93a8c94d0d72fea" + resolved "https://registry.npmjs.org/iterall/-/iterall-1.3.0.tgz" integrity sha512-QZ9qOMdF+QLHxy1QIpUHUU1D5pS2CG2P69LF6L6CPjPYA/XMOmKV3PZpawHoAjHNyB0swdVTRxdYT4tbBbxqwg== iterate-iterator@^1.0.1: version "1.0.2" - resolved "https://registry.yarnpkg.com/iterate-iterator/-/iterate-iterator-1.0.2.tgz#551b804c9eaa15b847ea6a7cdc2f5bf1ec150f91" + resolved "https://registry.npmjs.org/iterate-iterator/-/iterate-iterator-1.0.2.tgz" integrity sha512-t91HubM4ZDQ70M9wqp+pcNpu8OyJ9UAtXntT/Bcsvp5tZMnz9vRa+IunKXeI8AnfZMTv0jNuVEmGeLSMjVvfPw== iterate-value@^1.0.0, iterate-value@^1.0.2: version "1.0.2" - resolved "https://registry.yarnpkg.com/iterate-value/-/iterate-value-1.0.2.tgz#935115bd37d006a52046535ebc8d07e9c9337f57" + resolved "https://registry.npmjs.org/iterate-value/-/iterate-value-1.0.2.tgz" integrity sha512-A6fMAio4D2ot2r/TYzr4yUWrmwNdsN5xL7+HUiyACE4DXm+q8HtPcnFTp+NnW3k4N05tZ7FVYFFb2CR13NxyHQ== dependencies: es-get-iterator "^1.0.2" @@ -16125,7 +16475,7 @@ iterate-value@^1.0.0, iterate-value@^1.0.2: j6@^1.0.2: version "1.0.2" - resolved "https://registry.yarnpkg.com/j6/-/j6-1.0.2.tgz#48088acb1c66f610baf2e50b4028d0932f35ed89" + resolved "https://registry.npmjs.org/j6/-/j6-1.0.2.tgz" integrity sha512-pKADWYWaJu2traMItqvGo9XUF7/FKUO0SaI7b7ddvsqKhHIsw6Y/CTUvhc0MBSt9M3Q8/ywvQc0+KYqxLJcMnw== dependencies: algebrite "^0.2.23" @@ -16135,13 +16485,13 @@ j6@^1.0.2: jStat@^1.5.2: version "1.8.6" - resolved "https://registry.yarnpkg.com/jStat/-/jStat-1.8.6.tgz#ab4d465b21f583d37a72ab2f97a300492da7575d" + resolved "https://registry.npmjs.org/jStat/-/jStat-1.8.6.tgz" integrity sha512-Oh/ePZVSoFigme69pHTQudcGh64cpNH9Lz3hBZcRJWLrDqpw7JfuYU9F3dj9py3tBYmHz7og7ZT8hXTNbYq9Rw== jackspeak@^2.0.3: - version "2.2.2" - resolved "https://registry.yarnpkg.com/jackspeak/-/jackspeak-2.2.2.tgz#707c62733924b8dc2a0a629dc6248577788b5385" - integrity sha512-mgNtVv4vUuaKA97yxUHoA3+FkuhtxkjdXEWOyB/N76fjy0FjezEt34oy3epBtvCvS+7DyKwqCFWx/oJLV5+kCg== + version "2.3.3" + resolved "https://registry.npmjs.org/jackspeak/-/jackspeak-2.3.3.tgz" + integrity sha512-R2bUw+kVZFS/h1AZqBKrSgDmdmjApzgY0AlCPumopFiAlbUxE2gf+SCuBzQ0cP5hHmUmFYF5yw55T97Th5Kstg== dependencies: "@isaacs/cliui" "^8.0.2" optionalDependencies: @@ -16149,7 +16499,7 @@ jackspeak@^2.0.3: jaeger-client@^3.15.0: version "3.19.0" - resolved "https://registry.yarnpkg.com/jaeger-client/-/jaeger-client-3.19.0.tgz#9b5bd818ebd24e818616ee0f5cffe1722a53ae6e" + resolved "https://registry.npmjs.org/jaeger-client/-/jaeger-client-3.19.0.tgz" integrity sha512-M0c7cKHmdyEUtjemnJyx/y9uX16XHocL46yQvyqDlPdvAcwPDbHrIbKjQdBqtiE4apQ/9dmr+ZLJYYPGnurgpw== dependencies: node-int64 "^0.4.0" @@ -16159,18 +16509,18 @@ jaeger-client@^3.15.0: xorshift "^1.1.1" jake@^10.8.5: - version "10.8.5" - resolved "https://registry.yarnpkg.com/jake/-/jake-10.8.5.tgz#f2183d2c59382cb274226034543b9c03b8164c46" - integrity sha512-sVpxYeuAhWt0OTWITwT98oyV0GsXyMlXCF+3L1SuafBVUIr/uILGRB+NqwkzhgXKvoJpDIpQvqkUALgdmQsQxw== + version "10.8.7" + resolved "https://registry.npmjs.org/jake/-/jake-10.8.7.tgz" + integrity sha512-ZDi3aP+fG/LchyBzUM804VjddnwfSfsdeYkwt8NcbKRvo4rFkjhs456iLFn3k2ZUWvNe4i48WACDbza8fhq2+w== dependencies: async "^3.2.3" chalk "^4.0.2" - filelist "^1.0.1" - minimatch "^3.0.4" + filelist "^1.0.4" + minimatch "^3.1.2" java-parser@2.0.2: version "2.0.2" - resolved "https://registry.yarnpkg.com/java-parser/-/java-parser-2.0.2.tgz#488160fbf4fd1351880134f9af832537f2124995" + resolved "https://registry.npmjs.org/java-parser/-/java-parser-2.0.2.tgz" integrity sha512-fwv1eDYE4OIAN+XS7cD8aB7UdQyAh3Uz36ydWqemvnDKXEdLbxq7qIbvsjpSvS1NHFR+r81N7AjGcpnamjVxJw== dependencies: chevrotain "6.5.0" @@ -16178,12 +16528,12 @@ java-parser@2.0.2: javascript-natural-sort@0.7.1: version "0.7.1" - resolved "https://registry.yarnpkg.com/javascript-natural-sort/-/javascript-natural-sort-0.7.1.tgz#f9e2303d4507f6d74355a73664d1440fb5a0ef59" + resolved "https://registry.npmjs.org/javascript-natural-sort/-/javascript-natural-sort-0.7.1.tgz" integrity sha512-nO6jcEfZWQXDhOiBtG2KvKyEptz7RVbpGP4vTD2hLBdmNQSsCiicO2Ioinv6UI4y9ukqnBpy+XZ9H6uLNgJTlw== jest-changed-files@^29.5.0: version "29.5.0" - resolved "https://registry.yarnpkg.com/jest-changed-files/-/jest-changed-files-29.5.0.tgz#e88786dca8bf2aa899ec4af7644e16d9dcf9b23e" + resolved "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-29.5.0.tgz" integrity sha512-IFG34IUMUaNBIxjQXF/iu7g6EcdMrGRRxaUSw92I/2g2YC6vCdTltl4nHvt7Ci5nSJwXIkCu8Ka1DKF+X7Z1Ag== dependencies: execa "^5.0.0" @@ -16191,7 +16541,7 @@ jest-changed-files@^29.5.0: jest-circus@^29.0.2, jest-circus@^29.5.0: version "29.5.0" - resolved "https://registry.yarnpkg.com/jest-circus/-/jest-circus-29.5.0.tgz#b5926989449e75bff0d59944bae083c9d7fb7317" + resolved "https://registry.npmjs.org/jest-circus/-/jest-circus-29.5.0.tgz" integrity sha512-gq/ongqeQKAplVxqJmbeUOJJKkW3dDNPY8PjhJ5G0lBRvu0e3EWGxGy5cI4LAGA7gV2UHCtWBI4EMXK8c9nQKA== dependencies: "@jest/environment" "^29.5.0" @@ -16217,7 +16567,7 @@ jest-circus@^29.0.2, jest-circus@^29.5.0: jest-cli@^29.5.0: version "29.5.0" - resolved "https://registry.yarnpkg.com/jest-cli/-/jest-cli-29.5.0.tgz#b34c20a6d35968f3ee47a7437ff8e53e086b4a67" + resolved "https://registry.npmjs.org/jest-cli/-/jest-cli-29.5.0.tgz" integrity sha512-L1KcP1l4HtfwdxXNFCL5bmUbLQiKrakMUriBEcc1Vfz6gx31ORKdreuWvmQVBit+1ss9NNR3yxjwfwzZNdQXJw== dependencies: "@jest/core" "^29.5.0" @@ -16235,7 +16585,7 @@ jest-cli@^29.5.0: jest-config@^29.5.0: version "29.5.0" - resolved "https://registry.yarnpkg.com/jest-config/-/jest-config-29.5.0.tgz#3cc972faec8c8aaea9ae158c694541b79f3748da" + resolved "https://registry.npmjs.org/jest-config/-/jest-config-29.5.0.tgz" integrity sha512-kvDUKBnNJPNBmFFOhDbm59iu1Fii1Q6SxyhXfvylq3UTHbg6o7j/g8k2dZyXWLvfdKB1vAPxNZnMgtKJcmu3kA== dependencies: "@babel/core" "^7.11.6" @@ -16263,7 +16613,7 @@ jest-config@^29.5.0: jest-diff@^29.5.0: version "29.5.0" - resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-29.5.0.tgz#e0d83a58eb5451dcc1fa61b1c3ee4e8f5a290d63" + resolved "https://registry.npmjs.org/jest-diff/-/jest-diff-29.5.0.tgz" integrity sha512-LtxijLLZBduXnHSniy0WMdaHjmQnt3g5sa16W4p0HqukYTTsyTW3GD1q41TyGl5YFXj/5B2U6dlh5FM1LIMgxw== dependencies: chalk "^4.0.0" @@ -16271,16 +16621,26 @@ jest-diff@^29.5.0: jest-get-type "^29.4.3" pretty-format "^29.5.0" +jest-diff@^29.7.0: + version "29.7.0" + resolved "https://registry.npmjs.org/jest-diff/-/jest-diff-29.7.0.tgz" + integrity sha512-LMIgiIrhigmPrs03JHpxUh2yISK3vLFPkAodPeo0+BuF7wA2FoQbkEg1u8gBYBThncu7e1oEDUfIXVuTqLRUjw== + dependencies: + chalk "^4.0.0" + diff-sequences "^29.6.3" + jest-get-type "^29.6.3" + pretty-format "^29.7.0" + jest-docblock@^29.4.3: version "29.4.3" - resolved "https://registry.yarnpkg.com/jest-docblock/-/jest-docblock-29.4.3.tgz#90505aa89514a1c7dceeac1123df79e414636ea8" + resolved "https://registry.npmjs.org/jest-docblock/-/jest-docblock-29.4.3.tgz" integrity sha512-fzdTftThczeSD9nZ3fzA/4KkHtnmllawWrXO69vtI+L9WjEIuXWs4AmyME7lN5hU7dB0sHhuPfcKofRsUb/2Fg== dependencies: detect-newline "^3.0.0" jest-each@^29.5.0: version "29.5.0" - resolved "https://registry.yarnpkg.com/jest-each/-/jest-each-29.5.0.tgz#fc6e7014f83eac68e22b7195598de8554c2e5c06" + resolved "https://registry.npmjs.org/jest-each/-/jest-each-29.5.0.tgz" integrity sha512-HM5kIJ1BTnVt+DQZ2ALp3rzXEl+g726csObrW/jpEGl+CDSSQpOJJX2KE/vEg8cxcMXdyEPu6U4QX5eruQv5hA== dependencies: "@jest/types" "^29.5.0" @@ -16291,7 +16651,7 @@ jest-each@^29.5.0: jest-environment-node@^29.5.0: version "29.5.0" - resolved "https://registry.yarnpkg.com/jest-environment-node/-/jest-environment-node-29.5.0.tgz#f17219d0f0cc0e68e0727c58b792c040e332c967" + resolved "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-29.5.0.tgz" integrity sha512-ExxuIK/+yQ+6PRGaHkKewYtg6hto2uGCgvKdb2nfJfKXgZ17DfXjvbZ+jA1Qt9A8EQSfPnt5FKIfnOO3u1h9qw== dependencies: "@jest/environment" "^29.5.0" @@ -16303,12 +16663,17 @@ jest-environment-node@^29.5.0: jest-get-type@^29.4.3: version "29.4.3" - resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-29.4.3.tgz#1ab7a5207c995161100b5187159ca82dd48b3dd5" + resolved "https://registry.npmjs.org/jest-get-type/-/jest-get-type-29.4.3.tgz" integrity sha512-J5Xez4nRRMjk8emnTpWrlkyb9pfRQQanDrvWHhsR1+VUfbwxi30eVcZFlcdGInRibU4G5LwHXpI7IRHU0CY+gg== +jest-get-type@^29.6.3: + version "29.6.3" + resolved "https://registry.npmjs.org/jest-get-type/-/jest-get-type-29.6.3.tgz" + integrity sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw== + jest-haste-map@^29.5.0: version "29.5.0" - resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-29.5.0.tgz#69bd67dc9012d6e2723f20a945099e972b2e94de" + resolved "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-29.5.0.tgz" integrity sha512-IspOPnnBro8YfVYSw6yDRKh/TiCdRngjxeacCps1cQ9cgVN6+10JUcuJ1EabrgYLOATsIAigxA0rLR9x/YlrSA== dependencies: "@jest/types" "^29.5.0" @@ -16327,7 +16692,7 @@ jest-haste-map@^29.5.0: jest-junit@^14.0.1: version "14.0.1" - resolved "https://registry.yarnpkg.com/jest-junit/-/jest-junit-14.0.1.tgz#5b357d6f5d333459585d628a24cd48b5bbc92ba2" + resolved "https://registry.npmjs.org/jest-junit/-/jest-junit-14.0.1.tgz" integrity sha512-h7/wwzPbllgpQhhVcRzRC76/cc89GlazThoV1fDxcALkf26IIlRsu/AcTG64f4nR2WPE3Cbd+i/sVf+NCUHrWQ== dependencies: mkdirp "^1.0.4" @@ -16337,7 +16702,7 @@ jest-junit@^14.0.1: jest-leak-detector@^29.5.0: version "29.5.0" - resolved "https://registry.yarnpkg.com/jest-leak-detector/-/jest-leak-detector-29.5.0.tgz#cf4bdea9615c72bac4a3a7ba7e7930f9c0610c8c" + resolved "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-29.5.0.tgz" integrity sha512-u9YdeeVnghBUtpN5mVxjID7KbkKE1QU4f6uUwuxiY0vYRi9BUCLKlPEZfDGR67ofdFmDz9oPAy2G92Ujrntmow== dependencies: jest-get-type "^29.4.3" @@ -16345,7 +16710,7 @@ jest-leak-detector@^29.5.0: jest-matcher-utils@^29.5.0: version "29.5.0" - resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-29.5.0.tgz#d957af7f8c0692c5453666705621ad4abc2c59c5" + resolved "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-29.5.0.tgz" integrity sha512-lecRtgm/rjIK0CQ7LPQwzCs2VwW6WAahA55YBuI+xqmhm7LAaxokSB8C97yJeYyT+HvQkH741StzpU41wohhWw== dependencies: chalk "^4.0.0" @@ -16353,9 +16718,19 @@ jest-matcher-utils@^29.5.0: jest-get-type "^29.4.3" pretty-format "^29.5.0" +jest-matcher-utils@^29.7.0: + version "29.7.0" + resolved "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-29.7.0.tgz" + integrity sha512-sBkD+Xi9DtcChsI3L3u0+N0opgPYnCRPtGcQYrgXmR+hmt/fYfWAL0xRXYU8eWOdfuLgBe0YCW3AFtnRLagq/g== + dependencies: + chalk "^4.0.0" + jest-diff "^29.7.0" + jest-get-type "^29.6.3" + pretty-format "^29.7.0" + jest-message-util@^29.5.0: version "29.5.0" - resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-29.5.0.tgz#1f776cac3aca332ab8dd2e3b41625435085c900e" + resolved "https://registry.npmjs.org/jest-message-util/-/jest-message-util-29.5.0.tgz" integrity sha512-Kijeg9Dag6CKtIDA7O21zNTACqD5MD/8HfIV8pdD94vFyFuer52SigdC3IQMhab3vACxXMiFk+yMHNdbqtyTGA== dependencies: "@babel/code-frame" "^7.12.13" @@ -16368,9 +16743,24 @@ jest-message-util@^29.5.0: slash "^3.0.0" stack-utils "^2.0.3" +jest-message-util@^29.7.0: + version "29.7.0" + resolved "https://registry.npmjs.org/jest-message-util/-/jest-message-util-29.7.0.tgz" + integrity sha512-GBEV4GRADeP+qtB2+6u61stea8mGcOT4mCtrYISZwfu9/ISHFJ/5zOMXYbpBE9RsS5+Gb63DW4FgmnKJ79Kf6w== + dependencies: + "@babel/code-frame" "^7.12.13" + "@jest/types" "^29.6.3" + "@types/stack-utils" "^2.0.0" + chalk "^4.0.0" + graceful-fs "^4.2.9" + micromatch "^4.0.4" + pretty-format "^29.7.0" + slash "^3.0.0" + stack-utils "^2.0.3" + jest-mock@^29.5.0: version "29.5.0" - resolved "https://registry.yarnpkg.com/jest-mock/-/jest-mock-29.5.0.tgz#26e2172bcc71d8b0195081ff1f146ac7e1518aed" + resolved "https://registry.npmjs.org/jest-mock/-/jest-mock-29.5.0.tgz" integrity sha512-GqOzvdWDE4fAV2bWQLQCkujxYWL7RxjCnj71b5VhDAGOevB3qj3Ovg26A5NI84ZpODxyzaozXLOh2NCgkbvyaw== dependencies: "@jest/types" "^29.5.0" @@ -16379,17 +16769,17 @@ jest-mock@^29.5.0: jest-pnp-resolver@^1.2.2: version "1.2.3" - resolved "https://registry.yarnpkg.com/jest-pnp-resolver/-/jest-pnp-resolver-1.2.3.tgz#930b1546164d4ad5937d5540e711d4d38d4cad2e" + resolved "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.3.tgz" integrity sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w== jest-regex-util@^29.4.3: version "29.4.3" - resolved "https://registry.yarnpkg.com/jest-regex-util/-/jest-regex-util-29.4.3.tgz#a42616141e0cae052cfa32c169945d00c0aa0bb8" + resolved "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-29.4.3.tgz" integrity sha512-O4FglZaMmWXbGHSQInfXewIsd1LMn9p3ZXB/6r4FOkyhX2/iP/soMG98jGvk/A3HAN78+5VWcBGO0BJAPRh4kg== jest-resolve-dependencies@^29.5.0: version "29.5.0" - resolved "https://registry.yarnpkg.com/jest-resolve-dependencies/-/jest-resolve-dependencies-29.5.0.tgz#f0ea29955996f49788bf70996052aa98e7befee4" + resolved "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-29.5.0.tgz" integrity sha512-sjV3GFr0hDJMBpYeUuGduP+YeCRbd7S/ck6IvL3kQ9cpySYKqcqhdLLC2rFwrcL7tz5vYibomBrsFYWkIGGjOg== dependencies: jest-regex-util "^29.4.3" @@ -16397,7 +16787,7 @@ jest-resolve-dependencies@^29.5.0: jest-resolve@^29.5.0: version "29.5.0" - resolved "https://registry.yarnpkg.com/jest-resolve/-/jest-resolve-29.5.0.tgz#b053cc95ad1d5f6327f0ac8aae9f98795475ecdc" + resolved "https://registry.npmjs.org/jest-resolve/-/jest-resolve-29.5.0.tgz" integrity sha512-1TzxJ37FQq7J10jPtQjcc+MkCkE3GBpBecsSUWJ0qZNJpmg6m0D9/7II03yJulm3H/fvVjgqLh/k2eYg+ui52w== dependencies: chalk "^4.0.0" @@ -16412,7 +16802,7 @@ jest-resolve@^29.5.0: jest-runner@^29.5.0: version "29.5.0" - resolved "https://registry.yarnpkg.com/jest-runner/-/jest-runner-29.5.0.tgz#6a57c282eb0ef749778d444c1d758c6a7693b6f8" + resolved "https://registry.npmjs.org/jest-runner/-/jest-runner-29.5.0.tgz" integrity sha512-m7b6ypERhFghJsslMLhydaXBiLf7+jXy8FwGRHO3BGV1mcQpPbwiqiKUR2zU2NJuNeMenJmlFZCsIqzJCTeGLQ== dependencies: "@jest/console" "^29.5.0" @@ -16439,7 +16829,7 @@ jest-runner@^29.5.0: jest-runtime@^29.5.0: version "29.5.0" - resolved "https://registry.yarnpkg.com/jest-runtime/-/jest-runtime-29.5.0.tgz#c83f943ee0c1da7eb91fa181b0811ebd59b03420" + resolved "https://registry.npmjs.org/jest-runtime/-/jest-runtime-29.5.0.tgz" integrity sha512-1Hr6Hh7bAgXQP+pln3homOiEZtCDZFqwmle7Ew2j8OlbkIu6uE3Y/etJQG8MLQs3Zy90xrp2C0BRrtPHG4zryw== dependencies: "@jest/environment" "^29.5.0" @@ -16467,7 +16857,7 @@ jest-runtime@^29.5.0: jest-snapshot@^29.0.2, jest-snapshot@^29.5.0: version "29.5.0" - resolved "https://registry.yarnpkg.com/jest-snapshot/-/jest-snapshot-29.5.0.tgz#c9c1ce0331e5b63cd444e2f95a55a73b84b1e8ce" + resolved "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-29.5.0.tgz" integrity sha512-x7Wolra5V0tt3wRs3/ts3S6ciSQVypgGQlJpz2rsdQYoUKxMxPNaoHMGJN6qAuPJqS+2iQ1ZUn5kl7HCyls84g== dependencies: "@babel/core" "^7.11.6" @@ -16494,9 +16884,21 @@ jest-snapshot@^29.0.2, jest-snapshot@^29.5.0: pretty-format "^29.5.0" semver "^7.3.5" -jest-util@^29.0.0, jest-util@^29.5.0: +jest-util@^29.0.0, jest-util@^29.7.0: + version "29.7.0" + resolved "https://registry.npmjs.org/jest-util/-/jest-util-29.7.0.tgz" + integrity sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA== + dependencies: + "@jest/types" "^29.6.3" + "@types/node" "*" + chalk "^4.0.0" + ci-info "^3.2.0" + graceful-fs "^4.2.9" + picomatch "^2.2.3" + +jest-util@^29.5.0: version "29.5.0" - resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-29.5.0.tgz#24a4d3d92fc39ce90425311b23c27a6e0ef16b8f" + resolved "https://registry.npmjs.org/jest-util/-/jest-util-29.5.0.tgz" integrity sha512-RYMgG/MTadOr5t8KdhejfvUU82MxsCu5MF6KuDUHl+NuwzUt+Sm6jJWxTJVrDR1j5M/gJVCPKQEpWXY+yIQ6lQ== dependencies: "@jest/types" "^29.5.0" @@ -16508,7 +16910,7 @@ jest-util@^29.0.0, jest-util@^29.5.0: jest-validate@^29.5.0: version "29.5.0" - resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-29.5.0.tgz#8e5a8f36178d40e47138dc00866a5f3bd9916ffc" + resolved "https://registry.npmjs.org/jest-validate/-/jest-validate-29.5.0.tgz" integrity sha512-pC26etNIi+y3HV8A+tUGr/lph9B18GnzSRAkPaaZJIE1eFdiYm6/CewuiJQ8/RlfHd1u/8Ioi8/sJ+CmbA+zAQ== dependencies: "@jest/types" "^29.5.0" @@ -16520,7 +16922,7 @@ jest-validate@^29.5.0: jest-watcher@^29.5.0: version "29.5.0" - resolved "https://registry.yarnpkg.com/jest-watcher/-/jest-watcher-29.5.0.tgz#cf7f0f949828ba65ddbbb45c743a382a4d911363" + resolved "https://registry.npmjs.org/jest-watcher/-/jest-watcher-29.5.0.tgz" integrity sha512-KmTojKcapuqYrKDpRwfqcQ3zjMlwu27SYext9pt4GlF5FUgB+7XE1mcCnSm6a4uUpFyQIkb6ZhzZvHl+jiBCiA== dependencies: "@jest/test-result" "^29.5.0" @@ -16534,7 +16936,7 @@ jest-watcher@^29.5.0: jest-worker@^29.5.0: version "29.5.0" - resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-29.5.0.tgz#bdaefb06811bd3384d93f009755014d8acb4615d" + resolved "https://registry.npmjs.org/jest-worker/-/jest-worker-29.5.0.tgz" integrity sha512-NcrQnevGoSp4b5kg+akIpthoAFHxPBcb5P6mYPY0fUNT+sSvmtu6jlkEle3anczUKIKEbMxFimk9oTP/tpIPgA== dependencies: "@types/node" "*" @@ -16544,7 +16946,7 @@ jest-worker@^29.5.0: jest@^29.0.2: version "29.5.0" - resolved "https://registry.yarnpkg.com/jest/-/jest-29.5.0.tgz#f75157622f5ce7ad53028f2f8888ab53e1f1f24e" + resolved "https://registry.npmjs.org/jest/-/jest-29.5.0.tgz" integrity sha512-juMg3he2uru1QoXX078zTa7pO85QyB9xajZc6bU+d9yEGwrKX6+vGmJQ3UdVZsvTEUARIdObzH68QItim6OSSQ== dependencies: "@jest/core" "^29.5.0" @@ -16554,17 +16956,17 @@ jest@^29.0.2: jju@^1.1.0: version "1.4.0" - resolved "https://registry.yarnpkg.com/jju/-/jju-1.4.0.tgz#a3abe2718af241a2b2904f84a625970f389ae32a" + resolved "https://registry.npmjs.org/jju/-/jju-1.4.0.tgz" integrity sha512-8wb9Yw966OSxApiCt0K3yNJL8pnNeIv+OEq2YMidz4FKP6nonSRoOXc80iXY4JaN2FC11B9qsNmDsm+ZOfMROA== jmespath@0.16.0: version "0.16.0" - resolved "https://registry.yarnpkg.com/jmespath/-/jmespath-0.16.0.tgz#b15b0a85dfd4d930d43e69ed605943c802785076" + resolved "https://registry.npmjs.org/jmespath/-/jmespath-0.16.0.tgz" integrity sha512-9FzQjJ7MATs1tSpnco1K6ayiYE3figslrXA72G2HQ/n76RzvYlofyi5QM+iX4YRs/pu3yzxlVQSST23+dMDknw== joi@^17.3.0: version "17.9.2" - resolved "https://registry.yarnpkg.com/joi/-/joi-17.9.2.tgz#8b2e4724188369f55451aebd1d0b1d9482470690" + resolved "https://registry.npmjs.org/joi/-/joi-17.9.2.tgz" integrity sha512-Itk/r+V4Dx0V3c7RLFdRh12IOjySm2/WGPMubBT92cQvRfYZhPM2W0hZlctjj72iES8jsRCwp7S/cRmWBnJ4nw== dependencies: "@hapi/hoek" "^9.0.0" @@ -16575,7 +16977,7 @@ joi@^17.3.0: join-path@^1.1.1: version "1.1.1" - resolved "https://registry.yarnpkg.com/join-path/-/join-path-1.1.1.tgz#10535a126d24cbd65f7ffcdf15ef2e631076b505" + resolved "https://registry.npmjs.org/join-path/-/join-path-1.1.1.tgz" integrity sha512-jnt9OC34sLXMLJ6YfPQ2ZEKrR9mB5ZbSnQb4LPaOx1c5rTzxpR33L18jjp0r75mGGTJmsil3qwN1B5IBeTnSSA== dependencies: as-array "^2.0.0" @@ -16584,44 +16986,44 @@ join-path@^1.1.1: jose@^2.0.6: version "2.0.6" - resolved "https://registry.yarnpkg.com/jose/-/jose-2.0.6.tgz#894ba19169af339d3911be933f913dd02fc57c7c" + resolved "https://registry.npmjs.org/jose/-/jose-2.0.6.tgz" integrity sha512-FVoPY7SflDodE4lknJmbAHSUjLCzE2H1F6MS0RYKMQ8SR+lNccpMf8R4eqkNYyyUjR5qZReOzZo5C5YiHOCjjg== dependencies: "@panva/asn1.js" "^1.0.0" jose@^4.10.4: - version "4.14.4" - resolved "https://registry.yarnpkg.com/jose/-/jose-4.14.4.tgz#59e09204e2670c3164ee24cbfe7115c6f8bff9ca" - integrity sha512-j8GhLiKmUAh+dsFXlX1aJCbt5KMibuKb+d7j1JaOJG6s2UjX1PQlW+OKB/sD4a/5ZYF4RcmYmLSndOoU3Lt/3g== + version "4.14.6" + resolved "https://registry.npmjs.org/jose/-/jose-4.14.6.tgz" + integrity sha512-EqJPEUlZD0/CSUMubKtMaYUOtWe91tZXTWMJZoKSbLk+KtdhNdcvppH8lA9XwVu2V4Ailvsj0GBZJ2ZwDjfesQ== js-sdsl@^4.1.4: version "4.4.0" - resolved "https://registry.yarnpkg.com/js-sdsl/-/js-sdsl-4.4.0.tgz#8b437dbe642daa95760400b602378ed8ffea8430" + resolved "https://registry.npmjs.org/js-sdsl/-/js-sdsl-4.4.0.tgz" integrity sha512-FfVSdx6pJ41Oa+CF7RDaFmTnCaFhua+SNYQX74riGOpl96x+2jQCqEfQ2bnXu/5DPCqlRuiqyvTJM0Qjz26IVg== js-sha3@0.5.7, js-sha3@^0.5.7: version "0.5.7" - resolved "https://registry.yarnpkg.com/js-sha3/-/js-sha3-0.5.7.tgz#0d4ffd8002d5333aabaf4a23eed2f6374c9f28e7" + resolved "https://registry.npmjs.org/js-sha3/-/js-sha3-0.5.7.tgz" integrity sha512-GII20kjaPX0zJ8wzkTbNDYMY7msuZcTWk8S5UOh6806Jq/wz1J8/bnr8uGU0DAUmYDjj2Mr4X1cW8v/GLYnR+g== js-sha3@0.8.0, js-sha3@^0.8.0: version "0.8.0" - resolved "https://registry.yarnpkg.com/js-sha3/-/js-sha3-0.8.0.tgz#b9b7a5da73afad7dedd0f8c463954cbde6818840" + resolved "https://registry.npmjs.org/js-sha3/-/js-sha3-0.8.0.tgz" integrity sha512-gF1cRrHhIzNfToc802P800N8PpXS+evLLXfsVpowqmAFR9uwbi89WvXg2QspOmXL8QL86J4T1EpFu+yUkwJY3Q== js-sha3@^0.7.0: version "0.7.0" - resolved "https://registry.yarnpkg.com/js-sha3/-/js-sha3-0.7.0.tgz#0a5c57b36f79882573b2d84051f8bb85dd1bd63a" + resolved "https://registry.npmjs.org/js-sha3/-/js-sha3-0.7.0.tgz" integrity sha512-Wpks3yBDm0UcL5qlVhwW9Jr9n9i4FfeWBFOOXP5puDS/SiudJGhw7DPyBqn3487qD4F0lsC0q3zxink37f7zeA== "js-tokens@^3.0.0 || ^4.0.0", js-tokens@^4.0.0: version "4.0.0" - resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" + resolved "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz" integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== js-yaml@3.13.1: version "3.13.1" - resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.13.1.tgz#aff151b30bfdfa8e49e05da22e7415e9dfa37847" + resolved "https://registry.npmjs.org/js-yaml/-/js-yaml-3.13.1.tgz" integrity sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw== dependencies: argparse "^1.0.7" @@ -16629,7 +17031,7 @@ js-yaml@3.13.1: js-yaml@3.14.1, js-yaml@3.x, js-yaml@^3.10.0, js-yaml@^3.12.0, js-yaml@^3.13.0, js-yaml@^3.13.1: version "3.14.1" - resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.14.1.tgz#dae812fdb3825fa306609a8717383c50c36a0537" + resolved "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz" integrity sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g== dependencies: argparse "^1.0.7" @@ -16637,31 +17039,31 @@ js-yaml@3.14.1, js-yaml@3.x, js-yaml@^3.10.0, js-yaml@^3.12.0, js-yaml@^3.13.0, js-yaml@4.1.0, js-yaml@^4.1.0: version "4.1.0" - resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-4.1.0.tgz#c1fb65f8f5017901cdd2c951864ba18458a10602" + resolved "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz" integrity sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA== dependencies: argparse "^2.0.1" js2xmlparser@^4.0.2: version "4.0.2" - resolved "https://registry.yarnpkg.com/js2xmlparser/-/js2xmlparser-4.0.2.tgz#2a1fdf01e90585ef2ae872a01bc169c6a8d5e60a" + resolved "https://registry.npmjs.org/js2xmlparser/-/js2xmlparser-4.0.2.tgz" integrity sha512-6n4D8gLlLf1n5mNLQPRfViYzu9RATblzPEtm1SthMX1Pjao0r9YI9nw7ZIfRxQMERS87mcswrg+r/OYrPRX6jA== dependencies: xmlcreate "^2.0.4" jsbi@^3.1.1: version "3.2.5" - resolved "https://registry.yarnpkg.com/jsbi/-/jsbi-3.2.5.tgz#b37bb90e0e5c2814c1c2a1bcd8c729888a2e37d6" + resolved "https://registry.npmjs.org/jsbi/-/jsbi-3.2.5.tgz" integrity sha512-aBE4n43IPvjaddScbvWRA2YlTzKEynHzu7MqOyTipdHucf/VxS63ViCjxYRg86M8Rxwbt/GfzHl1kKERkt45fQ== jsbn@~0.1.0: version "0.1.1" - resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513" + resolved "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz" integrity sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg== jsdoc@^4.0.0: version "4.0.2" - resolved "https://registry.yarnpkg.com/jsdoc/-/jsdoc-4.0.2.tgz#a1273beba964cf433ddf7a70c23fd02c3c60296e" + resolved "https://registry.npmjs.org/jsdoc/-/jsdoc-4.0.2.tgz" integrity sha512-e8cIg2z62InH7azBBi3EsSEqrKx+nUtAS5bBcYTSpZFA+vhNPyhv8PTFZ0WsjOPDj04/dOLlm08EDcQJDqaGQg== dependencies: "@babel/parser" "^7.20.15" @@ -16682,72 +17084,72 @@ jsdoc@^4.0.0: jsesc@^2.5.1: version "2.5.2" - resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-2.5.2.tgz#80564d2e483dacf6e8ef209650a67df3f0c283a4" + resolved "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz" integrity sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA== json-bigint@^0.3.0: version "0.3.1" - resolved "https://registry.yarnpkg.com/json-bigint/-/json-bigint-0.3.1.tgz#0c1729d679f580d550899d6a2226c228564afe60" + resolved "https://registry.npmjs.org/json-bigint/-/json-bigint-0.3.1.tgz" integrity sha512-DGWnSzmusIreWlEupsUelHrhwmPPE+FiQvg+drKfk2p+bdEYa5mp4PJ8JsCWqae0M2jQNb0HPvnwvf1qOTThzQ== dependencies: bignumber.js "^9.0.0" json-bigint@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/json-bigint/-/json-bigint-1.0.0.tgz#ae547823ac0cad8398667f8cd9ef4730f5b01ff1" + resolved "https://registry.npmjs.org/json-bigint/-/json-bigint-1.0.0.tgz" integrity sha512-SiPv/8VpZuWbvLSMtTDU8hEfrZWg/mH/nV/b4o0CYbSxu1UIQPLdwKOCIyLQX+VIPO5vrLX3i8qtqFyhdPSUSQ== dependencies: bignumber.js "^9.0.0" json-buffer@3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/json-buffer/-/json-buffer-3.0.0.tgz#5b1f397afc75d677bde8bcfc0e47e1f9a3d9a898" + resolved "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.0.tgz" integrity sha512-CuUqjv0FUZIdXkHPI8MezCnFCdaTAacej1TZYulLoAg1h/PhwkdXFN4V/gzY4g+fMBCOV2xF+rp7t2XD2ns/NQ== json-buffer@3.0.1: version "3.0.1" - resolved "https://registry.yarnpkg.com/json-buffer/-/json-buffer-3.0.1.tgz#9338802a30d3b6605fbe0613e094008ca8c05a13" + resolved "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz" integrity sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ== json-parse-better-errors@^1.0.1: version "1.0.2" - resolved "https://registry.yarnpkg.com/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz#bb867cfb3450e69107c131d1c514bab3dc8bcaa9" + resolved "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz" integrity sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw== json-parse-even-better-errors@^2.3.0, json-parse-even-better-errors@^2.3.1: version "2.3.1" - resolved "https://registry.yarnpkg.com/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz#7c47805a94319928e05777405dc12e1f7a4ee02d" + resolved "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz" integrity sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w== json-parse-helpfulerror@^1.0.3: version "1.0.3" - resolved "https://registry.yarnpkg.com/json-parse-helpfulerror/-/json-parse-helpfulerror-1.0.3.tgz#13f14ce02eed4e981297b64eb9e3b932e2dd13dc" + resolved "https://registry.npmjs.org/json-parse-helpfulerror/-/json-parse-helpfulerror-1.0.3.tgz" integrity sha512-XgP0FGR77+QhUxjXkwOMkC94k3WtqEBfcnjWqhRd82qTat4SWKRE+9kUnynz/shm3I4ea2+qISvTIeGTNU7kJg== dependencies: jju "^1.1.0" json-pointer@^0.6.1: version "0.6.2" - resolved "https://registry.yarnpkg.com/json-pointer/-/json-pointer-0.6.2.tgz#f97bd7550be5e9ea901f8c9264c9d436a22a93cd" + resolved "https://registry.npmjs.org/json-pointer/-/json-pointer-0.6.2.tgz" integrity sha512-vLWcKbOaXlO+jvRy4qNd+TI1QUPZzfJj1tpJ3vAXDych5XJf93ftpUKe5pKCrzyIIwgBJcOcCVRUfqQP25afBw== dependencies: foreach "^2.0.4" json-ptr@^2.2.0: version "2.2.0" - resolved "https://registry.yarnpkg.com/json-ptr/-/json-ptr-2.2.0.tgz#a4de4ed638cb23ae4cd4b51f8bf972a1c2293f1e" + resolved "https://registry.npmjs.org/json-ptr/-/json-ptr-2.2.0.tgz" integrity sha512-w9f6/zhz4kykltXMG7MLJWMajxiPj0q+uzQPR1cggNAE/sXoq/C5vjUb/7QNcC3rJsVIIKy37ALTXy1O+3c8QQ== dependencies: tslib "^2.2.0" json-ptr@^3.0.1: version "3.1.1" - resolved "https://registry.yarnpkg.com/json-ptr/-/json-ptr-3.1.1.tgz#184c3d48db659fa9bbc1519f7db6f390ddffb659" + resolved "https://registry.npmjs.org/json-ptr/-/json-ptr-3.1.1.tgz" integrity sha512-SiSJQ805W1sDUCD1+/t1/1BIrveq2Fe9HJqENxZmMCILmrPI7WhS/pePpIOx85v6/H2z1Vy7AI08GV2TzfXocg== json-rpc-engine@^5.3.0: version "5.4.0" - resolved "https://registry.yarnpkg.com/json-rpc-engine/-/json-rpc-engine-5.4.0.tgz#75758609d849e1dba1e09021ae473f3ab63161e5" + resolved "https://registry.npmjs.org/json-rpc-engine/-/json-rpc-engine-5.4.0.tgz" integrity sha512-rAffKbPoNDjuRnXkecTjnsE3xLLrb00rEkdgalINhaYVYIxDwWtvYBr9UFbhTvPB1B2qUOLoFd/cV6f4Q7mh7g== dependencies: eth-rpc-errors "^3.0.0" @@ -16755,7 +17157,7 @@ json-rpc-engine@^5.3.0: json-rpc-engine@^6.1.0: version "6.1.0" - resolved "https://registry.yarnpkg.com/json-rpc-engine/-/json-rpc-engine-6.1.0.tgz#bf5ff7d029e1c1bf20cb6c0e9f348dcd8be5a393" + resolved "https://registry.npmjs.org/json-rpc-engine/-/json-rpc-engine-6.1.0.tgz" integrity sha512-NEdLrtrq1jUZyfjkr9OCz9EzCNhnRyWtt1PAnvnhwy6e8XETS0Dtc+ZNCO2gvuAoKsIn2+vCSowXTYE4CkgnAQ== dependencies: "@metamask/safe-event-emitter" "^2.0.0" @@ -16763,68 +17165,68 @@ json-rpc-engine@^6.1.0: json-rpc-error@2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/json-rpc-error/-/json-rpc-error-2.0.0.tgz#a7af9c202838b5e905c7250e547f1aff77258a02" + resolved "https://registry.npmjs.org/json-rpc-error/-/json-rpc-error-2.0.0.tgz" integrity sha512-EwUeWP+KgAZ/xqFpaP6YDAXMtCJi+o/QQpCQFIYyxr01AdADi2y413eM8hSqJcoQym9WMePAJWoaODEJufC4Ug== dependencies: inherits "^2.0.1" json-rpc-random-id@^1.0.0, json-rpc-random-id@^1.0.1: version "1.0.1" - resolved "https://registry.yarnpkg.com/json-rpc-random-id/-/json-rpc-random-id-1.0.1.tgz#ba49d96aded1444dbb8da3d203748acbbcdec8c8" + resolved "https://registry.npmjs.org/json-rpc-random-id/-/json-rpc-random-id-1.0.1.tgz" integrity sha512-RJ9YYNCkhVDBuP4zN5BBtYAzEl03yq/jIIsyif0JY9qyJuQQZNeDK7anAPKKlyEtLSj2s8h6hNh2F8zO5q7ScA== json-schema-traverse@^0.4.1: version "0.4.1" - resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" + resolved "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz" integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== json-schema-traverse@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz#ae7bcb3656ab77a73ba5c49bf654f38e6b6860e2" + resolved "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz" integrity sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug== json-schema-typed@^7.0.3: version "7.0.3" - resolved "https://registry.yarnpkg.com/json-schema-typed/-/json-schema-typed-7.0.3.tgz#23ff481b8b4eebcd2ca123b4fa0409e66469a2d9" + resolved "https://registry.npmjs.org/json-schema-typed/-/json-schema-typed-7.0.3.tgz" integrity sha512-7DE8mpG+/fVw+dTpjbxnx47TaMnDfOI1jwft9g1VybltZCduyRQPJPvc+zzKY9WPHxhPWczyFuYa6I8Mw4iU5A== json-schema@0.4.0: version "0.4.0" - resolved "https://registry.yarnpkg.com/json-schema/-/json-schema-0.4.0.tgz#f7de4cf6efab838ebaeb3236474cbba5a1930ab5" + resolved "https://registry.npmjs.org/json-schema/-/json-schema-0.4.0.tgz" integrity sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA== json-stable-stringify-without-jsonify@^1.0.1: version "1.0.1" - resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651" + resolved "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz" integrity sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw== json-stable-stringify@^1.0.1: version "1.0.2" - resolved "https://registry.yarnpkg.com/json-stable-stringify/-/json-stable-stringify-1.0.2.tgz#e06f23128e0bbe342dc996ed5a19e28b57b580e0" + resolved "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-1.0.2.tgz" integrity sha512-eunSSaEnxV12z+Z73y/j5N37/In40GK4GmsSy+tEHJMxknvqnA7/djeYtAgW0GsWHUfg+847WJjKaEylk2y09g== dependencies: jsonify "^0.0.1" json-stringify-nice@^1.1.4: version "1.1.4" - resolved "https://registry.yarnpkg.com/json-stringify-nice/-/json-stringify-nice-1.1.4.tgz#2c937962b80181d3f317dd39aa323e14f5a60a67" + resolved "https://registry.npmjs.org/json-stringify-nice/-/json-stringify-nice-1.1.4.tgz" integrity sha512-5Z5RFW63yxReJ7vANgW6eZFGWaQvnPE3WNmZoOJrSkGju2etKA2L5rrOa1sm877TVTFt57A80BH1bArcmlLfPw== json-stringify-safe@^5.0.1, json-stringify-safe@~5.0.1: version "5.0.1" - resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" + resolved "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz" integrity sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA== json-text-sequence@^0.1: version "0.1.1" - resolved "https://registry.yarnpkg.com/json-text-sequence/-/json-text-sequence-0.1.1.tgz#a72f217dc4afc4629fff5feb304dc1bd51a2f3d2" + resolved "https://registry.npmjs.org/json-text-sequence/-/json-text-sequence-0.1.1.tgz" integrity sha512-L3mEegEWHRekSHjc7+sc8eJhba9Clq1PZ8kMkzf8OxElhXc8O4TS5MwcVlj9aEbm5dr81N90WHC5nAz3UO971w== dependencies: delimit-stream "0.1.0" json-to-ast@^2.0.3: version "2.1.0" - resolved "https://registry.yarnpkg.com/json-to-ast/-/json-to-ast-2.1.0.tgz#041a9fcd03c0845036acb670d29f425cea4faaf9" + resolved "https://registry.npmjs.org/json-to-ast/-/json-to-ast-2.1.0.tgz" integrity sha512-W9Lq347r8tA1DfMvAGn9QNcgYm4Wm7Yc+k8e6vezpMnRT+NHbtlxgNBXRVjXe9YM6eTn6+p/MKOlV/aABJcSnQ== dependencies: code-error-fragment "0.0.230" @@ -16832,38 +17234,38 @@ json-to-ast@^2.0.3: json5@^1.0.2: version "1.0.2" - resolved "https://registry.yarnpkg.com/json5/-/json5-1.0.2.tgz#63d98d60f21b313b77c4d6da18bfa69d80e1d593" + resolved "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz" integrity sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA== dependencies: minimist "^1.2.0" json5@^2.2.2, json5@^2.2.3: version "2.2.3" - resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.3.tgz#78cd6f1a19bdc12b73db5ad0c61efd66c1e29283" + resolved "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz" integrity sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg== jsonc-parser@3.2.0: version "3.2.0" - resolved "https://registry.yarnpkg.com/jsonc-parser/-/jsonc-parser-3.2.0.tgz#31ff3f4c2b9793f89c67212627c51c6394f88e76" + resolved "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.2.0.tgz" integrity sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w== jsonfile@^2.1.0: version "2.4.0" - resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-2.4.0.tgz#3736a2b428b87bbda0cc83b53fa3d633a35c2ae8" + resolved "https://registry.npmjs.org/jsonfile/-/jsonfile-2.4.0.tgz" integrity sha512-PKllAqbgLgxHaj8TElYymKCAgrASebJrWpTnEkOaTowt23VKXXN0sUeriJ+eh7y6ufb/CC5ap11pz71/cM0hUw== optionalDependencies: graceful-fs "^4.1.6" jsonfile@^4.0.0: version "4.0.0" - resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-4.0.0.tgz#8771aae0799b64076b76640fca058f9c10e33ecb" + resolved "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz" integrity sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg== optionalDependencies: graceful-fs "^4.1.6" jsonfile@^6.0.1: version "6.1.0" - resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-6.1.0.tgz#bc55b2634793c679ec6403094eb13698a6ec0aae" + resolved "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz" integrity sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ== dependencies: universalify "^2.0.0" @@ -16872,22 +17274,22 @@ jsonfile@^6.0.1: jsonify@^0.0.1: version "0.0.1" - resolved "https://registry.yarnpkg.com/jsonify/-/jsonify-0.0.1.tgz#2aa3111dae3d34a0f151c63f3a45d995d9420978" + resolved "https://registry.npmjs.org/jsonify/-/jsonify-0.0.1.tgz" integrity sha512-2/Ki0GcmuqSrgFyelQq9M05y7PS0mEwuIzrf3f1fPqkVDVRvZrPZtVSMHxdgo8Aq0sxAOb/cr2aqqA3LeWHVPg== jsonparse@^1.2.0, jsonparse@^1.3.1: version "1.3.1" - resolved "https://registry.yarnpkg.com/jsonparse/-/jsonparse-1.3.1.tgz#3f4dae4a91fac315f71062f8521cc239f1366280" + resolved "https://registry.npmjs.org/jsonparse/-/jsonparse-1.3.1.tgz" integrity sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg== jsonpointer@^5.0.0: version "5.0.1" - resolved "https://registry.yarnpkg.com/jsonpointer/-/jsonpointer-5.0.1.tgz#2110e0af0900fd37467b5907ecd13a7884a1b559" + resolved "https://registry.npmjs.org/jsonpointer/-/jsonpointer-5.0.1.tgz" integrity sha512-p/nXbhSEcu3pZRdkW1OfJhpsVtW1gd4Wa1fnQc9YLiTfAjn0312eMKimbdIQzuZl9aa9xUGaRlP9T/CJE/ditQ== jsonwebtoken@^8.5.1: version "8.5.1" - resolved "https://registry.yarnpkg.com/jsonwebtoken/-/jsonwebtoken-8.5.1.tgz#00e71e0b8df54c2121a1f26137df2280673bcc0d" + resolved "https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-8.5.1.tgz" integrity sha512-XjwVfRS6jTMsqYs0EsuJ4LGxXV14zQybNd4L2r0UvbVnSF9Af8x7p5MzbJ90Ioz/9TI41/hTCvznF/loiSzn8w== dependencies: jws "^3.2.2" @@ -16902,18 +17304,24 @@ jsonwebtoken@^8.5.1: semver "^5.6.0" jsonwebtoken@^9.0.0: - version "9.0.1" - resolved "https://registry.yarnpkg.com/jsonwebtoken/-/jsonwebtoken-9.0.1.tgz#81d8c901c112c24e497a55daf6b2be1225b40145" - integrity sha512-K8wx7eJ5TPvEjuiVSkv167EVboBDv9PZdDoF7BgeQnBLVvZWW9clr2PsQHVJDTKaEIH5JBIwHujGcHp7GgI2eg== + version "9.0.2" + resolved "https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-9.0.2.tgz" + integrity sha512-PRp66vJ865SSqOlgqS8hujT5U4AOgMfhrwYIuIhfKaoSCZcirrmASQr8CX7cUg+RMih+hgznrjp99o+W4pJLHQ== dependencies: jws "^3.2.2" - lodash "^4.17.21" + lodash.includes "^4.3.0" + lodash.isboolean "^3.0.3" + lodash.isinteger "^4.0.4" + lodash.isnumber "^3.0.3" + lodash.isplainobject "^4.0.6" + lodash.isstring "^4.0.1" + lodash.once "^4.0.0" ms "^2.1.1" - semver "^7.3.8" + semver "^7.5.4" jsprim@^1.2.2: version "1.4.2" - resolved "https://registry.yarnpkg.com/jsprim/-/jsprim-1.4.2.tgz#712c65533a15c878ba59e9ed5f0e26d5b77c5feb" + resolved "https://registry.npmjs.org/jsprim/-/jsprim-1.4.2.tgz" integrity sha512-P2bSOMAc/ciLz6DzgjVlGJP9+BrJWu5UDGK70C2iweC5QBIeFf0ZXRvGjEj2uYgrY2MkAAhsSWHDWlFtEroZWw== dependencies: assert-plus "1.0.0" @@ -16923,17 +17331,17 @@ jsprim@^1.2.2: just-diff-apply@^5.2.0: version "5.5.0" - resolved "https://registry.yarnpkg.com/just-diff-apply/-/just-diff-apply-5.5.0.tgz#771c2ca9fa69f3d2b54e7c3f5c1dfcbcc47f9f0f" + resolved "https://registry.npmjs.org/just-diff-apply/-/just-diff-apply-5.5.0.tgz" integrity sha512-OYTthRfSh55WOItVqwpefPtNt2VdKsq5AnAK6apdtR6yCH8pr0CmSr710J0Mf+WdQy7K/OzMy7K2MgAfdQURDw== just-diff@^5.0.1: version "5.2.0" - resolved "https://registry.yarnpkg.com/just-diff/-/just-diff-5.2.0.tgz#60dca55891cf24cd4a094e33504660692348a241" + resolved "https://registry.npmjs.org/just-diff/-/just-diff-5.2.0.tgz" integrity sha512-6ufhP9SHjb7jibNFrNxyFZ6od3g+An6Ai9mhGRvcYe8UJlH0prseN64M+6ZBBUoKYHZsitDP42gAJ8+eVWr3lw== jwa@^1.4.1: version "1.4.1" - resolved "https://registry.yarnpkg.com/jwa/-/jwa-1.4.1.tgz#743c32985cb9e98655530d53641b66c8645b039a" + resolved "https://registry.npmjs.org/jwa/-/jwa-1.4.1.tgz" integrity sha512-qiLX/xhEEFKUAJ6FiBMbes3w9ATzyk5W7Hvzpa/SLYdxNtng+gcurvrI7TbACjIXlsJyr05/S1oUhZrc63evQA== dependencies: buffer-equal-constant-time "1.0.1" @@ -16942,7 +17350,7 @@ jwa@^1.4.1: jwa@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/jwa/-/jwa-2.0.0.tgz#a7e9c3f29dae94027ebcaf49975c9345593410fc" + resolved "https://registry.npmjs.org/jwa/-/jwa-2.0.0.tgz" integrity sha512-jrZ2Qx916EA+fq9cEAeCROWPTfCwi1IVHqT2tapuqLEVVDKFDENFw1oL+MwrTvH6msKxsd1YTDVw6uKEcsrLEA== dependencies: buffer-equal-constant-time "1.0.1" @@ -16951,7 +17359,7 @@ jwa@^2.0.0: jwks-rsa@^2.0.2: version "2.1.5" - resolved "https://registry.yarnpkg.com/jwks-rsa/-/jwks-rsa-2.1.5.tgz#bb7bf8c5767836bc273bf5b27870066aca39c1bb" + resolved "https://registry.npmjs.org/jwks-rsa/-/jwks-rsa-2.1.5.tgz" integrity sha512-IODtn1SwEm7n6GQZnQLY0oxKDrMh7n/jRH1MzE8mlxWMrh2NnMyOsXTebu8vJ1qCpmuTJcL4DdiE0E4h8jnwsA== dependencies: "@types/express" "^4.17.14" @@ -16963,7 +17371,7 @@ jwks-rsa@^2.0.2: jwks-rsa@^3.0.1: version "3.0.1" - resolved "https://registry.yarnpkg.com/jwks-rsa/-/jwks-rsa-3.0.1.tgz#ba79ddca7ee7520f7bb26b942ef1aee91df8d7e4" + resolved "https://registry.npmjs.org/jwks-rsa/-/jwks-rsa-3.0.1.tgz" integrity sha512-UUOZ0CVReK1QVU3rbi9bC7N5/le8ziUj0A2ef1Q0M7OPD2KvjEYizptqIxGIo6fSLYDkqBrazILS18tYuRc8gw== dependencies: "@types/express" "^4.17.14" @@ -16975,7 +17383,7 @@ jwks-rsa@^3.0.1: jws@3.x.x, jws@^3.1.5, jws@^3.2.2: version "3.2.2" - resolved "https://registry.yarnpkg.com/jws/-/jws-3.2.2.tgz#001099f3639468c9414000e99995fa52fb478304" + resolved "https://registry.npmjs.org/jws/-/jws-3.2.2.tgz" integrity sha512-YHlZCB6lMTllWDtSPHz/ZXTsi8S00usEV6v1tjq8tOUZzw7DpSDWVXjXDre6ed1w/pd495ODpHZYSdkRTsa0HA== dependencies: jwa "^1.4.1" @@ -16983,7 +17391,7 @@ jws@3.x.x, jws@^3.1.5, jws@^3.2.2: jws@^4.0.0: version "4.0.0" - resolved "https://registry.yarnpkg.com/jws/-/jws-4.0.0.tgz#2d4e8cf6a318ffaa12615e9dec7e86e6c97310f4" + resolved "https://registry.npmjs.org/jws/-/jws-4.0.0.tgz" integrity sha512-KDncfTmOZoOMTFG4mBlG0qUIOlc03fmzH+ru6RgYVZhPkyiy/92Owlt/8UEN+a4TXR1FQetfIpJE8ApdvdVxTg== dependencies: jwa "^2.0.0" @@ -16991,7 +17399,7 @@ jws@^4.0.0: keccak256@^1.0.0: version "1.0.6" - resolved "https://registry.yarnpkg.com/keccak256/-/keccak256-1.0.6.tgz#dd32fb771558fed51ce4e45a035ae7515573da58" + resolved "https://registry.npmjs.org/keccak256/-/keccak256-1.0.6.tgz" integrity sha512-8GLiM01PkdJVGUhR1e6M/AvWnSqYS0HaERI+K/QtStGDGlSTx2B1zTqZk4Zlqu5TxHJNTxWAdP9Y+WI50OApUw== dependencies: bn.js "^5.2.0" @@ -17000,7 +17408,7 @@ keccak256@^1.0.0: keccak@3.0.1: version "3.0.1" - resolved "https://registry.yarnpkg.com/keccak/-/keccak-3.0.1.tgz#ae30a0e94dbe43414f741375cff6d64c8bea0bff" + resolved "https://registry.npmjs.org/keccak/-/keccak-3.0.1.tgz" integrity sha512-epq90L9jlFWCW7+pQa6JOnKn2Xgl2mtI664seYR6MHskvI9agt7AnDqmAlp9TqU4/caMYbA08Hi5DMZAl5zdkA== dependencies: node-addon-api "^2.0.0" @@ -17008,7 +17416,7 @@ keccak@3.0.1: keccak@3.0.2: version "3.0.2" - resolved "https://registry.yarnpkg.com/keccak/-/keccak-3.0.2.tgz#4c2c6e8c54e04f2670ee49fa734eb9da152206e0" + resolved "https://registry.npmjs.org/keccak/-/keccak-3.0.2.tgz" integrity sha512-PyKKjkH53wDMLGrvmRGSNWgmSxZOUqbnXwKL9tmgbFYA1iAYqW21kfR7mZXV0MlESiefxQQE9X9fTa3X+2MPDQ== dependencies: node-addon-api "^2.0.0" @@ -17017,7 +17425,7 @@ keccak@3.0.2: keccak@^1.0.2: version "1.4.0" - resolved "https://registry.yarnpkg.com/keccak/-/keccak-1.4.0.tgz#572f8a6dbee8e7b3aa421550f9e6408ca2186f80" + resolved "https://registry.npmjs.org/keccak/-/keccak-1.4.0.tgz" integrity sha512-eZVaCpblK5formjPjeTBik7TAg+pqnDrMHIffSvi9Lh7PQgM1+hSzakUeZFCk9DVVG0dacZJuaz2ntwlzZUIBw== dependencies: bindings "^1.2.1" @@ -17027,7 +17435,7 @@ keccak@^1.0.2: keccak@^3.0.0, keccak@^3.0.2: version "3.0.3" - resolved "https://registry.yarnpkg.com/keccak/-/keccak-3.0.3.tgz#4bc35ad917be1ef54ff246f904c2bbbf9ac61276" + resolved "https://registry.npmjs.org/keccak/-/keccak-3.0.3.tgz" integrity sha512-JZrLIAJWuZxKbCilMpNz5Vj7Vtb4scDG3dMXLOsbzBmQGyjwE61BbW7bJkfKKCShXiQZt3T6sBgALRtmd+nZaQ== dependencies: node-addon-api "^2.0.0" @@ -17036,7 +17444,7 @@ keccak@^3.0.0, keccak@^3.0.2: keytar@^7.3.0: version "7.9.0" - resolved "https://registry.yarnpkg.com/keytar/-/keytar-7.9.0.tgz#4c6225708f51b50cbf77c5aae81721964c2918cb" + resolved "https://registry.npmjs.org/keytar/-/keytar-7.9.0.tgz" integrity sha512-VPD8mtVtm5JNtA2AErl6Chp06JBfy7diFQ7TQQhdpWOl6MrCRB+eRbvAZUsbGQS9kiMq0coJsy0W0vHpDCkWsQ== dependencies: node-addon-api "^4.3.0" @@ -17044,33 +17452,33 @@ keytar@^7.3.0: keyv@^3.0.0: version "3.1.0" - resolved "https://registry.yarnpkg.com/keyv/-/keyv-3.1.0.tgz#ecc228486f69991e49e9476485a5be1e8fc5c4d9" + resolved "https://registry.npmjs.org/keyv/-/keyv-3.1.0.tgz" integrity sha512-9ykJ/46SN/9KPM/sichzQ7OvXyGDYKGTaDlKMGCAlg2UK8KRy4jb0d8sFc+0Tt0YYnThq8X2RZgCg74RPxgcVA== dependencies: json-buffer "3.0.0" keyv@^4.0.0: version "4.5.2" - resolved "https://registry.yarnpkg.com/keyv/-/keyv-4.5.2.tgz#0e310ce73bf7851ec702f2eaf46ec4e3805cce56" + resolved "https://registry.npmjs.org/keyv/-/keyv-4.5.2.tgz" integrity sha512-5MHbFaKn8cNSmVW7BYnijeAVlE4cYA/SVkifVgrh7yotnfhKmjuXpDKjrABLnT0SfHWV21P8ow07OGfRrNDg8g== dependencies: json-buffer "3.0.1" kind-of@^1.1.0: version "1.1.0" - resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-1.1.0.tgz#140a3d2d41a36d2efcfa9377b62c24f8495a5c44" + resolved "https://registry.npmjs.org/kind-of/-/kind-of-1.1.0.tgz" integrity sha512-aUH6ElPnMGon2/YkxRIigV32MOpTVcoXQ1Oo8aYn40s+sJ3j+0gFZsT8HKDcxNy7Fi9zuquWtGaGAahOdv5p/g== kind-of@^2.0.0: version "2.0.1" - resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-2.0.1.tgz#018ec7a4ce7e3a86cb9141be519d24c8faa981b5" + resolved "https://registry.npmjs.org/kind-of/-/kind-of-2.0.1.tgz" integrity sha512-0u8i1NZ/mg0b+W3MGGw5I7+6Eib2nx72S/QvXa0hYjEkjTknYmEYQJwGu3mLC0BrhtJjtQafTkyRUQ75Kx0LVg== dependencies: is-buffer "^1.0.2" kind-of@^3.0.2, kind-of@^3.0.3, kind-of@^3.2.0: version "3.2.2" - resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-3.2.2.tgz#31ea21a734bab9bbb0f32466d893aea51e4a3c64" + resolved "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz" integrity sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ== dependencies: is-buffer "^1.1.5" @@ -17084,52 +17492,52 @@ kind-of@^4.0.0: kind-of@^5.0.0: version "5.1.0" - resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-5.1.0.tgz#729c91e2d857b7a419a1f9aa65685c4c33f5845d" + resolved "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz" integrity sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw== kind-of@^6.0.0, kind-of@^6.0.2, kind-of@^6.0.3: version "6.0.3" - resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.3.tgz#07c05034a6c349fa06e24fa35aa76db4580ce4dd" + resolved "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz" integrity sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw== klaw-sync@^6.0.0: version "6.0.0" - resolved "https://registry.yarnpkg.com/klaw-sync/-/klaw-sync-6.0.0.tgz#1fd2cfd56ebb6250181114f0a581167099c2b28c" + resolved "https://registry.npmjs.org/klaw-sync/-/klaw-sync-6.0.0.tgz" integrity sha512-nIeuVSzdCCs6TDPTqI8w1Yre34sSq7AkZ4B3sfOBbI2CgVSB4Du4aLQijFU2+lhAFCwt9+42Hel6lQNIv6AntQ== dependencies: graceful-fs "^4.1.11" klaw@^1.0.0: version "1.3.1" - resolved "https://registry.yarnpkg.com/klaw/-/klaw-1.3.1.tgz#4088433b46b3b1ba259d78785d8e96f73ba02439" + resolved "https://registry.npmjs.org/klaw/-/klaw-1.3.1.tgz" integrity sha512-TED5xi9gGQjGpNnvRWknrwAB1eL5GciPfVFOt3Vk1OJCVDQbzuSfrF3hkUQKlsgKrG1F+0t5W0m+Fje1jIt8rw== optionalDependencies: graceful-fs "^4.1.9" klaw@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/klaw/-/klaw-3.0.0.tgz#b11bec9cf2492f06756d6e809ab73a2910259146" + resolved "https://registry.npmjs.org/klaw/-/klaw-3.0.0.tgz" integrity sha512-0Fo5oir+O9jnXu5EefYbVK+mHMBeEVEy2cmctR1O1NECcCkPRreJKrS6Qt/j3KC2C148Dfo9i3pCmCMsdqGr0g== dependencies: graceful-fs "^4.1.9" kleur@^2.0.1: version "2.0.2" - resolved "https://registry.yarnpkg.com/kleur/-/kleur-2.0.2.tgz#b704f4944d95e255d038f0cb05fb8a602c55a300" + resolved "https://registry.npmjs.org/kleur/-/kleur-2.0.2.tgz" integrity sha512-77XF9iTllATmG9lSlIv0qdQ2BQ/h9t0bJllHlbvsQ0zUWfU7Yi0S8L5JXzPZgkefIiajLmBJJ4BsMJmqcf7oxQ== kleur@^3.0.3: version "3.0.3" - resolved "https://registry.yarnpkg.com/kleur/-/kleur-3.0.3.tgz#a79c9ecc86ee1ce3fa6206d1216c501f147fc07e" + resolved "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz" integrity sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w== knex@^2.1.0: - version "2.4.2" - resolved "https://registry.yarnpkg.com/knex/-/knex-2.4.2.tgz#a34a289d38406dc19a0447a78eeaf2d16ebedd61" - integrity sha512-tMI1M7a+xwHhPxjbl/H9K1kHX+VncEYcvCx5K00M16bWvpYPKAZd6QrCu68PtHAdIZNQPWZn0GVhqVBEthGWCg== + version "2.5.1" + resolved "https://registry.npmjs.org/knex/-/knex-2.5.1.tgz" + integrity sha512-z78DgGKUr4SE/6cm7ku+jHvFT0X97aERh/f0MUKAKgFnwCYBEW4TFBqtHWFYiJFid7fMrtpZ/gxJthvz5mEByA== dependencies: colorette "2.0.19" - commander "^9.1.0" + commander "^10.0.0" debug "4.3.4" escalade "^3.1.1" esm "^3.2.25" @@ -17137,7 +17545,7 @@ knex@^2.1.0: getopts "2.3.0" interpret "^2.2.0" lodash "^4.17.21" - pg-connection-string "2.5.0" + pg-connection-string "2.6.1" rechoir "^0.8.0" resolve-from "^5.0.0" tarn "^3.0.2" @@ -17145,57 +17553,57 @@ knex@^2.1.0: kuler@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/kuler/-/kuler-2.0.0.tgz#e2c570a3800388fb44407e851531c1d670b061b3" + resolved "https://registry.npmjs.org/kuler/-/kuler-2.0.0.tgz" integrity sha512-Xq9nH7KlWZmXAtodXDDRE7vs6DU1gTU8zYDHDiWLSip45Egwq3plLHzPn27NgvzL2r1LMPC1vdqh98sQxtqj4A== latest-version@^5.0.0, latest-version@^5.1.0: version "5.1.0" - resolved "https://registry.yarnpkg.com/latest-version/-/latest-version-5.1.0.tgz#119dfe908fe38d15dfa43ecd13fa12ec8832face" + resolved "https://registry.npmjs.org/latest-version/-/latest-version-5.1.0.tgz" integrity sha512-weT+r0kTkRQdCdYCNtkMwWXQTMEswKrFBkm4ckQOMVhhqhIMI1UT2hMj+1iigIhgSZm5gTmrRXBNoGUgaTY1xA== dependencies: package-json "^6.3.0" lazy-cache@^0.1.0: version "0.1.0" - resolved "https://registry.yarnpkg.com/lazy-cache/-/lazy-cache-0.1.0.tgz#d6cd450251d415b70103765f63130a0049a03795" + resolved "https://registry.npmjs.org/lazy-cache/-/lazy-cache-0.1.0.tgz" integrity sha512-WDBCsYgeOSNWVk8t3RYQ63PPnldXNdXg1ZIvPZ53XfueW0CHqmo462o4BmmpSuuxavJAXQl5ogRHVRiAIHti5Q== dependencies: ansi-yellow "^0.1.1" lazy-cache@^0.2.4: version "0.2.7" - resolved "https://registry.yarnpkg.com/lazy-cache/-/lazy-cache-0.2.7.tgz#7feddf2dcb6edb77d11ef1d117ab5ffdf0ab1b65" + resolved "https://registry.npmjs.org/lazy-cache/-/lazy-cache-0.2.7.tgz" integrity sha512-gkX52wvU/R8DVMMt78ATVPFMJqfW8FPz1GZ1sVHBVQHmu/WvhIWE4cE1GBzhJNFicDeYhnwp6Rl35BcAIM3YOQ== lazy-cache@^1.0.3: version "1.0.4" - resolved "https://registry.yarnpkg.com/lazy-cache/-/lazy-cache-1.0.4.tgz#a1d78fc3a50474cb80845d3b3b6e1da49a446e8e" + resolved "https://registry.npmjs.org/lazy-cache/-/lazy-cache-1.0.4.tgz" integrity sha512-RE2g0b5VGZsOCFOCgP7omTRYFqydmZkBwl5oNnQ1lDYC57uyO9KqNnNVxT7COSHTxrRCWVcAVOcbjk+tvh/rgQ== lazystream@^1.0.0: version "1.0.1" - resolved "https://registry.yarnpkg.com/lazystream/-/lazystream-1.0.1.tgz#494c831062f1f9408251ec44db1cba29242a2638" + resolved "https://registry.npmjs.org/lazystream/-/lazystream-1.0.1.tgz" integrity sha512-b94GiNHQNy6JNTrt5w6zNyffMrNkXZb3KTkCZJb2V1xaEGCk093vkZ2jk3tpaeP33/OiXC+WvK9AxUebnf5nbw== dependencies: readable-stream "^2.0.5" lcid@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/lcid/-/lcid-1.0.0.tgz#308accafa0bc483a3867b4b6f2b9506251d1b835" + resolved "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz" integrity sha512-YiGkH6EnGrDGqLMITnGjXtGmNtjoXw9SVUzcaos8RBi7Ps0VBylkq+vOcY9QE5poLasPCR849ucFUkl0UzUyOw== dependencies: invert-kv "^1.0.0" lcid@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/lcid/-/lcid-2.0.0.tgz#6ef5d2df60e52f82eb228a4c373e8d1f397253cf" + resolved "https://registry.npmjs.org/lcid/-/lcid-2.0.0.tgz" integrity sha512-avPEb8P8EGnwXKClwsNUgryVjllcRqtMYa49NTsbQagYuT1DcXnl1915oxWjoyGrXR6zH/Y0Zc96xWsPcoDKeA== dependencies: invert-kv "^2.0.0" lerna@^5.5.0: version "5.6.2" - resolved "https://registry.yarnpkg.com/lerna/-/lerna-5.6.2.tgz#cdcdfe4e8bf07eccb4ecff1c216def9c67e62af2" + resolved "https://registry.npmjs.org/lerna/-/lerna-5.6.2.tgz" integrity sha512-Y0yMPslvnBnTZi7Nrs/gDyYZYauNf61xWNCehISHIORxZmmpoluNkcWTfcyb47is5uJQCv5QJX5xKKubbs+a6w== dependencies: "@lerna/add" "5.6.2" @@ -17224,52 +17632,52 @@ lerna@^5.5.0: level-codec@9.0.2, level-codec@^9.0.0: version "9.0.2" - resolved "https://registry.yarnpkg.com/level-codec/-/level-codec-9.0.2.tgz#fd60df8c64786a80d44e63423096ffead63d8cbc" + resolved "https://registry.npmjs.org/level-codec/-/level-codec-9.0.2.tgz" integrity sha512-UyIwNb1lJBChJnGfjmO0OR+ezh2iVu1Kas3nvBS/BzGnx79dv6g7unpKIDNPMhfdTEGoc7mC8uAu51XEtX+FHQ== dependencies: buffer "^5.6.0" level-codec@~7.0.0: version "7.0.1" - resolved "https://registry.yarnpkg.com/level-codec/-/level-codec-7.0.1.tgz#341f22f907ce0f16763f24bddd681e395a0fb8a7" + resolved "https://registry.npmjs.org/level-codec/-/level-codec-7.0.1.tgz" integrity sha512-Ua/R9B9r3RasXdRmOtd+t9TCOEIIlts+TN/7XTT2unhDaL6sJn83S3rUyljbr6lVtw49N3/yA0HHjpV6Kzb2aQ== level-concat-iterator@^3.0.0: version "3.1.0" - resolved "https://registry.yarnpkg.com/level-concat-iterator/-/level-concat-iterator-3.1.0.tgz#5235b1f744bc34847ed65a50548aa88d22e881cf" + resolved "https://registry.npmjs.org/level-concat-iterator/-/level-concat-iterator-3.1.0.tgz" integrity sha512-BWRCMHBxbIqPxJ8vHOvKUsaO0v1sLYZtjN3K2iZJsRBYtp+ONsY6Jfi6hy9K3+zolgQRryhIn2NRZjZnWJ9NmQ== dependencies: catering "^2.1.0" level-concat-iterator@~2.0.0: version "2.0.1" - resolved "https://registry.yarnpkg.com/level-concat-iterator/-/level-concat-iterator-2.0.1.tgz#1d1009cf108340252cb38c51f9727311193e6263" + resolved "https://registry.npmjs.org/level-concat-iterator/-/level-concat-iterator-2.0.1.tgz" integrity sha512-OTKKOqeav2QWcERMJR7IS9CUo1sHnke2C0gkSmcR7QuEtFNLLzHQAvnMw8ykvEcv0Qtkg0p7FOwP1v9e5Smdcw== level-errors@^1.0.3: version "1.1.2" - resolved "https://registry.yarnpkg.com/level-errors/-/level-errors-1.1.2.tgz#4399c2f3d3ab87d0625f7e3676e2d807deff404d" + resolved "https://registry.npmjs.org/level-errors/-/level-errors-1.1.2.tgz" integrity sha512-Sw/IJwWbPKF5Ai4Wz60B52yj0zYeqzObLh8k1Tk88jVmD51cJSKWSYpRyhVIvFzZdvsPqlH5wfhp/yxdsaQH4w== dependencies: errno "~0.1.1" level-errors@^2.0.0, level-errors@~2.0.0: version "2.0.1" - resolved "https://registry.yarnpkg.com/level-errors/-/level-errors-2.0.1.tgz#2132a677bf4e679ce029f517c2f17432800c05c8" + resolved "https://registry.npmjs.org/level-errors/-/level-errors-2.0.1.tgz" integrity sha512-UVprBJXite4gPS+3VznfgDSU8PTRuVX0NXwoWW50KLxd2yw4Y1t2JUR5In1itQnudZqRMT9DlAM3Q//9NCjCFw== dependencies: errno "~0.1.1" level-errors@~1.0.3: version "1.0.5" - resolved "https://registry.yarnpkg.com/level-errors/-/level-errors-1.0.5.tgz#83dbfb12f0b8a2516bdc9a31c4876038e227b859" + resolved "https://registry.npmjs.org/level-errors/-/level-errors-1.0.5.tgz" integrity sha512-/cLUpQduF6bNrWuAC4pwtUKA5t669pCsCi2XbmojG2tFeOr9j6ShtdDCtFFQO1DRt+EVZhx9gPzP9G2bUaG4ig== dependencies: errno "~0.1.1" level-iterator-stream@~1.3.0: version "1.3.1" - resolved "https://registry.yarnpkg.com/level-iterator-stream/-/level-iterator-stream-1.3.1.tgz#e43b78b1a8143e6fa97a4f485eb8ea530352f2ed" + resolved "https://registry.npmjs.org/level-iterator-stream/-/level-iterator-stream-1.3.1.tgz" integrity sha512-1qua0RHNtr4nrZBgYlpV0qHHeHpcRRWTxEZJ8xsemoHAXNL5tbooh4tPEEqIqsbWCAJBmUmkwYK/sW5OrFjWWw== dependencies: inherits "^2.0.1" @@ -17279,7 +17687,7 @@ level-iterator-stream@~1.3.0: level-iterator-stream@~3.0.0: version "3.0.1" - resolved "https://registry.yarnpkg.com/level-iterator-stream/-/level-iterator-stream-3.0.1.tgz#2c98a4f8820d87cdacab3132506815419077c730" + resolved "https://registry.npmjs.org/level-iterator-stream/-/level-iterator-stream-3.0.1.tgz" integrity sha512-nEIQvxEED9yRThxvOrq8Aqziy4EGzrxSZK+QzEFAVuJvQ8glfyZ96GB6BoI4sBbLfjMXm2w4vu3Tkcm9obcY0g== dependencies: inherits "^2.0.1" @@ -17288,7 +17696,7 @@ level-iterator-stream@~3.0.0: level-iterator-stream@~4.0.0: version "4.0.2" - resolved "https://registry.yarnpkg.com/level-iterator-stream/-/level-iterator-stream-4.0.2.tgz#7ceba69b713b0d7e22fcc0d1f128ccdc8a24f79c" + resolved "https://registry.npmjs.org/level-iterator-stream/-/level-iterator-stream-4.0.2.tgz" integrity sha512-ZSthfEqzGSOMWoUGhTXdX9jv26d32XJuHz/5YnuHZzH6wldfWMOVwI9TBtKcya4BKTyTt3XVA0A3cF3q5CY30Q== dependencies: inherits "^2.0.4" @@ -17297,7 +17705,7 @@ level-iterator-stream@~4.0.0: level-js@^5.0.0: version "5.0.2" - resolved "https://registry.yarnpkg.com/level-js/-/level-js-5.0.2.tgz#5e280b8f93abd9ef3a305b13faf0b5397c969b55" + resolved "https://registry.npmjs.org/level-js/-/level-js-5.0.2.tgz" integrity sha512-SnBIDo2pdO5VXh02ZmtAyPP6/+6YTJg2ibLtl9C34pWvmtMEmRTWpra+qO/hifkUtBTOtfx6S9vLDjBsBK4gRg== dependencies: abstract-leveldown "~6.2.3" @@ -17307,7 +17715,7 @@ level-js@^5.0.0: level-mem@^3.0.1: version "3.0.1" - resolved "https://registry.yarnpkg.com/level-mem/-/level-mem-3.0.1.tgz#7ce8cf256eac40f716eb6489654726247f5a89e5" + resolved "https://registry.npmjs.org/level-mem/-/level-mem-3.0.1.tgz" integrity sha512-LbtfK9+3Ug1UmvvhR2DqLqXiPW1OJ5jEh0a3m9ZgAipiwpSxGj/qaVVy54RG5vAQN1nCuXqjvprCuKSCxcJHBg== dependencies: level-packager "~4.0.0" @@ -17323,7 +17731,7 @@ level-mem@^5.0.1: level-packager@^5.0.3, level-packager@^5.1.0: version "5.1.1" - resolved "https://registry.yarnpkg.com/level-packager/-/level-packager-5.1.1.tgz#323ec842d6babe7336f70299c14df2e329c18939" + resolved "https://registry.npmjs.org/level-packager/-/level-packager-5.1.1.tgz" integrity sha512-HMwMaQPlTC1IlcwT3+swhqf/NUO+ZhXVz6TY1zZIIZlIR0YSn8GtAAWmIvKjNY16ZkEg/JcpAuQskxsXqC0yOQ== dependencies: encoding-down "^6.3.0" @@ -17331,7 +17739,7 @@ level-packager@^5.0.3, level-packager@^5.1.0: level-packager@~4.0.0: version "4.0.1" - resolved "https://registry.yarnpkg.com/level-packager/-/level-packager-4.0.1.tgz#7e7d3016af005be0869bc5fa8de93d2a7f56ffe6" + resolved "https://registry.npmjs.org/level-packager/-/level-packager-4.0.1.tgz" integrity sha512-svCRKfYLn9/4CoFfi+d8krOtrp6RoX8+xm0Na5cgXMqSyRru0AnDYdLl+YI8u1FyS6gGZ94ILLZDE5dh2but3Q== dependencies: encoding-down "~5.0.0" @@ -17339,24 +17747,24 @@ level-packager@~4.0.0: level-supports@^2.0.1: version "2.1.0" - resolved "https://registry.yarnpkg.com/level-supports/-/level-supports-2.1.0.tgz#9af908d853597ecd592293b2fad124375be79c5f" + resolved "https://registry.npmjs.org/level-supports/-/level-supports-2.1.0.tgz" integrity sha512-E486g1NCjW5cF78KGPrMDRBYzPuueMZ6VBXHT6gC7A8UYWGiM14fGgp+s/L1oFfDWSPV/+SFkYCmZ0SiESkRKA== level-supports@^4.0.0: version "4.0.1" - resolved "https://registry.yarnpkg.com/level-supports/-/level-supports-4.0.1.tgz#431546f9d81f10ff0fea0e74533a0e875c08c66a" + resolved "https://registry.npmjs.org/level-supports/-/level-supports-4.0.1.tgz" integrity sha512-PbXpve8rKeNcZ9C1mUicC9auIYFyGpkV9/i6g76tLgANwWhtG2v7I4xNBUlkn3lE2/dZF3Pi0ygYGtLc4RXXdA== level-supports@~1.0.0: version "1.0.1" - resolved "https://registry.yarnpkg.com/level-supports/-/level-supports-1.0.1.tgz#2f530a596834c7301622521988e2c36bb77d122d" + resolved "https://registry.npmjs.org/level-supports/-/level-supports-1.0.1.tgz" integrity sha512-rXM7GYnW8gsl1vedTJIbzOrRv85c/2uCMpiiCzO2fndd06U/kUXEEU9evYn4zFggBOg36IsBW8LzqIpETwwQzg== dependencies: xtend "^4.0.2" level-transcoder@^1.0.1: version "1.0.1" - resolved "https://registry.yarnpkg.com/level-transcoder/-/level-transcoder-1.0.1.tgz#f8cef5990c4f1283d4c86d949e73631b0bc8ba9c" + resolved "https://registry.npmjs.org/level-transcoder/-/level-transcoder-1.0.1.tgz" integrity sha512-t7bFwFtsQeD8cl8NIoQ2iwxA0CL/9IFw7/9gAjOonH0PWTTiRfY7Hq+Ejbsxh86tXobDQ6IOiddjNYIfOBs06w== dependencies: buffer "^6.0.3" @@ -17364,14 +17772,14 @@ level-transcoder@^1.0.1: level-write-stream@1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/level-write-stream/-/level-write-stream-1.0.0.tgz#3f7fbb679a55137c0feb303dee766e12ee13c1dc" + resolved "https://registry.npmjs.org/level-write-stream/-/level-write-stream-1.0.0.tgz" integrity sha512-bBNKOEOMl8msO+uIM9YX/gUO6ckokZ/4pCwTm/lwvs46x6Xs8Zy0sn3Vh37eDqse4mhy4fOMIb/JsSM2nyQFtw== dependencies: end-stream "~0.1.0" level-ws@0.0.0: version "0.0.0" - resolved "https://registry.yarnpkg.com/level-ws/-/level-ws-0.0.0.tgz#372e512177924a00424b0b43aef2bb42496d228b" + resolved "https://registry.npmjs.org/level-ws/-/level-ws-0.0.0.tgz" integrity sha512-XUTaO/+Db51Uiyp/t7fCMGVFOTdtLS/NIACxE/GHsij15mKzxksZifKVjlXDF41JMUP/oM1Oc4YNGdKnc3dVLw== dependencies: readable-stream "~1.0.15" @@ -17379,7 +17787,7 @@ level-ws@0.0.0: level-ws@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/level-ws/-/level-ws-2.0.0.tgz#207a07bcd0164a0ec5d62c304b4615c54436d339" + resolved "https://registry.npmjs.org/level-ws/-/level-ws-2.0.0.tgz" integrity sha512-1iv7VXx0G9ec1isqQZ7y5LmoZo/ewAsyDHNA8EFDW5hqH2Kqovm33nSFkSdnLLAK+I5FlT+lo5Cw9itGe+CpQA== dependencies: inherits "^2.0.3" @@ -17388,7 +17796,7 @@ level-ws@^2.0.0: level@6.0.1: version "6.0.1" - resolved "https://registry.yarnpkg.com/level/-/level-6.0.1.tgz#dc34c5edb81846a6de5079eac15706334b0d7cd6" + resolved "https://registry.npmjs.org/level/-/level-6.0.1.tgz" integrity sha512-psRSqJZCsC/irNhfHzrVZbmPYXDcEYhA5TVNwr+V92jF44rbf86hqGp8fiT702FyiArScYIlPSBTDUASCVNSpw== dependencies: level-js "^5.0.0" @@ -17397,7 +17805,7 @@ level@6.0.1: level@^8.0.0: version "8.0.0" - resolved "https://registry.yarnpkg.com/level/-/level-8.0.0.tgz#41b4c515dabe28212a3e881b61c161ffead14394" + resolved "https://registry.npmjs.org/level/-/level-8.0.0.tgz" integrity sha512-ypf0jjAk2BWI33yzEaaotpq7fkOPALKAgDBxggO6Q9HGX2MRXn0wbP1Jn/tJv1gtL867+YOjOB49WaUF3UoJNQ== dependencies: browser-level "^1.0.1" @@ -17405,7 +17813,7 @@ level@^8.0.0: leveldown@5.6.0, leveldown@^5.4.0: version "5.6.0" - resolved "https://registry.yarnpkg.com/leveldown/-/leveldown-5.6.0.tgz#16ba937bb2991c6094e13ac5a6898ee66d3eee98" + resolved "https://registry.npmjs.org/leveldown/-/leveldown-5.6.0.tgz" integrity sha512-iB8O/7Db9lPaITU1aA2txU/cBEXAt4vWwKQRrrWuS6XDgbP4QZGj9BL2aNbwb002atoQ/lIotJkfyzz+ygQnUQ== dependencies: abstract-leveldown "~6.2.1" @@ -17414,7 +17822,7 @@ leveldown@5.6.0, leveldown@^5.4.0: leveldown@6.1.0: version "6.1.0" - resolved "https://registry.yarnpkg.com/leveldown/-/leveldown-6.1.0.tgz#7ab1297706f70c657d1a72b31b40323aa612b9ee" + resolved "https://registry.npmjs.org/leveldown/-/leveldown-6.1.0.tgz" integrity sha512-8C7oJDT44JXxh04aSSsfcMI8YiaGRhOFI9/pMEL7nWJLVsWajDPTRxsSHTM2WcTVY5nXM+SuRHzPPi0GbnDX+w== dependencies: abstract-leveldown "^7.2.0" @@ -17423,7 +17831,7 @@ leveldown@6.1.0: levelup@4.4.0, levelup@^4.3.2: version "4.4.0" - resolved "https://registry.yarnpkg.com/levelup/-/levelup-4.4.0.tgz#f89da3a228c38deb49c48f88a70fb71f01cafed6" + resolved "https://registry.npmjs.org/levelup/-/levelup-4.4.0.tgz" integrity sha512-94++VFO3qN95cM/d6eBXvd894oJE0w3cInq9USsyQzzoJxmiYzPAocNcuGCPGGjoXqDVJcr3C1jzt1TSjyaiLQ== dependencies: deferred-leveldown "~5.3.0" @@ -17434,7 +17842,7 @@ levelup@4.4.0, levelup@^4.3.2: levelup@^1.2.1: version "1.3.9" - resolved "https://registry.yarnpkg.com/levelup/-/levelup-1.3.9.tgz#2dbcae845b2bb2b6bea84df334c475533bbd82ab" + resolved "https://registry.npmjs.org/levelup/-/levelup-1.3.9.tgz" integrity sha512-VVGHfKIlmw8w1XqpGOAGwq6sZm2WwWLmlDcULkKWQXEA5EopA8OBNJ2Ck2v6bdk8HeEZSbCSEgzXadyQFm76sQ== dependencies: deferred-leveldown "~1.2.1" @@ -17447,7 +17855,7 @@ levelup@^1.2.1: levelup@^3.0.0: version "3.1.1" - resolved "https://registry.yarnpkg.com/levelup/-/levelup-3.1.1.tgz#c2c0b3be2b4dc316647c53b42e2f559e232d2189" + resolved "https://registry.npmjs.org/levelup/-/levelup-3.1.1.tgz" integrity sha512-9N10xRkUU4dShSRRFTBdNaBxofz+PGaIZO962ckboJZiNmLuhVT6FZ6ZKAsICKfUBO76ySaYU6fJWX/jnj3Lcg== dependencies: deferred-leveldown "~4.0.0" @@ -17457,12 +17865,12 @@ levelup@^3.0.0: leven@^3.1.0: version "3.1.0" - resolved "https://registry.yarnpkg.com/leven/-/leven-3.1.0.tgz#77891de834064cccba82ae7842bb6b14a13ed7f2" + resolved "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz" integrity sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A== levn@^0.3.0, levn@~0.3.0: version "0.3.0" - resolved "https://registry.yarnpkg.com/levn/-/levn-0.3.0.tgz#3b09924edf9f083c0490fdd4c0bc4421e04764ee" + resolved "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz" integrity sha512-0OO4y2iOHix2W6ujICbKIaEQXvFQHue65vUG3pb5EUomzPI90z9hsA1VsO/dbIIpC53J8gxM9Q4Oho0jrCM/yA== dependencies: prelude-ls "~1.1.2" @@ -17470,7 +17878,7 @@ levn@^0.3.0, levn@~0.3.0: libnpmaccess@^6.0.3: version "6.0.4" - resolved "https://registry.yarnpkg.com/libnpmaccess/-/libnpmaccess-6.0.4.tgz#2dd158bd8a071817e2207d3b201d37cf1ad6ae6b" + resolved "https://registry.npmjs.org/libnpmaccess/-/libnpmaccess-6.0.4.tgz" integrity sha512-qZ3wcfIyUoW0+qSFkMBovcTrSGJ3ZeyvpR7d5N9pEYv/kXs8sHP2wiqEIXBKLFrZlmM0kR0RJD7mtfLngtlLag== dependencies: aproba "^2.0.0" @@ -17480,7 +17888,7 @@ libnpmaccess@^6.0.3: libnpmpublish@^6.0.4: version "6.0.5" - resolved "https://registry.yarnpkg.com/libnpmpublish/-/libnpmpublish-6.0.5.tgz#5a894f3de2e267d62f86be2a508e362599b5a4b1" + resolved "https://registry.npmjs.org/libnpmpublish/-/libnpmpublish-6.0.5.tgz" integrity sha512-LUR08JKSviZiqrYTDfywvtnsnxr+tOvBU0BF8H+9frt7HMvc6Qn6F8Ubm72g5hDTHbq8qupKfDvDAln2TVPvFg== dependencies: normalize-package-data "^4.0.0" @@ -17491,46 +17899,46 @@ libnpmpublish@^6.0.4: libsodium-wrappers@^0.7.10: version "0.7.11" - resolved "https://registry.yarnpkg.com/libsodium-wrappers/-/libsodium-wrappers-0.7.11.tgz#53bd20606dffcc54ea2122133c7da38218f575f7" + resolved "https://registry.npmjs.org/libsodium-wrappers/-/libsodium-wrappers-0.7.11.tgz" integrity sha512-SrcLtXj7BM19vUKtQuyQKiQCRJPgbpauzl3s0rSwD+60wtHqSUuqcoawlMDheCJga85nKOQwxNYQxf/CKAvs6Q== dependencies: libsodium "^0.7.11" libsodium@^0.7.11: version "0.7.11" - resolved "https://registry.yarnpkg.com/libsodium/-/libsodium-0.7.11.tgz#cd10aae7bcc34a300cc6ad0ac88fcca674cfbc2e" + resolved "https://registry.npmjs.org/libsodium/-/libsodium-0.7.11.tgz" integrity sha512-WPfJ7sS53I2s4iM58QxY3Inb83/6mjlYgcmZs7DJsvDlnmVUwNinBCi5vBT43P6bHRy01O4zsMU2CoVR6xJ40A== limiter@^1.1.5: version "1.1.5" - resolved "https://registry.yarnpkg.com/limiter/-/limiter-1.1.5.tgz#8f92a25b3b16c6131293a0cc834b4a838a2aa7c2" + resolved "https://registry.npmjs.org/limiter/-/limiter-1.1.5.tgz" integrity sha512-FWWMIEOxz3GwUI4Ts/IvgVy6LPvoMPgjMdQ185nN6psJyBJ4yOpzqm695/h5umdLJg2vW3GR5iG11MAkR2AzJA== lines-and-columns@^1.1.6: version "1.2.4" - resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.2.4.tgz#eca284f75d2965079309dc0ad9255abb2ebc1632" + resolved "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz" integrity sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg== lines-and-columns@~2.0.3: version "2.0.3" - resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-2.0.3.tgz#b2f0badedb556b747020ab8ea7f0373e22efac1b" + resolved "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-2.0.3.tgz" integrity sha512-cNOjgCnLB+FnvWWtyRTzmB3POJ+cXxTA81LoW7u8JdmhfXzriropYwpjShnz1QLLWsQwY7nIxoDmcPTwphDK9w== linkify-it@^3.0.1: version "3.0.3" - resolved "https://registry.yarnpkg.com/linkify-it/-/linkify-it-3.0.3.tgz#a98baf44ce45a550efb4d49c769d07524cc2fa2e" + resolved "https://registry.npmjs.org/linkify-it/-/linkify-it-3.0.3.tgz" integrity sha512-ynTsyrFSdE5oZ/O9GEf00kPngmOfVwazR5GKDq6EYfhlpFug3J2zybX56a2PRRpc9P+FuSoGNAwjlbDs9jJBPQ== dependencies: uc.micro "^1.0.1" listenercount@~1.0.1: version "1.0.1" - resolved "https://registry.yarnpkg.com/listenercount/-/listenercount-1.0.1.tgz#84c8a72ab59c4725321480c975e6508342e70937" + resolved "https://registry.npmjs.org/listenercount/-/listenercount-1.0.1.tgz" integrity sha512-3mk/Zag0+IJxeDrxSgaDPy4zZ3w05PRZeJNnlWhzFz5OkX49J4krc+A8X2d2M69vGMBEX0uyl8M+W+8gH+kBqQ== load-json-file@^1.0.0: version "1.1.0" - resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-1.1.0.tgz#956905708d58b4bab4c2261b04f59f31c99374c0" + resolved "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz" integrity sha512-cy7ZdNRXdablkXYNI049pthVeXFurRyb9+hA/dZzerZ0pGTx42z+y+ssxBaVV2l70t1muq5IdKhn4UtcoGUY9A== dependencies: graceful-fs "^4.1.2" @@ -17541,7 +17949,7 @@ load-json-file@^1.0.0: load-json-file@^4.0.0: version "4.0.0" - resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-4.0.0.tgz#2f5f45ab91e33216234fd53adab668eb4ec0993b" + resolved "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz" integrity sha512-Kx8hMakjX03tiGTLAIdJ+lL0htKnXjEZN6hk/tozf/WOuYGdZBJrZ+rCJRbVCugsjB3jMLn9746NsQIf5VjBMw== dependencies: graceful-fs "^4.1.2" @@ -17551,7 +17959,7 @@ load-json-file@^4.0.0: load-json-file@^5.3.0: version "5.3.0" - resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-5.3.0.tgz#4d3c1e01fa1c03ea78a60ac7af932c9ce53403f3" + resolved "https://registry.npmjs.org/load-json-file/-/load-json-file-5.3.0.tgz" integrity sha512-cJGP40Jc/VXUsp8/OrnyKyTZ1y6v/dphm3bioS+RrKXjK2BB6wHUd6JptZEFDGgGahMT+InnZO5i1Ei9mpC8Bw== dependencies: graceful-fs "^4.1.15" @@ -17572,7 +17980,7 @@ load-json-file@^6.2.0: locate-path@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-2.0.0.tgz#2b568b265eec944c6d9c0de9c3dbbbca0354cd8e" + resolved "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz" integrity sha512-NCI2kiDkyR7VeEKm27Kda/iQHyKJe1Bu0FlTbYp3CqJu+9IFe9bLyAjMxf5ZDDbEg+iMPzB5zYyUTSm8wVTKmA== dependencies: p-locate "^2.0.0" @@ -17580,7 +17988,7 @@ locate-path@^2.0.0: locate-path@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-3.0.0.tgz#dbec3b3ab759758071b58fe59fc41871af21400e" + resolved "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz" integrity sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A== dependencies: p-locate "^3.0.0" @@ -17588,118 +17996,118 @@ locate-path@^3.0.0: locate-path@^5.0.0: version "5.0.0" - resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-5.0.0.tgz#1afba396afd676a6d42504d0a67a3a7eb9f62aa0" + resolved "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz" integrity sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g== dependencies: p-locate "^4.1.0" locate-path@^6.0.0: version "6.0.0" - resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-6.0.0.tgz#55321eb309febbc59c4801d931a72452a681d286" + resolved "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz" integrity sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw== dependencies: p-locate "^5.0.0" lodash-es@^4.2.1: version "4.17.21" - resolved "https://registry.yarnpkg.com/lodash-es/-/lodash-es-4.17.21.tgz#43e626c46e6591b7750beb2b50117390c609e3ee" + resolved "https://registry.npmjs.org/lodash-es/-/lodash-es-4.17.21.tgz" integrity sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw== lodash._isnative@~2.4.1: version "2.4.1" - resolved "https://registry.yarnpkg.com/lodash._isnative/-/lodash._isnative-2.4.1.tgz#3ea6404b784a7be836c7b57580e1cdf79b14832c" + resolved "https://registry.npmjs.org/lodash._isnative/-/lodash._isnative-2.4.1.tgz" integrity sha512-BOlKGKNHhCHswGOWtmVb5zBygyxN7EmTuzVOSQI6QSoGhG+kvv71gICFS1TBpnqvT1n53txK8CDK3u5D2/GZxQ== lodash._objecttypes@~2.4.1: version "2.4.1" - resolved "https://registry.yarnpkg.com/lodash._objecttypes/-/lodash._objecttypes-2.4.1.tgz#7c0b7f69d98a1f76529f890b0cdb1b4dfec11c11" + resolved "https://registry.npmjs.org/lodash._objecttypes/-/lodash._objecttypes-2.4.1.tgz" integrity sha512-XpqGh1e7hhkOzftBfWE7zt+Yn9mVHFkDhicVttvKLsoCMLVVL+xTQjfjB4X4vtznauxv0QZ5ZAeqjvat0dh62Q== lodash._reinterpolate@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz#0ccf2d89166af03b3663c796538b75ac6e114d9d" + resolved "https://registry.npmjs.org/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz" integrity sha512-xYHt68QRoYGjeeM/XOE1uJtvXQAgvszfBhjV4yvsQH0u2i9I6cI6c6/eG4Hh3UAOVn0y/xAXwmTzEay49Q//HA== lodash._shimkeys@~2.4.1: version "2.4.1" - resolved "https://registry.yarnpkg.com/lodash._shimkeys/-/lodash._shimkeys-2.4.1.tgz#6e9cc9666ff081f0b5a6c978b83e242e6949d203" + resolved "https://registry.npmjs.org/lodash._shimkeys/-/lodash._shimkeys-2.4.1.tgz" integrity sha512-lBrglYxLD/6KAJ8IEa5Lg+YHgNAL7FyKqXg4XOUI+Du/vtniLs1ZqS+yHNKPkK54waAgkdUnDOYaWf+rv4B+AA== dependencies: lodash._objecttypes "~2.4.1" lodash.assign@^4.0.3, lodash.assign@^4.0.6: version "4.2.0" - resolved "https://registry.yarnpkg.com/lodash.assign/-/lodash.assign-4.2.0.tgz#0d99f3ccd7a6d261d19bdaeb9245005d285808e7" + resolved "https://registry.npmjs.org/lodash.assign/-/lodash.assign-4.2.0.tgz" integrity sha512-hFuH8TY+Yji7Eja3mGiuAxBqLagejScbG8GbG0j6o9vzn0YL14My+ktnqtZgFTosKymC9/44wP6s7xyuLfnClw== lodash.at@^4.6.0: version "4.6.0" - resolved "https://registry.yarnpkg.com/lodash.at/-/lodash.at-4.6.0.tgz#93cdce664f0a1994ea33dd7cd40e23afd11b0ff8" + resolved "https://registry.npmjs.org/lodash.at/-/lodash.at-4.6.0.tgz" integrity sha512-GOTh0SEp+Yosnlpjic+8cl2WM9MykorogkGA9xyIFkkObQ3H3kNZqZ+ohuq4K3FrSVo7hMcZBMataJemrxC3BA== lodash.camelcase@^4.3.0: version "4.3.0" - resolved "https://registry.yarnpkg.com/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz#b28aa6288a2b9fc651035c7711f65ab6190331a6" + resolved "https://registry.npmjs.org/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz" integrity sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA== lodash.clone@^4.5.0: version "4.5.0" - resolved "https://registry.yarnpkg.com/lodash.clone/-/lodash.clone-4.5.0.tgz#195870450f5a13192478df4bc3d23d2dea1907b6" + resolved "https://registry.npmjs.org/lodash.clone/-/lodash.clone-4.5.0.tgz" integrity sha512-GhrVeweiTD6uTmmn5hV/lzgCQhccwReIVRLHp7LT4SopOjqEZ5BbX8b5WWEtAKasjmy8hR7ZPwsYlxRCku5odg== lodash.clonedeep@^4.5.0: version "4.5.0" - resolved "https://registry.yarnpkg.com/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz#e23f3f9c4f8fbdde872529c1071857a086e5ccef" + resolved "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz" integrity sha512-H5ZhCF25riFd9uB5UCkVKo61m3S/xZk1x4wA6yp/L3RFP6Z/eHH1ymQcGLo7J3GMPfm0V/7m1tryHuGVxpqEBQ== lodash.debounce@^4.0.8: version "4.0.8" - resolved "https://registry.yarnpkg.com/lodash.debounce/-/lodash.debounce-4.0.8.tgz#82d79bff30a67c4005ffd5e2515300ad9ca4d7af" + resolved "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz" integrity sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow== lodash.defaults@^4.2.0: version "4.2.0" - resolved "https://registry.yarnpkg.com/lodash.defaults/-/lodash.defaults-4.2.0.tgz#d09178716ffea4dde9e5fb7b37f6f0802274580c" + resolved "https://registry.npmjs.org/lodash.defaults/-/lodash.defaults-4.2.0.tgz" integrity sha512-qjxPLHd3r5DnsdGacqOMU6pb/avJzdh9tFX2ymgoZE27BmjXrNy/y4LoaiTeAb+O3gL8AfpJGtqfX/ae2leYYQ== lodash.difference@^4.5.0: version "4.5.0" - resolved "https://registry.yarnpkg.com/lodash.difference/-/lodash.difference-4.5.0.tgz#9ccb4e505d486b91651345772885a2df27fd017c" + resolved "https://registry.npmjs.org/lodash.difference/-/lodash.difference-4.5.0.tgz" integrity sha512-dS2j+W26TQ7taQBGN8Lbbq04ssV3emRw4NY58WErlTO29pIqS0HmoT5aJ9+TUQ1N3G+JOZSji4eugsWwGp9yPA== lodash.flatten@^4.4.0: version "4.4.0" - resolved "https://registry.yarnpkg.com/lodash.flatten/-/lodash.flatten-4.4.0.tgz#f31c22225a9632d2bbf8e4addbef240aa765a61f" + resolved "https://registry.npmjs.org/lodash.flatten/-/lodash.flatten-4.4.0.tgz" integrity sha512-C5N2Z3DgnnKr0LOpv/hKCgKdb7ZZwafIrsesve6lmzvZIRZRGaZ/l6Q8+2W7NaT+ZwO3fFlSCzCzrDCFdJfZ4g== lodash.get@~4.4.2: version "4.4.2" - resolved "https://registry.yarnpkg.com/lodash.get/-/lodash.get-4.4.2.tgz#2d177f652fa31e939b4438d5341499dfa3825e99" + resolved "https://registry.npmjs.org/lodash.get/-/lodash.get-4.4.2.tgz" integrity sha512-z+Uw/vLuy6gQe8cfaFWD7p0wVv8fJl3mbzXh33RS+0oW2wvUqiRXiQ69gLWSLpgB5/6sU+r6BlQR0MBILadqTQ== lodash.has@^4.5.2: version "4.5.2" - resolved "https://registry.yarnpkg.com/lodash.has/-/lodash.has-4.5.2.tgz#d19f4dc1095058cccbe2b0cdf4ee0fe4aa37c862" + resolved "https://registry.npmjs.org/lodash.has/-/lodash.has-4.5.2.tgz" integrity sha512-rnYUdIo6xRCJnQmbVFEwcxF144erlD+M3YcJUVesflU9paQaE8p+fJDcIQrlMYbxoANFL+AB9hZrzSBBk5PL+g== lodash.includes@^4.3.0: version "4.3.0" - resolved "https://registry.yarnpkg.com/lodash.includes/-/lodash.includes-4.3.0.tgz#60bb98a87cb923c68ca1e51325483314849f553f" + resolved "https://registry.npmjs.org/lodash.includes/-/lodash.includes-4.3.0.tgz" integrity sha512-W3Bx6mdkRTGtlJISOvVD/lbqjTlPPUDTMnlXZFnVwi9NKJ6tiAk6LVdlhZMm17VZisqhKcgzpO5Wz91PCt5b0w== lodash.isarguments@2.4.x: version "2.4.1" - resolved "https://registry.yarnpkg.com/lodash.isarguments/-/lodash.isarguments-2.4.1.tgz#4931a9c08253adf091ae7ca192258a973876ecca" + resolved "https://registry.npmjs.org/lodash.isarguments/-/lodash.isarguments-2.4.1.tgz" integrity sha512-CyMQjsJqDgXL8M2xYAP6V2dlVXli8IhWXLsk19uXxiL9/qISjzQXyWtxsumR2q4CnR9FjCnxpuIO1d9KSKBcyA== lodash.isarguments@^3.0.0: version "3.1.0" - resolved "https://registry.yarnpkg.com/lodash.isarguments/-/lodash.isarguments-3.1.0.tgz#2f573d85c6a24289ff00663b491c1d338ff3458a" + resolved "https://registry.npmjs.org/lodash.isarguments/-/lodash.isarguments-3.1.0.tgz" integrity sha512-chi4NHZlZqZD18a0imDHnZPrDeBbTtVN7GXMwuGdRH9qotxAjYs3aVLKc7zNOG9eddR5Ksd8rvFEBc9SsggPpg== lodash.isboolean@^3.0.3: version "3.0.3" - resolved "https://registry.yarnpkg.com/lodash.isboolean/-/lodash.isboolean-3.0.3.tgz#6c2e171db2a257cd96802fd43b01b20d5f5870f6" + resolved "https://registry.npmjs.org/lodash.isboolean/-/lodash.isboolean-3.0.3.tgz" integrity sha512-Bz5mupy2SVbPHURB98VAcw+aHh4vRV5IPNhILUCsOzRmsTmSQ17jIuqopAentWoehktxGd9e/hbIXq980/1QJg== lodash.isequal@^4.5.0: @@ -17709,44 +18117,44 @@ lodash.isequal@^4.5.0: lodash.isinteger@^4.0.4: version "4.0.4" - resolved "https://registry.yarnpkg.com/lodash.isinteger/-/lodash.isinteger-4.0.4.tgz#619c0af3d03f8b04c31f5882840b77b11cd68343" + resolved "https://registry.npmjs.org/lodash.isinteger/-/lodash.isinteger-4.0.4.tgz" integrity sha512-DBwtEWN2caHQ9/imiNeEA5ys1JoRtRfY3d7V9wkqtbycnAmTvRRmbHKDV4a0EYc678/dia0jrte4tjYwVBaZUA== lodash.ismatch@^4.4.0: version "4.4.0" - resolved "https://registry.yarnpkg.com/lodash.ismatch/-/lodash.ismatch-4.4.0.tgz#756cb5150ca3ba6f11085a78849645f188f85f37" + resolved "https://registry.npmjs.org/lodash.ismatch/-/lodash.ismatch-4.4.0.tgz" integrity sha512-fPMfXjGQEV9Xsq/8MTSgUf255gawYRbjwMyDbcvDhXgV7enSZA0hynz6vMPnpAb5iONEzBHBPsT+0zes5Z301g== lodash.isnumber@^3.0.3: version "3.0.3" - resolved "https://registry.yarnpkg.com/lodash.isnumber/-/lodash.isnumber-3.0.3.tgz#3ce76810c5928d03352301ac287317f11c0b1ffc" + resolved "https://registry.npmjs.org/lodash.isnumber/-/lodash.isnumber-3.0.3.tgz" integrity sha512-QYqzpfwO3/CWf3XP+Z+tkQsfaLL/EnUlXWVkIk5FUPc4sBdTehEqZONuyRt2P67PXAk+NXmTBcc97zw9t1FQrw== lodash.isobject@^2.4.1, lodash.isobject@~2.4.1: version "2.4.1" - resolved "https://registry.yarnpkg.com/lodash.isobject/-/lodash.isobject-2.4.1.tgz#5a2e47fe69953f1ee631a7eba1fe64d2d06558f5" + resolved "https://registry.npmjs.org/lodash.isobject/-/lodash.isobject-2.4.1.tgz" integrity sha512-sTebg2a1PoicYEZXD5PBdQcTlIJ6hUslrlWr7iV0O7n+i4596s2NQ9I5CaZ5FbXSfya/9WQsrYLANUJv9paYVA== dependencies: lodash._objecttypes "~2.4.1" lodash.isobject@^3.0.0: version "3.0.2" - resolved "https://registry.yarnpkg.com/lodash.isobject/-/lodash.isobject-3.0.2.tgz#3c8fb8d5b5bf4bf90ae06e14f2a530a4ed935e1d" + resolved "https://registry.npmjs.org/lodash.isobject/-/lodash.isobject-3.0.2.tgz" integrity sha512-3/Qptq2vr7WeJbB4KHUSKlq8Pl7ASXi3UG6CMbBm8WRtXi8+GHm7mKaU3urfpSEzWe2wCIChs6/sdocUsTKJiA== lodash.isplainobject@^4.0.6: version "4.0.6" - resolved "https://registry.yarnpkg.com/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz#7c526a52d89b45c45cc690b88163be0497f550cb" + resolved "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz" integrity sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA== lodash.isstring@^4.0.1: version "4.0.1" - resolved "https://registry.yarnpkg.com/lodash.isstring/-/lodash.isstring-4.0.1.tgz#d527dfb5456eca7cc9bb95d5daeaf88ba54a5451" + resolved "https://registry.npmjs.org/lodash.isstring/-/lodash.isstring-4.0.1.tgz" integrity sha512-0wJxfxH1wgO3GrbuP+dTTk7op+6L41QCXbGINEmD+ny/G/eCqGzxyCsh7159S+mgDDcoarnBw6PC1PS5+wUGgw== lodash.keys@~2.4.1: version "2.4.1" - resolved "https://registry.yarnpkg.com/lodash.keys/-/lodash.keys-2.4.1.tgz#48dea46df8ff7632b10d706b8acb26591e2b3727" + resolved "https://registry.npmjs.org/lodash.keys/-/lodash.keys-2.4.1.tgz" integrity sha512-ZpJhwvUXHSNL5wYd1RM6CUa2ZuqorG9ngoJ9Ix5Cce+uX7I5O/E06FCJdhSZ33b5dVyeQDnIlWH7B2s5uByZ7g== dependencies: lodash._isnative "~2.4.1" @@ -17755,32 +18163,32 @@ lodash.keys@~2.4.1: lodash.memoize@4.x: version "4.1.2" - resolved "https://registry.yarnpkg.com/lodash.memoize/-/lodash.memoize-4.1.2.tgz#bcc6c49a42a2840ed997f323eada5ecd182e0bfe" + resolved "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz" integrity sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag== lodash.merge@^4.6.0, lodash.merge@^4.6.2: version "4.6.2" - resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.2.tgz#558aa53b43b661e1925a0afdfa36a9a1085fe57a" + resolved "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz" integrity sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ== lodash.once@^4.0.0: version "4.1.1" - resolved "https://registry.yarnpkg.com/lodash.once/-/lodash.once-4.1.1.tgz#0dd3971213c7c56df880977d504c88fb471a97ac" + resolved "https://registry.npmjs.org/lodash.once/-/lodash.once-4.1.1.tgz" integrity sha512-Sb487aTOCr9drQVL8pIxOzVhafOjZN9UU54hiN8PU3uAiSV7lx1yYNpbNmex2PK6dSJoNTSJUUswT651yww3Mg== lodash.snakecase@^4.1.1: version "4.1.1" - resolved "https://registry.yarnpkg.com/lodash.snakecase/-/lodash.snakecase-4.1.1.tgz#39d714a35357147837aefd64b5dcbb16becd8f8d" + resolved "https://registry.npmjs.org/lodash.snakecase/-/lodash.snakecase-4.1.1.tgz" integrity sha512-QZ1d4xoBHYUeuouhEq3lk3Uq7ldgyFXGBhg04+oRLnIz8o9T65Eh+8YdroUwn846zchkA9yDsDl5CVVaV2nqYw== lodash.sortby@^4.7.0: version "4.7.0" - resolved "https://registry.yarnpkg.com/lodash.sortby/-/lodash.sortby-4.7.0.tgz#edd14c824e2cc9c1e0b0a1b42bb5210516a42438" + resolved "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz" integrity sha512-HDWXG8isMntAyRF5vZ7xKuEvOhT4AhlRt/3czTSjvGUxjYCBVRQY48ViDHyfYz9VIoBkW4TMGQNapx+l3RUwdA== lodash.template@^4.4.0: version "4.5.0" - resolved "https://registry.yarnpkg.com/lodash.template/-/lodash.template-4.5.0.tgz#f976195cf3f347d0d5f52483569fe8031ccce8ab" + resolved "https://registry.npmjs.org/lodash.template/-/lodash.template-4.5.0.tgz" integrity sha512-84vYFxIkmidUiFxidA/KjjH9pAycqW+h980j7Fuz5qxRtO9pgB7MDFTdys1N7A5mcucRiDyEq4fusljItR1T/A== dependencies: lodash._reinterpolate "^3.0.0" @@ -17788,50 +18196,50 @@ lodash.template@^4.4.0: lodash.templatesettings@^4.0.0: version "4.2.0" - resolved "https://registry.yarnpkg.com/lodash.templatesettings/-/lodash.templatesettings-4.2.0.tgz#e481310f049d3cf6d47e912ad09313b154f0fb33" + resolved "https://registry.npmjs.org/lodash.templatesettings/-/lodash.templatesettings-4.2.0.tgz" integrity sha512-stgLz+i3Aa9mZgnjr/O+v9ruKZsPsndy7qPZOchbqk2cnTU1ZaldKK+v7m54WoKIyxiuMZTKT2H81F8BeAc3ZQ== dependencies: lodash._reinterpolate "^3.0.0" lodash.union@^4.6.0: version "4.6.0" - resolved "https://registry.yarnpkg.com/lodash.union/-/lodash.union-4.6.0.tgz#48bb5088409f16f1821666641c44dd1aaae3cd88" + resolved "https://registry.npmjs.org/lodash.union/-/lodash.union-4.6.0.tgz" integrity sha512-c4pB2CdGrGdjMKYLA+XiRDO7Y0PRQbm/Gzg8qMj+QH+pFVAoTp5sBpO0odL3FjoPCGjK96p6qsP+yQoiLoOBcw== lodash.values@^2.4.1: version "2.4.1" - resolved "https://registry.yarnpkg.com/lodash.values/-/lodash.values-2.4.1.tgz#abf514436b3cb705001627978cbcf30b1280eea4" + resolved "https://registry.npmjs.org/lodash.values/-/lodash.values-2.4.1.tgz" integrity sha512-fQwubKvj2Nox2gy6YnjFm8C1I6MIlzKUtBB+Pj7JGtloGqDDL5CPRr4DUUFWPwXWwAl2k3f4C3Aw8H1qAPB9ww== dependencies: lodash.keys "~2.4.1" lodash.values@^4.3.0: version "4.3.0" - resolved "https://registry.yarnpkg.com/lodash.values/-/lodash.values-4.3.0.tgz#a3a6c2b0ebecc5c2cba1c17e6e620fe81b53d347" + resolved "https://registry.npmjs.org/lodash.values/-/lodash.values-4.3.0.tgz" integrity sha512-r0RwvdCv8id9TUblb/O7rYPwVy6lerCbcawrfdo9iC/1t1wsNMJknO79WNBgwkH0hIeJ08jmvvESbFpNb4jH0Q== lodash@4.17.21, lodash@^4.16.4, lodash@^4.17.10, lodash@^4.17.11, lodash@^4.17.12, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.19, lodash@^4.17.20, lodash@^4.17.21, lodash@^4.17.5, lodash@^4.2.1, lodash@~4.17.19: version "4.17.21" - resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" + resolved "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz" integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== log-symbols@2.2.0, log-symbols@^2.2.0: version "2.2.0" - resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-2.2.0.tgz#5740e1c5d6f0dfda4ad9323b5332107ef6b4c40a" + resolved "https://registry.npmjs.org/log-symbols/-/log-symbols-2.2.0.tgz" integrity sha512-VeIAFslyIerEJLXHziedo2basKbMKtTw3vfn5IzG0XTjhAVEJyNHnL2p7vc+wBDSdQuUpNw3M2u6xb9QsAY5Eg== dependencies: chalk "^2.0.1" log-symbols@3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-3.0.0.tgz#f3a08516a5dea893336a7dee14d18a1cfdab77c4" + resolved "https://registry.npmjs.org/log-symbols/-/log-symbols-3.0.0.tgz" integrity sha512-dSkNGuI7iG3mfvDzUuYZyvk5dD9ocYCYzNU6CYDE6+Xqd+gwme6Z00NS3dUh8mq/73HaEtT7m6W+yUPtU6BZnQ== dependencies: chalk "^2.4.2" log-symbols@4.1.0, log-symbols@^4.1.0: version "4.1.0" - resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-4.1.0.tgz#3fbdbb95b4683ac9fc785111e792e558d4abd503" + resolved "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz" integrity sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg== dependencies: chalk "^4.1.0" @@ -17839,7 +18247,7 @@ log-symbols@4.1.0, log-symbols@^4.1.0: logform@^2.3.2, logform@^2.4.0: version "2.5.1" - resolved "https://registry.yarnpkg.com/logform/-/logform-2.5.1.tgz#44c77c34becd71b3a42a3970c77929e52c6ed48b" + resolved "https://registry.npmjs.org/logform/-/logform-2.5.1.tgz" integrity sha512-9FyqAm9o9NKKfiAKfZoYo9bGXXuwMkxQiQttkT4YjjVtQVIQtK6LmVtlxmCaFswo6N4AfEkHqZTV0taDtPotNg== dependencies: "@colors/colors" "1.5.0" @@ -17851,107 +18259,102 @@ logform@^2.3.2, logform@^2.4.0: loglevel@^1.6.1, loglevel@^1.6.8: version "1.8.1" - resolved "https://registry.yarnpkg.com/loglevel/-/loglevel-1.8.1.tgz#5c621f83d5b48c54ae93b6156353f555963377b4" + resolved "https://registry.npmjs.org/loglevel/-/loglevel-1.8.1.tgz" integrity sha512-tCRIJM51SHjAayKwC+QAg8hT8vg6z7GSgLJKGvzuPb1Wc+hLzqtuVLxp6/HzSPOozuK+8ErAhy7U/sVzw8Dgfg== long@^2.4.0: version "2.4.0" - resolved "https://registry.yarnpkg.com/long/-/long-2.4.0.tgz#9fa180bb1d9500cdc29c4156766a1995e1f4524f" + resolved "https://registry.npmjs.org/long/-/long-2.4.0.tgz" integrity sha512-ijUtjmO/n2A5PaosNG9ZGDsQ3vxJg7ZW8vsY8Kp0f2yIZWhSJvjmegV7t+9RPQKxKrvj8yKGehhS+po14hPLGQ== long@^4.0.0: version "4.0.0" - resolved "https://registry.yarnpkg.com/long/-/long-4.0.0.tgz#9a7b71cfb7d361a194ea555241c92f7468d5bf28" + resolved "https://registry.npmjs.org/long/-/long-4.0.0.tgz" integrity sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA== long@^5.0.0: version "5.2.3" - resolved "https://registry.yarnpkg.com/long/-/long-5.2.3.tgz#a3ba97f3877cf1d778eccbcb048525ebb77499e1" + resolved "https://registry.npmjs.org/long/-/long-5.2.3.tgz" integrity sha512-lcHwpNoggQTObv5apGNCTdJrO69eHOZMi4BNC+rTLER8iHAqGrUVeLh/irVIM7zTw2bOXA8T6uNPeujwOLg/2Q== long@~3: version "3.2.0" - resolved "https://registry.yarnpkg.com/long/-/long-3.2.0.tgz#d821b7138ca1cb581c172990ef14db200b5c474b" + resolved "https://registry.npmjs.org/long/-/long-3.2.0.tgz" integrity sha512-ZYvPPOMqUwPoDsbJaR10iQJYnMuZhRTvHYl62ErLIEX7RgFlziSBUUvrt3OVfc47QlHHpzPZYP17g3Fv7oeJkg== loose-envify@^1.0.0, loose-envify@^1.1.0: version "1.4.0" - resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.4.0.tgz#71ee51fa7be4caec1a63839f7e682d8132d30caf" + resolved "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz" integrity sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q== dependencies: js-tokens "^3.0.0 || ^4.0.0" loupe@^2.3.1: version "2.3.6" - resolved "https://registry.yarnpkg.com/loupe/-/loupe-2.3.6.tgz#76e4af498103c532d1ecc9be102036a21f787b53" + resolved "https://registry.npmjs.org/loupe/-/loupe-2.3.6.tgz" integrity sha512-RaPMZKiMy8/JruncMU5Bt6na1eftNoo++R4Y+N2FrxkDVTrGvcyzFTsaGif4QTeKESheMGegbhw6iUAq+5A8zA== dependencies: get-func-name "^2.0.0" lower-case-first@^1.0.0: version "1.0.2" - resolved "https://registry.yarnpkg.com/lower-case-first/-/lower-case-first-1.0.2.tgz#e5da7c26f29a7073be02d52bac9980e5922adfa1" + resolved "https://registry.npmjs.org/lower-case-first/-/lower-case-first-1.0.2.tgz" integrity sha512-UuxaYakO7XeONbKrZf5FEgkantPf5DUqDayzP5VXZrtRPdH86s4kN47I8B3TW10S4QKiE3ziHNf3kRN//okHjA== dependencies: lower-case "^1.1.2" lower-case@^1.1.0, lower-case@^1.1.1, lower-case@^1.1.2: version "1.1.4" - resolved "https://registry.yarnpkg.com/lower-case/-/lower-case-1.1.4.tgz#9a2cabd1b9e8e0ae993a4bf7d5875c39c42e8eac" + resolved "https://registry.npmjs.org/lower-case/-/lower-case-1.1.4.tgz" integrity sha512-2Fgx1Ycm599x+WGpIYwJOvsjmXFzTSc34IwDWALRA/8AopUKAVPwfJ+h5+f85BCp0PWmmJcWzEpxOpoXycMpdA== lowercase-keys@^1.0.0, lowercase-keys@^1.0.1: version "1.0.1" - resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-1.0.1.tgz#6f9e30b47084d971a7c820ff15a6c5167b74c26f" + resolved "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.1.tgz" integrity sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA== lowercase-keys@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-2.0.0.tgz#2603e78b7b4b0006cbca2fbcc8a3202558ac9479" + resolved "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz" integrity sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA== lowercase-keys@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-3.0.0.tgz#c5e7d442e37ead247ae9db117a9d0a467c89d4f2" + resolved "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-3.0.0.tgz" integrity sha512-ozCC6gdQ+glXOQsveKD0YsDy8DSQFjDTz4zyzEHNV5+JP5D62LmfDZ6o1cycFx9ouG940M5dE8C8CTewdj2YWQ== "lru-cache@7.10.1 - 7.13.1": version "7.13.1" - resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-7.13.1.tgz#267a81fbd0881327c46a81c5922606a2cfe336c4" + resolved "https://registry.npmjs.org/lru-cache/-/lru-cache-7.13.1.tgz" integrity sha512-CHqbAq7NFlW3RSnoWXLJBxCWaZVBrfa9UEHId2M3AW8iEBurbqduNexEUCGc3SHc6iCYXNJCDi903LajSVAEPQ== -lru-cache@^10.0.1: +lru-cache@^10.0.1, "lru-cache@^9.1.1 || ^10.0.0": version "10.0.1" - resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-10.0.1.tgz#0a3be479df549cca0e5d693ac402ff19537a6b7a" + resolved "https://registry.npmjs.org/lru-cache/-/lru-cache-10.0.1.tgz" integrity sha512-IJ4uwUTi2qCccrioU6g9g/5rvvVl13bsdczUUcqbciD9iLr095yj8DQKdObriEvuNSx325N1rV1O0sJFszx75g== lru-cache@^5.0.0, lru-cache@^5.1.1: version "5.1.1" - resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-5.1.1.tgz#1da27e6710271947695daf6848e847f01d84b920" + resolved "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz" integrity sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w== dependencies: yallist "^3.0.2" lru-cache@^6.0.0: version "6.0.0" - resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-6.0.0.tgz#6d6fe6570ebd96aaf90fcad1dafa3b2566db3a94" + resolved "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz" integrity sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA== dependencies: yallist "^4.0.0" lru-cache@^7.14.1, lru-cache@^7.4.4, lru-cache@^7.5.1, lru-cache@^7.7.1: version "7.18.3" - resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-7.18.3.tgz#f793896e0fd0e954a59dfdd82f0773808df6aa89" + resolved "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz" integrity sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA== -"lru-cache@^9.1.1 || ^10.0.0": - version "10.0.0" - resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-10.0.0.tgz#b9e2a6a72a129d81ab317202d93c7691df727e61" - integrity sha512-svTf/fzsKHffP42sujkO/Rjs37BCIsQVRCeNYIm9WN8rgT7ffoUnRtZCqU+6BqcSBdv8gwJeTz8knJpgACeQMw== - lru-cache@~4.0.0: version "4.0.2" - resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-4.0.2.tgz#1d17679c069cda5d040991a09dbc2c0db377e55e" + resolved "https://registry.npmjs.org/lru-cache/-/lru-cache-4.0.2.tgz" integrity sha512-uQw9OqphAGiZhkuPlpFGmdTU2tEuhxTourM/19qGJrxBPHAr/f8BT1a0i/lOclESnGatdJG/UCkP9kZB/Lh1iw== dependencies: pseudomap "^1.0.1" @@ -17959,7 +18362,7 @@ lru-cache@~4.0.0: lru-memoizer@^2.1.4: version "2.2.0" - resolved "https://registry.yarnpkg.com/lru-memoizer/-/lru-memoizer-2.2.0.tgz#b9d90c91637b4b1a423ef76f3156566691293df8" + resolved "https://registry.npmjs.org/lru-memoizer/-/lru-memoizer-2.2.0.tgz" integrity sha512-QfOZ6jNkxCcM/BkIPnFsqDhtrazLRsghi9mBwFAzol5GCvj4EkFT899Za3+QwikCg5sRX8JstioBDwOxEyzaNw== dependencies: lodash.clonedeep "^4.5.0" @@ -17967,14 +18370,14 @@ lru-memoizer@^2.1.4: lru-queue@^0.1.0: version "0.1.0" - resolved "https://registry.yarnpkg.com/lru-queue/-/lru-queue-0.1.0.tgz#2738bd9f0d3cf4f84490c5736c48699ac632cda3" + resolved "https://registry.npmjs.org/lru-queue/-/lru-queue-0.1.0.tgz" integrity sha512-BpdYkt9EvGl8OfWHDQPISVpcl5xZthb+XPsbELj5AQXxIC8IriDZIQYjBJPEm5rS420sjZ0TLEzRcq5KdBhYrQ== dependencies: es5-ext "~0.10.2" ltgt@2.2.1, ltgt@^2.1.2, ltgt@~2.2.0: version "2.2.1" - resolved "https://registry.yarnpkg.com/ltgt/-/ltgt-2.2.1.tgz#f35ca91c493f7b73da0e07495304f17b31f87ee5" + resolved "https://registry.npmjs.org/ltgt/-/ltgt-2.2.1.tgz" integrity sha512-AI2r85+4MquTw9ZYqabu4nMwy9Oftlfa/e/52t9IjtfG+mGBbTNdAoZ3RQKLHR6r0wQnwZnPIEh/Ya6XTWAKNA== lunr@^2.3.9: @@ -17982,21 +18385,21 @@ lunr@^2.3.9: resolved "https://registry.yarnpkg.com/lunr/-/lunr-2.3.9.tgz#18b123142832337dd6e964df1a5a7707b25d35e1" integrity sha512-zTU3DaZaF3Rt9rhN3uBMGQD3dD2/vFQqnvZCDv4dl5iOzq2IZQqTxu90r4E5J+nP70J3ilqVCrbho2eWaeW8Ow== -luxon@^3.2.1: - version "3.4.1" - resolved "https://registry.yarnpkg.com/luxon/-/luxon-3.4.1.tgz#9147374b2c539e7893f906c420e9b080b59c5457" - integrity sha512-2USspxOCXWGIKHwuQ9XElxPPYrDOJHDQ5DQ870CoD+CxJbBnRDIBCfhioUJJjct7BKOy80Ia8cVstIcIMb/0+Q== +luxon@~3.3.0: + version "3.3.0" + resolved "https://registry.npmjs.org/luxon/-/luxon-3.3.0.tgz" + integrity sha512-An0UCfG/rSiqtAIiBPO0Y9/zAnHUZxAMiCpTd5h2smgsj7GGmcenvrvww2cqNA8/4A5ZrD1gJpHN2mIHZQF+Mg== make-dir@^1.0.0: version "1.3.0" - resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-1.3.0.tgz#79c1033b80515bd6d24ec9933e860ca75ee27f0c" + resolved "https://registry.npmjs.org/make-dir/-/make-dir-1.3.0.tgz" integrity sha512-2w31R7SJtieJJnQtGc7RVL2StM2vGYVfqUOvUDxH6bC6aJTxPxTF0GnIgCyu7tjockiUWAYQRbxa7vKn34s5sQ== dependencies: pify "^3.0.0" make-dir@^2.0.0, make-dir@^2.1.0: version "2.1.0" - resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-2.1.0.tgz#5f0310e18b8be898cc07009295a30ae41e91e6f5" + resolved "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz" integrity sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA== dependencies: pify "^4.0.1" @@ -18004,19 +18407,19 @@ make-dir@^2.0.0, make-dir@^2.1.0: make-dir@^3.0.0, make-dir@^3.1.0: version "3.1.0" - resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-3.1.0.tgz#415e967046b3a7f1d185277d84aa58203726a13f" + resolved "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz" integrity sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw== dependencies: semver "^6.0.0" make-error@1.x, make-error@^1.1.1: version "1.3.6" - resolved "https://registry.yarnpkg.com/make-error/-/make-error-1.3.6.tgz#2eb2e37ea9b67c4891f684a1394799af484cf7a2" + resolved "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz" integrity sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw== -make-fetch-happen@^10.0.3, make-fetch-happen@^10.0.6: +make-fetch-happen@^10.0.6: version "10.2.1" - resolved "https://registry.yarnpkg.com/make-fetch-happen/-/make-fetch-happen-10.2.1.tgz#f5e3835c5e9817b617f2770870d9492d28678164" + resolved "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-10.2.1.tgz" integrity sha512-NgOPbRiaQM10DYXvN3/hhGVI2M5MtITFryzBGxHM5p4wnFxsVCbxkrBrDsk+EZ5OB4jEOT7AjDxtdF+KVEFT7w== dependencies: agentkeepalive "^4.2.1" @@ -18038,7 +18441,7 @@ make-fetch-happen@^10.0.3, make-fetch-happen@^10.0.6: make-fetch-happen@^11.0.3: version "11.1.1" - resolved "https://registry.yarnpkg.com/make-fetch-happen/-/make-fetch-happen-11.1.1.tgz#85ceb98079584a9523d4bf71d32996e7e208549f" + resolved "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-11.1.1.tgz" integrity sha512-rLWS7GCSTcEujjVBs2YqG7Y4643u8ucvCJeSRqiLYhesrDuzeuFIk37xREzAsfQaqzl8b9rNCE4m6J8tvX4Q8w== dependencies: agentkeepalive "^4.2.1" @@ -18059,7 +18462,7 @@ make-fetch-happen@^11.0.3: make-fetch-happen@^9.1.0: version "9.1.0" - resolved "https://registry.yarnpkg.com/make-fetch-happen/-/make-fetch-happen-9.1.0.tgz#53085a09e7971433e6765f7971bf63f4e05cb968" + resolved "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-9.1.0.tgz" integrity sha512-+zopwDy7DNknmwPQplem5lAZX/eCOzSvSNNcSKm5eVwTkOBzoktEfXsa9L23J/GIRhxRsaxzkPEhrJEpE2F4Gg== dependencies: agentkeepalive "^4.1.3" @@ -18081,31 +18484,31 @@ make-fetch-happen@^9.1.0: makeerror@1.0.12: version "1.0.12" - resolved "https://registry.yarnpkg.com/makeerror/-/makeerror-1.0.12.tgz#3e5dd2079a82e812e983cc6610c4a2cb0eaa801a" + resolved "https://registry.npmjs.org/makeerror/-/makeerror-1.0.12.tgz" integrity sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg== dependencies: tmpl "1.0.5" map-age-cleaner@^0.1.1: version "0.1.3" - resolved "https://registry.yarnpkg.com/map-age-cleaner/-/map-age-cleaner-0.1.3.tgz#7d583a7306434c055fe474b0f45078e6e1b4b92a" + resolved "https://registry.npmjs.org/map-age-cleaner/-/map-age-cleaner-0.1.3.tgz" integrity sha512-bJzx6nMoP6PDLPBFmg7+xRKeFZvFboMrGlxmNj9ClvX53KrmvM5bXFXEWjbz4cz1AFn+jWJ9z/DJSz7hrs0w3w== dependencies: p-defer "^1.0.0" map-cache@^0.2.0, map-cache@^0.2.2: version "0.2.2" - resolved "https://registry.yarnpkg.com/map-cache/-/map-cache-0.2.2.tgz#c32abd0bd6525d9b051645bb4f26ac5dc98a0dbf" + resolved "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz" integrity sha512-8y/eV9QQZCiyn1SprXSrCmqJN0yNRATe+PO8ztwqrvrbdRLA3eYJF0yaR0YayLWkMbsQSKWS9N2gPcGEc4UsZg== map-obj@^1.0.0: version "1.0.1" - resolved "https://registry.yarnpkg.com/map-obj/-/map-obj-1.0.1.tgz#d933ceb9205d82bdcf4886f6742bdc2b4dea146d" + resolved "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz" integrity sha512-7N/q3lyZ+LVCp7PzuxrJr4KMbBE2hW7BT7YNia330OFxIf4d3r5zVpicP2650l7CPN6RM9zOJRl3NGpqSiw3Eg== map-obj@^4.0.0: version "4.3.0" - resolved "https://registry.yarnpkg.com/map-obj/-/map-obj-4.3.0.tgz#9304f906e93faae70880da102a9f1df0ea8bb05a" + resolved "https://registry.npmjs.org/map-obj/-/map-obj-4.3.0.tgz" integrity sha512-hdN1wVrZbb29eBGiGjJbeP8JbKjq1urkHJ/LIP/NY48MZ1QVXUsQBV1G1zvYFHn1XE06cwjBsOI2K3Ulnj1YXQ== map-visit@^1.0.0: @@ -18117,12 +18520,12 @@ map-visit@^1.0.0: markdown-it-anchor@^8.4.1: version "8.6.7" - resolved "https://registry.yarnpkg.com/markdown-it-anchor/-/markdown-it-anchor-8.6.7.tgz#ee6926daf3ad1ed5e4e3968b1740eef1c6399634" + resolved "https://registry.npmjs.org/markdown-it-anchor/-/markdown-it-anchor-8.6.7.tgz" integrity sha512-FlCHFwNnutLgVTflOYHPW2pPcl2AACqVzExlkGQNsi4CJgqOHN7YTgDd4LuhgN1BFO3TS0vLAruV1Td6dwWPJA== markdown-it@^12.3.2: version "12.3.2" - resolved "https://registry.yarnpkg.com/markdown-it/-/markdown-it-12.3.2.tgz#bf92ac92283fe983fe4de8ff8abfb5ad72cd0c90" + resolved "https://registry.npmjs.org/markdown-it/-/markdown-it-12.3.2.tgz" integrity sha512-TchMembfxfNVpHkbtriWltGWc+m3xszaRD0CZup7GFFhzIgQqxIfn3eGj1yZpfuflzPvfkt611B2Q/Bsk1YnGg== dependencies: argparse "^2.0.1" @@ -18138,7 +18541,7 @@ markdown-table@^1.1.3: marked-terminal@^3.3.0: version "3.3.0" - resolved "https://registry.yarnpkg.com/marked-terminal/-/marked-terminal-3.3.0.tgz#25ce0c0299285998c7636beaefc87055341ba1bd" + resolved "https://registry.npmjs.org/marked-terminal/-/marked-terminal-3.3.0.tgz" integrity sha512-+IUQJ5VlZoAFsM5MHNT7g3RHSkA3eETqhRCdXv4niUMAKHQ7lb1yvAcuGPmm4soxhmtX13u4Li6ZToXtvSEH+A== dependencies: ansi-escapes "^3.1.0" @@ -18150,7 +18553,7 @@ marked-terminal@^3.3.0: marked-terminal@^5.1.1: version "5.2.0" - resolved "https://registry.yarnpkg.com/marked-terminal/-/marked-terminal-5.2.0.tgz#c5370ec2bae24fb2b34e147b731c94fa933559d3" + resolved "https://registry.npmjs.org/marked-terminal/-/marked-terminal-5.2.0.tgz" integrity sha512-Piv6yNwAQXGFjZSaiNljyNFw7jKDdGrw70FSbtxEyldLsyeuV5ZHm/1wW++kWbrOF1VPnUgYOhB2oLL0ZpnekA== dependencies: ansi-escapes "^6.2.0" @@ -18162,7 +18565,7 @@ marked-terminal@^5.1.1: marked@^0.7.0: version "0.7.0" - resolved "https://registry.yarnpkg.com/marked/-/marked-0.7.0.tgz#b64201f051d271b1edc10a04d1ae9b74bb8e5c0e" + resolved "https://registry.npmjs.org/marked/-/marked-0.7.0.tgz" integrity sha512-c+yYdCZJQrsRjTPhUx7VKkApw9bwDkNbHUKo1ovgcfDjb2kc8rLuRbIFyXL5WOEUwzSSKo3IXpph2K6DqB/KZg== marked@^1.1.1: @@ -18172,17 +18575,17 @@ marked@^1.1.1: marked@^4.0.10, marked@^4.0.14: version "4.3.0" - resolved "https://registry.yarnpkg.com/marked/-/marked-4.3.0.tgz#796362821b019f734054582038b116481b456cf3" + resolved "https://registry.npmjs.org/marked/-/marked-4.3.0.tgz" integrity sha512-PRsaiG84bK+AMvxziE/lCFss8juXjNaWzVbN5tXAm4XjeaS9NAHhop+PjQxz2A9h8Q4M/xGmzP8vqNwy6JeK0A== math-random@^1.0.1: version "1.0.4" - resolved "https://registry.yarnpkg.com/math-random/-/math-random-1.0.4.tgz#5dd6943c938548267016d4e34f057583080c514c" + resolved "https://registry.npmjs.org/math-random/-/math-random-1.0.4.tgz" integrity sha512-rUxjysqif/BZQH2yhd5Aaq7vXMSx9NdEsQcyA07uEzIvxgI7zIr33gGsh+RU0/XjmQpCW7RsVof1vlkvQVCK5A== mathjs@^5.0.4: version "5.10.3" - resolved "https://registry.yarnpkg.com/mathjs/-/mathjs-5.10.3.tgz#e998885f932ea8886db8b40f7f5b199f89b427f1" + resolved "https://registry.npmjs.org/mathjs/-/mathjs-5.10.3.tgz" integrity sha512-ySjg30BC3dYjQm73ILZtwcWzFJde0VU6otkXW/57IjjuYRa3Qaf0Kb8pydEuBZYtqW2OxreAtsricrAmOj3jIw== dependencies: complex.js "2.0.11" @@ -18196,12 +18599,12 @@ mathjs@^5.0.4: mcl-wasm@^0.7.1: version "0.7.9" - resolved "https://registry.yarnpkg.com/mcl-wasm/-/mcl-wasm-0.7.9.tgz#c1588ce90042a8700c3b60e40efb339fc07ab87f" + resolved "https://registry.npmjs.org/mcl-wasm/-/mcl-wasm-0.7.9.tgz" integrity sha512-iJIUcQWA88IJB/5L15GnJVnSQJmf/YaxxV6zRavv83HILHaJQb6y0iFyDMdDO0gN8X37tdxmAOrH/P8B6RB8sQ== md5.js@^1.3.4: version "1.3.5" - resolved "https://registry.yarnpkg.com/md5.js/-/md5.js-1.3.5.tgz#b5d07b8e3216e3e27cd728d72f70d1e6a342005f" + resolved "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz" integrity sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg== dependencies: hash-base "^3.0.0" @@ -18210,17 +18613,17 @@ md5.js@^1.3.4: mdurl@^1.0.1: version "1.0.1" - resolved "https://registry.yarnpkg.com/mdurl/-/mdurl-1.0.1.tgz#fe85b2ec75a59037f2adfec100fd6c601761152e" + resolved "https://registry.npmjs.org/mdurl/-/mdurl-1.0.1.tgz" integrity sha512-/sKlQJCBYVY9Ers9hqzKou4H6V5UWc/M59TH2dvkt+84itfnq7uFOMLpOiOS4ujvHP4etln18fmIxA5R5fll0g== media-typer@0.3.0: version "0.3.0" - resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748" + resolved "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz" integrity sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ== mem@^4.0.0: version "4.3.0" - resolved "https://registry.yarnpkg.com/mem/-/mem-4.3.0.tgz#461af497bc4ae09608cdb2e60eefb69bff744178" + resolved "https://registry.npmjs.org/mem/-/mem-4.3.0.tgz" integrity sha512-qX2bG48pTqYRVmDB37rn/6PT7LcR8T7oAX3bf99u1Tt1nzxYfxkgqDwUwolPlXweM0XzBOBFzSx4kfp7KP1s/w== dependencies: map-age-cleaner "^0.1.1" @@ -18229,7 +18632,7 @@ mem@^4.0.0: memdown@1.4.1, memdown@^1.0.0: version "1.4.1" - resolved "https://registry.yarnpkg.com/memdown/-/memdown-1.4.1.tgz#b4e4e192174664ffbae41361aa500f3119efe215" + resolved "https://registry.npmjs.org/memdown/-/memdown-1.4.1.tgz" integrity sha512-iVrGHZB8i4OQfM155xx8akvG9FIj+ht14DX5CQkCTG4EHzZ3d3sgckIf/Lm9ivZalEsFuEVnWv2B2WZvbrro2w== dependencies: abstract-leveldown "~2.7.1" @@ -18253,7 +18656,7 @@ memdown@^5.0.0: memdown@~3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/memdown/-/memdown-3.0.0.tgz#93aca055d743b20efc37492e9e399784f2958309" + resolved "https://registry.npmjs.org/memdown/-/memdown-3.0.0.tgz" integrity sha512-tbV02LfZMWLcHcq4tw++NuqMO+FZX8tNJEiD2aNRm48ZZusVg5N8NART+dmBkepJVye986oixErf7jfXboMGMA== dependencies: abstract-leveldown "~5.0.0" @@ -18265,7 +18668,7 @@ memdown@~3.0.0: memoizee@^0.4.14: version "0.4.15" - resolved "https://registry.yarnpkg.com/memoizee/-/memoizee-0.4.15.tgz#e6f3d2da863f318d02225391829a6c5956555b72" + resolved "https://registry.npmjs.org/memoizee/-/memoizee-0.4.15.tgz" integrity sha512-UBWmJpLZd5STPm7PMUlOw/TSy972M+z8gcyQ5veOnSDRREz/0bmpyTfKt3/51DhEBqCZQn1udM/5flcSPYhkdQ== dependencies: d "^1.0.1" @@ -18279,7 +18682,7 @@ memoizee@^0.4.14: memory-level@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/memory-level/-/memory-level-1.0.0.tgz#7323c3fd368f9af2f71c3cd76ba403a17ac41692" + resolved "https://registry.npmjs.org/memory-level/-/memory-level-1.0.0.tgz" integrity sha512-UXzwewuWeHBz5krr7EvehKcmLFNoXxGcvuYhC41tRnkrTbJohtS7kVn9akmgirtRygg+f7Yjsfi8Uu5SGSQ4Og== dependencies: abstract-level "^1.0.0" @@ -18288,12 +18691,12 @@ memory-level@^1.0.0: memorystream@^0.3.1: version "0.3.1" - resolved "https://registry.yarnpkg.com/memorystream/-/memorystream-0.3.1.tgz#86d7090b30ce455d63fbae12dda51a47ddcaf9b2" + resolved "https://registry.npmjs.org/memorystream/-/memorystream-0.3.1.tgz" integrity sha512-S3UwM3yj5mtUSEfP41UZmt/0SCoVYUcU1rkXv+BQ5Ig8ndL4sPoJNBUJERafdPb5jjHJGuMgytgKvKIf58XNBw== meow@^8.0.0: version "8.1.2" - resolved "https://registry.yarnpkg.com/meow/-/meow-8.1.2.tgz#bcbe45bda0ee1729d350c03cffc8395a36c4e897" + resolved "https://registry.npmjs.org/meow/-/meow-8.1.2.tgz" integrity sha512-r85E3NdZ+mpYk1C6RjPFEMSE+s1iZMuHtsHAqY0DT3jZczl0diWUZ8g6oU7h0M9cD2EL+PzaYghhCLzR0ZNn5Q== dependencies: "@types/minimist" "^1.2.0" @@ -18310,22 +18713,22 @@ meow@^8.0.0: merge-descriptors@1.0.1, merge-descriptors@~1.0.0: version "1.0.1" - resolved "https://registry.yarnpkg.com/merge-descriptors/-/merge-descriptors-1.0.1.tgz#b00aaa556dd8b44568150ec9d1b953f3f90cbb61" + resolved "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz" integrity sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w== merge-stream@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60" + resolved "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz" integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w== merge2@^1.2.3, merge2@^1.3.0, merge2@^1.4.1: version "1.4.1" - resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae" + resolved "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz" integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg== merkle-patricia-tree@4.0.0: version "4.0.0" - resolved "https://registry.yarnpkg.com/merkle-patricia-tree/-/merkle-patricia-tree-4.0.0.tgz#b95500a2a188a813eae18b175b34d9f439b92a62" + resolved "https://registry.npmjs.org/merkle-patricia-tree/-/merkle-patricia-tree-4.0.0.tgz" integrity sha512-OnI0iUvc5G66ZJgSB7PnuU6Pnk9QADMcBgua7YhNm8gbQJq5Hbiv9U9hQRe3mEM1KEfbqrdTC+x33bTewF+oCA== dependencies: "@types/levelup" "^3.1.1" @@ -18338,7 +18741,7 @@ merkle-patricia-tree@4.0.0: merkle-patricia-tree@^2.1.2, merkle-patricia-tree@^2.3.2: version "2.3.2" - resolved "https://registry.yarnpkg.com/merkle-patricia-tree/-/merkle-patricia-tree-2.3.2.tgz#982ca1b5a0fde00eed2f6aeed1f9152860b8208a" + resolved "https://registry.npmjs.org/merkle-patricia-tree/-/merkle-patricia-tree-2.3.2.tgz" integrity sha512-81PW5m8oz/pz3GvsAwbauj7Y00rqm81Tzad77tHBwU7pIAtN+TJnMSOJhxBKflSVYhptMMb9RskhqHqrSm1V+g== dependencies: async "^1.4.2" @@ -18352,12 +18755,12 @@ merkle-patricia-tree@^2.1.2, merkle-patricia-tree@^2.3.2: methods@^1.1.2, methods@~1.1.2: version "1.1.2" - resolved "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee" + resolved "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz" integrity sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w== micromatch@^2.3.11, micromatch@^2.3.7: version "2.3.11" - resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-2.3.11.tgz#86677c97d1720b363431d04d0d15293bd38c1565" + resolved "https://registry.npmjs.org/micromatch/-/micromatch-2.3.11.tgz" integrity sha512-LnU2XFEk9xxSJ6rfgAry/ty5qwUTyHYOBU0g4R6tIw5ljwgGIBmiKhRWLw5NpMOnrgUNcDJ4WMp8rl3sYVHLNA== dependencies: arr-diff "^2.0.0" @@ -18376,7 +18779,7 @@ micromatch@^2.3.11, micromatch@^2.3.7: micromatch@^3.1.10: version "3.1.10" - resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-3.1.10.tgz#70859bc95c9840952f359a068a3fc49f9ecfac23" + resolved "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz" integrity sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg== dependencies: arr-diff "^4.0.0" @@ -18395,7 +18798,7 @@ micromatch@^3.1.10: micromatch@^4.0.2, micromatch@^4.0.4: version "4.0.5" - resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.5.tgz#bc8999a7cbbf77cdc89f132f6e467051b49090c6" + resolved "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz" integrity sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA== dependencies: braces "^3.0.2" @@ -18419,7 +18822,7 @@ micromatch@jonschlinkert/micromatch#2.2.0: miller-rabin@^4.0.0: version "4.0.1" - resolved "https://registry.yarnpkg.com/miller-rabin/-/miller-rabin-4.0.1.tgz#f080351c865b0dc562a8462966daa53543c78a4d" + resolved "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.1.tgz" integrity sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA== dependencies: bn.js "^4.0.0" @@ -18427,135 +18830,135 @@ miller-rabin@^4.0.0: mime-db@1.52.0, "mime-db@>= 1.43.0 < 2": version "1.52.0" - resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.52.0.tgz#bbabcdc02859f4987301c856e3387ce5ec43bf70" + resolved "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz" integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg== mime-types@^2.0.8, mime-types@^2.1.12, mime-types@^2.1.16, mime-types@^2.1.35, mime-types@~2.1.19, mime-types@~2.1.24, mime-types@~2.1.34: version "2.1.35" - resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.35.tgz#381a871b62a734450660ae3deee44813f70d959a" + resolved "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz" integrity sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw== dependencies: mime-db "1.52.0" mime@1.6.0: version "1.6.0" - resolved "https://registry.yarnpkg.com/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1" + resolved "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz" integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg== mime@2.6.0, mime@^2.2.0, mime@^2.5.2: version "2.6.0" - resolved "https://registry.yarnpkg.com/mime/-/mime-2.6.0.tgz#a2a682a95cd4d0cb1d6257e28f83da7e35800367" + resolved "https://registry.npmjs.org/mime/-/mime-2.6.0.tgz" integrity sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg== mime@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/mime/-/mime-3.0.0.tgz#b374550dca3a0c18443b0c950a6a58f1931cf7a7" + resolved "https://registry.npmjs.org/mime/-/mime-3.0.0.tgz" integrity sha512-jSCU7/VB1loIWBZe14aEYHU/+1UMEHoaO7qxCOVJOw9GgH72VAWppxNcjU+x9a2k3GSIBXNKxXQFqRvvZ7vr3A== mimic-fn@^1.0.0: version "1.2.0" - resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-1.2.0.tgz#820c86a39334640e99516928bd03fca88057d022" + resolved "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz" integrity sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ== mimic-fn@^2.0.0, mimic-fn@^2.1.0: version "2.1.0" - resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" + resolved "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz" integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== mimic-fn@^3.0.0: version "3.1.0" - resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-3.1.0.tgz#65755145bbf3e36954b949c16450427451d5ca74" + resolved "https://registry.npmjs.org/mimic-fn/-/mimic-fn-3.1.0.tgz" integrity sha512-Ysbi9uYW9hFyfrThdDEQuykN4Ey6BuwPD2kpI5ES/nFTDn/98yxYNLZJcgUAKPT/mcrLLKaGzJR9YVxJrIdASQ== mimic-response@^1.0.0, mimic-response@^1.0.1: version "1.0.1" - resolved "https://registry.yarnpkg.com/mimic-response/-/mimic-response-1.0.1.tgz#4923538878eef42063cb8a3e3b0798781487ab1b" + resolved "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz" integrity sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ== mimic-response@^2.0.0: version "2.1.0" - resolved "https://registry.yarnpkg.com/mimic-response/-/mimic-response-2.1.0.tgz#d13763d35f613d09ec37ebb30bac0469c0ee8f43" + resolved "https://registry.npmjs.org/mimic-response/-/mimic-response-2.1.0.tgz" integrity sha512-wXqjST+SLt7R009ySCglWBCFpjUygmCIfD790/kVbiGmUgfYGuB14PiTd5DwVxSV4NcYHjzMkoj5LjQZwTQLEA== mimic-response@^3.1.0: version "3.1.0" - resolved "https://registry.yarnpkg.com/mimic-response/-/mimic-response-3.1.0.tgz#2d1d59af9c1b129815accc2c46a022a5ce1fa3c9" + resolved "https://registry.npmjs.org/mimic-response/-/mimic-response-3.1.0.tgz" integrity sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ== min-document@^2.19.0: version "2.19.0" - resolved "https://registry.yarnpkg.com/min-document/-/min-document-2.19.0.tgz#7bd282e3f5842ed295bb748cdd9f1ffa2c824685" + resolved "https://registry.npmjs.org/min-document/-/min-document-2.19.0.tgz" integrity sha512-9Wy1B3m3f66bPPmU5hdA4DR4PB2OfDU/+GS3yAB7IQozE3tqXaVv2zOjgla7MEGSRv95+ILmOuvhLkOK6wJtCQ== dependencies: dom-walk "^0.1.0" min-indent@^1.0.0: version "1.0.1" - resolved "https://registry.yarnpkg.com/min-indent/-/min-indent-1.0.1.tgz#a63f681673b30571fbe8bc25686ae746eefa9869" + resolved "https://registry.npmjs.org/min-indent/-/min-indent-1.0.1.tgz" integrity sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg== minimalistic-assert@^1.0.0, minimalistic-assert@^1.0.1: version "1.0.1" - resolved "https://registry.yarnpkg.com/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz#2e194de044626d4a10e7f7fbc00ce73e83e4d5c7" + resolved "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz" integrity sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A== minimalistic-crypto-utils@^1.0.1: version "1.0.1" - resolved "https://registry.yarnpkg.com/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz#f6c00c1c0b082246e5c4d99dfb8c7c083b2b582a" + resolved "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz" integrity sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg== -"minimatch@2 || 3", minimatch@^3.0.0, minimatch@^3.0.4, minimatch@^3.1.1: +"minimatch@2 || 3", minimatch@^3.0.0, minimatch@^3.0.4, minimatch@^3.1.1, minimatch@^3.1.2: version "3.1.2" - resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b" + resolved "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz" integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== dependencies: brace-expansion "^1.1.7" minimatch@3.0.4: version "3.0.4" - resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" + resolved "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz" integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA== dependencies: brace-expansion "^1.1.7" minimatch@3.0.5: version "3.0.5" - resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.5.tgz#4da8f1290ee0f0f8e83d60ca69f8f134068604a3" + resolved "https://registry.npmjs.org/minimatch/-/minimatch-3.0.5.tgz" integrity sha512-tUpxzX0VAzJHjLu0xUfFv1gwVp9ba3IOuRAVH2EGuRW8a5emA2FlACLqiT/lDVtS1W+TGNwqz3sWaNyLgDJWuw== dependencies: brace-expansion "^1.1.7" minimatch@5.0.1: version "5.0.1" - resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-5.0.1.tgz#fb9022f7528125187c92bd9e9b6366be1cf3415b" + resolved "https://registry.npmjs.org/minimatch/-/minimatch-5.0.1.tgz" integrity sha512-nLDxIFRyhDblz3qMuq+SoRZED4+miJ/G+tdDrjkkkRnjAsBexeGpgjLEQ0blJy7rHhR2b93rhQY4SvyWu9v03g== dependencies: brace-expansion "^2.0.1" minimatch@^5.0.1, minimatch@^5.1.0: version "5.1.6" - resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-5.1.6.tgz#1cfcb8cf5522ea69952cd2af95ae09477f122a96" + resolved "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz" integrity sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g== dependencies: brace-expansion "^2.0.1" minimatch@^6.1.6: version "6.2.0" - resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-6.2.0.tgz#2b70fd13294178c69c04dfc05aebdb97a4e79e42" + resolved "https://registry.npmjs.org/minimatch/-/minimatch-6.2.0.tgz" integrity sha512-sauLxniAmvnhhRjFwPNnJKaPFYyddAgbYdeUpHULtCT/GhzdCx/MDNy+Y40lBxTQUrMzDE8e0S43Z5uqfO0REg== dependencies: brace-expansion "^2.0.1" minimatch@^9.0.1: version "9.0.3" - resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-9.0.3.tgz#a6e00c3de44c3a542bfaae70abfc22420a6da825" + resolved "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz" integrity sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg== dependencies: brace-expansion "^2.0.1" minimist-options@4.1.0: version "4.1.0" - resolved "https://registry.yarnpkg.com/minimist-options/-/minimist-options-4.1.0.tgz#c0655713c53a8a2ebd77ffa247d342c40f010619" + resolved "https://registry.npmjs.org/minimist-options/-/minimist-options-4.1.0.tgz" integrity sha512-Q4r8ghd80yhO/0j1O3B2BjweX3fiHg9cdOwjJd2J76Q135c+NDxGCqdYKQ1SKBuFfgWbAUzBfvYjPUEeNgqN1A== dependencies: arrify "^1.0.1" @@ -18564,24 +18967,24 @@ minimist-options@4.1.0: minimist@0.0.8: version "0.0.8" - resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d" + resolved "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz" integrity sha512-miQKw5Hv4NS1Psg2517mV4e4dYNaO3++hjAvLOAzKqZ61rH8NS1SK+vbfBWZ5PY/Me/bEWhUwqMghEW5Fb9T7Q== minimist@^1.1.0, minimist@^1.2.0, minimist@^1.2.3, minimist@^1.2.5, minimist@^1.2.6, minimist@~1.2.7: version "1.2.8" - resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.8.tgz#c1a464e7693302e082a075cee0c057741ac4772c" + resolved "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz" integrity sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA== minipass-collect@^1.0.2: version "1.0.2" - resolved "https://registry.yarnpkg.com/minipass-collect/-/minipass-collect-1.0.2.tgz#22b813bf745dc6edba2576b940022ad6edc8c617" + resolved "https://registry.npmjs.org/minipass-collect/-/minipass-collect-1.0.2.tgz" integrity sha512-6T6lH0H8OG9kITm/Jm6tdooIbogG9e0tLgpY6mphXSm/A9u8Nq1ryBG+Qspiub9LjWlBPsPS3tWQ/Botq4FdxA== dependencies: minipass "^3.0.0" minipass-fetch@^1.3.2: version "1.4.1" - resolved "https://registry.yarnpkg.com/minipass-fetch/-/minipass-fetch-1.4.1.tgz#d75e0091daac1b0ffd7e9d41629faff7d0c1f1b6" + resolved "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-1.4.1.tgz" integrity sha512-CGH1eblLq26Y15+Azk7ey4xh0J/XfJfrCox5LDJiKqI2Q2iwOLOKrlmIaODiSQS8d18jalF6y2K2ePUm0CmShw== dependencies: minipass "^3.1.0" @@ -18592,7 +18995,7 @@ minipass-fetch@^1.3.2: minipass-fetch@^2.0.3: version "2.1.2" - resolved "https://registry.yarnpkg.com/minipass-fetch/-/minipass-fetch-2.1.2.tgz#95560b50c472d81a3bc76f20ede80eaed76d8add" + resolved "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-2.1.2.tgz" integrity sha512-LT49Zi2/WMROHYoqGgdlQIZh8mLPZmOrN2NdJjMXxYe4nkN6FUyuPuOAOedNJDrx0IRGg9+4guZewtp8hE6TxA== dependencies: minipass "^3.1.6" @@ -18602,11 +19005,11 @@ minipass-fetch@^2.0.3: encoding "^0.1.13" minipass-fetch@^3.0.0: - version "3.0.3" - resolved "https://registry.yarnpkg.com/minipass-fetch/-/minipass-fetch-3.0.3.tgz#d9df70085609864331b533c960fd4ffaa78d15ce" - integrity sha512-n5ITsTkDqYkYJZjcRWzZt9qnZKCT7nKCosJhHoj7S7zD+BP4jVbWs+odsniw5TA3E0sLomhTKOKjF86wf11PuQ== + version "3.0.4" + resolved "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-3.0.4.tgz" + integrity sha512-jHAqnA728uUpIaFm7NWsCnqKT6UqZz7GcI/bDpPATuwYyKwJwW0remxSCxUlKiEty+eopHGa3oc8WxgQ1FFJqg== dependencies: - minipass "^5.0.0" + minipass "^7.0.3" minipass-sized "^1.0.3" minizlib "^2.1.2" optionalDependencies: @@ -18614,14 +19017,14 @@ minipass-fetch@^3.0.0: minipass-flush@^1.0.5: version "1.0.5" - resolved "https://registry.yarnpkg.com/minipass-flush/-/minipass-flush-1.0.5.tgz#82e7135d7e89a50ffe64610a787953c4c4cbb373" + resolved "https://registry.npmjs.org/minipass-flush/-/minipass-flush-1.0.5.tgz" integrity sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw== dependencies: minipass "^3.0.0" minipass-json-stream@^1.0.1: version "1.0.1" - resolved "https://registry.yarnpkg.com/minipass-json-stream/-/minipass-json-stream-1.0.1.tgz#7edbb92588fbfc2ff1db2fc10397acb7b6b44aa7" + resolved "https://registry.npmjs.org/minipass-json-stream/-/minipass-json-stream-1.0.1.tgz" integrity sha512-ODqY18UZt/I8k+b7rl2AENgbWE8IDYam+undIJONvigAz8KR5GWblsFTEfQs0WODsjbSXWlm+JHEv8Gr6Tfdbg== dependencies: jsonparse "^1.3.1" @@ -18629,21 +19032,21 @@ minipass-json-stream@^1.0.1: minipass-pipeline@^1.2.2, minipass-pipeline@^1.2.4: version "1.2.4" - resolved "https://registry.yarnpkg.com/minipass-pipeline/-/minipass-pipeline-1.2.4.tgz#68472f79711c084657c067c5c6ad93cddea8214c" + resolved "https://registry.npmjs.org/minipass-pipeline/-/minipass-pipeline-1.2.4.tgz" integrity sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A== dependencies: minipass "^3.0.0" minipass-sized@^1.0.3: version "1.0.3" - resolved "https://registry.yarnpkg.com/minipass-sized/-/minipass-sized-1.0.3.tgz#70ee5a7c5052070afacfbc22977ea79def353b70" + resolved "https://registry.npmjs.org/minipass-sized/-/minipass-sized-1.0.3.tgz" integrity sha512-MbkQQ2CTiBMlA2Dm/5cY+9SWFEN8pzzOXi6rlM5Xxq0Yqbda5ZQy9sU75a673FE9ZK0Zsbr6Y5iP6u9nktfg2g== dependencies: minipass "^3.0.0" minipass@^2.6.0, minipass@^2.9.0: version "2.9.0" - resolved "https://registry.yarnpkg.com/minipass/-/minipass-2.9.0.tgz#e713762e7d3e32fed803115cf93e04bca9fcc9a6" + resolved "https://registry.npmjs.org/minipass/-/minipass-2.9.0.tgz" integrity sha512-wxfUjg9WebH+CUDX/CdbRlh5SmfZiy/hpkxaRI16Y9W56Pa75sWgd/rvFilSgrauD9NyFymP/+JFV3KwzIsJeg== dependencies: safe-buffer "^5.1.2" @@ -18651,36 +19054,31 @@ minipass@^2.6.0, minipass@^2.9.0: minipass@^3.0.0, minipass@^3.1.0, minipass@^3.1.1, minipass@^3.1.3, minipass@^3.1.6: version "3.3.6" - resolved "https://registry.yarnpkg.com/minipass/-/minipass-3.3.6.tgz#7bba384db3a1520d18c9c0e5251c3444e95dd94a" + resolved "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz" integrity sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw== dependencies: yallist "^4.0.0" -minipass@^4.0.0: - version "4.2.8" - resolved "https://registry.yarnpkg.com/minipass/-/minipass-4.2.8.tgz#f0010f64393ecfc1d1ccb5f582bcaf45f48e1a3a" - integrity sha512-fNzuVyifolSLFL4NzpF+wEF4qrgqaaKX0haXPQEdQ7NKAN+WecoKMHV09YcuL/DHxrUsYQOK3MiuDf7Ip2OXfQ== - minipass@^5.0.0: version "5.0.0" - resolved "https://registry.yarnpkg.com/minipass/-/minipass-5.0.0.tgz#3e9788ffb90b694a5d0ec94479a45b5d8738133d" + resolved "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz" integrity sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ== -"minipass@^5.0.0 || ^6.0.2 || ^7.0.0": - version "7.0.2" - resolved "https://registry.yarnpkg.com/minipass/-/minipass-7.0.2.tgz#58a82b7d81c7010da5bd4b2c0c85ac4b4ec5131e" - integrity sha512-eL79dXrE1q9dBbDCLg7xfn/vl7MS4F1gvJAgjJrQli/jbQWdUttuVawphqpffoIYfRdq78LHx6GP4bU/EQ2ATA== +"minipass@^5.0.0 || ^6.0.2 || ^7.0.0", minipass@^7.0.3: + version "7.0.3" + resolved "https://registry.npmjs.org/minipass/-/minipass-7.0.3.tgz" + integrity sha512-LhbbwCfz3vsb12j/WkWQPZfKTsgqIe1Nf/ti1pKjYESGLHIVjWU96G9/ljLH4F9mWNVhlQOm0VySdAWzf05dpg== minizlib@^1.3.3: version "1.3.3" - resolved "https://registry.yarnpkg.com/minizlib/-/minizlib-1.3.3.tgz#2290de96818a34c29551c8a8d301216bd65a861d" + resolved "https://registry.npmjs.org/minizlib/-/minizlib-1.3.3.tgz" integrity sha512-6ZYMOEnmVsdCeTJVE0W9ZD+pVnE8h9Hma/iOwwRDsdQoePpoX56/8B6z3P9VNwppJuBKNRuFDRNRqRWexT9G9Q== dependencies: minipass "^2.9.0" minizlib@^2.0.0, minizlib@^2.1.1, minizlib@^2.1.2: version "2.1.2" - resolved "https://registry.yarnpkg.com/minizlib/-/minizlib-2.1.2.tgz#e90d3466ba209b932451508a11ce3d3632145931" + resolved "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz" integrity sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg== dependencies: minipass "^3.0.0" @@ -18696,7 +19094,7 @@ mixin-deep@^1.2.0: mixin-object@^2.0.0: version "2.0.1" - resolved "https://registry.yarnpkg.com/mixin-object/-/mixin-object-2.0.1.tgz#4fb949441dab182540f1fe035ba60e1947a5e57e" + resolved "https://registry.npmjs.org/mixin-object/-/mixin-object-2.0.1.tgz" integrity sha512-ALGF1Jt9ouehcaXaHhn6t1yGWRqGaHkPFndtFVHfZXOvkIZ/yoGaSi0AHVTafb3ZBGg4dr/bDwnaEKqCXzchMA== dependencies: for-in "^0.1.3" @@ -18704,12 +19102,12 @@ mixin-object@^2.0.0: mkdirp-classic@^0.5.2, mkdirp-classic@^0.5.3: version "0.5.3" - resolved "https://registry.yarnpkg.com/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz#fa10c9115cc6d8865be221ba47ee9bed78601113" + resolved "https://registry.npmjs.org/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz" integrity sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A== mkdirp-infer-owner@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/mkdirp-infer-owner/-/mkdirp-infer-owner-2.0.0.tgz#55d3b368e7d89065c38f32fd38e638f0ab61d316" + resolved "https://registry.npmjs.org/mkdirp-infer-owner/-/mkdirp-infer-owner-2.0.0.tgz" integrity sha512-sdqtiFt3lkOaYvTXSRIUjkIdPTcxgv5+fgqYE/5qgwdw12cOrAuzzgzvVExIkH/ul1oeHN3bCLOWSG3XOqbKKw== dependencies: chownr "^2.0.0" @@ -18718,26 +19116,26 @@ mkdirp-infer-owner@^2.0.0: mkdirp-promise@^5.0.1: version "5.0.1" - resolved "https://registry.yarnpkg.com/mkdirp-promise/-/mkdirp-promise-5.0.1.tgz#e9b8f68e552c68a9c1713b84883f7a1dd039b8a1" + resolved "https://registry.npmjs.org/mkdirp-promise/-/mkdirp-promise-5.0.1.tgz" integrity sha512-Hepn5kb1lJPtVW84RFT40YG1OddBNTOVUZR2bzQUHc+Z03en8/3uX0+060JDhcEzyO08HmipsN9DcnFMxhIL9w== dependencies: mkdirp "*" mkdirp@*: version "3.0.0" - resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-3.0.0.tgz#758101231418bda24435c0888a91d9bd91f1372d" + resolved "https://registry.npmjs.org/mkdirp/-/mkdirp-3.0.0.tgz" integrity sha512-7+JDnNsyCvZXoUJdkMR0oUE2AmAdsNXGTmRbiOjYIwQ6q+bL6NwrozGQdPcmYaNcrhH37F50HHBUzoaBV6FITQ== mkdirp@0.5.1: version "0.5.1" - resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903" + resolved "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz" integrity sha512-SknJC52obPfGQPnjIkXbmA6+5H15E+fR+E4iR2oQ3zzCLbd7/ONua69R/Gw7AgkTLsRG+r5fzksYwWe1AgTyWA== dependencies: minimist "0.0.8" mkdirp@0.5.4: version "0.5.4" - resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.4.tgz#fd01504a6797ec5c9be81ff43d204961ed64a512" + resolved "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.4.tgz" integrity sha512-iG9AK/dJLtJ0XNgTuDbSyNS3zECqDlAhnQW4CsNxBG3LQJBbHmRX1egw39DmtOdCAqY+dKXV+sgPgilNWUKMVw== dependencies: minimist "^1.2.5" @@ -18751,19 +19149,19 @@ mkdirp@0.5.5: mkdirp@0.5.x, "mkdirp@>=0.5 0", mkdirp@^0.5.1, mkdirp@^0.5.5, mkdirp@^0.5.6, mkdirp@~0.5.1: version "0.5.6" - resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.6.tgz#7def03d2432dcae4ba1d611445c48396062255f6" + resolved "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz" integrity sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw== dependencies: minimist "^1.2.6" mkdirp@^1.0.3, mkdirp@^1.0.4: version "1.0.4" - resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-1.0.4.tgz#3eb5ed62622756d79a5f0e2a221dfebad75c2f7e" + resolved "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz" integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw== mocha@10.1.0: version "10.1.0" - resolved "https://registry.yarnpkg.com/mocha/-/mocha-10.1.0.tgz#dbf1114b7c3f9d0ca5de3133906aea3dfc89ef7a" + resolved "https://registry.npmjs.org/mocha/-/mocha-10.1.0.tgz" integrity sha512-vUF7IYxEoN7XhQpFLxQAEMtE4W91acW4B6En9l97MwE9stL1A9gusXfoHZCLVHDUJ/7V5+lbCM6yMqzo5vNymg== dependencies: ansi-colors "4.1.1" @@ -18790,7 +19188,7 @@ mocha@10.1.0: mocha@8.0.1: version "8.0.1" - resolved "https://registry.yarnpkg.com/mocha/-/mocha-8.0.1.tgz#fe01f0530362df271aa8f99510447bc38b88d8ed" + resolved "https://registry.npmjs.org/mocha/-/mocha-8.0.1.tgz" integrity sha512-vefaXfdYI8+Yo8nPZQQi0QO2o+5q9UIMX1jZ1XMmK3+4+CQjc7+B0hPdUeglXiTlr8IHMVRo63IhO9Mzt6fxOg== dependencies: ansi-colors "4.1.1" @@ -18821,7 +19219,7 @@ mocha@8.0.1: mocha@^10.2.0: version "10.2.0" - resolved "https://registry.yarnpkg.com/mocha/-/mocha-10.2.0.tgz#1fd4a7c32ba5ac372e03a17eef435bd00e5c68b8" + resolved "https://registry.npmjs.org/mocha/-/mocha-10.2.0.tgz" integrity sha512-IDY7fl/BecMwFHzoqF2sg/SHHANeBoMMXFlS9r0OXKDssYE1M5O43wUY/9BVPeIvfH2zmEbBfseqN9gBQZzXkg== dependencies: ansi-colors "4.1.1" @@ -18848,7 +19246,7 @@ mocha@^10.2.0: mocha@^5.2.0: version "5.2.0" - resolved "https://registry.yarnpkg.com/mocha/-/mocha-5.2.0.tgz#6d8ae508f59167f940f2b5b3c4a612ae50c90ae6" + resolved "https://registry.npmjs.org/mocha/-/mocha-5.2.0.tgz" integrity sha512-2IUgKDhc3J7Uug+FxMXuqIyYzH7gJjXECKe/w43IGgQHTSj3InJi+yAA7T24L9bQMRKiUEHxEX37G5JpVUGLcQ== dependencies: browser-stdout "1.3.1" @@ -18865,7 +19263,7 @@ mocha@^5.2.0: mocha@^6.2.2: version "6.2.3" - resolved "https://registry.yarnpkg.com/mocha/-/mocha-6.2.3.tgz#e648432181d8b99393410212664450a4c1e31912" + resolved "https://registry.npmjs.org/mocha/-/mocha-6.2.3.tgz" integrity sha512-0R/3FvjIGH3eEuG17ccFPk117XL2rWxatr81a57D+r/x2uTYZRbdZ4oVidEUMh2W2TJDa7MdAb12Lm2/qrKajg== dependencies: ansi-colors "3.2.3" @@ -18924,12 +19322,12 @@ mocha@^7.1.1: mock-fs@^4.1.0: version "4.14.0" - resolved "https://registry.yarnpkg.com/mock-fs/-/mock-fs-4.14.0.tgz#ce5124d2c601421255985e6e94da80a7357b1b18" + resolved "https://registry.npmjs.org/mock-fs/-/mock-fs-4.14.0.tgz" integrity sha512-qYvlv/exQ4+svI3UOvPUpLDF0OMX5euvUH0Ny4N5QyRyhNdgAgUrVH3iUINSzEPLvx0kbo/Bp28GJKIqvE7URw== mock-require@^3.0.3: version "3.0.3" - resolved "https://registry.yarnpkg.com/mock-require/-/mock-require-3.0.3.tgz#ccd544d9eae81dd576b3f219f69ec867318a1946" + resolved "https://registry.npmjs.org/mock-require/-/mock-require-3.0.3.tgz" integrity sha512-lLzfLHcyc10MKQnNUCv7dMcoY/2Qxd6wJfbqCcVk3LDb8An4hF6ohk5AztrvgKhJCqj36uyzi/p5se+tvyD+Wg== dependencies: get-caller-file "^1.0.2" @@ -18937,32 +19335,32 @@ mock-require@^3.0.3: modify-values@^1.0.0: version "1.0.1" - resolved "https://registry.yarnpkg.com/modify-values/-/modify-values-1.0.1.tgz#b3939fa605546474e3e3e3c63d64bd43b4ee6022" + resolved "https://registry.npmjs.org/modify-values/-/modify-values-1.0.1.tgz" integrity sha512-xV2bxeN6F7oYjZWTe/YPAy6MN2M+sL4u/Rlm2AHCIVGfo2p1yGmBHQ6vHehl4bRTZBdHu3TSkWdYgkwpYzAGSw== module-details-from-path@^1.0.3: version "1.0.3" - resolved "https://registry.yarnpkg.com/module-details-from-path/-/module-details-from-path-1.0.3.tgz#114c949673e2a8a35e9d35788527aa37b679da2b" + resolved "https://registry.npmjs.org/module-details-from-path/-/module-details-from-path-1.0.3.tgz" integrity sha512-ySViT69/76t8VhE1xXHK6Ch4NcDd26gx0MzKXLO+F7NOtnqH68d9zF94nT8ZWSxXh8ELOERsnJO/sWt1xZYw5A== module-error@^1.0.1, module-error@^1.0.2: version "1.0.2" - resolved "https://registry.yarnpkg.com/module-error/-/module-error-1.0.2.tgz#8d1a48897ca883f47a45816d4fb3e3c6ba404d86" + resolved "https://registry.npmjs.org/module-error/-/module-error-1.0.2.tgz" integrity sha512-0yuvsqSCv8LbaOKhnsQ/T5JhyFlCYLPXK3U2sgV10zoKQwzs/MyfuQUOZQ1V/6OCOJsK/TRgNVrPuPDqtdMFtA== module-not-found-error@^1.0.1: version "1.0.1" - resolved "https://registry.yarnpkg.com/module-not-found-error/-/module-not-found-error-1.0.1.tgz#cf8b4ff4f29640674d6cdd02b0e3bc523c2bbdc0" + resolved "https://registry.npmjs.org/module-not-found-error/-/module-not-found-error-1.0.1.tgz" integrity sha512-pEk4ECWQXV6z2zjhRZUongnLJNUeGQJ3w6OQ5ctGwD+i5o93qjRQUk2Rt6VdNeu3sEP0AB4LcfvdebpxBRVr4g== moment@^2.10.6, moment@^2.22.1, moment@^2.29.0: version "2.29.4" - resolved "https://registry.yarnpkg.com/moment/-/moment-2.29.4.tgz#3dbe052889fe7c1b2ed966fcb3a77328964ef108" + resolved "https://registry.npmjs.org/moment/-/moment-2.29.4.tgz" integrity sha512-5LC9SOxjSc2HF6vO2CyuTDNivEdoz2IvyJJGj6X8DJ0eFyfszE0QiEd+iXmBvUP3WHxSjFH/vIsA0EN00cgr8w== morgan@^1.10.0, morgan@^1.8.2: version "1.10.0" - resolved "https://registry.yarnpkg.com/morgan/-/morgan-1.10.0.tgz#091778abc1fc47cd3509824653dae1faab6b17d7" + resolved "https://registry.npmjs.org/morgan/-/morgan-1.10.0.tgz" integrity sha512-AbegBVI4sh6El+1gNwvD5YIck7nSA36weD7xvIxG4in80j/UoK8AEGaWnnz8v1GxonMCltmlNs5ZKbGvl9b1XQ== dependencies: basic-auth "~2.0.1" @@ -18973,39 +19371,39 @@ morgan@^1.10.0, morgan@^1.8.2: mri@^1.1.4: version "1.2.0" - resolved "https://registry.yarnpkg.com/mri/-/mri-1.2.0.tgz#6721480fec2a11a4889861115a48b6cbe7cc8f0b" + resolved "https://registry.npmjs.org/mri/-/mri-1.2.0.tgz" integrity sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA== ms@2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" + resolved "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz" integrity sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A== ms@2.1.1: version "2.1.1" - resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.1.tgz#30a5864eb3ebb0a66f2ebe6d727af06a09d86e0a" + resolved "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz" integrity sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg== ms@2.1.2: version "2.1.2" - resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" + resolved "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz" integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== ms@2.1.3, ms@^2.0.0, ms@^2.1.1: version "2.1.3" - resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" + resolved "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz" integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== msal@^1.0.2: version "1.4.17" - resolved "https://registry.yarnpkg.com/msal/-/msal-1.4.17.tgz#b78171c0471ede506eeaabc86343f8f4e2d01634" + resolved "https://registry.npmjs.org/msal/-/msal-1.4.17.tgz" integrity sha512-RjHwP2cCIWQ9iUIk1SziUMb9+jj5mC4OqG2w16E5yig8jySi/TwiFvKlwcjNrPsndph0HtgCtbENnk5julf3yQ== dependencies: tslib "^1.9.3" mssql@^6.3.1: version "6.4.1" - resolved "https://registry.yarnpkg.com/mssql/-/mssql-6.4.1.tgz#24fcde0a32349aa6e1ba2123119ab254e355f8bb" + resolved "https://registry.npmjs.org/mssql/-/mssql-6.4.1.tgz" integrity sha512-G1I7mM0gfxcH5TGSNoVmxq13Mve5YnQgRAlonqaMlHEjHjMn1g04bsrIQbVHFRdI6++dw/FGWlh8GoItJMoUDw== dependencies: debug "^4.3.3" @@ -19014,14 +19412,14 @@ mssql@^6.3.1: multi-progress@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/multi-progress/-/multi-progress-2.0.0.tgz#29ccb42cf24874b1c6384f03127ce5dff7b22f2c" + resolved "https://registry.npmjs.org/multi-progress/-/multi-progress-2.0.0.tgz" integrity sha512-ArGgS/Qib/X2FWfE6CVpic+Z0C9kQuhiK9HQtz5pcCfsXwMzoNnXP6FJlplNAMsJuoLtWA8bAoPV36ezT2IFGw== dependencies: progress "^1.1.8" multibase@^0.7.0: version "0.7.0" - resolved "https://registry.yarnpkg.com/multibase/-/multibase-0.7.0.tgz#1adfc1c50abe05eefeb5091ac0c2728d6b84581b" + resolved "https://registry.npmjs.org/multibase/-/multibase-0.7.0.tgz" integrity sha512-TW8q03O0f6PNFTQDvh3xxH03c8CjGaaYrjkl9UQPG6rz53TQzzxJVCIWVjzcbN/Q5Y53Zd0IBQBMVktVgNx4Fg== dependencies: base-x "^3.0.8" @@ -19029,7 +19427,7 @@ multibase@^0.7.0: multibase@~0.6.0: version "0.6.1" - resolved "https://registry.yarnpkg.com/multibase/-/multibase-0.6.1.tgz#b76df6298536cc17b9f6a6db53ec88f85f8cc12b" + resolved "https://registry.npmjs.org/multibase/-/multibase-0.6.1.tgz" integrity sha512-pFfAwyTjbbQgNc3G7D48JkJxWtoJoBMaR4xQUOuB8RnCgRqaYmWNFeJTTvrJ2w51bjLq2zTby6Rqj9TQ9elSUw== dependencies: base-x "^3.0.8" @@ -19037,14 +19435,14 @@ multibase@~0.6.0: multicodec@^0.5.5: version "0.5.7" - resolved "https://registry.yarnpkg.com/multicodec/-/multicodec-0.5.7.tgz#1fb3f9dd866a10a55d226e194abba2dcc1ee9ffd" + resolved "https://registry.npmjs.org/multicodec/-/multicodec-0.5.7.tgz" integrity sha512-PscoRxm3f+88fAtELwUnZxGDkduE2HD9Q6GHUOywQLjOGT/HAdhjLDYNZ1e7VR0s0TP0EwZ16LNUTFpoBGivOA== dependencies: varint "^5.0.0" multicodec@^1.0.0: version "1.0.4" - resolved "https://registry.yarnpkg.com/multicodec/-/multicodec-1.0.4.tgz#46ac064657c40380c28367c90304d8ed175a714f" + resolved "https://registry.npmjs.org/multicodec/-/multicodec-1.0.4.tgz" integrity sha512-NDd7FeS3QamVtbgfvu5h7fd1IlbaC4EQ0/pgU4zqE2vdHCmBGsUa0TiM8/TdSeG6BMPC92OOCf8F1ocE/Wkrrg== dependencies: buffer "^5.6.0" @@ -19052,7 +19450,7 @@ multicodec@^1.0.0: multihashes@^0.4.15, multihashes@~0.4.15: version "0.4.21" - resolved "https://registry.yarnpkg.com/multihashes/-/multihashes-0.4.21.tgz#dc02d525579f334a7909ade8a122dabb58ccfcb5" + resolved "https://registry.npmjs.org/multihashes/-/multihashes-0.4.21.tgz" integrity sha512-uVSvmeCWf36pU2nB4/1kzYZjsXD9vofZKpgudqkceYY5g2aZZXJ5r9lxuzoRLl1OAp28XljXsEJ/X/85ZsKmKw== dependencies: buffer "^5.5.0" @@ -19061,7 +19459,7 @@ multihashes@^0.4.15, multihashes@~0.4.15: multimatch@^4.0.0: version "4.0.0" - resolved "https://registry.yarnpkg.com/multimatch/-/multimatch-4.0.0.tgz#8c3c0f6e3e8449ada0af3dd29efb491a375191b3" + resolved "https://registry.npmjs.org/multimatch/-/multimatch-4.0.0.tgz" integrity sha512-lDmx79y1z6i7RNx0ZGCPq1bzJ6ZoDDKbvh7jxr9SJcWLkShMzXrHbYVpTdnhNM5MXpDUxCQ4DgqVttVXlBgiBQ== dependencies: "@types/minimatch" "^3.0.3" @@ -19072,7 +19470,7 @@ multimatch@^4.0.0: multimatch@^5.0.0: version "5.0.0" - resolved "https://registry.yarnpkg.com/multimatch/-/multimatch-5.0.0.tgz#932b800963cea7a31a033328fa1e0c3a1874dbe6" + resolved "https://registry.npmjs.org/multimatch/-/multimatch-5.0.0.tgz" integrity sha512-ypMKuglUrZUD99Tk2bUQ+xNQj43lPEfAeX2o9cTteAmShXy2VHDJpuwu1o0xqoKCt9jLVAvwyFKdLTPXKAfJyA== dependencies: "@types/minimatch" "^3.0.3" @@ -19083,17 +19481,17 @@ multimatch@^5.0.0: mute-stream@0.0.7: version "0.0.7" - resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.7.tgz#3075ce93bc21b8fab43e1bc4da7e8115ed1e7bab" + resolved "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.7.tgz" integrity sha512-r65nCZhrbXXb6dXOACihYApHw2Q6pV0M3V0PSxd74N0+D8nzAdEAITq2oAjA1jVnKI+tGvEBUpqiMh0+rW6zDQ== mute-stream@0.0.8, mute-stream@~0.0.4: version "0.0.8" - resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.8.tgz#1630c42b2251ff81e2a283de96a5497ea92e5e0d" + resolved "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz" integrity sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA== mv@~2: version "2.1.1" - resolved "https://registry.yarnpkg.com/mv/-/mv-2.1.1.tgz#ae6ce0d6f6d5e0a4f7d893798d03c1ea9559b6a2" + resolved "https://registry.npmjs.org/mv/-/mv-2.1.1.tgz" integrity sha512-at/ZndSy3xEGJ8i0ygALh8ru9qy7gWW1cmkaqBN29JmMlIvM//MEO9y1sk/avxuwnPcfhkejkLsuPxH81BrkSg== dependencies: mkdirp "~0.5.1" @@ -19102,7 +19500,7 @@ mv@~2: mysql2@^2.1.0: version "2.3.3" - resolved "https://registry.yarnpkg.com/mysql2/-/mysql2-2.3.3.tgz#944f3deca4b16629052ff8614fbf89d5552545a0" + resolved "https://registry.npmjs.org/mysql2/-/mysql2-2.3.3.tgz" integrity sha512-wxJUev6LgMSgACDkb/InIFxDprRa6T95+VEoR+xPvtngtccNH2dGjEB/fVZ8yg1gWv1510c9CvXuJHi5zUm0ZA== dependencies: denque "^2.0.1" @@ -19116,7 +19514,7 @@ mysql2@^2.1.0: mythxjs@^1.3.11: version "1.3.13" - resolved "https://registry.yarnpkg.com/mythxjs/-/mythxjs-1.3.13.tgz#b27ec4170307a3f3bd3943e7e8628c2eb070d09d" + resolved "https://registry.npmjs.org/mythxjs/-/mythxjs-1.3.13.tgz" integrity sha512-dqFLPjEVxj99WJFwLEA4ULNXL992bfth4W9t63V6B/LQbPxHqOvGShbSaHblt/giaMi7mPLcd4WIgk2lBpzFlw== dependencies: axios "^0.25.0" @@ -19125,7 +19523,7 @@ mythxjs@^1.3.11: mz@^2.7.0: version "2.7.0" - resolved "https://registry.yarnpkg.com/mz/-/mz-2.7.0.tgz#95008057a56cafadc2bc63dde7f9ff6955948e32" + resolved "https://registry.npmjs.org/mz/-/mz-2.7.0.tgz" integrity sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q== dependencies: any-promise "^1.0.0" @@ -19134,29 +19532,34 @@ mz@^2.7.0: named-placeholders@^1.1.2: version "1.1.3" - resolved "https://registry.yarnpkg.com/named-placeholders/-/named-placeholders-1.1.3.tgz#df595799a36654da55dda6152ba7a137ad1d9351" + resolved "https://registry.npmjs.org/named-placeholders/-/named-placeholders-1.1.3.tgz" integrity sha512-eLoBxg6wE/rZkJPhU/xRX1WTpkFEwDJEN96oxFrTsqBdbT5ec295Q+CoHrL9IT0DipqKhmGcaZmwOt8OON5x1w== dependencies: lru-cache "^7.14.1" -nan@^2.13.2, nan@^2.14.0, nan@^2.17.0, nan@^2.2.1: +nan@^2.13.2, nan@^2.14.0: version "2.17.0" - resolved "https://registry.yarnpkg.com/nan/-/nan-2.17.0.tgz#c0150a2368a182f033e9aa5195ec76ea41a199cb" + resolved "https://registry.npmjs.org/nan/-/nan-2.17.0.tgz" integrity sha512-2ZTgtl0nJsO0KQCjEpxcIr5D+Yv90plTitZt9JBfQvVJDS5seMl3FOvsh3+9CoYWXf/1l5OaZzzF6nDm4cagaQ== +nan@^2.17.0, nan@^2.2.1: + version "2.18.0" + resolved "https://registry.npmjs.org/nan/-/nan-2.18.0.tgz" + integrity sha512-W7tfG7vMOGtD30sHoZSSc/JVYiyDPEyQVso/Zz+/uQd0B0L46gtC+pHha5FFMRpil6fm/AoEcRWyOVi4+E/f8w== + nano-base32@^1.0.1: version "1.0.1" - resolved "https://registry.yarnpkg.com/nano-base32/-/nano-base32-1.0.1.tgz#ba548c879efcfb90da1c4d9e097db4a46c9255ef" + resolved "https://registry.npmjs.org/nano-base32/-/nano-base32-1.0.1.tgz" integrity sha512-sxEtoTqAPdjWVGv71Q17koMFGsOMSiHsIFEvzOM7cNp8BXB4AnEwmDabm5dorusJf/v1z7QxaZYxUorU9RKaAw== nano-json-stream-parser@^0.1.2: version "0.1.2" - resolved "https://registry.yarnpkg.com/nano-json-stream-parser/-/nano-json-stream-parser-0.1.2.tgz#0cc8f6d0e2b622b479c40d499c46d64b755c6f5f" + resolved "https://registry.npmjs.org/nano-json-stream-parser/-/nano-json-stream-parser-0.1.2.tgz" integrity sha512-9MqxMH/BSJC7dnLsEMPyfN5Dvoo49IsPFYMcHw3Bcfc2kN0lpHRBSzlMSVx4HGyJ7s9B31CyBTVehWJoQ8Ctew== nanoid@3.3.3: version "3.3.3" - resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.3.tgz#fd8e8b7aa761fe807dba2d1b98fb7241bb724a25" + resolved "https://registry.npmjs.org/nanoid/-/nanoid-3.3.3.tgz" integrity sha512-p1sjXuopFs0xg+fPASzQ28agW1oHD7xDsd9Xkf3T15H3c/cifrFHVwrh74PdoklAPi+i7MdRsE47vm2r6JoB+w== nanomatch@^1.2.9: @@ -19178,22 +19581,22 @@ nanomatch@^1.2.9: napi-build-utils@^1.0.1: version "1.0.2" - resolved "https://registry.yarnpkg.com/napi-build-utils/-/napi-build-utils-1.0.2.tgz#b1fddc0b2c46e380a0b7a76f984dd47c41a13806" + resolved "https://registry.npmjs.org/napi-build-utils/-/napi-build-utils-1.0.2.tgz" integrity sha512-ONmRUqK7zj7DWX0D9ADe03wbwOBZxNAfF20PlGfCWQcD3+/MakShIHrMqx9YwPTfxDdF1zLeL+RGZiR9kGMLdg== napi-macros@^2.2.2: version "2.2.2" - resolved "https://registry.yarnpkg.com/napi-macros/-/napi-macros-2.2.2.tgz#817fef20c3e0e40a963fbf7b37d1600bd0201044" + resolved "https://registry.npmjs.org/napi-macros/-/napi-macros-2.2.2.tgz" integrity sha512-hmEVtAGYzVQpCKdbQea4skABsdXW4RUh5t5mJ2zzqowJS2OyXZTU1KhDVFhx+NlWZ4ap9mqR9TcDO3LTTttd+g== napi-macros@~2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/napi-macros/-/napi-macros-2.0.0.tgz#2b6bae421e7b96eb687aa6c77a7858640670001b" + resolved "https://registry.npmjs.org/napi-macros/-/napi-macros-2.0.0.tgz" integrity sha512-A0xLykHtARfueITVDernsAWdtIMbOJgKgcluwENp3AlsKN/PloyO10HtmoqnFAQAcxPkgZN7wdfPfEd0zNGxbg== nash@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/nash/-/nash-3.0.0.tgz#bced3a0cb8434c2ad30d1a0d567cfc0c37128eea" + resolved "https://registry.npmjs.org/nash/-/nash-3.0.0.tgz" integrity sha512-M5SahEycXUmko3zOvsBkF6p94CWLhnyy9hfpQ9Qzp+rQkQ8D1OaTlfTl1OBWktq9Fak3oDXKU+ev7tiMaMu+1w== dependencies: async "^1.3.0" @@ -19203,116 +19606,107 @@ nash@^3.0.0: native-duplexpair@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/native-duplexpair/-/native-duplexpair-1.0.0.tgz#7899078e64bf3c8a3d732601b3d40ff05db58fa0" + resolved "https://registry.npmjs.org/native-duplexpair/-/native-duplexpair-1.0.0.tgz" integrity sha512-E7QQoM+3jvNtlmyfqRZ0/U75VFgCls+fSkbml2MpgWkWyz3ox8Y58gNhfuziuQYGNNQAbFZJQck55LHCnCK6CA== natural-compare@^1.4.0: version "1.4.0" - resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" + resolved "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz" integrity sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw== natural-orderby@^2.0.1: version "2.0.3" - resolved "https://registry.yarnpkg.com/natural-orderby/-/natural-orderby-2.0.3.tgz#8623bc518ba162f8ff1cdb8941d74deb0fdcc016" + resolved "https://registry.npmjs.org/natural-orderby/-/natural-orderby-2.0.3.tgz" integrity sha512-p7KTHxU0CUrcOXe62Zfrb5Z13nLvPhSWR/so3kFulUQU0sgUll2Z0LwpsLN351eOOD+hRGu/F1g+6xDfPeD++Q== ncp@~2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/ncp/-/ncp-2.0.0.tgz#195a21d6c46e361d2fb1281ba38b91e9df7bdbb3" + resolved "https://registry.npmjs.org/ncp/-/ncp-2.0.0.tgz" integrity sha512-zIdGUrPRFTUELUvr3Gmc7KZ2Sw/h1PiVM0Af/oHB6zgnV1ikqSfRk+TOufi79aHYCW3NiOXmr1BP5nWbzojLaA== -needle@^2.2.1: - version "2.9.1" - resolved "https://registry.yarnpkg.com/needle/-/needle-2.9.1.tgz#22d1dffbe3490c2b83e301f7709b6736cd8f2684" - integrity sha512-6R9fqJ5Zcmf+uYaFgdIHmLwNldn5HbK8L5ybn7Uz+ylX/rnOsSp1AHcvQSrCaFN+qNM1wpymHqD7mVasEOlHGQ== - dependencies: - debug "^3.2.6" - iconv-lite "^0.4.4" - sax "^1.2.4" - negotiator@0.6.3, negotiator@^0.6.2, negotiator@^0.6.3: version "0.6.3" - resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.3.tgz#58e323a72fedc0d6f9cd4d31fe49f51479590ccd" + resolved "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz" integrity sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg== -neo-async@^2.6.0: +neo-async@^2.6.0, neo-async@^2.6.2: version "2.6.2" resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.2.tgz#b4aafb93e3aeb2d8174ca53cf163ab7d7308305f" integrity sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw== neodoc@^2.0.2: version "2.0.2" - resolved "https://registry.yarnpkg.com/neodoc/-/neodoc-2.0.2.tgz#ad00b30b9758379dcd3cf752a0659bacbab2c4fb" + resolved "https://registry.npmjs.org/neodoc/-/neodoc-2.0.2.tgz" integrity sha512-NAppJ0YecKWdhSXFYCHbo6RutiX8vOt/Jo3l46mUg6pQlpJNaqc5cGxdrW2jITQm5JIYySbFVPDl3RrREXNyPw== dependencies: ansi-regex "^2.0.0" netmask@^2.0.2: version "2.0.2" - resolved "https://registry.yarnpkg.com/netmask/-/netmask-2.0.2.tgz#8b01a07644065d536383835823bc52004ebac5e7" + resolved "https://registry.npmjs.org/netmask/-/netmask-2.0.2.tgz" integrity sha512-dBpDMdxv9Irdq66304OLfEmQ9tbNRFnFTuZiLo+bD+r332bBmMJ8GBLXklIXXgxd3+v9+KUnZaUR5PJMa75Gsg== next-tick@1, next-tick@^1.1.0: version "1.1.0" - resolved "https://registry.yarnpkg.com/next-tick/-/next-tick-1.1.0.tgz#1836ee30ad56d67ef281b22bd199f709449b35eb" + resolved "https://registry.npmjs.org/next-tick/-/next-tick-1.1.0.tgz" integrity sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ== nice-try@^1.0.4: version "1.0.5" - resolved "https://registry.yarnpkg.com/nice-try/-/nice-try-1.0.5.tgz#a3378a7696ce7d223e88fc9b764bd7ef1089e366" + resolved "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz" integrity sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ== no-case@^2.2.0, no-case@^2.3.2: version "2.3.2" - resolved "https://registry.yarnpkg.com/no-case/-/no-case-2.3.2.tgz#60b813396be39b3f1288a4c1ed5d1e7d28b464ac" + resolved "https://registry.npmjs.org/no-case/-/no-case-2.3.2.tgz" integrity sha512-rmTZ9kz+f3rCvK2TD1Ue/oZlns7OGoIWP4fc3llxxRXlOkHKoWPPWJOfFYpITabSow43QJbRIoHQXtt10VldyQ== dependencies: lower-case "^1.1.1" node-abi@^2.21.0: version "2.30.1" - resolved "https://registry.yarnpkg.com/node-abi/-/node-abi-2.30.1.tgz#c437d4b1fe0e285aaf290d45b45d4d7afedac4cf" + resolved "https://registry.npmjs.org/node-abi/-/node-abi-2.30.1.tgz" integrity sha512-/2D0wOQPgaUWzVSVgRMx+trKJRC2UG4SUc4oCJoXx9Uxjtp0Vy3/kt7zcbxHF8+Z/pK3UloLWzBISg72brfy1w== dependencies: semver "^5.4.1" node-abi@^3.3.0: version "3.40.0" - resolved "https://registry.yarnpkg.com/node-abi/-/node-abi-3.40.0.tgz#51d8ed44534f70ff1357dfbc3a89717b1ceac1b4" + resolved "https://registry.npmjs.org/node-abi/-/node-abi-3.40.0.tgz" integrity sha512-zNy02qivjjRosswoYmPi8hIKJRr8MpQyeKT6qlcq/OnOgA3Rhoae+IYOqsM9V5+JnHWmxKnWOT2GxvtqdtOCXA== dependencies: semver "^7.3.5" node-abort-controller@^3.0.1: version "3.1.1" - resolved "https://registry.yarnpkg.com/node-abort-controller/-/node-abort-controller-3.1.1.tgz#a94377e964a9a37ac3976d848cb5c765833b8548" + resolved "https://registry.npmjs.org/node-abort-controller/-/node-abort-controller-3.1.1.tgz" integrity sha512-AGK2yQKIjRuqnc6VkX2Xj5d+QW8xZ87pa1UK6yA6ouUyuxfHuMP6umE5QK7UmTeOAymo+Zx1Fxiuw9rVx8taHQ== node-addon-api@^2.0.0: version "2.0.2" - resolved "https://registry.yarnpkg.com/node-addon-api/-/node-addon-api-2.0.2.tgz#432cfa82962ce494b132e9d72a15b29f71ff5d32" + resolved "https://registry.npmjs.org/node-addon-api/-/node-addon-api-2.0.2.tgz" integrity sha512-Ntyt4AIXyaLIuMHF6IOoTakB3K+RWxwtsHNRxllEoA6vPwP9o4866g6YWDLUdnucilZhmkxiHwHr11gAENw+QA== node-addon-api@^3.0.2, node-addon-api@^3.2.1: version "3.2.1" - resolved "https://registry.yarnpkg.com/node-addon-api/-/node-addon-api-3.2.1.tgz#81325e0a2117789c0128dab65e7e38f07ceba161" + resolved "https://registry.npmjs.org/node-addon-api/-/node-addon-api-3.2.1.tgz" integrity sha512-mmcei9JghVNDYydghQmeDX8KoAm0FAiYyIcUt/N4nhyAipB17pllZQDOJD2fotxABnt4Mdz+dKTO7eftLg4d0A== node-addon-api@^4.2.0, node-addon-api@^4.3.0: version "4.3.0" - resolved "https://registry.yarnpkg.com/node-addon-api/-/node-addon-api-4.3.0.tgz#52a1a0b475193e0928e98e0426a0d1254782b77f" + resolved "https://registry.npmjs.org/node-addon-api/-/node-addon-api-4.3.0.tgz" integrity sha512-73sE9+3UaLYYFmDsFZnqCInzPyh3MqIwZO9cw58yIqAZhONrrabrYyYe3TuIqtIiOuTXVhsGau8hcrhhwSsDIQ== node-emoji@^1.11.0, node-emoji@^1.4.1: version "1.11.0" - resolved "https://registry.yarnpkg.com/node-emoji/-/node-emoji-1.11.0.tgz#69a0150e6946e2f115e9d7ea4df7971e2628301c" + resolved "https://registry.npmjs.org/node-emoji/-/node-emoji-1.11.0.tgz" integrity sha512-wo2DpQkQp7Sjm2A0cq+sN7EHKO6Sl0ctXeBdFZrL9T9+UywORbufTcTZxom8YqpLQt/FqNMUkOpkZrJVYSKD3A== dependencies: lodash "^4.17.21" node-environment-flags@1.0.5: version "1.0.5" - resolved "https://registry.yarnpkg.com/node-environment-flags/-/node-environment-flags-1.0.5.tgz#fa930275f5bf5dae188d6192b24b4c8bbac3d76a" + resolved "https://registry.npmjs.org/node-environment-flags/-/node-environment-flags-1.0.5.tgz" integrity sha512-VNYPRfGfmZLx0Ye20jWzHUjyTW/c+6Wq+iLhDzUI4XmhrDd9l/FozXV3F2xOaXjvp0co0+v1YSR3CMP6g+VvLQ== dependencies: object.getownpropertydescriptors "^2.0.3" @@ -19328,69 +19722,76 @@ node-environment-flags@1.0.6: node-fetch@2.6.0: version "2.6.0" - resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.0.tgz#e633456386d4aa55863f676a7ab0daa8fdecb0fd" + resolved "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.0.tgz" integrity sha512-8dG4H5ujfvFiqDmVu9fQ5bOHUC15JMjMY/Zumv26oOvvVJjM67KF8koCWIabKQ1GJIa9r2mMZscBq/TbdOcmNA== node-fetch@2.6.1: version "2.6.1" - resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.1.tgz#045bd323631f76ed2e2b55573394416b639a0052" + resolved "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.1.tgz" integrity sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw== node-fetch@2.6.7: version "2.6.7" - resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.7.tgz#24de9fba827e3b4ae44dc8b20256a379160052ad" + resolved "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz" integrity sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ== dependencies: whatwg-url "^5.0.0" node-fetch@^1.0.1: version "1.7.3" - resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-1.7.3.tgz#980f6f72d85211a5347c6b2bc18c5b84c3eb47ef" + resolved "https://registry.npmjs.org/node-fetch/-/node-fetch-1.7.3.tgz" integrity sha512-NhZ4CsKx7cYm2vSrBAr2PvFOe6sWDf0UYLRqA6svUYg7+/TSfVAu49jYC4BvQ4Sms9SZgdqGBgroqfDhJdTyKQ== dependencies: encoding "^0.1.11" is-stream "^1.0.1" -node-fetch@^2.2.0, node-fetch@^2.3.0, node-fetch@^2.6.0, node-fetch@^2.6.1, node-fetch@^2.6.7, node-fetch@^2.6.9: +node-fetch@^2.2.0, node-fetch@^2.3.0, node-fetch@^2.6.12: + version "2.7.0" + resolved "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz" + integrity sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A== + dependencies: + whatwg-url "^5.0.0" + +node-fetch@^2.6.0, node-fetch@^2.6.1, node-fetch@^2.6.7, node-fetch@^2.6.9: version "2.6.9" - resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.9.tgz#7c7f744b5cc6eb5fd404e0c7a9fec630a55657e6" + resolved "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.9.tgz" integrity sha512-DJm/CJkZkRjKKj4Zi4BsKVZh3ValV5IR5s7LVZnW+6YMh0W1BfNA8XSs6DLMGYlId5F3KnA70uu2qepcR08Qqg== dependencies: whatwg-url "^5.0.0" node-forge@^0.10.0: version "0.10.0" - resolved "https://registry.yarnpkg.com/node-forge/-/node-forge-0.10.0.tgz#32dea2afb3e9926f02ee5ce8794902691a676bf3" + resolved "https://registry.npmjs.org/node-forge/-/node-forge-0.10.0.tgz" integrity sha512-PPmu8eEeG9saEUvI97fm4OYxXVB6bFvyNTyiUOBichBpFG8A1Ljw3bY62+5oOjDEMHRnd0Y7HQ+x7uzxOzC6JA== node-forge@^1.3.1: version "1.3.1" - resolved "https://registry.yarnpkg.com/node-forge/-/node-forge-1.3.1.tgz#be8da2af243b2417d5f646a770663a92b7e9ded3" + resolved "https://registry.npmjs.org/node-forge/-/node-forge-1.3.1.tgz" integrity sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA== node-gyp-build@4.3.0: version "4.3.0" - resolved "https://registry.yarnpkg.com/node-gyp-build/-/node-gyp-build-4.3.0.tgz#9f256b03e5826150be39c764bf51e993946d71a3" + resolved "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.3.0.tgz" integrity sha512-iWjXZvmboq0ja1pUGULQBexmxq8CV4xBhX7VDOTbL7ZR4FOowwY/VOtRxBN/yKxmdGoIp4j5ysNT4u3S2pDQ3Q== node-gyp-build@4.4.0: version "4.4.0" - resolved "https://registry.yarnpkg.com/node-gyp-build/-/node-gyp-build-4.4.0.tgz#42e99687ce87ddeaf3a10b99dc06abc11021f3f4" + resolved "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.4.0.tgz" integrity sha512-amJnQCcgtRVw9SvoebO3BKGESClrfXGCUTX9hSn1OuGQTQBOZmVd0Z0OlecpuRksKvbsUqALE8jls/ErClAPuQ== node-gyp-build@^4.2.0, node-gyp-build@^4.3.0: version "4.6.0" - resolved "https://registry.yarnpkg.com/node-gyp-build/-/node-gyp-build-4.6.0.tgz#0c52e4cbf54bbd28b709820ef7b6a3c2d6209055" + resolved "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.6.0.tgz" integrity sha512-NTZVKn9IylLwUzaKjkas1e4u2DLNcV4rdYagA4PWdPwW87Bi7z+BznyKSRwS/761tV/lzCGXplWsiaMjLqP2zQ== node-gyp-build@~4.1.0: version "4.1.1" - resolved "https://registry.yarnpkg.com/node-gyp-build/-/node-gyp-build-4.1.1.tgz#d7270b5d86717068d114cc57fff352f96d745feb" + resolved "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.1.1.tgz" integrity sha512-dSq1xmcPDKPZ2EED2S6zw/b9NKsqzXRE6dVr8TVQnI3FJOTteUMuqF3Qqs6LZg+mLGYJWqQzMbIjMtJqTv87nQ== node-gyp@8.x: version "8.4.1" - resolved "https://registry.yarnpkg.com/node-gyp/-/node-gyp-8.4.1.tgz#3d49308fc31f768180957d6b5746845fbd429937" + resolved "https://registry.npmjs.org/node-gyp/-/node-gyp-8.4.1.tgz" integrity sha512-olTJRgUtAb/hOXG0E93wZDs5YiJlgbXxTwQAFHyNlRsXQnYzUaF2aGgujZbw+hR8aF4ZG/rST57bWMWD16jr9w== dependencies: env-paths "^2.2.0" @@ -19404,25 +19805,9 @@ node-gyp@8.x: tar "^6.1.2" which "^2.0.2" -node-gyp@^9.0.0, node-gyp@^9.3.0: - version "9.3.1" - resolved "https://registry.yarnpkg.com/node-gyp/-/node-gyp-9.3.1.tgz#1e19f5f290afcc9c46973d68700cbd21a96192e4" - integrity sha512-4Q16ZCqq3g8awk6UplT7AuxQ35XN4R/yf/+wSAwcBUAjg7l58RTactWaP8fIDTi0FzI7YcVLujwExakZlfWkXg== - dependencies: - env-paths "^2.2.0" - glob "^7.1.4" - graceful-fs "^4.2.6" - make-fetch-happen "^10.0.3" - nopt "^6.0.0" - npmlog "^6.0.0" - rimraf "^3.0.2" - semver "^7.3.5" - tar "^6.1.2" - which "^2.0.2" - -node-gyp@^9.4.0: +node-gyp@^9.0.0, node-gyp@^9.4.0: version "9.4.0" - resolved "https://registry.yarnpkg.com/node-gyp/-/node-gyp-9.4.0.tgz#2a7a91c7cba4eccfd95e949369f27c9ba704f369" + resolved "https://registry.npmjs.org/node-gyp/-/node-gyp-9.4.0.tgz" integrity sha512-dMXsYP6gc9rRbejLXmTbVRYjAHw7ppswsKyMxuxJxxOHzluIO1rGp9TOQgjFJ+2MCqcOcQTOPB/8Xwhr+7s4Eg== dependencies: env-paths "^2.2.0" @@ -19439,7 +19824,7 @@ node-gyp@^9.4.0: node-hid@2.1.1: version "2.1.1" - resolved "https://registry.yarnpkg.com/node-hid/-/node-hid-2.1.1.tgz#f83c8aa0bb4e6758b5f7383542477da93f67359d" + resolved "https://registry.npmjs.org/node-hid/-/node-hid-2.1.1.tgz" integrity sha512-Skzhqow7hyLZU93eIPthM9yjot9lszg9xrKxESleEs05V2NcbUptZc5HFqzjOkSmL0sFlZFr3kmvaYebx06wrw== dependencies: bindings "^1.5.0" @@ -19448,7 +19833,7 @@ node-hid@2.1.1: node-hid@^2.1.2: version "2.1.2" - resolved "https://registry.yarnpkg.com/node-hid/-/node-hid-2.1.2.tgz#3145fa86ed4336a402a71e9f372c54213b88797c" + resolved "https://registry.npmjs.org/node-hid/-/node-hid-2.1.2.tgz" integrity sha512-qhCyQqrPpP93F/6Wc/xUR7L8mAJW0Z6R7HMQV8jCHHksAxNDe/4z4Un/H9CpLOT+5K39OPyt9tIQlavxWES3lg== dependencies: bindings "^1.5.0" @@ -19457,79 +19842,55 @@ node-hid@^2.1.2: node-int64@^0.4.0: version "0.4.0" - resolved "https://registry.yarnpkg.com/node-int64/-/node-int64-0.4.0.tgz#87a9065cdb355d3182d8f94ce11188b825c68a3b" + resolved "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz" integrity sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw== node-interval-tree@^1.3.3: version "1.3.3" - resolved "https://registry.yarnpkg.com/node-interval-tree/-/node-interval-tree-1.3.3.tgz#15ffb904cde08270214acace8dc7653e89ae32b7" + resolved "https://registry.npmjs.org/node-interval-tree/-/node-interval-tree-1.3.3.tgz" integrity sha512-K9vk96HdTK5fEipJwxSvIIqwTqr4e3HRJeJrNxBSeVMNSC/JWARRaX7etOLOuTmrRMeOI/K5TCJu3aWIwZiNTw== dependencies: shallowequal "^1.0.2" -node-pre-gyp@^0.14.0: - version "0.14.0" - resolved "https://registry.yarnpkg.com/node-pre-gyp/-/node-pre-gyp-0.14.0.tgz#9a0596533b877289bcad4e143982ca3d904ddc83" - integrity sha512-+CvDC7ZttU/sSt9rFjix/P05iS43qHCOOGzcr3Ry99bXG7VX953+vFyEuph/tfqoYu8dttBkE86JSKBO2OzcxA== - dependencies: - detect-libc "^1.0.2" - mkdirp "^0.5.1" - needle "^2.2.1" - nopt "^4.0.1" - npm-packlist "^1.1.6" - npmlog "^4.0.2" - rc "^1.2.7" - rimraf "^2.6.1" - semver "^5.3.0" - tar "^4.4.2" - node-releases@^2.0.8: version "2.0.10" - resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.10.tgz#c311ebae3b6a148c89b1813fd7c4d3c024ef537f" + resolved "https://registry.npmjs.org/node-releases/-/node-releases-2.0.10.tgz" integrity sha512-5GFldHPXVG/YZmFzJvKK2zDSzPKhEp0+ZR5SVaoSag9fsL5YgHbUHDfnG5494ISANDcK4KwPXAx2xqVEydmd7w== nofilter@^1.0.3, nofilter@^1.0.4: version "1.0.4" - resolved "https://registry.yarnpkg.com/nofilter/-/nofilter-1.0.4.tgz#78d6f4b6a613e7ced8b015cec534625f7667006e" + resolved "https://registry.npmjs.org/nofilter/-/nofilter-1.0.4.tgz" integrity sha512-N8lidFp+fCz+TD51+haYdbDGrcBWwuHX40F5+z0qkUjMJ5Tp+rdSuAkMJ9N9eoolDlEVTf6u5icM+cNKkKW2mA== noncharacters@^1.1.0: version "1.1.0" - resolved "https://registry.yarnpkg.com/noncharacters/-/noncharacters-1.1.0.tgz#af33df30fd50ed3c53cd202258f25ada90b540d2" + resolved "https://registry.npmjs.org/noncharacters/-/noncharacters-1.1.0.tgz" integrity sha512-U69XzMNq7UQXR27xT17tkQsHPsLc+5W9yfXvYzVCwFxghVf+7VttxFnCKFMxM/cHD+/QIyU009263hxIIurj4g== nopt@3.x: version "3.0.6" - resolved "https://registry.yarnpkg.com/nopt/-/nopt-3.0.6.tgz#c6465dbf08abcd4db359317f79ac68a646b28ff9" + resolved "https://registry.npmjs.org/nopt/-/nopt-3.0.6.tgz" integrity sha512-4GUt3kSEYmk4ITxzB/b9vaIDfUVWN/Ml1Fwl11IlnIG2iaJ9O6WXZ9SrYM9NLI8OCBieN2Y8SWC2oJV0RQ7qYg== dependencies: abbrev "1" -nopt@^4.0.1: - version "4.0.3" - resolved "https://registry.yarnpkg.com/nopt/-/nopt-4.0.3.tgz#a375cad9d02fd921278d954c2254d5aa57e15e48" - integrity sha512-CvaGwVMztSMJLOeXPrez7fyfObdZqNUK1cPAEzLHrTybIua9pMdmmPR5YwtfNftIOMv3DPUhFaxsZMNTQO20Kg== - dependencies: - abbrev "1" - osenv "^0.1.4" - nopt@^5.0.0: version "5.0.0" - resolved "https://registry.yarnpkg.com/nopt/-/nopt-5.0.0.tgz#530942bb58a512fccafe53fe210f13a25355dc88" + resolved "https://registry.npmjs.org/nopt/-/nopt-5.0.0.tgz" integrity sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ== dependencies: abbrev "1" nopt@^6.0.0: version "6.0.0" - resolved "https://registry.yarnpkg.com/nopt/-/nopt-6.0.0.tgz#245801d8ebf409c6df22ab9d95b65e1309cdb16d" + resolved "https://registry.npmjs.org/nopt/-/nopt-6.0.0.tgz" integrity sha512-ZwLpbTgdhuZUnZzjd7nb1ZV+4DoiC6/sfiVKok72ym/4Tlf+DFdlHYmT2JPmcNNWV6Pi3SDf1kT+A4r9RTuT9g== dependencies: abbrev "^1.0.0" normalize-package-data@^2.3.2, normalize-package-data@^2.5.0: version "2.5.0" - resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.5.0.tgz#e66db1838b200c1dfc233225d12cb36520e234a8" + resolved "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz" integrity sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA== dependencies: hosted-git-info "^2.1.4" @@ -19539,7 +19900,7 @@ normalize-package-data@^2.3.2, normalize-package-data@^2.5.0: normalize-package-data@^3.0.0: version "3.0.3" - resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-3.0.3.tgz#dbcc3e2da59509a0983422884cd172eefdfa525e" + resolved "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-3.0.3.tgz" integrity sha512-p2W1sgqij3zMMyRC067Dg16bfzVH+w7hyegmpIvZ4JNjqtGOVAIvLmjBx3yP7YTe9vKJgkoNOPjwQGogDoMXFA== dependencies: hosted-git-info "^4.0.1" @@ -19549,7 +19910,7 @@ normalize-package-data@^3.0.0: normalize-package-data@^4.0.0: version "4.0.1" - resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-4.0.1.tgz#b46b24e0616d06cadf9d5718b29b6d445a82a62c" + resolved "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-4.0.1.tgz" integrity sha512-EBk5QKKuocMJhB3BILuKhmaPjI8vNRSpIfO9woLC6NyHVkKKdVEdAO1mrT0ZfxNR1lKwCcTkuZfmGIFdizZ8Pg== dependencies: hosted-git-info "^5.0.0" @@ -19559,60 +19920,60 @@ normalize-package-data@^4.0.0: normalize-path@^2.0.1, normalize-path@^2.1.1: version "2.1.1" - resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-2.1.1.tgz#1ab28b556e198363a8c1a6f7e6fa20137fe6aed9" + resolved "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz" integrity sha512-3pKJwH184Xo/lnH6oyP1q2pMd7HcypqqmRs91/6/i2CGtWwIKGCkOOMTm/zXbgTEWHw1uNpNi/igc3ePOYHb6w== dependencies: remove-trailing-separator "^1.0.1" normalize-path@^3.0.0, normalize-path@~3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" + resolved "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz" integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== normalize-url@^4.1.0: version "4.5.1" - resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-4.5.1.tgz#0dd90cf1288ee1d1313b87081c9a5932ee48518a" + resolved "https://registry.npmjs.org/normalize-url/-/normalize-url-4.5.1.tgz" integrity sha512-9UZCFRHQdNrfTpGg8+1INIg93B6zE0aXMVFkw1WFwvO4SlZywU6aLg5Of0Ap/PgcbSw4LNxvMWXMeugwMCX0AA== normalize-url@^6.0.1: version "6.1.0" - resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-6.1.0.tgz#40d0885b535deffe3f3147bec877d05fe4c5668a" + resolved "https://registry.npmjs.org/normalize-url/-/normalize-url-6.1.0.tgz" integrity sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A== -npm-bundled@^1.0.1, npm-bundled@^1.1.1: +npm-bundled@^1.1.1: version "1.1.2" - resolved "https://registry.yarnpkg.com/npm-bundled/-/npm-bundled-1.1.2.tgz#944c78789bd739035b70baa2ca5cc32b8d860bc1" + resolved "https://registry.npmjs.org/npm-bundled/-/npm-bundled-1.1.2.tgz" integrity sha512-x5DHup0SuyQcmL3s7Rx/YQ8sbw/Hzg0rj48eN0dV7hf5cmQq5PXIeioroH3raV1QC1yh3uTYuMThvEQF3iKgGQ== dependencies: npm-normalize-package-bin "^1.0.1" npm-bundled@^2.0.0: version "2.0.1" - resolved "https://registry.yarnpkg.com/npm-bundled/-/npm-bundled-2.0.1.tgz#94113f7eb342cd7a67de1e789f896b04d2c600f4" + resolved "https://registry.npmjs.org/npm-bundled/-/npm-bundled-2.0.1.tgz" integrity sha512-gZLxXdjEzE/+mOstGDqR6b0EkhJ+kM6fxM6vUuckuctuVPh80Q6pw/rSZj9s4Gex9GxWtIicO1pc8DB9KZWudw== dependencies: npm-normalize-package-bin "^2.0.0" npm-install-checks@^5.0.0: version "5.0.0" - resolved "https://registry.yarnpkg.com/npm-install-checks/-/npm-install-checks-5.0.0.tgz#5ff27d209a4e3542b8ac6b0c1db6063506248234" + resolved "https://registry.npmjs.org/npm-install-checks/-/npm-install-checks-5.0.0.tgz" integrity sha512-65lUsMI8ztHCxFz5ckCEC44DRvEGdZX5usQFriauxHEwt7upv1FKaQEmAtU0YnOAdwuNWCmk64xYiQABNrEyLA== dependencies: semver "^7.1.1" npm-normalize-package-bin@^1.0.1: version "1.0.1" - resolved "https://registry.yarnpkg.com/npm-normalize-package-bin/-/npm-normalize-package-bin-1.0.1.tgz#6e79a41f23fd235c0623218228da7d9c23b8f6e2" + resolved "https://registry.npmjs.org/npm-normalize-package-bin/-/npm-normalize-package-bin-1.0.1.tgz" integrity sha512-EPfafl6JL5/rU+ot6P3gRSCpPDW5VmIzX959Ob1+ySFUuuYHWHekXpwdUZcKP5C+DS4GEtdJluwBjnsNDl+fSA== npm-normalize-package-bin@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/npm-normalize-package-bin/-/npm-normalize-package-bin-2.0.0.tgz#9447a1adaaf89d8ad0abe24c6c84ad614a675fff" + resolved "https://registry.npmjs.org/npm-normalize-package-bin/-/npm-normalize-package-bin-2.0.0.tgz" integrity sha512-awzfKUO7v0FscrSpRoogyNm0sajikhBWpU0QMrW09AMi9n1PoKU6WaIqUzuJSQnpciZZmJ/jMZ2Egfmb/9LiWQ== npm-package-arg@8.1.1: version "8.1.1" - resolved "https://registry.yarnpkg.com/npm-package-arg/-/npm-package-arg-8.1.1.tgz#00ebf16ac395c63318e67ce66780a06db6df1b04" + resolved "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-8.1.1.tgz" integrity sha512-CsP95FhWQDwNqiYS+Q0mZ7FAEDytDZAkNxQqea6IaAFJTAY9Lhhqyl0irU/6PMc7BGfUmnsbHcqxJD7XuVM/rg== dependencies: hosted-git-info "^3.0.6" @@ -19621,7 +19982,7 @@ npm-package-arg@8.1.1: npm-package-arg@^9.0.0, npm-package-arg@^9.0.1: version "9.1.2" - resolved "https://registry.yarnpkg.com/npm-package-arg/-/npm-package-arg-9.1.2.tgz#fc8acecb00235f42270dda446f36926ddd9ac2bc" + resolved "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-9.1.2.tgz" integrity sha512-pzd9rLEx4TfNJkovvlBSLGhq31gGu2QDexFPWT19yCDh0JgnRhlBLNo5759N0AJmBk+kQ9Y/hXoLnlgFD+ukmg== dependencies: hosted-git-info "^5.0.0" @@ -19629,18 +19990,9 @@ npm-package-arg@^9.0.0, npm-package-arg@^9.0.1: semver "^7.3.5" validate-npm-package-name "^4.0.0" -npm-packlist@^1.1.6: - version "1.4.8" - resolved "https://registry.yarnpkg.com/npm-packlist/-/npm-packlist-1.4.8.tgz#56ee6cc135b9f98ad3d51c1c95da22bbb9b2ef3e" - integrity sha512-5+AZgwru5IevF5ZdnFglB5wNlHG1AOOuw28WhUq8/8emhBmLv6jX5by4WJCh7lW0uSYZYS6DXqIsyZVIXRZU9A== - dependencies: - ignore-walk "^3.0.1" - npm-bundled "^1.0.1" - npm-normalize-package-bin "^1.0.1" - npm-packlist@^5.1.0, npm-packlist@^5.1.1: version "5.1.3" - resolved "https://registry.yarnpkg.com/npm-packlist/-/npm-packlist-5.1.3.tgz#69d253e6fd664b9058b85005905012e00e69274b" + resolved "https://registry.npmjs.org/npm-packlist/-/npm-packlist-5.1.3.tgz" integrity sha512-263/0NGrn32YFYi4J533qzrQ/krmmrWwhKkzwTuM4f/07ug51odoaNjUexxO4vxlzURHcmYMH1QjvHjsNDKLVg== dependencies: glob "^8.0.1" @@ -19650,7 +20002,7 @@ npm-packlist@^5.1.0, npm-packlist@^5.1.1: npm-pick-manifest@^7.0.0: version "7.0.2" - resolved "https://registry.yarnpkg.com/npm-pick-manifest/-/npm-pick-manifest-7.0.2.tgz#1d372b4e7ea7c6712316c0e99388a73ed3496e84" + resolved "https://registry.npmjs.org/npm-pick-manifest/-/npm-pick-manifest-7.0.2.tgz" integrity sha512-gk37SyRmlIjvTfcYl6RzDbSmS9Y4TOBXfsPnoYqTHARNgWbyDiCSMLUpmALDj4jjcTZpURiEfsSHJj9k7EV4Rw== dependencies: npm-install-checks "^5.0.0" @@ -19660,7 +20012,7 @@ npm-pick-manifest@^7.0.0: npm-registry-fetch@^13.0.0, npm-registry-fetch@^13.0.1, npm-registry-fetch@^13.3.0: version "13.3.1" - resolved "https://registry.yarnpkg.com/npm-registry-fetch/-/npm-registry-fetch-13.3.1.tgz#bb078b5fa6c52774116ae501ba1af2a33166af7e" + resolved "https://registry.npmjs.org/npm-registry-fetch/-/npm-registry-fetch-13.3.1.tgz" integrity sha512-eukJPi++DKRTjSBRcDZSDDsGqRK3ehbxfFUcgaRd0Yp6kRwOwh2WVn0r+8rMB4nnuzvAk6rQVzl6K5CkYOmnvw== dependencies: make-fetch-happen "^10.0.6" @@ -19673,28 +20025,28 @@ npm-registry-fetch@^13.0.0, npm-registry-fetch@^13.0.1, npm-registry-fetch@^13.3 npm-run-path@^2.0.0: version "2.0.2" - resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-2.0.2.tgz#35a9232dfa35d7067b4cb2ddf2357b1871536c5f" + resolved "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz" integrity sha512-lJxZYlT4DW/bRUtFh1MQIWqmLwQfAxnqWG4HhEdjMlkrJYnJn0Jrr2u3mgxqaWsdiBc76TYkTG/mhrnYTuzfHw== dependencies: path-key "^2.0.0" npm-run-path@^3.0.0: version "3.1.0" - resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-3.1.0.tgz#7f91be317f6a466efed3c9f2980ad8a4ee8b0fa5" + resolved "https://registry.npmjs.org/npm-run-path/-/npm-run-path-3.1.0.tgz" integrity sha512-Dbl4A/VfiVGLgQv29URL9xshU8XDY1GeLy+fsaZ1AA8JDSfjvr5P5+pzRbWqRSBxk6/DW7MIh8lTM/PaGnP2kg== dependencies: path-key "^3.0.0" npm-run-path@^4.0.1: version "4.0.1" - resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-4.0.1.tgz#b7ecd1e5ed53da8e37a55e1c2269e0b97ed748ea" + resolved "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz" integrity sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw== dependencies: path-key "^3.0.0" -npmlog@^4.0.1, npmlog@^4.0.2: +npmlog@^4.0.1: version "4.1.2" - resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-4.1.2.tgz#08a7f2a8bf734604779a9efa4ad5cc717abb954b" + resolved "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz" integrity sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg== dependencies: are-we-there-yet "~1.1.2" @@ -19704,7 +20056,7 @@ npmlog@^4.0.1, npmlog@^4.0.2: npmlog@^5.0.1: version "5.0.1" - resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-5.0.1.tgz#f06678e80e29419ad67ab964e0fa69959c1eb8b0" + resolved "https://registry.npmjs.org/npmlog/-/npmlog-5.0.1.tgz" integrity sha512-AqZtDUWOMKs1G/8lwylVjrdYgqA4d9nu8hc+0gzRxlDb1I10+FHBGMXs6aiQHFdCUUlqH99MUMuLfzWDNDtfxw== dependencies: are-we-there-yet "^2.0.0" @@ -19714,7 +20066,7 @@ npmlog@^5.0.1: npmlog@^6.0.0, npmlog@^6.0.2: version "6.0.2" - resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-6.0.2.tgz#c8166017a42f2dea92d6453168dd865186a70830" + resolved "https://registry.npmjs.org/npmlog/-/npmlog-6.0.2.tgz" integrity sha512-/vBvz5Jfr9dT/aFWd0FIRf+T/Q2WBsLENygUaFUqstqsycmZAP/t5BvFJTK0viFmSUxiUKTUplWy5vt+rvKIxg== dependencies: are-we-there-yet "^3.0.0" @@ -19724,19 +20076,19 @@ npmlog@^6.0.0, npmlog@^6.0.2: nth-check@^2.0.1: version "2.1.1" - resolved "https://registry.yarnpkg.com/nth-check/-/nth-check-2.1.1.tgz#c9eab428effce36cd6b92c924bdb000ef1f1ed1d" + resolved "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz" integrity sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w== dependencies: boolbase "^1.0.0" number-is-nan@^1.0.0: version "1.0.1" - resolved "https://registry.yarnpkg.com/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d" + resolved "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz" integrity sha512-4jbtZXNAsfZbAHiiqjLPBiCl16dES1zI4Hpzzxw61Tk+loF+sBDBKx1ICKKKwIqQ7M0mFn1TmkN7euSncWgHiQ== number-to-bn@1.7.0: version "1.7.0" - resolved "https://registry.yarnpkg.com/number-to-bn/-/number-to-bn-1.7.0.tgz#bb3623592f7e5f9e0030b1977bd41a0c53fe1ea0" + resolved "https://registry.npmjs.org/number-to-bn/-/number-to-bn-1.7.0.tgz" integrity sha512-wsJ9gfSz1/s4ZsJN01lyonwuxA1tml6X1yBDnfpMglypcBRFZZkus26EdPSlqS5GJfYddVZa22p3VNb3z5m5Ig== dependencies: bn.js "4.11.6" @@ -19744,24 +20096,24 @@ number-to-bn@1.7.0: numeral@^2.0.6: version "2.0.6" - resolved "https://registry.yarnpkg.com/numeral/-/numeral-2.0.6.tgz#4ad080936d443c2561aed9f2197efffe25f4e506" + resolved "https://registry.npmjs.org/numeral/-/numeral-2.0.6.tgz" integrity sha512-qaKRmtYPZ5qdw4jWJD6bxEf1FJEqllJrwxCLIm0sQU/A7v2/czigzOb+C2uSiFsa9lBUzeH7M1oK+Q+OLxL3kA== numeric@^1.2.6: version "1.2.6" - resolved "https://registry.yarnpkg.com/numeric/-/numeric-1.2.6.tgz#765b02bef97988fcf880d4eb3f36b80fa31335aa" + resolved "https://registry.npmjs.org/numeric/-/numeric-1.2.6.tgz" integrity sha512-avBiDAP8siMa7AfJgYyuxw1oyII4z2sswS23+O+ZfV28KrtNzy0wxUFwi4f3RyM4eeeXNs1CThxR7pb5QQcMiw== -nx@15.9.2, "nx@>=14.8.1 < 16": - version "15.9.2" - resolved "https://registry.yarnpkg.com/nx/-/nx-15.9.2.tgz#d7ace1e5ae64a47f1b553dc5da08dbdd858bde96" - integrity sha512-wtcs+wsuplSckvgk+bV+/XuGlo+sVWzSG0RpgWBjQYeqA3QsVFEAPVY66Z5cSoukDbTV77ddcAjEw+Rz8oOR1A== +nx@15.9.6, "nx@>=14.8.1 < 16": + version "15.9.6" + resolved "https://registry.npmjs.org/nx/-/nx-15.9.6.tgz" + integrity sha512-lUICyOgcPTfGYNZpjpQP7ug669IomfssTzz68r+j83SpYKc6UuZrQMqazYenTFPJzEvG5FKGXOfFyONoLe36zQ== dependencies: - "@nrwl/cli" "15.9.2" - "@nrwl/tao" "15.9.2" + "@nrwl/cli" "15.9.6" + "@nrwl/tao" "15.9.6" "@parcel/watcher" "2.0.4" "@yarnpkg/lockfile" "^1.1.0" - "@yarnpkg/parsers" "^3.0.0-rc.18" + "@yarnpkg/parsers" "3.0.0-rc.46" "@zkochan/js-yaml" "0.0.6" axios "^1.0.0" chalk "^4.1.0" @@ -19793,29 +20145,29 @@ nx@15.9.2, "nx@>=14.8.1 < 16": yargs "^17.6.2" yargs-parser "21.1.1" optionalDependencies: - "@nrwl/nx-darwin-arm64" "15.9.2" - "@nrwl/nx-darwin-x64" "15.9.2" - "@nrwl/nx-linux-arm-gnueabihf" "15.9.2" - "@nrwl/nx-linux-arm64-gnu" "15.9.2" - "@nrwl/nx-linux-arm64-musl" "15.9.2" - "@nrwl/nx-linux-x64-gnu" "15.9.2" - "@nrwl/nx-linux-x64-musl" "15.9.2" - "@nrwl/nx-win32-arm64-msvc" "15.9.2" - "@nrwl/nx-win32-x64-msvc" "15.9.2" + "@nrwl/nx-darwin-arm64" "15.9.6" + "@nrwl/nx-darwin-x64" "15.9.6" + "@nrwl/nx-linux-arm-gnueabihf" "15.9.6" + "@nrwl/nx-linux-arm64-gnu" "15.9.6" + "@nrwl/nx-linux-arm64-musl" "15.9.6" + "@nrwl/nx-linux-x64-gnu" "15.9.6" + "@nrwl/nx-linux-x64-musl" "15.9.6" + "@nrwl/nx-win32-arm64-msvc" "15.9.6" + "@nrwl/nx-win32-x64-msvc" "15.9.6" oauth-sign@~0.9.0: version "0.9.0" - resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.9.0.tgz#47a7b016baa68b5fa0ecf3dee08a85c679ac6455" + resolved "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz" integrity sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ== object-assign@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-3.0.0.tgz#9bedd5ca0897949bca47e7ff408062d549f587f2" + resolved "https://registry.npmjs.org/object-assign/-/object-assign-3.0.0.tgz" integrity sha512-jHP15vXVGeVh1HuaA2wY6lxk+whK/x4KBG88VXeRma7CCun7iGD5qPc4eYykQ9sdQvg8jkwFKsSxHln2ybW3xQ== object-assign@^4, object-assign@^4.0.1, object-assign@^4.1.0, object-assign@^4.1.1: version "4.1.1" - resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" + resolved "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz" integrity sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg== object-copy@^0.1.0: @@ -19829,17 +20181,17 @@ object-copy@^0.1.0: object-hash@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/object-hash/-/object-hash-3.0.0.tgz#73f97f753e7baffc0e2cc9d6e079079744ac82e9" + resolved "https://registry.npmjs.org/object-hash/-/object-hash-3.0.0.tgz" integrity sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw== object-inspect@^1.12.3, object-inspect@^1.9.0, object-inspect@~1.12.3: version "1.12.3" - resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.12.3.tgz#ba62dffd67ee256c8c086dfae69e016cd1f198b9" + resolved "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.3.tgz" integrity sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g== object-is@^1.0.1: version "1.1.5" - resolved "https://registry.yarnpkg.com/object-is/-/object-is-1.1.5.tgz#b9deeaa5fc7f1846a0faecdceec138e5778f53ac" + resolved "https://registry.npmjs.org/object-is/-/object-is-1.1.5.tgz" integrity sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw== dependencies: call-bind "^1.0.2" @@ -19847,22 +20199,22 @@ object-is@^1.0.1: object-keys@^1.0.11, object-keys@^1.1.1: version "1.1.1" - resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e" + resolved "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz" integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA== object-keys@~0.4.0: version "0.4.0" - resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-0.4.0.tgz#28a6aae7428dd2c3a92f3d95f21335dd204e0336" + resolved "https://registry.npmjs.org/object-keys/-/object-keys-0.4.0.tgz" integrity sha512-ncrLw+X55z7bkl5PnUvHwFK9FcGuFYo9gtjws2XtSzL+aZ8tm830P60WJ0dSmFVaSalWieW5MD7kEdnXda9yJw== object-treeify@^1.1.4: version "1.1.33" - resolved "https://registry.yarnpkg.com/object-treeify/-/object-treeify-1.1.33.tgz#f06fece986830a3cba78ddd32d4c11d1f76cdf40" + resolved "https://registry.npmjs.org/object-treeify/-/object-treeify-1.1.33.tgz" integrity sha512-EFVjAYfzWqWsBMRHPMAXLCDIJnpMhdWAqR7xG6M6a2cs6PMFpl/+Z20w9zDW4vkxOFfddegBKq9Rehd0bxWE7A== object-visit@^0.1.0: version "0.1.0" - resolved "https://registry.yarnpkg.com/object-visit/-/object-visit-0.1.0.tgz#b1bb6749f228ee76e0c42f3851d28a14d233ce26" + resolved "https://registry.npmjs.org/object-visit/-/object-visit-0.1.0.tgz" integrity sha512-gPvtDz6xoiDNPMp3e/5sQGua8cgevJULRMdrX9dcgFbeaTuqGOW3g4OgrLragDA6NSfvS2iNBXrs8CWgBQq83A== dependencies: isobject "^1.0.0" @@ -19876,7 +20228,7 @@ object-visit@^1.0.0: object.assign@4.1.0: version "4.1.0" - resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.0.tgz#968bf1100d7956bb3ca086f006f846b3bc4008da" + resolved "https://registry.npmjs.org/object.assign/-/object.assign-4.1.0.tgz" integrity sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w== dependencies: define-properties "^1.1.2" @@ -19886,7 +20238,7 @@ object.assign@4.1.0: object.assign@^4.1.4: version "4.1.4" - resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.4.tgz#9673c7c7c351ab8c4d0b516f4343ebf4dfb7799f" + resolved "https://registry.npmjs.org/object.assign/-/object.assign-4.1.4.tgz" integrity sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ== dependencies: call-bind "^1.0.2" @@ -19894,9 +20246,20 @@ object.assign@^4.1.4: has-symbols "^1.0.3" object-keys "^1.1.1" -object.getownpropertydescriptors@^2.0.3, object.getownpropertydescriptors@^2.1.6: +object.getownpropertydescriptors@^2.0.3: + version "2.1.7" + resolved "https://registry.yarnpkg.com/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.7.tgz#7a466a356cd7da4ba8b9e94ff6d35c3eeab5d56a" + integrity sha512-PrJz0C2xJ58FNn11XV2lr4Jt5Gzl94qpy9Lu0JlfEj14z88sqbSBJCBEzdlNUCzY2gburhbrwOZ5BHCmuNUy0g== + dependencies: + array.prototype.reduce "^1.0.6" + call-bind "^1.0.2" + define-properties "^1.2.0" + es-abstract "^1.22.1" + safe-array-concat "^1.0.0" + +object.getownpropertydescriptors@^2.1.6: version "2.1.6" - resolved "https://registry.yarnpkg.com/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.6.tgz#5e5c384dd209fa4efffead39e3a0512770ccc312" + resolved "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.6.tgz" integrity sha512-lq+61g26E/BgHv0ZTFgRvi7NMEPuAxLkFU7rukXjc/AlwH4Am5xXVnIXy3un1bg/JPbXHrixRkK1itUzzPiIjQ== dependencies: array.prototype.reduce "^1.0.5" @@ -19907,7 +20270,7 @@ object.getownpropertydescriptors@^2.0.3, object.getownpropertydescriptors@^2.1.6 object.omit@^1.1.0: version "1.1.0" - resolved "https://registry.yarnpkg.com/object.omit/-/object.omit-1.1.0.tgz#9d17ea16778e5057deba7752c6f55f1496829e94" + resolved "https://registry.npmjs.org/object.omit/-/object.omit-1.1.0.tgz" integrity sha512-oc6HJYjJhqPa0AsywIBlKNVd9ctu6lrDwr/N4HSpa3FKD1l3cF5pdgdLHm8Fn0zSKGKTKGwVOdoTTgUh1FQkKw== dependencies: for-own "^0.1.3" @@ -19915,7 +20278,7 @@ object.omit@^1.1.0: object.omit@^2.0.0: version "2.0.1" - resolved "https://registry.yarnpkg.com/object.omit/-/object.omit-2.0.1.tgz#1a9c744829f39dbb858c76ca3579ae2a54ebd1fa" + resolved "https://registry.npmjs.org/object.omit/-/object.omit-2.0.1.tgz" integrity sha512-UiAM5mhmIuKLsOvrL+B0U2d1hXHF3bFYWIuH1LMpuV2EJEHG1Ntz06PgLEHjm6VFd87NpH8rastvPoyv6UW2fA== dependencies: for-own "^0.1.4" @@ -19930,26 +20293,26 @@ object.pick@^1.3.0: oboe@2.1.4: version "2.1.4" - resolved "https://registry.yarnpkg.com/oboe/-/oboe-2.1.4.tgz#20c88cdb0c15371bb04119257d4fdd34b0aa49f6" + resolved "https://registry.npmjs.org/oboe/-/oboe-2.1.4.tgz" integrity sha512-ymBJ4xSC6GBXLT9Y7lirj+xbqBLa+jADGJldGEYG7u8sZbS9GyG+u1Xk9c5cbriKwSpCg41qUhPjvU5xOpvIyQ== dependencies: http-https "^1.0.0" oboe@2.1.5: version "2.1.5" - resolved "https://registry.yarnpkg.com/oboe/-/oboe-2.1.5.tgz#5554284c543a2266d7a38f17e073821fbde393cd" + resolved "https://registry.npmjs.org/oboe/-/oboe-2.1.5.tgz" integrity sha512-zRFWiF+FoicxEs3jNI/WYUrVEgA7DeET/InK0XQuudGHRg8iIob3cNPrJTKaz4004uaA9Pbe+Dwa8iluhjLZWA== dependencies: http-https "^1.0.0" obuf@~1.1.2: version "1.1.2" - resolved "https://registry.yarnpkg.com/obuf/-/obuf-1.1.2.tgz#09bea3343d41859ebd446292d11c9d4db619084e" + resolved "https://registry.npmjs.org/obuf/-/obuf-1.1.2.tgz" integrity sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg== "old-identity-sdk@npm:@celo/identity@1.5.2": version "1.5.2" - resolved "https://registry.yarnpkg.com/@celo/identity/-/identity-1.5.2.tgz#6401aeefbf7893374f6f940c9e0918d0a75d0411" + resolved "https://registry.npmjs.org/@celo/identity/-/identity-1.5.2.tgz" integrity sha512-/9JTL5P4xTY37hgu6qh5tU1d2GS3duBjP3QL600Zz1KAQrUVgb8g8JPpiRY21oEK6L7ZoNTukQJIuM3sbi//vg== dependencies: "@celo/base" "1.5.2" @@ -19967,7 +20330,7 @@ obuf@~1.1.2: omni-fetch@^0.2.3: version "0.2.3" - resolved "https://registry.yarnpkg.com/omni-fetch/-/omni-fetch-0.2.3.tgz#56a6f46ad170b6d978982cca5bd1c6b70597a58d" + resolved "https://registry.npmjs.org/omni-fetch/-/omni-fetch-0.2.3.tgz" integrity sha512-PezYE0Vhm5+/TffAWNjuHz8cuUKgPBgC601EBW/jUyXrCsJPlgtd/CekUvyT+TgKZupl9FQuPhwALrYsUuEbgA== dependencies: "@types/isomorphic-fetch" "0.0.31" @@ -19976,61 +20339,61 @@ omni-fetch@^0.2.3: on-finished@2.4.1, on-finished@^2.2.0: version "2.4.1" - resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.4.1.tgz#58c8c44116e54845ad57f14ab10b03533184ac3f" + resolved "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz" integrity sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg== dependencies: ee-first "1.1.1" on-finished@~2.3.0: version "2.3.0" - resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.3.0.tgz#20f1336481b083cd75337992a16971aa2d906947" + resolved "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz" integrity sha512-ikqdkGAAyf/X/gPhXGvfgAytDZtDbr+bkNUJ0N9h5MI/dmdgCs3l6hoHrcUv41sRKew3jIwrp4qQDXiK99Utww== dependencies: ee-first "1.1.1" on-headers@^1.0.0, on-headers@~1.0.2: version "1.0.2" - resolved "https://registry.yarnpkg.com/on-headers/-/on-headers-1.0.2.tgz#772b0ae6aaa525c399e489adfad90c403eb3c28f" + resolved "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz" integrity sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA== once@1.x, once@^1.3.0, once@^1.3.1, once@^1.4.0: version "1.4.0" - resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" + resolved "https://registry.npmjs.org/once/-/once-1.4.0.tgz" integrity sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w== dependencies: wrappy "1" one-time@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/one-time/-/one-time-1.0.0.tgz#e06bc174aed214ed58edede573b433bbf827cb45" + resolved "https://registry.npmjs.org/one-time/-/one-time-1.0.0.tgz" integrity sha512-5DXOiRKwuSEcQ/l0kGCF6Q3jcADFv5tSmRaJck/OqkVFcOzutB134KRSfF0xDrL39MNnqxbHBbUUcjZIhTgb2g== dependencies: fn.name "1.x.x" onetime@^2.0.0: version "2.0.1" - resolved "https://registry.yarnpkg.com/onetime/-/onetime-2.0.1.tgz#067428230fd67443b2794b22bba528b6867962d4" + resolved "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz" integrity sha512-oyyPpiMaKARvvcgip+JV+7zci5L8D1W9RZIz2l1o08AM3pfspitVWnPt3mzHcBPp12oYMTy0pqrFs/C+m3EwsQ== dependencies: mimic-fn "^1.0.0" onetime@^5.1.0, onetime@^5.1.2: version "5.1.2" - resolved "https://registry.yarnpkg.com/onetime/-/onetime-5.1.2.tgz#d0e96ebb56b07476df1dd9c4806e5237985ca45e" + resolved "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz" integrity sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg== dependencies: mimic-fn "^2.1.0" open@^6.3.0: version "6.4.0" - resolved "https://registry.yarnpkg.com/open/-/open-6.4.0.tgz#5c13e96d0dc894686164f18965ecfe889ecfc8a9" + resolved "https://registry.npmjs.org/open/-/open-6.4.0.tgz" integrity sha512-IFenVPgF70fSm1keSd2iDBIDIBZkroLeuffXq+wKTzTJlBpesFWojV9lb8mzOfaAzM1sr7HQHuO0vtV0zYekGg== dependencies: is-wsl "^1.1.0" open@^7.0.0, open@^7.4.2: version "7.4.2" - resolved "https://registry.yarnpkg.com/open/-/open-7.4.2.tgz#b8147e26dcf3e426316c730089fd71edd29c2321" + resolved "https://registry.npmjs.org/open/-/open-7.4.2.tgz" integrity sha512-MVHddDVweXZF3awtlAS+6pgKLlm/JgxZ90+/NBurBoQctVOOB/zDdVjcyPzQ+0laDGbsWgrRkflI65sQeOgT9Q== dependencies: is-docker "^2.0.0" @@ -20038,7 +20401,7 @@ open@^7.0.0, open@^7.4.2: open@^8.4.0: version "8.4.2" - resolved "https://registry.yarnpkg.com/open/-/open-8.4.2.tgz#5b5ffe2a8f793dcd2aad73e550cb87b59cb084f9" + resolved "https://registry.npmjs.org/open/-/open-8.4.2.tgz" integrity sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ== dependencies: define-lazy-prop "^2.0.0" @@ -20047,36 +20410,36 @@ open@^8.4.0: openapi3-ts@^2.0.1: version "2.0.2" - resolved "https://registry.yarnpkg.com/openapi3-ts/-/openapi3-ts-2.0.2.tgz#a200dd838bf24c9086c8eedcfeb380b7eb31e82a" + resolved "https://registry.npmjs.org/openapi3-ts/-/openapi3-ts-2.0.2.tgz" integrity sha512-TxhYBMoqx9frXyOgnRHufjQfPXomTIHYKhSKJ6jHfj13kS8OEIhvmE8CTuQyKtjjWttAjX5DPxM1vmalEpo8Qw== dependencies: yaml "^1.10.2" openapi3-ts@^3.1.1: version "3.2.0" - resolved "https://registry.yarnpkg.com/openapi3-ts/-/openapi3-ts-3.2.0.tgz#7e30d33c480e938e67e809ab16f419bc9beae3f8" + resolved "https://registry.npmjs.org/openapi3-ts/-/openapi3-ts-3.2.0.tgz" integrity sha512-/ykNWRV5Qs0Nwq7Pc0nJ78fgILvOT/60OxEmB3v7yQ8a8Bwcm43D4diaYazG/KBn6czA+52XYy931WFLMCUeSg== dependencies: yaml "^2.2.1" opencollective-postinstall@^2.0.2: version "2.0.3" - resolved "https://registry.yarnpkg.com/opencollective-postinstall/-/opencollective-postinstall-2.0.3.tgz#7a0fff978f6dbfa4d006238fbac98ed4198c3259" + resolved "https://registry.npmjs.org/opencollective-postinstall/-/opencollective-postinstall-2.0.3.tgz" integrity sha512-8AV/sCtuzUeTo8gQK5qDZzARrulB3egtLzFgteqB2tcT4Mw7B8Kt7JcDHmltjz6FOAHsvTevk70gZEbhM4ZS9Q== opentracing@^0.14.4: version "0.14.7" - resolved "https://registry.yarnpkg.com/opentracing/-/opentracing-0.14.7.tgz#25d472bd0296dc0b64d7b94cbc995219031428f5" + resolved "https://registry.npmjs.org/opentracing/-/opentracing-0.14.7.tgz" integrity sha512-vz9iS7MJ5+Bp1URw8Khvdyw1H/hGvzHWlKQ7eRrQojSCDL1/SrWfrY9QebLw97n2deyRtzHRC3MkQfVNUCo91Q== openzeppelin-solidity@^2.5.0: version "2.5.1" - resolved "https://registry.yarnpkg.com/openzeppelin-solidity/-/openzeppelin-solidity-2.5.1.tgz#1cdcce30c4c6a7b6625dab62ccd0440a813ab597" + resolved "https://registry.npmjs.org/openzeppelin-solidity/-/openzeppelin-solidity-2.5.1.tgz" integrity sha512-oCGtQPLOou4su76IMr4XXJavy9a8OZmAXeUZ8diOdFznlL/mlkIlYr7wajqCzH4S47nlKPS7m0+a2nilCTpVPQ== optionator@^0.8.1, optionator@^0.8.2: version "0.8.3" - resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.8.3.tgz#84fa1d036fe9d3c7e21d99884b601167ec8fb495" + resolved "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz" integrity sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA== dependencies: deep-is "~0.1.3" @@ -20088,12 +20451,12 @@ optionator@^0.8.1, optionator@^0.8.2: optjs@~3.2.2: version "3.2.2" - resolved "https://registry.yarnpkg.com/optjs/-/optjs-3.2.2.tgz#69a6ce89c442a44403141ad2f9b370bd5bb6f4ee" + resolved "https://registry.npmjs.org/optjs/-/optjs-3.2.2.tgz" integrity sha512-f8lTJm4LKirX+45xsFhuRNjA4f46QVLQKfGoNH7e2AEWS+24eM4XNH4pQ8Tw2LISCIvbST/wNcLdtgvgcqVaxA== ora@^3.4.0: version "3.4.0" - resolved "https://registry.yarnpkg.com/ora/-/ora-3.4.0.tgz#bf0752491059a3ef3ed4c85097531de9fdbcd318" + resolved "https://registry.npmjs.org/ora/-/ora-3.4.0.tgz" integrity sha512-eNwHudNbO1folBP3JsZ19v9azXWtQZjICdr3Q0TDPIaeBQ3mXLrh54wM+er0+hSp+dWKf+Z8KM58CYzEyIYxYg== dependencies: chalk "^2.4.2" @@ -20105,7 +20468,7 @@ ora@^3.4.0: ora@^5.4.1: version "5.4.1" - resolved "https://registry.yarnpkg.com/ora/-/ora-5.4.1.tgz#1b2678426af4ac4a509008e5e4ac9e9959db9e18" + resolved "https://registry.npmjs.org/ora/-/ora-5.4.1.tgz" integrity sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ== dependencies: bl "^4.1.0" @@ -20120,157 +20483,149 @@ ora@^5.4.1: original-require@^1.0.1: version "1.0.1" - resolved "https://registry.yarnpkg.com/original-require/-/original-require-1.0.1.tgz#0f130471584cd33511c5ec38c8d59213f9ac5e20" + resolved "https://registry.npmjs.org/original-require/-/original-require-1.0.1.tgz" integrity sha512-5vdKMbE58WaE61uVD+PKyh8xdM398UnjPBLotW2sjG5MzHARwta/+NtMBCBA0t2WQblGYBvq5vsiZpWokwno+A== -os-homedir@^1.0.0, os-homedir@^1.0.1: +os-homedir@^1.0.1: version "1.0.2" - resolved "https://registry.yarnpkg.com/os-homedir/-/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3" + resolved "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz" integrity sha512-B5JU3cabzk8c67mRRd3ECmROafjYMXbuzlwtqdM8IbS8ktlTix8aFGb2bAGKrSRIlnfKwovGUUr72JUPyOb6kQ== os-locale@^1.4.0: version "1.4.0" - resolved "https://registry.yarnpkg.com/os-locale/-/os-locale-1.4.0.tgz#20f9f17ae29ed345e8bde583b13d2009803c14d9" + resolved "https://registry.npmjs.org/os-locale/-/os-locale-1.4.0.tgz" integrity sha512-PRT7ZORmwu2MEFt4/fv3Q+mEfN4zetKxufQrkShY2oGvUms9r8otu5HfdyIFHkYXjO7laNsoVGmM2MANfuTA8g== dependencies: lcid "^1.0.0" os-locale@^3.1.0: version "3.1.0" - resolved "https://registry.yarnpkg.com/os-locale/-/os-locale-3.1.0.tgz#a802a6ee17f24c10483ab9935719cef4ed16bf1a" + resolved "https://registry.npmjs.org/os-locale/-/os-locale-3.1.0.tgz" integrity sha512-Z8l3R4wYWM40/52Z+S265okfFj8Kt2cC2MKY+xNi3kFs+XGI7WXu/I309QQQYbRW4ijiZ+yxs9pqEhJh0DqW3Q== dependencies: execa "^1.0.0" lcid "^2.0.0" mem "^4.0.0" -os-tmpdir@^1.0.0, os-tmpdir@~1.0.2: +os-tmpdir@~1.0.2: version "1.0.2" - resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" + resolved "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz" integrity sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g== -osenv@^0.1.4: - version "0.1.5" - resolved "https://registry.yarnpkg.com/osenv/-/osenv-0.1.5.tgz#85cdfafaeb28e8677f416e287592b5f3f49ea410" - integrity sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g== - dependencies: - os-homedir "^1.0.0" - os-tmpdir "^1.0.0" - p-cancelable@^0.3.0: version "0.3.0" - resolved "https://registry.yarnpkg.com/p-cancelable/-/p-cancelable-0.3.0.tgz#b9e123800bcebb7ac13a479be195b507b98d30fa" + resolved "https://registry.npmjs.org/p-cancelable/-/p-cancelable-0.3.0.tgz" integrity sha512-RVbZPLso8+jFeq1MfNvgXtCRED2raz/dKpacfTNxsx6pLEpEomM7gah6VeHSYV3+vo0OAi4MkArtQcWWXuQoyw== p-cancelable@^1.0.0: version "1.1.0" - resolved "https://registry.yarnpkg.com/p-cancelable/-/p-cancelable-1.1.0.tgz#d078d15a3af409220c886f1d9a0ca2e441ab26cc" + resolved "https://registry.npmjs.org/p-cancelable/-/p-cancelable-1.1.0.tgz" integrity sha512-s73XxOZ4zpt1edZYZzvhqFa6uvQc1vwUa0K0BdtIZgQMAJj9IbebH+JkgKZc9h+B05PKHLOTl4ajG1BmNrVZlw== p-cancelable@^2.0.0: version "2.1.1" - resolved "https://registry.yarnpkg.com/p-cancelable/-/p-cancelable-2.1.1.tgz#aab7fbd416582fa32a3db49859c122487c5ed2cf" + resolved "https://registry.npmjs.org/p-cancelable/-/p-cancelable-2.1.1.tgz" integrity sha512-BZOr3nRQHOntUjTrH8+Lh54smKHoHyur8We1V8DSMVrl5A2malOOwuJRnKRDjSnkoeBh4at6BwEnb5I7Jl31wg== p-cancelable@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/p-cancelable/-/p-cancelable-3.0.0.tgz#63826694b54d61ca1c20ebcb6d3ecf5e14cd8050" + resolved "https://registry.npmjs.org/p-cancelable/-/p-cancelable-3.0.0.tgz" integrity sha512-mlVgR3PGuzlo0MmTdk4cXqXWlwQDLnONTAg6sm62XkMJEiRxN3GL3SffkYvqwonbkJBcrI7Uvv5Zh9yjvn2iUw== p-defer@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/p-defer/-/p-defer-1.0.0.tgz#9f6eb182f6c9aa8cd743004a7d4f96b196b0fb0c" + resolved "https://registry.npmjs.org/p-defer/-/p-defer-1.0.0.tgz" integrity sha512-wB3wfAxZpk2AzOfUMJNL+d36xothRSyj8EXOa4f6GMqYDN9BJaaSISbsk+wS9abmnebVw95C2Kb5t85UmpCxuw== p-defer@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/p-defer/-/p-defer-3.0.0.tgz#d1dceb4ee9b2b604b1d94ffec83760175d4e6f83" + resolved "https://registry.npmjs.org/p-defer/-/p-defer-3.0.0.tgz" integrity sha512-ugZxsxmtTln604yeYd29EGrNhazN2lywetzpKhfmQjW/VJmhpDmWbiX+h0zL8V91R0UXkhb3KtPmyq9PZw3aYw== p-finally@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-1.0.0.tgz#3fbcfb15b899a44123b34b6dcc18b724336a2cae" + resolved "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz" integrity sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow== p-finally@^2.0.0: version "2.0.1" - resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-2.0.1.tgz#bd6fcaa9c559a096b680806f4d657b3f0f240561" + resolved "https://registry.npmjs.org/p-finally/-/p-finally-2.0.1.tgz" integrity sha512-vpm09aKwq6H9phqRQzecoDpD8TmVyGw70qmWlyq5onxY7tqyTTFVvxMykxQSQKILBSFlbXpypIw2T1Ml7+DDtw== p-is-promise@^2.0.0: version "2.1.0" - resolved "https://registry.yarnpkg.com/p-is-promise/-/p-is-promise-2.1.0.tgz#918cebaea248a62cf7ffab8e3bca8c5f882fc42e" + resolved "https://registry.npmjs.org/p-is-promise/-/p-is-promise-2.1.0.tgz" integrity sha512-Y3W0wlRPK8ZMRbNq97l4M5otioeA5lm1z7bkNkxCka8HSPjR0xRWmpCmc9utiaLP9Jb1eD8BgeIxTW4AIF45Pg== p-limit@^1.1.0: version "1.3.0" - resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-1.3.0.tgz#b86bd5f0c25690911c7590fcbfc2010d54b3ccb8" + 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.0.0, p-limit@^2.2.0: version "2.3.0" - resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.3.0.tgz#3dd33c647a214fdfffd835933eb086da0dc21db1" + resolved "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz" integrity sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w== dependencies: p-try "^2.0.0" p-limit@^3.0.1, p-limit@^3.0.2, p-limit@^3.1.0: version "3.1.0" - resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-3.1.0.tgz#e1daccbe78d0d1388ca18c64fea38e3e57e3706b" + resolved "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz" integrity sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ== dependencies: yocto-queue "^0.1.0" p-locate@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-2.0.0.tgz#20a0103b222a70c8fd39cc2e580680f3dde5ec43" + resolved "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz" integrity sha512-nQja7m7gSKuewoVRen45CtVfODR3crN3goVQ0DDZ9N3yHxgpkuBhZqsaiotSQRrADUrne346peY7kT3TSACykg== dependencies: p-limit "^1.1.0" p-locate@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-3.0.0.tgz#322d69a05c0264b25997d9f40cd8a891ab0064a4" + resolved "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz" integrity sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ== dependencies: p-limit "^2.0.0" p-locate@^4.1.0: version "4.1.0" - resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-4.1.0.tgz#a3428bb7088b3a60292f66919278b7c297ad4f07" + resolved "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz" integrity sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A== dependencies: p-limit "^2.2.0" p-locate@^5.0.0: version "5.0.0" - resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-5.0.0.tgz#83c8315c6785005e3bd021839411c9e110e6d834" + resolved "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz" integrity sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw== dependencies: p-limit "^3.0.2" p-map-series@^2.1.0: version "2.1.0" - resolved "https://registry.yarnpkg.com/p-map-series/-/p-map-series-2.1.0.tgz#7560d4c452d9da0c07e692fdbfe6e2c81a2a91f2" + resolved "https://registry.npmjs.org/p-map-series/-/p-map-series-2.1.0.tgz" integrity sha512-RpYIIK1zXSNEOdwxcfe7FdvGcs7+y5n8rifMhMNWvaxRNMPINJHF5GDeuVxWqnfrcHPSCnp7Oo5yNXHId9Av2Q== p-map@^4.0.0: version "4.0.0" - resolved "https://registry.yarnpkg.com/p-map/-/p-map-4.0.0.tgz#bb2f95a5eda2ec168ec9274e06a747c3e2904d2b" + resolved "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz" integrity sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ== dependencies: aggregate-error "^3.0.0" p-pipe@^3.1.0: version "3.1.0" - resolved "https://registry.yarnpkg.com/p-pipe/-/p-pipe-3.1.0.tgz#48b57c922aa2e1af6a6404cb7c6bf0eb9cc8e60e" + resolved "https://registry.npmjs.org/p-pipe/-/p-pipe-3.1.0.tgz" integrity sha512-08pj8ATpzMR0Y80x50yJHn37NF6vjrqHutASaX5LiH5npS9XPvrUmscd9MF5R4fuYRHOxQR1FfMIlF7AzwoPqw== p-queue@^6.6.2: version "6.6.2" - resolved "https://registry.yarnpkg.com/p-queue/-/p-queue-6.6.2.tgz#2068a9dcf8e67dd0ec3e7a2bcb76810faa85e426" + resolved "https://registry.npmjs.org/p-queue/-/p-queue-6.6.2.tgz" integrity sha512-RwFpb72c/BhQLEXIZ5K2e+AhgNVmIejGlTgiB9MzZ0e93GRvqZ7uSi0dvRF7/XIXDeNkra2fNHBxTyPDGySpjQ== dependencies: eventemitter3 "^4.0.4" @@ -20278,43 +20633,43 @@ p-queue@^6.6.2: p-reduce@^2.0.0, p-reduce@^2.1.0: version "2.1.0" - resolved "https://registry.yarnpkg.com/p-reduce/-/p-reduce-2.1.0.tgz#09408da49507c6c274faa31f28df334bc712b64a" + resolved "https://registry.npmjs.org/p-reduce/-/p-reduce-2.1.0.tgz" integrity sha512-2USApvnsutq8uoxZBGbbWM0JIYLiEMJ9RlaN7fAzVNb9OZN0SHjjTTfIcb667XynS5Y1VhwDJVDa72TnPzAYWw== p-timeout@^1.1.1: version "1.2.1" - resolved "https://registry.yarnpkg.com/p-timeout/-/p-timeout-1.2.1.tgz#5eb3b353b7fce99f101a1038880bb054ebbea386" + resolved "https://registry.npmjs.org/p-timeout/-/p-timeout-1.2.1.tgz" integrity sha512-gb0ryzr+K2qFqFv6qi3khoeqMZF/+ajxQipEF6NteZVnvz9tzdsfAVj3lYtn1gAXvH5lfLwfxEII799gt/mRIA== dependencies: p-finally "^1.0.0" p-timeout@^3.2.0: version "3.2.0" - resolved "https://registry.yarnpkg.com/p-timeout/-/p-timeout-3.2.0.tgz#c7e17abc971d2a7962ef83626b35d635acf23dfe" + resolved "https://registry.npmjs.org/p-timeout/-/p-timeout-3.2.0.tgz" integrity sha512-rhIwUycgwwKcP9yTOOFK/AKsAopjjCakVqLHePO3CC6Mir1Z99xT+R63jZxAT5lFZLa2inS5h+ZS2GvR99/FBg== dependencies: p-finally "^1.0.0" p-try@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/p-try/-/p-try-1.0.0.tgz#cbc79cdbaf8fd4228e13f621f2b1a237c1b207b3" + resolved "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz" integrity sha512-U1etNYuMJoIz3ZXSrrySFjsXQTWOx2/jdi86L+2pRvph/qMKL6sbcCYdH23fqsbm8TH2Gn0OybpT4eSFlCVHww== p-try@^2.0.0: version "2.2.0" - resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6" + resolved "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz" integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== p-waterfall@^2.1.1: version "2.1.1" - resolved "https://registry.yarnpkg.com/p-waterfall/-/p-waterfall-2.1.1.tgz#63153a774f472ccdc4eb281cdb2967fcf158b2ee" + resolved "https://registry.npmjs.org/p-waterfall/-/p-waterfall-2.1.1.tgz" integrity sha512-RRTnDb2TBG/epPRI2yYXsimO0v3BXC8Yd3ogr1545IaqKK17VGhbWVeGGN+XfCm/08OK8635nH31c8bATkHuSw== dependencies: p-reduce "^2.0.0" pac-proxy-agent@^5.0.0: version "5.0.0" - resolved "https://registry.yarnpkg.com/pac-proxy-agent/-/pac-proxy-agent-5.0.0.tgz#b718f76475a6a5415c2efbe256c1c971c84f635e" + resolved "https://registry.npmjs.org/pac-proxy-agent/-/pac-proxy-agent-5.0.0.tgz" integrity sha512-CcFG3ZtnxO8McDigozwE3AqAw15zDvGH+OjXO4kzf7IkEKkQ4gxQ+3sdF50WmhQ4P/bVusXcqNE2S3XrNURwzQ== dependencies: "@tootallnate/once" "1" @@ -20327,23 +20682,23 @@ pac-proxy-agent@^5.0.0: raw-body "^2.2.0" socks-proxy-agent "5" -pac-proxy-agent@^7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/pac-proxy-agent/-/pac-proxy-agent-7.0.0.tgz#db42120c64292685dafaf2bd921e223c56bfb13b" - integrity sha512-t4tRAMx0uphnZrio0S0Jw9zg3oDbz1zVhQ/Vy18FjLfP1XOLNUEjaVxYCYRI6NS+BsMBXKIzV6cTLOkO9AtywA== +pac-proxy-agent@^7.0.1: + version "7.0.1" + resolved "https://registry.npmjs.org/pac-proxy-agent/-/pac-proxy-agent-7.0.1.tgz" + integrity sha512-ASV8yU4LLKBAjqIPMbrgtaKIvxQri/yh2OpI+S6hVa9JRkUI3Y3NPFbfngDtY7oFtSMD3w31Xns89mDa3Feo5A== dependencies: "@tootallnate/quickjs-emscripten" "^0.23.0" agent-base "^7.0.2" debug "^4.3.4" get-uri "^6.0.1" http-proxy-agent "^7.0.0" - https-proxy-agent "^7.0.0" + https-proxy-agent "^7.0.2" pac-resolver "^7.0.0" - socks-proxy-agent "^8.0.1" + socks-proxy-agent "^8.0.2" pac-resolver@^5.0.0: version "5.0.1" - resolved "https://registry.yarnpkg.com/pac-resolver/-/pac-resolver-5.0.1.tgz#c91efa3a9af9f669104fa2f51102839d01cde8e7" + resolved "https://registry.npmjs.org/pac-resolver/-/pac-resolver-5.0.1.tgz" integrity sha512-cy7u00ko2KVgBAjuhevqpPeHIkCIqPe1v24cydhWjmeuzaBfmUWFCZJ1iAh5TuVzVZoUzXIW7K8sMYOZ84uZ9Q== dependencies: degenerator "^3.0.2" @@ -20352,7 +20707,7 @@ pac-resolver@^5.0.0: pac-resolver@^7.0.0: version "7.0.0" - resolved "https://registry.yarnpkg.com/pac-resolver/-/pac-resolver-7.0.0.tgz#79376f1ca26baf245b96b34c339d79bff25e900c" + resolved "https://registry.npmjs.org/pac-resolver/-/pac-resolver-7.0.0.tgz" integrity sha512-Fd9lT9vJbHYRACT8OhCbZBbxr6KRSawSovFpy8nDGshaK99S/EBhVIHp9+crhxrsZOuvLpgL1n23iyPg6Rl2hg== dependencies: degenerator "^5.0.0" @@ -20361,7 +20716,7 @@ pac-resolver@^7.0.0: package-json@^6.3.0: version "6.5.0" - resolved "https://registry.yarnpkg.com/package-json/-/package-json-6.5.0.tgz#6feedaca35e75725876d0b0e64974697fed145b0" + resolved "https://registry.npmjs.org/package-json/-/package-json-6.5.0.tgz" integrity sha512-k3bdm2n25tkyxcjSKzB5x8kfVxlMdgsbPr0GkZcwHsLpba6cBjqCt1KlcChKEvxHIcTB1FVMuwoijZ26xex5MQ== dependencies: got "^9.6.0" @@ -20371,12 +20726,12 @@ package-json@^6.3.0: packet-reader@1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/packet-reader/-/packet-reader-1.0.0.tgz#9238e5480dedabacfe1fe3f2771063f164157d74" + resolved "https://registry.npmjs.org/packet-reader/-/packet-reader-1.0.0.tgz" integrity sha512-HAKu/fG3HpHFO0AA8WE8q2g+gBJaZ9MG7fcKk+IJPLTGAD6Psw4443l+9DGRbOIh3/aXr7Phy0TjilYivJo5XQ== pacote@^13.0.3, pacote@^13.6.1: version "13.6.2" - resolved "https://registry.yarnpkg.com/pacote/-/pacote-13.6.2.tgz#0d444ba3618ab3e5cd330b451c22967bbd0ca48a" + resolved "https://registry.npmjs.org/pacote/-/pacote-13.6.2.tgz" integrity sha512-Gu8fU3GsvOPkak2CkbojR7vjs3k3P9cA6uazKTHdsdV0gpCEQq2opelnEv30KRQWgVzP5Vd/5umjcedma3MKtg== dependencies: "@npmcli/git" "^3.0.0" @@ -20403,21 +20758,21 @@ pacote@^13.0.3, pacote@^13.6.1: param-case@^2.1.0: version "2.1.1" - resolved "https://registry.yarnpkg.com/param-case/-/param-case-2.1.1.tgz#df94fd8cf6531ecf75e6bef9a0858fbc72be2247" + resolved "https://registry.npmjs.org/param-case/-/param-case-2.1.1.tgz" integrity sha512-eQE845L6ot89sk2N8liD8HAuH4ca6Vvr7VWAWwt7+kvvG5aBcPmmphQ68JsEG2qa9n1TykS2DLeMt363AAH8/w== dependencies: no-case "^2.2.0" parent-module@^1.0.0: version "1.0.1" - resolved "https://registry.yarnpkg.com/parent-module/-/parent-module-1.0.1.tgz#691d2709e78c79fae3a156622452d00762caaaa2" + resolved "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz" integrity sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g== dependencies: callsites "^3.0.0" parse-asn1@^5.0.0, parse-asn1@^5.1.5: version "5.1.6" - resolved "https://registry.yarnpkg.com/parse-asn1/-/parse-asn1-5.1.6.tgz#385080a3ec13cb62a62d39409cb3e88844cdaed4" + resolved "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.6.tgz" integrity sha512-RnZRo1EPU6JBnra2vGHj0yhp6ebyjBZpmUCLHWiFhxlzvBCCpAuZ7elsBp1PVAbQN0/04VD/19rfzlBSwLstMw== dependencies: asn1.js "^5.2.0" @@ -20433,12 +20788,12 @@ parse-cache-control@^1.0.1: parse-code-context@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/parse-code-context/-/parse-code-context-1.0.0.tgz#718c295c593d0d19a37f898473268cc75e98de1e" + resolved "https://registry.npmjs.org/parse-code-context/-/parse-code-context-1.0.0.tgz" integrity sha512-OZQaqKaQnR21iqhlnPfVisFjBWjhnMl5J9MgbP8xC+EwoVqbXrq78lp+9Zb3ahmLzrIX5Us/qbvBnaS3hkH6OA== parse-conflict-json@^2.0.1: version "2.0.2" - resolved "https://registry.yarnpkg.com/parse-conflict-json/-/parse-conflict-json-2.0.2.tgz#3d05bc8ffe07d39600dc6436c6aefe382033d323" + resolved "https://registry.npmjs.org/parse-conflict-json/-/parse-conflict-json-2.0.2.tgz" integrity sha512-jDbRGb00TAPFsKWCpZZOT93SxVP9nONOSgES3AevqRq/CHvavEBvKAjxX9p5Y5F0RZLxH9Ufd9+RwtCsa+lFDA== dependencies: json-parse-even-better-errors "^2.3.1" @@ -20447,7 +20802,7 @@ parse-conflict-json@^2.0.1: parse-filepath@^0.6.1: version "0.6.3" - resolved "https://registry.yarnpkg.com/parse-filepath/-/parse-filepath-0.6.3.tgz#38e17a73e5e4e6776bae9506fc3ccb14bc3a2b80" + resolved "https://registry.npmjs.org/parse-filepath/-/parse-filepath-0.6.3.tgz" integrity sha512-/8L5NPcGFMlZZ05LhvyKDQkCb8nX/5DPad9ZGvXrpAyGfk4Fop0PCEyCnwnB7PgnSW2JLCSId0ZNrBo7iAhXYQ== dependencies: is-absolute "^0.2.2" @@ -20455,7 +20810,7 @@ parse-filepath@^0.6.1: parse-gitignore@^0.2.0: version "0.2.0" - resolved "https://registry.yarnpkg.com/parse-gitignore/-/parse-gitignore-0.2.0.tgz#98706d09f0f93ee86348b721ffee0606bc093d74" + resolved "https://registry.npmjs.org/parse-gitignore/-/parse-gitignore-0.2.0.tgz" integrity sha512-NB3206JVaagRmgpQCWymcXHd+bZyVxACtgehEL49jDptryTqGcDWo7YroucBXKePj9lGYz3guQVZIV/gqrsaOw== dependencies: ends-with "^0.2.0" @@ -20464,7 +20819,7 @@ parse-gitignore@^0.2.0: parse-glob@^3.0.1, parse-glob@^3.0.4: version "3.0.4" - resolved "https://registry.yarnpkg.com/parse-glob/-/parse-glob-3.0.4.tgz#b2c376cfb11f35513badd173ef0bb6e3a388391c" + resolved "https://registry.npmjs.org/parse-glob/-/parse-glob-3.0.4.tgz" integrity sha512-FC5TeK0AwXzq3tUBFtH74naWkPQCEWs4K+xMxWZBlKDWu0bVHXGZa+KKqxKidd7xwhdZ19ZNuF2uO1M/r196HA== dependencies: glob-base "^0.3.0" @@ -20474,19 +20829,19 @@ parse-glob@^3.0.1, parse-glob@^3.0.4: parse-headers@^2.0.0: version "2.0.5" - resolved "https://registry.yarnpkg.com/parse-headers/-/parse-headers-2.0.5.tgz#069793f9356a54008571eb7f9761153e6c770da9" + resolved "https://registry.npmjs.org/parse-headers/-/parse-headers-2.0.5.tgz" integrity sha512-ft3iAoLOB/MlwbNXgzy43SWGP6sQki2jQvAyBg/zDFAgr9bfNWZIUj42Kw2eJIl8kEi4PbgE6U1Zau/HwI75HA== parse-json@^2.2.0: version "2.2.0" - resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-2.2.0.tgz#f480f40434ef80741f8469099f8dea18f55a4dc9" + resolved "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz" integrity sha512-QR/GGaKCkhwk1ePQNYDRKYZ3mwU9ypsKhB0XyFnLQdomyEqk3e8wpW3V5Jp88zbxK4n5ST1nqo+g9juTpownhQ== dependencies: error-ex "^1.2.0" parse-json@^4.0.0: version "4.0.0" - resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-4.0.0.tgz#be35f5425be1f7f6c747184f98a788cb99477ee0" + resolved "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz" integrity sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw== dependencies: error-ex "^1.3.1" @@ -20494,7 +20849,7 @@ parse-json@^4.0.0: parse-json@^5.0.0, parse-json@^5.2.0: version "5.2.0" - resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-5.2.0.tgz#c76fc66dee54231c962b22bcc8a72cf2f99753cd" + resolved "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz" integrity sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg== dependencies: "@babel/code-frame" "^7.0.0" @@ -20504,26 +20859,26 @@ parse-json@^5.0.0, parse-json@^5.2.0: parse-passwd@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/parse-passwd/-/parse-passwd-1.0.0.tgz#6d5b934a456993b23d37f40a382d6f1666a8e5c6" + resolved "https://registry.npmjs.org/parse-passwd/-/parse-passwd-1.0.0.tgz" integrity sha512-1Y1A//QUXEZK7YKz+rD9WydcE1+EuPr6ZBgKecAB8tmoW6UFv0NREVJe1p+jRxtThkcbbKkfwIbWJe/IeE6m2Q== parse-path@^7.0.0: version "7.0.0" - resolved "https://registry.yarnpkg.com/parse-path/-/parse-path-7.0.0.tgz#605a2d58d0a749c8594405d8cc3a2bf76d16099b" + resolved "https://registry.npmjs.org/parse-path/-/parse-path-7.0.0.tgz" integrity sha512-Euf9GG8WT9CdqwuWJGdf3RkUcTBArppHABkO7Lm8IzRQp0e2r/kkFnmhu4TSK30Wcu5rVAZLmfPKSBBi9tWFog== dependencies: protocols "^2.0.0" parse-url@^8.1.0: version "8.1.0" - resolved "https://registry.yarnpkg.com/parse-url/-/parse-url-8.1.0.tgz#972e0827ed4b57fc85f0ea6b0d839f0d8a57a57d" + resolved "https://registry.npmjs.org/parse-url/-/parse-url-8.1.0.tgz" integrity sha512-xDvOoLU5XRrcOZvnI6b8zA6n9O9ejNk/GExuz1yBuWUGn9KA97GI6HTs6u02wKara1CeVmZhH+0TZFdWScR89w== dependencies: parse-path "^7.0.0" parse5-htmlparser2-tree-adapter@^7.0.0: version "7.0.0" - resolved "https://registry.yarnpkg.com/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-7.0.0.tgz#23c2cc233bcf09bb7beba8b8a69d46b08c62c2f1" + resolved "https://registry.npmjs.org/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-7.0.0.tgz" integrity sha512-B77tOZrqqfUfnVcOrUvfdLbz4pu4RopLD/4vmu3HUPswwTA8OH0EMW9BlWR2B0RCoiZRAHEUu7IxeP1Pd1UU+g== dependencies: domhandler "^5.0.2" @@ -20531,19 +20886,19 @@ parse5-htmlparser2-tree-adapter@^7.0.0: parse5@^7.0.0: version "7.1.2" - resolved "https://registry.yarnpkg.com/parse5/-/parse5-7.1.2.tgz#0736bebbfd77793823240a23b7fc5e010b7f8e32" + resolved "https://registry.npmjs.org/parse5/-/parse5-7.1.2.tgz" integrity sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw== dependencies: entities "^4.4.0" parseurl@^1.3.3, parseurl@~1.3.3: version "1.3.3" - resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.3.tgz#9da19e7bee8d12dff0513ed5b76957793bc2e8d4" + resolved "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz" integrity sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ== pascal-case@^2.0.0, pascal-case@^2.0.1: version "2.0.1" - resolved "https://registry.yarnpkg.com/pascal-case/-/pascal-case-2.0.1.tgz#2d578d3455f660da65eca18ef95b4e0de912761e" + resolved "https://registry.npmjs.org/pascal-case/-/pascal-case-2.0.1.tgz" integrity sha512-qjS4s8rBOJa2Xm0jmxXiyh1+OFf6ekCWOvUaRgAQSktzlTbMotS0nmG9gyYAybCWBcuP4fsBeRCKNwGBnMe2OQ== dependencies: camel-case "^3.0.0" @@ -20556,7 +20911,7 @@ pascalcase@^0.1.1: password-prompt@^1.0.7, password-prompt@^1.1.2: version "1.1.2" - resolved "https://registry.yarnpkg.com/password-prompt/-/password-prompt-1.1.2.tgz#85b2f93896c5bd9e9f2d6ff0627fa5af3dc00923" + resolved "https://registry.npmjs.org/password-prompt/-/password-prompt-1.1.2.tgz" integrity sha512-bpuBhROdrhuN3E7G/koAju0WjVw9/uQOG5Co5mokNj0MiOSBVZS1JTwM4zl55hu0WFmIEFvO9cU9sJQiBIYeIA== dependencies: ansi-escapes "^3.1.0" @@ -20564,7 +20919,7 @@ password-prompt@^1.0.7, password-prompt@^1.1.2: patch-package@^6.2.2: version "6.5.1" - resolved "https://registry.yarnpkg.com/patch-package/-/patch-package-6.5.1.tgz#3e5d00c16997e6160291fee06a521c42ac99b621" + resolved "https://registry.npmjs.org/patch-package/-/patch-package-6.5.1.tgz" integrity sha512-I/4Zsalfhc6bphmJTlrLoOcAF87jcxko4q0qsv4bGcurbr8IskEOtdnt9iCmsQVGL1B+iUhSQqweyTLJfCF9rA== dependencies: "@yarnpkg/lockfile" "^1.1.0" @@ -20584,7 +20939,7 @@ patch-package@^6.2.2: path-case@^2.1.0: version "2.1.1" - resolved "https://registry.yarnpkg.com/path-case/-/path-case-2.1.1.tgz#94b8037c372d3fe2906e465bb45e25d226e8eea5" + resolved "https://registry.npmjs.org/path-case/-/path-case-2.1.1.tgz" integrity sha512-Ou0N05MioItesaLr9q8TtHVWmJ6fxWdqKB2RohFmNWVyJ+2zeKIeDNWAN6B/Pe7wpzWChhZX6nONYmOnMeJQ/Q== dependencies: no-case "^2.2.0" @@ -20596,49 +20951,49 @@ path-dirname@^1.0.0: path-exists@^2.0.0: version "2.1.0" - resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-2.1.0.tgz#0feb6c64f0fc518d9a754dd5efb62c7022761f4b" + resolved "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz" integrity sha512-yTltuKuhtNeFJKa1PiRzfLAU5182q1y4Eb4XCJ3PBqyzEDkAZRzBrKKBct682ls9reBVHf9udYLN5Nd+K1B9BQ== dependencies: pinkie-promise "^2.0.0" path-exists@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515" + resolved "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz" integrity sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ== path-exists@^4.0.0: version "4.0.0" - resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3" + resolved "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz" integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w== path-is-absolute@^1.0.0: version "1.0.1" - resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" + resolved "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz" integrity sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg== path-is-inside@^1.0.2: version "1.0.2" - resolved "https://registry.yarnpkg.com/path-is-inside/-/path-is-inside-1.0.2.tgz#365417dede44430d1c11af61027facf074bdfc53" + resolved "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz" integrity sha512-DUWJr3+ULp4zXmol/SZkFf3JGsS9/SIv+Y3Rt93/UjPpDpklB5f1er4O3POIbUuUJ3FXgqte2Q7SrU6zAqwk8w== path-key@^2.0.0, path-key@^2.0.1: version "2.0.1" - resolved "https://registry.yarnpkg.com/path-key/-/path-key-2.0.1.tgz#411cadb574c5a140d3a4b1910d40d80cc9f40b40" + resolved "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz" integrity sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw== path-key@^3.0.0, path-key@^3.1.0: version "3.1.1" - resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" + resolved "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz" integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== path-parse@^1.0.7: version "1.0.7" - resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735" + resolved "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz" integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== path-scurry@^1.10.1: version "1.10.1" - resolved "https://registry.yarnpkg.com/path-scurry/-/path-scurry-1.10.1.tgz#9ba6bf5aa8500fe9fd67df4f0d9483b2b0bfc698" + resolved "https://registry.npmjs.org/path-scurry/-/path-scurry-1.10.1.tgz" integrity sha512-MkhCqzzBEpPvxxQ71Md0b1Kk51W01lrYvlMzSUaIzNsODdd7mqhiimSZlr+VegAz5Z6Vzt9Xg2ttE//XBhH3EQ== dependencies: lru-cache "^9.1.1 || ^10.0.0" @@ -20646,24 +21001,24 @@ path-scurry@^1.10.1: path-to-regexp@0.1.7: version "0.1.7" - resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-0.1.7.tgz#df604178005f522f15eb4490e7247a1bfaa67f8c" + resolved "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz" integrity sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ== path-to-regexp@^1.8.0: version "1.8.0" - resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-1.8.0.tgz#887b3ba9d84393e87a0a0b9f4cb756198b53548a" + resolved "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-1.8.0.tgz" integrity sha512-n43JRhlUKUAlibEJhPeir1ncUID16QnEjNpwzNdO3Lm4ywrBpBZ5oLD0I6br9evr1Y9JTqwRtAh7JLoOzAQdVA== dependencies: isarray "0.0.1" path-to-regexp@^2.2.1: version "2.4.0" - resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-2.4.0.tgz#35ce7f333d5616f1c1e1bfe266c3aba2e5b2e704" + resolved "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-2.4.0.tgz" integrity sha512-G6zHoVqC6GGTQkZwF4lkuEyMbVOjoBKAEybQUypI1WTkqinCOrq2x6U2+phkJ1XsEMTy4LjtwPI7HW+NVrRR2w== path-type@^1.0.0: version "1.1.0" - resolved "https://registry.yarnpkg.com/path-type/-/path-type-1.1.0.tgz#59c44f7ee491da704da415da5a4070ba4f8fe441" + resolved "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz" integrity sha512-S4eENJz1pkiQn9Znv33Q+deTOKmbl+jj1Fl+qiP/vYezj+S8x+J3Uo0ISrx/QoEvIlOaDWJhPaRd1flJ9HXZqg== dependencies: graceful-fs "^4.1.2" @@ -20679,12 +21034,12 @@ path-type@^3.0.0: path-type@^4.0.0: version "4.0.0" - resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b" + resolved "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz" integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw== path@^0.12.7: version "0.12.7" - resolved "https://registry.yarnpkg.com/path/-/path-0.12.7.tgz#d4dc2a506c4ce2197eb481ebfcd5b36c0140b10f" + resolved "https://registry.npmjs.org/path/-/path-0.12.7.tgz" integrity sha512-aXXC6s+1w7otVF9UletFkFcDsJeO7lSZBPUQhtb5O0xJe8LtYhj/GxldoL09bBj9+ZmE2hNoHqQSFMN5fikh4Q== dependencies: process "^0.11.1" @@ -20692,12 +21047,12 @@ path@^0.12.7: pathval@^1.1.1: version "1.1.1" - resolved "https://registry.yarnpkg.com/pathval/-/pathval-1.1.1.tgz#8534e77a77ce7ac5a2512ea21e0fdb8fcf6c3d8d" + resolved "https://registry.npmjs.org/pathval/-/pathval-1.1.1.tgz" integrity sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ== pbkdf2@^3.0.17, pbkdf2@^3.0.3, pbkdf2@^3.0.9: version "3.1.2" - resolved "https://registry.yarnpkg.com/pbkdf2/-/pbkdf2-3.1.2.tgz#dd822aa0887580e52f1a039dc3eda108efae3075" + resolved "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.1.2.tgz" integrity sha512-iuh7L6jA7JEGu2WxDwtQP1ddOpaJNC4KlDEFfdQajSGgGPNi4OyDc2R7QnbY2bR9QjBVGwgvTdNJZoE7RaxUMA== dependencies: create-hash "^1.1.2" @@ -20708,57 +21063,67 @@ pbkdf2@^3.0.17, pbkdf2@^3.0.3, pbkdf2@^3.0.9: pend@~1.2.0: version "1.2.0" - resolved "https://registry.yarnpkg.com/pend/-/pend-1.2.0.tgz#7a57eb550a6783f9115331fcf4663d5c8e007a50" + resolved "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz" integrity sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg== performance-now@^2.1.0: version "2.1.0" - resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b" + resolved "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz" integrity sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow== +pg-cloudflare@^1.1.1: + version "1.1.1" + resolved "https://registry.npmjs.org/pg-cloudflare/-/pg-cloudflare-1.1.1.tgz" + integrity sha512-xWPagP/4B6BgFO+EKz3JONXv3YDgvkbVrGw2mTo3D6tVDQRh1e7cqVGvyR3BE+eQgAvx1XhW/iEASj4/jCWl3Q== + pg-connection-string@0.1.3: version "0.1.3" - resolved "https://registry.yarnpkg.com/pg-connection-string/-/pg-connection-string-0.1.3.tgz#da1847b20940e42ee1492beaf65d49d91b245df7" + resolved "https://registry.npmjs.org/pg-connection-string/-/pg-connection-string-0.1.3.tgz" integrity sha512-i0NV/CrSkFTaiOQs9AGy3tq0dkSjtTd4d7DfsjeDVZAA4aIHInwfFEmriNYGGJUfZ5x6IAC/QddoUpUJjQAi0w== -pg-connection-string@2.5.0, pg-connection-string@^2.5.0: - version "2.5.0" - resolved "https://registry.yarnpkg.com/pg-connection-string/-/pg-connection-string-2.5.0.tgz#538cadd0f7e603fc09a12590f3b8a452c2c0cf34" - integrity sha512-r5o/V/ORTA6TmUnyWZR9nCj1klXCO2CEKNRlVuJptZe85QuhFayC7WeMic7ndayT5IRIR0S0xFxFi2ousartlQ== +pg-connection-string@2.6.1: + version "2.6.1" + resolved "https://registry.npmjs.org/pg-connection-string/-/pg-connection-string-2.6.1.tgz" + integrity sha512-w6ZzNu6oMmIzEAYVw+RLK0+nqHPt8K3ZnknKi+g48Ak2pr3dtljJW3o+D/n2zzCG07Zoe9VOX3aiKpj+BN0pjg== + +pg-connection-string@^2.6.2: + version "2.6.2" + resolved "https://registry.npmjs.org/pg-connection-string/-/pg-connection-string-2.6.2.tgz" + integrity sha512-ch6OwaeaPYcova4kKZ15sbJ2hKb/VP48ZD2gE7i1J+L4MspCtBMAx8nMgz7bksc7IojCIIWuEhHibSMFH8m8oA== pg-int8@1.0.1: version "1.0.1" - resolved "https://registry.yarnpkg.com/pg-int8/-/pg-int8-1.0.1.tgz#943bd463bf5b71b4170115f80f8efc9a0c0eb78c" + resolved "https://registry.npmjs.org/pg-int8/-/pg-int8-1.0.1.tgz" integrity sha512-WCtabS6t3c8SkpDBUlb1kjOs7l66xsGdKpIPZsg4wR+B3+u9UAum2odSsF9tnvxg80h4ZxLWMy4pRjOsFIqQpw== pg-numeric@1.0.2: version "1.0.2" - resolved "https://registry.yarnpkg.com/pg-numeric/-/pg-numeric-1.0.2.tgz#816d9a44026086ae8ae74839acd6a09b0636aa3a" + resolved "https://registry.npmjs.org/pg-numeric/-/pg-numeric-1.0.2.tgz" integrity sha512-BM/Thnrw5jm2kKLE5uJkXqqExRUY/toLHda65XgFTBTFYZyopbKjBe29Ii3RbkvlsMoFwD+tHeGaCjjv0gHlyw== pg-packet-stream@^1.1.0: version "1.1.0" - resolved "https://registry.yarnpkg.com/pg-packet-stream/-/pg-packet-stream-1.1.0.tgz#e45c3ae678b901a2873af1e17b92d787962ef914" + resolved "https://registry.npmjs.org/pg-packet-stream/-/pg-packet-stream-1.1.0.tgz" integrity sha512-kRBH0tDIW/8lfnnOyTwKD23ygJ/kexQVXZs7gEyBljw4FYqimZFxnMMx50ndZ8In77QgfGuItS5LLclC2TtjYg== pg-pool@^2.0.10: version "2.0.10" - resolved "https://registry.yarnpkg.com/pg-pool/-/pg-pool-2.0.10.tgz#842ee23b04e86824ce9d786430f8365082d81c4a" + resolved "https://registry.npmjs.org/pg-pool/-/pg-pool-2.0.10.tgz" integrity sha512-qdwzY92bHf3nwzIUcj+zJ0Qo5lpG/YxchahxIN8+ZVmXqkahKXsnl2aiJPHLYN9o5mB/leG+Xh6XKxtP7e0sjg== -pg-pool@^3.6.0: - version "3.6.0" - resolved "https://registry.yarnpkg.com/pg-pool/-/pg-pool-3.6.0.tgz#3190df3e4747a0d23e5e9e8045bcd99bda0a712e" - integrity sha512-clFRf2ksqd+F497kWFyM21tMjeikn60oGDmqMT8UBrynEwVEX/5R5xd2sdvdo1cZCFlguORNpVuqxIj+aK4cfQ== +pg-pool@^3.6.1: + version "3.6.1" + resolved "https://registry.npmjs.org/pg-pool/-/pg-pool-3.6.1.tgz" + integrity sha512-jizsIzhkIitxCGfPRzJn1ZdcosIt3pz9Sh3V01fm1vZnbnCMgmGl5wvGGdNN2EL9Rmb0EcFoCkixH4Pu+sP9Og== pg-protocol@*, pg-protocol@^1.2.0, pg-protocol@^1.6.0: version "1.6.0" - resolved "https://registry.yarnpkg.com/pg-protocol/-/pg-protocol-1.6.0.tgz#4c91613c0315349363af2084608db843502f8833" + resolved "https://registry.npmjs.org/pg-protocol/-/pg-protocol-1.6.0.tgz" integrity sha512-M+PDm637OY5WM307051+bsDia5Xej6d9IR4GwJse1qA1DIhiKlksvrneZOYQq42OM+spubpcNYEo2FcKQrDk+Q== pg-types@^2.1.0, pg-types@^2.2.0: version "2.2.0" - resolved "https://registry.yarnpkg.com/pg-types/-/pg-types-2.2.0.tgz#2d0250d636454f7cfa3b6ae0382fdfa8063254a3" + resolved "https://registry.npmjs.org/pg-types/-/pg-types-2.2.0.tgz" integrity sha512-qTAAlrEsl8s4OiEQY69wDvcMIdQN6wdz5ojQiOy6YRMuynxenON0O5oCpJI6lshc6scgAY8qvJ2On/p+CXY0GA== dependencies: pg-int8 "1.0.1" @@ -20769,7 +21134,7 @@ pg-types@^2.1.0, pg-types@^2.2.0: pg-types@^4.0.1: version "4.0.1" - resolved "https://registry.yarnpkg.com/pg-types/-/pg-types-4.0.1.tgz#31857e89d00a6c66b06a14e907c3deec03889542" + resolved "https://registry.npmjs.org/pg-types/-/pg-types-4.0.1.tgz" integrity sha512-hRCSDuLII9/LE3smys1hRHcu5QGcLs9ggT7I/TCs0IE+2Eesxi9+9RWAAwZ0yaGjxoWICF/YHLOEjydGujoJ+g== dependencies: pg-int8 "1.0.1" @@ -20782,7 +21147,7 @@ pg-types@^4.0.1: pg@^7.18.0: version "7.18.2" - resolved "https://registry.yarnpkg.com/pg/-/pg-7.18.2.tgz#4e219f05a00aff4db6aab1ba02f28ffa4513b0bb" + resolved "https://registry.npmjs.org/pg/-/pg-7.18.2.tgz" integrity sha512-Mvt0dGYMwvEADNKy5PMQGlzPudKcKKzJds/VbOeZJpb6f/pI3mmoXX0JksPgI3l3JPP/2Apq7F36O63J7mgveA== dependencies: buffer-writer "2.0.0" @@ -20795,123 +21160,125 @@ pg@^7.18.0: semver "4.3.2" pg@^8.2.1: - version "8.10.0" - resolved "https://registry.yarnpkg.com/pg/-/pg-8.10.0.tgz#5b8379c9b4a36451d110fc8cd98fc325fe62ad24" - integrity sha512-ke7o7qSTMb47iwzOSaZMfeR7xToFdkE71ifIipOAAaLIM0DYzfOAXlgFFmYUIE2BcJtvnVlGCID84ZzCegE8CQ== + version "8.11.3" + resolved "https://registry.npmjs.org/pg/-/pg-8.11.3.tgz" + integrity sha512-+9iuvG8QfaaUrrph+kpF24cXkH1YOOUeArRNYIxq1viYHZagBxrTno7cecY1Fa44tJeZvaoG+Djpkc3JwehN5g== dependencies: buffer-writer "2.0.0" packet-reader "1.0.0" - pg-connection-string "^2.5.0" - pg-pool "^3.6.0" + pg-connection-string "^2.6.2" + pg-pool "^3.6.1" pg-protocol "^1.6.0" pg-types "^2.1.0" pgpass "1.x" + optionalDependencies: + pg-cloudflare "^1.1.1" pgpass@1.x: version "1.0.5" - resolved "https://registry.yarnpkg.com/pgpass/-/pgpass-1.0.5.tgz#9b873e4a564bb10fa7a7dbd55312728d422a223d" + resolved "https://registry.npmjs.org/pgpass/-/pgpass-1.0.5.tgz" integrity sha512-FdW9r/jQZhSeohs1Z3sI1yxFQNFvMcnmfuj4WBMUTxOrAyLMaTcE1aAMBiTlbMNaXvBCQuVi0R7hd8udDSP7ug== dependencies: split2 "^4.1.0" picocolors@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.0.0.tgz#cb5bdc74ff3f51892236eaf79d68bc44564ab81c" + resolved "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz" integrity sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ== picomatch@^2.0.4, picomatch@^2.0.7, picomatch@^2.2.1, picomatch@^2.2.3, picomatch@^2.3.1: version "2.3.1" - resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" + resolved "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz" integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== pify@^2.0.0, pify@^2.3.0: version "2.3.0" - resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c" + resolved "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz" integrity sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog== pify@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/pify/-/pify-3.0.0.tgz#e5a4acd2c101fdf3d9a4d07f0dbc4db49dd28176" + resolved "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz" integrity sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg== pify@^4.0.0, pify@^4.0.1: version "4.0.1" - resolved "https://registry.yarnpkg.com/pify/-/pify-4.0.1.tgz#4b2cd25c50d598735c50292224fd8c6df41e3231" + resolved "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz" integrity sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g== pify@^5.0.0: version "5.0.0" - resolved "https://registry.yarnpkg.com/pify/-/pify-5.0.0.tgz#1f5eca3f5e87ebec28cc6d54a0e4aaf00acc127f" + resolved "https://registry.npmjs.org/pify/-/pify-5.0.0.tgz" integrity sha512-eW/gHNMlxdSP6dmG6uJip6FXN0EQBwm2clYYd8Wul42Cwu/DK8HEftzsapcNdYe2MfLiIwZqsDk2RDEsTE79hA== pinkie-promise@^2.0.0: version "2.0.1" - resolved "https://registry.yarnpkg.com/pinkie-promise/-/pinkie-promise-2.0.1.tgz#2135d6dfa7a358c069ac9b178776288228450ffa" + resolved "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz" integrity sha512-0Gni6D4UcLTbv9c57DfxDGdr41XfgUjqWZu492f0cIGr16zDU06BWP/RAEvOuo7CQ0CNjHaLlM59YJJFm3NWlw== dependencies: pinkie "^2.0.0" pinkie@^2.0.0: version "2.0.4" - resolved "https://registry.yarnpkg.com/pinkie/-/pinkie-2.0.4.tgz#72556b80cfa0d48a974e80e77248e80ed4f7f870" + resolved "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz" integrity sha512-MnUuEycAemtSaeFSjXKW/aroV7akBbY+Sv+RkyqFjgAe73F+MR0TBWKBRDkmfWq/HiFmdavfZ1G7h4SPZXaCSg== pirates@^4.0.4: version "4.0.5" - resolved "https://registry.yarnpkg.com/pirates/-/pirates-4.0.5.tgz#feec352ea5c3268fb23a37c702ab1699f35a5f3b" + resolved "https://registry.npmjs.org/pirates/-/pirates-4.0.5.tgz" integrity sha512-8V9+HQPupnaXMA23c5hvl69zXvTwTzyAYasnkb0Tts4XvO4CliqONMOnvlq26rkhLC3nWDFBJf73LU1e1VZLaQ== pkg-dir@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-3.0.0.tgz#2749020f239ed990881b1f71210d51eb6523bea3" + resolved "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz" integrity sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw== dependencies: find-up "^3.0.0" pkg-dir@^4.2.0: version "4.2.0" - resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-4.2.0.tgz#f099133df7ede422e81d1d8448270eeb3e4261f3" + resolved "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz" integrity sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ== dependencies: find-up "^4.0.0" pkg-up@^3.1.0: version "3.1.0" - resolved "https://registry.yarnpkg.com/pkg-up/-/pkg-up-3.1.0.tgz#100ec235cc150e4fd42519412596a28512a0def5" + resolved "https://registry.npmjs.org/pkg-up/-/pkg-up-3.1.0.tgz" integrity sha512-nDywThFk1i4BQK4twPQ6TA4RT8bDY96yeuCVBWL3ePARCiEKDRSrNGbFIgUJpLp+XeIR65v8ra7WuJOFUBtkMA== dependencies: find-up "^3.0.0" please-upgrade-node@^3.2.0: version "3.2.0" - resolved "https://registry.yarnpkg.com/please-upgrade-node/-/please-upgrade-node-3.2.0.tgz#aeddd3f994c933e4ad98b99d9a556efa0e2fe942" + resolved "https://registry.npmjs.org/please-upgrade-node/-/please-upgrade-node-3.2.0.tgz" integrity sha512-gQR3WpIgNIKwBMVLkpMUeR3e1/E1y42bqDQZfql+kDeXd8COYfM8PQA4X6y7a8u9Ua9FHmsrrmirW2vHs45hWg== dependencies: semver-compare "^1.0.0" pluralize@^7.0.0: version "7.0.0" - resolved "https://registry.yarnpkg.com/pluralize/-/pluralize-7.0.0.tgz#298b89df8b93b0221dbf421ad2b1b1ea23fc6777" + resolved "https://registry.npmjs.org/pluralize/-/pluralize-7.0.0.tgz" integrity sha512-ARhBOdzS3e41FbkW/XWrTEtukqqLoK5+Z/4UeDaLuSW+39JPeFgs4gCGqsrJHVZX0fUrx//4OF0K1CUGwlIFow== pluralize@^8.0.0: version "8.0.0" - resolved "https://registry.yarnpkg.com/pluralize/-/pluralize-8.0.0.tgz#1a6fa16a38d12a1901e0320fa017051c539ce3b1" + resolved "https://registry.npmjs.org/pluralize/-/pluralize-8.0.0.tgz" integrity sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA== pngjs@^3.3.0: version "3.4.0" - resolved "https://registry.yarnpkg.com/pngjs/-/pngjs-3.4.0.tgz#99ca7d725965fb655814eaf65f38f12bbdbf555f" + resolved "https://registry.npmjs.org/pngjs/-/pngjs-3.4.0.tgz" integrity sha512-NCrCHhWmnQklfH4MtJMRjZ2a8c80qXeMlQMv2uVp9ISJMTt562SbGd6n2oq0PaPgKm7Z6pL9E2UlLIhC+SHL3w== popper.js@1.14.3: version "1.14.3" - resolved "https://registry.yarnpkg.com/popper.js/-/popper.js-1.14.3.tgz#1438f98d046acf7b4d78cd502bf418ac64d4f095" + resolved "https://registry.npmjs.org/popper.js/-/popper.js-1.14.3.tgz" integrity sha512-3lmujhsHXzb83+sI0PzfrE3O1XHZG8m8MXNMTupvA6LrM1/nnsiqYaacYc/RIente9VqnTDPztGEM8uvPAMGyg== portfinder@^1.0.23, portfinder@^1.0.32: version "1.0.32" - resolved "https://registry.yarnpkg.com/portfinder/-/portfinder-1.0.32.tgz#2fe1b9e58389712429dc2bea5beb2146146c7f81" + resolved "https://registry.npmjs.org/portfinder/-/portfinder-1.0.32.tgz" integrity sha512-on2ZJVVDXRADWE6jnQaX0ioEylzgBpQk8r55NE4wjXW1ZxO+BgDlY6DXwj20i0V8eB4SenDQ00WEaxfiIQPcxg== dependencies: async "^2.6.4" @@ -20925,56 +21292,56 @@ posix-character-classes@^0.1.0: postgres-array@~2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/postgres-array/-/postgres-array-2.0.0.tgz#48f8fce054fbc69671999329b8834b772652d82e" + resolved "https://registry.npmjs.org/postgres-array/-/postgres-array-2.0.0.tgz" integrity sha512-VpZrUqU5A69eQyW2c5CA1jtLecCsN2U/bD6VilrFDWq5+5UIEVO7nazS3TEcHf1zuPYO/sqGvUvW62g86RXZuA== postgres-array@~3.0.1: version "3.0.2" - resolved "https://registry.yarnpkg.com/postgres-array/-/postgres-array-3.0.2.tgz#68d6182cb0f7f152a7e60dc6a6889ed74b0a5f98" + resolved "https://registry.npmjs.org/postgres-array/-/postgres-array-3.0.2.tgz" integrity sha512-6faShkdFugNQCLwucjPcY5ARoW1SlbnrZjmGl0IrrqewpvxvhSLHimCVzqeuULCbG0fQv7Dtk1yDbG3xv7Veog== postgres-bytea@~1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/postgres-bytea/-/postgres-bytea-1.0.0.tgz#027b533c0aa890e26d172d47cf9ccecc521acd35" + resolved "https://registry.npmjs.org/postgres-bytea/-/postgres-bytea-1.0.0.tgz" integrity sha512-xy3pmLuQqRBZBXDULy7KbaitYqLcmxigw14Q5sj8QBVLqEwXfeybIKVWiqAXTlcvdvb0+xkOtDbfQMOf4lST1w== postgres-bytea@~3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/postgres-bytea/-/postgres-bytea-3.0.0.tgz#9048dc461ac7ba70a6a42d109221619ecd1cb089" + resolved "https://registry.npmjs.org/postgres-bytea/-/postgres-bytea-3.0.0.tgz" integrity sha512-CNd4jim9RFPkObHSjVHlVrxoVQXz7quwNFpz7RY1okNNme49+sVyiTvTRobiLV548Hx/hb1BG+iE7h9493WzFw== dependencies: obuf "~1.1.2" postgres-date@~1.0.4: version "1.0.7" - resolved "https://registry.yarnpkg.com/postgres-date/-/postgres-date-1.0.7.tgz#51bc086006005e5061c591cee727f2531bf641a8" + resolved "https://registry.npmjs.org/postgres-date/-/postgres-date-1.0.7.tgz" integrity sha512-suDmjLVQg78nMK2UZ454hAG+OAW+HQPZ6n++TNDUX+L0+uUlLywnoxJKDou51Zm+zTCjrCl0Nq6J9C5hP9vK/Q== postgres-date@~2.0.1: version "2.0.1" - resolved "https://registry.yarnpkg.com/postgres-date/-/postgres-date-2.0.1.tgz#638b62e5c33764c292d37b08f5257ecb09231457" + resolved "https://registry.npmjs.org/postgres-date/-/postgres-date-2.0.1.tgz" integrity sha512-YtMKdsDt5Ojv1wQRvUhnyDJNSr2dGIC96mQVKz7xufp07nfuFONzdaowrMHjlAzY6GDLd4f+LUHHAAM1h4MdUw== postgres-interval@^1.1.0: version "1.2.0" - resolved "https://registry.yarnpkg.com/postgres-interval/-/postgres-interval-1.2.0.tgz#b460c82cb1587507788819a06aa0fffdb3544695" + resolved "https://registry.npmjs.org/postgres-interval/-/postgres-interval-1.2.0.tgz" integrity sha512-9ZhXKM/rw350N1ovuWHbGxnGh/SNJ4cnxHiM0rxE4VN41wsg8P8zWn9hv/buK00RP4WvlOyr/RBDiptyxVbkZQ== dependencies: xtend "^4.0.0" postgres-interval@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/postgres-interval/-/postgres-interval-3.0.0.tgz#baf7a8b3ebab19b7f38f07566c7aab0962f0c86a" + resolved "https://registry.npmjs.org/postgres-interval/-/postgres-interval-3.0.0.tgz" integrity sha512-BSNDnbyZCXSxgA+1f5UU2GmwhoI0aU5yMxRGO8CdFEcY2BQF9xm/7MqKnYoM1nJDk8nONNWDk9WeSmePFhQdlw== postgres-range@^1.1.1: version "1.1.3" - resolved "https://registry.yarnpkg.com/postgres-range/-/postgres-range-1.1.3.tgz#9ccd7b01ca2789eb3c2e0888b3184225fa859f76" + resolved "https://registry.npmjs.org/postgres-range/-/postgres-range-1.1.3.tgz" integrity sha512-VdlZoocy5lCP0c/t66xAfclglEapXPCIVhqqJRncYpvbCgImF0w67aPKfbqUMr72tO2k5q0TdTZwCLjPTI6C9g== pouchdb-abstract-mapreduce@7.3.1: version "7.3.1" - resolved "https://registry.yarnpkg.com/pouchdb-abstract-mapreduce/-/pouchdb-abstract-mapreduce-7.3.1.tgz#96ff4a0f41cbe273f3f52fde003b719005a2093c" + resolved "https://registry.npmjs.org/pouchdb-abstract-mapreduce/-/pouchdb-abstract-mapreduce-7.3.1.tgz" integrity sha512-0zKXVFBvrfc1KnN0ggrB762JDmZnUpePHywo9Bq3Jy+L1FnoG7fXM5luFfvv5/T0gEw+ZTIwoocZECMnESBI9w== dependencies: pouchdb-binary-utils "7.3.1" @@ -20988,7 +21355,7 @@ pouchdb-abstract-mapreduce@7.3.1: pouchdb-adapter-leveldb-core@7.3.1: version "7.3.1" - resolved "https://registry.yarnpkg.com/pouchdb-adapter-leveldb-core/-/pouchdb-adapter-leveldb-core-7.3.1.tgz#3c71dce7ff06c2e483d873d7aabc1fded56372ca" + resolved "https://registry.npmjs.org/pouchdb-adapter-leveldb-core/-/pouchdb-adapter-leveldb-core-7.3.1.tgz" integrity sha512-mxShHlqLMPz2gChrgtA9okV1ogFmQrRAoM/O4EN0CrQWPLXqYtpL1f7sI2asIvFe7SmpnvbLx7kkZyFmLTfwjA== dependencies: argsarray "0.0.1" @@ -21008,7 +21375,7 @@ pouchdb-adapter-leveldb-core@7.3.1: pouchdb-adapter-memory@^7.1.1: version "7.3.1" - resolved "https://registry.yarnpkg.com/pouchdb-adapter-memory/-/pouchdb-adapter-memory-7.3.1.tgz#7be4b0601326cb93eb1141ed910fdfdf40c36616" + resolved "https://registry.npmjs.org/pouchdb-adapter-memory/-/pouchdb-adapter-memory-7.3.1.tgz" integrity sha512-iHdWGJAHONqQv0we3Oi1MYen69ZS8McLW9wUyaAYcWTJnAIIAr2ZM0/TeTDVSHfMUwYqEYk7X8jRtJZEMwLnwg== dependencies: memdown "1.4.1" @@ -21017,7 +21384,7 @@ pouchdb-adapter-memory@^7.1.1: pouchdb-adapter-utils@7.3.1: version "7.3.1" - resolved "https://registry.yarnpkg.com/pouchdb-adapter-utils/-/pouchdb-adapter-utils-7.3.1.tgz#7237cb597f8d337057df15d4859bfe3c881d8832" + resolved "https://registry.npmjs.org/pouchdb-adapter-utils/-/pouchdb-adapter-utils-7.3.1.tgz" integrity sha512-uKLG6dClwTs/sLIJ4WkLAi9wlnDBpOnfyhpeAgOjlOGN/XLz5nKHrA4UJRnURDyc+uv79S9r/Unc4hVpmbSPUw== dependencies: pouchdb-binary-utils "7.3.1" @@ -21029,38 +21396,38 @@ pouchdb-adapter-utils@7.3.1: pouchdb-binary-utils@7.3.1: version "7.3.1" - resolved "https://registry.yarnpkg.com/pouchdb-binary-utils/-/pouchdb-binary-utils-7.3.1.tgz#eea22d9a5f880fcd95062476f4f5484cdf61496f" + resolved "https://registry.npmjs.org/pouchdb-binary-utils/-/pouchdb-binary-utils-7.3.1.tgz" integrity sha512-crZJNfAEOnUoRk977Qtmk4cxEv6sNKllQ6vDDKgQrQLFjMUXma35EHzNyIJr1s76J77Q4sqKQAmxz9Y40yHGtw== dependencies: buffer-from "1.1.2" pouchdb-collate@7.3.1: version "7.3.1" - resolved "https://registry.yarnpkg.com/pouchdb-collate/-/pouchdb-collate-7.3.1.tgz#19d7b87dd173d1c765da8cc9987c5aa9eb24f11f" + resolved "https://registry.npmjs.org/pouchdb-collate/-/pouchdb-collate-7.3.1.tgz" integrity sha512-o4gyGqDMLMSNzf6EDTr3eHaH/JRMoqRhdc+eV+oA8u00nTBtr9wD+jypVe2LbgKLJ4NWqx2qVkXiTiQdUFtsLQ== pouchdb-collections@7.3.1: version "7.3.1" - resolved "https://registry.yarnpkg.com/pouchdb-collections/-/pouchdb-collections-7.3.1.tgz#4f1819cf4dd6936a422c29f7fa26a9b5dca428f5" + resolved "https://registry.npmjs.org/pouchdb-collections/-/pouchdb-collections-7.3.1.tgz" integrity sha512-yUyDqR+OJmtwgExOSJegpBJXDLAEC84TWnbAYycyh+DZoA51Yw0+XVQF5Vh8Ii90/Ut2xo88fmrmp0t6kqom8w== pouchdb-debug@^7.1.1: version "7.2.1" - resolved "https://registry.yarnpkg.com/pouchdb-debug/-/pouchdb-debug-7.2.1.tgz#f5f869f6113c12ccb97cddf5b0a32b6e0e67e961" + resolved "https://registry.npmjs.org/pouchdb-debug/-/pouchdb-debug-7.2.1.tgz" integrity sha512-eP3ht/AKavLF2RjTzBM6S9gaI2/apcW6xvaKRQhEdOfiANqerFuksFqHCal3aikVQuDO+cB/cw+a4RyJn/glBw== dependencies: debug "3.1.0" pouchdb-errors@7.3.1: version "7.3.1" - resolved "https://registry.yarnpkg.com/pouchdb-errors/-/pouchdb-errors-7.3.1.tgz#78be36721e2edc446fac158a236a9218c7bcdb14" + resolved "https://registry.npmjs.org/pouchdb-errors/-/pouchdb-errors-7.3.1.tgz" integrity sha512-Zktz4gnXEUcZcty8FmyvtYUYsHskoST05m6H5/E2gg/0mCfEXq/XeyyLkZHaZmqD0ZPS9yNmASB1VaFWEKEaDw== dependencies: inherits "2.0.4" pouchdb-fetch@7.3.1: version "7.3.1" - resolved "https://registry.yarnpkg.com/pouchdb-fetch/-/pouchdb-fetch-7.3.1.tgz#d54b1807be0f0a5d4b6d06e416c7d54952bbc348" + resolved "https://registry.npmjs.org/pouchdb-fetch/-/pouchdb-fetch-7.3.1.tgz" integrity sha512-205xAtvdHRPQ4fp1h9+RmT9oQabo9gafuPmWsS9aEl3ER54WbY8Vaj1JHZGbU4KtMTYvW7H5088zLS7Nrusuag== dependencies: abort-controller "3.0.0" @@ -21069,7 +21436,7 @@ pouchdb-fetch@7.3.1: pouchdb-find@^7.0.0: version "7.3.1" - resolved "https://registry.yarnpkg.com/pouchdb-find/-/pouchdb-find-7.3.1.tgz#07a633d5ee2bd731dae9f991281cd25212088d29" + resolved "https://registry.npmjs.org/pouchdb-find/-/pouchdb-find-7.3.1.tgz" integrity sha512-AeqUfAVY1c7IFaY36BRT0vIz9r4VTKq/YOWTmiqndOZUQ/pDGxyO2fNFal6NN3PyYww0JijlD377cPvhnrhJVA== dependencies: pouchdb-abstract-mapreduce "7.3.1" @@ -21082,14 +21449,14 @@ pouchdb-find@^7.0.0: pouchdb-json@7.3.1: version "7.3.1" - resolved "https://registry.yarnpkg.com/pouchdb-json/-/pouchdb-json-7.3.1.tgz#a80a3060aa2914959e4dca7a4e2022ab20c7119a" + resolved "https://registry.npmjs.org/pouchdb-json/-/pouchdb-json-7.3.1.tgz" integrity sha512-AyOKsmc85/GtHjMZyEacqzja8qLVfycS1hh1oskR+Bm5PIITX52Fb8zyi0hEetV6VC0yuGbn0RqiLjJxQePeqQ== dependencies: vuvuzela "1.0.3" pouchdb-mapreduce-utils@7.3.1: version "7.3.1" - resolved "https://registry.yarnpkg.com/pouchdb-mapreduce-utils/-/pouchdb-mapreduce-utils-7.3.1.tgz#f0ac2c8400fbedb705e9226082453ac7d3f2a066" + resolved "https://registry.npmjs.org/pouchdb-mapreduce-utils/-/pouchdb-mapreduce-utils-7.3.1.tgz" integrity sha512-oUMcq82+4pTGQ6dtrhgORHOVHZSr6w/5tFIUGlv7RABIDvJarL4snMawADjlpiEwPdiQ/ESG8Fqt8cxqvqsIgg== dependencies: argsarray "0.0.1" @@ -21099,7 +21466,7 @@ pouchdb-mapreduce-utils@7.3.1: pouchdb-md5@7.3.1: version "7.3.1" - resolved "https://registry.yarnpkg.com/pouchdb-md5/-/pouchdb-md5-7.3.1.tgz#70fae44f9d27eb4c6a8e7106156b4593d31c1762" + resolved "https://registry.npmjs.org/pouchdb-md5/-/pouchdb-md5-7.3.1.tgz" integrity sha512-aDV8ui/mprnL3xmt0gT/81DFtTtJiKyn+OxIAbwKPMfz/rDFdPYvF0BmDC9QxMMzGfkV+JJUjU6at0PPs2mRLg== dependencies: pouchdb-binary-utils "7.3.1" @@ -21107,12 +21474,12 @@ pouchdb-md5@7.3.1: pouchdb-merge@7.3.1: version "7.3.1" - resolved "https://registry.yarnpkg.com/pouchdb-merge/-/pouchdb-merge-7.3.1.tgz#97aae682d7d8499b62b6ce234dcb9527c7bf6f02" + resolved "https://registry.npmjs.org/pouchdb-merge/-/pouchdb-merge-7.3.1.tgz" integrity sha512-FeK3r35mKimokf2PQ2tUI523QWyZ4lYZ0Yd75FfSch/SPY6wIokz5XBZZ6PHdu5aOJsEKzoLUxr8CpSg9DhcAw== pouchdb-selector-core@7.3.1: version "7.3.1" - resolved "https://registry.yarnpkg.com/pouchdb-selector-core/-/pouchdb-selector-core-7.3.1.tgz#08245662de3d61f16ab8dae2b56ef622935b3fb3" + resolved "https://registry.npmjs.org/pouchdb-selector-core/-/pouchdb-selector-core-7.3.1.tgz" integrity sha512-HBX+nNGXcaL9z0uNpwSMRq2GNZd3EZXW+fe9rJHS0hvJohjZL7aRJLoaXfEdHPRTNW+CpjM3Rny60eGekQdI/w== dependencies: pouchdb-collate "7.3.1" @@ -21120,7 +21487,7 @@ pouchdb-selector-core@7.3.1: pouchdb-utils@7.3.1: version "7.3.1" - resolved "https://registry.yarnpkg.com/pouchdb-utils/-/pouchdb-utils-7.3.1.tgz#d25f0a034427f388ba5ae37d9ae3fbed210e8720" + resolved "https://registry.npmjs.org/pouchdb-utils/-/pouchdb-utils-7.3.1.tgz" integrity sha512-R3hHBo1zTdTu/NFs3iqkcaQAPwhIH0gMIdfVKd5lbDYlmP26rCG5pdS+v7NuoSSFLJ4xxnaGV+Gjf4duYsJ8wQ== dependencies: argsarray "0.0.1" @@ -21134,7 +21501,7 @@ pouchdb-utils@7.3.1: pouchdb@7.3.0: version "7.3.0" - resolved "https://registry.yarnpkg.com/pouchdb/-/pouchdb-7.3.0.tgz#440fbef12dfd8f9002320802528665e883a3b7f8" + resolved "https://registry.npmjs.org/pouchdb/-/pouchdb-7.3.0.tgz" integrity sha512-OwsIQGXsfx3TrU1pLruj6PGSwFH+h5k4hGNxFkZ76Um7/ZI8F5TzUHFrpldVVIhfXYi2vP31q0q7ot1FSLFYOw== dependencies: abort-controller "3.0.0" @@ -21160,7 +21527,7 @@ pouchdb@7.3.0: prebuild-install@^6.0.0: version "6.1.4" - resolved "https://registry.yarnpkg.com/prebuild-install/-/prebuild-install-6.1.4.tgz#ae3c0142ad611d58570b89af4986088a4937e00f" + resolved "https://registry.npmjs.org/prebuild-install/-/prebuild-install-6.1.4.tgz" integrity sha512-Z4vpywnK1lBg+zdPCVCsKq0xO66eEV9rWo2zrROGGiRS4JtueBOdlB1FnY8lcy7JsUud/Q3ijUxyWN26Ika0vQ== dependencies: detect-libc "^1.0.3" @@ -21179,7 +21546,7 @@ prebuild-install@^6.0.0: prebuild-install@^7.0.1, prebuild-install@^7.1.1: version "7.1.1" - resolved "https://registry.yarnpkg.com/prebuild-install/-/prebuild-install-7.1.1.tgz#de97d5b34a70a0c81334fd24641f2a1702352e45" + resolved "https://registry.npmjs.org/prebuild-install/-/prebuild-install-7.1.1.tgz" integrity sha512-jAXscXWMcCK8GgCoHOfIr0ODh5ai8mj63L2nWrjuAgXE6tDyYGnx4/8o/rCgU+B4JSyZBKbeZqzhtwtC3ovxjw== dependencies: detect-libc "^2.0.0" @@ -21197,32 +21564,32 @@ prebuild-install@^7.0.1, prebuild-install@^7.1.1: precond@0.2: version "0.2.3" - resolved "https://registry.yarnpkg.com/precond/-/precond-0.2.3.tgz#aa9591bcaa24923f1e0f4849d240f47efc1075ac" + resolved "https://registry.npmjs.org/precond/-/precond-0.2.3.tgz" integrity sha512-QCYG84SgGyGzqJ/vlMsxeXd/pgL/I94ixdNFyh1PusWmTCyVfPJjZ1K1jvHtsbfnXQs2TSkEP2fR7QiMZAnKFQ== prelude-ls@~1.1.2: version "1.1.2" - resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54" + resolved "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz" integrity sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w== prepend-http@^1.0.1: version "1.0.4" - resolved "https://registry.yarnpkg.com/prepend-http/-/prepend-http-1.0.4.tgz#d4f4562b0ce3696e41ac52d0e002e57a635dc6dc" + resolved "https://registry.npmjs.org/prepend-http/-/prepend-http-1.0.4.tgz" integrity sha512-PhmXi5XmoyKw1Un4E+opM2KcsJInDvKyuOumcjjw3waw86ZNjHwVUOOWLc4bCzLdcKNaWBH9e99sbWzDQsVaYg== prepend-http@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/prepend-http/-/prepend-http-2.0.0.tgz#e92434bfa5ea8c19f41cdfd401d741a3c819d897" + resolved "https://registry.npmjs.org/prepend-http/-/prepend-http-2.0.0.tgz" integrity sha512-ravE6m9Atw9Z/jjttRUZ+clIXogdghyZAuWJ3qEzjT+jI/dL1ifAqhZeC5VHzQp1MSt1+jxKkFNemj/iO7tVUA== preserve@^0.2.0: version "0.2.0" - resolved "https://registry.yarnpkg.com/preserve/-/preserve-0.2.0.tgz#815ed1f6ebc65926f865b310c0713bcb3315ce4b" + resolved "https://registry.npmjs.org/preserve/-/preserve-0.2.0.tgz" integrity sha512-s/46sYeylUfHNjI+sA/78FAHlmIuKqI9wNnzEOGehAlUUYeObv5C2mOinXBjyUyWmJ2SfcS2/ydApH4hTF4WXQ== prettier-plugin-java@^1.6.2: version "1.6.2" - resolved "https://registry.yarnpkg.com/prettier-plugin-java/-/prettier-plugin-java-1.6.2.tgz#ffa361eaa50056254eb6d3dbd53d449a5f281229" + resolved "https://registry.npmjs.org/prettier-plugin-java/-/prettier-plugin-java-1.6.2.tgz" integrity sha512-oVIUOkx50eb9skdRtEIU7MJUsizQ1ZocgXR1w1o8AnieNGpuPI/2pWnpjtbBm9wUG1dHtBGU8cVIr8h+xgzQIg== dependencies: java-parser "2.0.2" @@ -21231,7 +21598,7 @@ prettier-plugin-java@^1.6.2: prettier-plugin-solidity@1.0.0-alpha.35: version "1.0.0-alpha.35" - resolved "https://registry.yarnpkg.com/prettier-plugin-solidity/-/prettier-plugin-solidity-1.0.0-alpha.35.tgz#922ccad3c6c11c721997a52edbc3d0d8bbcde845" + resolved "https://registry.npmjs.org/prettier-plugin-solidity/-/prettier-plugin-solidity-1.0.0-alpha.35.tgz" integrity sha512-zxmCPSA1dECxYZ4JySMzOKocjELB/gvsWsFynYluhwZx6VOHSc3Iu0PesrUkxXd8a7bz31qc9MD7m76VjpsNVA== dependencies: dir-to-object "^2.0.0" @@ -21245,7 +21612,7 @@ prettier-plugin-solidity@1.0.0-alpha.35: prettier-plugin-solidity@^1.0.0-dev.23: version "1.1.3" - resolved "https://registry.yarnpkg.com/prettier-plugin-solidity/-/prettier-plugin-solidity-1.1.3.tgz#9a35124f578404caf617634a8cab80862d726cba" + resolved "https://registry.npmjs.org/prettier-plugin-solidity/-/prettier-plugin-solidity-1.1.3.tgz" integrity sha512-fQ9yucPi2sBbA2U2Xjh6m4isUTJ7S7QLc/XDDsktqqxYfTwdYKJ0EnnywXHwCGAaYbQNK+HIYPL1OemxuMsgeg== dependencies: "@solidity-parser/parser" "^0.16.0" @@ -21254,22 +21621,31 @@ prettier-plugin-solidity@^1.0.0-dev.23: prettier@1.19.1, prettier@^1.14.2, prettier@^1.14.3, prettier@^1.15.3: version "1.19.1" - resolved "https://registry.yarnpkg.com/prettier/-/prettier-1.19.1.tgz#f7d7f5ff8a9cd872a7be4ca142095956a60797cb" + resolved "https://registry.npmjs.org/prettier/-/prettier-1.19.1.tgz" integrity sha512-s7PoyDv/II1ObgQunCbB9PdLmUcBZcnWOcxDh7O0N/UwDEsHyqkW+Qh28jW+mVuCdx7gLB0BotYI1Y6uI9iyew== prettier@2.3.1: version "2.3.1" - resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.3.1.tgz#76903c3f8c4449bc9ac597acefa24dc5ad4cbea6" + resolved "https://registry.npmjs.org/prettier/-/prettier-2.3.1.tgz" integrity sha512-p+vNbgpLjif/+D+DwAZAbndtRrR0md0MwfmOVN9N+2RgyACMT+7tfaRnT+WDPkqnuVwleyuBIG2XBxKDme3hPA== prettier@^2.7.1: version "2.8.7" - resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.8.7.tgz#bb79fc8729308549d28fe3a98fce73d2c0656450" + resolved "https://registry.npmjs.org/prettier/-/prettier-2.8.7.tgz" integrity sha512-yPngTo3aXUUmyuTjeTUT75txrf+aMh9FiD7q9ZE/i6r0bPb22g4FsE6Y338PQX1bmfy08i9QQCB7/rcUAVntfw== -pretty-format@^29.0.0, pretty-format@^29.5.0: +pretty-format@^29.0.0, pretty-format@^29.7.0: + version "29.7.0" + resolved "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz" + integrity sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ== + dependencies: + "@jest/schemas" "^29.6.3" + ansi-styles "^5.0.0" + react-is "^18.0.0" + +pretty-format@^29.5.0: version "29.5.0" - resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-29.5.0.tgz#283134e74f70e2e3e7229336de0e4fce94ccde5a" + resolved "https://registry.npmjs.org/pretty-format/-/pretty-format-29.5.0.tgz" integrity sha512-V2mGkI31qdttvTFX7Mt4efOqHXqJWMu4/r66Xh3Z3BwZaPfPJgp6/gbwoujRpPUtfEF6AUUWx3Jim3GCw5g/Qw== dependencies: "@jest/schemas" "^29.4.3" @@ -21278,7 +21654,7 @@ pretty-format@^29.0.0, pretty-format@^29.5.0: pretty-quick@^2.0.1: version "2.0.2" - resolved "https://registry.yarnpkg.com/pretty-quick/-/pretty-quick-2.0.2.tgz#4e44d6489ed513ef111bee501f63688d854584e6" + resolved "https://registry.npmjs.org/pretty-quick/-/pretty-quick-2.0.2.tgz" integrity sha512-aLb6vtOTEfJDwi1w+MBTeE20GwPVUYyn6IqNg6TtGpiOB1W3y6vKcsGFjqGeaaEtQgMLSPXTWONqh33UBuwG8A== dependencies: chalk "^2.4.2" @@ -21290,74 +21666,74 @@ pretty-quick@^2.0.1: proc-log@^2.0.0, proc-log@^2.0.1: version "2.0.1" - resolved "https://registry.yarnpkg.com/proc-log/-/proc-log-2.0.1.tgz#8f3f69a1f608de27878f91f5c688b225391cb685" + resolved "https://registry.npmjs.org/proc-log/-/proc-log-2.0.1.tgz" integrity sha512-Kcmo2FhfDTXdcbfDH76N7uBYHINxc/8GW7UAVuVP9I+Va3uHSerrnKV6dLooga/gh7GlgzuCCr/eoldnL1muGw== process-nextick-args@~1.0.6: version "1.0.7" - resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-1.0.7.tgz#150e20b756590ad3f91093f25a4f2ad8bff30ba3" + resolved "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz" integrity sha512-yN0WQmuCX63LP/TMvAg31nvT6m4vDqJEiiv2CAZqWOGNWutc9DfDk1NPYYmKUFmaVM2UwDowH4u5AHWYP/jxKw== process-nextick-args@~2.0.0: version "2.0.1" - resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2" + resolved "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz" integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag== process@^0.10.0: version "0.10.1" - resolved "https://registry.yarnpkg.com/process/-/process-0.10.1.tgz#842457cc51cfed72dc775afeeafb8c6034372725" + resolved "https://registry.npmjs.org/process/-/process-0.10.1.tgz" integrity sha512-dyIett8dgGIZ/TXKUzeYExt7WA6ldDzys9vTDU/cCA9L17Ypme+KzS+NjQCjpn9xsvi/shbMC+yP/BcFMBz0NA== process@^0.11.1, process@^0.11.10: version "0.11.10" - resolved "https://registry.yarnpkg.com/process/-/process-0.11.10.tgz#7332300e840161bda3e69a1d1d91a7d4bc16f182" + resolved "https://registry.npmjs.org/process/-/process-0.11.10.tgz" integrity sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A== progress@^1.1.8: version "1.1.8" - resolved "https://registry.yarnpkg.com/progress/-/progress-1.1.8.tgz#e260c78f6161cdd9b0e56cc3e0a85de17c7a57be" + resolved "https://registry.npmjs.org/progress/-/progress-1.1.8.tgz" integrity sha512-UdA8mJ4weIkUBO224tIarHzuHs4HuYiJvsuGT7j/SPQiUJVjYvNDBIPa0hAorduOfjGohB/qHWRa/lrrWX/mXw== progress@^2.0.0, progress@^2.0.3: version "2.0.3" - resolved "https://registry.yarnpkg.com/progress/-/progress-2.0.3.tgz#7e8cf8d8f5b8f239c1bc68beb4eb78567d572ef8" + resolved "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz" integrity sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA== prom-client@12.0.0: version "12.0.0" - resolved "https://registry.yarnpkg.com/prom-client/-/prom-client-12.0.0.tgz#9689379b19bd3f6ab88a9866124db9da3d76c6ed" + resolved "https://registry.npmjs.org/prom-client/-/prom-client-12.0.0.tgz" integrity sha512-JbzzHnw0VDwCvoqf8y1WDtq4wSBAbthMB1pcVI/0lzdqHGJI3KBJDXle70XK+c7Iv93Gihqo0a5LlOn+g8+DrQ== dependencies: tdigest "^0.1.1" promise-all-reject-late@^1.0.0: version "1.0.1" - resolved "https://registry.yarnpkg.com/promise-all-reject-late/-/promise-all-reject-late-1.0.1.tgz#f8ebf13483e5ca91ad809ccc2fcf25f26f8643c2" + resolved "https://registry.npmjs.org/promise-all-reject-late/-/promise-all-reject-late-1.0.1.tgz" integrity sha512-vuf0Lf0lOxyQREH7GDIOUMLS7kz+gs8i6B+Yi8dC68a2sychGrHTJYghMBD6k7eUcH0H5P73EckCA48xijWqXw== promise-breaker@^5.0.0: version "5.0.0" - resolved "https://registry.yarnpkg.com/promise-breaker/-/promise-breaker-5.0.0.tgz#58e8541f1619554057da95a211794d7834d30c1d" + resolved "https://registry.npmjs.org/promise-breaker/-/promise-breaker-5.0.0.tgz" integrity sha512-mgsWQuG4kJ1dtO6e/QlNDLFtMkMzzecsC69aI5hlLEjGHFNpHrvGhFi4LiK5jg2SMQj74/diH+wZliL9LpGsyA== promise-breaker@^6.0.0: version "6.0.0" - resolved "https://registry.yarnpkg.com/promise-breaker/-/promise-breaker-6.0.0.tgz#107d2b70f161236abdb4ac5a736c7eb8df489d0f" + resolved "https://registry.npmjs.org/promise-breaker/-/promise-breaker-6.0.0.tgz" integrity sha512-BthzO9yTPswGf7etOBiHCVuugs2N01/Q/94dIPls48z2zCmrnDptUUZzfIb+41xq0MnYZ/BzmOd6ikDR4ibNZA== promise-call-limit@^1.0.1: version "1.0.2" - resolved "https://registry.yarnpkg.com/promise-call-limit/-/promise-call-limit-1.0.2.tgz#f64b8dd9ef7693c9c7613e7dfe8d6d24de3031ea" + resolved "https://registry.npmjs.org/promise-call-limit/-/promise-call-limit-1.0.2.tgz" integrity sha512-1vTUnfI2hzui8AEIixbdAJlFY4LFDXqQswy/2eOlThAscXCY4It8FdVuI0fMJGAB2aWGbdQf/gv0skKYXmdrHA== promise-inflight@^1.0.1: version "1.0.1" - resolved "https://registry.yarnpkg.com/promise-inflight/-/promise-inflight-1.0.1.tgz#98472870bf228132fcbdd868129bad12c3c029e3" + resolved "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz" integrity sha512-6zWPyEOFaQBJYcGMHBKTKJ3u6TBsnMFOIZSa6ce1e/ZrrsOlnHRHbabMjLiBYKp+n44X9eUI6VUPaukCXHuG4g== promise-retry@^2.0.1: version "2.0.1" - resolved "https://registry.yarnpkg.com/promise-retry/-/promise-retry-2.0.1.tgz#ff747a13620ab57ba688f5fc67855410c370da22" + resolved "https://registry.npmjs.org/promise-retry/-/promise-retry-2.0.1.tgz" integrity sha512-y+WKFlBR8BGXnsNlIHFGPZmyDf3DFMoLhaflAnyZgV6rG6xu+JwesTo2Q9R6XwYmtmwAFCkAk3e35jEdoeh/3g== dependencies: err-code "^2.0.2" @@ -21365,7 +21741,7 @@ promise-retry@^2.0.1: promise-to-callback@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/promise-to-callback/-/promise-to-callback-1.0.0.tgz#5d2a749010bfb67d963598fcd3960746a68feef7" + resolved "https://registry.npmjs.org/promise-to-callback/-/promise-to-callback-1.0.0.tgz" integrity sha512-uhMIZmKM5ZteDMfLgJnoSq9GCwsNKrYau73Awf1jIy6/eUcuuZ3P+CD9zUv0kJsIUbU+x6uLNIhXhLHDs1pNPA== dependencies: is-fn "^1.0.0" @@ -21373,7 +21749,7 @@ promise-to-callback@^1.0.0: promise.allsettled@1.0.2: version "1.0.2" - resolved "https://registry.yarnpkg.com/promise.allsettled/-/promise.allsettled-1.0.2.tgz#d66f78fbb600e83e863d893e98b3d4376a9c47c9" + resolved "https://registry.npmjs.org/promise.allsettled/-/promise.allsettled-1.0.2.tgz" integrity sha512-UpcYW5S1RaNKT6pd+s9jp9K9rlQge1UXKskec0j6Mmuq7UJCvlS2J2/s/yuPN8ehftf9HXMxWlKiPbGGUzpoRg== dependencies: array.prototype.map "^1.0.1" @@ -21383,15 +21759,15 @@ promise.allsettled@1.0.2: iterate-value "^1.0.0" promise.allsettled@^1.0.2: - version "1.0.6" - resolved "https://registry.yarnpkg.com/promise.allsettled/-/promise.allsettled-1.0.6.tgz#8dc8ba8edf429feb60f8e81335b920e109c94b6e" - integrity sha512-22wJUOD3zswWFqgwjNHa1965LvqTX87WPu/lreY2KSd7SVcERfuZ4GfUaOnJNnvtoIv2yXT/W00YIGMetXtFXg== + version "1.0.7" + resolved "https://registry.npmjs.org/promise.allsettled/-/promise.allsettled-1.0.7.tgz" + integrity sha512-hezvKvQQmsFkOdrZfYxUxkyxl8mgFQeT259Ajj9PXdbg9VzBCWrItOev72JyWxkCD5VSSqAeHmlN3tWx4DlmsA== dependencies: array.prototype.map "^1.0.5" call-bind "^1.0.2" - define-properties "^1.1.4" - es-abstract "^1.20.4" - get-intrinsic "^1.1.3" + define-properties "^1.2.0" + es-abstract "^1.22.1" + get-intrinsic "^1.2.1" iterate-value "^1.0.2" promise@^8.0.0: @@ -21403,7 +21779,7 @@ promise@^8.0.0: prompt@1.2.0: version "1.2.0" - resolved "https://registry.yarnpkg.com/prompt/-/prompt-1.2.0.tgz#5d8f1d9011766bac07abde510dbf4338d87b4f02" + resolved "https://registry.npmjs.org/prompt/-/prompt-1.2.0.tgz" integrity sha512-iGerYRpRUg5ZyC+FJ/25G5PUKuWAGRjW1uOlhX7Pi3O5YygdK6R+KEaBjRbHSkU5vfS5PZCltSPZdDtUYwRCZA== dependencies: async "~0.9.0" @@ -21414,7 +21790,7 @@ prompt@1.2.0: prompts@1.2.0: version "1.2.0" - resolved "https://registry.yarnpkg.com/prompts/-/prompts-1.2.0.tgz#598f7722032fb6c399beb24533129d00604c7007" + resolved "https://registry.npmjs.org/prompts/-/prompts-1.2.0.tgz" integrity sha512-g+I6Cer6EefDTawQhGHpdX98nhD7KQrRqyRgKCb+Sc+GG4P64EWRe5DZE402ZNkwrItf97Asf0L1z0g3waOgAA== dependencies: kleur "^2.0.1" @@ -21422,7 +21798,7 @@ prompts@1.2.0: prompts@^2.0.1: version "2.4.2" - resolved "https://registry.yarnpkg.com/prompts/-/prompts-2.4.2.tgz#7b57e73b3a48029ad10ebd44f74b01722a4cb069" + resolved "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz" integrity sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q== dependencies: kleur "^3.0.3" @@ -21430,33 +21806,33 @@ prompts@^2.0.1: promzard@^0.3.0: version "0.3.0" - resolved "https://registry.yarnpkg.com/promzard/-/promzard-0.3.0.tgz#26a5d6ee8c7dee4cb12208305acfb93ba382a9ee" + resolved "https://registry.npmjs.org/promzard/-/promzard-0.3.0.tgz" integrity sha512-JZeYqd7UAcHCwI+sTOeUDYkvEU+1bQ7iE0UT1MgB/tERkAPkesW46MrpIySzODi+owTjZtiF8Ay5j9m60KmMBw== dependencies: read "1" proto-list@~1.2.1: version "1.2.4" - resolved "https://registry.yarnpkg.com/proto-list/-/proto-list-1.2.4.tgz#212d5bfe1318306a420f6402b8e26ff39647a849" + resolved "https://registry.npmjs.org/proto-list/-/proto-list-1.2.4.tgz" integrity sha512-vtK/94akxsTMhe0/cbfpR+syPuszcuwhqVjJq26CuNDgFGj682oRBXOP5MJpv2r7JtE8MsiepGIqvvOTBwn2vA== proto3-json-serializer@^0.1.8: version "0.1.9" - resolved "https://registry.yarnpkg.com/proto3-json-serializer/-/proto3-json-serializer-0.1.9.tgz#705ddb41b009dd3e6fcd8123edd72926abf65a34" + resolved "https://registry.npmjs.org/proto3-json-serializer/-/proto3-json-serializer-0.1.9.tgz" integrity sha512-A60IisqvnuI45qNRygJjrnNjX2TMdQGMY+57tR3nul3ZgO2zXkR9OGR8AXxJhkqx84g0FTnrfi3D5fWMSdANdQ== dependencies: protobufjs "^6.11.2" proto3-json-serializer@^1.0.0: version "1.1.1" - resolved "https://registry.yarnpkg.com/proto3-json-serializer/-/proto3-json-serializer-1.1.1.tgz#1b5703152b6ce811c5cdcc6468032caf53521331" + resolved "https://registry.npmjs.org/proto3-json-serializer/-/proto3-json-serializer-1.1.1.tgz" integrity sha512-AwAuY4g9nxx0u52DnSMkqqgyLHaW/XaPLtaAo3y/ZCfeaQB/g4YDH4kb8Wc/mWzWvu0YjOznVnfn373MVZZrgw== dependencies: protobufjs "^7.0.0" protobufjs-cli@1.1.1: version "1.1.1" - resolved "https://registry.yarnpkg.com/protobufjs-cli/-/protobufjs-cli-1.1.1.tgz#f531201b1c8c7772066aa822bf9a08318b24a704" + resolved "https://registry.npmjs.org/protobufjs-cli/-/protobufjs-cli-1.1.1.tgz" integrity sha512-VPWMgIcRNyQwWUv8OLPyGQ/0lQY/QTQAVN5fh+XzfDwsVw1FZ2L3DM/bcBf8WPiRz2tNpaov9lPZfNcmNo6LXA== dependencies: chalk "^4.0.0" @@ -21472,7 +21848,7 @@ protobufjs-cli@1.1.1: protobufjs@6.11.2: version "6.11.2" - resolved "https://registry.yarnpkg.com/protobufjs/-/protobufjs-6.11.2.tgz#de39fabd4ed32beaa08e9bb1e30d08544c1edf8b" + resolved "https://registry.npmjs.org/protobufjs/-/protobufjs-6.11.2.tgz" integrity sha512-4BQJoPooKJl2G9j3XftkIXjoC9C0Av2NOrWmbLWT1vH32GcSUHjM0Arra6UfTsVyfMAuFzaLucXn1sadxJydAw== dependencies: "@protobufjs/aspromise" "^1.1.2" @@ -21489,9 +21865,9 @@ protobufjs@6.11.2: "@types/node" ">=13.7.0" long "^4.0.0" -protobufjs@6.11.3, protobufjs@^6.10.0, protobufjs@^6.11.2, protobufjs@^6.11.3, protobufjs@^6.8.0, protobufjs@^6.8.1, protobufjs@^6.8.6, protobufjs@^6.8.8: +protobufjs@6.11.3: version "6.11.3" - resolved "https://registry.yarnpkg.com/protobufjs/-/protobufjs-6.11.3.tgz#637a527205a35caa4f3e2a9a4a13ddffe0e7af74" + resolved "https://registry.npmjs.org/protobufjs/-/protobufjs-6.11.3.tgz" integrity sha512-xL96WDdCZYdU7Slin569tFX712BxsxslWwAfAhCYjQKGTq7dAU91Lomy6nLLhh/dyGhk/YH4TwTSRxTzhuHyZg== dependencies: "@protobufjs/aspromise" "^1.1.2" @@ -21508,9 +21884,9 @@ protobufjs@6.11.3, protobufjs@^6.10.0, protobufjs@^6.11.2, protobufjs@^6.11.3, p "@types/node" ">=13.7.0" long "^4.0.0" -protobufjs@7.2.4, protobufjs@^7.2.2, protobufjs@^7.2.3: +protobufjs@7.2.4, protobufjs@^7.2.3: version "7.2.4" - resolved "https://registry.yarnpkg.com/protobufjs/-/protobufjs-7.2.4.tgz#3fc1ec0cdc89dd91aef9ba6037ba07408485c3ae" + resolved "https://registry.npmjs.org/protobufjs/-/protobufjs-7.2.4.tgz" integrity sha512-AT+RJgD2sH8phPmCf7OUZR8xGdcJRga4+1cOaXJ64hvcSkVhNcRHOwIxUatPH15+nj59WAGTDv3LSGZPEQbJaQ== dependencies: "@protobufjs/aspromise" "^1.1.2" @@ -21528,7 +21904,7 @@ protobufjs@7.2.4, protobufjs@^7.2.2, protobufjs@^7.2.3: protobufjs@^5.0.3: version "5.0.3" - resolved "https://registry.yarnpkg.com/protobufjs/-/protobufjs-5.0.3.tgz#e4dfe9fb67c90b2630d15868249bcc4961467a17" + resolved "https://registry.npmjs.org/protobufjs/-/protobufjs-5.0.3.tgz" integrity sha512-55Kcx1MhPZX0zTbVosMQEO5R6/rikNXd9b6RQK4KSPcrSIIwoXTtebIczUrXlwaSrbz4x8XUVThGPob1n8I4QA== dependencies: ascli "~1" @@ -21536,9 +21912,28 @@ protobufjs@^5.0.3: glob "^7.0.5" yargs "^3.10.0" +protobufjs@^6.10.0, protobufjs@^6.11.2, protobufjs@^6.11.3, protobufjs@^6.8.0, protobufjs@^6.8.1, protobufjs@^6.8.6, protobufjs@^6.8.8: + version "6.11.4" + resolved "https://registry.npmjs.org/protobufjs/-/protobufjs-6.11.4.tgz" + integrity sha512-5kQWPaJHi1WoCpjTGszzQ32PG2F4+wRY6BmAT4Vfw56Q2FZ4YZzK20xUYQH4YkfehY1e6QSICrJquM6xXZNcrw== + dependencies: + "@protobufjs/aspromise" "^1.1.2" + "@protobufjs/base64" "^1.1.2" + "@protobufjs/codegen" "^2.0.4" + "@protobufjs/eventemitter" "^1.1.0" + "@protobufjs/fetch" "^1.1.0" + "@protobufjs/float" "^1.0.2" + "@protobufjs/inquire" "^1.1.0" + "@protobufjs/path" "^1.1.2" + "@protobufjs/pool" "^1.1.0" + "@protobufjs/utf8" "^1.1.0" + "@types/long" "^4.0.1" + "@types/node" ">=13.7.0" + long "^4.0.0" + protobufjs@^7.0.0: version "7.2.3" - resolved "https://registry.yarnpkg.com/protobufjs/-/protobufjs-7.2.3.tgz#01af019e40d9c6133c49acbb3ff9e30f4f0f70b2" + resolved "https://registry.npmjs.org/protobufjs/-/protobufjs-7.2.3.tgz" integrity sha512-TtpvOqwB5Gdz/PQmOjgsrGH1nHjAQVCN7JG4A6r1sXRWESL5rNMAiRcBQlCAdKxZcAbstExQePYG8xof/JVRgg== dependencies: "@protobufjs/aspromise" "^1.1.2" @@ -21554,14 +21949,32 @@ protobufjs@^7.0.0: "@types/node" ">=13.7.0" long "^5.0.0" +protobufjs@^7.2.2: + version "7.2.5" + resolved "https://registry.npmjs.org/protobufjs/-/protobufjs-7.2.5.tgz" + integrity sha512-gGXRSXvxQ7UiPgfw8gevrfRWcTlSbOFg+p/N+JVJEK5VhueL2miT6qTymqAmjr1Q5WbOCyJbyrk6JfWKwlFn6A== + dependencies: + "@protobufjs/aspromise" "^1.1.2" + "@protobufjs/base64" "^1.1.2" + "@protobufjs/codegen" "^2.0.4" + "@protobufjs/eventemitter" "^1.1.0" + "@protobufjs/fetch" "^1.1.0" + "@protobufjs/float" "^1.0.2" + "@protobufjs/inquire" "^1.1.0" + "@protobufjs/path" "^1.1.2" + "@protobufjs/pool" "^1.1.0" + "@protobufjs/utf8" "^1.1.0" + "@types/node" ">=13.7.0" + long "^5.0.0" + protocols@^2.0.0, protocols@^2.0.1: version "2.0.1" - resolved "https://registry.yarnpkg.com/protocols/-/protocols-2.0.1.tgz#8f155da3fc0f32644e83c5782c8e8212ccf70a86" + resolved "https://registry.npmjs.org/protocols/-/protocols-2.0.1.tgz" integrity sha512-/XJ368cyBJ7fzLMwLKv1e4vLxOju2MNAIokcr7meSaNcVbWz/CPcW22cP04mwxOErdA5mwjA8Q6w/cdAQxVn7Q== proxy-addr@~2.0.7: version "2.0.7" - resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-2.0.7.tgz#f19fe69ceab311eeb94b42e70e8c2070f9ba1025" + resolved "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz" integrity sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg== dependencies: forwarded "0.2.0" @@ -21569,7 +21982,7 @@ proxy-addr@~2.0.7: proxy-agent@^5.0.0: version "5.0.0" - resolved "https://registry.yarnpkg.com/proxy-agent/-/proxy-agent-5.0.0.tgz#d31405c10d6e8431fde96cba7a0c027ce01d633b" + resolved "https://registry.npmjs.org/proxy-agent/-/proxy-agent-5.0.0.tgz" integrity sha512-gkH7BkvLVkSfX9Dk27W6TyNOWWZWRilRfk1XxGNWOYJ2TuedAv1yFpCaU9QSBmBe716XOTNpYNOzhysyw8xn7g== dependencies: agent-base "^6.0.0" @@ -21582,27 +21995,27 @@ proxy-agent@^5.0.0: socks-proxy-agent "^5.0.0" proxy-agent@^6.3.0: - version "6.3.0" - resolved "https://registry.yarnpkg.com/proxy-agent/-/proxy-agent-6.3.0.tgz#72f7bb20eb06049db79f7f86c49342c34f9ba08d" - integrity sha512-0LdR757eTj/JfuU7TL2YCuAZnxWXu3tkJbg4Oq3geW/qFNT/32T0sp2HnZ9O0lMR4q3vwAt0+xCA8SR0WAD0og== + version "6.3.1" + resolved "https://registry.npmjs.org/proxy-agent/-/proxy-agent-6.3.1.tgz" + integrity sha512-Rb5RVBy1iyqOtNl15Cw/llpeLH8bsb37gM1FUfKQ+Wck6xHlbAhWGUFiTRHtkjqGTA5pSHz6+0hrPW/oECihPQ== dependencies: agent-base "^7.0.2" debug "^4.3.4" http-proxy-agent "^7.0.0" - https-proxy-agent "^7.0.0" + https-proxy-agent "^7.0.2" lru-cache "^7.14.1" - pac-proxy-agent "^7.0.0" + pac-proxy-agent "^7.0.1" proxy-from-env "^1.1.0" - socks-proxy-agent "^8.0.1" + socks-proxy-agent "^8.0.2" proxy-from-env@^1.0.0, proxy-from-env@^1.1.0: version "1.1.0" - resolved "https://registry.yarnpkg.com/proxy-from-env/-/proxy-from-env-1.1.0.tgz#e102f16ca355424865755d2c9e8ea4f24d58c3e2" + resolved "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz" integrity sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg== proxyquire@^2.1.0: version "2.1.3" - resolved "https://registry.yarnpkg.com/proxyquire/-/proxyquire-2.1.3.tgz#2049a7eefa10a9a953346a18e54aab2b4268df39" + resolved "https://registry.npmjs.org/proxyquire/-/proxyquire-2.1.3.tgz" integrity sha512-BQWfCqYM+QINd+yawJz23tbBM40VIGXOdDw3X344KcclI/gtBbdWF6SlQ4nK/bYhF9d27KYug9WzljHC6B9Ysg== dependencies: fill-keys "^1.0.2" @@ -21611,22 +22024,22 @@ proxyquire@^2.1.0: prr@~1.0.1: version "1.0.1" - resolved "https://registry.yarnpkg.com/prr/-/prr-1.0.1.tgz#d3fc114ba06995a45ec6893f484ceb1d78f5f476" + resolved "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz" integrity sha512-yPw4Sng1gWghHQWj0B3ZggWUm4qVbPwPFcRG8KyxiU7J2OHFSoEHKS+EZ3fv5l1t9CyCiop6l/ZYeWbrgoQejw== pseudomap@^1.0.1: version "1.0.2" - resolved "https://registry.yarnpkg.com/pseudomap/-/pseudomap-1.0.2.tgz#f052a28da70e618917ef0a8ac34c1ae5a68286b3" + resolved "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz" integrity sha512-b/YwNhb8lk1Zz2+bXXpS/LK9OisiZZ1SNsSLxN1x2OXVEhW2Ckr/7mWE5vrC1ZTiJlD9g19jWszTmJsB+oEpFQ== psl@^1.1.28, psl@^1.1.33: version "1.9.0" - resolved "https://registry.yarnpkg.com/psl/-/psl-1.9.0.tgz#d0df2a137f00794565fcaf3b2c00cd09f8d5a5a7" + resolved "https://registry.npmjs.org/psl/-/psl-1.9.0.tgz" integrity sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag== public-encrypt@^4.0.0: version "4.0.3" - resolved "https://registry.yarnpkg.com/public-encrypt/-/public-encrypt-4.0.3.tgz#4fcc9d77a07e48ba7527e7cbe0de33d0701331e0" + resolved "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.3.tgz" integrity sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q== dependencies: bn.js "^4.1.0" @@ -21638,7 +22051,7 @@ public-encrypt@^4.0.0: pump@^1.0.0: version "1.0.3" - resolved "https://registry.yarnpkg.com/pump/-/pump-1.0.3.tgz#5dfe8311c33bbf6fc18261f9f34702c47c08a954" + resolved "https://registry.npmjs.org/pump/-/pump-1.0.3.tgz" integrity sha512-8k0JupWme55+9tCVE+FS5ULT3K6AbgqrGa58lTT49RpyfwwcGedHqaC5LlQNdEAumn/wFsu6aPwkuPMioy8kqw== dependencies: end-of-stream "^1.1.0" @@ -21646,7 +22059,7 @@ pump@^1.0.0: pump@^2.0.0: version "2.0.1" - resolved "https://registry.yarnpkg.com/pump/-/pump-2.0.1.tgz#12399add6e4cf7526d973cbc8b5ce2e2908b3909" + resolved "https://registry.npmjs.org/pump/-/pump-2.0.1.tgz" integrity sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA== dependencies: end-of-stream "^1.1.0" @@ -21654,7 +22067,7 @@ pump@^2.0.0: pump@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/pump/-/pump-3.0.0.tgz#b4a2116815bde2f4e1ea602354e8c75565107a64" + resolved "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz" integrity sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww== dependencies: end-of-stream "^1.1.0" @@ -21662,7 +22075,7 @@ pump@^3.0.0: pumpify@^1.5.1: version "1.5.1" - resolved "https://registry.yarnpkg.com/pumpify/-/pumpify-1.5.1.tgz#36513be246ab27570b1a374a5ce278bfd74370ce" + resolved "https://registry.npmjs.org/pumpify/-/pumpify-1.5.1.tgz" integrity sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ== dependencies: duplexify "^3.6.0" @@ -21671,7 +22084,7 @@ pumpify@^1.5.1: pumpify@^2.0.0: version "2.0.1" - resolved "https://registry.yarnpkg.com/pumpify/-/pumpify-2.0.1.tgz#abfc7b5a621307c728b551decbbefb51f0e4aa1e" + resolved "https://registry.npmjs.org/pumpify/-/pumpify-2.0.1.tgz" integrity sha512-m7KOje7jZxrmutanlkS1daj1dS6z6BgslzOXmcSEpIlCxM3VJH7lG5QLeck/6hgF6F4crFf01UtQmNsJfweTAw== dependencies: duplexify "^4.1.1" @@ -21680,49 +22093,49 @@ pumpify@^2.0.0: punycode@1.3.2: version "1.3.2" - resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.3.2.tgz#9653a036fb7c1ee42342f2325cceefea3926c48d" + resolved "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz" integrity sha512-RofWgt/7fL5wP1Y7fxE7/EmTLzQVnB0ycyibJ0OOHIlJqTNzglYFxVwETOcIoJqJmpDXJ9xImDv+Fq34F/d4Dw== punycode@2.1.0: version "2.1.0" - resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.0.tgz#5f863edc89b96db09074bad7947bf09056ca4e7d" + resolved "https://registry.npmjs.org/punycode/-/punycode-2.1.0.tgz" integrity sha512-Yxz2kRwT90aPiWEMHVYnEf4+rhwF1tBmmZ4KepCP+Wkium9JxtWnUm1nqGwpiAHr/tnTSeHqr3wb++jgSkXjhA== punycode@^1.3.2: version "1.4.1" - resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e" + resolved "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz" integrity sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ== punycode@^2.1.0, punycode@^2.1.1: version "2.3.0" - resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.3.0.tgz#f67fa67c94da8f4d0cfff981aee4118064199b8f" + resolved "https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz" integrity sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA== pupa@^2.0.1, pupa@^2.1.1: version "2.1.1" - resolved "https://registry.yarnpkg.com/pupa/-/pupa-2.1.1.tgz#f5e8fd4afc2c5d97828faa523549ed8744a20d62" + resolved "https://registry.npmjs.org/pupa/-/pupa-2.1.1.tgz" integrity sha512-l1jNAspIBSFqbT+y+5FosojNpVpF94nlI+wDUpqP9enwOTfHx9f0gh5nB96vl+6yTpsJsypeNrwfzPrKuHB41A== dependencies: escape-goat "^2.0.0" pure-rand@^5.0.1: version "5.0.5" - resolved "https://registry.yarnpkg.com/pure-rand/-/pure-rand-5.0.5.tgz#bda2a7f6a1fc0f284d78d78ca5902f26f2ad35cf" + resolved "https://registry.npmjs.org/pure-rand/-/pure-rand-5.0.5.tgz" integrity sha512-BwQpbqxSCBJVpamI6ydzcKqyFmnd5msMWUGvzXLm1aXvusbbgkbOto/EUPM00hjveJEaJtdbhUjKSzWRhQVkaw== pure-rand@^6.0.0: version "6.0.1" - resolved "https://registry.yarnpkg.com/pure-rand/-/pure-rand-6.0.1.tgz#31207dddd15d43f299fdcdb2f572df65030c19af" + resolved "https://registry.npmjs.org/pure-rand/-/pure-rand-6.0.1.tgz" integrity sha512-t+x1zEHDjBwkDGY5v5ApnZ/utcd4XYDiJsaQQoptTXgUXX95sDg1elCdJghzicm7n2mbCBJ3uYWr6M22SO19rg== pvutils@^1.1.3: version "1.1.3" - resolved "https://registry.yarnpkg.com/pvutils/-/pvutils-1.1.3.tgz#f35fc1d27e7cd3dfbd39c0826d173e806a03f5a3" + resolved "https://registry.npmjs.org/pvutils/-/pvutils-1.1.3.tgz" integrity sha512-pMpnA0qRdFp32b1sJl1wOJNxZLQ2cbQx+k6tjNtZ8CpvVhNqEPRgivZ2WOUev2YMajecdH7ctUPDvEe87nariQ== q@^1.5.1: version "1.5.1" - resolved "https://registry.yarnpkg.com/q/-/q-1.5.1.tgz#7e32f75b41381291d04611f1bf14109ac00651d7" + resolved "https://registry.npmjs.org/q/-/q-1.5.1.tgz" integrity sha512-kV/CThkXo6xyFEZUugw/+pIOywXcDbFYgSct5cT3gqlbkBE1SJdwy6UQoZvodiWF/ckQLZyDE/Bu1M6gVu5lVw== qqjs@^0.3.10: @@ -21746,7 +22159,7 @@ qqjs@^0.3.10: qrcode@1.4.4: version "1.4.4" - resolved "https://registry.yarnpkg.com/qrcode/-/qrcode-1.4.4.tgz#f0c43568a7e7510a55efc3b88d9602f71963ea83" + resolved "https://registry.npmjs.org/qrcode/-/qrcode-1.4.4.tgz" integrity sha512-oLzEC5+NKFou9P0bMj5+v6Z40evexeE29Z9cummZXZ9QXyMr3lphkURzxjXgPJC5azpxcshoDWV1xE46z+/c3Q== dependencies: buffer "^5.4.3" @@ -21759,26 +22172,33 @@ qrcode@1.4.4: qs@6.11.0: version "6.11.0" - resolved "https://registry.yarnpkg.com/qs/-/qs-6.11.0.tgz#fd0d963446f7a65e1367e01abd85429453f0c37a" + resolved "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz" integrity sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q== dependencies: side-channel "^1.0.4" -qs@^6.11.0, qs@^6.4.0, qs@^6.5.2, qs@^6.6.0, qs@^6.7.0: +qs@^6.11.0, qs@^6.4.0, qs@^6.5.2, qs@^6.6.0: + version "6.11.2" + resolved "https://registry.npmjs.org/qs/-/qs-6.11.2.tgz" + integrity sha512-tDNIz22aBzCDxLtVH++VnTfzxlfeK5CbqohpSqpJgj1Wg/cQbStNAz3NuqCs5vV+pjBsK4x4pN9HlVh7rcYRiA== + dependencies: + side-channel "^1.0.4" + +qs@^6.7.0: version "6.11.1" - resolved "https://registry.yarnpkg.com/qs/-/qs-6.11.1.tgz#6c29dff97f0c0060765911ba65cbc9764186109f" + resolved "https://registry.npmjs.org/qs/-/qs-6.11.1.tgz" integrity sha512-0wsrzgTz/kAVIeuxSjnpGC56rzYtr6JT/2BwEvMaPhFIoYa1aGO8LbzuU1R0uUYQkLpWBTOj0l/CLAJB64J6nQ== dependencies: side-channel "^1.0.4" qs@~6.5.2: version "6.5.3" - resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.3.tgz#3aeeffc91967ef6e35c0e488ef46fb296ab76aad" + resolved "https://registry.npmjs.org/qs/-/qs-6.5.3.tgz" integrity sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA== query-string@^5.0.1: version "5.1.1" - resolved "https://registry.yarnpkg.com/query-string/-/query-string-5.1.1.tgz#a78c012b71c17e05f2e3fa2319dd330682efb3cb" + resolved "https://registry.npmjs.org/query-string/-/query-string-5.1.1.tgz" integrity sha512-gjWOsm2SoGlgLEdAGt7a6slVOk9mGiXmPFMqrEhLQ68rhQuBnpfs3+EmlvqKyxnCo9/PPlF+9MtY02S1aFg+Jw== dependencies: decode-uri-component "^0.2.0" @@ -21787,37 +22207,37 @@ query-string@^5.0.1: querystring@0.2.0: version "0.2.0" - resolved "https://registry.yarnpkg.com/querystring/-/querystring-0.2.0.tgz#b209849203bb25df820da756e747005878521620" + resolved "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz" integrity sha512-X/xY82scca2tau62i9mDyU9K+I+djTMUsvwf7xnUX5GLvVzgJybOJf4Y6o9Zx3oJK/LSXg5tTZBjwzqVPaPO2g== querystring@^0.2.0: version "0.2.1" - resolved "https://registry.yarnpkg.com/querystring/-/querystring-0.2.1.tgz#40d77615bb09d16902a85c3e38aa8b5ed761c2dd" + resolved "https://registry.npmjs.org/querystring/-/querystring-0.2.1.tgz" integrity sha512-wkvS7mL/JMugcup3/rMitHmd9ecIGd2lhFhK9N3UUQ450h66d1r3Y9nvXzQAW1Lq+wyx61k/1pfKS5KuKiyEbg== querystringify@^2.0.0, querystringify@^2.1.1: version "2.2.0" - resolved "https://registry.yarnpkg.com/querystringify/-/querystringify-2.2.0.tgz#3345941b4153cb9d082d8eee4cda2016a9aef7f6" + resolved "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz" integrity sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ== queue-microtask@^1.2.2, queue-microtask@^1.2.3: version "1.2.3" - resolved "https://registry.yarnpkg.com/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243" + resolved "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz" integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A== quick-lru@^4.0.1: version "4.0.1" - resolved "https://registry.yarnpkg.com/quick-lru/-/quick-lru-4.0.1.tgz#5b8878f113a58217848c6482026c73e1ba57727f" + resolved "https://registry.npmjs.org/quick-lru/-/quick-lru-4.0.1.tgz" integrity sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g== quick-lru@^5.1.1: version "5.1.1" - resolved "https://registry.yarnpkg.com/quick-lru/-/quick-lru-5.1.1.tgz#366493e6b3e42a3a6885e2e99d18f80fb7a8c932" + resolved "https://registry.npmjs.org/quick-lru/-/quick-lru-5.1.1.tgz" integrity sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA== randomatic@^3.0.0: version "3.1.1" - resolved "https://registry.yarnpkg.com/randomatic/-/randomatic-3.1.1.tgz#b776efc59375984e36c537b2f51a1f0aff0da1ed" + resolved "https://registry.npmjs.org/randomatic/-/randomatic-3.1.1.tgz" integrity sha512-TuDE5KxZ0J461RVjrJZCJc+J+zCkTb1MbH9AQUq68sMhOMcy9jLcb3BrZKgp9q9Ncltdg4QVqWrH02W2EFFVYw== dependencies: is-number "^4.0.0" @@ -21826,14 +22246,14 @@ randomatic@^3.0.0: randombytes@^2.0.0, randombytes@^2.0.1, randombytes@^2.0.5, randombytes@^2.0.6, randombytes@^2.1.0: version "2.1.0" - resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.1.0.tgz#df6f84372f0270dc65cdf6291349ab7a473d4f2a" + resolved "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz" integrity sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ== dependencies: safe-buffer "^5.1.0" randomfill@^1.0.3: version "1.0.4" - resolved "https://registry.yarnpkg.com/randomfill/-/randomfill-1.0.4.tgz#c92196fc86ab42be983f1bf31778224931d61458" + resolved "https://registry.npmjs.org/randomfill/-/randomfill-1.0.4.tgz" integrity sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw== dependencies: randombytes "^2.0.5" @@ -21841,17 +22261,17 @@ randomfill@^1.0.3: randomhex@0.1.5: version "0.1.5" - resolved "https://registry.yarnpkg.com/randomhex/-/randomhex-0.1.5.tgz#baceef982329091400f2a2912c6cd02f1094f585" + resolved "https://registry.npmjs.org/randomhex/-/randomhex-0.1.5.tgz" integrity sha512-2+Kkw7UiZGQWOz7rw8hPW44utkBYMEciQfziaZ71RcyDu+refQWzS/0DgfUSa5MwclrOD3sf3vI5vmrTYjwpjQ== range-parser@~1.2.1: version "1.2.1" - resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.1.tgz#3cf37023d199e1c24d1a55b84800c2f3e6468031" + resolved "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz" integrity sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg== raw-body@2.5.1: version "2.5.1" - resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.5.1.tgz#fe1b1628b181b700215e5fd42389f98b71392857" + resolved "https://registry.npmjs.org/raw-body/-/raw-body-2.5.1.tgz" integrity sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig== dependencies: bytes "3.1.2" @@ -21861,7 +22281,7 @@ raw-body@2.5.1: raw-body@2.5.2, raw-body@^2.2.0, raw-body@^2.3.3: version "2.5.2" - resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.5.2.tgz#99febd83b90e08975087e8f1f9419a149366b68a" + resolved "https://registry.npmjs.org/raw-body/-/raw-body-2.5.2.tgz" integrity sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA== dependencies: bytes "3.1.2" @@ -21871,7 +22291,7 @@ raw-body@2.5.2, raw-body@^2.2.0, raw-body@^2.3.3: rc@1.2.8, rc@^1.1.2, rc@^1.2.7, rc@^1.2.8: version "1.2.8" - resolved "https://registry.yarnpkg.com/rc/-/rc-1.2.8.tgz#cd924bf5200a075b83c188cd6b9e211b7fc0d3ed" + resolved "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz" integrity sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw== dependencies: deep-extend "^0.6.0" @@ -21879,19 +22299,10 @@ rc@1.2.8, rc@^1.1.2, rc@^1.2.7, rc@^1.2.8: minimist "^1.2.0" strip-json-comments "~2.0.1" -re2@^1.15.8: - version "1.18.0" - resolved "https://registry.yarnpkg.com/re2/-/re2-1.18.0.tgz#6d6f47c5aaa436eb7a7d68b260f8cf25d7948619" - integrity sha512-MoCYZlJ9YUgksND9asyNF2/x532daXU/ARp1UeJbQ5flMY6ryKNEhrWt85aw3YluzOJlC3vXpGgK2a1jb0b4GA== - dependencies: - install-artifact-from-github "^1.3.1" - nan "^2.17.0" - node-gyp "^9.3.0" - -re2@^1.17.7: - version "1.20.1" - resolved "https://registry.yarnpkg.com/re2/-/re2-1.20.1.tgz#27450f6de6299635f50305a670cc15ac30687f85" - integrity sha512-JbzIoI5adNCqGUK8wHG1dMSyggvPyA4kx2hewt1lma5sP7/iWCfM15XKbCZlX2yvu5k80jSKAOQqJF7KC+2n8Q== +re2@^1.15.8, re2@^1.17.7: + version "1.20.3" + resolved "https://registry.npmjs.org/re2/-/re2-1.20.3.tgz" + integrity sha512-g5j4YjygwGEccP9SCuDI90uPlgALLEYLotfL0K+kqL3XKB4ht7Nm1JuXfOTG96c7JozpvCUxTz1T7oTNwwMI6w== dependencies: install-artifact-from-github "^1.3.3" nan "^2.17.0" @@ -21899,24 +22310,24 @@ re2@^1.17.7: react-is@^18.0.0: version "18.2.0" - resolved "https://registry.yarnpkg.com/react-is/-/react-is-18.2.0.tgz#199431eeaaa2e09f86427efbb4f1473edb47609b" + resolved "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz" integrity sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w== read-cmd-shim@^3.0.0: version "3.0.1" - resolved "https://registry.yarnpkg.com/read-cmd-shim/-/read-cmd-shim-3.0.1.tgz#868c235ec59d1de2db69e11aec885bc095aea087" + resolved "https://registry.npmjs.org/read-cmd-shim/-/read-cmd-shim-3.0.1.tgz" integrity sha512-kEmDUoYf/CDy8yZbLTmhB1X9kkjf9Q80PCNsDMb7ufrGd6zZSQA1+UyjrO+pZm5K/S4OXCWJeiIt1JA8kAsa6g== read-last-lines@^1.7.2: version "1.8.0" - resolved "https://registry.yarnpkg.com/read-last-lines/-/read-last-lines-1.8.0.tgz#4f94d4345ece7b8083ebb71c5fcdf60bd7afb9cc" + resolved "https://registry.npmjs.org/read-last-lines/-/read-last-lines-1.8.0.tgz" integrity sha512-oPL0cnZkhsO2xF7DBrdzVhXSNajPP5TzzCim/2IAjeGb17ArLLTRriI/ceV6Rook3L27mvbrOvLlf9xYYnaftQ== dependencies: mz "^2.7.0" read-package-json-fast@^2.0.2, read-package-json-fast@^2.0.3: version "2.0.3" - resolved "https://registry.yarnpkg.com/read-package-json-fast/-/read-package-json-fast-2.0.3.tgz#323ca529630da82cb34b36cc0b996693c98c2b83" + resolved "https://registry.npmjs.org/read-package-json-fast/-/read-package-json-fast-2.0.3.tgz" integrity sha512-W/BKtbL+dUjTuRL2vziuYhp76s5HZ9qQhd/dKfWIZveD0O40453QNyZhC0e63lqZrAQ4jiOapVoeJ7JrszenQQ== dependencies: json-parse-even-better-errors "^2.3.0" @@ -21924,7 +22335,7 @@ read-package-json-fast@^2.0.2, read-package-json-fast@^2.0.3: read-package-json@^5.0.0, read-package-json@^5.0.1: version "5.0.2" - resolved "https://registry.yarnpkg.com/read-package-json/-/read-package-json-5.0.2.tgz#b8779ccfd169f523b67208a89cc912e3f663f3fa" + resolved "https://registry.npmjs.org/read-package-json/-/read-package-json-5.0.2.tgz" integrity sha512-BSzugrt4kQ/Z0krro8zhTwV1Kd79ue25IhNN/VtHFy1mG/6Tluyi+msc0UpwaoQzxSHa28mntAjIZY6kEgfR9Q== dependencies: glob "^8.0.1" @@ -21934,7 +22345,7 @@ read-package-json@^5.0.0, read-package-json@^5.0.1: read-pkg-up@^1.0.1: version "1.0.1" - resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-1.0.1.tgz#9d63c13276c065918d57f002a57f40a1b643fb02" + resolved "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz" integrity sha512-WD9MTlNtI55IwYUS27iHh9tK3YoIVhxis8yKhLpTqWtml739uXc9NWTpxoHkfZf3+DkCCsXox94/VWZniuZm6A== dependencies: find-up "^1.0.0" @@ -21942,7 +22353,7 @@ read-pkg-up@^1.0.1: read-pkg-up@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-3.0.0.tgz#3ed496685dba0f8fe118d0691dc51f4a1ff96f07" + resolved "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-3.0.0.tgz" integrity sha512-YFzFrVvpC6frF1sz8psoHDBGF7fLPc+llq/8NB43oagqWkx8ar5zYtsTORtOjw9W2RHLpWP+zTWwBvf1bCmcSw== dependencies: find-up "^2.0.0" @@ -21950,7 +22361,7 @@ read-pkg-up@^3.0.0: read-pkg-up@^7.0.1: version "7.0.1" - resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-7.0.1.tgz#f3a6135758459733ae2b95638056e1854e7ef507" + resolved "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-7.0.1.tgz" integrity sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg== dependencies: find-up "^4.1.0" @@ -21959,7 +22370,7 @@ read-pkg-up@^7.0.1: read-pkg@^1.0.0: version "1.1.0" - resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-1.1.0.tgz#f5ffaa5ecd29cb31c0474bca7d756b6bb29e3f28" + resolved "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz" integrity sha512-7BGwRHqt4s/uVbuyoeejRn4YmFnYZiFl4AuaeXHlgZf3sONF0SOGlxs2Pw8g6hCKupo08RafIO5YXFNOKTfwsQ== dependencies: load-json-file "^1.0.0" @@ -21968,7 +22379,7 @@ read-pkg@^1.0.0: read-pkg@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-3.0.0.tgz#9cbc686978fee65d16c00e2b19c237fcf6e38389" + resolved "https://registry.npmjs.org/read-pkg/-/read-pkg-3.0.0.tgz" integrity sha512-BLq/cCO9two+lBgiTYNqD6GdtK8s4NpaWrl6/rCO9w0TUS8oJl7cmToOZfRYllKTISY6nt1U7jQ53brmKqY6BA== dependencies: load-json-file "^4.0.0" @@ -21977,7 +22388,7 @@ read-pkg@^3.0.0: read-pkg@^5.2.0: version "5.2.0" - resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-5.2.0.tgz#7bf295438ca5a33e56cd30e053b34ee7250c93cc" + resolved "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz" integrity sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg== dependencies: "@types/normalize-package-data" "^2.4.0" @@ -21987,14 +22398,14 @@ read-pkg@^5.2.0: read@1, read@1.0.x, read@^1.0.7: version "1.0.7" - resolved "https://registry.yarnpkg.com/read/-/read-1.0.7.tgz#b3da19bd052431a97671d44a42634adf710b40c4" + resolved "https://registry.npmjs.org/read/-/read-1.0.7.tgz" integrity sha512-rSOKNYUmaxy0om1BNjMN4ezNT6VKK+2xF4GBhc81mkH7L60i6dp8qPYrkndNLT3QPphoII3maL9PVC9XmhHwVQ== dependencies: mute-stream "~0.0.4" readable-stream@1.1.14, readable-stream@1.1.x, readable-stream@^1.0.33: version "1.1.14" - resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-1.1.14.tgz#7cf4c54ef648e3813084c636dd2079e166c081d9" + resolved "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz" integrity sha512-+MeVjFf4L44XUkhM1eYbD8fyEsxcV81pqMSR5gblfcLCHfZvbrqy4/qYHE+/R5HoBUT11WV5O08Cr1n3YXkWVQ== dependencies: core-util-is "~1.0.0" @@ -22004,7 +22415,7 @@ readable-stream@1.1.14, readable-stream@1.1.x, readable-stream@^1.0.33: "readable-stream@2 || 3", readable-stream@3, readable-stream@^3.0.0, readable-stream@^3.0.1, readable-stream@^3.0.2, readable-stream@^3.1.0, readable-stream@^3.1.1, readable-stream@^3.4.0, readable-stream@^3.6.0: version "3.6.2" - resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.2.tgz#56a9b36ea965c00c5a93ef31eb111a0f11056967" + resolved "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz" integrity sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA== dependencies: inherits "^2.0.3" @@ -22013,7 +22424,7 @@ readable-stream@1.1.14, readable-stream@1.1.x, readable-stream@^1.0.33: readable-stream@^2.0.0, readable-stream@^2.0.2, readable-stream@^2.0.5, readable-stream@^2.0.6, readable-stream@^2.2.2, readable-stream@^2.2.9, readable-stream@^2.3.0, readable-stream@^2.3.5, readable-stream@^2.3.6, readable-stream@~2.3.6: version "2.3.8" - resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.8.tgz#91125e8042bba1b9887f49345f6277027ce8be9b" + resolved "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz" integrity sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA== dependencies: core-util-is "~1.0.0" @@ -22026,12 +22437,12 @@ readable-stream@^2.0.0, readable-stream@^2.0.2, readable-stream@^2.0.5, readable readable-stream@~0.0.2: version "0.0.4" - resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-0.0.4.tgz#f32d76e3fb863344a548d79923007173665b3b8d" + resolved "https://registry.npmjs.org/readable-stream/-/readable-stream-0.0.4.tgz" integrity sha512-azrivNydKRYt7zwLV5wWUK7YzKTWs3q87xSmY6DlHapPrCvaT6ZrukvM5erV+yCSSPmZT8zkSdttOHQpWWm9zw== readable-stream@~1.0.15: version "1.0.34" - resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-1.0.34.tgz#125820e34bc842d2f2aaafafe4c2916ee32c157c" + resolved "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz" integrity sha512-ok1qVCJuRkNmvebYikljxJA/UEsKwLl2nI1OmaqAu4/UE+h0wKCHok4XkL/gvi39OacXvw59RJUOFUkDib2rHg== dependencies: core-util-is "~1.0.0" @@ -22041,7 +22452,7 @@ readable-stream@~1.0.15: readable-stream@~2.0.0: version "2.0.6" - resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.0.6.tgz#8f90341e68a53ccc928788dacfcd11b36eb9b78e" + resolved "https://registry.npmjs.org/readable-stream/-/readable-stream-2.0.6.tgz" integrity sha512-TXcFfb63BQe1+ySzsHZI/5v1aJPCShfqvWJ64ayNImXMsN1Cd0YGk/wm8KB7/OeessgPc9QvS9Zou8QTkFzsLw== dependencies: core-util-is "~1.0.0" @@ -22051,16 +22462,16 @@ readable-stream@~2.0.0: string_decoder "~0.10.x" util-deprecate "~1.0.1" -readdir-glob@^1.0.0: +readdir-glob@^1.1.2: version "1.1.3" - resolved "https://registry.yarnpkg.com/readdir-glob/-/readdir-glob-1.1.3.tgz#c3d831f51f5e7bfa62fa2ffbe4b508c640f09584" + resolved "https://registry.npmjs.org/readdir-glob/-/readdir-glob-1.1.3.tgz" integrity sha512-v05I2k7xN8zXvPD9N+z/uhXPaj0sUFCe2rcWZIpBsqxfP7xXFQ0tipAd/wjj1YxWyWtUS5IDJpOG82JKt2EAVA== dependencies: minimatch "^5.1.0" readdir-scoped-modules@^1.1.0: version "1.1.0" - resolved "https://registry.yarnpkg.com/readdir-scoped-modules/-/readdir-scoped-modules-1.1.0.tgz#8d45407b4f870a0dcaebc0e28670d18e74514309" + resolved "https://registry.npmjs.org/readdir-scoped-modules/-/readdir-scoped-modules-1.1.0.tgz" integrity sha512-asaikDeqAQg7JifRsZn1NJZXo9E+VwlyCfbkZhwyISinqk5zNS6266HS5kah6P0SaQKGF6SkNnZVHUzHFYxYDw== dependencies: debuglog "^1.0.1" @@ -22077,14 +22488,14 @@ readdirp@~3.2.0: readdirp@~3.3.0: version "3.3.0" - resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.3.0.tgz#984458d13a1e42e2e9f5841b129e162f369aff17" + resolved "https://registry.npmjs.org/readdirp/-/readdirp-3.3.0.tgz" integrity sha512-zz0pAkSPOXXm1viEwygWIPSPkcBYjW1xU5j/JBh5t9bGCJwa6f9+BJa6VaB2g+b55yVrmXzqkyLf4xaWYM0IkQ== dependencies: picomatch "^2.0.7" readdirp@~3.6.0: version "3.6.0" - resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.6.0.tgz#74a370bd857116e245b29cc97340cd431a02a6c7" + resolved "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz" integrity sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA== dependencies: picomatch "^2.2.1" @@ -22098,14 +22509,14 @@ rechoir@^0.6.2: rechoir@^0.8.0: version "0.8.0" - resolved "https://registry.yarnpkg.com/rechoir/-/rechoir-0.8.0.tgz#49f866e0d32146142da3ad8f0eff352b3215ff22" + resolved "https://registry.npmjs.org/rechoir/-/rechoir-0.8.0.tgz" integrity sha512-/vxpCXddiX8NGfGO/mTafwjq4aFa/71pvamip0++IQk3zG8cbCj0fifNPrjjF1XMXUne91jL9OoxmdykoEtifQ== dependencies: resolve "^1.20.0" redent@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/redent/-/redent-3.0.0.tgz#e557b7998316bb53c9f1f56fa626352c6963059f" + resolved "https://registry.npmjs.org/redent/-/redent-3.0.0.tgz" integrity sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg== dependencies: indent-string "^4.0.0" @@ -22113,21 +22524,21 @@ redent@^3.0.0: redeyed@~2.1.0: version "2.1.1" - resolved "https://registry.yarnpkg.com/redeyed/-/redeyed-2.1.1.tgz#8984b5815d99cb220469c99eeeffe38913e6cc0b" + resolved "https://registry.npmjs.org/redeyed/-/redeyed-2.1.1.tgz" integrity sha512-FNpGGo1DycYAdnrKFxCMmKYgo/mILAqtRYbkdQD8Ep/Hk2PQ5+aEAEx+IU713RTDmuBaH0c8P5ZozurNu5ObRQ== dependencies: esprima "~4.0.0" redux-saga@1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/redux-saga/-/redux-saga-1.0.0.tgz#acb8b3ed9180fecbe75f342011d75af3ac11045b" + resolved "https://registry.npmjs.org/redux-saga/-/redux-saga-1.0.0.tgz" integrity sha512-GvJWs/SzMvEQgeaw6sRMXnS2FghlvEGsHiEtTLpJqc/FHF3I5EE/B+Hq5lyHZ8LSoT2r/X/46uWvkdCnK9WgHA== dependencies: "@redux-saga/core" "^1.0.0" redux@^3.7.2: version "3.7.2" - resolved "https://registry.yarnpkg.com/redux/-/redux-3.7.2.tgz#06b73123215901d25d065be342eb026bc1c8537b" + resolved "https://registry.npmjs.org/redux/-/redux-3.7.2.tgz" integrity sha512-pNqnf9q1hI5HHZRBkj3bAngGZW/JMCmexDlOxw4XagXY2o1327nHH54LoTjiPJ0gizoqPDRqWyX/00g0hD6w+A== dependencies: lodash "^4.2.1" @@ -22137,7 +22548,7 @@ redux@^3.7.2: redux@^4.0.4: version "4.2.1" - resolved "https://registry.yarnpkg.com/redux/-/redux-4.2.1.tgz#c08f4306826c49b5e9dc901dee0452ea8fce6197" + resolved "https://registry.npmjs.org/redux/-/redux-4.2.1.tgz" integrity sha512-LAUYz4lc+Do8/g7aeRa8JkyDErK6ekstQaqWQrNRW//MY1TvCEpMtpTWvlQ+FPbWCx+Xixu/6SHt5N0HR+SB4w== dependencies: "@babel/runtime" "^7.9.2" @@ -22149,12 +22560,17 @@ regenerator-runtime@^0.11.0: regenerator-runtime@^0.13.11: version "0.13.11" - resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz#f6dca3e7ceec20590d07ada785636a90cdca17f9" + resolved "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz" integrity sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg== +regenerator-runtime@^0.14.0: + version "0.14.0" + resolved "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.0.tgz" + integrity sha512-srw17NI0TUWHuGa5CFGGmhfNIeja30WMBfbslPNhf6JrqQlLN5gcrvig1oqPxiVaXb0oW0XRKtH6Nngs5lKCIA== + regex-cache@^0.4.2: version "0.4.4" - resolved "https://registry.yarnpkg.com/regex-cache/-/regex-cache-0.4.4.tgz#75bdc58a2a1496cec48a12835bc54c8d562336dd" + resolved "https://registry.npmjs.org/regex-cache/-/regex-cache-0.4.4.tgz" integrity sha512-nVIZwtCjkC9YgvWkpM55B5rBhBYRZhAaJbgcFYXXsHnbZ9UZI9nnVWYZpBlCqv9ho2eZryPnWrZGsOdPwVWXWQ== dependencies: is-equal-shallow "^0.1.3" @@ -22169,54 +22585,63 @@ regex-not@^1.0.0, regex-not@^1.0.2: regexp-to-ast@0.4.0: version "0.4.0" - resolved "https://registry.yarnpkg.com/regexp-to-ast/-/regexp-to-ast-0.4.0.tgz#f3dbcb42726cd71902ba50193f63eab5325cd7cb" + resolved "https://registry.npmjs.org/regexp-to-ast/-/regexp-to-ast-0.4.0.tgz" integrity sha512-4qf/7IsIKfSNHQXSwial1IFmfM1Cc/whNBQqRwe0V2stPe7KmN1U0tWQiIx6JiirgSrisjE0eECdNf7Tav1Ntw== regexp.prototype.flags@^1.2.0, regexp.prototype.flags@^1.4.3: version "1.5.0" - resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.5.0.tgz#fe7ce25e7e4cca8db37b6634c8a2c7009199b9cb" + resolved "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.0.tgz" integrity sha512-0SutC3pNudRKgquxGoRGIz946MZVHqbNfPjBdxeOhBrdgDKlRoXmYLQN9xRbrR09ZXWeGAdPuif7egofn6v5LA== dependencies: call-bind "^1.0.2" define-properties "^1.2.0" functions-have-names "^1.2.3" +regexp.prototype.flags@^1.5.0: + version "1.5.1" + resolved "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.1.tgz" + 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@^2.0.1: version "2.0.1" - resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-2.0.1.tgz#8d19d31cf632482b589049f8281f93dbcba4d07f" + resolved "https://registry.npmjs.org/regexpp/-/regexpp-2.0.1.tgz" integrity sha512-lv0M6+TkDVniA3aD1Eg0DVpfU/booSu7Eev3TDO/mZKHBfVjgCGTV4t4buppESEYDtkArYFOxTJWv6S5C+iaNw== registry-auth-token@^4.0.0: version "4.2.2" - resolved "https://registry.yarnpkg.com/registry-auth-token/-/registry-auth-token-4.2.2.tgz#f02d49c3668884612ca031419491a13539e21fac" + resolved "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-4.2.2.tgz" integrity sha512-PC5ZysNb42zpFME6D/XlIgtNGdTl8bBOCw90xQLVMpzuuubJKYDWFAEuUNc+Cn8Z8724tg2SDhDRrkVEsqfDMg== dependencies: rc "1.2.8" registry-auth-token@^5.0.1: version "5.0.2" - resolved "https://registry.yarnpkg.com/registry-auth-token/-/registry-auth-token-5.0.2.tgz#8b026cc507c8552ebbe06724136267e63302f756" + resolved "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-5.0.2.tgz" integrity sha512-o/3ikDxtXaA59BmZuZrJZDJv8NMDGSj+6j6XaeBmHw8eY1i1qd9+6H+LjVvQXx3HN6aRCGa1cUdJ9RaJZUugnQ== dependencies: "@pnpm/npm-conf" "^2.1.0" registry-url@^5.0.0, registry-url@^5.1.0: version "5.1.0" - resolved "https://registry.yarnpkg.com/registry-url/-/registry-url-5.1.0.tgz#e98334b50d5434b81136b44ec638d9c2009c5009" + resolved "https://registry.npmjs.org/registry-url/-/registry-url-5.1.0.tgz" integrity sha512-8acYXXTI0AkQv6RAOjE3vOaIXZkT9wo4LOFbBKYQEEnnMNBpKqdUrI6S4NT0KPIo/WVvJ5tE/X5LF/TQUf0ekw== dependencies: rc "^1.2.8" relative@^3.0.1: version "3.0.2" - resolved "https://registry.yarnpkg.com/relative/-/relative-3.0.2.tgz#0dcd8ec54a5d35a3c15e104503d65375b5a5367f" + resolved "https://registry.npmjs.org/relative/-/relative-3.0.2.tgz" integrity sha512-Q5W2qeYtY9GbiR8z1yHNZ1DGhyjb4AnLEjt8iE6XfcC1QIu+FAtj3HQaO0wH28H1mX6cqNLvAqWhP402dxJGyA== dependencies: isobject "^2.0.0" remix-lib@>=0.4.1: version "0.4.30" - resolved "https://registry.yarnpkg.com/remix-lib/-/remix-lib-0.4.30.tgz#2132c6f116afee7b427e4a18d98a30e608d4e015" + resolved "https://registry.npmjs.org/remix-lib/-/remix-lib-0.4.30.tgz" integrity sha512-FqJzWF1eKJDZIxiO2LmmTGo7cyQSO+Iq8NDnm/TJcRYR/1a5UKKHSgIZ6rzevA3igMC/RrEhovbE3A/9l7pVzw== dependencies: async "^2.1.2" @@ -22231,17 +22656,17 @@ remix-lib@>=0.4.1: remove-trailing-separator@^1.0.1: version "1.1.0" - resolved "https://registry.yarnpkg.com/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz#c24bce2a283adad5bc3f58e0d48249b92379d8ef" + resolved "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz" integrity sha512-/hS+Y0u3aOfIETiaiirUFwDBDzmXPvO+jAfKTitUngIPzdKc6Z0LoFjM/CK5PL4C+eKwHohlHAb6H0VFfmmUsw== repeat-element@^1.1.2: version "1.1.4" - resolved "https://registry.yarnpkg.com/repeat-element/-/repeat-element-1.1.4.tgz#be681520847ab58c7568ac75fbfad28ed42d39e9" + resolved "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.4.tgz" integrity sha512-LFiNfRcSu7KK3evMyYOuCzv3L10TW7yC1G2/+StMjK8Y6Vqd2MG7r/Qjw4ghtuCOjFvlnms/iMmLqpvW/ES/WQ== repeat-string@^1.5.2, repeat-string@^1.6.1: version "1.6.1" - resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637" + resolved "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz" integrity sha512-PV0dzCYDNfRi1jCDbJzpW7jNNDRuCOG/jI5ctQcGKt/clZD+YcPS3yIlWuTJMmESC8aevCFmWJy5wjAFgNqN6w== req-cwd@^2.0.0: @@ -22260,7 +22685,7 @@ req-from@^2.0.0: request-promise-core@1.1.4: version "1.1.4" - resolved "https://registry.yarnpkg.com/request-promise-core/-/request-promise-core-1.1.4.tgz#3eedd4223208d419867b78ce815167d10593a22f" + resolved "https://registry.npmjs.org/request-promise-core/-/request-promise-core-1.1.4.tgz" integrity sha512-TTbAfBBRdWD7aNNOoVOBH4pN/KigV6LyapYNNlAPA8JwbovRti1E88m3sYAwsLi5ryhPKsE9APwnjFTgdUjTpw== dependencies: lodash "^4.17.19" @@ -22276,7 +22701,7 @@ request-promise-native@^1.0.5: request-promise@^4.2.2: version "4.2.6" - resolved "https://registry.yarnpkg.com/request-promise/-/request-promise-4.2.6.tgz#7e7e5b9578630e6f598e3813c0f8eb342a27f0a2" + resolved "https://registry.npmjs.org/request-promise/-/request-promise-4.2.6.tgz" integrity sha512-HCHI3DJJUakkOr8fNoCc73E5nU5bqITjOYFMDrKHYOXWXrgD/SBaC7LjwuPymUprRyuF06UK7hd/lMHkmUXglQ== dependencies: bluebird "^3.5.0" @@ -22286,7 +22711,7 @@ request-promise@^4.2.2: request@^2.67.0, request@^2.79.0, request@^2.85.0, request@^2.87.0, request@^2.88.0, request@^2.88.2: version "2.88.2" - resolved "https://registry.yarnpkg.com/request/-/request-2.88.2.tgz#d73c918731cb5a87da047e207234146f664d12b3" + resolved "https://registry.npmjs.org/request/-/request-2.88.2.tgz" integrity sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw== dependencies: aws-sign2 "~0.7.0" @@ -22312,22 +22737,22 @@ request@^2.67.0, request@^2.79.0, request@^2.85.0, request@^2.87.0, request@^2.8 require-directory@^2.1.1: version "2.1.1" - resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" + resolved "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz" integrity sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q== require-from-string@^1.1.0: version "1.2.1" - resolved "https://registry.yarnpkg.com/require-from-string/-/require-from-string-1.2.1.tgz#529c9ccef27380adfec9a2f965b649bbee636418" + resolved "https://registry.npmjs.org/require-from-string/-/require-from-string-1.2.1.tgz" integrity sha512-H7AkJWMobeskkttHyhTVtS0fxpFLjxhbfMa6Bk3wimP7sdPRGL3EyCg3sAQenFfAe+xQ+oAc85Nmtvq0ROM83Q== require-from-string@^2.0.0, require-from-string@^2.0.1, require-from-string@^2.0.2: version "2.0.2" - resolved "https://registry.yarnpkg.com/require-from-string/-/require-from-string-2.0.2.tgz#89a7fdd938261267318eafe14f9c32e598c36909" + resolved "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz" integrity sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw== require-in-the-middle@^7.1.1: version "7.2.0" - resolved "https://registry.yarnpkg.com/require-in-the-middle/-/require-in-the-middle-7.2.0.tgz#b539de8f00955444dc8aed95e17c69b0a4f10fcf" + resolved "https://registry.npmjs.org/require-in-the-middle/-/require-in-the-middle-7.2.0.tgz" integrity sha512-3TLx5TGyAY6AOqLBoXmHkNql0HIf2RGbuMgCDT2WO/uGVAPJs6h7Kl+bN6TIZGd9bWhWPwnDnTHGtW8Iu77sdw== dependencies: debug "^4.1.1" @@ -22336,29 +22761,29 @@ require-in-the-middle@^7.1.1: require-main-filename@^1.0.1: version "1.0.1" - resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-1.0.1.tgz#97f717b69d48784f5f526a6c5aa8ffdda055a4d1" + resolved "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz" integrity sha512-IqSUtOVP4ksd1C/ej5zeEh/BIP2ajqpn8c5x+q99gvcIG/Qf0cud5raVnE/Dwd0ua9TXYDoDc0RE5hBSdz22Ug== require-main-filename@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-2.0.0.tgz#d0b329ecc7cc0f61649f62215be69af54aa8989b" + resolved "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz" integrity sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg== requires-port@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/requires-port/-/requires-port-1.0.0.tgz#925d2601d39ac485e091cf0da5c6e694dc3dcaff" + resolved "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz" integrity sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ== requizzle@^0.2.3: version "0.2.4" - resolved "https://registry.yarnpkg.com/requizzle/-/requizzle-0.2.4.tgz#319eb658b28c370f0c20f968fa8ceab98c13d27c" + resolved "https://registry.npmjs.org/requizzle/-/requizzle-0.2.4.tgz" integrity sha512-JRrFk1D4OQ4SqovXOgdav+K8EAhSB/LJZqCz8tbX0KObcdeM15Ss59ozWMBWmmINMagCwmqn4ZNryUGpBsl6Jw== dependencies: lodash "^4.17.21" reselect-tree@^1.3.7: version "1.3.7" - resolved "https://registry.yarnpkg.com/reselect-tree/-/reselect-tree-1.3.7.tgz#c3eca58765d9df96bae0017f6ff3504c304cdea0" + resolved "https://registry.npmjs.org/reselect-tree/-/reselect-tree-1.3.7.tgz" integrity sha512-kZN+C1cVJ6fFN2smSb0l4UvYZlRzttgnu183svH4NrU22cBY++ikgr2QT75Uuk4MYpv5gXSVijw4c5U6cx6GKg== dependencies: debug "^3.1.0" @@ -22367,24 +22792,24 @@ reselect-tree@^1.3.7: reselect@^4.0.0: version "4.1.8" - resolved "https://registry.yarnpkg.com/reselect/-/reselect-4.1.8.tgz#3f5dc671ea168dccdeb3e141236f69f02eaec524" + resolved "https://registry.npmjs.org/reselect/-/reselect-4.1.8.tgz" integrity sha512-ab9EmR80F/zQTMNeneUr4cv+jSwPJgIlvEmVwLerwrWVbpLlBuls9XHzIeTFy4cegU2NHBp3va0LKOzU5qFEYQ== resolve-alpn@^1.0.0, resolve-alpn@^1.2.0: version "1.2.1" - resolved "https://registry.yarnpkg.com/resolve-alpn/-/resolve-alpn-1.2.1.tgz#b7adbdac3546aaaec20b45e7d8265927072726f9" + resolved "https://registry.npmjs.org/resolve-alpn/-/resolve-alpn-1.2.1.tgz" integrity sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g== resolve-cwd@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/resolve-cwd/-/resolve-cwd-3.0.0.tgz#0f0075f1bb2544766cf73ba6a6e2adfebcb13f2d" + resolved "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz" integrity sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg== dependencies: resolve-from "^5.0.0" resolve-dir@^0.1.0: version "0.1.1" - resolved "https://registry.yarnpkg.com/resolve-dir/-/resolve-dir-0.1.1.tgz#b219259a5602fac5c5c496ad894a6e8cc430261e" + resolved "https://registry.npmjs.org/resolve-dir/-/resolve-dir-0.1.1.tgz" integrity sha512-QxMPqI6le2u0dCLyiGzgy92kjkkL6zO0XyvHzjdTNH3zM6e5Hz3BwG6+aEyNgiQ5Xz6PwTwgQEj3U50dByPKIA== dependencies: expand-tilde "^1.2.2" @@ -22392,7 +22817,7 @@ resolve-dir@^0.1.0: resolve-dir@^1.0.0: version "1.0.1" - resolved "https://registry.yarnpkg.com/resolve-dir/-/resolve-dir-1.0.1.tgz#79a40644c362be82f26effe739c9bb5382046f43" + resolved "https://registry.npmjs.org/resolve-dir/-/resolve-dir-1.0.1.tgz" integrity sha512-R7uiTjECzvOsWSfdM0QKFNBVFcK27aHOUwdvK53BcW8zqnGdYp0Fbj82cy54+2A4P2tFM22J5kRfe1R+lM/1yg== dependencies: expand-tilde "^2.0.0" @@ -22400,17 +22825,17 @@ resolve-dir@^1.0.0: resolve-from@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-3.0.0.tgz#b22c7af7d9d6881bc8b6e653335eebcb0a188748" + resolved "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz" integrity sha512-GnlH6vxLymXJNMBo7XP1fJIzBFbdYt49CuTwmB/6N53t+kMPRMFKz783LlQ4tv28XoQfMWinAJX6WCGf2IlaIw== resolve-from@^4.0.0: version "4.0.0" - resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6" + resolved "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz" integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g== resolve-from@^5.0.0: version "5.0.0" - resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-5.0.0.tgz#c35225843df8f776df21c57557bc087e9dfdfc69" + resolved "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz" integrity sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw== resolve-url@^0.2.1: @@ -22420,24 +22845,15 @@ resolve-url@^0.2.1: resolve.exports@^2.0.0: version "2.0.2" - resolved "https://registry.yarnpkg.com/resolve.exports/-/resolve.exports-2.0.2.tgz#f8c934b8e6a13f539e38b7098e2e36134f01e800" + resolved "https://registry.npmjs.org/resolve.exports/-/resolve.exports-2.0.2.tgz" integrity sha512-X2UW6Nw3n/aMgDVy+0rSqgHlv39WZAlZrXCdnbyEiKm17DSqHX4MmQMaST3FbeWR5FTuRcUwYAziZajji0Y7mg== resolve@1.1.x: version "1.1.7" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.1.7.tgz#203114d82ad2c5ed9e8e0411b3932875e889e97b" + resolved "https://registry.npmjs.org/resolve/-/resolve-1.1.7.tgz" integrity sha512-9znBF0vBcaSN3W2j7wKvdERPwqTxSpCq+if5C0WoTCyV9n24rua28jeuQ2pL/HOf+yUe/Mef+H/5p60K0Id3bg== -resolve@^1.1.6, resolve@^1.10.0, resolve@^1.11.1, resolve@^1.14.2, resolve@^1.20.0, resolve@^1.3.2, resolve@^1.8.1, resolve@~1.22.1: - version "1.22.2" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.2.tgz#0ed0943d4e301867955766c9f3e1ae6d01c6845f" - integrity sha512-Sb+mjNHOULsBv818T40qSPeRiuWLyaGMa5ewydRLFimneixmVy2zdivRl+AF6jaYPC8ERxGDmFSiqui6SfPd+g== - dependencies: - is-core-module "^2.11.0" - path-parse "^1.0.7" - supports-preserve-symlinks-flag "^1.0.0" - -resolve@^1.22.1: +resolve@^1.1.6, resolve@^1.22.1, resolve@^1.3.2, resolve@^1.8.1: version "1.22.4" resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.4.tgz#1dc40df46554cdaf8948a486a10f6ba1e2026c34" integrity sha512-PXNdCiPqDqeUou+w1C2eTQbNfxKSuMxqTCuvlmmMsk1NWHL5fRrhY6Pl0qEYYc6+QqGClco1Qj8XnjPego4wfg== @@ -22446,23 +22862,32 @@ resolve@^1.22.1: path-parse "^1.0.7" supports-preserve-symlinks-flag "^1.0.0" +resolve@^1.10.0, resolve@^1.11.1, resolve@^1.14.2, resolve@^1.20.0, resolve@~1.22.1: + version "1.22.2" + resolved "https://registry.npmjs.org/resolve/-/resolve-1.22.2.tgz" + integrity sha512-Sb+mjNHOULsBv818T40qSPeRiuWLyaGMa5ewydRLFimneixmVy2zdivRl+AF6jaYPC8ERxGDmFSiqui6SfPd+g== + dependencies: + is-core-module "^2.11.0" + path-parse "^1.0.7" + supports-preserve-symlinks-flag "^1.0.0" + responselike@^1.0.2: version "1.0.2" - resolved "https://registry.yarnpkg.com/responselike/-/responselike-1.0.2.tgz#918720ef3b631c5642be068f15ade5a46f4ba1e7" + resolved "https://registry.npmjs.org/responselike/-/responselike-1.0.2.tgz" integrity sha512-/Fpe5guzJk1gPqdJLJR5u7eG/gNY4nImjbRDaVWVMRhne55TCmj2i9Q+54PBRfatRC8v/rIiv9BN0pMd9OV5EQ== dependencies: lowercase-keys "^1.0.0" responselike@^2.0.0: version "2.0.1" - resolved "https://registry.yarnpkg.com/responselike/-/responselike-2.0.1.tgz#9a0bc8fdc252f3fb1cca68b016591059ba1422bc" + resolved "https://registry.npmjs.org/responselike/-/responselike-2.0.1.tgz" integrity sha512-4gl03wn3hj1HP3yzgdI7d3lCkF95F21Pz4BPGvKHinyQzALR5CapwC8yIi0Rh58DEMQ/SguC03wFj2k0M/mHhw== dependencies: lowercase-keys "^2.0.0" restore-cursor@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-2.0.0.tgz#9f7ee287f82fd326d4fd162923d62129eee0dfaf" + resolved "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz" integrity sha512-6IzJLuGi4+R14vwagDHX+JrXmPVtPpn4mffDJ1UdR7/Edm87fl6yi8mMBIVvFtJaNTUvjughmW4hwLhRG7gC1Q== dependencies: onetime "^2.0.0" @@ -22470,7 +22895,7 @@ restore-cursor@^2.0.0: restore-cursor@^3.1.0: version "3.1.0" - resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-3.1.0.tgz#39f67c54b3a7a58cea5236d95cf0034239631f7e" + resolved "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz" integrity sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA== dependencies: onetime "^5.1.0" @@ -22478,7 +22903,7 @@ restore-cursor@^3.1.0: resumer@~0.0.0: version "0.0.0" - resolved "https://registry.yarnpkg.com/resumer/-/resumer-0.0.0.tgz#f1e8f461e4064ba39e82af3cdc2a8c893d076759" + resolved "https://registry.npmjs.org/resumer/-/resumer-0.0.0.tgz" integrity sha512-Fn9X8rX8yYF4m81rZCK/5VmrmsSbqS/i3rDLl6ZZHAXgC2nTAx3dhwG8q8odP/RmdLa2YrybDJaAMg+X1ajY3w== dependencies: through "~2.3.4" @@ -22490,7 +22915,7 @@ ret@~0.1.10: retry-request@^4.0.0, retry-request@^4.2.2: version "4.2.2" - resolved "https://registry.yarnpkg.com/retry-request/-/retry-request-4.2.2.tgz#b7d82210b6d2651ed249ba3497f07ea602f1a903" + resolved "https://registry.npmjs.org/retry-request/-/retry-request-4.2.2.tgz" integrity sha512-xA93uxUD/rogV7BV59agW/JHPGXeREMWiZc9jhcwY4YdZ7QOtC7qbomYg0n4wyk2lJhggjvKvhNX8wln/Aldhg== dependencies: debug "^4.1.1" @@ -22498,7 +22923,7 @@ retry-request@^4.0.0, retry-request@^4.2.2: retry-request@^5.0.0: version "5.0.2" - resolved "https://registry.yarnpkg.com/retry-request/-/retry-request-5.0.2.tgz#143d85f90c755af407fcc46b7166a4ba520e44da" + resolved "https://registry.npmjs.org/retry-request/-/retry-request-5.0.2.tgz" integrity sha512-wfI3pk7EE80lCIXprqh7ym48IHYdwmAAzESdbU8Q9l7pnRCk9LEhpbOTNKjz6FARLm/Bl5m+4F0ABxOkYUujSQ== dependencies: debug "^4.1.1" @@ -22506,60 +22931,60 @@ retry-request@^5.0.0: retry@0.13.1, retry@^0.13.1: version "0.13.1" - resolved "https://registry.yarnpkg.com/retry/-/retry-0.13.1.tgz#185b1587acf67919d63b357349e03537b2484658" + resolved "https://registry.npmjs.org/retry/-/retry-0.13.1.tgz" integrity sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg== retry@^0.12.0: version "0.12.0" - resolved "https://registry.yarnpkg.com/retry/-/retry-0.12.0.tgz#1b42a6266a21f07421d1b0b54b7dc167b01c013b" + resolved "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz" integrity sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow== reusify@^1.0.4: version "1.0.4" - resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76" + resolved "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz" integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw== revalidator@0.1.x: version "0.1.8" - resolved "https://registry.yarnpkg.com/revalidator/-/revalidator-0.1.8.tgz#fece61bfa0c1b52a206bd6b18198184bdd523a3b" + resolved "https://registry.npmjs.org/revalidator/-/revalidator-0.1.8.tgz" integrity sha512-xcBILK2pA9oh4SiinPEZfhP8HfrB/ha+a2fTMyl7Om2WjlDVrOQy99N2MXXlUHqGJz4qEu2duXxHJjDWuK/0xg== -rimraf@2, rimraf@^2.2.8, rimraf@^2.6.1, rimraf@^2.6.2, rimraf@^2.6.3: +rimraf@2, rimraf@^2.2.8, rimraf@^2.6.2, rimraf@^2.6.3: version "2.7.1" - resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.7.1.tgz#35797f13a7fdadc566142c29d4f07ccad483e3ec" + resolved "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz" integrity sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w== dependencies: glob "^7.1.3" rimraf@2.6.3: version "2.6.3" - resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.3.tgz#b2d104fe0d8fb27cf9e0a1cda8262dd3833c6cab" + resolved "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz" integrity sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA== dependencies: glob "^7.1.3" rimraf@3.0.2, rimraf@^3.0.0, rimraf@^3.0.2: version "3.0.2" - resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a" + resolved "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz" integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA== dependencies: glob "^7.1.3" rimraf@~2.4.0: version "2.4.5" - resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.4.5.tgz#ee710ce5d93a8fdb856fb5ea8ff0e2d75934b2da" + resolved "https://registry.npmjs.org/rimraf/-/rimraf-2.4.5.tgz" integrity sha512-J5xnxTyqaiw06JjMftq7L9ouA448dw/E7dKghkP9WpKNuwmARNNg+Gk8/u5ryb9N/Yo2+z3MCwuqFK/+qPOPfQ== dependencies: glob "^6.0.1" ripemd160-min@0.0.6: version "0.0.6" - resolved "https://registry.yarnpkg.com/ripemd160-min/-/ripemd160-min-0.0.6.tgz#a904b77658114474d02503e819dcc55853b67e62" + resolved "https://registry.npmjs.org/ripemd160-min/-/ripemd160-min-0.0.6.tgz" integrity sha512-+GcJgQivhs6S9qvLogusiTcS9kQUfgR75whKuy5jIhuiOfQuJ8fjqxV6EGD5duH1Y/FawFUMtMhyeq3Fbnib8A== ripemd160@^2.0.0, ripemd160@^2.0.1, ripemd160@^2.0.2: version "2.0.2" - resolved "https://registry.yarnpkg.com/ripemd160/-/ripemd160-2.0.2.tgz#a1c1a6f624751577ba5d07914cbc92850585890c" + resolved "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.2.tgz" integrity sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA== dependencies: hash-base "^3.0.0" @@ -22567,14 +22992,14 @@ ripemd160@^2.0.0, ripemd160@^2.0.1, ripemd160@^2.0.2: rlp@^2.0.0, rlp@^2.2.1, rlp@^2.2.2, rlp@^2.2.3, rlp@^2.2.4: version "2.2.7" - resolved "https://registry.yarnpkg.com/rlp/-/rlp-2.2.7.tgz#33f31c4afac81124ac4b283e2bd4d9720b30beaf" + resolved "https://registry.npmjs.org/rlp/-/rlp-2.2.7.tgz" integrity sha512-d5gdPmgQ0Z+AklL2NVXr/IoSjNZFfTVvQWzL/AM2AOcSzYP2xjlb0AC8YyCLc41MSNf6P6QVtjgPdmVtzb+4lQ== dependencies: bn.js "^5.2.0" router@^1.3.1: version "1.3.8" - resolved "https://registry.yarnpkg.com/router/-/router-1.3.8.tgz#1509614ae1fbc67139a728481c54b057ecfb04bf" + resolved "https://registry.npmjs.org/router/-/router-1.3.8.tgz" integrity sha512-461UFH44NtSfIlS83PUg2N7OZo86BC/kB3dY77gJdsODsBhhw7+2uE0tzTINxrY9CahCUVk1VhpWCA5i1yoIEg== dependencies: array-flatten "3.0.0" @@ -22587,55 +23012,55 @@ router@^1.3.1: rsvp@^4.8.5: version "4.8.5" - resolved "https://registry.yarnpkg.com/rsvp/-/rsvp-4.8.5.tgz#c8f155311d167f68f21e168df71ec5b083113734" + resolved "https://registry.npmjs.org/rsvp/-/rsvp-4.8.5.tgz" integrity sha512-nfMOlASu9OnRJo1mbEk2cz0D56a1MBNrJ7orjRZQG10XDyuvwksKbuXNp6qa+kbn839HwjwhBzhFmdsaEAfauA== run-async@^2.2.0, run-async@^2.4.0: version "2.4.1" - resolved "https://registry.yarnpkg.com/run-async/-/run-async-2.4.1.tgz#8440eccf99ea3e70bd409d49aab88e10c189a455" + resolved "https://registry.npmjs.org/run-async/-/run-async-2.4.1.tgz" integrity sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ== run-node@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/run-node/-/run-node-1.0.0.tgz#46b50b946a2aa2d4947ae1d886e9856fd9cabe5e" + resolved "https://registry.npmjs.org/run-node/-/run-node-1.0.0.tgz" integrity sha512-kc120TBlQ3mih1LSzdAJXo4xn/GWS2ec0l3S+syHDXP9uRr0JAT8Qd3mdMuyjqCzeZktgP3try92cEgf9Nks8A== run-parallel-limit@^1.1.0: version "1.1.0" - resolved "https://registry.yarnpkg.com/run-parallel-limit/-/run-parallel-limit-1.1.0.tgz#be80e936f5768623a38a963262d6bef8ff11e7ba" + resolved "https://registry.npmjs.org/run-parallel-limit/-/run-parallel-limit-1.1.0.tgz" integrity sha512-jJA7irRNM91jaKc3Hcl1npHsFLOXOoTkPCUL1JEa1R82O2miplXXRaGdjW/KM/98YQWDhJLiSs793CnXfblJUw== dependencies: queue-microtask "^1.2.2" run-parallel@^1.1.9: version "1.2.0" - resolved "https://registry.yarnpkg.com/run-parallel/-/run-parallel-1.2.0.tgz#66d1368da7bdf921eb9d95bd1a9229e7f21a43ee" + resolved "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz" integrity sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA== dependencies: queue-microtask "^1.2.2" rustbn.js@~0.2.0: version "0.2.0" - resolved "https://registry.yarnpkg.com/rustbn.js/-/rustbn.js-0.2.0.tgz#8082cb886e707155fd1cb6f23bd591ab8d55d0ca" + resolved "https://registry.npmjs.org/rustbn.js/-/rustbn.js-0.2.0.tgz" integrity sha512-4VlvkRUuCJvr2J6Y0ImW7NvTCriMi7ErOAqWk1y69vAdoNIzCF3yPmgeNzx+RQTLEDFq5sHfscn1MwHxP9hNfA== rxjs@6, rxjs@^6.4.0, rxjs@^6.6.0: version "6.6.7" - resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-6.6.7.tgz#90ac018acabf491bf65044235d5863c4dab804c9" + resolved "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz" integrity sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ== dependencies: tslib "^1.9.0" rxjs@^7.5.5: - version "7.8.0" - resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-7.8.0.tgz#90a938862a82888ff4c7359811a595e14e1e09a4" - integrity sha512-F2+gxDshqmIub1KdvZkaEfGDwLNpPvk9Fs6LD/MyQxNgMds/WH9OdDDXOmxUZpME+iSK3rQCctkL0DYyytUqMg== + version "7.8.1" + resolved "https://registry.npmjs.org/rxjs/-/rxjs-7.8.1.tgz" + integrity sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg== dependencies: tslib "^2.1.0" safe-array-concat@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/safe-array-concat/-/safe-array-concat-1.0.0.tgz#2064223cba3c08d2ee05148eedbc563cd6d84060" + resolved "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.0.0.tgz" integrity sha512-9dVEFruWIsnie89yym+xWTAYASdpw3CJV7Li/6zBewGf9z2i1j31rP6jnY0pHEO4QZh6N0K11bFjWmdR8UGdPQ== dependencies: call-bind "^1.0.2" @@ -22645,29 +23070,29 @@ safe-array-concat@^1.0.0: safe-buffer@5.1.2, safe-buffer@~5.1.0, safe-buffer@~5.1.1: version "5.1.2" - resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" + resolved "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz" integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== safe-buffer@5.2.1, safe-buffer@>=5.1.0, 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.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" + resolved "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz" integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== safe-event-emitter@^1.0.1: version "1.0.1" - resolved "https://registry.yarnpkg.com/safe-event-emitter/-/safe-event-emitter-1.0.1.tgz#5b692ef22329ed8f69fdce607e50ca734f6f20af" + resolved "https://registry.npmjs.org/safe-event-emitter/-/safe-event-emitter-1.0.1.tgz" integrity sha512-e1wFe99A91XYYxoQbcq2ZJUWurxEyP8vfz7A7vuUe1s95q8r5ebraVaA1BukYJcpM6V16ugWoD9vngi8Ccu5fg== dependencies: events "^3.0.0" safe-json-stringify@~1: version "1.2.0" - resolved "https://registry.yarnpkg.com/safe-json-stringify/-/safe-json-stringify-1.2.0.tgz#356e44bc98f1f93ce45df14bcd7c01cda86e0afd" + resolved "https://registry.npmjs.org/safe-json-stringify/-/safe-json-stringify-1.2.0.tgz" integrity sha512-gH8eh2nZudPQO6TytOvbxnuhYBOvDBBLW52tz5q6X58lJcd/tkmqFR+5Z9adS8aJtURSXWThWy/xJtJwixErvg== 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" + resolved "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.0.tgz" integrity sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA== dependencies: call-bind "^1.0.2" @@ -22683,37 +23108,37 @@ safe-regex@^1.1.0: safe-stable-stringify@^2.3.1: version "2.4.3" - resolved "https://registry.yarnpkg.com/safe-stable-stringify/-/safe-stable-stringify-2.4.3.tgz#138c84b6f6edb3db5f8ef3ef7115b8f55ccbf886" + resolved "https://registry.npmjs.org/safe-stable-stringify/-/safe-stable-stringify-2.4.3.tgz" integrity sha512-e2bDA2WJT0wxseVd4lsDP4+3ONX6HpMXQa1ZhFQ7SU+GjvORCmShbCMltrtIDfkYhVHrOcPtj+KhmDBdPdZD1g== "safer-buffer@>= 2.1.2 < 3", "safer-buffer@>= 2.1.2 < 3.0.0", safer-buffer@^2.0.2, safer-buffer@^2.1.0, safer-buffer@~2.1.0: version "2.1.2" - resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" + resolved "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz" integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== sax@1.2.1: version "1.2.1" - resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.1.tgz#7b8e656190b228e81a66aea748480d828cd2d37a" + resolved "https://registry.npmjs.org/sax/-/sax-1.2.1.tgz" integrity sha512-8I2a3LovHTOpm7NV5yOyO8IHqgVsfK4+UuySrXU8YXkSRX7k6hCV9b3HrkKCr3nMpgj+0bmocaJJWpvp1oc7ZA== -sax@>=0.6.0, sax@^1.2.4: +sax@>=0.6.0: version "1.2.4" - resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9" + resolved "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz" integrity sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw== scrypt-js@2.0.3: version "2.0.3" - resolved "https://registry.yarnpkg.com/scrypt-js/-/scrypt-js-2.0.3.tgz#bb0040be03043da9a012a2cea9fc9f852cfc87d4" + resolved "https://registry.npmjs.org/scrypt-js/-/scrypt-js-2.0.3.tgz" integrity sha512-d8DzQxNivoNDogyYmb/9RD5mEQE/Q7vG2dLDUgvfPmKL9xCVzgqUntOdS0me9Cq9Sh9VxIZuoNEFcsfyXRnyUw== scrypt-js@2.0.4: version "2.0.4" - resolved "https://registry.yarnpkg.com/scrypt-js/-/scrypt-js-2.0.4.tgz#32f8c5149f0797672e551c07e230f834b6af5f16" + resolved "https://registry.npmjs.org/scrypt-js/-/scrypt-js-2.0.4.tgz" integrity sha512-4KsaGcPnuhtCZQCxFxN3GVYIhKFPTdLd8PLC552XwbMndtD0cjRFAhDuuydXQ0h08ZfPgzqe6EKHozpuH74iDw== scrypt-js@3.0.1, scrypt-js@^3.0.0, scrypt-js@^3.0.1: version "3.0.1" - resolved "https://registry.yarnpkg.com/scrypt-js/-/scrypt-js-3.0.1.tgz#d314a57c2aef69d1ad98a138a21fe9eafa9ee312" + resolved "https://registry.npmjs.org/scrypt-js/-/scrypt-js-3.0.1.tgz" integrity sha512-cdwTTnqPu0Hyvf5in5asVdZocVDTNRmR7XEcJuIzMjJeSHybHl7vpB66AzwTaIg6CLSbtjcxc8fqcySfnTkccA== "scrypt-shim@github:web3-js/scrypt-shim": @@ -22725,19 +23150,19 @@ scrypt-js@3.0.1, scrypt-js@^3.0.0, scrypt-js@^3.0.1: scryptsy@^1.2.1: version "1.2.1" - resolved "https://registry.yarnpkg.com/scryptsy/-/scryptsy-1.2.1.tgz#a3225fa4b2524f802700761e2855bdf3b2d92163" + resolved "https://registry.npmjs.org/scryptsy/-/scryptsy-1.2.1.tgz" integrity sha512-aldIRgMozSJ/Gl6K6qmJZysRP82lz83Wb42vl4PWN8SaLFHIaOzLPc9nUUW2jQN88CuGm5q5HefJ9jZ3nWSmTw== dependencies: pbkdf2 "^3.0.3" scryptsy@^2.1.0: version "2.1.0" - resolved "https://registry.yarnpkg.com/scryptsy/-/scryptsy-2.1.0.tgz#8d1e8d0c025b58fdd25b6fa9a0dc905ee8faa790" + resolved "https://registry.npmjs.org/scryptsy/-/scryptsy-2.1.0.tgz" integrity sha512-1CdSqHQowJBnMAFyPEBRfqag/YP9OF394FV+4YREIJX4ljD7OxvQRDayyoyyCk+senRjSkP6VnUNQmVQqB6g7w== secp256k1@4.0.3, secp256k1@^4.0.0, secp256k1@^4.0.1: version "4.0.3" - resolved "https://registry.yarnpkg.com/secp256k1/-/secp256k1-4.0.3.tgz#c4559ecd1b8d3c1827ed2d1b94190d69ce267303" + resolved "https://registry.npmjs.org/secp256k1/-/secp256k1-4.0.3.tgz" integrity sha512-NLZVf+ROMxwtEj3Xa562qgv2BK5e2WNmXPiOdVIPLgs6lyTzMvBq0aWTYMI5XCP9jZMVKOcqZLw/Wc4vDkuxhA== dependencies: elliptic "^6.5.4" @@ -22746,7 +23171,7 @@ secp256k1@4.0.3, secp256k1@^4.0.0, secp256k1@^4.0.1: secp256k1@^3.0.1: version "3.8.0" - resolved "https://registry.yarnpkg.com/secp256k1/-/secp256k1-3.8.0.tgz#28f59f4b01dbee9575f56a47034b7d2e3b3b352d" + resolved "https://registry.npmjs.org/secp256k1/-/secp256k1-3.8.0.tgz" integrity sha512-k5ke5avRZbtl9Tqx/SA7CbY3NF6Ro+Sj9cZxezFzuBlLDmyqPiL8hJJ+EmzD8Ig4LUDByHJ3/iPOVoRixs/hmw== dependencies: bindings "^1.5.0" @@ -22760,106 +23185,116 @@ secp256k1@^3.0.1: seed-random@2.2.0: version "2.2.0" - resolved "https://registry.yarnpkg.com/seed-random/-/seed-random-2.2.0.tgz#2a9b19e250a817099231a5b99a4daf80b7fbed54" + resolved "https://registry.npmjs.org/seed-random/-/seed-random-2.2.0.tgz" integrity sha512-34EQV6AAHQGhoc0tn/96a9Fsi6v2xdqe/dMUwljGRaFOzR3EgRmECvD0O8vi8X+/uQ50LGHfkNu/Eue5TPKZkQ== seedrandom@3.0.5: version "3.0.5" - resolved "https://registry.yarnpkg.com/seedrandom/-/seedrandom-3.0.5.tgz#54edc85c95222525b0c7a6f6b3543d8e0b3aa0a7" + resolved "https://registry.npmjs.org/seedrandom/-/seedrandom-3.0.5.tgz" integrity sha512-8OwmbklUNzwezjGInmZ+2clQmExQPvomqjL7LFqOYqtmuxRgQYqOD3mHaU+MvZn5FLUeVxVfQjwLZW/n/JFuqg== seek-bzip@^1.0.5: version "1.0.6" - resolved "https://registry.yarnpkg.com/seek-bzip/-/seek-bzip-1.0.6.tgz#35c4171f55a680916b52a07859ecf3b5857f21c4" + resolved "https://registry.npmjs.org/seek-bzip/-/seek-bzip-1.0.6.tgz" integrity sha512-e1QtP3YL5tWww8uKaOCQ18UxIT2laNBXHjV/S2WYCiK4udiv8lkG89KRIoCjUagnAmCBurjF4zEVX2ByBbnCjQ== dependencies: commander "^2.8.1" semaphore-async-await@^1.5.1: version "1.5.1" - resolved "https://registry.yarnpkg.com/semaphore-async-await/-/semaphore-async-await-1.5.1.tgz#857bef5e3644601ca4b9570b87e9df5ca12974fa" + resolved "https://registry.npmjs.org/semaphore-async-await/-/semaphore-async-await-1.5.1.tgz" integrity sha512-b/ptP11hETwYWpeilHXXQiV5UJNJl7ZWWooKRE5eBIYWoom6dZ0SluCIdCtKycsMtZgKWE01/qAw6jblw1YVhg== semaphore@>=1.0.1, semaphore@^1.0.3, semaphore@^1.1.0: version "1.1.0" - resolved "https://registry.yarnpkg.com/semaphore/-/semaphore-1.1.0.tgz#aaad8b86b20fe8e9b32b16dc2ee682a8cd26a8aa" + resolved "https://registry.npmjs.org/semaphore/-/semaphore-1.1.0.tgz" integrity sha512-O4OZEaNtkMd/K0i6js9SL+gqy0ZCBMgUvlSqHKi4IBdjhe7wB8pwztUk1BbZ1fmrvpwFrPbHzqd2w5pTcJH6LA== semver-compare@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/semver-compare/-/semver-compare-1.0.0.tgz#0dee216a1c941ab37e9efb1788f6afc5ff5537fc" + resolved "https://registry.npmjs.org/semver-compare/-/semver-compare-1.0.0.tgz" integrity sha512-YM3/ITh2MJ5MtzaM429anh+x2jiLVjqILF4m4oyQB18W7Ggea7BfqdH/wGMK7dDiMghv/6WG7znWMwUDzJiXow== semver-diff@^3.1.1: version "3.1.1" - resolved "https://registry.yarnpkg.com/semver-diff/-/semver-diff-3.1.1.tgz#05f77ce59f325e00e2706afd67bb506ddb1ca32b" + resolved "https://registry.npmjs.org/semver-diff/-/semver-diff-3.1.1.tgz" integrity sha512-GX0Ix/CJcHyB8c4ykpHGIAvLyOwOobtM/8d+TQkAd81/bEjgPHrfba41Vpesr7jX/t8Uh+R3EX9eAS5be+jQYg== dependencies: semver "^6.3.0" -"semver@2 || 3 || 4 || 5", semver@^5.0.1, semver@^5.3.0, semver@^5.4.1, semver@^5.5.0, semver@^5.5.1, semver@^5.6.0, semver@^5.7.0, semver@^5.7.1: +"semver@2 || 3 || 4 || 5", semver@^5.3.0, semver@^5.4.1, semver@^5.5.0, semver@^5.5.1, semver@^5.6.0: version "5.7.1" - resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" + resolved "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz" integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== semver@4.3.2: version "4.3.2" - resolved "https://registry.yarnpkg.com/semver/-/semver-4.3.2.tgz#c7a07158a80bedd052355b770d82d6640f803be7" + resolved "https://registry.npmjs.org/semver/-/semver-4.3.2.tgz" integrity sha512-VyFUffiBx8hABJ9HYSTXLRwyZtdDHMzMtFmID1aiNAD2BZppBmJm0Hqw3p2jkgxP9BNt1pQ9RnC49P0EcXf6cA== semver@5.5.0: version "5.5.0" - resolved "https://registry.yarnpkg.com/semver/-/semver-5.5.0.tgz#dc4bbc7a6ca9d916dee5d43516f0092b58f7b8ab" + resolved "https://registry.npmjs.org/semver/-/semver-5.5.0.tgz" integrity sha512-4SJ3dm0WAwWy/NVeioZh5AntkdJoWKxHxcmyP622fOkgHa4z3R0TdBJICINyaSDE6uNwVc8gZr+ZinwZAH4xIA== semver@7.3.4: version "7.3.4" - resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.4.tgz#27aaa7d2e4ca76452f98d3add093a72c943edc97" + resolved "https://registry.npmjs.org/semver/-/semver-7.3.4.tgz" integrity sha512-tCfb2WLjqFAtXn4KEdxIhalnRtoKFN7nAwj0B3ZXCbQloV2tq5eDbcTmT68JJD3nRJq24/XgxtQKFIpQdtvmVw== dependencies: lru-cache "^6.0.0" semver@7.3.5: version "7.3.5" - resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.5.tgz#0b621c879348d8998e4b0e4be94b3f12e6018ef7" + resolved "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz" integrity sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ== dependencies: lru-cache "^6.0.0" semver@7.3.7: version "7.3.7" - resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.7.tgz#12c5b649afdbf9049707796e22a4028814ce523f" + resolved "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz" integrity sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g== dependencies: lru-cache "^6.0.0" -semver@7.x, semver@^7.0.0, semver@^7.1.1, semver@^7.3.2, semver@^7.3.4, semver@^7.3.5, semver@^7.3.7, semver@^7.3.8, semver@^7.4.0: - version "7.5.0" - resolved "https://registry.yarnpkg.com/semver/-/semver-7.5.0.tgz#ed8c5dc8efb6c629c88b23d41dc9bf40c1d96cd0" - integrity sha512-+XC0AD/R7Q2mPSRuy2Id0+CGTZ98+8f+KvwirxOKIEyid+XSx6HbC63p+O4IndTHuX5Z+JxQ0TghCkO5Cg/2HA== - dependencies: - lru-cache "^6.0.0" +semver@^5.0.1, semver@^5.7.0, semver@^5.7.1: + version "5.7.2" + resolved "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz" + integrity sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g== -semver@^6.0.0, semver@^6.1.1, semver@^6.1.2, semver@^6.2.0, semver@^6.3.0: +semver@^6.0.0, semver@^6.1.1, semver@^6.1.2, semver@^6.3.0: version "6.3.0" - resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" + resolved "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz" integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== -semver@^7.1.2, semver@^7.5.1, semver@^7.5.2: +semver@^6.2.0: + version "6.3.1" + resolved "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz" + integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA== + +semver@^7.0.0, semver@^7.1.1, semver@^7.1.2, semver@^7.3.4, semver@^7.3.7, semver@^7.5.1, semver@^7.5.2, semver@^7.5.3, semver@^7.5.4: version "7.5.4" - resolved "https://registry.yarnpkg.com/semver/-/semver-7.5.4.tgz#483986ec4ed38e1c6c48c34894a9182dbff68a6e" + resolved "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz" integrity sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA== dependencies: lru-cache "^6.0.0" +semver@^7.3.2, semver@^7.3.5, semver@^7.3.8, semver@^7.4.0: + version "7.5.0" + resolved "https://registry.npmjs.org/semver/-/semver-7.5.0.tgz" + integrity sha512-+XC0AD/R7Q2mPSRuy2Id0+CGTZ98+8f+KvwirxOKIEyid+XSx6HbC63p+O4IndTHuX5Z+JxQ0TghCkO5Cg/2HA== + dependencies: + lru-cache "^6.0.0" + semver@~5.4.1: version "5.4.1" - resolved "https://registry.yarnpkg.com/semver/-/semver-5.4.1.tgz#e059c09d8571f0540823733433505d3a2f00b18e" + resolved "https://registry.npmjs.org/semver/-/semver-5.4.1.tgz" integrity sha512-WfG/X9+oATh81XtllIo/I8gOiY9EXRdv1cQdyykeXK17YcUW3EXUAi2To4pcH6nZtJPr7ZOpM5OMyWJZm+8Rsg== send@0.18.0: version "0.18.0" - resolved "https://registry.yarnpkg.com/send/-/send-0.18.0.tgz#670167cc654b05f5aa4a767f9113bb371bc706be" + resolved "https://registry.npmjs.org/send/-/send-0.18.0.tgz" integrity sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg== dependencies: debug "2.6.9" @@ -22878,7 +23313,7 @@ send@0.18.0: sentence-case@^2.1.0: version "2.1.1" - resolved "https://registry.yarnpkg.com/sentence-case/-/sentence-case-2.1.1.tgz#1f6e2dda39c168bf92d13f86d4a918933f667ed4" + resolved "https://registry.npmjs.org/sentence-case/-/sentence-case-2.1.1.tgz" integrity sha512-ENl7cYHaK/Ktwk5OTD+aDbQ3uC8IByu/6Bkg+HDv8Mm+XnBnppVNalcfJTNsp1ibstKh030/JKQQWglDvtKwEQ== dependencies: no-case "^2.2.0" @@ -22886,24 +23321,24 @@ sentence-case@^2.1.0: seq-queue@^0.0.5: version "0.0.5" - resolved "https://registry.yarnpkg.com/seq-queue/-/seq-queue-0.0.5.tgz#d56812e1c017a6e4e7c3e3a37a1da6d78dd3c93e" + resolved "https://registry.npmjs.org/seq-queue/-/seq-queue-0.0.5.tgz" integrity sha512-hr3Wtp/GZIc/6DAGPDcV4/9WoZhjrkXsi5B/07QgX8tsdc6ilr7BFM6PM6rbdAX1kFSDYeZGLipIZZKyQP0O5Q== serialize-javascript@3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-3.0.0.tgz#492e489a2d77b7b804ad391a5f5d97870952548e" + resolved "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-3.0.0.tgz" integrity sha512-skZcHYw2vEX4bw90nAr2iTTsz6x2SrHEnfxgKYmZlvJYBEZrvbKtobJWlQ20zczKb3bsHHXXTYt48zBA7ni9cw== serialize-javascript@6.0.0: version "6.0.0" - resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-6.0.0.tgz#efae5d88f45d7924141da8b5c3a7a7e663fefeb8" + resolved "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.0.tgz" integrity sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag== dependencies: randombytes "^2.1.0" serve-static@1.15.0: version "1.15.0" - resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.15.0.tgz#faaef08cffe0a1a62f60cad0c4e513cff0ac9540" + resolved "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz" integrity sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g== dependencies: encodeurl "~1.0.2" @@ -22913,7 +23348,7 @@ serve-static@1.15.0: servify@^0.1.12: version "0.1.12" - resolved "https://registry.yarnpkg.com/servify/-/servify-0.1.12.tgz#142ab7bee1f1d033b66d0707086085b17c06db95" + resolved "https://registry.npmjs.org/servify/-/servify-0.1.12.tgz" integrity sha512-/xE6GvsKKqyo1BAY+KxOWXcLpPsUUyji7Qg3bVD7hh1eRze5bR1uYiuDA/k3Gof1s9BTzQZEJK8sNcNGFIzeWw== dependencies: body-parser "^1.16.0" @@ -22924,17 +23359,25 @@ servify@^0.1.12: set-blocking@^2.0.0, set-blocking@~2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" + resolved "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz" integrity sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw== +set-function-name@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.0.tgz" + integrity sha512-WmS8UHojv5s1eSoRSmzO5zzgDq8PE1/X/ij0k+9fMYmINCc6+j+SF3Om8YyucKn2yjnK4ItNZOoQycNnHsZJTw== + dependencies: + define-data-property "^1.0.1" + has-property-descriptors "^1.0.0" + set-immediate-shim@^1.0.1: version "1.0.1" - resolved "https://registry.yarnpkg.com/set-immediate-shim/-/set-immediate-shim-1.0.1.tgz#4b2b1b27eb808a9f8dcc481a58e5e56f599f3f61" + resolved "https://registry.npmjs.org/set-immediate-shim/-/set-immediate-shim-1.0.1.tgz" integrity sha512-Li5AOqrZWCVA2n5kryzEmqai6bKSIvpz5oUJHPVj6+dsbD3X1ixtsY5tEnsaNpH3pFAHmG8eIHUrtEtohrg+UQ== set-value@^0.2.0: version "0.2.0" - resolved "https://registry.yarnpkg.com/set-value/-/set-value-0.2.0.tgz#73b0a6825c158c6a16a82bbdc95775bf2a825fab" + resolved "https://registry.npmjs.org/set-value/-/set-value-0.2.0.tgz" integrity sha512-dJaeu7V8d1KwjePimg1oOpGp31cEw/uRcZlfL7wwemkr+A00ev/ZhikvSMiQ4hkf83d8JdY2AFoFmXsKzmHMSw== dependencies: isobject "^1.0.0" @@ -22952,22 +23395,22 @@ set-value@^2.0.0, set-value@^2.0.1: setimmediate@1.0.4: version "1.0.4" - resolved "https://registry.yarnpkg.com/setimmediate/-/setimmediate-1.0.4.tgz#20e81de622d4a02588ce0c8da8973cbcf1d3138f" + resolved "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.4.tgz" integrity sha512-/TjEmXQVEzdod/FFskf3o7oOAsGhHf2j1dZqRFbDzq4F3mvvxflIIi4Hd3bLQE9y/CpwqfSQam5JakI/mi3Pog== setimmediate@^1.0.5, setimmediate@~1.0.4: version "1.0.5" - resolved "https://registry.yarnpkg.com/setimmediate/-/setimmediate-1.0.5.tgz#290cbb232e306942d7d7ea9b83732ab7856f8285" + resolved "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz" integrity sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA== setprototypeof@1.2.0: version "1.2.0" - resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.2.0.tgz#66c9a24a73f9fc28cbe66b09fed3d33dcaf1b424" + resolved "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz" integrity sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw== sha.js@^2.4.0, sha.js@^2.4.11, sha.js@^2.4.8: version "2.4.11" - resolved "https://registry.yarnpkg.com/sha.js/-/sha.js-2.4.11.tgz#37a5cf0b81ecbc6943de109ba2960d1b26584ae7" + resolved "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz" integrity sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ== dependencies: inherits "^2.0.1" @@ -22983,45 +23426,45 @@ sha1@^1.1.1: sha3@^2.1.1: version "2.1.4" - resolved "https://registry.yarnpkg.com/sha3/-/sha3-2.1.4.tgz#000fac0fe7c2feac1f48a25e7a31b52a6492cc8f" + resolved "https://registry.npmjs.org/sha3/-/sha3-2.1.4.tgz" integrity sha512-S8cNxbyb0UGUM2VhRD4Poe5N58gJnJsLJ5vC7FYWGUmGhcsj4++WaIOBFVDxlG0W3To6xBuiRh+i0Qp2oNCOtg== dependencies: buffer "6.0.3" shallow-clone@^3.0.0: version "3.0.1" - resolved "https://registry.yarnpkg.com/shallow-clone/-/shallow-clone-3.0.1.tgz#8f2981ad92531f55035b01fb230769a40e02efa3" + resolved "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz" integrity sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA== dependencies: kind-of "^6.0.2" shallowequal@^1.0.2: version "1.1.0" - resolved "https://registry.yarnpkg.com/shallowequal/-/shallowequal-1.1.0.tgz#188d521de95b9087404fd4dcb68b13df0ae4e7f8" + resolved "https://registry.npmjs.org/shallowequal/-/shallowequal-1.1.0.tgz" integrity sha512-y0m1JoUZSlPAjXVtPPW70aZWfIL/dSP7AFkRnniLCrK/8MDKog3TySTBmckD+RObVxH0v4Tox67+F14PdED2oQ== shebang-command@^1.2.0: version "1.2.0" - resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-1.2.0.tgz#44aac65b695b03398968c39f363fee5deafdf1ea" + resolved "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz" integrity sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg== dependencies: shebang-regex "^1.0.0" shebang-command@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea" + resolved "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz" integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA== dependencies: shebang-regex "^3.0.0" shebang-regex@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-1.0.0.tgz#da42f49740c0b42db2ca9728571cb190c98efea3" + resolved "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz" integrity sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ== shebang-regex@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" + resolved "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz" integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== shelljs@^0.8.4: @@ -23035,12 +23478,12 @@ shelljs@^0.8.4: shimmer@^1.2.1: version "1.2.1" - resolved "https://registry.yarnpkg.com/shimmer/-/shimmer-1.2.1.tgz#610859f7de327b587efebf501fb43117f9aff337" + resolved "https://registry.npmjs.org/shimmer/-/shimmer-1.2.1.tgz" integrity sha512-sQTKC1Re/rM6XyFM6fIAGHRPVGvyXfgzIDvzoq608vM+jeyVD0Tu1E6Np0Kc2zAIFWIj963V2800iF/9LPieQw== side-channel@^1.0.4: version "1.0.4" - resolved "https://registry.yarnpkg.com/side-channel/-/side-channel-1.0.4.tgz#efce5c8fdc104ee751b25c58d4290011fa5ea2cf" + resolved "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz" integrity sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw== dependencies: call-bind "^1.0.0" @@ -23049,22 +23492,22 @@ side-channel@^1.0.4: signal-exit@^3.0.0, signal-exit@^3.0.2, signal-exit@^3.0.3, signal-exit@^3.0.7: version "3.0.7" - resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.7.tgz#a9a1767f8af84155114eaabd73f99273c8f59ad9" + resolved "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz" integrity sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ== signal-exit@^4.0.1: version "4.1.0" - resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-4.1.0.tgz#952188c1cbd546070e2dd20d0f41c0ae0530cb04" + resolved "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz" integrity sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw== simple-concat@^1.0.0: version "1.0.1" - resolved "https://registry.yarnpkg.com/simple-concat/-/simple-concat-1.0.1.tgz#f46976082ba35c2263f1c8ab5edfe26c41c9552f" + resolved "https://registry.npmjs.org/simple-concat/-/simple-concat-1.0.1.tgz" integrity sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q== simple-get@^2.7.0: version "2.8.2" - resolved "https://registry.yarnpkg.com/simple-get/-/simple-get-2.8.2.tgz#5708fb0919d440657326cd5fe7d2599d07705019" + resolved "https://registry.npmjs.org/simple-get/-/simple-get-2.8.2.tgz" integrity sha512-Ijd/rV5o+mSBBs4F/x9oDPtTx9Zb6X9brmnXvMW4J7IR15ngi9q5xxqWBKU744jTZiaXtxaPL7uHG6vtN8kUkw== dependencies: decompress-response "^3.3.0" @@ -23073,7 +23516,7 @@ simple-get@^2.7.0: simple-get@^3.0.3: version "3.1.1" - resolved "https://registry.yarnpkg.com/simple-get/-/simple-get-3.1.1.tgz#cc7ba77cfbe761036fbfce3d021af25fc5584d55" + resolved "https://registry.npmjs.org/simple-get/-/simple-get-3.1.1.tgz" integrity sha512-CQ5LTKGfCpvE1K0n2us+kuMPbk/q0EKl82s4aheV9oXjFEz6W/Y7oQFVJuU6QG77hRT4Ghb5RURteF5vnWjupA== dependencies: decompress-response "^4.2.0" @@ -23082,7 +23525,7 @@ simple-get@^3.0.3: simple-get@^4.0.0: version "4.0.1" - resolved "https://registry.yarnpkg.com/simple-get/-/simple-get-4.0.1.tgz#4a39db549287c979d352112fa03fd99fd6bc3543" + resolved "https://registry.npmjs.org/simple-get/-/simple-get-4.0.1.tgz" integrity sha512-brv7p5WgH0jmQJr1ZDDfKDOSeWWg+OVypG99A/5vYGPqJ6pxiaHLy8nxtFjBA7oMa01ebA9gfh1uMCFqOuXxvA== dependencies: decompress-response "^6.0.0" @@ -23091,46 +23534,46 @@ simple-get@^4.0.0: simple-swizzle@^0.2.2: version "0.2.2" - resolved "https://registry.yarnpkg.com/simple-swizzle/-/simple-swizzle-0.2.2.tgz#a4da6b635ffcccca33f70d17cb92592de95e557a" + resolved "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.2.tgz" integrity sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg== dependencies: is-arrayish "^0.3.1" sisteransi@^1.0.0, sisteransi@^1.0.5: version "1.0.5" - resolved "https://registry.yarnpkg.com/sisteransi/-/sisteransi-1.0.5.tgz#134d681297756437cc05ca01370d3a7a571075ed" + resolved "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz" integrity sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg== slash@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/slash/-/slash-1.0.0.tgz#c41f2f6c39fc16d1cd17ad4b5d896114ae470d55" + resolved "https://registry.npmjs.org/slash/-/slash-1.0.0.tgz" integrity sha512-3TYDR7xWt4dIqV2JauJr+EJeW356RXijHeUlO+8djJ+uBXPn8/2dpzBc8yQhh583sVvc9CvFAeQVgijsH+PNNg== slash@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/slash/-/slash-2.0.0.tgz#de552851a1759df3a8f206535442f5ec4ddeab44" + resolved "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz" integrity sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A== slash@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634" + resolved "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz" integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q== sleep-promise@^8.0.1: version "8.0.1" - resolved "https://registry.yarnpkg.com/sleep-promise/-/sleep-promise-8.0.1.tgz#8d795a27ea23953df6b52b91081e5e22665993c5" + resolved "https://registry.npmjs.org/sleep-promise/-/sleep-promise-8.0.1.tgz" integrity sha512-nfwyX+G1dsx2R1DMMKWLpNxuHMOCL7JIRBUw0fl7Z4nZ1YZK0apZuGY8MDexn0HDZzgbERgj/CrNtsYpo/B7eA== sleep@6.1.0: version "6.1.0" - resolved "https://registry.yarnpkg.com/sleep/-/sleep-6.1.0.tgz#5507b520556a82ffb983d39123c5459470fa2a9e" + resolved "https://registry.npmjs.org/sleep/-/sleep-6.1.0.tgz" integrity sha512-Z1x4JjJxsru75Tqn8F4tnOFeEu3HjtITTsumYUiuz54sGKdISgLCek9AUlXlVVrkhltRFhNUsJDJE76SFHTDIQ== dependencies: nan "^2.13.2" slice-ansi@^2.1.0: version "2.1.0" - resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-2.1.0.tgz#cacd7693461a637a5788d92a7dd4fba068e81636" + resolved "https://registry.npmjs.org/slice-ansi/-/slice-ansi-2.1.0.tgz" integrity sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ== dependencies: ansi-styles "^3.2.0" @@ -23139,19 +23582,19 @@ slice-ansi@^2.1.0: smart-buffer@^4.2.0: version "4.2.0" - resolved "https://registry.yarnpkg.com/smart-buffer/-/smart-buffer-4.2.0.tgz#6e1d71fa4f18c05f7d0ff216dd16a481d0e8d9ae" + resolved "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz" integrity sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg== snake-case@^2.1.0: version "2.1.0" - resolved "https://registry.yarnpkg.com/snake-case/-/snake-case-2.1.0.tgz#41bdb1b73f30ec66a04d4e2cad1b76387d4d6d9f" + resolved "https://registry.npmjs.org/snake-case/-/snake-case-2.1.0.tgz" integrity sha512-FMR5YoPFwOLuh4rRz92dywJjyKYZNLpMn1R5ujVpIYkbA9p01fq8RMg0FkO4M+Yobt4MjHeLTJVm5xFFBHSV2Q== dependencies: no-case "^2.2.0" snakeize@^0.1.0: version "0.1.0" - resolved "https://registry.yarnpkg.com/snakeize/-/snakeize-0.1.0.tgz#10c088d8b58eb076b3229bb5a04e232ce126422d" + resolved "https://registry.npmjs.org/snakeize/-/snakeize-0.1.0.tgz" integrity sha512-ot3bb6pQt6IVq5G/JQ640ceSYTPtriVrwNyfoUw1LmQQGzPMAGxE5F+ded2UwSUCyf2PW1fFAYUnVEX21PWbpQ== snapdragon-node@^2.0.1: @@ -23186,7 +23629,7 @@ snapdragon@^0.8.1: socks-proxy-agent@5, socks-proxy-agent@^5.0.0: version "5.0.1" - resolved "https://registry.yarnpkg.com/socks-proxy-agent/-/socks-proxy-agent-5.0.1.tgz#032fb583048a29ebffec2e6a73fca0761f48177e" + resolved "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-5.0.1.tgz" integrity sha512-vZdmnjb9a2Tz6WEQVIurybSwElwPxMZaIc7PzqbJTrezcKNznv6giT7J7tZDZ1BojVaa1jvO/UiUdhDVB0ACoQ== dependencies: agent-base "^6.0.2" @@ -23195,7 +23638,7 @@ socks-proxy-agent@5, socks-proxy-agent@^5.0.0: socks-proxy-agent@^6.0.0: version "6.2.1" - resolved "https://registry.yarnpkg.com/socks-proxy-agent/-/socks-proxy-agent-6.2.1.tgz#2687a31f9d7185e38d530bef1944fe1f1496d6ce" + resolved "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-6.2.1.tgz" integrity sha512-a6KW9G+6B3nWZ1yB8G7pJwL3ggLy1uTzKAgCb7ttblwqdz9fMGJUuTy3uFzEP48FAs9FLILlmzDlE2JJhVQaXQ== dependencies: agent-base "^6.0.2" @@ -23204,25 +23647,25 @@ socks-proxy-agent@^6.0.0: socks-proxy-agent@^7.0.0: version "7.0.0" - resolved "https://registry.yarnpkg.com/socks-proxy-agent/-/socks-proxy-agent-7.0.0.tgz#dc069ecf34436621acb41e3efa66ca1b5fed15b6" + resolved "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-7.0.0.tgz" integrity sha512-Fgl0YPZ902wEsAyiQ+idGd1A7rSFx/ayC1CQVMw5P+EQx2V0SgpGtf6OKFhVjPflPUl9YMmEOnmfjCdMUsygww== dependencies: agent-base "^6.0.2" debug "^4.3.3" socks "^2.6.2" -socks-proxy-agent@^8.0.1: - version "8.0.1" - resolved "https://registry.yarnpkg.com/socks-proxy-agent/-/socks-proxy-agent-8.0.1.tgz#ffc5859a66dac89b0c4dab90253b96705f3e7120" - integrity sha512-59EjPbbgg8U3x62hhKOFVAmySQUcfRQ4C7Q/D5sEHnZTQRrQlNKINks44DMR1gwXp0p4LaVIeccX2KHTTcHVqQ== +socks-proxy-agent@^8.0.2: + version "8.0.2" + resolved "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-8.0.2.tgz" + integrity sha512-8zuqoLv1aP/66PHF5TqwJ7Czm3Yv32urJQHrVyhD7mmA6d61Zv8cIXQYPTWwmg6qlupnPvs/QKDmfa4P/qct2g== dependencies: - agent-base "^7.0.1" + agent-base "^7.0.2" debug "^4.3.4" socks "^2.7.1" socks@^2.3.3, socks@^2.6.2, socks@^2.7.1: version "2.7.1" - resolved "https://registry.yarnpkg.com/socks/-/socks-2.7.1.tgz#d8e651247178fde79c0663043e07240196857d55" + resolved "https://registry.npmjs.org/socks/-/socks-2.7.1.tgz" integrity sha512-7maUZy1N7uo6+WVEX6psASxtNlKaNVMlGQKkG/63nEDdLOWNbiUMoLK7X4uYoLhQstau72mLgfEWcXcwsaHbYQ== dependencies: ip "^2.0.0" @@ -23230,7 +23673,7 @@ socks@^2.3.3, socks@^2.6.2, socks@^2.7.1: solc@0.5.8: version "0.5.8" - resolved "https://registry.yarnpkg.com/solc/-/solc-0.5.8.tgz#a0aa2714082fc406926f5cb384376d7408080611" + resolved "https://registry.npmjs.org/solc/-/solc-0.5.8.tgz" integrity sha512-RQ2SlwPBOBSV7ktNQJkvbiQks3t+3V9dsqD014EdstxnJzSxBuOvbt3P5QXpNPYW1DsEmF7dhOaT3JL7yEae/A== dependencies: command-exists "^1.2.8" @@ -23244,7 +23687,7 @@ solc@0.5.8: solc@0.8.19, solc@^0.8: version "0.8.19" - resolved "https://registry.yarnpkg.com/solc/-/solc-0.8.19.tgz#cac6541106ae3cff101c740042c7742aa56a2ed3" + resolved "https://registry.npmjs.org/solc/-/solc-0.8.19.tgz" integrity sha512-yqurS3wzC4LdEvmMobODXqprV4MYJcVtinuxgrp61ac8K2zz40vXA0eSAskSHPgv8dQo7Nux39i3QBsHx4pqyA== dependencies: command-exists "^1.2.8" @@ -23257,7 +23700,7 @@ solc@0.8.19, solc@^0.8: solc@^0.4.2, solc@^0.4.20: version "0.4.26" - resolved "https://registry.yarnpkg.com/solc/-/solc-0.4.26.tgz#5390a62a99f40806b86258c737c1cf653cc35cb5" + resolved "https://registry.npmjs.org/solc/-/solc-0.4.26.tgz" integrity sha512-o+c6FpkiHd+HPjmjEVpQgH7fqZ14tJpXhho+/bQXlXbliLIS/xjXb42Vxh+qQY1WCSTMQ0+a5vR9vi0MfhU6mA== dependencies: fs-extra "^0.30.0" @@ -23268,7 +23711,7 @@ solc@^0.4.2, solc@^0.4.20: solc@^0.5.8: version "0.5.17" - resolved "https://registry.yarnpkg.com/solc/-/solc-0.5.17.tgz#8a76c50e98d49ca7610cca2fdc78ff3016540c67" + resolved "https://registry.npmjs.org/solc/-/solc-0.5.17.tgz" integrity sha512-qpX+PGaU0Q3c6lh2vDzMoIbhv6bIrecI4bYsx+xUs01xsGFnY6Nr0L8y/QMyutTnrHN6Lb/Yl672ZVRqxka96w== dependencies: command-exists "^1.2.8" @@ -23282,7 +23725,7 @@ solc@^0.5.8: solc@^0.6.0: version "0.6.12" - resolved "https://registry.yarnpkg.com/solc/-/solc-0.6.12.tgz#48ac854e0c729361b22a7483645077f58cba080e" + resolved "https://registry.npmjs.org/solc/-/solc-0.6.12.tgz" integrity sha512-Lm0Ql2G9Qc7yPP2Ba+WNmzw2jwsrd3u4PobHYlSOxaut3TtUbj9+5ZrT6f4DUpNPEoBaFUOEg9Op9C0mk7ge9g== dependencies: command-exists "^1.2.8" @@ -23296,7 +23739,7 @@ solc@^0.6.0: solhint@^2.3.1: version "2.3.1" - resolved "https://registry.yarnpkg.com/solhint/-/solhint-2.3.1.tgz#6fee8fc2635112bf5812f7cba8359c14e9d9a491" + resolved "https://registry.npmjs.org/solhint/-/solhint-2.3.1.tgz" integrity sha512-wP/G+Dqj8LNWlCI9Mt6XiQRWQfZwv1rkZe/V+HKtip5SAZJVvp144PdH28KE45ZvR99Hhrp/Mujt74fSmXsFiw== dependencies: ajv "^6.6.1" @@ -23316,24 +23759,24 @@ solhint@^2.3.1: solidity-bytes-utils@0.0.7: version "0.0.7" - resolved "https://registry.yarnpkg.com/solidity-bytes-utils/-/solidity-bytes-utils-0.0.7.tgz#ccc865a6694b4865f2020cee37c15cc26f81cf9b" + resolved "https://registry.npmjs.org/solidity-bytes-utils/-/solidity-bytes-utils-0.0.7.tgz" integrity sha512-NdzNDmzpd45MiEmYS5MVW1O0ovjneyXpPV5iWt05juA77KFQqO2axQOdkMGvKtA69nxobKQU9BakopeT48bWRQ== dependencies: truffle-hdwallet-provider "0.0.3" solidity-comments-extractor@^0.0.7: version "0.0.7" - resolved "https://registry.yarnpkg.com/solidity-comments-extractor/-/solidity-comments-extractor-0.0.7.tgz#99d8f1361438f84019795d928b931f4e5c39ca19" + resolved "https://registry.npmjs.org/solidity-comments-extractor/-/solidity-comments-extractor-0.0.7.tgz" integrity sha512-wciNMLg/Irp8OKGrh3S2tfvZiZ0NEyILfcRCXCD4mp7SgK/i9gzLfhY2hY7VMCQJ3kH9UB9BzNdibIVMchzyYw== solidity-parser-antlr@^0.4.11, solidity-parser-antlr@^0.4.2: version "0.4.11" - resolved "https://registry.yarnpkg.com/solidity-parser-antlr/-/solidity-parser-antlr-0.4.11.tgz#af43e1f13b3b88309a875455f5d6e565b05ee5f1" + resolved "https://registry.npmjs.org/solidity-parser-antlr/-/solidity-parser-antlr-0.4.11.tgz" integrity sha512-4jtxasNGmyC0midtjH/lTFPZYvTTUMy6agYcF+HoMnzW8+cqo3piFrINb4ZCzpPW+7tTVFCGa5ubP34zOzeuMg== sort-keys@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/sort-keys/-/sort-keys-2.0.0.tgz#658535584861ec97d730d6cf41822e1f56684128" + resolved "https://registry.npmjs.org/sort-keys/-/sort-keys-2.0.0.tgz" integrity sha512-/dPCrG1s3ePpWm6yBbxZq5Be1dXGLyLn9Z791chDC3NFrpkVbWGzkBwPN1knaciexFXgRJ7hzdnwZ4stHSDmjg== dependencies: is-plain-obj "^1.0.0" @@ -23358,7 +23801,7 @@ source-map-resolve@^0.5.0: source-map-support@0.5.13: version "0.5.13" - resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.13.tgz#31b24a9c2e73c2de85066c0feb7d44767ed52932" + resolved "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.13.tgz" integrity sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w== dependencies: buffer-from "^1.0.0" @@ -23366,7 +23809,7 @@ source-map-support@0.5.13: source-map-support@^0.5.0, source-map-support@^0.5.16, source-map-support@^0.5.17, source-map-support@^0.5.19, source-map-support@^0.5.6: version "0.5.21" - resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.21.tgz#04fe7c7f9e1ed2d662233c28cb2b35b9f63f6e4f" + resolved "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz" integrity sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w== dependencies: buffer-from "^1.0.0" @@ -23384,24 +23827,24 @@ source-map@^0.5.6: source-map@^0.6.0, source-map@^0.6.1, source-map@~0.6.1: version "0.6.1" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" + resolved "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz" integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== source-map@~0.2.0: version "0.2.0" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.2.0.tgz#dab73fbcfc2ba819b4de03bd6f6eaa48164b3f9d" + resolved "https://registry.npmjs.org/source-map/-/source-map-0.2.0.tgz" integrity sha512-CBdZ2oa/BHhS4xj5DlhjWNHcan57/5YuvfdLf17iVmIpd9KRm+DFLmC6nBNj+6Ua7Kt3TmOjDpQT1aTYOQtoUA== dependencies: amdefine ">=0.0.4" spark-md5@3.0.2: version "3.0.2" - resolved "https://registry.yarnpkg.com/spark-md5/-/spark-md5-3.0.2.tgz#7952c4a30784347abcee73268e473b9c0167e3fc" + resolved "https://registry.npmjs.org/spark-md5/-/spark-md5-3.0.2.tgz" integrity sha512-wcFzz9cDfbuqe0FZzfi2or1sgyIrsDwmPwfZC4hiNidPdPINjeUwNfv5kldczoEAcjl9Y1L3SM7Uz2PUEQzxQw== spdx-correct@^3.0.0: version "3.2.0" - resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-3.2.0.tgz#4f5ab0668f0059e34f9c00dce331784a12de4e9c" + resolved "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.2.0.tgz" integrity sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA== dependencies: spdx-expression-parse "^3.0.0" @@ -23409,12 +23852,12 @@ spdx-correct@^3.0.0: spdx-exceptions@^2.1.0: version "2.3.0" - resolved "https://registry.yarnpkg.com/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz#3f28ce1a77a00372683eade4a433183527a2163d" + resolved "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz" integrity sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A== spdx-expression-parse@^3.0.0: version "3.0.1" - resolved "https://registry.yarnpkg.com/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz#cf70f50482eefdc98e3ce0a6833e4a53ceeba679" + resolved "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz" integrity sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q== dependencies: spdx-exceptions "^2.1.0" @@ -23422,12 +23865,12 @@ spdx-expression-parse@^3.0.0: spdx-license-ids@^3.0.0: version "3.0.13" - resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.13.tgz#7189a474c46f8d47c7b0da4b987bb45e908bd2d5" + resolved "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.13.tgz" integrity sha512-XkD+zwiqXHikFZm4AX/7JSCXA98U5Db4AFd5XUg/+9UNtnH75+Z9KxtpYiJZx36mUDVOwH83pl7yvCer6ewM3w== spinnies@^0.4.2: version "0.4.3" - resolved "https://registry.yarnpkg.com/spinnies/-/spinnies-0.4.3.tgz#2ea0ad148e78353ddf621dec3951a6f4c3cbf66e" + resolved "https://registry.npmjs.org/spinnies/-/spinnies-0.4.3.tgz" integrity sha512-TTA2vWXrXJpfThWAl2t2hchBnCMI1JM5Wmb2uyI7Zkefdw/xO98LDy6/SBYwQPiYXL3swx3Eb44ZxgoS8X5wpA== dependencies: chalk "^2.4.2" @@ -23436,7 +23879,7 @@ spinnies@^0.4.2: split-array-stream@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/split-array-stream/-/split-array-stream-2.0.0.tgz#85a4f8bfe14421d7bca7f33a6d176d0c076a53b1" + resolved "https://registry.npmjs.org/split-array-stream/-/split-array-stream-2.0.0.tgz" integrity sha512-hmMswlVY91WvGMxs0k8MRgq8zb2mSen4FmDNc5AFiTWtrBpdZN6nwD6kROVe4vNL+ywrvbCKsWVCnEd4riELIg== dependencies: is-stream-ended "^0.1.4" @@ -23450,36 +23893,36 @@ split-string@^3.0.1, split-string@^3.0.2: split2@^3.0.0: version "3.2.2" - resolved "https://registry.yarnpkg.com/split2/-/split2-3.2.2.tgz#bf2cf2a37d838312c249c89206fd7a17dd12365f" + resolved "https://registry.npmjs.org/split2/-/split2-3.2.2.tgz" integrity sha512-9NThjpgZnifTkJpzTZ7Eue85S49QwpNhZTq6GRJwObb6jnLFNGB7Qm73V5HewTROPyxD0C29xqmaI68bQtV+hg== dependencies: readable-stream "^3.0.0" split2@^4.1.0: version "4.2.0" - resolved "https://registry.yarnpkg.com/split2/-/split2-4.2.0.tgz#c9c5920904d148bab0b9f67145f245a86aadbfa4" + resolved "https://registry.npmjs.org/split2/-/split2-4.2.0.tgz" integrity sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg== split@^1.0.0: version "1.0.1" - resolved "https://registry.yarnpkg.com/split/-/split-1.0.1.tgz#605bd9be303aa59fb35f9229fbea0ddec9ea07d9" + resolved "https://registry.npmjs.org/split/-/split-1.0.1.tgz" integrity sha512-mTyOoPbrivtXnwnIxZRFYRrPNtEFKlpB2fvjSnCQUiAA6qAZzqwna5envK4uk6OIeP17CsdF3rSBGYVBsU0Tkg== dependencies: through "2" sprintf-js@^1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.1.2.tgz#da1765262bf8c0f571749f2ad6c26300207ae673" - integrity sha512-VE0SOVEHCk7Qc8ulkWw3ntAzXuqf7S2lvwQaDLRnUeIEaKNQJzV6BwmLKhOqT61aGhfUMrXeaBk+oDGCzvhcug== + version "1.1.3" + resolved "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.3.tgz" + integrity sha512-Oo+0REFV59/rz3gfJNKQiBlwfHaSESl1pcGyABQsnnIfWOFt6JNj5gCog2U6MLZ//IGYD+nA8nI+mTShREReaA== sprintf-js@~1.0.2: version "1.0.3" - resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" + resolved "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz" integrity sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g== sqlite3@^5.0.8: version "5.1.6" - resolved "https://registry.yarnpkg.com/sqlite3/-/sqlite3-5.1.6.tgz#1d4fbc90fe4fbd51e952e0a90fd8f6c2b9098e97" + resolved "https://registry.npmjs.org/sqlite3/-/sqlite3-5.1.6.tgz" integrity sha512-olYkWoKFVNSSSQNvxVUfjiVbz3YtBwTJj+mfV5zpHmqW3sELx2Cf4QCdirMelhM5Zh+KDVaKgQHqCxrqiWHybw== dependencies: "@mapbox/node-pre-gyp" "^1.0.0" @@ -23490,12 +23933,12 @@ sqlite3@^5.0.8: sqlstring@^2.3.2: version "2.3.3" - resolved "https://registry.yarnpkg.com/sqlstring/-/sqlstring-2.3.3.tgz#2ddc21f03bce2c387ed60680e739922c65751d0c" + resolved "https://registry.npmjs.org/sqlstring/-/sqlstring-2.3.3.tgz" integrity sha512-qC9iz2FlN7DQl3+wjwn3802RTyjCx7sDvfQEXchwa6CWOx07/WVfh91gBmQ9fahw8snwGEWU3xGzOt4tFyHLxg== sshpk@^1.7.0: version "1.17.0" - resolved "https://registry.yarnpkg.com/sshpk/-/sshpk-1.17.0.tgz#578082d92d4fe612b13007496e543fa0fbcbe4c5" + resolved "https://registry.npmjs.org/sshpk/-/sshpk-1.17.0.tgz" integrity sha512-/9HIEs1ZXGhSPE8X6Ccm7Nam1z8KcoCqPdI7ecm1N33EzAetWahvQWVqLZtaZQ+IDKX4IyA2o0gBzqIMkAagHQ== dependencies: asn1 "~0.2.3" @@ -23509,41 +23952,41 @@ sshpk@^1.7.0: tweetnacl "~0.14.0" ssri@^10.0.0: - version "10.0.4" - resolved "https://registry.yarnpkg.com/ssri/-/ssri-10.0.4.tgz#5a20af378be586df139ddb2dfb3bf992cf0daba6" - integrity sha512-12+IR2CB2C28MMAw0Ncqwj5QbTcs0nGIhgJzYWzDkb21vWmfNI83KS4f3Ci6GI98WreIfG7o9UXp3C0qbpA8nQ== + version "10.0.5" + resolved "https://registry.npmjs.org/ssri/-/ssri-10.0.5.tgz" + integrity sha512-bSf16tAFkGeRlUNDjXu8FzaMQt6g2HZJrun7mtMbIPOddxt3GLMSz5VWUWcqTJUPfLEaDIepGxv+bYQW49596A== dependencies: - minipass "^5.0.0" + minipass "^7.0.3" ssri@^8.0.0, ssri@^8.0.1: version "8.0.1" - resolved "https://registry.yarnpkg.com/ssri/-/ssri-8.0.1.tgz#638e4e439e2ffbd2cd289776d5ca457c4f51a2af" + resolved "https://registry.npmjs.org/ssri/-/ssri-8.0.1.tgz" integrity sha512-97qShzy1AiyxvPNIkLWoGua7xoQzzPjQ0HAH4B0rWKo7SZ6USuPcrUiAFrws0UH8RrbWmgq3LMTObhPIHbbBeQ== dependencies: minipass "^3.1.1" ssri@^9.0.0, ssri@^9.0.1: version "9.0.1" - resolved "https://registry.yarnpkg.com/ssri/-/ssri-9.0.1.tgz#544d4c357a8d7b71a19700074b6883fcb4eae057" + resolved "https://registry.npmjs.org/ssri/-/ssri-9.0.1.tgz" integrity sha512-o57Wcn66jMQvfHG1FlYbWeZWW/dHZhJXjpIcTfXldXEk5nz5lStPo3mK0OJQfGR3RbZUlbISexbljkJzuEj/8Q== dependencies: minipass "^3.1.1" stack-trace@0.0.x: version "0.0.10" - resolved "https://registry.yarnpkg.com/stack-trace/-/stack-trace-0.0.10.tgz#547c70b347e8d32b4e108ea1a2a159e5fdde19c0" + resolved "https://registry.npmjs.org/stack-trace/-/stack-trace-0.0.10.tgz" integrity sha512-KGzahc7puUKkzyMt+IqAep+TVNbKP+k2Lmwhub39m1AsTSkaDutx56aDCo+HLDzf/D26BIHTJWNiTG1KAJiQCg== stack-utils@^2.0.3: version "2.0.6" - resolved "https://registry.yarnpkg.com/stack-utils/-/stack-utils-2.0.6.tgz#aaf0748169c02fc33c8232abccf933f54a1cc34f" + resolved "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.6.tgz" integrity sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ== dependencies: escape-string-regexp "^2.0.0" starts-with@^1.0.0, starts-with@^1.0.2: version "1.0.2" - resolved "https://registry.yarnpkg.com/starts-with/-/starts-with-1.0.2.tgz#16793a729d89d4cf3d4fb2eda2f908ae357f196f" + resolved "https://registry.npmjs.org/starts-with/-/starts-with-1.0.2.tgz" integrity sha512-QUw5X+IMTGDm1nrdowEdDaA0MNiUmRlQFwpTTXmhuPKQc+7b0h8fOHtlt1zZqcEK5x1Fsitrobo7KEusc+d1rg== static-extend@^0.1.1: @@ -23556,80 +23999,80 @@ static-extend@^0.1.1: statuses@2.0.1: version "2.0.1" - resolved "https://registry.yarnpkg.com/statuses/-/statuses-2.0.1.tgz#55cb000ccf1d48728bd23c685a063998cf1a1b63" + resolved "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz" integrity sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ== "statuses@>= 1.5.0 < 2", statuses@~1.5.0: version "1.5.0" - resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.5.0.tgz#161c7dac177659fd9811f43771fa99381478628c" + resolved "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz" integrity sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA== stealthy-require@^1.1.1: version "1.1.1" - resolved "https://registry.yarnpkg.com/stealthy-require/-/stealthy-require-1.1.1.tgz#35b09875b4ff49f26a777e509b3090a3226bf24b" + resolved "https://registry.npmjs.org/stealthy-require/-/stealthy-require-1.1.1.tgz" integrity sha512-ZnWpYnYugiOVEY5GkcuJK1io5V8QmNYChG62gSit9pQVGErXtrKuPC55ITaVSukmMta5qpMU7vqLt2Lnni4f/g== stop-iteration-iterator@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/stop-iteration-iterator/-/stop-iteration-iterator-1.0.0.tgz#6a60be0b4ee757d1ed5254858ec66b10c49285e4" + resolved "https://registry.npmjs.org/stop-iteration-iterator/-/stop-iteration-iterator-1.0.0.tgz" integrity sha512-iCGQj+0l0HOdZ2AEeBADlsRC+vsnDsZsbdSiH1yNSjcfKM7fdpCMfqAL/dwF5BLiw/XhRft/Wax6zQbhq2BcjQ== dependencies: internal-slot "^1.0.4" stoppable@^1.1.0: version "1.1.0" - resolved "https://registry.yarnpkg.com/stoppable/-/stoppable-1.1.0.tgz#32da568e83ea488b08e4d7ea2c3bcc9d75015d5b" + resolved "https://registry.npmjs.org/stoppable/-/stoppable-1.1.0.tgz" integrity sha512-KXDYZ9dszj6bzvnEMRYvxgeTHU74QBFL54XKtP3nyMuJ81CFYtABZ3bAzL2EdFUaEwJOBOgENyFj3R7oTzDyyw== stream-chain@^2.2.4, stream-chain@^2.2.5: version "2.2.5" - resolved "https://registry.yarnpkg.com/stream-chain/-/stream-chain-2.2.5.tgz#b30967e8f14ee033c5b9a19bbe8a2cba90ba0d09" + resolved "https://registry.npmjs.org/stream-chain/-/stream-chain-2.2.5.tgz" integrity sha512-1TJmBx6aSWqZ4tx7aTpBDXK0/e2hhcNSTV8+CbFJtDjbb+I1mZ8lHit0Grw9GRT+6JbIrrDd8esncgBi8aBXGA== stream-events@^1.0.1, stream-events@^1.0.4, stream-events@^1.0.5: version "1.0.5" - resolved "https://registry.yarnpkg.com/stream-events/-/stream-events-1.0.5.tgz#bbc898ec4df33a4902d892333d47da9bf1c406d5" + resolved "https://registry.npmjs.org/stream-events/-/stream-events-1.0.5.tgz" integrity sha512-E1GUzBSgvct8Jsb3v2X15pjzN1tYebtbLaMg+eBOUOAxgbLoSbT2NS91ckc5lJD1KfLjId+jXJRgo0qnV5Nerg== dependencies: stubs "^3.0.0" stream-json@^1.7.3: version "1.8.0" - resolved "https://registry.yarnpkg.com/stream-json/-/stream-json-1.8.0.tgz#53f486b2e3b4496c506131f8d7260ba42def151c" + resolved "https://registry.npmjs.org/stream-json/-/stream-json-1.8.0.tgz" integrity sha512-HZfXngYHUAr1exT4fxlbc1IOce1RYxp2ldeaf97LYCOPSoOqY/1Psp7iGvpb+6JIOgkra9zDYnPX01hGAHzEPw== dependencies: stream-chain "^2.2.5" stream-shift@^1.0.0: version "1.0.1" - resolved "https://registry.yarnpkg.com/stream-shift/-/stream-shift-1.0.1.tgz#d7088281559ab2778424279b0877da3c392d5a3d" + resolved "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.1.tgz" integrity sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ== streamsearch@^1.1.0: version "1.1.0" - resolved "https://registry.yarnpkg.com/streamsearch/-/streamsearch-1.1.0.tgz#404dd1e2247ca94af554e841a8ef0eaa238da764" + resolved "https://registry.npmjs.org/streamsearch/-/streamsearch-1.1.0.tgz" integrity sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg== strict-uri-encode@^1.0.0: version "1.1.0" - resolved "https://registry.yarnpkg.com/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz#279b225df1d582b1f54e65addd4352e18faa0713" + resolved "https://registry.npmjs.org/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz" integrity sha512-R3f198pcvnB+5IpnBlRkphuE9n46WyVl8I39W/ZUTZLz4nqSP/oLYUrcnJrw462Ds8he4YKMov2efsTIw1BDGQ== string-hash@^1.1.3: version "1.1.3" - resolved "https://registry.yarnpkg.com/string-hash/-/string-hash-1.1.3.tgz#e8aafc0ac1855b4666929ed7dd1275df5d6c811b" + resolved "https://registry.npmjs.org/string-hash/-/string-hash-1.1.3.tgz" integrity sha512-kJUvRUFK49aub+a7T1nNE66EJbZBMnBgoC1UbCZ5n6bsZKBRga4KgBRTMn/pFkeCZSYtNeSyMxPDM0AXWELk2A== string-length@^1.0.0: version "1.0.1" - resolved "https://registry.yarnpkg.com/string-length/-/string-length-1.0.1.tgz#56970fb1c38558e9e70b728bf3de269ac45adfac" + resolved "https://registry.npmjs.org/string-length/-/string-length-1.0.1.tgz" integrity sha512-MNCACnufWUf3pQ57O5WTBMkKhzYIaKEcUioO0XHrTMafrbBaNk4IyDOLHBv5xbXO0jLLdsYWeFjpjG2hVHRDtw== dependencies: strip-ansi "^3.0.0" string-length@^4.0.1: version "4.0.2" - resolved "https://registry.yarnpkg.com/string-length/-/string-length-4.0.2.tgz#a8a8dc7bd5c1a82b9b3c8b87e125f66871b6e57a" + resolved "https://registry.npmjs.org/string-length/-/string-length-4.0.2.tgz" integrity sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ== dependencies: char-regex "^1.0.2" @@ -23637,12 +24080,12 @@ string-length@^4.0.1: string-template@~0.2.1: version "0.2.1" - resolved "https://registry.yarnpkg.com/string-template/-/string-template-0.2.1.tgz#42932e598a352d01fc22ec3367d9d84eec6c9add" + resolved "https://registry.npmjs.org/string-template/-/string-template-0.2.1.tgz" integrity sha512-Yptehjogou2xm4UJbxJ4CxgZx12HBfeystp0y3x7s4Dj32ltVVG1Gg8YhKjHZkHicuKpZX/ffilA8505VbUbpw== "string-width-cjs@npm:string-width@^4.2.0", "string-width@^1.0.2 || 2 || 3 || 4", string-width@^4.0.0, string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.2, string-width@^4.2.3: version "4.2.3" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" + resolved "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz" integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== dependencies: emoji-regex "^8.0.0" @@ -23651,7 +24094,7 @@ string-template@~0.2.1: string-width@^1.0.1: version "1.0.2" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3" + resolved "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz" integrity sha512-0XsVpQLnVCXHJfyEs8tC0zpTVIr5PKKsQtkT29IwupnPTjtPmQ3xT/4yCREF9hYkV/3M3kzcUTSAZT6a6h81tw== dependencies: code-point-at "^1.0.0" @@ -23660,7 +24103,7 @@ string-width@^1.0.1: "string-width@^1.0.2 || 2", string-width@^2.0.0, string-width@^2.1.0, string-width@^2.1.1: version "2.1.1" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e" + resolved "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz" integrity sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw== dependencies: is-fullwidth-code-point "^2.0.0" @@ -23668,7 +24111,7 @@ string-width@^1.0.1: string-width@^3.0.0, string-width@^3.1.0: version "3.1.0" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-3.1.0.tgz#22767be21b62af1081574306f69ac51b62203961" + 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" @@ -23677,7 +24120,7 @@ string-width@^3.0.0, string-width@^3.1.0: string-width@^5.0.1, string-width@^5.1.2: version "5.1.2" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-5.1.2.tgz#14f8daec6d81e7221d2a357e668cab73bdbca794" + resolved "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz" integrity sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA== dependencies: eastasianwidth "^0.2.0" @@ -23686,7 +24129,7 @@ string-width@^5.0.1, string-width@^5.1.2: string.prototype.trim@^1.2.7, string.prototype.trim@~1.2.7: version "1.2.7" - resolved "https://registry.yarnpkg.com/string.prototype.trim/-/string.prototype.trim-1.2.7.tgz#a68352740859f6893f14ce3ef1bb3037f7a90533" + resolved "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.7.tgz" integrity sha512-p6TmeT1T3411M8Cgg9wBTMRtY2q9+PNy9EV1i2lIXUN/btt763oIfxwN3RR8VU6wHX8j/1CFy0L+YuThm6bgOg== dependencies: call-bind "^1.0.2" @@ -23695,7 +24138,7 @@ string.prototype.trim@^1.2.7, string.prototype.trim@~1.2.7: string.prototype.trimend@^1.0.6: version "1.0.6" - resolved "https://registry.yarnpkg.com/string.prototype.trimend/-/string.prototype.trimend-1.0.6.tgz#c4a27fa026d979d79c04f17397f250a462944533" + resolved "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.6.tgz" integrity sha512-JySq+4mrPf9EsDBEDYMOb/lM7XQLulwg5R/m1r0PXEFqrV0qHvl58sdTilSXtKOflCsK2E8jxf+GKC0T07RWwQ== dependencies: call-bind "^1.0.2" @@ -23704,7 +24147,7 @@ string.prototype.trimend@^1.0.6: string.prototype.trimstart@^1.0.6: version "1.0.6" - resolved "https://registry.yarnpkg.com/string.prototype.trimstart/-/string.prototype.trimstart-1.0.6.tgz#e90ab66aa8e4007d92ef591bbf3cd422c56bdcf4" + resolved "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.6.tgz" integrity sha512-omqjMDaY92pbn5HOX7f9IccLA+U1tA9GvtU4JrodiXFfYB7jPzzHpRzpglLAjtUV6bB557zwClJezTqnAiYnQA== dependencies: call-bind "^1.0.2" @@ -23713,83 +24156,83 @@ string.prototype.trimstart@^1.0.6: string_decoder@^1.1.1: version "1.3.0" - resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e" + resolved "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz" integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA== dependencies: safe-buffer "~5.2.0" string_decoder@~0.10.x: version "0.10.31" - resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-0.10.31.tgz#62e203bc41766c6c28c9fc84301dab1c5310fa94" + resolved "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz" integrity sha512-ev2QzSzWPYmy9GuqfIVildA4OdcGLeFZQrq5ys6RtiuF+RQQiZWr8TZNyAcuVXyQRYfEO+MsoB/1BuQVhOJuoQ== string_decoder@~1.1.1: version "1.1.1" - resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8" + resolved "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz" integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg== dependencies: safe-buffer "~5.1.0" "strip-ansi-cjs@npm:strip-ansi@^6.0.1", strip-ansi@^6.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" + resolved "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz" integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== dependencies: ansi-regex "^5.0.1" strip-ansi@^3.0.0, strip-ansi@^3.0.1: version "3.0.1" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf" + resolved "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz" integrity sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg== dependencies: ansi-regex "^2.0.0" strip-ansi@^4.0.0: version "4.0.0" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-4.0.0.tgz#a8479022eb1ac368a871389b635262c505ee368f" + resolved "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz" integrity sha512-4XaJ2zQdCzROZDivEVIDPkcQn8LMFSa8kj8Gxb/Lnwzv9A8VctNZ+lfivC/sV3ivW8ElJTERXZoPBRrZKkNKow== dependencies: ansi-regex "^3.0.0" strip-ansi@^5.0.0, strip-ansi@^5.1.0, strip-ansi@^5.2.0: version "5.2.0" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-5.2.0.tgz#8c9a536feb6afc962bdfa5b104a5091c1ad9c0ae" + 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@^7.0.1: version "7.1.0" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-7.1.0.tgz#d5b6568ca689d8561370b0707685d22434faff45" + resolved "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz" integrity sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ== dependencies: ansi-regex "^6.0.1" strip-bom@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-2.0.0.tgz#6219a85616520491f35788bdbf1447a99c7e6b0e" + resolved "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz" integrity sha512-kwrX1y7czp1E69n2ajbG65mIo9dqvJ+8aBQXOGVxqwvNbsXdFM6Lq37dLAY3mknUwru8CfcCbfOLL/gMo+fi3g== dependencies: is-utf8 "^0.2.0" strip-bom@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3" + resolved "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz" integrity sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA== strip-bom@^4.0.0: version "4.0.0" - resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-4.0.0.tgz#9c3505c1db45bcedca3d9cf7a16f5c5aa3901878" + resolved "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz" integrity sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w== strip-comments@^2.0.1: version "2.0.1" - resolved "https://registry.yarnpkg.com/strip-comments/-/strip-comments-2.0.1.tgz#4ad11c3fbcac177a67a40ac224ca339ca1c1ba9b" + resolved "https://registry.npmjs.org/strip-comments/-/strip-comments-2.0.1.tgz" integrity sha512-ZprKx+bBLXv067WTCALv8SSz5l2+XhpYCsVtSqlMnkAXMWDq+/ekVbl1ghqP9rUHTzv6sm/DwCOiYutU/yp1fw== strip-dirs@^2.0.0: version "2.1.0" - resolved "https://registry.yarnpkg.com/strip-dirs/-/strip-dirs-2.1.0.tgz#4987736264fc344cf20f6c34aca9d13d1d4ed6c5" + resolved "https://registry.npmjs.org/strip-dirs/-/strip-dirs-2.1.0.tgz" integrity sha512-JOCxOeKLm2CAS73y/U4ZeZPTkE+gNVCzKt7Eox84Iej1LT/2pTWYpZKJuxwQpvX1LiZb1xokNR7RLfuBAa7T3g== dependencies: is-natural-number "^4.0.1" @@ -23801,51 +24244,51 @@ strip-eof@^1.0.0: strip-final-newline@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/strip-final-newline/-/strip-final-newline-2.0.0.tgz#89b852fb2fcbe936f6f4b3187afb0a12c1ab58ad" + resolved "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz" integrity sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA== strip-hex-prefix@1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/strip-hex-prefix/-/strip-hex-prefix-1.0.0.tgz#0c5f155fef1151373377de9dbb588da05500e36f" + resolved "https://registry.npmjs.org/strip-hex-prefix/-/strip-hex-prefix-1.0.0.tgz" integrity sha512-q8d4ue7JGEiVcypji1bALTos+0pWtyGlivAWyPuTkHzuTCJqrK9sWxYQZUq6Nq3cuyv3bm734IhHvHtGGURU6A== dependencies: is-hex-prefixed "1.0.0" strip-indent@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/strip-indent/-/strip-indent-2.0.0.tgz#5ef8db295d01e6ed6cbf7aab96998d7822527b68" + resolved "https://registry.npmjs.org/strip-indent/-/strip-indent-2.0.0.tgz" integrity sha512-RsSNPLpq6YUL7QYy44RnPVTn/lcVZtb48Uof3X5JLbF4zD/Gs7ZFDv2HWol+leoQN2mT86LAzSshGfkTlSOpsA== strip-indent@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/strip-indent/-/strip-indent-3.0.0.tgz#c32e1cee940b6b3432c771bc2c54bcce73cd3001" + resolved "https://registry.npmjs.org/strip-indent/-/strip-indent-3.0.0.tgz" integrity sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ== dependencies: min-indent "^1.0.0" strip-json-comments@2.0.1, strip-json-comments@^2.0.1, strip-json-comments@~2.0.1: version "2.0.1" - resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a" + resolved "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz" integrity sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ== strip-json-comments@3.0.1: version "3.0.1" - resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.0.1.tgz#85713975a91fb87bf1b305cca77395e40d2a64a7" + resolved "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.0.1.tgz" integrity sha512-VTyMAUfdm047mwKl+u79WIdrZxtFtn+nBxHeb844XBQ9uMNTuTHdx2hc5RiAJYqwTj3wc/xe5HLSdJSkJ+WfZw== strip-json-comments@3.1.1, strip-json-comments@^3.1.0, strip-json-comments@^3.1.1: version "3.1.1" - resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006" + resolved "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz" integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== strnum@^1.0.5: version "1.0.5" - resolved "https://registry.yarnpkg.com/strnum/-/strnum-1.0.5.tgz#5c4e829fe15ad4ff0d20c3db5ac97b73c9b072db" + resolved "https://registry.npmjs.org/strnum/-/strnum-1.0.5.tgz" integrity sha512-J8bbNyKKXl5qYcR36TIO8W3mVGVHrmmxsd5PAItGkmyzwJvybiw2IVq5nqd0i4LSNSkB/sx9VHllbfFdr9k1JA== strong-log-transformer@^2.1.0: version "2.1.0" - resolved "https://registry.yarnpkg.com/strong-log-transformer/-/strong-log-transformer-2.1.0.tgz#0f5ed78d325e0421ac6f90f7f10e691d6ae3ae10" + resolved "https://registry.npmjs.org/strong-log-transformer/-/strong-log-transformer-2.1.0.tgz" integrity sha512-B3Hgul+z0L9a236FAUC9iZsL+nVHgoCJnqCbN588DjYxvGXaXaaFbfmQ/JhvKjZwsOukuR72XbHv71Qkug0HxA== dependencies: duplexer "^0.1.1" @@ -23854,12 +24297,12 @@ strong-log-transformer@^2.1.0: stubs@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/stubs/-/stubs-3.0.0.tgz#e8d2ba1fa9c90570303c030b6900f7d5f89abe5b" + resolved "https://registry.npmjs.org/stubs/-/stubs-3.0.0.tgz" integrity sha512-PdHt7hHUJKxvTCgbKX9C1V/ftOcjJQgz8BZwNfV5c4B6dcGqlpelTbJ999jBGZ2jYiPAwcX5dP6oBwVlBlUbxw== sublevel-pouchdb@7.3.1: version "7.3.1" - resolved "https://registry.yarnpkg.com/sublevel-pouchdb/-/sublevel-pouchdb-7.3.1.tgz#c1cc03af45081345c7c82821d6dcaa74564ae2ef" + resolved "https://registry.npmjs.org/sublevel-pouchdb/-/sublevel-pouchdb-7.3.1.tgz" integrity sha512-n+4fK72F/ORdqPwoGgMGYeOrW2HaPpW9o9k80bT1B3Cim5BSvkKkr9WbWOWynni/GHkbCEdvLVFJL1ktosAdhQ== dependencies: inherits "2.0.4" @@ -23868,9 +24311,9 @@ sublevel-pouchdb@7.3.1: readable-stream "1.1.14" superagent@^8.0.5: - version "8.0.9" - resolved "https://registry.yarnpkg.com/superagent/-/superagent-8.0.9.tgz#2c6fda6fadb40516515f93e9098c0eb1602e0535" - integrity sha512-4C7Bh5pyHTvU33KpZgwrNKh/VQnvgtCSqPRfJAUdmrtSYePVzVg4E4OzsrbkhJj9O7SO6Bnv75K/F8XVZT8YHA== + version "8.1.2" + resolved "https://registry.npmjs.org/superagent/-/superagent-8.1.2.tgz" + integrity sha512-6WTxW1EB6yCxV5VFOIPQruWGHqc3yI7hEmZK6h+pyk69Lk/Ut7rLUY6W/ONF2MjBuGjvmMiIpsrVJ2vjrHlslA== dependencies: component-emitter "^1.3.0" cookiejar "^2.1.4" @@ -23885,7 +24328,7 @@ superagent@^8.0.5: superstatic@^7.1.0: version "7.1.0" - resolved "https://registry.yarnpkg.com/superstatic/-/superstatic-7.1.0.tgz#42cc773a0f500fb691841e0533d0b8c31f25997f" + resolved "https://registry.npmjs.org/superstatic/-/superstatic-7.1.0.tgz" integrity sha512-yBU8iw07nM3Bu4jFc8lnKwLey0cj61OaGmFJZcYC2X+kEpXVmXzERJ3OTAHZAESe1OTeNIuWadt81U5IULGGAA== dependencies: basic-auth-connect "^1.0.0" @@ -23917,7 +24360,7 @@ superstatic@^7.1.0: superstatic@^9.0.3: version "9.0.3" - resolved "https://registry.yarnpkg.com/superstatic/-/superstatic-9.0.3.tgz#eb271841e971d9c3760f6d4b3adca5db00f29f18" + resolved "https://registry.npmjs.org/superstatic/-/superstatic-9.0.3.tgz" integrity sha512-e/tmW0bsnQ/33ivK6y3CapJT0Ovy4pk/ohNPGhIAGU2oasoNLRQ1cv6enua09NU9w6Y0H/fBu07cjzuiWvLXxw== dependencies: basic-auth-connect "^1.0.0" @@ -23943,7 +24386,7 @@ superstatic@^9.0.3: supertest@^6.2.3: version "6.3.3" - resolved "https://registry.yarnpkg.com/supertest/-/supertest-6.3.3.tgz#42f4da199fee656106fd422c094cf6c9578141db" + resolved "https://registry.npmjs.org/supertest/-/supertest-6.3.3.tgz" integrity sha512-EMCG6G8gDu5qEqRQ3JjjPs6+FYT1a7Hv5ApHvtSghmOFJYtsU5S+pSb6Y2EUeCEY3CmEL3mmQ8YWlPOzQomabA== dependencies: methods "^1.1.2" @@ -23951,61 +24394,61 @@ supertest@^6.2.3: supports-color@5.4.0: version "5.4.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.4.0.tgz#1c6b337402c2137605efe19f10fec390f6faab54" + resolved "https://registry.npmjs.org/supports-color/-/supports-color-5.4.0.tgz" integrity sha512-zjaXglF5nnWpsq470jSv6P9DwPvgLkuapYmfDm3JWOm0vkNTVF2tI4UrN2r6jH1qM/uc/WtxYY1hYoA2dOKj5w== dependencies: has-flag "^3.0.0" supports-color@6.0.0: version "6.0.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-6.0.0.tgz#76cfe742cf1f41bb9b1c29ad03068c05b4c0e40a" + resolved "https://registry.npmjs.org/supports-color/-/supports-color-6.0.0.tgz" integrity sha512-on9Kwidc1IUQo+bQdhi8+Tijpo0e1SS6RoGo2guUwn5vdaxw8RXOF9Vb2ws+ihWOmh4JnCJOvaziZWP1VABaLg== dependencies: has-flag "^3.0.0" supports-color@7.1.0: version "7.1.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.1.0.tgz#68e32591df73e25ad1c4b49108a2ec507962bfd1" + resolved "https://registry.npmjs.org/supports-color/-/supports-color-7.1.0.tgz" integrity sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g== dependencies: has-flag "^4.0.0" supports-color@8.1.1, supports-color@^8.0.0, supports-color@^8.1.0: version "8.1.1" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-8.1.1.tgz#cd6fc17e28500cff56c1b86c0a7fd4a54a73005c" + resolved "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz" integrity sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q== dependencies: has-flag "^4.0.0" supports-color@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7" + resolved "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz" integrity sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g== supports-color@^3.1.0: version "3.2.3" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-3.2.3.tgz#65ac0504b3954171d8a64946b2ae3cbb8a5f54f6" + resolved "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz" integrity sha512-Jds2VIYDrlp5ui7t8abHN2bjAu4LV/q4N2KivFPpGH0lrka0BMq/33AmECUXlKPcHigkNaqfXRENFju+rlcy+A== dependencies: has-flag "^1.0.0" supports-color@^5.0.0, supports-color@^5.3.0, supports-color@^5.4.0, supports-color@^5.5.0: version "5.5.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" + resolved "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz" integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== dependencies: has-flag "^3.0.0" supports-color@^7.0.0, supports-color@^7.1.0: version "7.2.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da" + resolved "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz" integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== dependencies: has-flag "^4.0.0" supports-hyperlinks@^1.0.1: version "1.0.1" - resolved "https://registry.yarnpkg.com/supports-hyperlinks/-/supports-hyperlinks-1.0.1.tgz#71daedf36cc1060ac5100c351bb3da48c29c0ef7" + resolved "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-1.0.1.tgz" integrity sha512-HHi5kVSefKaJkGYXbDuKbUGRVxqnWGn3J2e39CYcNJEfWciGq2zYtOhXLTlvrOZW1QU7VX67w7fMmWafHX9Pfw== dependencies: has-flag "^2.0.0" @@ -24013,7 +24456,7 @@ supports-hyperlinks@^1.0.1: supports-hyperlinks@^2.1.0, supports-hyperlinks@^2.3.0: version "2.3.0" - resolved "https://registry.yarnpkg.com/supports-hyperlinks/-/supports-hyperlinks-2.3.0.tgz#3943544347c1ff90b15effb03fc14ae45ec10624" + resolved "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-2.3.0.tgz" integrity sha512-RpsAZlpWcDwOPQA22aCH4J0t7L8JmAvsCxfOSEwm7cQs3LshN36QaTkwd70DnBOXDWGssw2eUoc8CaRWT0XunA== dependencies: has-flag "^4.0.0" @@ -24021,12 +24464,12 @@ supports-hyperlinks@^2.1.0, supports-hyperlinks@^2.3.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" + resolved "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz" integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w== swap-case@^1.1.0: version "1.1.2" - resolved "https://registry.yarnpkg.com/swap-case/-/swap-case-1.1.2.tgz#c39203a4587385fad3c850a0bd1bcafa081974e3" + resolved "https://registry.npmjs.org/swap-case/-/swap-case-1.1.2.tgz" integrity sha512-BAmWG6/bx8syfc6qXPprof3Mn5vQgf5dwdUNJhsNqU9WdPt5P+ES/wQ5bxfijy8zwZgZZHslC3iAsxsuQMCzJQ== dependencies: lower-case "^1.1.1" @@ -24034,7 +24477,7 @@ swap-case@^1.1.0: swarm-js@0.1.39: version "0.1.39" - resolved "https://registry.yarnpkg.com/swarm-js/-/swarm-js-0.1.39.tgz#79becb07f291d4b2a178c50fee7aa6e10342c0e8" + resolved "https://registry.npmjs.org/swarm-js/-/swarm-js-0.1.39.tgz" integrity sha512-QLMqL2rzF6n5s50BptyD6Oi0R1aWlJC5Y17SRIVXRj6OR1DRIPM7nepvrxxkjA1zNzFz6mUOMjfeqeDaWB7OOg== dependencies: bluebird "^3.5.0" @@ -24052,7 +24495,7 @@ swarm-js@0.1.39: swarm-js@^0.1.40: version "0.1.42" - resolved "https://registry.yarnpkg.com/swarm-js/-/swarm-js-0.1.42.tgz#497995c62df6696f6e22372f457120e43e727979" + resolved "https://registry.npmjs.org/swarm-js/-/swarm-js-0.1.42.tgz" integrity sha512-BV7c/dVlA3R6ya1lMlSSNPLYrntt0LUq4YMgy3iwpCIc6rZnS5W2wUoctarZ5pXlpKtxDDf9hNziEkcfrxdhqQ== dependencies: bluebird "^3.5.0" @@ -24069,7 +24512,7 @@ swarm-js@^0.1.40: symbol-observable@^1.0.3: version "1.2.0" - resolved "https://registry.yarnpkg.com/symbol-observable/-/symbol-observable-1.2.0.tgz#c22688aed4eab3cdc2dfeacbb561660560a00804" + resolved "https://registry.npmjs.org/symbol-observable/-/symbol-observable-1.2.0.tgz" integrity sha512-e900nM8RRtGhlV36KGEU9k65K3mPb1WV70OdjfxlG2EAuM1noi/E/BaW/uMhL7bPEssK8QV57vN3esixjUvcXQ== sync-request@^6.0.0: @@ -24090,7 +24533,7 @@ sync-rpc@^1.2.1: table@^5.2.3: version "5.4.6" - resolved "https://registry.yarnpkg.com/table/-/table-5.4.6.tgz#1292d19500ce3f86053b05f0e8e7e4a3bb21079e" + resolved "https://registry.npmjs.org/table/-/table-5.4.6.tgz" integrity sha512-wmEc8m4fjnob4gt5riFRtTu/6+4rSe12TpAELNSqHMfF3IqnA+CH37USM6/YR3qRZv7e56kAEAtd6nKZaxe0Ug== dependencies: ajv "^6.10.2" @@ -24100,7 +24543,7 @@ table@^5.2.3: tape@^4.4.0: version "4.16.2" - resolved "https://registry.yarnpkg.com/tape/-/tape-4.16.2.tgz#7565e6af20426565557266e9dda7215869b297b6" + resolved "https://registry.npmjs.org/tape/-/tape-4.16.2.tgz" integrity sha512-TUChV+q0GxBBCEbfCYkGLkv8hDJYjMdSWdE0/Lr331sB389dsvFUHNV9ph5iQqKzt8Ss9drzcda/YeexclBFqg== dependencies: call-bind "~1.0.2" @@ -24121,7 +24564,7 @@ tape@^4.4.0: tar-fs@^1.8.1: version "1.16.3" - resolved "https://registry.yarnpkg.com/tar-fs/-/tar-fs-1.16.3.tgz#966a628841da2c4010406a82167cbd5e0c72d509" + resolved "https://registry.npmjs.org/tar-fs/-/tar-fs-1.16.3.tgz" integrity sha512-NvCeXpYx7OsmOh8zIOP/ebG55zZmxLE0etfWRbWok+q2Qo8x/vOR/IJT1taADXPe+jsiu9axDb3X4B+iIgNlKw== dependencies: chownr "^1.0.1" @@ -24131,7 +24574,7 @@ tar-fs@^1.8.1: tar-fs@^2.0.0: version "2.1.1" - resolved "https://registry.yarnpkg.com/tar-fs/-/tar-fs-2.1.1.tgz#489a15ab85f1f0befabb370b7de4f9eb5cbe8784" + resolved "https://registry.npmjs.org/tar-fs/-/tar-fs-2.1.1.tgz" integrity sha512-V0r2Y9scmbDRLCNex/+hYzvp/zyYjvFbHPNgVTKfQvVrb6guiE/fxP+XblDNR011utopbkex2nM4dHNV6GDsng== dependencies: chownr "^1.1.1" @@ -24141,7 +24584,7 @@ tar-fs@^2.0.0: tar-stream@^1.1.2, tar-stream@^1.5.2: version "1.6.2" - resolved "https://registry.yarnpkg.com/tar-stream/-/tar-stream-1.6.2.tgz#8ea55dab37972253d9a9af90fdcd559ae435c555" + resolved "https://registry.npmjs.org/tar-stream/-/tar-stream-1.6.2.tgz" integrity sha512-rzS0heiNf8Xn7/mpdSVVSMAWAoy9bfb1WOTYC78Z0UQKeKa/CWS8FOq0lKGNa8DWKAn9gxjCvMLYc5PGXYlK2A== dependencies: bl "^1.0.0" @@ -24154,7 +24597,7 @@ tar-stream@^1.1.2, tar-stream@^1.5.2: tar-stream@^2.1.4, tar-stream@^2.2.0, tar-stream@~2.2.0: version "2.2.0" - resolved "https://registry.yarnpkg.com/tar-stream/-/tar-stream-2.2.0.tgz#acad84c284136b060dc3faa64474aa9aebd77287" + resolved "https://registry.npmjs.org/tar-stream/-/tar-stream-2.2.0.tgz" integrity sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ== dependencies: bl "^4.0.3" @@ -24163,9 +24606,9 @@ tar-stream@^2.1.4, tar-stream@^2.2.0, tar-stream@~2.2.0: inherits "^2.0.3" readable-stream "^3.1.1" -tar@^4.0.2, tar@^4.3.0, tar@^4.4.2: +tar@^4.0.2, tar@^4.3.0: version "4.4.19" - resolved "https://registry.yarnpkg.com/tar/-/tar-4.4.19.tgz#2e4d7263df26f2b914dee10c825ab132123742f3" + resolved "https://registry.npmjs.org/tar/-/tar-4.4.19.tgz" integrity sha512-a20gEsvHnWe0ygBY8JbxoM4w3SJdhc7ZAuxkLqh+nvNQN2IOt0B5lLgM490X5Hl8FF0dl0tOf2ewFYAlIFgzVA== dependencies: chownr "^1.1.4" @@ -24177,37 +24620,37 @@ tar@^4.0.2, tar@^4.3.0, tar@^4.4.2: yallist "^3.1.1" tar@^6.0.2, tar@^6.1.0, tar@^6.1.11, tar@^6.1.2: - version "6.1.13" - resolved "https://registry.yarnpkg.com/tar/-/tar-6.1.13.tgz#46e22529000f612180601a6fe0680e7da508847b" - integrity sha512-jdIBIN6LTIe2jqzay/2vtYLlBHa3JF42ot3h1dW8Q0PaAG4v8rm0cvpVePtau5C6OKXGGcgO9q2AMNSWxiLqKw== + version "6.2.0" + resolved "https://registry.npmjs.org/tar/-/tar-6.2.0.tgz" + integrity sha512-/Wo7DcT0u5HUV486xg675HtjNd3BXZ6xDbzsCUZPt5iw8bTQ63bP0Raut3mvro9u+CUyq7YQd8Cx55fsZXxqLQ== dependencies: chownr "^2.0.0" fs-minipass "^2.0.0" - minipass "^4.0.0" + minipass "^5.0.0" minizlib "^2.1.1" mkdirp "^1.0.3" yallist "^4.0.0" targz@^1.0.1: version "1.0.1" - resolved "https://registry.yarnpkg.com/targz/-/targz-1.0.1.tgz#8f76a523694cdedfbb5d60a4076ff6eeecc5398f" + resolved "https://registry.npmjs.org/targz/-/targz-1.0.1.tgz" integrity sha512-6q4tP9U55mZnRuMTBqnqc3nwYQY3kv+QthCFZuMk+Tn1qYUnMPmL/JZ/mzgXINzFpSqfU+242IFmFU9VPvqaQw== dependencies: tar-fs "^1.8.1" tarn@^1.1.5: version "1.1.5" - resolved "https://registry.yarnpkg.com/tarn/-/tarn-1.1.5.tgz#7be88622e951738b9fa3fb77477309242cdddc2d" + resolved "https://registry.npmjs.org/tarn/-/tarn-1.1.5.tgz" integrity sha512-PMtJ3HCLAZeedWjJPgGnCvcphbCOMbtZpjKgLq3qM5Qq9aQud+XHrL0WlrlgnTyS8U+jrjGbEXprFcQrxPy52g== tarn@^3.0.2: version "3.0.2" - resolved "https://registry.yarnpkg.com/tarn/-/tarn-3.0.2.tgz#73b6140fbb881b71559c4f8bfde3d9a4b3d27693" + resolved "https://registry.npmjs.org/tarn/-/tarn-3.0.2.tgz" integrity sha512-51LAVKUSZSVfI05vjPESNc5vwqqZpbXCsU+/+wxlOrUjk2SnFTt97v9ZgQrD4YmxYW1Px6w2KjaDitCfkvgxMQ== tcp-port-used@^1.0.1, tcp-port-used@^1.0.2: version "1.0.2" - resolved "https://registry.yarnpkg.com/tcp-port-used/-/tcp-port-used-1.0.2.tgz#9652b7436eb1f4cfae111c79b558a25769f6faea" + resolved "https://registry.npmjs.org/tcp-port-used/-/tcp-port-used-1.0.2.tgz" integrity sha512-l7ar8lLUD3XS1V2lfoJlCBaeoaWo/2xfYt81hM7VlvR4RrMVFqfmzfhLVk40hAb368uitje5gPtBRL1m/DGvLA== dependencies: debug "4.3.1" @@ -24215,14 +24658,14 @@ tcp-port-used@^1.0.1, tcp-port-used@^1.0.2: tdigest@^0.1.1: version "0.1.2" - resolved "https://registry.yarnpkg.com/tdigest/-/tdigest-0.1.2.tgz#96c64bac4ff10746b910b0e23b515794e12faced" + resolved "https://registry.npmjs.org/tdigest/-/tdigest-0.1.2.tgz" integrity sha512-+G0LLgjjo9BZX2MfdvPfH+MKLCrxlXSYec5DaPYP1fe6Iyhf0/fSmJ0bFiZ1F8BT6cGXl2LpltQptzjXKWEkKA== dependencies: bintrees "1.0.2" tedious@^6.7.1: version "6.7.1" - resolved "https://registry.yarnpkg.com/tedious/-/tedious-6.7.1.tgz#e581be8634a5268b37dffe8930ba2d781edd8a3d" + resolved "https://registry.npmjs.org/tedious/-/tedious-6.7.1.tgz" integrity sha512-61eg/mvUa5vIqZcRizcqw/82dY65kR2uTll1TaUFh0aJ45XOrgbc8axiVR48dva8BahIAlJByaHNfAJ/KmPV0g== dependencies: "@azure/ms-rest-nodeauth" "^3.0.10" @@ -24239,7 +24682,7 @@ tedious@^6.7.1: teeny-request@7.1.1: version "7.1.1" - resolved "https://registry.yarnpkg.com/teeny-request/-/teeny-request-7.1.1.tgz#2b0d156f4a8ad81de44303302ba8d7f1f05e20e6" + resolved "https://registry.npmjs.org/teeny-request/-/teeny-request-7.1.1.tgz" integrity sha512-iwY6rkW5DDGq8hE2YgNQlKbptYpY5Nn2xecjQiNjOXWbKzPGUfmeUBCSQbbr306d7Z7U2N0TPl+/SwYRfua1Dg== dependencies: http-proxy-agent "^4.0.0" @@ -24250,7 +24693,7 @@ teeny-request@7.1.1: teeny-request@^3.11.3: version "3.11.3" - resolved "https://registry.yarnpkg.com/teeny-request/-/teeny-request-3.11.3.tgz#335c629f7645e5d6599362df2f3230c4cbc23a55" + resolved "https://registry.npmjs.org/teeny-request/-/teeny-request-3.11.3.tgz" integrity sha512-CKncqSF7sH6p4rzCgkb/z/Pcos5efl0DmolzvlqRQUNcpRIruOhY9+T1FsIlyEbfWd7MsFpodROOwHYh2BaXzw== dependencies: https-proxy-agent "^2.2.1" @@ -24259,7 +24702,7 @@ teeny-request@^3.11.3: teeny-request@^7.1.3: version "7.2.0" - resolved "https://registry.yarnpkg.com/teeny-request/-/teeny-request-7.2.0.tgz#41347ece068f08d741e7b86df38a4498208b2633" + resolved "https://registry.npmjs.org/teeny-request/-/teeny-request-7.2.0.tgz" integrity sha512-SyY0pek1zWsi0LRVAALem+avzMLc33MKW/JLLakdP4s9+D7+jHcy5x6P+h94g2QNZsAqQNfX5lsbd3WSeJXrrw== dependencies: http-proxy-agent "^5.0.0" @@ -24270,7 +24713,7 @@ teeny-request@^7.1.3: teeny-request@^8.0.0: version "8.0.3" - resolved "https://registry.yarnpkg.com/teeny-request/-/teeny-request-8.0.3.tgz#5cb9c471ef5e59f2fca8280dc3c5909595e6ca24" + resolved "https://registry.npmjs.org/teeny-request/-/teeny-request-8.0.3.tgz" integrity sha512-jJZpA5He2y52yUhA7pyAGZlgQpcB+xLjcN0eUFxr9c8hP/H7uOXbBNVo/O0C/xVfJLJs680jvkFgVJEEvk9+ww== dependencies: http-proxy-agent "^5.0.0" @@ -24281,17 +24724,17 @@ teeny-request@^8.0.0: temp-dir@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/temp-dir/-/temp-dir-1.0.0.tgz#0a7c0ea26d3a39afa7e0ebea9c1fc0bc4daa011d" + resolved "https://registry.npmjs.org/temp-dir/-/temp-dir-1.0.0.tgz" integrity sha512-xZFXEGbG7SNC3itwBzI3RYjq/cEhBkx2hJuKGIUOcEULmkQExXiHat2z/qkISYsuR+IKumhEfKKbV5qXmhICFQ== term-size@^2.1.0: version "2.2.1" - resolved "https://registry.yarnpkg.com/term-size/-/term-size-2.2.1.tgz#2a6a54840432c2fb6320fea0f415531e90189f54" + resolved "https://registry.npmjs.org/term-size/-/term-size-2.2.1.tgz" integrity sha512-wK0Ri4fOGjv/XPy8SBHZChl8CM7uMc5VML7SqiQ0zG7+J5Vr+RMQDoHa2CNT6KHUnTGIXH34UDMkPzAUyapBZg== test-exclude@^6.0.0: version "6.0.0" - resolved "https://registry.yarnpkg.com/test-exclude/-/test-exclude-6.0.0.tgz#04a8698661d805ea6fa293b6cb9e63ac044ef15e" + resolved "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz" integrity sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w== dependencies: "@istanbuljs/schema" "^0.1.2" @@ -24308,27 +24751,27 @@ test-value@^2.1.0: testrpc@0.0.1: version "0.0.1" - resolved "https://registry.yarnpkg.com/testrpc/-/testrpc-0.0.1.tgz#83e2195b1f5873aec7be1af8cbe6dcf39edb7aed" + resolved "https://registry.npmjs.org/testrpc/-/testrpc-0.0.1.tgz" integrity sha512-afH1hO+SQ/VPlmaLUFj2636QMeDvPCeQMc/9RBMW0IfjNe9gFD9Ra3ShqYkB7py0do1ZcCna/9acHyzTJ+GcNA== text-decoding@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/text-decoding/-/text-decoding-1.0.0.tgz#38a5692d23b5c2b12942d6e245599cb58b1bc52f" + resolved "https://registry.npmjs.org/text-decoding/-/text-decoding-1.0.0.tgz" integrity sha512-/0TJD42KDnVwKmDK6jj3xP7E2MG7SHAOG4tyTgyUCRPdHwvkquYNLEQltmdMa3owq3TkddCVcTsoctJI8VQNKA== text-extensions@^1.0.0: version "1.9.0" - resolved "https://registry.yarnpkg.com/text-extensions/-/text-extensions-1.9.0.tgz#1853e45fee39c945ce6f6c36b2d659b5aabc2a26" + resolved "https://registry.npmjs.org/text-extensions/-/text-extensions-1.9.0.tgz" integrity sha512-wiBrwC1EhBelW12Zy26JeOUkQ5mRu+5o8rpsJk5+2t+Y5vE7e842qtZDQ2g1NpX/29HdyFeJ4nSIhI47ENSxlQ== text-hex@1.0.x: version "1.0.0" - resolved "https://registry.yarnpkg.com/text-hex/-/text-hex-1.0.0.tgz#69dc9c1b17446ee79a92bf5b884bb4b9127506f5" + resolved "https://registry.npmjs.org/text-hex/-/text-hex-1.0.0.tgz" integrity sha512-uuVGNWzgJ4yhRaNSiubPY7OjISw4sw4E5Uv0wbjp+OzcbmVU/rsT8ujgcXJhn9ypzsgr5vlzpPqP+MBBKcGvbg== text-table@^0.2.0: version "0.2.0" - resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" + resolved "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz" integrity sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw== then-request@^6.0.0: @@ -24350,21 +24793,21 @@ then-request@^6.0.0: thenify-all@^1.0.0: version "1.6.0" - resolved "https://registry.yarnpkg.com/thenify-all/-/thenify-all-1.6.0.tgz#1a1918d402d8fc3f98fbf234db0bcc8cc10e9726" + resolved "https://registry.npmjs.org/thenify-all/-/thenify-all-1.6.0.tgz" integrity sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA== dependencies: thenify ">= 3.1.0 < 4" "thenify@>= 3.1.0 < 4": version "3.3.1" - resolved "https://registry.yarnpkg.com/thenify/-/thenify-3.3.1.tgz#8932e686a4066038a016dd9e2ca46add9838a95f" + resolved "https://registry.npmjs.org/thenify/-/thenify-3.3.1.tgz" integrity sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw== dependencies: any-promise "^1.0.0" thriftrw@^3.5.0: version "3.11.4" - resolved "https://registry.yarnpkg.com/thriftrw/-/thriftrw-3.11.4.tgz#84c990ee89e926631c0b475909ada44ee9249870" + resolved "https://registry.npmjs.org/thriftrw/-/thriftrw-3.11.4.tgz" integrity sha512-UcuBd3eanB3T10nXWRRMwfwoaC6VMk7qe3/5YIWP2Jtw+EbHqJ0p1/K3x8ixiR5dozKSSfcg1W+0e33G1Di3XA== dependencies: bufrw "^1.2.1" @@ -24373,15 +24816,15 @@ thriftrw@^3.5.0: through2@2.0.1: version "2.0.1" - resolved "https://registry.yarnpkg.com/through2/-/through2-2.0.1.tgz#384e75314d49f32de12eebb8136b8eb6b5d59da9" + resolved "https://registry.npmjs.org/through2/-/through2-2.0.1.tgz" integrity sha512-/vp02SIbpmVHapNMjox4hDBzykPdAOmH5y3INcKaxGfpEPSCMqzdWXyGfqPYyxoBLo1JpxBrlh3Z9esv0vWUYw== dependencies: readable-stream "~2.0.0" xtend "~4.0.0" -through2@3.0.2, through2@^3.0.1: +through2@3.0.2, through2@^3.0.0, through2@^3.0.1: version "3.0.2" - resolved "https://registry.yarnpkg.com/through2/-/through2-3.0.2.tgz#99f88931cfc761ec7678b41d5d7336b5b6a07bf4" + resolved "https://registry.npmjs.org/through2/-/through2-3.0.2.tgz" integrity sha512-enaDQ4MUyP2W6ZyT6EsMzqBPZaM/avg8iuo+l2d3QCs0J+6RaqkHV/2/lOwDTueBHeJ/2LG9lrLW3d5rWPucuQ== dependencies: inherits "^2.0.4" @@ -24389,45 +24832,37 @@ through2@3.0.2, through2@^3.0.1: through2@^2.0.0: version "2.0.5" - resolved "https://registry.yarnpkg.com/through2/-/through2-2.0.5.tgz#01c1e39eb31d07cb7d03a96a70823260b23132cd" + resolved "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz" integrity sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ== dependencies: readable-stream "~2.3.6" xtend "~4.0.1" -through2@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/through2/-/through2-3.0.0.tgz#468b461df9cd9fcc170f22ebf6852e467e578ff2" - integrity sha512-8B+sevlqP4OiCjonI1Zw03Sf8PuV1eRsYQgLad5eonILOdyeRsY27A/2Ze8IlvlMvq31OH+3fz/styI7Ya62yQ== - dependencies: - readable-stream "2 || 3" - xtend "~4.0.1" - through2@^4.0.0: version "4.0.2" - resolved "https://registry.yarnpkg.com/through2/-/through2-4.0.2.tgz#a7ce3ac2a7a8b0b966c80e7c49f0484c3b239764" + resolved "https://registry.npmjs.org/through2/-/through2-4.0.2.tgz" integrity sha512-iOqSav00cVxEEICeD7TjLB1sueEL+81Wpzp2bY17uZjZN0pWZPuo4suZ/61VujxmqSGFfgOcNuTZ85QJwNZQpw== dependencies: readable-stream "3" through@2, "through@>=2.2.7 <3", through@^2.3.4, through@^2.3.6, through@^2.3.8, through@~2.3.4, through@~2.3.8: version "2.3.8" - resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" + resolved "https://registry.npmjs.org/through/-/through-2.3.8.tgz" integrity sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg== tildify@2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/tildify/-/tildify-2.0.0.tgz#f205f3674d677ce698b7067a99e949ce03b4754a" + resolved "https://registry.npmjs.org/tildify/-/tildify-2.0.0.tgz" integrity sha512-Cc+OraorugtXNfs50hU9KS369rFXCfgGLpfCfvlc+Ud5u6VWmUQsOAa9HbTvheQdYnrdJqqv1e5oIqXppMYnSw== timed-out@^4.0.0, timed-out@^4.0.1: version "4.0.1" - resolved "https://registry.yarnpkg.com/timed-out/-/timed-out-4.0.1.tgz#f32eacac5a175bea25d7fab565ab3ed8741ef56f" + resolved "https://registry.npmjs.org/timed-out/-/timed-out-4.0.1.tgz" integrity sha512-G7r3AhovYtr5YKOWQkta8RKAPb+J9IsO4uVmzjl8AZwfhs8UcUwTiD6gcJYSgOtzyjvQKrKYn41syHbUWMkafA== timers-ext@^0.1.5, timers-ext@^0.1.7: version "0.1.7" - resolved "https://registry.yarnpkg.com/timers-ext/-/timers-ext-0.1.7.tgz#6f57ad8578e07a3fb9f91d9387d65647555e25c6" + resolved "https://registry.npmjs.org/timers-ext/-/timers-ext-0.1.7.tgz" integrity sha512-b85NUNzTSdodShTIbky6ZF02e8STtVVfD+fu4aXXShEELpozH+bCpJLYMPZbsABN2wDH7fJpqIoXxJpzbf0NqQ== dependencies: es5-ext "~0.10.46" @@ -24435,26 +24870,26 @@ timers-ext@^0.1.5, timers-ext@^0.1.7: tiny-async-pool@^1.0.4: version "1.3.0" - resolved "https://registry.yarnpkg.com/tiny-async-pool/-/tiny-async-pool-1.3.0.tgz#c013e1b369095e7005db5595f95e646cca6ef8a5" + resolved "https://registry.npmjs.org/tiny-async-pool/-/tiny-async-pool-1.3.0.tgz" integrity sha512-01EAw5EDrcVrdgyCLgoSPvqznC0sVxDSVeiOz09FUpjh71G79VCqneOr+xvt7T1r76CF6ZZfPjHorN2+d+3mqA== dependencies: semver "^5.5.0" tiny-emitter@2.1.0: version "2.1.0" - resolved "https://registry.yarnpkg.com/tiny-emitter/-/tiny-emitter-2.1.0.tgz#1d1a56edfc51c43e863cbb5382a72330e3555423" + resolved "https://registry.npmjs.org/tiny-emitter/-/tiny-emitter-2.1.0.tgz" integrity sha512-NB6Dk1A9xgQPMoGqC5CVXn123gWyte215ONT5Pp5a0yt4nlEoO1ZWeCwpncaekPHXO60i47ihFnZPiRPjRMq4Q== tiny-secp256k1@2.2.1: version "2.2.1" - resolved "https://registry.yarnpkg.com/tiny-secp256k1/-/tiny-secp256k1-2.2.1.tgz#a61d4791b7031aa08a9453178a131349c3e10f9b" + resolved "https://registry.npmjs.org/tiny-secp256k1/-/tiny-secp256k1-2.2.1.tgz" integrity sha512-/U4xfVqnVxJXN4YVsru0E6t5wVncu2uunB8+RVR40fYUxkKYUPS10f+ePQZgFBoE/Jbf9H1NBveupF2VmB58Ng== dependencies: uint8array-tools "0.0.7" tiny-secp256k1@^1.1.3: version "1.1.6" - resolved "https://registry.yarnpkg.com/tiny-secp256k1/-/tiny-secp256k1-1.1.6.tgz#7e224d2bee8ab8283f284e40e6b4acb74ffe047c" + resolved "https://registry.npmjs.org/tiny-secp256k1/-/tiny-secp256k1-1.1.6.tgz" integrity sha512-FmqJZGduTyvsr2cF3375fqGHUovSwDi/QytexX1Se4BPuPZpTE5Ftp5fg+EFSuEf3lhZqgCRjEG3ydUQ/aNiwA== dependencies: bindings "^1.3.0" @@ -24465,12 +24900,12 @@ tiny-secp256k1@^1.1.3: tiny-typed-emitter@^2.1.0: version "2.1.0" - resolved "https://registry.yarnpkg.com/tiny-typed-emitter/-/tiny-typed-emitter-2.1.0.tgz#b3b027fdd389ff81a152c8e847ee2f5be9fad7b5" + resolved "https://registry.npmjs.org/tiny-typed-emitter/-/tiny-typed-emitter-2.1.0.tgz" integrity sha512-qVtvMxeXbVej0cQWKqVSSAHmKZEHAvxdF8HEUBFWts8h+xEo5m/lEiPakuyZ3BnCBjOD8i24kzNOiOLLgsSxhA== title-case@^2.1.0: version "2.1.1" - resolved "https://registry.yarnpkg.com/title-case/-/title-case-2.1.1.tgz#3e127216da58d2bc5becf137ab91dae3a7cd8faa" + resolved "https://registry.npmjs.org/title-case/-/title-case-2.1.1.tgz" integrity sha512-EkJoZ2O3zdCz3zJsYCsxyq2OC5hrxR9mfdd5I+w8h/tmFfeOxJ+vvkxsKxdmN0WtS9zLdHEgfgVOiMVgv+Po4Q== dependencies: no-case "^2.2.0" @@ -24478,38 +24913,38 @@ title-case@^2.1.0: tmp@0.0.33, tmp@^0.0.33: version "0.0.33" - resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.33.tgz#6d34335889768d21b2bcda0aa277ced3b1bfadf9" + resolved "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz" integrity sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw== dependencies: os-tmpdir "~1.0.2" tmp@^0.1.0: version "0.1.0" - resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.1.0.tgz#ee434a4e22543082e294ba6201dcc6eafefa2877" + resolved "https://registry.npmjs.org/tmp/-/tmp-0.1.0.tgz" integrity sha512-J7Z2K08jbGcdA1kkQpJSqLF6T0tdQqpR2pnSUXsIchbPdTI9v3e85cLW0d6WDhwuAleOV71j2xWs8qMPfK7nKw== dependencies: rimraf "^2.6.3" tmp@^0.2.1, tmp@~0.2.1: version "0.2.1" - resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.2.1.tgz#8457fc3037dcf4719c251367a1af6500ee1ccf14" + resolved "https://registry.npmjs.org/tmp/-/tmp-0.2.1.tgz" integrity sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ== dependencies: rimraf "^3.0.0" tmpl@1.0.5: version "1.0.5" - resolved "https://registry.yarnpkg.com/tmpl/-/tmpl-1.0.5.tgz#8683e0b902bb9c20c4f726e3c0b69f36518c07cc" + resolved "https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz" integrity sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw== to-buffer@^1.1.1: version "1.1.1" - resolved "https://registry.yarnpkg.com/to-buffer/-/to-buffer-1.1.1.tgz#493bd48f62d7c43fcded313a03dcadb2e1213a80" + resolved "https://registry.npmjs.org/to-buffer/-/to-buffer-1.1.1.tgz" integrity sha512-lx9B5iv7msuFYE3dytT+KE5tap+rNYw+K4jVkb9R/asAb+pbBSM17jtunHplhBe6RRJdZx3Pn2Jph24O32mOVg== to-fast-properties@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz#dc5e698cbd079265bc73e0377681a4e4e83f616e" + resolved "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz" integrity sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog== to-object-path@^0.3.0: @@ -24521,12 +24956,12 @@ to-object-path@^0.3.0: to-readable-stream@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/to-readable-stream/-/to-readable-stream-1.0.0.tgz#ce0aa0c2f3df6adf852efb404a783e77c0475771" + resolved "https://registry.npmjs.org/to-readable-stream/-/to-readable-stream-1.0.0.tgz" integrity sha512-Iq25XBt6zD5npPhlLVXGFN3/gyR2/qODcKNNyTMd4vbm39HUaOiAM4PMq0eMVC/Tkxz+Zjdsc55g9yyz+Yq00Q== to-regex-range@^2.1.0: version "2.1.1" - resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-2.1.1.tgz#7c80c17b9dfebe599e27367e0d4dd5590141db38" + resolved "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz" integrity sha512-ZZWNfCjUokXXDGXFpZehJIkZqq91BcULFq/Pi7M5i4JnxXdhMKAK682z8bCW3o8Hj1wuuzoKcW3DfVzaP6VuNg== dependencies: is-number "^3.0.0" @@ -24534,7 +24969,7 @@ to-regex-range@^2.1.0: to-regex-range@^5.0.1: version "5.0.1" - resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" + resolved "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz" integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== dependencies: is-number "^7.0.0" @@ -24551,12 +24986,12 @@ to-regex@^3.0.1, to-regex@^3.0.2: toidentifier@1.0.1: version "1.0.1" - resolved "https://registry.yarnpkg.com/toidentifier/-/toidentifier-1.0.1.tgz#3be34321a88a820ed1bd80dfaa33e479fbb8dd35" + resolved "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz" integrity sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA== tough-cookie@^2.3.3, tough-cookie@~2.5.0: version "2.5.0" - resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.5.0.tgz#cd9fb2a0aa1d5a12b473bd9fb96fa3dcff65ade2" + resolved "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz" integrity sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g== dependencies: psl "^1.1.28" @@ -24564,7 +24999,7 @@ tough-cookie@^2.3.3, tough-cookie@~2.5.0: "tough-cookie@^2.3.3 || ^3.0.1 || ^4.0.0": version "4.1.2" - resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-4.1.2.tgz#e53e84b85f24e0b65dd526f46628db6c85f6b874" + resolved "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.1.2.tgz" integrity sha512-G9fqXWoYFZgTc2z8Q5zaHy/vJMjm+WV0AkAeHxVCQiEB1b+dGvWzFW6QV07cY5jQ5gRkeid2qIkzkxUnmoQZUQ== dependencies: psl "^1.1.33" @@ -24572,62 +25007,53 @@ tough-cookie@^2.3.3, tough-cookie@~2.5.0: universalify "^0.2.0" url-parse "^1.5.3" -tough-cookie@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-3.0.1.tgz#9df4f57e739c26930a018184887f4adb7dca73b2" - integrity sha512-yQyJ0u4pZsv9D4clxO69OEjLWYw+jbgspjTue4lTQZLfV0c5l1VmK2y1JK8E9ahdpltPOaAThPcp5nKPUgSnsg== - dependencies: - ip-regex "^2.1.0" - psl "^1.1.28" - punycode "^2.1.1" - toxic@^1.0.0: version "1.0.1" - resolved "https://registry.yarnpkg.com/toxic/-/toxic-1.0.1.tgz#8c2e2528da591100adc3883f2c0e56acfb1c7288" + resolved "https://registry.npmjs.org/toxic/-/toxic-1.0.1.tgz" integrity sha512-WI3rIGdcaKULYg7KVoB0zcjikqvcYYvcuT6D89bFPz2rVR0Rl0PK6x8/X62rtdLtBKIE985NzVf/auTtGegIIg== dependencies: lodash "^4.17.10" tr46@^1.0.1: version "1.0.1" - resolved "https://registry.yarnpkg.com/tr46/-/tr46-1.0.1.tgz#a8b13fd6bfd2489519674ccde55ba3693b706d09" + resolved "https://registry.npmjs.org/tr46/-/tr46-1.0.1.tgz" integrity sha512-dTpowEjclQ7Kgx5SdBkqRzVhERQXov8/l9Ft9dVM9fmg0W0KQSVaXX9T4i6twCPNtYiZM53lpSSUAwJbFPOHxA== dependencies: punycode "^2.1.0" tr46@~0.0.3: version "0.0.3" - resolved "https://registry.yarnpkg.com/tr46/-/tr46-0.0.3.tgz#8184fd347dac9cdc185992f3a6622e14b9d9ab6a" + resolved "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz" integrity sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw== "traverse@>=0.3.0 <0.4": version "0.3.9" - resolved "https://registry.yarnpkg.com/traverse/-/traverse-0.3.9.tgz#717b8f220cc0bb7b44e40514c22b2e8bbc70d8b9" + resolved "https://registry.npmjs.org/traverse/-/traverse-0.3.9.tgz" integrity sha512-iawgk0hLP3SxGKDfnDJf8wTz4p2qImnyihM5Hh/sGvQ3K37dPi/w8sRhdNIxYA1TwFwc5mDhIJq+O0RsvXBKdQ== treeify@^1.1.0: version "1.1.0" - resolved "https://registry.yarnpkg.com/treeify/-/treeify-1.1.0.tgz#4e31c6a463accd0943879f30667c4fdaff411bb8" + resolved "https://registry.npmjs.org/treeify/-/treeify-1.1.0.tgz" integrity sha512-1m4RA7xVAJrSGrrXGs0L3YTwyvBs2S8PbRHaLZAkFw7JR8oIFwYtysxlBZhYIa7xSyiYJKZ3iGrrk55cGA3i9A== treeverse@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/treeverse/-/treeverse-2.0.0.tgz#036dcef04bc3fd79a9b79a68d4da03e882d8a9ca" + resolved "https://registry.npmjs.org/treeverse/-/treeverse-2.0.0.tgz" integrity sha512-N5gJCkLu1aXccpOTtqV6ddSEi6ZmGkh3hjmbu1IjcavJK4qyOVQmi0myQKM7z5jVGmD68SJoliaVrMmVObhj6A== trim-newlines@^3.0.0: version "3.0.1" - resolved "https://registry.yarnpkg.com/trim-newlines/-/trim-newlines-3.0.1.tgz#260a5d962d8b752425b32f3a7db0dcacd176c144" + resolved "https://registry.npmjs.org/trim-newlines/-/trim-newlines-3.0.1.tgz" integrity sha512-c1PTsA3tYrIsLGkJkzHF+w9F2EyxfXGo4UyJc4pFL++FMjnq0HJS69T3M7d//gKrFKwy429bouPescbjecU+Zw== triple-beam@^1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/triple-beam/-/triple-beam-1.3.0.tgz#a595214c7298db8339eeeee083e4d10bd8cb8dd9" - integrity sha512-XrHUvV5HpdLmIj4uVMxHggLbFSZYIn7HEWsqePZcI50pco+MPqJ50wMGY794X7AOOhxOBAjbkqfAbEe/QMp2Lw== + version "1.4.1" + resolved "https://registry.npmjs.org/triple-beam/-/triple-beam-1.4.1.tgz" + integrity sha512-aZbgViZrg1QNcG+LULa7nhZpJTZSLm/mXnHXnbAbjmN5aSa0y7V+wvv6+4WaBtpISJzThKy+PIPxc1Nq1EJ9mg== truffle-flattener@^1.4.0: version "1.6.0" - resolved "https://registry.yarnpkg.com/truffle-flattener/-/truffle-flattener-1.6.0.tgz#abb64488b711e6cca0a9d3e449f6a85e35964c5d" + resolved "https://registry.npmjs.org/truffle-flattener/-/truffle-flattener-1.6.0.tgz" integrity sha512-scS5Bsi4CZyvlrmD4iQcLHTiG2RQFUXVheTgWeH6PuafmI+Lk5U87Es98loM3w3ImqC9/fPHq+3QIXbcPuoJ1Q== dependencies: "@resolver-engine/imports-fs" "^0.2.2" @@ -24638,7 +25064,7 @@ truffle-flattener@^1.4.0: truffle-hdwallet-provider@0.0.3: version "0.0.3" - resolved "https://registry.yarnpkg.com/truffle-hdwallet-provider/-/truffle-hdwallet-provider-0.0.3.tgz#0e1de02104b73d3875e1cf7093305b4ea8a2d843" + resolved "https://registry.npmjs.org/truffle-hdwallet-provider/-/truffle-hdwallet-provider-0.0.3.tgz" integrity sha512-oF00yd5jwGcHn0F063fhdE+pcw8No+idoX2vvR/3SuSJri54vdW/f/qBEc5BpJMjhVJtoAmw+ITI9ZhC+UJuFw== dependencies: bip39 "^2.2.0" @@ -24648,7 +25074,7 @@ truffle-hdwallet-provider@0.0.3: truffle-security@^1.7.3: version "1.7.3" - resolved "https://registry.yarnpkg.com/truffle-security/-/truffle-security-1.7.3.tgz#c9dd7a0e7f35adb36d40878fa6939cf9446d210d" + resolved "https://registry.npmjs.org/truffle-security/-/truffle-security-1.7.3.tgz" integrity sha512-eruRvUBTBwO3anVW5o8qCWf/TGDVnNsKbM9cS6bxSI99MfXh5G0jw3Sy5m8Xeq6P9Y0QkqrmO/Sb+67vaX9bAw== dependencies: "@truffle/artifactor" "^4.0.36" @@ -24690,7 +25116,7 @@ truffle-typings@^1.0.6: truffle@5.9.0: version "5.9.0" - resolved "https://registry.yarnpkg.com/truffle/-/truffle-5.9.0.tgz#55035fd092795a3ee8204656bfb593e71438fed2" + resolved "https://registry.npmjs.org/truffle/-/truffle-5.9.0.tgz" integrity sha512-XZBlGzU+IA0F3oDpmTWas62TYrNseG3xYh861zR+E09K2A0E0eSuTi1d5k+Uzhv4I6bIlNSWL31iI1J/PiZxcw== dependencies: "@truffle/db-loader" "^0.2.24" @@ -24704,7 +25130,7 @@ truffle@5.9.0: ts-deepmerge@^2.0.1: version "2.0.7" - resolved "https://registry.yarnpkg.com/ts-deepmerge/-/ts-deepmerge-2.0.7.tgz#36786a9a10b5f3a6f5154007cf17bfba7251e0a7" + resolved "https://registry.npmjs.org/ts-deepmerge/-/ts-deepmerge-2.0.7.tgz" integrity sha512-3phiGcxPSSR47RBubQxPoZ+pqXsEsozLo4G4AlSrsMKTFg9TA3l+3he5BqpUi9wiuDbaHWXH/amlzQ49uEdXtg== ts-essentials@^1.0.0: @@ -24733,9 +25159,9 @@ ts-generator@^0.0.8: ts-essentials "^1.0.0" ts-jest@^29.0.0: - version "29.1.0" - resolved "https://registry.yarnpkg.com/ts-jest/-/ts-jest-29.1.0.tgz#4a9db4104a49b76d2b368ea775b6c9535c603891" - integrity sha512-ZhNr7Z4PcYa+JjMl62ir+zPiNJfXJN6E8hSLnaUKhOgqcn8vb3e537cpkd0FuAfRK3sR1LSqM1MOhliXNgOFPA== + version "29.1.1" + resolved "https://registry.npmjs.org/ts-jest/-/ts-jest-29.1.1.tgz" + integrity sha512-D6xjnnbP17cC85nliwGiL+tpoKN0StpgE0TeOjXQTU6MVCfsB4v7aW05CgQ/1OywGb0x/oy9hHFnN+sczTiRaA== dependencies: bs-logger "0.x" fast-json-stable-stringify "2.x" @@ -24743,19 +25169,19 @@ ts-jest@^29.0.0: json5 "^2.2.3" lodash.memoize "4.x" make-error "1.x" - semver "7.x" + semver "^7.5.3" yargs-parser "^21.0.1" ts-mockito@^2.6.1: version "2.6.1" - resolved "https://registry.yarnpkg.com/ts-mockito/-/ts-mockito-2.6.1.tgz#bc9ee2619033934e6fad1c4455aca5b5ace34e73" + resolved "https://registry.npmjs.org/ts-mockito/-/ts-mockito-2.6.1.tgz" integrity sha512-qU9m/oEBQrKq5hwfbJ7MgmVN5Gu6lFnIGWvpxSjrqq6YYEVv+RwVFWySbZMBgazsWqv6ctAyVBpo9TmAxnOEKw== dependencies: lodash "^4.17.5" ts-node@8.10.2, ts-node@^8.3.0, ts-node@^8.4.1, ts-node@^8.5.4: version "8.10.2" - resolved "https://registry.yarnpkg.com/ts-node/-/ts-node-8.10.2.tgz#eee03764633b1234ddd37f8db9ec10b75ec7fb8d" + resolved "https://registry.npmjs.org/ts-node/-/ts-node-8.10.2.tgz" integrity sha512-ISJJGgkIpDdBhWVu3jufsWpK3Rzo7bdiIXJjQc0ynKxVOVcg2oIrf2H2cejminGrptVc6q6/uynAHNCuWGbpVA== dependencies: arg "^4.1.0" @@ -24766,7 +25192,7 @@ ts-node@8.10.2, ts-node@^8.3.0, ts-node@^8.4.1, ts-node@^8.5.4: ts-node@8.3.0: version "8.3.0" - resolved "https://registry.yarnpkg.com/ts-node/-/ts-node-8.3.0.tgz#e4059618411371924a1fb5f3b125915f324efb57" + resolved "https://registry.npmjs.org/ts-node/-/ts-node-8.3.0.tgz" integrity sha512-dyNS/RqyVTDcmNM4NIBAeDMpsAdaQ+ojdf0GOLqE6nwJOgzEkdRNzJywhDfwnuvB10oa6NLVG1rUJQCpRN7qoQ== dependencies: arg "^4.1.0" @@ -24777,7 +25203,7 @@ ts-node@8.3.0: ts-node@^10.9.1: version "10.9.1" - resolved "https://registry.yarnpkg.com/ts-node/-/ts-node-10.9.1.tgz#e73de9102958af9e1f0b168a6ff320e25adcff4b" + resolved "https://registry.npmjs.org/ts-node/-/ts-node-10.9.1.tgz" integrity sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw== dependencies: "@cspotcode/source-map-support" "^0.8.0" @@ -24796,7 +25222,7 @@ ts-node@^10.9.1: tsconfig-paths@^3.8.0: version "3.14.2" - resolved "https://registry.yarnpkg.com/tsconfig-paths/-/tsconfig-paths-3.14.2.tgz#6e32f1f79412decd261f92d633a9dc1cfa99f088" + resolved "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.14.2.tgz" integrity sha512-o/9iXgCYc5L/JxCHPe3Hvh8Q/2xm5Z+p18PESBU6Ff33695QnCHBEjcytY2q19ua7Mbl/DavtBOLq+oG0RCL+g== dependencies: "@types/json5" "^0.0.29" @@ -24806,7 +25232,7 @@ tsconfig-paths@^3.8.0: tsconfig-paths@^4.1.2: version "4.2.0" - resolved "https://registry.yarnpkg.com/tsconfig-paths/-/tsconfig-paths-4.2.0.tgz#ef78e19039133446d244beac0fd6a1632e2d107c" + resolved "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-4.2.0.tgz" integrity sha512-NoZ4roiN7LnbKn9QqE1amc9DJfzvZXxF4xDavcOWt1BPkdx+m+0gJuPM+S0vCe7zTJMYUP0R8pO2XMr+Y8oLIg== dependencies: json5 "^2.2.2" @@ -24823,14 +25249,19 @@ tslib@^1, tslib@^1.10.0, tslib@^1.8.0, tslib@^1.8.1, tslib@^1.9.0, tslib@^1.9.3: resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== -tslib@^2.0.0, tslib@^2.0.1, tslib@^2.0.3, tslib@^2.1.0, tslib@^2.2.0, tslib@^2.3.0, tslib@^2.3.1, tslib@^2.4.0, tslib@^2.5.0: +tslib@^2.0.0, tslib@^2.1.0, tslib@^2.2.0, tslib@^2.3.1, tslib@^2.4.0, tslib@^2.5.0: version "2.5.0" - resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.5.0.tgz#42bfed86f5787aeb41d031866c8f402429e0fddf" + resolved "https://registry.npmjs.org/tslib/-/tslib-2.5.0.tgz" integrity sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg== +tslib@^2.0.1, tslib@^2.0.3, tslib@^2.3.0, tslib@^2.6.1, tslib@^2.6.2: + version "2.6.2" + resolved "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz" + integrity sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q== + tslib@~2.4.0: version "2.4.1" - resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.4.1.tgz#0d0bfbaac2880b91e22df0768e55be9753a5b17e" + resolved "https://registry.npmjs.org/tslib/-/tslib-2.4.1.tgz" integrity sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA== tslint-config-prettier@^1.18.0: @@ -24887,7 +25318,7 @@ tslint@^5.20.0: tsort@0.0.1: version "0.0.1" - resolved "https://registry.yarnpkg.com/tsort/-/tsort-0.0.1.tgz#e2280f5e817f8bf4275657fd0f9aebd44f5a2786" + resolved "https://registry.npmjs.org/tsort/-/tsort-0.0.1.tgz" integrity sha512-Tyrf5mxF8Ofs1tNoxA13lFeZ2Zrbd6cKbuH3V+MQ5sb6DtBj5FjrXVsRWT8YvNAQTqNoz66dz1WsbigI22aEnw== "tsutils@^2.27.2 <2.29.0": @@ -24913,34 +25344,34 @@ tsutils@^3.0.0, tsutils@^3.9.1: tunnel-agent@^0.4.0: version "0.4.3" - resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.4.3.tgz#6373db76909fe570e08d73583365ed828a74eeeb" + resolved "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.4.3.tgz" integrity sha512-e0IoVDWx8SDHc/hwFTqJDQ7CCDTEeGhmcT9jkWJjoGQSpgBz20nAMr80E3Tpk7PatJ1b37DQDgJR3CNSzcMOZQ== tunnel-agent@^0.6.0: version "0.6.0" - resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz#27a5dea06b36b04a0a9966774b290868f0fc40fd" + resolved "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz" integrity sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w== dependencies: safe-buffer "^5.0.1" tunnel@0.0.6: version "0.0.6" - resolved "https://registry.yarnpkg.com/tunnel/-/tunnel-0.0.6.tgz#72f1314b34a5b192db012324df2cc587ca47f92c" + resolved "https://registry.npmjs.org/tunnel/-/tunnel-0.0.6.tgz" integrity sha512-1h/Lnq9yajKY2PEbBadPXj3VxsDDu844OnaAo52UVmIzIvwwtBPIuNvkjuzBlTWpfJyUbG3ez0KSBibQkj4ojg== tweetnacl@^0.14.3, tweetnacl@~0.14.0: version "0.14.5" - resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64" + resolved "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz" integrity sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA== tweetnacl@^1.0.1: version "1.0.3" - resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-1.0.3.tgz#ac0af71680458d8a6378d0d0d050ab1407d35596" + resolved "https://registry.npmjs.org/tweetnacl/-/tweetnacl-1.0.3.tgz" integrity sha512-6rt+RN7aOi1nGMyC4Xa5DdYiukl2UWCbcJft7YhxReBGQD7OAM8Pbxw6YMo4r2diNEA8FEmu32YOn9rhaiE5yw== tweetsodium@0.0.5: version "0.0.5" - resolved "https://registry.yarnpkg.com/tweetsodium/-/tweetsodium-0.0.5.tgz#f63ab4b1d26d6355d82d512a2bbf03cae96eb3e8" + resolved "https://registry.npmjs.org/tweetsodium/-/tweetsodium-0.0.5.tgz" integrity sha512-T3aXZtx7KqQbutTtBfn+P5By3HdBuB1eCoGviIrRJV2sXeToxv2X2cv5RvYqgG26PSnN5m3fYixds22Gkfd11w== dependencies: blakejs "^1.1.0" @@ -24948,59 +25379,59 @@ tweetsodium@0.0.5: type-check@~0.3.2: version "0.3.2" - resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.3.2.tgz#5884cab512cf1d355e3fb784f30804b2b520db72" + resolved "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz" integrity sha512-ZCmOJdvOWDBYJlzAoFkC+Q0+bUyEOS1ltgp1MGU03fqHG+dbi9tBFU2Rd9QKiDZFAYrhPh2JUf7rZRIuHRKtOg== dependencies: prelude-ls "~1.1.2" type-detect@4.0.8, type-detect@^4.0.0, type-detect@^4.0.5: version "4.0.8" - resolved "https://registry.yarnpkg.com/type-detect/-/type-detect-4.0.8.tgz#7646fb5f18871cfbb7749e69bd39a6388eb7450c" + resolved "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz" integrity sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g== type-fest@^0.18.0: version "0.18.1" - resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.18.1.tgz#db4bc151a4a2cf4eebf9add5db75508db6cc841f" + resolved "https://registry.npmjs.org/type-fest/-/type-fest-0.18.1.tgz" integrity sha512-OIAYXk8+ISY+qTOwkHtKqzAuxchoMiD9Udx+FSGQDuiRR+PJKJHc2NJAXlbhkGwTt/4/nKZxELY1w3ReWOL8mw== type-fest@^0.20.2: version "0.20.2" - resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.20.2.tgz#1bf207f4b28f91583666cb5fbd327887301cd5f4" + 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.21.3: version "0.21.3" - resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.21.3.tgz#d260a24b0198436e133fa26a524a6d65fa3b2e37" + resolved "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz" integrity sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w== type-fest@^0.3.0: version "0.3.1" - resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.3.1.tgz#63d00d204e059474fe5e1b7c011112bbd1dc29e1" + resolved "https://registry.npmjs.org/type-fest/-/type-fest-0.3.1.tgz" integrity sha512-cUGJnCdr4STbePCgqNFbpVNCepa+kAVohJs1sLhxzdH+gnEoOd8VhbYa7pD3zZYGiURWM2xzEII3fQcRizDkYQ== type-fest@^0.4.1: version "0.4.1" - resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.4.1.tgz#8bdf77743385d8a4f13ba95f610f5ccd68c728f8" + resolved "https://registry.npmjs.org/type-fest/-/type-fest-0.4.1.tgz" integrity sha512-IwzA/LSfD2vC1/YDYMv/zHP4rDF1usCwllsDpbolT3D4fUepIO7f9K70jjmUewU/LmGUKJcwcVtDCpnKk4BPMw== type-fest@^0.6.0: version "0.6.0" - resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.6.0.tgz#8d2a2370d3df886eb5c90ada1c5bf6188acf838b" + resolved "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz" integrity sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg== type-fest@^0.8.1: version "0.8.1" - resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.8.1.tgz#09e249ebde851d3b1e48d27c105444667f17b83d" + resolved "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz" integrity sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA== type-fest@^3.0.0: version "3.13.1" - resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-3.13.1.tgz#bb744c1f0678bea7543a2d1ec24e83e68e8c8706" + resolved "https://registry.npmjs.org/type-fest/-/type-fest-3.13.1.tgz" integrity sha512-tLq3bSNx+xSpwvAJnzrK0Ep5CLNWjvFTOp71URMaAEWBfRb9nnJiBoUe0tF8bI4ZFO3omgBR6NvnbzVUT3Ly4g== type-is@~1.6.18: version "1.6.18" - resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.18.tgz#4e552cd05df09467dcbc4ef739de89f2cf37c131" + resolved "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz" integrity sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g== dependencies: media-typer "0.3.0" @@ -25008,12 +25439,12 @@ type-is@~1.6.18: type@^1.0.1: version "1.2.0" - resolved "https://registry.yarnpkg.com/type/-/type-1.2.0.tgz#848dd7698dafa3e54a6c479e759c4bc3f18847a0" + resolved "https://registry.npmjs.org/type/-/type-1.2.0.tgz" integrity sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg== type@^2.7.2: version "2.7.2" - resolved "https://registry.yarnpkg.com/type/-/type-2.7.2.tgz#2376a15a3a28b1efa0f5350dcf72d24df6ef98d0" + resolved "https://registry.npmjs.org/type/-/type-2.7.2.tgz" integrity sha512-dzlvlNlt6AXU7EBSfpAscydQ7gXB+pPGsPnfJnZpiNJBDj7IaJzQlBZYGdEi4R9HmPdBv2XmWJ6YUtoTa7lmCw== typechain-target-truffle@1.0.2: @@ -25048,9 +25479,39 @@ typechain@2.0.0: ts-essentials "^6.0.3" ts-generator "^0.0.8" +typed-array-buffer@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.0.tgz" + 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.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.0.tgz" + 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.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.0.tgz" + 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" + resolved "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.4.tgz" integrity sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng== dependencies: call-bind "^1.0.2" @@ -25059,19 +25520,19 @@ typed-array-length@^1.0.4: typed-function@1.1.0: version "1.1.0" - resolved "https://registry.yarnpkg.com/typed-function/-/typed-function-1.1.0.tgz#ea149706e0fb42aca1791c053a6d94ccd6c4fdcb" + resolved "https://registry.npmjs.org/typed-function/-/typed-function-1.1.0.tgz" integrity sha512-TuQzwiT4DDg19beHam3E66oRXhyqlyfgjHB/5fcvsRXbfmWPJfto9B4a0TBdTrQAPGlGmXh/k7iUI+WsObgORA== typedarray-to-buffer@^3.1.5: version "3.1.5" - resolved "https://registry.yarnpkg.com/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz#a97ee7a9ff42691b9f783ff1bc5112fe3fca9080" + resolved "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz" integrity sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q== dependencies: is-typedarray "^1.0.0" typedarray@^0.0.6: version "0.0.6" - resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" + resolved "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz" integrity sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA== typedoc-default-themes@^0.11.4: @@ -25106,24 +25567,24 @@ typedoc@^0.19.2: typeforce@^1.11.5: version "1.18.0" - resolved "https://registry.yarnpkg.com/typeforce/-/typeforce-1.18.0.tgz#d7416a2c5845e085034d70fcc5b6cc4a90edbfdc" + resolved "https://registry.npmjs.org/typeforce/-/typeforce-1.18.0.tgz" integrity sha512-7uc1O8h1M1g0rArakJdf0uLRSSgFcYexrVoKo+bzJd32gd4gDy2L/Z+8/FjPnU9ydY3pEnVPtr9FyscYY60K1g== typescript-compare@^0.0.2: version "0.0.2" - resolved "https://registry.yarnpkg.com/typescript-compare/-/typescript-compare-0.0.2.tgz#7ee40a400a406c2ea0a7e551efd3309021d5f425" + resolved "https://registry.npmjs.org/typescript-compare/-/typescript-compare-0.0.2.tgz" integrity sha512-8ja4j7pMHkfLJQO2/8tut7ub+J3Lw2S3061eJLFQcvs3tsmJKp8KG5NtpLn7KcY2w08edF74BSVN7qJS0U6oHA== dependencies: typescript-logic "^0.0.0" typescript-logic@^0.0.0: version "0.0.0" - resolved "https://registry.yarnpkg.com/typescript-logic/-/typescript-logic-0.0.0.tgz#66ebd82a2548f2b444a43667bec120b496890196" + resolved "https://registry.npmjs.org/typescript-logic/-/typescript-logic-0.0.0.tgz" integrity sha512-zXFars5LUkI3zP492ls0VskH3TtdeHCqu0i7/duGt60i5IGPIpAHE/DWo5FqJ6EjQ15YKXrt+AETjv60Dat34Q== typescript-tslint-plugin@^0.5.4: version "0.5.5" - resolved "https://registry.yarnpkg.com/typescript-tslint-plugin/-/typescript-tslint-plugin-0.5.5.tgz#673875c43640251f1ab3d63745d7d49726ff961c" + resolved "https://registry.npmjs.org/typescript-tslint-plugin/-/typescript-tslint-plugin-0.5.5.tgz" integrity sha512-tR5igNQP+6FhxaPJYRlUBVsEl0n5cSuXRbg7L1y80mL4B1jUHb8uiIcbQBJ9zWyypJEdFYFUccpXxvMwZR8+AA== dependencies: minimatch "^3.0.4" @@ -25132,29 +25593,29 @@ typescript-tslint-plugin@^0.5.4: typescript-tuple@^2.2.1: version "2.2.1" - resolved "https://registry.yarnpkg.com/typescript-tuple/-/typescript-tuple-2.2.1.tgz#7d9813fb4b355f69ac55032e0363e8bb0f04dad2" + resolved "https://registry.npmjs.org/typescript-tuple/-/typescript-tuple-2.2.1.tgz" integrity sha512-Zcr0lbt8z5ZdEzERHAMAniTiIKerFCMgd7yjq1fPnDJ43et/k9twIFQMUYff9k5oXcsQ0WpvFcgzK2ZKASoW6Q== dependencies: typescript-compare "^0.0.2" typescript@4.4.3: version "4.4.3" - resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.4.3.tgz#bdc5407caa2b109efd4f82fe130656f977a29324" + resolved "https://registry.npmjs.org/typescript/-/typescript-4.4.3.tgz" integrity sha512-4xfscpisVgqqDfPaJo5vkd+Qd/ItkoagnHpufr+i2QCHBsNYp+G7UAoyFl8aPtx879u38wPV65rZ8qbGZijalA== typescript@4.7.4: version "4.7.4" - resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.7.4.tgz#1a88596d1cf47d59507a1bcdfb5b9dfe4d488235" + resolved "https://registry.npmjs.org/typescript/-/typescript-4.7.4.tgz" integrity sha512-C0WQT0gezHuw6AdY1M2jxUO83Rjf0HP7Sk1DtXj6j1EwkQNZrHAg2XPWlq62oqEhYvONq5pkC2Y9oPljWToLmQ== "typescript@^3 || ^4": version "4.9.5" - resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.9.5.tgz#095979f9bcc0d09da324d58d03ce8f8374cbe65a" + resolved "https://registry.npmjs.org/typescript/-/typescript-4.9.5.tgz" integrity sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g== typescript@^3.6.4: version "3.9.10" - resolved "https://registry.yarnpkg.com/typescript/-/typescript-3.9.10.tgz#70f3910ac7a51ed6bef79da7800690b19bf778b8" + resolved "https://registry.npmjs.org/typescript/-/typescript-3.9.10.tgz" integrity sha512-w6fIxVE/H1PkLKcCPsFqKE7Kv7QUwhU8qQY2MueZXWx5cPZdwFupLgKK3vntcK98BtNHZtAF4LA/yl2a7k8R6Q== typical@^2.6.0, typical@^2.6.1: @@ -25164,27 +25625,27 @@ typical@^2.6.0, typical@^2.6.1: uc.micro@^1.0.1, uc.micro@^1.0.5: version "1.0.6" - resolved "https://registry.yarnpkg.com/uc.micro/-/uc.micro-1.0.6.tgz#9c411a802a409a91fc6cf74081baba34b24499ac" + resolved "https://registry.npmjs.org/uc.micro/-/uc.micro-1.0.6.tgz" integrity sha512-8Y75pvTYkLJW2hWQHXxoqRgV7qb9B+9vFEtidML+7koHUFapnVJAZ6cKs+Qjz5Aw3aZWHMC6u0wJE3At+nSGwA== uglify-js@^3.1.4, uglify-js@^3.7.7: version "3.17.4" - resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.17.4.tgz#61678cf5fa3f5b7eb789bb345df29afb8257c22c" + resolved "https://registry.npmjs.org/uglify-js/-/uglify-js-3.17.4.tgz" integrity sha512-T9q82TJI9e/C1TAxYvfb16xO120tMVFZrGA3f9/P4424DNu6ypK103y0GPFVa17yotwSyZW5iYXgjYHkGrJW/g== uint8array-tools@0.0.7: version "0.0.7" - resolved "https://registry.yarnpkg.com/uint8array-tools/-/uint8array-tools-0.0.7.tgz#a7a2bb5d8836eae2fade68c771454e6a438b390d" + resolved "https://registry.npmjs.org/uint8array-tools/-/uint8array-tools-0.0.7.tgz" integrity sha512-vrrNZJiusLWoFWBqz5Y5KMCgP9W9hnjZHzZiZRT8oNAkq3d5Z5Oe76jAvVVSRh4U8GGR90N2X1dWtrhvx6L8UQ== ultron@~1.1.0: version "1.1.1" - resolved "https://registry.yarnpkg.com/ultron/-/ultron-1.1.1.tgz#9fe1536a10a664a65266a1e3ccf85fd36302bc9c" + resolved "https://registry.npmjs.org/ultron/-/ultron-1.1.1.tgz" integrity sha512-UIEXBNeYmKptWH6z8ZnqTeS8fV74zG0/eRU9VGkpzz+LIJNs8W/zM/L+7ctCkRrgbNnnR0xxw4bKOr0cW0N0Og== unbox-primitive@^1.0.2: version "1.0.2" - resolved "https://registry.yarnpkg.com/unbox-primitive/-/unbox-primitive-1.0.2.tgz#29032021057d5e6cdbd08c5129c226dff8ed6f9e" + resolved "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz" integrity sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw== dependencies: call-bind "^1.0.2" @@ -25194,7 +25655,7 @@ unbox-primitive@^1.0.2: unbzip2-stream@^1.0.9: version "1.4.3" - resolved "https://registry.yarnpkg.com/unbzip2-stream/-/unbzip2-stream-1.4.3.tgz#b0da04c4371311df771cdc215e87f2130991ace7" + resolved "https://registry.npmjs.org/unbzip2-stream/-/unbzip2-stream-1.4.3.tgz" integrity sha512-mlExGW4w71ebDJviH16lQLtZS32VKqsSfk80GCfUlwT/4/hNRFsoscrF/c++9xinkMzECL1uL9DDwXqFWkruPg== dependencies: buffer "^5.2.1" @@ -25202,22 +25663,22 @@ unbzip2-stream@^1.0.9: unc-path-regex@^0.1.0: version "0.1.2" - resolved "https://registry.yarnpkg.com/unc-path-regex/-/unc-path-regex-0.1.2.tgz#e73dd3d7b0d7c5ed86fbac6b0ae7d8c6a69d50fa" + resolved "https://registry.npmjs.org/unc-path-regex/-/unc-path-regex-0.1.2.tgz" integrity sha512-eXL4nmJT7oCpkZsHZUOJo8hcX3GbsiDOa0Qu9F646fi8dT3XuSVopVqAcEiVzSKKH7UoDti23wNX3qGFxcW5Qg== underscore@1.12.1: version "1.12.1" - resolved "https://registry.yarnpkg.com/underscore/-/underscore-1.12.1.tgz#7bb8cc9b3d397e201cf8553336d262544ead829e" + resolved "https://registry.npmjs.org/underscore/-/underscore-1.12.1.tgz" integrity sha512-hEQt0+ZLDVUMhebKxL4x1BTtDY7bavVofhZ9KZ4aI26X9SRaE+Y3m83XUL1UP2jn8ynjndwCCpEHdUG+9pP1Tw== underscore@1.9.1: version "1.9.1" - resolved "https://registry.yarnpkg.com/underscore/-/underscore-1.9.1.tgz#06dce34a0e68a7babc29b365b8e74b8925203961" + resolved "https://registry.npmjs.org/underscore/-/underscore-1.9.1.tgz" integrity sha512-5/4etnCkd9c8gwgowi5/om/mYO5ajCaOgdzj/oW+0eQV9WxKBDZw5+ycmKmeaTXjInS/W0BzpGLo2xR2aBwZdg== underscore@>1.4.4, "underscore@>= 1.3.1", underscore@~1.13.2: version "1.13.6" - resolved "https://registry.yarnpkg.com/underscore/-/underscore-1.13.6.tgz#04786a1f589dc6c09f761fc5f45b89e935136441" + resolved "https://registry.npmjs.org/underscore/-/underscore-1.13.6.tgz" integrity sha512-+A5Sja4HP1M08MaXya7p5LvjuM7K6q/2EaC0+iovj/wOcMsTzMvDFbasi/oSapiwOlt252IqsKqPjCl7huKS0A== union-value@^1.0.0: @@ -25232,63 +25693,63 @@ union-value@^1.0.0: unique-filename@^1.1.1: version "1.1.1" - resolved "https://registry.yarnpkg.com/unique-filename/-/unique-filename-1.1.1.tgz#1d69769369ada0583103a1e6ae87681b56573230" + resolved "https://registry.npmjs.org/unique-filename/-/unique-filename-1.1.1.tgz" integrity sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ== dependencies: unique-slug "^2.0.0" unique-filename@^2.0.0: version "2.0.1" - resolved "https://registry.yarnpkg.com/unique-filename/-/unique-filename-2.0.1.tgz#e785f8675a9a7589e0ac77e0b5c34d2eaeac6da2" + resolved "https://registry.npmjs.org/unique-filename/-/unique-filename-2.0.1.tgz" integrity sha512-ODWHtkkdx3IAR+veKxFV+VBkUMcN+FaqzUUd7IZzt+0zhDZFPFxhlqwPF3YQvMHx1TD0tdgYl+kuPnJ8E6ql7A== dependencies: unique-slug "^3.0.0" unique-filename@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/unique-filename/-/unique-filename-3.0.0.tgz#48ba7a5a16849f5080d26c760c86cf5cf05770ea" + resolved "https://registry.npmjs.org/unique-filename/-/unique-filename-3.0.0.tgz" integrity sha512-afXhuC55wkAmZ0P18QsVE6kp8JaxrEokN2HGIoIVv2ijHQd419H0+6EigAFcIzXeMIkcIkNBpB3L/DXB3cTS/g== dependencies: unique-slug "^4.0.0" unique-slug@^2.0.0: version "2.0.2" - resolved "https://registry.yarnpkg.com/unique-slug/-/unique-slug-2.0.2.tgz#baabce91083fc64e945b0f3ad613e264f7cd4e6c" + resolved "https://registry.npmjs.org/unique-slug/-/unique-slug-2.0.2.tgz" integrity sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w== dependencies: imurmurhash "^0.1.4" unique-slug@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/unique-slug/-/unique-slug-3.0.0.tgz#6d347cf57c8a7a7a6044aabd0e2d74e4d76dc7c9" + resolved "https://registry.npmjs.org/unique-slug/-/unique-slug-3.0.0.tgz" integrity sha512-8EyMynh679x/0gqE9fT9oilG+qEt+ibFyqjuVTsZn1+CMxH+XLlpvr2UZx4nVcCwTpx81nICr2JQFkM+HPLq4w== dependencies: imurmurhash "^0.1.4" unique-slug@^4.0.0: version "4.0.0" - resolved "https://registry.yarnpkg.com/unique-slug/-/unique-slug-4.0.0.tgz#6bae6bb16be91351badd24cdce741f892a6532e3" + resolved "https://registry.npmjs.org/unique-slug/-/unique-slug-4.0.0.tgz" integrity sha512-WrcA6AyEfqDX5bWige/4NQfPZMtASNVxdmWR76WESYQVAACSgWcR6e9i0mofqqBxYFtL4oAxPIptY73/0YE1DQ== dependencies: imurmurhash "^0.1.4" unique-string@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/unique-string/-/unique-string-1.0.0.tgz#9e1057cca851abb93398f8b33ae187b99caec11a" + resolved "https://registry.npmjs.org/unique-string/-/unique-string-1.0.0.tgz" integrity sha512-ODgiYu03y5g76A1I9Gt0/chLCzQjvzDy7DsZGsLOE/1MrF6wriEskSncj1+/C58Xk/kPZDppSctDybCwOSaGAg== dependencies: crypto-random-string "^1.0.0" unique-string@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/unique-string/-/unique-string-2.0.0.tgz#39c6451f81afb2749de2b233e3f7c5e8843bd89d" + resolved "https://registry.npmjs.org/unique-string/-/unique-string-2.0.0.tgz" integrity sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg== dependencies: crypto-random-string "^2.0.0" universal-analytics@^0.4.16: version "0.4.23" - resolved "https://registry.yarnpkg.com/universal-analytics/-/universal-analytics-0.4.23.tgz#d915e676850c25c4156762471bdd7cf2eaaca8ac" + resolved "https://registry.npmjs.org/universal-analytics/-/universal-analytics-0.4.23.tgz" integrity sha512-lgMIH7XBI6OgYn1woDEmxhGdj8yDefMKg7GkWdeATAlQZFrMrNyxSkpDzY57iY0/6fdlzTbBV03OawvvzG+q7A== dependencies: debug "^4.1.1" @@ -25297,7 +25758,7 @@ universal-analytics@^0.4.16: universal-analytics@^0.5.3: version "0.5.3" - resolved "https://registry.yarnpkg.com/universal-analytics/-/universal-analytics-0.5.3.tgz#ff2d9b850062cdd4a8f652448047982a183c8e96" + resolved "https://registry.npmjs.org/universal-analytics/-/universal-analytics-0.5.3.tgz" integrity sha512-HXSMyIcf2XTvwZ6ZZQLfxfViRm/yTGoRgDeTbojtq6rezeyKB0sTBcKH2fhddnteAHRcHiKgr/ACpbgjGOC6RQ== dependencies: debug "^4.3.1" @@ -25305,32 +25766,27 @@ universal-analytics@^0.5.3: universal-user-agent@^6.0.0: version "6.0.0" - resolved "https://registry.yarnpkg.com/universal-user-agent/-/universal-user-agent-6.0.0.tgz#3381f8503b251c0d9cd21bc1de939ec9df5480ee" + resolved "https://registry.npmjs.org/universal-user-agent/-/universal-user-agent-6.0.0.tgz" integrity sha512-isyNax3wXoKaulPDZWHQqbmIx1k2tb9fb3GGDBRxCscfYV2Ch7WxPArBsFEG8s/safwXTT7H4QGhaIkTp9447w== universalify@^0.1.0: version "0.1.2" - resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.1.2.tgz#b646f69be3942dabcecc9d6639c80dc105efaa66" + resolved "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz" integrity sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg== universalify@^0.2.0: version "0.2.0" - resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.2.0.tgz#6451760566fa857534745ab1dde952d1b1761be0" + resolved "https://registry.npmjs.org/universalify/-/universalify-0.2.0.tgz" integrity sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg== universalify@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/universalify/-/universalify-2.0.0.tgz#75a4984efedc4b08975c5aeb73f530d02df25717" + resolved "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz" integrity sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ== -unorm@^1.3.3: - version "1.6.0" - resolved "https://registry.yarnpkg.com/unorm/-/unorm-1.6.0.tgz#029b289661fba714f1a9af439eb51d9b16c205af" - integrity sha512-b2/KCUlYZUeA7JFUuRJZPUtr4gZvBh7tavtv4fvk4+KV9pfGiR6CQAQAWl49ZpR3ts2dk4FYkP7EIgDJoiOLDA== - unpipe@1.0.0, unpipe@~1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec" + resolved "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz" integrity sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ== unset-value@^1.0.0: @@ -25342,9 +25798,9 @@ unset-value@^1.0.0: isobject "^3.0.0" unzipper@^0.10.10: - version "0.10.11" - resolved "https://registry.yarnpkg.com/unzipper/-/unzipper-0.10.11.tgz#0b4991446472cbdb92ee7403909f26c2419c782e" - integrity sha512-+BrAq2oFqWod5IESRjL3S8baohbevGcVA+teAIOYWM3pDVdseogqbzhhvvmiyQrUNKFUnDMtELW3X8ykbyDCJw== + version "0.10.14" + resolved "https://registry.npmjs.org/unzipper/-/unzipper-0.10.14.tgz" + integrity sha512-ti4wZj+0bQTiX2KmKWuwj7lhV+2n//uXEotUmGuQqrbVZSEGFMbI68+c6JCQ8aAmUWYvtHEz2A8K6wXvueR/6g== dependencies: big-integer "^1.6.17" binary "~0.3.0" @@ -25359,12 +25815,12 @@ unzipper@^0.10.10: upath@^2.0.1: version "2.0.1" - resolved "https://registry.yarnpkg.com/upath/-/upath-2.0.1.tgz#50c73dea68d6f6b990f51d279ce6081665d61a8b" + resolved "https://registry.npmjs.org/upath/-/upath-2.0.1.tgz" integrity sha512-1uEe95xksV1O0CYKXo8vQvN1JEbtJp7lb7C5U9HMsIp6IVwntkH/oNUzyVNQSd4S1sYk2FpSSW44FqMc8qee5w== update-browserslist-db@^1.0.10: version "1.0.11" - resolved "https://registry.yarnpkg.com/update-browserslist-db/-/update-browserslist-db-1.0.11.tgz#9a2a641ad2907ae7b3616506f4b977851db5b940" + resolved "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.11.tgz" integrity sha512-dCwEFf0/oT85M1fHBg4F0jtLwJrutGoHSQXCh7u4o2t1drG+c0a9Flnqww6XUKSfQMPpJBRjU8d4RXB09qtvaA== dependencies: escalade "^3.1.1" @@ -25372,7 +25828,7 @@ update-browserslist-db@^1.0.10: update-notifier-cjs@^5.1.6: version "5.1.6" - resolved "https://registry.yarnpkg.com/update-notifier-cjs/-/update-notifier-cjs-5.1.6.tgz#6e3aff745d1551b55bb0a0a5939b7e636d95877d" + resolved "https://registry.npmjs.org/update-notifier-cjs/-/update-notifier-cjs-5.1.6.tgz" integrity sha512-wgxdSBWv3x/YpMzsWz5G4p4ec7JWD0HCl8W6bmNB6E5Gwo+1ym5oN4hiXpLf0mPySVEJEIsYlkshnplkg2OP9A== dependencies: boxen "^5.0.0" @@ -25394,7 +25850,7 @@ update-notifier-cjs@^5.1.6: update-notifier@^4.1.1: version "4.1.3" - resolved "https://registry.yarnpkg.com/update-notifier/-/update-notifier-4.1.3.tgz#be86ee13e8ce48fb50043ff72057b5bd598e1ea3" + resolved "https://registry.npmjs.org/update-notifier/-/update-notifier-4.1.3.tgz" integrity sha512-Yld6Z0RyCYGB6ckIjffGOSOmHXj1gMeE7aROz4MG+XMkmixBX4jUngrGXNYz7wPKBmtoD4MnBa2Anu7RSKht/A== dependencies: boxen "^4.2.0" @@ -25413,7 +25869,7 @@ update-notifier@^4.1.1: update-notifier@^5.1.0: version "5.1.0" - resolved "https://registry.yarnpkg.com/update-notifier/-/update-notifier-5.1.0.tgz#4ab0d7c7f36a231dd7316cf7729313f0214d9ad9" + resolved "https://registry.npmjs.org/update-notifier/-/update-notifier-5.1.0.tgz" integrity sha512-ItnICHbeMh9GqUy31hFPrD1kcuZ3rpxDZbf4KUDavXwS0bW5m7SLbDQpGX3UYr072cbrF5hFUs3r5tUsPwjfHw== dependencies: boxen "^5.0.0" @@ -25433,19 +25889,19 @@ update-notifier@^5.1.0: upper-case-first@^1.1.0, upper-case-first@^1.1.2: version "1.1.2" - resolved "https://registry.yarnpkg.com/upper-case-first/-/upper-case-first-1.1.2.tgz#5d79bedcff14419518fd2edb0a0507c9b6859115" + resolved "https://registry.npmjs.org/upper-case-first/-/upper-case-first-1.1.2.tgz" integrity sha512-wINKYvI3Db8dtjikdAqoBbZoP6Q+PZUyfMR7pmwHzjC2quzSkUq5DmPrTtPEqHaz8AGtmsB4TqwapMTM1QAQOQ== dependencies: upper-case "^1.1.1" upper-case@^1.0.3, upper-case@^1.1.0, upper-case@^1.1.1, upper-case@^1.1.3: version "1.1.3" - resolved "https://registry.yarnpkg.com/upper-case/-/upper-case-1.1.3.tgz#f6b4501c2ec4cdd26ba78be7222961de77621598" + resolved "https://registry.npmjs.org/upper-case/-/upper-case-1.1.3.tgz" integrity sha512-WRbjgmYzgXkCV7zNVpy5YgrHgbBv126rMALQQMrmzOVC4GM2waQ9x7xtm8VU+1yF2kWyPzI9zbZ48n4vSxwfSA== uri-js@^4.2.2: version "4.4.1" - resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.4.1.tgz#9b1a52595225859e55f669d928f88c6c57f2a77e" + resolved "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz" integrity sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg== dependencies: punycode "^2.1.0" @@ -25457,26 +25913,26 @@ urix@^0.1.0: url-join@0.0.1: version "0.0.1" - resolved "https://registry.yarnpkg.com/url-join/-/url-join-0.0.1.tgz#1db48ad422d3402469a87f7d97bdebfe4fb1e3c8" + resolved "https://registry.npmjs.org/url-join/-/url-join-0.0.1.tgz" integrity sha512-H6dnQ/yPAAVzMQRvEvyz01hhfQL5qRWSEt7BX8t9DqnPw9BjMb64fjIRq76Uvf1hkHp+mTZvEVJ5guXOT0Xqaw== url-parse-lax@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/url-parse-lax/-/url-parse-lax-1.0.0.tgz#7af8f303645e9bd79a272e7a14ac68bc0609da73" + resolved "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-1.0.0.tgz" integrity sha512-BVA4lR5PIviy2PMseNd2jbFQ+jwSwQGdJejf5ctd1rEXt0Ypd7yanUK9+lYechVlN5VaTJGsu2U/3MDDu6KgBA== dependencies: prepend-http "^1.0.1" url-parse-lax@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/url-parse-lax/-/url-parse-lax-3.0.0.tgz#16b5cafc07dbe3676c1b1999177823d6503acb0c" + resolved "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-3.0.0.tgz" integrity sha512-NjFKA0DidqPa5ciFcSrXnAltTtzz84ogy+NebPvfEgAck0+TNg4UJ4IN+fB7zRZfbgUf0syOo9MDxFkDSMuFaQ== dependencies: prepend-http "^2.0.0" url-parse@1.4.4: version "1.4.4" - resolved "https://registry.yarnpkg.com/url-parse/-/url-parse-1.4.4.tgz#cac1556e95faa0303691fec5cf9d5a1bc34648f8" + resolved "https://registry.npmjs.org/url-parse/-/url-parse-1.4.4.tgz" integrity sha512-/92DTTorg4JjktLNLe6GPS2/RvAd/RGr6LuktmWSMLEOa6rjnlrFXNgSbSmkNvCoL2T028A0a1JaJLzRMlFoHg== dependencies: querystringify "^2.0.0" @@ -25484,7 +25940,7 @@ url-parse@1.4.4: url-parse@^1.5.3: version "1.5.10" - resolved "https://registry.yarnpkg.com/url-parse/-/url-parse-1.5.10.tgz#9d3c2f736c1d75dd3bd2be507dcc111f1e2ea9c1" + resolved "https://registry.npmjs.org/url-parse/-/url-parse-1.5.10.tgz" integrity sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ== dependencies: querystringify "^2.1.1" @@ -25492,22 +25948,22 @@ url-parse@^1.5.3: url-set-query@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/url-set-query/-/url-set-query-1.0.0.tgz#016e8cfd7c20ee05cafe7795e892bd0702faa339" + resolved "https://registry.npmjs.org/url-set-query/-/url-set-query-1.0.0.tgz" integrity sha512-3AChu4NiXquPfeckE5R5cGdiHCMWJx1dwCWOmWIL4KHAziJNOFIYJlpGFeKDvwLPHovZRCxK3cYlwzqI9Vp+Gg== url-template@^2.0.8: version "2.0.8" - resolved "https://registry.yarnpkg.com/url-template/-/url-template-2.0.8.tgz#fc565a3cccbff7730c775f5641f9555791439f21" + resolved "https://registry.npmjs.org/url-template/-/url-template-2.0.8.tgz" integrity sha512-XdVKMF4SJ0nP/O7XIPB0JwAEuT9lDIYnNsK8yGVe43y0AWoKeJNdv3ZNWh7ksJ6KqQFjOO6ox/VEitLnaVNufw== url-to-options@^1.0.1: version "1.0.1" - resolved "https://registry.yarnpkg.com/url-to-options/-/url-to-options-1.0.1.tgz#1505a03a289a48cbd7a434efbaeec5055f5633a9" + resolved "https://registry.npmjs.org/url-to-options/-/url-to-options-1.0.1.tgz" integrity sha512-0kQLIzG4fdk/G5NONku64rSH/x32NOA39LVQqlK8Le6lvTF6GGRJpqaQFGgU+CLwySIqBSMdwYM0sYcW9f6P4A== url@0.10.3: version "0.10.3" - resolved "https://registry.yarnpkg.com/url/-/url-0.10.3.tgz#021e4d9c7705f21bbf37d03ceb58767402774c64" + resolved "https://registry.npmjs.org/url/-/url-0.10.3.tgz" integrity sha512-hzSUW2q06EqL1gKM/a+obYHLIO6ct2hwPuviqTTOcfFVc61UbfJ2Q32+uGL/HCPxKqrdGB5QUwIe7UqlDgwsOQ== dependencies: punycode "1.3.2" @@ -25515,14 +25971,14 @@ url@0.10.3: urlgrey@1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/urlgrey/-/urlgrey-1.0.0.tgz#72d2f904482d0b602e3c7fa599343d699bbe1017" + resolved "https://registry.npmjs.org/urlgrey/-/urlgrey-1.0.0.tgz" integrity sha512-hJfIzMPJmI9IlLkby8QrsCykQ+SXDeO2W5Q9QTW3QpqZVTx4a/K7p8/5q+/isD8vsbVaFgql/gvAoQCRQ2Cb5w== dependencies: fast-url-parser "^1.1.3" usb@^1.7.0: version "1.9.2" - resolved "https://registry.yarnpkg.com/usb/-/usb-1.9.2.tgz#fb6b36f744ecc707a196c45a6ec72442cb6f2b73" + resolved "https://registry.npmjs.org/usb/-/usb-1.9.2.tgz" integrity sha512-dryNz030LWBPAf6gj8vyq0Iev3vPbCLHCT8dBw3gQRXRzVNsIdeuU+VjPp3ksmSPkeMAl1k+kQ14Ij0QHyeiAg== dependencies: node-addon-api "^4.2.0" @@ -25533,43 +25989,36 @@ use@^3.1.0: resolved "https://registry.yarnpkg.com/use/-/use-3.1.1.tgz#d50c8cac79a19fbc20f2911f56eb973f4e10070f" integrity sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ== -utf-8-validate@5.0.7: +utf-8-validate@5.0.7, utf-8-validate@^5.0.2: version "5.0.7" - resolved "https://registry.yarnpkg.com/utf-8-validate/-/utf-8-validate-5.0.7.tgz#c15a19a6af1f7ad9ec7ddc425747ca28c3644922" + resolved "https://registry.npmjs.org/utf-8-validate/-/utf-8-validate-5.0.7.tgz" integrity sha512-vLt1O5Pp+flcArHGIyKEQq883nBt8nN8tVBcoL0qUXj2XT1n7p70yGIq2VK98I5FdZ1YHc0wk/koOnHjnXWk1Q== dependencies: node-gyp-build "^4.3.0" -utf-8-validate@^5.0.2: - version "5.0.10" - resolved "https://registry.yarnpkg.com/utf-8-validate/-/utf-8-validate-5.0.10.tgz#d7d10ea39318171ca982718b6b96a8d2442571a2" - integrity sha512-Z6czzLq4u8fPOyx7TU6X3dvUZVvoJmxSQ+IcrlmagKhilxlhZgxPK6C5Jqbkw1IDUmFTM+cz9QDnnLTwDz/2gQ== - dependencies: - node-gyp-build "^4.3.0" - utf8@2.1.1: version "2.1.1" - resolved "https://registry.yarnpkg.com/utf8/-/utf8-2.1.1.tgz#2e01db02f7d8d0944f77104f1609eb0c304cf768" + resolved "https://registry.npmjs.org/utf8/-/utf8-2.1.1.tgz" integrity sha512-FzZp4f0vPa0AfWf+eav6hqZEqbn7TU1my/GUexpF9e0Afe/fnuLQvgdq5KgD3ggUpu3DpwRUGC0iS8q35eVBLQ== utf8@3.0.0, utf8@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/utf8/-/utf8-3.0.0.tgz#f052eed1364d696e769ef058b183df88c87f69d1" + resolved "https://registry.npmjs.org/utf8/-/utf8-3.0.0.tgz" integrity sha512-E8VjFIQ/TyQgp+TZfS6l8yp/xWppSAHzidGiRrqe4bK4XP9pTRyKFgGJpO3SN7zdX4DeomTrwaseCHovfpFcqQ== utf8@^2.1.1: version "2.1.2" - resolved "https://registry.yarnpkg.com/utf8/-/utf8-2.1.2.tgz#1fa0d9270e9be850d9b05027f63519bf46457d96" + resolved "https://registry.npmjs.org/utf8/-/utf8-2.1.2.tgz" integrity sha512-QXo+O/QkLP/x1nyi54uQiG0XrODxdysuQvE5dtVqv7F5K2Qb6FsN+qbr6KhF5wQ20tfcV3VQp0/2x1e1MRSPWg== util-deprecate@^1.0.1, util-deprecate@~1.0.1: version "1.0.2" - resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" + resolved "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz" integrity sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw== util.promisify@^1.0.0: version "1.1.2" - resolved "https://registry.yarnpkg.com/util.promisify/-/util.promisify-1.1.2.tgz#02b3dbadbb80071eee4c43aed58747afdfc516db" + resolved "https://registry.npmjs.org/util.promisify/-/util.promisify-1.1.2.tgz" integrity sha512-PBdZ03m1kBnQ5cjjO0ZvJMJS+QsbyIcFwi4hY4U76OQsCO9JrOYjbCFgIF76ccFg9xnJo7ZHPkqyj1GqmdS7MA== dependencies: call-bind "^1.0.2" @@ -25582,14 +26031,14 @@ util.promisify@^1.0.0: util@^0.10.3: version "0.10.4" - resolved "https://registry.yarnpkg.com/util/-/util-0.10.4.tgz#3aa0125bfe668a4672de58857d3ace27ecb76901" + resolved "https://registry.npmjs.org/util/-/util-0.10.4.tgz" integrity sha512-0Pm9hTQ3se5ll1XihRic3FDIku70C+iHUdT/W926rSgHV5QgXsYbKZN8MSC3tJtSkhuROzvsQjAaFENRXr+19A== dependencies: inherits "2.0.3" util@^0.12.0, util@^0.12.4, util@^0.12.5: version "0.12.5" - resolved "https://registry.yarnpkg.com/util/-/util-0.12.5.tgz#5f17a6059b73db61a875668781a1c2b136bd6fbc" + resolved "https://registry.npmjs.org/util/-/util-0.12.5.tgz" integrity sha512-kZf/K6hEIrWHI6XqOFUiiMa+79wE/D8Q+NCNAWclkyg3b4d2k7s0QGepNjiABc+aR3N1PAyHL7p6UcLY6LmrnA== dependencies: inherits "^2.0.3" @@ -25600,57 +26049,57 @@ util@^0.12.0, util@^0.12.4, util@^0.12.5: utils-merge@1.0.1: version "1.0.1" - resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713" + resolved "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz" integrity sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA== uuid@2.0.1: version "2.0.1" - resolved "https://registry.yarnpkg.com/uuid/-/uuid-2.0.1.tgz#c2a30dedb3e535d72ccf82e343941a50ba8533ac" + resolved "https://registry.npmjs.org/uuid/-/uuid-2.0.1.tgz" integrity sha512-nWg9+Oa3qD2CQzHIP4qKUqwNfzKn8P0LtFhotaCTFchsV7ZfDhAybeip/HZVeMIpZi9JgY1E3nUlwaCmZT1sEg== uuid@3.3.2: version "3.3.2" - resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.3.2.tgz#1b4af4955eb3077c501c23872fc6513811587131" + resolved "https://registry.npmjs.org/uuid/-/uuid-3.3.2.tgz" integrity sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA== uuid@8.0.0: version "8.0.0" - resolved "https://registry.yarnpkg.com/uuid/-/uuid-8.0.0.tgz#bc6ccf91b5ff0ac07bbcdbf1c7c4e150db4dbb6c" + resolved "https://registry.npmjs.org/uuid/-/uuid-8.0.0.tgz" integrity sha512-jOXGuXZAWdsTH7eZLtyXMqUb9EcWMGZNbL9YcGBJl4MH4nrxHmZJhEHvyLFrkxo+28uLb/NYRcStH48fnD0Vzw== uuid@8.3.2, uuid@^8.0.0, uuid@^8.3.0, uuid@^8.3.2: version "8.3.2" - resolved "https://registry.yarnpkg.com/uuid/-/uuid-8.3.2.tgz#80d5b5ced271bb9af6c445f21a1a04c606cefbe2" + resolved "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz" integrity sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg== uuid@^3.0.0, uuid@^3.1.0, uuid@^3.2.1, uuid@^3.3.2, uuid@^3.3.3: version "3.4.0" - resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.4.0.tgz#b23e4358afa8a202fe7a100af1f5f883f02007ee" + resolved "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz" integrity sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A== uuid@^7.0.3: version "7.0.3" - resolved "https://registry.yarnpkg.com/uuid/-/uuid-7.0.3.tgz#c5c9f2c8cf25dc0a372c4df1441c41f5bd0c680b" + resolved "https://registry.npmjs.org/uuid/-/uuid-7.0.3.tgz" integrity sha512-DPSke0pXhTZgoF/d+WSt2QaKMCFSfx7QegxEWT+JOuHF5aWrKEn0G+ztjuJg/gG8/ItK+rbPCD/yNv8yyih6Cg== uuid@^9.0.0: version "9.0.0" - resolved "https://registry.yarnpkg.com/uuid/-/uuid-9.0.0.tgz#592f550650024a38ceb0c562f2f6aa435761efb5" + resolved "https://registry.npmjs.org/uuid/-/uuid-9.0.0.tgz" integrity sha512-MXcSTerfPa4uqyzStbRoTgt5XIe3x5+42+q1sDuy3R5MDk66URdLMOZe5aPX/SQd+kuYAh0FdP/pO28IkQyTeg== v8-compile-cache-lib@^3.0.1: version "3.0.1" - resolved "https://registry.yarnpkg.com/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz#6336e8d71965cb3d35a1bbb7868445a7c05264bf" + resolved "https://registry.npmjs.org/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz" integrity sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg== v8-compile-cache@2.3.0: version "2.3.0" - resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz#2de19618c66dc247dcfb6f99338035d8245a2cee" + resolved "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz" integrity sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA== v8-to-istanbul@^9.0.1: version "9.1.0" - resolved "https://registry.yarnpkg.com/v8-to-istanbul/-/v8-to-istanbul-9.1.0.tgz#1b83ed4e397f58c85c266a570fc2558b5feb9265" + resolved "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-9.1.0.tgz" integrity sha512-6z3GW9x8G1gd+JIIgQQQxXuiJtCXeAjp6RaPEPLv62mH3iPHPxV6W3robxtCzNErRo6ZwTmzWhsbNvjyEBKzKA== dependencies: "@jridgewell/trace-mapping" "^0.3.12" @@ -25659,12 +26108,12 @@ v8-to-istanbul@^9.0.1: valid-url@^1, valid-url@^1.0.9: version "1.0.9" - resolved "https://registry.yarnpkg.com/valid-url/-/valid-url-1.0.9.tgz#1c14479b40f1397a75782f115e4086447433a200" + resolved "https://registry.npmjs.org/valid-url/-/valid-url-1.0.9.tgz" integrity sha512-QQDsV8OnSf5Uc30CKSwG9lnhMPe6exHtTXLRYX8uMwKENy640pU+2BgBL0LRbDh/eYRahNCS7aewCx0wf3NYVA== validate-npm-package-license@^3.0.1, validate-npm-package-license@^3.0.4: version "3.0.4" - resolved "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz#fc91f6b9c7ba15c857f4cb2c5defeec39d4f410a" + resolved "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz" integrity sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew== dependencies: spdx-correct "^3.0.0" @@ -25672,41 +26121,41 @@ validate-npm-package-license@^3.0.1, validate-npm-package-license@^3.0.4: validate-npm-package-name@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/validate-npm-package-name/-/validate-npm-package-name-3.0.0.tgz#5fa912d81eb7d0c74afc140de7317f0ca7df437e" + resolved "https://registry.npmjs.org/validate-npm-package-name/-/validate-npm-package-name-3.0.0.tgz" integrity sha512-M6w37eVCMMouJ9V/sdPGnC5H4uDr73/+xdq0FBLO3TFFX1+7wiUY6Es328NN+y43tmY+doUdN9g9J21vqB7iLw== dependencies: builtins "^1.0.3" validate-npm-package-name@^4.0.0: version "4.0.0" - resolved "https://registry.yarnpkg.com/validate-npm-package-name/-/validate-npm-package-name-4.0.0.tgz#fe8f1c50ac20afdb86f177da85b3600f0ac0d747" + resolved "https://registry.npmjs.org/validate-npm-package-name/-/validate-npm-package-name-4.0.0.tgz" integrity sha512-mzR0L8ZDktZjpX4OB46KT+56MAhl4EIazWP/+G/HPGuvfdaqg4YsCdtOm6U9+LOFyYDoh4dpnpxZRB9MQQns5Q== dependencies: builtins "^5.0.0" value-or-promise@1.0.11: version "1.0.11" - resolved "https://registry.yarnpkg.com/value-or-promise/-/value-or-promise-1.0.11.tgz#3e90299af31dd014fe843fe309cefa7c1d94b140" + resolved "https://registry.npmjs.org/value-or-promise/-/value-or-promise-1.0.11.tgz" integrity sha512-41BrgH+dIbCFXClcSapVs5M6GkENd3gQOJpEfPDNa71LsUGMXDL0jMWpI/Rh7WhX+Aalfz2TTS3Zt5pUsbnhLg== value-or-promise@^1.0.12: version "1.0.12" - resolved "https://registry.yarnpkg.com/value-or-promise/-/value-or-promise-1.0.12.tgz#0e5abfeec70148c78460a849f6b003ea7986f15c" + resolved "https://registry.npmjs.org/value-or-promise/-/value-or-promise-1.0.12.tgz" integrity sha512-Z6Uz+TYwEqE7ZN50gwn+1LCVo9ZVrpxRPOhOLnncYkY1ZzOYtrX8Fwf/rFktZ8R5mJms6EZf5TqNOMeZmnPq9Q== varint@^5.0.0: version "5.0.2" - resolved "https://registry.yarnpkg.com/varint/-/varint-5.0.2.tgz#5b47f8a947eb668b848e034dcfa87d0ff8a7f7a4" + resolved "https://registry.npmjs.org/varint/-/varint-5.0.2.tgz" integrity sha512-lKxKYG6H03yCZUpAGOPOsMcGxd1RHCu1iKvEHYDPmTyq2HueGhD73ssNBqqQWfvYs04G9iUFRvmAVLW20Jw6ow== vary@^1, vary@~1.1.2: version "1.1.2" - resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc" + resolved "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz" integrity sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg== verror@1.10.0: version "1.10.0" - resolved "https://registry.yarnpkg.com/verror/-/verror-1.10.0.tgz#3a105ca17053af55d6e270c1f8288682e18da400" + resolved "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz" integrity sha512-ZZKSmDAEFOijERBLkmYfJ+vmk3w+7hOLYDNkRCuRuMJGEmqYNCNLyBBFwWKVMhfwaEF3WOd0Zlw86U/WC/+nYw== dependencies: assert-plus "^1.0.0" @@ -25729,9 +26178,9 @@ viem@~1.5.4: isomorphic-ws "5.0.0" ws "8.12.0" -vm2@^3.9.11: +vm2@^3.9.17: version "3.9.19" - resolved "https://registry.yarnpkg.com/vm2/-/vm2-3.9.19.tgz#be1e1d7a106122c6c492b4d51c2e8b93d3ed6a4a" + resolved "https://registry.npmjs.org/vm2/-/vm2-3.9.19.tgz" integrity sha512-J637XF0DHDMV57R6JyVsTak7nIL8gy5KH4r1HiwWLf/4GBbb5MKL5y7LpmF4A8E2nR6XmzpmMFQ7V7ppPTmUQg== dependencies: acorn "^8.7.0" @@ -25739,12 +26188,12 @@ vm2@^3.9.11: vscode-jsonrpc@^4.0.0: version "4.0.0" - resolved "https://registry.yarnpkg.com/vscode-jsonrpc/-/vscode-jsonrpc-4.0.0.tgz#a7bf74ef3254d0a0c272fab15c82128e378b3be9" + resolved "https://registry.npmjs.org/vscode-jsonrpc/-/vscode-jsonrpc-4.0.0.tgz" integrity sha512-perEnXQdQOJMTDFNv+UF3h1Y0z4iSiaN9jIlb0OqIYgosPCZGYh/MCUlkFtV2668PL69lRDO32hmvL2yiidUYg== vscode-languageserver-protocol@3.14.1: version "3.14.1" - resolved "https://registry.yarnpkg.com/vscode-languageserver-protocol/-/vscode-languageserver-protocol-3.14.1.tgz#b8aab6afae2849c84a8983d39a1cf742417afe2f" + resolved "https://registry.npmjs.org/vscode-languageserver-protocol/-/vscode-languageserver-protocol-3.14.1.tgz" integrity sha512-IL66BLb2g20uIKog5Y2dQ0IiigW0XKrvmWiOvc0yXw80z3tMEzEnHjaGAb3ENuU7MnQqgnYJ1Cl2l9RvNgDi4g== dependencies: vscode-jsonrpc "^4.0.0" @@ -25752,12 +26201,12 @@ vscode-languageserver-protocol@3.14.1: vscode-languageserver-types@3.14.0: version "3.14.0" - resolved "https://registry.yarnpkg.com/vscode-languageserver-types/-/vscode-languageserver-types-3.14.0.tgz#d3b5952246d30e5241592b6dde8280e03942e743" + resolved "https://registry.npmjs.org/vscode-languageserver-types/-/vscode-languageserver-types-3.14.0.tgz" integrity sha512-lTmS6AlAlMHOvPQemVwo3CezxBp0sNB95KNPkqp3Nxd5VFEnuG1ByM0zlRWos0zjO3ZWtkvhal0COgiV1xIA4A== vscode-languageserver@^5.2.1: version "5.2.1" - resolved "https://registry.yarnpkg.com/vscode-languageserver/-/vscode-languageserver-5.2.1.tgz#0d2feddd33f92aadf5da32450df498d52f6f14eb" + resolved "https://registry.npmjs.org/vscode-languageserver/-/vscode-languageserver-5.2.1.tgz" integrity sha512-GuayqdKZqAwwaCUjDvMTAVRPJOp/SLON3mJ07eGsx/Iq9HjRymhKWztX41rISqDKhHVVyFM+IywICyZDla6U3A== dependencies: vscode-languageserver-protocol "3.14.1" @@ -25765,46 +26214,46 @@ vscode-languageserver@^5.2.1: vscode-uri@^1.0.6: version "1.0.8" - resolved "https://registry.yarnpkg.com/vscode-uri/-/vscode-uri-1.0.8.tgz#9769aaececae4026fb6e22359cb38946580ded59" + resolved "https://registry.npmjs.org/vscode-uri/-/vscode-uri-1.0.8.tgz" integrity sha512-obtSWTlbJ+a+TFRYGaUumtVwb+InIUVI0Lu0VBUAPmj2cU5JutEXg3xUE0c2J5Tcy7h2DEKVJBFi+Y9ZSFzzPQ== vuvuzela@1.0.3: version "1.0.3" - resolved "https://registry.yarnpkg.com/vuvuzela/-/vuvuzela-1.0.3.tgz#3be145e58271c73ca55279dd851f12a682114b0b" + resolved "https://registry.npmjs.org/vuvuzela/-/vuvuzela-1.0.3.tgz" integrity sha512-Tm7jR1xTzBbPW+6y1tknKiEhz04Wf/1iZkcTJjSFcpNko43+dFW6+OOeQe9taJIug3NdfUAjFKgUSyQrIKaDvQ== walk-up-path@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/walk-up-path/-/walk-up-path-1.0.0.tgz#d4745e893dd5fd0dbb58dd0a4c6a33d9c9fec53e" + resolved "https://registry.npmjs.org/walk-up-path/-/walk-up-path-1.0.0.tgz" integrity sha512-hwj/qMDUEjCU5h0xr90KGCf0tg0/LgJbmOWgrWKYlcJZM7XvquvUJZ0G/HMGr7F7OQMOUuPHWP9JpriinkAlkg== walkdir@^0.3.0, walkdir@^0.3.2: version "0.3.2" - resolved "https://registry.yarnpkg.com/walkdir/-/walkdir-0.3.2.tgz#ac8437a288c295656848ebc19981ebc677a5f590" + resolved "https://registry.npmjs.org/walkdir/-/walkdir-0.3.2.tgz" integrity sha512-0Twghia4Z5wDGDYWURlhZmI47GvERMCsXIu0QZWVVZyW9ZjpbbZvD9Zy9M6cWiQQRRbAcYajIyKNavaZZDt1Uw== walker@^1.0.8: version "1.0.8" - resolved "https://registry.yarnpkg.com/walker/-/walker-1.0.8.tgz#bd498db477afe573dc04185f011d3ab8a8d7653f" + resolved "https://registry.npmjs.org/walker/-/walker-1.0.8.tgz" integrity sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ== dependencies: makeerror "1.0.12" wcwidth@^1.0.0, wcwidth@^1.0.1: version "1.0.1" - resolved "https://registry.yarnpkg.com/wcwidth/-/wcwidth-1.0.1.tgz#f0b0dcf915bc5ff1528afadb2c0e17b532da2fe8" + resolved "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz" integrity sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg== dependencies: defaults "^1.0.3" weak-map@^1.0.5: version "1.0.8" - resolved "https://registry.yarnpkg.com/weak-map/-/weak-map-1.0.8.tgz#394c18a9e8262e790544ed8b55c6a4ddad1cb1a3" + resolved "https://registry.npmjs.org/weak-map/-/weak-map-1.0.8.tgz" integrity sha512-lNR9aAefbGPpHO7AEnY0hCFjz1eTkWCXYvkTRrTHs9qv8zJp+SkVYpzfLIFXQQiG3tVvbNFQgVg2bQS8YGgxyw== web3-bzz@1.10.0: version "1.10.0" - resolved "https://registry.yarnpkg.com/web3-bzz/-/web3-bzz-1.10.0.tgz#ac74bc71cdf294c7080a79091079192f05c5baed" + resolved "https://registry.npmjs.org/web3-bzz/-/web3-bzz-1.10.0.tgz" integrity sha512-o9IR59io3pDUsXTsps5pO5hW1D5zBmg46iNc2t4j2DkaYHNdDLwk2IP9ukoM2wg47QILfPEJYzhTfkS/CcX0KA== dependencies: "@types/node" "^12.12.6" @@ -25813,7 +26262,7 @@ web3-bzz@1.10.0: web3-bzz@1.2.2: version "1.2.2" - resolved "https://registry.yarnpkg.com/web3-bzz/-/web3-bzz-1.2.2.tgz#a3b9f613c49fd3e120e0997088a73557d5adb724" + resolved "https://registry.npmjs.org/web3-bzz/-/web3-bzz-1.2.2.tgz" integrity sha512-b1O2ObsqUN1lJxmFSjvnEC4TsaCbmh7Owj3IAIWTKqL9qhVgx7Qsu5O9cD13pBiSPNZJ68uJPaKq380QB4NWeA== dependencies: "@types/node" "^10.12.18" @@ -25823,7 +26272,7 @@ web3-bzz@1.2.2: web3-bzz@1.3.6: version "1.3.6" - resolved "https://registry.yarnpkg.com/web3-bzz/-/web3-bzz-1.3.6.tgz#95f370aecc3ff6ad07f057e6c0c916ef09b04dde" + resolved "https://registry.npmjs.org/web3-bzz/-/web3-bzz-1.3.6.tgz" integrity sha512-ibHdx1wkseujFejrtY7ZyC0QxQ4ATXjzcNUpaLrvM6AEae8prUiyT/OloG9FWDgFD2CPLwzKwfSQezYQlANNlw== dependencies: "@types/node" "^12.12.6" @@ -25833,7 +26282,7 @@ web3-bzz@1.3.6: web3-bzz@1.8.1: version "1.8.1" - resolved "https://registry.yarnpkg.com/web3-bzz/-/web3-bzz-1.8.1.tgz#81397be5ce262d03d82b92e9d8acc11f8a609ea1" + resolved "https://registry.npmjs.org/web3-bzz/-/web3-bzz-1.8.1.tgz" integrity sha512-dJJHS84nvpoxv6ijTMkdUSlRr5beCXNtx4UZcrFLHBva8dT63QEtKdLyDt2AyMJJdVzTCk78uir/6XtVWrdS6w== dependencies: "@types/node" "^12.12.6" @@ -25842,7 +26291,7 @@ web3-bzz@1.8.1: web3-bzz@1.8.2: version "1.8.2" - resolved "https://registry.yarnpkg.com/web3-bzz/-/web3-bzz-1.8.2.tgz#67ea1c775874056250eece551ded22905ed08784" + resolved "https://registry.npmjs.org/web3-bzz/-/web3-bzz-1.8.2.tgz" integrity sha512-1EEnxjPnFnvNWw3XeeKuTR8PBxYd0+XWzvaLK7OJC/Go9O8llLGxrxICbKV+8cgIE0sDRBxiYx02X+6OhoAQ9w== dependencies: "@types/node" "^12.12.6" @@ -25851,7 +26300,7 @@ web3-bzz@1.8.2: web3-core-helpers@1.0.0-beta.55: version "1.0.0-beta.55" - resolved "https://registry.yarnpkg.com/web3-core-helpers/-/web3-core-helpers-1.0.0-beta.55.tgz#832b8499889f9f514b1d174f00172fd3683d63de" + resolved "https://registry.npmjs.org/web3-core-helpers/-/web3-core-helpers-1.0.0-beta.55.tgz" integrity sha512-suj9Xy/lIqajaYLJTEjr2rlFgu6hGYwChHmf8+qNrC2luZA6kirTamtB9VThWMxbywx7p0bqQFjW6zXogAgWhg== dependencies: "@babel/runtime" "^7.3.1" @@ -25862,7 +26311,7 @@ web3-core-helpers@1.0.0-beta.55: web3-core-helpers@1.10.0: version "1.10.0" - resolved "https://registry.yarnpkg.com/web3-core-helpers/-/web3-core-helpers-1.10.0.tgz#1016534c51a5df77ed4f94d1fcce31de4af37fad" + resolved "https://registry.npmjs.org/web3-core-helpers/-/web3-core-helpers-1.10.0.tgz" integrity sha512-pIxAzFDS5vnbXvfvLSpaA1tfRykAe9adw43YCKsEYQwH0gCLL0kMLkaCX3q+Q8EVmAh+e1jWL/nl9U0de1+++g== dependencies: web3-eth-iban "1.10.0" @@ -25870,7 +26319,7 @@ web3-core-helpers@1.10.0: web3-core-helpers@1.2.2: version "1.2.2" - resolved "https://registry.yarnpkg.com/web3-core-helpers/-/web3-core-helpers-1.2.2.tgz#484974f4bd4a487217b85b0d7cfe841af0907619" + resolved "https://registry.npmjs.org/web3-core-helpers/-/web3-core-helpers-1.2.2.tgz" integrity sha512-HJrRsIGgZa1jGUIhvGz4S5Yh6wtOIo/TMIsSLe+Xay+KVnbseJpPprDI5W3s7H2ODhMQTbogmmUFquZweW2ImQ== dependencies: underscore "1.9.1" @@ -25879,7 +26328,7 @@ web3-core-helpers@1.2.2: web3-core-helpers@1.3.6: version "1.3.6" - resolved "https://registry.yarnpkg.com/web3-core-helpers/-/web3-core-helpers-1.3.6.tgz#c478246a9abe4e5456acf42657dac2f7c330be74" + resolved "https://registry.npmjs.org/web3-core-helpers/-/web3-core-helpers-1.3.6.tgz" integrity sha512-nhtjA2ZbkppjlxTSwG0Ttu6FcPkVu1rCN5IFAOVpF/L0SEt+jy+O5l90+cjDq0jAYvlBwUwnbh2mR9hwDEJCNA== dependencies: underscore "1.12.1" @@ -25888,7 +26337,7 @@ web3-core-helpers@1.3.6: web3-core-helpers@1.8.1: version "1.8.1" - resolved "https://registry.yarnpkg.com/web3-core-helpers/-/web3-core-helpers-1.8.1.tgz#7904747b23fd0afa4f2c86ed98ea9418ccad7672" + resolved "https://registry.npmjs.org/web3-core-helpers/-/web3-core-helpers-1.8.1.tgz" integrity sha512-ClzNO6T1S1gifC+BThw0+GTfcsjLEY8T1qUp6Ly2+w4PntAdNtKahxWKApWJ0l9idqot/fFIDXwO3Euu7I0Xqw== dependencies: web3-eth-iban "1.8.1" @@ -25896,7 +26345,7 @@ web3-core-helpers@1.8.1: web3-core-helpers@1.8.2: version "1.8.2" - resolved "https://registry.yarnpkg.com/web3-core-helpers/-/web3-core-helpers-1.8.2.tgz#82066560f8085e6c7b93bcc8e88b441289ea9f9f" + resolved "https://registry.npmjs.org/web3-core-helpers/-/web3-core-helpers-1.8.2.tgz" integrity sha512-6B1eLlq9JFrfealZBomd1fmlq1o4A09vrCVQSa51ANoib/jllT3atZrRDr0zt1rfI7TSZTZBXdN/aTdeN99DWw== dependencies: web3-eth-iban "1.8.2" @@ -25904,7 +26353,7 @@ web3-core-helpers@1.8.2: web3-core-method@1.0.0-beta.55: version "1.0.0-beta.55" - resolved "https://registry.yarnpkg.com/web3-core-method/-/web3-core-method-1.0.0-beta.55.tgz#0af994295ac2dd64ccd53305b7df8da76e11da49" + resolved "https://registry.npmjs.org/web3-core-method/-/web3-core-method-1.0.0-beta.55.tgz" integrity sha512-w1cW/s2ji9qGELHk2uMJCn1ooay0JJLVoPD1nvmsW6OTRWcVjxa62nJrFQhe6P5lEb83Xk9oHgmCxZoVUHibOw== dependencies: "@babel/runtime" "^7.3.1" @@ -25918,7 +26367,7 @@ web3-core-method@1.0.0-beta.55: web3-core-method@1.10.0: version "1.10.0" - resolved "https://registry.yarnpkg.com/web3-core-method/-/web3-core-method-1.10.0.tgz#82668197fa086e8cc8066742e35a9d72535e3412" + resolved "https://registry.npmjs.org/web3-core-method/-/web3-core-method-1.10.0.tgz" integrity sha512-4R700jTLAMKDMhQ+nsVfIXvH6IGJlJzGisIfMKWAIswH31h5AZz7uDUW2YctI+HrYd+5uOAlS4OJeeT9bIpvkA== dependencies: "@ethersproject/transactions" "^5.6.2" @@ -25929,7 +26378,7 @@ web3-core-method@1.10.0: web3-core-method@1.2.2: version "1.2.2" - resolved "https://registry.yarnpkg.com/web3-core-method/-/web3-core-method-1.2.2.tgz#d4fe2bb1945b7152e5f08e4ea568b171132a1e56" + resolved "https://registry.npmjs.org/web3-core-method/-/web3-core-method-1.2.2.tgz" integrity sha512-szR4fDSBxNHaF1DFqE+j6sFR/afv9Aa36OW93saHZnrh+iXSrYeUUDfugeNcRlugEKeUCkd4CZylfgbK2SKYJA== dependencies: underscore "1.9.1" @@ -25940,7 +26389,7 @@ web3-core-method@1.2.2: web3-core-method@1.3.6: version "1.3.6" - resolved "https://registry.yarnpkg.com/web3-core-method/-/web3-core-method-1.3.6.tgz#4b0334edd94b03dfec729d113c69a4eb6ebc68ae" + resolved "https://registry.npmjs.org/web3-core-method/-/web3-core-method-1.3.6.tgz" integrity sha512-RyegqVGxn0cyYW5yzAwkPlsSEynkdPiegd7RxgB4ak1eKk2Cv1q2x4C7D2sZjeeCEF+q6fOkVmo2OZNqS2iQxg== dependencies: "@ethersproject/transactions" "^5.0.0-beta.135" @@ -25952,7 +26401,7 @@ web3-core-method@1.3.6: web3-core-method@1.8.1: version "1.8.1" - resolved "https://registry.yarnpkg.com/web3-core-method/-/web3-core-method-1.8.1.tgz#0fc5a433a9fc784c447522f141c0a8e0163c7790" + resolved "https://registry.npmjs.org/web3-core-method/-/web3-core-method-1.8.1.tgz" integrity sha512-oYGRodktfs86NrnFwaWTbv2S38JnpPslFwSSARwFv4W9cjbGUW3LDeA5MKD/dRY+ssZ5OaekeMsUCLoGhX68yA== dependencies: "@ethersproject/transactions" "^5.6.2" @@ -25963,7 +26412,7 @@ web3-core-method@1.8.1: web3-core-method@1.8.2: version "1.8.2" - resolved "https://registry.yarnpkg.com/web3-core-method/-/web3-core-method-1.8.2.tgz#ba5ec68084e903f0516415010477618be017eac2" + resolved "https://registry.npmjs.org/web3-core-method/-/web3-core-method-1.8.2.tgz" integrity sha512-1qnr5mw5wVyULzLOrk4B+ryO3gfGjGd/fx8NR+J2xCGLf1e6OSjxT9vbfuQ3fErk/NjSTWWreieYWLMhaogcRA== dependencies: "@ethersproject/transactions" "^5.6.2" @@ -25974,14 +26423,14 @@ web3-core-method@1.8.2: web3-core-promievent@1.10.0: version "1.10.0" - resolved "https://registry.yarnpkg.com/web3-core-promievent/-/web3-core-promievent-1.10.0.tgz#cbb5b3a76b888df45ed3a8d4d8d4f54ccb66a37b" + resolved "https://registry.npmjs.org/web3-core-promievent/-/web3-core-promievent-1.10.0.tgz" integrity sha512-68N7k5LWL5R38xRaKFrTFT2pm2jBNFaM4GioS00YjAKXRQ3KjmhijOMG3TICz6Aa5+6GDWYelDNx21YAeZ4YTg== dependencies: eventemitter3 "4.0.4" web3-core-promievent@1.2.2: version "1.2.2" - resolved "https://registry.yarnpkg.com/web3-core-promievent/-/web3-core-promievent-1.2.2.tgz#3b60e3f2a0c96db8a891c927899d29d39e66ab1c" + resolved "https://registry.npmjs.org/web3-core-promievent/-/web3-core-promievent-1.2.2.tgz" integrity sha512-tKvYeT8bkUfKABcQswK6/X79blKTKYGk949urZKcLvLDEaWrM3uuzDwdQT3BNKzQ3vIvTggFPX9BwYh0F1WwqQ== dependencies: any-promise "1.3.0" @@ -25989,28 +26438,28 @@ web3-core-promievent@1.2.2: web3-core-promievent@1.3.6: version "1.3.6" - resolved "https://registry.yarnpkg.com/web3-core-promievent/-/web3-core-promievent-1.3.6.tgz#6c27dc79de8f71b74f5d17acaf9aaf593d3cb0c9" + resolved "https://registry.npmjs.org/web3-core-promievent/-/web3-core-promievent-1.3.6.tgz" integrity sha512-Z+QzfyYDTXD5wJmZO5wwnRO8bAAHEItT1XNSPVb4J1CToV/I/SbF7CuF8Uzh2jns0Cm1109o666H7StFFvzVKw== dependencies: eventemitter3 "4.0.4" web3-core-promievent@1.8.1: version "1.8.1" - resolved "https://registry.yarnpkg.com/web3-core-promievent/-/web3-core-promievent-1.8.1.tgz#f334c8b2ceac6c2228f06d2a515f6d103157f036" + resolved "https://registry.npmjs.org/web3-core-promievent/-/web3-core-promievent-1.8.1.tgz" integrity sha512-9mxqHlgB0MrZI4oUIRFkuoJMNj3E7btjrMv3sMer/Z9rYR1PfoSc1aAokw4rxKIcAh+ylVtd/acaB2HKB7aRPg== dependencies: eventemitter3 "4.0.4" web3-core-promievent@1.8.2: version "1.8.2" - resolved "https://registry.yarnpkg.com/web3-core-promievent/-/web3-core-promievent-1.8.2.tgz#e670d6b4453632e6ecfd9ad82da44f77ac1585c9" + resolved "https://registry.npmjs.org/web3-core-promievent/-/web3-core-promievent-1.8.2.tgz" integrity sha512-nvkJWDVgoOSsolJldN33tKW6bKKRJX3MCPDYMwP5SUFOA/mCzDEoI88N0JFofDTXkh1k7gOqp1pvwi9heuaxGg== dependencies: eventemitter3 "4.0.4" web3-core-requestmanager@1.10.0: version "1.10.0" - resolved "https://registry.yarnpkg.com/web3-core-requestmanager/-/web3-core-requestmanager-1.10.0.tgz#4b34f6e05837e67c70ff6f6993652afc0d54c340" + resolved "https://registry.npmjs.org/web3-core-requestmanager/-/web3-core-requestmanager-1.10.0.tgz" integrity sha512-3z/JKE++Os62APml4dvBM+GAuId4h3L9ckUrj7ebEtS2AR0ixyQPbrBodgL91Sv7j7cQ3Y+hllaluqjguxvSaQ== dependencies: util "^0.12.5" @@ -26021,7 +26470,7 @@ web3-core-requestmanager@1.10.0: web3-core-requestmanager@1.2.2: version "1.2.2" - resolved "https://registry.yarnpkg.com/web3-core-requestmanager/-/web3-core-requestmanager-1.2.2.tgz#667ba9ac724c9c76fa8965ae8a3c61f66e68d8d6" + resolved "https://registry.npmjs.org/web3-core-requestmanager/-/web3-core-requestmanager-1.2.2.tgz" integrity sha512-a+gSbiBRHtHvkp78U2bsntMGYGF2eCb6219aMufuZWeAZGXJ63Wc2321PCbA8hF9cQrZI4EoZ4kVLRI4OF15Hw== dependencies: underscore "1.9.1" @@ -26032,7 +26481,7 @@ web3-core-requestmanager@1.2.2: web3-core-requestmanager@1.3.6: version "1.3.6" - resolved "https://registry.yarnpkg.com/web3-core-requestmanager/-/web3-core-requestmanager-1.3.6.tgz#4fea269fe913fd4fca464b4f7c65cb94857b5b2a" + resolved "https://registry.npmjs.org/web3-core-requestmanager/-/web3-core-requestmanager-1.3.6.tgz" integrity sha512-2rIaeuqeo7QN1Eex7aXP0ZqeteJEPWXYFS/M3r3LXMiV8R4STQBKE+//dnHJXoo2ctzEB5cgd+7NaJM8S3gPyA== dependencies: underscore "1.12.1" @@ -26044,7 +26493,7 @@ web3-core-requestmanager@1.3.6: web3-core-requestmanager@1.8.1: version "1.8.1" - resolved "https://registry.yarnpkg.com/web3-core-requestmanager/-/web3-core-requestmanager-1.8.1.tgz#272ffa55b7b568ecbc8e4a257ca080355c31c60e" + resolved "https://registry.npmjs.org/web3-core-requestmanager/-/web3-core-requestmanager-1.8.1.tgz" integrity sha512-x+VC2YPPwZ1khvqA6TA69LvfFCOZXsoUVOxmTx/vIN22PrY9KzKhxcE7pBSiGhmab1jtmRYXUbcQSVpAXqL8cw== dependencies: util "^0.12.0" @@ -26055,7 +26504,7 @@ web3-core-requestmanager@1.8.1: web3-core-requestmanager@1.8.2: version "1.8.2" - resolved "https://registry.yarnpkg.com/web3-core-requestmanager/-/web3-core-requestmanager-1.8.2.tgz#dda95e83ca4808949612a41e54ecea557f78ef26" + resolved "https://registry.npmjs.org/web3-core-requestmanager/-/web3-core-requestmanager-1.8.2.tgz" integrity sha512-p1d090RYs5Mu7DK1yyc3GCBVZB/03rBtFhYFoS2EruGzOWs/5Q0grgtpwS/DScdRAm8wB8mYEBhY/RKJWF6B2g== dependencies: util "^0.12.5" @@ -26066,7 +26515,7 @@ web3-core-requestmanager@1.8.2: web3-core-subscriptions@1.0.0-beta.55: version "1.0.0-beta.55" - resolved "https://registry.yarnpkg.com/web3-core-subscriptions/-/web3-core-subscriptions-1.0.0-beta.55.tgz#105902c13db53466fc17d07a981ad3d41c700f76" + resolved "https://registry.npmjs.org/web3-core-subscriptions/-/web3-core-subscriptions-1.0.0-beta.55.tgz" integrity sha512-pb3oQbUzK7IoyXwag8TYInQddg0rr7BHxKc+Pbs/92hVNQ5ps4iGMVJKezdrjlQ1IJEEUiDIglXl4LZ1hIuMkw== dependencies: "@babel/runtime" "^7.3.1" @@ -26075,7 +26524,7 @@ web3-core-subscriptions@1.0.0-beta.55: web3-core-subscriptions@1.10.0: version "1.10.0" - resolved "https://registry.yarnpkg.com/web3-core-subscriptions/-/web3-core-subscriptions-1.10.0.tgz#b534592ee1611788fc0cb0b95963b9b9b6eacb7c" + resolved "https://registry.npmjs.org/web3-core-subscriptions/-/web3-core-subscriptions-1.10.0.tgz" integrity sha512-HGm1PbDqsxejI075gxBc5OSkwymilRWZufIy9zEpnWKNmfbuv5FfHgW1/chtJP6aP3Uq2vHkvTDl3smQBb8l+g== dependencies: eventemitter3 "4.0.4" @@ -26083,7 +26532,7 @@ web3-core-subscriptions@1.10.0: web3-core-subscriptions@1.2.2: version "1.2.2" - resolved "https://registry.yarnpkg.com/web3-core-subscriptions/-/web3-core-subscriptions-1.2.2.tgz#bf4ba23a653a003bdc3551649958cc0b080b068e" + resolved "https://registry.npmjs.org/web3-core-subscriptions/-/web3-core-subscriptions-1.2.2.tgz" integrity sha512-QbTgigNuT4eicAWWr7ahVpJyM8GbICsR1Ys9mJqzBEwpqS+RXTRVSkwZ2IsxO+iqv6liMNwGregbJLq4urMFcQ== dependencies: eventemitter3 "3.1.2" @@ -26092,7 +26541,7 @@ web3-core-subscriptions@1.2.2: web3-core-subscriptions@1.3.6: version "1.3.6" - resolved "https://registry.yarnpkg.com/web3-core-subscriptions/-/web3-core-subscriptions-1.3.6.tgz#ee24e7974d1d72ff6c992c599deba4ef9b308415" + resolved "https://registry.npmjs.org/web3-core-subscriptions/-/web3-core-subscriptions-1.3.6.tgz" integrity sha512-wi9Z9X5X75OKvxAg42GGIf81ttbNR2TxzkAsp1g+nnp5K8mBwgZvXrIsDuj7Z7gx72Y45mWJADCWjk/2vqNu8g== dependencies: eventemitter3 "4.0.4" @@ -26101,7 +26550,7 @@ web3-core-subscriptions@1.3.6: web3-core-subscriptions@1.8.1: version "1.8.1" - resolved "https://registry.yarnpkg.com/web3-core-subscriptions/-/web3-core-subscriptions-1.8.1.tgz#f5ae1380e92746eadfab6475b8a70ef5a1be6bbf" + resolved "https://registry.npmjs.org/web3-core-subscriptions/-/web3-core-subscriptions-1.8.1.tgz" integrity sha512-bmCMq5OeA3E2vZUh8Js1HcJbhwtsE+yeMqGC4oIZB3XsL5SLqyKLB/pU+qUYqQ9o4GdcrFTDPhPg1bgvf7p1Pw== dependencies: eventemitter3 "4.0.4" @@ -26109,7 +26558,7 @@ web3-core-subscriptions@1.8.1: web3-core-subscriptions@1.8.2: version "1.8.2" - resolved "https://registry.yarnpkg.com/web3-core-subscriptions/-/web3-core-subscriptions-1.8.2.tgz#0c8bd49439d83c6f0a03c70f00b24a915a70a5ed" + resolved "https://registry.npmjs.org/web3-core-subscriptions/-/web3-core-subscriptions-1.8.2.tgz" integrity sha512-vXQogHDmAIQcKpXvGiMddBUeP9lnKgYF64+yQJhPNE5PnWr1sAibXuIPV7mIPihpFr/n/DORRj6Wh1pUv9zaTw== dependencies: eventemitter3 "4.0.4" @@ -26117,7 +26566,7 @@ web3-core-subscriptions@1.8.2: web3-core@1.0.0-beta.55: version "1.0.0-beta.55" - resolved "https://registry.yarnpkg.com/web3-core/-/web3-core-1.0.0-beta.55.tgz#26b9abbf1bc1837c9cc90f06ecbc4ed714f89b53" + resolved "https://registry.npmjs.org/web3-core/-/web3-core-1.0.0-beta.55.tgz" integrity sha512-AMMp7TLEtE7u8IJAu/THrRhBTZyZzeo7Y6GiWYNwb5+KStC9hIGLr9cI1KX9R6ZioTOLRHrqT7awDhnJ1ku2mg== dependencies: "@babel/runtime" "^7.3.1" @@ -26130,7 +26579,7 @@ web3-core@1.0.0-beta.55: web3-core@1.10.0: version "1.10.0" - resolved "https://registry.yarnpkg.com/web3-core/-/web3-core-1.10.0.tgz#9aa07c5deb478cf356c5d3b5b35afafa5fa8e633" + resolved "https://registry.npmjs.org/web3-core/-/web3-core-1.10.0.tgz" integrity sha512-fWySwqy2hn3TL89w5TM8wXF1Z2Q6frQTKHWmP0ppRQorEK8NcHJRfeMiv/mQlSKoTS1F6n/nv2uyZsixFycjYQ== dependencies: "@types/bn.js" "^5.1.1" @@ -26143,7 +26592,7 @@ web3-core@1.10.0: web3-core@1.2.2: version "1.2.2" - resolved "https://registry.yarnpkg.com/web3-core/-/web3-core-1.2.2.tgz#334b99c8222ef9cfd0339e27352f0b58ea789a2f" + resolved "https://registry.npmjs.org/web3-core/-/web3-core-1.2.2.tgz" integrity sha512-miHAX3qUgxV+KYfaOY93Hlc3kLW2j5fH8FJy6kSxAv+d4d5aH0wwrU2IIoJylQdT+FeenQ38sgsCnFu9iZ1hCQ== dependencies: "@types/bn.js" "^4.11.4" @@ -26155,7 +26604,7 @@ web3-core@1.2.2: web3-core@1.3.6: version "1.3.6" - resolved "https://registry.yarnpkg.com/web3-core/-/web3-core-1.3.6.tgz#a6a761d1ff2f3ee462b8dab679229d2f8e267504" + resolved "https://registry.npmjs.org/web3-core/-/web3-core-1.3.6.tgz" integrity sha512-gkLDM4T1Sc0T+HZIwxrNrwPg0IfWI0oABSglP2X5ZbBAYVUeEATA0o92LWV8BeF+okvKXLK1Fek/p6axwM/h3Q== dependencies: "@types/bn.js" "^4.11.5" @@ -26168,7 +26617,7 @@ web3-core@1.3.6: web3-core@1.8.1: version "1.8.1" - resolved "https://registry.yarnpkg.com/web3-core/-/web3-core-1.8.1.tgz#050b1c408d1f9b7ae539e90f7f7d1b7a7d10578b" + resolved "https://registry.npmjs.org/web3-core/-/web3-core-1.8.1.tgz" integrity sha512-LbRZlJH2N6nS3n3Eo9Y++25IvzMY7WvYnp4NM/Ajhh97dAdglYs6rToQ2DbL2RLvTYmTew4O/y9WmOk4nq9COw== dependencies: "@types/bn.js" "^5.1.0" @@ -26181,7 +26630,7 @@ web3-core@1.8.1: web3-core@1.8.2: version "1.8.2" - resolved "https://registry.yarnpkg.com/web3-core/-/web3-core-1.8.2.tgz#333e93d7872b1a36efe758ed8b89a7acbdd962c2" + resolved "https://registry.npmjs.org/web3-core/-/web3-core-1.8.2.tgz" integrity sha512-DJTVEAYcNqxkqruJE+Rxp3CIv0y5AZMwPHQmOkz/cz+MM75SIzMTc0AUdXzGyTS8xMF8h3YWMQGgGEy8SBf1PQ== dependencies: "@types/bn.js" "^5.1.0" @@ -26192,9 +26641,31 @@ web3-core@1.8.2: web3-core-requestmanager "1.8.2" web3-utils "1.8.2" -web3-eth-abi@1.10.0: +web3-core@^4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/web3-core/-/web3-core-4.1.1.tgz#01bd865d25ef1d3a718e222df393fdf5b527469c" + integrity sha512-wzS01bC+ihf5DJ6mz2fz4d5yxnPEM5AYQIRihO8kUt3dil+X4V07CHks23wLbb9yk8U9+3a1Iod207WGF872rA== + dependencies: + web3-errors "^1.1.1" + web3-eth-iban "^4.0.5" + web3-providers-http "^4.0.5" + web3-providers-ws "^4.0.5" + web3-types "^1.1.1" + web3-utils "^4.0.5" + web3-validator "^2.0.1" + optionalDependencies: + web3-providers-ipc "^4.0.5" + +web3-errors@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/web3-errors/-/web3-errors-1.1.1.tgz#1a73b84f4f8315945a1eb0ae0ab1f16bf5fac28a" + integrity sha512-9IEhcympCJEK3Nmkz2oE/daKnOh+3CxHceuVWWRkHWKUfuIiJQgXAv9wRkPGk63JJTP/R9jtGmP+IbkScKoTBA== + dependencies: + web3-types "^1.1.1" + +web3-eth-abi@1.10.0, web3-eth-abi@^1.0.0-beta.24: version "1.10.0" - resolved "https://registry.yarnpkg.com/web3-eth-abi/-/web3-eth-abi-1.10.0.tgz#53a7a2c95a571e205e27fd9e664df4919483cce1" + resolved "https://registry.npmjs.org/web3-eth-abi/-/web3-eth-abi-1.10.0.tgz" integrity sha512-cwS+qRBWpJ43aI9L3JS88QYPfFcSJJ3XapxOQ4j40v6mk7ATpA8CVK1vGTzpihNlOfMVRBkR95oAj7oL6aiDOg== dependencies: "@ethersproject/abi" "^5.6.3" @@ -26202,7 +26673,7 @@ web3-eth-abi@1.10.0: web3-eth-abi@1.2.2: version "1.2.2" - resolved "https://registry.yarnpkg.com/web3-eth-abi/-/web3-eth-abi-1.2.2.tgz#d5616d88a90020f894763423a9769f2da11fe37a" + resolved "https://registry.npmjs.org/web3-eth-abi/-/web3-eth-abi-1.2.2.tgz" integrity sha512-Yn/ZMgoOLxhTVxIYtPJ0eS6pnAnkTAaJgUJh1JhZS4ekzgswMfEYXOwpMaD5eiqPJLpuxmZFnXnBZlnQ1JMXsw== dependencies: ethers "4.0.0-beta.3" @@ -26211,7 +26682,7 @@ web3-eth-abi@1.2.2: web3-eth-abi@1.3.6: version "1.3.6" - resolved "https://registry.yarnpkg.com/web3-eth-abi/-/web3-eth-abi-1.3.6.tgz#4272ca48d817aa651bbf97b269f5ff10abc2b8a9" + resolved "https://registry.npmjs.org/web3-eth-abi/-/web3-eth-abi-1.3.6.tgz" integrity sha512-Or5cRnZu6WzgScpmbkvC6bfNxR26hqiKK4i8sMPFeTUABQcb/FU3pBj7huBLYbp9dH+P5W79D2MqwbWwjj9DoQ== dependencies: "@ethersproject/abi" "5.0.7" @@ -26220,23 +26691,34 @@ web3-eth-abi@1.3.6: web3-eth-abi@1.8.1: version "1.8.1" - resolved "https://registry.yarnpkg.com/web3-eth-abi/-/web3-eth-abi-1.8.1.tgz#47455d6513217c4b0866fea6f97b1c4afa0b6535" + resolved "https://registry.npmjs.org/web3-eth-abi/-/web3-eth-abi-1.8.1.tgz" integrity sha512-0mZvCRTIG0UhDhJwNQJgJxu4b4DyIpuMA0GTfqxqeuqzX4Q/ZvmoNurw0ExTfXaGPP82UUmmdkRi6FdZOx+C6w== dependencies: "@ethersproject/abi" "^5.6.3" web3-utils "1.8.1" -web3-eth-abi@1.8.2, web3-eth-abi@^1.0.0-beta.24: +web3-eth-abi@1.8.2: version "1.8.2" - resolved "https://registry.yarnpkg.com/web3-eth-abi/-/web3-eth-abi-1.8.2.tgz#16e1e9be40e2527404f041a4745111211488f31a" + resolved "https://registry.npmjs.org/web3-eth-abi/-/web3-eth-abi-1.8.2.tgz" integrity sha512-Om9g3kaRNjqiNPAgKwGT16y+ZwtBzRe4ZJFGjLiSs6v5I7TPNF+rRMWuKnR6jq0azQZDj6rblvKFMA49/k48Og== dependencies: "@ethersproject/abi" "^5.6.3" web3-utils "1.8.2" +web3-eth-abi@^4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/web3-eth-abi/-/web3-eth-abi-4.1.1.tgz#08a2583cc3ea8fb77dfa33e5468dec24a9852fec" + integrity sha512-dOLwJ7Ua98WMXuxk7anYfSIqkuCdUvrvU/Um/OWPb6Gw10QciKUWXMIiRobNpWkpS8R77nDtecmQQ1OnTnLaNA== + dependencies: + "@ethersproject/abi" "^5.7.0" + "@ethersproject/bignumber" "^5.7.0" + web3-errors "^1.1.1" + web3-types "^1.1.1" + web3-utils "^4.0.5" + web3-eth-accounts@1.10.0: version "1.10.0" - resolved "https://registry.yarnpkg.com/web3-eth-accounts/-/web3-eth-accounts-1.10.0.tgz#2942beca0a4291455f32cf09de10457a19a48117" + resolved "https://registry.npmjs.org/web3-eth-accounts/-/web3-eth-accounts-1.10.0.tgz" integrity sha512-wiq39Uc3mOI8rw24wE2n15hboLE0E9BsQLdlmsL4Zua9diDS6B5abXG0XhFcoNsXIGMWXVZz4TOq3u4EdpXF/Q== dependencies: "@ethereumjs/common" "2.5.0" @@ -26252,7 +26734,7 @@ web3-eth-accounts@1.10.0: web3-eth-accounts@1.2.2: version "1.2.2" - resolved "https://registry.yarnpkg.com/web3-eth-accounts/-/web3-eth-accounts-1.2.2.tgz#c187e14bff6baa698ac352220290222dbfd332e5" + resolved "https://registry.npmjs.org/web3-eth-accounts/-/web3-eth-accounts-1.2.2.tgz" integrity sha512-KzHOEyXOEZ13ZOkWN3skZKqSo5f4Z1ogPFNn9uZbKCz+kSp+gCAEKxyfbOsB/JMAp5h7o7pb6eYsPCUBJmFFiA== dependencies: any-promise "1.3.0" @@ -26270,7 +26752,7 @@ web3-eth-accounts@1.2.2: web3-eth-accounts@1.3.6: version "1.3.6" - resolved "https://registry.yarnpkg.com/web3-eth-accounts/-/web3-eth-accounts-1.3.6.tgz#f9fcb50b28ee58090ab292a10d996155caa2b474" + resolved "https://registry.npmjs.org/web3-eth-accounts/-/web3-eth-accounts-1.3.6.tgz" integrity sha512-Ilr0hG6ONbCdSlVKffasCmNwftD5HsNpwyQASevocIQwHdTlvlwO0tb3oGYuajbKOaDzNTwXfz25bttAEoFCGA== dependencies: crypto-browserify "3.12.0" @@ -26287,7 +26769,7 @@ web3-eth-accounts@1.3.6: web3-eth-accounts@1.8.1: version "1.8.1" - resolved "https://registry.yarnpkg.com/web3-eth-accounts/-/web3-eth-accounts-1.8.1.tgz#1ce7387721f118aeb0376291e4d8bbe2ac323406" + resolved "https://registry.npmjs.org/web3-eth-accounts/-/web3-eth-accounts-1.8.1.tgz" integrity sha512-mgzxSYgN54/NsOFBO1Fq1KkXp1S5KlBvI/DlgvajU72rupoFMq6Cu6Yp9GUaZ/w2ij9PzEJuFJk174XwtfMCmg== dependencies: "@ethereumjs/common" "2.5.0" @@ -26304,7 +26786,7 @@ web3-eth-accounts@1.8.1: web3-eth-accounts@1.8.2: version "1.8.2" - resolved "https://registry.yarnpkg.com/web3-eth-accounts/-/web3-eth-accounts-1.8.2.tgz#b894f5d5158fcae429da42de75d96520d0712971" + resolved "https://registry.npmjs.org/web3-eth-accounts/-/web3-eth-accounts-1.8.2.tgz" integrity sha512-c367Ij63VCz9YdyjiHHWLFtN85l6QghgwMQH2B1eM/p9Y5lTlTX7t/Eg/8+f1yoIStXbk2w/PYM2lk+IkbqdLA== dependencies: "@ethereumjs/common" "2.5.0" @@ -26318,9 +26800,22 @@ web3-eth-accounts@1.8.2: web3-core-method "1.8.2" web3-utils "1.8.2" +web3-eth-accounts@^4.0.5: + version "4.0.5" + resolved "https://registry.yarnpkg.com/web3-eth-accounts/-/web3-eth-accounts-4.0.5.tgz#f6597fe6ca92769ccd994a3776079ed98d5465ca" + integrity sha512-cmaAH20zFe/7Xjga7EuRXL0UV4O894i6ElEXB9Cqd9fP/CBnhQYK/TYuU37xydHhs5WY+B0hKeaoTqxLaPWAYg== + dependencies: + "@ethereumjs/rlp" "^4.0.1" + crc-32 "^1.2.2" + ethereum-cryptography "^2.0.0" + web3-errors "^1.1.1" + web3-types "^1.1.1" + web3-utils "^4.0.5" + web3-validator "^2.0.1" + web3-eth-admin@1.0.0-beta.55: version "1.0.0-beta.55" - resolved "https://registry.yarnpkg.com/web3-eth-admin/-/web3-eth-admin-1.0.0-beta.55.tgz#dcbcc5be4e3a008ce367c2ac83432b9a711f39e9" + resolved "https://registry.npmjs.org/web3-eth-admin/-/web3-eth-admin-1.0.0-beta.55.tgz" integrity sha512-7IbnTsIJ5zx5K/Nw5f8u1cFj6qwgTAdr/1MlL2/V5gE8IsO2qsSjbPHDZEawbgfpCLGuoHpOnUDIrce/HOYHbw== dependencies: "@babel/runtime" "^7.3.1" @@ -26333,7 +26828,7 @@ web3-eth-admin@1.0.0-beta.55: web3-eth-contract@1.10.0: version "1.10.0" - resolved "https://registry.yarnpkg.com/web3-eth-contract/-/web3-eth-contract-1.10.0.tgz#8e68c7654576773ec3c91903f08e49d0242c503a" + resolved "https://registry.npmjs.org/web3-eth-contract/-/web3-eth-contract-1.10.0.tgz" integrity sha512-MIC5FOzP/+2evDksQQ/dpcXhSqa/2hFNytdl/x61IeWxhh6vlFeSjq0YVTAyIzdjwnL7nEmZpjfI6y6/Ufhy7w== dependencies: "@types/bn.js" "^5.1.1" @@ -26347,7 +26842,7 @@ web3-eth-contract@1.10.0: web3-eth-contract@1.2.2: version "1.2.2" - resolved "https://registry.yarnpkg.com/web3-eth-contract/-/web3-eth-contract-1.2.2.tgz#84e92714918a29e1028ee7718f0712536e14e9a1" + resolved "https://registry.npmjs.org/web3-eth-contract/-/web3-eth-contract-1.2.2.tgz" integrity sha512-EKT2yVFws3FEdotDQoNsXTYL798+ogJqR2//CaGwx3p0/RvQIgfzEwp8nbgA6dMxCsn9KOQi7OtklzpnJMkjtA== dependencies: "@types/bn.js" "^4.11.4" @@ -26362,7 +26857,7 @@ web3-eth-contract@1.2.2: web3-eth-contract@1.3.6: version "1.3.6" - resolved "https://registry.yarnpkg.com/web3-eth-contract/-/web3-eth-contract-1.3.6.tgz#cccf4d32dc56917fb6923e778498a9ba2a5ba866" + resolved "https://registry.npmjs.org/web3-eth-contract/-/web3-eth-contract-1.3.6.tgz" integrity sha512-8gDaRrLF2HCg+YEZN1ov0zN35vmtPnGf3h1DxmJQK5Wm2lRMLomz9rsWsuvig3UJMHqZAQKD7tOl3ocJocQsmA== dependencies: "@types/bn.js" "^4.11.5" @@ -26377,7 +26872,7 @@ web3-eth-contract@1.3.6: web3-eth-contract@1.8.1: version "1.8.1" - resolved "https://registry.yarnpkg.com/web3-eth-contract/-/web3-eth-contract-1.8.1.tgz#bdf3e33bbcb79a1b6144dffd6a0deefd2e459272" + resolved "https://registry.npmjs.org/web3-eth-contract/-/web3-eth-contract-1.8.1.tgz" integrity sha512-1wphnl+/xwCE2io44JKnN+ti3oa47BKRiVzvWd42icwRbcpFfRxH9QH+aQX3u8VZIISNH7dAkTWpGIIJgGFTmg== dependencies: "@types/bn.js" "^5.1.0" @@ -26391,7 +26886,7 @@ web3-eth-contract@1.8.1: web3-eth-contract@1.8.2: version "1.8.2" - resolved "https://registry.yarnpkg.com/web3-eth-contract/-/web3-eth-contract-1.8.2.tgz#5388b7130923d2b790c09a420391a81312a867fb" + resolved "https://registry.npmjs.org/web3-eth-contract/-/web3-eth-contract-1.8.2.tgz" integrity sha512-ID5A25tHTSBNwOPjiXSVzxruz006ULRIDbzWTYIFTp7NJ7vXu/kynKK2ag/ObuTqBpMbobP8nXcA9b5EDkIdQA== dependencies: "@types/bn.js" "^5.1.0" @@ -26403,9 +26898,22 @@ web3-eth-contract@1.8.2: web3-eth-abi "1.8.2" web3-utils "1.8.2" +web3-eth-contract@^4.0.5: + version "4.0.5" + resolved "https://registry.yarnpkg.com/web3-eth-contract/-/web3-eth-contract-4.0.5.tgz#ef18340f0272f6d5076d33985b317416850ad419" + integrity sha512-gS21liRDutWQX9i+Ru2Porzefx+7AumRvk+ZLR9wy8l9iLZxldvsvMdgbsyf9lA7UHOqPEhg/zoDyEc0N0hAVw== + dependencies: + web3-core "^4.1.1" + web3-errors "^1.1.1" + web3-eth "^4.1.1" + web3-eth-abi "^4.1.1" + web3-types "^1.1.1" + web3-utils "^4.0.5" + web3-validator "^2.0.1" + web3-eth-ens@1.10.0: version "1.10.0" - resolved "https://registry.yarnpkg.com/web3-eth-ens/-/web3-eth-ens-1.10.0.tgz#96a676524e0b580c87913f557a13ed810cf91cd9" + resolved "https://registry.npmjs.org/web3-eth-ens/-/web3-eth-ens-1.10.0.tgz" integrity sha512-3hpGgzX3qjgxNAmqdrC2YUQMTfnZbs4GeLEmy8aCWziVwogbuqQZ+Gzdfrym45eOZodk+lmXyLuAdqkNlvkc1g== dependencies: content-hash "^2.5.2" @@ -26419,7 +26927,7 @@ web3-eth-ens@1.10.0: web3-eth-ens@1.2.2: version "1.2.2" - resolved "https://registry.yarnpkg.com/web3-eth-ens/-/web3-eth-ens-1.2.2.tgz#0a4abed1d4cbdacbf5e1ab06e502d806d1192bc6" + resolved "https://registry.npmjs.org/web3-eth-ens/-/web3-eth-ens-1.2.2.tgz" integrity sha512-CFjkr2HnuyMoMFBoNUWojyguD4Ef+NkyovcnUc/iAb9GP4LHohKrODG4pl76R5u61TkJGobC2ij6TyibtsyVYg== dependencies: eth-ens-namehash "2.0.8" @@ -26433,7 +26941,7 @@ web3-eth-ens@1.2.2: web3-eth-ens@1.3.6: version "1.3.6" - resolved "https://registry.yarnpkg.com/web3-eth-ens/-/web3-eth-ens-1.3.6.tgz#0d28c5d4ea7b4462ef6c077545a77956a6cdf175" + resolved "https://registry.npmjs.org/web3-eth-ens/-/web3-eth-ens-1.3.6.tgz" integrity sha512-n27HNj7lpSkRxTgSx+Zo7cmKAgyg2ElFilaFlUu/X2CNH23lXfcPm2bWssivH9z0ndhg0OyR4AYFZqPaqDHkJA== dependencies: content-hash "^2.5.2" @@ -26448,7 +26956,7 @@ web3-eth-ens@1.3.6: web3-eth-ens@1.8.1: version "1.8.1" - resolved "https://registry.yarnpkg.com/web3-eth-ens/-/web3-eth-ens-1.8.1.tgz#e78a9651fea8282abe8565b001819e2d645e5929" + resolved "https://registry.npmjs.org/web3-eth-ens/-/web3-eth-ens-1.8.1.tgz" integrity sha512-FT8xTI9uN8RxeBQa/W8pLa2aoFh4+EE34w7W2271LICKzla1dtLyb6XSdn48vsUcPmhWsTVk9mO9RTU0l4LGQQ== dependencies: content-hash "^2.5.2" @@ -26462,7 +26970,7 @@ web3-eth-ens@1.8.1: web3-eth-ens@1.8.2: version "1.8.2" - resolved "https://registry.yarnpkg.com/web3-eth-ens/-/web3-eth-ens-1.8.2.tgz#0a086ad4d919102e28b9fd3036df246add9df22a" + resolved "https://registry.npmjs.org/web3-eth-ens/-/web3-eth-ens-1.8.2.tgz" integrity sha512-PWph7C/CnqdWuu1+SH4U4zdrK4t2HNt0I4XzPYFdv9ugE8EuojselioPQXsVGvjql+Nt3jDLvQvggPqlMbvwRw== dependencies: content-hash "^2.5.2" @@ -26474,9 +26982,24 @@ web3-eth-ens@1.8.2: web3-eth-contract "1.8.2" web3-utils "1.8.2" +web3-eth-ens@^4.0.5: + version "4.0.5" + resolved "https://registry.yarnpkg.com/web3-eth-ens/-/web3-eth-ens-4.0.5.tgz#3ad8e6ba9e6a7a3d2855bce6e4d70fe5b96769c4" + integrity sha512-PBTCk7h3NlSKP9XWmUJbpTJfMK3IybMAjn+uKrvSbeP50/xaZ73s94nI0eaRmI2FxlSQwTsd7apxXzrE07iKJw== + dependencies: + "@adraffy/ens-normalize" "^1.8.8" + web3-core "^4.1.1" + web3-errors "^1.1.1" + web3-eth "^4.1.1" + web3-eth-contract "^4.0.5" + web3-net "^4.0.5" + web3-types "^1.1.1" + web3-utils "^4.0.5" + web3-validator "^2.0.1" + web3-eth-iban@1.0.0-beta.55: version "1.0.0-beta.55" - resolved "https://registry.yarnpkg.com/web3-eth-iban/-/web3-eth-iban-1.0.0-beta.55.tgz#15146a69de21addc99e7dbfb2920555b1e729637" + resolved "https://registry.npmjs.org/web3-eth-iban/-/web3-eth-iban-1.0.0-beta.55.tgz" integrity sha512-a2Fxsb5Mssa+jiXgjUdIzJipE0175IcQXJbZLpKft2+zeSJWNTbaa3PQD2vPPpIM4W789q06N+f9Zc0Fyls+1g== dependencies: "@babel/runtime" "^7.3.1" @@ -26485,7 +27008,7 @@ web3-eth-iban@1.0.0-beta.55: web3-eth-iban@1.10.0: version "1.10.0" - resolved "https://registry.yarnpkg.com/web3-eth-iban/-/web3-eth-iban-1.10.0.tgz#5a46646401965b0f09a4f58e7248c8a8cd22538a" + resolved "https://registry.npmjs.org/web3-eth-iban/-/web3-eth-iban-1.10.0.tgz" integrity sha512-0l+SP3IGhInw7Q20LY3IVafYEuufo4Dn75jAHT7c2aDJsIolvf2Lc6ugHkBajlwUneGfbRQs/ccYPQ9JeMUbrg== dependencies: bn.js "^5.2.1" @@ -26493,7 +27016,7 @@ web3-eth-iban@1.10.0: web3-eth-iban@1.2.2: version "1.2.2" - resolved "https://registry.yarnpkg.com/web3-eth-iban/-/web3-eth-iban-1.2.2.tgz#76bec73bad214df7c4192388979a59fc98b96c5a" + resolved "https://registry.npmjs.org/web3-eth-iban/-/web3-eth-iban-1.2.2.tgz" integrity sha512-gxKXBoUhaTFHr0vJB/5sd4i8ejF/7gIsbM/VvemHT3tF5smnmY6hcwSMmn7sl5Gs+83XVb/BngnnGkf+I/rsrQ== dependencies: bn.js "4.11.8" @@ -26501,7 +27024,7 @@ web3-eth-iban@1.2.2: web3-eth-iban@1.3.6: version "1.3.6" - resolved "https://registry.yarnpkg.com/web3-eth-iban/-/web3-eth-iban-1.3.6.tgz#0d6ba21fe78f190af8919e9cd5453882457209e0" + resolved "https://registry.npmjs.org/web3-eth-iban/-/web3-eth-iban-1.3.6.tgz" integrity sha512-nfMQaaLA/zsg5W4Oy/EJQbs8rSs1vBAX6b/35xzjYoutXlpHMQadujDx2RerTKhSHqFXSJeQAfE+2f6mdhYkRQ== dependencies: bn.js "^4.11.9" @@ -26509,7 +27032,7 @@ web3-eth-iban@1.3.6: web3-eth-iban@1.8.1: version "1.8.1" - resolved "https://registry.yarnpkg.com/web3-eth-iban/-/web3-eth-iban-1.8.1.tgz#c6484e5d68ca644aa78431301e7acd5df24598d1" + resolved "https://registry.npmjs.org/web3-eth-iban/-/web3-eth-iban-1.8.1.tgz" integrity sha512-DomoQBfvIdtM08RyMGkMVBOH0vpOIxSSQ+jukWk/EkMLGMWJtXw/K2c2uHAeq3L/VPWNB7zXV2DUEGV/lNE2Dg== dependencies: bn.js "^5.2.1" @@ -26517,15 +27040,25 @@ web3-eth-iban@1.8.1: web3-eth-iban@1.8.2: version "1.8.2" - resolved "https://registry.yarnpkg.com/web3-eth-iban/-/web3-eth-iban-1.8.2.tgz#5cb3022234b13986f086353b53f0379a881feeaf" + resolved "https://registry.npmjs.org/web3-eth-iban/-/web3-eth-iban-1.8.2.tgz" integrity sha512-h3vNblDWkWMuYx93Q27TAJz6lhzpP93EiC3+45D6xoz983p6si773vntoQ+H+5aZhwglBtoiBzdh7PSSOnP/xQ== dependencies: bn.js "^5.2.1" web3-utils "1.8.2" +web3-eth-iban@^4.0.5: + version "4.0.5" + resolved "https://registry.yarnpkg.com/web3-eth-iban/-/web3-eth-iban-4.0.5.tgz#665e4904d5609b4b6c1656dc91687ad87be04e78" + integrity sha512-rAH4Dsk0G90W8UqQFomGNjLfxKhBJwkSnkjdG7TUCRhoFvqvrsW1YL+4a+UoODRyJ9BCdaRR71jrymmy4UTDHA== + dependencies: + web3-errors "^1.1.1" + web3-types "^1.1.1" + web3-utils "^4.0.5" + web3-validator "^2.0.1" + web3-eth-personal@1.10.0: version "1.10.0" - resolved "https://registry.yarnpkg.com/web3-eth-personal/-/web3-eth-personal-1.10.0.tgz#94d525f7a29050a0c2a12032df150ac5ea633071" + resolved "https://registry.npmjs.org/web3-eth-personal/-/web3-eth-personal-1.10.0.tgz" integrity sha512-anseKn98w/d703eWq52uNuZi7GhQeVjTC5/svrBWEKob0WZ5kPdo+EZoFN0sp5a5ubbrk/E0xSl1/M5yORMtpg== dependencies: "@types/node" "^12.12.6" @@ -26537,7 +27070,7 @@ web3-eth-personal@1.10.0: web3-eth-personal@1.2.2: version "1.2.2" - resolved "https://registry.yarnpkg.com/web3-eth-personal/-/web3-eth-personal-1.2.2.tgz#eee1c86a8132fa16b5e34c6d421ca92e684f0be6" + resolved "https://registry.npmjs.org/web3-eth-personal/-/web3-eth-personal-1.2.2.tgz" integrity sha512-4w+GLvTlFqW3+q4xDUXvCEMU7kRZ+xm/iJC8gm1Li1nXxwwFbs+Y+KBK6ZYtoN1qqAnHR+plYpIoVo27ixI5Rg== dependencies: "@types/node" "^12.6.1" @@ -26549,7 +27082,7 @@ web3-eth-personal@1.2.2: web3-eth-personal@1.3.6: version "1.3.6" - resolved "https://registry.yarnpkg.com/web3-eth-personal/-/web3-eth-personal-1.3.6.tgz#226137916754c498f0284f22c55924c87a2efcf0" + resolved "https://registry.npmjs.org/web3-eth-personal/-/web3-eth-personal-1.3.6.tgz" integrity sha512-pOHU0+/h1RFRYoh1ehYBehRbcKWP4OSzd4F7mDljhHngv6W8ewMHrAN8O1ol9uysN2MuCdRE19qkRg5eNgvzFQ== dependencies: "@types/node" "^12.12.6" @@ -26561,7 +27094,7 @@ web3-eth-personal@1.3.6: web3-eth-personal@1.8.1: version "1.8.1" - resolved "https://registry.yarnpkg.com/web3-eth-personal/-/web3-eth-personal-1.8.1.tgz#00b5ff1898b62044d25ed5fddd8486168d4827cf" + resolved "https://registry.npmjs.org/web3-eth-personal/-/web3-eth-personal-1.8.1.tgz" integrity sha512-myIYMvj7SDIoV9vE5BkVdon3pya1WinaXItugoii2VoTcQNPOtBxmYVH+XS5ErzCJlnxzphpQrkywyY64bbbCA== dependencies: "@types/node" "^12.12.6" @@ -26573,7 +27106,7 @@ web3-eth-personal@1.8.1: web3-eth-personal@1.8.2: version "1.8.2" - resolved "https://registry.yarnpkg.com/web3-eth-personal/-/web3-eth-personal-1.8.2.tgz#3526c1ebaa4e7bf3a0a8ec77e34f067cc9a750b2" + resolved "https://registry.npmjs.org/web3-eth-personal/-/web3-eth-personal-1.8.2.tgz" integrity sha512-Vg4HfwCr7doiUF/RC+Jz0wT4+cYaXcOWMAW2AHIjHX6Z7Xwa8nrURIeQgeEE62qcEHAzajyAdB1u6bJyTfuCXw== dependencies: "@types/node" "^12.12.6" @@ -26583,9 +27116,21 @@ web3-eth-personal@1.8.2: web3-net "1.8.2" web3-utils "1.8.2" +web3-eth-personal@^4.0.5: + version "4.0.5" + resolved "https://registry.yarnpkg.com/web3-eth-personal/-/web3-eth-personal-4.0.5.tgz#28540607280b6b6143c422d786d3ecea59416e1d" + integrity sha512-cypChpAaljYtd1fOfjvhDvty7SBdUvwz5hSimwb+81IJ4MtWc7Jdbn1Ka/g0ZxwoAm46OmeV0yHef7+QyfbpsQ== + dependencies: + web3-core "^4.1.1" + web3-eth "^4.1.1" + web3-rpc-methods "^1.1.1" + web3-types "^1.1.1" + web3-utils "^4.0.5" + web3-validator "^2.0.1" + web3-eth@1.10.0: version "1.10.0" - resolved "https://registry.yarnpkg.com/web3-eth/-/web3-eth-1.10.0.tgz#38b905e2759697c9624ab080cfcf4e6c60b3a6cf" + resolved "https://registry.npmjs.org/web3-eth/-/web3-eth-1.10.0.tgz" integrity sha512-Z5vT6slNMLPKuwRyKGbqeGYC87OAy8bOblaqRTgg94CXcn/mmqU7iPIlG4506YdcdK3x6cfEDG7B6w+jRxypKA== dependencies: web3-core "1.10.0" @@ -26603,7 +27148,7 @@ web3-eth@1.10.0: web3-eth@1.2.2: version "1.2.2" - resolved "https://registry.yarnpkg.com/web3-eth/-/web3-eth-1.2.2.tgz#65a1564634a23b990efd1655bf94ad513904286c" + resolved "https://registry.npmjs.org/web3-eth/-/web3-eth-1.2.2.tgz" integrity sha512-UXpC74mBQvZzd4b+baD4Ocp7g+BlwxhBHumy9seyE/LMIcMlePXwCKzxve9yReNpjaU16Mmyya6ZYlyiKKV8UA== dependencies: underscore "1.9.1" @@ -26622,7 +27167,7 @@ web3-eth@1.2.2: web3-eth@1.3.6: version "1.3.6" - resolved "https://registry.yarnpkg.com/web3-eth/-/web3-eth-1.3.6.tgz#2c650893d540a7a0eb1365dd5b2dca24ac919b7c" + resolved "https://registry.npmjs.org/web3-eth/-/web3-eth-1.3.6.tgz" integrity sha512-9+rnywRRpyX3C4hfsAQXPQh6vHh9XzQkgLxo3gyeXfbhbShUoq2gFVuy42vsRs//6JlsKdyZS7Z3hHPHz2wreA== dependencies: underscore "1.12.1" @@ -26641,7 +27186,7 @@ web3-eth@1.3.6: web3-eth@1.8.1: version "1.8.1" - resolved "https://registry.yarnpkg.com/web3-eth/-/web3-eth-1.8.1.tgz#395f6cd56edaac5dbb23e8cec9886c3fd32c430e" + resolved "https://registry.npmjs.org/web3-eth/-/web3-eth-1.8.1.tgz" integrity sha512-LgyzbhFqiFRd8M8sBXoFN4ztzOnkeckl3H/9lH5ek7AdoRMhBg7tYpYRP3E5qkhd/q+yiZmcUgy1AF6NHrC1wg== dependencies: web3-core "1.8.1" @@ -26659,7 +27204,7 @@ web3-eth@1.8.1: web3-eth@1.8.2: version "1.8.2" - resolved "https://registry.yarnpkg.com/web3-eth/-/web3-eth-1.8.2.tgz#8562287ae1803c30eb54dc7d832092e5739ce06a" + resolved "https://registry.npmjs.org/web3-eth/-/web3-eth-1.8.2.tgz" integrity sha512-JoTiWWc4F4TInpbvDUGb0WgDYJsFhuIjJlinc5ByjWD88Gvh+GKLsRjjFdbqe5YtwIGT4NymwoC5LQd1K6u/QQ== dependencies: web3-core "1.8.2" @@ -26675,9 +27220,26 @@ web3-eth@1.8.2: web3-net "1.8.2" web3-utils "1.8.2" +web3-eth@^4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/web3-eth/-/web3-eth-4.1.1.tgz#25cdc2de58d07ba0b79082c57b75a4f29422a1ba" + integrity sha512-0lftXINbeEOiYhHCWIKgeAOPnjoeHR8DTWLOjURDoz5CKbTj2wfcRQvuL6tUfvvVmrGWHEfIOncM30jhjlTxYQ== + dependencies: + setimmediate "^1.0.5" + web3-core "^4.1.1" + web3-errors "^1.1.1" + web3-eth-abi "^4.1.1" + web3-eth-accounts "^4.0.5" + web3-net "^4.0.5" + web3-providers-ws "^4.0.5" + web3-rpc-methods "^1.1.1" + web3-types "^1.1.1" + web3-utils "^4.0.5" + web3-validator "^2.0.1" + web3-net@1.0.0-beta.55: version "1.0.0-beta.55" - resolved "https://registry.yarnpkg.com/web3-net/-/web3-net-1.0.0-beta.55.tgz#daf24323df16a890a0bac6c6eda48b6e8c7e96ef" + resolved "https://registry.npmjs.org/web3-net/-/web3-net-1.0.0-beta.55.tgz" integrity sha512-do2WY8+/GArJSWX7k/zZ7nBnV9Y3n6LhPYkwT3LeFqDzD515bKwlomaNC8hOaTc6UQyXIoPprYTK2FevL7jrZw== dependencies: "@babel/runtime" "^7.3.1" @@ -26690,7 +27252,7 @@ web3-net@1.0.0-beta.55: web3-net@1.10.0: version "1.10.0" - resolved "https://registry.yarnpkg.com/web3-net/-/web3-net-1.10.0.tgz#be53e7f5dafd55e7c9013d49c505448b92c9c97b" + resolved "https://registry.npmjs.org/web3-net/-/web3-net-1.10.0.tgz" integrity sha512-NLH/N3IshYWASpxk4/18Ge6n60GEvWBVeM8inx2dmZJVmRI6SJIlUxbL8jySgiTn3MMZlhbdvrGo8fpUW7a1GA== dependencies: web3-core "1.10.0" @@ -26699,7 +27261,7 @@ web3-net@1.10.0: web3-net@1.2.2: version "1.2.2" - resolved "https://registry.yarnpkg.com/web3-net/-/web3-net-1.2.2.tgz#5c3226ca72df7c591422440ce6f1203fd42ddad9" + resolved "https://registry.npmjs.org/web3-net/-/web3-net-1.2.2.tgz" integrity sha512-K07j2DXq0x4UOJgae65rWZKraOznhk8v5EGSTdFqASTx7vWE/m+NqBijBYGEsQY1lSMlVaAY9UEQlcXK5HzXTw== dependencies: web3-core "1.2.2" @@ -26708,7 +27270,7 @@ web3-net@1.2.2: web3-net@1.3.6: version "1.3.6" - resolved "https://registry.yarnpkg.com/web3-net/-/web3-net-1.3.6.tgz#a56492e2227475e38db29394f8bac305a2446e41" + resolved "https://registry.npmjs.org/web3-net/-/web3-net-1.3.6.tgz" integrity sha512-KhzU3wMQY/YYjyMiQzbaLPt2kut88Ncx2iqjy3nw28vRux3gVX0WOCk9EL/KVJBiAA/fK7VklTXvgy9dZnnipw== dependencies: web3-core "1.3.6" @@ -26717,7 +27279,7 @@ web3-net@1.3.6: web3-net@1.8.1: version "1.8.1" - resolved "https://registry.yarnpkg.com/web3-net/-/web3-net-1.8.1.tgz#2bed4d4b93166724129ec33d0e5dea98880285f4" + resolved "https://registry.npmjs.org/web3-net/-/web3-net-1.8.1.tgz" integrity sha512-LyEJAwogdFo0UAXZqoSJGFjopdt+kLw0P00FSZn2yszbgcoI7EwC+nXiOsEe12xz4LqpYLOtbR7+gxgiTVjjHQ== dependencies: web3-core "1.8.1" @@ -26726,16 +27288,26 @@ web3-net@1.8.1: web3-net@1.8.2: version "1.8.2" - resolved "https://registry.yarnpkg.com/web3-net/-/web3-net-1.8.2.tgz#97e1e0015fabc4cda31017813e98d0b5468dd04f" + resolved "https://registry.npmjs.org/web3-net/-/web3-net-1.8.2.tgz" integrity sha512-1itkDMGmbgb83Dg9nporFes9/fxsU7smJ3oRXlFkg4ZHn8YJyP1MSQFPJWWwSc+GrcCFt4O5IrUTvEkHqE3xag== dependencies: web3-core "1.8.2" web3-core-method "1.8.2" web3-utils "1.8.2" +web3-net@^4.0.5: + version "4.0.5" + resolved "https://registry.yarnpkg.com/web3-net/-/web3-net-4.0.5.tgz#706560633ad86cece4c513b2b00417dfdd947557" + integrity sha512-7Ir+Da5z3I3KxUn7nmg6NcXxWADYnQAkHX7Z4u4NE3yA+gNbiwPUjVpvSgzpNoDZj+EFovvP1AuOR5idHvyE0g== + dependencies: + web3-core "^4.1.1" + web3-rpc-methods "^1.1.1" + web3-types "^1.1.1" + web3-utils "^4.0.5" + web3-provider-engine@16.0.4: version "16.0.4" - resolved "https://registry.yarnpkg.com/web3-provider-engine/-/web3-provider-engine-16.0.4.tgz#a6565d85f3cfdc2da68f141af8728f90ad198f3f" + resolved "https://registry.npmjs.org/web3-provider-engine/-/web3-provider-engine-16.0.4.tgz" integrity sha512-f5WxJ9+LTF+4aJo4tCOXtQ6SDytBtLkhvV+qh/9gImHAuG9sMr6utY0mn/pro1Rx7O3hbztBxvQKjGMdOo8muw== dependencies: "@ethereumjs/tx" "^3.3.0" @@ -26762,7 +27334,7 @@ web3-provider-engine@16.0.4: web3-provider-engine@^16.0.5: version "16.0.5" - resolved "https://registry.yarnpkg.com/web3-provider-engine/-/web3-provider-engine-16.0.5.tgz#28a0eaf6c33bc60b3cb7de1b961bea6b5cf06b78" + resolved "https://registry.npmjs.org/web3-provider-engine/-/web3-provider-engine-16.0.5.tgz" integrity sha512-fvoMm8Tehf3efaqv9pSd2VKLjgzcYNsJaiby87nPrktlnIc9S3G/9udnuJQn32FAt19yzOvNk3B513jhBKOgEg== dependencies: "@ethereumjs/tx" "^3.3.0" @@ -26789,7 +27361,7 @@ web3-provider-engine@^16.0.5: web3-provider-engine@^8.4.0: version "8.6.1" - resolved "https://registry.yarnpkg.com/web3-provider-engine/-/web3-provider-engine-8.6.1.tgz#4d86e19e30caaf97df351511ec0f60136e5b30eb" + resolved "https://registry.npmjs.org/web3-provider-engine/-/web3-provider-engine-8.6.1.tgz" integrity sha512-atTQJ14QBvd5N+71DKZHKCjHqCXfYQEcisLJHsZwvPmU5F3oRMydBXFmPU3sySHXgxASbV7Q9eEQAaPy+7rcHA== dependencies: async "^2.1.2" @@ -26809,7 +27381,7 @@ web3-provider-engine@^8.4.0: web3-providers-http@1.10.0: version "1.10.0" - resolved "https://registry.yarnpkg.com/web3-providers-http/-/web3-providers-http-1.10.0.tgz#864fa48675e7918c9a4374e5f664b32c09d0151b" + resolved "https://registry.npmjs.org/web3-providers-http/-/web3-providers-http-1.10.0.tgz" integrity sha512-eNr965YB8a9mLiNrkjAWNAPXgmQWfpBfkkn7tpEFlghfww0u3I0tktMZiaToJVcL2+Xq+81cxbkpeWJ5XQDwOA== dependencies: abortcontroller-polyfill "^1.7.3" @@ -26819,7 +27391,7 @@ web3-providers-http@1.10.0: web3-providers-http@1.2.2: version "1.2.2" - resolved "https://registry.yarnpkg.com/web3-providers-http/-/web3-providers-http-1.2.2.tgz#155e55c1d69f4c5cc0b411ede40dea3d06720956" + resolved "https://registry.npmjs.org/web3-providers-http/-/web3-providers-http-1.2.2.tgz" integrity sha512-BNZ7Hguy3eBszsarH5gqr9SIZNvqk9eKwqwmGH1LQS1FL3NdoOn7tgPPdddrXec4fL94CwgNk4rCU+OjjZRNDg== dependencies: web3-core-helpers "1.2.2" @@ -26827,7 +27399,7 @@ web3-providers-http@1.2.2: web3-providers-http@1.3.6: version "1.3.6" - resolved "https://registry.yarnpkg.com/web3-providers-http/-/web3-providers-http-1.3.6.tgz#36e8724a7424d52827819d53fd75dbf31f5422c2" + resolved "https://registry.npmjs.org/web3-providers-http/-/web3-providers-http-1.3.6.tgz" integrity sha512-OQkT32O1A06dISIdazpGLveZcOXhEo5cEX6QyiSQkiPk/cjzDrXMw4SKZOGQbbS1+0Vjizm1Hrp7O8Vp2D1M5Q== dependencies: web3-core-helpers "1.3.6" @@ -26835,7 +27407,7 @@ web3-providers-http@1.3.6: web3-providers-http@1.8.1: version "1.8.1" - resolved "https://registry.yarnpkg.com/web3-providers-http/-/web3-providers-http-1.8.1.tgz#8aa89c11a9272f11ddb74b871273c92225faa28d" + resolved "https://registry.npmjs.org/web3-providers-http/-/web3-providers-http-1.8.1.tgz" integrity sha512-1Zyts4O9W/UNEPkp+jyL19Jc3D15S4yp8xuLTjVhcUEAlHo24NDWEKxtZGUuHk4HrKL2gp8OlsDbJ7MM+ESDgg== dependencies: abortcontroller-polyfill "^1.7.3" @@ -26845,7 +27417,7 @@ web3-providers-http@1.8.1: web3-providers-http@1.8.2: version "1.8.2" - resolved "https://registry.yarnpkg.com/web3-providers-http/-/web3-providers-http-1.8.2.tgz#fbda3a3bbc8db004af36e91bec35f80273b37885" + resolved "https://registry.npmjs.org/web3-providers-http/-/web3-providers-http-1.8.2.tgz" integrity sha512-2xY94IIEQd16+b+vIBF4IC1p7GVaz9q4EUFscvMUjtEq4ru4Atdzjs9GP+jmcoo49p70II0UV3bqQcz0TQfVyQ== dependencies: abortcontroller-polyfill "^1.7.3" @@ -26853,9 +27425,19 @@ web3-providers-http@1.8.2: es6-promise "^4.2.8" web3-core-helpers "1.8.2" +web3-providers-http@^4.0.5: + version "4.0.5" + resolved "https://registry.yarnpkg.com/web3-providers-http/-/web3-providers-http-4.0.5.tgz#abcc7aacffa9a4024ca913abfb836d4aadd9165b" + integrity sha512-JAY0GyLqRKbKw7m92EMg84otLU6N/NmYqepPid7B8XcPkGzhK6R/FsATyi+BGe2ecW9HRyCSz9SWllTjlKhRwQ== + dependencies: + cross-fetch "^3.1.5" + web3-errors "^1.1.1" + web3-types "^1.1.1" + web3-utils "^4.0.5" + web3-providers-ipc@1.10.0: version "1.10.0" - resolved "https://registry.yarnpkg.com/web3-providers-ipc/-/web3-providers-ipc-1.10.0.tgz#9747c7a6aee96a51488e32fa7c636c3460b39889" + resolved "https://registry.npmjs.org/web3-providers-ipc/-/web3-providers-ipc-1.10.0.tgz" integrity sha512-OfXG1aWN8L1OUqppshzq8YISkWrYHaATW9H8eh0p89TlWMc1KZOL9vttBuaBEi96D/n0eYDn2trzt22bqHWfXA== dependencies: oboe "2.1.5" @@ -26863,7 +27445,7 @@ web3-providers-ipc@1.10.0: web3-providers-ipc@1.2.2: version "1.2.2" - resolved "https://registry.yarnpkg.com/web3-providers-ipc/-/web3-providers-ipc-1.2.2.tgz#c6d165a12bc68674b4cdd543ea18aec79cafc2e8" + resolved "https://registry.npmjs.org/web3-providers-ipc/-/web3-providers-ipc-1.2.2.tgz" integrity sha512-t97w3zi5Kn/LEWGA6D9qxoO0LBOG+lK2FjlEdCwDQatffB/+vYrzZ/CLYVQSoyFZAlsDoBasVoYSWZK1n39aHA== dependencies: oboe "2.1.4" @@ -26872,7 +27454,7 @@ web3-providers-ipc@1.2.2: web3-providers-ipc@1.3.6: version "1.3.6" - resolved "https://registry.yarnpkg.com/web3-providers-ipc/-/web3-providers-ipc-1.3.6.tgz#cef8d12c1ebb47adce5ebf597f553c623362cb4a" + resolved "https://registry.npmjs.org/web3-providers-ipc/-/web3-providers-ipc-1.3.6.tgz" integrity sha512-+TVsSd2sSVvVgHG4s6FXwwYPPT91boKKcRuEFXqEfAbUC5t52XOgmyc2LNiD9LzPhed65FbV4LqICpeYGUvSwA== dependencies: oboe "2.1.5" @@ -26881,7 +27463,7 @@ web3-providers-ipc@1.3.6: web3-providers-ipc@1.8.1: version "1.8.1" - resolved "https://registry.yarnpkg.com/web3-providers-ipc/-/web3-providers-ipc-1.8.1.tgz#6128a3a3a824d06bf0efcfe86325401f8691a5ca" + resolved "https://registry.npmjs.org/web3-providers-ipc/-/web3-providers-ipc-1.8.1.tgz" integrity sha512-nw/W5nclvi+P2z2dYkLWReKLnocStflWqFl+qjtv0xn3MrUTyXMzSF0+61i77+16xFsTgzo4wS/NWIOVkR0EFA== dependencies: oboe "2.1.5" @@ -26889,15 +27471,24 @@ web3-providers-ipc@1.8.1: web3-providers-ipc@1.8.2: version "1.8.2" - resolved "https://registry.yarnpkg.com/web3-providers-ipc/-/web3-providers-ipc-1.8.2.tgz#e52a7250f40c83b99a2482ec5b4cf2728377ae5c" + resolved "https://registry.npmjs.org/web3-providers-ipc/-/web3-providers-ipc-1.8.2.tgz" integrity sha512-p6fqKVGFg+WiXGHWnB1hu43PbvPkDHTz4RgoEzbXugv5rtv5zfYLqm8Ba6lrJOS5ks9kGKR21a0y3NzE3u7V4w== dependencies: oboe "2.1.5" web3-core-helpers "1.8.2" +web3-providers-ipc@^4.0.5: + version "4.0.5" + resolved "https://registry.yarnpkg.com/web3-providers-ipc/-/web3-providers-ipc-4.0.5.tgz#363f497936378253f19822d9398d0ec1d853dde7" + integrity sha512-1mJWqBnKbQ6UGHVxuXDJRpw4NwkpJ7NabyF2XBmzctzFHKvzE0X1dAocy3tih49J38d0vKrmubTOqxxkMpq49Q== + dependencies: + web3-errors "^1.1.1" + web3-types "^1.1.1" + web3-utils "^4.0.5" + web3-providers-ws@1.10.0: version "1.10.0" - resolved "https://registry.yarnpkg.com/web3-providers-ws/-/web3-providers-ws-1.10.0.tgz#cb0b87b94c4df965cdf486af3a8cd26daf3975e5" + resolved "https://registry.npmjs.org/web3-providers-ws/-/web3-providers-ws-1.10.0.tgz" integrity sha512-sK0fNcglW36yD5xjnjtSGBnEtf59cbw4vZzJ+CmOWIKGIR96mP5l684g0WD0Eo+f4NQc2anWWXG74lRc9OVMCQ== dependencies: eventemitter3 "4.0.4" @@ -26906,7 +27497,7 @@ web3-providers-ws@1.10.0: web3-providers-ws@1.2.2: version "1.2.2" - resolved "https://registry.yarnpkg.com/web3-providers-ws/-/web3-providers-ws-1.2.2.tgz#d2c05c68598cea5ad3fa6ef076c3bcb3ca300d29" + resolved "https://registry.npmjs.org/web3-providers-ws/-/web3-providers-ws-1.2.2.tgz" integrity sha512-Wb1mrWTGMTXOpJkL0yGvL/WYLt8fUIXx8k/l52QB2IiKzvyd42dTWn4+j8IKXGSYYzOm7NMqv6nhA5VDk12VfA== dependencies: underscore "1.9.1" @@ -26915,7 +27506,7 @@ web3-providers-ws@1.2.2: web3-providers-ws@1.3.6: version "1.3.6" - resolved "https://registry.yarnpkg.com/web3-providers-ws/-/web3-providers-ws-1.3.6.tgz#e1df617bc89d66165abdf2191da0014c505bfaac" + resolved "https://registry.npmjs.org/web3-providers-ws/-/web3-providers-ws-1.3.6.tgz" integrity sha512-bk7MnJf5or0Re2zKyhR3L3CjGululLCHXx4vlbc/drnaTARUVvi559OI5uLytc/1k5HKUUyENAxLvetz2G1dnQ== dependencies: eventemitter3 "4.0.4" @@ -26925,7 +27516,7 @@ web3-providers-ws@1.3.6: web3-providers-ws@1.8.1: version "1.8.1" - resolved "https://registry.yarnpkg.com/web3-providers-ws/-/web3-providers-ws-1.8.1.tgz#5e5370e07eb8c615ed298ebc8602b283c7b7d649" + resolved "https://registry.npmjs.org/web3-providers-ws/-/web3-providers-ws-1.8.1.tgz" integrity sha512-TNefIDAMpdx57+YdWpYZ/xdofS0P+FfKaDYXhn24ie/tH9G+AB+UBSOKnjN0KSadcRSCMBwGPRiEmNHPavZdsA== dependencies: eventemitter3 "4.0.4" @@ -26934,16 +27525,28 @@ web3-providers-ws@1.8.1: web3-providers-ws@1.8.2: version "1.8.2" - resolved "https://registry.yarnpkg.com/web3-providers-ws/-/web3-providers-ws-1.8.2.tgz#56a2b701387011aca9154ca4bc06ea4b5f27e4ef" + resolved "https://registry.npmjs.org/web3-providers-ws/-/web3-providers-ws-1.8.2.tgz" integrity sha512-3s/4K+wHgbiN+Zrp9YjMq2eqAF6QGABw7wFftPdx+m5hWImV27/MoIx57c6HffNRqZXmCHnfWWFCNHHsi7wXnA== dependencies: eventemitter3 "4.0.4" web3-core-helpers "1.8.2" websocket "^1.0.32" +web3-providers-ws@^4.0.5: + version "4.0.5" + resolved "https://registry.yarnpkg.com/web3-providers-ws/-/web3-providers-ws-4.0.5.tgz#b8e42b37839c28d76b7e59e1da37692c2f771ced" + integrity sha512-v9xE16Jjczy+7jMKY7rwTuXgwGK51NKvCGdFERPPcSNJCkS5YCBq9DpzJe8mcr5QhuhnTeGeQ7XmcjTzDRkwnQ== + dependencies: + "@types/ws" "8.5.3" + isomorphic-ws "^5.0.0" + web3-errors "^1.1.1" + web3-types "^1.1.1" + web3-utils "^4.0.5" + ws "^8.8.1" + web3-providers@1.0.0-beta.55: version "1.0.0-beta.55" - resolved "https://registry.yarnpkg.com/web3-providers/-/web3-providers-1.0.0-beta.55.tgz#639503517741b69baaa82f1f940630df6a25992b" + resolved "https://registry.npmjs.org/web3-providers/-/web3-providers-1.0.0-beta.55.tgz" integrity sha512-MNifc7W+iF6rykpbDR1MuX152jshWdZXHAU9Dk0Ja2/23elhIs4nCWs7wOX9FHrKgdrQbscPoq0uy+0aGzyWVQ== dependencies: "@babel/runtime" "^7.3.1" @@ -26958,9 +27561,18 @@ web3-providers@1.0.0-beta.55: websocket "^1.0.28" xhr2-cookies "1.1.0" +web3-rpc-methods@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/web3-rpc-methods/-/web3-rpc-methods-1.1.1.tgz#4ec5558db3a4de6e884ac2448eb79ee9de9db11a" + integrity sha512-aAhm1eIKPWWBRf+BrYpKcvQX5qAg1LOU6NhriY0xpXJh01hbwkz0Q8rMJfCCjlGAElYHSp2K/odyAmyKRDr0LQ== + dependencies: + web3-core "^4.1.1" + web3-types "^1.1.1" + web3-validator "^2.0.1" + web3-shh@1.10.0: version "1.10.0" - resolved "https://registry.yarnpkg.com/web3-shh/-/web3-shh-1.10.0.tgz#c2979b87e0f67a7fef2ce9ee853bd7bfbe9b79a8" + resolved "https://registry.npmjs.org/web3-shh/-/web3-shh-1.10.0.tgz" integrity sha512-uNUUuNsO2AjX41GJARV9zJibs11eq6HtOe6Wr0FtRUcj8SN6nHeYIzwstAvJ4fXA53gRqFMTxdntHEt9aXVjpg== dependencies: web3-core "1.10.0" @@ -26970,7 +27582,7 @@ web3-shh@1.10.0: web3-shh@1.2.2: version "1.2.2" - resolved "https://registry.yarnpkg.com/web3-shh/-/web3-shh-1.2.2.tgz#44ed998f2a6ba0ec5cb9d455184a0f647826a49c" + resolved "https://registry.npmjs.org/web3-shh/-/web3-shh-1.2.2.tgz" integrity sha512-og258NPhlBn8yYrDWjoWBBb6zo1OlBgoWGT+LL5/LPqRbjPe09hlOYHgscAAr9zZGtohTOty7RrxYw6Z6oDWCg== dependencies: web3-core "1.2.2" @@ -26980,7 +27592,7 @@ web3-shh@1.2.2: web3-shh@1.3.6: version "1.3.6" - resolved "https://registry.yarnpkg.com/web3-shh/-/web3-shh-1.3.6.tgz#4e3486c7eca5cbdb87f88910948223a5b7ea6c20" + resolved "https://registry.npmjs.org/web3-shh/-/web3-shh-1.3.6.tgz" integrity sha512-9zRo415O0iBslxBnmu9OzYjNErzLnzOsy+IOvSpIreLYbbAw0XkDWxv3SfcpKnTIWIACBR4AYMIxmmyi5iB3jw== dependencies: web3-core "1.3.6" @@ -26990,7 +27602,7 @@ web3-shh@1.3.6: web3-shh@1.8.1: version "1.8.1" - resolved "https://registry.yarnpkg.com/web3-shh/-/web3-shh-1.8.1.tgz#028a95cf9d3a36020380938b9a127610efbb9be7" + resolved "https://registry.npmjs.org/web3-shh/-/web3-shh-1.8.1.tgz" integrity sha512-sqHgarnfcY2Qt3PYS4R6YveHrDy7hmL09yeLLHHCI+RKirmjLVqV0rc5LJWUtlbYI+kDoa5gbgde489M9ZAC0g== dependencies: web3-core "1.8.1" @@ -27000,7 +27612,7 @@ web3-shh@1.8.1: web3-shh@1.8.2: version "1.8.2" - resolved "https://registry.yarnpkg.com/web3-shh/-/web3-shh-1.8.2.tgz#217a417f0d6e243dd4d441848ffc2bd164cea8a0" + resolved "https://registry.npmjs.org/web3-shh/-/web3-shh-1.8.2.tgz" integrity sha512-uZ+3MAoNcaJsXXNCDnizKJ5viBNeHOFYsCbFhV755Uu52FswzTOw6DtE7yK9nYXMtIhiSgi7nwl1RYzP8pystw== dependencies: web3-core "1.8.2" @@ -27008,9 +27620,14 @@ web3-shh@1.8.2: web3-core-subscriptions "1.8.2" web3-net "1.8.2" +web3-types@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/web3-types/-/web3-types-1.1.1.tgz#d3df5e9839bf70a19b070313fd3d9ee07fbffbf3" + integrity sha512-bXmIPJi/NPed43JBcya71gT+euZSMvfQx6NYv8G97PSNxR1HWwANYBKbamTZvzBbq10QCwQLh0hZw3tyOXuPFA== + web3-utils@1.0.0-beta.55: version "1.0.0-beta.55" - resolved "https://registry.yarnpkg.com/web3-utils/-/web3-utils-1.0.0-beta.55.tgz#beb40926b7c04208b752d36a9bc959d27a04b308" + resolved "https://registry.npmjs.org/web3-utils/-/web3-utils-1.0.0-beta.55.tgz" integrity sha512-ASWqUi8gtWK02Tp8ZtcoAbHenMpQXNvHrakgzvqTNNZn26wgpv+Q4mdPi0KOR6ZgHFL8R/9b5BBoUTglS1WPpg== dependencies: "@babel/runtime" "^7.3.1" @@ -27024,9 +27641,9 @@ web3-utils@1.0.0-beta.55: randombytes "^2.1.0" utf8 "2.1.1" -web3-utils@1.10.0: +web3-utils@1.10.0, web3-utils@^1.0.0-beta.31: version "1.10.0" - resolved "https://registry.yarnpkg.com/web3-utils/-/web3-utils-1.10.0.tgz#ca4c1b431a765c14ac7f773e92e0fd9377ccf578" + resolved "https://registry.npmjs.org/web3-utils/-/web3-utils-1.10.0.tgz" integrity sha512-kSaCM0uMcZTNUSmn5vMEhlo02RObGNRRCkdX0V9UTAU0+lrvn0HSaudyCo6CQzuXUsnuY2ERJGCGPfeWmv19Rg== dependencies: bn.js "^5.2.1" @@ -27039,7 +27656,7 @@ web3-utils@1.10.0: web3-utils@1.2.1: version "1.2.1" - resolved "https://registry.yarnpkg.com/web3-utils/-/web3-utils-1.2.1.tgz#21466e38291551de0ab34558de21512ac4274534" + resolved "https://registry.npmjs.org/web3-utils/-/web3-utils-1.2.1.tgz" integrity sha512-Mrcn3l58L+yCKz3zBryM6JZpNruWuT0OCbag8w+reeNROSGVlXzUQkU+gtAwc9JCZ7tKUyg67+2YUGqUjVcyBA== dependencies: bn.js "4.11.8" @@ -27052,7 +27669,7 @@ web3-utils@1.2.1: web3-utils@1.2.2: version "1.2.2" - resolved "https://registry.yarnpkg.com/web3-utils/-/web3-utils-1.2.2.tgz#b53a08c40d2c3f31d3c4a28e7d749405df99c8c0" + resolved "https://registry.npmjs.org/web3-utils/-/web3-utils-1.2.2.tgz" integrity sha512-joF+s3243TY5cL7Z7y4h1JsJpUCf/kmFmj+eJar7Y2yNIGVcW961VyrAms75tjUysSuHaUQ3eQXjBEUJueT52A== dependencies: bn.js "4.11.8" @@ -27066,7 +27683,7 @@ web3-utils@1.2.2: web3-utils@1.3.6: version "1.3.6" - resolved "https://registry.yarnpkg.com/web3-utils/-/web3-utils-1.3.6.tgz#390bc9fa3a7179746963cfaca55bb80ac4d8dc10" + resolved "https://registry.npmjs.org/web3-utils/-/web3-utils-1.3.6.tgz" integrity sha512-hHatFaQpkQgjGVER17gNx8u1qMyaXFZtM0y0XLGH1bzsjMPlkMPLRcYOrZ00rOPfTEuYFOdrpGOqZXVmGrMZRg== dependencies: bn.js "^4.11.9" @@ -27080,7 +27697,7 @@ web3-utils@1.3.6: web3-utils@1.8.1: version "1.8.1" - resolved "https://registry.yarnpkg.com/web3-utils/-/web3-utils-1.8.1.tgz#f2f7ca7eb65e6feb9f3d61056d0de6bbd57125ff" + resolved "https://registry.npmjs.org/web3-utils/-/web3-utils-1.8.1.tgz" integrity sha512-LgnM9p6V7rHHUGfpMZod+NST8cRfGzJ1BTXAyNo7A9cJX9LczBfSRxJp+U/GInYe9mby40t3v22AJdlELibnsQ== dependencies: bn.js "^5.2.1" @@ -27091,9 +27708,9 @@ web3-utils@1.8.1: randombytes "^2.1.0" utf8 "3.0.0" -web3-utils@1.8.2, web3-utils@^1.0.0-beta.31: +web3-utils@1.8.2: version "1.8.2" - resolved "https://registry.yarnpkg.com/web3-utils/-/web3-utils-1.8.2.tgz#c32dec5e9b955acbab220eefd7715bc540b75cc9" + resolved "https://registry.npmjs.org/web3-utils/-/web3-utils-1.8.2.tgz" integrity sha512-v7j6xhfLQfY7xQDrUP0BKbaNrmZ2/+egbqP9q3KYmOiPpnvAfol+32slgL0WX/5n8VPvKCK5EZ1HGrAVICSToA== dependencies: bn.js "^5.2.1" @@ -27104,22 +27721,52 @@ web3-utils@1.8.2, web3-utils@^1.0.0-beta.31: randombytes "^2.1.0" utf8 "3.0.0" -web3@*, web3@1.8.2, web3@^1.2.4: - version "1.8.2" - resolved "https://registry.yarnpkg.com/web3/-/web3-1.8.2.tgz#95a4e5398fd0f01325264bf8e5e8cdc69a7afe86" - integrity sha512-92h0GdEHW9wqDICQQKyG4foZBYi0OQkyg4CRml2F7XBl/NG+fu9o6J19kzfFXzSBoA4DnJXbyRgj/RHZv5LRiw== +web3-utils@^4.0.5: + version "4.0.5" + resolved "https://registry.yarnpkg.com/web3-utils/-/web3-utils-4.0.5.tgz#598d0ebbe1463c56ac1e838103a728a0a6bfdad7" + integrity sha512-43xIM7rr3htYNzliVQLpWLQmEf4XX8IXgjvqLcEuC/xje14O5UQM4kamRCtz8v3JZN3X6QTfsV6Zgby67mVmCg== dependencies: - web3-bzz "1.8.2" - web3-core "1.8.2" - web3-eth "1.8.2" - web3-eth-personal "1.8.2" - web3-net "1.8.2" - web3-shh "1.8.2" - web3-utils "1.8.2" + ethereum-cryptography "^2.0.0" + web3-errors "^1.1.1" + web3-types "^1.1.1" + web3-validator "^2.0.1" -web3@1.10.0: +web3-validator@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/web3-validator/-/web3-validator-2.0.1.tgz#8da5b9f871c0aac7677f4a5eca46b4fee9b6d0ff" + integrity sha512-RIdZCNhceBEOQpmzcEk6K3qqLHRfDIMkg2PJe7yllpuEc0fa0cmUZgGUl1FEnioc5Rx9GBEE8eTllaneIAiiQQ== + dependencies: + ethereum-cryptography "^2.0.0" + util "^0.12.5" + web3-errors "^1.1.1" + web3-types "^1.1.1" + zod "^3.21.4" + +web3@*: + version "4.1.1" + resolved "https://registry.yarnpkg.com/web3/-/web3-4.1.1.tgz#df54d56b9f09d9ca29ee5a12873ce0af2774adac" + integrity sha512-vnPll2G+ZNktSu7oJVjAW0QYuY0kPHLs8LQMifml4kTR+hqhiTmzMIzO8FqkcsESLEu6H9R7Acj6EgyeU1hruQ== + dependencies: + web3-core "^4.1.1" + web3-errors "^1.1.1" + web3-eth "^4.1.1" + web3-eth-abi "^4.1.1" + web3-eth-accounts "^4.0.5" + web3-eth-contract "^4.0.5" + web3-eth-ens "^4.0.5" + web3-eth-iban "^4.0.5" + web3-eth-personal "^4.0.5" + web3-net "^4.0.5" + web3-providers-http "^4.0.5" + web3-providers-ws "^4.0.5" + web3-rpc-methods "^1.1.1" + web3-types "^1.1.1" + web3-utils "^4.0.5" + web3-validator "^2.0.1" + +web3@1.10.0, web3@^1.2.4: version "1.10.0" - resolved "https://registry.yarnpkg.com/web3/-/web3-1.10.0.tgz#2fde0009f59aa756c93e07ea2a7f3ab971091274" + resolved "https://registry.npmjs.org/web3/-/web3-1.10.0.tgz" integrity sha512-YfKY9wSkGcM8seO+daR89oVTcbu18NsVfvOngzqMYGUU0pPSQmE57qQDvQzUeoIOHAnXEBNzrhjQJmm8ER0rng== dependencies: web3-bzz "1.10.0" @@ -27132,7 +27779,7 @@ web3@1.10.0: web3@1.2.2: version "1.2.2" - resolved "https://registry.yarnpkg.com/web3/-/web3-1.2.2.tgz#b1b8b69aafdf94cbaeadbb68a8aa1df2ef266aec" + resolved "https://registry.npmjs.org/web3/-/web3-1.2.2.tgz" integrity sha512-/ChbmB6qZpfGx6eNpczt5YSUBHEA5V2+iUCbn85EVb3Zv6FVxrOo5Tv7Lw0gE2tW7EEjASbCyp3mZeiZaCCngg== dependencies: "@types/node" "^12.6.1" @@ -27146,7 +27793,7 @@ web3@1.2.2: web3@1.3.6: version "1.3.6" - resolved "https://registry.yarnpkg.com/web3/-/web3-1.3.6.tgz#599425461c3f9a8cbbefa70616438995f4a064cc" + resolved "https://registry.npmjs.org/web3/-/web3-1.3.6.tgz" integrity sha512-jEpPhnL6GDteifdVh7ulzlPrtVQeA30V9vnki9liYlUvLV82ZM7BNOQJiuzlDePuE+jZETZSP/0G/JlUVt6pOA== dependencies: web3-bzz "1.3.6" @@ -27159,7 +27806,7 @@ web3@1.3.6: web3@1.8.1: version "1.8.1" - resolved "https://registry.yarnpkg.com/web3/-/web3-1.8.1.tgz#8ea67215ef5f3a6f6d3381800b527242ea22885a" + resolved "https://registry.npmjs.org/web3/-/web3-1.8.1.tgz" integrity sha512-tAqFsQhGv340C9OgRJIuoScN7f7wa1tUvsnnDUMt9YE6J4gcm7TV2Uwv+KERnzvV+xgdeuULYpsioRRNKrUvoQ== dependencies: web3-bzz "1.8.1" @@ -27170,9 +27817,22 @@ web3@1.8.1: web3-shh "1.8.1" web3-utils "1.8.1" +web3@1.8.2: + version "1.8.2" + resolved "https://registry.npmjs.org/web3/-/web3-1.8.2.tgz" + integrity sha512-92h0GdEHW9wqDICQQKyG4foZBYi0OQkyg4CRml2F7XBl/NG+fu9o6J19kzfFXzSBoA4DnJXbyRgj/RHZv5LRiw== + dependencies: + web3-bzz "1.8.2" + web3-core "1.8.2" + web3-eth "1.8.2" + web3-eth-personal "1.8.2" + web3-net "1.8.2" + web3-shh "1.8.2" + web3-utils "1.8.2" + web3@^0.16.0: version "0.16.0" - resolved "https://registry.yarnpkg.com/web3/-/web3-0.16.0.tgz#a4554175cd462943035b1f1d39432f741c6b6019" + resolved "https://registry.npmjs.org/web3/-/web3-0.16.0.tgz" integrity sha512-8vET/GI2qDtShXNtPkuWByWvPNou9ecuYI9OJswBdA+NUwe5WZKirHUWakS0y4mK6lGmOhv7mLN7cHCBhmQRyA== dependencies: bignumber.js "git+https://github.com/debris/bignumber.js#master" @@ -27182,7 +27842,7 @@ web3@^0.16.0: web3@^0.18.2: version "0.18.4" - resolved "https://registry.yarnpkg.com/web3/-/web3-0.18.4.tgz#81ec1784145491f2eaa8955b31c06049e07c5e7d" + resolved "https://registry.npmjs.org/web3/-/web3-0.18.4.tgz" integrity sha512-TG+CtszzJHRHq+1T0AJVN4ATDvNn4QIAIEnErTgx2jj9oCa5ggOqZv3Ub0RAF+Yr2F/e5F6UFpEUSH9QK7w50Q== dependencies: bignumber.js "git+https://github.com/debris/bignumber.js.git#94d7146671b9719e00a09c29b01a691bc85048c2" @@ -27193,17 +27853,17 @@ web3@^0.18.2: webidl-conversions@^3.0.0: version "3.0.1" - resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-3.0.1.tgz#24534275e2a7bc6be7bc86611cc16ae0a5654871" + resolved "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz" integrity sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ== webidl-conversions@^4.0.2: version "4.0.2" - resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-4.0.2.tgz#a855980b1f0b6b359ba1d5d9fb39ae941faa63ad" + resolved "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-4.0.2.tgz" integrity sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg== websocket-driver@>=0.5.1: version "0.7.4" - resolved "https://registry.yarnpkg.com/websocket-driver/-/websocket-driver-0.7.4.tgz#89ad5295bbf64b480abcba31e4953aca706f5760" + resolved "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.4.tgz" integrity sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg== dependencies: http-parser-js ">=0.5.1" @@ -27212,12 +27872,12 @@ websocket-driver@>=0.5.1: websocket-extensions@>=0.1.1: version "0.1.4" - resolved "https://registry.yarnpkg.com/websocket-extensions/-/websocket-extensions-0.1.4.tgz#7f8473bc839dfd87608adb95d7eb075211578a42" + resolved "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.4.tgz" integrity sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg== websocket@^1.0.28, websocket@^1.0.32: version "1.0.34" - resolved "https://registry.yarnpkg.com/websocket/-/websocket-1.0.34.tgz#2bdc2602c08bf2c82253b730655c0ef7dcab3111" + resolved "https://registry.npmjs.org/websocket/-/websocket-1.0.34.tgz" integrity sha512-PRDso2sGwF6kM75QykIesBijKSVceR6jL2G8NGYyq2XrItNC2P5/qL5XeR056GhA+Ly7JMFvJb9I312mJfmqnQ== dependencies: bufferutil "^4.0.1" @@ -27239,22 +27899,22 @@ websocket@^1.0.28, websocket@^1.0.32: whatwg-fetch@3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/whatwg-fetch/-/whatwg-fetch-3.0.0.tgz#fc804e458cc460009b1a2b966bc8817d2578aefb" + resolved "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-3.0.0.tgz" integrity sha512-9GSJUgz1D4MfyKU7KRqwOjXCXTqWdFNvEr7eUBYchQiVc744mqK/MzXPNR2WsPkmkOa4ywfg8C2n8h+13Bey1Q== whatwg-fetch@>=0.10.0, whatwg-fetch@^3.4.1: version "3.6.2" - resolved "https://registry.yarnpkg.com/whatwg-fetch/-/whatwg-fetch-3.6.2.tgz#dced24f37f2624ed0281725d51d0e2e3fe677f8c" + resolved "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-3.6.2.tgz" integrity sha512-bJlen0FcuU/0EMLrdbJ7zOnW6ITZLrZMIarMUVmdKtsGvZna8vxKYaexICWPfZ8qwf9fzNq+UEIZrnSaApt6RA== whatwg-mimetype@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/whatwg-mimetype/-/whatwg-mimetype-3.0.0.tgz#5fa1a7623867ff1af6ca3dc72ad6b8a4208beba7" + resolved "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-3.0.0.tgz" integrity sha512-nt+N2dzIutVRxARx1nghPKGv1xHikU7HKdfafKkLNLindmPU/ch3U31NOCGGA/dmPcmb1VlofO0vnKAcsm0o/Q== whatwg-url@^5.0.0: version "5.0.0" - resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-5.0.0.tgz#966454e8765462e37644d3626f6742ce8b70965d" + resolved "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz" integrity sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw== dependencies: tr46 "~0.0.3" @@ -27262,7 +27922,7 @@ whatwg-url@^5.0.0: whatwg-url@^6.5.0: version "6.5.0" - resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-6.5.0.tgz#f2df02bff176fd65070df74ad5ccbb5a199965a8" + resolved "https://registry.npmjs.org/whatwg-url/-/whatwg-url-6.5.0.tgz" integrity sha512-rhRZRqx/TLJQWUpQ6bmrt2UV4f0HCQ463yQuONJqC6fO2VoEb1pTYddbe59SkYq87aoM5A3bdhMZiUiVws+fzQ== dependencies: lodash.sortby "^4.7.0" @@ -27271,7 +27931,7 @@ whatwg-url@^6.5.0: which-boxed-primitive@^1.0.2: version "1.0.2" - resolved "https://registry.yarnpkg.com/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz#13757bc89b209b049fe5d86430e21cf40a89a8e6" + resolved "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz" integrity sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg== dependencies: is-bigint "^1.0.1" @@ -27282,17 +27942,28 @@ which-boxed-primitive@^1.0.2: which-module@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/which-module/-/which-module-1.0.0.tgz#bba63ca861948994ff307736089e3b96026c2a4f" + resolved "https://registry.npmjs.org/which-module/-/which-module-1.0.0.tgz" integrity sha512-F6+WgncZi/mJDrammbTuHe1q0R5hOXv/mBaiNA2TCNT/LTHusX0V+CJnj9XT8ki5ln2UZyyddDgHfCzyrOH7MQ== which-module@^2.0.0: version "2.0.1" - resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.1.tgz#776b1fe35d90aebe99e8ac15eb24093389a4a409" + resolved "https://registry.npmjs.org/which-module/-/which-module-2.0.1.tgz" integrity sha512-iBdZ57RDvnOR9AGBhML2vFZf7h8vmBjhoaZqODJBFWHVtKkDmKuHai3cx5PgVMrX5YDNp27AofYbAwctSS+vhQ== +which-typed-array@^1.1.10: + version "1.1.11" + resolved "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.11.tgz" + 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, which-typed-array@^1.1.9: version "1.1.9" - resolved "https://registry.yarnpkg.com/which-typed-array/-/which-typed-array-1.1.9.tgz#307cf898025848cf995e795e8423c7f337efbde6" + resolved "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.9.tgz" integrity sha512-w9c4xkx6mPidwp7180ckYWfMmvxpjlZuIudNtDf4N/tTAUB8VJbX25qZoAsrtGuYNnGw3pa0AXgbGKRB8/EceA== dependencies: available-typed-arrays "^1.0.5" @@ -27304,66 +27975,66 @@ which-typed-array@^1.1.2, which-typed-array@^1.1.9: which@1.3.1, which@^1.1.1, which@^1.2.12, which@^1.2.14, which@^1.2.9: version "1.3.1" - resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a" + resolved "https://registry.npmjs.org/which/-/which-1.3.1.tgz" integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ== dependencies: isexe "^2.0.0" which@2.0.2, which@^2.0.1, which@^2.0.2: version "2.0.2" - resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" + resolved "https://registry.npmjs.org/which/-/which-2.0.2.tgz" integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== dependencies: isexe "^2.0.0" wide-align@1.1.3: version "1.1.3" - resolved "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.3.tgz#ae074e6bdc0c14a431e804e624549c633b000457" + resolved "https://registry.npmjs.org/wide-align/-/wide-align-1.1.3.tgz" integrity sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA== dependencies: string-width "^1.0.2 || 2" wide-align@^1.1.0, wide-align@^1.1.2, wide-align@^1.1.5: version "1.1.5" - resolved "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.5.tgz#df1d4c206854369ecf3c9a4898f1b23fbd9d15d3" + resolved "https://registry.npmjs.org/wide-align/-/wide-align-1.1.5.tgz" integrity sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg== dependencies: string-width "^1.0.2 || 2 || 3 || 4" widest-line@^2.0.0: version "2.0.1" - resolved "https://registry.yarnpkg.com/widest-line/-/widest-line-2.0.1.tgz#7438764730ec7ef4381ce4df82fb98a53142a3fc" + resolved "https://registry.npmjs.org/widest-line/-/widest-line-2.0.1.tgz" integrity sha512-Ba5m9/Fa4Xt9eb2ELXt77JxVDV8w7qQrH0zS/TWSJdLyAwQjWoOzpzj5lwVftDz6n/EOu3tNACS84v509qwnJA== dependencies: string-width "^2.1.1" widest-line@^3.1.0: version "3.1.0" - resolved "https://registry.yarnpkg.com/widest-line/-/widest-line-3.1.0.tgz#8292333bbf66cb45ff0de1603b136b7ae1496eca" + resolved "https://registry.npmjs.org/widest-line/-/widest-line-3.1.0.tgz" integrity sha512-NsmoXalsWVDMGupxZ5R08ka9flZjjiLvHVAWYOKtiKM8ujtZWr9cRffak+uSE48+Ob8ObalXpwyeUiyDD6QFgg== dependencies: string-width "^4.0.0" wif@^2.0.6: version "2.0.6" - resolved "https://registry.yarnpkg.com/wif/-/wif-2.0.6.tgz#08d3f52056c66679299726fade0d432ae74b4704" + resolved "https://registry.npmjs.org/wif/-/wif-2.0.6.tgz" integrity sha512-HIanZn1zmduSF+BQhkE+YXIbEiH0xPr1012QbFEGB0xsKqJii0/SqJjyn8dFv6y36kOznMgMB+LGcbZTJ1xACQ== dependencies: bs58check "<3.0.0" window-size@^0.1.4: version "0.1.4" - resolved "https://registry.yarnpkg.com/window-size/-/window-size-0.1.4.tgz#f8e1aa1ee5a53ec5bf151ffa09742a6ad7697876" + resolved "https://registry.npmjs.org/window-size/-/window-size-0.1.4.tgz" integrity sha512-2thx4pB0cV3h+Bw7QmMXcEbdmOzv9t0HFplJH/Lz6yu60hXYy5RT8rUu+wlIreVxWsGN20mo+MHeCSfUpQBwPw== window-size@^0.2.0: version "0.2.0" - resolved "https://registry.yarnpkg.com/window-size/-/window-size-0.2.0.tgz#b4315bb4214a3d7058ebeee892e13fa24d98b075" + resolved "https://registry.npmjs.org/window-size/-/window-size-0.2.0.tgz" integrity sha512-UD7d8HFA2+PZsbKyaOCEy8gMh1oDtHgJh1LfgjQ4zVXmYjAT/kvz3PueITKuqDiIXQe7yzpPnxX3lNc+AhQMyw== winston-transport@^4.4.0, winston-transport@^4.5.0: version "4.5.0" - resolved "https://registry.yarnpkg.com/winston-transport/-/winston-transport-4.5.0.tgz#6e7b0dd04d393171ed5e4e4905db265f7ab384fa" + resolved "https://registry.npmjs.org/winston-transport/-/winston-transport-4.5.0.tgz" integrity sha512-YpZzcUzBedhlTAfJg6vJDlyEai/IFMIVcaEZZyl3UXIl4gmqRpU7AE89AHLkbzLUsv0NVmw7ts+iztqKxxPW1Q== dependencies: logform "^2.3.2" @@ -27372,7 +28043,7 @@ winston-transport@^4.4.0, winston-transport@^4.5.0: winston@2.x: version "2.4.7" - resolved "https://registry.yarnpkg.com/winston/-/winston-2.4.7.tgz#5791fe08ea7e90db090f1cb31ef98f32531062f1" + resolved "https://registry.npmjs.org/winston/-/winston-2.4.7.tgz" integrity sha512-vLB4BqzCKDnnZH9PHGoS2ycawueX4HLqENXQitvFHczhgW2vFpSOn31LZtVr1KU8YTw7DS4tM+cqyovxo8taVg== dependencies: async "^2.6.4" @@ -27383,9 +28054,9 @@ winston@2.x: stack-trace "0.0.x" winston@^3.0.0: - version "3.8.2" - resolved "https://registry.yarnpkg.com/winston/-/winston-3.8.2.tgz#56e16b34022eb4cff2638196d9646d7430fdad50" - integrity sha512-MsE1gRx1m5jdTTO9Ld/vND4krP2To+lgDoMEHGGa4HIlAUyXJtfc7CxQcGXVyz2IBpw5hbFkj2b/AtUdQwyRew== + version "3.10.0" + resolved "https://registry.npmjs.org/winston/-/winston-3.10.0.tgz" + integrity sha512-nT6SIDaE9B7ZRO0u3UvdrimG0HkB7dSTAgInQnNR2SOPJ4bvq5q79+pXLftKmP52lJGW15+H5MCK0nM9D3KB/g== dependencies: "@colors/colors" "1.5.0" "@dabh/diagnostics" "^2.0.2" @@ -27401,27 +28072,27 @@ winston@^3.0.0: word-wrap@~1.2.3: version "1.2.4" - resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.4.tgz#cb4b50ec9aca570abd1f52f33cd45b6c61739a9f" + resolved "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.4.tgz" integrity sha512-2V81OA4ugVo5pRo46hAoD2ivUJx8jXmWXfUkY4KFNw0hEptvN0QfH3K4nHiwzGeKl5rFKedV48QVoqYavy4YpA== wordwrap@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-1.0.0.tgz#27584810891456a4171c8d0226441ade90cbcaeb" + resolved "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz" integrity sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q== workerpool@6.0.0: version "6.0.0" - resolved "https://registry.yarnpkg.com/workerpool/-/workerpool-6.0.0.tgz#85aad67fa1a2c8ef9386a1b43539900f61d03d58" + resolved "https://registry.npmjs.org/workerpool/-/workerpool-6.0.0.tgz" integrity sha512-fU2OcNA/GVAJLLyKUoHkAgIhKb0JoCpSjLC/G2vYKxUjVmQwGbRVeoPJ1a8U4pnVofz4AQV5Y/NEw8oKqxEBtA== workerpool@6.2.1: version "6.2.1" - resolved "https://registry.yarnpkg.com/workerpool/-/workerpool-6.2.1.tgz#46fc150c17d826b86a008e5a4508656777e9c343" + resolved "https://registry.npmjs.org/workerpool/-/workerpool-6.2.1.tgz" integrity sha512-ILEIE97kDZvF9Wb9f6h5aXK4swSlKGUcOEGiIYb2OOu/IrDU9iwj0fD//SsA6E5ibwJxpEvhullJY4Sl4GcpAw== "wrap-ansi-cjs@npm:wrap-ansi@^7.0.0", wrap-ansi@^7.0.0: version "7.0.0" - resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" + resolved "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz" integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== dependencies: ansi-styles "^4.0.0" @@ -27430,7 +28101,7 @@ workerpool@6.2.1: wrap-ansi@^2.0.0: version "2.1.0" - resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-2.1.0.tgz#d8fc3d284dd05794fe84973caecdd1cf824fdd85" + resolved "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz" integrity sha512-vAaEaDM946gbNpH5pLVNR+vX2ht6n0Bt3GXwVB1AuAqZosOvHNF3P7wDnh8KLkSqgUh0uh77le7Owgoz+Z9XBw== dependencies: string-width "^1.0.1" @@ -27438,7 +28109,7 @@ wrap-ansi@^2.0.0: wrap-ansi@^3.0.1: version "3.0.1" - resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-3.0.1.tgz#288a04d87eda5c286e060dfe8f135ce8d007f8ba" + resolved "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-3.0.1.tgz" integrity sha512-iXR3tDXpbnTpzjKSylUJRkLuOrEC7hwEB221cgn6wtF8wpmz28puFXAEfPT5zrjM3wahygB//VuWEr1vTkDcNQ== dependencies: string-width "^2.1.1" @@ -27446,7 +28117,7 @@ wrap-ansi@^3.0.1: wrap-ansi@^5.1.0: version "5.1.0" - resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-5.1.0.tgz#1fd1f67235d5b6d0fee781056001bfb694c03b09" + resolved "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz" integrity sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q== dependencies: ansi-styles "^3.2.0" @@ -27455,7 +28126,7 @@ wrap-ansi@^5.1.0: wrap-ansi@^6.0.1, wrap-ansi@^6.2.0: version "6.2.0" - resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-6.2.0.tgz#e9393ba07102e6c91a3b221478f0257cd2856e53" + resolved "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz" integrity sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA== dependencies: ansi-styles "^4.0.0" @@ -27464,7 +28135,7 @@ wrap-ansi@^6.0.1, wrap-ansi@^6.2.0: wrap-ansi@^8.1.0: version "8.1.0" - resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-8.1.0.tgz#56dc22368ee570face1b49819975d9b9a5ead214" + resolved "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz" integrity sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ== dependencies: ansi-styles "^6.1.0" @@ -27473,12 +28144,12 @@ wrap-ansi@^8.1.0: wrappy@1: version "1.0.2" - resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" + resolved "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz" integrity sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ== write-file-atomic@^2.0.0, write-file-atomic@^2.4.2: version "2.4.3" - resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-2.4.3.tgz#1fd2e9ae1df3e75b8d8c367443c692d4ca81f481" + resolved "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-2.4.3.tgz" integrity sha512-GaETH5wwsX+GcnzhPgKcKjJ6M2Cq3/iZp1WyY/X1CSqrW+jVNM9Y7D8EC2sM4ZG/V8wZlSniJnCKWPmBYAucRQ== dependencies: graceful-fs "^4.1.11" @@ -27487,7 +28158,7 @@ write-file-atomic@^2.0.0, write-file-atomic@^2.4.2: write-file-atomic@^3.0.0: version "3.0.3" - resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-3.0.3.tgz#56bd5c5a5c70481cd19c571bd39ab965a5de56e8" + resolved "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz" integrity sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q== dependencies: imurmurhash "^0.1.4" @@ -27497,7 +28168,7 @@ write-file-atomic@^3.0.0: write-file-atomic@^4.0.0, write-file-atomic@^4.0.1, write-file-atomic@^4.0.2: version "4.0.2" - resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-4.0.2.tgz#a9df01ae5b77858a027fd2e80768ee433555fcfd" + resolved "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-4.0.2.tgz" integrity sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg== dependencies: imurmurhash "^0.1.4" @@ -27505,7 +28176,7 @@ write-file-atomic@^4.0.0, write-file-atomic@^4.0.1, write-file-atomic@^4.0.2: write-json-file@^3.2.0: version "3.2.0" - resolved "https://registry.yarnpkg.com/write-json-file/-/write-json-file-3.2.0.tgz#65bbdc9ecd8a1458e15952770ccbadfcff5fe62a" + resolved "https://registry.npmjs.org/write-json-file/-/write-json-file-3.2.0.tgz" integrity sha512-3xZqT7Byc2uORAatYiP3DHUUAVEkNOswEWNs9H5KXiicRTvzYzYqKjYc4G7p+8pltvAw641lVByKVtMpf+4sYQ== dependencies: detect-indent "^5.0.0" @@ -27529,7 +28200,7 @@ write-json-file@^4.1.1, write-json-file@^4.3.0: write-pkg@^4.0.0: version "4.0.0" - resolved "https://registry.yarnpkg.com/write-pkg/-/write-pkg-4.0.0.tgz#675cc04ef6c11faacbbc7771b24c0abbf2a20039" + resolved "https://registry.npmjs.org/write-pkg/-/write-pkg-4.0.0.tgz" integrity sha512-v2UQ+50TNf2rNHJ8NyWttfm/EJUBWMJcx6ZTYZr6Qp52uuegWw/lBkCtCbnYZEmPRNL61m+u67dAmGxo+HTULA== dependencies: sort-keys "^2.0.0" @@ -27538,21 +28209,21 @@ write-pkg@^4.0.0: write-stream@~0.4.3: version "0.4.3" - resolved "https://registry.yarnpkg.com/write-stream/-/write-stream-0.4.3.tgz#83cc8c0347d0af6057a93862b4e3ae01de5c81c1" + resolved "https://registry.npmjs.org/write-stream/-/write-stream-0.4.3.tgz" integrity sha512-IJrvkhbAnj89W/GAVdVgbnPiVw5Ntg/B4tc/MUCIEwj/g6JIww1DWJyB/yBMT3yw2/TkT6IUZ0+IYef3flEw8A== dependencies: readable-stream "~0.0.2" write@1.0.3: version "1.0.3" - resolved "https://registry.yarnpkg.com/write/-/write-1.0.3.tgz#0800e14523b923a387e415123c865616aae0f5c3" + resolved "https://registry.npmjs.org/write/-/write-1.0.3.tgz" integrity sha512-/lg70HAjtkUgWPVZhZcm+T4hkL8Zbtp1nFNOn3lRrxnlv50SRBv7cR7RqR+GMsd3hUXy9hWBo4CHTbFTcOYwig== dependencies: mkdirp "^0.5.1" ws@7.4.6: version "7.4.6" - resolved "https://registry.yarnpkg.com/ws/-/ws-7.4.6.tgz#5654ca8ecdeee47c33a9a4bf6d28e2be2980377c" + resolved "https://registry.npmjs.org/ws/-/ws-7.4.6.tgz" integrity sha512-YmhHDO4MzaDLB+M9ym/mDA5z0naX8j7SIlT8f8z+I0VtzsRbekxEutHSme7NPS2qE8StCYQNUnfWdXta/Yu85A== ws@8.12.0: @@ -27562,12 +28233,12 @@ ws@8.12.0: ws@8.2.3: version "8.2.3" - resolved "https://registry.yarnpkg.com/ws/-/ws-8.2.3.tgz#63a56456db1b04367d0b721a0b80cae6d8becbba" + resolved "https://registry.npmjs.org/ws/-/ws-8.2.3.tgz" integrity sha512-wBuoj1BDpC6ZQ1B7DWQBYVLphPWkm8i9Y0/3YdHjHKHiohOJ1ws+3OccDWtH+PoC9DZD5WOTrJvNbWvjS6JWaA== ws@^3.0.0: version "3.3.3" - resolved "https://registry.yarnpkg.com/ws/-/ws-3.3.3.tgz#f1cf84fe2d5e901ebce94efaece785f187a228f2" + resolved "https://registry.npmjs.org/ws/-/ws-3.3.3.tgz" integrity sha512-nnWLa/NwZSt4KQJu51MYlCcSQ5g7INpOrOMt4XV8j4dqTXdmlUmSHQ8/oLC069ckre0fRsgfvsKwbTdtKLCDkA== dependencies: async-limiter "~1.0.0" @@ -27576,36 +28247,41 @@ ws@^3.0.0: ws@^5.1.1: version "5.2.3" - resolved "https://registry.yarnpkg.com/ws/-/ws-5.2.3.tgz#05541053414921bc29c63bee14b8b0dd50b07b3d" + resolved "https://registry.npmjs.org/ws/-/ws-5.2.3.tgz" integrity sha512-jZArVERrMsKUatIdnLzqvcfydI85dvd/Fp1u/VOpfdDWQ4c9qWXe+VIeAbQ5FrDwciAkr+lzofXLz3Kuf26AOA== dependencies: async-limiter "~1.0.0" ws@^7.2.0, ws@^7.2.3: version "7.5.9" - resolved "https://registry.yarnpkg.com/ws/-/ws-7.5.9.tgz#54fa7db29f4c7cec68b1ddd3a89de099942bb591" + resolved "https://registry.npmjs.org/ws/-/ws-7.5.9.tgz" integrity sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q== +ws@^8.8.1: + version "8.14.1" + resolved "https://registry.yarnpkg.com/ws/-/ws-8.14.1.tgz#4b9586b4f70f9e6534c7bb1d3dc0baa8b8cf01e0" + integrity sha512-4OOseMUq8AzRBI/7SLMUwO+FEDnguetSk7KMb1sHwvF2w2Wv5Hoj0nlifx8vtGsftE/jWHojPy8sMMzYLJ2G/A== + xdg-basedir@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/xdg-basedir/-/xdg-basedir-3.0.0.tgz#496b2cc109eca8dbacfe2dc72b603c17c5870ad4" + resolved "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-3.0.0.tgz" integrity sha512-1Dly4xqlulvPD3fZUQJLY+FUIeqN3N2MM3uqe4rCJftAvOjFa3jFGfctOgluGx4ahPbUCsZkmJILiP0Vi4T6lQ== xdg-basedir@^4.0.0: version "4.0.0" - resolved "https://registry.yarnpkg.com/xdg-basedir/-/xdg-basedir-4.0.0.tgz#4bc8d9984403696225ef83a1573cbbcb4e79db13" + resolved "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-4.0.0.tgz" integrity sha512-PSNhEJDejZYV7h50BohL09Er9VaIefr2LMAf3OEmpCkjOi34eYyQYAXUTjEQtZJTKcF0E2UKTh+osDLsgNim9Q== xhr-request-promise@^0.1.2: version "0.1.3" - resolved "https://registry.yarnpkg.com/xhr-request-promise/-/xhr-request-promise-0.1.3.tgz#2d5f4b16d8c6c893be97f1a62b0ed4cf3ca5f96c" + resolved "https://registry.npmjs.org/xhr-request-promise/-/xhr-request-promise-0.1.3.tgz" integrity sha512-YUBytBsuwgitWtdRzXDDkWAXzhdGB8bYm0sSzMPZT7Z2MBjMSTHFsyCT1yCRATY+XC69DUrQraRAEgcoCRaIPg== dependencies: xhr-request "^1.1.0" xhr-request@^1.0.1, xhr-request@^1.1.0: version "1.1.0" - resolved "https://registry.yarnpkg.com/xhr-request/-/xhr-request-1.1.0.tgz#f4a7c1868b9f198723444d82dcae317643f2e2ed" + resolved "https://registry.npmjs.org/xhr-request/-/xhr-request-1.1.0.tgz" integrity sha512-Y7qzEaR3FDtL3fP30k9wO/e+FBnBByZeybKOhASsGP30NIkRAAkKD/sCnLvgEfAIEC1rcmK7YG8f4oEnIrrWzA== dependencies: buffer-to-arraybuffer "^0.0.5" @@ -27618,19 +28294,19 @@ xhr-request@^1.0.1, xhr-request@^1.1.0: xhr2-cookies@1.1.0: version "1.1.0" - resolved "https://registry.yarnpkg.com/xhr2-cookies/-/xhr2-cookies-1.1.0.tgz#7d77449d0999197f155cb73b23df72505ed89d48" + resolved "https://registry.npmjs.org/xhr2-cookies/-/xhr2-cookies-1.1.0.tgz" integrity sha512-hjXUA6q+jl/bd8ADHcVfFsSPIf+tyLIjuO9TwJC9WI6JP2zKcS7C+p56I9kCLLsaCiNT035iYvEUUzdEFj/8+g== dependencies: cookiejar "^2.1.1" xhr2@*: version "0.2.1" - resolved "https://registry.yarnpkg.com/xhr2/-/xhr2-0.2.1.tgz#4e73adc4f9cfec9cbd2157f73efdce3a5f108a93" + resolved "https://registry.npmjs.org/xhr2/-/xhr2-0.2.1.tgz" integrity sha512-sID0rrVCqkVNUn8t6xuv9+6FViXjUVXq8H5rWOH2rz9fDNQEd4g0EA2XlcEdJXRz5BMEn4O1pJFdT+z4YHhoWw== xhr@^2.0.4, xhr@^2.2.0, xhr@^2.3.3: version "2.6.0" - resolved "https://registry.yarnpkg.com/xhr/-/xhr-2.6.0.tgz#b69d4395e792b4173d6b7df077f0fc5e4e2b249d" + resolved "https://registry.npmjs.org/xhr/-/xhr-2.6.0.tgz" integrity sha512-/eCGLb5rxjx5e3mF1A7s+pLlR6CGyqWN91fv1JgER5mVWg1MZmlhBvy9kjcsOdRk8RrIujotWyJamfyrp+WIcA== dependencies: global "~4.4.0" @@ -27640,7 +28316,7 @@ xhr@^2.0.4, xhr@^2.2.0, xhr@^2.3.3: xml2js@0.5.0, xml2js@^0.5.0: version "0.5.0" - resolved "https://registry.yarnpkg.com/xml2js/-/xml2js-0.5.0.tgz#d9440631fbb2ed800203fad106f2724f62c493b7" + resolved "https://registry.npmjs.org/xml2js/-/xml2js-0.5.0.tgz" integrity sha512-drPFnkQJik/O+uPKpqSgr22mpuFHqKdbS835iAQrUC73L2F5WkboIRd63ai/2Yg6I1jzifPFKH2NTK+cfglkIA== dependencies: sax ">=0.6.0" @@ -27648,42 +28324,42 @@ xml2js@0.5.0, xml2js@^0.5.0: xml@^1.0.1: version "1.0.1" - resolved "https://registry.yarnpkg.com/xml/-/xml-1.0.1.tgz#78ba72020029c5bc87b8a81a3cfcd74b4a2fc1e5" + resolved "https://registry.npmjs.org/xml/-/xml-1.0.1.tgz" integrity sha512-huCv9IH9Tcf95zuYCsQraZtWnJvBtLVE0QHMOs8bWyZAFZNDcYjsPq1nEx8jKA9y+Beo9v+7OBPRisQTjinQMw== xmlbuilder@~11.0.0: version "11.0.1" - resolved "https://registry.yarnpkg.com/xmlbuilder/-/xmlbuilder-11.0.1.tgz#be9bae1c8a046e76b31127726347d0ad7002beb3" + resolved "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-11.0.1.tgz" integrity sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA== xmlcreate@^2.0.4: version "2.0.4" - resolved "https://registry.yarnpkg.com/xmlcreate/-/xmlcreate-2.0.4.tgz#0c5ab0f99cdd02a81065fa9cd8f8ae87624889be" + resolved "https://registry.npmjs.org/xmlcreate/-/xmlcreate-2.0.4.tgz" integrity sha512-nquOebG4sngPmGPICTS5EnxqhKbCmz5Ox5hsszI2T6U5qdrJizBc+0ilYSEjTSzU0yZcmvppztXe/5Al5fUwdg== xmlhttprequest@*, xmlhttprequest@1.8.0: version "1.8.0" - resolved "https://registry.yarnpkg.com/xmlhttprequest/-/xmlhttprequest-1.8.0.tgz#67fe075c5c24fef39f9d65f5f7b7fe75171968fc" + resolved "https://registry.npmjs.org/xmlhttprequest/-/xmlhttprequest-1.8.0.tgz" integrity sha512-58Im/U0mlVBLM38NdZjHyhuMtCqa61469k2YP/AaPbvCoV9aQGUpbJBj1QRm2ytRiVQBD/fsw7L2bJGDVQswBA== xorshift@^1.1.1: version "1.2.0" - resolved "https://registry.yarnpkg.com/xorshift/-/xorshift-1.2.0.tgz#30a4cdd8e9f8d09d959ed2a88c42a09c660e8148" + resolved "https://registry.npmjs.org/xorshift/-/xorshift-1.2.0.tgz" integrity sha512-iYgNnGyeeJ4t6U11NpA/QiKy+PXn5Aa3Azg5qkwIFz1tBLllQrjjsk9yzD7IAK0naNU4JxdeDgqW9ov4u/hc4g== xpath.js@~1.1.0: version "1.1.0" - resolved "https://registry.yarnpkg.com/xpath.js/-/xpath.js-1.1.0.tgz#3816a44ed4bb352091083d002a383dd5104a5ff1" + resolved "https://registry.npmjs.org/xpath.js/-/xpath.js-1.1.0.tgz" integrity sha512-jg+qkfS4K8E7965sqaUl8mRngXiKb3WZGfONgE18pr03FUQiuSV6G+Ej4tS55B+rIQSFEIw3phdVAQ4pPqNWfQ== xregexp@2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/xregexp/-/xregexp-2.0.0.tgz#52a63e56ca0b84a7f3a5f3d61872f126ad7a5943" + resolved "https://registry.npmjs.org/xregexp/-/xregexp-2.0.0.tgz" integrity sha512-xl/50/Cf32VsGq/1R8jJE5ajH1yMCQkpmoS10QbFZWl2Oor4H0Me64Pu2yxvsRWK3m6soJbmGfzSR7BYmDcWAA== xss@^1.0.8: version "1.0.14" - resolved "https://registry.yarnpkg.com/xss/-/xss-1.0.14.tgz#4f3efbde75ad0d82e9921cc3c95e6590dd336694" + resolved "https://registry.npmjs.org/xss/-/xss-1.0.14.tgz" integrity sha512-og7TEJhXvn1a7kzZGQ7ETjdQVS2UfZyTlsEdDOqvQF7GoxNfY+0YLCzBy1kPdsDDx4QuNAonQPddpsn6Xl/7sw== dependencies: commander "^2.20.3" @@ -27691,64 +28367,64 @@ xss@^1.0.8: xtend@^4.0.0, xtend@^4.0.1, xtend@^4.0.2, xtend@~4.0.0, xtend@~4.0.1: version "4.0.2" - resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54" + resolved "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz" integrity sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ== xtend@~2.1.1: version "2.1.2" - resolved "https://registry.yarnpkg.com/xtend/-/xtend-2.1.2.tgz#6efecc2a4dad8e6962c4901b337ce7ba87b5d28b" + resolved "https://registry.npmjs.org/xtend/-/xtend-2.1.2.tgz" integrity sha512-vMNKzr2rHP9Dp/e1NQFnLQlwlhp9L/LfvnsVdHxN1f+uggyVI3i08uD14GPvCToPkdsRfyPqIyYGmIk58V98ZQ== dependencies: object-keys "~0.4.0" y18n@^3.2.0, y18n@^3.2.1: version "3.2.2" - resolved "https://registry.yarnpkg.com/y18n/-/y18n-3.2.2.tgz#85c901bd6470ce71fc4bb723ad209b70f7f28696" + resolved "https://registry.npmjs.org/y18n/-/y18n-3.2.2.tgz" integrity sha512-uGZHXkHnhF0XeeAPgnKfPv1bgKAYyVvmNL1xlKsPYZPaIHxGti2hHqvOCQv71XMsLxu1QjergkqogUnms5D3YQ== y18n@^4.0.0: version "4.0.3" - resolved "https://registry.yarnpkg.com/y18n/-/y18n-4.0.3.tgz#b5f259c82cd6e336921efd7bfd8bf560de9eeedf" + resolved "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz" integrity sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ== y18n@^5.0.5: version "5.0.8" - resolved "https://registry.yarnpkg.com/y18n/-/y18n-5.0.8.tgz#7f4934d0f7ca8c56f95314939ddcd2dd91ce1d55" + resolved "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz" integrity sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA== yaeti@^0.0.6: version "0.0.6" - resolved "https://registry.yarnpkg.com/yaeti/-/yaeti-0.0.6.tgz#f26f484d72684cf42bedfb76970aa1608fbf9577" + resolved "https://registry.npmjs.org/yaeti/-/yaeti-0.0.6.tgz" integrity sha512-MvQa//+KcZCUkBTIC9blM+CU9J2GzuTytsOUwf2lidtvkx/6gnEp1QvJv34t9vdjhFmha/mUiNDbN0D0mJWdug== yallist@^2.0.0: version "2.1.2" - resolved "https://registry.yarnpkg.com/yallist/-/yallist-2.1.2.tgz#1c11f9218f076089a47dd512f93c6699a6a81d52" + resolved "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz" integrity sha512-ncTzHV7NvsQZkYe1DW7cbDLm0YpzHmZF5r/iyP3ZnQtMiJ+pjzisCiMNI+Sj+xQF5pXhSHxSB3uDbsBTzY/c2A== yallist@^3.0.0, yallist@^3.0.2, yallist@^3.1.1: version "3.1.1" - resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.1.1.tgz#dbb7daf9bfd8bac9ab45ebf602b8cbad0d5d08fd" + resolved "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz" integrity sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g== yallist@^4.0.0: version "4.0.0" - resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72" + resolved "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz" integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== yaml@^1.10.0, yaml@^1.10.2: version "1.10.2" - resolved "https://registry.yarnpkg.com/yaml/-/yaml-1.10.2.tgz#2301c5ffbf12b467de8da2333a459e29e7920e4b" + resolved "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz" integrity sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg== yaml@^2.2.1: - version "2.3.1" - resolved "https://registry.yarnpkg.com/yaml/-/yaml-2.3.1.tgz#02fe0975d23cd441242aa7204e09fc28ac2ac33b" - integrity sha512-2eHWfjaoXgTBC2jNM1LRef62VQa0umtvRiDSk6HSzW7RvS5YtkabJrwYLLEKWBc8a5U2PTSCs+dJjUTJdlHsWQ== + version "2.3.2" + resolved "https://registry.npmjs.org/yaml/-/yaml-2.3.2.tgz" + integrity sha512-N/lyzTPaJasoDmfV7YTrYCI0G/3ivm/9wdG0aHuheKowWQwGTsK0Eoiw6utmzAnI6pkJa0DUVygvp3spqqEKXg== yargs-parser@13.1.2, yargs-parser@^13.1.1, yargs-parser@^13.1.2: version "13.1.2" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-13.1.2.tgz#130f09702ebaeef2650d54ce6e3e5706f7a4fb38" + resolved "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.2.tgz" integrity sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg== dependencies: camelcase "^5.0.0" @@ -27756,17 +28432,17 @@ yargs-parser@13.1.2, yargs-parser@^13.1.1, yargs-parser@^13.1.2: yargs-parser@20.2.4: version "20.2.4" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.4.tgz#b42890f14566796f85ae8e3a25290d205f154a54" + resolved "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.4.tgz" integrity sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA== yargs-parser@21.1.1, yargs-parser@^21.0.1, yargs-parser@^21.1.1: version "21.1.1" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-21.1.1.tgz#9096bceebf990d21bb31fa9516e0ede294a77d35" + resolved "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz" integrity sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw== yargs-parser@^15.0.1: version "15.0.3" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-15.0.3.tgz#316e263d5febe8b38eef61ac092b33dfcc9b1115" + resolved "https://registry.npmjs.org/yargs-parser/-/yargs-parser-15.0.3.tgz" integrity sha512-/MVEVjTXy/cGAjdtQf8dW3V9b97bPN7rNn8ETj6BmAQL7ibC7O1Q9SPJbGjgh3SlwoBNXMzj/ZGIj8mBgl12YA== dependencies: camelcase "^5.0.0" @@ -27774,7 +28450,7 @@ yargs-parser@^15.0.1: yargs-parser@^2.4.1: version "2.4.1" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-2.4.1.tgz#85568de3cf150ff49fa51825f03a8c880ddcc5c4" + resolved "https://registry.npmjs.org/yargs-parser/-/yargs-parser-2.4.1.tgz" integrity sha512-9pIKIJhnI5tonzG6OnCFlz/yln8xHYcGl+pn3xR0Vzff0vzN1PbNRaelgfgRUwZ3s4i3jvxT9WhmUGL4whnasA== dependencies: camelcase "^3.0.0" @@ -27782,19 +28458,19 @@ yargs-parser@^2.4.1: yargs-parser@^20.2.2, yargs-parser@^20.2.3: version "20.2.9" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.9.tgz#2eb7dc3b0289718fc295f362753845c41a0c94ee" + resolved "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz" integrity sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w== yargs-parser@^9.0.2: version "9.0.2" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-9.0.2.tgz#9ccf6a43460fe4ed40a9bb68f48d43b8a68cc077" + resolved "https://registry.npmjs.org/yargs-parser/-/yargs-parser-9.0.2.tgz" integrity sha512-CswCfdOgCr4MMsT1GzbEJ7Z2uYudWyrGX8Bgh/0eyCzj/DXWdKq6a/ADufkzI1WAOIW6jYaXJvRyLhDO0kfqBw== dependencies: camelcase "^4.1.0" yargs-unparser@1.6.0: version "1.6.0" - resolved "https://registry.yarnpkg.com/yargs-unparser/-/yargs-unparser-1.6.0.tgz#ef25c2c769ff6bd09e4b0f9d7c605fb27846ea9f" + resolved "https://registry.npmjs.org/yargs-unparser/-/yargs-unparser-1.6.0.tgz" integrity sha512-W9tKgmSn0DpSatfri0nx52Joq5hVXgeLiqR/5G0sZNDoLZFOr/xjBUDcShCOGNsBnEMNo1KAMBkTej1Hm62HTw== dependencies: flat "^4.1.0" @@ -27803,7 +28479,7 @@ yargs-unparser@1.6.0: yargs-unparser@2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/yargs-unparser/-/yargs-unparser-2.0.0.tgz#f131f9226911ae5d9ad38c432fe809366c2325eb" + resolved "https://registry.npmjs.org/yargs-unparser/-/yargs-unparser-2.0.0.tgz" integrity sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA== dependencies: camelcase "^6.0.0" @@ -27813,7 +28489,7 @@ yargs-unparser@2.0.0: yargs@13.3.2, yargs@^13.2.4, yargs@^13.3.0: version "13.3.2" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-13.3.2.tgz#ad7ffefec1aa59565ac915f82dccb38a9c31a2dd" + resolved "https://registry.npmjs.org/yargs/-/yargs-13.3.2.tgz" integrity sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw== dependencies: cliui "^5.0.0" @@ -27829,7 +28505,7 @@ yargs@13.3.2, yargs@^13.2.4, yargs@^13.3.0: yargs@14.0.0: version "14.0.0" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-14.0.0.tgz#ba4cacc802b3c0b3e36a9e791723763d57a85066" + resolved "https://registry.npmjs.org/yargs/-/yargs-14.0.0.tgz" integrity sha512-ssa5JuRjMeZEUjg7bEL99AwpitxU/zWGAGpdj0di41pOEmJti8NR6kyUIJBkR78DTYNPZOU08luUo0GTHuB+ow== dependencies: cliui "^5.0.0" @@ -27846,7 +28522,7 @@ yargs@14.0.0: yargs@16.2.0, yargs@^16.2.0: version "16.2.0" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-16.2.0.tgz#1c82bf0f6b6a66eafce7ef30e376f49a12477f66" + resolved "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz" integrity sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw== dependencies: cliui "^7.0.2" @@ -27859,7 +28535,7 @@ yargs@16.2.0, yargs@^16.2.0: yargs@^11.0.0: version "11.1.1" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-11.1.1.tgz#5052efe3446a4df5ed669c995886cc0f13702766" + resolved "https://registry.npmjs.org/yargs/-/yargs-11.1.1.tgz" integrity sha512-PRU7gJrJaXv3q3yQZ/+/X6KBswZiaQ+zOmdprZcouPYtQgvNU35i+68M4b1ZHLZtYFT5QObFLV+ZkmJYcwKdiw== dependencies: cliui "^4.0.0" @@ -27877,7 +28553,7 @@ yargs@^11.0.0: yargs@^14.0.0: version "14.2.3" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-14.2.3.tgz#1a1c3edced1afb2a2fea33604bc6d1d8d688a414" + resolved "https://registry.npmjs.org/yargs/-/yargs-14.2.3.tgz" integrity sha512-ZbotRWhF+lkjijC/VhmOT9wSgyBQ7+zr13+YLkhfsSiTriYsMzkTUFP18pFhWwBeMa5gUc1MzbhrO6/VB7c9Xg== dependencies: cliui "^5.0.0" @@ -27892,9 +28568,9 @@ yargs@^14.0.0: y18n "^4.0.0" yargs-parser "^15.0.1" -yargs@^17.3.1, yargs@^17.5.1, yargs@^17.6.2: +yargs@^17.3.1, yargs@^17.5.1: version "17.7.1" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-17.7.1.tgz#34a77645201d1a8fc5213ace787c220eabbd0967" + resolved "https://registry.npmjs.org/yargs/-/yargs-17.7.1.tgz" integrity sha512-cwiTb08Xuv5fqF4AovYacTFNxk62th7LKJ6BL9IGUpTJrWoU7/7WdQGTP2SjKf1dUNBGzDd28p/Yfs/GI6JrLw== dependencies: cliui "^8.0.1" @@ -27905,9 +28581,22 @@ yargs@^17.3.1, yargs@^17.5.1, yargs@^17.6.2: y18n "^5.0.5" yargs-parser "^21.1.1" +yargs@^17.6.2: + version "17.7.2" + resolved "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz" + integrity sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w== + dependencies: + cliui "^8.0.1" + escalade "^3.1.1" + get-caller-file "^2.0.5" + require-directory "^2.1.1" + string-width "^4.2.3" + y18n "^5.0.5" + yargs-parser "^21.1.1" + yargs@^3.10.0: version "3.32.0" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-3.32.0.tgz#03088e9ebf9e756b69751611d2a5ef591482c995" + resolved "https://registry.npmjs.org/yargs/-/yargs-3.32.0.tgz" integrity sha512-ONJZiimStfZzhKamYvR/xvmgW3uEkAUFSP91y2caTEPhzF6uP2JfPiVZcq66b/YR0C3uitxSV7+T1x8p5bkmMg== dependencies: camelcase "^2.0.1" @@ -27920,7 +28609,7 @@ yargs@^3.10.0: yargs@^4.7.1: version "4.8.1" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-4.8.1.tgz#c0c42924ca4aaa6b0e6da1739dfb216439f9ddc0" + resolved "https://registry.npmjs.org/yargs/-/yargs-4.8.1.tgz" integrity sha512-LqodLrnIDM3IFT+Hf/5sxBnEGECrfdC1uIbgZeJmESCSo4HoCAaKEus8MylXHAkdacGc0ye+Qa+dpkuom8uVYA== dependencies: cliui "^3.2.0" @@ -27940,12 +28629,12 @@ yargs@^4.7.1: yarn@^1.21.1: version "1.22.19" - resolved "https://registry.yarnpkg.com/yarn/-/yarn-1.22.19.tgz#4ba7fc5c6e704fce2066ecbfb0b0d8976fe62447" + resolved "https://registry.npmjs.org/yarn/-/yarn-1.22.19.tgz" integrity sha512-/0V5q0WbslqnwP91tirOvldvYISzaqhClxzyUKXYxs07yUILIs5jx/k6CFe8bvKSkds5w+eiOqta39Wk3WxdcQ== yauzl@^2.4.2: version "2.10.0" - resolved "https://registry.yarnpkg.com/yauzl/-/yauzl-2.10.0.tgz#c7eb17c93e112cb1086fa6d8e51fb0667b79a5f9" + resolved "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz" integrity sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g== dependencies: buffer-crc32 "~0.2.3" @@ -27953,19 +28642,24 @@ yauzl@^2.4.2: yn@3.1.1, yn@^3.0.0: version "3.1.1" - resolved "https://registry.yarnpkg.com/yn/-/yn-3.1.1.tgz#1e87401a09d767c1d5eab26a6e4c185182d2eb50" + resolved "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz" integrity sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q== yocto-queue@^0.1.0: version "0.1.0" - resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b" + resolved "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz" integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q== zip-stream@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/zip-stream/-/zip-stream-4.1.0.tgz#51dd326571544e36aa3f756430b313576dc8fc79" - integrity sha512-zshzwQW7gG7hjpBlgeQP9RuyPGNxvJdzR8SUM3QhxCnLjWN2E7j3dOvpeDcQoETfHx0urRS7EtmVToql7YpU4A== + version "4.1.1" + resolved "https://registry.npmjs.org/zip-stream/-/zip-stream-4.1.1.tgz" + integrity sha512-9qv4rlDiopXg4E69k+vMHjNN63YFMe9sZMrdlvKnCjlCRWeCBswPPMPUfx+ipsAWq1LXHe70RcbaHdJJpS6hyQ== dependencies: - archiver-utils "^2.1.0" - compress-commons "^4.1.0" + archiver-utils "^3.0.4" + compress-commons "^4.1.2" readable-stream "^3.6.0" + +zod@^3.21.4: + version "3.22.2" + resolved "https://registry.yarnpkg.com/zod/-/zod-3.22.2.tgz#3add8c682b7077c05ac6f979fea6998b573e157b" + integrity sha512-wvWkphh5WQsJbVk1tbx1l1Ly4yg+XecD+Mq280uBGt9wa5BKSWf4Mhp6GmrkPixhMxmabYY7RbzlwVP32pbGCg== From f8fac0185287e1210858bdc16bc1f2fc6ab90828 Mon Sep 17 00:00:00 2001 From: Victoria <4222953+lvpeschke@users.noreply.github.com> Date: Wed, 20 Sep 2023 17:14:04 +0200 Subject: [PATCH 23/31] Refresh README.md (#10549) - Update build badge to reflect the migration from CircleCI to GitHub Actions - Remove issues badges for categories that are no longer in use - Update docs links --- README.md | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/README.md b/README.md index 3bdbcc5fa53..f415607c8b3 100644 --- a/README.md +++ b/README.md @@ -11,7 +11,7 @@ and other packages. The source code for the Celo Blockchain which operates a nod -[![CircleCI](https://img.shields.io/circleci/build/github/celo-org/celo-monorepo/master)](https://circleci.com/gh/celo-org/celo-monorepo/tree/master) +[![GitHub Actions](https://github.com/celo-org/celo-monorepo/actions/workflows/container-all-monorepo.yml/badge.svg)](https://github.com/celo-org/celo-monorepo/actions/workflows/container-all-monorepo.yml) [![Codecov](https://img.shields.io/codecov/c/github/celo-org/celo-monorepo)](https://codecov.io/gh/celo-org/celo-monorepo) [![GitHub contributors](https://img.shields.io/github/contributors/celo-org/celo-monorepo)](https://github.com/celo-org/celo-monorepo/graphs/contributors) [![GitHub commit activity](https://img.shields.io/github/commit-activity/w/celo-org/celo-monorepo)](https://github.com/celo-org/celo-monorepo/graphs/contributors) @@ -36,8 +36,6 @@ and other packages. The source code for the Celo Blockchain which operates a nod [![GitHub pull requests by-label](https://img.shields.io/github/issues-pr-raw/celo-org/celo-monorepo)](https://github.com/celo-org/celo-monorepo/pulls) [![GitHub Issues](https://img.shields.io/github/issues-raw/celo-org/celo-monorepo.svg)](https://github.com/celo-org/celo-monorepo/issues) [![GitHub issues by-label](https://img.shields.io/github/issues/celo-org/celo-monorepo/1%20hour%20tasks)](https://github.com/celo-org/celo-monorepo/issues?q=is%3Aopen+is%3Aissue+label%3A%221+hour+tasks%22) -[![GitHub issues by-label](https://img.shields.io/github/issues/celo-org/celo-monorepo/betanet-phase-2)](https://github.com/celo-org/celo-monorepo/issues?q=is%3Aopen+is%3Aissue+label%3Abetanet-phase-2) -[![GitHub issues by-label](https://img.shields.io/github/issues/celo-org/celo-monorepo/betanet-phase-3)](https://github.com/celo-org/celo-monorepo/issues?q=is%3Aopen+is%3Aissue+label%3Abetanet-phase-3) Contents: @@ -96,7 +94,7 @@ The Celo stack is structured into the following logical layers: Follow the instructions in [SETUP.md](SETUP.md) to get a development environment set up. -See [Developer's Guide](https://docs.celo.org/) for full details about the design of the Celo protocol and other information about running these projects. +See [Developer's Guide](https://docs.celo.org/developer) for full details about the design of the Celo protocol and other information about running these projects. ## 🙋 Issues @@ -111,9 +109,9 @@ The repository has the following packages (sub projects): - [dev-utils](packages/dev-utils) - a utils package for use as a dev dependency - [docs](packages/docs) - technical documentation for the Celo project ([live](https://docs.celo.org/)) - [helm-charts](packages/helm-charts) - (DEPRECATED) templatized deployments of entire environments to Kubernetes clusters. Check [celo-org/charts](https://github.com/celo-org/charts) instead. -- [protocol](packages/protocol) - identity, stability and other smart contracts for the Celo protocol ([docs](https://docs.celo.org/celo-codebase/protocol)) +- [protocol](packages/protocol) - identity, stability and other smart contracts for the Celo protocol ([docs](https://docs.celo.org/protocol)) - [sdk](packages/sdk) - Typescript packages for interacting with Celo, including Contracts, Wallets, Crypto++ -- [contractkit](packages/sdk/contractkit) - library to help developers and validators interact with the protocol and its smart contracts ([docs](https://docs.celo.org/developer-guide/contractkit)) +- [contractkit](packages/sdk/contractkit) - library to help developers and validators interact with the protocol and its smart contracts ([docs](https://docs.celo.org/developer/contractkit)) - [typescript](packages/typescript) - no README available (improve?) Code owners for each package can be found in [.github/CODEOWNERS](.github/CODEOWNERS). From 4b83666da7cb8c58d59a62ec6c11f7db51c2870f Mon Sep 17 00:00:00 2001 From: Victoria <4222953+lvpeschke@users.noreply.github.com> Date: Wed, 20 Sep 2023 18:09:21 +0200 Subject: [PATCH 24/31] Fix codecov: bare-bones config to get reporting back (#10548) * Add default rules for codecov * Add rule for code removal calculation * Remove mobile flag, no more package for it * Add per packages as components --- codecov.yml | 42 ++++++++++++++++++------------------------ 1 file changed, 18 insertions(+), 24 deletions(-) diff --git a/codecov.yml b/codecov.yml index 8e550ab2025..fce14024b46 100644 --- a/codecov.yml +++ b/codecov.yml @@ -1,29 +1,23 @@ coverage: status: project: - default: off - mobile: + default: + target: auto + threshold: null + removed_code_behavior: adjust_base + celotool: paths: - - packages/mobile/ - flags: - - mobile - threshold: 5% - target: 70% - # Protocol codecov disabled until coverage tests are fixed. - #protocol: - #paths: 'packages/protocol/' - #flags: protocol - #threshold: 5% - #target: 90% - #if_no_uploads: error - #if_not_found: success - #if_ci_failed: error + - packages/celotool + celocli: + paths: + - packages/cli + odis: + paths: + - packages/phone-number-privacy + protocol: + paths: + - packages/protocol + sdk: + paths: + - packages/sdk patch: off - -flags: - mobile: - paths: - - packages/mobile/ - #protocol: - #paths: - #- packages/protocol/ From 10367512c95077511941c6004cf485aa67f7a3d4 Mon Sep 17 00:00:00 2001 From: Victoria <4222953+lvpeschke@users.noreply.github.com> Date: Wed, 20 Sep 2023 19:42:57 +0200 Subject: [PATCH 25/31] Remove obsolete celotool functionality (#10559) * Remove * Remove Komenci support * Remove celotool support for cluster setup * Remove kong/konga tooling * Remove celotool AWS support * Remove celotool gcp proxy * Remove celotool links * Restore function still in use * Revert "Remove" --- .env.alfajores | 68 +- .env.oracledev | 9 +- .env.rc1 | 76 +- .gitignore | 1 - .vscode/launch.json | 16 - .../src/cmds/deploy/destroy/komenci.ts | 18 - .../src/cmds/deploy/initial/komenci.ts | 29 - .../celotool/src/cmds/deploy/initial/kong.ts | 20 - .../src/cmds/deploy/initial/setup-cluster.ts | 19 - .../src/cmds/deploy/upgrade/komenci.ts | 29 - .../celotool/src/cmds/deploy/upgrade/kong.ts | 20 - packages/celotool/src/cmds/gcp.ts | 7 - packages/celotool/src/cmds/links.ts | 134 -- packages/celotool/src/lib/aws.ts | 172 -- packages/celotool/src/lib/context-utils.ts | 34 +- packages/celotool/src/lib/env-utils.ts | 24 - packages/celotool/src/lib/fullnodes.ts | 15 - packages/celotool/src/lib/k8s-cluster/aws.ts | 68 - packages/celotool/src/lib/k8s-cluster/base.ts | 1 - .../celotool/src/lib/k8s-cluster/utils.ts | 3 - packages/celotool/src/lib/k8s-fullnode/aws.ts | 113 -- .../celotool/src/lib/k8s-fullnode/utils.ts | 3 - .../celotool/src/lib/k8s-oracle/aws-hsm.ts | 161 -- packages/celotool/src/lib/k8s-oracle/rbac.ts | 2 +- packages/celotool/src/lib/komenci.ts | 537 ------ packages/celotool/src/lib/kong.ts | 110 -- packages/celotool/src/lib/oracle.ts | 86 +- packages/celotool/src/lib/prometheus.ts | 1 - packages/celotool/src/lib/promtail.ts | 5 - packages/helm-charts/komenci-rbac/Chart.yaml | 5 - .../komenci-rbac/templates/_helper.tpl | 15 - .../komenci-rbac/templates/role.yaml | 27 - .../komenci-rbac/templates/rolebinding.yaml | 31 - .../templates/service-account.yaml | 17 - packages/helm-charts/komenci-rbac/values.yaml | 5 - packages/helm-charts/komenci/Chart.yaml | 9 - .../komenci/templates/_helpers.tpl | 92 - .../templates/azure-identity-binding.yaml | 25 - .../komenci/templates/azure-identity.yaml | 31 - .../templates/logging-agent-config.yaml | 124 -- .../komenci/templates/logging-agent.yaml | 84 - .../templates/onboarding-deployment.yaml | 84 - .../komenci/templates/onboarding-ingress.yaml | 30 - .../komenci/templates/onboarding-service.yaml | 14 - .../templates/relayer-statefulset.yaml | 135 -- .../komenci/templates/rewards-deployment.yaml | 47 - .../rewards-relayer-statefulset.yaml | 128 -- .../komenci/templates/rewards-service.yaml | 14 - packages/helm-charts/komenci/values.yaml | 125 -- packages/helm-charts/kong/.helmignore | 21 - packages/helm-charts/kong/Chart.lock | 12 - packages/helm-charts/kong/Chart.yaml | 37 - packages/helm-charts/kong/README.md | 502 ------ .../kong/ci/values-editing-containers.yaml | 116 -- .../kong/ci/values-external-cassandra.yaml | 13 - .../kong/ci/values-external-postgresql.yaml | 8 - .../helm-charts/kong/ci/values-ingress.yaml | 2 - .../kong/ci/values-metrics-hpa-pdb.yaml | 7 - .../crds/custom-resource-definitions.yaml | 426 ----- packages/helm-charts/kong/kong.conf | 1512 ----------------- packages/helm-charts/kong/templates/NOTES.txt | 95 -- .../helm-charts/kong/templates/_helpers.tpl | 217 --- .../helm-charts/kong/templates/dep-ds.yaml | 359 ---- .../templates/external-database-secret.yaml | 23 - .../kong/templates/extra-list.yaml | 4 - packages/helm-charts/kong/templates/hpa.yaml | 24 - .../templates/ingress-controller-rbac.yaml | 187 -- .../helm-charts/kong/templates/ingress.yaml | 58 - .../kong/templates/kong-prometheus-role.yaml | 11 - .../kong-prometheus-rolebinding.yaml | 19 - .../kong/templates/kong-script-configmap.yaml | 47 - .../templates/metrics-exporter-configmap.yaml | 30 - .../templates/metrics-script-configmap.yaml | 36 - .../kong/templates/metrics-service.yaml | 36 - .../kong/templates/migrate-job.yaml | 113 -- packages/helm-charts/kong/templates/pdb.yaml | 25 - .../helm-charts/kong/templates/service.yaml | 74 - .../kong/templates/servicemonitor.yaml | 37 - .../kong/templates/tls-secrets.yaml | 43 - packages/helm-charts/kong/values-clabs.yaml | 39 - packages/helm-charts/kong/values.yaml | 694 -------- packages/helm-charts/konga/.helmignore | 22 - packages/helm-charts/konga/Chart.yaml | 5 - packages/helm-charts/konga/README.md | 0 .../helm-charts/konga/httpie-jq.Dockerfile | 3 - .../helm-charts/konga/templates/NOTES.txt | 21 - .../helm-charts/konga/templates/_helpers.tpl | 43 - .../konga/templates/configmap-snapshot.yaml | 449 ----- .../konga/templates/configmap.yaml | 52 - .../konga/templates/deployment.yaml | 104 -- .../helm-charts/konga/templates/ingress.yaml | 39 - .../helm-charts/konga/templates/service.yaml | 19 - .../templates/tests/test-connection.yaml | 18 - packages/helm-charts/konga/values.yaml | 93 - 94 files changed, 8 insertions(+), 8510 deletions(-) delete mode 100644 packages/celotool/src/cmds/deploy/destroy/komenci.ts delete mode 100644 packages/celotool/src/cmds/deploy/initial/komenci.ts delete mode 100644 packages/celotool/src/cmds/deploy/initial/kong.ts delete mode 100644 packages/celotool/src/cmds/deploy/initial/setup-cluster.ts delete mode 100644 packages/celotool/src/cmds/deploy/upgrade/komenci.ts delete mode 100644 packages/celotool/src/cmds/deploy/upgrade/kong.ts delete mode 100644 packages/celotool/src/cmds/gcp.ts delete mode 100644 packages/celotool/src/cmds/links.ts delete mode 100644 packages/celotool/src/lib/aws.ts delete mode 100644 packages/celotool/src/lib/k8s-cluster/aws.ts delete mode 100644 packages/celotool/src/lib/k8s-fullnode/aws.ts delete mode 100644 packages/celotool/src/lib/k8s-oracle/aws-hsm.ts delete mode 100644 packages/celotool/src/lib/komenci.ts delete mode 100644 packages/celotool/src/lib/kong.ts delete mode 100644 packages/helm-charts/komenci-rbac/Chart.yaml delete mode 100644 packages/helm-charts/komenci-rbac/templates/_helper.tpl delete mode 100644 packages/helm-charts/komenci-rbac/templates/role.yaml delete mode 100644 packages/helm-charts/komenci-rbac/templates/rolebinding.yaml delete mode 100644 packages/helm-charts/komenci-rbac/templates/service-account.yaml delete mode 100644 packages/helm-charts/komenci-rbac/values.yaml delete mode 100644 packages/helm-charts/komenci/Chart.yaml delete mode 100644 packages/helm-charts/komenci/templates/_helpers.tpl delete mode 100644 packages/helm-charts/komenci/templates/azure-identity-binding.yaml delete mode 100644 packages/helm-charts/komenci/templates/azure-identity.yaml delete mode 100644 packages/helm-charts/komenci/templates/logging-agent-config.yaml delete mode 100644 packages/helm-charts/komenci/templates/logging-agent.yaml delete mode 100644 packages/helm-charts/komenci/templates/onboarding-deployment.yaml delete mode 100644 packages/helm-charts/komenci/templates/onboarding-ingress.yaml delete mode 100644 packages/helm-charts/komenci/templates/onboarding-service.yaml delete mode 100644 packages/helm-charts/komenci/templates/relayer-statefulset.yaml delete mode 100644 packages/helm-charts/komenci/templates/rewards-deployment.yaml delete mode 100644 packages/helm-charts/komenci/templates/rewards-relayer-statefulset.yaml delete mode 100644 packages/helm-charts/komenci/templates/rewards-service.yaml delete mode 100644 packages/helm-charts/komenci/values.yaml delete mode 100644 packages/helm-charts/kong/.helmignore delete mode 100644 packages/helm-charts/kong/Chart.lock delete mode 100644 packages/helm-charts/kong/Chart.yaml delete mode 100644 packages/helm-charts/kong/README.md delete mode 100644 packages/helm-charts/kong/ci/values-editing-containers.yaml delete mode 100644 packages/helm-charts/kong/ci/values-external-cassandra.yaml delete mode 100644 packages/helm-charts/kong/ci/values-external-postgresql.yaml delete mode 100644 packages/helm-charts/kong/ci/values-ingress.yaml delete mode 100644 packages/helm-charts/kong/ci/values-metrics-hpa-pdb.yaml delete mode 100644 packages/helm-charts/kong/crds/custom-resource-definitions.yaml delete mode 100644 packages/helm-charts/kong/kong.conf delete mode 100644 packages/helm-charts/kong/templates/NOTES.txt delete mode 100644 packages/helm-charts/kong/templates/_helpers.tpl delete mode 100644 packages/helm-charts/kong/templates/dep-ds.yaml delete mode 100644 packages/helm-charts/kong/templates/external-database-secret.yaml delete mode 100644 packages/helm-charts/kong/templates/extra-list.yaml delete mode 100644 packages/helm-charts/kong/templates/hpa.yaml delete mode 100644 packages/helm-charts/kong/templates/ingress-controller-rbac.yaml delete mode 100644 packages/helm-charts/kong/templates/ingress.yaml delete mode 100644 packages/helm-charts/kong/templates/kong-prometheus-role.yaml delete mode 100644 packages/helm-charts/kong/templates/kong-prometheus-rolebinding.yaml delete mode 100644 packages/helm-charts/kong/templates/kong-script-configmap.yaml delete mode 100644 packages/helm-charts/kong/templates/metrics-exporter-configmap.yaml delete mode 100644 packages/helm-charts/kong/templates/metrics-script-configmap.yaml delete mode 100644 packages/helm-charts/kong/templates/metrics-service.yaml delete mode 100644 packages/helm-charts/kong/templates/migrate-job.yaml delete mode 100644 packages/helm-charts/kong/templates/pdb.yaml delete mode 100644 packages/helm-charts/kong/templates/service.yaml delete mode 100644 packages/helm-charts/kong/templates/servicemonitor.yaml delete mode 100644 packages/helm-charts/kong/templates/tls-secrets.yaml delete mode 100644 packages/helm-charts/kong/values-clabs.yaml delete mode 100644 packages/helm-charts/kong/values.yaml delete mode 100644 packages/helm-charts/konga/.helmignore delete mode 100644 packages/helm-charts/konga/Chart.yaml delete mode 100644 packages/helm-charts/konga/README.md delete mode 100644 packages/helm-charts/konga/httpie-jq.Dockerfile delete mode 100644 packages/helm-charts/konga/templates/NOTES.txt delete mode 100644 packages/helm-charts/konga/templates/_helpers.tpl delete mode 100644 packages/helm-charts/konga/templates/configmap-snapshot.yaml delete mode 100644 packages/helm-charts/konga/templates/configmap.yaml delete mode 100644 packages/helm-charts/konga/templates/deployment.yaml delete mode 100644 packages/helm-charts/konga/templates/ingress.yaml delete mode 100644 packages/helm-charts/konga/templates/service.yaml delete mode 100644 packages/helm-charts/konga/templates/tests/test-connection.yaml delete mode 100644 packages/helm-charts/konga/values.yaml diff --git a/.env.alfajores b/.env.alfajores index dec5baa3993..d2923c2b744 100644 --- a/.env.alfajores +++ b/.env.alfajores @@ -8,14 +8,6 @@ CLUSTER_DOMAIN_NAME="celo-testnet" TESTNET_PROJECT_NAME="celo-testnet-production" -AZURE_KOMENCI_EASTUS_AZURE_SUBSCRIPTION_ID=97e2b592-255b-4f92-bce0-127257163c36 -AZURE_KOMENCI_EASTUS_AZURE_TENANT_ID=7cb7628a-e37c-4afb-8332-2029e418980e -AZURE_KOMENCI_EASTUS_AZURE_REGION_NAME=eus - -AZURE_KOMENCI_WESTEU_AZURE_SUBSCRIPTION_ID=97e2b592-255b-4f92-bce0-127257163c36 -AZURE_KOMENCI_WESTEU_AZURE_TENANT_ID=7cb7628a-e37c-4afb-8332-2029e418980e -AZURE_KOMENCI_WESTEU_AZURE_REGION_NAME=weu - BLOCKSCOUT_DOCKER_IMAGE_TAG="0362f9f4d1d4842f27adb634d628f969f53c046d" # Assign a new value everytime you redeploy blockscout. Or else the deployment will fail due to the # existing database. @@ -129,7 +121,7 @@ MOBILE_WALLET_PLAYSTORE_LINK="https://play.google.com/apps/internaltest/47009904 # each context should have its own environment variables, generally of the form # _* -CONTEXTS=azure-komenci-eastus,azure-komenci-westeu,azure-oracle-centralus,azure-odis-eastus-1,azure-odis-eastus-2,azure-odis-eastus-3 +CONTEXTS=azure-oracle-centralus,azure-odis-eastus-1,azure-odis-eastus-2,azure-odis-eastus-3 # --- ODIS --- @@ -240,64 +232,6 @@ AZURE_ODIS_EASTUS_3_PROM_SIDECAR_GCP_PROJECT=celo-phone-number-privacy AZURE_ODIS_EASTUS_3_PROM_SIDECAR_GCP_REGION=us-east1 AZURE_ODIS_EASTUS_3_PROM_SIDECAR_DISABLED="true" -# --- Komenci --- - -KOMENCI_DOCKER_IMAGE_REPOSITORY="celotestnet.azurecr.io/komenci/komenci" -KOMENCI_DOCKER_IMAGE_TAG="08081d2d276a6fd0d420805f3bbe3866e866a63a" - -AZURE_KOMENCI_EASTUS_AZURE_KUBERNETES_RESOURCE_GROUP=staging-komenci-eastus -AZURE_KOMENCI_EASTUS_KUBERNETES_CLUSTER_NAME=staging-komenci-eastus -AZURE_KOMENCI_EASTUS_REGION_NAME=eus - -AZURE_KOMENCI_EASTUS_KOMENCI_DB_HOST=staging-komenci-eastus.postgres.database.azure.com -AZURE_KOMENCI_EASTUS_KOMENCI_DB_PORT=5432 -AZURE_KOMENCI_EASTUS_KOMENCI_DB_USERNAME=postgres@staging-komenci-eastus -AZURE_KOMENCI_EASTUS_KOMENCI_DB_PASSWORD_VAULT_NAME=staging-komenci-eus - -AZURE_KOMENCI_WESTEU_AZURE_KUBERNETES_RESOURCE_GROUP=staging-komenci-weu -AZURE_KOMENCI_WESTEU_KUBERNETES_CLUSTER_NAME=staging-komenci-weu -AZURE_KOMENCI_WESTEU_REGION_NAME=weu - -AZURE_KOMENCI_WESTEU_KOMENCI_DB_HOST=staging-komenci-weu.postgres.database.azure.com -AZURE_KOMENCI_WESTEU_KOMENCI_DB_PORT=5432 -AZURE_KOMENCI_WESTEU_KOMENCI_DB_USERNAME=postgres@staging-komenci-weu -AZURE_KOMENCI_WESTEU_KOMENCI_DB_PASSWORD_VAULT_NAME=staging-komenci-weu - -AZURE_KOMENCI_EASTUS_KOMENCI_REWARD_SERVICE_DB_HOST=staging-komenci-weu.postgres.database.azure.com -AZURE_KOMENCI_EASTUS_KOMENCI_REWARD_SERVICE_DB_PORT=5432 -AZURE_KOMENCI_EASTUS_KOMENCI_REWARD_SERVICE_DB_USERNAME=postgres@staging-komenci-weu -AZURE_KOMENCI_EASTUS_KOMENCI_REWARD_SERVICE_DB_PASSWORD_VAULT_NAME=staging-komenci-weu - -AZURE_KOMENCI_WESTEU_KOMENCI_REWARD_SERVICE_DB_HOST=staging-komenci-weu.postgres.database.azure.com -AZURE_KOMENCI_WESTEU_KOMENCI_REWARD_SERVICE_DB_PORT=5432 -AZURE_KOMENCI_WESTEU_KOMENCI_REWARD_SERVICE_DB_USERNAME=postgres@staging-komenci-weu -AZURE_KOMENCI_WESTEU_KOMENCI_REWARD_SERVICE_DB_PASSWORD_VAULT_NAME=staging-komenci-weu - -# Secrets -AZURE_KOMENCI_EASTUS_KOMENCI_APP_SECRETS_VAULT_NAME=staging-komenci-eus -AZURE_KOMENCI_WESTEU_KOMENCI_APP_SECRETS_VAULT_NAME=staging-komenci-weu - -# Rule config > Captcha -KOMENCI_RULE_CONFIG_CAPTCHA_BYPASS_TOKEN=special-captcha-bypass-token -AZURE_KOMENCI_EASTUS_KOMENCI_RULE_CONFIG_CAPTCHA_BYPASS_ENABLED=true -AZURE_KOMENCI_WESTEU_KOMENCI_RULE_CONFIG_CAPTCHA_BYPASS_ENABLED=true - -# Format should be a comma-separated sequence of: -#
:: -AZURE_KOMENCI_EASTUS_KOMENCI_ADDRESS_AZURE_KEY_VAULTS=0x00454cac6dae53f8800f71395b9a174f07a784b1:staging-komenci-eus,0xc6f0f9bfb1aed83620ece3eac0add98a65a8574e:staging-komenci-eus -AZURE_KOMENCI_WESTEU_KOMENCI_ADDRESS_AZURE_KEY_VAULTS=0x0f812be74511b90ea6b2f80e77bea047e69a0b2a:staging-komenci-weu,0xb354d3d2908ba6a2b791683b0f454a38f69cb282:staging-komenci-weu -AZURE_KOMENCI_EASTUS_KOMENCI_CELOLABS_REWARDS_ADDRESS_AZURE_KEY_VAULTS=0xb04390478a57e3c2147599d5380434f25fa5234d:staging-komenci-rewards -AZURE_KOMENCI_WESTEU_KOMENCI_CELOLABS_REWARDS_ADDRESS_AZURE_KEY_VAULTS=0xb04390478a57e3c2147599d5380434f25fa5234d:staging-komenci-rewards - -# Celo Rewards -AZURE_KOMENCI_EASTUS_KOMENCI_REWARD_SERVICE_INSTANCE_COUNT = 1 -AZURE_KOMENCI_WESTEU_KOMENCI_REWARD_SERVICE_INSTANCE_COUNT = 1 -KOMENCI_SHOULD_SEND_REWARDS=true - -# Network -AZURE_KOMENCI_EASTUS_KOMENCI_NETWORK=alfajores -AZURE_KOMENCI_WESTEU_KOMENCI_NETWORK=alfajores - # For WalletConnect relay WALLET_CONNECT_IMAGE_REPOSITORY = 'us.gcr.io/celo-testnet/walletconnect' WALLET_CONNECT_IMAGE_TAG = '1472bcaad57e3746498f7a661c42ff5cf9acaf5a' diff --git a/.env.oracledev b/.env.oracledev index f9ddf450abf..2cda4367b37 100644 --- a/.env.oracledev +++ b/.env.oracledev @@ -5,7 +5,7 @@ ORACLE_UNUSED_ORACLE_ADDRESSES= # each context should have its own environment variables, generally of the form # _* -CONTEXTS=azure-eastus,aws-test,gcp-test,gcp-test-asia +CONTEXTS=azure-eastus,gcp-test,gcp-test-asia FORNO_FULL_NODE_CONTEXTS=gcp-test,gcp-test-asia FORNO_DOMAINS=oracledev-forno.celo-networks-dev.org. @@ -23,15 +23,8 @@ AZURE_EASTUS_CELOUSD_ORACLE_ADDRESS_AZURE_KEY_VAULTS=0x21860ca3a0a6f7e450b8f24bd AZURE_EASTUS_FULL_NODES_COUNT=2 AZURE_EASTUS_FULL_NODES_DISK_SIZE=10 -AWS_TEST_AWS_KUBERNETES_CLUSTER_REGION=us-west-2 -AWS_TEST_AWS_KUBERNETES_RESOURCE_GROUP=adorable-monster-1597251246 -AWS_TEST_KUBERNETES_CLUSTER_NAME=adorable-monster-1597251246 # Format should be a comma-separated sequence of: #
:: -AWS_TEST_CELOUSD_ORACLE_ADDRESS_AWS_KEY_ALIASES=0xf7af8e3f613e5cb210f6f96b46da41fb91338e95:test-ecc-key:eu-central-1,0x3ec7d9e8e13c85b9ed38039d8f9807534f73f713:trevor-test-ecc-key:eu-central-1 -AWS_TEST_FULL_NODES_COUNT=2 -AWS_TEST_FULL_NODES_DISK_SIZE=10 - GCP_TEST_GCP_PROJECT_NAME=celo-testnet GCP_TEST_GCP_ZONE=us-west4-a GCP_TEST_KUBERNETES_CLUSTER_NAME=federated-dev-us-west4-a diff --git a/.env.rc1 b/.env.rc1 index 3628fd88617..02d0a5574bf 100644 --- a/.env.rc1 +++ b/.env.rc1 @@ -13,13 +13,6 @@ CLUSTER_DOMAIN_NAME="celo-testnet" TESTNET_PROJECT_NAME="celo-testnet-production" -AZURE_KOMENCI_SOUTHBR_AZURE_SUBSCRIPTION_ID=7a6f5f20-bd43-4267-8c35-a734efca140c -AZURE_KOMENCI_SOUTHBR_AZURE_TENANT_ID=7cb7628a-e37c-4afb-8332-2029e418980e -AZURE_KOMENCI_SOUTHBR_AZURE_REGION_NAME=br -AZURE_KOMENCI_SEA_AZURE_SUBSCRIPTION_ID=7a6f5f20-bd43-4267-8c35-a734efca140c -AZURE_KOMENCI_SEA_AZURE_TENANT_ID=7cb7628a-e37c-4afb-8332-2029e418980e -AZURE_KOMENCI_SEA_AZURE_REGION_NAME=sea - BLOCKSCOUT_DOCKER_IMAGE_TAG="0362f9f4d1d4842f27adb634d628f969f53c046d" BLOCKSCOUT_DB_SUFFIX=3 @@ -63,10 +56,10 @@ GSTORAGE_DATA_BUCKET=celo-chain-backup/mainnet # ---- Contexts ---- -# A list of every valid context. Must start with one of: gcp,aws,azure +# A list of every valid context. Must start with one of: gcp,azure # each context should have its own environment variables, generally of the form # _* -CONTEXTS=azure-oracle-westus,azure-oracle-westeurope,azure-oracle-eastus2,gcp-forno-us-west1,gcp-forno-us-east1,gcp-forno-asia-east1,gcp-forno-europe-west1,gcp-forno-southamerica-east1,azure-komenci-southbr,azure-komenci-sea,azure-odis-westus2-a,azure-odis-eastasia-a,azure-odis-westeurope-a,azure-odis-brazilsouth-a,gcp-private-txnodes +CONTEXTS=azure-oracle-westus,azure-oracle-westeurope,azure-oracle-eastus2,gcp-forno-us-west1,gcp-forno-us-east1,gcp-forno-asia-east1,gcp-forno-europe-west1,gcp-forno-southamerica-east1,azure-odis-westus2-a,azure-odis-eastasia-a,azure-odis-westeurope-a,azure-odis-brazilsouth-a,gcp-private-txnodes # ---- Oracle Contexts ---- @@ -465,71 +458,6 @@ AZURE_ODIS_BRAZILSOUTH_A_PROM_SIDECAR_GCP_PROJECT=celo-pgpnp-mainnet AZURE_ODIS_BRAZILSOUTH_A_PROM_SIDECAR_GCP_REGION=southamerica-east1-a AZURE_ODIS_BRAZILSOUTH_A_PROM_SIDECAR_DISABLED="true" -# --- Komenci --- - -KOMENCI_DOCKER_IMAGE_REPOSITORY="celotestnet.azurecr.io/komenci/komenci" -KOMENCI_DOCKER_IMAGE_TAG="e220c5610e196a1d674edde0f24be0d5eca30c00" - -AZURE_KOMENCI_SOUTHBR_AZURE_KUBERNETES_RESOURCE_GROUP=mainnet-komenci-brazil -AZURE_KOMENCI_SOUTHBR_KUBERNETES_CLUSTER_NAME=mainnet-komenci-brazil - -AZURE_KOMENCI_SOUTHBR_KOMENCI_DB_HOST=mainnet-komenci-brazil.postgres.database.azure.com -AZURE_KOMENCI_SOUTHBR_KOMENCI_DB_PORT=5432 -AZURE_KOMENCI_SOUTHBR_KOMENCI_DB_USERNAME=postgres@mainnet-komenci-brazil -AZURE_KOMENCI_SOUTHBR_KOMENCI_DB_PASSWORD_VAULT_NAME=mainnet-komenci-brazil - -AZURE_KOMENCI_SEA_AZURE_KUBERNETES_RESOURCE_GROUP=mainnet-komenci-southeastasia -AZURE_KOMENCI_SEA_KUBERNETES_CLUSTER_NAME=mainnet-komenci-southeastasia - -AZURE_KOMENCI_SEA_KOMENCI_DB_HOST=mainnet-komenci-southeastasia.postgres.database.azure.com -AZURE_KOMENCI_SEA_KOMENCI_DB_PORT=5432 -AZURE_KOMENCI_SEA_KOMENCI_DB_USERNAME=postgres@mainnet-komenci-southeastasia -AZURE_KOMENCI_SEA_KOMENCI_DB_PASSWORD_VAULT_NAME=mainnet-komenci-sea - -AZURE_SEA_KOMENCI_AZURE_KUBERNETES_RESOURCE_GROUP=mainnet-komenci-southeastasia -AZURE_SEA_KOMENCI_KUBERNETES_CLUSTER_NAME=mainnet-komenci-southeastasia - -AZURE_SEA_KOMENCI_DB_HOST=mainnet-komenci-southeastasia.postgres.database.azure.com -AZURE_SEA_KOMENCI_DB_PORT=5432 -AZURE_SEA_KOMENCI_DB_USERNAME=postgres@mainnet-komenci-southeastasia -AZURE_SEA_KOMENCI_DB_PASSWORD_VAULT_NAME=mainnet-komenci-sea - -AZURE_KOMENCI_SOUTHBR_KOMENCI_REWARD_SERVICE_DB_HOST=mainnet-komenci-brazil.postgres.database.azure.com -AZURE_KOMENCI_SOUTHBR_KOMENCI_REWARD_SERVICE_DB_PORT=5432 -AZURE_KOMENCI_SOUTHBR_KOMENCI_REWARD_SERVICE_DB_USERNAME=postgres@mainnet-komenci-brazil -AZURE_KOMENCI_SOUTHBR_KOMENCI_REWARD_SERVICE_DB_PASSWORD_VAULT_NAME=mainnet-komenci-brazil - -AZURE_KOMENCI_SEA_KOMENCI_REWARD_SERVICE_DB_HOST=mainnet-komenci-brazil.postgres.database.azure.com -AZURE_KOMENCI_SEA_KOMENCI_REWARD_SERVICE_DB_PORT=5432 -AZURE_KOMENCI_SEA_KOMENCI_REWARD_SERVICE_DB_USERNAME=postgres@mainnet-komenci-brazil -AZURE_KOMENCI_SEA_KOMENCI_REWARD_SERVICE_DB_PASSWORD_VAULT_NAME=mainnet-komenci-brazil - -# App Secrets -AZURE_KOMENCI_SOUTHBR_KOMENCI_APP_SECRETS_VAULT_NAME=mainnet-komenci-brazil -AZURE_KOMENCI_SEA_KOMENCI_APP_SECRETS_VAULT_NAME=mainnet-komenci-sea - -# Rule config > Captcha -KOMENCI_RULE_CONFIG_CAPTCHA_BYPASS_TOKEN=special-captcha-bypass-token -AZURE_KOMENCI_SOUTHBR_KOMENCI_RULE_CONFIG_CAPTCHA_BYPASS_ENABLED=false -AZURE_KOMENCI_SEA_KOMENCI_RULE_CONFIG_CAPTCHA_BYPASS_ENABLED=false - -# Relayer identities -# Format should be a comma-separated sequence of: -#
:: -AZURE_KOMENCI_SOUTHBR_KOMENCI_ADDRESS_AZURE_KEY_VAULTS=0x21888ae301658cdff7ce8c33cdf83a330a5e6273:mainnet-relayer0,0x1438128a2dcc645f0b9706350c1f5dad04845fe6:mainnet-relayer1,0x1e36bf42272a0693eba69332a6f623ce37694a27:mainnet-relayer2,0xd5afaaa7256c9eb86376c4214635dd56dffbd3a8:mainnet-relayer3,0xb09eba8bc1c8bedadd634a8219c0b09042170903:mainnet-relayer4 -AZURE_KOMENCI_SEA_KOMENCI_ADDRESS_AZURE_KEY_VAULTS=0x85a1e716608a84f455d7e07befb76c9b540ac040:mainnet-relayer5,0x2a094e77acf3faebb63279eb60e26d144b9048a2:mainnet-relayer6,0x2f23f9a8f68294a9d6b479c3dbe3dff4de510ced:mainnet-relayer7,0x3db3150c1267d3adeb7f960f3eef11c1dd47a38b:mainnet-relayer8,0xe170915ce32bb8e2ce2a4fcd9113e5298a2e10d2:mainnet-relayer9 -AZURE_KOMENCI_SOUTHBR_KOMENCI_CELOLABS_REWARDS_ADDRESS_AZURE_KEY_VAULTS=0x198e0D8601AB509ABf1B0B99Fd8f234583Ef1309:mainnet-komenci-rewards0 -AZURE_KOMENCI_SEA_KOMENCI_CELOLABS_REWARDS_ADDRESS_AZURE_KEY_VAULTS=0xbDD68B64e288171B37F01346042BEe6Eb7dFAE4f:mainnet-komenci-rewards1 - -# Celo Rewards -AZURE_KOMENCI_SOUTHBR_KOMENCI_REWARD_SERVICE_INSTANCE_COUNT=1 -AZURE_KOMENCI_SEA_KOMENCI_REWARD_SERVICE_INSTANCE_COUNT=1 -KOMENCI_SHOULD_SEND_REWARDS=false - -# Network -AZURE_KOMENCI_SOUTHBR_KOMENCI_NETWORK=rc1 -AZURE_KOMENCI_SEA_KOMENCI_NETWORK=rc1 - # For WalletConnect relay WALLET_CONNECT_IMAGE_REPOSITORY='us.gcr.io/celo-testnet/walletconnect' WALLET_CONNECT_IMAGE_TAG='1472bcaad57e3746498f7a661c42ff5cf9acaf5a' diff --git a/.gitignore b/.gitignore index e16846bfe91..27019af91b6 100644 --- a/.gitignore +++ b/.gitignore @@ -96,7 +96,6 @@ packages/docs/_book/ # old packages packages/reserve-site/* packages/blockchain-api/* -packages/komencikit/* packages/mobile/* packages/faucet/* packages/moonpay-auth/* diff --git a/.vscode/launch.json b/.vscode/launch.json index f0d42e1317a..79c6a7e4ae8 100644 --- a/.vscode/launch.json +++ b/.vscode/launch.json @@ -48,22 +48,6 @@ "console": "integratedTerminal", "internalConsoleOptions": "neverOpen", "port": 9229 - }, - { - "name": "Debug Komencikit Tests", - "type": "node", - "request": "launch", - "runtimeArgs": [ - "--inspect-brk", - "${workspaceRoot}/node_modules/.bin/jest", - "--rootDir", - "${workspaceFolder}/packages/komencikit", - "--runInBand", - "${workspaceFolder}/packages/komencikit/src/kit.spec.ts", - ], - "console": "integratedTerminal", - "internalConsoleOptions": "neverOpen", - "port": 9229 } ] } \ No newline at end of file diff --git a/packages/celotool/src/cmds/deploy/destroy/komenci.ts b/packages/celotool/src/cmds/deploy/destroy/komenci.ts deleted file mode 100644 index 85cc44189b9..00000000000 --- a/packages/celotool/src/cmds/deploy/destroy/komenci.ts +++ /dev/null @@ -1,18 +0,0 @@ -import { addContextMiddleware, ContextArgv, switchToContextCluster } from 'src/lib/context-utils' -import { exitIfCelotoolHelmDryRun } from 'src/lib/helm_deploy' -import { removeHelmRelease } from 'src/lib/komenci' -import { DestroyArgv } from '../destroy' - -export const command = 'komenci' - -export const describe = 'destroy the komenci package' - -type KomenciDestroyArgv = DestroyArgv & ContextArgv - -export const builder = addContextMiddleware - -export const handler = async (argv: KomenciDestroyArgv) => { - exitIfCelotoolHelmDryRun() - await switchToContextCluster(argv.celoEnv, argv.context) - await removeHelmRelease(argv.celoEnv, argv.context) -} diff --git a/packages/celotool/src/cmds/deploy/initial/komenci.ts b/packages/celotool/src/cmds/deploy/initial/komenci.ts deleted file mode 100644 index a008b1fb55d..00000000000 --- a/packages/celotool/src/cmds/deploy/initial/komenci.ts +++ /dev/null @@ -1,29 +0,0 @@ -import { InitialArgv } from 'src/cmds/deploy/initial' -import { addContextMiddleware, ContextArgv, switchToContextCluster } from 'src/lib/context-utils' -import { exitIfCelotoolHelmDryRun } from 'src/lib/helm_deploy' -import { installHelmChart } from 'src/lib/komenci' -import yargs from 'yargs' - -export const command = 'komenci' - -export const describe = 'deploy the komenci for the specified network' - -type KomenciInitialArgv = InitialArgv & - ContextArgv & { - useForno: boolean - } - -export const builder = (argv: yargs.Argv) => { - return addContextMiddleware(argv).option('useForno', { - description: 'Uses forno for RPCs from the komenci clients', - default: false, - type: 'boolean', - }) -} - -export const handler = async (argv: KomenciInitialArgv) => { - // Do not allow --helmdryrun because komenciIdentityHelmParameters function. It could be refactored to allow - exitIfCelotoolHelmDryRun() - await switchToContextCluster(argv.celoEnv, argv.context) - await installHelmChart(argv.celoEnv, argv.context, argv.useForno) -} diff --git a/packages/celotool/src/cmds/deploy/initial/kong.ts b/packages/celotool/src/cmds/deploy/initial/kong.ts deleted file mode 100644 index daac49b877f..00000000000 --- a/packages/celotool/src/cmds/deploy/initial/kong.ts +++ /dev/null @@ -1,20 +0,0 @@ -import { InitialArgv } from 'src/cmds/deploy/initial' -import { switchToClusterFromEnvOrContext } from 'src/lib/cluster' -import { addContextMiddleware, ContextArgv } from 'src/lib/context-utils' -import { installKong, installKonga } from 'src/lib/kong' - -export const command = 'kong' - -export const describe = 'deploy Kong and Konga packages' - -export type KongInitialArgv = InitialArgv & ContextArgv - -export const builder = (argv: KongInitialArgv) => { - return addContextMiddleware(argv) -} - -export const handler = async (argv: KongInitialArgv) => { - await switchToClusterFromEnvOrContext(argv, true) - await installKong(argv.celoEnv) - await installKonga(argv.celoEnv) -} diff --git a/packages/celotool/src/cmds/deploy/initial/setup-cluster.ts b/packages/celotool/src/cmds/deploy/initial/setup-cluster.ts deleted file mode 100644 index 187dcc43f37..00000000000 --- a/packages/celotool/src/cmds/deploy/initial/setup-cluster.ts +++ /dev/null @@ -1,19 +0,0 @@ -import { switchToClusterFromEnvOrContext } from 'src/lib/cluster' -import { addContextMiddleware, ContextArgv } from 'src/lib/context-utils' -import { exitIfCelotoolHelmDryRun } from 'src/lib/helm_deploy' -import { InitialArgv } from '../initial' - -export const command = 'setup-cluster' - -export const describe = 'Create K8s cluster and deploy common tools' - -export type SetupClusterInitialArgv = InitialArgv & ContextArgv - -export const builder = (argv: SetupClusterInitialArgv) => { - return addContextMiddleware(argv) -} - -export const handler = async (argv: SetupClusterInitialArgv) => { - exitIfCelotoolHelmDryRun() - await switchToClusterFromEnvOrContext(argv, false) -} diff --git a/packages/celotool/src/cmds/deploy/upgrade/komenci.ts b/packages/celotool/src/cmds/deploy/upgrade/komenci.ts deleted file mode 100644 index 153505c414d..00000000000 --- a/packages/celotool/src/cmds/deploy/upgrade/komenci.ts +++ /dev/null @@ -1,29 +0,0 @@ -import { UpgradeArgv } from 'src/cmds/deploy/upgrade' -import { addContextMiddleware, ContextArgv, switchToContextCluster } from 'src/lib/context-utils' -import { exitIfCelotoolHelmDryRun } from 'src/lib/helm_deploy' -import { upgradeKomenciChart } from 'src/lib/komenci' -import yargs from 'yargs' - -export const command = 'komenci' - -export const describe = 'upgrade komenci on an AKS cluster' - -type OracleUpgradeArgv = UpgradeArgv & - ContextArgv & { - useForno: boolean - } - -export const builder = (argv: yargs.Argv) => { - return addContextMiddleware(argv).option('useForno', { - description: 'Uses forno for RPCs from the komenci clients', - default: false, - type: 'boolean', - }) -} - -export const handler = async (argv: OracleUpgradeArgv) => { - // Do not allow --helmdryrun because komenciIdentityHelmParameters function. It could be refactored to allow - exitIfCelotoolHelmDryRun() - await switchToContextCluster(argv.celoEnv, argv.context) - await upgradeKomenciChart(argv.celoEnv, argv.context, argv.useForno) -} diff --git a/packages/celotool/src/cmds/deploy/upgrade/kong.ts b/packages/celotool/src/cmds/deploy/upgrade/kong.ts deleted file mode 100644 index 497324c4cd6..00000000000 --- a/packages/celotool/src/cmds/deploy/upgrade/kong.ts +++ /dev/null @@ -1,20 +0,0 @@ -import { UpgradeArgv } from 'src/cmds/deploy/upgrade' -import { switchToClusterFromEnvOrContext } from 'src/lib/cluster' -import { addContextMiddleware, ContextArgv } from 'src/lib/context-utils' -import { upgradeKong, upgradeKonga } from 'src/lib/kong' - -export const command = 'kong' - -export const describe = 'upgrade Kong and Konga packages' - -export type KongUpgradeArgv = UpgradeArgv & ContextArgv - -export const builder = (argv: KongUpgradeArgv) => { - return addContextMiddleware(argv) -} - -export const handler = async (argv: KongUpgradeArgv) => { - await switchToClusterFromEnvOrContext(argv, true) - await upgradeKong(argv.celoEnv) - await upgradeKonga(argv.celoEnv) -} diff --git a/packages/celotool/src/cmds/gcp.ts b/packages/celotool/src/cmds/gcp.ts deleted file mode 100644 index 438093b2fa9..00000000000 --- a/packages/celotool/src/cmds/gcp.ts +++ /dev/null @@ -1,7 +0,0 @@ -import yargs from 'yargs' - -export const command = 'gcp ' - -export const describe = 'commands for interacting with GCP' - -export const builder = (argv: yargs.Argv) => argv.commandDir('gcp', { extensions: ['ts'] }) diff --git a/packages/celotool/src/cmds/links.ts b/packages/celotool/src/cmds/links.ts deleted file mode 100644 index 14291bf2050..00000000000 --- a/packages/celotool/src/cmds/links.ts +++ /dev/null @@ -1,134 +0,0 @@ -import { execCmdWithExitOnFailure } from 'src/lib/cmd-utils' -import { getBlockchainApiUrl, getBlockscoutUrl, getEthstatsUrl } from 'src/lib/endpoints' -import { - addCeloEnvMiddleware, - CeloEnvArgv, - envVar, - fetchEnv, - fetchEnvOrFallback, - getEnvFile, -} from 'src/lib/env-utils' -import { Arguments, Argv } from 'yargs' - -export const command = 'links ' -export const describe = 'commands for various useful links' - -interface LinkArgEnv extends CeloEnvArgv { - open: boolean - explanation: boolean -} - -export const builder = (yargs: Argv) => { - const config = addCeloEnvMiddleware(yargs) - .option('open', { - alias: 'o', - type: 'boolean', - description: 'Whether to open the link automatically', - default: false, - }) - .option('explanation', { - type: 'boolean', - description: 'Whether to print out explanation of the link', - default: true, - }) - .command('all', 'prints out all links', {}, async (rawArgs: Arguments) => { - commands.forEach(async (cmd) => { - const argv = rawArgs as any as LinkArgEnv - const url = cmd.url(argv) - - console.info(`$ celotooljs links ${cmd.command}\n`) - if (argv.explanation) { - console.info(cmd.explanation) - } - - if (argv.open) { - await execCmdWithExitOnFailure(`open "${url}"`) - } - console.info(url) - console.info('') - }) - }) - - return commands.reduce((pYargs: Argv, cmd) => { - return pYargs.command(cmd.command, cmd.description, {}, async (rawArgs: Arguments) => { - const argv = rawArgs as any as LinkArgEnv - const url = cmd.url(argv) - if (argv.explanation) { - console.info(cmd.explanation) - } - - if (argv.open) { - await execCmdWithExitOnFailure(`open "${url}"`) - } - console.info(url) - }) - }, config) -} - -export const handler = () => { - // empty -} - -const commands = [ - { - command: 'k8s-workloads', - description: 'Kubernetes Workloads Page in Google Cloud', - url: (argv: LinkArgEnv) => - `https://console.cloud.google.com/kubernetes/workload?project=${fetchEnv( - envVar.TESTNET_PROJECT_NAME - )}&workload_list_tablesize=50&workload_list_tablequery=%255B%257B_22k_22_3A_22is_system_22_2C_22t_22_3A10_2C_22v_22_3A_22_5C_22false_5C_22_22_2C_22s_22_3Atrue%257D_2C%257B_22k_22_3A_22metadata%252Fnamespace_22_2C_22t_22_3A10_2C_22v_22_3A_22_5C_22${ - argv.celoEnv - }_5C_22_22%257D%255D`, - explanation: - 'This links to the Google Cloud Console that lists all the Kubernetes Workloads running in the specified CELO_ENV. That currently includes things like our geth nodes, Blockscout, EthStats, CronJobs that check healthiness of the network etc. This is a good first place to check that workloads are running as we expect', - }, - - { - command: 'geth-logs', - description: 'logs of all geth nodes', - url: (argv: LinkArgEnv) => - `https://console.cloud.google.com/logs/viewer\?interval\=NO_LIMIT\&project\=${fetchEnv( - envVar.TESTNET_PROJECT_NAME - )}\&minLogLevel\=0\&expandAll\=false\&customFacets\=\&limitCustomFacetWidth\=true\&advancedFilter\=resource.type%3D%22container%22%0Aresource.labels.namespace_id%3D%22${ - argv.celoEnv - }%22%0Aresource.labels.container_name%3D%22geth%22`, - explanation: - 'For issues with geth nodes not behaving the way you expect, you can take a look at the logs they output.', - }, - { - command: 'blockscout', - description: 'blockscout, the block explorer', - url: (argv: CeloEnvArgv) => getBlockscoutUrl(argv.celoEnv), - explanation: - 'Blockscout can be useful to take a look at Blocks, Transactions and Token Transfers and they made it onto the blockchain.', - }, - { - command: 'ethstats', - description: 'ethstats', - url: (argv: CeloEnvArgv) => getEthstatsUrl(argv.celoEnv), - explanation: - 'Ethstats gives us quick insight into what the geth nodes are reporting as their peer number, their latest block, etc.', - }, - { - command: 'blockchain-api', - description: 'blockchain-api', - url: (argv: CeloEnvArgv) => getBlockchainApiUrl(argv.celoEnv), - explanation: - 'The blockchain-api exposes a GraphQL Explorer through which you can verify some queries the service itself uses', - }, - { - command: '.env', - description: 'the currently applied configuration', - url: (argv: LinkArgEnv) => getEnvFile(argv.celoEnv), - explanation: - 'The path to the .env file that is used with the current specification of CELO_ENV', - }, - { - command: 'mobile-wallet-playstore', - description: 'Mobile Wallet in the Playstore', - url: (_argv: LinkArgEnv) => - fetchEnvOrFallback(envVar.MOBILE_WALLET_PLAYSTORE_LINK, 'No Mobile Wallet link'), - explanation: - "Gives you the link to the playstore page for this environment's mobile wallet app", - }, -] diff --git a/packages/celotool/src/lib/aws.ts b/packages/celotool/src/lib/aws.ts deleted file mode 100644 index 02e611bdc44..00000000000 --- a/packages/celotool/src/lib/aws.ts +++ /dev/null @@ -1,172 +0,0 @@ -import { execCmd, execCmdAndParseJson } from './cmd-utils' -import { AwsClusterConfig } from './k8s-cluster/aws' - -export async function getKeyArnFromAlias(alias: string, region: string) { - const fullAliasName = `alias/${alias}` - /** - * Expected output example: - * [ - * { - * "AliasName": "alias/test-ecc-key", - * "AliasArn": "arn:aws:kms:eu-central-1:243983831780:alias/test-ecc-key", - * "TargetKeyId": "1d6db902-9a45-4dd5-bd1e-7250b2306f18" - * } - * ] - */ - const [parsed] = await execCmdAndParseJson( - `aws kms list-aliases --region ${region} --query 'Aliases[?AliasName == \`${fullAliasName}\`]' --output json` - ) - if (!parsed) { - throw Error(`Could not find key with alias ${alias} and region ${region}`) - } - return parsed.AliasArn.replace(fullAliasName, `key/${parsed.TargetKeyId}`) -} - -export function deleteRole(roleName: string) { - return execCmd(`aws iam delete-role --role-name ${roleName}`) -} - -export function detachPolicyIdempotent(roleName: string, policyArn: string) { - return execCmd(`aws iam detach-role-policy --role-name ${roleName} --policy-arn ${policyArn}`) -} - -/** - * Deletes all policy versions and the policy itself - */ -export async function deletePolicy(policyArn: string) { - // First, delete all non-default policy versions - const policyVersions = await getPolicyVersions(policyArn) - await Promise.all( - policyVersions - .filter((version: any) => !version.IsDefaultVersion) // cannot delete the default version - .map((version: any) => deletePolicyVersion(policyArn, version.VersionId)) - ) - return execCmd(`aws iam delete-policy --policy-arn ${policyArn}`) -} - -function deletePolicyVersion(policyArn: string, versionId: string) { - return execCmd( - `aws iam delete-policy-version --policy-arn ${policyArn} --version-id ${versionId}` - ) -} - -async function getPolicyVersions(policyArn: string) { - return execCmdAndParseJson( - `aws iam list-policy-versions --policy-arn ${policyArn} --query 'Versions' --output json` - ) -} - -export async function getPolicyArn(policyName: string) { - const [policy] = await execCmdAndParseJson( - `aws iam list-policies --query 'Policies[?PolicyName == \`${policyName}\`]' --output json` - ) - if (!policy) { - return undefined - } - return policy.Arn -} - -/** - * Given a cluster name, finds the NodeInstanceRole that's used by the nodes. - * There's no easy way to query this directly, so this command searches through - * roles and finds the correct one. - */ -export async function getEKSNodeInstanceGroupRoleArn(clusterName: string) { - const existingRoles = await execCmdAndParseJson( - `aws iam list-roles --query 'Roles' --output json` - ) - const potentialRoles = existingRoles.filter((role: any) => { - // The role name doesn't necessarily include the cluster name, but it will include - // 'NodeInstanceRole'. - const re = new RegExp(`.+-NodeInstanceRole-.+`) - return re.test(role.RoleName) - }) - let roleArn: string | undefined - for (const role of potentialRoles) { - const [clusterNameTag] = await execCmdAndParseJson( - `aws iam list-role-tags --role-name ${role.RoleName} --query 'Tags[?Key == \`alpha.eksctl.io/cluster-name\`]'` - ) - if (clusterNameTag && clusterNameTag.Value === clusterName) { - roleArn = role.Arn - break - } - } - if (!roleArn) { - throw Error(`Could not find NodeInstanceRole for cluster ${clusterName}`) - } - return roleArn -} - -export function attachPolicyIdempotent(roleName: string, policyArn: string) { - return execCmd(`aws iam attach-role-policy --role-name ${roleName} --policy-arn ${policyArn}`) -} - -export async function createRoleIdempotent(roleName: string, policyDocumentJson: string) { - const [existing] = await execCmdAndParseJson( - `aws iam list-roles --query 'Roles[?RoleName == \`${roleName}\`]' --output json` - ) - if (existing) { - console.info(`Role ${roleName} exists`) - return existing.Arn - } - console.info(`Creating role ${roleName}`) - const [outputRaw] = await execCmd( - `aws iam create-role --role-name ${roleName} --assume-role-policy-document '${policyDocumentJson}' --query 'Role.Arn' --output text` - ) - return outputRaw.trim() -} - -export async function createPolicyIdempotent(policyName: string, policyDocumentJson: string) { - const [existing] = await execCmdAndParseJson( - `aws iam list-policies --query 'Policies[?PolicyName == \`${policyName}\`]' --output json` - ) - if (existing) { - console.info(`Policy ${policyName} exists`) - return existing.Arn - } - console.info(`Creating policy ${policyName}`) - const [output] = await execCmd( - `aws iam create-policy --policy-name ${policyName} --policy-document '${policyDocumentJson}' --query 'Policy.Arn' --output text` - ) - return output.trim() -} - -/** - * A cluster will have a security group that applies to all nodes (ie VMs) in the cluster. - * This returns a description of that security group. - */ -export function getClusterSharedNodeSecurityGroup(clusterConfig: AwsClusterConfig) { - return execCmdAndParseJson( - `aws ec2 describe-security-groups --filters "Name=tag:aws:cloudformation:logical-id,Values=ClusterSharedNodeSecurityGroup" "Name=tag:eksctl.cluster.k8s.io/v1alpha1/cluster-name,Values=${clusterConfig.clusterName}" --query "SecurityGroups[0]" --output json` - ) -} - -/** - * For a given security group, authorizes ingress traffic on a provided port - * for a given protocol and CIDR range. - */ -export function authorizeSecurityGroupIngress( - groupID: string, - port: number, - protocol: string, - cidrRange: string -) { - return execCmd( - `aws ec2 authorize-security-group-ingress --group-id ${groupID} --ip-permissions IpProtocol=${protocol},FromPort=${port},ToPort=${port},IpRanges='[{CidrIp=${cidrRange}}]'` - ) -} - -/** - * For a given security group, revokes authorized ingress traffic on a provided port - * for a given protocol and CIDR range. - */ -export function revokeSecurityGroupIngress( - groupID: string, - port: number, - protocol: string, - cidrRange: string -) { - return execCmd( - `aws ec2 revoke-security-group-ingress --group-id ${groupID} --ip-permissions IpProtocol=${protocol},FromPort=${port},ToPort=${port},IpRanges='[{CidrIp=${cidrRange}}]'` - ) -} diff --git a/packages/celotool/src/lib/context-utils.ts b/packages/celotool/src/lib/context-utils.ts index 2e0c143dedf..f14d9eb2c07 100644 --- a/packages/celotool/src/lib/context-utils.ts +++ b/packages/celotool/src/lib/context-utils.ts @@ -8,7 +8,6 @@ import { getDynamicEnvVarValue, } from './env-utils' import { AksClusterConfig } from './k8s-cluster/aks' -import { AwsClusterConfig } from './k8s-cluster/aws' import { BaseClusterConfig, BaseClusterManager, CloudProvider } from './k8s-cluster/base' import { GCPClusterConfig } from './k8s-cluster/gcp' import { getClusterManager } from './k8s-cluster/utils' @@ -26,17 +25,6 @@ const contextAksClusterConfigDynamicEnvVars: { regionName: DynamicEnvVar.AZURE_REGION_NAME, } -/** - * Env vars corresponding to each value for the AwsClusterConfig for a particular context - */ -const contextAwsClusterConfigDynamicEnvVars: { - [k in keyof Omit]: DynamicEnvVar -} = { - clusterName: DynamicEnvVar.KUBERNETES_CLUSTER_NAME, - clusterRegion: DynamicEnvVar.AWS_CLUSTER_REGION, - resourceGroupTag: DynamicEnvVar.AWS_RESOURCE_GROUP_TAG, -} - /** * Env vars corresponding to each value for the GCPClusterConfig for a particular context */ @@ -51,7 +39,6 @@ const contextGCPClusterConfigDynamicEnvVars: { const clusterConfigGetterByCloudProvider: { [key in CloudProvider]: (context: string) => BaseClusterConfig } = { - [CloudProvider.AWS]: getAwsClusterConfig, [CloudProvider.AZURE]: getAksClusterConfig, [CloudProvider.GCP]: getGCPClusterConfig, } @@ -85,24 +72,7 @@ export function getAksClusterConfig(context: string): AksClusterConfig { /** * Fetches the env vars for a particular context * @param context the context to use - * @return an AwsClusterConfig for the context - */ -export function getAwsClusterConfig(context: string): AwsClusterConfig { - const awsDynamicEnvVars = getContextDynamicEnvVarValues( - contextAwsClusterConfigDynamicEnvVars, - context - ) - const clusterConfig: AwsClusterConfig = { - cloudProvider: CloudProvider.AZURE, - ...awsDynamicEnvVars, - } - return clusterConfig -} - -/** - * Fetches the env vars for a particular context - * @param context the context to use - * @return an AwsClusterConfig for the context + * @return an GCPClusterConfig for the context */ export function getGCPClusterConfig(context: string): GCPClusterConfig { const gcpDynamicEnvVars = getContextDynamicEnvVarValues( @@ -166,7 +136,7 @@ export function getContextDynamicEnvVarValues( } /** - * Reads the context and switches to the appropriate Azure or AWS Cluster + * Reads the context and switches to the appropriate Azure Cluster */ export async function switchToContextCluster( celoEnv: string, diff --git a/packages/celotool/src/lib/env-utils.ts b/packages/celotool/src/lib/env-utils.ts index cc79a4be9ef..7d6898a17eb 100644 --- a/packages/celotool/src/lib/env-utils.ts +++ b/packages/celotool/src/lib/env-utils.ts @@ -73,11 +73,6 @@ export enum envVar { GRAFANA_LOCAL_OAUTH2_CLIENT_SECRET = 'GRAFANA_LOCAL_OAUTH2_CLIENT_SECRET', IN_MEMORY_DISCOVERY_TABLE = 'IN_MEMORY_DISCOVERY_TABLE', ISTANBUL_REQUEST_TIMEOUT_MS = 'ISTANBUL_REQUEST_TIMEOUT_MS', - KOMENCI_DOCKER_IMAGE_REPOSITORY = 'KOMENCI_DOCKER_IMAGE_REPOSITORY', - KOMENCI_DOCKER_IMAGE_TAG = 'KOMENCI_DOCKER_IMAGE_TAG', - KOMENCI_RULE_CONFIG_CAPTCHA_BYPASS_TOKEN = 'KOMENCI_RULE_CONFIG_CAPTCHA_BYPASS_TOKEN', - KOMENCI_SHOULD_SEND_REWARDS = 'KOMENCI_SHOULD_SEND_REWARDS', - KOMENCI_UNUSED_KOMENCI_ADDRESSES = 'KOMENCI_UNUSED_KOMENCI_ADDRESSES', KUBECONFIG = 'KUBECONFIG', KUBERNETES_CLUSTER_NAME = 'KUBERNETES_CLUSTER_NAME', KUBERNETES_CLUSTER_ZONE = 'KUBERNETES_CLUSTER_ZONE', @@ -159,8 +154,6 @@ export enum envVar { */ export enum DynamicEnvVar { - AWS_CLUSTER_REGION = '{{ context }}_AWS_KUBERNETES_CLUSTER_REGION', - AWS_RESOURCE_GROUP_TAG = '{{ context }}_AWS_KUBERNETES_RESOURCE_GROUP', AZURE_SUBSCRIPTION_ID = '{{ context }}_AZURE_SUBSCRIPTION_ID', AZURE_KUBERNETES_RESOURCE_GROUP = '{{ context }}_AZURE_KUBERNETES_RESOURCE_GROUP', AZURE_REGION_NAME = '{{ context }}_AZURE_REGION_NAME', @@ -177,23 +170,6 @@ export enum DynamicEnvVar { GCP_PROJECT_NAME = '{{ context }}_GCP_PROJECT_NAME', GCP_ZONE = '{{ context }}_GCP_ZONE', KUBERNETES_CLUSTER_NAME = '{{ context }}_KUBERNETES_CLUSTER_NAME', - KOMENCI_ADDRESS_AZURE_KEY_VAULTS = '{{ context }}_KOMENCI_ADDRESS_AZURE_KEY_VAULTS', - KOMENCI_ADDRESSES_FROM_MNEMONIC_COUNT = '{{ context }}_KOMENCI_ADDRESSES_FROM_MNEMONIC_COUNT', - KOMENCI_CELOLABS_REWARDS_ADDRESS_AZURE_KEY_VAULTS = '{{ context }}_KOMENCI_CELOLABS_REWARDS_ADDRESS_AZURE_KEY_VAULTS', - KOMENCI_FOUNDATION_REWARDS_ADDRESS_AZURE_KEY_VAULTS = '{{ context }}_KOMENCI_FOUNDATION_REWARDS_ADDRESS_AZURE_KEY_VAULTS', - KOMENCI_REWARD_SERVICE_INSTANCE_COUNT = '{{ context }}_KOMENCI_REWARD_SERVICE_INSTANCE_COUNT', - KOMENCI_DB_HOST = '{{ context }}_KOMENCI_DB_HOST', - KOMENCI_DB_PORT = '{{ context }}_KOMENCI_DB_PORT', - KOMENCI_DB_USERNAME = '{{ context }}_KOMENCI_DB_USERNAME', - KOMENCI_DB_PASSWORD_VAULT_NAME = '{{ context }}_KOMENCI_DB_PASSWORD_VAULT_NAME', - KOMENCI_REWARD_SERVICE_DB_HOST = '{{ context }}_KOMENCI_REWARD_SERVICE_DB_HOST', - KOMENCI_REWARD_SERVICE_DB_PORT = '{{ context }}_KOMENCI_REWARD_SERVICE_DB_PORT', - KOMENCI_REWARD_SERVICE_DB_USERNAME = '{{ context }}_KOMENCI_REWARD_SERVICE_DB_USERNAME', - KOMENCI_REWARD_SERVICE_DB_PASSWORD_VAULT_NAME = '{{ context }}_KOMENCI_REWARD_SERVICE_DB_PASSWORD_VAULT_NAME', - KOMENCI_NETWORK = '{{ context }}_KOMENCI_NETWORK', - KOMENCI_APP_SECRETS_VAULT_NAME = '{{ context }}_KOMENCI_APP_SECRETS_VAULT_NAME', - KOMENCI_RULE_CONFIG_CAPTCHA_BYPASS_ENABLED = '{{ context }}_KOMENCI_RULE_CONFIG_CAPTCHA_BYPASS_ENABLED', - ORACLE_ADDRESS_AWS_KEY_ALIASES = '{{ context }}_{{ currencyPair }}_ORACLE_ADDRESS_AWS_KEY_ALIASES', ORACLE_ADDRESS_AZURE_KEY_VAULTS = '{{ context }}_{{ currencyPair }}_ORACLE_ADDRESS_AZURE_KEY_VAULTS', ORACLE_ADDRESSES_FROM_MNEMONIC_COUNT = '{{ context }}_{{ currencyPair}}_ORACLE_ADDRESSES_FROM_MNEMONIC_COUNT', ODIS_SIGNER_BLOCKCHAIN_API_KEY = '{{ context }}_ODIS_SIGNER_BLOCKCHAIN_API_KEY', diff --git a/packages/celotool/src/lib/fullnodes.ts b/packages/celotool/src/lib/fullnodes.ts index 824a094bb4e..bdbbae673da 100644 --- a/packages/celotool/src/lib/fullnodes.ts +++ b/packages/celotool/src/lib/fullnodes.ts @@ -1,7 +1,6 @@ import stringHash from 'string-hash' import { getAksClusterConfig, - getAwsClusterConfig, getCloudProviderFromContext, getContextDynamicEnvVarValues, getGCPClusterConfig, @@ -9,7 +8,6 @@ import { import { DynamicEnvVar, envVar, fetchEnv, getDynamicEnvVarValue } from './env-utils' import { CloudProvider } from './k8s-cluster/base' import { AksFullNodeDeploymentConfig } from './k8s-fullnode/aks' -import { AwsFullNodeDeploymentConfig } from './k8s-fullnode/aws' import { BaseFullNodeDeploymentConfig } from './k8s-fullnode/base' import { GCPFullNodeDeploymentConfig } from './k8s-fullnode/gcp' import { getFullNodeDeployer } from './k8s-fullnode/utils' @@ -37,7 +35,6 @@ const contextFullNodeDeploymentEnvVars: { const deploymentConfigGetterByCloudProvider: { [key in CloudProvider]: (context: string) => BaseFullNodeDeploymentConfig } = { - [CloudProvider.AWS]: getAwsFullNodeDeploymentConfig, [CloudProvider.AZURE]: getAksFullNodeDeploymentConfig, [CloudProvider.GCP]: getGCPFullNodeDeploymentConfig, } @@ -174,18 +171,6 @@ function getAksFullNodeDeploymentConfig(context: string): AksFullNodeDeploymentC } } -/** - * For a given context, returns the appropriate AwsFullNodeDeploymentConfig - */ -function getAwsFullNodeDeploymentConfig(context: string): AwsFullNodeDeploymentConfig { - const fullNodeDeploymentConfig: BaseFullNodeDeploymentConfig = - getFullNodeDeploymentConfig(context) - return { - ...fullNodeDeploymentConfig, - clusterConfig: getAwsClusterConfig(context), - } -} - /** * For a given context, returns the appropriate getGCPFullNodeDeploymentConfig */ diff --git a/packages/celotool/src/lib/k8s-cluster/aws.ts b/packages/celotool/src/lib/k8s-cluster/aws.ts deleted file mode 100644 index eda452c94ad..00000000000 --- a/packages/celotool/src/lib/k8s-cluster/aws.ts +++ /dev/null @@ -1,68 +0,0 @@ -import { execCmdWithExitOnFailure } from '../cmd-utils' -import { installGenericHelmChart } from '../helm_deploy' -import { outputIncludes } from '../utils' -import { BaseClusterConfig, BaseClusterManager, CloudProvider } from './base' - -/** - * Basic info for an EKS cluster - */ -export interface AwsClusterConfig extends BaseClusterConfig { - clusterRegion: string - resourceGroupTag: string -} - -export class AwsClusterManager extends BaseClusterManager { - async switchToSubscription() { - // TODO: not supported at the moment - } - - async getAndSwitchToClusterContext() { - await execCmdWithExitOnFailure( - `aws eks --region ${this.clusterConfig.clusterRegion} update-kubeconfig --name ${this.clusterConfig.clusterName} --alias ${this.clusterConfig.clusterName}` - ) - } - - async setupCluster(context?: string) { - await super.setupCluster(context) - await this.installKube2Iam() - } - - // installs kube2iam if it doesn't exist, which allows us to give AWS roles to pods - async installKube2Iam() { - const releaseName = 'kube2iam' - const exists = await outputIncludes( - `helm list`, - releaseName, - `${releaseName} exists, skipping install` - ) - if (!exists) { - console.info(`Installing ${releaseName}`) - await installGenericHelmChart({ - namespace: 'default', - releaseName, - chartDir: 'stable/kube2iam', - parameters: [ - // Modifies node iptables to have AWS api requests be proxied by kube2iam - `--set host.iptables=true`, - // The network interface EKS uses - `--set host.interface="eni+"`, - // enable rbac - `--set rbac.create=true`, - ], - buildDependencies: false, - }) - } - } - - get clusterConfig(): AwsClusterConfig { - return this._clusterConfig as AwsClusterConfig - } - - get kubernetesContextName(): string { - return this.clusterConfig.clusterName - } - - get cloudProvider(): CloudProvider { - return CloudProvider.AWS - } -} diff --git a/packages/celotool/src/lib/k8s-cluster/base.ts b/packages/celotool/src/lib/k8s-cluster/base.ts index 18771caec1c..0a18f49d6f6 100644 --- a/packages/celotool/src/lib/k8s-cluster/base.ts +++ b/packages/celotool/src/lib/k8s-cluster/base.ts @@ -7,7 +7,6 @@ import { } from '../helm_deploy' export enum CloudProvider { - AWS, AZURE, GCP, } diff --git a/packages/celotool/src/lib/k8s-cluster/utils.ts b/packages/celotool/src/lib/k8s-cluster/utils.ts index ab340d376f5..a1584306a80 100644 --- a/packages/celotool/src/lib/k8s-cluster/utils.ts +++ b/packages/celotool/src/lib/k8s-cluster/utils.ts @@ -1,13 +1,10 @@ import { AksClusterConfig, AksClusterManager } from './aks' -import { AwsClusterConfig, AwsClusterManager } from './aws' import { BaseClusterConfig, BaseClusterManager, CloudProvider } from './base' import { GCPClusterConfig, GCPClusterManager } from './gcp' const clusterManagerByCloudProvider: { [key in CloudProvider]: (clusterConfig: BaseClusterConfig, celoEnv: string) => BaseClusterManager } = { - [CloudProvider.AWS]: (clusterConfig: BaseClusterConfig, celoEnv: string) => - new AwsClusterManager(clusterConfig as AwsClusterConfig, celoEnv), [CloudProvider.AZURE]: (clusterConfig: BaseClusterConfig, celoEnv: string) => new AksClusterManager(clusterConfig as AksClusterConfig, celoEnv), [CloudProvider.GCP]: (clusterConfig: BaseClusterConfig, celoEnv: string) => diff --git a/packages/celotool/src/lib/k8s-fullnode/aws.ts b/packages/celotool/src/lib/k8s-fullnode/aws.ts deleted file mode 100644 index 671016104ba..00000000000 --- a/packages/celotool/src/lib/k8s-fullnode/aws.ts +++ /dev/null @@ -1,113 +0,0 @@ -import { - authorizeSecurityGroupIngress, - getClusterSharedNodeSecurityGroup, - revokeSecurityGroupIngress, -} from '../aws' -import { AwsClusterConfig } from '../k8s-cluster/aws' -import { BaseFullNodeDeploymentConfig } from './base' -import { BaseNodePortFullNodeDeployer } from './base-nodeport' - -export interface AwsFullNodeDeploymentConfig extends BaseFullNodeDeploymentConfig { - clusterConfig: AwsClusterConfig -} - -enum Protocols { - tcp = 'tcp', - udp = 'udp', -} - -/** - * At the moment, there is no way to use a Network Load Balancer on EKS - * with ingress TCP & UDP traffic on the same port. Instead, we use NodePort - * services. - */ -export class AwsFullNodeDeployer extends BaseNodePortFullNodeDeployer { - /** - * Gets AWS-specific helm parameters. - */ - async additionalHelmParameters() { - return [ - ...(await super.additionalHelmParameters()), - `--set aws=true`, - `--set storage.storageClass=gp2`, - // A single element because we will be using tcp and udp on a single service - `--set geth.service_protocols='{tcp-and-udp}'`, - ] - } - - /** - * Prints action required to remove the node ports, and removes the chart - */ - async removeChart() { - const nodePortSet = await this.getExistingNodePortSet() - await this.setIngressRulesTCPAndUDP(Array.from(nodePortSet), false) - await super.removeChart() - } - - /** - * When authorize is true, will ensure that the cluster's shared security group - * allows ingress tcp & udp traffic from 0.0.0.0/0 for the specified ports. - * When authorize is false, removes any of the roles corresponding to the ports - * as just described. - */ - async setIngressRulesTCPAndUDP(ports: number[], authorize: boolean) { - const cidrRange = '0.0.0.0/0' - const securityGroup = await getClusterSharedNodeSecurityGroup( - this.deploymentConfig.clusterConfig - ) - - // Record the existing relevant rules on the security group. We want to know - // if both udp and tcp ingress traffic has been enabled for the ports. - const existingRulesByPort: { - [port: number]: { - [protocol in Protocols]: boolean - } - } = {} - for (const rule of securityGroup.IpPermissions) { - // We assume that all rules that have been created by previous full node - // deployments are for a single port, and not port ranges. - // Don't consider rules that do not apply to node port ranges or do not have the - // desired cidr range. - if ( - rule.FromPort !== rule.ToPort || - !this.isNodePort(rule.FromPort) || - !rule.IpRanges.find((rangeSpec: any) => rangeSpec.CidrIp === cidrRange) - ) { - continue - } - const port = rule.FromPort - existingRulesByPort[port] = Object.values(Protocols).reduce( - (obj: any, protocol: Protocols) => ({ - ...obj, - [protocol]: obj[protocol] || rule.IpProtocol === protocol, - }), - existingRulesByPort[port] || {} - ) - } - - // Iterate over all the provided ports and protocols, and either authorize - // or revoke ingress permission. - for (const port of ports) { - for (const protocol of Object.values(Protocols)) { - const infoStr = `${port}/${protocol}` - // If the rule already exists, either skip or revoke - if (existingRulesByPort[port] && existingRulesByPort[port][protocol]) { - if (authorize) { - console.info(`Already authorized ${infoStr}`) - } else { - console.info(`Revoking ${infoStr} authorization`) - await revokeSecurityGroupIngress(securityGroup.GroupId, port, protocol, cidrRange) - } - continue - } else if (authorize) { - console.info(`Authorizing ${infoStr}`) - await authorizeSecurityGroupIngress(securityGroup.GroupId, port, protocol, cidrRange) - } - } - } - } - - get deploymentConfig(): AwsFullNodeDeploymentConfig { - return this._deploymentConfig as AwsFullNodeDeploymentConfig - } -} diff --git a/packages/celotool/src/lib/k8s-fullnode/utils.ts b/packages/celotool/src/lib/k8s-fullnode/utils.ts index 6cb0200d813..67d6e839d65 100644 --- a/packages/celotool/src/lib/k8s-fullnode/utils.ts +++ b/packages/celotool/src/lib/k8s-fullnode/utils.ts @@ -1,6 +1,5 @@ import { CloudProvider } from '../k8s-cluster/base' import { AksFullNodeDeployer, AksFullNodeDeploymentConfig } from './aks' -import { AwsFullNodeDeployer, AwsFullNodeDeploymentConfig } from './aws' import { BaseFullNodeDeployer, BaseFullNodeDeploymentConfig } from './base' import { GCPFullNodeDeployer, GCPFullNodeDeploymentConfig } from './gcp' @@ -10,8 +9,6 @@ const fullNodeDeployerByCloudProvider: { celoEnv: string ) => BaseFullNodeDeployer } = { - [CloudProvider.AWS]: (deploymentConfig: BaseFullNodeDeploymentConfig, celoEnv: string) => - new AwsFullNodeDeployer(deploymentConfig as AwsFullNodeDeploymentConfig, celoEnv), [CloudProvider.AZURE]: (deploymentConfig: BaseFullNodeDeploymentConfig, celoEnv: string) => new AksFullNodeDeployer(deploymentConfig as AksFullNodeDeploymentConfig, celoEnv), [CloudProvider.GCP]: (deploymentConfig: BaseFullNodeDeploymentConfig, celoEnv: string) => diff --git a/packages/celotool/src/lib/k8s-oracle/aws-hsm.ts b/packages/celotool/src/lib/k8s-oracle/aws-hsm.ts deleted file mode 100644 index 0a8a6b09a8f..00000000000 --- a/packages/celotool/src/lib/k8s-oracle/aws-hsm.ts +++ /dev/null @@ -1,161 +0,0 @@ -import { - attachPolicyIdempotent, - createPolicyIdempotent, - createRoleIdempotent, - deletePolicy, - deleteRole, - detachPolicyIdempotent, - getEKSNodeInstanceGroupRoleArn, - getKeyArnFromAlias, - getPolicyArn, -} from '../aws' -import { AwsClusterConfig } from '../k8s-cluster/aws' -import { BaseOracleDeploymentConfig, OracleIdentity } from './base' -import { RbacOracleDeployer } from './rbac' - -/** - * Contains information needed when using Azure HSM signing - */ -export interface AwsHsmOracleIdentity extends OracleIdentity { - keyAlias: string - region: string -} - -export interface AwsHsmOracleDeploymentConfig extends BaseOracleDeploymentConfig { - identities: AwsHsmOracleIdentity[] - clusterConfig: AwsClusterConfig -} - -/** - * AwsHsmOracleDeployer manages deployments for HSM-based oracles on AWS - */ -export class AwsHsmOracleDeployer extends RbacOracleDeployer { - // Explicitly specify this so we enforce AwsHsmOracleDeploymentConfig - constructor(deploymentConfig: AwsHsmOracleDeploymentConfig, celoEnv: string) { - super(deploymentConfig, celoEnv) - } - - async removeChart() { - await super.removeChart() - for (const identity of this.deploymentConfig.identities) { - await this.deleteAwsHsmRoleAndPolicyIdempotent(identity) - } - } - - async helmParameters() { - return [ - ...(await super.helmParameters()), - `--set kube.cloudProvider=aws`, - `--set oracle.walletType=AWS_HSM`, - ] - } - - async oracleIdentityHelmParameters() { - let params = await super.oracleIdentityHelmParameters() - for (let i = 0; i < this.replicas; i++) { - const identity = this.deploymentConfig.identities[i] - const prefix = `--set oracle.identities[${i}]` - const awsRoleArn = await this.createAwsHsmRoleIdempotent(identity) - params = params.concat([`${prefix}.aws.roleArn=${awsRoleArn}`]) - } - return params - } - - /** - * Creates an AWS role for a specific oracle identity with the - * appropriate permissions to use its HSM. - * Idempotent. - */ - async createAwsHsmRoleIdempotent(identity: AwsHsmOracleIdentity) { - // The role that each node (ie VM) uses - const nodeInstanceGroupRoleArn = await getEKSNodeInstanceGroupRoleArn( - this.deploymentConfig.clusterConfig.clusterName - ) - // This is a "trust relationship" that allows the node instance group role - // to assume this role (via kube2iam). - const rolePolicy = { - Version: '2012-10-17', - Statement: [ - { - Sid: '', - Effect: 'Allow', - Principal: { - AWS: nodeInstanceGroupRoleArn, - }, - Action: 'sts:AssumeRole', - }, - ], - } - const roleName = this.awsHsmRoleName(identity) - const roleArn = await createRoleIdempotent(roleName, JSON.stringify(rolePolicy)) - const policyName = this.awsHsmPolicyName(identity) - const keyArn = await getKeyArnFromAlias(identity.keyAlias, identity.region) - const policyArn = await this.createAwsHsmSignPolicyIdempotent(policyName, keyArn) - await attachPolicyIdempotent(roleName, policyArn) - return roleArn - } - - /** - * Creates an AWS policy to allow usage of an HSM. - * Idempotent. - */ - async createAwsHsmSignPolicyIdempotent(policyName: string, keyArn: string) { - const policy = { - Version: '2012-10-17', - Statement: [ - { - Sid: 'VisualEditor0', - Effect: 'Allow', - Action: ['kms:GetPublicKey', 'kms:DescribeKey', 'kms:Sign'], - Resource: keyArn, - }, - { - Sid: 'VisualEditor1', - Effect: 'Allow', - Action: 'kms:ListKeys', - Resource: '*', - }, - ], - } - return createPolicyIdempotent(policyName, JSON.stringify(policy)) - } - - /** - * Deletes both the AWS role and policy for a particular identity. - * Note this assumes that the policy has only been attached to the corresponding - * role and no others. This may not be the case if someone manually attaches - * the policy to a different role in the AWS console. - */ - async deleteAwsHsmRoleAndPolicyIdempotent(identity: AwsHsmOracleIdentity) { - const roleName = this.awsHsmRoleName(identity) - const policyName = this.awsHsmPolicyName(identity) - console.info(`Deleting AWS role ${roleName} and policy ${policyName}`) - const policyArn = await getPolicyArn(policyName) - if (policyArn) { - // Don't throw if it's not attached - try { - await detachPolicyIdempotent(roleName, policyArn) - } catch (e: any) { - console.info(`Could not detatch policy ${policyArn} from role ${roleName}:`, e.message) - } - await deletePolicy(policyArn) - } - try { - await deleteRole(roleName) - } catch (e: any) { - console.info(`Could not delete role ${roleName}:`, e.message) - } - } - - awsHsmRoleName(identity: AwsHsmOracleIdentity) { - return `${identity.keyAlias}-${identity.currencyPair}-${identity.address}`.substring(0, 64) - } - - awsHsmPolicyName(identity: AwsHsmOracleIdentity) { - return `${identity.keyAlias}-${identity.currencyPair}-${identity.address}` - } - - get deploymentConfig(): AwsHsmOracleDeploymentConfig { - return this._deploymentConfig as AwsHsmOracleDeploymentConfig - } -} diff --git a/packages/celotool/src/lib/k8s-oracle/rbac.ts b/packages/celotool/src/lib/k8s-oracle/rbac.ts index 4ad47cd5cf1..92ea572719a 100644 --- a/packages/celotool/src/lib/k8s-oracle/rbac.ts +++ b/packages/celotool/src/lib/k8s-oracle/rbac.ts @@ -16,7 +16,7 @@ const rbacHelmChartPath = '../helm-charts/oracle-rbac' /** * RbacOracleDeployer cloud-agnostically manages deployments for oracles * whose pods must change their metadata in order to accomodate limitations - * in pod identity solutions (like Azure's aad-pod-identity and AWS's kube2iam). + * in pod identity solutions (like Azure's aad-pod-identity). * This will create a k8s service account for each oracle pod that can modify * pod metadata, and will ensure each SA's credentials make their way to the helm chart. */ diff --git a/packages/celotool/src/lib/komenci.ts b/packages/celotool/src/lib/komenci.ts deleted file mode 100644 index 7edeab3d0ce..00000000000 --- a/packages/celotool/src/lib/komenci.ts +++ /dev/null @@ -1,537 +0,0 @@ -import { ensureLeading0x, privateKeyToAddress } from '@celo/utils/src/address' -import { execCmdWithExitOnFailure } from 'src/lib/cmd-utils' -import { - getFornoUrl, - getFullNodeHttpRpcInternalUrl, - getFullNodeWebSocketRpcInternalUrl, -} from 'src/lib/endpoints' -import { DynamicEnvVar, envVar, fetchEnv, fetchEnvOrFallback } from 'src/lib/env-utils' -import { AccountType, getPrivateKeysFor } from 'src/lib/generate_utils' -import { - installGenericHelmChart, - removeGenericHelmChart, - upgradeGenericHelmChart, -} from 'src/lib/helm_deploy' -import { createKeyVaultIdentityIfNotExists, deleteAzureKeyVaultIdentity } from './azure' -import { getAksClusterConfig, getContextDynamicEnvVarValues } from './context-utils' -const helmChartPath = '../helm-charts/komenci' -const rbacHelmChartPath = '../helm-charts/komenci-rbac' - -/** - * Contains information needed when using Azure HSM signing - */ -interface KomenciAzureHsmIdentity { - identityName: string - keyVaultName: string - // If a resource group is not specified, it is assumed to be the same - // as the kubernetes cluster resource group specified in the AKSClusterConfig - resourceGroup?: string -} - -/** - * Represents the identity of a single komenci relayer - */ -interface KomenciIdentity { - address: string - // Used if generating komenci relayers from a mnemonic - privateKey?: string - // Used if using Azure HSM signing - azureHsmIdentity?: KomenciAzureHsmIdentity -} - -/** - * Configuration of multiple relayers - */ -interface KomenciConfig { - relayerIdentities: KomenciIdentity[] - // TODO: For Signup rewards - // foundationRewardsIdentities: KomenciIdentity[] - cLabsRewardsIdentities: KomenciIdentity[] -} - -interface KomenciKeyVaultIdentityConfig { - addressAzureKeyVaults: string -} - -interface KomenciMnemonicIdentityConfig { - addressesFromMnemonicCount: string -} - -interface KomenciRewardServiceConfig { - instanceCount: number -} - -interface KomenciDatabaseConfig { - host: string - port: string - username: string - passwordVaultName: string -} - -enum RewardType { - Foundation, - CeloLabs, -} - -/** - * Env vars corresponding to each value for the KomenciKeyVaultIdentityConfig for a particular context - */ -const contextKomenciKeyVaultIdentityConfigDynamicEnvVars: { - [k in keyof KomenciKeyVaultIdentityConfig]: DynamicEnvVar -} = { - addressAzureKeyVaults: DynamicEnvVar.KOMENCI_ADDRESS_AZURE_KEY_VAULTS, -} - -/** - * Env vars corresponding to each value for the KomenciMnemonicIdentityConfig for a particular context - */ -const contextKomenciMnemonicIdentityConfigDynamicEnvVars: { - [k in keyof KomenciMnemonicIdentityConfig]: DynamicEnvVar -} = { - addressesFromMnemonicCount: DynamicEnvVar.KOMENCI_ADDRESSES_FROM_MNEMONIC_COUNT, -} - -/** - * Env vars corresponding to each value for the KomenciFoundationRewardsKeyVaultIdentityConfig for a particular context - */ -const contextKomenciFoundationRewardsKeyVaultIdentityConfigDynamicEnvVars: { - [k in keyof KomenciKeyVaultIdentityConfig]: DynamicEnvVar -} = { - addressAzureKeyVaults: DynamicEnvVar.KOMENCI_FOUNDATION_REWARDS_ADDRESS_AZURE_KEY_VAULTS, -} - -/** - * Env vars corresponding to each value for the KomenciCeloLabsRewardsKeyVaultIdentityConfig for a particular context - */ -const contextKomenciCeloLabsRewardsKeyVaultIdentityConfigDynamicEnvVars: { - [k in keyof KomenciKeyVaultIdentityConfig]: DynamicEnvVar -} = { - addressAzureKeyVaults: DynamicEnvVar.KOMENCI_CELOLABS_REWARDS_ADDRESS_AZURE_KEY_VAULTS, -} - -/** - * Env vars corresponding to each value for the KomenciCeloLabsRewardsKeyVaultIdentityConfig for a particular context - */ -const contextKomenciRewardsServiceConfigDynamicEnvVars: { - [k in keyof KomenciRewardServiceConfig]: DynamicEnvVar -} = { - instanceCount: DynamicEnvVar.KOMENCI_REWARD_SERVICE_INSTANCE_COUNT, -} - -const contextDatabaseConfigDynamicEnvVars: { [k in keyof KomenciDatabaseConfig]: DynamicEnvVar } = { - host: DynamicEnvVar.KOMENCI_DB_HOST, - port: DynamicEnvVar.KOMENCI_DB_PORT, - username: DynamicEnvVar.KOMENCI_DB_USERNAME, - passwordVaultName: DynamicEnvVar.KOMENCI_DB_PASSWORD_VAULT_NAME, -} - -const contextRewardServiceDatabaseConfigDynamicEnvVars: { - [k in keyof KomenciDatabaseConfig]: DynamicEnvVar -} = { - host: DynamicEnvVar.KOMENCI_REWARD_SERVICE_DB_HOST, - port: DynamicEnvVar.KOMENCI_REWARD_SERVICE_DB_PORT, - username: DynamicEnvVar.KOMENCI_REWARD_SERVICE_DB_USERNAME, - passwordVaultName: DynamicEnvVar.KOMENCI_REWARD_SERVICE_DB_PASSWORD_VAULT_NAME, -} - -function releaseName(celoEnv: string) { - return `${celoEnv}-komenci` -} - -export async function installHelmChart(celoEnv: string, context: string, useForno: boolean) { - // First install the komenci-rbac helm chart. - // This must be deployed before so we can use a resulting auth token so that - // komenci pods can reach the K8s API server to change their aad labels - await installKomenciRBACHelmChart(celoEnv, context) - // Then install the komenci helm chart - return installGenericHelmChart({ - namespace: celoEnv, - releaseName: releaseName(celoEnv), - chartDir: helmChartPath, - parameters: await helmParameters(celoEnv, context, useForno), - }) -} - -export async function upgradeKomenciChart(celoEnv: string, context: string, useFullNodes: boolean) { - await upgradeKomenciRBACHelmChart(celoEnv, context) - return upgradeGenericHelmChart({ - namespace: celoEnv, - releaseName: releaseName(celoEnv), - chartDir: helmChartPath, - parameters: await helmParameters(celoEnv, context, useFullNodes), - }) -} - -export async function removeHelmRelease(celoEnv: string, context: string) { - await removeGenericHelmChart(releaseName(celoEnv), celoEnv) - await removeKomenciRBACHelmRelease(celoEnv) - const komenciConfig = getKomenciConfig(context) - for (const identity of komenciConfig.relayerIdentities) { - // If the identity is using Azure HSM signing, clean it up too - if (identity.azureHsmIdentity) { - await deleteAzureKeyVaultIdentity( - context, - identity.azureHsmIdentity.identityName, - identity.azureHsmIdentity.keyVaultName - ) - } - } -} - -async function getKeyVaultSecret(vaultName: string, secretName: string) { - const [secret] = await execCmdWithExitOnFailure( - `az keyvault secret show --name ${secretName} --vault-name ${vaultName} --query value` - ) - return secret -} - -async function getPasswordFromKeyVaultSecret(vaultName: string, secretName: string) { - const password = await getKeyVaultSecret(vaultName, secretName) - return password.replace(/\n|"/g, '') -} - -async function helmParameters(celoEnv: string, context: string, useForno: boolean) { - const komenciConfig = getKomenciConfig(context) - - const onboardingRelayerCount = komenciConfig.relayerIdentities.length - const rewardsRelayerCount = komenciConfig.cLabsRewardsIdentities.length - const kubeServiceAccountSecretNames = await rbacServiceAccountSecretNames( - celoEnv, - '', - onboardingRelayerCount - ) - const kubeRewardsServiceAccountSecretNames = await rbacServiceAccountSecretNames( - celoEnv, - 'rewards-', - rewardsRelayerCount - ) - - const databaseConfig = getContextDynamicEnvVarValues(contextDatabaseConfigDynamicEnvVars, context) - const rewardDatabaseConfig = getContextDynamicEnvVarValues( - contextRewardServiceDatabaseConfigDynamicEnvVars, - context - ) - const vars = getContextDynamicEnvVarValues( - { - network: DynamicEnvVar.KOMENCI_NETWORK, - appSecretsKeyVault: DynamicEnvVar.KOMENCI_APP_SECRETS_VAULT_NAME, - captchaBypassEnabled: DynamicEnvVar.KOMENCI_RULE_CONFIG_CAPTCHA_BYPASS_ENABLED, - }, - context - ) - const httpRpcProviderUrl = useForno - ? getFornoUrl(celoEnv) - : getFullNodeHttpRpcInternalUrl(celoEnv) - // TODO: let forno support websockets - const wsRpcProviderUrl = getFullNodeWebSocketRpcInternalUrl(celoEnv) - const databasePassword = await getPasswordFromKeyVaultSecret( - databaseConfig.passwordVaultName, - 'DB-PASSWORD' - ) - const rewardDatabasePassword = await getPasswordFromKeyVaultSecret( - rewardDatabaseConfig.passwordVaultName, - 'DB-PASSWORD' - ) - const recaptchaToken = await getPasswordFromKeyVaultSecret( - vars.appSecretsKeyVault, - 'RECAPTCHA-SECRET-KEY' - ) - const loggerCredentials = await getPasswordFromKeyVaultSecret( - vars.appSecretsKeyVault, - 'LOGGER-SERVICE-ACCOUNT' - ) - const segmentApiKey = await getPasswordFromKeyVaultSecret( - vars.appSecretsKeyVault, - 'SEGMENT-API-KEY' - ) - const rewardServiceConfig = getContextDynamicEnvVarValues( - contextKomenciRewardsServiceConfigDynamicEnvVars, - context - ) - const clusterConfig = getAksClusterConfig(context) - - return [ - `--set domain.name=${fetchEnv(envVar.CLUSTER_DOMAIN_NAME)}`, - `--set environment.name=${celoEnv}`, - `--set environment.network=${vars.network}`, - `--set environment.cluster.name=${clusterConfig.clusterName}`, - `--set environment.cluster.location=${clusterConfig.regionName}`, - `--set loggingAgent.credentials=${loggerCredentials}`, - `--set image.repository=${fetchEnv(envVar.KOMENCI_DOCKER_IMAGE_REPOSITORY)}`, - `--set image.tag=${fetchEnv(envVar.KOMENCI_DOCKER_IMAGE_TAG)}`, - `--set kube.serviceAccountSecretNames='{${kubeServiceAccountSecretNames.join(',')}}'`, - `--set komenci.azureHsm.initTryCount=5`, - `--set komenci.azureHsm.initMaxRetryBackoffMs=30000`, - `--set onboarding.recaptchaToken=${recaptchaToken}`, - `--set onboarding.replicas=${onboardingRelayerCount}`, - `--set onboarding.relayer.host=${celoEnv + '-relayer'}`, - `--set onboarding.db.host=${databaseConfig.host}`, - `--set onboarding.db.port=${databaseConfig.port}`, - `--set onboarding.db.username=${databaseConfig.username}`, - `--set onboarding.db.password=${databasePassword}`, - `--set onboarding.publicHostname=${getPublicHostname(clusterConfig.regionName, celoEnv)}`, - `--set onboarding.publicUrl=${ - 'https://' + getPublicHostname(clusterConfig.regionName, celoEnv) - }`, - `--set onboarding.ruleConfig.captcha.bypassEnabled=${vars.captchaBypassEnabled}`, - `--set onboarding.ruleConfig.captcha.bypassToken=${fetchEnv( - envVar.KOMENCI_RULE_CONFIG_CAPTCHA_BYPASS_TOKEN - )}`, - `--set relayer.replicas=${onboardingRelayerCount}`, - `--set relayer.rpcProviderUrls.http=${httpRpcProviderUrl}`, - `--set relayer.rpcProviderUrls.ws=${wsRpcProviderUrl}`, - `--set relayer.metrics.enabled=true`, - `--set relayer.metrics.prometheusPort=9090`, - `--set-string relayer.unusedKomenciAddresses='${fetchEnvOrFallback( - envVar.KOMENCI_UNUSED_KOMENCI_ADDRESSES, - '' - ) - .split(',') - .join('\\,')}'`, - `--set rewards.replicas=${rewardServiceConfig.instanceCount}`, - `--set rewards.db.host=${rewardDatabaseConfig.host}`, - `--set rewards.db.port=${rewardDatabaseConfig.port}`, - `--set rewards.db.username=${rewardDatabaseConfig.username}`, - `--set rewards.db.password=${rewardDatabasePassword}`, - `--set rewards.segmentApiKey=${segmentApiKey}`, - `--set rewards.shouldSendRewards=${fetchEnv(envVar.KOMENCI_SHOULD_SEND_REWARDS)}`, - `--set rewards.metrics.enabled=true`, - `--set rewards.metrics.prometheusPort=9090`, - `--set rewards.relayer.replicas=${rewardsRelayerCount}`, - `--set rewards.relayer.rpcProviderUrls.http=${httpRpcProviderUrl}`, - `--set rewards.relayer.rpcProviderUrls.ws=${wsRpcProviderUrl}`, - `--set rewards.relayer.metrics.enabled=true`, - `--set rewards.relayer.metrics.prometheusPort=9090`, - `--set rewards.relayer.host=${celoEnv + '-rewards-relayer'}`, - `--set kube.rewardsServiceAccountSecretNames='{${kubeRewardsServiceAccountSecretNames.join( - ',' - )}}'`, - ] - .concat( - await komenciIdentityHelmParameters(context, komenciConfig.relayerIdentities, 'relayer') - ) - .concat( - await komenciIdentityHelmParameters( - context, - komenciConfig.cLabsRewardsIdentities, - 'rewards.relayer' - ) - ) -} - -function getPublicHostname(regionName: string, celoEnv: string): string { - return regionName + '.komenci.' + celoEnv + '.' + fetchEnv(envVar.CLUSTER_DOMAIN_NAME) + '.org' -} - -/** - * Returns an array of helm command line parameters for the komenci relayer identities. - * Supports both private key and Azure HSM signing. - */ -async function komenciIdentityHelmParameters( - context: string, - relayerIdentities: KomenciIdentity[], - envVarPrefix: string -) { - const replicas = relayerIdentities.length - let params: string[] = [] - for (let i = 0; i < replicas; i++) { - const komenciIdentity = relayerIdentities[i] - const prefix = `--set ${envVarPrefix}.identities[${i}]` - params.push(`${prefix}.address=${komenciIdentity.address}`) - // An komenci identity can specify either a private key or some information - // about an Azure Key Vault that houses an HSM with the address provided. - // We provide the appropriate parameters for both of those types of identities. - if (komenciIdentity.azureHsmIdentity) { - const azureIdentity = await createKeyVaultIdentityIfNotExists( - context, - komenciIdentity.azureHsmIdentity.identityName, - komenciIdentity.azureHsmIdentity.keyVaultName, - komenciIdentity.azureHsmIdentity.resourceGroup, - ['get', 'list', 'sign'], - null - ) - params = params.concat([ - `${prefix}.azure.id=${azureIdentity.id}`, - `${prefix}.azure.clientId=${azureIdentity.clientId}`, - `${prefix}.azure.keyVaultName=${komenciIdentity.azureHsmIdentity.keyVaultName}`, - ]) - } else if (komenciIdentity.privateKey) { - params.push(`${prefix}.privateKey=${komenciIdentity.privateKey}`) - } else { - throw Error(`Incomplete relayer identity: ${komenciIdentity}`) - } - } - return params -} - -/** - * Gives a config for all komenci services for a particular context - */ -function getKomenciConfig(context: string): KomenciConfig { - return { - relayerIdentities: getKomenciRelayerIdentities(context), - cLabsRewardsIdentities: getKomenciRewardIdentities(context, RewardType.CeloLabs), - // foundationRewardsIdentities: getKomenciRewardIdentities(context, RewardType.Foundation), - } -} - -/** - * Returns an array of komenci identities. If the Azure Key Vault env var is specified, - * the identities are created from that. Otherwise, the identities are created - * with private keys generated by the mnemonic. - */ -function getKomenciRelayerIdentities(context: string): KomenciIdentity[] { - const { addressAzureKeyVaults } = getContextDynamicEnvVarValues( - contextKomenciKeyVaultIdentityConfigDynamicEnvVars, - context, - { - addressAzureKeyVaults: '', - } - ) - // Give priority to key vault - if (addressAzureKeyVaults) { - return getAzureHsmKomenciIdentities(addressAzureKeyVaults) - } - - // If key vaults are not set, try from mnemonic - const { addressesFromMnemonicCount } = getContextDynamicEnvVarValues( - contextKomenciMnemonicIdentityConfigDynamicEnvVars, - context, - { - addressesFromMnemonicCount: '', - } - ) - if (addressesFromMnemonicCount) { - const addressesFromMnemonicCountNum = parseInt(addressesFromMnemonicCount, 10) - return getMnemonicBasedKomenciIdentities(addressesFromMnemonicCountNum) - } - - throw Error('No komenci identity env vars specified') -} - -/** - * Returns an array of komenci reward identities. The identities are created from the Azure Key Vault env var. - */ -function getKomenciRewardIdentities(context: string, rewardType: RewardType): KomenciIdentity[] { - const envVars = - rewardType === RewardType.Foundation - ? contextKomenciFoundationRewardsKeyVaultIdentityConfigDynamicEnvVars - : contextKomenciCeloLabsRewardsKeyVaultIdentityConfigDynamicEnvVars - const { addressAzureKeyVaults } = getContextDynamicEnvVarValues(envVars, context, { - addressAzureKeyVaults: '', - }) - - if (addressAzureKeyVaults) { - return getAzureHsmKomenciIdentities(addressAzureKeyVaults) - } - - throw Error('No komenci reward identity env vars specified') -} - -/** - * Given a string addressAzureKeyVaults of the form: - *
:,
: - * eg: 0x0000000000000000000000000000000000000000:keyVault0,0x0000000000000000000000000000000000000001:keyVault1 - * returns an array of KomenciIdentity in the same order - */ -function getAzureHsmKomenciIdentities(addressAzureKeyVaults: string): KomenciIdentity[] { - const identityStrings = addressAzureKeyVaults.split(',') - const identities = [] - for (const identityStr of identityStrings) { - const [address, keyVaultName, resourceGroup] = identityStr.split(':') - // resourceGroup can be undefined - if (!address || !keyVaultName) { - throw Error( - `Address or key vault name is invalid. Address: ${address} Key Vault Name: ${keyVaultName}` - ) - } - identities.push({ - address, - azureHsmIdentity: { - identityName: getKomenciAzureIdentityName(keyVaultName, address), - keyVaultName, - resourceGroup, - }, - }) - } - return identities -} - -/** - * Returns komenci identities with private keys and addresses generated from the mnemonic - */ -function getMnemonicBasedKomenciIdentities(count: number): KomenciIdentity[] { - return getPrivateKeysFor(AccountType.PRICE_ORACLE, fetchEnv(envVar.MNEMONIC), count).map( - (pkey) => ({ - address: privateKeyToAddress(pkey), - privateKey: ensureLeading0x(pkey), - }) - ) -} - -/** - * @return the intended name of an azure identity given a key vault name and address - */ -function getKomenciAzureIdentityName(keyVaultName: string, address: string) { - // from https://docs.microsoft.com/en-us/azure/azure-resource-manager/management/resource-name-rules#microsoftmanagedidentity - const maxIdentityNameLength = 128 - return `${keyVaultName}-${address}`.substring(0, maxIdentityNameLength) -} - -// Komenci RBAC------ -// We need the relayer pods to be able to change their label to accommodate -// limitations in aad-pod-identity & statefulsets (see https://github.com/Azure/aad-pod-identity/issues/237#issuecomment-611672987) -// To do this, we use an auth token that we get using the resources in the `komenci-rbac` chart - -async function installKomenciRBACHelmChart(celoEnv: string, context: string) { - return installGenericHelmChart({ - namespace: celoEnv, - releaseName: rbacReleaseName(celoEnv, ''), - chartDir: rbacHelmChartPath, - parameters: rbacHelmParameters(celoEnv, context), - }) -} - -async function upgradeKomenciRBACHelmChart(celoEnv: string, context: string) { - return upgradeGenericHelmChart({ - namespace: celoEnv, - releaseName: rbacReleaseName(celoEnv, ''), - chartDir: rbacHelmChartPath, - parameters: rbacHelmParameters(celoEnv, context), - }) -} - -function removeKomenciRBACHelmRelease(celoEnv: string) { - return removeGenericHelmChart(rbacReleaseName(celoEnv, ''), celoEnv) -} - -function rbacHelmParameters(celoEnv: string, context: string) { - const komenciConfig = getKomenciConfig(context) - console.info(komenciConfig) - const relayerReplicas = komenciConfig.relayerIdentities.length - const rewardsRelayerReplicas = komenciConfig.cLabsRewardsIdentities.length - return [ - `--set environment.name=${celoEnv}`, - `--set relayer.replicas=${relayerReplicas}`, - `--set rewards.relayer.replicas=${rewardsRelayerReplicas}`, - ] -} - -function rbacReleaseName(celoEnv: string, prefix: string) { - return `${celoEnv}-komenci-${prefix}rbac` -} - -async function rbacServiceAccountSecretNames(celoEnv: string, prefix: string, replicas: number) { - const names = [...Array(replicas).keys()].map((i) => `${rbacReleaseName(celoEnv, prefix)}-${i}`) - let jsonSecretPath = '"{.items[*].secrets[0][\'name\']}"' - if (names.length === 1) { - jsonSecretPath = '"{.secrets[0][\'name\']}"' - } - const [tokenName] = await execCmdWithExitOnFailure( - `kubectl get serviceaccount --namespace=${celoEnv} ${names.join( - ' ' - )} -o=jsonpath=${jsonSecretPath}` - ) - const tokenNames = tokenName.trim().split(' ') - return tokenNames -} diff --git a/packages/celotool/src/lib/kong.ts b/packages/celotool/src/lib/kong.ts deleted file mode 100644 index 2f191ceae94..00000000000 --- a/packages/celotool/src/lib/kong.ts +++ /dev/null @@ -1,110 +0,0 @@ -import { readFileSync, writeFileSync } from 'fs' -import { execCmdWithExitOnFailure } from 'src/lib/cmd-utils' -import { outputIncludes } from 'src/lib/utils' -import { createNamespaceIfNotExists } from './cluster' -import { installGenericHelmChart, retrieveIPAddress, upgradeGenericHelmChart } from './helm_deploy' - -const kongChartPath = '../helm-charts/kong' -const kongaChartPath = '../helm-charts/konga' - -// One unique kong/a deployment per cluster -const kongReleaseName = 'kong' -const kongNamespace = 'kong' -const kongaReleaseName = 'konga' -const kongaNamespace = 'kong' - -export async function installKong(celoEnv: string) { - await createNamespaceIfNotExists(kongNamespace) - await createUpdateKongConfigMap(celoEnv) - // Update values in values-clabs.yaml file - return installGenericHelmChart({ - namespace: kongNamespace, - releaseName: kongReleaseName, - chartDir: kongChartPath, - parameters: await kongHelmParamenters(celoEnv), - buildDependencies: true, - valuesOverrideFile: 'values-clabs.yaml', - }) -} - -export async function upgradeKong(celoEnv: string) { - await createUpdateKongConfigMap(celoEnv) - return upgradeGenericHelmChart({ - namespace: kongNamespace, - releaseName: kongReleaseName, - chartDir: kongChartPath, - parameters: await kongHelmParamenters(celoEnv), - buildDependencies: true, - valuesOverrideFile: 'values-clabs.yaml', - }) -} - -export async function installKonga(celoEnv: string) { - await createNamespaceIfNotExists(kongaNamespace) - // Update values in values.yaml file - return installGenericHelmChart({ - namespace: kongaNamespace, - releaseName: kongaReleaseName, - chartDir: kongaChartPath, - parameters: kongaHelmParamenters(celoEnv), - }) -} - -export async function upgradeKonga(celoEnv: string) { - return upgradeGenericHelmChart({ - namespace: kongaNamespace, - releaseName: kongaReleaseName, - chartDir: kongaChartPath, - parameters: kongaHelmParamenters(celoEnv), - }) -} - -export async function destroyKongAndKonga() { - await execCmdWithExitOnFailure(`kubectl delete ns ${kongNamespace} ${kongaNamespace}`) -} - -async function kongHelmParamenters(celoEnv: string) { - // GCP Internal infra ips - let trustedIPs = '130.211.0.0/22,35.191.0.0/16' - const fornoPublicGlobalIp = await retrieveIPAddress(`${celoEnv}-forno-global-address`, 'global') - trustedIPs = `${trustedIPs},${fornoPublicGlobalIp}/32` - return [ - `--set kong.extraEnvVars[0].name=KONG_TRUSTED_IPS`, - `--set kong.extraEnvVars[0].value='${trustedIPs.replace(/,/g, '\\,')}'`, - ] -} - -function kongaHelmParamenters(celoEnv: string) { - return [`--set geth_rpc_service=${celoEnv}-fullnodes-rpc.${celoEnv}`] -} - -/** - * Creates a configMap with the kong configuration - * Configuration is read from a kong config file inside the kong chart folder - */ -export async function createUpdateKongConfigMap(celoEnv: string) { - const kongConfig = readFileSync(`${kongChartPath}/kong.conf`).toString() - // We need to patch this file with the forno public ip as this ip will forward - // the requests and need to put in the config file so kong/nginx can consider - // that ip as internal - let trustedIPs = '130.211.0.0/22,35.191.0.0/16' - const fornoPublicGlobalIp = await retrieveIPAddress(`${celoEnv}-forno-global-address`, 'global') - trustedIPs = `${trustedIPs},${fornoPublicGlobalIp}/32` - const re = '/^trusted_ips = .+$/g' - kongConfig.replace(re, `trusted_ips = ${trustedIPs}`) - const kongConfigTmpFile = '/tmp/kong.conf' - writeFileSync(kongConfigTmpFile, kongConfig) - const configMapExists = await outputIncludes( - `kubectl get cm -n ${kongNamespace} kong-config || true`, - 'kong-config' - ) - if (configMapExists) { - await execCmdWithExitOnFailure( - `kubectl create cm kong-config -n ${kongNamespace} --from-file ${kongConfigTmpFile} -o yaml --dry-run | kubectl replace -f -` - ) - } else { - await execCmdWithExitOnFailure( - `kubectl create cm kong-config -n ${kongNamespace} --from-file ${kongConfigTmpFile}` - ) - } -} diff --git a/packages/celotool/src/lib/oracle.ts b/packages/celotool/src/lib/oracle.ts index 8a42599eb16..dc765bb3481 100644 --- a/packages/celotool/src/lib/oracle.ts +++ b/packages/celotool/src/lib/oracle.ts @@ -4,18 +4,12 @@ import yargs from 'yargs' import { getCloudProviderFromContext, getDynamicEnvVarValues } from './context-utils' import { getOraclePrivateKeysFor, privateKeyToAddress } from './generate_utils' import { AksClusterConfig } from './k8s-cluster/aks' -import { AwsClusterConfig } from './k8s-cluster/aws' import { BaseClusterManager, CloudProvider } from './k8s-cluster/base' import { AksHsmOracleDeployer, AksHsmOracleDeploymentConfig, AksHsmOracleIdentity, } from './k8s-oracle/aks-hsm' -import { - AwsHsmOracleDeployer, - AwsHsmOracleDeploymentConfig, - AwsHsmOracleIdentity, -} from './k8s-oracle/aws-hsm' import { BaseOracleDeployer, CurrencyPair } from './k8s-oracle/base' import { PrivateKeyOracleDeployer, @@ -36,7 +30,6 @@ const hsmOracleDeployerGetterByCloudProvider: { clusterManager: BaseClusterManager ) => BaseOracleDeployer } = { - [CloudProvider.AWS]: getAwsHsmOracleDeployer, [CloudProvider.AZURE]: getAksHsmOracleDeployer, } @@ -170,89 +163,12 @@ const aksHsmOracleIdentityConfigDynamicEnvVars: { addressKeyVaults: DynamicEnvVar.ORACLE_ADDRESS_AZURE_KEY_VAULTS, } -/** - * ----------- AwsHsmOracleDeployer helpers ----------- - */ - -/** - * Gets an AwsHsmOracleDeployer by looking at env var values - */ -function getAwsHsmOracleDeployer( - celoEnv: string, - context: string, - currencyPair: CurrencyPair, - useForno: boolean, - clusterManager: BaseClusterManager -) { - const { addressKeyAliases } = getDynamicEnvVarValues( - awsHsmOracleIdentityConfigDynamicEnvVars, - { context, currencyPair }, - { - addressKeyAliases: '', - } - ) - - const identities = getAwsHsmOracleIdentities(addressKeyAliases, currencyPair) - const deploymentConfig: AwsHsmOracleDeploymentConfig = { - context, - clusterConfig: clusterManager.clusterConfig as AwsClusterConfig, - currencyPair, - identities, - useForno, - } - return new AwsHsmOracleDeployer(deploymentConfig, celoEnv) -} - -/** - * Given a string addressKeyAliases containing comma separated info of the form: - *
:: - * eg: 0x0000000000000000000000000000000000000000:keyAlias0,0x0000000000000000000000000000000000000001:keyAlias1:region1 - * returns an array of AwsHsmOracleIdentity in the same order - */ -export function getAwsHsmOracleIdentities( - addressKeyAliases: string, - currencyPair: CurrencyPair -): AwsHsmOracleIdentity[] { - const identityStrings = addressKeyAliases.split(',') - const identities = [] - for (const identityStr of identityStrings) { - const [address, keyAlias, region] = identityStr.split(':') - // region can be undefined - if (!address || !keyAlias) { - throw Error(`Address or key alias is invalid. Address: ${address} Key Alias: ${keyAlias}`) - } - identities.push({ - address, - currencyPair, - keyAlias, - region, - }) - } - return identities -} - -/** - * Config values pulled from env vars used for generating an AwsHsmOracleIdentity - */ -interface AwsHsmOracleIdentityConfig { - addressKeyAliases: string -} - -/** - * Env vars corresponding to each value for the AwsHsmOracleIdentityConfig for a particular context - */ -const awsHsmOracleIdentityConfigDynamicEnvVars: { - [k in keyof AwsHsmOracleIdentityConfig]: DynamicEnvVar -} = { - addressKeyAliases: DynamicEnvVar.ORACLE_ADDRESS_AWS_KEY_ALIASES, -} - /** * ----------- PrivateKeyOracleDeployer helpers ----------- */ /** - * Gets an AwsHsmOracleDeployer by looking at env var values and generating private keys + * Gets an PrivateKeyOracleDeployer by looking at env var values and generating private keys * from the mnemonic */ function getPrivateKeyOracleDeployer( diff --git a/packages/celotool/src/lib/prometheus.ts b/packages/celotool/src/lib/prometheus.ts index 0d3462a8225..704b6caa2e3 100644 --- a/packages/celotool/src/lib/prometheus.ts +++ b/packages/celotool/src/lib/prometheus.ts @@ -290,7 +290,6 @@ async function createPrometheusGcloudServiceAccount( function getCloudProviderPrefix(clusterConfig: BaseClusterConfig) { const prefixByCloudProvider: { [key in CloudProvider]: string } = { - [CloudProvider.AWS]: 'aws', [CloudProvider.AZURE]: 'aks', [CloudProvider.GCP]: 'gcp', } diff --git a/packages/celotool/src/lib/promtail.ts b/packages/celotool/src/lib/promtail.ts index 2101b2a924c..3a4144684ff 100644 --- a/packages/celotool/src/lib/promtail.ts +++ b/packages/celotool/src/lib/promtail.ts @@ -91,11 +91,6 @@ async function helmParameters(clusterConfig?: BaseClusterConfig) { `--set extraArgs[0]='-client.external-labels=cluster_name=${clusterConfig?.clusterName}'` ) break - - case CloudProvider.AWS: - default: - console.error(`Unrecognised or unsupported cloud provider: ${cloudProvider}`) - process.exit(1) } const user = fetchEnv(envVar.LOKI_USERNAME) diff --git a/packages/helm-charts/komenci-rbac/Chart.yaml b/packages/helm-charts/komenci-rbac/Chart.yaml deleted file mode 100644 index 5fa277e324a..00000000000 --- a/packages/helm-charts/komenci-rbac/Chart.yaml +++ /dev/null @@ -1,5 +0,0 @@ -apiVersion: v1 -appVersion: "1.0" -description: A Helm chart to get the RBAC token needed by the komenci to reach the K8s API server -name: komenci-rbac -version: 0.1.0 diff --git a/packages/helm-charts/komenci-rbac/templates/_helper.tpl b/packages/helm-charts/komenci-rbac/templates/_helper.tpl deleted file mode 100644 index 1527741e2c3..00000000000 --- a/packages/helm-charts/komenci-rbac/templates/_helper.tpl +++ /dev/null @@ -1,15 +0,0 @@ -{{- define "name" -}} -{{- .Values.environment.name -}}-komenci-rbac-{{- .index -}} -{{- end -}} - -{{- define "komenci-pod-name" -}} -{{- .Values.environment.name -}}-relayer-{{- .index -}} -{{- end -}} - -{{- define "rewards-name" -}} -{{- .Values.environment.name -}}-komenci-rewards-rbac-{{- .index -}} -{{- end -}} - -{{- define "komenci-rewards-pod-name" -}} -{{- .Values.environment.name -}}-rewards-relayer-{{- .index -}} -{{- end -}} \ No newline at end of file diff --git a/packages/helm-charts/komenci-rbac/templates/role.yaml b/packages/helm-charts/komenci-rbac/templates/role.yaml deleted file mode 100644 index df04f4e72b0..00000000000 --- a/packages/helm-charts/komenci-rbac/templates/role.yaml +++ /dev/null @@ -1,27 +0,0 @@ -{{ range $index, $e := until (.Values.relayer.replicas | int) }} -{{- $index_counter := (dict "Values" $.Values "index" $index) -}} -apiVersion: rbac.authorization.k8s.io/v1 -kind: Role -metadata: - name: {{ template "name" $index_counter }} -rules: -- apiGroups: [""] - resources: ["pods"] - resourceNames: ["{{ template "komenci-pod-name" $index_counter }}"] - verbs: ["get", "patch"] ---- -{{ end }} - -{{ range $index, $e := until (.Values.rewards.relayer.replicas | int) }} -{{- $index_counter := (dict "Values" $.Values "index" $index) -}} -apiVersion: rbac.authorization.k8s.io/v1 -kind: Role -metadata: - name: {{ template "rewards-name" $index_counter }} -rules: -- apiGroups: [""] - resources: ["pods"] - resourceNames: ["{{ template "komenci-rewards-pod-name" $index_counter }}"] - verbs: ["get", "patch"] ---- -{{ end }} diff --git a/packages/helm-charts/komenci-rbac/templates/rolebinding.yaml b/packages/helm-charts/komenci-rbac/templates/rolebinding.yaml deleted file mode 100644 index f9ebfb24826..00000000000 --- a/packages/helm-charts/komenci-rbac/templates/rolebinding.yaml +++ /dev/null @@ -1,31 +0,0 @@ -{{ range $index, $e := until (.Values.relayer.replicas | int) }} -{{- $index_counter := (dict "Values" $.Values "index" $index) -}} -apiVersion: rbac.authorization.k8s.io/v1 -kind: RoleBinding -metadata: - name: {{ template "name" $index_counter }} -roleRef: - apiGroup: rbac.authorization.k8s.io - kind: Role - name: {{ template "name" $index_counter }} -subjects: -- kind: ServiceAccount - name: {{ template "name" $index_counter }} ---- -{{ end }} - -{{ range $index, $e := until (.Values.rewards.relayer.replicas | int) }} -{{- $index_counter := (dict "Values" $.Values "index" $index) -}} -apiVersion: rbac.authorization.k8s.io/v1 -kind: RoleBinding -metadata: - name: {{ template "rewards-name" $index_counter }} -roleRef: - apiGroup: rbac.authorization.k8s.io - kind: Role - name: {{ template "rewards-name" $index_counter }} -subjects: -- kind: ServiceAccount - name: {{ template "rewards-name" $index_counter }} ---- -{{ end }} diff --git a/packages/helm-charts/komenci-rbac/templates/service-account.yaml b/packages/helm-charts/komenci-rbac/templates/service-account.yaml deleted file mode 100644 index da8ea5730db..00000000000 --- a/packages/helm-charts/komenci-rbac/templates/service-account.yaml +++ /dev/null @@ -1,17 +0,0 @@ -{{ range $index, $e := until (.Values.relayer.replicas | int) }} -{{- $index_counter := (dict "Values" $.Values "index" $index) -}} -apiVersion: v1 -kind: ServiceAccount -metadata: - name: {{ template "name" $index_counter}} ---- -{{ end }} - -{{ range $index, $e := until (.Values.rewards.relayer.replicas | int) }} -{{- $index_counter := (dict "Values" $.Values "index" $index) -}} -apiVersion: v1 -kind: ServiceAccount -metadata: - name: {{ template "rewards-name" $index_counter}} ---- -{{ end }} diff --git a/packages/helm-charts/komenci-rbac/values.yaml b/packages/helm-charts/komenci-rbac/values.yaml deleted file mode 100644 index 8b4bfd1fc52..00000000000 --- a/packages/helm-charts/komenci-rbac/values.yaml +++ /dev/null @@ -1,5 +0,0 @@ -environment: - name: default - -relayer: - replicas: 2 diff --git a/packages/helm-charts/komenci/Chart.yaml b/packages/helm-charts/komenci/Chart.yaml deleted file mode 100644 index d4b70b8f480..00000000000 --- a/packages/helm-charts/komenci/Chart.yaml +++ /dev/null @@ -1,9 +0,0 @@ -apiVersion: v1 -appVersion: "0.2.0" -description: A Helm chart for the Komenci app -name: komenci -version: 0.1.0 -dependencies: - - name: common - repository: oci://us-west1-docker.pkg.dev/devopsre/clabs-public-oci - version: 0.2.0 diff --git a/packages/helm-charts/komenci/templates/_helpers.tpl b/packages/helm-charts/komenci/templates/_helpers.tpl deleted file mode 100644 index df8bc9c4a72..00000000000 --- a/packages/helm-charts/komenci/templates/_helpers.tpl +++ /dev/null @@ -1,92 +0,0 @@ -{{/* -The name of the deployment -*/}} -{{- define "name" -}} -{{- .Values.environment.name -}}-relayer -{{- end -}} - -{{- define "rewards-relayer-name" -}} -{{- .Values.environment.name -}}-rewards-relayer -{{- end -}} - -{{- define "komenci-onboarding-fullname" -}} -{{- .Values.environment.name -}}-onboarding -{{- end -}} - -{{- define "komenci-rewards-fullname" -}} -{{- .Values.environment.name -}}-rewards -{{- end -}} - -{{/* -Common labels that are recommended to be used by Helm and Kubernetes -*/}} -{{- define "labels" -}} -app.kubernetes.io/name: {{ template "name" . }} -helm.sh/chart: {{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }} -app.kubernetes.io/managed-by: {{ .Release.Service }} -app.kubernetes.io/instance: {{ .Release.Name }} -{{- end -}} - -{{/* -Annotations to indicate to the prometheus server that this node should be scraped for metrics -*/}} -{{- define "metric-annotations" -}} -prometheus.io/scrape: "true" -prometheus.io/port: "{{ .Values.relayer.metrics.prometheusPort }}" -{{- end -}} - -{{/* -Label specific to the komenci relayer component -*/}} -{{- define "komenci-relayer-component-label" -}} -app.kubernetes.io/component: komenci-relayer -{{- end -}} - -{{/* -Label specific to the komenci onboarding component -*/}} -{{- define "komenci-onboarding-component-label" -}} -app.kubernetes.io/component: komenci-onboarding -{{- end -}} - -{{/* -Label specific to the komenci rewards component -*/}} -{{- define "komenci-rewards-component-label" -}} -app.kubernetes.io/component: komenci-rewards -{{- end -}} - -{{/* -Label specific to the komenci rewards relayer component -*/}} -{{- define "komenci-rewards-relayer-component-label" -}} -app.kubernetes.io/component: komenci-rewards-relayer -{{- end -}} - -{{/* -The name of the azure identity binding for all relayers -*/}} -{{- define "azure-identity-binding-name" -}} -{{- with .dot -}}{{ template "name" . }}{{- end -}}-{{ .index }}-identity-binding -{{- end -}} - -{{/* -The name of the azure identity binding for all rewards relayers -*/}} -{{- define "azure-rewards-identity-binding-name" -}} -{{- with .dot -}}{{ template "rewards-relayer-name" . }}{{- end -}}-{{ .index }}-identity-binding -{{- end -}} - -{{/* -The name of the azure identity for all relayers -*/}} -{{- define "azure-identity-name" -}} -{{- with .dot -}}{{ template "name" . }}{{- end -}}-{{ .index }}-identity -{{- end -}} - -{{/* -The name of the azure identity for all rewards relayers -*/}} -{{- define "azure-rewards-identity-name" -}} -{{- with .dot -}}{{ template "rewards-relayer-name" . }}{{- end -}}-{{ .index }}-identity -{{- end -}} \ No newline at end of file diff --git a/packages/helm-charts/komenci/templates/azure-identity-binding.yaml b/packages/helm-charts/komenci/templates/azure-identity-binding.yaml deleted file mode 100644 index 6160db69102..00000000000 --- a/packages/helm-charts/komenci/templates/azure-identity-binding.yaml +++ /dev/null @@ -1,25 +0,0 @@ -{{- range $index, $identity := .Values.relayer.identities -}} -{{ if (hasKey $identity "azure") }} -apiVersion: "aadpodidentity.k8s.io/v1" -kind: AzureIdentityBinding -metadata: - name: {{ template "azure-identity-binding-name" (dict "dot" $ "index" $index) }} -spec: - azureIdentity: {{ template "azure-identity-name" (dict "dot" $ "index" $index) }} - selector: {{ template "azure-identity-binding-name" (dict "dot" $ "index" $index) }} ---- -{{ end }} -{{ end }} - -{{- range $index, $identity := .Values.rewards.relayer.identities -}} -{{ if (hasKey $identity "azure") }} -apiVersion: "aadpodidentity.k8s.io/v1" -kind: AzureIdentityBinding -metadata: - name: {{ template "azure-rewards-identity-binding-name" (dict "dot" $ "index" $index) }} -spec: - azureIdentity: {{ template "azure-rewards-identity-name" (dict "dot" $ "index" $index) }} - selector: {{ template "azure-rewards-identity-binding-name" (dict "dot" $ "index" $index) }} ---- -{{ end }} -{{ end }} diff --git a/packages/helm-charts/komenci/templates/azure-identity.yaml b/packages/helm-charts/komenci/templates/azure-identity.yaml deleted file mode 100644 index b93930624c4..00000000000 --- a/packages/helm-charts/komenci/templates/azure-identity.yaml +++ /dev/null @@ -1,31 +0,0 @@ -{{- range $index, $identity := .Values.relayer.identities -}} -{{ if (hasKey $identity "azure") }} -apiVersion: aadpodidentity.k8s.io/v1 -kind: AzureIdentity -metadata: - name: {{ template "azure-identity-name" (dict "dot" $ "index" $index) }} - annotations: - aadpodidentity.k8s.io/Behavior: namespaced -spec: - type: 0 - resourceID: {{ $identity.azure.id }} - clientID: {{ $identity.azure.clientId }} ---- -{{ end }} -{{ end }} - -{{- range $index, $identity := .Values.rewards.relayer.identities -}} -{{ if (hasKey $identity "azure") }} -apiVersion: aadpodidentity.k8s.io/v1 -kind: AzureIdentity -metadata: - name: {{ template "azure-rewards-identity-name" (dict "dot" $ "index" $index) }} - annotations: - aadpodidentity.k8s.io/Behavior: namespaced -spec: - type: 0 - resourceID: {{ $identity.azure.id }} - clientID: {{ $identity.azure.clientId }} ---- -{{ end }} -{{ end }} diff --git a/packages/helm-charts/komenci/templates/logging-agent-config.yaml b/packages/helm-charts/komenci/templates/logging-agent-config.yaml deleted file mode 100644 index 2130bad90f1..00000000000 --- a/packages/helm-charts/komenci/templates/logging-agent-config.yaml +++ /dev/null @@ -1,124 +0,0 @@ -apiVersion: v1 -kind: ConfigMap -metadata: - name: logging-agent-config - namespace: default -data: - credentials-json: | -{{ .Values.loggingAgent.credentials | b64dec | indent 4 }} - app-conf: | - # Tails the container logs into standard JSON - - @type tail - path /var/log/containers/*.log - path_key file_path - pos_file /opt/containers.log.pos - tag komenci.app.{{ .Values.environment.network }} - limit_recently_modified 1d - - @type multi_format - - format json - time_key time - time_format %Y-%m-%dT%H:%M:%S.%NZ - - - format /^(? - - - - # Parses the kubernetes context from the container log name - - @type parser - format /var\/log\/containers\/(?[a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*)_(?[^_]+)_(?.+)-(?[a-z0-9]{64})\.log$/ - reserve_data true - emit_invalid_record_to_error false - key_name file_path - - - - @type grep - - key namespace - pattern /{{ .Values.environment.name }}/ - - - - - @type parser - key_name log - reserve_time true - reserve_data true - - - @type multi_format - - format json - - - format none - - - - - # Transforms the container log into a user friendly format - - @type record_transformer - enable_ruby - - message ${record['message'] || record['msg'] || record['log']} - severity ${record['severity'] || if record['stream'] == 'stderr' then 'ERROR' else 'INFO' end} - "logging.googleapis.com/local_resource_id" ${"k8s_container.#{record['namespace']}.#{record['pod_name']}.#{record['container_name']}"} - - remove_keys stream,log,file_path,msg,namespace,pod_name,container_name - - - google-fluentd-conf: | - @include config.d/*.conf - - # Prometheus monitoring. - - @type prometheus - port 24231 - - - @type prometheus_monitor - - - # Do not collect fluentd's own logs to avoid infinite loops. - - - # Add a unique insertId to each log entry that doesn't already have it. - # This helps guarantee the order and prevent log duplication. - - @type add_insert_ids - - - # Configure all sources to output to Google Cloud Logging - - @type google_cloud - label_map { - "container_id": "container_id" - } - use_metadata_service false - buffer_type file - buffer_path /var/log/google-fluentd/buffers - buffer_chunk_limit 512KB - flush_interval 5s - disable_retry_limit false - retry_limit 3 - retry_wait 10 - max_retry_wait 300 - num_threads 8 - detect_json true - use_grpc true - k8s_cluster_name {{ .Values.environment.cluster.name }} - k8s_cluster_location {{ .Values.environment.cluster.location }} - - diff --git a/packages/helm-charts/komenci/templates/logging-agent.yaml b/packages/helm-charts/komenci/templates/logging-agent.yaml deleted file mode 100644 index 7513771194f..00000000000 --- a/packages/helm-charts/komenci/templates/logging-agent.yaml +++ /dev/null @@ -1,84 +0,0 @@ -apiVersion: apps/v1 -kind: DaemonSet -metadata: - name: fluentd-log-agent - namespace: default -spec: - selector: - matchLabels: - name: fluentd-log-agent - template: - metadata: - creationTimestamp: null - annotations: - checksum/config: {{ include (print $.Template.BasePath "/logging-agent-config.yaml") . | sha256sum }} - labels: - name: fluentd-log-agent - spec: - serviceAccountName: default - tolerations: - - key: node-role.kubernetes.io/master - effect: NoSchedule - containers: - - image: celotestnet.azurecr.io/fluentd/google-fluentd:latest - imagePullPolicy: Always - name: fluentd-log-agent - resources: - limits: - memory: "250Mi" - cpu: 250m - requests: - memory: "250Mi" - cpu: 100m - volumeMounts: - - mountPath: /var/log - name: varlog - - mountPath: /var/lib/docker/containers - name: varlibdockercontainers - readOnly: true - - mountPath: /opt/credentials.json - name: credentials-json - subPath: credentials-json-path - readOnly: true - - mountPath: /etc/google-fluentd/google-fluentd.conf - name: google-fluentd-conf - subPath: google-fluentd-conf-path - readOnly: true - - mountPath: /etc/google-fluentd/config.d/app.conf - name: app-conf - subPath: app-conf-path - readOnly: true - env: - - name: GOOGLE_APPLICATION_CREDENTIALS - value: /opt/credentials.json - restartPolicy: Always - terminationGracePeriodSeconds: 30 - volumes: - - hostPath: - path: /var/log - name: varlog - - hostPath: - path: /var/lib/docker/containers - name: varlibdockercontainers - - name: credentials-json - configMap: - name: logging-agent-config - items: - - key: credentials-json - path: credentials-json-path - - name: app-conf - configMap: - name: logging-agent-config - items: - - key: app-conf - path: app-conf-path - - name: google-fluentd-conf - configMap: - name: logging-agent-config - items: - - key: google-fluentd-conf - path: google-fluentd-conf-path - - - - diff --git a/packages/helm-charts/komenci/templates/onboarding-deployment.yaml b/packages/helm-charts/komenci/templates/onboarding-deployment.yaml deleted file mode 100644 index fd6bf98290e..00000000000 --- a/packages/helm-charts/komenci/templates/onboarding-deployment.yaml +++ /dev/null @@ -1,84 +0,0 @@ -apiVersion: apps/v1 -kind: Deployment -metadata: - name: {{ include "komenci-onboarding-fullname" . }} - labels: -{{- include "komenci-onboarding-component-label" . | nindent 4 }} -spec: - replicas: {{ .Values.onboarding.replicaCount }} - selector: - matchLabels: - {{- include "komenci-onboarding-component-label" . | nindent 6 }} - template: - metadata: - labels: -{{- include "komenci-onboarding-component-label" . | nindent 8 }} - spec: - containers: - - name: komenci-onboarding - securityContext: - {{- toYaml .Values.securityContext | nindent 12 }} - image: {{ .Values.image.repository }}:{{ .Values.image.tag }} - imagePullPolicy: Always - ports: - - name: http - containerPort: 3000 - command: - - bash - - "-c" - - | - node packages/apps/api/dist/main.js - resources: - {{- toYaml .Values.onboarding.resources | nindent 12 }} - env: - - name: REPLICA_NAME - valueFrom: - fieldRef: - fieldPath: metadata.name -{{ include "common.env-var" (dict "name" "RULE_SIGNATURE_ENABLED" "dict" .Values.onboarding.ruleEnabled "value_name" "signature") | indent 10 }} -{{ include "common.env-var" (dict "name" "RULE_CAPTCHA_ENABLED" "dict" .Values.onboarding.ruleEnabled "value_name" "captcha") | indent 10 }} -{{ include "common.env-var" (dict "name" "RULE_CAPTCHA_CONFIG_BYPASS_ENABLED" "dict" .Values.onboarding.ruleConfig.captcha "value_name" "bypassEnabled") | indent 10 }} -{{ include "common.env-var" (dict "name" "RULE_CAPTCHA_CONFIG_BYPASS_TOKEN" "dict" .Values.onboarding.ruleConfig.captcha "value_name" "bypassToken") | indent 10 }} -{{ include "common.env-var" (dict "name" "RECAPTCHA_TOKEN" "dict" .Values.onboarding "value_name" "recaptchaToken") | indent 10 }} -{{ include "common.env-var" (dict "name" "QUOTA_DISTRIBUTED_BLINDED_PEPPER" "dict" .Values.onboarding.quota "value_name" "distributedBlindePepper") | indent 10 }} -{{ include "common.env-var" (dict "name" "QUOTA_REQUEST_SUBSIDISED_ATTESTATION" "dict" .Values.onboarding.quota "value_name" "requestSubsidisedAttestation") | indent 10 }} -{{ include "common.env-var" (dict "name" "QUOTA_SUBMIT_META_TRANSACTION" "dict" .Values.onboarding.quota "value_name" "submitMetaTransaction") | indent 10 }} -{{ include "common.env-var" (dict "name" "DB_HOST" "dict" .Values.onboarding.db "value_name" "host" "optional" true) | indent 10 }} -{{ include "common.env-var" (dict "name" "DB_PORT" "dict" .Values.onboarding.db "value_name" "port" "optional" true) | indent 10 }} -{{ include "common.env-var" (dict "name" "DB_USERNAME" "dict" .Values.onboarding.db "value_name" "username") | indent 10 }} -{{ include "common.env-var" (dict "name" "DB_PASSWORD" "dict" .Values.onboarding.db "value_name" "password") | indent 10 }} -{{ include "common.env-var" (dict "name" "DB_DATABASE" "dict" .Values.onboarding.db "value_name" "database") | indent 10 }} -{{ include "common.env-var" (dict "name" "DB_SYNCHRONIZE" "dict" .Values.onboarding.db "value_name" "synchronize") | indent 10 }} -{{ include "common.env-var" (dict "name" "DB_SSL" "dict" .Values.onboarding.db "value_name" "ssl") | indent 10 }} -{{ include "common.env-var" (dict "name" "NODE_ENV" "dict" .Values.onboarding "value_name" "node_env") | indent 10 }} -{{ include "common.env-var" (dict "name" "RELAYER_HOST" "dict" .Values.onboarding.relayer "value_name" "host") | indent 10 }} -{{ include "common.env-var" (dict "name" "RELAYER_PORT" "dict" .Values.onboarding.relayer "value_name" "port") | indent 10 }} -{{ include "common.env-var" (dict "name" "RELAYER_RPC_TIMEOUT_MS" "dict" .Values.onboarding.relayer "value_name" "rpcTimeoutMs") | indent 10 }} -{{ include "common.env-var" (dict "name" "THROTTLE_TTL" "dict" .Values.onboarding.throttle "value_name" "ttl") | indent 10 }} -{{ include "common.env-var" (dict "name" "THROTTLE_LIMIT" "dict" .Values.onboarding.throttle "value_name" "limit") | indent 10 }} -{{ include "common.env-var" (dict "name" "NETWORK" "dict" .Values.environment "value_name" "network") | indent 10 }} -{{ include "common.env-var" (dict "name" "PUBLIC_URL" "dict" .Values.onboarding "value_name" "publicUrl") | indent 10 }} - readinessProbe: - httpGet: - path: /v1/health - port: 3000 - initialDelaySeconds: 3 - periodSeconds: 3 - livenessProbe: - httpGet: - path: /v1/health - port: 3000 - initialDelaySeconds: 3 - periodSeconds: 10 - {{- with .Values.onboarding.nodeSelector }} - nodeSelector: - {{- toYaml . | nindent 8 }} - {{- end }} - {{- with .Values.onboarding.affinity }} - affinity: - {{- toYaml . | nindent 8 }} - {{- end }} - {{- with .Values.onboarding.tolerations }} - tolerations: - {{- toYaml . | nindent 8 }} - {{- end }} diff --git a/packages/helm-charts/komenci/templates/onboarding-ingress.yaml b/packages/helm-charts/komenci/templates/onboarding-ingress.yaml deleted file mode 100644 index d1269a49d57..00000000000 --- a/packages/helm-charts/komenci/templates/onboarding-ingress.yaml +++ /dev/null @@ -1,30 +0,0 @@ -apiVersion: networking.k8s.io/v1 -kind: Ingress -metadata: - name: komenci-onboarding-ingress - annotations: - kubernetes.io/tls-acme: "true" -spec: - ingressClassName: {{ default "nginx" .Values.ingressClassName }} - tls: - - hosts: - - {{ .Values.onboarding.publicHostname }} - secretName: {{ .Release.Namespace }}-web-tls - rules: - - host: {{ .Values.onboarding.publicHostname }} - http: - paths: - - path: /rewards - pathType: Prefix - backend: - service: - name: {{ .Release.Namespace }}-rewards - port: - number: 3000 - - path: / - pathType: Prefix - backend: - service: - name: {{ .Release.Namespace }}-onboarding - port: - number: 3000 diff --git a/packages/helm-charts/komenci/templates/onboarding-service.yaml b/packages/helm-charts/komenci/templates/onboarding-service.yaml deleted file mode 100644 index 0928dd40e53..00000000000 --- a/packages/helm-charts/komenci/templates/onboarding-service.yaml +++ /dev/null @@ -1,14 +0,0 @@ -apiVersion: v1 -kind: Service -metadata: - name: {{ include "komenci-onboarding-fullname" . }} - labels: -{{ include "labels" . | indent 4 }} -{{ include "komenci-onboarding-component-label" . | indent 4 }} -spec: - clusterIP: None - selector: -{{ include "komenci-onboarding-component-label" . | indent 4 }} - ports: - - name: http - port: 3000 \ No newline at end of file diff --git a/packages/helm-charts/komenci/templates/relayer-statefulset.yaml b/packages/helm-charts/komenci/templates/relayer-statefulset.yaml deleted file mode 100644 index a6e9fd4dea9..00000000000 --- a/packages/helm-charts/komenci/templates/relayer-statefulset.yaml +++ /dev/null @@ -1,135 +0,0 @@ -apiVersion: v1 -kind: Service -metadata: - name: {{ template "name" . }} - labels: -{{ include "labels" . | indent 4 }} -{{ include "komenci-relayer-component-label" . | indent 4 }} -spec: - ports: - - name: http - port: 3000 - clusterIP: None - selector: -{{ include "komenci-relayer-component-label" . | indent 4 }} ---- -apiVersion: apps/v1 -kind: StatefulSet -metadata: - name: {{ template "name" . }} - labels: -{{ include "labels" . | indent 4 }} -{{ include "komenci-relayer-component-label" . | indent 4 }} -spec: - podManagementPolicy: Parallel - updateStrategy: - type: RollingUpdate - replicas: {{ .Values.relayer.replicas }} - serviceName: relayer - selector: - matchLabels: -{{ include "labels" . | indent 6 }} -{{ include "komenci-relayer-component-label" . | indent 6 }} - template: - metadata: - labels: -{{ include "labels" . | indent 8 }} -{{ include "komenci-relayer-component-label" . | indent 8 }} - annotations: -{{ if .Values.relayer.metrics.enabled }} -{{ include "metric-annotations" . | indent 8 }} -{{ end }} - spec: - initContainers: - - name: set-label - image: {{ .Values.kubectl.image.repository }}:{{ .Values.kubectl.image.tag }} - command: - - /bin/bash - - -c - args: - - | - RID=${POD_NAME##*-} - TOKEN_ENV_VAR_NAME="TOKEN_$RID" - kubectl \ - --namespace "$POD_NAMESPACE" \ - --server="https://kubernetes.default.svc" \ - --token="${!TOKEN_ENV_VAR_NAME}" \ - --certificate-authority="/var/run/secrets/kubernetes.io/serviceaccount/ca.crt" \ - label pod "$POD_NAME" \ - --overwrite \ - "aadpodidbinding=$POD_NAME-identity-binding" - env: - - name: POD_NAMESPACE - valueFrom: - fieldRef: - fieldPath: metadata.namespace - - name: POD_NAME - valueFrom: - fieldRef: - fieldPath: metadata.name - {{ range $index, $e := .Values.kube.serviceAccountSecretNames }} - - name: TOKEN_{{ $index }} - valueFrom: - secretKeyRef: - key: token - name: {{ $e }} - {{ end }} - containers: - - name: komenci-relayer - image: {{ .Values.image.repository }}:{{ .Values.image.tag }} - imagePullPolicy: Always - ports: - - name: prometheus - containerPort: {{ .Values.relayer.metrics.prometheusPort }} - - name: relayer - containerPort: 3000 - command: - - bash - - "-c" - - | - [[ $REPLICA_NAME =~ -([0-9]+)$ ]] || exit 1 - RID=${BASH_REMATCH[1]} - - # Set the private key path. If Azure HSM signing is specified, - # it will take precedence. - export PRIVATE_KEY_PATH="/private-keys/private-key-$RID" - - # Get the correct key vault name. If this relayer's identity is not - # using Azure HSM signing, the key vault name will be empty and ignored - AZURE_KEY_VAULT_NAMES={{- range $index, $identity := .Values.relayer.identities -}}{{- if (hasKey $identity "azure" ) -}}{{ $identity.azure.keyVaultName | default "" }}{{- end }},{{- end }} - export AZURE_KEY_NAME=`echo -n $AZURE_KEY_VAULT_NAMES | cut -d ',' -f $((RID + 1))` - export AZURE_VAULT_NAME=`echo -n $AZURE_KEY_VAULT_NAMES | cut -d ',' -f $((RID + 1))` - - # Get the correct relayer account address - ADDRESSES={{- range $index, $identity := .Values.relayer.identities -}}{{ $identity.address }},{{- end }} - export WALLET_ADDRESS=`echo -n $ADDRESSES | cut -d ',' -f $((RID + 1))` - - node packages/apps/relayer/dist/main.js - env: - - name: REPLICA_NAME - valueFrom: - fieldRef: - fieldPath: metadata.name -{{ include "common.env-var" (dict "name" "AZURE_HSM_INIT_TRY_COUNT" "dict" .Values.relayer.azureHsm "value_name" "initTryCount") | indent 8 }} -{{ include "common.env-var" (dict "name" "AZURE_HSM_INIT_MAX_RETRY_BACKOFF_MS" "dict" .Values.relayer.azureHsm "value_name" "initMaxRetryBackoffMs") | indent 8 }} -{{ include "common.env-var" (dict "name" "METRICS" "dict" .Values.relayer.metrics "value_name" "enabled") | indent 8 }} -{{ include "common.env-var" (dict "name" "OVERRIDE_INDEX" "dict" .Values.relayer "value_name" "overrideIndex" "optional" true) | indent 8 }} -{{ include "common.env-var" (dict "name" "OVERRIDE_ORACLE_COUNT" "dict" .Values.relayer "value_name" "overrideOracleCount" "optional" true) | indent 8 }} -{{ include "common.env-var" (dict "name" "PRIVATE_KEY_PATH" "dict" .Values.relayer "value_name" "privateKeyPath" "optional" true) | indent 8 }} -{{ include "common.env-var" (dict "name" "PROMETHEUS_PORT" "dict" .Values.relayer.metrics "value_name" "prometheusPort") | indent 8 }} -{{ include "common.env-var" (dict "name" "NODE_ENV" "dict" .Values.relayer "value_name" "node_env") | indent 8 }} -{{ include "common.env-var" (dict "name" "RELAYER_PORT" "dict" .Values.relayer "value_name" "port") | indent 8 }} -{{ include "common.env-var" (dict "name" "NETWORK" "dict" .Values.environment "value_name" "network") | indent 8 }} -{{ include "common.env-var" (dict "name" "WALLET_TYPE" "dict" .Values.relayer "value_name" "walletType") | indent 8 }} -{{ include "common.env-var" (dict "name" "GAS_PRICE_UPDATE_INTERVAL_MS" "dict" .Values.relayer "value_name" "gasPriceUpdateIntervalMs") | indent 8 }} -{{ include "common.env-var" (dict "name" "GAS_PRICE_MULTIPLIER" "dict" .Values.relayer "value_name" "gasPriceMultiplier") | indent 8 }} - readinessProbe: - tcpSocket: - port: 3000 - initialDelaySeconds: 5 - periodSeconds: 10 - livenessProbe: - tcpSocket: - port: 3000 - initialDelaySeconds: 15 - periodSeconds: 20 diff --git a/packages/helm-charts/komenci/templates/rewards-deployment.yaml b/packages/helm-charts/komenci/templates/rewards-deployment.yaml deleted file mode 100644 index 61f77c8d3b8..00000000000 --- a/packages/helm-charts/komenci/templates/rewards-deployment.yaml +++ /dev/null @@ -1,47 +0,0 @@ -apiVersion: apps/v1 -kind: Deployment -metadata: - name: {{ include "komenci-rewards-fullname" . }} - labels: -{{- include "komenci-rewards-component-label" . | nindent 4 }} -spec: - replicas: {{ .Values.rewards.replicaCount }} - selector: - matchLabels: - {{- include "komenci-rewards-component-label" . | nindent 6 }} - template: - metadata: - labels: -{{- include "komenci-rewards-component-label" . | nindent 8 }} - spec: - containers: - - name: komenci-rewards - securityContext: - {{- toYaml .Values.securityContext | nindent 12 }} - image: {{ .Values.image.repository }}:{{ .Values.image.tag }} - imagePullPolicy: Always - ports: - - name: http - containerPort: 3000 - command: - - bash - - "-c" - - | - node packages/apps/rewards/dist/main.js - env: - - name: REPLICA_NAME - valueFrom: - fieldRef: - fieldPath: metadata.name -{{ include "common.env-var" (dict "name" "DB_HOST" "dict" .Values.rewards.db "value_name" "host" "optional" true) | indent 10 }} -{{ include "common.env-var" (dict "name" "DB_PORT" "dict" .Values.rewards.db "value_name" "port" "optional" true) | indent 10 }} -{{ include "common.env-var" (dict "name" "DB_USERNAME" "dict" .Values.rewards.db "value_name" "username") | indent 10 }} -{{ include "common.env-var" (dict "name" "DB_PASSWORD" "dict" .Values.rewards.db "value_name" "password") | indent 10 }} -{{ include "common.env-var" (dict "name" "DB_DATABASE" "dict" .Values.rewards.db "value_name" "database") | indent 10 }} -{{ include "common.env-var" (dict "name" "DB_SYNCHRONIZE" "dict" .Values.rewards.db "value_name" "synchronize") | indent 10 }} -{{ include "common.env-var" (dict "name" "DB_SSL" "dict" .Values.rewards.db "value_name" "ssl") | indent 10 }} -{{ include "common.env-var" (dict "name" "RELAYER_HOST" "dict" .Values.rewards.relayer "value_name" "host") | indent 10 }} -{{ include "common.env-var" (dict "name" "RELAYER_PORT" "dict" .Values.rewards.relayer "value_name" "port") | indent 10 }} -{{ include "common.env-var" (dict "name" "NETWORK" "dict" .Values.environment "value_name" "network") | indent 10 }} -{{ include "common.env-var" (dict "name" "SEGMENT_API_KEY" "dict" .Values.rewards "value_name" "segmentApiKey") | indent 10 }} -{{ include "common.env-var" (dict "name" "SHOULD_SEND_REWARDS" "dict" .Values.rewards "value_name" "shouldSendRewards") | indent 10 }} diff --git a/packages/helm-charts/komenci/templates/rewards-relayer-statefulset.yaml b/packages/helm-charts/komenci/templates/rewards-relayer-statefulset.yaml deleted file mode 100644 index 70fc0e4a129..00000000000 --- a/packages/helm-charts/komenci/templates/rewards-relayer-statefulset.yaml +++ /dev/null @@ -1,128 +0,0 @@ -apiVersion: v1 -kind: Service -metadata: - name: {{ template "rewards-relayer-name" . }} - labels: -{{ include "labels" . | indent 4 }} -{{ include "komenci-rewards-relayer-component-label" . | indent 4 }} -spec: - ports: - - name: http - port: 3000 - clusterIP: None - selector: -{{ include "komenci-rewards-relayer-component-label" . | indent 4 }} ---- -apiVersion: apps/v1 -kind: StatefulSet -metadata: - name: {{ template "rewards-relayer-name" . }} - labels: -{{ include "labels" . | indent 4 }} -{{ include "komenci-rewards-relayer-component-label" . | indent 4 }} -spec: - podManagementPolicy: Parallel - updateStrategy: - type: RollingUpdate - replicas: {{ .Values.rewards.relayer.replicas }} - serviceName: relayer - selector: - matchLabels: -{{ include "labels" . | indent 6 }} -{{ include "komenci-rewards-relayer-component-label" . | indent 6 }} - template: - metadata: - labels: -{{ include "labels" . | indent 8 }} -{{ include "komenci-rewards-relayer-component-label" . | indent 8 }} - annotations: -{{ if .Values.rewards.relayer.metrics.enabled }} -{{ include "metric-annotations" . | indent 8 }} -{{ end }} - spec: - initContainers: - - name: set-label - image: {{ .Values.kubectl.image.repository }}:{{ .Values.kubectl.image.tag }} - command: - - /bin/bash - - -c - args: - - | - RID=${POD_NAME##*-} - TOKEN_ENV_VAR_NAME="TOKEN_$RID" - kubectl \ - --namespace "$POD_NAMESPACE" \ - --server="https://kubernetes.default.svc" \ - --token="${!TOKEN_ENV_VAR_NAME}" \ - --certificate-authority="/var/run/secrets/kubernetes.io/serviceaccount/ca.crt" \ - label pod "$POD_NAME" \ - --overwrite \ - "aadpodidbinding=$POD_NAME-identity-binding" - env: - - name: POD_NAMESPACE - valueFrom: - fieldRef: - fieldPath: metadata.namespace - - name: POD_NAME - valueFrom: - fieldRef: - fieldPath: metadata.name - {{ range $index, $e := .Values.kube.rewardsServiceAccountSecretNames }} - - name: TOKEN_{{ $index }} - valueFrom: - secretKeyRef: - key: token - name: {{ $e }} - {{ end }} - containers: - - name: komenci-rewards-relayer - image: {{ .Values.image.repository }}:{{ .Values.image.tag }} - imagePullPolicy: Always - ports: - - name: prometheus - containerPort: {{ .Values.rewards.relayer.metrics.prometheusPort }} - - name: relayer - containerPort: 3000 - command: - - bash - - "-c" - - | - [[ $REPLICA_NAME =~ -([0-9]+)$ ]] || exit 1 - RID=${BASH_REMATCH[1]} - - # Get the correct key vault name. If this relayer's identity is not - # using Azure HSM signing, the key vault name will be empty and ignored - AZURE_KEY_VAULT_NAMES={{- range $index, $identity := .Values.rewards.relayer.identities -}}{{- if (hasKey $identity "azure" ) -}}{{ $identity.azure.keyVaultName | default "" }}{{- end }},{{- end }} - export AZURE_KEY_NAME=`echo -n $AZURE_KEY_VAULT_NAMES | cut -d ',' -f $((RID + 1))` - export AZURE_VAULT_NAME=`echo -n $AZURE_KEY_VAULT_NAMES | cut -d ',' -f $((RID + 1))` - - # Get the correct relayer account address - ADDRESSES={{- range $index, $identity := .Values.rewards.relayer.identities -}}{{ $identity.address }},{{- end }} - export WALLET_ADDRESS=`echo -n $ADDRESSES | cut -d ',' -f $((RID + 1))` - - node packages/apps/relayer/dist/main.js - env: - - name: REPLICA_NAME - valueFrom: - fieldRef: - fieldPath: metadata.name -{{ include "common.env-var" (dict "name" "AZURE_HSM_INIT_TRY_COUNT" "dict" .Values.komenci.azureHsm "value_name" "initTryCount") | indent 8 }} -{{ include "common.env-var" (dict "name" "AZURE_HSM_INIT_MAX_RETRY_BACKOFF_MS" "dict" .Values.komenci.azureHsm "value_name" "initMaxRetryBackoffMs") | indent 8 }} -{{ include "common.env-var" (dict "name" "METRICS" "dict" .Values.rewards.relayer.metrics "value_name" "enabled") | indent 8 }} -{{ include "common.env-var" (dict "name" "OVERRIDE_INDEX" "dict" .Values.rewards.relayer "value_name" "overrideIndex" "optional" true) | indent 8 }} -{{ include "common.env-var" (dict "name" "PROMETHEUS_PORT" "dict" .Values.rewards.relayer.metrics "value_name" "prometheusPort") | indent 8 }} -{{ include "common.env-var" (dict "name" "NODE_ENV" "dict" .Values.rewards.relayer "value_name" "node_env") | indent 8 }} -{{ include "common.env-var" (dict "name" "RELAYER_PORT" "dict" .Values.rewards.relayer "value_name" "port") | indent 8 }} -{{ include "common.env-var" (dict "name" "NETWORK" "dict" .Values.environment "value_name" "network") | indent 8 }} -{{ include "common.env-var" (dict "name" "WALLET_TYPE" "dict" .Values.rewards.relayer "value_name" "walletType") | indent 8 }} -{{ include "common.env-var" (dict "name" "GAS_PRICE_UPDATE_INTERVAL_MS" "dict" .Values.rewards.relayer "value_name" "gasPriceUpdateIntervalMs") | indent 8 }} - readinessProbe: - tcpSocket: - port: 3000 - initialDelaySeconds: 5 - periodSeconds: 10 - livenessProbe: - tcpSocket: - port: 3000 - initialDelaySeconds: 15 - periodSeconds: 20 \ No newline at end of file diff --git a/packages/helm-charts/komenci/templates/rewards-service.yaml b/packages/helm-charts/komenci/templates/rewards-service.yaml deleted file mode 100644 index 0653de5454a..00000000000 --- a/packages/helm-charts/komenci/templates/rewards-service.yaml +++ /dev/null @@ -1,14 +0,0 @@ -apiVersion: v1 -kind: Service -metadata: - name: {{ include "komenci-rewards-fullname" . }} - labels: -{{ include "labels" . | indent 4 }} -{{ include "komenci-rewards-component-label" . | indent 4 }} -spec: - clusterIP: None - selector: -{{ include "komenci-rewards-component-label" . | indent 4 }} - ports: - - name: http - port: 3000 diff --git a/packages/helm-charts/komenci/values.yaml b/packages/helm-charts/komenci/values.yaml deleted file mode 100644 index fc557f48fb7..00000000000 --- a/packages/helm-charts/komenci/values.yaml +++ /dev/null @@ -1,125 +0,0 @@ -# This file is intended to show the expected value structure with placeholder values. -# Many values are optional, and the defaults are left up to the client. -# These values are commented out in this file, but show the correct structure -# if they were to be specified. - -ingressClassName: nginx - -kube: - serviceAccountSecretNames: - - "secret1" - - "secret2" - -environment: - name: test - network: alfajores - cluster: - name: test-cluster - location: location - -image: - repository: celotestnet.azurecr.io/komenci/komenci - tag: 5f2ef23e6c51eda8e5288490eab8ec2cbd058b11 - -kubectl: - image: - repository: bitnami/kubectl - tag: 1.17.4 - -relayer: - node_env: production - image: - repository: celotestnet.azurecr.io/komenci/relayer - tag: dae43ddce108a73da07dce73875b980ff077c7d4 - replicas: 2 - port: 3000 - identities: - - address: 0x00454cac6dae53f8800f71395b9a174f07a784b1 - azure: - id: defaultId - clientId: defaultClientId - keyVaultName: staging-komenci-eus - - address: 0xc6f0f9bfb1aed83620ece3eac0add98a65a8574e - azure: - id: defaultId1 - clientId: defaultClientId1 - keyVaultName: staging-komenci-eus - azureHsm: - initTryCount: 5 - initMaxRetryBackoffMs: 30000 - metrics: - enabled: true - prometheusPort: 9090 - walletType: azure-hsm - gasPriceUpdateIntervalMs: "1200000" - gasPriceMultiplier: 5 - maxGasPrice: "30000000000" # 30 gwei - -onboarding: - node_env: production - image: - repository: celotestnet.azurecr.io/komenci/onboarding - tag: dae43ddce108a73da07dce73875b980ff077c7d4 - replicas: 2 - throttle: - ttl: 60 - limit: 25 - ruleEnabled: - signature: true - captcha: true - ruleConfig: - captcha: - bypassEnabled: false - bypassToken: "special-bypass-captcha-token" - recaptchaToken: 'from-secret' - quota: - distributedBlindePepper: 1 - requestSubsidisedAttestation: 10 - submitMetaTransaction: 20 - relayer: - host: alfajores-relayer - port: 3000 - rpcTimeoutMs: 12000 - db: - host: komenci-komenci-postgresql - port: 5432 - username: 'postgres' - database: 'postgres' - synchronize: true - ssl: true - -rewards: - segmentApiKey: 'writeApiKey' - shouldSendRewards: false - relayer: - node_env: production - image: - repository: celotestnet.azurecr.io/komenci/relayer - tag: dae43ddce108a73da07dce73875b980ff077c7d4 - replicas: 2 - port: 3000 - identities: - - address: 0xb04390478A57E3C2147599D5380434f25fa5234d - privateKey: 0x000 - azure: - id: defaultId - clientId: defaultClientId - keyVaultName: staging-komenci-rewards - azureHsm: - initTryCount: 5 - initMaxRetryBackoffMs: 30000 - metrics: - enabled: true - prometheusPort: 9090 - walletType: azure-hsm - gasPriceUpdateIntervalMs: "1200000" - db: - host: komenci-komenci-postgresql - port: 5432 - username: 'postgres' - database: 'postgres' - synchronize: true - ssl: true - -loggingAgent: - credentials: eydleGFtcGxlJzogJ2NyZWRlbnRpYWxzJ30K # base64 credentials.json of a gcloud service account \ No newline at end of file diff --git a/packages/helm-charts/kong/.helmignore b/packages/helm-charts/kong/.helmignore deleted file mode 100644 index f0c13194444..00000000000 --- a/packages/helm-charts/kong/.helmignore +++ /dev/null @@ -1,21 +0,0 @@ -# Patterns to ignore when building packages. -# This supports shell glob matching, relative path matching, and -# negation (prefixed with !). Only one pattern per line. -.DS_Store -# Common VCS dirs -.git/ -.gitignore -.bzr/ -.bzrignore -.hg/ -.hgignore -.svn/ -# Common backup files -*.swp -*.bak -*.tmp -*~ -# Various IDEs -.project -.idea/ -*.tmproj diff --git a/packages/helm-charts/kong/Chart.lock b/packages/helm-charts/kong/Chart.lock deleted file mode 100644 index ec9d6b4435e..00000000000 --- a/packages/helm-charts/kong/Chart.lock +++ /dev/null @@ -1,12 +0,0 @@ -dependencies: -- name: postgresql - repository: https://charts.bitnami.com/bitnami - version: 10.4.6 -- name: cassandra - repository: https://charts.bitnami.com/bitnami - version: 7.5.5 -- name: common - repository: https://charts.bitnami.com/bitnami - version: 1.5.2 -digest: sha256:821ac1123fff0767b608586096c4b200cefb37cd1b27541f901d70adffcefbc3 -generated: "2021-05-22T08:23:02.029976706Z" diff --git a/packages/helm-charts/kong/Chart.yaml b/packages/helm-charts/kong/Chart.yaml deleted file mode 100644 index 9e4a5cd483a..00000000000 --- a/packages/helm-charts/kong/Chart.yaml +++ /dev/null @@ -1,37 +0,0 @@ -annotations: - category: Infrastructure -apiVersion: v2 -appVersion: 2.4.1 -dependencies: - - condition: postgresql.enabled - name: postgresql - repository: https://charts.bitnami.com/bitnami - version: 10.x.x - - condition: cassandra.enabled - name: cassandra - repository: https://charts.bitnami.com/bitnami - version: 7.x.x - - name: common - repository: https://charts.bitnami.com/bitnami - version: 1.x.x -description: Kong is a scalable, open source API layer (aka API gateway or API middleware) that runs in front of any RESTful API. Extra functionalities beyond the core platform are extended through plugins. Kong is built on top of reliable technologies like NGINX and provides an easy-to-use RESTful API to operate and configure the system. -engine: gotpl -home: https://github.com/bitnami/charts/tree/master/bitnami/kong -icon: https://bitnami.com/assets/stacks/kong/img/kong-stack-220x234.png -keywords: - - kong - - ingress - - openresty - - controller - - http - - web - - www - - reverse proxy -maintainers: - - email: containers@bitnami.com - name: Bitnami -name: kong -sources: - - https://github.com/bitnami/bitnami-docker-kong - - https://konghq.com/ -version: 3.7.4 diff --git a/packages/helm-charts/kong/README.md b/packages/helm-charts/kong/README.md deleted file mode 100644 index 8995564c29b..00000000000 --- a/packages/helm-charts/kong/README.md +++ /dev/null @@ -1,502 +0,0 @@ -# Kong - -[Kong](https://konghq.com/kong/) is a scalable, open source API layer (aka API gateway or API middleware) that runs in front of any RESTful API. Extra functionalities beyond the core platform are extended through plugins. Kong is built on top of reliable technologies like NGINX and provides an easy-to-use RESTful API to operate and configure the system. - -## TL;DR - -```console - helm repo add bitnami https://charts.bitnami.com/bitnami - helm install my-release bitnami/kong -``` - -## Introduction - -This chart bootstraps a [kong](https://github.com/bitnami/bitnami-docker-kong) deployment on a [Kubernetes](http://kubernetes.io) cluster using the [Helm](https://helm.sh) package manager. It also includes the [kong-ingress-controller](https://github.com/bitnami/bitnami-docker-kong-ingress-controller) container for managing Ingress resources using Kong. - -Bitnami charts can be used with [Kubeapps](https://kubeapps.com/) for deployment and management of Helm Charts in clusters. - -## Prerequisites - -- Kubernetes 1.12+ -- Helm 3.1.0 -- PV provisioner support in the underlying infrastructure - -## Installing the Chart - -To install the chart with the release name `my-release`: - -```console - helm repo add bitnami https://charts.bitnami.com/bitnami - helm install my-release bitnami/kong -``` - -These commands deploy kong on the Kubernetes cluster in the default configuration. The [Parameters](#parameters) section lists the parameters that can be configured during installation. - -> **Tip**: List all releases using `helm list` - -## Uninstalling the Chart - -To uninstall/delete the `my-release` deployment: - -```console - helm delete my-release -``` - -## Parameters - -The following tables list the configurable parameters of the kong chart and their default values per section/component: - -### Global Parameters - -| Parameter | Description | Default | -|---------------------------|-------------------------------------------------|---------------------------------------------------------| -| `global.imageRegistry` | Global Docker image registry | `nil` | -| `global.imagePullSecrets` | Global Docker registry secret names as an array | `[]` (does not add image pull secrets to deployed pods) | -| `global.storageClass` | Global storage class for dynamic provisioning | `nil` | - -### Common Parameters - -| Parameter | Description | Default | -|---------------------|---------------------------------------------------------------------------------------------------|-----------------| -| `nameOverride` | String to partially override kong.fullname template with a string (will prepend the release name) | `nil` | -| `fullnameOverride` | String to fully override kong.fullname template with a string | `nil` | -| `commonLabels` | Labels to add to all deployed objects | `nil` | -| `commonAnnotations` | Annotations to add to all deployed objects | `[]` | -| `clusterDomain` | Kubernetes cluster domain | `cluster.local` | -| `kubeVersion` | Force target Kubernetes version (using Helm capabilities if not set) | `nil` | - -### Deployment Parameters - -| Parameter | Description | Default | -|------------------------------------------|-----------------------------------------------------------------------------------------------------------------------------------------------|---------------------------------------------------------| -| `image.registry` | kong image registry | `docker.io` | -| `image.repository` | kong image name | `bitnami/kong` | -| `image.tag` | kong image tag | `{TAG_NAME}` | -| `image.pullPolicy` | kong image pull policy | `IfNotPresent` | -| `image.pullSecrets` | Specify docker-registry secret names as an array | `[]` (does not add image pull secrets to deployed pods) | -| `useDaemonset` | Use a daemonset instead of a deployment. `replicaCount` will not take effect. | `false` | -| `replicaCount` | Number of replicas of the kong Pod | `2` | -| `updateStrategy` | Update strategy for deployment | `{type: "RollingUpdate"}` | -| `schedulerName` | Alternative scheduler | `nil` | -| `database` | Select which database backend Kong will use. Can be 'postgresql' or 'cassandra' | `postgresql` | -| `containerSecurityContext` | Container security podSecurityContext | `{ runAsUser: 1001, runAsNonRoot: true}` | -| `podSecurityContext` | Pod security context | `{}` | -| `hostAliases` | Add deployment host aliases | `[]` | -| `nodeSelector` | Node labels for pod assignment | `{}` | -| `tolerations` | Tolerations for pod assignment | `[]` | -| `affinity` | Affinity for pod assignment | `{}` | -| `podAffinityPreset` | Pod affinity preset. Ignored if `affinity` is set. Allowed values: `soft` or `hard` | `""` | -| `podAntiAffinityPreset` | Pod anti-affinity preset. Ignored if `affinity` is set. Allowed values: `soft` or `hard` | `soft` | -| `nodeAffinityPreset.type` | Node affinity preset type. Ignored if `affinity` is set. Allowed values: `soft` or `hard` | `""` | -| `nodeAffinityPreset.key` | Node label key to match Ignored if `affinity` is set. | `""` | -| `nodeAffinityPreset.values` | Node label values to match. Ignored if `affinity` is set. | `[]` | -| `podAnnotations` | Pod annotations | `{}` | -| `podLabels` | Pod labels | `{}` | -| `sidecars` | Attach additional containers to the pod (evaluated as a template) | `nil` | -| `initContainers` | Add additional init containers to the pod (evaluated as a template) | `nil` | -| `pdb.enabled` | Deploy a pdb object for the Kong pod | `false` | -| `pdb.maxUnavailable` | Maximum unavailable Kong replicas (expressed in percentage) | `50%` | -| `autoscaling.enabled` | Deploy a HorizontalPodAutoscaler object for the Kong deployment | `false` | -| `autoscaling.apiVersion` | API Version of the HPA object (for compatibility with Openshift) | `v1beta1` | -| `autoscaling.minReplicas` | Minimum number of replicas to scale back | `2` | -| `autoscaling.maxReplicas` | Maximum number of replicas to scale out | `2` | -| `autoscaling.metrics` | Metrics to use when deciding to scale the deployment (evaluated as a template) | `Check values.yaml` | -| `extraVolumes` | Array of extra volumes to be added to the Kong deployment deployment (evaluated as template). Requires setting `extraVolumeMounts` | `nil` | -| `kong.livenessProbe` | Liveness probe (kong container) | `Check values.yaml` | -| `kong.readinessProbe` | Readiness probe (kong container) | `Check values.yaml` | -| `kong.lifecycleHooks` | Lifecycle hooks (kong container) | `Check deployment.yaml` | -| `kong.customLivenessProbe` | Override default liveness probe (kong container) | `nil` | -| `kong.customReadinessProbe` | Override default readiness probe (kong container) | `nil` | -| `kong.resources` | Configure resource requests and limits (kong container) | `nil` | -| `kong.extraVolumeMounts` | Array of extra volume mounts to be added to the Kong Container (evaluated as template). Normally used with `extraVolumes`. | `nil` | -| `ingressController.livenessProbe` | Liveness probe (kong ingress controller container) | `Check values.yaml` | -| `ingressController.readinessProbe` | Readiness probe (kong ingress controller container) | `Check values.yaml` | -| `ingressController.customLivenessProbe` | Override default liveness probe (kong ingress controller container) | `nil` | -| `ingressController.customReadinessProbe` | Override default readiness probe (kong ingress controller container) | `nil` | -| `ingressController.resources` | Configure resource requests and limits (kong ingress controller container) | `nil` | -| `ingressController.extraVolumeMounts` | Array of extra volume mounts to be added to the Kong Ingress Controller container (evaluated as template). Normally used with `extraVolumes`. | `nil` | -| `migration.resources` | Configure resource requests and limits (migration container) | `nil` | -| `migration.hostAliases` | Add deployment host aliases | `[]` | -| `migration.extraVolumeMounts` | Array of extra volume mounts to be added to the Kong Container (evaluated as template). Normally used with `extraVolumes`. | `nil` | -| `extraDeploy` | Array of extra objects to deploy with the release (evaluated as a template). | `nil` | - -### Traffic Exposure Parameters - -| Parameter | Description | Default | -|----------------------------------|------------------------------------------------------------------|--------------------------------| -| `service.type` | Kubernetes Service type | `ClusterIP` | -| `service.externalTrafficPolicy` | external traffic policy managing client source IP preservation | `Cluster` | -| `service.exposeAdmin` | Add the Kong Admin ports to the service | `false` | -| `service.proxyHttpPort` | kong proxy HTTP service port port | `80` | -| `service.proxyHttpsPort` | kong proxy HTTPS service port port | `443` | -| `service.adminHttpPort` | kong admin HTTPS service port (only if service.exposeAdmin=true) | `8001` | -| `service.adminHttpsPort` | kong admin HTTPS service port (only if service.exposeAdmin=true) | `8443` | -| `service.proxyHttpNodePort` | Port to bind to for NodePort service type (proxy HTTP) | `nil` | -| `service.proxyHttpsNodePort` | Port to bind to for NodePort service type (proxy HTTPS) | `nil` | -| `service.adminHttpNodePort` | Port to bind to for NodePort service type (admin HTTP) | `nil` | -| `service.aminHttpsNodePort` | Port to bind to for NodePort service type (proxy HTTP) | `nil` | -| `service.annotations` | Annotations for kong service | `{}` | -| `service.clusterIP` | Cluster internal IP of the service | `nil` | -| `service.loadBalancerIP` | loadBalancerIP if kong service type is `LoadBalancer` | `nil` | -| `ingress.enabled` | Enable ingress controller resource | `false` | -| `ingress.certManager` | Add annotations for cert-manager | `false` | -| `ingress.hostname` | Default host for the ingress resource | `kong.local` | -| `ingress.apiVersion` | Force Ingress API version (automatically detected if not set) | `` | -| `ingress.path` | Ingress path | `/` | -| `ingress.pathType` | Ingress path type | `ImplementationSpecific` | -| `ingress.tls` | Create TLS Secret | `false` | -| `ingress.annotations` | Ingress annotations | `[]` (evaluated as a template) | -| `ingress.extraHosts[0].name` | Additional hostnames to be covered | `nil` | -| `ingress.extraHosts[0].path` | Additional hostnames to be covered | `nil` | -| `ingress.extraPaths` | Additional arbitrary path/backend objects | `nil` | -| `ingress.extraTls[0].hosts[0]` | TLS configuration for additional hostnames to be covered | `nil` | -| `ingress.extraTls[0].secretName` | TLS configuration for additional hostnames to be covered | `nil` | -| `ingress.secrets[0].name` | TLS Secret Name | `nil` | -| `ingress.secrets[0].certificate` | TLS Secret Certificate | `nil` | -| `ingress.secrets[0].key` | TLS Secret Key | `nil` | - -### Kong Container Parameters - -| Parameter | Description | Default | -|---------------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------|---------| -| `kong.extraEnvVars` | Array containing extra env vars to configure Kong | `nil` | -| `kong.extraEnvVarsCM` | ConfigMap containing extra env vars to configure Kong | `nil` | -| `kong.extraEnvVarsSecret` | Secret containing extra env vars to configure Kong (in case of sensitive data) | `nil` | -| `kong.command` | Override default container command (useful when using custom images) | `nil` | -| `kong.args` | Override default container args (useful when using custom images) | `nil` | -| `kong.initScriptsCM` | ConfigMap containing `/docker-entrypoint-initdb.d` scripts to be executed at initialization time (evaluated as a template) | `nil` | -| `kong.initScriptsSecret` | Secret containing `/docker-entrypoint-initdb.d` scripts to be executed at initialization time (that contain sensitive data). Evaluated as a template. | `nil` | - -### Kong Migration job Parameters - -| Parameter | Description | Default | -|--------------------------------|--------------------------------------------------------------------------------------------------|-------------------------------------------------------------------------------------------------------------| -| `migration.image.registry` | Override Kong migration job image registry (Kong image if not set) | `nil` | -| `migration.image.repository` | Override Kong migration job image name (Kong image if not set) | `nil` | -| `migration.image.tag` | Override Kong migration job image tag (Kong image if not set) | `nil` | -| `migration.extraEnvVars` | Array containing extra env vars to configure the Kong migration job | `nil` | -| `migration.extraEnvVarsCM` | ConfigMap containing extra env vars to configure the Kong migration job | `nil` | -| `migration.extraEnvVarsSecret` | Secret containing extra env vars to configure the Kong migration job (in case of sensitive data) | `nil` | -| `migration.command` | Override default container command (useful when using custom images) | `nil` | -| `migration.args` | Override default container args (useful when using custom images) | `nil` | -| `migration.annotations` | Add annotations to the job | `helm.sh/hook: post-install, post-upgrade, helm.sh/hook-delete-policy: before-hook-creation,hook-succeeded` | - -### Kong Ingress Controller Container Parameters - -| Parameter | Description | Default | -|-------------------------------------------------|---------------------------------------------------------------------------------------------------------------------|---------------------------------------------------------| -| `ingressController.enabled` | Enable/disable the Kong Ingress Controller | `true` | -| `ingressController.image.registry` | Kong Ingress Controller image registry | `docker.io` | -| `ingressController.image.repository` | Kong Ingress Controller image name | `bitnami/kong` | -| `ingressController.image.tag` | Kong Ingress Controller image tag | `{TAG_NAME}` | -| `ingressController.image.pullPolicy` | kong ingress controller image pull policy | `IfNotPresent` | -| `ingressController.image.pullSecrets` | Specify docker-registry secret names as an array | `[]` (does not add image pull secrets to deployed pods) | -| `ingressController.proxyReadyTimeout` | Maximum time (in seconds) to wait for the Kong container to be ready | `300` | -| `ingressController.extraEnvVars` | Array containing extra env vars to configure Kong | `nil` | -| `ingressController.extraEnvVarsCM` | ConfigMap containing extra env vars to configure Kong Ingress Controller | `nil` | -| `ingressController.extraEnvVarsSecret` | Secret containing extra env vars to configure Kong Ingress Controller (in case of sensitive data) | `nil` | -| `ingressController.rbac.create` | Create the necessary Service Accounts, Roles and Rolebindings for the Ingress Controller to work | `true` | -| `ingressController.rbac.existingServiceAccount` | Use an existing service account for all the RBAC operations | `nil` | -| `ingressController.customResourceDeletePolicy` | Add custom CRD resource delete policy (for Helm 2 support) | `nil` | -| `ingressController.rbac.existingServiceAccount` | Use an existing service account for all the RBAC operations | `nil` | -| `ingressController.ingressClass` | Name of the class to register Kong Ingress Controller (useful when having other Ingress Controllers in the cluster) | `nil` | -| `ingressController.command` | Override default container command (useful when using custom images) | `nil` | -| `ingressController.args` | Override default container args (useful when using custom images) | `nil` | - -### PostgreSQL Parameters - -| Parameter | Description | Default | -|---------------------------------|--------------------------------------------------------------------------------------------------------------------------------|---------| -| `postgresql.enabled` | Deploy the PostgreSQL sub-chart | `true` | -| `postgresql.usePasswordFile` | Mount the PostgreSQL secret as a file | `no` | -| `postgresql.existingSecret` | Use an existing secret file with the PostgreSQL password (can be used with the bundled chart or with an existing installation) | `nil` | -| `postgresql.postgresqlDatabase` | Database name to be used by Kong | `kong` | -| `postgresql.postgresqlUsername` | Username to be created by the PostgreSQL bundled chart | `kong` | -| `postgresql.external.host` | Host of an external PostgreSQL installation | `nil` | -| `postgresql.external.user` | Username of the external PostgreSQL installation | `nil` | -| `postgresql.external.password` | Password of the external PostgreSQL installation | `nil` | - -### Cassandra Parameters - -| Parameter | Description | Default | -|-------------------------------|-------------------------------------------------------------------------------------------------------------------------------|---------| -| `cassandra.enabled` | Deploy the Cassandra sub-chart | `false` | -| `cassandra.usePasswordFile` | Mount the Cassandra secret as a file | `no` | -| `cassandra.existingSecret` | Use an existing secret file with the Cassandra password (can be used with the bundled chart or with an existing installation) | `nil` | -| `cassandra.dbUser.user` | Username to be created by the cassandra bundled chart | `kong` | -| `cassandra.external.hosts` | Hosts of an external cassandra installation | `nil` | -| `cassandra.external.port` | Port of an external cassandra installation | `nil` | -| `cassandra.external.user` | Username of the external cassandra installation | `nil` | -| `cassandra.external.password` | Password of the external cassandra installation | `nil` | - -### Metrics Parameters - -| Parameter | Description | Default | -|-----------------------------------------|--------------------------------------------------------------------------------------------------------|-------------------------------------------| -| `metrics.enabled` | Enable the export of Prometheus metrics | `false` | -| `metrics.service.type` | Type of the Prometheus metrics service | `ClusterIP file` | -| `metrics.service.port` | Port of the Prometheus metrics service | `9119` | -| `metrics.service.annotations` | Port for Prometheus metrics service | `9119` | -| `metrics.service.annotations` | Annotations for Prometheus metrics service | `Check values.yaml file` | -| `metrics.serviceMonitor.enabled` | if `true`, creates a Prometheus Operator ServiceMonitor (also requires `metrics.enabled` to be `true`) | `false` | -| `metrics.serviceMonitor.namespace` | Namespace in which Prometheus is running | `nil` | -| `metrics.serviceMonitor.serviceAccount` | Service account used by Prometheus | `nil` | -| `metrics.serviceMonitor.rbac.create` | if `true`, creates a Role and Role binding for Prometheus so it can reach kong's namespace | `true` | -| `metrics.serviceMonitor.interval` | Interval at which metrics should be scraped. | `nil` (Prometheus Operator default value) | -| `metrics.serviceMonitor.scrapeTimeout` | Timeout after which the scrape is ended | `nil` (Prometheus Operator default value) | -| `metrics.serviceMonitor.selector` | Prometheus instance selector labels | `nil` | - -Specify each parameter using the `--set key=value[,key=value]` argument to `helm install`. For example, - -```console - helm install my-release \ - --set service.exposeAdmin=true bitnami/kong -``` - -The above command exposes the Kong admin ports inside the Kong service. - -Alternatively, a YAML file that specifies the values for the parameters can be provided while installing the chart. For example, - -```console - helm install my-release -f values.yaml bitnami/kong -``` - -> **Tip**: You can use the default [values.yaml](values.yaml) - -## Configuration and installation details - -### [Rolling VS Immutable tags](https://docs.bitnami.com/containers/how-to/understand-rolling-tags-containers/) - -It is strongly recommended to use immutable tags in a production environment. This ensures your deployment does not change automatically if the same tag is updated with a different image. - -Bitnami will release a new chart updating its containers if a new version of the main container, significant changes, or critical vulnerabilities exist. - -### Database backend - -The Bitnami Kong chart allows setting two database backends: PostgreSQL or Cassandra. For each option, there are two extra possibilities: deploy a sub-chart with the database installation or use an existing one. The list below details the different options (replace the placeholders specified between _UNDERSCORES_): - -- Deploy the PostgreSQL sub-chart (default) - -```console - helm install my-release bitnami/kong -``` - -- Use an external PostgreSQL database - -```console - helm install my-release bitnami/kong \ - --set postgresql.enabled=false \ - --set postgresql.external.host=_HOST_OF_YOUR_POSTGRESQL_INSTALLATION_ \ - --set postgresql.external.password=_PASSWORD_OF_YOUR_POSTGRESQL_INSTALLATION_ \ - --set postgresql.external.user=_USER_OF_YOUR_POSTGRESQL_INSTALLATION_ -``` - -- Deploy the Cassandra sub-chart - -```console - helm install my-release bitnami/kong \ - --set database=cassandra \ - --set postgresql.enabled=false \ - --set cassandra.enabled=true -``` - -- Use an existing Cassandra installation - -```console - helm install my-release bitnami/kong \ - --set database=cassandra \ - --set postgresql.enabled=false \ - --set cassandra.enabled=false \ - --set cassandra.external.hosts[0]=_CONTACT_POINT_0_OF_YOUR_CASSANDRA_CLUSTER_ \ - --set cassandra.external.hosts[1]=_CONTACT_POINT_1_OF_YOUR_CASSANDRA_CLUSTER_ \ - ... - --set cassandra.external.user=_USER_OF_YOUR_CASSANDRA_INSTALLATION_ \ - --set cassandra.external.password=_PASSWORD_OF_YOUR_CASSANDRA_INSTALLATION_ -``` - -### DB-less - -Kong 1.1 added the capability to run Kong without a database, using only in-memory storage for entities: we call this DB-less mode. When running Kong DB-less, the configuration of entities is done in a second configuration file, in YAML or JSON, using declarative configuration (ref. [Link](https://docs.konghq.com/gateway-oss/1.1.x/db-less-and-declarative-config/)). -As is said in step 4 of [kong official docker installation](https://docs.konghq.com/install/docker#db-less-mode), just add the env variable "KONG_DATABASE=off". - -#### How to enable it - -1. Set `database` value with any value other than "postgresql" or "cassandra". For example `database: "off"` -2. Use `kong.extraEnvVars` value to set the `KONG_DATABASE` environment variable: -```yaml -kong.extraEnvVars: -- name: KONG_DATABASE - value: "off" -``` - -### Sidecars and Init Containers - -If you have a need for additional containers to run within the same pod as Kong (e.g. an additional metrics or logging exporter), you can do so via the `sidecars` config parameter. Simply define your container according to the Kubernetes container spec. - -```yaml -sidecars: - - name: your-image-name - image: your-image - imagePullPolicy: Always - ports: - - name: portname - containerPort: 1234 -``` - -Similarly, you can add extra init containers using the `initContainers` parameter. - -```yaml -initContainers: - - name: your-image-name - image: your-image - imagePullPolicy: Always - ports: - - name: portname - containerPort: 1234 -``` - -### Adding extra environment variables - -In case you want to add extra environment variables (useful for advanced operations like custom init scripts), you can use the `kong.extraEnvVars` property. - -```yaml -kong: - extraEnvVars: - - name: KONG_LOG_LEVEL - value: error -``` - -Alternatively, you can use a ConfigMap or a Secret with the environment variables. To do so, use the `kong.extraEnvVarsCM` or the `kong.extraEnvVarsSecret` values. - -The Kong Ingress Controller and the Kong Migration job also allow this kind of configuration via the `ingressController.extraEnvVars`, `ingressController.extraEnvVarsCM`, `ingressController.extraEnvVarsSecret`, `migration.extraEnvVars`, `migration.extraEnvVarsCM` and `migration.extraEnvVarsSecret` values. - -### Using custom init scripts - -For advanced operations, the Bitnami Kong charts allows using custom init scripts that will be mounted in `/docker-entrypoint.init-db`. You can use a ConfigMap or a Secret (in case of sensitive data) for mounting these extra scripts. Then use the `kong.initScriptsCM` and `kong.initScriptsSecret` values. - -```console -elasticsearch.hosts[0]=elasticsearch-host -elasticsearch.port=9200 -initScriptsCM=special-scripts -initScriptsSecret=special-scripts-sensitive -``` - -### Deploying extra resources - -There are cases where you may want to deploy extra objects, such as KongPlugins, KongConsumers, amongst others. For covering this case, the chart allows adding the full specification of other objects using the `extraDeploy` parameter. The following example would activate a plugin at deployment time. - -```yaml -## Extra objects to deploy (value evaluated as a template) -## -extraDeploy: |- - - apiVersion: configuration.konghq.com/v1 - kind: KongPlugin - metadata: - name: {{ include "common.names.fullname" . }}-plugin-correlation - namespace: {{ .Release.Namespace }} - labels: {{- include "common.labels.standard" . | nindent 6 }} - config: - header_name: my-request-id - plugin: correlation-id -``` - -### Setting Pod's affinity - -This chart allows you to set your custom affinity using the `affinity` parameter. Find more information about Pod's affinity in the [kubernetes documentation](https://kubernetes.io/docs/concepts/configuration/assign-pod-node/#affinity-and-anti-affinity). - -As an alternative, you can use of the preset configurations for pod affinity, pod anti-affinity, and node affinity available at the [bitnami/common](https://github.com/bitnami/charts/tree/master/bitnami/common#affinities) chart. To do so, set the `podAffinityPreset`, `podAntiAffinityPreset`, or `nodeAffinityPreset` parameters. - -## Troubleshooting - -Find more information about how to deal with common errors related to Bitnami’s Helm charts in [this troubleshooting guide](https://docs.bitnami.com/general/how-to/troubleshoot-helm-chart-issues). - -## Upgrading - -It's necessary to specify the existing passwords while performing a upgrade to ensure the secrets are not updated with invalid randomly generated passwords. Remember to specify the existing values of the `postgresql.postgresqlPassword` or `cassandra.password` parameters when upgrading the chart: - -```bash -$ helm upgrade my-release bitnami/kong \ - --set database=postgresql - --set postgresql.enabled=true - --set - --set postgresql.postgresqlPassword=[POSTGRESQL_PASSWORD] -``` - -> Note: you need to substitute the placeholders _[POSTGRESQL_PASSWORD]_ with the values obtained from instructions in the installation notes. - -### To 3.1.0 - -Kong Ingress Controller version was bumped to new major version, `1.x.x`. The associated CRDs were updated accordingly. - -### To 3.0.0 - -[On November 13, 2020, Helm v2 support was formally finished](https://github.com/helm/charts#status-of-the-project), this major version is the result of the required changes applied to the Helm Chart to be able to incorporate the different features added in Helm v3 and to be consistent with the Helm project itself regarding the Helm v2 EOL. - -**What changes were introduced in this major version?** - -- Previous versions of this Helm Chart use `apiVersion: v1` (installable by both Helm 2 and 3), this Helm Chart was updated to `apiVersion: v2` (installable by Helm 3 only). [Here](https://helm.sh/docs/topics/charts/#the-apiversion-field) you can find more information about the `apiVersion` field. -- Move dependency information from the *requirements.yaml* to the *Chart.yaml* -- After running `helm dependency update`, a *Chart.lock* file is generated containing the same structure used in the previous *requirements.lock* -- The different fields present in the *Chart.yaml* file has been ordered alphabetically in a homogeneous way for all the Bitnami Helm Charts -- This chart depends on the **PostgreSQL 10** instead of **PostgreSQL 9**. Apart from the same changes that are described in this section, there are also other major changes due to the master/slave nomenclature was replaced by primary/readReplica. [Here](https://github.com/bitnami/charts/pull/4385) you can find more information about the changes introduced. - -**Considerations when upgrading to this version** - -- If you want to upgrade to this version using Helm v2, this scenario is not supported as this version doesn't support Helm v2 anymore -- If you installed the previous version with Helm v2 and wants to upgrade to this version with Helm v3, please refer to the [official Helm documentation](https://helm.sh/docs/topics/v2_v3_migration/#migration-use-cases) about migrating from Helm v2 to v3 -- If you want to upgrade to this version from a previous one installed with Helm v3, it should be done reusing the PVC used to hold the PostgreSQL data on your previous release. To do so, follow the instructions below (the following example assumes that the release name is `kong`): - -> NOTE: Please, create a backup of your database before running any of those actions. - -##### Export secrets and required values to update - -```console -$ export POSTGRESQL_PASSWORD=$(kubectl get secret --namespace default kong-postgresql -o jsonpath="{.data.postgresql-password}" | base64 --decode) -$ export POSTGRESQL_PVC=$(kubectl get pvc -l app.kubernetes.io/instance=kong,app.kubernetes.io/name=postgresql,role=master -o jsonpath="{.items[0].metadata.name}") -``` - -##### Delete statefulsets - -Delete PostgreSQL statefulset. Notice the option `--cascade=false`: - -``` -$ kubectl delete statefulsets.apps kong-postgresql --cascade=false -``` - -##### Upgrade the chart release - -```console -$ helm upgrade kong bitnami/kong \ - --set postgresql.postgresqlPassword=$POSTGRESQL_PASSWORD \ - --set postgresql.persistence.existingClaim=$POSTGRESQL_PVC -``` - -##### Force new statefulset to create a new pod for postgresql - -```console -$ kubectl delete pod kong-postgresql-0 -``` -Finally, you should see the lines below in MariaDB container logs: - -```console -$ kubectl logs $(kubectl get pods -l app.kubernetes.io/instance=postgresql,app.kubernetes.io/name=postgresql,role=primary -o jsonpath="{.items[0].metadata.name}") -... -postgresql 08:05:12.59 INFO ==> Deploying PostgreSQL with persisted data... -... -``` - -**Useful links** - -- https://docs.bitnami.com/tutorials/resolve-helm2-helm3-post-migration-issues/ -- https://helm.sh/docs/topics/v2_v3_migration/ -- https://helm.sh/blog/migrate-from-helm-v2-to-helm-v3/ - -### To 2.0.0 - -PostgreSQL and Cassandra dependencies versions were bumped to new major versions, `9.x.x` and `6.x.x` respectively. Both of these include breaking changes and hence backwards compatibility is no longer guaranteed. - -In order to properly migrate your data to this new version: - -* If you were using PostgreSQL as your database, please refer to the [PostgreSQL Upgrade Notes](https://github.com/bitnami/charts/tree/master/bitnami/postgresql#900). - -* If you were using Cassandra as your database, please refer to the [Cassandra Upgrade Notes](https://github.com/bitnami/charts/tree/master/bitnami/cassandra#to-600). diff --git a/packages/helm-charts/kong/ci/values-editing-containers.yaml b/packages/helm-charts/kong/ci/values-editing-containers.yaml deleted file mode 100644 index f8a1225bce0..00000000000 --- a/packages/helm-charts/kong/ci/values-editing-containers.yaml +++ /dev/null @@ -1,116 +0,0 @@ -## Edit kong container -## -kong: - command: - - sleep - args: - - "3600" - initScriptsCM: kong-initscripts - initScriptsSecret: kong-initscripts-secret - extraEnvVars: - - name: KONG_LOG_LEVEL - value: error - extraEnvVarsCM: kong-extraenv-cm - extraEnvVarsSecret: kong-extraenv-secret - extraVolumeMounts: - - name: kong-certs - mountPath: /bitnami/kong/certs - resources: - limits: - cpu: 500m - memory: 1Gi - -## Edit migration container -## -migration: - command: - - echo - args: - - test - extraEnvVars: - - name: KONG_CASSANDRA_USER - value: cassandra - extraEnvVarsCM: kong-migrate-extraenv-cm - extraEnvVarsSecret: kong-migrate-extraenv-secret - extraVolumeMounts: - - name: kong-migrate-credentials - mountPath: /bitnami/kong/credentials - resources: - limits: - cpu: 300m - memory: 2Gi - -## Edit migration container -## -ingressController: - command: - - echo - args: - - hello - extraEnvVars: - - name: CONTROLLER_LOG_LEVEL - value: error - extraEnvVarsCM: kong-controller-extraenv-cm - extraEnvVarsSecret: kong-controller-extraenv-secret - extraVolumeMounts: - - name: kong-controller-credentials - mountPath: /bitnami/kong/credentials - resources: - limits: - cpu: 1000m - memory: 2Gi - -sidecars: |- - - name: test-sidecar - image: bitnami/minideb - command: - - echo - - hi - -initContainers: |- - - name: test-init - image: bitnami/git - command: - - git - - clone - - github.com/bitnami/bitnami-docker-kong" - -volumes: - - name: kong-controller-credentials - hostPath: /tmp/credentials - - name: kong-migrate-credentials - hostPath: /tmp/migrate/credentials - - name: kong-certs - persistentVolumeClaim: - claimName: kong-certs-pvc - -nodeSelector: - disktype: ssd - -tolerations: - - key: "key" - operator: "Equal" - value: "value" - effect: "NoSchedule" - -affinity: |- - nodeAffinity: - requiredDuringSchedulingIgnoredDuringExecution: - nodeSelectorTerms: - - matchExpressions: - - key: kubernetes.io/e2e-az-name - operator: In - values: - - e2e-az1 - - e2e-az2 - preferredDuringSchedulingIgnoredDuringExecution: - - weight: 1 - preference: - matchExpressions: - - key: another-node-label-key - operator: In - values: - - another-node-label-value - -podAnnotations: - k8s/annotation: test diff --git a/packages/helm-charts/kong/ci/values-external-cassandra.yaml b/packages/helm-charts/kong/ci/values-external-cassandra.yaml deleted file mode 100644 index 22fa2caa590..00000000000 --- a/packages/helm-charts/kong/ci/values-external-cassandra.yaml +++ /dev/null @@ -1,13 +0,0 @@ -database: cassandra - -postgresql: - enabled: false -cassandra: - enabled: false - external: - hosts: - - test-cassandra1 - - test-cassandra2 - - test-cassandra3 - user: test - password: test diff --git a/packages/helm-charts/kong/ci/values-external-postgresql.yaml b/packages/helm-charts/kong/ci/values-external-postgresql.yaml deleted file mode 100644 index 31de2af466b..00000000000 --- a/packages/helm-charts/kong/ci/values-external-postgresql.yaml +++ /dev/null @@ -1,8 +0,0 @@ -database: postgresql - -postgresql: - enabled: false - external: - host: test-postgresql - user: test - password: test diff --git a/packages/helm-charts/kong/ci/values-ingress.yaml b/packages/helm-charts/kong/ci/values-ingress.yaml deleted file mode 100644 index f6ccc628a90..00000000000 --- a/packages/helm-charts/kong/ci/values-ingress.yaml +++ /dev/null @@ -1,2 +0,0 @@ -ingress: - enabled: true diff --git a/packages/helm-charts/kong/ci/values-metrics-hpa-pdb.yaml b/packages/helm-charts/kong/ci/values-metrics-hpa-pdb.yaml deleted file mode 100644 index b5177a061f3..00000000000 --- a/packages/helm-charts/kong/ci/values-metrics-hpa-pdb.yaml +++ /dev/null @@ -1,7 +0,0 @@ -metrics: - enabled: true -autoscaling: - enabled: true - -pdb: - enabled: true diff --git a/packages/helm-charts/kong/crds/custom-resource-definitions.yaml b/packages/helm-charts/kong/crds/custom-resource-definitions.yaml deleted file mode 100644 index 33ec2805527..00000000000 --- a/packages/helm-charts/kong/crds/custom-resource-definitions.yaml +++ /dev/null @@ -1,426 +0,0 @@ -apiVersion: apiextensions.k8s.io/v1beta1 -kind: CustomResourceDefinition -metadata: - name: kongconsumers.configuration.konghq.com -spec: - group: configuration.konghq.com - version: v1 - scope: Namespaced - names: - kind: KongConsumer - plural: kongconsumers - shortNames: - - kc - additionalPrinterColumns: - - name: Username - type: string - description: Username of a Kong Consumer - JSONPath: .username - - name: Age - type: date - description: Age - JSONPath: .metadata.creationTimestamp - validation: - openAPIV3Schema: - properties: - username: - type: string - custom_id: - type: string - credentials: - type: array - items: - type: string - subresources: - status: {} ---- -apiVersion: apiextensions.k8s.io/v1beta1 -kind: CustomResourceDefinition -metadata: - name: kongplugins.configuration.konghq.com -spec: - group: configuration.konghq.com - version: v1 - scope: Namespaced - names: - kind: KongPlugin - plural: kongplugins - shortNames: - - kp - additionalPrinterColumns: - - name: Plugin-Type - type: string - description: Name of the plugin - JSONPath: .plugin - - name: Age - type: date - description: Age - JSONPath: .metadata.creationTimestamp - - name: Disabled - type: boolean - description: Indicates if the plugin is disabled - JSONPath: .disabled - priority: 1 - - name: Config - type: string - description: Configuration of the plugin - JSONPath: .config - priority: 1 - validation: - openAPIV3Schema: - required: - - plugin - properties: - plugin: - type: string - disabled: - type: boolean - config: - type: object - configFrom: - type: object - properties: - secretKeyRef: - required: - - name - - key - type: object - properties: - name: - type: string - key: - type: string - run_on: - type: string - enum: - - first - - second - - all - protocols: - type: array - items: - type: string - enum: - - http - - https - - grpc - - grpcs - - tcp - - tls - subresources: - status: {} ---- -apiVersion: apiextensions.k8s.io/v1beta1 -kind: CustomResourceDefinition -metadata: - name: kongclusterplugins.configuration.konghq.com -spec: - group: configuration.konghq.com - version: v1 - scope: Cluster - names: - kind: KongClusterPlugin - plural: kongclusterplugins - shortNames: - - kcp - additionalPrinterColumns: - - name: Plugin-Type - type: string - description: Name of the plugin - JSONPath: .plugin - - name: Age - type: date - description: Age - JSONPath: .metadata.creationTimestamp - - name: Disabled - type: boolean - description: Indicates if the plugin is disabled - JSONPath: .disabled - priority: 1 - - name: Config - type: string - description: Configuration of the plugin - JSONPath: .config - priority: 1 - validation: - openAPIV3Schema: - required: - - plugin - properties: - plugin: - type: string - disabled: - type: boolean - config: - type: object - configFrom: - type: object - properties: - secretKeyRef: - required: - - name - - namespace - - key - type: object - properties: - namespace: - type: string - name: - type: string - key: - type: string - run_on: - type: string - enum: - - first - - second - - all - protocols: - type: array - items: - type: string - enum: - - http - - https - - grpc - - grpcs - - tcp - - tls - subresources: - status: {} ---- -apiVersion: apiextensions.k8s.io/v1beta1 -kind: CustomResourceDefinition -metadata: - name: kongingresses.configuration.konghq.com -spec: - group: configuration.konghq.com - version: v1 - scope: Namespaced - names: - kind: KongIngress - plural: kongingresses - shortNames: - - ki - validation: - openAPIV3Schema: - properties: - route: - properties: - methods: - type: array - items: - type: string - headers: - type: object - additionalProperties: - type: array - items: - type: string - regex_priority: - type: integer - strip_path: - type: boolean - preserve_host: - type: boolean - path_handling: - type: string - enum: - - "v0" - - "v1" - protocols: - type: array - items: - type: string - enum: - - http - - https - - grpc - - grpcs - - tcp - - tls - https_redirect_status_code: - type: integer - proxy: - type: object - properties: - protocol: - type: string - enum: - - http - - https - - grpc - - grpcs - - tcp - - tls - path: - type: string - pattern: ^/.*$ - retries: - type: integer - minimum: 0 - connect_timeout: - type: integer - minimum: 0 - read_timeout: - type: integer - minimum: 0 - write_timeout: - type: integer - minimum: 0 - upstream: - type: object - properties: - algorithm: - type: string - enum: - - "round-robin" - - "consistent-hashing" - - "least-connections" - host_header: - type: string - hash_on: - type: string - hash_on_cookie: - type: string - hash_on_cookie_path: - type: string - hash_on_header: - type: string - hash_fallback_header: - type: string - hash_fallback: - type: string - slots: - type: integer - minimum: 10 - healthchecks: - type: object - properties: - threshold: - type: integer - active: - type: object - properties: - concurrency: - type: integer - minimum: 1 - timeout: - type: integer - minimum: 0 - http_path: - type: string - pattern: ^/.*$ - healthy: &healthy - type: object - properties: - http_statuses: - type: array - items: - type: integer - interval: - type: integer - minimum: 0 - successes: - type: integer - minimum: 0 - unhealthy: &unhealthy - type: object - properties: - http_failures: - type: integer - minimum: 0 - http_statuses: - type: array - items: - type: integer - interval: - type: integer - minimum: 0 - tcp_failures: - type: integer - minimum: 0 - timeout: - type: integer - minimum: 0 - passive: - type: object - properties: - healthy: *healthy - unhealthy: *unhealthy - subresources: - status: {} ---- -apiVersion: apiextensions.k8s.io/v1beta1 -kind: CustomResourceDefinition -metadata: - name: tcpingresses.configuration.konghq.com -spec: - group: configuration.konghq.com - version: v1beta1 - scope: Namespaced - names: - kind: TCPIngress - plural: tcpingresses - additionalPrinterColumns: - - name: Address - type: string - description: Address of the load balancer - JSONPath: .status.loadBalancer.ingress[*].ip - - name: Age - type: date - description: Age - JSONPath: .metadata.creationTimestamp - subresources: - status: {} - validation: - openAPIV3Schema: - properties: - apiVersion: - type: string - kind: - type: string - metadata: - type: object - spec: - type: object - properties: - tls: - type: array - items: - type: object - properties: - hosts: - type: array - items: - type: string - secretName: - type: string - rules: - type: array - items: - type: object - properties: - host: - type: string - port: - type: integer - format: int32 - backend: - type: object - properties: - serviceName: - type: string - servicePort: - format: int32 - type: integer - status: - type: object - subresources: - status: {} -status: - acceptedNames: - kind: "" - plural: "" - conditions: [] - storedVersions: [] diff --git a/packages/helm-charts/kong/kong.conf b/packages/helm-charts/kong/kong.conf deleted file mode 100644 index b4102ed3fb8..00000000000 --- a/packages/helm-charts/kong/kong.conf +++ /dev/null @@ -1,1512 +0,0 @@ -# ----------------------- -# Kong configuration file -# ----------------------- -# -# The commented-out settings shown in this file represent the default values. -# -# This file is read when `kong start` or `kong prepare` are used. Kong -# generates the Nginx configuration with the settings specified in this file. -# -# All environment variables prefixed with `KONG_` and capitalized will override -# the settings specified in this file. -# Example: -# `log_level` setting -> `KONG_LOG_LEVEL` env variable -# -# Boolean values can be specified as `on`/`off` or `true`/`false`. -# Lists must be specified as comma-separated strings. -# -# All comments in this file can be removed safely, including the -# commented-out properties. -# You can verify the integrity of your settings with `kong check `. - -#------------------------------------------------------------------------------ -# GENERAL -#------------------------------------------------------------------------------ - -prefix = /opt/bitnami/kong/server # Working directory. Equivalent to Nginx's - # prefix path, containing temporary files - # and logs. - # Each Kong process must have a separate - # working directory. - -log_level = notice # Log level of the Nginx server. Logs are - # found at `/logs/error.log`. - -# See http://nginx.org/en/docs/ngx_core_module.html#error_log for a list -# of accepted values. - -proxy_access_log = logs/access.log # Path for proxy port request access - # logs. Set this value to `off` to - # disable logging proxy requests. - # If this value is a relative path, - # it will be placed under the - # `prefix` location. - - -proxy_error_log = logs/error.log # Path for proxy port request error - # logs. The granularity of these logs - # is adjusted by the `log_level` - # property. - -proxy_stream_access_log = logs/access.log basic # Path for tcp streams proxy port access - # logs. Set this value to `off` to - # disable logging proxy requests. - # If this value is a relative path, - # it will be placed under the - # `prefix` location. - # `basic` is defined as `'$remote_addr [$time_local] ' - # '$protocol $status $bytes_sent $bytes_received ' - # '$session_time'` - -proxy_stream_error_log = logs/error.log # Path for tcp streams proxy port request error - # logs. The granularity of these logs - # is adjusted by the `log_level` - # property. - -admin_access_log = logs/admin_access.log # Path for Admin API request access - # logs. If Hybrid Mode is enabled - # and the current node is set to be - # the Control Plane, then the - # connection requests from Data Planes - # are also written to this file with - # server name "kong_cluster_listener". - # - # Set this value to `off` to - # disable logging Admin API requests. - # If this value is a relative path, - # it will be placed under the - # `prefix` location. - -admin_error_log = logs/error.log # Path for Admin API request error - # logs. The granularity of these logs - # is adjusted by the `log_level` - # property. - -status_access_log = off # Path for Status API request access - # logs. The default value of `off` - # implies that logging for this API - # is disabled by default. - # If this value is a relative path, - # it will be placed under the - # `prefix` location. - -status_error_log = logs/status_error.log # Path for Status API request error - # logs. The granularity of these logs - # is adjusted by the `log_level` - # property. - -plugins = bundled # Comma-separated list of plugins this node - # should load. By default, only plugins - # bundled in official distributions are - # loaded via the `bundled` keyword. - # - # Loading a plugin does not enable it by - # default, but only instructs Kong to load its - # source code, and allows to configure the - # plugin via the various related Admin API - # endpoints. - # - # The specified name(s) will be substituted as - # such in the Lua namespace: - # `kong.plugins.{name}.*`. - # - # When the `off` keyword is specified as the - # only value, no plugins will be loaded. - # - # `bundled` and plugin names can be mixed - # together, as the following examples suggest: - # - # - `plugins = bundled,custom-auth,custom-log` - # will include the bundled plugins plus two - # custom ones - # - `plugins = custom-auth,custom-log` will - # *only* include the `custom-auth` and - # `custom-log` plugins. - # - `plugins = off` will not include any - # plugins - # - # **Note:** Kong will not start if some - # plugins were previously configured (i.e. - # have rows in the database) and are not - # specified in this list. Before disabling a - # plugin, ensure all instances of it are - # removed before restarting Kong. - # - # **Note:** Limiting the amount of available - # plugins can improve P99 latency when - # experiencing LRU churning in the database - # cache (i.e. when the configured - # `mem_cache_size`) is full. - -#pluginserver_names = # Comma-separated list of names for pluginserver - # processes. The actual names are used for - # log messages and to relate the actual settings. - -#pluginserver_XXX_socket = /.socket # Path to the unix socket - # used by the pluginserver. -#pluginserver_XXX_start_cmd = /usr/local/bin/ # Full command (including - # any needed arguments) to - # start the pluginserver -#pluginserver_XXX_query_cmd = /usr/local/bin/query_ # Full command to "query" the - # pluginserver. Should - # produce a JSON with the - # dump info of all plugins it - # manages - -#port_maps = # With this configuration parameter, you can - # let the Kong to know about the port from - # which the packets are forwarded to it. This - # is fairly common when running Kong in a - # containerized or virtualized environment. - # For example, `port_maps=80:8000, 443:8443` - # instructs Kong that the port 80 is mapped - # to 8000 (and the port 443 to 8443), where - # 8000 and 8443 are the ports that Kong is - # listening to. - # - # This parameter helps Kong set a proper - # forwarded upstream HTTP request header or to - # get the proper forwarded port with the Kong PDK - # (in case other means determining it has - # failed). It changes routing by a destination - # port to route by a port from which packets - # are forwarded to Kong, and similarly it - # changes the default plugin log serializer to - # use the port according to this mapping - # instead of reporting the port Kong is - # listening to. - -anonymous_reports = on # Send anonymous usage data such as error - # stack traces to help improve Kong. - -#------------------------------------------------------------------------------ -# HYBRID MODE -#------------------------------------------------------------------------------ - -role = traditional # Use this setting to enable Hybrid Mode, - # This allows running some Kong nodes in a - # control plane role with a database and - # have them deliver configuration updates - # to other nodes running to DB-less running in - # a Data Plane role. - # - # Valid values to this setting are: - # - # - `traditional`: do not use Hybrid Mode. - # - `control_plane`: this node runs in a - # control plane role. It can use a database - # and will deliver configuration updates - # to data plane nodes. - # - `data_plane`: this is a data plane node. - # It runs DB-less and receives configuration - # updates from a control plane node. - -cluster_mtls = shared # Sets the verification between nodes of the - # cluster. - # - # Valid values to this setting are: - # - # - `shared`: use a shared certificate/key - # pair specified with the `cluster_cert` - # and `cluster_cert_key` settings. - # Note that CP and DP nodes have to present - # the same certificate to establish mTLS - # connections. - # - `pki`: use `cluster_ca_cert`, - # `cluster_server_name` and `cluster_cert` - # for verification. - # These are different certificates for each - # DP node, but issued by a cluster-wide - # common CA certificate: `cluster_ca_cert`. - -#cluster_cert = # Filename of the cluster certificate to use - # when establishing secure communication - # between control and data plane nodes. - # You can use the `kong hybrid` command to - # generate the certificate/key pair. - # Under `shared` mode, it must be the same - # for all nodes. Under `pki` mode it - # should be a different certificate for each - # DP node. - -#cluster_cert_key = # Filename of the cluster certificate key to - # use when establishing secure communication - # between control and data plane nodes. - # You can use the `kong hybrid` command to - # generate the certificate/key pair. - # Under `shared` mode, it must be the same - # for all nodes. Under `pki` mode it - # should be a different certificate for each - # DP node. - -#cluster_ca_cert = # The trusted CA certificate file in PEM - # format used to verify the `cluster_cert`. - # Required if `cluster_mtls` is set to `pki`, - # ignored otherwise. - -#------------------------------------------------------------------------------ -# HYBRID MODE DATA PLANE -#------------------------------------------------------------------------------ - -#cluster_server_name = # The server name used in the SNI of the TLS - # connection from a DP node to a CP node. - # Must match the Common Name (CN) or Subject - # Alternative Name (SAN) found in the CP - # certificate. - # If `cluster_mtls` is set to - # `shared`, this setting is ignored and - # `kong_clustering` is used. - -#cluster_control_plane = # To be used by data plane nodes only: - # address of the control plane node from - # which configuration updates will be fetched, - # in `host:port` format. - -#------------------------------------------------------------------------------ -# HYBRID MODE CONTROL PLANE -#------------------------------------------------------------------------------ - -cluster_listen = 0.0.0.0:8005 - # Comma-separated list of addresses and ports on - # which the cluster control plane server should listen - # for data plane connections. - # The cluster communication port of the control plane - # must be accessible by all the data planes - # within the same cluster. This port is mTLS protected - # to ensure end-to-end security and integrity. - # - # This setting has no effect if `role` is not set to - # `control_plane`. - # - # Connection made to this endpoint are logged - # to the same location as Admin API access logs. - # See `admin_access_log` config description for more - # information. - -cluster_data_plane_purge_delay = 1209600 - # How many seconds must pass from the time a DP node - # becomes offline to the time its entry gets removed - # from the database, as returned by the - # /clustering/data-planes Admin API endpoint. - # - # This is to prevent the cluster data plane table from - # growing indefinitely. The default is set to - # 14 days. That is, if CP haven't heard from a DP for - # 14 days, its entry will be removed. - -cluster_ocsp = off - # Whether to check for revocation status of DP - # certificates using OCSP (Online Certificate Status Protocol). - # If enabled, the DP certificate should contain the - # "Certificate Authority Information Access" extension - # and the OCSP method with URI of which the OCSP responder - # can be reached from CP. - # - # OCSP checks are only performed on CP nodes, it has no - # effect on DP nodes. - # - # Valid values to this setting are: - # - # - `on`: OCSP revocation check is enabled and DP - # must pass the check in order to establish - # connection with CP. - # - `off`: OCSP revocation check is disabled. - # - `optional`: OCSP revocation check will be attempted, - # however, if the required extension is not - # found inside DP provided certificate - # or communication with the OCSP responder - # failed, then DP is still allowed through. -#------------------------------------------------------------------------------ -# NGINX -#------------------------------------------------------------------------------ - -proxy_listen = 0.0.0.0:8000 reuseport backlog=16384, 0.0.0.0:8443 http2 ssl reuseport backlog=16384 - # Comma-separated list of addresses and ports on - # which the proxy server should listen for - # HTTP/HTTPS traffic. - # The proxy server is the public entry point of Kong, - # which proxies traffic from your consumers to your - # backend services. This value accepts IPv4, IPv6, and - # hostnames. - # - # Some suffixes can be specified for each pair: - # - # - `ssl` will require that all connections made - # through a particular address/port be made with TLS - # enabled. - # - `http2` will allow for clients to open HTTP/2 - # connections to Kong's proxy server. - # - `proxy_protocol` will enable usage of the - # PROXY protocol for a given address/port. - # - `deferred` instructs to use a deferred accept on - # Linux (the TCP_DEFER_ACCEPT socket option). - # - `bind` instructs to make a separate bind() call - # for a given address:port pair. - # - `reuseport` instructs to create an individual - # listening socket for each worker process - # allowing the Kernel to better distribute incoming - # connections between worker processes - # - `backlog=N` sets the maximum length for the queue - # of pending TCP connections. This number should - # not be too small in order to prevent clients - # seeing "Connection refused" error connecting to - # a busy Kong instance. - # **Note:** on Linux, this value is limited by the - # setting of `net.core.somaxconn` Kernel parameter. - # In order for the larger `backlog` set here to take - # effect it is necessary to raise - # `net.core.somaxconn` at the same time to match or - # exceed the `backlog` number set. - # - # This value can be set to `off`, thus disabling - # the HTTP/HTTPS proxy port for this node. - # If stream_listen is also set to `off`, this enables - # 'control-plane' mode for this node - # (in which all traffic proxying capabilities are - # disabled). This node can then be used only to - # configure a cluster of Kong - # nodes connected to the same datastore. - # - # Example: - # `proxy_listen = 0.0.0.0:443 ssl, 0.0.0.0:444 http2 ssl` - # - # See http://nginx.org/en/docs/http/ngx_http_core_module.html#listen - # for a description of the accepted formats for this - # and other `*_listen` values. - # - # See https://www.nginx.com/resources/admin-guide/proxy-protocol/ - # for more details about the `proxy_protocol` - # parameter. - # - # Not all `*_listen` values accept all formats - # specified in nginx's documentation. - -stream_listen = off - # Comma-separated list of addresses and ports on - # which the stream mode should listen. - # - # This value accepts IPv4, IPv6, and hostnames. - # Some suffixes can be specified for each pair: - # - `ssl` will require that all connections made - # through a particular address/port be made with TLS - # enabled. - # - `proxy_protocol` will enable usage of the - # PROXY protocol for a given address/port. - # - `bind` instructs to make a separate bind() call - # for a given address:port pair. - # - `reuseport` instructs to create an individual - # listening socket for each worker process - # allowing the Kernel to better distribute incoming - # connections between worker processes - # - `backlog=N` sets the maximum length for the queue - # of pending TCP connections. This number should - # not be too small in order to prevent clients - # seeing "Connection refused" error connecting to - # a busy Kong instance. - # **Note:** on Linux, this value is limited by the - # setting of `net.core.somaxconn` Kernel parameter. - # In order for the larger `backlog` set here to take - # effect it is necessary to raise - # `net.core.somaxconn` at the same time to match or - # exceed the `backlog` number set. - # - # Examples: - # - # ``` - # stream_listen = 127.0.0.1:7000 reuseport backlog=16384 - # stream_listen = 0.0.0.0:989 reuseport backlog=65536, 0.0.0.0:20 - # stream_listen = [::1]:1234 backlog=16384 - # ``` - # - # By default this value is set to `off`, thus - # disabling the stream proxy port for this node. - -# See http://nginx.org/en/docs/stream/ngx_stream_core_module.html#listen -# for a description of the formats that Kong might accept in stream_listen. - -admin_listen = 127.0.0.1:8001 reuseport backlog=16384, 127.0.0.1:8444 http2 ssl reuseport backlog=16384 - # Comma-separated list of addresses and ports on - # which the Admin interface should listen. - # The Admin interface is the API allowing you to - # configure and manage Kong. - # Access to this interface should be *restricted* - # to Kong administrators *only*. This value accepts - # IPv4, IPv6, and hostnames. - # - # Some suffixes can be specified for each pair: - # - # - `ssl` will require that all connections made - # through a particular address/port be made with TLS - # enabled. - # - `http2` will allow for clients to open HTTP/2 - # connections to Kong's proxy server. - # - `proxy_protocol` will enable usage of the - # PROXY protocol for a given address/port. - # - `deferred` instructs to use a deferred accept on - # Linux (the TCP_DEFER_ACCEPT socket option). - # - `bind` instructs to make a separate bind() call - # for a given address:port pair. - # - `reuseport` instructs to create an individual - # listening socket for each worker process - # allowing the Kernel to better distribute incoming - # connections between worker processes - # - `backlog=N` sets the maximum length for the queue - # of pending TCP connections. This number should - # not be too small in order to prevent clients - # seeing "Connection refused" error connecting to - # a busy Kong instance. - # **Note:** on Linux, this value is limited by the - # setting of `net.core.somaxconn` Kernel parameter. - # In order for the larger `backlog` set here to take - # effect it is necessary to raise - # `net.core.somaxconn` at the same time to match or - # exceed the `backlog` number set. - # - # This value can be set to `off`, thus disabling - # the Admin interface for this node, enabling a - # 'data-plane' mode (without configuration - # capabilities) pulling its configuration changes - # from the database. - # - # Example: `admin_listen = 127.0.0.1:8444 http2 ssl` - -status_listen = off # Comma-separated list of addresses and ports on - # which the Status API should listen. - # The Status API is a read-only endpoint - # allowing monitoring tools to retrieve metrics, - # healthiness, and other non-sensitive information - # of the current Kong node. - # - # The following suffix can be specified for each pair: - # - # - `ssl` will require that all connections made - # through a particular address/port be made with TLS - # enabled. - # - # This value can be set to `off`, disabling - # the Status API for this node. - # - # Example: `status_listen = 0.0.0.0:8100` - - -#nginx_user = # Defines user and group credentials used by - # worker processes. If group is omitted, a - # group whose name equals that of user is - # used. - # - # Example: `nginx_user = nginx www` - # - # **Note**: If the `kong` user and the `kong` - # group are not available, the default user - # and group credentials will be - # `nobody nobody`. - -nginx_worker_processes = auto # Determines the number of worker processes - # spawned by Nginx. - # - # See http://nginx.org/en/docs/ngx_core_module.html#worker_processes - # for detailed usage of the equivalent Nginx - # directive and a description of accepted - # values. - -nginx_daemon = off # Determines whether Nginx will run as a daemon - # or as a foreground process. Mainly useful - # for development or when running Kong inside - # a Docker environment. - # - # See http://nginx.org/en/docs/ngx_core_module.html#daemon. - -mem_cache_size = 128m # Size of each of the two in-memory caches - # for database entities. The accepted units are - # `k` and `m`, with a minimum recommended value of - # a few MBs. - # - # **Note**: As this option controls the size of two - # different cache entries, the total memory Kong - # uses to cache entities might be double this value. - -ssl_cipher_suite = intermediate # Defines the TLS ciphers served by Nginx. - # Accepted values are `modern`, - # `intermediate`, `old`, or `custom`. - # - # See https://wiki.mozilla.org/Security/Server_Side_TLS - # for detailed descriptions of each cipher - # suite. - -#ssl_ciphers = # Defines a custom list of TLS ciphers to be - # served by Nginx. This list must conform to - # the pattern defined by `openssl ciphers`. - # This value is ignored if `ssl_cipher_suite` - # is not `custom`. - -ssl_protocols = TLSv1.1 TLSv1.2 TLSv1.3 - # Enables the specified protocols for - # client-side connections. The set of - # supported protocol versions also depends - # on the version of OpenSSL Kong was built - # with. This value is ignored if - # `ssl_cipher_suite` is not `custom`. - # - # See http://nginx.org/en/docs/http/ngx_http_ssl_module.html#ssl_protocols - -ssl_prefer_server_ciphers = on # Specifies that server ciphers should be - # preferred over client ciphers when using - # the SSLv3 and TLS protocols. This value is - # ignored if `ssl_cipher_suite` is not `custom`. - # - # See http://nginx.org/en/docs/http/ngx_http_ssl_module.html#ssl_prefer_server_ciphers - -#ssl_dhparam = # Defines DH parameters for DHE ciphers from the - # predefined groups: `ffdhe2048`, `ffdhe3072`, - # `ffdhe4096`, `ffdhe6144`, `ffdhe8192`, or - # from the absolute path to a parameters file. - # - # This value is ignored if `ssl_cipher_suite` - # is `modern` or `intermediate`. The reason is - # that `modern` has no ciphers that needs this, - # and `intermediate` uses `ffdhe2048`. - # - # See http://nginx.org/en/docs/http/ngx_http_ssl_module.html#ssl_dhparam - -ssl_session_tickets = on # Enables or disables session resumption through - # TLS session tickets. This has no impact when - # used with TLSv1.3. - # - # Kong enables this by default for performance - # reasons, but it has security implications: - # https://github.com/mozilla/server-side-tls/issues/135 - # - # See http://nginx.org/en/docs/http/ngx_http_ssl_module.html#ssl_session_tickets - -ssl_session_timeout = 1d # Specifies a time during which a client may - # reuse the session parameters. See the rationale: - # https://github.com/mozilla/server-side-tls/issues/198 - # - # See http://nginx.org/en/docs/http/ngx_http_ssl_module.html#ssl_session_timeout - -#ssl_cert = # Comma-separated list of the absolute path to the certificates for - # `proxy_listen` values with TLS enabled. - # - # If more than one certificates are specified, it can be used to provide - # alternate type of certificate (for example, ECC certificate) that will be served - # to clients that supports them. Note to properly serve using ECC certificates, - # it is recommended to also set `ssl_cipher_suite` to - # `modern` or `intermediate`. - # - # Unless this option is explicitly set, Kong will auto-generate - # a pair of default certificates (RSA + ECC) first time it starts up and use - # it for serving TLS requests. - -#ssl_cert_key = # Comma-separated list of the absolute path to the keys for - # `proxy_listen` values with TLS enabled. - # - # If more than one certificate was specified for `ssl_cert`, then this - # option should contain the corresponding key for all certificates - # provided in the same order. - # - # Unless this option is explicitly set, Kong will auto-generate - # a pair of default private keys (RSA + ECC) first time it starts up and use - # it for serving TLS requests. - -client_ssl = off # Determines if Nginx should attempt to send client-side - # TLS certificates and perform Mutual TLS Authentication - # with upstream service when proxying requests. - -#client_ssl_cert = # If `client_ssl` is enabled, the absolute - # path to the client certificate for the `proxy_ssl_certificate` directive. - # - # This value can be overwritten dynamically with the `client_certificate` - # attribute of the `Service` object. - -#client_ssl_cert_key = # If `client_ssl` is enabled, the absolute - # path to the client TLS key for the `proxy_ssl_certificate_key` directive. - # - # This value can be overwritten dynamically with the `client_certificate` - # attribute of the `Service` object. - -#admin_ssl_cert = # Comma-separated list of the absolute path to the certificates for - # `admin_listen` values with TLS enabled. - # - # See docs for `ssl_cert` for detailed usage. - -#admin_ssl_cert_key = # Comma-separated list of the absolute path to the keys for - # `admin_listen` values with TLS enabled. - # - # See docs for `ssl_cert_key` for detailed usage. - -#status_ssl_cert = # Comma-separated list of the absolute path to the certificates for - # `status_listen` values with TLS enabled. - # - # See docs for `ssl_cert` for detailed usage. - -#status_ssl_cert_key = # Comma-separated list of the absolute path to the keys for - # `status_listen` values with TLS enabled. - # - # See docs for `ssl_cert_key` for detailed usage. - -headers = server_tokens, latency_tokens - # Comma-separated list of headers Kong should - # inject in client responses. - # - # Accepted values are: - # - `Server`: Injects `Server: kong/x.y.z` - # on Kong-produced response (e.g. Admin - # API, rejected requests from auth plugin). - # - `Via`: Injects `Via: kong/x.y.z` for - # successfully proxied requests. - # - `X-Kong-Proxy-Latency`: Time taken - # (in milliseconds) by Kong to process - # a request and run all plugins before - # proxying the request upstream. - # - `X-Kong-Response-Latency`: time taken - # (in millisecond) by Kong to produce - # a response in case of e.g. plugin - # short-circuiting the request, or in - # in case of an error. - # - `X-Kong-Upstream-Latency`: Time taken - # (in milliseconds) by the upstream - # service to send response headers. - # - `X-Kong-Admin-Latency`: Time taken - # (in milliseconds) by Kong to process - # an Admin API request. - # - `X-Kong-Upstream-Status`: The HTTP status - # code returned by the upstream service. - # This is particularly useful for clients to - # distinguish upstream statuses if the - # response is rewritten by a plugin. - # - `server_tokens`: Same as specifying both - # `Server` and `Via`. - # - `latency_tokens`: Same as specifying - # `X-Kong-Proxy-Latency`, - # `X-Kong-Response-Latency`, - # `X-Kong-Admin-Latency` and - # `X-Kong-Upstream-Latency` - # - # In addition to those, this value can be set - # to `off`, which prevents Kong from injecting - # any of the above headers. Note that this - # does not prevent plugins from injecting - # headers of their own. - # - # Example: `headers = via, latency_tokens` - -#trusted_ips = # Defines trusted IP addresses blocks that are - # known to send correct `X-Forwarded-*` - # headers. - # Requests from trusted IPs make Kong forward - # their `X-Forwarded-*` headers upstream. - # Non-trusted requests make Kong insert its - # own `X-Forwarded-*` headers. - # - # This property also sets the - # `set_real_ip_from` directive(s) in the Nginx - # configuration. It accepts the same type of - # values (CIDR blocks) but as a - # comma-separated list. - # - # To trust *all* /!\ IPs, set this value to - # `0.0.0.0/0,::/0`. - # - # If the special value `unix:` is specified, - # all UNIX-domain sockets will be trusted. - # - # See http://nginx.org/en/docs/http/ngx_http_realip_module.html#set_real_ip_from - # for examples of accepted values. -# GCP ips -trusted_ips = 130.211.0.0/22,35.191.0.0/16,34.120.148.61/32 - -# real_ip_header = X-Real-IP -real_ip_header = X-Forwarded-For # Defines the request header field whose value - # will be used to replace the client address. - # This value sets the `ngx_http_realip_module` - # directive of the same name in the Nginx - # configuration. - # - # If this value receives `proxy_protocol`: - # - # - at least one of the `proxy_listen` entries - # must have the `proxy_protocol` flag - # enabled. - # - the `proxy_protocol` parameter will be - # appended to the `listen` directive of the - # Nginx template. - # - # See http://nginx.org/en/docs/http/ngx_http_realip_module.html#real_ip_header - # for a description of this directive. - -real_ip_recursive = on # This value sets the `ngx_http_realip_module` - # directive of the same name in the Nginx - # configuration. - # - # See http://nginx.org/en/docs/http/ngx_http_realip_module.html#real_ip_recursive - # for a description of this directive. - -error_default_type = text/plain # Default MIME type to use when the request - # `Accept` header is missing and Nginx - # is returning an error for the request. - # Accepted values are `text/plain`, - # `text/html`, `application/json`, and - # `application/xml`. - -upstream_keepalive_pool_size = 60 # Sets the default size of the upstream - # keepalive connection pools. - # Upstream keepalive connection pools - # are segmented by the `dst ip/dst - # port/SNI` attributes of a connection. - # A value of `0` will disable upstream - # keepalive connections by default, forcing - # each upstream request to open a new - # connection. - -upstream_keepalive_max_requests = 100 # Sets the default maximum number of - # requests than can be proxied upstream - # through one keepalive connection. - # After the maximum number of requests - # is reached, the connection will be - # closed. - # A value of `0` will disable this - # behavior, and a keepalive connection - # can be used to proxy an indefinite - # number of requests. - -upstream_keepalive_idle_timeout = 60 # Sets the default timeout (in seconds) - # for which an upstream keepalive - # connection should be kept open. When - # the timeout is reached while the - # connection has not been reused, it - # will be closed. - # A value of `0` will disable this - # behavior, and an idle keepalive - # connection may be kept open - # indefinitely. - -#------------------------------------------------------------------------------ -# NGINX injected directives -#------------------------------------------------------------------------------ - -# Nginx directives can be dynamically injected in the runtime nginx.conf file -# without requiring a custom Nginx configuration template. -# -# All configuration properties respecting the naming scheme -# `nginx__` will result in `` being injected in -# the Nginx configuration block corresponding to the property's ``. -# Example: -# `nginx_proxy_large_client_header_buffers = 8 24k` -# -# Will inject the following directive in Kong's proxy `server {}` block: -# -# `large_client_header_buffers 8 24k;` -# -# The following namespaces are supported: -# -# - `nginx_main_`: Injects `` in Kong's configuration -# `main` context. -# - `nginx_events_`: Injects `` in Kong's `events {}` -# block. -# - `nginx_http_`: Injects `` in Kong's `http {}` block. -# - `nginx_proxy_`: Injects `` in Kong's proxy -# `server {}` block. -# - `nginx_upstream_`: Injects `` in Kong's proxy -# `upstream {}` block. -# - `nginx_admin_`: Injects `` in Kong's Admin API -# `server {}` block. -# - `nginx_status_`: Injects `` in Kong's Status API -# `server {}` block (only effective if `status_listen` is enabled). -# - `nginx_stream_`: Injects `` in Kong's stream module -# `stream {}` block (only effective if `stream_listen` is enabled). -# - `nginx_sproxy_`: Injects `` in Kong's stream module -# `server {}` block (only effective if `stream_listen` is enabled). -# - `nginx_supstream_`: Injects `` in Kong's stream -# module `upstream {}` block. -# -# As with other configuration properties, Nginx directives can be injected via -# environment variables when capitalized and prefixed with `KONG_`. -# Example: -# `KONG_NGINX_HTTP_SSL_PROTOCOLS` -> `nginx_http_ssl_protocols` -# -# Will inject the following directive in Kong's `http {}` block: -# -# `ssl_protocols ;` -# -# If different sets of protocols are desired between the proxy and Admin API -# server, you may specify `nginx_proxy_ssl_protocols` and/or -# `nginx_admin_ssl_protocols`, both of which taking precedence over the -# `http {}` block. - -nginx_main_worker_rlimit_nofile = auto - # Changes the limit on the maximum number of open files - # for worker processes. - # - # The special and default value of `auto` sets this - # value to `ulimit -n` with the upper bound limited to - # 16384 as a measure to protect against excess memory use. - # - # See http://nginx.org/en/docs/ngx_core_module.html#worker_rlimit_nofile - -nginx_events_worker_connections = auto - # Sets the maximum number of simultaneous - # connections that can be opened by a worker process. - # - # The special and default value of `auto` sets this - # value to `ulimit -n` with the upper bound limited to - # 16384 as a measure to protect against excess memory use. - # - # See http://nginx.org/en/docs/ngx_core_module.html#worker_connections - -nginx_http_client_header_buffer_size = 1k # Sets buffer size for reading the - # client request headers. - # See http://nginx.org/en/docs/http/ngx_http_core_module.html#client_header_buffer_size - -nginx_http_large_client_header_buffers = 4 8k # Sets the maximum number and - # size of buffers used for - # reading large clients - # requests headers. - # See http://nginx.org/en/docs/http/ngx_http_core_module.html#large_client_header_buffers - -nginx_http_client_max_body_size = 0 # Defines the maximum request body size - # allowed by requests proxied by Kong, - # specified in the Content-Length request - # header. If a request exceeds this - # limit, Kong will respond with a 413 - # (Request Entity Too Large). Setting - # this value to 0 disables checking the - # request body size. - # See http://nginx.org/en/docs/http/ngx_http_core_module.html#client_max_body_size - -nginx_admin_client_max_body_size = 10m # Defines the maximum request body size for - # Admin API. - -nginx_http_client_body_buffer_size = 8k # Defines the buffer size for reading - # the request body. If the client - # request body is larger than this - # value, the body will be buffered to - # disk. Note that when the body is - # buffered to disk, Kong plugins that - # access or manipulate the request - # body may not work, so it is - # advisable to set this value as high - # as possible (e.g., set it as high - # as `client_max_body_size` to force - # request bodies to be kept in - # memory). Do note that - # high-concurrency environments will - # require significant memory - # allocations to process many - # concurrent large request bodies. - # See http://nginx.org/en/docs/http/ngx_http_core_module.html#client_body_buffer_size - -nginx_admin_client_body_buffer_size = 10m # Defines the buffer size for reading - # the request body on Admin API. - -#------------------------------------------------------------------------------ -# DATASTORE -#------------------------------------------------------------------------------ - -# Kong can run with a database to store coordinated data between Kong nodes in -# a cluster, or without a database, where each node stores its information -# independently in memory. -# -# When using a database, Kong will store data for all its entities (such as -# Routes, Services, Consumers, and Plugins) in either Cassandra or PostgreSQL, -# and all Kong nodes belonging to the same cluster must connect themselves -# to the same database. -# -# Kong supports the following database versions: -# - **PostgreSQL**: 9.5 and above. -# - **Cassandra**: 2.2 and above. -# -# When not using a database, Kong is said to be in "DB-less mode": it will keep -# its entities in memory, and each node needs to have this data entered via a -# declarative configuration file, which can be specified through the -# `declarative_config` property, or via the Admin API using the `/config` -# endpoint. -# -# When using Postgres as the backend storage, you can optionally enable Kong -# to serve read queries from a separate database instance. -# When the number of proxies is large, this can greatly reduce the load -# on the main Postgres instance and achieve better scalability. It may also -# reduce the latency jitter if the Kong proxy node's latency to the main -# Postgres instance is high. -# -# The read-only Postgres instance only serves read queries and write -# queries still goes to the main connection. The read-only Postgres instance -# can be eventually consistent while replicating changes from the main -# instance. -# -# At least the `pg_ro_host` config is needed to enable this feature. -# By default, all other database config for the read-only connection are -# inherited from the corresponding main connection config described above but -# may be optionally overwritten explicitly using the `pg_ro_*` config below. - -database = postgres # Determines which of PostgreSQL or Cassandra - # this node will use as its datastore. - # Accepted values are `postgres`, - # `cassandra`, and `off`. - -pg_host = 127.0.0.1 # Host of the Postgres server. -pg_port = 5432 # Port of the Postgres server. -pg_timeout = 5000 # Defines the timeout (in ms), for connecting, - # reading and writing. - -pg_user = kong # Postgres user. -#pg_password = # Postgres user's password. -pg_database = kong # The database name to connect to. - -#pg_schema = # The database schema to use. If unspecified, - # Kong will respect the `search_path` value of - # your PostgreSQL instance. - -pg_ssl = off # Toggles client-server TLS connections - # between Kong and PostgreSQL. - # Because PostgreSQL uses the same port for TLS - # and non-TLS, this is only a hint. If the - # server does not support TLS, the established - # connection will be a plain one. - -pg_ssl_verify = off # Toggles server certificate verification if - # `pg_ssl` is enabled. - # See the `lua_ssl_trusted_certificate` - # setting to specify a certificate authority. - -pg_max_concurrent_queries = 0 # Sets the maximum number of concurrent queries - # that can be executing at any given time. This - # limit is enforced per worker process; the - # total number of concurrent queries for this - # node will be will be: - # `pg_max_concurrent_queries * nginx_worker_processes`. - # - # The default value of 0 removes this - # concurrency limitation. - -pg_semaphore_timeout = 60000 # Defines the timeout (in ms) after which - # PostgreSQL query semaphore resource - # acquisition attempts will fail. Such - # failures will generally result in the - # associated proxy or Admin API request - # failing with an HTTP 500 status code. - # Detailed discussion of this behavior is - # available in the online documentation. - -#pg_ro_host = # Same as `pg_host`, but for the - # read-only connection. - # **Note:** Refer to the documentation - # section above for detailed usage. - -#pg_ro_port = # Same as `pg_port`, but for the - # read-only connection. - -#pg_ro_timeout = # Same as `pg_timeout`, but for the - # read-only connection. - -#pg_ro_user = # Same as `pg_user`, but for the - # read-only connection. - -#pg_ro_password = # Same as `pg_password`, but for the - # read-only connection. - -#pg_ro_database = # Same as `pg_database`, but for the - # read-only connection. - -#pg_ro_schema = # Same as `pg_schema`, but for the - # read-only connection. - -#pg_ro_ssl = # Same as `pg_ssl`, but for the - # read-only connection. - -#pg_ro_ssl_verify = - # Same as `pg_ssl_verify`, but for the - # read-only connection. - -#pg_ro_max_concurrent_queries = - # Same as `pg_max_concurrent_queries`, but for - # the read-only connection. - # Note: read-only concurrency is not shared - # with the main (read-write) connection. - -#pg_ro_semaphore_timeout = - # Same as `pg_semaphore_timeout`, but for the - # read-only connection. - -cassandra_contact_points = 127.0.0.1 # A comma-separated list of contact - # points to your cluster. - # You may specify IP addresses or - # hostnames. Note that the port - # component of SRV records will be - # ignored in favor of `cassandra_port`. - # When connecting to a multi-DC cluster, - # ensure that contact points from the - # local datacenter are specified first - # in this list. - -cassandra_port = 9042 # The port on which your nodes are listening - # on. All your nodes and contact points must - # listen on the same port. Will be created if - # it doesn't exist. - -cassandra_keyspace = kong # The keyspace to use in your cluster. - -cassandra_write_consistency = ONE # Consistency setting to use when - # writing to the Cassandra cluster. - -cassandra_read_consistency = ONE # Consistency setting to use when - # reading from the Cassandra cluster. - -cassandra_timeout = 5000 # Defines the timeout (in ms) for reading - # and writing. - -cassandra_ssl = off # Toggles client-to-node TLS connections - # between Kong and Cassandra. - -cassandra_ssl_verify = off # Toggles server certificate verification if - # `cassandra_ssl` is enabled. - # See the `lua_ssl_trusted_certificate` - # setting to specify a certificate authority. - -cassandra_username = kong # Username when using the - # `PasswordAuthenticator` scheme. - -#cassandra_password = # Password when using the - # `PasswordAuthenticator` scheme. - -cassandra_lb_policy = RequestRoundRobin # Load balancing policy to use when - # distributing queries across your - # Cassandra cluster. - # Accepted values are: - # `RoundRobin`, `RequestRoundRobin`, - # `DCAwareRoundRobin`, and - # `RequestDCAwareRoundRobin`. - # Policies prefixed with "Request" - # make efficient use of established - # connections throughout the same - # request. - # Prefer "DCAware" policies if and - # only if you are using a - # multi-datacenter cluster. - -#cassandra_local_datacenter = # When using the `DCAwareRoundRobin` - # or `RequestDCAwareRoundRobin` load - # balancing policy, you must specify the name - # of the local (closest) datacenter for this - # Kong node. - -cassandra_refresh_frequency = 60 # Frequency (in seconds) at which - # the cluster topology will be - # checked for new or decommissioned - # nodes. - # A value of `0` will disable this - # check, and the cluster topology - # will never be refreshed. - -cassandra_repl_strategy = SimpleStrategy # When migrating for the first time, - # Kong will use this setting to - # create your keyspace. - # Accepted values are - # `SimpleStrategy` and - # `NetworkTopologyStrategy`. - -cassandra_repl_factor = 1 # When migrating for the first time, Kong - # will create the keyspace with this - # replication factor when using the - # `SimpleStrategy`. - -cassandra_data_centers = dc1:2,dc2:3 # When migrating for the first time, - # will use this setting when using the - # `NetworkTopologyStrategy`. - # The format is a comma-separated list - # made of `:`. - -cassandra_schema_consensus_timeout = 10000 # Defines the timeout (in ms) for - # the waiting period to reach a - # schema consensus between your - # Cassandra nodes. - # This value is only used during - # migrations. - -#declarative_config = # The path to the declarative configuration - # file which holds the specification of all - # entities (Routes, Services, Consumers, etc.) - # to be used when the `database` is set to - # `off`. - # - # Entities are stored in Kong's in-memory cache, - # so you must ensure that enough memory is - # allocated to it via the `mem_cache_size` - # property. You must also ensure that items - # in the cache never expire, which means that - # `db_cache_ttl` should preserve its default - # value of 0. - # - # If the Hybrid mode `role` is set to `data_plane` - # and there's no configuration cache file, - # this configuration is used before connecting - # to the Control Plane node as a user-controlled - # fallback. - -#------------------------------------------------------------------------------ -# DATASTORE CACHE -#------------------------------------------------------------------------------ - -# In order to avoid unnecessary communication with the datastore, Kong caches -# entities (such as APIs, Consumers, Credentials...) for a configurable period -# of time. It also handles invalidations if such an entity is updated. -# -# This section allows for configuring the behavior of Kong regarding the -# caching of such configuration entities. - -db_update_frequency = 5 # Frequency (in seconds) at which to check for - # updated entities with the datastore. - # - # When a node creates, updates, or deletes an - # entity via the Admin API, other nodes need - # to wait for the next poll (configured by - # this value) to eventually purge the old - # cached entity and start using the new one. - -db_update_propagation = 0 # Time (in seconds) taken for an entity in the - # datastore to be propagated to replica nodes - # of another datacenter. - # - # When in a distributed environment such as - # a multi-datacenter Cassandra cluster, this - # value should be the maximum number of - # seconds taken by Cassandra to propagate a - # row to other datacenters. - # - # When set, this property will increase the - # time taken by Kong to propagate the change - # of an entity. - # - # Single-datacenter setups or PostgreSQL - # servers should suffer no such delays, and - # this value can be safely set to 0. - -db_cache_ttl = 0 # Time-to-live (in seconds) of an entity from - # the datastore when cached by this node. - # - # Database misses (no entity) are also cached - # according to this setting if you do not - # configure `db_cache_neg_ttl`. - # - # If set to 0 (default), such cached entities - # or misses never expire. - -#db_cache_neg_ttl = # Time-to-live (in seconds) of a datastore - # miss (no entity). - # - # If not specified (default), `db_cache_ttl` - # value will be used instead. - # - # If set to 0, misses will never expire. - -db_resurrect_ttl = 30 # Time (in seconds) for which stale entities - # from the datastore should be resurrected for - # when they cannot be refreshed (e.g., the - # datastore is unreachable). When this TTL - # expires, a new attempt to refresh the stale - # entities will be made. - -db_cache_warmup_entities = services - # Entities to be pre-loaded from the datastore - # into the in-memory cache at Kong start-up. - # This speeds up the first access of endpoints - # that use the given entities. - # - # When the `services` entity is configured - # for warmup, the DNS entries for values in - # its `host` attribute are pre-resolved - # asynchronously as well. - # - # Cache size set in `mem_cache_size` should - # be set to a value large enough to hold all - # instances of the specified entities. - # If the size is insufficient, Kong will log - # a warning. - -#------------------------------------------------------------------------------ -# DNS RESOLVER -#------------------------------------------------------------------------------ - -# By default, the DNS resolver will use the standard configuration files -# `/etc/hosts` and `/etc/resolv.conf`. The settings in the latter file will be -# overridden by the environment variables `LOCALDOMAIN` and `RES_OPTIONS` if -# they have been set. -# -# Kong will resolve hostnames as either `SRV` or `A` records (in that order, and -# `CNAME` records will be dereferenced in the process). -# In case a name was resolved as an `SRV` record it will also override any given -# port number by the `port` field contents received from the DNS server. -# -# The DNS options `SEARCH` and `NDOTS` (from the `/etc/resolv.conf` file) will -# be used to expand short names to fully qualified ones. So it will first try -# the entire `SEARCH` list for the `SRV` type, if that fails it will try the -# `SEARCH` list for `A`, etc. -# -# For the duration of the `ttl`, the internal DNS resolver will loadbalance each -# request it gets over the entries in the DNS record. For `SRV` records the -# `weight` fields will be honored, but it will only use the lowest `priority` -# field entries in the record. - -#dns_resolver = # Comma separated list of nameservers, each - # entry in `ip[:port]` format to be used by - # Kong. If not specified the nameservers in - # the local `resolv.conf` file will be used. - # Port defaults to 53 if omitted. Accepts - # both IPv4 and IPv6 addresses. - -dns_hostsfile = /etc/hosts # The hosts file to use. This file is read - # once and its content is static in memory. - # To read the file again after modifying it, - # Kong must be reloaded. - -dns_order = LAST,SRV,A,CNAME # The order in which to resolve different - # record types. The `LAST` type means the - # type of the last successful lookup (for the - # specified name). The format is a (case - # insensitive) comma separated list. - -#dns_valid_ttl = # By default, DNS records are cached using - # the TTL value of a response. If this - # property receives a value (in seconds), it - # will override the TTL for all records. - -dns_stale_ttl = 4 # Defines, in seconds, how long a record will - # remain in cache past its TTL. This value - # will be used while the new DNS record is - # fetched in the background. - # Stale data will be used from expiry of a - # record until either the refresh query - # completes, or the `dns_stale_ttl` number of - # seconds have passed. - -dns_not_found_ttl = 30 # TTL in seconds for empty DNS responses and - # "(3) name error" responses. - -dns_error_ttl = 1 # TTL in seconds for error responses. - -dns_no_sync = off # If enabled, then upon a cache-miss every - # request will trigger its own dns query. - # When disabled multiple requests for the - # same name/type will be synchronised to a - # single query. - -#------------------------------------------------------------------------------ -# TUNING & BEHAVIOR -#------------------------------------------------------------------------------ - -worker_consistency = strict - # Defines whether this node should rebuild its - # state synchronously or asynchronously (the - # balancers and the router are rebuilt on - # updates that affects them, e.g., updates to - # Routes, Services or Upstreams, via the Admin - # API or loading a declarative configuration - # file). - # - # Accepted values are: - # - # - `strict`: the router will be rebuilt - # synchronously, causing incoming requests to - # be delayed until the rebuild is finished. - # - `eventual`: the router will be rebuilt - # asynchronously via a recurring background - # job running every second inside of each - # worker. - # - # Note that `strict` ensures that all workers - # of a given node will always proxy requests - # with an identical router, but that increased - # long tail latency can be observed if - # frequent Routes and Services updates are - # expected. - # Using `eventual` will help preventing long - # tail latency issues in such cases, but may - # cause workers to route requests differently - # for a short period of time after Routes and - # Services updates. - -worker_state_update_frequency = 5 - # Defines how often the worker state changes are - # checked with a background job. When a change - # is detected, a new router or balancer will be - # built, as needed. Raising this value will - # decrease the load on database servers and - # result in less jitter in proxy latency, but - # it might take more time to propagate changes - # to each individual worker. - -#------------------------------------------------------------------------------ -# MISCELLANEOUS -#------------------------------------------------------------------------------ - -# Additional settings inherited from lua-nginx-module allowing for more -# flexibility and advanced usage. -# -# See the lua-nginx-module documentation for more information: -# https://github.com/openresty/lua-nginx-module - - -#lua_ssl_trusted_certificate = # Comma-separated list of paths to certificate - # authority files for Lua cosockets in PEM format. - # - # The special value `system` attempts to search for the - # "usual default" provided by each distro, according - # to an arbitrary heuristic. In the current implementation, - # The following pathnames will be tested in order, - # and the first one found will be used: - # - # - /etc/ssl/certs/ca-certificates.crt (Debian/Ubuntu/Gentoo) - # - /etc/pki/tls/certs/ca-bundle.crt (Fedora/RHEL 6) - # - /etc/ssl/ca-bundle.pem (OpenSUSE) - # - /etc/pki/tls/cacert.pem (OpenELEC) - # - /etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem (CentOS/RHEL 7) - # - /etc/ssl/cert.pem (OpenBSD, Alpine) - # - # If no file is found on any of these paths, an error will - # be raised. - # - # `system` can be used by itself or in conjunction with other - # CA filepaths. - # - # When `pg_ssl_verify` or `cassandra_ssl_verify` - # are enabled, these certificate authority files will be - # used for verifying Kong's database connections. - # - # See https://github.com/openresty/lua-nginx-module#lua_ssl_trusted_certificate - -lua_ssl_verify_depth = 1 # Sets the verification depth in the server - # certificates chain used by Lua cosockets, - # set by `lua_ssl_trusted_certificate`. - # This includes the certificates configured - # for Kong's database connections. - # If the maximum depth is reached before - # reaching the end of the chain, verification - # will fail. This helps mitigate certificate - # based DoS attacks. - # - # See https://github.com/openresty/lua-nginx-module#lua_ssl_verify_depth - -lua_ssl_protocols = TLSv1.1 TLSv1.2 TLSv1.3 # Defines the TLS versions supported - # when handshaking with OpenResty's - # TCP cosocket APIs. - # - # This affects connections made by Lua - # code, such as connections to the - # database Kong uses, or when sending logs - # using a logging plugin. It does *not* - # affect connections made to the upstream - # Service or from downstream clients. - -#lua_package_path = # Sets the Lua module search path - # (LUA_PATH). Useful when developing - # or using custom plugins not stored - # in the default search path. - # - # See https://github.com/openresty/lua-nginx-module#lua_package_path - -#lua_package_cpath = # Sets the Lua C module search path - # (LUA_CPATH). - # - # See https://github.com/openresty/lua-nginx-module#lua_package_cpath - -lua_socket_pool_size = 30 # Specifies the size limit for every cosocket - # connection pool associated with every remote - # server. - # - # See https://github.com/openresty/lua-nginx-module#lua_socket_pool_size - -untrusted_lua = sandbox - # Controls loading of Lua functions from admin-supplied - # sources such as the Admin API. LuaJIT bytecode - # loading is always disabled. - # - # **Warning:** LuaJIT is not designed as a secure - # runtime for running malicious code, therefore - # you should properly protect your Admin API endpoint - # even with sandboxing enabled. The sandbox only - # provides protection against trivial attackers or - # unintentional modification of the Kong global - # environment. - # - # Accepted values are: `off`, `sandbox`, or - # `on`: - # - # * `off`: Disallow loading of any arbitrary - # Lua functions. The `off` option - # disables any functionality that runs - # arbitrary Lua code, including the - # Serverless Functions plugins and any - # transformation plugin that allows - # custom Lua functions. - # - # * `sandbox`: Allow loading of Lua functions, - # but use a sandbox when executing - # them. The sandboxed function has - # restricted access to the global - # environment and only has access - # to standard Lua functions that - # will generally not cause harm to - # the Kong Gateway node. - # - # * `on`: Functions have unrestricted - # access to the global environment and - # can load any Lua modules. This is - # similar to the behavior in - # Kong Gateway prior to 2.3.0. - # - # The default `sandbox` environment does not - # allow importing other modules or libraries, - # or executing anything at the OS level (for - # example, file read/write). The global - # environment is also not accessible. - # - # Examples of `untrusted_lua = sandbox` - # behavior: - # - # * You can't access or change global values - # such as `kong.configuration.pg_password` - # * You can run harmless lua: - # `local foo = 1 + 1`. However, OS level - # functions are not allowed, like: - # `os.execute('rm -rf /*')`. - # - # For a full allowed/disallowed list, see: - # https://github.com/kikito/sandbox.lua/blob/master/sandbox.lua - # - # To customize the sandbox environment, use - # the `untrusted_lua_sandbox_requires` and - # `untrusted_lua_sandbox_environment` - # parameters below. - -#untrusted_lua_sandbox_requires = # Comma-separated list of modules allowed to - # be loaded with `require` inside the - # sandboxed environment. Ignored - # if `untrusted_lua` is not `sandbox`. - # - # For example, say you have configured the - # Serverless pre-function plugin and it - # contains the following `requires`: - # - # ``` - # local template = require "resty.template" - # local split = require "kong.tools.utils".split - # ``` - # - # To run the plugin, add the modules to the - # allowed list: - # ``` - # untrusted_lua_sandbox_requires = resty.template, kong.tools.utils - # ``` - # - # **Warning:** Allowing certain modules may - # create opportunities to escape the - # sandbox. For example, allowing `os` or - # `luaposix` may be unsafe. - -#untrusted_lua_sandbox_environment = # Comma-separated list of global Lua - # variables that should be made available - # inside the sandboxed environment. Ignored - # if `untrusted_lua` is not `sandbox`. - # - # **Warning**: Certain variables, when made - # available, may create opportunities to - # escape the sandbox. diff --git a/packages/helm-charts/kong/templates/NOTES.txt b/packages/helm-charts/kong/templates/NOTES.txt deleted file mode 100644 index 9542a8b9540..00000000000 --- a/packages/helm-charts/kong/templates/NOTES.txt +++ /dev/null @@ -1,95 +0,0 @@ -** Please be patient while the chart is being deployed ** - -{{- if .Values.ingress.enabled }} - Kong URL(s): -{{- if .Values.ingress.hostname }} - - http://{{ .Values.ingress.hostname }} -{{- end }} -{{- range $host := .Values.ingress.hosts }} - {{- range .paths }} - - http://{{ $host.name }}{{ . }} - {{- end }} -{{- end }} -{{- else if contains "NodePort" .Values.service.type }} - - Get the Kubernetes node IP by using the following command - export NODE_IP=$(kubectl get nodes --namespace {{ .Release.Namespace }} -o jsonpath="{.items[0].status.addresses[0].address}") - - Access the Kong proxy by using the following commands - - export PROXY_NODE_PORT=$(kubectl get --namespace {{ .Release.Namespace }} -o jsonpath="{.spec.ports[0].nodePort}" services {{ include "common.names.fullname" . }}) - echo http://$NODE_IP:$PROXY_NODE_PORT - - {{- if .Values.service.exposeAdmin }} - - Access the Kong admin by using the following commands - - export ADMIN_NODE_PORT=$(kubectl get --namespace {{ .Release.Namespace }} -o jsonpath="{.spec.ports[2].nodePort}" services {{ include "common.names.fullname" . }}) - echo http://$NODE_IP:$ADMIN_NODE_PORT - - {{- end }} -{{- else if contains "LoadBalancer" .Values.service.type }} - - NOTE: It may take a few minutes for the LoadBalancer IP to be available. - You can watch the status of by running 'kubectl get --namespace {{ .Release.Namespace }} svc -w {{ include "common.names.fullname" . }}' - export SERVICE_IP=$(kubectl get svc --namespace {{ .Release.Namespace }} {{ include "common.names.fullname" . }} -o jsonpath='{.status.loadBalancer.ingress[0].ip}') - echo http://$SERVICE_IP:{{ .Values.service.proxyHttpPort }} -{{- else if contains "ClusterIP" .Values.service.type }} - - Access the Kong proxy by using the following commands - - echo "Browse to http://127.0.0.1:8000" - kubectl port-forward svc/{{ include "common.names.fullname" . }} 8080:{{ .Values.service.proxyHttpPort }} & - - Access the Kong admin by using the following commands - - echo "Browse to http://127.0.0.1:8001" - {{- if .Values.service.exposeAdmin }} - kubectl port-forward svc/{{ include "common.names.fullname" . }} 8001:{{ .Values.service.adminHttpPort }} & - {{- else }} - export POD_NAME=$(kubectl get pods --namespace {{ .Release.Namespace }} -l "app.kubernetes.io/name:{{ include "common.names.name" . }},app.kubernetes.io/instance:{{ .Release.Name }}" -o jsonpath="{.items[0].metadata.name}") - - kubectl port-forward pod/$POD_NAME 8001:8001 & - {{- end }} -{{- end }} - -{{- if .Values.ingressController.enabled }} - - The Kong Ingress Controller was deployed as part of the Kong pods. The following objects are available in the Kubernetes API: - - kubectl get kongconsumers - kubectl get kongcredentials - kubectl get kongingresses - kubectl get kongplugins - -{{- end }} - -{{- include "common.warnings.rollingTag" .Values.image }} -{{- if .Values.ingressController.enabled }} -{{- include "common.warnings.rollingTag" .Values.ingressController.image }} -{{- end }} - -{{- $passwordValidationErrors := list }} - -If you want to upgrade the installation you will need to re-set the database credentials. Execute the following command -{{- if eq .Values.database "postgresql" }} -{{- $dbSecretName := include "kong.postgresql.secretName" . -}} -{{- $dbPasswordValidationErrors := include "common.validations.values.postgresql.passwords" (dict "secret" $dbSecretName "subchart" true "context" $) -}} -{{- $passwordValidationErrors = append $passwordValidationErrors $dbPasswordValidationErrors -}} - - kubectl get secret --namespace {{ .Release.Namespace }} {{ include "kong.postgresql.secretName" . }} -o jsonpath="{.data.postgresql-password}" | base64 --decode -{{- else }} - {{- $dbSecretName := include "kong.cassandra.secretName" . -}} - {{- $dbPasswordValidationErrors := include "common.validations.values.cassandra.passwords" (dict "secret" $dbSecretName "subchart" true "context" $) -}} - {{- $passwordValidationErrors = append $passwordValidationErrors $dbPasswordValidationErrors -}} - - kubectl get secret --namespace {{ .Release.Namespace }} {{ include "kong.cassandra.secretName" . }} -o jsonpath="{.data.cassandra-password}" | base64 --decode -{{- end }} - -{{- if .Values.service.exposeAdmin }} - -WARNING: You made the Kong admin {{ if contains "ClusterIP" .Values.service.type }}accessible from other pods in the cluster{{ else }}externally accessible{{- end }}. We do not recommend this configuration in production. For accessing the admin, using pod port-forwarding or using the Kong Ingress Controller is preferred. -{{- end }} - -{{ include "kong.validateValues" . }} -{{- include "common.errors.upgrade.passwords.empty" (dict "validationErrors" $passwordValidationErrors "context" $) -}} diff --git a/packages/helm-charts/kong/templates/_helpers.tpl b/packages/helm-charts/kong/templates/_helpers.tpl deleted file mode 100644 index 67b5ea3a982..00000000000 --- a/packages/helm-charts/kong/templates/_helpers.tpl +++ /dev/null @@ -1,217 +0,0 @@ -{{/* -Return the proper kong image name -*/}} -{{- define "kong.image" -}} -{{ include "common.images.image" (dict "imageRoot" .Values.image "global" .Values.global) }} -{{- end -}} - -{{/* -Return the proper kong image name -*/}} -{{- define "kong.ingress-controller.image" -}} -{{ include "common.images.image" (dict "imageRoot" .Values.ingressController.image "global" .Values.global) }} -{{- end -}} - -{{/* -Return the proper kong migration image name -*/}} -{{- define "kong.migration.image" -}} -{{- if .Values.migration.image -}} -{{ include "common.images.image" (dict "imageRoot" .Values.migration.image "global" .Values.global) }} -{{- else -}} -{{- template "kong.image" . -}} -{{- end -}} -{{- end -}} - -{{/* -Create a default fully qualified app name. -We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec). -*/}} -{{- define "kong.postgresql.fullname" -}} -{{- printf "%s-%s" .Release.Name "postgresql" | trunc 63 | trimSuffix "-" -}} -{{- end -}} - -{{/* -Create a default fully qualified app name. -We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec). -*/}} -{{- define "kong.cassandra.fullname" -}} -{{- printf "%s-%s" .Release.Name "cassandra" | trunc 63 | trimSuffix "-" -}} -{{- end -}} - -{{/* -Get Cassandra port -*/}} -{{- define "kong.cassandra.port" -}} -{{- if .Values.cassandra.enabled -}} -{{- .Values.cassandra.service.port -}} -{{- else -}} -{{- .Values.cassandra.external.port -}} -{{- end -}} -{{- end -}} - -{{/* -Get Cassandra contact points -*/}} -{{- define "kong.cassandra.contactPoints" -}} -{{- $global := . -}} -{{- if .Values.cassandra.enabled -}} - {{- $replicas := int .Values.cassandra.cluster.replicaCount -}} - {{- $domain := .Values.clusterDomain -}} - {{- range $i, $e := until $replicas }} - {{- include "kong.cassandra.fullname" $global }}-{{ $i }}.{{ include "kong.cassandra.fullname" $global }}-headless.{{ $global.Release.Namespace }}.svc.{{ $domain }} - {{- if (lt ( add1 $i ) $replicas ) -}} - , - {{- end -}} - {{- end -}} -{{- else -}} - {{- $replicas := len .Values.cassandra.external.hosts -}} - {{- range $i, $e := until $replicas }} - {{- index $global.Values.cassandra.external.hosts $i -}} - {{- if (lt ( add1 $i ) $replicas ) -}} - , - {{- end -}} - {{- end -}} -{{- end -}} -{{- end -}} - -{{/* -Get PostgreSQL host -*/}} -{{- define "kong.postgresql.host" -}} -{{- if .Values.postgresql.enabled -}} - {{- template "kong.postgresql.fullname" . -}} -{{- else -}} - {{ .Values.postgresql.external.host }} -{{- end -}} -{{- end -}} - -{{/* -Get PostgreSQL user -*/}} -{{- define "kong.postgresql.user" -}} -{{- if .Values.postgresql.enabled -}} - {{- .Values.postgresql.postgresqlUsername -}} -{{- else -}} - {{ .Values.postgresql.external.user }} -{{- end -}} -{{- end -}} - -{{/* -Get Cassandra user -*/}} -{{- define "kong.cassandra.user" -}} -{{- if .Values.postgresql.enabled -}} - {{- .Values.cassandra.dbUser.user -}} -{{- else -}} - {{ .Values.cassandra.external.user }} -{{- end -}} -{{- end -}} - -{{/* -Get Cassandra secret -*/}} -{{- define "kong.cassandra.secretName" -}} -{{- if .Values.cassandra.existingSecret -}} - {{- .Values.cassandra.existingSecret -}} -{{- else if .Values.cassandra.enabled }} - {{- template "kong.cassandra.fullname" . -}} -{{- else -}} - {{- printf "%s-external-secret" ( include "common.names.fullname" . ) -}} -{{- end -}} -{{- end -}} - -{{/* -Get PostgreSQL secret -*/}} -{{- define "kong.postgresql.secretName" -}} -{{- if .Values.postgresql.existingSecret -}} - {{- .Values.postgresql.existingSecret -}} -{{- else if .Values.postgresql.enabled }} - {{- template "kong.postgresql.fullname" . -}} -{{- else -}} - {{- printf "%s-external-secret" ( include "common.names.fullname" . ) -}} -{{- end -}} -{{- end -}} - -{{/* -Return the proper Docker Image Registry Secret Names -*/}} -{{- define "kong.imagePullSecrets" -}} -{{ include "common.images.pullSecrets" (dict "images" (list .Values.image .Values.ingressController.image) "global" .Values.global) }} -{{- end -}} - -{{/* -Return true if a secret for a external database should be created -*/}} -{{- define "kong.createExternalDBSecret" -}} -{{- if and (not .Values.postgresql.enabled) (not .Values.cassandra.enabled) (not .Values.cassandra.existingSecret) (not .Values.postgresql.existingSecret) -}} - {{- true -}} -{{- end -}} -{{- end -}} - -{{/* -Get proper service account -*/}} -{{- define "kong.serviceAccount" -}} -{{- if .Values.ingressController.rbac.existingServiceAccount -}} -{{ .Values.ingressController.rbac.existingServiceAccount }} -{{- else -}} -{{- include "common.names.fullname" . -}} -{{- end -}} -{{- end -}} - -{{/* -Validate values for kong. -*/}} -{{- define "kong.validateValues" -}} -{{- $messages := list -}} -{{- $messages := append $messages (include "kong.validateValues.database" .) -}} -{{- $messages := append $messages (include "kong.validateValues.rbac" .) -}} -{{- $messages := without $messages "" -}} -{{- $message := join "\n" $messages -}} - -{{- if $message -}} -{{- printf "\nVALUES VALIDATION:\n%s" $message -}} -{{- end -}} -{{- end -}} - -{{/* -Function to validate the RBAC -*/}} -{{- define "kong.validateValues.rbac" -}} -{{- if and .Values.ingressController.enabled (not .Values.ingressController.rbac.existingServiceAccount) (not .Values.ingressController.rbac.create) -}} -INVALID RBAC: You enabled the Kong Ingress Controller sidecar without creating RBAC objects and not -specifying an existing Service Account. Specify an existing Service Account in ingressController.rbac.existingServiceAccount -or allow the chart to create the proper RBAC objects with ingressController.rbac.create -{{- end -}} -{{- end -}} -{{/* -Function to validate the external database -*/}} -{{- define "kong.validateValues.database" -}} - -{{- if and (not (eq .Values.database "postgresql")) (not (eq .Values.database "cassandra")) -}} -INVALID DATABASE: The value "{{ .Values.database }}" is not allowed for the "database" value. It -must be one either "postgresql" or "cassandra". -{{- end }} - -{{- if and (eq .Values.database "postgresql") (not .Values.postgresql.enabled) (not .Values.postgresql.external.host) -}} -NO DATABASE: You disabled the Cassandra sub-chart but did not specify external Cassandra hosts. Either deploy the PostgreSQL sub-chart by setting cassandra.enabled=true or set a value for cassandra.external.hosts. -{{- end }} - -{{- if and (eq .Values.database "postgresql") (not .Values.postgresql.enabled) (not .Values.postgresql.external.host) -}} -NO DATABASE: You disabled the PostgreSQL sub-chart but did not specify an external PostgreSQL host. Either deploy the PostgreSQL sub-chart by setting postgresql.enabled=true or set a value for postgresql.external.host. -{{- end }} - - -{{- if and (eq .Values.database "postgresql") .Values.postgresql.enabled .Values.postgresql.external.host -}} -CONFLICT: You specified to deploy the PostgreSQL sub-chart and also specified an external -PostgreSQL instance. Only one of postgresql.enabled (deploy sub-chart) and postgresql.external.host can be set -{{- end }} - -{{- if and (eq .Values.database "cassandra") .Values.cassandra.enabled .Values.cassandra.external.hosts -}} -CONFLICT: You specified to deploy the Cassandra sub-chart and also specified external -Cassandra hosts. Only one of cassandra.enabled (deploy sub-chart) and cassandra.external.hosts can be set -{{- end }} -{{- end -}} diff --git a/packages/helm-charts/kong/templates/dep-ds.yaml b/packages/helm-charts/kong/templates/dep-ds.yaml deleted file mode 100644 index c24a7385769..00000000000 --- a/packages/helm-charts/kong/templates/dep-ds.yaml +++ /dev/null @@ -1,359 +0,0 @@ -apiVersion: {{ include "common.capabilities.deployment.apiVersion" . }} -{{- if .Values.useDaemonset }} -kind: DaemonSet -{{- else }} -kind: Deployment -{{- end }} -metadata: - name: {{ include "common.names.fullname" . }} - namespace: {{ .Release.Namespace }} - labels: {{- include "common.labels.standard" . | nindent 4 }} - app.kubernetes.io/component: server - {{- if .Values.commonLabels }} - {{- include "common.tplvalues.render" ( dict "value" .Values.commonLabels "context" $ ) | nindent 4 }} - {{- end }} - {{- if .Values.commonAnnotations }} - annotations: {{- include "common.tplvalues.render" ( dict "value" .Values.commonAnnotations "context" $ ) | nindent 4 }} - {{- end }} -spec: - {{- if not .Values.useDaemonset }} - replicas: {{ .Values.replicaCount }} - {{- end }} - selector: - matchLabels: {{- include "common.labels.matchLabels" . | nindent 6 }} - app.kubernetes.io/component: server - {{- if .Values.updateStrategy }} - {{- if .Values.useDaemonset }} - updateStrategy: {{- toYaml .Values.updateStrategy | nindent 4 }} - {{- else }} - strategy: {{- toYaml .Values.updateStrategy | nindent 4 }} - {{- end }} - {{- end }} - template: - metadata: - labels: {{- include "common.labels.standard" . | nindent 8 }} - app.kubernetes.io/component: server - {{- if .Values.podLabels }} - {{- include "common.tplvalues.render" (dict "value" .Values.podLabels "context" $) | nindent 8 }} - {{- end }} - annotations: - {{- if (include "kong.createExternalDBSecret" .) }} - checksum/secret: {{ include (print $.Template.BasePath "/external-database-secret.yaml") . | sha256sum }} - {{- end }} - checksum/configmap-kong: {{ include (print $.Template.BasePath "/kong-script-configmap.yaml") . | sha256sum }} - {{- if .Values.metrics.enabled }} - checksum/configmap-metrics-plugin: {{ include (print $.Template.BasePath "/metrics-script-configmap.yaml") . | sha256sum }} - {{- end }} - {{- if .Values.podAnnotations }} - {{- include "common.tplvalues.render" (dict "value" .Values.podAnnotations "context" $) | nindent 8 }} - {{- end }} - spec: - {{- if .Values.hostAliases }} - hostAliases: {{- include "common.tplvalues.render" (dict "value" .Values.hostAliases "context" $) | nindent 8 }} - {{- end }} - {{- if .Values.ingressController.enabled }} - serviceAccountName: {{ include "kong.serviceAccount" . }} - {{- end }} - {{- if .Values.podSecurityContext }} - securityContext: {{- include "common.tplvalues.render" (dict "value" .Values.podSecurityContext "context" $) | nindent 8 }} - {{- end }} - {{- include "kong.imagePullSecrets" . | nindent 6 }} - {{- if .Values.schedulerName }} - schedulerName: {{ .Values.schedulerName | quote }} - {{- end }} - {{- if .Values.affinity }} - affinity: {{- include "common.tplvalues.render" (dict "value" .Values.affinity "context" $) | nindent 8 }} - {{- else }} - affinity: - podAffinity: {{- include "common.affinities.pods" (dict "type" .Values.podAffinityPreset "component" "server" "context" $) | nindent 10 }} - podAntiAffinity: {{- include "common.affinities.pods" (dict "type" .Values.podAntiAffinityPreset "component" "server" "context" $) | nindent 10 }} - nodeAffinity: {{- include "common.affinities.nodes" (dict "type" .Values.nodeAffinityPreset.type "key" .Values.nodeAffinityPreset.key "values" .Values.nodeAffinityPreset.values) | nindent 10 }} - {{- end }} - {{- if .Values.nodeSelector }} - nodeSelector: {{- include "common.tplvalues.render" (dict "value" .Values.nodeSelector "context" $) | nindent 8 }} - {{- end }} - {{- if .Values.tolerations }} - tolerations: {{- include "common.tplvalues.render" (dict "value" .Values.tolerations "context" $) | nindent 8 }} - {{- end }} - {{- if .Values.initContainers }} - initContainers: {{- include "common.tplvalues.render" (dict "value" .Values.initContainers "context" $) | nindent 8 }} - {{- end }} - containers: - - name: kong - image: {{ template "kong.image" . }} - imagePullPolicy: {{ .Values.image.pullPolicy }} - {{- if .Values.containerSecurityContext }} - securityContext: {{- include "common.tplvalues.render" (dict "value" .Values.containerSecurityContext "context" $) | nindent 12 }} - {{- end }} - {{- if .Values.kong.command }} - command: {{- include "common.tplvalues.render" (dict "value" .Values.kong.command "context" $) | nindent 12 }} - {{- end }} - {{- if .Values.kong.args }} - args: {{- include "common.tplvalues.render" (dict "value" .Values.kong.args "context" $) | nindent 12 }} - {{- end }} - {{- if not .Values.kong.lifecycleHooks }} - lifecycle: - preStop: - exec: - command: - - /bin/sh - - -c - - kong quit - {{ else }} - lifecycle: {{- include "common.tplvalues.render" (dict "value" .Values.kong.lifecycleHooks "context" $) | nindent 12 }} - {{- end }} - env: - {{- if .Values.service.exposeAdmin }} - - name: KONG_ADMIN_LISTEN_ADDRESS - value: "0.0.0.0" - {{- end }} - {{- if (eq .Values.database "postgresql") }} - - name: KONG_DATABASE - value: "postgres" - {{- if .Values.postgresql.usePasswordFile }} - - name: KONG_POSTGRESQL_PASSWORD_FILE - value: "/bitnami/kong/secrets/postgresql-password" - {{- else }} - - name: KONG_PG_PASSWORD - valueFrom: - secretKeyRef: - name: {{ include "kong.postgresql.secretName" . }} - key: postgresql-password - {{- end }} - - name: KONG_PG_HOST - value: {{ include "kong.postgresql.host" . }} - - name: KONG_PG_USER - value: {{ include "kong.postgresql.user" . }} - {{- end }} - {{- if (eq .Values.database "cassandra") }} - - name: KONG_DATABASE - value: "cassandra" - {{- if .Values.cassandra.usePasswordFile }} - - name: KONG_CASSANDRA_PASSWORD_FILE - value: "/bitnami/kong/secrets/cassandra-password" - {{- else }} - - name: KONG_CASSANDRA_PASSWORD - valueFrom: - secretKeyRef: - name: {{ include "kong.cassandra.secretName" . }} - key: cassandra-password - {{- end }} - - name: KONG_CASSANDRA_CONTACT_POINTS - value: {{ include "kong.cassandra.contactPoints" . }} - - name: KONG_CASSANDRA_PORT - value: {{ include "kong.cassandra.port" . | quote }} - - name: KONG_CASSANDRA_USER - value: {{ include "kong.cassandra.user" . | quote }} - {{- end }} - {{- if .Values.metrics.enabled }} - - name: KONG_NGINX_HTTP_INCLUDE - value: "/bitnami/kong/metrics-exporter/exporter.conf" - {{- end }} - {{- if .Values.kong.extraEnvVars }} - {{- include "common.tplvalues.render" (dict "value" .Values.kong.extraEnvVars "context" $) | nindent 12 }} - {{- end }} - {{- if or .Values.kong.extraEnvVarsCM .Values.kong.extraEnvVarsSecret }} - envFrom: - {{- if .Values.kong.extraEnvVarsCM }} - - configMapRef: - name: {{ .Values.kong.extraEnvVarsCM }} - {{- end }} - {{- if .Values.kong.extraEnvVarsSecret }} - - secretRef: - name: {{ .Values.kong.extraEnvVarsSecret }} - {{- end }} - {{- end }} - ports: - - name: http-proxy - containerPort: 8000 - protocol: TCP - - name: https-proxy - containerPort: 8443 - protocol: TCP - - name: http-admin - containerPort: 8001 - protocol: TCP - - name: https-admin - containerPort: 8444 - protocol: TCP - {{- if .Values.metrics.enabled }} - - name: http-metrics - containerPort: {{ .Values.metrics.service.port }} - protocol: TCP - {{- end }} - {{- if .Values.kong.livenessProbe.enabled }} - livenessProbe: - exec: - command: - - /bin/bash - - -ec - - /health/kong-container-health.sh - initialDelaySeconds: {{ .Values.kong.livenessProbe.initialDelaySeconds }} - periodSeconds: {{ .Values.kong.livenessProbe.periodSeconds }} - timeoutSeconds: {{ .Values.kong.livenessProbe.timeoutSeconds }} - failureThreshold: {{ .Values.kong.livenessProbe.failureThreshold }} - successThreshold: {{ .Values.kong.livenessProbe.successThreshold }} - {{- else if .Values.kong.customLivenessProbe }} - livenessProbe: {{- include "common.tplvalues.render" (dict "value" .Values.kong.customLivenessProbe "context" $) | nindent 12 }} - {{- end }} - {{- if .Values.kong.readinessProbe.enabled }} - readinessProbe: - exec: - command: - - /bin/bash - - -ec - - /health/kong-container-health.sh - initialDelaySeconds: {{ .Values.kong.readinessProbe.initialDelaySeconds }} - periodSeconds: {{ .Values.kong.readinessProbe.periodSeconds }} - timeoutSeconds: {{ .Values.kong.readinessProbe.timeoutSeconds }} - failureThreshold: {{ .Values.kong.readinessProbe.failureThreshold }} - successThreshold: {{ .Values.kong.readinessProbe.successThreshold }} - {{- else if .Values.kong.customReadinessProbe }} - readinessProbe: {{- include "common.tplvalues.render" (dict "value" .Values.kong.customReadinessProbe "context" $) | nindent 12 }} - {{- end }} - {{- if .Values.kong.resources }} - resources: {{- toYaml .Values.kong.resources | nindent 12 }} - {{- end }} - volumeMounts: - - name: health - mountPath: /health - {{- if .Values.metrics.enabled }} - - name: metrics-init-scripts - mountPath: /docker-entrypoint-initdb.d/metrics-init - - name: metrics-server-block - mountPath: "/bitnami/kong/metrics-exporter" - {{ end }} - {{- if .Values.kong.initScriptsCM }} - - name: custom-init-scripts-cm - mountPath: /docker-entrypoint-initdb.d/cm - {{- end }} - {{- if .Values.kong.initScriptsSecret }} - - name: custom-init-scripts-secret - mountPath: /docker-entrypoint-initdb.d/secret - {{- end }} - {{- if .Values.kong.extraVolumeMounts }} - {{- include "common.tplvalues.render" (dict "value" .Values.kong.extraVolumeMounts "context" $) | nindent 12 }} - {{- end }} - {{- if .Values.ingressController.enabled }} - - name: kong-ingress-controller - image: {{ template "kong.ingress-controller.image" . }} - imagePullPolicy: {{ .Values.ingressController.image.pullPolicy }} - {{- if .Values.containerSecurityContext }} - securityContext: {{- include "common.tplvalues.render" (dict "value" .Values.containerSecurityContext "context" $) | nindent 12 }} - {{- end }} - {{- if .Values.ingressController.args }} - command: {{- include "common.tplvalues.render" (dict "value" .Values.ingressController.command "context" $) | nindent 12 }} - {{- else }} - command: - - bash - - -ec - - /health/ingress-container-start.sh - {{- end }} - {{- if .Values.ingressController.args }} - args: {{- include "common.tplvalues.render" (dict "value" .Values.ingressController.args "context" $) | nindent 12 }} - {{- end }} - env: - - name: CONTROLLER_KONG_ADMIN_URL - value: http://127.0.0.1:8001 - - name: CONTROLLER_PUBLISH_SERVICE - value: {{ printf "%s/%s" .Release.Namespace (include "common.names.fullname" .) | quote }} - - name: CONTROLLER_INGRESS_CLASS - value: {{ .Values.ingressController.ingressClass }} - - name: CONTROLLER_ELECTION_ID - value: {{ printf "kong-ingress-controller-leader-%s" .Values.ingressController.ingressClass }} - - name: POD_NAME - valueFrom: - fieldRef: - fieldPath: metadata.name - - name: POD_NAMESPACE - valueFrom: - fieldRef: - fieldPath: metadata.namespace - {{- if .Values.ingressController.extraEnvVars }} - {{- include "common.tplvalues.render" (dict "value" .Values.ingressController.extraEnvVars "context" $) | nindent 12 }} - {{- end }} - {{- if or .Values.ingressController.extraEnvVarsCM .Values.ingressController.extraEnvVarsSecret }} - envFrom: - {{- if .Values.ingressController.extraEnvVarsCM }} - - configMapRef: - name: {{ .Values.ingressController.extraEnvVarsCM }} - {{- end }} - {{- if .Values.ingressController.extraEnvVarsSecret }} - - secretRef: - name: {{ .Values.ingressController.extraEnvVarsSecret }} - {{- end }} - {{- end }} - ports: - - name: http-health - containerPort: 10254 - protocol: TCP - {{- if .Values.ingressController.livenessProbe.enabled }} - livenessProbe: - httpGet: - path: "/healthz" - port: http-health - scheme: HTTP - initialDelaySeconds: {{ .Values.ingressController.livenessProbe.initialDelaySeconds }} - periodSeconds: {{ .Values.ingressController.livenessProbe.periodSeconds }} - timeoutSeconds: {{ .Values.ingressController.livenessProbe.timeoutSeconds }} - failureThreshold: {{ .Values.ingressController.livenessProbe.failureThreshold }} - successThreshold: {{ .Values.ingressController.livenessProbe.successThreshold }} - {{- else if .Values.ingressController.customLivenessProbe }} - livenessProbe: {{- include "common.tplvalues.render" (dict "value" .Values.ingressController.customLivenessProbe "context" $) | nindent 12 }} - {{- end }} - {{- if .Values.ingressController.readinessProbe.enabled }} - readinessProbe: - httpGet: - path: "/healthz" - port: http-health - scheme: HTTP - initialDelaySeconds: {{ .Values.ingressController.readinessProbe.initialDelaySeconds }} - periodSeconds: {{ .Values.ingressController.readinessProbe.periodSeconds }} - timeoutSeconds: {{ .Values.ingressController.readinessProbe.timeoutSeconds }} - failureThreshold: {{ .Values.ingressController.readinessProbe.failureThreshold }} - successThreshold: {{ .Values.ingressController.readinessProbe.successThreshold }} - {{- else if .Values.ingressController.customReadinessProbe }} - readinessProbe: {{- include "common.tplvalues.render" (dict "value" .Values.ingressController.customReadinessProbe "context" $) | nindent 12 }} - {{- end }} - {{- if .Values.ingressController.resources }} - resources: {{- toYaml .Values.ingressController.resources | nindent 12 }} - {{- end }} - volumeMounts: - - name: health - mountPath: /health - {{- if .Values.ingressController.extraVolumeMounts }} - {{- include "common.tplvalues.render" (dict "value" .Values.ingressController.extraVolumeMounts "context" $) | nindent 12 }} - {{- end }} - {{- end }} - {{- if .Values.sidecars }} - {{- include "common.tplvalues.render" (dict "value" .Values.sidecars "context" $) | nindent 8 }} - {{- end }} - volumes: - - name: health - configMap: - name: {{ template "common.names.fullname" . }}-scripts - defaultMode: 0755 - {{- if .Values.metrics.enabled }} - - name: metrics-init-scripts - configMap: - name: {{ template "common.names.fullname" . }}-metrics-scripts - defaultMode: 0755 - - name: metrics-server-block - configMap: - name: {{ template "common.names.fullname" . }}-metrics-exporter - {{- end }} - {{- if .Values.kong.initScriptsCM }} - - name: custom-init-scripts-cm - configMap: - name: {{ .Values.kong.initScriptsCM }} - defaultMode: 0755 - {{- end }} - {{- if .Values.kong.initScriptsSecret }} - - name: custom-init-scripts-secret - secret: - secretName: {{ .Values.kong.initScriptsSecret }} - defaultMode: 0755 - {{- end }} - {{- if .Values.extraVolumes }} - {{- include "common.tplvalues.render" (dict "value" .Values.extraVolumes "context" $) | nindent 8 }} - {{- end }} diff --git a/packages/helm-charts/kong/templates/external-database-secret.yaml b/packages/helm-charts/kong/templates/external-database-secret.yaml deleted file mode 100644 index 35755dc716c..00000000000 --- a/packages/helm-charts/kong/templates/external-database-secret.yaml +++ /dev/null @@ -1,23 +0,0 @@ -{{- if (include "kong.createExternalDBSecret" .) }} -apiVersion: v1 -kind: Secret -metadata: - name: {{ include "common.names.fullname" . }}-external-secret - namespace: {{ .Release.Namespace }} - labels: {{- include "common.labels.standard" . | nindent 4 }} - app.kubernetes.io/component: server - {{- if .Values.commonLabels }} - {{- include "common.tplvalues.render" ( dict "value" .Values.commonLabels "context" $ ) | nindent 4 }} - {{- end }} - {{- if .Values.commonAnnotations }} - annotations: {{- include "common.tplvalues.render" ( dict "value" .Values.commonAnnotations "context" $ ) | nindent 4 }} - {{- end }} -type: Opaque -data: - {{- if .Values.cassandra.external.password }} - cassandra-password: {{ .Values.cassandra.external.password | b64enc | quote }} - {{- end }} - {{- if .Values.postgresql.external.password }} - postgresql-password: {{ .Values.postgresql.external.password | b64enc | quote }} - {{- end }} -{{- end }} diff --git a/packages/helm-charts/kong/templates/extra-list.yaml b/packages/helm-charts/kong/templates/extra-list.yaml deleted file mode 100644 index 9ac65f9e16f..00000000000 --- a/packages/helm-charts/kong/templates/extra-list.yaml +++ /dev/null @@ -1,4 +0,0 @@ -{{- range .Values.extraDeploy }} ---- -{{ include "common.tplvalues.render" (dict "value" . "context" $) }} -{{- end }} diff --git a/packages/helm-charts/kong/templates/hpa.yaml b/packages/helm-charts/kong/templates/hpa.yaml deleted file mode 100644 index 9b3abb6e0aa..00000000000 --- a/packages/helm-charts/kong/templates/hpa.yaml +++ /dev/null @@ -1,24 +0,0 @@ -{{- if .Values.autoscaling.enabled }} -apiVersion: {{ .Values.autoscaling.apiVersion }} -kind: HorizontalPodAutoscaler -metadata: - name: {{ include "common.names.fullname" . }} - namespace: {{ .Release.Namespace }} - labels: {{- include "common.labels.standard" . | nindent 4 }} - app.kubernetes.io/component: server - {{- if .Values.commonLabels }} - {{- include "common.tplvalues.render" ( dict "value" .Values.commonLabels "context" $ ) | nindent 4 }} - {{- end }} - {{- if .Values.commonAnnotations }} - annotations: {{- include "common.tplvalues.render" ( dict "value" .Values.commonAnnotations "context" $ ) | nindent 4 }} - {{- end }} -spec: - scaleTargetRef: - apiVersion: {{ include "common.capabilities.deployment.apiVersion" . }} - kind: Deployment - name: {{ include "common.names.fullname" . }} - minReplicas: {{ .Values.autoscaling.minReplicas }} - maxReplicas: {{ .Values.autoscaling.maxReplicas }} - metrics: - {{- include "common.tplvalues.render" (dict "value" .Values.autoscaling.metrics "context" $) | nindent 4 }} -{{- end }} diff --git a/packages/helm-charts/kong/templates/ingress-controller-rbac.yaml b/packages/helm-charts/kong/templates/ingress-controller-rbac.yaml deleted file mode 100644 index 0ecac2238fe..00000000000 --- a/packages/helm-charts/kong/templates/ingress-controller-rbac.yaml +++ /dev/null @@ -1,187 +0,0 @@ -{{- if and .Values.ingressController.rbac.create .Values.ingressController.enabled }} -apiVersion: {{ include "common.capabilities.rbac.apiVersion" . }} -kind: Role -metadata: - name: {{ include "common.names.fullname" . }} - namespace: {{ .Release.Namespace }} - labels: {{- include "common.labels.standard" . | nindent 4 }} - app.kubernetes.io/component: server - {{- if .Values.commonLabels }} - {{- include "common.tplvalues.render" ( dict "value" .Values.commonLabels "context" $ ) | nindent 4 }} - {{- end }} - {{- if .Values.commonAnnotations }} - annotations: {{- include "common.tplvalues.render" ( dict "value" .Values.commonAnnotations "context" $ ) | nindent 4 }} - {{- end }} -rules: - - apiGroups: - - "" - resources: - - configmaps - - pods - - secrets - - namespaces - verbs: - - get - - apiGroups: - - "" - resources: - - configmaps - resourceNames: - - "kong-ingress-controller-leader-{{ .Values.ingressController.ingressClass }}-{{ .Values.ingressController.ingressClass }}" - verbs: - - get - - update - - apiGroups: - - "" - resources: - - configmaps - verbs: - - create - - apiGroups: - - "" - resources: - - endpoints - verbs: - - get ---- -apiVersion: {{ include "common.capabilities.rbac.apiVersion" . }} -kind: RoleBinding -metadata: - name: {{ template "common.names.fullname" . }} - namespace: {{ .Release.Namespace }} - labels: {{- include "common.labels.standard" . | nindent 4 }} - app.kubernetes.io/component: server - {{- if .Values.commonLabels }} - {{- include "common.tplvalues.render" ( dict "value" .Values.commonLabels "context" $ ) | nindent 4 }} - {{- end }} - {{- if .Values.commonAnnotations }} - annotations: {{- include "common.tplvalues.render" ( dict "value" .Values.commonAnnotations "context" $ ) | nindent 4 }} - {{- end }} -roleRef: - apiGroup: rbac.authorization.k8s.io - kind: Role - name: {{ template "common.names.fullname" . }} -subjects: - - kind: ServiceAccount - name: {{ template "kong.serviceAccount" . }} - namespace: {{ .Release.Namespace }} ---- -apiVersion: {{ include "common.capabilities.rbac.apiVersion" . }} -kind: ClusterRole -metadata: - labels: {{- include "common.labels.standard" . | nindent 4 }} - app.kubernetes.io/component: server - {{- if .Values.commonLabels }} - {{- include "common.tplvalues.render" ( dict "value" .Values.commonLabels "context" $ ) | nindent 4 }} - {{- end }} - {{- if .Values.commonAnnotations }} - annotations: {{- include "common.tplvalues.render" ( dict "value" .Values.commonAnnotations "context" $ ) | nindent 4 }} - {{- end }} - name: {{ template "common.names.fullname" . }} -rules: - - apiGroups: - - "" - resources: - - endpoints - - nodes - - pods - - secrets - verbs: - - list - - watch - - apiGroups: - - "" - resources: - - nodes - verbs: - - get - - apiGroups: - - "" - resources: - - services - verbs: - - get - - list - - watch - - apiGroups: - - "extensions" - - "networking.k8s.io" - - "networking.internal.knative.dev" - resources: - - ingresses - verbs: - - get - - list - - watch - - apiGroups: - - "" - resources: - - events - verbs: - - create - - patch - - apiGroups: - - "extensions" - - "networking.k8s.io" - - "networking.internal.knative.dev" - resources: - - ingresses/status - verbs: - - update - - apiGroups: - - "configuration.konghq.com" - resources: - - tcpingresses/status - verbs: - - update - - apiGroups: - - "configuration.konghq.com" - resources: - - kongplugins - - kongclusterplugins - - kongcredentials - - kongconsumers - - kongingresses - - tcpingresses - verbs: - - get - - list - - watch ---- -apiVersion: {{ include "common.capabilities.rbac.apiVersion" . }} -kind: ClusterRoleBinding -metadata: - name: {{ template "common.names.fullname" . }} - labels: {{- include "common.labels.standard" . | nindent 4 }} - app.kubernetes.io/component: server - {{- if .Values.commonLabels }} - {{- include "common.tplvalues.render" ( dict "value" .Values.commonLabels "context" $ ) | nindent 4 }} - {{- end }} - {{- if .Values.commonAnnotations }} - annotations: {{- include "common.tplvalues.render" ( dict "value" .Values.commonAnnotations "context" $ ) | nindent 4 }} - {{- end }} -roleRef: - apiGroup: rbac.authorization.k8s.io - kind: ClusterRole - name: {{ template "common.names.fullname" . }} -subjects: - - kind: ServiceAccount - name: {{ template "kong.serviceAccount" . }} - namespace: {{ .Release.Namespace }} ---- -{{- if not .Values.ingressController.rbac.existingServiceAccount }} -apiVersion: v1 -kind: ServiceAccount -metadata: - name: {{ template "common.names.fullname" . }} - namespace: {{ .Release.Namespace }} - labels: {{- include "common.labels.standard" . | nindent 4 }} - app.kubernetes.io/component: server - {{- if .Values.commonLabels }} - {{- include "common.tplvalues.render" ( dict "value" .Values.commonLabels "context" $ ) | nindent 4 }} - {{- end }} - {{- if .Values.commonAnnotations }} - annotations: {{- include "common.tplvalues.render" ( dict "value" .Values.commonAnnotations "context" $ ) | nindent 4 }} - {{- end }} -{{- end }} -{{- end }} diff --git a/packages/helm-charts/kong/templates/ingress.yaml b/packages/helm-charts/kong/templates/ingress.yaml deleted file mode 100644 index 0210d8edad2..00000000000 --- a/packages/helm-charts/kong/templates/ingress.yaml +++ /dev/null @@ -1,58 +0,0 @@ -{{- if .Values.ingress.enabled -}} -apiVersion: {{ template "common.capabilities.ingress.apiVersion" . }} -kind: Ingress -metadata: - name: {{ include "common.names.fullname" . }} - namespace: {{ .Release.Namespace }} - labels: {{- include "common.labels.standard" . | nindent 4 }} - app.kubernetes.io/component: server - {{- if .Values.commonLabels }} - {{- include "common.tplvalues.render" ( dict "value" .Values.commonLabels "context" $ ) | nindent 4 }} - {{- end }} - annotations: - {{- if .Values.ingress.certManager }} - kubernetes.io/tls-acme: "true" - {{- end }} - {{- if .Values.ingress.annotations }} - {{- include "common.tplvalues.render" (dict "value" .Values.ingress.annotations "context" $) | nindent 4 }} - {{- end }} - {{- if .Values.commonAnnotations }} - {{- include "common.tplvalues.render" ( dict "value" .Values.commonAnnotations "context" $ ) | nindent 4 }} - {{- end }} -spec: - rules: - {{- if .Values.ingress.hostname }} - - host: {{ .Values.ingress.hostname }} - http: - paths: - {{- if .Values.ingress.extraPaths }} - {{- toYaml .Values.ingress.extraPaths | nindent 10 }} - {{- end }} - - path: {{ .Values.ingress.path }} - {{- if eq "true" (include "common.ingress.supportsPathType" .) }} - pathType: {{ .Values.ingress.pathType }} - {{- end }} - backend: {{- include "common.ingress.backend" (dict "serviceName" (include "common.names.fullname" .) "servicePort" "http-proxy" "context" $) | nindent 14 }} - {{- end }} - {{- range .Values.ingress.extraHosts }} - - host: {{ .name | quote }} - http: - paths: - - path: {{ default "/" .path }} - {{- if eq "true" (include "common.ingress.supportsPathType" $) }} - pathType: {{ default "ImplementationSpecific" .pathType }} - {{- end }} - backend: {{- include "common.ingress.backend" (dict "serviceName" (include "common.names.fullname" $) "servicePort" "http-proxy" "context" $) | nindent 14 }} - {{- end }} - {{- if or .Values.ingress.tls .Values.ingress.extraTls }} - tls: - {{- if .Values.ingress.tls }} - - hosts: - - {{ .Values.ingress.hostname }} - secretName: {{ printf "%s-tls" .Values.ingress.hostname }} - {{- end }} - {{- if .Values.ingress.extraTls }} - {{- include "common.tplvalues.render" ( dict "value" .Values.ingress.extraTls "context" $ ) | nindent 4 }} - {{- end }} - {{- end }} -{{- end }} diff --git a/packages/helm-charts/kong/templates/kong-prometheus-role.yaml b/packages/helm-charts/kong/templates/kong-prometheus-role.yaml deleted file mode 100644 index 36e85ef1226..00000000000 --- a/packages/helm-charts/kong/templates/kong-prometheus-role.yaml +++ /dev/null @@ -1,11 +0,0 @@ -{{- if and .Values.metrics.enabled .Values.metrics.serviceMonitor.enabled .Values.metrics.serviceMonitor.rbac.create }} -apiVersion: {{ include "common.capabilities.rbac.apiVersion" . }} -kind: Role -metadata: - name: {{ template "common.names.fullname" . }}-prometheus - namespace: {{ .Release.Namespace }} -rules: -- apiGroups: [""] - resources: ["endpoints", "services", "pods"] - verbs: ["get", "list", "watch"] -{{- end }} diff --git a/packages/helm-charts/kong/templates/kong-prometheus-rolebinding.yaml b/packages/helm-charts/kong/templates/kong-prometheus-rolebinding.yaml deleted file mode 100644 index ce4cb8b909c..00000000000 --- a/packages/helm-charts/kong/templates/kong-prometheus-rolebinding.yaml +++ /dev/null @@ -1,19 +0,0 @@ -{{- if and .Values.metrics.enabled .Values.metrics.serviceMonitor.enabled .Values.metrics.serviceMonitor.rbac.create }} -apiVersion: {{ include "common.capabilities.rbac.apiVersion" . }} -kind: RoleBinding -metadata: - name: {{ template "common.names.fullname" . }}-prometheus - namespace: {{ .Release.Namespace }} -roleRef: - apiGroup: rbac.authorization.k8s.io - kind: Role - name: {{ template "common.names.fullname" . }}-prometheus -subjects: - {{- if .Values.metrics.serviceMonitor.namespace }} - - namespace: {{ .Values.metrics.serviceMonitor.namespace }} - {{- else }} - - namespace: {{ .Release.Namespace }} - {{- end }} - kind: ServiceAccount - name: {{ required "A valid .Values.metrics.serviceMonitor.serviceAccount entry required!" .Values.metrics.serviceMonitor.serviceAccount }} -{{- end }} diff --git a/packages/helm-charts/kong/templates/kong-script-configmap.yaml b/packages/helm-charts/kong/templates/kong-script-configmap.yaml deleted file mode 100644 index d20d873ae33..00000000000 --- a/packages/helm-charts/kong/templates/kong-script-configmap.yaml +++ /dev/null @@ -1,47 +0,0 @@ -apiVersion: v1 -kind: ConfigMap -metadata: - name: {{ include "common.names.fullname" . }}-scripts - namespace: {{ .Release.Namespace }} - labels: {{- include "common.labels.standard" . | nindent 4 }} - app.kubernetes.io/component: server - {{- if .Values.commonLabels }} - {{- include "common.tplvalues.render" ( dict "value" .Values.commonLabels "context" $ ) | nindent 4 }} - {{- end }} - {{- if .Values.commonAnnotations }} - annotations: {{- include "common.tplvalues.render" ( dict "value" .Values.commonAnnotations "context" $ ) | nindent 4 }} - {{- end }} -data: - kong-container-health.sh: |- - #!/bin/bash - - set -o errexit - set -o nounset - set -o pipefail - - # Load libraries - . /opt/bitnami/scripts/libos.sh - . /opt/bitnami/scripts/libkong.sh - - # Load Kong environment variables - eval "$(kong_env)" - - is_kong_running - - ingress-container-wait-for-kong.sh: |- - #!/bin/bash - - echo "Waiting for the Kong container to be ready" - if wait-for-port --timeout={{ .Values.ingressController.proxyReadyTimeout }} --host=127.0.0.1 --state=inuse 8000; then - echo "Kong container ready" - else - echo "Kong not ready after {{ .Values.ingressController.proxyReadyTimeout }} seconds" - exit 1 - fi - - ingress-container-start.sh: |- - #!/bin/bash - - . /health/ingress-container-wait-for-kong.sh - - kong-ingress-controller diff --git a/packages/helm-charts/kong/templates/metrics-exporter-configmap.yaml b/packages/helm-charts/kong/templates/metrics-exporter-configmap.yaml deleted file mode 100644 index fd99cebad10..00000000000 --- a/packages/helm-charts/kong/templates/metrics-exporter-configmap.yaml +++ /dev/null @@ -1,30 +0,0 @@ -{{- if .Values.metrics.enabled -}} -apiVersion: v1 -kind: ConfigMap -metadata: - name: {{ include "common.names.fullname" . }}-metrics-exporter - namespace: {{ .Release.Namespace }} - labels: {{- include "common.labels.standard" . | nindent 4 }} - app.kubernetes.io/component: server - {{- if .Values.commonLabels }} - {{- include "common.tplvalues.render" ( dict "value" .Values.commonLabels "context" $ ) | nindent 4 }} - {{- end }} - {{- if .Values.commonAnnotations }} - annotations: {{- include "common.tplvalues.render" ( dict "value" .Values.commonAnnotations "context" $ ) | nindent 4 }} - {{- end }} -data: - exporter.conf: |- - # Prometheus metrics - server { - server_name kong_prometheus_exporter; - listen 0.0.0.0:{{ .Values.metrics.service.port }}; - access_log off; - location /metrics { - default_type text/plain; - content_by_lua_block { - local prometheus = require "kong.plugins.prometheus.exporter" - prometheus:collect() - } - } - } -{{- end }} diff --git a/packages/helm-charts/kong/templates/metrics-script-configmap.yaml b/packages/helm-charts/kong/templates/metrics-script-configmap.yaml deleted file mode 100644 index e38816c9928..00000000000 --- a/packages/helm-charts/kong/templates/metrics-script-configmap.yaml +++ /dev/null @@ -1,36 +0,0 @@ -{{- if .Values.metrics.enabled -}} -apiVersion: v1 -kind: ConfigMap -metadata: - name: {{ include "common.names.fullname" . }}-metrics-scripts - namespace: {{ .Release.Namespace }} - labels: {{- include "common.labels.standard" . | nindent 4 }} - app.kubernetes.io/component: server - {{- if .Values.commonLabels }} - {{- include "common.tplvalues.render" ( dict "value" .Values.commonLabels "context" $ ) | nindent 4 }} - {{- end }} - {{- if .Values.commonAnnotations }} - annotations: {{- include "common.tplvalues.render" ( dict "value" .Values.commonAnnotations "context" $ ) | nindent 4 }} - {{- end }} -data: - enable-metrics-plugin.sh: |- - #!/bin/bash - . /opt/bitnami/scripts/libos.sh - . /opt/bitnami/scripts/libkong.sh - - info "Enabling prometheus plugin" - - if curl --silent http://localhost:8001/ | grep -Eo '"prometheus":false' > /dev/null; then - if ! curl --silent http://localhost:8001/plugins -d name=prometheus; then - info "Issue enabling prometheus plugin, this could be due to a race condition with another kong node. Checking status" - fi - if curl http://localhost:8001/ | grep -Eo '"prometheus":true' > /dev/null; then - info "Prometheus metrics plugin enabled" - else - error "Error enabling Prometheus plugin" - exit 1 - fi - else - info "Prometheus plugin already enabled" - fi -{{- end }} diff --git a/packages/helm-charts/kong/templates/metrics-service.yaml b/packages/helm-charts/kong/templates/metrics-service.yaml deleted file mode 100644 index ea30093a77c..00000000000 --- a/packages/helm-charts/kong/templates/metrics-service.yaml +++ /dev/null @@ -1,36 +0,0 @@ -apiVersion: v1 -kind: Service -metadata: - name: {{ include "common.names.fullname" . }}-metrics - namespace: {{ .Release.Namespace }} - labels: {{- include "common.labels.standard" . | nindent 4 }} - app.kubernetes.io/component: server - {{- if .Values.commonLabels }} - {{- include "common.tplvalues.render" ( dict "value" .Values.commonLabels "context" $ ) | nindent 4 }} - {{- end }} - {{- if or .Values.metrics.service.annotations .Values.commonAnnotations }} - annotations: - {{- if .Values.commonAnnotations }} - {{- include "common.tplvalues.render" ( dict "value" .Values.commonAnnotations "context" $ ) | nindent 4 }} - {{- end }} - {{- if .Values.metrics.service.annotations }} - {{- include "common.tplvalues.render" (dict "value" .Values.metrics.service.annotations "context" $) | nindent 4 }} - {{- end }} - {{- end }} -spec: - type: {{ .Values.metrics.service.type }} - {{- if and (eq .Values.metrics.service.type "LoadBalancer") (not (empty .Values.metrics.service.loadBalancerIP)) }} - loadBalancerIP: {{ .Values.metrics.service.loadBalancerIP }} - {{- end }} - ports: - - port: {{ .Values.metrics.service.port }} - targetPort: http-metrics - protocol: TCP - name: http-metrics - {{- if and (or (eq .Values.metrics.service.type "NodePort") (eq .Values.metrics.service.type "LoadBalancer")) (not (empty .Values.metrics.service.nodePort)) }} - nodePort: {{ .Values.metrics.service.nodePort }} - {{- else if eq .Values.metrics.service.type "ClusterIP" }} - nodePort: null - {{- end }} - selector: {{- include "common.labels.matchLabels" . | nindent 4 }} - app.kubernetes.io/component: server diff --git a/packages/helm-charts/kong/templates/migrate-job.yaml b/packages/helm-charts/kong/templates/migrate-job.yaml deleted file mode 100644 index 3fdf2ee5e82..00000000000 --- a/packages/helm-charts/kong/templates/migrate-job.yaml +++ /dev/null @@ -1,113 +0,0 @@ -apiVersion: batch/v1 -kind: Job -metadata: - name: {{ include "common.names.fullname" . }}-migrate - namespace: {{ .Release.Namespace }} - labels: {{- include "common.labels.standard" . | nindent 4 }} - app.kubernetes.io/component: server - {{- if .Values.commonLabels }} - {{- include "common.tplvalues.render" ( dict "value" .Values.commonLabels "context" $ ) | nindent 4 }} - {{- end }} - annotations: {{- include "common.tplvalues.render" ( dict "value" .Values.migration.annotations "context" $ ) | nindent 4 }} - {{- if .Values.commonAnnotations }} - {{- include "common.tplvalues.render" ( dict "value" .Values.commonAnnotations "context" $ ) | nindent 4 }} - {{- end }} -spec: - template: - metadata: - labels: {{- include "common.labels.standard" . | nindent 8 }} - app.kubernetes.io/component: migration - annotations: - {{- if .Values.migration.podAnnotations }} - {{- include "common.tplvalues.render" (dict "value" .Values.migration.podAnnotations "context" $) | nindent 8 }} - {{- end }} - spec: - {{- include "kong.imagePullSecrets" . | nindent 6 }} - restartPolicy: OnFailure - {{- if .Values.podSecurityContext }} - securityContext: {{- include "common.tplvalues.render" (dict "value" .Values.podSecurityContext "context" $) | nindent 8 }} - {{- end }} - {{- if .Values.migration.hostAliases }} - hostAliases: {{- include "common.tplvalues.render" (dict "value" .Values.migration.hostAliases "context" $) | nindent 8 }} - {{- end }} - containers: - - name: kong-migrate - image: {{ template "kong.migration.image" . }} - imagePullPolicy: {{ .Values.image.pullPolicy }} - {{- if .Values.migration.command }} - command: {{- include "common.tplvalues.render" (dict "value" .Values.migration.command "context" $) | nindent 12 }} - {{- end }} - {{- if .Values.migration.args }} - args: {{- include "common.tplvalues.render" (dict "value" .Values.migration.args "context" $) | nindent 12 }} - {{- end }} - {{- if .Values.containerSecurityContext }} - securityContext: {{- include "common.tplvalues.render" (dict "value" .Values.containerSecurityContext "context" $) | nindent 12 }} - {{- end }} - env: - - name: KONG_MIGRATE - value: "yes" - - name: KONG_EXIT_AFTER_MIGRATE - value: "yes" - {{- if (eq .Values.database "postgresql") }} - - name: KONG_DATABASE - value: "postgres" - {{- if .Values.postgresql.usePasswordFile }} - - name: KONG_POSTGRESQL_PASSWORD_FILE - value: "/bitnami/kong/secrets/postgresql-password" - {{- else }} - - name: KONG_PG_PASSWORD - valueFrom: - secretKeyRef: - name: {{ include "kong.postgresql.secretName" . }} - key: postgresql-password - {{- end }} - - name: KONG_PG_HOST - value: {{ include "kong.postgresql.host" . }} - - name: KONG_PG_USER - value: {{ include "kong.postgresql.user" . }} - {{- end }} - {{- if (eq .Values.database "cassandra") }} - - name: KONG_DATABASE - value: "cassandra" - {{- if .Values.cassandra.usePasswordFile }} - - name: KONG_CASSANDRA_PASSWORD_FILE - value: "/bitnami/kong/secrets/cassandra-password" - {{- else }} - - name: KONG_CASSANDRA_PASSWORD - valueFrom: - secretKeyRef: - name: {{ include "kong.cassandra.secretName" . }} - key: cassandra-password - {{- end }} - - name: KONG_CASSANDRA_CONTACT_POINTS - value: {{ include "kong.cassandra.contactPoints" . }} - - name: KONG_CASSANDRA_PORT - value: {{ include "kong.cassandra.port" . | quote }} - - name: KONG_CASSANDRA_USER - value: {{ include "kong.cassandra.user" . | quote }} - {{- end }} - {{- if .Values.migration.extraEnvVars }} - {{- include "common.tplvalues.render" (dict "value" .Values.migration.extraEnvVars "context" $) | nindent 12 }} - {{- end }} - {{- if or .Values.migration.extraEnvVarsCM .Values.migration.extraEnvVarsSecret }} - envFrom: - {{- if .Values.migration.extraEnvVarsCM }} - - configMapRef: - name: {{ .Values.migration.extraEnvVarsCM }} - {{- end }} - {{- if .Values.migration.extraEnvVarsSecret }} - - secretRef: - name: {{ .Values.migration.extraEnvVarsSecret }} - {{- end }} - {{- end }} - {{- if .Values.migration.extraVolumeMounts }} - volumeMounts: - {{- include "common.tplvalues.render" (dict "value" .Values.migration.extraVolumeMounts "context" $) | nindent 12 }} - {{- end }} - {{- if .Values.migration.resources }} - resources: {{- toYaml .Values.migration.resources | nindent 12 }} - {{- end }} - {{- if .Values.extraVolumes }} - volumes: - {{- include "common.tplvalues.render" (dict "value" .Values.extraVolumes "context" $) | nindent 6 }} - {{- end }} diff --git a/packages/helm-charts/kong/templates/pdb.yaml b/packages/helm-charts/kong/templates/pdb.yaml deleted file mode 100644 index 61a43a0bcc4..00000000000 --- a/packages/helm-charts/kong/templates/pdb.yaml +++ /dev/null @@ -1,25 +0,0 @@ -{{- if .Values.pdb.enabled }} -apiVersion: policy/v1beta1 -kind: PodDisruptionBudget -metadata: - name: {{ include "common.names.fullname" . }} - namespace: {{ .Release.Namespace }} - labels: {{- include "common.labels.standard" . | nindent 4 }} - app.kubernetes.io/component: server - {{- if .Values.commonLabels }} - {{- include "common.tplvalues.render" ( dict "value" .Values.commonLabels "context" $ ) | nindent 4 }} - {{- end }} - {{- if .Values.commonAnnotations }} - annotations: {{- include "common.tplvalues.render" ( dict "value" .Values.commonAnnotations "context" $ ) | nindent 4 }} - {{- end }} -spec: - {{- if .Values.pdb.minAvailable }} - minAvailable: {{ .Values.pdb.minAvailable }} - {{- end }} - {{- if .Values.pdb.maxUnavailable }} - maxUnavailable: {{ .Values.pdb.maxUnavailable }} - {{- end }} - selector: - matchLabels: - {{- include "common.labels.matchLabels" . | nindent 6 }} -{{- end }} diff --git a/packages/helm-charts/kong/templates/service.yaml b/packages/helm-charts/kong/templates/service.yaml deleted file mode 100644 index a5af0c99ec8..00000000000 --- a/packages/helm-charts/kong/templates/service.yaml +++ /dev/null @@ -1,74 +0,0 @@ -apiVersion: v1 -kind: Service -metadata: - name: {{ include "common.names.fullname" . }} - namespace: {{ .Release.Namespace }} - labels: {{- include "common.labels.standard" . | nindent 4 }} - app.kubernetes.io/component: server - {{- if .Values.commonLabels }} - {{- include "common.tplvalues.render" ( dict "value" .Values.commonLabels "context" $ ) | nindent 4 }} - {{- end }} - {{- if or .Values.service.annotations .Values.commonAnnotations }} - annotations: - {{- if .Values.service.annotations }} - {{- include "common.tplvalues.render" ( dict "value" .Values.service.annotations "context" $ ) | nindent 4 }} - {{- end }} - {{- if .Values.commonAnnotations }} - {{- include "common.tplvalues.render" ( dict "value" .Values.commonAnnotations "context" $ ) | nindent 4 }} - {{- end }} - {{- end }} -spec: - type: {{ .Values.service.type }} - {{- if and (or (eq .Values.service.type "NodePort") (eq .Values.service.type "LoadBalancer")) (not (empty .Values.service.externalTrafficPolicy)) }} - externalTrafficPolicy: {{ .Values.service.externalTrafficPolicy }} - {{- end }} - {{- if not (empty .Values.service.clusterIP) }} - clusterIP: {{ .Values.service.clusterIP }} - {{- end }} - {{- if and (eq .Values.service.type "LoadBalancer") (not (empty .Values.service.loadBalancerIP)) }} - loadBalancerIP: {{ .Values.service.loadBalancerIP }} - {{- end }} - ports: - - port: {{ .Values.service.proxyHttpPort }} - targetPort: http-proxy - protocol: TCP - name: http-proxy - {{- if and (or (eq .Values.service.type "NodePort") (eq .Values.service.type "LoadBalancer")) (not (empty .Values.service.proxyHttpNodePort)) }} - nodePort: {{ .Values.service.proxyHttpNodePort }} - {{- else if eq .Values.service.type "ClusterIP" }} - nodePort: null - {{- end }} - - port: {{ .Values.service.proxyHttpsPort }} - targetPort: https-proxy - protocol: TCP - name: https-proxy - {{- if and (or (eq .Values.service.type "NodePort") (eq .Values.service.type "LoadBalancer")) (not (empty .Values.service.proxyHttpsNodePort)) }} - nodePort: {{ .Values.service.proxyHttpsNodePort }} - {{- else if eq .Values.service.type "ClusterIP" }} - nodePort: null - {{- end }} - {{- if .Values.service.exposeAdmin }} - - port: {{ .Values.service.adminHttpPort }} - targetPort: http-admin - protocol: TCP - name: http-admin - {{- if and (or (eq .Values.service.type "NodePort") (eq .Values.service.type "LoadBalancer")) (not (empty .Values.service.adminHttpNodePort)) }} - nodePort: {{ .Values.service.adminHttpNodePort }} - {{- else if eq .Values.service.type "ClusterIP" }} - nodePort: null - {{- end }} - - port: {{ .Values.service.adminHttpsPort }} - targetPort: https-admin - protocol: TCP - name: https-admin - {{- if and (or (eq .Values.service.type "NodePort") (eq .Values.service.type "LoadBalancer")) (not (empty .Values.service.adminHttpsNodePort)) }} - nodePort: {{ .Values.service.adminHttpsNodePort }} - {{- else if eq .Values.service.type "ClusterIP" }} - nodePort: null - {{- end }} - {{- end }} - {{- if .Values.service.extraPorts }} - {{- include "common.tplvalues.render" (dict "value" .Values.service.extraPorts "context" $) | nindent 4 }} - {{- end }} - selector: {{- include "common.labels.matchLabels" . | nindent 4 }} - app.kubernetes.io/component: server diff --git a/packages/helm-charts/kong/templates/servicemonitor.yaml b/packages/helm-charts/kong/templates/servicemonitor.yaml deleted file mode 100644 index 66baec8ae81..00000000000 --- a/packages/helm-charts/kong/templates/servicemonitor.yaml +++ /dev/null @@ -1,37 +0,0 @@ -{{- if and .Values.metrics.enabled .Values.metrics.serviceMonitor.enabled }} -apiVersion: monitoring.coreos.com/v1 -kind: ServiceMonitor -metadata: - name: {{ include "common.names.fullname" . }} - {{- if .Values.metrics.serviceMonitor.namespace }} - namespace: {{ .Values.metrics.serviceMonitor.namespace }} - {{- else }} - namespace: {{ .Release.Namespace }} - {{- end }} - labels: {{- include "common.labels.standard" . | nindent 4 }} - app.kubernetes.io/component: server - {{- if .Values.metrics.serviceMonitor.selector }} - {{- include "common.tplvalues.render" (dict "value" .Values.metrics.serviceMonitor.selector "context" $) | nindent 4 }} - {{- end }} - {{- if .Values.commonLabels }} - {{- include "common.tplvalues.render" ( dict "value" .Values.commonLabels "context" $ ) | nindent 4 }} - {{- end }} - {{- if .Values.commonAnnotations }} - annotations: {{- include "common.tplvalues.render" ( dict "value" .Values.commonAnnotations "context" $ ) | nindent 4 }} - {{- end }} -spec: - selector: - matchLabels: {{ include "common.labels.matchLabels" . | nindent 6 }} - endpoints: - - port: metrics - path: "/metrics" - {{- if .Values.metrics.serviceMonitor.interval }} - interval: {{ .Values.metrics.serviceMonitor.interval }} - {{- end }} - {{- if .Values.metrics.serviceMonitor.scrapeTimeout }} - scrapeTimeout: {{ .Values.metrics.serviceMonitor.scrapeTimeout }} - {{- end }} - namespaceSelector: - matchNames: - - {{ .Release.Namespace }} -{{- end }} diff --git a/packages/helm-charts/kong/templates/tls-secrets.yaml b/packages/helm-charts/kong/templates/tls-secrets.yaml deleted file mode 100644 index 3c187eae12d..00000000000 --- a/packages/helm-charts/kong/templates/tls-secrets.yaml +++ /dev/null @@ -1,43 +0,0 @@ -{{- if .Values.ingress.enabled }} -{{- if .Values.ingress.secrets }} -{{- range .Values.ingress.secrets }} -apiVersion: v1 -kind: Secret -metadata: - name: {{ .name }} - namespace: {{ $.Release.Namespace }} - labels: {{- include "common.labels.standard" $ | nindent 4 }} - {{- if $.Values.commonLabels }} - {{- include "common.tplvalues.render" ( dict "value" $.Values.commonLabels "context" $ ) | nindent 4 }} - {{- end }} - {{- if $.Values.commonAnnotations }} - annotations: {{- include "common.tplvalues.render" ( dict "value" $.Values.commonAnnotations "context" $ ) | nindent 4 }} - {{- end }} -type: kubernetes.io/tls -data: - tls.crt: {{ .certificate | b64enc }} - tls.key: {{ .key | b64enc }} ---- -{{- end }} -{{- else if and .Values.ingress.tls (not .Values.ingress.certManager) }} -{{- $ca := genCA "kong-ca" 365 }} -{{- $cert := genSignedCert .Values.ingress.hostname nil (list .Values.ingress.hostname) 365 $ca }} -apiVersion: v1 -kind: Secret -metadata: - name: {{ printf "%s-tls" .Values.ingress.hostname }} - namespace: {{ .Release.Namespace }} - labels: {{- include "common.labels.standard" . | nindent 4 }} - {{- if .Values.commonLabels }} - {{- include "common.tplvalues.render" ( dict "value" .Values.commonLabels "context" $ ) | nindent 4 }} - {{- end }} - {{- if .Values.commonAnnotations }} - annotations: {{- include "common.tplvalues.render" ( dict "value" .Values.commonAnnotations "context" $ ) | nindent 4 }} - {{- end }} -type: kubernetes.io/tls -data: - tls.crt: {{ $cert.Cert | b64enc | quote }} - tls.key: {{ $cert.Key | b64enc | quote }} - ca.crt: {{ $ca.Cert | b64enc | quote }} -{{- end }} -{{- end }} diff --git a/packages/helm-charts/kong/values-clabs.yaml b/packages/helm-charts/kong/values-clabs.yaml deleted file mode 100644 index 4f2cb190fc8..00000000000 --- a/packages/helm-charts/kong/values-clabs.yaml +++ /dev/null @@ -1,39 +0,0 @@ -ingress: - enabled: true - hostname: kong.local - -ingressController: - ingressClass: kong - -postgresql: - postgresqlPassword: kong - -service: - exposeAdmin: true - annotations: - cloud.google.com/neg: '{"exposed_ports": {"80":{}}}' - -extraVolumes: -- name: kong-config - configMap: - name: kong-config - -kong: - extraVolumeMounts: - - name: kong-config - mountPath: /opt/bitnami/kong/conf/kong.conf.backup - subPath: kong.conf - - extraEnvVars: - - name: KONG_TRUSTED_IPS - value: 130.211.0.0/22,35.191.0.0/16,34.120.148.61/32 - - name: KONG_REAL_IP_HEADER - value: X-Forwarded-For - - name: KONG_REAL_IP_RECURSIVE - value: "on" - - name: KONG_PROXY_ACCESS_LOG - value: /dev/stdout geth - - name: KONG_ADMIN_ACCESS_LOG - value: /dev/stdout geth - - name: KONG_NGINX_HTTP_LOG_FORMAT - value: geth '$remote_addr - $remote_user [$time_local] "$request" $status $body_bytes_sent "$http_referer" "$http_user_agent" "$http_x_forwarded_for" "$remote_addr"' diff --git a/packages/helm-charts/kong/values.yaml b/packages/helm-charts/kong/values.yaml deleted file mode 100644 index 215c0f8c00f..00000000000 --- a/packages/helm-charts/kong/values.yaml +++ /dev/null @@ -1,694 +0,0 @@ -## Global Docker image parameters -## Please, note that this will override the image parameters, including dependencies, configured to use the global value -## Current available global Docker image parameters: imageRegistry, imagePullSecrets and storageClass -## -# global: -# imageRegistry: myRegistryName -# imagePullSecrets: -# - myRegistryKeySecretName -# storageClass: myStorageClass - -## Bitnami kong image version -## ref: https://hub.docker.com/r/bitnami/kong/tags/ -## -image: - registry: docker.io - repository: bitnami/kong - tag: 2.4.1-debian-10-r9 - ## Specify a imagePullPolicy - ## Defaults to 'Always' if image tag is 'latest', else set to 'IfNotPresent' - ## ref: http://kubernetes.io/docs/user-guide/images/#pre-pulling-images - ## - pullPolicy: IfNotPresent - ## Optionally specify an array of imagePullSecrets. - ## Secrets must be manually created in the namespace. - ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/pull-image-private-registry/ - ## - # pullSecrets: - # - myRegistryKeySecretName - -## Force target Kubernetes version (using Helm capabilites if not set) -## -kubeVersion: - -## Select database: can be either postgresql or cassandra -## -database: postgresql - -## String to partially override kong.fullname template (will maintain the release name) -## -nameOverride: - -## String to fully override kong.fullname template -## -fullnameOverride: - -## Number of kong Pod replicas -## -replicaCount: 2 - -## Deployment pod host aliases -## https://kubernetes.io/docs/concepts/services-networking/add-entries-to-pod-etc-hosts-with-host-aliases/ -## -hostAliases: [] - -## Set up update strategy for kong installation. Set to Recreate if you use persistent volume that cannot be mounted by more than one pods to makesure the pods is destroyed first. -## ref: https://kubernetes.io/docs/concepts/workloads/controllers/deployment/#strategy -## Example: -# updateStrategy: -# type: RollingUpdate -# rollingUpdate: -# maxSurge: 25% -# maxUnavailable: 25% -updateStrategy: - type: RollingUpdate - -## Use an alternate scheduler, e.g. "stork". -## ref: https://kubernetes.io/docs/tasks/administer-cluster/configure-multiple-schedulers/ -## -schedulerName: - -## Common annotations to add to all Kong resources (sub-charts are not considered). Evaluated as a template -## -commonAnnotations: {} - -## Common labels to add to all Kong resources (sub-charts are not considered). Evaluated as a template -## -commonLabels: {} - -## Use a daemonset instead of a deployment -## -useDaemonset: false - -kong: - ## Command and args for running the container (set to default if not set). Use array form - ## - command: - args: - ## Configmap with init scripts to execute - ## - initScriptsCM: - - ## Secret with init scripts to execute (for sensitive data) - ## - initScriptsSecret: - - ## An array to add extra env vars - ## For example: - ## extraEnvVars: - ## - name: GF_DEFAULT_INSTANCE_NAME - ## value: my-instance - ## - extraEnvVars: [] - - ## ConfigMap with extra env vars: - ## - extraEnvVarsCM: - - ## Secret with extra env vars: - ## - extraEnvVarsSecret: - ## Array to add extra mounts (normally used with extraVolumes) - ## - extraVolumeMounts: [] - - ## Custom Liveness probe - ## - customLivenessProbe: {} - - ## Custom Rediness probe - ## - customReadinessProbe: {} - - ## - ## Liveness and readiness probes - ## ref: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle/#container-probes - ## - livenessProbe: - enabled: true - initialDelaySeconds: 120 - periodSeconds: 10 - timeoutSeconds: 5 - failureThreshold: 6 - successThreshold: 1 - - readinessProbe: - enabled: true - initialDelaySeconds: 30 - periodSeconds: 10 - timeoutSeconds: 5 - failureThreshold: 6 - successThreshold: 1 - ## - ## Container lifecycle hooks - ## ref: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/ - ## - lifecycleHooks: {} - - ## Container resource requests and limits - ## ref: http://kubernetes.io/docs/user-guide/compute-resources/ - ## - resources: - # We usually recommend not to specify default resources and to leave this as a conscious - # choice for the user. This also increases chances charts run on environments with little - # resources, such as Minikube. If you do want to specify resources, uncomment the following - # lines, adjust them as necessary, and remove the curly braces after 'resources:'. - limits: {} - # cpu: 500m - # memory: 1Gi - requests: {} - # cpu: 250m - # memory: 256Mi - -ingressController: - enabled: true - customResourceDeletePolicy: {} - image: - registry: docker.io - repository: bitnami/kong-ingress-controller - tag: 1.2.0-debian-10-r53 - ## Specify a imagePullPolicy - ## Defaults to 'Always' if image tag is 'latest', else set to 'IfNotPresent' - ## ref: http://kubernetes.io/docs/user-guide/images/#pre-pulling-images - ## - pullPolicy: IfNotPresent - ## Optionally specify an array of imagePullSecrets. - ## Secrets must be manually created in the namespace. - ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/pull-image-private-registry/ - ## - # pullSecrets: - # - myRegistryKeySecretName - proxyReadyTimeout: 300 - rbac: - create: true - existingServiceAccount: - ingressClass: kong - ## Command and args for running the container (set to default if not set). Use array form - ## - command: - args: - ## An array to add extra env vars - ## For example: - ## extraEnvVars: - ## - name: GF_DEFAULT_INSTANCE_NAME - ## value: my-instance - ## - extraEnvVars: [] - - ## ConfigMap with extra env vars: - ## - extraEnvVarsCM: - - ## Secret with extra env vars: - ## - extraEnvVarsSecret: - ## Array to add extra mounts (normally used with extraVolumes) - ## - extraVolumeMounts: [] - - ## Custom Liveness probe - ## - customLivenessProbe: {} - - ## Custom Rediness probe - ## - customReadinessProbe: {} - - ## - ## Liveness and readiness probes - ## ref: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle/#container-probes - ## - livenessProbe: - enabled: true - initialDelaySeconds: 120 - periodSeconds: 10 - timeoutSeconds: 5 - failureThreshold: 6 - successThreshold: 1 - readinessProbe: - enabled: true - initialDelaySeconds: 30 - periodSeconds: 10 - timeoutSeconds: 5 - failureThreshold: 6 - successThreshold: 1 - ## Container resource requests and limits - ## ref: http://kubernetes.io/docs/user-guide/compute-resources/ - ## - resources: - # We usually recommend not to specify default resources and to leave this as a conscious - # choice for the user. This also increases chances charts run on environments with little - # resources, such as Minikube. If you do want to specify resources, uncomment the following - # lines, adjust them as necessary, and remove the curly braces after 'resources:'. - limits: {} - # cpu: 500m - # memory: 1Gi - requests: {} - # cpu: 250m - # memory: 256Mi - -migration: - ## In case you want to use a custom image for Kong migration, set this value - ## - # image: - # registry: - # repository: - # tag: - ## Command and args for running the container (set to default if not set). Use array form - ## - command: - args: - - ## Deployment pod host aliases - ## https://kubernetes.io/docs/concepts/services-networking/add-entries-to-pod-etc-hosts-with-host-aliases/ - ## - hostAliases: [] - - ## Job annotation. By defeault set to post-install and post-upgrade - ## - annotations: - helm.sh/hook: post-install, post-upgrade - helm.sh/hook-delete-policy: before-hook-creation,hook-succeeded - - ## An array to add extra env vars - ## For example: - ## extraEnvVars: - ## - name: GF_DEFAULT_INSTANCE_NAME - ## value: my-instance - ## - extraEnvVars: [] - - ## ConfigMap with extra env vars: - ## - extraEnvVarsCM: - - ## Secret with extra env vars: - ## - extraEnvVarsSecret: - ## Array to add extra mounts (normally used with extraVolumes) - ## - extraVolumeMounts: - ## Liveness and readiness probes - ## ref: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle/#container-probes - ## - ## Container resource requests and limits - ## ref: http://kubernetes.io/docs/user-guide/compute-resources/ - ## - resources: - # We usually recommend not to specify default resources and to leave this as a conscious - # choice for the user. This also increases chances charts run on environments with little - # resources, such as Minikube. If you do want to specify resources, uncomment the following - # lines, adjust them as necessary, and remove the curly braces after 'resources:'. - limits: {} - # cpu: 500m - # memory: 1Gi - requests: {} - # cpu: 250m - # memory: 256Mi - -## Array to add extra volumes -## -extraVolumes: [] - -## Add init containers to the pod -## -initContainers: -## e.g. -# - name: your-image-name -# image: your-image -# imagePullPolicy: Always -# ports: -# - name: portname -# containerPort: 1234 - -## Add sidecar containers to the pod -## -sidecars: -## e.g. -# - name: your-image-name -# image: your-image -# imagePullPolicy: Always -# ports: -# - name: portname -# containerPort: 1234 - -## Service parameters -## -service: - ## K8s service type - ## - type: ClusterIP - - ## clusterIP for the service (optional) - ## This is the internal IP address of the service and is usually assigned randomly. - ## ref: https://kubernetes.io/docs/reference/kubernetes-api/service-resources/service-v1/#ServiceSpec - ## - clusterIP: - - ## externalTrafficPolicy for the service - ## default to "Cluster" - ## set to "Local" in order to preserve the client source IP (only on service of type LoadBalancer or NodePort) - ## ref: https://kubernetes.io/docs/tasks/access-application-cluster/create-external-load-balancer/ - ## - externalTrafficPolicy: - - ## kong proxy HTTP service port - ## - proxyHttpPort: 80 - ## kong proxy HTTPS service port - ## - proxyHttpsPort: 443 - - ## Include the admin ports in the service - ## - exposeAdmin: false - ## kong proxy HTTP service port - ## - adminHttpPort: 8001 - ## kong proxy HTTPS service port - ## - adminHttpsPort: 8444 - - ## Specify the nodePort value for the LoadBalancer and NodePort service types. - ## ref: https://kubernetes.io/docs/concepts/services-networking/service/#type-nodeport - ## - # proxyHttpNodePort: - # proxyHttpsNodePort: - # adminHttpNodePort: - # adminHttpsNodePort: - - ## loadBalancerIP for the Kong Service (optional, cloud specific) - ## ref: http://kubernetes.io/docs/user-guide/services/#type-loadbalancer - ## - loadBalancerIP: - - ## Provide any additional annotations which may be required. This can be used to - ## set the LoadBalancer service type to internal only. - ## ref: https://kubernetes.io/docs/concepts/services-networking/service/#internal-load-balancer - ## - annotations: {} - ## Extra ports to expose (normally used with the `sidecar` value) - # extraPorts: - -## Kong cluster domain -## -clusterDomain: cluster.local - -## Configure the ingress resource that allows you to access the -## Kong installation. Set up the URL -## ref: http://kubernetes.io/docs/user-guide/ingress/ -## -ingress: - ## Set to true to enable ingress record generation - ## - enabled: false - - ## Set this to true in order to add the corresponding annotations for cert-manager - ## - certManager: false - - ## Ingress Path type - ## - pathType: ImplementationSpecific - - ## Override API Version (automatically detected if not set) - ## - apiVersion: - - ## When the ingress is enabled, a host pointing to this will be created - ## - hostname: kong.local - - ## The Path to Kong. You may need to set this to '/*' in order to use this - ## with ALB ingress controllers. - ## - path: / - - ## Ingress annotations done as key:value pairs - ## For a full list of possible ingress annotations, please see - ## ref: https://github.com/kubernetes/ingress-nginx/blob/master/docs/user-guide/nginx-configuration/annotations.md - ## - ## If certManager is set to true, annotation kubernetes.io/tls-acme: "true" will automatically be set - ## - annotations: {} - - ## Enable TLS configuration for the hostname defined at ingress.hostname parameter - ## TLS certificates will be retrieved from a TLS secret with name: {{- printf "%s-tls" .Values.ingress.hostname }} - ## You can use the ingress.secrets parameter to create this TLS secret or relay on cert-manager to create it - ## - tls: false - - ## The list of additional hostnames to be covered with this ingress record. - ## Most likely the hostname above will be enough, but in the event more hosts are needed, this is an array - ## extraHosts: - ## - name: kong.local - ## path: / - ## - - ## Any additional arbitrary paths that may need to be added to the ingress under the main host. - ## For example: The ALB ingress controller requires a special rule for handling SSL redirection. - ## extraPaths: - ## - path: /* - ## backend: - ## serviceName: ssl-redirect - ## servicePort: use-annotation - ## - - ## The tls configuration for additional hostnames to be covered with this ingress record. - ## see: https://kubernetes.io/docs/concepts/services-networking/ingress/#tls - ## extraTls: - ## - hosts: - ## - kong.local - ## secretName: kong.local-tls - ## - - ## If you're providing your own certificates, please use this to add the certificates as secrets - ## key and certificate should start with -----BEGIN CERTIFICATE----- or - ## -----BEGIN RSA PRIVATE KEY----- - ## - ## name should line up with a tlsSecret set further up - ## If you're using cert-manager, this is unneeded, as it will create the secret for you if it is not set - ## - ## It is also possible to create and manage the certificates outside of this helm chart - ## Please see README.md for more information - ## - secrets: [] - ## - name: kong.local-tls - ## key: - ## certificate: - ## - -## SecurityContext configuration -## ref: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/ -## -containerSecurityContext: - runAsUser: 1001 - runAsNonRoot: true - -podSecurityContext: {} - -## Node labels for pod assignment -## Ref: https://kubernetes.io/docs/user-guide/node-selection/ -## -nodeSelector: {} - -## Tolerations for pod assignment -## Ref: https://kubernetes.io/docs/concepts/configuration/taint-and-toleration/ -## -tolerations: [] - -## Pod affinity preset -## ref: https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#inter-pod-affinity-and-anti-affinity -## Allowed values: soft, hard -## -podAffinityPreset: "" - -## Pod anti-affinity preset -## Ref: https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#inter-pod-affinity-and-anti-affinity -## Allowed values: soft, hard -## -podAntiAffinityPreset: soft - -## Node affinity preset -## Ref: https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#node-affinity -## Allowed values: soft, hard -## -nodeAffinityPreset: - ## Node affinity type - ## Allowed values: soft, hard - ## - type: "" - ## Node label key to match - ## E.g. - ## key: "kubernetes.io/e2e-az-name" - ## - key: "" - ## Node label values to match - ## E.g. - ## values: - ## - e2e-az1 - ## - e2e-az2 - ## - values: [] - -## Affinity for pod assignment -## Ref: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/#affinity-and-anti-affinity -## Note: podAffinityPreset, podAntiAffinityPreset, and nodeAffinityPreset will be ignored when it's set -## -affinity: {} - -## Pod annotations -## ref: https://kubernetes.io/docs/concepts/overview/working-with-objects/annotations/ -## -podAnnotations: {} - -## Pod labels -## Ref: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/ -## -podLabels: {} - -## Prometheus metrics -## -metrics: - enabled: false - - ## Kong metrics service configuration - ## - service: - annotations: - prometheus.io/scrape: "true" - prometheus.io/port: "{{ .Values.metrics.service.port }}" - prometheus.io/path: "/metrics" - type: ClusterIP - port: 9119 - - ## Kong ServiceMonitor configuration - ## - serviceMonitor: - enabled: false - ## Namespace in which Prometheus is running - ## - # namespace: monitoring - - ## Service Account used by Prometheus - ## - # serviceAccount: prometheus - - ## Interval at which metrics should be scraped. - ## ref: https://github.com/coreos/prometheus-operator/blob/master/Documentation/api.md#endpoint - ## - # interval: 10s - - ## Timeout after which the scrape is ended - ## ref: https://github.com/coreos/prometheus-operator/blob/master/Documentation/api.md#endpoint - ## - # scrapeTimeout: 10s - - ## ServiceMonitor selector labels - ## ref: https://github.com/bitnami/charts/tree/master/bitnami/prometheus-operator#prometheus-configuration - ## - # selector: - # prometheus: my-prometheus - - ## If RBAC enabled on the cluster, Additional resources will be required - ## so Prometheus can reach kong's namespace - ## - rbac: - enabled: true - -## Add an horizontal pod autoscaler -## ref: https://kubernetes.io/docs/tasks/run-application/horizontal-pod-autoscale/ -## -autoscaling: - enabled: false - apiVersion: autoscaling/v2beta1 - minReplicas: 2 - maxReplicas: 5 - metrics: - - type: Resource - resource: - name: cpu - targetAverageUtilization: 80 - -## Kong Pod Disruption Budget -## ref: https://kubernetes.io/docs/concepts/workloads/pods/disruptions/ -## -pdb: - enabled: false - maxUnavailable: "50%" - -## Extra objects to deploy (value evaluated as a template) -## -extraDeploy: [] - -## PostgreSQL properties -## -postgresql: - ## Deploy the postgresql sub-chart - ## - enabled: true - ## Mounts secrets as a file - ## - usePasswordFile: false - ## Properties for using an existing PostgreSQL installation - ## - external: - ## Host of the external PostgreSQL installation - ## - host: - ## Username of the external PostgreSQL installation - ## - user: - ## Password of the external PostgreSQL installation - ## - password: - - ## Use an existing secret with the PostgreSQL password - ## - existingSecret: - - ## Name of the Database for Kong to access - ## - postgresqlDatabase: kong - - ## Create a username in the bundled PostgreSQL installation - ## - postgresqlUsername: kong - -## Cassandra properties -## -cassandra: - ## Deploy the cassandra sub-chart - ## - enabled: false - ## Database user to create - ## - dbUser: - user: kong - ## Mount secrets as files - ## - usePasswordFile: false - ## Properties for using an existing Cassandra installation - ## - external: - ## Array with the contact points - ## - hosts: [] - # - host1 - # - host2 - - ## Port for accessing the external cassandra installation - ## - port: 9042 - - ## Username of the external Cassandra installation - ## - user: - - ## Password of the external Cassandra installation - ## - password: - - ## Use an existing secret with the Cassandra password - ## - existingSecret: diff --git a/packages/helm-charts/konga/.helmignore b/packages/helm-charts/konga/.helmignore deleted file mode 100644 index 50af0317254..00000000000 --- a/packages/helm-charts/konga/.helmignore +++ /dev/null @@ -1,22 +0,0 @@ -# Patterns to ignore when building packages. -# This supports shell glob matching, relative path matching, and -# negation (prefixed with !). Only one pattern per line. -.DS_Store -# Common VCS dirs -.git/ -.gitignore -.bzr/ -.bzrignore -.hg/ -.hgignore -.svn/ -# Common backup files -*.swp -*.bak -*.tmp -*~ -# Various IDEs -.project -.idea/ -*.tmproj -.vscode/ diff --git a/packages/helm-charts/konga/Chart.yaml b/packages/helm-charts/konga/Chart.yaml deleted file mode 100644 index e9e2fe0ba48..00000000000 --- a/packages/helm-charts/konga/Chart.yaml +++ /dev/null @@ -1,5 +0,0 @@ -apiVersion: v1 -appVersion: "1.0" -description: A Helm chart for Kubernetes -name: konga -version: 1.0.0 diff --git a/packages/helm-charts/konga/README.md b/packages/helm-charts/konga/README.md deleted file mode 100644 index e69de29bb2d..00000000000 diff --git a/packages/helm-charts/konga/httpie-jq.Dockerfile b/packages/helm-charts/konga/httpie-jq.Dockerfile deleted file mode 100644 index 7274d839734..00000000000 --- a/packages/helm-charts/konga/httpie-jq.Dockerfile +++ /dev/null @@ -1,3 +0,0 @@ -FROM alpine/httpie:latest - -RUN apk add --no-cache jq diff --git a/packages/helm-charts/konga/templates/NOTES.txt b/packages/helm-charts/konga/templates/NOTES.txt deleted file mode 100644 index 16772ddd69a..00000000000 --- a/packages/helm-charts/konga/templates/NOTES.txt +++ /dev/null @@ -1,21 +0,0 @@ -1. Get the application URL by running these commands: -{{- if .Values.ingress.enabled }} -{{- range $host := .Values.ingress.hosts }} - {{- range .paths }} - http{{ if $.Values.ingress.tls }}s{{ end }}://{{ $host.host }}{{ . }} - {{- end }} -{{- end }} -{{- else if contains "NodePort" .Values.service.type }} - export NODE_PORT=$(kubectl get --namespace {{ .Release.Namespace }} -o jsonpath="{.spec.ports[0].nodePort}" services {{ include "konga.fullname" . }}) - export NODE_IP=$(kubectl get nodes --namespace {{ .Release.Namespace }} -o jsonpath="{.items[0].status.addresses[0].address}") - echo http://$NODE_IP:$NODE_PORT -{{- else if contains "LoadBalancer" .Values.service.type }} - NOTE: It may take a few minutes for the LoadBalancer IP to be available. - You can watch the status of by running 'kubectl get --namespace {{ .Release.Namespace }} svc -w {{ include "konga.fullname" . }}' - export SERVICE_IP=$(kubectl get svc --namespace {{ .Release.Namespace }} {{ include "konga.fullname" . }} -o jsonpath='{.status.loadBalancer.ingress[0].ip}') - echo http://$SERVICE_IP:{{ .Values.service.port }} -{{- else if contains "ClusterIP" .Values.service.type }} - export POD_NAME=$(kubectl get pods --namespace {{ .Release.Namespace }} -l "app.kubernetes.io/name={{ include "konga.name" . }},app.kubernetes.io/instance={{ .Release.Name }}" -o jsonpath="{.items[0].metadata.name}") - echo "Visit http://127.0.0.1:8080 to use your application" - kubectl port-forward $POD_NAME 8080:80 -{{- end }} diff --git a/packages/helm-charts/konga/templates/_helpers.tpl b/packages/helm-charts/konga/templates/_helpers.tpl deleted file mode 100644 index 19a1d008fd7..00000000000 --- a/packages/helm-charts/konga/templates/_helpers.tpl +++ /dev/null @@ -1,43 +0,0 @@ -{{/* vim: set filetype=mustache: */}} -{{/* -Expand the name of the chart. -*/}} -{{- define "konga.name" -}} -{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" -}} -{{- end -}} - -{{/* -Create a default fully qualified app name. -We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec). -If release name contains chart name it will be used as a full name. -*/}} -{{- define "konga.fullname" -}} -{{- if .Values.fullnameOverride -}} -{{- .Values.fullnameOverride | trunc 63 | trimSuffix "-" -}} -{{- else -}} -{{- $name := default .Chart.Name .Values.nameOverride -}} -{{- if contains $name .Release.Name -}} -{{- .Release.Name | trunc 63 | trimSuffix "-" -}} -{{- else -}} -{{- printf "%s-%s" .Release.Name $name | trunc 63 | trimSuffix "-" -}} -{{- end -}} -{{- end -}} -{{- end -}} - -{{/* -Create chart name and version as used by the chart label. -*/}} -{{- define "konga.chart" -}} -{{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" -}} -{{- end -}} - - -{{/* -Valdiate an env value -{{ include "konga.validate_config_var" ( dict "name" "" "value" .Values.path.to.value.to.check) }} -*/}} -{{- define "konga.validate_config_var" -}} -{{- if .value -}} -{{ .name }}: {{ .value }} -{{- end -}} -{{- end -}} diff --git a/packages/helm-charts/konga/templates/configmap-snapshot.yaml b/packages/helm-charts/konga/templates/configmap-snapshot.yaml deleted file mode 100644 index 5e2c2956897..00000000000 --- a/packages/helm-charts/konga/templates/configmap-snapshot.yaml +++ /dev/null @@ -1,449 +0,0 @@ -apiVersion: v1 -kind: ConfigMap -metadata: - name: {{ include "konga.fullname" . }}-snapshot - labels: - app.kubernetes.io/name: {{ include "konga.name" . }} - helm.sh/chart: {{ include "konga.chart" . }} - app.kubernetes.io/instance: {{ .Release.Name }} - app.kubernetes.io/managed-by: {{ .Release.Service }} -data: - kong_node.data: | - module.exports = [ - { - "name": "Kong", - "type": "default", - "kong_admin_url": "http://{{ .Values.kong.service }}:{{ .Values.kong.admin_port }}", - "health_checks": false, - "active" : true, - } - ] - snapshot.json: | - { - "createdUser": null, - "updatedUser": null, - "id": 5, - "name": "snapshot_May2022", - "kong_node_name": "Kong", - "kong_node_url": "http://kong:8001", - "kong_version": "0-10-x", - "data": { - "services": [ - { - "retries": 5, - "id": "90a37cb9-2c01-472b-8fff-715835e56156", - "name": "status", - "port": 8000, - "client_certificate": null, - "updated_at": 1635786900, - "read_timeout": 60000, - "tags": [], - "ca_certificates": null, - "connect_timeout": 60000, - "write_timeout": 60000, - "protocol": "http", - "created_at": 1623859719, - "host": "localhost", - "path": null, - "tls_verify_depth": null, - "tls_verify": null, - "extras": {} - }, - { - "retries": 5, - "id": "d98c9e59-dc44-4bad-81ca-d399724462b0", - "name": "Forno", - "port": 8545, - "client_certificate": null, - "updated_at": 1635786900, - "read_timeout": 60000, - "tags": [], - "ca_certificates": null, - "connect_timeout": 60000, - "write_timeout": 60000, - "protocol": "http", - "created_at": 1623232145, - "host": "rc1-fullnodes-rpc.rc1", - "path": null, - "tls_verify_depth": null, - "tls_verify": null, - "extras": {} - } - ], - "routes": [ - { - "request_buffering": true, - "response_buffering": true, - "id": "37f4e0db-fbc9-4aa3-9f47-5c957c54efdc", - "name": "health-check", - "preserve_host": false, - "created_at": 1623859737, - "updated_at": 1635786900, - "protocols": [ - "http", - "https" - ], - "tags": null, - "hosts": null, - "headers": null, - "service": { - "id": "90a37cb9-2c01-472b-8fff-715835e56156" - }, - "paths": [ - "/status", - "/status*", - "/kong/status", - "/kong/status*" - ], - "methods": [ - "GET" - ], - "sources": null, - "destinations": null, - "path_handling": "v0", - "strip_path": true, - "https_redirect_status_code": 426, - "snis": null, - "regex_priority": 100 - }, - { - "request_buffering": true, - "response_buffering": true, - "id": "536b91df-0542-4c78-8ef4-de35c237050c", - "name": "forno", - "preserve_host": false, - "created_at": 1634898059, - "updated_at": 1635764767, - "protocols": [ - "http", - "https" - ], - "tags": null, - "hosts": null, - "headers": null, - "service": { - "id": "d98c9e59-dc44-4bad-81ca-d399724462b0" - }, - "paths": [ - "/", - "/*" - ], - "methods": null, - "sources": null, - "destinations": null, - "path_handling": "v0", - "strip_path": true, - "https_redirect_status_code": 426, - "snis": null, - "regex_priority": 0 - }, - { - "request_buffering": true, - "response_buffering": true, - "id": "798f63dd-60bc-4bf9-a640-e8177b747d69", - "name": "kong-path", - "preserve_host": false, - "created_at": 1635430090, - "updated_at": 1635786900, - "protocols": [ - "http", - "https" - ], - "tags": null, - "hosts": null, - "headers": null, - "service": { - "id": "d98c9e59-dc44-4bad-81ca-d399724462b0" - }, - "paths": [ - "/kong" - ], - "methods": null, - "sources": null, - "destinations": null, - "path_handling": "v1", - "strip_path": true, - "https_redirect_status_code": 426, - "snis": null, - "regex_priority": 11 - } - ], - "consumers": [ - { - "custom_id": null, - "created_at": 1623404756, - "id": "1532538d-cb47-48fa-8a8e-b21952644a6e", - "tags": [], - "username": "anonymous", - "credentials": { - "key-auths": [] - } - }, - { - "custom_id": null, - "created_at": 1623404316, - "id": "bdfbe991-2e69-4d50-bf79-4681be7f5949", - "tags": [], - "username": "komenci", - "credentials": { - "key-auths": [ - { - "key": "komenci", - "created_at": 1636497435, - "ttl": null, - "id": "5c085269-23d8-4dda-9dfe-2661507c2c27", - "tags": null, - "consumer": { - "id": "bdfbe991-2e69-4d50-bf79-4681be7f5949" - } - }, - { - "key": "odisMainnetAPIKey-9029667", - "created_at": 1651575802, - "ttl": null, - "id": "b2d3bc17-185d-415a-a76e-941586bc66ef", - "tags": null, - "consumer": { - "id": "bdfbe991-2e69-4d50-bf79-4681be7f5949" - } - } - ] - } - } - ], - "plugins": [ - { - "config": { - "path": "/tmp/kong.log", - "custom_fields_by_lua": null, - "reopen": false - }, - "enabled": false, - "service": null, - "id": "0e6fe9fe-c218-4b72-a9b5-4d09359f7906", - "route": null, - "created_at": 1635780419, - "protocols": [ - "grpc", - "grpcs", - "http", - "https" - ], - "consumer": { - "id": "1532538d-cb47-48fa-8a8e-b21952644a6e" - }, - "tags": null, - "name": "file-log" - }, - { - "config": { - "hide_client_headers": false, - "minute": 1000000000, - "hour": null, - "day": null, - "month": null, - "header_name": "CF-Connecting-IP", - "limit_by": "header", - "policy": "local", - "second": 10000000, - "redis_timeout": 2000, - "redis_database": 0, - "redis_host": null, - "redis_port": 6379, - "path": null, - "year": null, - "redis_password": null, - "fault_tolerant": true - }, - "enabled": true, - "service": { - "id": "d98c9e59-dc44-4bad-81ca-d399724462b0" - }, - "id": "175852a3-9891-4b26-b0f3-f2832bceadbf", - "route": null, - "created_at": 1624889602, - "protocols": [ - "grpc", - "grpcs", - "http", - "https" - ], - "consumer": { - "id": "bdfbe991-2e69-4d50-bf79-4681be7f5949" - }, - "tags": null, - "name": "rate-limiting" - }, - { - "config": { - "status_code": 200, - "message": "ok", - "body": null, - "content_type": null - }, - "enabled": true, - "service": { - "id": "90a37cb9-2c01-472b-8fff-715835e56156" - }, - "id": "18ccb4e4-b09c-4251-af1d-d3367f7ca667", - "route": null, - "created_at": 1623859751, - "protocols": [ - "grpc", - "grpcs", - "http", - "https" - ], - "consumer": null, - "tags": null, - "name": "request-termination" - }, - { - "config": { - "path": "/tmp/kong.log", - "custom_fields_by_lua": null, - "reopen": false - }, - "enabled": false, - "service": null, - "id": "5ae582e9-db79-4fd2-b973-1ba1ae7ab622", - "route": null, - "created_at": 1635767630, - "protocols": [ - "grpc", - "grpcs", - "http", - "https" - ], - "consumer": null, - "tags": null, - "name": "file-log" - }, - { - "config": { - "hide_client_headers": false, - "minute": 20000, - "hour": 500000, - "day": null, - "month": null, - "header_name": "CF-Connecting-IP", - "limit_by": "header", - "policy": "local", - "second": null, - "redis_timeout": 2000, - "redis_database": 0, - "redis_host": null, - "redis_port": 6379, - "path": null, - "year": null, - "redis_password": null, - "fault_tolerant": true - }, - "enabled": true, - "service": { - "id": "d98c9e59-dc44-4bad-81ca-d399724462b0" - }, - "id": "6060fd61-cf04-4bb2-a426-0aea585ac159", - "route": null, - "created_at": 1624889534, - "protocols": [ - "grpc", - "grpcs", - "http", - "https" - ], - "consumer": { - "id": "1532538d-cb47-48fa-8a8e-b21952644a6e" - }, - "tags": null, - "name": "rate-limiting" - }, - { - "config": { - "key_names": [ - "apikey" - ], - "anonymous": "1532538d-cb47-48fa-8a8e-b21952644a6e", - "hide_credentials": false, - "key_in_header": true, - "key_in_query": true, - "key_in_body": false, - "run_on_preflight": true - }, - "enabled": true, - "service": { - "id": "d98c9e59-dc44-4bad-81ca-d399724462b0" - }, - "id": "96259f8e-0484-4c98-9f4d-d4406c354407", - "route": null, - "created_at": 1624889633, - "protocols": [ - "grpc", - "grpcs", - "http", - "https" - ], - "consumer": null, - "tags": null, - "name": "key-auth" - }, - { - "config": { - "allow": null, - "deny": [ - "186.189.238.210/32" - ] - }, - "enabled": true, - "service": null, - "id": "a0b3939d-2976-4369-8c8a-f00e9e39d171", - "route": null, - "created_at": 1635965325, - "protocols": [ - "grpc", - "grpcs", - "http", - "https" - ], - "consumer": null, - "tags": null, - "name": "ip-restriction" - }, - { - "config": { - "per_consumer": true - }, - "enabled": true, - "service": null, - "id": "cf0c9419-69b5-4143-b863-2fa86f094841", - "route": null, - "created_at": 1626078855, - "protocols": [ - "grpc", - "grpcs", - "http", - "https" - ], - "consumer": null, - "tags": null, - "name": "prometheus" - } - ], - "acls": [ - { - "group": "noratelimit", - "created_at": 1623404350, - "id": "57187a97-d48b-4128-b007-281c0ed33659", - "tags": null, - "consumer": { - "id": "bdfbe991-2e69-4d50-bf79-4681be7f5949" - } - } - ], - "upstreams": [], - "certificates": [], - "snis": [] - }, - "createdAt": "2022-05-27T07:14:08.000Z", - "updatedAt": "2022-05-27T07:14:08.000Z" - } diff --git a/packages/helm-charts/konga/templates/configmap.yaml b/packages/helm-charts/konga/templates/configmap.yaml deleted file mode 100644 index 5f92cad0c8c..00000000000 --- a/packages/helm-charts/konga/templates/configmap.yaml +++ /dev/null @@ -1,52 +0,0 @@ -apiVersion: v1 -kind: ConfigMap -metadata: - name: {{ include "konga.fullname" . }}-config - labels: - app.kubernetes.io/name: {{ include "konga.name" . }} - helm.sh/chart: {{ include "konga.chart" . }} - app.kubernetes.io/instance: {{ .Release.Name }} - app.kubernetes.io/managed-by: {{ .Release.Service }} -data: - {{- if .Values.config }} - PORT: "{{ default 1337 .Values.config.port }}" - NODE_ENV: {{ default "development" .Values.config.node_env }} - {{ include "konga.validate_config_var" ( dict "name" "SSL_KEY_PATH" "value" .Values.config.ssl_key_path ) }} - {{ include "konga.validate_config_var" ( dict "name" "SSL_CRT_PATH" "value" .Values.config.ssl_crt_path ) }} - KONGA_HOOK_TIMEOUT: "{{ default 60000 .Values.config.konga_hook_timeout }}" - DB_ADAPTER: {{ default "postgres" .Values.config.db_adapter }} - {{ include "konga.validate_config_var" ( dict "name" "DB_URI" "value" .Values.config.db_uri ) }} - DB_HOST: {{ default "localhost" .Values.config.db_host }} - DB_PORT: "{{ default 5432 .Values.config.db_port }}" - {{ include "konga.validate_config_var" ( dict "name" "DB_USER" "value" .Values.config.db_user ) }} - {{ include "konga.validate_config_var" ( dict "name" "DB_PASSWORD" "value" .Values.config.db_password ) }} - DB_DATABASE: {{ default "konga_database" .Values.config.db_database }} - DB_PG_SCHEMA: {{ default "public" .Values.config.db_pg_schema }} - {{- if eq .Values.config.node_env "development" }} - KONGA_LOG_LEVEL: {{ default "debug" .Values.config.log_level }} - {{ else if eq .Values.config.node_env "production" }} - KONGA_LOG_LEVEL: {{ default "warn" .Values.config.log_level }} - {{- end }} - {{ include "konga.validate_config_var" ( dict "name" "TOKEN_SECRET" "value" .Values.config.token_secret ) }} - {{ include "konga.validate_config_var" ( dict "name" "KONGA_SEED_KONG_NODE_DATA_SOURCE_FILE" "value" .Values.config.konga_node_data ) }} - {{ include "konga.validate_config_var" ( dict "name" "KONGA_SEED_USER_DATA_SOURCE_FILE" "value" .Values.config.konga_user_data ) }} - NO_AUTH: "true" - {{- end }} - - {{- if .Values.ldap }} - KONGA_AUTH_PROVIDER: {{ default "local" .Values.ldap.auth_provider }} - KONGA_LDAP_HOST: {{ default "ldap://localhost:389" .Values.ldap.host }} - KONGA_LDAP_BIND_DN: {{ .Values.ldap.bind_dn }} - KONGA_LDAP_BIND_PASSWORD: {{ .Values.ldap.bind_pass }} - KONGA_LDAP_USER_SEARCH_BASE: {{ default "ou=users,dc=com" .Values.ldap.user_search_base }} - KONGA_LDAP_USER_SEARCH_FILTER: {{ default "(|(uid={{username}})(sAMAccountName={{username}}))" .Values.ldap.user_search_filter }} - KONGA_LDAP_USER_ATTRS: {{ default "uid,uidNumber,givenName,sn,mail" .Values.ldap.user_attrs }} - KONGA_LDAP_GROUP_SEARCH_BASE: {{ default "ou=groups,dc=com" .Values.ldap.group_search_base }} - KONGA_LDAP_GROUP_SEARCH_FILTER: {{ default "(|(memberUid={{uid}})(memberUid={{uidNumber}})(sAMAccountName={{uid}}))" .Values.ldap.group_search_filter }} - KONGA_LDAP_GROUP_ATTRS: {{ default "cn" .Values.ldap.group_attrs }} - KONGA_ADMIN_GROUP_REG: {{ default "^(admin|konga)$" .Values.ldap.group_reg }} - KONGA_LDAP_ATTR_USERNAME: {{ default "uid" .Values.ldap.attr_username }} - KONGA_LDAP_ATTR_FIRSTNAME: {{ default "givenName" .Values.ldap.attr_firstname }} - KONGA_LDAP_ATTR_LASTNAME: {{ default "sn" .Values.ldap.attr_lastname }} - KONGA_LDAP_ATTR_EMAIL: {{ default "mail" .Values.ldap.attr_email }} - {{- end }} diff --git a/packages/helm-charts/konga/templates/deployment.yaml b/packages/helm-charts/konga/templates/deployment.yaml deleted file mode 100644 index 14ae1eee31e..00000000000 --- a/packages/helm-charts/konga/templates/deployment.yaml +++ /dev/null @@ -1,104 +0,0 @@ -apiVersion: apps/v1 -kind: Deployment -metadata: - name: {{ include "konga.fullname" . }} - labels: - app.kubernetes.io/name: {{ include "konga.name" . }} - helm.sh/chart: {{ include "konga.chart" . }} - app.kubernetes.io/instance: {{ .Release.Name }} - app.kubernetes.io/managed-by: {{ .Release.Service }} -spec: - replicas: {{ .Values.replicaCount }} - selector: - matchLabels: - app.kubernetes.io/name: {{ include "konga.name" . }} - app.kubernetes.io/instance: {{ .Release.Name }} - template: - metadata: - labels: - app.kubernetes.io/name: {{ include "konga.name" . }} - app.kubernetes.io/instance: {{ .Release.Name }} - spec: - volumes: - - configMap: - defaultMode: 420 - name: {{ include "konga.fullname" . }}-snapshot - name: {{ include "konga.fullname" . }}-snapshot -{{- if .Values.extraVolumes }} -{{ toYaml .Values.extraVolumes | indent 8 }} -{{- end }} - containers: - - name: konga - image: "{{ .Values.image.repository }}:{{ .Values.image.tag }}" - imagePullPolicy: {{ .Values.image.pullPolicy }} - ports: - - name: http - containerPort: 1337 - protocol: TCP - livenessProbe: - httpGet: - path: / - port: http - readinessProbe: - httpGet: - path: / - port: http - envFrom: - - configMapRef: - name: {{ include "konga.fullname" . }}-config - resources: - {{- toYaml .Values.resources | nindent 12 }} - volumeMounts: - - mountPath: /opt/clabs/files/ - name: {{ include "konga.fullname" . }}-snapshot -{{- if .Values.extraVolumeMounts }} -{{ toYaml .Values.extraVolumeMounts | nindent 12 }} -{{- end }} - - name: restore-snapshot - image: jcortejoso/httpie-jq:latest - imagePullPolicy: IfNotPresent - stdin: true - tty: true - command: - - /bin/sh - - -c - args: - - | - while :; do - # Check if konga api is ready - if http HEAD localhost:1337 --follow --check-status >/dev/null 2>&1; then - break - fi - done - # Check if snapshot already exists - snapshot_name="$(cat /opt/clabs/files/snapshot.json | jq -r '.name')" - if http GET localhost:1337/api/snapshot | jq -e -r ".[] | select (.name==\"$snapshot_name\")" >/dev/null 2>&1; then - echo "Snapshot already present" - else - # Upload snapshot - http POST localhost:1337/api/snapshot Authorization:'Bearer noauthtoken' 'Content-Type: application/json' < /opt/clabs/files/snapshot.json - # Restore snapshot - ## Connection id field can be non-unique. It should be 1 - connection_id=$(http GET localhost:1337/api/kongnode | jq -r '.[] | select (.name=="Kong") | .id' | head -n1) - snapshot_id=$(http GET localhost:1337/api/snapshot | jq -e -r ".[] | select (.name==\"$snapshot_name\") | .id") - sleep 90 - http POST localhost:1337/api/snapshots/$snapshot_id/restore Authorization:'Bearer noauthtoken' "Connection-Id:$connection_id" imports\\:='["services","routes","consumers","plugins","acls","upstreams","certificates","snis"]' token=noauthtoken - sleep 90 - http POST localhost:1337/api/snapshots/$snapshot_id/restore Authorization:'Bearer noauthtoken' "Connection-Id:$connection_id" imports\\:='["services","routes","consumers","plugins","acls","upstreams","certificates","snis"]' token=noauthtoken - fi - tail -f /dev/null - volumeMounts: - - mountPath: /opt/clabs/files/ - name: {{ include "konga.fullname" . }}-snapshot - {{- with .Values.nodeSelector }} - nodeSelector: - {{- toYaml . | nindent 8 }} - {{- end }} - {{- with .Values.affinity }} - affinity: - {{- toYaml . | nindent 8 }} - {{- end }} - {{- with .Values.tolerations }} - tolerations: - {{- toYaml . | nindent 8 }} - {{- end }} diff --git a/packages/helm-charts/konga/templates/ingress.yaml b/packages/helm-charts/konga/templates/ingress.yaml deleted file mode 100644 index 9b51db33688..00000000000 --- a/packages/helm-charts/konga/templates/ingress.yaml +++ /dev/null @@ -1,39 +0,0 @@ -{{- if .Values.ingress.enabled -}} -{{- $fullName := include "konga.fullname" . -}} -apiVersion: extensions/v1beta1 -kind: Ingress -metadata: - name: {{ $fullName }} - labels: - app.kubernetes.io/name: {{ include "konga.name" . }} - helm.sh/chart: {{ include "konga.chart" . }} - app.kubernetes.io/instance: {{ .Release.Name }} - app.kubernetes.io/managed-by: {{ .Release.Service }} - {{- with .Values.ingress.annotations }} - annotations: - {{- toYaml . | nindent 4 }} - {{- end }} -spec: -{{- if .Values.ingress.tls }} - tls: - {{- range .Values.ingress.tls }} - - hosts: - {{- range .hosts }} - - {{ . | quote }} - {{- end }} - secretName: {{ .secretName }} - {{- end }} -{{- end }} - rules: - {{- range .Values.ingress.hosts }} - - host: {{ .host | quote }} - http: - paths: - {{- range .paths }} - - path: {{ . }} - backend: - serviceName: {{ $fullName }} - servicePort: http - {{- end }} - {{- end }} -{{- end }} diff --git a/packages/helm-charts/konga/templates/service.yaml b/packages/helm-charts/konga/templates/service.yaml deleted file mode 100644 index aa8cf7ba1ec..00000000000 --- a/packages/helm-charts/konga/templates/service.yaml +++ /dev/null @@ -1,19 +0,0 @@ -apiVersion: v1 -kind: Service -metadata: - name: {{ include "konga.fullname" . }} - labels: - app.kubernetes.io/name: {{ include "konga.name" . }} - helm.sh/chart: {{ include "konga.chart" . }} - app.kubernetes.io/instance: {{ .Release.Name }} - app.kubernetes.io/managed-by: {{ .Release.Service }} -spec: - type: {{ .Values.service.type }} - ports: - - port: {{ .Values.service.port }} - targetPort: http - protocol: TCP - name: http - selector: - app.kubernetes.io/name: {{ include "konga.name" . }} - app.kubernetes.io/instance: {{ .Release.Name }} diff --git a/packages/helm-charts/konga/templates/tests/test-connection.yaml b/packages/helm-charts/konga/templates/tests/test-connection.yaml deleted file mode 100644 index 61bca6a257e..00000000000 --- a/packages/helm-charts/konga/templates/tests/test-connection.yaml +++ /dev/null @@ -1,18 +0,0 @@ -apiVersion: v1 -kind: Pod -metadata: - name: "{{ include "konga.fullname" . }}-test-connection" - labels: - app.kubernetes.io/name: {{ include "konga.name" . }} - helm.sh/chart: {{ include "konga.chart" . }} - app.kubernetes.io/instance: {{ .Release.Name }} - app.kubernetes.io/managed-by: {{ .Release.Service }} - annotations: - "helm.sh/hook": test-success -spec: - containers: - - name: wget - image: busybox - command: ['wget'] - args: ['{{ include "konga.fullname" . }}:{{ .Values.service.port }}'] - restartPolicy: Never diff --git a/packages/helm-charts/konga/values.yaml b/packages/helm-charts/konga/values.yaml deleted file mode 100644 index 1d4fbc33c14..00000000000 --- a/packages/helm-charts/konga/values.yaml +++ /dev/null @@ -1,93 +0,0 @@ -# Default values for konga. -# This is a YAML-formatted file. -# Declare variables to be passed into your templates. - -replicaCount: 1 - -image: - repository: pantsel/konga - tag: next - pullPolicy: IfNotPresent - -nameOverride: "" -fullnameOverride: "" - -service: - type: ClusterIP - port: 80 - -# Konga default configuration -config: -# port: 1337 - node_env: development -# ssl_key_path: -# ssl_crt_path: -# konga_hook_timeout: 60000 - db_adapter: postgres - # db_uri: - db_host: kong-postgresql - db_port: 5432 - db_user: kong - db_password: kong - db_database: kong -# db_pg_schema: public -# log_level: debug - token_secret: kong - konga_node_data: /opt/clabs/files/kong_node.data - # konga_user_data: - -# LDAP configuration for Konga -ldap: {} -# ldap: -# auth_provider: -# host: -# bind_dn: -# bind_pass: -# user_search_base: -# user_search_filter: -# user_attrs: -# group_search_base: -# group_search_filter: -# group_attrs: -# group_reg: -# attr_username: -# attr_firstname: -# attr_lastname: -# attr_email: - -# Ingress Configuration for Konga -ingress: - enabled: false - annotations: {} - # kubernetes.io/ingress.class: nginx - # kubernetes.io/tls-acme: "true" - hosts: - - host: chart-example.local - paths: [] - - tls: [] - # - secretName: chart-example-tls - # hosts: - # - chart-example.local - -resources: {} - # We usually recommend not to specify default resources and to leave this as a conscious - # choice for the user. This also increases chances charts run on environments with little - # resources, such as Minikube. If you do want to specify resources, uncomment the following - # lines, adjust them as necessary, and remove the curly braces after 'resources:'. - # limits: - # cpu: 100m - # memory: 128Mi - # requests: - # cpu: 100m - # memory: 128Mi - -nodeSelector: {} - -tolerations: [] - -affinity: {} - -kong: - service: kong - admin_port: 8001 From 0ee42a8aec4667ee4a6274ac01ceeb0da48980f2 Mon Sep 17 00:00:00 2001 From: Eric Nakagawa Date: Thu, 21 Sep 2023 00:39:32 -0700 Subject: [PATCH 26/31] Update Celo logo in README.md (#10613) --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index f415607c8b3..ea5e9a098e4 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@

- celo logo + celo logo

From 751976e7f395ff2474c82bfc23c8a6243fbc22be Mon Sep 17 00:00:00 2001 From: Aaron DeRuvo Date: Thu, 21 Sep 2023 10:56:30 +0200 Subject: [PATCH 27/31] Fix Ledger signing (#10599) bump to 5.0.4 and 3.0.1 fix ledger signing --- packages/celotool/package.json | 20 +- packages/cli/package.json | 24 +-- packages/dev-utils/package.json | 2 +- packages/env-tests/package.json | 14 +- packages/metadata-crawler/package.json | 6 +- .../combiner/package.json | 14 +- .../phone-number-privacy/common/package.json | 12 +- .../phone-number-privacy/monitor/package.json | 16 +- .../phone-number-privacy/signer/package.json | 12 +- packages/protocol/package.json | 12 +- packages/sdk/base/package.json | 2 +- packages/sdk/connect/LICENSE | 201 ++++++++++++++++++ packages/sdk/connect/package.json | 6 +- packages/sdk/contractkit/package.json | 14 +- packages/sdk/cryptographic-utils/package.json | 6 +- packages/sdk/encrypted-backup/package.json | 12 +- packages/sdk/explorer/package.json | 10 +- packages/sdk/governance/package.json | 12 +- packages/sdk/identity/package.json | 14 +- packages/sdk/keystores/package.json | 6 +- packages/sdk/network-utils/package.json | 4 +- packages/sdk/phone-utils/package.json | 6 +- packages/sdk/transactions-uri/package.json | 10 +- packages/sdk/utils/package.json | 4 +- packages/sdk/wallets/wallet-base/package.json | 8 +- .../sdk/wallets/wallet-hsm-aws/package.json | 12 +- .../sdk/wallets/wallet-hsm-azure/package.json | 12 +- .../sdk/wallets/wallet-hsm-gcp/package.json | 12 +- packages/sdk/wallets/wallet-hsm/package.json | 4 +- .../sdk/wallets/wallet-ledger/package.json | 10 +- .../wallet-ledger/src/ledger-wallet.ts | 15 +- .../sdk/wallets/wallet-local/package.json | 8 +- .../sdk/wallets/wallet-remote/package.json | 8 +- packages/sdk/wallets/wallet-rpc/package.json | 14 +- 34 files changed, 378 insertions(+), 164 deletions(-) create mode 100644 packages/sdk/connect/LICENSE diff --git a/packages/celotool/package.json b/packages/celotool/package.json index 42d1976d6c8..a7c12a7f2a0 100644 --- a/packages/celotool/package.json +++ b/packages/celotool/package.json @@ -6,16 +6,16 @@ "author": "Celo", "license": "Apache-2.0", "dependencies": { - "@celo/base": "5.0.3-dev", - "@celo/connect": "5.0.3-dev", - "@celo/cryptographic-utils": "5.0.3-dev", - "@celo/contractkit": "5.0.3-dev", + "@celo/base": "5.0.4", + "@celo/connect": "5.0.4", + "@celo/cryptographic-utils": "5.0.4", + "@celo/contractkit": "5.0.4", "@celo/env-tests": "1.0.0", - "@celo/explorer": "5.0.3-dev", - "@celo/governance": "5.0.3-dev", - "@celo/identity": "5.0.3-dev", - "@celo/network-utils": "5.0.3-dev", - "@celo/utils": "5.0.3-dev", + "@celo/explorer": "5.0.4", + "@celo/governance": "5.0.4", + "@celo/identity": "5.0.4", + "@celo/network-utils": "5.0.4", + "@celo/utils": "5.0.4", "@ethereumjs/util": "8.0.5", "@ethereumjs/rlp": "4.0.1", "@google-cloud/monitoring": "0.7.1", @@ -46,7 +46,7 @@ "yargs": "14.0.0" }, "devDependencies": { - "@celo/dev-utils": "0.0.1-dev", + "@celo/dev-utils": "0.0.1", "@celo/protocol": "*", "@types/bunyan": "1.8.8", "@types/chai": "^4.1.3", diff --git a/packages/cli/package.json b/packages/cli/package.json index 5d46cf5121d..2916d8f20c7 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -1,7 +1,7 @@ { "name": "@celo/celocli", "description": "CLI Tool for transacting with the Celo protocol", - "version": "3.0.0", + "version": "3.0.1", "author": "Celo", "license": "Apache-2.0", "repository": "celo-org/celo-monorepo", @@ -32,16 +32,16 @@ "test": "TZ=UTC jest --runInBand" }, "dependencies": { - "@celo/contractkit": "^5.0.3-dev", - "@celo/explorer": "^5.0.3-dev", - "@celo/governance": "^5.0.3-dev", - "@celo/identity": "^5.0.3-dev", - "@celo/phone-utils": "^5.0.3-dev", - "@celo/utils": "^5.0.3-dev", - "@celo/cryptographic-utils": "^5.0.3-dev", - "@celo/wallet-hsm-azure": "^5.0.3-dev", - "@celo/wallet-ledger": "^5.0.3-dev", - "@celo/wallet-local": "^5.0.3-dev", + "@celo/contractkit": "^5.0.4", + "@celo/explorer": "^5.0.4", + "@celo/governance": "^5.0.4", + "@celo/identity": "^5.0.4", + "@celo/phone-utils": "^5.0.4", + "@celo/utils": "^5.0.4", + "@celo/cryptographic-utils": "^5.0.4", + "@celo/wallet-hsm-azure": "^5.0.4", + "@celo/wallet-ledger": "^5.0.4", + "@celo/wallet-local": "^5.0.4", "@ledgerhq/hw-transport-node-hid": "^6.27.4", "@oclif/command": "^1.6.0", "@oclif/config": "^1.6.0", @@ -70,7 +70,7 @@ "web3": "1.10.0" }, "devDependencies": { - "@celo/dev-utils": "0.0.1-dev", + "@celo/dev-utils": "0.0.1", "@oclif/dev-cli": "^1.23.0", "@types/cli-table": "^0.3.0", "@types/debug": "^4.1.4", diff --git a/packages/dev-utils/package.json b/packages/dev-utils/package.json index 41d260aa4e5..b82e287000c 100644 --- a/packages/dev-utils/package.json +++ b/packages/dev-utils/package.json @@ -1,6 +1,6 @@ { "name": "@celo/dev-utils", - "version": "0.0.1-dev", + "version": "0.0.1", "description": "util package for celo packages that should only be a devDependency", "main": "./lib/index.js", "types": "./lib/index.d.ts", diff --git a/packages/env-tests/package.json b/packages/env-tests/package.json index b34005f50e3..98bd1346f1d 100644 --- a/packages/env-tests/package.json +++ b/packages/env-tests/package.json @@ -5,13 +5,13 @@ "main": "index.js", "license": "MIT", "dependencies": { - "@celo/contractkit": "5.0.3-dev", - "@celo/utils": "5.0.3-dev", - "@celo/base": "5.0.3-dev", - "@celo/connect": "5.0.3-dev", - "@celo/identity": "5.0.3-dev", - "@celo/phone-utils": "5.0.3-dev", - "@celo/cryptographic-utils": "5.0.3-dev", + "@celo/contractkit": "5.0.4", + "@celo/utils": "5.0.4", + "@celo/base": "5.0.4", + "@celo/connect": "5.0.4", + "@celo/identity": "5.0.4", + "@celo/phone-utils": "5.0.4", + "@celo/cryptographic-utils": "5.0.4", "bunyan": "1.8.12", "bunyan-gke-stackdriver": "0.1.2", "bunyan-debug-stream": "2.0.0", diff --git a/packages/metadata-crawler/package.json b/packages/metadata-crawler/package.json index eee036d360e..17c5743892c 100644 --- a/packages/metadata-crawler/package.json +++ b/packages/metadata-crawler/package.json @@ -9,9 +9,9 @@ "homepage": "https://github.com/celo-org/celo-monorepo/tree/master/packages/metadata-crawler", "repository": "https://github.com/celo-org/celo-monorepo/tree/master/packages/metadata-crawler", "dependencies": { - "@celo/connect": "5.0.3-dev", - "@celo/contractkit": "5.0.3-dev", - "@celo/utils": "5.0.3-dev", + "@celo/connect": "5.0.4", + "@celo/contractkit": "5.0.4", + "@celo/utils": "5.0.4", "@types/pg": "^7.14.3", "bunyan": "1.8.12", "bunyan-gke-stackdriver": "0.1.2", diff --git a/packages/phone-number-privacy/combiner/package.json b/packages/phone-number-privacy/combiner/package.json index a729d17cc41..b9401eaa9a7 100644 --- a/packages/phone-number-privacy/combiner/package.json +++ b/packages/phone-number-privacy/combiner/package.json @@ -1,6 +1,6 @@ { "name": "@celo/phone-number-privacy-combiner", - "version": "3.0.1-dev", + "version": "3.0.1", "description": "Orchestrates and combines threshold signatures for use in ODIS", "author": "Celo", "license": "Apache-2.0", @@ -29,10 +29,10 @@ "test:e2e:mainnet": "CONTEXT_NAME=mainnet yarn test:e2e" }, "dependencies": { - "@celo/contractkit": "^5.0.3-dev", - "@celo/phone-number-privacy-common": "^3.0.4-dev", - "@celo/identity": "^5.0.3-dev", - "@celo/encrypted-backup": "^5.0.3-dev", + "@celo/contractkit": "^5.0.4", + "@celo/phone-number-privacy-common": "^3.0.3", + "@celo/identity": "^5.0.4", + "@celo/encrypted-backup": "^5.0.4", "@celo/poprf": "^0.1.9", "@types/bunyan": "^1.8.8", "@opentelemetry/api": "^1.4.1", @@ -56,8 +56,8 @@ }, "devDependencies": { "@types/node": "18.15.13", - "@celo/utils": "^5.0.3-dev", - "@celo/phone-utils": "^5.0.3-dev", + "@celo/utils": "^5.0.4", + "@celo/phone-utils": "^5.0.4", "@types/express": "^4.17.6", "@types/supertest": "^2.0.12", "@types/uuid": "^7.0.3", diff --git a/packages/phone-number-privacy/common/package.json b/packages/phone-number-privacy/common/package.json index 0b756b530b5..0474c2dc025 100644 --- a/packages/phone-number-privacy/common/package.json +++ b/packages/phone-number-privacy/common/package.json @@ -1,6 +1,6 @@ { "name": "@celo/phone-number-privacy-common", - "version": "3.0.4-dev", + "version": "3.0.3", "description": "Common library for the combiner and signer libraries", "author": "Celo", "license": "Apache-2.0", @@ -18,10 +18,10 @@ "lib/**/*" ], "dependencies": { - "@celo/base": "^5.0.3-dev", - "@celo/contractkit": "^5.0.3-dev", - "@celo/utils": "^5.0.3-dev", - "@celo/phone-utils": "^5.0.3-dev", + "@celo/base": "^5.0.4", + "@celo/contractkit": "^5.0.4", + "@celo/utils": "^5.0.4", + "@celo/phone-utils": "^5.0.4", "@types/bunyan": "1.8.8", "bignumber.js": "^9.0.0", "bunyan": "1.8.12", @@ -41,7 +41,7 @@ }, "devDependencies": { "@celo/poprf": "^0.1.9", - "@celo/wallet-local": "^5.0.3-dev", + "@celo/wallet-local": "^5.0.4", "@types/elliptic": "^6.4.12", "@types/express": "^4.17.6", "@types/is-base64": "^1.1.0", diff --git a/packages/phone-number-privacy/monitor/package.json b/packages/phone-number-privacy/monitor/package.json index 78844fee56d..c2f329e7e54 100644 --- a/packages/phone-number-privacy/monitor/package.json +++ b/packages/phone-number-privacy/monitor/package.json @@ -1,6 +1,6 @@ { "name": "@celo/phone-number-privacy-monitor", - "version": "3.0.1-beta.1-dev", + "version": "3.0.1", "description": "Regularly queries ODIS to ensure the system is functioning properly", "author": "Celo", "license": "Apache-2.0", @@ -22,13 +22,13 @@ "loadTest": "ts-node src/scripts/run-load-test.ts run" }, "dependencies": { - "@celo/contractkit": "^5.0.3-dev", - "@celo/cryptographic-utils": "^5.0.3-dev", - "@celo/encrypted-backup": "^5.0.3-dev", - "@celo/identity": "^5.0.3-dev", - "@celo/wallet-local": "^5.0.3-dev", - "@celo/phone-number-privacy-common": "^3.0.4-dev", - "@celo/utils": "^5.0.3-dev", + "@celo/contractkit": "^5.0.4", + "@celo/cryptographic-utils": "^5.0.4", + "@celo/encrypted-backup": "^5.0.4", + "@celo/identity": "^5.0.4", + "@celo/wallet-local": "^5.0.4", + "@celo/phone-number-privacy-common": "^3.0.3", + "@celo/utils": "^5.0.4", "firebase-admin": "^9.12.0", "firebase-functions": "^3.15.7" }, diff --git a/packages/phone-number-privacy/signer/package.json b/packages/phone-number-privacy/signer/package.json index aa6de6d69f6..34ff3f0e55c 100644 --- a/packages/phone-number-privacy/signer/package.json +++ b/packages/phone-number-privacy/signer/package.json @@ -1,6 +1,6 @@ { "name": "@celo/phone-number-privacy-signer", - "version": "3.0.2-dev", + "version": "3.0.2", "description": "Signing participator of ODIS", "author": "Celo", "license": "Apache-2.0", @@ -37,13 +37,13 @@ "ssl:keygen": "./scripts/create-ssl-cert.sh" }, "dependencies": { - "@celo/base": "^5.0.3-dev", + "@celo/base": "^5.0.4", "blind-threshold-bls": "npm:@celo/blind-threshold-bls@1.0.0-beta", - "@celo/contractkit": "^5.0.3-dev", - "@celo/phone-number-privacy-common": "^3.0.4-dev", + "@celo/contractkit": "^5.0.4", + "@celo/phone-number-privacy-common": "^3.0.3", "@celo/poprf": "^0.1.9", - "@celo/utils": "^5.0.3-dev", - "@celo/wallet-hsm-azure": "^5.0.3-dev", + "@celo/utils": "^5.0.4", + "@celo/wallet-hsm-azure": "^5.0.4", "@google-cloud/secret-manager": "3.0.0", "@opentelemetry/api": "^1.4.1", "@opentelemetry/auto-instrumentations-node": "^0.38.0", diff --git a/packages/protocol/package.json b/packages/protocol/package.json index caa6f5495a2..51f1c82f970 100644 --- a/packages/protocol/package.json +++ b/packages/protocol/package.json @@ -49,12 +49,12 @@ "@0x/sol-profiler": "^4.1.37", "@0x/sol-trace": "^3.0.47", "@0x/subproviders": "^7.0.1", - "@celo/base": "5.0.3-dev", + "@celo/base": "5.0.4", "@celo/bls12377js": "0.1.1", - "@celo/connect": "5.0.3-dev", - "@celo/cryptographic-utils": "5.0.3-dev", - "@celo/utils": "5.0.3-dev", - "@celo/wallet-local": "5.0.3-dev", + "@celo/connect": "5.0.4", + "@celo/cryptographic-utils": "5.0.4", + "@celo/utils": "5.0.4", + "@celo/wallet-local": "5.0.4", "@ethereumjs/util": "8.0.5", "@ethereumjs/vm": "npm:@celo/ethereumjs-vm@6.4.1-unofficial.0", "@ganache/console.log": "0.3.0", @@ -95,7 +95,7 @@ "web3-utils": "1.10.0" }, "devDependencies": { - "@celo/phone-utils": "5.0.3-dev", + "@celo/phone-utils": "5.0.4", "@celo/typechain-target-web3-v1-celo": "0.2.0", "@celo/typescript": "0.0.1", "@types/bn.js": "^5.1.0", diff --git a/packages/sdk/base/package.json b/packages/sdk/base/package.json index c3b6dc93600..3a66fc75e73 100644 --- a/packages/sdk/base/package.json +++ b/packages/sdk/base/package.json @@ -1,6 +1,6 @@ { "name": "@celo/base", - "version": "5.0.3-dev", + "version": "5.0.4", "description": "Celo base common utils, no dependencies", "author": "Celo", "license": "Apache-2.0", diff --git a/packages/sdk/connect/LICENSE b/packages/sdk/connect/LICENSE new file mode 100644 index 00000000000..f49a4e16e68 --- /dev/null +++ b/packages/sdk/connect/LICENSE @@ -0,0 +1,201 @@ + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. \ No newline at end of file diff --git a/packages/sdk/connect/package.json b/packages/sdk/connect/package.json index 05b7d5d3638..a304779dc10 100644 --- a/packages/sdk/connect/package.json +++ b/packages/sdk/connect/package.json @@ -1,6 +1,6 @@ { "name": "@celo/connect", - "version": "5.0.3-dev", + "version": "5.0.4", "description": "Light Toolkit for connecting with the Celo network", "main": "./lib/index.js", "types": "./lib/index.d.ts", @@ -24,8 +24,8 @@ "dependencies": { "@types/debug": "^4.1.5", "@types/utf8": "^2.1.6", - "@celo/base": "5.0.3-dev", - "@celo/utils": "5.0.3-dev", + "@celo/base": "5.0.4", + "@celo/utils": "5.0.4", "bignumber.js": "^9.0.0", "debug": "^4.1.1", "utf8": "3.0.0" diff --git a/packages/sdk/contractkit/package.json b/packages/sdk/contractkit/package.json index 3c289aa4fe9..8a447d3b783 100644 --- a/packages/sdk/contractkit/package.json +++ b/packages/sdk/contractkit/package.json @@ -1,6 +1,6 @@ { "name": "@celo/contractkit", - "version": "5.0.3-dev", + "version": "5.0.4", "description": "Celo's ContractKit to interact with Celo network", "main": "./lib/index.js", "types": "./lib/index.d.ts", @@ -29,10 +29,10 @@ "lint": "tslint -c tslint.json --project ." }, "dependencies": { - "@celo/base": "5.0.3-dev", - "@celo/connect": "5.0.3-dev", - "@celo/utils": "5.0.3-dev", - "@celo/wallet-local": "5.0.3-dev", + "@celo/base": "5.0.4", + "@celo/connect": "5.0.4", + "@celo/utils": "5.0.4", + "@celo/wallet-local": "5.0.4", "@types/bn.js": "^5.1.0", "@types/debug": "^4.1.5", "bignumber.js": "^9.0.0", @@ -45,8 +45,8 @@ "web3-core-helpers": "1.10.0" }, "devDependencies": { - "@celo/phone-utils": "5.0.3-dev", - "@celo/dev-utils": "0.0.1-dev", + "@celo/phone-utils": "^5.0.4", + "@celo/dev-utils": "0.0.1", "@celo/protocol": "1.0.0", "@types/debug": "^4.1.5", "fetch-mock": "9.10.4", diff --git a/packages/sdk/cryptographic-utils/package.json b/packages/sdk/cryptographic-utils/package.json index 74720420a43..ccdd69f12bf 100644 --- a/packages/sdk/cryptographic-utils/package.json +++ b/packages/sdk/cryptographic-utils/package.json @@ -1,6 +1,6 @@ { "name": "@celo/cryptographic-utils", - "version": "5.0.3-dev", + "version": "5.0.4", "description": "Some Celo utils for comment/data encryption, bls, and mnemonics", "author": "Celo", "license": "Apache-2.0", @@ -22,9 +22,9 @@ "lib/**/*" ], "dependencies": { - "@celo/utils": "5.0.3-dev", + "@celo/utils": "5.0.4", "@celo/bls12377js": "0.1.1", - "@celo/base": "5.0.3-dev", + "@celo/base": "5.0.4", "@ethereumjs/util": "8.0.5", "@types/bn.js": "^5.1.0", "@types/elliptic": "^6.4.9", diff --git a/packages/sdk/encrypted-backup/package.json b/packages/sdk/encrypted-backup/package.json index e938374badf..91d3b40d768 100644 --- a/packages/sdk/encrypted-backup/package.json +++ b/packages/sdk/encrypted-backup/package.json @@ -1,6 +1,6 @@ { "name": "@celo/encrypted-backup", - "version": "5.0.3-dev", + "version": "5.0.4", "description": "Libraries for implemented password encrypted account backups", "main": "./lib/index.js", "types": "./lib/index.d.ts", @@ -25,18 +25,18 @@ "prepublishOnly": "yarn build" }, "dependencies": { - "@celo/base": "5.0.3-dev", - "@celo/identity": "5.0.3-dev", - "@celo/phone-number-privacy-common": "^3.0.4-dev", + "@celo/base": "5.0.4", + "@celo/identity": "5.0.4", + "@celo/phone-number-privacy-common": "^3.0.3", "@celo/poprf": "^0.1.9", - "@celo/utils": "5.0.3-dev", + "@celo/utils": "5.0.4", "@types/debug": "^4.1.5", "debug": "^4.1.1", "fp-ts": "2.1.1", "io-ts": "2.0.1" }, "devDependencies": { - "@celo/dev-utils": "0.0.1-dev", + "@celo/dev-utils": "0.0.1", "fetch-mock": "9.10.4" }, "engines": { diff --git a/packages/sdk/explorer/package.json b/packages/sdk/explorer/package.json index 3158c105185..2fc8e91a901 100644 --- a/packages/sdk/explorer/package.json +++ b/packages/sdk/explorer/package.json @@ -1,6 +1,6 @@ { "name": "@celo/explorer", - "version": "5.0.3-dev", + "version": "5.0.4", "description": "Celo's block explorer consumer", "main": "./lib/index.js", "types": "./lib/index.d.ts", @@ -22,10 +22,10 @@ "prepublishOnly": "yarn build" }, "dependencies": { - "@celo/base": "5.0.3-dev", - "@celo/connect": "5.0.3-dev", - "@celo/contractkit": "5.0.3-dev", - "@celo/utils": "5.0.3-dev", + "@celo/base": "5.0.4", + "@celo/connect": "5.0.4", + "@celo/contractkit": "5.0.4", + "@celo/utils": "5.0.4", "@types/debug": "^4.1.5", "cross-fetch": "3.0.6", "debug": "^4.1.1" diff --git a/packages/sdk/governance/package.json b/packages/sdk/governance/package.json index 7f2eb1b7174..1cd38b3740a 100644 --- a/packages/sdk/governance/package.json +++ b/packages/sdk/governance/package.json @@ -1,6 +1,6 @@ { "name": "@celo/governance", - "version": "5.0.3-dev", + "version": "5.0.4", "description": "Celo's governance proposals", "main": "./lib/index.js", "types": "./lib/index.d.ts", @@ -21,11 +21,11 @@ "prepublishOnly": "yarn build" }, "dependencies": { - "@celo/base": "5.0.3-dev", - "@celo/utils": "5.0.3-dev", - "@celo/connect": "5.0.3-dev", - "@celo/contractkit": "5.0.3-dev", - "@celo/explorer": "5.0.3-dev", + "@celo/base": "5.0.4", + "@celo/utils": "5.0.4", + "@celo/connect": "5.0.4", + "@celo/contractkit": "5.0.4", + "@celo/explorer": "5.0.4", "@ethereumjs/util": "8.0.5", "@types/debug": "^4.1.5", "@types/inquirer": "^6.5.0", diff --git a/packages/sdk/identity/package.json b/packages/sdk/identity/package.json index c836119b2e1..bcf8b5bafd5 100644 --- a/packages/sdk/identity/package.json +++ b/packages/sdk/identity/package.json @@ -1,6 +1,6 @@ { "name": "@celo/identity", - "version": "5.0.3-dev", + "version": "5.0.4", "description": "Utilities for interacting with Celo's identity protocol", "main": "./lib/index.js", "types": "./lib/index.d.ts", @@ -25,10 +25,10 @@ "prepublishOnly": "yarn build" }, "dependencies": { - "@celo/base": "5.0.3-dev", - "@celo/utils": "5.0.3-dev", - "@celo/contractkit": "5.0.3-dev", - "@celo/phone-number-privacy-common": "^3.0.4-dev", + "@celo/base": "5.0.4", + "@celo/utils": "5.0.4", + "@celo/contractkit": "5.0.4", + "@celo/phone-number-privacy-common": "^3.0.3", "@types/debug": "^4.1.5", "bignumber.js": "^9.0.0", "blind-threshold-bls": "npm:@celo/blind-threshold-bls@1.0.0-beta", @@ -40,8 +40,8 @@ "io-ts": "2.0.1" }, "devDependencies": { - "@celo/dev-utils": "0.0.1-dev", - "@celo/wallet-local": "5.0.3-dev", + "@celo/dev-utils": "0.0.1", + "@celo/wallet-local": "5.0.4", "@types/elliptic": "^6.4.12", "fetch-mock": "9.10.4", "ganache": "npm:@celo/ganache@7.8.0-unofficial.0", diff --git a/packages/sdk/keystores/package.json b/packages/sdk/keystores/package.json index 6f92d017950..776184cdc88 100644 --- a/packages/sdk/keystores/package.json +++ b/packages/sdk/keystores/package.json @@ -1,6 +1,6 @@ { "name": "@celo/keystores", - "version": "5.0.3-dev", + "version": "5.0.4", "description": "keystore implementation", "author": "Celo", "license": "Apache-2.0", @@ -22,8 +22,8 @@ "prepublishOnly": "yarn build" }, "dependencies": { - "@celo/utils": "5.0.3-dev", - "@celo/wallet-local": "5.0.3-dev", + "@celo/utils": "5.0.4", + "@celo/wallet-local": "5.0.4", "ethereumjs-wallet": "^1.0.1" }, "devDependencies": { diff --git a/packages/sdk/network-utils/package.json b/packages/sdk/network-utils/package.json index 080861ca120..42eb20e8c8a 100644 --- a/packages/sdk/network-utils/package.json +++ b/packages/sdk/network-utils/package.json @@ -1,6 +1,6 @@ { "name": "@celo/network-utils", - "version": "5.0.3-dev", + "version": "5.0.4", "description": "Utilities for fetching static information about the Celo network", "main": "./lib/index.js", "types": "./lib/index.d.ts", @@ -27,7 +27,7 @@ "debug": "^4.1.1" }, "devDependencies": { - "@celo/dev-utils": "0.0.1-dev", + "@celo/dev-utils": "0.0.1", "fetch-mock": "9.10.4" }, "engines": { diff --git a/packages/sdk/phone-utils/package.json b/packages/sdk/phone-utils/package.json index eeeb2a3799b..36863858643 100644 --- a/packages/sdk/phone-utils/package.json +++ b/packages/sdk/phone-utils/package.json @@ -1,6 +1,6 @@ { "name": "@celo/phone-utils", - "version": "5.0.3-dev", + "version": "5.0.4", "description": "Celo phone utils", "author": "Celo", "license": "Apache-2.0", @@ -22,8 +22,8 @@ "lib/**/*" ], "dependencies": { - "@celo/base": "5.0.3-dev", - "@celo/utils": "5.0.3-dev", + "@celo/base": "5.0.4", + "@celo/utils": "5.0.4", "@types/country-data": "^0.0.0", "@types/google-libphonenumber": "^7.4.23", "@types/node": "^18.7.16", diff --git a/packages/sdk/transactions-uri/package.json b/packages/sdk/transactions-uri/package.json index d315eac4596..ee1c3ebc072 100644 --- a/packages/sdk/transactions-uri/package.json +++ b/packages/sdk/transactions-uri/package.json @@ -1,6 +1,6 @@ { "name": "@celo/transactions-uri", - "version": "5.0.3-dev", + "version": "5.0.4", "description": "Celo's transactions uri generation", "main": "./lib/index.js", "types": "./lib/index.d.ts", @@ -26,15 +26,15 @@ "dependencies": { "@types/debug": "^4.1.5", "@types/qrcode": "^1.3.4", - "@celo/base": "5.0.3-dev", - "@celo/connect": "5.0.3-dev", + "@celo/base": "5.0.4", + "@celo/connect": "5.0.4", "bn.js": "4.11.9", "qrcode": "1.4.4", "web3-eth-abi": "1.10.0" }, "devDependencies": { - "@celo/dev-utils": "0.0.1-dev", - "@celo/contractkit": "5.0.3-dev", + "@celo/dev-utils": "0.0.1", + "@celo/contractkit": "5.0.4", "dotenv": "^8.2.0" }, "engines": { diff --git a/packages/sdk/utils/package.json b/packages/sdk/utils/package.json index d4084072cea..1038975a6da 100644 --- a/packages/sdk/utils/package.json +++ b/packages/sdk/utils/package.json @@ -1,6 +1,6 @@ { "name": "@celo/utils", - "version": "5.0.3-dev", + "version": "5.0.4", "description": "Celo common utils", "author": "Celo", "license": "Apache-2.0", @@ -22,7 +22,7 @@ "lib/**/*" ], "dependencies": { - "@celo/base": "5.0.3-dev", + "@celo/base": "5.0.4", "@ethereumjs/util": "8.0.5", "@types/bn.js": "^5.1.0", "@types/elliptic": "^6.4.9", diff --git a/packages/sdk/wallets/wallet-base/package.json b/packages/sdk/wallets/wallet-base/package.json index 166d5c834fc..5d7498db42c 100644 --- a/packages/sdk/wallets/wallet-base/package.json +++ b/packages/sdk/wallets/wallet-base/package.json @@ -1,6 +1,6 @@ { "name": "@celo/wallet-base", - "version": "5.0.3-dev", + "version": "5.0.4", "description": "Wallet base implementation", "author": "Celo", "license": "Apache-2.0", @@ -25,9 +25,9 @@ "viem": "~1.5.4" }, "dependencies": { - "@celo/connect": "5.0.3-dev", - "@celo/base": "5.0.3-dev", - "@celo/utils": "5.0.3-dev", + "@celo/connect": "5.0.4", + "@celo/base": "5.0.4", + "@celo/utils": "5.0.4", "@ethereumjs/util": "8.0.5", "ethereum-cryptography": "^2.1.2", "@types/debug": "^4.1.5", diff --git a/packages/sdk/wallets/wallet-hsm-aws/package.json b/packages/sdk/wallets/wallet-hsm-aws/package.json index 3b463ce62fa..6d77d8501fa 100644 --- a/packages/sdk/wallets/wallet-hsm-aws/package.json +++ b/packages/sdk/wallets/wallet-hsm-aws/package.json @@ -1,6 +1,6 @@ { "name": "@celo/wallet-hsm-aws", - "version": "5.0.3-dev", + "version": "5.0.4", "description": "AWS HSM wallet implementation", "author": "Celo", "license": "Apache-2.0", @@ -22,10 +22,10 @@ "prepublishOnly": "yarn build" }, "dependencies": { - "@celo/utils": "5.0.3-dev", - "@celo/wallet-base": "5.0.3-dev", - "@celo/wallet-remote": "5.0.3-dev", - "@celo/wallet-hsm": "5.0.3-dev", + "@celo/utils": "5.0.4", + "@celo/wallet-base": "5.0.4", + "@celo/wallet-remote": "5.0.4", + "@celo/wallet-hsm": "5.0.4", "@types/debug": "^4.1.5", "@types/secp256k1": "^4.0.0", "aws-sdk": "^2.705.0", @@ -36,7 +36,7 @@ "secp256k1": "^4.0.0" }, "devDependencies": { - "@celo/connect": "5.0.3-dev", + "@celo/connect": "5.0.4", "elliptic": "^6.5.4", "web3": "1.10.0" }, diff --git a/packages/sdk/wallets/wallet-hsm-azure/package.json b/packages/sdk/wallets/wallet-hsm-azure/package.json index 814fecf9a95..dd123b3130f 100644 --- a/packages/sdk/wallets/wallet-hsm-azure/package.json +++ b/packages/sdk/wallets/wallet-hsm-azure/package.json @@ -1,6 +1,6 @@ { "name": "@celo/wallet-hsm-azure", - "version": "5.0.3-dev", + "version": "5.0.4", "description": "Azure HSM wallet implementation", "author": "Celo", "license": "Apache-2.0", @@ -25,11 +25,11 @@ "@azure/identity": "^1.1.0", "@azure/keyvault-keys": "^4.1.0", "@azure/keyvault-secrets": "^4.1.0", - "@celo/utils": "5.0.3-dev", - "@celo/wallet-base": "5.0.3-dev", - "@celo/wallet-remote": "5.0.3-dev", - "@celo/wallet-hsm": "5.0.3-dev", - "@celo/connect": "5.0.3-dev", + "@celo/utils": "5.0.4", + "@celo/wallet-base": "5.0.4", + "@celo/wallet-remote": "5.0.4", + "@celo/wallet-hsm": "5.0.4", + "@celo/connect": "5.0.4", "@types/secp256k1": "^4.0.0", "eth-lib": "^0.2.8", "@ethereumjs/util": "8.0.5", diff --git a/packages/sdk/wallets/wallet-hsm-gcp/package.json b/packages/sdk/wallets/wallet-hsm-gcp/package.json index a13a35aedd1..f8ca23cda0d 100644 --- a/packages/sdk/wallets/wallet-hsm-gcp/package.json +++ b/packages/sdk/wallets/wallet-hsm-gcp/package.json @@ -1,6 +1,6 @@ { "name": "@celo/wallet-hsm-gcp", - "version": "5.0.3-dev", + "version": "5.0.4", "description": "GCP HSM wallet implementation", "author": "Celo", "license": "Apache-2.0", @@ -20,10 +20,10 @@ "prepublishOnly": "yarn build" }, "dependencies": { - "@celo/utils": "5.0.3-dev", - "@celo/wallet-base": "5.0.3-dev", - "@celo/wallet-remote": "5.0.3-dev", - "@celo/wallet-hsm": "5.0.3-dev", + "@celo/utils": "5.0.4", + "@celo/wallet-base": "5.0.4", + "@celo/wallet-remote": "5.0.4", + "@celo/wallet-hsm": "5.0.4", "@google-cloud/kms": "~2.9.0", "@types/debug": "^4.1.5", "@types/secp256k1": "^4.0.0", @@ -34,7 +34,7 @@ "secp256k1": "^4.0.0" }, "devDependencies": { - "@celo/connect": "5.0.3-dev", + "@celo/connect": "5.0.4", "elliptic": "^6.5.4", "web3": "1.10.0" }, diff --git a/packages/sdk/wallets/wallet-hsm/package.json b/packages/sdk/wallets/wallet-hsm/package.json index 5db5375efb9..8e8620f32f9 100644 --- a/packages/sdk/wallets/wallet-hsm/package.json +++ b/packages/sdk/wallets/wallet-hsm/package.json @@ -1,6 +1,6 @@ { "name": "@celo/wallet-hsm", - "version": "5.0.3-dev", + "version": "5.0.4", "description": "HSM wallet implementation utils", "author": "Celo", "license": "Apache-2.0", @@ -22,7 +22,7 @@ "prepublishOnly": "yarn build" }, "dependencies": { - "@celo/base": "5.0.3-dev", + "@celo/base": "5.0.4", "@types/asn1js": "^0.0.2", "@types/secp256k1": "^4.0.0", "@types/debug": "^4.1.5", diff --git a/packages/sdk/wallets/wallet-ledger/package.json b/packages/sdk/wallets/wallet-ledger/package.json index 22510606810..2aa0f413d26 100644 --- a/packages/sdk/wallets/wallet-ledger/package.json +++ b/packages/sdk/wallets/wallet-ledger/package.json @@ -1,6 +1,6 @@ { "name": "@celo/wallet-ledger", - "version": "5.0.3-dev", + "version": "5.0.4", "description": "Ledger wallet implementation", "author": "Celo", "license": "Apache-2.0", @@ -22,10 +22,10 @@ "prepublishOnly": "yarn build" }, "dependencies": { - "@celo/utils": "5.0.3-dev", - "@celo/wallet-base": "5.0.3-dev", - "@celo/wallet-remote": "5.0.3-dev", - "@celo/connect": "5.0.3-dev", + "@celo/utils": "5.0.4", + "@celo/wallet-base": "5.0.4", + "@celo/wallet-remote": "5.0.4", + "@celo/connect": "5.0.4", "@ethereumjs/util": "8.0.5", "@ledgerhq/hw-app-eth": "~5.11.0", "@ledgerhq/hw-transport": "~5.11.0", diff --git a/packages/sdk/wallets/wallet-ledger/src/ledger-wallet.ts b/packages/sdk/wallets/wallet-ledger/src/ledger-wallet.ts index 6c1d113c20c..0ac4d7aa5d4 100644 --- a/packages/sdk/wallets/wallet-ledger/src/ledger-wallet.ts +++ b/packages/sdk/wallets/wallet-ledger/src/ledger-wallet.ts @@ -1,6 +1,6 @@ import { CELO_DERIVATION_PATH_BASE } from '@celo/base/lib/account' import { zeroRange } from '@celo/base/lib/collections' -import { Address, ReadOnlyWallet } from '@celo/connect' +import { Address, CeloTx, EncodedTransaction, ReadOnlyWallet } from '@celo/connect' import { RemoteWallet } from '@celo/wallet-remote' import { TransportError, TransportStatusError } from '@ledgerhq/errors' import Ledger from '@ledgerhq/hw-app-eth' @@ -67,6 +67,19 @@ export class LedgerWallet extends RemoteWallet implements ReadOnly } } + signTransaction(txParams: CeloTx): Promise { + // CeloLedger does not support maxFeePerGas and maxPriorityFeePerGas yet + txParams.gasPrice = txParams.gasPrice ?? txParams.maxFeePerGas + if (txParams.maxFeePerGas || txParams.maxPriorityFeePerGas) { + console.info( + 'maxFeePerGas and maxPriorityFeePerGas are not supported on Ledger yet. Automatically using gasPrice instead.' + ) + delete txParams.maxFeePerGas + delete txParams.maxPriorityFeePerGas + } + return super.signTransaction(txParams) + } + protected async loadAccountSigners(): Promise> { if (!this.ledger) { this.ledger = this.generateNewLedger(this.transport) diff --git a/packages/sdk/wallets/wallet-local/package.json b/packages/sdk/wallets/wallet-local/package.json index eec63cd4eec..3476cb33024 100644 --- a/packages/sdk/wallets/wallet-local/package.json +++ b/packages/sdk/wallets/wallet-local/package.json @@ -1,6 +1,6 @@ { "name": "@celo/wallet-local", - "version": "5.0.3-dev", + "version": "5.0.4", "description": "Local wallet implementation", "author": "Celo", "license": "Apache-2.0", @@ -22,9 +22,9 @@ "prepublishOnly": "yarn build" }, "dependencies": { - "@celo/utils": "5.0.3-dev", - "@celo/connect": "5.0.3-dev", - "@celo/wallet-base": "5.0.3-dev", + "@celo/utils": "5.0.4", + "@celo/connect": "5.0.4", + "@celo/wallet-base": "5.0.4", "eth-lib": "^0.2.8", "@ethereumjs/util": "8.0.5" }, diff --git a/packages/sdk/wallets/wallet-remote/package.json b/packages/sdk/wallets/wallet-remote/package.json index 4bcacb62e1c..46e3427f3e6 100644 --- a/packages/sdk/wallets/wallet-remote/package.json +++ b/packages/sdk/wallets/wallet-remote/package.json @@ -1,6 +1,6 @@ { "name": "@celo/wallet-remote", - "version": "5.0.3-dev", + "version": "5.0.4", "description": "Remote wallet implementation", "author": "Celo", "license": "Apache-2.0", @@ -22,9 +22,9 @@ "prepublishOnly": "yarn build" }, "dependencies": { - "@celo/connect": "5.0.3-dev", - "@celo/utils": "5.0.3-dev", - "@celo/wallet-base": "5.0.3-dev", + "@celo/connect": "5.0.4", + "@celo/utils": "5.0.4", + "@celo/wallet-base": "5.0.4", "@ethereumjs/util": "8.0.5", "@types/debug": "^4.1.5", "eth-lib": "^0.2.8" diff --git a/packages/sdk/wallets/wallet-rpc/package.json b/packages/sdk/wallets/wallet-rpc/package.json index a3b4b3a8650..b69d872ea26 100644 --- a/packages/sdk/wallets/wallet-rpc/package.json +++ b/packages/sdk/wallets/wallet-rpc/package.json @@ -1,6 +1,6 @@ { "name": "@celo/wallet-rpc", - "version": "5.0.3-dev", + "version": "5.0.4", "description": "Geth RPC wallet implementation", "author": "Celo", "license": "Apache-2.0", @@ -22,16 +22,16 @@ "prepublishOnly": "yarn build" }, "dependencies": { - "@celo/connect": "5.0.3-dev", - "@celo/utils": "5.0.3-dev", - "@celo/wallet-base": "5.0.3-dev", - "@celo/wallet-remote": "5.0.3-dev", + "@celo/connect": "5.0.4", + "@celo/utils": "5.0.4", + "@celo/wallet-base": "5.0.4", + "@celo/wallet-remote": "5.0.4", "bignumber.js": "^9.0.0", "debug": "^4.1.1" }, "devDependencies": { - "@celo/dev-utils": "0.0.1-dev", - "@celo/contractkit": "5.0.3-dev" + "@celo/dev-utils": "0.0.1", + "@celo/contractkit": "5.0.4" }, "engines": { "node": ">=8.14.2" From 5e210318a0ed762a7a3e3a8cece024266efca15f Mon Sep 17 00:00:00 2001 From: Aaron DeRuvo Date: Fri, 22 Sep 2023 16:54:34 +0200 Subject: [PATCH 28/31] EXPLICIT Dependencies (#10615) no dep imported shall be excluded from package.json --- dependency-graph.json | 10 ++++- packages/celotool/tslint.json | 6 +++ packages/cli/package.json | 4 ++ packages/dev-utils/package.json | 1 + packages/env-tests/package.json | 3 ++ .../combiner/package.json | 5 +++ .../phone-number-privacy/combiner/tslint.json | 8 +++- .../phone-number-privacy/common/package.json | 3 ++ .../phone-number-privacy/monitor/package.json | 2 + .../phone-number-privacy/signer/package.json | 7 ++++ .../signer/src/tracing.ts | 5 +-- .../phone-number-privacy/signer/tslint.json | 3 +- packages/protocol/tslint.json | 1 + packages/sdk/connect/package.json | 11 +++--- packages/sdk/contractkit/package.json | 1 + .../sdk/contractkit/src/wrappers/Accounts.ts | 2 +- packages/sdk/encrypted-backup/package.json | 2 + packages/sdk/explorer/package.json | 1 + packages/sdk/governance/package.json | 1 + packages/sdk/phone-utils/package.json | 3 +- packages/sdk/utils/package.json | 3 ++ packages/sdk/wallets/wallet-base/package.json | 4 +- .../sdk/wallets/wallet-hsm-aws/package.json | 1 + .../sdk/wallets/wallet-hsm-azure/package.json | 1 + .../sdk/wallets/wallet-hsm-gcp/package.json | 1 + packages/sdk/wallets/wallet-hsm/package.json | 4 ++ .../sdk/wallets/wallet-ledger/package.json | 6 +++ .../sdk/wallets/wallet-remote/package.json | 4 +- packages/sdk/wallets/wallet-rpc/package.json | 6 ++- .../sdk/wallets/wallet-rpc/src/rpc-signer.ts | 2 +- packages/typescript/tslint.json | 5 ++- yarn.lock | 37 ++++++++++++++++++- 32 files changed, 133 insertions(+), 20 deletions(-) diff --git a/dependency-graph.json b/dependency-graph.json index 0e826914ea7..09cb3ad8123 100644 --- a/dependency-graph.json +++ b/dependency-graph.json @@ -19,6 +19,8 @@ "@celo/celocli": { "location": "packages/cli", "dependencies": [ + "@celo/base", + "@celo/connect", "@celo/contractkit", "@celo/cryptographic-utils", "@celo/dev-utils", @@ -96,6 +98,7 @@ "@celo/phone-number-privacy-monitor": { "location": "packages/phone-number-privacy/monitor", "dependencies": [ + "@celo/base", "@celo/contractkit", "@celo/cryptographic-utils", "@celo/encrypted-backup", @@ -152,10 +155,12 @@ "location": "packages/sdk/encrypted-backup", "dependencies": [ "@celo/base", + "@celo/connect", "@celo/dev-utils", "@celo/identity", "@celo/phone-number-privacy-common", - "@celo/utils" + "@celo/utils", + "@celo/wallet-local" ] }, "@celo/explorer": { @@ -246,6 +251,7 @@ "@celo/wallet-hsm-azure": { "location": "packages/sdk/wallets/wallet-hsm-azure", "dependencies": [ + "@celo/base", "@celo/connect", "@celo/utils", "@celo/wallet-base", @@ -272,6 +278,7 @@ "@celo/wallet-ledger": { "location": "packages/sdk/wallets/wallet-ledger", "dependencies": [ + "@celo/base", "@celo/connect", "@celo/utils", "@celo/wallet-base", @@ -297,6 +304,7 @@ "@celo/wallet-rpc": { "location": "packages/sdk/wallets/wallet-rpc", "dependencies": [ + "@celo/base", "@celo/connect", "@celo/contractkit", "@celo/dev-utils", diff --git a/packages/celotool/tslint.json b/packages/celotool/tslint.json index b1e6a53d435..ae0e82b60fb 100644 --- a/packages/celotool/tslint.json +++ b/packages/celotool/tslint.json @@ -4,6 +4,12 @@ "exclude": ["**/__mocks__/**", "**/lcov-report/**"] }, "rules": { + "no-implicit-dependencies": [ + false, + [ + "src" + ] + ], "no-relative-imports": false, "max-classes-per-file": [true, 2], "no-global-arrow-functions": false, diff --git a/packages/cli/package.json b/packages/cli/package.json index 2916d8f20c7..a0fc0b69aab 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -32,6 +32,8 @@ "test": "TZ=UTC jest --runInBand" }, "dependencies": { + "@celo/base": "^5.0.4", + "@celo/connect": "^5.0.4", "@celo/contractkit": "^5.0.4", "@celo/explorer": "^5.0.4", "@celo/governance": "^5.0.4", @@ -43,6 +45,8 @@ "@celo/wallet-ledger": "^5.0.4", "@celo/wallet-local": "^5.0.4", "@ledgerhq/hw-transport-node-hid": "^6.27.4", + "@oclif/parser": "^3.8.16", + "@oclif/errors": "^1.3.6", "@oclif/command": "^1.6.0", "@oclif/config": "^1.6.0", "@oclif/plugin-autocomplete": "^0.1.5", diff --git a/packages/dev-utils/package.json b/packages/dev-utils/package.json index b82e287000c..360bf9326cb 100644 --- a/packages/dev-utils/package.json +++ b/packages/dev-utils/package.json @@ -16,6 +16,7 @@ "lint": "tslint -c tslint.json --project ." }, "dependencies": { + "ganache": "npm:@celo/ganache@7.8.0-unofficial.0", "bignumber.js": "^9.0.0", "web3": "1.10.0", "web3-core-helpers": "1.10.0", diff --git a/packages/env-tests/package.json b/packages/env-tests/package.json index 98bd1346f1d..732839e6f99 100644 --- a/packages/env-tests/package.json +++ b/packages/env-tests/package.json @@ -12,9 +12,11 @@ "@celo/identity": "5.0.4", "@celo/phone-utils": "5.0.4", "@celo/cryptographic-utils": "5.0.4", + "bignumber.js": "^9.0.0", "bunyan": "1.8.12", "bunyan-gke-stackdriver": "0.1.2", "bunyan-debug-stream": "2.0.0", + "dotenv": "8.2.0", "jest": "^29.0.2", "moment": "^2.29.0", @@ -31,6 +33,7 @@ "staging-test": "CELO_ENV=staging CELO_PROVIDER=https://staging-forno.celo-networks-dev.org jest --runInBand" }, "devDependencies": { + "@jest/globals": "^29.5.0", "typescript": "4.4.3" } } \ No newline at end of file diff --git a/packages/phone-number-privacy/combiner/package.json b/packages/phone-number-privacy/combiner/package.json index b9401eaa9a7..47e7b4d68a6 100644 --- a/packages/phone-number-privacy/combiner/package.json +++ b/packages/phone-number-privacy/combiner/package.json @@ -36,16 +36,21 @@ "@celo/poprf": "^0.1.9", "@types/bunyan": "^1.8.8", "@opentelemetry/api": "^1.4.1", + "@opentelemetry/resources": "1.17.0", + "@opentelemetry/instrumentation": "^0.41.2", "@opentelemetry/auto-instrumentations-node": "^0.38.0", "@opentelemetry/exporter-jaeger": "^1.15.2", "@opentelemetry/propagator-ot-trace": "^0.27.0", "@opentelemetry/sdk-metrics": "^1.15.2", "@opentelemetry/sdk-node": "^0.41.2", "@opentelemetry/sdk-trace-web": "^1.15.2", + "@opentelemetry/sdk-trace-node": "1.15.2", "@opentelemetry/sdk-trace-base": "^1.17.0", "@opentelemetry/semantic-conventions": "^1.15.2", "blind-threshold-bls": "npm:@celo/blind-threshold-bls@1.0.0-beta", "dotenv": "^8.2.0", + "io-ts": "2.0.1", + "bunyan": "1.8.12", "express": "^4.17.1", "firebase-admin": "^11.10.1", "firebase-functions": "^4.4.1", diff --git a/packages/phone-number-privacy/combiner/tslint.json b/packages/phone-number-privacy/combiner/tslint.json index 5fc86ecb716..35e8972b590 100644 --- a/packages/phone-number-privacy/combiner/tslint.json +++ b/packages/phone-number-privacy/combiner/tslint.json @@ -1,7 +1,13 @@ { "extends": ["@celo/typescript/tslint.json"], "rules": { + "no-implicit-dependencies": [ + true, + [ + "node:assert" + ] + ], "no-global-arrow-functions": false, - "no-console": true + "no-console": true } } diff --git a/packages/phone-number-privacy/common/package.json b/packages/phone-number-privacy/common/package.json index 0474c2dc025..03fda8fa0a8 100644 --- a/packages/phone-number-privacy/common/package.json +++ b/packages/phone-number-privacy/common/package.json @@ -30,6 +30,9 @@ "dotenv": "^8.2.0", "elliptic": "^6.5.4", "io-ts": "2.0.1", + "fp-ts": "2.1.1", + "express": "^4.17.6", + "node-fetch": "^2.6.9", "is-base64": "^1.1.0", "@opentelemetry/api": "^1.4.1", "@opentelemetry/auto-instrumentations-node": "^0.38.0", diff --git a/packages/phone-number-privacy/monitor/package.json b/packages/phone-number-privacy/monitor/package.json index c2f329e7e54..a3e02aeeff1 100644 --- a/packages/phone-number-privacy/monitor/package.json +++ b/packages/phone-number-privacy/monitor/package.json @@ -22,6 +22,7 @@ "loadTest": "ts-node src/scripts/run-load-test.ts run" }, "dependencies": { + "@celo/base": "^5.0.4", "@celo/contractkit": "^5.0.4", "@celo/cryptographic-utils": "^5.0.4", "@celo/encrypted-backup": "^5.0.4", @@ -29,6 +30,7 @@ "@celo/wallet-local": "^5.0.4", "@celo/phone-number-privacy-common": "^3.0.3", "@celo/utils": "^5.0.4", + "yargs": "^14.0.0", "firebase-admin": "^9.12.0", "firebase-functions": "^3.15.7" }, diff --git a/packages/phone-number-privacy/signer/package.json b/packages/phone-number-privacy/signer/package.json index 34ff3f0e55c..7b047e81a4f 100644 --- a/packages/phone-number-privacy/signer/package.json +++ b/packages/phone-number-privacy/signer/package.json @@ -38,6 +38,8 @@ }, "dependencies": { "@celo/base": "^5.0.4", + "bunyan": "1.8.12", + "bignumber.js": "^9.0.0", "blind-threshold-bls": "npm:@celo/blind-threshold-bls@1.0.0-beta", "@celo/contractkit": "^5.0.4", "@celo/phone-number-privacy-common": "^3.0.3", @@ -48,9 +50,14 @@ "@opentelemetry/api": "^1.4.1", "@opentelemetry/auto-instrumentations-node": "^0.38.0", "@opentelemetry/propagator-ot-trace": "^0.27.0", + "@opentelemetry/resources": "1.17.0", + "@opentelemetry/instrumentation": "^0.41.2", + "@opentelemetry/exporter-jaeger": "^1.15.2", "@opentelemetry/sdk-metrics": "^1.15.1", "@opentelemetry/sdk-node": "^0.41.1", "@opentelemetry/semantic-conventions": "^1.15.1", + "@opentelemetry/sdk-trace-base": "^1.17.0", + "@opentelemetry/sdk-trace-node": "1.15.2", "@opentelemetry/sdk-trace-web": "^1.15.1", "@types/bunyan": "^1.8.8", "aws-sdk": "^2.705.0", diff --git a/packages/phone-number-privacy/signer/src/tracing.ts b/packages/phone-number-privacy/signer/src/tracing.ts index 0d75525c9a7..6bdcd64d327 100644 --- a/packages/phone-number-privacy/signer/src/tracing.ts +++ b/packages/phone-number-privacy/signer/src/tracing.ts @@ -9,8 +9,7 @@ import { getNodeAutoInstrumentations } from '@opentelemetry/auto-instrumentation import { JaegerExporter } from '@opentelemetry/exporter-jaeger' import { registerInstrumentations } from '@opentelemetry/instrumentation' import { Resource } from '@opentelemetry/resources' -import { BatchSpanProcessor } from '@opentelemetry/sdk-trace-base' -import { NodeTracerProvider } from '@opentelemetry/sdk-trace-node' +import { BatchSpanProcessor, NodeTracerProvider } from '@opentelemetry/sdk-trace-node' /* Some instrumentations included in auto-instrumentations-node: - https://www.npmjs.com/package/@opentelemetry/sdk-trace-web @@ -67,7 +66,7 @@ const resource = Resource.default().merge( new Resource({ [SemanticResourceAttributes.SERVICE_NAME]: process.env.TRACING_SERVICE_NAME, // 'testing-signer-tracing', - [SemanticResourceAttributes.SERVICE_VERSION]: '0.1.0', + [SemanticResourceAttributes.SERVICE_VERSION]: '0.1.0', // should be the same as package.json version? }) ) diff --git a/packages/phone-number-privacy/signer/tslint.json b/packages/phone-number-privacy/signer/tslint.json index 5fc86ecb716..0902a7148cd 100644 --- a/packages/phone-number-privacy/signer/tslint.json +++ b/packages/phone-number-privacy/signer/tslint.json @@ -1,7 +1,8 @@ { "extends": ["@celo/typescript/tslint.json"], "rules": { + "no-implicit-dependencies": [true, ["node:http"]], "no-global-arrow-functions": false, - "no-console": true + "no-console": true } } diff --git a/packages/protocol/tslint.json b/packages/protocol/tslint.json index eab49bb0281..7fbfa850046 100644 --- a/packages/protocol/tslint.json +++ b/packages/protocol/tslint.json @@ -5,6 +5,7 @@ "exclude": ["types/contracts/*", "lib/**"] }, "rules": { + "no-implicit-dependencies": false, "no-global-arrow-functions": false, "no-floating-promises": true, "no-string-literal": false, diff --git a/packages/sdk/connect/package.json b/packages/sdk/connect/package.json index a304779dc10..0cacc2c31c0 100644 --- a/packages/sdk/connect/package.json +++ b/packages/sdk/connect/package.json @@ -22,21 +22,22 @@ "prepublishOnly": "yarn build" }, "dependencies": { + "@ethereumjs/util": "8.0.5", "@types/debug": "^4.1.5", "@types/utf8": "^2.1.6", "@celo/base": "5.0.4", "@celo/utils": "5.0.4", "bignumber.js": "^9.0.0", "debug": "^4.1.1", - "utf8": "3.0.0" - }, - "devDependencies": { - "web3": "1.10.0", + "utf8": "3.0.0", "web3-core": "1.10.0", "web3-eth": "1.10.0", - "web3-eth-abi": "1.10.0", "web3-eth-contract": "1.10.0" }, + "devDependencies": { + "web3": "1.10.0", + "web3-eth-abi": "1.10.0" + }, "peerDependencies": { "web3": "1.10.0" }, diff --git a/packages/sdk/contractkit/package.json b/packages/sdk/contractkit/package.json index 8a447d3b783..9bacec7e9ff 100644 --- a/packages/sdk/contractkit/package.json +++ b/packages/sdk/contractkit/package.json @@ -52,6 +52,7 @@ "fetch-mock": "9.10.4", "ganache": "npm:@celo/ganache@7.8.0-unofficial.0", "jest": "^29.0.2", + "bn.js": "^5.1.0", "ts-node": "8.3.0", "typedoc": "^0.19.2", "typedoc-plugin-markdown": "^2.2.16", diff --git a/packages/sdk/contractkit/src/wrappers/Accounts.ts b/packages/sdk/contractkit/src/wrappers/Accounts.ts index ef3c447701f..1a5671982f1 100644 --- a/packages/sdk/contractkit/src/wrappers/Accounts.ts +++ b/packages/sdk/contractkit/src/wrappers/Accounts.ts @@ -8,7 +8,7 @@ import { } from '@celo/utils/lib/signatureUtils' import { soliditySha3 } from '@celo/utils/lib/solidity' import { authorizeSigner as buildAuthorizeSignerTypedData } from '@celo/utils/lib/typed-data-constructors' -import BN from 'bn.js' // just the types +import type BN from 'bn.js' // just the types import { Accounts } from '../generated/Accounts' import { newContractVersion } from '../versions' import { diff --git a/packages/sdk/encrypted-backup/package.json b/packages/sdk/encrypted-backup/package.json index 91d3b40d768..854c42cf104 100644 --- a/packages/sdk/encrypted-backup/package.json +++ b/packages/sdk/encrypted-backup/package.json @@ -25,8 +25,10 @@ "prepublishOnly": "yarn build" }, "dependencies": { + "@celo/connect": "5.0.4", "@celo/base": "5.0.4", "@celo/identity": "5.0.4", + "@celo/wallet-local": "5.0.4", "@celo/phone-number-privacy-common": "^3.0.3", "@celo/poprf": "^0.1.9", "@celo/utils": "5.0.4", diff --git a/packages/sdk/explorer/package.json b/packages/sdk/explorer/package.json index 2fc8e91a901..eddbde15b9b 100644 --- a/packages/sdk/explorer/package.json +++ b/packages/sdk/explorer/package.json @@ -28,6 +28,7 @@ "@celo/utils": "5.0.4", "@types/debug": "^4.1.5", "cross-fetch": "3.0.6", + "bignumber.js": "9.0.0", "debug": "^4.1.1" }, "devDependencies": { diff --git a/packages/sdk/governance/package.json b/packages/sdk/governance/package.json index 1cd38b3740a..f1b116fad35 100644 --- a/packages/sdk/governance/package.json +++ b/packages/sdk/governance/package.json @@ -30,6 +30,7 @@ "@types/debug": "^4.1.5", "@types/inquirer": "^6.5.0", "debug": "^4.1.1", + "bignumber.js": "^9.0.0", "ethereum-cryptography": "1.2.0", "inquirer": "^7.0.5" }, diff --git a/packages/sdk/phone-utils/package.json b/packages/sdk/phone-utils/package.json index 36863858643..26998ad6382 100644 --- a/packages/sdk/phone-utils/package.json +++ b/packages/sdk/phone-utils/package.json @@ -30,7 +30,8 @@ "country-data": "^0.0.31", "fp-ts": "2.1.1", "google-libphonenumber": "^3.2.27", - "io-ts": "2.0.1" + "io-ts": "2.0.1", + "web3-utils": "^1.10.0" }, "devDependencies": { "@celo/typescript": "0.0.1" diff --git a/packages/sdk/utils/package.json b/packages/sdk/utils/package.json index 1038975a6da..a4fd8b5a58b 100644 --- a/packages/sdk/utils/package.json +++ b/packages/sdk/utils/package.json @@ -24,13 +24,16 @@ "dependencies": { "@celo/base": "5.0.4", "@ethereumjs/util": "8.0.5", + "rlp": "^2.2.4", "@types/bn.js": "^5.1.0", "@types/elliptic": "^6.4.9", "@types/node": "^18.7.16", "bignumber.js": "^9.0.0", "elliptic": "^6.5.4", "ethereum-cryptography": "1.2.0", + "bn.js": "4.11.9", "io-ts": "2.0.1", + "fp-ts": "2.1.1", "web3-eth-abi": "1.10.0", "web3-utils": "1.10.0" }, diff --git a/packages/sdk/wallets/wallet-base/package.json b/packages/sdk/wallets/wallet-base/package.json index 5d7498db42c..34e905d7140 100644 --- a/packages/sdk/wallets/wallet-base/package.json +++ b/packages/sdk/wallets/wallet-base/package.json @@ -29,12 +29,14 @@ "@celo/base": "5.0.4", "@celo/utils": "5.0.4", "@ethereumjs/util": "8.0.5", + "@ethereumjs/rlp": "^5.0.0", "ethereum-cryptography": "^2.1.2", "@types/debug": "^4.1.5", "bignumber.js": "^9.0.0", "web3-eth-accounts": "1.10.0", "debug": "^4.1.1", - "eth-lib": "^0.2.8" + "eth-lib": "^0.2.8", + "web3": "1.10.0" }, "engines": { "node": ">=8.14.2" diff --git a/packages/sdk/wallets/wallet-hsm-aws/package.json b/packages/sdk/wallets/wallet-hsm-aws/package.json index 6d77d8501fa..8c5dc8b9f36 100644 --- a/packages/sdk/wallets/wallet-hsm-aws/package.json +++ b/packages/sdk/wallets/wallet-hsm-aws/package.json @@ -38,6 +38,7 @@ "devDependencies": { "@celo/connect": "5.0.4", "elliptic": "^6.5.4", + "dotenv": "^8.2.0", "web3": "1.10.0" }, "engines": { diff --git a/packages/sdk/wallets/wallet-hsm-azure/package.json b/packages/sdk/wallets/wallet-hsm-azure/package.json index dd123b3130f..ad6452a83fa 100644 --- a/packages/sdk/wallets/wallet-hsm-azure/package.json +++ b/packages/sdk/wallets/wallet-hsm-azure/package.json @@ -25,6 +25,7 @@ "@azure/identity": "^1.1.0", "@azure/keyvault-keys": "^4.1.0", "@azure/keyvault-secrets": "^4.1.0", + "@celo/base": "5.0.4", "@celo/utils": "5.0.4", "@celo/wallet-base": "5.0.4", "@celo/wallet-remote": "5.0.4", diff --git a/packages/sdk/wallets/wallet-hsm-gcp/package.json b/packages/sdk/wallets/wallet-hsm-gcp/package.json index f8ca23cda0d..2cb1ea1eece 100644 --- a/packages/sdk/wallets/wallet-hsm-gcp/package.json +++ b/packages/sdk/wallets/wallet-hsm-gcp/package.json @@ -36,6 +36,7 @@ "devDependencies": { "@celo/connect": "5.0.4", "elliptic": "^6.5.4", + "dotenv": "^8.2.0", "web3": "1.10.0" }, "engines": { diff --git a/packages/sdk/wallets/wallet-hsm/package.json b/packages/sdk/wallets/wallet-hsm/package.json index 8e8620f32f9..f7a99450502 100644 --- a/packages/sdk/wallets/wallet-hsm/package.json +++ b/packages/sdk/wallets/wallet-hsm/package.json @@ -29,9 +29,13 @@ "eth-lib": "^0.2.8", "@ethereumjs/util": "8.0.5", "asn1js": "^2.0.26", + "bignumber.js": "^9.0.0", "elliptic": "^6.5.4", "secp256k1": "^4.0.0" }, + "devDependencies": { + "dotenv": "^8.2.0" + }, "engines": { "node": ">=8.14.2" } diff --git a/packages/sdk/wallets/wallet-ledger/package.json b/packages/sdk/wallets/wallet-ledger/package.json index 2aa0f413d26..d077a1ddea2 100644 --- a/packages/sdk/wallets/wallet-ledger/package.json +++ b/packages/sdk/wallets/wallet-ledger/package.json @@ -22,17 +22,23 @@ "prepublishOnly": "yarn build" }, "dependencies": { + "@celo/base": "5.0.4", "@celo/utils": "5.0.4", "@celo/wallet-base": "5.0.4", "@celo/wallet-remote": "5.0.4", "@celo/connect": "5.0.4", "@ethereumjs/util": "8.0.5", "@ledgerhq/hw-app-eth": "~5.11.0", + "@ledgerhq/errors": "^5.50.0", "@ledgerhq/hw-transport": "~5.11.0", "debug": "^4.1.1", "eth-lib": "^0.2.8", "ethereum-cryptography": "1.2.0" }, + "devDependencies": { + "@ledgerhq/hw-transport-node-hid": "^6.27.4", + "web3": "1.10.0" + }, "engines": { "node": ">=8.14.2" } diff --git a/packages/sdk/wallets/wallet-remote/package.json b/packages/sdk/wallets/wallet-remote/package.json index 46e3427f3e6..28c534546c0 100644 --- a/packages/sdk/wallets/wallet-remote/package.json +++ b/packages/sdk/wallets/wallet-remote/package.json @@ -29,7 +29,9 @@ "@types/debug": "^4.1.5", "eth-lib": "^0.2.8" }, - "devDependencies": {}, + "devDependencies": { + "web3": "1.10.0" + }, "engines": { "node": ">=8.14.2" } diff --git a/packages/sdk/wallets/wallet-rpc/package.json b/packages/sdk/wallets/wallet-rpc/package.json index b69d872ea26..2a949f62270 100644 --- a/packages/sdk/wallets/wallet-rpc/package.json +++ b/packages/sdk/wallets/wallet-rpc/package.json @@ -22,6 +22,8 @@ "prepublishOnly": "yarn build" }, "dependencies": { + "@types/bn.js": "^5.1.0", + "@celo/base": "5.0.4", "@celo/connect": "5.0.4", "@celo/utils": "5.0.4", "@celo/wallet-base": "5.0.4", @@ -31,7 +33,9 @@ }, "devDependencies": { "@celo/dev-utils": "0.0.1", - "@celo/contractkit": "5.0.4" + "@celo/contractkit": "5.0.4", + "bn.js": "^5.1.0", + "web3": "1.10.0" }, "engines": { "node": ">=8.14.2" diff --git a/packages/sdk/wallets/wallet-rpc/src/rpc-signer.ts b/packages/sdk/wallets/wallet-rpc/src/rpc-signer.ts index 00fce4de197..d59a7cb965a 100644 --- a/packages/sdk/wallets/wallet-rpc/src/rpc-signer.ts +++ b/packages/sdk/wallets/wallet-rpc/src/rpc-signer.ts @@ -3,7 +3,7 @@ import { CeloTx, EncodedTransaction, RpcCaller, Signer } from '@celo/connect' import { EIP712TypedData } from '@celo/utils/lib/sign-typed-data-utils' import { decodeSig } from '@celo/wallet-base' import BigNumber from 'bignumber.js' -import BN from 'bn.js' +import type BN from 'bn.js' const INCORRECT_PASSWORD_ERROR = 'could not decrypt key with given password' const currentTimeInSeconds = () => Math.floor(Date.now() / 1000) diff --git a/packages/typescript/tslint.json b/packages/typescript/tslint.json index 1a0d6aaf4cc..27167350239 100644 --- a/packages/typescript/tslint.json +++ b/packages/typescript/tslint.json @@ -11,7 +11,10 @@ "no-reference": true, "no-duplicate-super": true, "member-access": false, - "no-implicit-dependencies": false, + "no-implicit-dependencies": [ + true, + "dev" + ], "interface-name": false, "no-submodule-imports": false, "object-literal-sort-keys": false, diff --git a/yarn.lock b/yarn.lock index dbba727f93c..5192ca6bf95 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1267,6 +1267,11 @@ resolved "https://registry.npmjs.org/@ethereumjs/rlp/-/rlp-4.0.1.tgz" integrity sha512-tqsQiBQDQdmPWE1xkkBq4rlSW5QZpLOUJ5RJh2/9fug+q9tnUhuZoVLk7s0scUIKTOzEtR72DFBXI4WiZcMpvw== +"@ethereumjs/rlp@^5.0.0": + version "5.0.0" + resolved "https://registry.yarnpkg.com/@ethereumjs/rlp/-/rlp-5.0.0.tgz#dd81b32b2237bc32fb1b54534f8ff246a6c89d9b" + integrity sha512-WuS1l7GJmB0n0HsXLozCoEFc9IwYgf3l0gCkKVYgR67puVF1O4OpEaN0hWmm1c+iHUHFCKt1hJrvy5toLg+6ag== + "@ethereumjs/statemanager@1.0.4": version "1.0.4" resolved "https://registry.npmjs.org/@ethereumjs/statemanager/-/statemanager-1.0.4.tgz" @@ -1336,6 +1341,15 @@ "@ethereumjs/rlp" "^4.0.1" ethereum-cryptography "^1.1.2" +"@ethereumjs/util@^8.1.0": + version "8.1.0" + resolved "https://registry.yarnpkg.com/@ethereumjs/util/-/util-8.1.0.tgz#299df97fb6b034e0577ce9f94c7d9d1004409ed4" + integrity sha512-zQ0IqbdX8FZ9aw11vP+dZkKDkS+kgIvQPHnSAXzP9pLu+Rfu3D3XEeLbicvoXJTYnhZiPmsZUxgdzXwNKxRPbA== + dependencies: + "@ethereumjs/rlp" "^4.0.1" + ethereum-cryptography "^2.0.0" + micro-ftch "^0.3.1" + "@ethereumjs/vm@npm:@celo/ethereumjs-vm@6.4.1-unofficial.0": version "6.4.1-unofficial.0" resolved "https://registry.npmjs.org/@celo/ethereumjs-vm/-/ethereumjs-vm-6.4.1-unofficial.0.tgz" @@ -8594,7 +8608,7 @@ bn.js@^4.0.0, bn.js@^4.1.0, bn.js@^4.11.0, bn.js@^4.11.6, bn.js@^4.11.8, bn.js@^ resolved "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz" integrity sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA== -bn.js@^5.0.0, bn.js@^5.1.1, bn.js@^5.1.2, bn.js@^5.1.3, bn.js@^5.2.0, bn.js@^5.2.1: +bn.js@^5.0.0, bn.js@^5.1.0, bn.js@^5.1.1, bn.js@^5.1.2, bn.js@^5.1.3, bn.js@^5.2.0, bn.js@^5.2.1: version "5.2.1" resolved "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz" integrity sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ== @@ -12734,7 +12748,7 @@ export-files@^2.0.1: dependencies: lazy-cache "^1.0.3" -express@^4.14.0, express@^4.16.4, express@^4.17.1: +express@^4.14.0, express@^4.16.4, express@^4.17.1, express@^4.17.6: version "4.18.2" resolved "https://registry.npmjs.org/express/-/express-4.18.2.tgz" integrity sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ== @@ -18758,6 +18772,11 @@ methods@^1.1.2, methods@~1.1.2: resolved "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz" integrity sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w== +micro-ftch@^0.3.1: + version "0.3.1" + resolved "https://registry.yarnpkg.com/micro-ftch/-/micro-ftch-0.3.1.tgz#6cb83388de4c1f279a034fb0cf96dfc050853c5f" + integrity sha512-/0LLxhzP0tfiR5hcQebtudP56gUurs2CLkGarnCiB/OqEyUFQ6U3paQi/tgLv0hBJYt2rnr9MNpxz4fiiugstg== + micromatch@^2.3.11, micromatch@^2.3.7: version "2.3.11" resolved "https://registry.npmjs.org/micromatch/-/micromatch-2.3.11.tgz" @@ -27721,6 +27740,20 @@ web3-utils@1.8.2: randombytes "^2.1.0" utf8 "3.0.0" +web3-utils@^1.10.0: + version "1.10.2" + resolved "https://registry.yarnpkg.com/web3-utils/-/web3-utils-1.10.2.tgz#361103d28a94d5e2a87ba15d776a62c33303eb44" + integrity sha512-TdApdzdse5YR+5GCX/b/vQnhhbj1KSAtfrDtRW7YS0kcWp1gkJsN62gw6GzCaNTeXookB7UrLtmDUuMv65qgow== + dependencies: + "@ethereumjs/util" "^8.1.0" + bn.js "^5.2.1" + ethereum-bloom-filters "^1.0.6" + ethereum-cryptography "^2.1.2" + ethjs-unit "0.1.6" + number-to-bn "1.7.0" + randombytes "^2.1.0" + utf8 "3.0.0" + web3-utils@^4.0.5: version "4.0.5" resolved "https://registry.yarnpkg.com/web3-utils/-/web3-utils-4.0.5.tgz#598d0ebbe1463c56ac1e838103a728a0a6bfdad7" From 5bf6fd61ec869c46f8d06ec34c42b34a264081f9 Mon Sep 17 00:00:00 2001 From: soloseng <102702451+soloseng@users.noreply.github.com> Date: Fri, 22 Sep 2023 13:22:15 -0400 Subject: [PATCH 29/31] ODIS E2E test fix (#10574) * prevent usedQuota from being increased when bypassing quota * make result warning optional * add warning to E2E test --- .../combiner/test/end-to-end/pnp.test.ts | 16 +++++++++++----- .../signer/src/pnp/endpoints/sign/action.ts | 4 +++- 2 files changed, 14 insertions(+), 6 deletions(-) diff --git a/packages/phone-number-privacy/combiner/test/end-to-end/pnp.test.ts b/packages/phone-number-privacy/combiner/test/end-to-end/pnp.test.ts index 17c5f0fdb61..63f01d1729f 100644 --- a/packages/phone-number-privacy/combiner/test/end-to-end/pnp.test.ts +++ b/packages/phone-number-privacy/combiner/test/end-to-end/pnp.test.ts @@ -71,7 +71,7 @@ describe(`Running against service deployed at ${combinerUrl} w/ blockchain provi performedQueryCount: res.performedQueryCount, totalQuota: res.totalQuota, remainingQuota: res.totalQuota - res.performedQueryCount, - warnings: [], + warnings: res.warnings ?? [], }) }) @@ -86,7 +86,7 @@ describe(`Running against service deployed at ${combinerUrl} w/ blockchain provi performedQueryCount: res.performedQueryCount, totalQuota: res.totalQuota, remainingQuota: res.totalQuota - res.performedQueryCount, - warnings: [], + warnings: res.warnings ?? [], }) }) @@ -101,7 +101,7 @@ describe(`Running against service deployed at ${combinerUrl} w/ blockchain provi performedQueryCount: res1.performedQueryCount, totalQuota: res1.totalQuota, remainingQuota: res1.totalQuota - res1.performedQueryCount, - warnings: [], + warnings: res1.warnings ?? [], } expect(res1).toStrictEqual(expectedRes) const res2 = await OdisUtils.Quota.getPnpQuotaStatus( @@ -210,7 +210,10 @@ describe(`Running against service deployed at ${combinerUrl} w/ blockchain provi performedQueryCount: startingPerformedQueryCount + 1, totalQuota: startingTotalQuota, remainingQuota: startingTotalQuota - (startingPerformedQueryCount + 1), - warnings: [], + warnings: [ + 'CELO_ODIS_WARN_17 SIGNER Discrepancies detected in signer responses', + 'CELO_ODIS_WARN_18 SIGNER Discrepancy found in signers performed query count measurements', + ], }) }) @@ -233,7 +236,10 @@ describe(`Running against service deployed at ${combinerUrl} w/ blockchain provi performedQueryCount: startingPerformedQueryCount + 1, totalQuota: startingTotalQuota, remainingQuota: startingTotalQuota - (startingPerformedQueryCount + 1), - warnings: [], + warnings: [ + 'CELO_ODIS_WARN_17 SIGNER Discrepancies detected in signer responses', + 'CELO_ODIS_WARN_18 SIGNER Discrepancy found in signers performed query count measurements', + ], }) }) }) diff --git a/packages/phone-number-privacy/signer/src/pnp/endpoints/sign/action.ts b/packages/phone-number-privacy/signer/src/pnp/endpoints/sign/action.ts index 63911081042..f5dd8b4ce4d 100644 --- a/packages/phone-number-privacy/signer/src/pnp/endpoints/sign/action.ts +++ b/packages/phone-number-privacy/signer/src/pnp/endpoints/sign/action.ts @@ -113,7 +113,9 @@ export function pnpSign( signature, ctx ) - usedQuota++ + if (!bypassQuotaForE2ETesting(config.test_quota_bypass_percentage, request.body)) { + usedQuota++ + } } else { Counters.duplicateRequests.inc() logger.info('Request already exists in db. Will service request without charging quota.') From 33eb441dd04eb49d1f9a6c548c0a7ada0980a5eb Mon Sep 17 00:00:00 2001 From: Aaron DeRuvo Date: Mon, 25 Sep 2023 11:07:07 +0200 Subject: [PATCH 30/31] MINOR add cip64 support (#10614) * add cip64 support fix signing test that was supposed to be testing eip1559 dont include fields that are not part of spec in the EncodedTransaction * successfully recover cip64 transactions * add cip64 support dont include fields that are not part of spec in the EncodedTransaction * successfully recover cip64 transactions * while there IS sig here we need to ignore it for the math to check out. --- packages/sdk/connect/src/types.ts | 9 +- .../sdk/connect/src/utils/formatter.test.ts | 23 ++++ .../wallet-base/src/signing-utils.test.ts | 57 +++++--- .../wallets/wallet-base/src/signing-utils.ts | 124 +++++++++++++++--- .../wallet-local/src/local-wallet.test.ts | 53 +++++++- .../wallets/wallet-local/src/signing.test.ts | 3 +- 6 files changed, 226 insertions(+), 43 deletions(-) diff --git a/packages/sdk/connect/src/types.ts b/packages/sdk/connect/src/types.ts index 87201c91590..8312c142f05 100644 --- a/packages/sdk/connect/src/types.ts +++ b/packages/sdk/connect/src/types.ts @@ -65,7 +65,7 @@ export { BlockNumber, EventLog, Log, PromiEvent, Sign } from 'web3-core' export { Block, BlockHeader, Syncing } from 'web3-eth' export { Contract, ContractSendMethod, PastEventOptions } from 'web3-eth-contract' -export type TransactionTypes = 'eip1559' | 'celo-legacy' | 'cip42' +export type TransactionTypes = 'eip1559' | 'celo-legacy' | 'cip42' | 'cip64' interface CommonTXProperties { nonce: string @@ -90,6 +90,11 @@ export interface EIP1559TXProperties extends FeeMarketAndAccessListTXProperties type: 'eip1559' } +export interface CIP64TXProperties extends FeeMarketAndAccessListTXProperties { + feeCurrency: string + type: 'cip64' +} + export interface CIP42TXProperties extends FeeMarketAndAccessListTXProperties { feeCurrency: string gatewayFeeRecipient?: string @@ -110,7 +115,7 @@ export interface LegacyTXProperties extends CommonTXProperties { export interface EncodedTransaction { raw: Hex - tx: LegacyTXProperties | CIP42TXProperties | EIP1559TXProperties + tx: LegacyTXProperties | CIP42TXProperties | EIP1559TXProperties | CIP64TXProperties } export type CeloTxPending = Transaction & Partial diff --git a/packages/sdk/connect/src/utils/formatter.test.ts b/packages/sdk/connect/src/utils/formatter.test.ts index dbd2b3a86a8..0eaeaa92be6 100644 --- a/packages/sdk/connect/src/utils/formatter.test.ts +++ b/packages/sdk/connect/src/utils/formatter.test.ts @@ -67,6 +67,29 @@ describe('inputCeloTxFormatter', () => { `) }) }) + describe('valid cip64 tx', () => { + const cip64 = { + ...base, + maxFeePerGas: '0x3e8', + maxPriorityFeePerGas: '0x3e8', + feeCurrency: '0x11f4d0A3c12e86B4b5F39B213F7E19D048276DAe', + } + it('formats', () => { + expect(inputCeloTxFormatter(cip64)).toMatchInlineSnapshot(` + { + "data": "0x", + "feeCurrency": "0x11f4d0a3c12e86b4b5f39b213f7e19d048276dae", + "from": "0x11f4d0a3c12e86b4b5f39b213f7e19d048276dae", + "gas": "0xf4240", + "maxFeePerGas": "0x3e8", + "maxPriorityFeePerGas": "0x3e8", + "nonce": "0x1", + "to": "0x11f4d0a3c12e86b4b5f39b213f7e19d048276dae", + "value": "0x241", + } + `) + }) + }) describe('valid cip42 tx', () => { const cip42 = { ...base, diff --git a/packages/sdk/wallets/wallet-base/src/signing-utils.test.ts b/packages/sdk/wallets/wallet-base/src/signing-utils.test.ts index ed2ebb402f7..eb1882edce2 100644 --- a/packages/sdk/wallets/wallet-base/src/signing-utils.test.ts +++ b/packages/sdk/wallets/wallet-base/src/signing-utils.test.ts @@ -6,7 +6,7 @@ import { celo } from 'viem/chains' import Web3 from 'web3' import { extractSignature, - getSignerFromTxCIP42, + getSignerFromTxEIP2718TX, isPriceToLow, recoverTransaction, rlpEncodedTx, @@ -139,31 +139,28 @@ describe('rlpEncodedTx', () => { }) describe('when maxFeePerGas and maxPriorityFeePerGas and feeCurrency are provided', () => { - it('orders fields in RLP as specified by CIP42', () => { - const CIP42Transaction = { + it('orders fields in RLP as specified by CIP64', () => { + const CIP64Transaction = { ...eip1559Transaction, feeCurrency: '0x5409ED021D9299bf6814279A6A1411A7e866A631', } - const result = rlpEncodedTx(CIP42Transaction) + const result = rlpEncodedTx(CIP64Transaction) expect(result).toMatchInlineSnapshot(` { - "rlpEncode": "0x7cf8400280630a63945409ed021d9299bf6814279a6a1411a7e866a6318080941be31a94361a391bbafb2a4ccd704f57dc04d4bb893635c9adc5dea0000083abcdefc0", + "rlpEncode": "0x7bf83e0280630a63941be31a94361a391bbafb2a4ccd704f57dc04d4bb893635c9adc5dea0000083abcdefc0945409ed021d9299bf6814279a6a1411a7e866a631", "transaction": { "chainId": 2, "data": "0xabcdef", "feeCurrency": "0x5409ed021d9299bf6814279a6a1411a7e866a631", "from": "0x1be31a94361a391bbafb2a4ccd704f57dc04d4bb", "gas": "0x63", - "gasPrice": "0x", - "gatewayFee": "0x", - "gatewayFeeRecipient": "0x", "maxFeePerGas": "0x0a", "maxPriorityFeePerGas": "0x63", "nonce": 0, "to": "0x1be31a94361a391bbafb2a4ccd704f57dc04d4bb", "value": "0x3635c9adc5dea00000", }, - "type": "cip42", + "type": "cip64", } `) }) @@ -171,30 +168,22 @@ describe('rlpEncodedTx', () => { describe('when maxFeePerGas and maxPriorityFeePerGas are provided', () => { it('orders fields in RLP as specified by EIP1559', () => { - const CIP42Transaction = { - ...eip1559Transaction, - feeCurrency: '0x5409ED021D9299bf6814279A6A1411A7e866A631', - } - const result = rlpEncodedTx(CIP42Transaction) + const result = rlpEncodedTx(eip1559Transaction) expect(result).toMatchInlineSnapshot(` { - "rlpEncode": "0x7cf8400280630a63945409ed021d9299bf6814279a6a1411a7e866a6318080941be31a94361a391bbafb2a4ccd704f57dc04d4bb893635c9adc5dea0000083abcdefc0", + "rlpEncode": "0x02e90280630a63941be31a94361a391bbafb2a4ccd704f57dc04d4bb893635c9adc5dea0000083abcdefc0", "transaction": { "chainId": 2, "data": "0xabcdef", - "feeCurrency": "0x5409ed021d9299bf6814279a6a1411a7e866a631", "from": "0x1be31a94361a391bbafb2a4ccd704f57dc04d4bb", "gas": "0x63", - "gasPrice": "0x", - "gatewayFee": "0x", - "gatewayFeeRecipient": "0x", "maxFeePerGas": "0x0a", "maxPriorityFeePerGas": "0x63", "nonce": 0, "to": "0x1be31a94361a391bbafb2a4ccd704f57dc04d4bb", "value": "0x3635c9adc5dea00000", }, - "type": "cip42", + "type": "eip1559", } `) }) @@ -380,6 +369,32 @@ describe('recoverTransaction', () => { ] `) }) + it('handles cip64 transactions', () => { + const cip64TX = + '0x7bf88282ad5a8063630a94588e4b68193001e4d10928660ab4165b813717c0880de0b6b3a764000083abcdefc094cd2a3d9f938e13cd947ec05abc7fe734df8dd82680a091b5504a59e529e7efa42dbb97fbc3311a91d035c873a94ab0789441fc989f84a02e8254d6b3101b63417e5d496833bc84f4832d4a8bf8a2b83e291d8f38c0f62d' + expect(recoverTransaction(cip64TX)).toMatchInlineSnapshot(` + [ + { + "accessList": [], + "chainId": 44378, + "data": "0xabcdef", + "feeCurrency": "0xcd2a3d9f938e13cd947ec05abc7fe734df8dd826", + "gas": 10, + "maxFeePerGas": 99, + "maxPriorityFeePerGas": 99, + "nonce": 0, + "r": "0x91b5504a59e529e7efa42dbb97fbc3311a91d035c873a94ab0789441fc989f84", + "s": "0x2e8254d6b3101b63417e5d496833bc84f4832d4a8bf8a2b83e291d8f38c0f62d", + "to": "0x588e4b68193001e4d10928660ab4165b813717c0", + "type": "cip64", + "v": 27, + "value": 1000000000000000000, + "yParity": 0, + }, + "0x1Be31A94361a391bBaFB2a4CCd704F57dc04d4bb", + ] + `) + }) it('handles cip42 transactions', () => { const cip42TX = '0x7cf89a82ad5a8063630a94cd2a3d9f938e13cd947ec05abc7fe734df8dd826941be31a94361a391bbafb2a4ccd704f57dc04d4bb82567894588e4b68193001e4d10928660ab4165b813717c0880de0b6b3a764000083abcdefc01ba0c610507b2ac3cff80dd7017419021196807d605efce0970c18cde48db33c27d1a01799477e0f601f554f0ee6f7ac21490602124801e9f7a99d9605249b90f03112' @@ -579,7 +594,7 @@ describe('getSignerFromTx', () => { }, { serializer: celo.serializers?.transaction } ) - expect(getSignerFromTxCIP42(signed)).toEqual(account.address) + expect(getSignerFromTxEIP2718TX(signed)).toEqual(account.address) }) }) diff --git a/packages/sdk/wallets/wallet-base/src/signing-utils.ts b/packages/sdk/wallets/wallet-base/src/signing-utils.ts index f0a6b874886..e69f3b653e5 100644 --- a/packages/sdk/wallets/wallet-base/src/signing-utils.ts +++ b/packages/sdk/wallets/wallet-base/src/signing-utils.ts @@ -129,7 +129,26 @@ export function rlpEncodedTx(tx: CeloTx): RLPEncodedTx { transaction.maxPriorityFeePerGas = stringNumberOrBNToHex(tx.maxPriorityFeePerGas) let rlpEncode: Hex - if (isCIP42(tx)) { + if (isCIP64(tx)) { + // https://github.com/celo-org/celo-proposals/blob/master/CIPs/cip-0064.md + // 0x7b || rlp([chainId, nonce, maxPriorityFeePerGas, maxFeePerGas, gasLimit, to, value, data, accessList, feeCurrency, signatureYParity, signatureR, signatureS]). + rlpEncode = RLP.encode([ + stringNumberToHex(transaction.chainId), + stringNumberToHex(transaction.nonce), + transaction.maxPriorityFeePerGas || '0x', + transaction.maxFeePerGas || '0x', + transaction.gas || '0x', + transaction.to || '0x', + transaction.value || '0x', + transaction.data || '0x', + transaction.accessList || [], + transaction.feeCurrency || '0x', + ]) + delete transaction.gatewayFee + delete transaction.gatewayFeeRecipient + delete transaction.gasPrice + return { transaction, rlpEncode: concatHex([TxTypeToPrefix.cip64, rlpEncode]), type: 'cip64' } + } else if (isCIP42(tx)) { // There shall be a typed transaction with the code 0x7c that has the following format: // 0x7c || rlp([chain_id, nonce, max_priority_fee_per_gas, max_fee_per_gas, gas_limit, feecurrency, gatewayFeeRecipient, gatewayfee, destination, amount, data, access_list, signature_y_parity, signature_r, signature_s]). // This will be in addition to the type 0x02 transaction as specified in EIP-1559. @@ -147,7 +166,8 @@ export function rlpEncodedTx(tx: CeloTx): RLPEncodedTx { transaction.data || '0x', transaction.accessList || [], ]) - return { transaction, rlpEncode: concatHex(['0x7c', rlpEncode]), type: 'cip42' } + delete transaction.gasPrice + return { transaction, rlpEncode: concatHex([TxTypeToPrefix.cip42, rlpEncode]), type: 'cip42' } } else if (isEIP1559(tx)) { // https://eips.ethereum.org/EIPS/eip-1559 // 0x02 || rlp([chain_id, nonce, max_priority_fee_per_gas, max_fee_per_gas, gas_limit, destination, amount, data, access_list, signature_y_parity, signature_r, signature_s]). @@ -162,7 +182,15 @@ export function rlpEncodedTx(tx: CeloTx): RLPEncodedTx { transaction.data || '0x', transaction.accessList || [], ]) - return { transaction, rlpEncode: concatHex(['0x02', rlpEncode]), type: 'eip1559' } + delete transaction.feeCurrency + delete transaction.gatewayFee + delete transaction.gatewayFeeRecipient + delete transaction.gasPrice + return { + transaction, + rlpEncode: concatHex([TxTypeToPrefix.eip1559, rlpEncode]), + type: 'eip1559', + } } else { // This order should match the order in Geth. // https://github.com/celo-org/celo-blockchain/blob/027dba2e4584936cc5a8e8993e4e27d28d5247b8/core/types/transaction.go#L65 @@ -187,6 +215,7 @@ export function rlpEncodedTx(tx: CeloTx): RLPEncodedTx { enum TxTypeToPrefix { 'celo-legacy' = '', cip42 = '0x7c', + cip64 = '0x7b', eip1559 = '0x02', } @@ -255,6 +284,15 @@ function isEIP1559(tx: CeloTx): boolean { return isPresent(tx.maxFeePerGas) && isPresent(tx.maxPriorityFeePerGas) } +function isCIP64(tx: CeloTx) { + return ( + isEIP1559(tx) && + isPresent(tx.feeCurrency) && + !isPresent(tx.gatewayFeeRecipient) && + !isPresent(tx.gatewayFeeRecipient) + ) +} + function isCIP42(tx: CeloTx): boolean { return ( isEIP1559(tx) && @@ -349,10 +387,13 @@ function prefixAwareRLPDecode(rlpEncode: string, type: TransactionTypes): string return type === 'celo-legacy' ? RLP.decode(rlpEncode) : RLP.decode(`0x${rlpEncode.slice(4)}`) } -function correctLengthWithSignatureOf(type: TransactionTypes) { +function correctLengthOf(type: TransactionTypes, includeSig: boolean = true) { switch (type) { + case 'cip64': { + return includeSig ? 13 : 10 + } case 'cip42': - return 15 + return includeSig ? 15 : 12 case 'celo-legacy': case 'eip1559': return 12 @@ -363,9 +404,9 @@ export function extractSignature(rawTx: string) { const type = determineTXType(rawTx) const rawValues = prefixAwareRLPDecode(rawTx, type) const length = rawValues.length - if (correctLengthWithSignatureOf(type) !== length) { + if (correctLengthOf(type) !== length) { throw new Error( - `@extractSignature: provided transaction has ${length} elements but ${type} txs with a signature have ${correctLengthWithSignatureOf( + `@extractSignature: provided transaction has ${length} elements but ${type} txs with a signature have ${correctLengthOf( type )} ${JSON.stringify(rawValues)}` ) @@ -399,6 +440,8 @@ export function recoverTransaction(rawTx: string): [CeloTx, string] { } switch (determineTXType(rawTx)) { + case 'cip64': + return recoverTransactionCIP64(rawTx as Hex) case 'cip42': return recoverTransactionCIP42(rawTx as Hex) case 'eip1559': @@ -433,9 +476,10 @@ export function recoverTransaction(rawTx: string): [CeloTx, string] { } // inspired by @ethereumjs/tx -function getPublicKeyofSignerFromTx(transactionArray: string[]) { - const base = transactionArray.slice(0, 12) // 12 is length of cip42 without vrs fields - const message = concatHex([TxTypeToPrefix.cip42, RLP.encode(base).slice(2)]) +function getPublicKeyofSignerFromTx(transactionArray: string[], type: TransactionTypes) { + // this needs to be 10 for cip64, 12 for cip42 and eip1559 + const base = transactionArray.slice(0, correctLengthOf(type, false)) + const message = concatHex([TxTypeToPrefix[type], RLP.encode(base).slice(2)]) const msgHash = keccak256(hexToBytes(message)) const { v, r, s } = extractSignatureFromDecoded(transactionArray) @@ -451,19 +495,24 @@ function getPublicKeyofSignerFromTx(transactionArray: string[]) { } } -export function getSignerFromTxCIP42(serializedTransaction: string): string { +export function getSignerFromTxEIP2718TX(serializedTransaction: string): string { const transactionArray: any[] = RLP.decode(`0x${serializedTransaction.slice(4)}`) - const signer = getPublicKeyofSignerFromTx(transactionArray) + const signer = getPublicKeyofSignerFromTx( + transactionArray, + determineTXType(serializedTransaction) + ) return toChecksumAddress(Address.fromPublicKey(signer).toString()) } function determineTXType(serializedTransaction: string): TransactionTypes { const prefix = serializedTransaction.slice(0, 4) - if (prefix === '0x02') { + if (prefix === TxTypeToPrefix.eip1559) { return 'eip1559' - } else if (prefix === '0x7c') { + } else if (prefix === TxTypeToPrefix.cip42) { return 'cip42' + } else if (prefix === TxTypeToPrefix.cip64) { + return 'cip64' } return 'celo-legacy' } @@ -523,7 +572,52 @@ function recoverTransactionCIP42(serializedTransaction: Hex): [CeloTxWithSig, st } const signer = - transactionArray.length === 15 ? getSignerFromTxCIP42(serializedTransaction) : 'unsigned' + transactionArray.length === 15 ? getSignerFromTxEIP2718TX(serializedTransaction) : 'unsigned' + return [celoTX, signer] +} + +function recoverTransactionCIP64(serializedTransaction: Hex): [CeloTxWithSig, string] { + const transactionArray: any[] = prefixAwareRLPDecode(serializedTransaction, 'cip64') + debug('signing-utils@recoverTransactionCIP64: values are %s', transactionArray) + if (transactionArray.length !== 13 && transactionArray.length !== 10) { + throw new Error( + `Invalid transaction length for type CIP64: ${transactionArray.length} instead of 13 or 10. array: ${transactionArray}` + ) + } + const [ + chainId, + nonce, + maxPriorityFeePerGas, + maxFeePerGas, + gas, + to, + value, + data, + accessList, + feeCurrency, + vRaw, + r, + s, + ] = transactionArray + + const celoTX: CeloTxWithSig = { + type: 'cip64', + nonce: nonce.toLowerCase() === '0x' ? 0 : parseInt(nonce, 16), + maxPriorityFeePerGas: + maxPriorityFeePerGas.toLowerCase() === '0x' ? 0 : parseInt(maxPriorityFeePerGas, 16), + maxFeePerGas: maxFeePerGas.toLowerCase() === '0x' ? 0 : parseInt(maxFeePerGas, 16), + gas: gas.toLowerCase() === '0x' ? 0 : parseInt(gas, 16), + feeCurrency, + to, + value: value.toLowerCase() === '0x' ? 0 : parseInt(value, 16), + data, + chainId: chainId.toLowerCase() === '0x' ? 0 : parseInt(chainId, 16), + accessList: parseAccessList(accessList), + ...vrsForRecovery(vRaw, r, s), + } + + const signer = + transactionArray.length === 13 ? getSignerFromTxEIP2718TX(serializedTransaction) : 'unsigned' return [celoTX, signer] } diff --git a/packages/sdk/wallets/wallet-local/src/local-wallet.test.ts b/packages/sdk/wallets/wallet-local/src/local-wallet.test.ts index 7f447b18fd8..692c7c9a277 100644 --- a/packages/sdk/wallets/wallet-local/src/local-wallet.test.ts +++ b/packages/sdk/wallets/wallet-local/src/local-wallet.test.ts @@ -1,3 +1,4 @@ +import { StrongAddress } from '@celo/base/lib/address' import { CeloTx, EncodedTransaction, Hex } from '@celo/connect' import { normalizeAddressWith0x, @@ -12,7 +13,6 @@ import { TransactionSerializableEIP1559, parseTransaction } from 'viem' import { privateKeyToAccount } from 'viem/accounts' import Web3 from 'web3' import { LocalWallet } from './local-wallet' -import { StrongAddress } from '@celo/base/lib/address' const CHAIN_ID = 44378 @@ -272,6 +272,35 @@ describe('Local wallet class', () => { ) expect(signedTransaction.raw).toEqual(viemSignedTransaction) }) + test('succeeds with cip64', async () => { + const recoverTransactionCIP64 = { + ...celoTransactionWithGasPrice, + gasPrice: undefined, + gatewayFee: undefined, + gatewayFeeRecipient: undefined, + maxFeePerGas: '99', + maxPriorityFeePerGas: '99', + feeCurrency: '0xCD2a3d9F938E13CD947Ec05AbC7FE734Df8DD826', + } + await expect(wallet.signTransaction(recoverTransactionCIP64)).resolves + .toMatchInlineSnapshot(` + { + "raw": "0x7bf88282ad5a8063630a94588e4b68193001e4d10928660ab4165b813717c0880de0b6b3a764000083abcdefc094cd2a3d9f938e13cd947ec05abc7fe734df8dd82680a091b5504a59e529e7efa42dbb97fbc3311a91d035c873a94ab0789441fc989f84a02e8254d6b3101b63417e5d496833bc84f4832d4a8bf8a2b83e291d8f38c0f62d", + "tx": { + "gas": "0x0a", + "hash": "0x645afc1d19fe805c0c0956e70d5415487bf073741d7b297ccb7e7040c6ce5df6", + "input": "0xabcdef", + "nonce": "0", + "r": "0x91b5504a59e529e7efa42dbb97fbc3311a91d035c873a94ab0789441fc989f84", + "s": "0x2e8254d6b3101b63417e5d496833bc84f4832d4a8bf8a2b83e291d8f38c0f62d", + "to": "0x588e4b68193001e4d10928660ab4165b813717c0", + "v": "0x", + "value": "0x0de0b6b3a7640000", + }, + "type": "cip64", + } + `) + }) test('succeeds with cip42', async () => { const transaction42 = { @@ -279,6 +308,7 @@ describe('Local wallet class', () => { gasPrice: undefined, maxFeePerGas: '99', maxPriorityFeePerGas: '99', + gatewayFee: '0x5678', feeCurrency: '0xCD2a3d9F938E13CD947Ec05AbC7FE734Df8DD826', } await expect(wallet.signTransaction(transaction42)).resolves.toMatchInlineSnapshot(` @@ -343,7 +373,7 @@ describe('Local wallet class', () => { ) }) }) - describe('when using signTransaction with type CIP42', () => { + describe('when using signTransaction with type CIP42/64', () => { let celoTransactionBase: CeloTx let feeCurrency = '0x10c892a6ec43a53e45d0b916b4b7d383b1b78c0f' let maxFeePerGas = '0x100000000' @@ -360,11 +390,26 @@ describe('Local wallet class', () => { data: '0xabcdef', } }) - - describe('when feeCurrency and maxPriorityFeePerGas and maxFeePerGas are set', () => { + describe('when feeCurrency and maxPriorityFeePerGas and maxFeePerGas are set but no gatewayfees', () => { + it('signs as a CIP64 tx', async () => { + const transaction: CeloTx = { + ...celoTransactionBase, + gatewayFee: undefined, + gatewayFeeRecipient: undefined, + feeCurrency, + maxFeePerGas, + maxPriorityFeePerGas, + } + const signedTx: EncodedTransaction = await wallet.signTransaction(transaction) + expect(signedTx.raw).toMatch(/^0x7b/) + }) + }) + describe('when feeCurrency and gatewayFee and maxPriorityFeePerGas and maxFeePerGas are set', () => { it('signs as a CIP42 tx', async () => { const transaction: CeloTx = { ...celoTransactionBase, + gatewayFee: '0x1331', + gatewayFeeRecipient: FEE_ADDRESS, feeCurrency, maxFeePerGas, maxPriorityFeePerGas, diff --git a/packages/sdk/wallets/wallet-local/src/signing.test.ts b/packages/sdk/wallets/wallet-local/src/signing.test.ts index 0fa9af00ffa..ccd53ceb861 100644 --- a/packages/sdk/wallets/wallet-local/src/signing.test.ts +++ b/packages/sdk/wallets/wallet-local/src/signing.test.ts @@ -182,11 +182,12 @@ describe('Transaction Utils', () => { if (celoTransaction.gasPrice != undefined) { description.push(`Testing Legacy with gas price ${celoTransaction.gasPrice}`) } else if ( - celoTransaction.feeCurrency != undefined || celoTransaction.gatewayFeeRecipient !== undefined || celoTransaction.gatewayFee !== undefined ) { description.push('Testing CIP42 with') + } else if (celoTransaction.feeCurrency != undefined) { + description.push('Testing CIP64 with') } else { description.push(`Testing EIP1559 with maxFeePerGas ${celoTransaction.maxFeePerGas}`) } From 1c57785634eb92d303d74c9b196c93f777b818ed Mon Sep 17 00:00:00 2001 From: Nicolas Brugneaux Date: Tue, 26 Sep 2023 09:50:19 +0200 Subject: [PATCH 31/31] chore: add migration notes from contractkit (#10228) * chore: add migration notes from contractkit * chore: split into two files * docs: adjust viem docs using stcelo as feedback * chore: remove deprecation note --- .../sdk/contractkit/MIGRATION-TO-ETHERS.md | 108 ++++++++ packages/sdk/contractkit/MIGRATION-TO-VIEM.md | 232 ++++++++++++++++++ 2 files changed, 340 insertions(+) create mode 100644 packages/sdk/contractkit/MIGRATION-TO-ETHERS.md create mode 100644 packages/sdk/contractkit/MIGRATION-TO-VIEM.md diff --git a/packages/sdk/contractkit/MIGRATION-TO-ETHERS.md b/packages/sdk/contractkit/MIGRATION-TO-ETHERS.md new file mode 100644 index 00000000000..b229ea9cb21 --- /dev/null +++ b/packages/sdk/contractkit/MIGRATION-TO-ETHERS.md @@ -0,0 +1,108 @@ +# Draft: Migration document from Contractkit + +Hello devs 🌱 this is a migration path away from contractkit. This aims to give examples to help you move to [ethers](https://docs.ethers.org/). + +## Initialization + +```diff +- import Web3 from "web3"; +- import { newKitFromWeb3 } from "@celo/contractkit"; + +- const web3 = new Web3("https://alfajores-forno.celo-testnet.org"); +- const kit = newKitFromWeb3(web3); ++ import { providers } from 'ethers' ++ ++ const provider = new providers.JsonRpcProvider('https://alfajores-forno.celo-testnet.org') +``` + +## Basic usage + +While we cannot here show all the use-cases of contrackit or ethers or viem, let's try to give an overview of how they can be used for different goals. + +### Get address + +```diff +- const accounts = await kit.web3.eth.getAccounts(); ++ const accounts = await provider.listAccounts(); +const defaultAccount = accounts[0]; +``` + +### Get wallet + +```diff ++ import { Wallet } from 'ethers' + +- const wallet = kit.getWallet(); ++ const wallet = new Wallet('0x...', provider); +``` + +### Provider methods + +```diff +- const provider = kit.connection.web3.currentProvider +- kit.connection.getBlock(...) +- kit.connection.getTransaction(...) +provider.getBlock(...) +provider.getTransaction(...) +``` + +### Signer methods + +```diff +- const provider = kit.connection.web3.currentProvider +- const signer = provider.getSigner(kit.connection.defaultAccount) ++ const signer = provider.getSigner(address) ++ signer.sendTransaction(...) ++ signer.signMessage(...) +``` + +### Contract interaction + +I'll show the most "basic" interaction, which is a transfer. On CELO, it comes with a twist, you can transfer 4 currencies, CELO, cUSD, cEUR, and cREAL. + +You can get the addresses on these tokens by heading to the explorer and getting their abi and addresses, or you can also use our [registry contract](https://docs.celo.org/developer/contractkit/contracts-wrappers-registry). You can also use the [`@celo/abis`](https://www.npmjs.com/package/@celo/abis) package to get the ABIs directly. + +```ts +// this address is constant +const REGISTRY_CONTRACT_ADDRESS = '0x000000000000000000000000000000000000ce10' +const registry = new Contract(REGISTRY_CONTRACT_ADDRESS, registryAbi, wallet) + +async function getToken(token: string) { + const goldTokenAddress = await registry.getAddressForString(token) + return goldTokenAddress +} +async function CeloTokens(): Promise<[string, string][]> { + return Promise.all( + ['GoldToken', 'StableToken', 'StableTokenEUR', 'StableTokenBRL'].map(async (token) => [ + token, + await getToken(token), + ]) + ) +} +``` + +#### Balance + +```diff ++ import { tokenAbi } from './abi.json' + +- const contract = await kit.contracts.getGoldToken(); ++ const tokenAddress = '0x...' // Grabbed from the registry or from the explorer ++ const contract = new ethers.Contract(tokenAddress, tokenAbi, signer); +const balance = await contract.balanceOf(wallet.address); +``` + +#### Transfer + +Then, use the address of the token that you need and call the transfer method of the contract. + +```diff ++ import { tokenAbi } from './abi.json' + +- const contract = await kit.contracts.getGoldToken(); ++ const tokenAddress = '0x...' // Grabbed from the registry or from the explorer ++ const contract = new ethers.Contract(tokenAddress, tokenAbi, signer); +const txReceipt = await contract.transfer('0x...', amount); +``` + +For more in depth examples, I highly recommend checking out the extensive documentations of both [ethers](https://docs.ethers.org/) and [viem](https://viem.sh/). diff --git a/packages/sdk/contractkit/MIGRATION-TO-VIEM.md b/packages/sdk/contractkit/MIGRATION-TO-VIEM.md new file mode 100644 index 00000000000..85666524721 --- /dev/null +++ b/packages/sdk/contractkit/MIGRATION-TO-VIEM.md @@ -0,0 +1,232 @@ +# Draft: Migration document from Contractkit + +Hello devs 🌱 this is a migration path away from contractkit. This aims to give examples to help you move to [viem](https://viem.sh/). + +## Initialization + +```diff +- import Web3 from "web3"; +- import { newKitFromWeb3 } from "@celo/contractkit"; +- +- const web3 = new Web3("https://alfajores-forno.celo-testnet.org"); +- const kit = newKitFromWeb3(web3); ++ import { createPublicClient, http } from 'viem' ++ import { celo, celoAlfajores } from 'viem/chains' ++ ++ const publicClient = createPublicClient({ ++ chain: celoAlfajores, // or celo for celo's mainnet ++ transport: http() ++ }) +``` + +## Basic usage + +While we cannot here show all the use-cases of contrackit or ethers or viem, let's try to give an overview of how they can be used for different goals. + +### Get address + +With viem: + +```diff +- const accounts = await kit.web3.eth.getAccounts(); ++ const accounts = await publicClient.getAddresses() +const defaultAccount = accounts[0]; +``` + +### Get wallet + +With viem: + +> [viem does not full support](<[source](https://viem.sh/docs/ethers-migration.html#viem-11)>) client-side signing (it's coming shortly!) – until then, you can use an Ethers Wallet, however it does support `signMessage` and `signTypedData` already. + +```diff ++ import { privateKeyToAccount } from 'viem/accounts' ++ ++ const privateKey = "0x..."; ++ const walletClient = createWalletClient({ ++ transport: http(celoAlfajores.rpcUrls.default.http[0] as string), ++ chain: celoAlfajores, ++ }); ++ const account = privateKeyToAccount(privateKey); ++ await walletClient.signMessage({ ++ account, ++ message: 'hello world', ++ }) +``` + +### Provider methods + +```diff +- const provider = kit.connection.web3.currentProvider +- kit.connection.getBlock(...) +- kit.connection.getTransaction(...) ++ const block = await publicClient.getBlock() ++ /** ++ * { ++ * baseFeePerGas: 10000n, ++ * number: 1234n, ++ * parentHash: "0x....", ++ * ... ++ * } ++ */ ++ const tx = await publicClient.getTransaction({ ++ hash: "0x...", ++ }) ++ /** ++ * { ++ * blockHash: '0x...', ++ * blockNumber: 1234n, ++ * from: '0x...', ++ * ... ++ * } ++ */ +``` + +### Signer methods + +```diff +- const provider = kit.connection.web3.currentProvider +- const signer = provider.getSigner(kit.connection.defaultAccount) ++ const [account] = await walletClient.getAddresses() ++ const hash = await walletClient.sendTransaction({ account, to: "0x...", value: 1000n }) +``` + +### Contract interaction + +I'll show the most "basic" interaction, which is a transfer. On CELO, it comes with a twist, you can transfer 4 currencies, CELO, cUSD, cEUR, and cREAL. + +You can get the addresses on these tokens by heading to the explorer and getting their abi and addresses, or you can also use our [registry contract](https://docs.celo.org/developer/contractkit/contracts-wrappers-registry). You can also use the [`@celo/abis`](https://www.npmjs.com/package/@celo/abis) package to get the ABIs directly. + +```ts +import { getContract } from 'viem' +import { registryABI } from '@celo/abis/types/viem' + +// this address is constant +const REGISTRY_CONTRACT_ADDRESS = '0x000000000000000000000000000000000000ce10' +const registryContract = getContract({ + address: REGISTRY_CONTRACT_ADDRESS, + abi: registryABI, + publicClient, +}) + +async function CeloTokens(): Promise<[string, string][]> { + return Promise.all( + ['GoldToken', 'StableToken', 'StableTokenEUR', 'StableTokenBRL'].map(async (token) => [ + token, + await registryContract.read.getAddressForString(token), + ]) + ) +} +``` + +#### Balance + +```diff ++ import { stableTokenABI } from '@celo/abis/types/viem' + +- const contract = await kit.contracts.getGoldToken(); +- const balance = await contract.balanceOf(wallet.address); ++ const tokenAddresses = await CeloTokens(); ++ const cUSD = tokenAddresses["StableToken] ++ const balance = await client.readContract({ ++ abi: tokenAbi, ++ address: cUSD, ++ functionName: "balanceOf", ++ args: [account.address], ++ }); +``` + +#### Transfer + +Then, use the address of the token that you need and call the transfer method of the contract. + +```diff ++ import { stableTokenABI } from '@celo/abis/types/viem' +- const CELO = await kit.contracts.getGoldToken(); +- const txReceipt = await CELO.transfer('0x...', amount) ++ const tokenAddresses = await CeloTokens(); ++ const cUSD = tokenAddresses["StableToken] ++ const { request } = await walletClient.simulateContract({ ++ abi, ++ address: cUSD, ++ functionName: 'transfer', ++ args: [ ++ '0x...', // to address ++ amount: 1000n, ++ ], ++ account: '0x...', // from address ++ }) ++ const hash = await walletClient.sendTransaction(request); +``` + +#### Multicall + +While contractkit didn't directly support multicall, you could use libraries such as `@dopex-io/web3-multicall` as such: + +```ts +import Multicall from '@dopex-io/web3-multicall' +const MULTICALL_ADDRESS = '0xcA11bde05977b3631167028862bE2a173976CA11' // same on mainnet and alfajores +const multicall = new Multicall({ + provider, + chainId, + multicallAddress: MULTICALL_ADDRESS, +}) +const governance = await kit.contracts._web3Contracts.getGovernance() +const stageTxs = _dequeue.map((proposalId) => governance.methods.getProposalStage(proposalId)) +const stages: string[] = await multicall.aggregate(stageTxs) +``` + +You now can use `viem` directly to multicall since they have the address configured in the `viem/chains` files. + +```ts +const governanceAddress = await registryContract.read.getAddressForString(['Governance']) +const governanceContract = getContract({ + address: governanceAddress, + abi: governanceABI, + publicClient, +}) +const _dequeue = await governanceContract.read.getDequeue() +const stageCalls = _dequeue.map((proposalId) => ({ + address: governanceAddress, + abi: governanceABI, + functionName: 'getProposalStage', + args: [proposalId], +})) +const stages = (await publicClient.multicall({ contracts: stageCalls })).map((x) => x.result) +``` + +#### Fee Currency + +With Viem's built in Celo transaction serializer and Celo block/transaction formatters it is easy to build a wallet that supports Celo's ability to pay gas fees with various erc20 tokens. Simply, import a Celo chain from `viem/chain` and pass it to Viem's `createWalletClient`. Once the client is created you can add the feeCurrency field to your transaction with the address of the token you want to use for gas. + +```ts + import { celo } from 'viem/chains' + import { createWalletClient, privateKeyToAccount, type SendTransactionParameters, http } from 'viem' + + const account = privateKeyToAccount(PRIVATE_KEY) + + // ALFAJORES ADDRESS: Celo Mainnet can be fetched from the registry + const cUSDAddress = '0x874069Fa1Eb16D44d622F2e0Ca25eeA172369bC1' + + const localAccountClient = createWalletClient({ + account, + chain: celo, + }) + + const sendTransaction = (tx: SendTransactionParameters) => { + return localAccountClient.sendTransaction(tx) + } + + const hash = await sendTransaction({ + feeCurrency: cUSDAddress, + value: BigInt(100000000), + to: '0x22579CA45eE22E2E16dDF72D955D6cf4c767B0eF', + }) +``` + +### Further reading + +For more in depth examples and documentation about viem specifically, I highly recommend checking out the extensive documentations of [viem](https://viem.sh/). + +Another interesting application to help you migrate could be StCelo-v2. +You can checkout the changes going from `react-celo` + `contractkit` to `rainbowkit` + `wagmi` + `viem` in [this pull-request](https://github.com/celo-org/staked-celo-web-app/pull/129).