diff --git a/package.json b/package.json index e50372b..4ca9f97 100644 --- a/package.json +++ b/package.json @@ -59,7 +59,9 @@ "@project-serum/sol-wallet-adapter": "^0.1.4", "@solana/web3.js": "^0.90.0", "bn.js": "^5.1.2", - "buffer-layout": "^1.2.0" + "buffer-layout": "^1.2.0", + "borsh": "https://github.com/defactojob/borsh-js#field-mapper" + }, "browserslist": [ ">0.2%", diff --git a/src/client.ts b/src/client.ts index ab595d8..4aab067 100644 --- a/src/client.ts +++ b/src/client.ts @@ -19,19 +19,13 @@ import { WideBits, } from './layout'; import BN from 'bn.js'; -import { - createAccountInstruction, - decodeAggregatorInfo, - getMintDecimals, - nativeToUi, - uiToNative, - zeroKey, -} from './utils'; +import { createAccountInstruction, decodeAggregatorInfo, nativeToUi, uiToNative, zeroKey } from './utils'; import { Market, OpenOrders, Orderbook } from '@project-serum/serum'; import { SRM_DECIMALS, TOKEN_PROGRAM_ID } from '@project-serum/serum/lib/token-instructions'; import { Order } from '@project-serum/serum/lib/market'; import Wallet from '@project-serum/sol-wallet-adapter'; import { makeCancelOrderInstruction, makeSettleFundsInstruction } from './instruction'; +import { Aggregator } from './schema' export class MangoGroup { @@ -51,6 +45,8 @@ export class MangoGroup { maintCollRatio!: number; initCollRatio!: number; srmVault!: PublicKey; + admin!: PublicKey; + borrowLimits!: number[]; mintDecimals!: number[]; oracleDecimals!: number[]; @@ -62,8 +58,13 @@ export class MangoGroup { async getPrices( connection: Connection, ): Promise { - const oracleAccs = await getMultipleAccounts(connection, this.oracles); - return oracleAccs.map((oa) => decodeAggregatorInfo(oa.accountInfo).submissionValue).concat(1.0) + + const aggs = await Promise.all(this.oracles.map((pk) => (Aggregator.loadWithConnection(pk, connection)))) + return aggs.map((agg) => (agg.answer.median.toNumber())).concat(1.0) + + // const oracleAccs = await getMultipleAccounts(connection, this.oracles); + // return oracleAccs.map((oa) => decodeAggregatorInfo(oa.accountInfo).submissionValue).concat(1.0) + } getMarketIndex(spotMarket: Market): number { @@ -85,6 +86,9 @@ export class MangoGroup { } getBorrowRate(tokenIndex: number): number { + const optimalUtil = 0.7 + const optimalRate = 0.1 + const index = this.indexes[tokenIndex] return 0.0 // TODO } getDepositRate(tokenIndex: number): number { @@ -308,6 +312,17 @@ export class MangoClient { return await sendAndConfirmRawTransaction(connection, rawTransaction, {skipPreflight: true}) } + + async initMangoGroup( + connection: Connection, + programId: PublicKey, + payer: PublicKey, + + ) { + + throw new Error("Not Implemented"); + } + async initMarginAccount( connection: Connection, programId: PublicKey, @@ -371,7 +386,6 @@ export class MangoClient { ] const data = encodeMangoInstruction({Deposit: {quantity: nativeQuantity}}) - const instruction = new TransactionInstruction( { keys, data, programId }) const transaction = new Transaction() diff --git a/src/ids.json b/src/ids.json index 2521892..e3fdcb9 100644 --- a/src/ids.json +++ b/src/ids.json @@ -10,15 +10,15 @@ "fee_symbol": "SRM", "mango_groups": { "BTC_ETH_USDC": { - "mango_group_pk": "6hcULrp3j5JZS7PDK3XYehzdbXZoqaiKPNNGC2sF4oz2", + "mango_group_pk": "6C29D6jG975kRvfWsPEZkjLicEM8ZHv6qLr8FoK7BraR", "mint_pks": [ "C6kYXcaRUMqeBF5fhg165RWU7AnpT9z92fvKNoMqjmz6", "8p968u9m7jZzKSsqxFDqki69MjqdFkwPM9FN4AN8hvHR", "Fq939Y5hycK62ZGwBjftLY2VyxqAQ8f1MxRqBMdAaBS7" ], "oracle_pks": [ - "WZsNe3EBSwg1kRccs7M86DYBeSzYzwrkVtEp8iVb6RJ", - "DBiZZ6riT6QVoGVBMBnSsYFwkie1GAxWdac3NCpyrDR1" + "3iQqi9nBREjVvKtVWd44Jcbvs39CDAe6zSd613QzxuPE", + "5qxMJFJXB42j3kKo3FbTughREjziottXHcgLnjCNwjEs" ], "spot_market_pks": [ "DY6X83vWk5VdHQEtVxFdecmEsGXHyLskkeQeo8BHn75s", @@ -30,16 +30,16 @@ "USDC": "Fq939Y5hycK62ZGwBjftLY2VyxqAQ8f1MxRqBMdAaBS7" }, "vault_pks": [ - "HHZCZBqkNrJp51g6T5Gu4eCVrCNfSJekCMgx4cjMDBJC", - "GCa1SdEaod5VucgJoCvc9wFSiX4G7i5GpDbtPbhBFCHY", - "134B3occRaHiiMxo1M5GXavW7ocWgwR6951951LU5Vub" + "CHBmctN3PsBUTRWK2KqSGMrYjVNpsLZqT2onzHSNthRo", + "G5A19enx4eouJXwxYeijMCUR9sft7vUAvQtrrACovtXx", + "2rJhAgrAGhiE3yTo7AopwdifnS4E7ws4HEV3oLPouBWi" ] } }, "mango_program_id": "AHKufSeSqvjehJcW1uTy1RKhV4BafbpQxVGXGHn7G3hX", "oracles": { - "BTC/USDC": "WZsNe3EBSwg1kRccs7M86DYBeSzYzwrkVtEp8iVb6RJ", - "ETH/USDC": "DBiZZ6riT6QVoGVBMBnSsYFwkie1GAxWdac3NCpyrDR1" + "BTC/USDC": "3iQqi9nBREjVvKtVWd44Jcbvs39CDAe6zSd613QzxuPE", + "ETH/USDC": "5qxMJFJXB42j3kKo3FbTughREjziottXHcgLnjCNwjEs" }, "spot_markets": { "BTC/USDC": "DY6X83vWk5VdHQEtVxFdecmEsGXHyLskkeQeo8BHn75s", diff --git a/src/index.ts b/src/index.ts index ec52879..5125f05 100644 --- a/src/index.ts +++ b/src/index.ts @@ -1,15 +1,50 @@ import { MangoClient, MangoGroup } from './client'; -import { Account, Connection, PublicKey } from '@solana/web3.js'; -import * as fs from 'fs'; -import { Market } from '@project-serum/serum'; import { NUM_TOKENS } from './layout'; export { MangoClient, MangoGroup, MarginAccount } from './client'; export { MangoIndexLayout, MarginAccountLayout, MangoGroupLayout } from './layout'; export { NUM_TOKENS } from './layout'; -import IDS from './ids.json'; -export { IDS }; +import IDS from "./ids.json"; +// import { Connection, PublicKey } from '@solana/web3.js'; +// import { Aggregator } from './schema'; +export { IDS } + +// +// async function testMangoGroup() { +// const cluster = "devnet"; +// const client = new MangoClient(); +// const clusterIds = IDS[cluster] +// +// const connection = new Connection(IDS.cluster_urls[cluster], 'singleGossip') +// const mangoGroupPk = new PublicKey(clusterIds.mango_groups.BTC_ETH_USDC.mango_group_pk); +// const mangoProgramId = new PublicKey(clusterIds.mango_program_id); +// +// const mangoGroup = await client.getMangoGroup(connection, mangoGroupPk) +// +// for (let i = 0; i < NUM_TOKENS; i++) { +// console.log(nativeToUi(mangoGroup.borrowLimits[i], mangoGroup.mintDecimals[i])) +// } +// +// } +// testMangoGroup() + +// async function testSolink() { +// const cluster = "devnet"; +// const client = new MangoClient(); +// const clusterIds = IDS[cluster] +// +// const connection = new Connection(IDS.cluster_urls[cluster], 'singleGossip') +// const mangoGroupPk = new PublicKey(clusterIds.mango_groups.BTC_ETH_USDC.mango_group_pk); +// const mangoProgramId = new PublicKey(clusterIds.mango_program_id); +// const oraclePk = new PublicKey(IDS.devnet.oracles['BTC/USDC']) +// const agg = await Aggregator.loadWithConnection(oraclePk, connection) +// // const agg = await Aggregator.loadWithConnection(oraclePk, connection) +// console.log(agg.answer.median.toNumber()) +// } +// +// testSolink() + // async function main() { // const cluster = "devnet"; diff --git a/src/instruction.ts b/src/instruction.ts index 2740dcf..ea11e39 100644 --- a/src/instruction.ts +++ b/src/instruction.ts @@ -3,6 +3,40 @@ import { PublicKey, SYSVAR_CLOCK_PUBKEY, TransactionInstruction } from '@solana/ import { Order } from '@project-serum/serum/lib/market'; import { encodeMangoInstruction } from './layout'; import { TOKEN_PROGRAM_ID } from '@project-serum/serum/lib/token-instructions'; +import BN from 'bn.js'; + +// export function makeInitMangoGroupInstruction( +// programId: PublicKey, +// mangoGroupPk: PublicKey, +// signerKey: PublicKey, +// dexProgramId: PublicKey, +// srmVaultPk: PublicKey, +// mintPks: PublicKey[], +// vaultPks: PublicKey[], +// spotMarketPks: PublicKey[], +// oraclePks: PublicKey[], +// signerNonce: BN, +// maintCollRatio: number, +// initCollRatio: number +// ): TransactionInstruction { +// +// new BN() +// const keys = [ +// { isSigner: false, isWritable: true, pubkey: mangoGroupPk}, +// { isSigner: true, isWritable: false, pubkey: ownerPk }, +// { isSigner: false, isWritable: true, pubkey: marginAccountPk }, +// { isSigner: false, isWritable: false, pubkey: SYSVAR_CLOCK_PUBKEY }, +// { isSigner: false, isWritable: false, pubkey: dexProgramId }, +// { isSigner: false, isWritable: true, pubkey: spotMarketPk }, +// { isSigner: false, isWritable: true, pubkey: bidsPk }, +// { isSigner: false, isWritable: true, pubkey: asksPk }, +// { isSigner: false, isWritable: true, pubkey: openOrdersPk }, +// { isSigner: false, isWritable: false, pubkey: signerKey }, +// { isSigner: false, isWritable: true, pubkey: eventQueuePk }, +// ] +// +// +// } export function makeCancelOrderInstruction( programId: PublicKey, diff --git a/src/layout.ts b/src/layout.ts index b7ccd09..5c718dd 100644 --- a/src/layout.ts +++ b/src/layout.ts @@ -135,6 +135,8 @@ export const MangoGroupLayout = struct([ U64F64('maintCollRatio'), U64F64('initCollRatio'), publicKeyLayout('srmVault'), + publicKeyLayout('admin'), + seq(u64(), NUM_TOKENS, 'borrowLimits'), seq(u8(), NUM_TOKENS, 'mintDecimals'), seq(u8(), NUM_MARKETS, 'oracleDecimals'), seq(u8(), MANGO_GROUP_PADDING, 'padding') @@ -192,7 +194,8 @@ export function selfTradeBehaviorLayout(property) { export const MangoInstructionLayout = union(u32('instruction')) -MangoInstructionLayout.addVariant(0, struct([]), 'InitMangoGroup') +MangoInstructionLayout.addVariant(0, struct([]), 'InitMangoGroup') // TODO this is unimplemented + MangoInstructionLayout.addVariant(1, struct([]), 'InitMarginAccount') MangoInstructionLayout.addVariant(2, struct([u64('quantity')]), 'Deposit') MangoInstructionLayout.addVariant(3, struct([u64('quantity')]), 'Withdraw') @@ -230,6 +233,8 @@ MangoInstructionLayout.addVariant(11, ) MangoInstructionLayout.addVariant(12, struct([u64('clientId')]), 'CancelOrderByClientId') +MangoInstructionLayout.addVariant(13, struct([u64('tokenIndex'), u64('borrowLimit')]), 'ChangeBorrowLimit') + // @ts-ignore const instructionMaxSpan = Math.max(...Object.values(MangoInstructionLayout.registry).map((r) => r.span)); diff --git a/src/schema.ts b/src/schema.ts new file mode 100644 index 0000000..0d1e3ce --- /dev/null +++ b/src/schema.ts @@ -0,0 +1,406 @@ +import BN from "bn.js" +import { deserialize, serialize } from "borsh" +import { Connection, PublicKey } from '@solana/web3.js'; + + +// const conn = new Connection("https://devnet.solana.com", 'singleGossip') + +const MAX_ORACLES = 13 + +const boolMapper = { + encode: boolToInt, + decode: intToBool, +} + +const pubkeyMapper = { + encode: (key: PublicKey) => { + // if (key.constructor == PublicKey) { + // // key. + // } else { + // key + // } + // TODO: support either account or public key + return key.toBuffer() + }, + + decode: (buf: Uint8Array) => { + return new PublicKey(buf) + }, +} + +// support strings that can be contained in at most 32 bytes +const str32Mapper = { + encode: (str: String) => { + str = str.substr(0, 32).padEnd(32) + return Buffer.from(str, "utf8").slice(0, 32) // truncate at 32 bytes + }, + + decode: (bytes: Uint8Array) => { + return Buffer.from(bytes).toString("utf8").trim() + }, +} + +const u64Date = { + encode: (date: Date) => { + return new BN(Math.floor(date.getTime() / 1000)) + }, + + decode: (unixtime: BN) => { + return new Date(unixtime.toNumber() * 1000) + }, +} + +export abstract class Serialization { + public static async loadWithConnection( + this: { new (data: any): T }, + key: PublicKey, + connection: Connection + ): Promise { + const info = await connection.getAccountInfo(key) + if (!info) { + throw new Error("account does not exist") + } + + return deserialize(schema, this, info.data) + } + // public static async load( + // this: { new (data: any): T }, + // key: PublicKey + // ): Promise { + // const info = await conn.getAccountInfo(key, "recent") + // if (!info) { + // throw new Error("account does not exist") + // } + // + // return deserialize(schema, this, info.data) + // } + + public static deserialize(this: { new (data: any): T }, data: Buffer): T { + return deserialize(schema, this, data) + } + + public static serialize( + this: { new (data: any): T }, + data: object + ): Buffer { + return new this(data).serialize() + } + + public serialize(): Buffer { + let buf = Buffer.from(serialize(schema, this)) + if (buf.length == 0) { + throw new Error("serialized buffer is 0. something wrong with schema") + } + return buf + } + + // public toJSON(pretty = true) { + // return JSON.stringify( + // this[Serialization.DATA_KEY], + // jsonReplacer, + // pretty ? 2 : 0 + // ) + // } + + // public static DATA_KEY = Symbol("DATA") + + constructor(data) { + // this[Serialization.DATA_KEY] = data + Object.assign(this, data) + } +} + +class Submission { + public updatedAt!: BN + public value!: BN + public oracle!: PublicKey + + public static schema = { + kind: "struct", + fields: [ + ["updatedAt", "u64"], + ["value", "u64"], + ["oracle", [32], pubkeyMapper], + ], + } + + constructor(data: any) { + Object.assign(this, data) + } +} + +export interface IAggregatorConfig { + decimals: number + description: string + restartDelay: number + rewardAmount: number + maxSubmissions: number + minSubmissions: number + rewardTokenAccount: PublicKey +} + +export class AggregatorConfig + extends Serialization + implements IAggregatorConfig { + public decimals!: number + public description!: string + public restartDelay!: number + public rewardAmount!: number + public maxSubmissions!: number + public minSubmissions!: number + public rewardTokenAccount!: PublicKey + + public static schema = { + kind: "struct", + fields: [ + ["description", [32], str32Mapper], + ["decimals", "u8"], + ["restartDelay", "u8"], + ["maxSubmissions", "u8"], + ["minSubmissions", "u8"], + ["rewardAmount", "u64"], + ["rewardTokenAccount", [32], pubkeyMapper], + ], + } +} + +export class Submissions extends Serialization { + public isInitialized!: boolean + public submissions!: Submission[] + + public static size = 625 + public static schema = { + kind: "struct", + fields: [ + ["isInitialized", "u8", boolMapper], + ["submissions", [Submission, MAX_ORACLES]], + ], + } + + // if not already submitted, and has empty spot + public canSubmit(pk: PublicKey, cfg: AggregatorConfig): boolean { + if (this.hadSubmitted(pk)) { + return false + } + + let emptyIndex = this.submissions.findIndex((s) => { + return s.updatedAt.isZero() + }) + + return emptyIndex > 0 && emptyIndex < cfg.maxSubmissions + } + + public hadSubmitted(pk: PublicKey): boolean { + return !!this.submissions.find((s) => { + return s.oracle.equals(pk) + }) + } +} + +export class Round extends Serialization { + public id!: BN + public createdAt!: BN + public updatedAt!: BN + + public static schema = { + kind: "struct", + fields: [ + ["id", "u64"], + ["createdAt", "u64"], + ["updatedAt", "u64"], + ], + } +} + +export class Answer extends Serialization { + public roundID!: BN + public median!: BN + public createdAt!: BN + public updatedAt!: BN + + public static schema = { + kind: "struct", + fields: [ + ["roundID", "u64"], + ["median", "u64"], + ["createdAt", "u64"], + ["updatedAt", "u64"], + ], + } +} + +export class Aggregator extends Serialization { + public static size = 229 + + public config!: AggregatorConfig + public roundSubmissions!: PublicKey + public answerSubmissions!: PublicKey + public answer!: Answer + public round!: Round + + public static schema = { + kind: "struct", + fields: [ + ["config", AggregatorConfig], + ["isInitialized", "u8", boolMapper], + ["owner", [32], pubkeyMapper], + ["round", Round], + ["roundSubmissions", [32], pubkeyMapper], + ["answer", Answer], + ["answerSubmissions", [32], pubkeyMapper], + ], + } + + +} + +abstract class InstructionSerialization extends Serialization { + public serialize(): Buffer { + return new Instruction({ [this.constructor.name]: this }).serialize() + } +} + +export class Initialize extends InstructionSerialization { + // public submitInterval!: number + // public minSubmissionValue!: number + // public maxSubmissionValue!: number + // public submissionDecimals!: number + // /// A short description of what is being reported + // public description!: string + + public static schema = { + kind: "struct", + fields: [["config", AggregatorConfig]], + } +} + +export class Configure extends InstructionSerialization { + public static schema = { + kind: "struct", + fields: [["config", AggregatorConfig]], + } +} + +export class AddOracle extends InstructionSerialization { + public static schema = { + kind: "struct", + fields: [["description", [32], str32Mapper]], + } +} + +export class RemoveOracle extends InstructionSerialization { + public static schema = { + kind: "struct", + fields: [], + } +} + +export class Withdraw extends InstructionSerialization { + public static schema = { + kind: "struct", + fields: [["faucetOwnerSeed", ["u8"]]], + } +} + +export class Submit extends InstructionSerialization { + public static schema = { + kind: "struct", + fields: [ + ["round_id", "u64"], + ["value", "u64"], + ], + } +} + +export class Instruction extends Serialization { + public enum!: string + + public static schema = { + kind: "enum", + field: "enum", + values: [ + [Initialize.name, Initialize], + [Configure.name, Configure], + [AddOracle.name, AddOracle], + [RemoveOracle.name, RemoveOracle], + [Submit.name, Submit], + ], + } + + public constructor(prop: { [key: string]: any }) { + super({}) + // deserializer calls the construction with `{ [enum]: value }`, so we need + // to figure out the enum type + // + // expect only one key-value (what a retarded interface) + for (let key of Object.keys(prop)) { + this.enum = key + this[key] = prop[key] + return + } + + throw new Error("not an expected enum object") + } + + public get value() { + return this[this.enum] + } +} + +function intToBool(i: number) { + if (i == 0) { + return false + } else { + return true + } +} + +function boolToInt(t: boolean) { + if (t) { + return 1 + } else { + return 0 + } +} + +export class Oracle extends Serialization { + public static size = 113 + public allowStartRound!: BN + public withdrawable!: BN + + public static schema = { + kind: "struct", + fields: [ + ["description", [32], str32Mapper], + ["isInitialized", "u8", boolMapper], + ["withdrawable", "u64"], + ["allowStartRound", "u64"], + ["aggregator", [32], pubkeyMapper], + ["owner", [32], pubkeyMapper], + ], + } + + public canStartNewRound(round: BN): boolean { + return this.allowStartRound.lte(round) + } +} + +// if there is optional or variable length items, what is: borsh_utils::get_packed_len::()? +// +// would panic given variable sized types + +export const schema = new Map([ + [Aggregator, Aggregator.schema], + [Oracle, Oracle.schema], + [Round, Round.schema], + [Answer, Answer.schema], + [AggregatorConfig, AggregatorConfig.schema], + [Submissions, Submissions.schema], + [Submission, Submission.schema], + + [Instruction, Instruction.schema], + [Initialize, Initialize.schema], + [AddOracle, AddOracle.schema], + [Submit, Submit.schema], + +] as any) as any diff --git a/yarn.lock b/yarn.lock index 5b22544..0289e71 100644 --- a/yarn.lock +++ b/yarn.lock @@ -25,36 +25,52 @@ dependencies: "@babel/highlight" "^7.12.13" +"@babel/compat-data@^7.13.0": + version "7.13.0" + resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.13.0.tgz#7889eb7ee6518e2afa5d312b15fd7fd1fe9f3744" + integrity sha512-mKgFbYQ+23pjwNGBNPNWrBfa3g/EcmrPnwQpjWoNxq9xYf+M8wcLhMlz/wkWimLjzNzGnl3D+C2186gMzk0VuA== + "@babel/core@^7.1.0", "@babel/core@^7.7.5": - version "7.12.16" - resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.12.16.tgz#8c6ba456b23b680a6493ddcfcd9d3c3ad51cab7c" - integrity sha512-t/hHIB504wWceOeaOoONOhu+gX+hpjfeN6YRBT209X/4sibZQfSF1I0HFRRlBe97UZZosGx5XwUg1ZgNbelmNw== + version "7.13.0" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.13.0.tgz#5d61713de310dcfb09258b9fbd081c90623a9548" + integrity sha512-aiv4TeB1i0y3E/+be4U4xtb21CvidNbBegcxvVOrM2B5HfKwwCbYdhGbZUtzeV4HkNevRMLx7oSgQ9bjl4WhXw== dependencies: "@babel/code-frame" "^7.12.13" - "@babel/generator" "^7.12.15" - "@babel/helper-module-transforms" "^7.12.13" - "@babel/helpers" "^7.12.13" - "@babel/parser" "^7.12.16" + "@babel/generator" "^7.13.0" + "@babel/helper-compilation-targets" "^7.13.0" + "@babel/helper-module-transforms" "^7.13.0" + "@babel/helpers" "^7.13.0" + "@babel/parser" "^7.13.0" "@babel/template" "^7.12.13" - "@babel/traverse" "^7.12.13" - "@babel/types" "^7.12.13" + "@babel/traverse" "^7.13.0" + "@babel/types" "^7.13.0" convert-source-map "^1.7.0" debug "^4.1.0" - gensync "^1.0.0-beta.1" + gensync "^1.0.0-beta.2" json5 "^2.1.2" lodash "^4.17.19" - semver "^5.4.1" + semver "7.0.0" source-map "^0.5.0" -"@babel/generator@^7.12.13", "@babel/generator@^7.12.15": - version "7.12.15" - resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.12.15.tgz#4617b5d0b25cc572474cc1aafee1edeaf9b5368f" - integrity sha512-6F2xHxBiFXWNSGb7vyCUTBF8RCLY66rS0zEPcP8t/nQyXjha5EuK4z7H5o7fWG8B4M7y6mqVWq1J+1PuwRhecQ== +"@babel/generator@^7.13.0": + version "7.13.0" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.13.0.tgz#bd00d4394ca22f220390c56a0b5b85568ec1ec0c" + integrity sha512-zBZfgvBB/ywjx0Rgc2+BwoH/3H+lDtlgD4hBOpEv5LxRnYsm/753iRuLepqnYlynpjC3AdQxtxsoeHJoEEwOAw== dependencies: - "@babel/types" "^7.12.13" + "@babel/types" "^7.13.0" jsesc "^2.5.1" source-map "^0.5.0" +"@babel/helper-compilation-targets@^7.13.0": + version "7.13.0" + resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.13.0.tgz#c9cf29b82a76fd637f0faa35544c4ace60a155a1" + integrity sha512-SOWD0JK9+MMIhTQiUVd4ng8f3NXhPVQvTv7D3UN4wbp/6cAHnB2EmMaU1zZA2Hh1gwme+THBrVSqTFxHczTh0Q== + dependencies: + "@babel/compat-data" "^7.13.0" + "@babel/helper-validator-option" "^7.12.17" + browserslist "^4.14.5" + semver "7.0.0" + "@babel/helper-function-name@^7.12.13": version "7.12.13" resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.12.13.tgz#93ad656db3c3c2232559fd7b2c3dbdcbe0eb377a" @@ -71,12 +87,12 @@ dependencies: "@babel/types" "^7.12.13" -"@babel/helper-member-expression-to-functions@^7.12.13": - version "7.12.16" - resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.12.16.tgz#41e0916b99f8d5f43da4f05d85f4930fa3d62b22" - integrity sha512-zYoZC1uvebBFmj1wFAlXwt35JLEgecefATtKp20xalwEK8vHAixLBXTGxNrVGEmTT+gzOThUgr8UEdgtalc1BQ== +"@babel/helper-member-expression-to-functions@^7.13.0": + version "7.13.0" + resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.13.0.tgz#6aa4bb678e0f8c22f58cdb79451d30494461b091" + integrity sha512-yvRf8Ivk62JwisqV1rFRMxiSMDGnN6KH1/mDMmIrij4jztpQNRoHqqMG3U6apYbGRPJpgPalhva9Yd06HlUxJQ== dependencies: - "@babel/types" "^7.12.13" + "@babel/types" "^7.13.0" "@babel/helper-module-imports@^7.12.13": version "7.12.13" @@ -85,19 +101,19 @@ dependencies: "@babel/types" "^7.12.13" -"@babel/helper-module-transforms@^7.12.13": - version "7.12.13" - resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.12.13.tgz#01afb052dcad2044289b7b20beb3fa8bd0265bea" - integrity sha512-acKF7EjqOR67ASIlDTupwkKM1eUisNAjaSduo5Cz+793ikfnpe7p4Q7B7EWU2PCoSTPWsQkR7hRUWEIZPiVLGA== +"@babel/helper-module-transforms@^7.13.0": + version "7.13.0" + resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.13.0.tgz#42eb4bd8eea68bab46751212c357bfed8b40f6f1" + integrity sha512-Ls8/VBwH577+pw7Ku1QkUWIyRRNHpYlts7+qSqBBFCW3I8QteB9DxfcZ5YJpOwH6Ihe/wn8ch7fMGOP1OhEIvw== dependencies: "@babel/helper-module-imports" "^7.12.13" - "@babel/helper-replace-supers" "^7.12.13" + "@babel/helper-replace-supers" "^7.13.0" "@babel/helper-simple-access" "^7.12.13" "@babel/helper-split-export-declaration" "^7.12.13" "@babel/helper-validator-identifier" "^7.12.11" "@babel/template" "^7.12.13" - "@babel/traverse" "^7.12.13" - "@babel/types" "^7.12.13" + "@babel/traverse" "^7.13.0" + "@babel/types" "^7.13.0" lodash "^4.17.19" "@babel/helper-optimise-call-expression@^7.12.13": @@ -108,19 +124,19 @@ "@babel/types" "^7.12.13" "@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.8.0": - version "7.12.13" - resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.12.13.tgz#174254d0f2424d8aefb4dd48057511247b0a9eeb" - integrity sha512-C+10MXCXJLiR6IeG9+Wiejt9jmtFpxUc3MQqCmPY8hfCjyUGl9kT+B2okzEZrtykiwrc4dbCPdDoz0A/HQbDaA== + version "7.13.0" + resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.13.0.tgz#806526ce125aed03373bc416a828321e3a6a33af" + integrity sha512-ZPafIPSwzUlAoWT8DKs1W2VyF2gOWthGd5NGFMsBcMMol+ZhK+EQY/e6V96poa6PA/Bh+C9plWN0hXO1uB8AfQ== -"@babel/helper-replace-supers@^7.12.13": - version "7.12.13" - resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.12.13.tgz#00ec4fb6862546bd3d0aff9aac56074277173121" - integrity sha512-pctAOIAMVStI2TMLhozPKbf5yTEXc0OJa0eENheb4w09SrgOWEs+P4nTOZYJQCqs8JlErGLDPDJTiGIp3ygbLg== +"@babel/helper-replace-supers@^7.13.0": + version "7.13.0" + resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.13.0.tgz#6034b7b51943094cb41627848cb219cb02be1d24" + integrity sha512-Segd5me1+Pz+rmN/NFBOplMbZG3SqRJOBlY+mA0SxAv6rjj7zJqr1AVr3SfzUVTLCv7ZLU5FycOM/SBGuLPbZw== dependencies: - "@babel/helper-member-expression-to-functions" "^7.12.13" + "@babel/helper-member-expression-to-functions" "^7.13.0" "@babel/helper-optimise-call-expression" "^7.12.13" - "@babel/traverse" "^7.12.13" - "@babel/types" "^7.12.13" + "@babel/traverse" "^7.13.0" + "@babel/types" "^7.13.0" "@babel/helper-simple-access@^7.12.13": version "7.12.13" @@ -141,14 +157,19 @@ resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.12.11.tgz#c9a1f021917dcb5ccf0d4e453e399022981fc9ed" integrity sha512-np/lG3uARFybkoHokJUmf1QfEvRVCPbmQeUQpKow5cQ3xWrV9i3rUHodKDJPQfTVX61qKi+UdYk8kik84n7XOw== -"@babel/helpers@^7.12.13": - version "7.12.13" - resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.12.13.tgz#3c75e993632e4dadc0274eae219c73eb7645ba47" - integrity sha512-oohVzLRZ3GQEk4Cjhfs9YkJA4TdIDTObdBEZGrd6F/T0GPSnuV6l22eMcxlvcvzVIPH3VTtxbseudM1zIE+rPQ== +"@babel/helper-validator-option@^7.12.17": + version "7.12.17" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.12.17.tgz#d1fbf012e1a79b7eebbfdc6d270baaf8d9eb9831" + integrity sha512-TopkMDmLzq8ngChwRlyjR6raKD6gMSae4JdYDB8bByKreQgG0RBTuKe9LRxW3wFtUnjxOPRKBDwEH6Mg5KeDfw== + +"@babel/helpers@^7.13.0": + version "7.13.0" + resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.13.0.tgz#7647ae57377b4f0408bf4f8a7af01c42e41badc0" + integrity sha512-aan1MeFPxFacZeSz6Ld7YZo5aPuqnKlD7+HZY75xQsueczFccP9A7V05+oe0XpLwHK3oLorPe9eaAUljL7WEaQ== dependencies: "@babel/template" "^7.12.13" - "@babel/traverse" "^7.12.13" - "@babel/types" "^7.12.13" + "@babel/traverse" "^7.13.0" + "@babel/types" "^7.13.0" "@babel/highlight@^7.10.4", "@babel/highlight@^7.12.13": version "7.12.13" @@ -159,10 +180,10 @@ chalk "^2.0.0" js-tokens "^4.0.0" -"@babel/parser@^7.1.0", "@babel/parser@^7.12.13", "@babel/parser@^7.12.16", "@babel/parser@^7.7.0": - version "7.12.16" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.12.16.tgz#cc31257419d2c3189d394081635703f549fc1ed4" - integrity sha512-c/+u9cqV6F0+4Hpq01jnJO+GLp2DdT63ppz9Xa+6cHaajM9VFzK/iDXiKK65YtpeVwu+ctfS6iqlMqRgQRzeCw== +"@babel/parser@^7.1.0", "@babel/parser@^7.12.13", "@babel/parser@^7.13.0", "@babel/parser@^7.7.0": + version "7.13.0" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.13.0.tgz#49b9b6ee213e5634fa80361dae139effef893f78" + integrity sha512-w80kxEMFhE3wjMOQkfdTvv0CSdRSJZptIlLhU4eU/coNJeWjduspUFz+IRnBbAq6m5XYBFMoT1TNkk9K9yf10g== "@babel/plugin-syntax-async-generators@^7.8.4": version "7.8.4" @@ -249,9 +270,9 @@ "@babel/helper-plugin-utils" "^7.12.13" "@babel/runtime@^7.11.2", "@babel/runtime@^7.3.1": - version "7.12.13" - resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.12.13.tgz#0a21452352b02542db0ffb928ac2d3ca7cb6d66d" - integrity sha512-8+3UMPBrjFa/6TtKi/7sehPKqfAm4g6K+YQjyyFOLUTxzOngcRZTlAVY8sc2CORJYqdHQY8gRPHmn+qo15rCBw== + version "7.13.0" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.13.0.tgz#7f2cd0e2086626eea186a5a062e21e77ec0e45d0" + integrity sha512-himjPiVq1N4Eqv80uaIMdLYav1LWO51J7PwQkgp3z8N0v8cnaeP5kSgWH4hS6jvjjWAbh5tB5fVw+zuNyyQTYQ== dependencies: regenerator-runtime "^0.13.4" @@ -264,25 +285,25 @@ "@babel/parser" "^7.12.13" "@babel/types" "^7.12.13" -"@babel/traverse@^7.1.0", "@babel/traverse@^7.12.13", "@babel/traverse@^7.7.0": - version "7.12.13" - resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.12.13.tgz#689f0e4b4c08587ad26622832632735fb8c4e0c0" - integrity sha512-3Zb4w7eE/OslI0fTp8c7b286/cQps3+vdLW3UcwC8VSJC6GbKn55aeVVu2QJNuCDoeKyptLOFrPq8WqZZBodyA== +"@babel/traverse@^7.1.0", "@babel/traverse@^7.13.0", "@babel/traverse@^7.7.0": + version "7.13.0" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.13.0.tgz#6d95752475f86ee7ded06536de309a65fc8966cc" + integrity sha512-xys5xi5JEhzC3RzEmSGrs/b3pJW/o87SypZ+G/PhaE7uqVQNv/jlmVIBXuoh5atqQ434LfXV+sf23Oxj0bchJQ== dependencies: "@babel/code-frame" "^7.12.13" - "@babel/generator" "^7.12.13" + "@babel/generator" "^7.13.0" "@babel/helper-function-name" "^7.12.13" "@babel/helper-split-export-declaration" "^7.12.13" - "@babel/parser" "^7.12.13" - "@babel/types" "^7.12.13" + "@babel/parser" "^7.13.0" + "@babel/types" "^7.13.0" debug "^4.1.0" globals "^11.1.0" lodash "^4.17.19" -"@babel/types@^7.0.0", "@babel/types@^7.12.13", "@babel/types@^7.3.0", "@babel/types@^7.3.3", "@babel/types@^7.7.0": - version "7.12.13" - resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.12.13.tgz#8be1aa8f2c876da11a9cf650c0ecf656913ad611" - integrity sha512-oKrdZTld2im1z8bDwTOQvUbxKwE+854zc16qWZQlcTqMN00pWxHQ4ZeOq0yDMnisOpRykH2/5Qqcrk/OlbAjiQ== +"@babel/types@^7.0.0", "@babel/types@^7.12.13", "@babel/types@^7.13.0", "@babel/types@^7.3.0", "@babel/types@^7.3.3", "@babel/types@^7.7.0": + version "7.13.0" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.13.0.tgz#74424d2816f0171b4100f0ab34e9a374efdf7f80" + integrity sha512-hE+HE8rnG1Z6Wzo+MhaKE5lM5eMx71T4EHJgku2E3xIfaULhDcxiiRxUYgwX8qwP1BBSlag+TdGOt6JAidIZTA== dependencies: "@babel/helper-validator-identifier" "^7.12.11" lodash "^4.17.19" @@ -640,7 +661,7 @@ dependencies: "@babel/types" "^7.3.0" -"@types/bn.js@^4.11.6": +"@types/bn.js@^4.11.5", "@types/bn.js@^4.11.6": version "4.11.6" resolved "https://registry.yarnpkg.com/@types/bn.js/-/bn.js-4.11.6.tgz#c306c70d9358aaea33cd4eda092a742b9505967c" integrity sha512-pqr857jrp2kPuO9uRjZ3PwnJTjoQy+fcdxvBTvHm6dkmEL9q+hDD/2j/0ELOBPtPnS8LjCX0gI9nbl8lVkadpg== @@ -718,14 +739,14 @@ integrity sha512-NysN+bNqj6E0Hv4CTGWSlPzMW6vTKjDpOteycDkV4IWBsO+PU48JonrPzV9ODjiI2XrjmA05KInLgF5ivZ/YGQ== "@types/node@*": - version "14.14.28" - resolved "https://registry.yarnpkg.com/@types/node/-/node-14.14.28.tgz#cade4b64f8438f588951a6b35843ce536853f25b" - integrity sha512-lg55ArB+ZiHHbBBttLpzD07akz0QPrZgUODNakeC09i62dnrywr9mFErHuaPlB6I7z+sEbK+IYmplahvplCj2g== + version "14.14.31" + resolved "https://registry.yarnpkg.com/@types/node/-/node-14.14.31.tgz#72286bd33d137aa0d152d47ec7c1762563d34055" + integrity sha512-vFHy/ezP5qI0rFgJ7aQnjDXwAMrG0KqqIH7tQG5PPv3BWBayOPIQNBjVc/P6hhdZfMx51REc6tfDNXHUio893g== "@types/node@^12.12.54": - version "12.20.1" - resolved "https://registry.yarnpkg.com/@types/node/-/node-12.20.1.tgz#63d36c10e162666f0107f247cdca76542c3c7472" - integrity sha512-tCkE96/ZTO+cWbln2xfyvd6ngHLanvVlJ3e5BeirJ3BYI5GbAyubIrmV4JjjugDly5D9fHjOL5MNsqsCnqwW6g== + version "12.20.4" + resolved "https://registry.yarnpkg.com/@types/node/-/node-12.20.4.tgz#73687043dd00fcb6962c60fbf499553a24d6bdf2" + integrity sha512-xRCgeE0Q4pT5UZ189TJ3SpYuX/QGl6QIAOAIeDSbAVAd2gX1NxSZup4jNVK7cxIeP8KDSbJgcckun495isP1jQ== "@types/normalize-package-data@^2.4.0": version "2.4.0" @@ -765,12 +786,12 @@ "@types/yargs-parser" "*" "@typescript-eslint/eslint-plugin@^4.6.0": - version "4.15.1" - resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-4.15.1.tgz#835f64aa0a403e5e9e64c10ceaf8d05c3f015180" - integrity sha512-yW2epMYZSpNJXZy22Biu+fLdTG8Mn6b22kR3TqblVk50HGNV8Zya15WAXuQCr8tKw4Qf1BL4QtI6kv6PCkLoJw== + version "4.15.2" + resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-4.15.2.tgz#981b26b4076c62a5a55873fbef3fe98f83360c61" + integrity sha512-uiQQeu9tWl3f1+oK0yoAv9lt/KXO24iafxgQTkIYO/kitruILGx3uH+QtIAHqxFV+yIsdnJH+alel9KuE3J15Q== dependencies: - "@typescript-eslint/experimental-utils" "4.15.1" - "@typescript-eslint/scope-manager" "4.15.1" + "@typescript-eslint/experimental-utils" "4.15.2" + "@typescript-eslint/scope-manager" "4.15.2" debug "^4.1.1" functional-red-black-tree "^1.0.1" lodash "^4.17.15" @@ -778,60 +799,60 @@ semver "^7.3.2" tsutils "^3.17.1" -"@typescript-eslint/experimental-utils@4.15.1": - version "4.15.1" - resolved "https://registry.yarnpkg.com/@typescript-eslint/experimental-utils/-/experimental-utils-4.15.1.tgz#d744d1ac40570a84b447f7aa1b526368afd17eec" - integrity sha512-9LQRmOzBRI1iOdJorr4jEnQhadxK4c9R2aEAsm7WE/7dq8wkKD1suaV0S/JucTL8QlYUPU1y2yjqg+aGC0IQBQ== +"@typescript-eslint/experimental-utils@4.15.2": + version "4.15.2" + resolved "https://registry.yarnpkg.com/@typescript-eslint/experimental-utils/-/experimental-utils-4.15.2.tgz#5efd12355bd5b535e1831282e6cf465b9a71cf36" + integrity sha512-Fxoshw8+R5X3/Vmqwsjc8nRO/7iTysRtDqx6rlfLZ7HbT8TZhPeQqbPjTyk2RheH3L8afumecTQnUc9EeXxohQ== dependencies: "@types/json-schema" "^7.0.3" - "@typescript-eslint/scope-manager" "4.15.1" - "@typescript-eslint/types" "4.15.1" - "@typescript-eslint/typescript-estree" "4.15.1" + "@typescript-eslint/scope-manager" "4.15.2" + "@typescript-eslint/types" "4.15.2" + "@typescript-eslint/typescript-estree" "4.15.2" eslint-scope "^5.0.0" eslint-utils "^2.0.0" "@typescript-eslint/parser@^4.6.0": - version "4.15.1" - resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-4.15.1.tgz#4c91a0602733db63507e1dbf13187d6c71a153c4" - integrity sha512-V8eXYxNJ9QmXi5ETDguB7O9diAXlIyS+e3xzLoP/oVE4WCAjssxLIa0mqCLsCGXulYJUfT+GV70Jv1vHsdKwtA== + version "4.15.2" + resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-4.15.2.tgz#c804474321ef76a3955aec03664808f0d6e7872e" + integrity sha512-SHeF8xbsC6z2FKXsaTb1tBCf0QZsjJ94H6Bo51Y1aVEZ4XAefaw5ZAilMoDPlGghe+qtq7XdTiDlGfVTOmvA+Q== dependencies: - "@typescript-eslint/scope-manager" "4.15.1" - "@typescript-eslint/types" "4.15.1" - "@typescript-eslint/typescript-estree" "4.15.1" + "@typescript-eslint/scope-manager" "4.15.2" + "@typescript-eslint/types" "4.15.2" + "@typescript-eslint/typescript-estree" "4.15.2" debug "^4.1.1" -"@typescript-eslint/scope-manager@4.15.1": - version "4.15.1" - resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-4.15.1.tgz#f6511eb38def2a8a6be600c530c243bbb56ac135" - integrity sha512-ibQrTFcAm7yG4C1iwpIYK7vDnFg+fKaZVfvyOm3sNsGAerKfwPVFtYft5EbjzByDJ4dj1WD8/34REJfw/9wdVA== +"@typescript-eslint/scope-manager@4.15.2": + version "4.15.2" + resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-4.15.2.tgz#5725bda656995960ae1d004bfd1cd70320f37f4f" + integrity sha512-Zm0tf/MSKuX6aeJmuXexgdVyxT9/oJJhaCkijv0DvJVT3ui4zY6XYd6iwIo/8GEZGy43cd7w1rFMiCLHbRzAPQ== dependencies: - "@typescript-eslint/types" "4.15.1" - "@typescript-eslint/visitor-keys" "4.15.1" + "@typescript-eslint/types" "4.15.2" + "@typescript-eslint/visitor-keys" "4.15.2" -"@typescript-eslint/types@4.15.1": - version "4.15.1" - resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-4.15.1.tgz#da702f544ef1afae4bc98da699eaecd49cf31c8c" - integrity sha512-iGsaUyWFyLz0mHfXhX4zO6P7O3sExQpBJ2dgXB0G5g/8PRVfBBsmQIc3r83ranEQTALLR3Vko/fnCIVqmH+mPw== +"@typescript-eslint/types@4.15.2": + version "4.15.2" + resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-4.15.2.tgz#04acf3a2dc8001a88985291744241e732ef22c60" + integrity sha512-r7lW7HFkAarfUylJ2tKndyO9njwSyoy6cpfDKWPX6/ctZA+QyaYscAHXVAfJqtnY6aaTwDYrOhp+ginlbc7HfQ== -"@typescript-eslint/typescript-estree@4.15.1": - version "4.15.1" - resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-4.15.1.tgz#fa9a9ff88b4a04d901ddbe5b248bc0a00cd610be" - integrity sha512-z8MN3CicTEumrWAEB2e2CcoZa3KP9+SMYLIA2aM49XW3cWIaiVSOAGq30ffR5XHxRirqE90fgLw3e6WmNx5uNw== +"@typescript-eslint/typescript-estree@4.15.2": + version "4.15.2" + resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-4.15.2.tgz#c2f7a1e94f3428d229d5ecff3ead6581ee9b62fa" + integrity sha512-cGR8C2g5SPtHTQvAymEODeqx90pJHadWsgTtx6GbnTWKqsg7yp6Eaya9nFzUd4KrKhxdYTTFBiYeTPQaz/l8bw== dependencies: - "@typescript-eslint/types" "4.15.1" - "@typescript-eslint/visitor-keys" "4.15.1" + "@typescript-eslint/types" "4.15.2" + "@typescript-eslint/visitor-keys" "4.15.2" debug "^4.1.1" globby "^11.0.1" is-glob "^4.0.1" semver "^7.3.2" tsutils "^3.17.1" -"@typescript-eslint/visitor-keys@4.15.1": - version "4.15.1" - resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-4.15.1.tgz#c76abbf2a3be8a70ed760f0e5756bf62de5865dd" - integrity sha512-tYzaTP9plooRJY8eNlpAewTOqtWW/4ff/5wBjNVaJ0S0wC4Gpq/zDVRTJa5bq2v1pCNQ08xxMCndcvR+h7lMww== +"@typescript-eslint/visitor-keys@4.15.2": + version "4.15.2" + resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-4.15.2.tgz#3d1c7979ce75bf6acf9691109bd0d6b5706192b9" + integrity sha512-TME1VgSb7wTwgENN5KVj4Nqg25hP8DisXxNBojM4Nn31rYaNDIocNm5cmjOFfh42n7NVERxWrDFoETO/76ePyg== dependencies: - "@typescript-eslint/types" "4.15.1" + "@typescript-eslint/types" "4.15.2" eslint-visitor-keys "^2.0.0" JSONStream@^1.3.5: @@ -1163,6 +1184,15 @@ boolbase@~1.0.0: resolved "https://registry.yarnpkg.com/boolbase/-/boolbase-1.0.0.tgz#68dff5fbe60c51eb37725ea9e3ed310dcc1e776e" integrity sha1-aN/1++YMUes3cl6p4+0xDcwed24= +"borsh@https://github.com/defactojob/borsh-js#field-mapper": + version "0.3.1" + resolved "https://github.com/defactojob/borsh-js#33a0d24af281112c0a48efb3fa503f3212443de9" + dependencies: + "@types/bn.js" "^4.11.5" + bn.js "^5.0.0" + bs58 "^4.0.0" + text-encoding-utf-8 "^1.0.2" + brace-expansion@^1.1.7: version "1.1.11" resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" @@ -1204,6 +1234,17 @@ browser-process-hrtime@^1.0.0: resolved "https://registry.yarnpkg.com/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz#3c9b4b7d782c8121e56f10106d84c0d0ffc94626" integrity sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow== +browserslist@^4.14.5: + version "4.16.3" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.16.3.tgz#340aa46940d7db878748567c5dea24a48ddf3717" + integrity sha512-vIyhWmIkULaq04Gt93txdh+j02yX/JzlyhLYbV3YQCn/zvES3JnY7TifHHvvr1w5hTDluNKMkV05cs4vy8Q7sw== + dependencies: + caniuse-lite "^1.0.30001181" + colorette "^1.2.1" + electron-to-chromium "^1.3.649" + escalade "^3.1.1" + node-releases "^1.1.70" + bs-logger@0.x: version "0.2.6" resolved "https://registry.yarnpkg.com/bs-logger/-/bs-logger-0.2.6.tgz#eb7d365307a72cf974cc6cda76b68354ad336bd8" @@ -1211,7 +1252,7 @@ bs-logger@0.x: dependencies: fast-json-stable-stringify "2.x" -bs58@^4.0.1: +bs58@^4.0.0, bs58@^4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/bs58/-/bs58-4.0.1.tgz#be161e76c354f6f788ae4071f63f34e8c4f0a42a" integrity sha1-vhYedsNU9veIrkBx9j806MTwpCo= @@ -1296,6 +1337,11 @@ camelcase@^6.0.0: resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-6.2.0.tgz#924af881c9d525ac9d87f40d964e5cea982a1809" integrity sha512-c7wVvbw3f37nuobQNtgsgG9POC9qMbNuMQmTCqZv23b6MIz0fcYpBiOlv9gEN/hdLdnZTDQhg6e9Dq5M1vKvfg== +caniuse-lite@^1.0.30001181: + version "1.0.30001191" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001191.tgz#bacb432b6701f690c8c5f7c680166b9a9f0843d9" + integrity sha512-xJJqzyd+7GCJXkcoBiQ1GuxEiOBCLQ0aVW9HMekifZsAVGdj5eJ4mFB9fEhSHipq9IOk/QXFJUiIr9lZT+EsGw== + capture-exit@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/capture-exit/-/capture-exit-2.0.0.tgz#fb953bfaebeb781f62898239dabb426d08a509a4" @@ -1450,6 +1496,11 @@ color-name@~1.1.4: resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== +colorette@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/colorette/-/colorette-1.2.1.tgz#4d0b921325c14faf92633086a536db6e89564b1b" + integrity sha512-puCDz0CzydiSYOrnXpz/PKd69zRrribezjtE9yd4zvytoRc8+RY/KJPvtPFKZS3E3wP6neGyMe0vOTlHO5L3Pw== + combined-stream@^1.0.6, combined-stream@~1.0.6: version "1.0.8" resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f" @@ -1759,6 +1810,11 @@ ecc-jsbn@~0.1.1: jsbn "~0.1.0" safer-buffer "^2.1.0" +electron-to-chromium@^1.3.649: + version "1.3.672" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.672.tgz#3a6e335016dab4bc584d5292adc4f98f54541f6a" + integrity sha512-gFQe7HBb0lbOMqK2GAS5/1F+B0IMdYiAgB9OT/w1F4M7lgJK2aNOMNOM622aEax+nS1cTMytkiT0uMOkbtFmHw== + elliptic@^6.5.2: version "6.5.4" resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.5.4.tgz#da37cebd31e79a1367e941b592ed1fbebd58abbb" @@ -1813,7 +1869,7 @@ error-ex@^1.3.1: dependencies: is-arrayish "^0.2.1" -es-abstract@^1.18.0-next.1: +es-abstract@^1.18.0-next.2: version "1.18.0-next.2" resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.18.0-next.2.tgz#088101a55f0541f595e7e057199e27ddc8f3a5c2" integrity sha512-Ih4ZMFHEtZupnUh6497zEL4y2+w8+1ljnCyaTa+adcoafI1GOvMwFlDjBLfWR7y9VLfrjRJe9ocuHY1PSR9jjw== @@ -1854,6 +1910,11 @@ es6-promisify@^5.0.0: dependencies: es6-promise "^4.0.3" +escalade@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40" + integrity sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw== + 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" @@ -2161,9 +2222,9 @@ fb-watchman@^2.0.0: bser "2.1.1" file-entry-cache@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-6.0.0.tgz#7921a89c391c6d93efec2169ac6bf300c527ea0a" - integrity sha512-fqoO76jZ3ZnYrXLDRxBR1YvOvc0k844kcOg40bgsPrE25LAb/PDqTY+ho64Xh2c8ZXgIKldchCFHczG2UVRcWA== + version "6.0.1" + resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-6.0.1.tgz#211b2dd9659cb0394b073e7323ac3c933d522027" + integrity sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg== dependencies: flat-cache "^3.0.4" @@ -2260,7 +2321,7 @@ functional-red-black-tree@^1.0.1: resolved "https://registry.yarnpkg.com/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz#1b0ab3bd553b2a0d6399d29c0e3ea0b252078327" integrity sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc= -gensync@^1.0.0-beta.1: +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" integrity sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg== @@ -3502,9 +3563,9 @@ lodash.sortby@^4.7.0: integrity sha1-7dFMgk4sycHgsKG0K7UhBRakJDg= lodash@4.x, lodash@^4.17.15, lodash@^4.17.19, lodash@^4.17.20: - version "4.17.20" - resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.20.tgz#b44a9b6297bcb698f1c51a3545a2b3b368d59c52" - integrity sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA== + version "4.17.21" + resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" + integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== lru-cache@^6.0.0: version "6.0.0" @@ -3586,17 +3647,17 @@ micromatch@^4.0.2: braces "^3.0.1" picomatch "^2.0.5" -mime-db@1.45.0: - version "1.45.0" - resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.45.0.tgz#cceeda21ccd7c3a745eba2decd55d4b73e7879ea" - integrity sha512-CkqLUxUk15hofLoLyljJSrukZi8mAtgd+yE5uO4tqRZsdsAJKv0O+rFMhVDRJgozy+yG6md5KwuXhD4ocIoP+w== +mime-db@1.46.0: + version "1.46.0" + resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.46.0.tgz#6267748a7f799594de3cbc8cde91def349661cee" + integrity sha512-svXaP8UQRZ5K7or+ZmfNhg2xX3yKDMUzqadsSqi4NCH/KomcH75MAMYAGVlvXn4+b/xOPhS3I2uHKRUzvjY7BQ== mime-types@^2.1.12, mime-types@~2.1.19: - version "2.1.28" - resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.28.tgz#1160c4757eab2c5363888e005273ecf79d2a0ecd" - integrity sha512-0TO2yJ5YHYr7M2zzT7gDU1tbwHxEUWBCLt0lscSNpcdAfFyJOVEpRYNS7EXVcTLNj/25QO8gulHC5JtTzSE2UQ== + version "2.1.29" + resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.29.tgz#1d4ab77da64b91f5f72489df29236563754bb1b2" + integrity sha512-Y/jMt/S5sR9OaqteJtslsFZKWOIIqMACsJSiHghlCAyhf7jfVYjKBmLiX8OgpWeW+fjJ2b+Az69aPFPkUOY6xQ== dependencies: - mime-db "1.45.0" + mime-db "1.46.0" mimic-fn@^2.1.0: version "2.1.0" @@ -3721,6 +3782,11 @@ node-notifier@^8.0.0: uuid "^8.3.0" which "^2.0.2" +node-releases@^1.1.70: + version "1.1.70" + resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-1.1.70.tgz#66e0ed0273aa65666d7fe78febe7634875426a08" + integrity sha512-Slf2s69+2/uAD79pVVQo8uSiC34+g8GWY8UH2Qtqv34ZfhYrxpYpfzs9Js9d6O0mbDmALuxaTlplnBTnSELcrw== + 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" @@ -4345,11 +4411,16 @@ secp256k1@^4.0.2: node-addon-api "^2.0.0" node-gyp-build "^4.2.0" -"semver@2 || 3 || 4 || 5", semver@^5.4.1, semver@^5.5.0: +"semver@2 || 3 || 4 || 5", semver@^5.5.0: version "5.7.1" resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== +semver@7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/semver/-/semver-7.0.0.tgz#5f3ca35761e47e05b206c6daff2cf814f0316b8e" + integrity sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A== + semver@7.x, semver@^7.2.1, semver@^7.3.2: version "7.3.4" resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.4.tgz#27aaa7d2e4ca76452f98d3add093a72c943edc97" @@ -4595,13 +4666,13 @@ string-width@^4.1.0, string-width@^4.2.0: strip-ansi "^6.0.0" string.prototype.padend@^3.0.0: - version "3.1.1" - resolved "https://registry.yarnpkg.com/string.prototype.padend/-/string.prototype.padend-3.1.1.tgz#824c84265dbac46cade2b957b38b6a5d8d1683c5" - integrity sha512-eCzTASPnoCr5Ht+Vn1YXgm8SB015hHKgEIMu9Nr9bQmLhRBxKRfmzSj/IQsxDFc8JInJDDFA0qXwK+xxI7wDkg== + version "3.1.2" + resolved "https://registry.yarnpkg.com/string.prototype.padend/-/string.prototype.padend-3.1.2.tgz#6858ca4f35c5268ebd5e8615e1327d55f59ee311" + integrity sha512-/AQFLdYvePENU3W5rgurfWSMU6n+Ww8n/3cUt7E+vPBB/D7YDG8x+qjoFs4M/alR2bW7Qg6xMjVwWUOvuQ0XpQ== dependencies: - call-bind "^1.0.0" + call-bind "^1.0.2" define-properties "^1.1.3" - es-abstract "^1.18.0-next.1" + es-abstract "^1.18.0-next.2" string.prototype.trimend@^1.0.3: version "1.0.3" @@ -4720,6 +4791,11 @@ test-exclude@^6.0.0: glob "^7.1.4" minimatch "^3.0.4" +text-encoding-utf-8@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/text-encoding-utf-8/-/text-encoding-utf-8-1.0.2.tgz#585b62197b0ae437e3c7b5d0af27ac1021e10d13" + integrity sha512-8bw4MY9WjdsD2aMtO0OzOCY3pXGYNx2d2FfHRVUKkiCPDWjKuOlhLVASS+pD7VkLTVjW268LYJHwsnPFlBpbAg== + text-table@^0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" @@ -5143,9 +5219,9 @@ yallist@^4.0.0: integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== yargs-parser@20.x: - version "20.2.5" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.5.tgz#5d37729146d3f894f39fc94b6796f5b239513186" - integrity sha512-jYRGS3zWy20NtDtK2kBgo/TlAoy5YUuhD9/LZ7z7W4j1Fdw2cqD0xEEclf8fxc8xjD6X5Qr+qQQwCEsP8iRiYg== + version "20.2.6" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.6.tgz#69f920addf61aafc0b8b89002f5d66e28f2d8b20" + integrity sha512-AP1+fQIWSM/sMiET8fyayjx/J+JmTPt2Mr0FkrgqB4todtfa53sOsrSAcIrJRD5XS20bKUwaDIuMkWKCEiQLKA== yargs-parser@^18.1.2: version "18.1.3"