From f5fa78c95f1219aee835d35987e23e2ce7058016 Mon Sep 17 00:00:00 2001 From: czl1378 Date: Wed, 9 Dec 2020 23:38:31 +0800 Subject: [PATCH] use index to add/remove an oracle, add intergration example --- .env | 4 + .gitignore | 4 +- README.md | 5 +- build/flux_aggregator.so | Bin 243216 -> 208960 bytes deploy.json | 8 +- intergration-example/Cargo.lock | 729 +++++++++ intergration-example/Cargo.toml | 21 + intergration-example/Xargo.toml | 2 + intergration-example/client/demo.ts | 163 ++ intergration-example/client/main.ts | 58 + .../client/util/accountFromMnemonic.ts | 16 + .../client/util/new-account-with-lamports.ts | 21 + intergration-example/src/entrypoint.rs | 36 + intergration-example/src/lib.rs | 6 + package.json | 3 +- program/src/error.rs | 3 + program/src/instruction.rs | 25 +- program/src/processor.rs | 66 +- src/.env | 1 - src/FluxAggregator.ts | 20 +- src/cli.ts | 9 +- src/utils.ts | 2 +- yarn.lock | 1411 ----------------- 23 files changed, 1149 insertions(+), 1464 deletions(-) create mode 100644 .env create mode 100644 intergration-example/Cargo.lock create mode 100644 intergration-example/Cargo.toml create mode 100644 intergration-example/Xargo.toml create mode 100644 intergration-example/client/demo.ts create mode 100644 intergration-example/client/main.ts create mode 100644 intergration-example/client/util/accountFromMnemonic.ts create mode 100644 intergration-example/client/util/new-account-with-lamports.ts create mode 100644 intergration-example/src/entrypoint.rs create mode 100644 intergration-example/src/lib.rs delete mode 100644 src/.env delete mode 100644 yarn.lock diff --git a/.env b/.env new file mode 100644 index 0000000..7e6cb3a --- /dev/null +++ b/.env @@ -0,0 +1,4 @@ +NETWORK=dev +DEPLOY_FILE=deploy.json +ADMIN_MNEMONIC="summer fuel twin history item learn flip marble ginger knee mix ten" +ORACLE_MNEMONIC="pet retreat peasant wing search rug dwarf high city pill giggle dinner" \ No newline at end of file diff --git a/.gitignore b/.gitignore index 582d4c3..517abdc 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,4 @@ /node_modules -/program/target \ No newline at end of file +/program/target +/intergration-example/target +yarn.lock \ No newline at end of file diff --git a/README.md b/README.md index f36e9b1..084cc38 100644 --- a/README.md +++ b/README.md @@ -13,7 +13,7 @@ yarn install Setup a wallet for the flux aggregator admin: ``` -yarn generate-wallet +yarn solink generate-wallet address: 7YMUUCzZir7AAuoy4CtZih9JFBqYwtQiCxjA5dtqwRxU mnemonic: wine vault fancy enhance trade dolphin hard traffic social butter client pave @@ -62,7 +62,7 @@ feed initialized, pubkey: AUK9X6QLgauAUvEA3Ajc91fZytb9ccA7qVR72ErDFNg2 Next, we create a separate wallet to control oracles: ``` -yarn generate-wallet +yarn solink generate-wallet address: FosLwbttPgkEDv36VJLU3wwXcBSSoUGkh7dyZPsXNtT4 mnemonic: amount smoke bar coil current trial toward minimum model pass moral liberty @@ -82,6 +82,7 @@ Next we create a new oracle to the feed we've created previously, and set its ow ``` yarn solink add-oracle \ + --index 0 \ --feedAddress AUK9X6QLgauAUvEA3Ajc91fZytb9ccA7qVR72ErDFNg2 \ --oracleName solink-test \ --oracleOwner FosLwbttPgkEDv36VJLU3wwXcBSSoUGkh7dyZPsXNtT4 diff --git a/build/flux_aggregator.so b/build/flux_aggregator.so index 2204b477b6272f99a40351d9342fc4e273ae3b32..5ab10787f0715a6bfb688913c319abd55edc9901 100755 GIT binary patch delta 57129 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
  • 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 lxuVZ^AwN3bC`oYdK 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 Wr{^40<-hrd=6~-uzf#k3{{H~WtkZ%3 diff --git a/deploy.json b/deploy.json index 9c1e554..f525fc8 100644 --- a/deploy.json +++ b/deploy.json @@ -1,10 +1,10 @@ { "aggregatorProgram": { - "pubkey": "9KXbVqUrMgtti7Jx4rrV1NqXjQNxWaKgtYCEwJ8AESS5", - "secret": "a2b92fa9514ac18a40c2bc895db0f97cabc1870205a74d84a0fb4a8167e6cba37b9c8b296cb261a7f3b17b294c72c4b6d427ab499b4ad6323b844289bcfebf6a" + "pubkey": "HFHbe2uckzz9Xh633mbJPYcukzpyJRVcwL87fUrVddiq", + "secret": "46046129c833cdf42b541357fc7c0667a369ca8ab7aed7f4ce653c710d3650b2f163e380895f9fa347f75834f3be6196919bacc3c769338b7f15d6a4ee1e814a" }, "btc:usd": { - "pubkey": "AUK9X6QLgauAUvEA3Ajc91fZytb9ccA7qVR72ErDFNg2", - "secret": "233f1f8df9bf0e98c054f4b012eba361ec5050d93f7b06cdb0b2d0242cdf9a2e8cb862071d89cbf390570fa521c0daff5ca0e47f767dc32940801b449e50ad1b" + "pubkey": "2jReuMRoYi3pKTF8YLnZEvT2bXcw56SdBxvssrVzu41v", + "secret": "9feec34f2157b6deefc08c2132b321fb379b65fe6901d07e9a4df69fe8bad75a19b9f4ea63a705fc4b822d70015680c6f1cb0d4df30548a673604680760a9d11" } } \ No newline at end of file diff --git a/intergration-example/Cargo.lock b/intergration-example/Cargo.lock new file mode 100644 index 0000000..3abafda --- /dev/null +++ b/intergration-example/Cargo.lock @@ -0,0 +1,729 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +[[package]] +name = "aho-corasick" +version = "0.7.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7404febffaa47dac81aa44dba71523c9d069b1bdc50a77db41195149e17f68e5" +dependencies = [ + "memchr", +] + +[[package]] +name = "arrayref" +version = "0.3.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a4c527152e37cf757a3f78aae5a06fbeefdb07ccc535c980a3208ee3060dd544" + +[[package]] +name = "atty" +version = "0.2.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d9b39be18770d11421cdb1b9947a45dd3f37e93092cbf377614828a319d5fee8" +dependencies = [ + "hermit-abi", + "libc", + "winapi", +] + +[[package]] +name = "autocfg" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cdb031dd78e28731d87d56cc8ffef4a8f36ca26c38fe2de700543e627f8a464a" + +[[package]] +name = "bincode" +version = "1.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f30d3a39baa26f9651f17b375061f3233dde33424a8b72b0dbe93a68a0bc896d" +dependencies = [ + "byteorder", + "serde", +] + +[[package]] +name = "block-buffer" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c0940dc441f31689269e10ac70eb1002a3a1d3ad1390e030043662eb7fe4688b" +dependencies = [ + "block-padding", + "byte-tools", + "byteorder", + "generic-array 0.12.3", +] + +[[package]] +name = "block-padding" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fa79dedbb091f449f1f39e53edf88d5dbe95f895dae6135a8d7b881fb5af73f5" +dependencies = [ + "byte-tools", +] + +[[package]] +name = "bs58" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "476e9cd489f9e121e02ffa6014a8ef220ecb15c05ed23fc34cca13925dc283fb" + +[[package]] +name = "bv" +version = "0.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8834bb1d8ee5dc048ee3124f2c7c1afcc6bc9aed03f11e9dfd8c69470a5db340" +dependencies = [ + "feature-probe", + "serde", +] + +[[package]] +name = "byte-tools" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e3b5ca7a04898ad4bcd41c90c5285445ff5b791899bb1b0abdd2a2aa791211d7" + +[[package]] +name = "byteorder" +version = "1.3.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "08c48aae112d48ed9f069b33538ea9e3e90aa263cfa3d1c24309612b1f7472de" + +[[package]] +name = "cfg-if" +version = "0.1.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4785bdd1c96b2a846b2bd7cc02e86b6b3dbf14e7e53446c4f54c92a361040822" + +[[package]] +name = "curve25519-dalek" +version = "2.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5d85653f070353a16313d0046f173f70d1aadd5b42600a14de626f0dfb3473a5" +dependencies = [ + "byteorder", + "digest", + "rand_core", + "subtle", + "zeroize", +] + +[[package]] +name = "derivative" +version = "2.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cb582b60359da160a9477ee80f15c8d784c477e69c217ef2cdd4169c24ea380f" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "digest" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f3d0c8c8752312f9713efd397ff63acb9f85585afbf179282e720e7704954dd5" +dependencies = [ + "generic-array 0.12.3", +] + +[[package]] +name = "either" +version = "1.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e78d4f1cc4ae33bbfc157ed5d5a5ef3bc29227303d595861deb238fcec4e9457" + +[[package]] +name = "env_logger" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "44533bbbb3bb3c1fa17d9f2e4e38bbbaf8396ba82193c4cb1b6445d711445d36" +dependencies = [ + "atty", + "humantime", + "log", + "regex", + "termcolor", +] + +[[package]] +name = "fake-simd" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e88a8acf291dafb59c2d96e8f59828f3838bb1a70398823ade51a84de6a6deed" + +[[package]] +name = "feature-probe" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "835a3dc7d1ec9e75e2b5fb4ba75396837112d2060b03f7d43bc1897c7f7211da" + +[[package]] +name = "flux-aggregator" +version = "0.1.0" +dependencies = [ + "arrayref", + "byteorder", + "num-derive", + "num-traits", + "num_enum", + "solana-program", + "spl-token", + "thiserror", +] + +[[package]] +name = "generic-array" +version = "0.12.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c68f0274ae0e023facc3c97b2e00f076be70e254bc851d972503b328db79b2ec" +dependencies = [ + "typenum", +] + +[[package]] +name = "generic-array" +version = "0.14.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "501466ecc8a30d1d3b7fc9229b122b2ce8ed6e9d9223f1138d4babb253e51817" +dependencies = [ + "serde", + "typenum", + "version_check", +] + +[[package]] +name = "getrandom" +version = "0.1.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fc587bc0ec293155d5bfa6b9891ec18a1e330c234f896ea47fbada4cadbe47e6" +dependencies = [ + "cfg-if", + "libc", + "wasi", +] + +[[package]] +name = "hermit-abi" +version = "0.1.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5aca5565f760fb5b220e499d72710ed156fdb74e631659e99377d9ebfbd13ae8" +dependencies = [ + "libc", +] + +[[package]] +name = "hex" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "644f9158b2f133fd50f5fb3242878846d9eb792e445c893805ff0e3824006e35" + +[[package]] +name = "humantime" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "df004cfca50ef23c36850aaaa59ad52cc70d0e90243c3c7737a4dd32dc7a3c4f" +dependencies = [ + "quick-error", +] + +[[package]] +name = "itertools" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "284f18f85651fe11e8a991b2adb42cb078325c996ed026d994719efcfca1d54b" +dependencies = [ + "either", +] + +[[package]] +name = "lazy_static" +version = "1.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" + +[[package]] +name = "libc" +version = "0.2.81" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1482821306169ec4d07f6aca392a4681f66c75c9918aa49641a2595db64053cb" + +[[package]] +name = "log" +version = "0.4.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4fabed175da42fed1fa0746b0ea71f412aa9d35e76e95e59b192c64b9dc2bf8b" +dependencies = [ + "cfg-if", +] + +[[package]] +name = "memchr" +version = "2.3.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0ee1c47aaa256ecabcaea351eae4a9b01ef39ed810004e298d2511ed284b1525" + +[[package]] +name = "memmap" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6585fd95e7bb50d6cc31e20d4cf9afb4e2ba16c5846fc76793f11218da9c475b" +dependencies = [ + "libc", + "winapi", +] + +[[package]] +name = "num-derive" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "876a53fff98e03a936a674b29568b0e605f06b29372c2489ff4de23f1949743d" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "num-traits" +version = "0.2.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9a64b1ec5cda2586e284722486d802acf1f7dbdc623e2bfc57e65ca1cd099290" +dependencies = [ + "autocfg", +] + +[[package]] +name = "num_enum" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "226b45a5c2ac4dd696ed30fa6b94b057ad909c7b7fc2e0d0808192bced894066" +dependencies = [ + "derivative", + "num_enum_derive", +] + +[[package]] +name = "num_enum_derive" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1c0fd9eba1d5db0994a239e09c1be402d35622277e35468ba891aa5e3188ce7e" +dependencies = [ + "proc-macro-crate", + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "opaque-debug" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2839e79665f131bdb5782e51f2c6c9599c133c6098982a54c794358bf432529c" + +[[package]] +name = "ppv-lite86" +version = "0.2.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ac74c624d6b2d21f425f752262f42188365d7b8ff1aff74c82e45136510a4857" + +[[package]] +name = "proc-macro-crate" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d6ea3c4595b96363c13943497db34af4460fb474a95c43f4446ad341b8c9785" +dependencies = [ + "toml", +] + +[[package]] +name = "proc-macro2" +version = "1.0.24" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e0704ee1a7e00d7bb417d0770ea303c1bccbabf0ef1667dae92b5967f5f8a71" +dependencies = [ + "unicode-xid", +] + +[[package]] +name = "quick-error" +version = "1.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a1d01941d82fa2ab50be1e79e6714289dd7cde78eba4c074bc5a4374f650dfe0" + +[[package]] +name = "quote" +version = "1.0.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "aa563d17ecb180e500da1cfd2b028310ac758de548efdd203e18f283af693f37" +dependencies = [ + "proc-macro2", +] + +[[package]] +name = "rand" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6a6b1679d49b24bbfe0c803429aa1874472f50d9b363131f0e89fc356b544d03" +dependencies = [ + "getrandom", + "libc", + "rand_chacha", + "rand_core", + "rand_hc", +] + +[[package]] +name = "rand_chacha" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f4c8ed856279c9737206bf725bf36935d8666ead7aa69b52be55af369d193402" +dependencies = [ + "ppv-lite86", + "rand_core", +] + +[[package]] +name = "rand_core" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "90bde5296fc891b0cef12a6d03ddccc162ce7b2aff54160af9338f8d40df6d19" +dependencies = [ + "getrandom", +] + +[[package]] +name = "rand_hc" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ca3129af7b92a17112d59ad498c6f81eaf463253766b90396d39ea7a39d6613c" +dependencies = [ + "rand_core", +] + +[[package]] +name = "regex" +version = "1.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "38cf2c13ed4745de91a5eb834e11c00bcc3709e773173b2ce4c56c9fbde04b9c" +dependencies = [ + "aho-corasick", + "memchr", + "regex-syntax", + "thread_local", +] + +[[package]] +name = "regex-syntax" +version = "0.6.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3b181ba2dcf07aaccad5448e8ead58db5b742cf85dfe035e2227f137a539a189" + +[[package]] +name = "rustc_version" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "138e3e0acb6c9fb258b19b67cb8abd63c00679d2851805ea151465464fe9030a" +dependencies = [ + "semver", +] + +[[package]] +name = "rustversion" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cb5d2a036dc6d2d8fd16fde3498b04306e29bd193bf306a57427019b823d5acd" + +[[package]] +name = "semver" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d7eb9ef2c18661902cc47e535f9bc51b78acd254da71d375c2f6720d9a40403" +dependencies = [ + "semver-parser", +] + +[[package]] +name = "semver-parser" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "388a1df253eca08550bef6c72392cfe7c30914bf41df5269b68cbd6ff8f570a3" + +[[package]] +name = "serde" +version = "1.0.118" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "06c64263859d87aa2eb554587e2d23183398d617427327cf2b3d0ed8c69e4800" +dependencies = [ + "serde_derive", +] + +[[package]] +name = "serde_bytes" +version = "0.11.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "16ae07dd2f88a366f15bd0632ba725227018c69a1c8550a927324f8eb8368bb9" +dependencies = [ + "serde", +] + +[[package]] +name = "serde_derive" +version = "1.0.118" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c84d3526699cd55261af4b941e4e725444df67aa4f9e6a3564f18030d12672df" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "sha2" +version = "0.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a256f46ea78a0c0d9ff00077504903ac881a1dafdc20da66545699e7776b3e69" +dependencies = [ + "block-buffer", + "digest", + "fake-simd", + "opaque-debug", +] + +[[package]] +name = "solana-frozen-abi" +version = "1.4.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9e5ab6ad3dda6a3d95d19603eeedc65689d8125eafb3e23c6a1e01ab8a6ba60c" +dependencies = [ + "bs58", + "bv", + "generic-array 0.14.4", + "log", + "memmap", + "rustc_version", + "serde", + "serde_derive", + "sha2", + "solana-frozen-abi-macro", + "solana-logger", + "thiserror", +] + +[[package]] +name = "solana-frozen-abi-macro" +version = "1.4.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ffaa09aa938a67501479ed8a785071c6993f72c34e43f680db3ea7a2dadad9e7" +dependencies = [ + "lazy_static", + "proc-macro2", + "quote", + "rustc_version", + "syn", +] + +[[package]] +name = "solana-logger" +version = "1.4.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0d949157d0b23eaf5758b427d90741d2a90751c4e3dfee028f5726ab8b36e769" +dependencies = [ + "env_logger", + "lazy_static", + "log", +] + +[[package]] +name = "solana-program" +version = "1.4.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e9c6cb16e8aa986bc0d2af8ec50628f7451bef9dac89924adf48302bd4fc755" +dependencies = [ + "bincode", + "bs58", + "bv", + "curve25519-dalek", + "hex", + "itertools", + "lazy_static", + "log", + "num-derive", + "num-traits", + "rand", + "rustc_version", + "rustversion", + "serde", + "serde_bytes", + "serde_derive", + "sha2", + "solana-frozen-abi", + "solana-frozen-abi-macro", + "solana-logger", + "solana-sdk-macro", + "thiserror", +] + +[[package]] +name = "solana-program-demo" +version = "0.1.0" +dependencies = [ + "byteorder", + "flux-aggregator", + "solana-program", +] + +[[package]] +name = "solana-sdk-macro" +version = "1.4.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "475a680cd175f2e256452e007c6f8622d3a1ab97ab36d26303b35576e24f340c" +dependencies = [ + "bs58", + "proc-macro2", + "quote", + "rustversion", + "syn", +] + +[[package]] +name = "spl-token" +version = "3.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2f77fa0b41cbc82d1d7c8f2d914b49e9a1a7b6e32af952d03383fb989c42bc89" +dependencies = [ + "arrayref", + "num-derive", + "num-traits", + "num_enum", + "solana-program", + "thiserror", +] + +[[package]] +name = "subtle" +version = "2.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "343f3f510c2915908f155e94f17220b19ccfacf2a64a2a5d8004f2c3e311e7fd" + +[[package]] +name = "syn" +version = "1.0.54" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9a2af957a63d6bd42255c359c93d9bfdb97076bd3b820897ce55ffbfbf107f44" +dependencies = [ + "proc-macro2", + "quote", + "unicode-xid", +] + +[[package]] +name = "termcolor" +version = "1.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2dfed899f0eb03f32ee8c6a0aabdb8a7949659e3466561fc0adf54e26d88c5f4" +dependencies = [ + "winapi-util", +] + +[[package]] +name = "thiserror" +version = "1.0.22" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0e9ae34b84616eedaaf1e9dd6026dbe00dcafa92aa0c8077cb69df1fcfe5e53e" +dependencies = [ + "thiserror-impl", +] + +[[package]] +name = "thiserror-impl" +version = "1.0.22" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9ba20f23e85b10754cd195504aebf6a27e2e6cbe28c17778a0c930724628dd56" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "thread_local" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d40c6d1b69745a6ec6fb1ca717914848da4b44ae29d9b3080cbee91d72a69b14" +dependencies = [ + "lazy_static", +] + +[[package]] +name = "toml" +version = "0.5.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "75cf45bb0bef80604d001caaec0d09da99611b3c0fd39d3080468875cdb65645" +dependencies = [ + "serde", +] + +[[package]] +name = "typenum" +version = "1.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "373c8a200f9e67a0c95e62a4f52fbf80c23b4381c05a17845531982fa99e6b33" + +[[package]] +name = "unicode-xid" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f7fe0bb3479651439c9112f72b6c505038574c9fbb575ed1bf3b797fa39dd564" + +[[package]] +name = "version_check" +version = "0.9.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b5a972e5669d67ba988ce3dc826706fb0a8b01471c088cb0b6110b805cc36aed" + +[[package]] +name = "wasi" +version = "0.9.0+wasi-snapshot-preview1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cccddf32554fecc6acb585f82a32a72e28b48f8c4c1883ddfeeeaa96f7d8e519" + +[[package]] +name = "winapi" +version = "0.3.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419" +dependencies = [ + "winapi-i686-pc-windows-gnu", + "winapi-x86_64-pc-windows-gnu", +] + +[[package]] +name = "winapi-i686-pc-windows-gnu" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" + +[[package]] +name = "winapi-util" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "70ec6ce85bb158151cae5e5c87f95a8e97d2c0c4b001223f33a334e3ce5de178" +dependencies = [ + "winapi", +] + +[[package]] +name = "winapi-x86_64-pc-windows-gnu" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" + +[[package]] +name = "zeroize" +version = "1.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "05f33972566adbd2d3588b0491eb94b98b43695c4ef897903470ede4f3f5a28a" diff --git a/intergration-example/Cargo.toml b/intergration-example/Cargo.toml new file mode 100644 index 0000000..b5a8994 --- /dev/null +++ b/intergration-example/Cargo.toml @@ -0,0 +1,21 @@ +[package] +name = "solana-program-demo" +version = "0.1.0" +authors = ["czl1378 "] +edition = "2018" + +# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html + +[dependencies] +solana-program = "1.4.8" +byteorder = "1.3" +flux-aggregator = { path = "../program", features = [ "no-entrypoint" ] } + +[lib] +crate-type = ["cdylib", "lib"] + +[features] +program = [] + +[package.metadata.docs.rs] +targets = ["x86_64-unknown-linux-gnu"] \ No newline at end of file diff --git a/intergration-example/Xargo.toml b/intergration-example/Xargo.toml new file mode 100644 index 0000000..1744f09 --- /dev/null +++ b/intergration-example/Xargo.toml @@ -0,0 +1,2 @@ +[target.bpfel-unknown-unknown.dependencies.std] +features = [] \ No newline at end of file diff --git a/intergration-example/client/demo.ts b/intergration-example/client/demo.ts new file mode 100644 index 0000000..a468054 --- /dev/null +++ b/intergration-example/client/demo.ts @@ -0,0 +1,163 @@ +import { + Account, + Connection, + Version, + BpfLoader, + BPF_LOADER_PROGRAM_ID, + PublicKey, + LAMPORTS_PER_SOL, + SystemProgram, + TransactionInstruction, + Transaction, + sendAndConfirmTransaction, +} from '@solana/web3.js'; + +// @ts-ignore +import BufferLayout from 'buffer-layout'; + +import fs from 'fs'; + +import {newAccountWithLamports} from './util/new-account-with-lamports'; + +interface ConnectionResult { + connection: Connection; + version: Version; +} + +interface LoadProgramResult { + programId: PublicKey; + pubkey: PublicKey; +} + +const demoAccountDataLayout = BufferLayout.struct([ + BufferLayout.u32('number'), +]); + + +/** + * Establish a connection to the cluster + */ +export async function establishConnection(url: string): Promise { + let connection = new Connection(url, 'singleGossip'); + const version = await connection.getVersion(); + return { + connection, version + } +} + +/** + * Caculate the pay fees + */ +export async function calculatePayfees(pathToProgram: string, connection: Connection): Promise { + let fees = 0; + const {feeCalculator} = await connection.getRecentBlockhash(); + + // Calculate the cost to load the program + const data = fs.readFileSync(pathToProgram); + const NUM_RETRIES = 500; // allow some number of retries + fees += + feeCalculator.lamportsPerSignature * + (BpfLoader.getMinNumSignatures(data.length) + NUM_RETRIES) + + (await connection.getMinimumBalanceForRentExemption(data.length)); + + // Calculate the cost to fund the greeter account + fees += await connection.getMinimumBalanceForRentExemption( + demoAccountDataLayout.span, + ); + + // Calculate the cost of sending the transactions + fees += feeCalculator.lamportsPerSignature * 100; // wag + + return fees; +} + +/** + * Establish an account to pay for everything + */ +export async function establishPayer(fees: number, connection: Connection): Promise { + + // Fund a new payer via airdrop + let payerAccount = await newAccountWithLamports(connection, fees); + + return payerAccount; +} + +/** + * Load the hello world BPF program if not already loaded + */ +export async function loadProgram(pathToProgram: string, payerAccount: Account, connection: Connection): Promise { + + const data = fs.readFileSync(pathToProgram); + // const programAccount = await accountFromMnemonic("spin canyon tuition upset pioneer celery liquid conduct boy bargain dust seed"); + const programAccount = new Account(); + console.log("empty account:", programAccount.publicKey.toBase58()); + await BpfLoader.load( + connection, + payerAccount, + programAccount, + data, + BPF_LOADER_PROGRAM_ID, + ); + + const programId = programAccount.publicKey; + + // Create the demo account + const demoAccount = new Account(); + const demoPubkey = demoAccount.publicKey; + + const space = demoAccountDataLayout.span; + const lamports = await connection.getMinimumBalanceForRentExemption( + demoAccountDataLayout.span, + ); + + let tx = SystemProgram.createAccount({ + fromPubkey: payerAccount.publicKey, + newAccountPubkey: demoPubkey, + lamports, + space, + programId, + }); + + console.log(tx); + + const transaction = new Transaction().add( + tx + ); + + await sendAndConfirmTransaction( + connection, + transaction, + [payerAccount, demoAccount], + { + commitment: 'singleGossip', + preflightCommitment: 'singleGossip', + }, + ); + + return { + programId, pubkey: demoPubkey + }; +} + +/** + * intialize + */ +export async function initialize(num: string, pubkey: PublicKey, programId: PublicKey, payerAccount: Account, connection: Connection): Promise { + + const instruction = new TransactionInstruction({ + keys: [{pubkey, isSigner: false, isWritable: true}], + programId, + data: Buffer.from(num), // All instructions are hellos + }); + + await sendAndConfirmTransaction( + connection, + new Transaction().add(instruction), + [payerAccount], + { + commitment: 'singleGossip', + preflightCommitment: 'singleGossip', + }, + ); + +} diff --git a/intergration-example/client/main.ts b/intergration-example/client/main.ts new file mode 100644 index 0000000..bfaf283 --- /dev/null +++ b/intergration-example/client/main.ts @@ -0,0 +1,58 @@ +import { LAMPORTS_PER_SOL, Account, PublicKey } from '@solana/web3.js'; + +import { + establishConnection, + calculatePayfees, + establishPayer, + loadProgram, + initialize, +} from './demo'; + +const solPath = '../build/solana_program_demo.so'; + +function randNumber(): number { + let num = Math.random() * 100; + return parseInt(num + ''); +} + +async function main() { + try { + + console.log("Establish connection..."); + const res = await establishConnection('http://localhost:8899'); + console.log("Connection to cluster established: ", res.version); + + const { connection } = res; + + console.log("Caculate pay for fees..."); + const fees = await calculatePayfees(solPath, connection); + console.log("Fees:", fees); + + console.log("Establish payer..."); + const payer = await establishPayer(fees, connection); + + console.log("payer balance:", await connection.getBalance(payer.publicKey)); + console.log("Using account ", payer.publicKey.toBase58(), " to load the program."); + + const program = await loadProgram(solPath, payer, connection); + + const { programId, pubkey } = program; + console.log('Program loaded to account:', programId.toBase58()); + + console.log("Prepare to initialize program..."); + + await initialize( + 'BTC/USD', + // the aggregator feed address + new PublicKey('2jReuMRoYi3pKTF8YLnZEvT2bXcw56SdBxvssrVzu41v'), + programId, + payer, + connection + ); + + } catch(err) { + console.log(err); + } +} + +main(); \ No newline at end of file diff --git a/intergration-example/client/util/accountFromMnemonic.ts b/intergration-example/client/util/accountFromMnemonic.ts new file mode 100644 index 0000000..31e8124 --- /dev/null +++ b/intergration-example/client/util/accountFromMnemonic.ts @@ -0,0 +1,16 @@ +import {Account} from '@solana/web3.js'; + +import nacl from "tweetnacl" + +import * as bip39 from "bip39" +import * as bip32 from "bip32" + +export default async function accountFromMnemonic(mnemonic: string) { + const seed = await bip39.mnemonicToSeed(mnemonic); + + const base = bip32.fromSeed(seed).derivePath(`m/501'/0'/0`); + + const account = new Account(nacl.sign.keyPair.fromSeed(base.privateKey as any).secretKey); + + return account; +} \ No newline at end of file diff --git a/intergration-example/client/util/new-account-with-lamports.ts b/intergration-example/client/util/new-account-with-lamports.ts new file mode 100644 index 0000000..e97c0d6 --- /dev/null +++ b/intergration-example/client/util/new-account-with-lamports.ts @@ -0,0 +1,21 @@ +import {Account, Connection} from '@solana/web3.js'; + +export async function newAccountWithLamports( + connection: Connection, + lamports = 1000000, +): Promise { + const account = new Account(); + + let retries = 10; + await connection.requestAirdrop(account.publicKey, lamports); + for (;;) { + if (lamports == (await connection.getBalance(account.publicKey))) { + return account; + } + if (--retries <= 0) { + break; + } + console.log(`Airdrop retry ${retries}`); + } + throw new Error(`Airdrop of ${lamports} failed`); +} diff --git a/intergration-example/src/entrypoint.rs b/intergration-example/src/entrypoint.rs new file mode 100644 index 0000000..5d80d37 --- /dev/null +++ b/intergration-example/src/entrypoint.rs @@ -0,0 +1,36 @@ + + +use solana_program::{ + account_info::{next_account_info, AccountInfo}, + entrypoint, + info, + entrypoint::ProgramResult, + program_error::{ProgramError}, + pubkey::Pubkey, +}; + +use flux_aggregator; + +entrypoint!(process_instruction); + +// Program entrypoint's implementation +fn process_instruction( + _program_id: &Pubkey, // Public key of the account the hello world program was loaded into + accounts: &[AccountInfo], // The account to say hello to + _instruction_data: &[u8], // A number to store +) -> ProgramResult { + + let accounts_iter = &mut accounts.iter(); + + // the account to store data + let aggregator_info = next_account_info(accounts_iter)?; + + let value = flux_aggregator::get_submission_value(aggregator_info)?; + + // show the value and then return error + // to demonstrate we've got the aggregator value + info!(&format!("aggregator value: {:?}", value)); + + return Err(ProgramError::MissingRequiredSignature); + +} \ No newline at end of file diff --git a/intergration-example/src/lib.rs b/intergration-example/src/lib.rs new file mode 100644 index 0000000..99e3d53 --- /dev/null +++ b/intergration-example/src/lib.rs @@ -0,0 +1,6 @@ +#![deny(missing_docs)] +//! A simple program that return success. +#[cfg(not(feature = "no-entrypoint"))] +mod entrypoint; +// Export current sdk types for downstream users building with a different sdk version +pub use solana_program; \ No newline at end of file diff --git a/package.json b/package.json index 135f13e..6d77b3d 100644 --- a/package.json +++ b/package.json @@ -15,7 +15,8 @@ "@solana/web3.js": "^0.87.1", "buffer-layout": "^1.2.0", "commander": "^6.2.0", - "dotenv": "^8.2.0" + "dotenv": "^8.2.0", + "solray": "git+https://github.com/defactojob/solray.git" }, "devDependencies": { "@tsconfig/recommended": "^1.0.1", diff --git a/program/src/error.rs b/program/src/error.rs index 86bfe97..eb8e689 100644 --- a/program/src/error.rs +++ b/program/src/error.rs @@ -40,6 +40,9 @@ pub enum Error { /// Aggregator key not match #[error("Aggregator key not match")] AggregatorKeyNotMatch, + /// Index have been used + #[error("Index have been used")] + IndexHaveBeenUsed, } impl From for ProgramError { diff --git a/program/src/instruction.rs b/program/src/instruction.rs index 44fcf4b..0ded744 100644 --- a/program/src/instruction.rs +++ b/program/src/instruction.rs @@ -37,14 +37,16 @@ pub enum Instruction { /// 0. `[writable]` The aggregator. /// 1. `[signer]` The aggregator's authority. AddOracle { + /// add to index + index: u8, /// Is usually the oracle name description: [u8; 32], }, /// Remove an oracle RemoveOracle { - /// The oracle key - oracle: Pubkey, + /// index + index: u8, }, /// Called by oracles when they have witnessed a need to update @@ -71,33 +73,33 @@ impl Instruction { Ok(match tag { 0 => { let (submit_interval, rest) = rest.split_at(4); - info!("1"); + let submit_interval = submit_interval .try_into() .ok() .map(u32::from_le_bytes) .ok_or(InvalidInstruction)?; - info!("2"); + let (min_submission_value, rest) = rest.split_at(8); let min_submission_value = min_submission_value .try_into() .ok() .map(u64::from_le_bytes) .ok_or(InvalidInstruction)?; - info!("3"); + let (max_submission_value, rest) = rest.split_at(8); let max_submission_value = max_submission_value .try_into() .ok() .map(u64::from_le_bytes) .ok_or(InvalidInstruction)?; - info!("4"); + let (description, _rest) = rest.split_at(32); let description = description .try_into() .ok() .ok_or(InvalidInstruction)?; - info!("5"); + Self::Initialize { submit_interval, min_submission_value, @@ -107,6 +109,9 @@ impl Instruction { }, 1 => { + let (&index, rest) = rest.split_first().ok_or(InvalidInstruction)?; + + info!(format!("das index: {:?}", index)); let (description, _rest) = rest.split_at(32); let description = description .try_into() @@ -114,13 +119,13 @@ impl Instruction { .ok_or(InvalidInstruction)?; Self::AddOracle { - description, + index, description, } }, 2 => { - let (oracle, _rest) = Self::unpack_pubkey(rest)?; + let (&index, _rest) = rest.split_first().ok_or(InvalidInstruction)?; Self::RemoveOracle { - oracle, + index, } }, 3 => { diff --git a/program/src/processor.rs b/program/src/processor.rs index a254972..9f4c6ed 100644 --- a/program/src/processor.rs +++ b/program/src/processor.rs @@ -42,19 +42,21 @@ impl Processor { ) }, Instruction::AddOracle { + index, description, } => { info!("Instruction: AddOracle"); + info!(format!("index: {:?}", index)); Self::process_add_oracle( - accounts, description, + accounts, index, description, ) }, Instruction::RemoveOracle { - oracle, + index, } => { info!("Instruction: RemoveOracle"); Self::process_remove_oracle( - accounts, oracle, + accounts, index, ) }, Instruction::Submit { @@ -140,6 +142,7 @@ impl Processor { /// 4. `[signer]` The aggregator owner pub fn process_add_oracle( accounts: &[AccountInfo], + index: u8, description: [u8; 32], ) -> ProgramResult { @@ -174,18 +177,25 @@ impl Processor { let mut submissions = aggregator.submissions; - // default submission - for s in submissions.iter_mut() { - if s.oracle == Pubkey::default() { - *s = Submission { - time: clock.unix_timestamp, - value: 0, - oracle: *oracle_info.key, - }; - break; - } + let submission = &mut submissions[index as usize]; + if submission.oracle == Pubkey::default() { + submission.oracle = *oracle_info.key; + } else { + return Err(Error::IndexHaveBeenUsed.into()); } + // // default submission + // for s in submissions.iter_mut() { + // if s.oracle == Pubkey::default() { + // *s = Submission { + // time: clock.unix_timestamp, + // value: 0, + // oracle: *oracle_info.key, + // }; + // break; + // } + // } + aggregator.submissions = submissions; Aggregator::pack(aggregator, &mut aggregator_info.data.borrow_mut())?; @@ -212,7 +222,7 @@ impl Processor { /// 1. `[signer]` The aggregator onwer. pub fn process_remove_oracle( accounts: &[AccountInfo], - oracle: Pubkey, + index: u8, ) -> ProgramResult { let account_info_iter = &mut accounts.iter(); let aggregator_info = next_account_info(account_info_iter)?; @@ -235,19 +245,26 @@ impl Processor { // remove submission let mut submissions = aggregator.submissions; - let mut found = false; - for s in submissions.iter_mut() { - if s.oracle == oracle { - *s = Submission::default(); - found = true; - break; - } - } - - if !found { + let submission = &mut submissions[index as usize]; + if submission.oracle != Pubkey::default() { + *submission = Submission::default(); + } else { return Err(Error::NotFoundOracle.into()); } + // let mut found = false; + // for s in submissions.iter_mut() { + // if s.oracle == oracle { + // *s = Submission::default(); + // found = true; + // break; + // } + // } + + // if !found { + // return Err(Error::NotFoundOracle.into()); + // } + aggregator.submissions = submissions; Aggregator::pack(aggregator, &mut aggregator_info.data.borrow_mut())?; @@ -428,6 +445,7 @@ impl PrintProgramError for Error { Error::SubmissonCooling => info!("Submission cooling"), Error::InsufficientWithdrawable => info!("Insufficient withdrawable"), Error::AggregatorKeyNotMatch => info!("Aggregator key not match"), + Error::IndexHaveBeenUsed => info!("Index have been used"), } } } \ No newline at end of file diff --git a/src/.env b/src/.env deleted file mode 100644 index 9bb96c0..0000000 --- a/src/.env +++ /dev/null @@ -1 +0,0 @@ -NETWORK=dev \ No newline at end of file diff --git a/src/FluxAggregator.ts b/src/FluxAggregator.ts index 23c1997..3c94fb9 100644 --- a/src/FluxAggregator.ts +++ b/src/FluxAggregator.ts @@ -56,6 +56,8 @@ interface InitializeInstructionParams extends InitializeParams { } interface AddOracleParams { + // oracle index + index: number; owner: PublicKey; description: string; aggregator: PublicKey; @@ -68,11 +70,13 @@ interface AddOracleInstructionParams extends AddOracleParams { } interface RemoveOracleParams { - aggregator: PublicKey, + // oracle index + index: number; + aggregator: PublicKey; // The oracle key - oracle: PublicKey, + oracle: PublicKey; // To prove you are the aggregator owner - authority: Account, + authority: Account; } interface RemoveOracleInstructionParams extends RemoveOracleParams { @@ -193,6 +197,7 @@ export default class FluxAggregator extends BaseProgram { private addOracleInstruction(params: AddOracleInstructionParams): TransactionInstruction { const { + index, oracle, owner, description, @@ -202,11 +207,13 @@ export default class FluxAggregator extends BaseProgram { const layout = BufferLayout.struct([ BufferLayout.u8("instruction"), + BufferLayout.u8("index"), BufferLayout.blob(32, "description"), ]); return this.instructionEncode(layout, { instruction: 1, // add oracle instruction + index, description: Buffer.from(description), }, [ { write: oracle }, @@ -226,19 +233,18 @@ export default class FluxAggregator extends BaseProgram { private removeOracleInstruction(params: RemoveOracleInstructionParams): TransactionInstruction { const { - aggregator, - oracle, + index, authority, } = params; const layout = BufferLayout.struct([ BufferLayout.u8("instruction"), - publicKey("oracle"), + BufferLayout.u8("index"), ]); return this.instructionEncode(layout, { instruction: 2, // remove oracle instruction - oracle: oracle.toBuffer(), + index, }, [ { write: authority }, ]); diff --git a/src/cli.ts b/src/cli.ts index 740d710..dd8698d 100644 --- a/src/cli.ts +++ b/src/cli.ts @@ -189,18 +189,23 @@ cli cli .command("add-oracle") .description("add an oracle to aggregator") + .option("--index ", "add to index (0-20)") .option("--feedAddress ", "feed address") .option("--oracleName ", "oracle name") .option("--oracleOwner ", "oracle owner address") .action(async (opts) => { - const { deployer, admin, aggregatorProgram } = await AdminContext.load() + const { admin, aggregatorProgram } = await AdminContext.load() - const { oracleName, oracleOwner, feedAddress } = opts + const { index, oracleName, oracleOwner, feedAddress } = opts + if (!index || index < 0 || index > 21) { + error("invalid index (0-20)") + } const program = new FluxAggregator(admin, aggregatorProgram.publicKey) log("add oracle...") const oracle = await program.addOracle({ + index, owner: new PublicKey(oracleOwner), description: oracleName.substr(0, 32).padEnd(32), aggregator: new PublicKey(feedAddress), diff --git a/src/utils.ts b/src/utils.ts index 35d2bfb..6b6426f 100644 --- a/src/utils.ts +++ b/src/utils.ts @@ -102,7 +102,7 @@ export async function walletFromEnv(key: string, conn: Connection): Promise { const deployFile = process.env.DEPLOY_FILE - + if (!deployFile) { throw new Error(`Set DEPLOY_FILE in .env`) } diff --git a/yarn.lock b/yarn.lock deleted file mode 100644 index c3feba3..0000000 --- a/yarn.lock +++ /dev/null @@ -1,1411 +0,0 @@ -# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. -# yarn lockfile v1 - - -"101@^1.0.0", "101@^1.2.0": - version "1.6.3" - resolved "https://registry.yarnpkg.com/101/-/101-1.6.3.tgz#9071196e60c47e4ce327075cf49c0ad79bd822fd" - integrity sha512-4dmQ45yY0Dx24Qxp+zAsNLlMF6tteCyfVzgbulvSyC7tCyd3V8sW76sS0tHq8NpcbXfWTKasfyfzU1Kd86oKzw== - dependencies: - clone "^1.0.2" - deep-eql "^0.1.3" - keypather "^1.10.2" - -"@babel/runtime@^7.11.2", "@babel/runtime@^7.3.1": - version "7.12.5" - resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.12.5.tgz#410e7e487441e1b360c29be715d870d9b985882e" - integrity sha512-plcc+hbExy3McchJCEQG3knOsuh3HH+Prx1P6cLIkET/0dLuQDEnrT+s27Axgc9bqfsmNUNHfscgMUdBpC9xfg== - dependencies: - regenerator-runtime "^0.13.4" - -"@solana/web3.js@^0.87.1": - version "0.87.1" - resolved "https://registry.yarnpkg.com/@solana/web3.js/-/web3.js-0.87.1.tgz#b5789a1935590a8c54ffa6f803b8b0f91f2e6bd8" - integrity sha512-Q1ltSExYuLuKedwZvNS4HJhT6qL5rDm8wE4oElQINzMvLATPQto5XsdbNz9J9yj/cqzCN6bKhYroRlKOgF4lNg== - dependencies: - "@babel/runtime" "^7.3.1" - bn.js "^5.0.0" - bs58 "^4.0.1" - buffer "^6.0.1" - buffer-layout "^1.2.0" - crypto-hash "^1.2.2" - esdoc-inject-style-plugin "^1.0.0" - jayson "^3.0.1" - keccak "^3.0.1" - mz "^2.7.0" - node-fetch "^2.2.0" - npm-run-all "^4.1.5" - rpc-websockets "^7.4.2" - secp256k1 "^4.0.2" - superstruct "^0.8.3" - tweetnacl "^1.0.0" - ws "^7.0.0" - -"@tsconfig/recommended@^1.0.1": - version "1.0.1" - resolved "https://registry.yarnpkg.com/@tsconfig/recommended/-/recommended-1.0.1.tgz#7619bad397e06ead1c5182926c944e0ca6177f52" - integrity sha512-2xN+iGTbPBEzGSnVp/Hd64vKJCJWxsi9gfs88x4PPMyEjHJoA3o5BY9r5OLPHIZU2pAQxkSAsJFqn6itClP8mQ== - -"@types/connect@^3.4.33": - version "3.4.34" - resolved "https://registry.yarnpkg.com/@types/connect/-/connect-3.4.34.tgz#170a40223a6d666006d93ca128af2beb1d9b1901" - integrity sha512-ePPA/JuI+X0vb+gSWlPKOY0NdNAie/rPUqX2GUPpbZwiKTkSPhjXWuee47E4MtE54QVzGCQMQkAL6JhV2E1+cQ== - dependencies: - "@types/node" "*" - -"@types/express-serve-static-core@^4.17.9": - version "4.17.15" - resolved "https://registry.yarnpkg.com/@types/express-serve-static-core/-/express-serve-static-core-4.17.15.tgz#7c3d37829a991da9a507c1efd44d97532e8909e3" - integrity sha512-pb71P0BrBAx7cQE+/7QnA1HTQUkdBKMlkPY7lHUMn0YvPJkL2UA+KW3BdWQ309IT+i9En/qm45ZxpjIcpgEhNQ== - dependencies: - "@types/node" "*" - "@types/qs" "*" - "@types/range-parser" "*" - -"@types/lodash@^4.14.159": - version "4.14.165" - resolved "https://registry.yarnpkg.com/@types/lodash/-/lodash-4.14.165.tgz#74d55d947452e2de0742bad65270433b63a8c30f" - integrity sha512-tjSSOTHhI5mCHTy/OOXYIhi2Wt1qcbHmuXD1Ha7q70CgI/I71afO4XtLb/cVexki1oVYchpul/TOuu3Arcdxrg== - -"@types/node@*", "@types/node@^14.14.10": - version "14.14.11" - resolved "https://registry.yarnpkg.com/@types/node/-/node-14.14.11.tgz#fc25a4248a5e8d0837019b1d170146d07334abe0" - integrity sha512-BJ97wAUuU3NUiUCp44xzUFquQEvnk1wu7q4CMEUYKJWjdkr0YWYDsm4RFtAvxYsNjLsKcrFt6RvK8r+mnzMbEQ== - -"@types/node@^12.12.54": - version "12.19.8" - resolved "https://registry.yarnpkg.com/@types/node/-/node-12.19.8.tgz#efd6d1a90525519fc608c9db16c8a78f7693a978" - integrity sha512-D4k2kNi0URNBxIRCb1khTnkWNHv8KSL1owPmS/K5e5t8B2GzMReY7AsJIY1BnP5KdlgC4rj9jk2IkDMasIE7xg== - -"@types/qs@*": - version "6.9.5" - resolved "https://registry.yarnpkg.com/@types/qs/-/qs-6.9.5.tgz#434711bdd49eb5ee69d90c1d67c354a9a8ecb18b" - integrity sha512-/JHkVHtx/REVG0VVToGRGH2+23hsYLHdyG+GrvoUGlGAd0ErauXDyvHtRI/7H7mzLm+tBCKA7pfcpkQ1lf58iQ== - -"@types/range-parser@*": - version "1.2.3" - resolved "https://registry.yarnpkg.com/@types/range-parser/-/range-parser-1.2.3.tgz#7ee330ba7caafb98090bece86a5ee44115904c2c" - integrity sha512-ewFXqrQHlFsgc09MK5jP5iR7vumV/BYayNC6PgJO2LPe8vrnNFyjQjSppfEngITi0qvfKtzFvgKymGheFM9UOA== - -JSONStream@^1.3.5: - version "1.3.5" - resolved "https://registry.yarnpkg.com/JSONStream/-/JSONStream-1.3.5.tgz#3208c1f08d3a4d99261ab64f92302bc15e111ca0" - integrity sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ== - dependencies: - jsonparse "^1.2.0" - through ">=2.2.7 <3" - -ansi-escapes@^4.2.1: - version "4.3.1" - resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-4.3.1.tgz#a5c47cc43181f1f38ffd7076837700d395522a61" - integrity sha512-JWF7ocqNrp8u9oqpgV+wH5ftbt+cfvv+PTjOvKLT3AdYly/LmORARfEVT1iyjwN+4MqE5UmVKoAdIBqeoCHgLA== - dependencies: - type-fest "^0.11.0" - -ansi-regex@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.0.tgz#388539f55179bf39339c81af30a654d69f87cb75" - integrity sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg== - -ansi-styles@^3.2.1: - version "3.2.1" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" - integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== - dependencies: - color-convert "^1.9.0" - -ansi-styles@^4.1.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937" - integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== - dependencies: - color-convert "^2.0.1" - -any-promise@^1.0.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/any-promise/-/any-promise-1.3.0.tgz#abc6afeedcea52e809cdc0376aed3ce39635d17f" - integrity sha1-q8av7tzqUugJzcA3au0845Y10X8= - -arg@^4.1.0: - version "4.1.3" - resolved "https://registry.yarnpkg.com/arg/-/arg-4.1.3.tgz#269fc7ad5b8e42cb63c896d5666017261c144089" - integrity sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA== - -assert-args@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/assert-args/-/assert-args-1.2.1.tgz#404103a1452a32fe77898811e54e590a8a9373bd" - integrity sha1-QEEDoUUqMv53iYgR5U5ZCoqTc70= - dependencies: - "101" "^1.2.0" - compound-subject "0.0.1" - debug "^2.2.0" - get-prototype-of "0.0.0" - is-capitalized "^1.0.0" - is-class "0.0.4" - -balanced-match@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767" - integrity sha1-ibTRmasr7kneFk6gK4nORi1xt2c= - -base-x@^3.0.2: - version "3.0.8" - resolved "https://registry.yarnpkg.com/base-x/-/base-x-3.0.8.tgz#1e1106c2537f0162e8b52474a557ebb09000018d" - integrity sha512-Rl/1AWP4J/zRrk54hhlxH4drNxPJXYUaKffODVI53/dAsV4t9fBxyxYKAVPU1XBHxYwOWP9h9H0hM2MVw4YfJA== - dependencies: - safe-buffer "^5.0.1" - -base64-js@^1.3.1: - version "1.5.1" - resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a" - integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA== - -bn.js@^4.4.0: - version "4.11.9" - resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.11.9.tgz#26d556829458f9d1e81fc48952493d0ba3507828" - integrity sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw== - -bn.js@^5.0.0: - version "5.1.3" - resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-5.1.3.tgz#beca005408f642ebebea80b042b4d18d2ac0ee6b" - integrity sha512-GkTiFpjFtUzU9CbMeJ5iazkCzGL3jrhzerzZIuqLABjbwRaFt33I9tUdSNryIptM+RxDet6OKm2WnLXzW51KsQ== - -boolbase@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/boolbase/-/boolbase-1.0.0.tgz#68dff5fbe60c51eb37725ea9e3ed310dcc1e776e" - integrity sha1-aN/1++YMUes3cl6p4+0xDcwed24= - -brace-expansion@^1.1.7: - version "1.1.11" - resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" - integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== - dependencies: - balanced-match "^1.0.0" - concat-map "0.0.1" - -brorand@^1.0.1: - version "1.1.0" - resolved "https://registry.yarnpkg.com/brorand/-/brorand-1.1.0.tgz#12c25efe40a45e3c323eb8675a0a0ce57b22371f" - integrity sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8= - -bs58@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/bs58/-/bs58-4.0.1.tgz#be161e76c354f6f788ae4071f63f34e8c4f0a42a" - integrity sha1-vhYedsNU9veIrkBx9j806MTwpCo= - dependencies: - base-x "^3.0.2" - -buffer-from@^1.0.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.1.tgz#32713bc028f75c02fdb710d7c7bcec1f2c6070ef" - integrity sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A== - -buffer-layout@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/buffer-layout/-/buffer-layout-1.2.0.tgz#ee1f5ef05a8afd5db6b3a8fe2056c111bc69c737" - integrity sha512-iiyRoho/ERzBUv6kFvfsrLNgTlVwOkqQcSQN7WrO3Y+c5SeuEhCn6+y1KwhM0V3ndptF5mI/RI44zkw0qcR5Jg== - -buffer@^6.0.1: - version "6.0.3" - resolved "https://registry.yarnpkg.com/buffer/-/buffer-6.0.3.tgz#2ace578459cc8fbe2a70aaa8f52ee63b6a74c6c6" - integrity sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA== - dependencies: - base64-js "^1.3.1" - ieee754 "^1.2.1" - -bufferutil@^4.0.1: - version "4.0.2" - resolved "https://registry.yarnpkg.com/bufferutil/-/bufferutil-4.0.2.tgz#79f68631910f6b993d870fc77dc0a2894eb96cd5" - integrity sha512-AtnG3W6M8B2n4xDQ5R+70EXvOpnXsFYg/AK2yTZd+HQ/oxAdz+GI+DvjmhBw3L0ole+LJ0ngqY4JMbDzkfNzhA== - dependencies: - node-gyp-build "^4.2.0" - -call-bind@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.0.tgz#24127054bb3f9bdcb4b1fb82418186072f77b8ce" - integrity sha512-AEXsYIyyDY3MCzbwdhzG3Jx1R0J2wetQyUynn6dYHAO+bg8l1k7jwZtRv4ryryFs7EP+NDlikJlVe59jr0cM2w== - dependencies: - function-bind "^1.1.1" - get-intrinsic "^1.0.0" - -chalk@^2.4.1: - version "2.4.2" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" - integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== - dependencies: - ansi-styles "^3.2.1" - escape-string-regexp "^1.0.5" - supports-color "^5.3.0" - -chalk@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.0.tgz#4e14870a618d9e2edd97dd8345fd9d9dc315646a" - integrity sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A== - dependencies: - ansi-styles "^4.1.0" - supports-color "^7.1.0" - -chardet@^0.7.0: - version "0.7.0" - resolved "https://registry.yarnpkg.com/chardet/-/chardet-0.7.0.tgz#90094849f0937f2eedc2425d0d28a9e5f0cbad9e" - integrity sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA== - -cheerio@0.22.0: - version "0.22.0" - resolved "https://registry.yarnpkg.com/cheerio/-/cheerio-0.22.0.tgz#a9baa860a3f9b595a6b81b1a86873121ed3a269e" - integrity sha1-qbqoYKP5tZWmuBsahocxIe06Jp4= - dependencies: - css-select "~1.2.0" - dom-serializer "~0.1.0" - entities "~1.1.1" - htmlparser2 "^3.9.1" - lodash.assignin "^4.0.9" - lodash.bind "^4.1.4" - lodash.defaults "^4.0.1" - lodash.filter "^4.4.0" - lodash.flatten "^4.2.0" - lodash.foreach "^4.3.0" - lodash.map "^4.4.0" - lodash.merge "^4.4.0" - lodash.pick "^4.2.1" - lodash.reduce "^4.4.0" - lodash.reject "^4.4.0" - lodash.some "^4.4.0" - -circular-json@^0.5.9: - version "0.5.9" - resolved "https://registry.yarnpkg.com/circular-json/-/circular-json-0.5.9.tgz#932763ae88f4f7dead7a0d09c8a51a4743a53b1d" - integrity sha512-4ivwqHpIFJZBuhN3g/pEcdbnGUywkBblloGbkglyloVjjR3uT6tieI89MVOfbP2tHX5sgb01FuLgAOzebNlJNQ== - -cli-cursor@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-3.1.0.tgz#264305a7ae490d1d03bf0c9ba7c925d1753af307" - integrity sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw== - dependencies: - restore-cursor "^3.1.0" - -cli-width@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/cli-width/-/cli-width-3.0.0.tgz#a2f48437a2caa9a22436e794bf071ec9e61cedf6" - integrity sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw== - -clone@^1.0.2: - version "1.0.4" - resolved "https://registry.yarnpkg.com/clone/-/clone-1.0.4.tgz#da309cc263df15994c688ca902179ca3c7cd7c7e" - integrity sha1-2jCcwmPfFZlMaIypAheco8fNfH4= - -color-convert@^1.9.0: - version "1.9.3" - resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" - 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" - 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" - integrity sha1-p9BVi9icQveV3UIyj3QIMcpTvCU= - -color-name@~1.1.4: - version "1.1.4" - resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" - integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== - -commander@^2.20.3: - version "2.20.3" - resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" - integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== - -commander@^6.2.0: - version "6.2.0" - resolved "https://registry.yarnpkg.com/commander/-/commander-6.2.0.tgz#b990bfb8ac030aedc6d11bc04d1488ffef56db75" - integrity sha512-zP4jEKbe8SHzKJYQmq8Y9gYjtO/POJLgIdKgV7B9qNmABVFVc+ctqSX6iXh4mCpJfRBOabiZ2YKPg8ciDw6C+Q== - -compound-subject@0.0.1: - version "0.0.1" - resolved "https://registry.yarnpkg.com/compound-subject/-/compound-subject-0.0.1.tgz#271554698a15ae608b1dfcafd30b7ba1ea892c4b" - integrity sha1-JxVUaYoVrmCLHfyv0wt7oeqJLEs= - -concat-map@0.0.1: - version "0.0.1" - resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" - integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s= - -create-require@^1.1.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/create-require/-/create-require-1.1.1.tgz#c1d7e8f1e5f6cfc9ff65f9cd352d37348756c333" - integrity sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ== - -cross-spawn@^6.0.5: - version "6.0.5" - resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-6.0.5.tgz#4a5ec7c64dfae22c3a14124dbacdee846d80cbc4" - integrity sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ== - dependencies: - nice-try "^1.0.4" - path-key "^2.0.1" - semver "^5.5.0" - shebang-command "^1.2.0" - which "^1.2.9" - -crypto-hash@^1.2.2: - version "1.3.0" - resolved "https://registry.yarnpkg.com/crypto-hash/-/crypto-hash-1.3.0.tgz#b402cb08f4529e9f4f09346c3e275942f845e247" - integrity sha512-lyAZ0EMyjDkVvz8WOeVnuCPvKVBXcMv1l5SVqO1yC7PzTwrD/pPje/BIRbWhMoPe436U+Y2nD7f5bFx0kt+Sbg== - -css-select@~1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/css-select/-/css-select-1.2.0.tgz#2b3a110539c5355f1cd8d314623e870b121ec858" - integrity sha1-KzoRBTnFNV8c2NMUYj6HCxIeyFg= - dependencies: - boolbase "~1.0.0" - css-what "2.1" - domutils "1.5.1" - nth-check "~1.0.1" - -css-what@2.1: - version "2.1.3" - resolved "https://registry.yarnpkg.com/css-what/-/css-what-2.1.3.tgz#a6d7604573365fe74686c3f311c56513d88285f2" - integrity sha512-a+EPoD+uZiNfh+5fxw2nO9QwFa6nJe2Or35fGY6Ipw1R3R4AGz1d1TEZrCegvw2YTmZ0jXirGYlzxxpYSHwpEg== - -debug@^2.2.0: - version "2.6.9" - resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" - integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== - dependencies: - ms "2.0.0" - -deep-eql@^0.1.3: - version "0.1.3" - resolved "https://registry.yarnpkg.com/deep-eql/-/deep-eql-0.1.3.tgz#ef558acab8de25206cd713906d74e56930eb69f2" - integrity sha1-71WKyrjeJSBs1xOQbXTlaTDrafI= - dependencies: - type-detect "0.1.1" - -define-properties@^1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.3.tgz#cf88da6cbee26fe6db7094f61d870cbd84cee9f1" - integrity sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ== - dependencies: - object-keys "^1.0.12" - -diff@^4.0.1: - version "4.0.2" - resolved "https://registry.yarnpkg.com/diff/-/diff-4.0.2.tgz#60f3aecb89d5fae520c11aa19efc2bb982aade7d" - integrity sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A== - -dom-serializer@0: - version "0.2.2" - resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-0.2.2.tgz#1afb81f533717175d478655debc5e332d9f9bb51" - integrity sha512-2/xPb3ORsQ42nHYiSunXkDjPLBaEj/xTwUO4B7XCZQTRk7EBtTOPaygh10YAAh2OI1Qrp6NWfpAhzswj0ydt9g== - dependencies: - domelementtype "^2.0.1" - entities "^2.0.0" - -dom-serializer@~0.1.0: - version "0.1.1" - resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-0.1.1.tgz#1ec4059e284babed36eec2941d4a970a189ce7c0" - integrity sha512-l0IU0pPzLWSHBcieZbpOKgkIn3ts3vAh7ZuFyXNwJxJXk/c4Gwj9xaTJwIDVQCXawWD0qb3IzMGH5rglQaO0XA== - dependencies: - domelementtype "^1.3.0" - entities "^1.1.1" - -domelementtype@1, domelementtype@^1.3.0, domelementtype@^1.3.1: - version "1.3.1" - resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-1.3.1.tgz#d048c44b37b0d10a7f2a3d5fee3f4333d790481f" - integrity sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w== - -domelementtype@^2.0.1: - version "2.1.0" - resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-2.1.0.tgz#a851c080a6d1c3d94344aed151d99f669edf585e" - integrity sha512-LsTgx/L5VpD+Q8lmsXSHW2WpA+eBlZ9HPf3erD1IoPF00/3JKHZ3BknUVA2QGDNu69ZNmyFmCWBSO45XjYKC5w== - -domhandler@^2.3.0: - version "2.4.2" - resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-2.4.2.tgz#8805097e933d65e85546f726d60f5eb88b44f803" - integrity sha512-JiK04h0Ht5u/80fdLMCEmV4zkNh2BcoMFBmZ/91WtYZ8qVXSKjiw7fXMgFPnHcSZgOo3XdinHvmnDUeMf5R4wA== - dependencies: - domelementtype "1" - -domutils@1.5.1: - version "1.5.1" - resolved "https://registry.yarnpkg.com/domutils/-/domutils-1.5.1.tgz#dcd8488a26f563d61079e48c9f7b7e32373682cf" - integrity sha1-3NhIiib1Y9YQeeSMn3t+Mjc2gs8= - dependencies: - dom-serializer "0" - domelementtype "1" - -domutils@^1.5.1: - version "1.7.0" - resolved "https://registry.yarnpkg.com/domutils/-/domutils-1.7.0.tgz#56ea341e834e06e6748af7a1cb25da67ea9f8c2a" - integrity sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg== - dependencies: - dom-serializer "0" - domelementtype "1" - -dotenv@^8.2.0: - version "8.2.0" - resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-8.2.0.tgz#97e619259ada750eea3e4ea3e26bceea5424b16a" - integrity sha512-8sJ78ElpbDJBHNeBzUbUVLsqKdccaa/BXF1uPTw3GrvQTBgrQrtObr2mUrE38vzYd8cEv+m/JBfDLioYcfXoaw== - -elliptic@^6.5.2: - version "6.5.3" - resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.5.3.tgz#cb59eb2efdaf73a0bd78ccd7015a62ad6e0f93d6" - integrity sha512-IMqzv5wNQf+E6aHeIqATs0tOLeOTwj1QKbRcS3jBbYkl5oLAserA8yJTT7/VyHUYG91PRmPyeQDObKLPpeS4dw== - dependencies: - bn.js "^4.4.0" - brorand "^1.0.1" - hash.js "^1.0.0" - hmac-drbg "^1.0.0" - inherits "^2.0.1" - minimalistic-assert "^1.0.0" - minimalistic-crypto-utils "^1.0.0" - -emoji-regex@^8.0.0: - version "8.0.0" - resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" - integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== - -entities@^1.1.1, entities@~1.1.1: - version "1.1.2" - resolved "https://registry.yarnpkg.com/entities/-/entities-1.1.2.tgz#bdfa735299664dfafd34529ed4f8522a275fea56" - integrity sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w== - -entities@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/entities/-/entities-2.1.0.tgz#992d3129cf7df6870b96c57858c249a120f8b8b5" - integrity sha512-hCx1oky9PFrJ611mf0ifBLBRW8lUUVRlFolb5gWRfIELabBlbp9xZvrqZLZAs+NxFnbfQoeGd8wDkygjg7U85w== - -error-ex@^1.3.1: - version "1.3.2" - resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf" - integrity sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g== - dependencies: - is-arrayish "^0.2.1" - -es-abstract@^1.18.0-next.1: - version "1.18.0-next.1" - resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.18.0-next.1.tgz#6e3a0a4bda717e5023ab3b8e90bec36108d22c68" - integrity sha512-I4UGspA0wpZXWENrdA0uHbnhte683t3qT/1VFH9aX2dA5PPSf6QW5HHXf5HImaqPmjXaVeVk4RGWnaylmV7uAA== - dependencies: - es-to-primitive "^1.2.1" - function-bind "^1.1.1" - has "^1.0.3" - has-symbols "^1.0.1" - is-callable "^1.2.2" - is-negative-zero "^2.0.0" - is-regex "^1.1.1" - object-inspect "^1.8.0" - object-keys "^1.1.1" - object.assign "^4.1.1" - string.prototype.trimend "^1.0.1" - string.prototype.trimstart "^1.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" - integrity sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA== - dependencies: - is-callable "^1.1.4" - is-date-object "^1.0.1" - is-symbol "^1.0.2" - -es6-promise@^4.0.3: - version "4.2.8" - resolved "https://registry.yarnpkg.com/es6-promise/-/es6-promise-4.2.8.tgz#4eb21594c972bc40553d276e510539143db53e0a" - 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" - integrity sha1-UQnWLz5W6pZ8S2NQWu8IKRyKUgM= - dependencies: - es6-promise "^4.0.3" - -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" - integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ= - -esdoc-inject-style-plugin@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/esdoc-inject-style-plugin/-/esdoc-inject-style-plugin-1.0.0.tgz#a13597368bb9fb89c365e066495caf97a4decbb1" - integrity sha1-oTWXNou5+4nDZeBmSVyvl6Tey7E= - dependencies: - cheerio "0.22.0" - fs-extra "1.0.0" - -eventemitter3@^4.0.7: - version "4.0.7" - resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-4.0.7.tgz#2de9b68f6528d5644ef5c59526a1b4a07306169f" - integrity sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw== - -external-editor@^3.0.3: - version "3.1.0" - resolved "https://registry.yarnpkg.com/external-editor/-/external-editor-3.1.0.tgz#cb03f740befae03ea4d283caed2741a83f335495" - integrity sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew== - dependencies: - chardet "^0.7.0" - iconv-lite "^0.4.24" - tmp "^0.0.33" - -eyes@^0.1.8: - version "0.1.8" - resolved "https://registry.yarnpkg.com/eyes/-/eyes-0.1.8.tgz#62cf120234c683785d902348a800ef3e0cc20bc0" - integrity sha1-Ys8SAjTGg3hdkCNIqADvPgzCC8A= - -figures@^3.0.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/figures/-/figures-3.2.0.tgz#625c18bd293c604dc4a8ddb2febf0c88341746af" - integrity sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg== - dependencies: - escape-string-regexp "^1.0.5" - -fs-extra@1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-1.0.0.tgz#cd3ce5f7e7cb6145883fcae3191e9877f8587950" - integrity sha1-zTzl9+fLYUWIP8rjGR6Yd/hYeVA= - dependencies: - graceful-fs "^4.1.2" - jsonfile "^2.1.0" - klaw "^1.0.0" - -function-bind@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" - integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== - -get-intrinsic@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.0.1.tgz#94a9768fcbdd0595a1c9273aacf4c89d075631be" - integrity sha512-ZnWP+AmS1VUaLgTRy47+zKtjTxz+0xMpx3I52i+aalBK1QP19ggLF3Db89KJX7kjfOfP2eoa01qc++GwPgufPg== - dependencies: - function-bind "^1.1.1" - has "^1.0.3" - has-symbols "^1.0.1" - -get-prototype-of@0.0.0: - version "0.0.0" - resolved "https://registry.yarnpkg.com/get-prototype-of/-/get-prototype-of-0.0.0.tgz#98772bd10716d16deb4b322516c469efca28ac44" - integrity sha1-mHcr0QcW0W3rSzIlFsRp78oorEQ= - -graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.1.9: - version "4.2.4" - resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.4.tgz#2256bde14d3632958c465ebc96dc467ca07a29fb" - integrity sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw== - -has-flag@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" - integrity sha1-tdRU3CGZriJWmfNGfloH87lVuv0= - -has-flag@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" - integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== - -has-symbols@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.1.tgz#9f5214758a44196c406d9bd76cebf81ec2dd31e8" - integrity sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg== - -has@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" - integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw== - dependencies: - function-bind "^1.1.1" - -hash.js@^1.0.0, hash.js@^1.0.3: - version "1.1.7" - resolved "https://registry.yarnpkg.com/hash.js/-/hash.js-1.1.7.tgz#0babca538e8d4ee4a0f8988d68866537a003cf42" - integrity sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA== - dependencies: - inherits "^2.0.3" - minimalistic-assert "^1.0.1" - -hmac-drbg@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/hmac-drbg/-/hmac-drbg-1.0.1.tgz#d2745701025a6c775a6c545793ed502fc0c649a1" - integrity sha1-0nRXAQJabHdabFRXk+1QL8DGSaE= - dependencies: - hash.js "^1.0.3" - minimalistic-assert "^1.0.0" - minimalistic-crypto-utils "^1.0.1" - -hosted-git-info@^2.1.4: - version "2.8.8" - resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.8.8.tgz#7539bd4bc1e0e0a895815a2e0262420b12858488" - integrity sha512-f/wzC2QaWBs7t9IYqB4T3sR1xviIViXJRJTWBlx2Gf3g0Xi5vI7Yy4koXQ1c9OYDGHN9sBy1DQ2AB8fqZBWhUg== - -htmlparser2@^3.9.1: - version "3.10.1" - resolved "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-3.10.1.tgz#bd679dc3f59897b6a34bb10749c855bb53a9392f" - integrity sha512-IgieNijUMbkDovyoKObU1DUhm1iwNYE/fuifEoEHfd1oZKZDaONBSkal7Y01shxsM49R4XaMdGez3WnF9UfiCQ== - dependencies: - domelementtype "^1.3.1" - domhandler "^2.3.0" - domutils "^1.5.1" - entities "^1.1.1" - inherits "^2.0.1" - readable-stream "^3.1.1" - -iconv-lite@^0.4.24: - version "0.4.24" - resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" - integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== - dependencies: - safer-buffer ">= 2.1.2 < 3" - -ieee754@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352" - integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA== - -inherits@^2.0.1, inherits@^2.0.3: - version "2.0.4" - resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" - integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== - -inquirer@^7.3.3: - version "7.3.3" - resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-7.3.3.tgz#04d176b2af04afc157a83fd7c100e98ee0aad003" - integrity sha512-JG3eIAj5V9CwcGvuOmoo6LB9kbAYT8HXffUl6memuszlwDC/qvFAJw49XJ5NROSFNPxp3iQg1GqkFhaY/CR0IA== - dependencies: - 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" - -is-arrayish@^0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" - integrity sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0= - -is-callable@^1.1.4, is-callable@^1.2.2: - version "1.2.2" - resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.2.tgz#c7c6715cd22d4ddb48d3e19970223aceabb080d9" - integrity sha512-dnMqspv5nU3LoewK2N/y7KLtxtakvTuaCsU9FU50/QDmdbHNy/4/JuRtMHqRU22o3q+W89YQndQEeCVwK+3qrA== - -is-capitalized@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-capitalized/-/is-capitalized-1.0.0.tgz#4c8464b4d91d3e4eeb44889dd2cd8f1b0ac4c136" - integrity sha1-TIRktNkdPk7rRIid0s2PGwrEwTY= - -is-class@0.0.4: - version "0.0.4" - resolved "https://registry.yarnpkg.com/is-class/-/is-class-0.0.4.tgz#e057451705bb34e39e3e33598c93a9837296b736" - integrity sha1-4FdFFwW7NOOePjNZjJOpg3KWtzY= - -is-core-module@^2.1.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.2.0.tgz#97037ef3d52224d85163f5597b2b63d9afed981a" - integrity sha512-XRAfAdyyY5F5cOXn7hYQDqh2Xmii+DEfIcQGxK/uNwMHhIkPWO0g8msXcbzLe+MpGoR951MlqM/2iIlU4vKDdQ== - dependencies: - has "^1.0.3" - -is-date-object@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.2.tgz#bda736f2cd8fd06d32844e7743bfa7494c3bfd7e" - integrity sha512-USlDT524woQ08aoZFzh3/Z6ch9Y/EWXEHQ/AaRN0SkKq4t2Jw2R2339tSXmwuVoY7LLlBCbOIlx2myP/L5zk0g== - -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" - integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== - -is-negative-zero@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/is-negative-zero/-/is-negative-zero-2.0.1.tgz#3de746c18dda2319241a53675908d8f766f11c24" - integrity sha512-2z6JzQvZRa9A2Y7xC6dQQm4FSTSTNWjKIYYTt4246eMTJmIo0Q+ZyOsU66X8lxK1AbB92dFeglPLrhwpeRKO6w== - -is-regex@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.1.1.tgz#c6f98aacc546f6cec5468a07b7b153ab564a57b9" - integrity sha512-1+QkEcxiLlB7VEyFtyBg94e08OAsvq7FUBgApTq/w2ymCLyKJgDPsybBENVtA7XCQEgEXxKPonG+mvYRxh/LIg== - dependencies: - has-symbols "^1.0.1" - -is-symbol@^1.0.2: - version "1.0.3" - resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.3.tgz#38e1014b9e6329be0de9d24a414fd7441ec61937" - integrity sha512-OwijhaRSgqvhm/0ZdAcXNZt9lYdKFpcRDT5ULUuYXPoT794UNOdU+gpT6Rzo7b4V2HUl/op6GqY894AZwv9faQ== - dependencies: - has-symbols "^1.0.1" - -isexe@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" - integrity sha1-6PvzdNxVb/iUehDcsFctYz8s+hA= - -jayson@^3.0.1: - version "3.3.4" - resolved "https://registry.yarnpkg.com/jayson/-/jayson-3.3.4.tgz#c4fc8f3a8884ac85562da101f5bb526e5a679fa4" - integrity sha512-p2stl9m1C0vM8mdXM1m8shn0v5ECohD5gEDRzLD6CPv02pxRm1lv0jEz0HX6RvfJ/uO9z9Zzlzti7/uqq+Rh5g== - dependencies: - "@types/connect" "^3.4.33" - "@types/express-serve-static-core" "^4.17.9" - "@types/lodash" "^4.14.159" - "@types/node" "^12.12.54" - JSONStream "^1.3.5" - commander "^2.20.3" - es6-promisify "^5.0.0" - eyes "^0.1.8" - json-stringify-safe "^5.0.1" - lodash "^4.17.20" - uuid "^3.4.0" - -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" - integrity sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw== - -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" - integrity sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus= - -jsonfile@^2.1.0: - version "2.4.0" - resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-2.4.0.tgz#3736a2b428b87bbda0cc83b53fa3d633a35c2ae8" - integrity sha1-NzaitCi4e72gzIO1P6PWM6NcKug= - optionalDependencies: - graceful-fs "^4.1.6" - -jsonparse@^1.2.0: - version "1.3.1" - resolved "https://registry.yarnpkg.com/jsonparse/-/jsonparse-1.3.1.tgz#3f4dae4a91fac315f71062f8521cc239f1366280" - integrity sha1-P02uSpH6wxX3EGL4UhzCOfE2YoA= - -keccak@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/keccak/-/keccak-3.0.1.tgz#ae30a0e94dbe43414f741375cff6d64c8bea0bff" - integrity sha512-epq90L9jlFWCW7+pQa6JOnKn2Xgl2mtI664seYR6MHskvI9agt7AnDqmAlp9TqU4/caMYbA08Hi5DMZAl5zdkA== - dependencies: - node-addon-api "^2.0.0" - node-gyp-build "^4.2.0" - -keypather@^1.10.2: - version "1.10.2" - resolved "https://registry.yarnpkg.com/keypather/-/keypather-1.10.2.tgz#e0449632d4b3e516f21cc014ce7c5644fddce614" - integrity sha1-4ESWMtSz5RbyHMAUznxWRP3c5hQ= - dependencies: - "101" "^1.0.0" - -kind-of@^6.0.2: - version "6.0.3" - resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.3.tgz#07c05034a6c349fa06e24fa35aa76db4580ce4dd" - integrity sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw== - -klaw@^1.0.0: - version "1.3.1" - resolved "https://registry.yarnpkg.com/klaw/-/klaw-1.3.1.tgz#4088433b46b3b1ba259d78785d8e96f73ba02439" - integrity sha1-QIhDO0azsbolnXh4XY6W9zugJDk= - optionalDependencies: - graceful-fs "^4.1.9" - -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" - integrity sha1-L19Fq5HjMhYjT9U62rZo607AmTs= - dependencies: - graceful-fs "^4.1.2" - parse-json "^4.0.0" - pify "^3.0.0" - strip-bom "^3.0.0" - -lodash.assignin@^4.0.9: - version "4.2.0" - resolved "https://registry.yarnpkg.com/lodash.assignin/-/lodash.assignin-4.2.0.tgz#ba8df5fb841eb0a3e8044232b0e263a8dc6a28a2" - integrity sha1-uo31+4QesKPoBEIysOJjqNxqKKI= - -lodash.bind@^4.1.4: - version "4.2.1" - resolved "https://registry.yarnpkg.com/lodash.bind/-/lodash.bind-4.2.1.tgz#7ae3017e939622ac31b7d7d7dcb1b34db1690d35" - integrity sha1-euMBfpOWIqwxt9fX3LGzTbFpDTU= - -lodash.defaults@^4.0.1: - version "4.2.0" - resolved "https://registry.yarnpkg.com/lodash.defaults/-/lodash.defaults-4.2.0.tgz#d09178716ffea4dde9e5fb7b37f6f0802274580c" - integrity sha1-0JF4cW/+pN3p5ft7N/bwgCJ0WAw= - -lodash.filter@^4.4.0: - version "4.6.0" - resolved "https://registry.yarnpkg.com/lodash.filter/-/lodash.filter-4.6.0.tgz#668b1d4981603ae1cc5a6fa760143e480b4c4ace" - integrity sha1-ZosdSYFgOuHMWm+nYBQ+SAtMSs4= - -lodash.flatten@^4.2.0: - version "4.4.0" - resolved "https://registry.yarnpkg.com/lodash.flatten/-/lodash.flatten-4.4.0.tgz#f31c22225a9632d2bbf8e4addbef240aa765a61f" - integrity sha1-8xwiIlqWMtK7+OSt2+8kCqdlph8= - -lodash.foreach@^4.3.0: - version "4.5.0" - resolved "https://registry.yarnpkg.com/lodash.foreach/-/lodash.foreach-4.5.0.tgz#1a6a35eace401280c7f06dddec35165ab27e3e53" - integrity sha1-Gmo16s5AEoDH8G3d7DUWWrJ+PlM= - -lodash.map@^4.4.0: - version "4.6.0" - resolved "https://registry.yarnpkg.com/lodash.map/-/lodash.map-4.6.0.tgz#771ec7839e3473d9c4cde28b19394c3562f4f6d3" - integrity sha1-dx7Hg540c9nEzeKLGTlMNWL09tM= - -lodash.merge@^4.4.0: - version "4.6.2" - resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.2.tgz#558aa53b43b661e1925a0afdfa36a9a1085fe57a" - integrity sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ== - -lodash.pick@^4.2.1: - version "4.4.0" - resolved "https://registry.yarnpkg.com/lodash.pick/-/lodash.pick-4.4.0.tgz#52f05610fff9ded422611441ed1fc123a03001b3" - integrity sha1-UvBWEP/53tQiYRRB7R/BI6AwAbM= - -lodash.reduce@^4.4.0: - version "4.6.0" - resolved "https://registry.yarnpkg.com/lodash.reduce/-/lodash.reduce-4.6.0.tgz#f1ab6b839299ad48f784abbf476596f03b914d3b" - integrity sha1-8atrg5KZrUj3hKu/R2WW8DuRTTs= - -lodash.reject@^4.4.0: - version "4.6.0" - resolved "https://registry.yarnpkg.com/lodash.reject/-/lodash.reject-4.6.0.tgz#80d6492dc1470864bbf583533b651f42a9f52415" - integrity sha1-gNZJLcFHCGS79YNTO2UfQqn1JBU= - -lodash.some@^4.4.0: - version "4.6.0" - resolved "https://registry.yarnpkg.com/lodash.some/-/lodash.some-4.6.0.tgz#1bb9f314ef6b8baded13b549169b2a945eb68e4d" - integrity sha1-G7nzFO9ri63tE7VJFpsqlF62jk0= - -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== - -make-error@^1.1.1: - version "1.3.6" - resolved "https://registry.yarnpkg.com/make-error/-/make-error-1.3.6.tgz#2eb2e37ea9b67c4891f684a1394799af484cf7a2" - integrity sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw== - -memorystream@^0.3.1: - version "0.3.1" - resolved "https://registry.yarnpkg.com/memorystream/-/memorystream-0.3.1.tgz#86d7090b30ce455d63fbae12dda51a47ddcaf9b2" - integrity sha1-htcJCzDORV1j+64S3aUaR93K+bI= - -mimic-fn@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" - integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== - -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" - integrity sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A== - -minimalistic-crypto-utils@^1.0.0, 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" - integrity sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo= - -minimatch@^3.0.4: - version "3.0.4" - resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" - integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA== - dependencies: - brace-expansion "^1.1.7" - -ms@2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" - integrity sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g= - -mute-stream@0.0.8: - version "0.0.8" - resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.8.tgz#1630c42b2251ff81e2a283de96a5497ea92e5e0d" - integrity sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA== - -mz@^2.7.0: - version "2.7.0" - resolved "https://registry.yarnpkg.com/mz/-/mz-2.7.0.tgz#95008057a56cafadc2bc63dde7f9ff6955948e32" - integrity sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q== - dependencies: - any-promise "^1.0.0" - object-assign "^4.0.1" - thenify-all "^1.0.0" - -nice-try@^1.0.4: - version "1.0.5" - resolved "https://registry.yarnpkg.com/nice-try/-/nice-try-1.0.5.tgz#a3378a7696ce7d223e88fc9b764bd7ef1089e366" - integrity sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ== - -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" - integrity sha512-Ntyt4AIXyaLIuMHF6IOoTakB3K+RWxwtsHNRxllEoA6vPwP9o4866g6YWDLUdnucilZhmkxiHwHr11gAENw+QA== - -node-fetch@^2.2.0: - version "2.6.1" - resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.1.tgz#045bd323631f76ed2e2b55573394416b639a0052" - integrity sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw== - -node-gyp-build@^4.2.0: - version "4.2.3" - resolved "https://registry.yarnpkg.com/node-gyp-build/-/node-gyp-build-4.2.3.tgz#ce6277f853835f718829efb47db20f3e4d9c4739" - integrity sha512-MN6ZpzmfNCRM+3t57PTJHgHyw/h4OWnZ6mR8P5j/uZtqQr46RRuDE/P+g3n0YR/AiYXeWixZZzaip77gdICfRg== - -normalize-package-data@^2.3.2: - version "2.5.0" - resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.5.0.tgz#e66db1838b200c1dfc233225d12cb36520e234a8" - integrity sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA== - dependencies: - hosted-git-info "^2.1.4" - resolve "^1.10.0" - semver "2 || 3 || 4 || 5" - validate-npm-package-license "^3.0.1" - -npm-run-all@^4.1.5: - version "4.1.5" - resolved "https://registry.yarnpkg.com/npm-run-all/-/npm-run-all-4.1.5.tgz#04476202a15ee0e2e214080861bff12a51d98fba" - integrity sha512-Oo82gJDAVcaMdi3nuoKFavkIHBRVqQ1qvMb+9LHk/cF4P6B2m8aP04hGf7oL6wZ9BuGwX1onlLhpuoofSyoQDQ== - dependencies: - ansi-styles "^3.2.1" - chalk "^2.4.1" - cross-spawn "^6.0.5" - memorystream "^0.3.1" - minimatch "^3.0.4" - pidtree "^0.3.0" - read-pkg "^3.0.0" - shell-quote "^1.6.1" - string.prototype.padend "^3.0.0" - -nth-check@~1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/nth-check/-/nth-check-1.0.2.tgz#b2bd295c37e3dd58a3bf0700376663ba4d9cf05c" - integrity sha512-WeBOdju8SnzPN5vTUJYxYUxLeXpCaVP5i5e0LF8fg7WORF2Wd7wFX/pk0tYZk7s8T+J7VLy0Da6J1+wCT0AtHg== - dependencies: - boolbase "~1.0.0" - -object-assign@^4.0.1: - version "4.1.1" - resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" - integrity sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM= - -object-inspect@^1.8.0: - version "1.9.0" - resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.9.0.tgz#c90521d74e1127b67266ded3394ad6116986533a" - integrity sha512-i3Bp9iTqwhaLZBxGkRfo5ZbE07BQRT7MGu8+nNgwW9ItGp1TzCTw2DLEoWwjClxBjOFI/hWljTAmYGCEwmtnOw== - -object-keys@^1.0.12, object-keys@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e" - integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA== - -object.assign@^4.1.1: - version "4.1.2" - resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.2.tgz#0ed54a342eceb37b38ff76eb831a0e788cb63940" - integrity sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ== - dependencies: - call-bind "^1.0.0" - define-properties "^1.1.3" - has-symbols "^1.0.1" - object-keys "^1.1.1" - -onetime@^5.1.0: - version "5.1.2" - resolved "https://registry.yarnpkg.com/onetime/-/onetime-5.1.2.tgz#d0e96ebb56b07476df1dd9c4806e5237985ca45e" - integrity sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg== - dependencies: - mimic-fn "^2.1.0" - -os-tmpdir@~1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" - integrity sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ= - -parse-json@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-4.0.0.tgz#be35f5425be1f7f6c747184f98a788cb99477ee0" - integrity sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA= - dependencies: - error-ex "^1.3.1" - json-parse-better-errors "^1.0.1" - -path-key@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/path-key/-/path-key-2.0.1.tgz#411cadb574c5a140d3a4b1910d40d80cc9f40b40" - integrity sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A= - -path-parse@^1.0.6: - version "1.0.6" - resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.6.tgz#d62dbb5679405d72c4737ec58600e9ddcf06d24c" - integrity sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw== - -path-type@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/path-type/-/path-type-3.0.0.tgz#cef31dc8e0a1a3bb0d105c0cd97cf3bf47f4e36f" - integrity sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg== - dependencies: - pify "^3.0.0" - -pidtree@^0.3.0: - version "0.3.1" - resolved "https://registry.yarnpkg.com/pidtree/-/pidtree-0.3.1.tgz#ef09ac2cc0533df1f3250ccf2c4d366b0d12114a" - integrity sha512-qQbW94hLHEqCg7nhby4yRC7G2+jYHY4Rguc2bjw7Uug4GIJuu1tvf2uHaZv5Q8zdt+WKJ6qK1FOI6amaWUo5FA== - -pify@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/pify/-/pify-3.0.0.tgz#e5a4acd2c101fdf3d9a4d07f0dbc4db49dd28176" - integrity sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY= - -read-pkg@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-3.0.0.tgz#9cbc686978fee65d16c00e2b19c237fcf6e38389" - integrity sha1-nLxoaXj+5l0WwA4rGcI3/Pbjg4k= - dependencies: - load-json-file "^4.0.0" - normalize-package-data "^2.3.2" - path-type "^3.0.0" - -readable-stream@^3.1.1: - version "3.6.0" - resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.0.tgz#337bbda3adc0706bd3e024426a286d4b4b2c9198" - integrity sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA== - dependencies: - inherits "^2.0.3" - string_decoder "^1.1.1" - util-deprecate "^1.0.1" - -regenerator-runtime@^0.13.4: - version "0.13.7" - resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.7.tgz#cac2dacc8a1ea675feaabaeb8ae833898ae46f55" - integrity sha512-a54FxoJDIr27pgf7IgeQGxmqUNYrcV338lf/6gH456HZ/PhX+5BcwHXG9ajESmwe6WRO0tAzRUrRmNONWgkrew== - -resolve@^1.10.0: - version "1.19.0" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.19.0.tgz#1af5bf630409734a067cae29318aac7fa29a267c" - integrity sha512-rArEXAgsBG4UgRGcynxWIWKFvh/XZCcS8UJdHhwy91zwAvCZIbcs+vAbflgBnNjYMs/i/i+/Ux6IZhML1yPvxg== - dependencies: - is-core-module "^2.1.0" - path-parse "^1.0.6" - -restore-cursor@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-3.1.0.tgz#39f67c54b3a7a58cea5236d95cf0034239631f7e" - integrity sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA== - dependencies: - onetime "^5.1.0" - signal-exit "^3.0.2" - -rpc-websockets@^7.4.2: - version "7.4.8" - resolved "https://registry.yarnpkg.com/rpc-websockets/-/rpc-websockets-7.4.8.tgz#5c1e4b2ccfd50081126e159ebbba4a1e9b3717ce" - integrity sha512-AygVDg2CAUatqwc3HQl2gaxZDVuTsFyGxry2gkSf4E9WUHz4RIcD7p40vhwSRgTzOfMS8pnlRWO0QNdx5jRA8Q== - dependencies: - "@babel/runtime" "^7.11.2" - assert-args "^1.2.1" - circular-json "^0.5.9" - eventemitter3 "^4.0.7" - uuid "^8.3.0" - ws "^7.3.1" - optionalDependencies: - bufferutil "^4.0.1" - utf-8-validate "^5.0.2" - -run-async@^2.4.0: - version "2.4.1" - resolved "https://registry.yarnpkg.com/run-async/-/run-async-2.4.1.tgz#8440eccf99ea3e70bd409d49aab88e10c189a455" - integrity sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ== - -rxjs@^6.6.0: - version "6.6.3" - resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-6.6.3.tgz#8ca84635c4daa900c0d3967a6ee7ac60271ee552" - integrity sha512-trsQc+xYYXZ3urjOiJOuCOa5N3jAZ3eiSpQB5hIT8zGlL2QfnHLJ2r7GMkBGuIausdJN1OneaI6gQlsqNHHmZQ== - dependencies: - tslib "^1.9.0" - -safe-buffer@^5.0.1, safe-buffer@~5.2.0: - version "5.2.1" - resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" - integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== - -"safer-buffer@>= 2.1.2 < 3": - version "2.1.2" - resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" - integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== - -secp256k1@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/secp256k1/-/secp256k1-4.0.2.tgz#15dd57d0f0b9fdb54ac1fa1694f40e5e9a54f4a1" - integrity sha512-UDar4sKvWAksIlfX3xIaQReADn+WFnHvbVujpcbr+9Sf/69odMwy2MUsz5CKLQgX9nsIyrjuxL2imVyoNHa3fg== - dependencies: - elliptic "^6.5.2" - node-addon-api "^2.0.0" - node-gyp-build "^4.2.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== - -shebang-command@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-1.2.0.tgz#44aac65b695b03398968c39f363fee5deafdf1ea" - integrity sha1-RKrGW2lbAzmJaMOfNj/uXer98eo= - dependencies: - shebang-regex "^1.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" - integrity sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM= - -shell-quote@^1.6.1: - version "1.7.2" - resolved "https://registry.yarnpkg.com/shell-quote/-/shell-quote-1.7.2.tgz#67a7d02c76c9da24f99d20808fcaded0e0e04be2" - integrity sha512-mRz/m/JVscCrkMyPqHc/bczi3OQHkLTqXHEFu0zDhK/qfv3UcOA4SVmRCLmos4bhjr9ekVQubj/R7waKapmiQg== - -signal-exit@^3.0.2: - version "3.0.3" - resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.3.tgz#a1410c2edd8f077b08b4e253c8eacfcaf057461c" - integrity sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA== - -source-map-support@^0.5.17: - version "0.5.19" - resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.19.tgz#a98b62f86dcaf4f67399648c085291ab9e8fed61" - integrity sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw== - dependencies: - buffer-from "^1.0.0" - source-map "^0.6.0" - -source-map@^0.6.0: - version "0.6.1" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" - integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== - -spdx-correct@^3.0.0: - version "3.1.1" - resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-3.1.1.tgz#dece81ac9c1e6713e5f7d1b6f17d468fa53d89a9" - integrity sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w== - dependencies: - spdx-expression-parse "^3.0.0" - spdx-license-ids "^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" - 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" - integrity sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q== - dependencies: - spdx-exceptions "^2.1.0" - spdx-license-ids "^3.0.0" - -spdx-license-ids@^3.0.0: - version "3.0.7" - resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.7.tgz#e9c18a410e5ed7e12442a549fbd8afa767038d65" - integrity sha512-U+MTEOO0AiDzxwFvoa4JVnMV6mZlJKk2sBLt90s7G0Gd0Mlknc7kxEn3nuDPNZRta7O2uy8oLcZLVT+4sqNZHQ== - -string-width@^4.1.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.0.tgz#952182c46cc7b2c313d1596e623992bd163b72b5" - integrity sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg== - dependencies: - emoji-regex "^8.0.0" - is-fullwidth-code-point "^3.0.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== - dependencies: - call-bind "^1.0.0" - define-properties "^1.1.3" - es-abstract "^1.18.0-next.1" - -string.prototype.trimend@^1.0.1: - version "1.0.3" - resolved "https://registry.yarnpkg.com/string.prototype.trimend/-/string.prototype.trimend-1.0.3.tgz#a22bd53cca5c7cf44d7c9d5c732118873d6cd18b" - integrity sha512-ayH0pB+uf0U28CtjlLvL7NaohvR1amUvVZk+y3DYb0Ey2PUV5zPkkKy9+U1ndVEIXO8hNg18eIv9Jntbii+dKw== - dependencies: - call-bind "^1.0.0" - define-properties "^1.1.3" - -string.prototype.trimstart@^1.0.1: - version "1.0.3" - resolved "https://registry.yarnpkg.com/string.prototype.trimstart/-/string.prototype.trimstart-1.0.3.tgz#9b4cb590e123bb36564401d59824298de50fd5aa" - integrity sha512-oBIBUy5lea5tt0ovtOFiEQaBkoBBkyJhZXzJYrSmDo5IUUqbOPvVezuRs/agBIdZ2p2Eo1FD6bD9USyBLfl3xg== - dependencies: - call-bind "^1.0.0" - define-properties "^1.1.3" - -string_decoder@^1.1.1: - version "1.3.0" - resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e" - integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA== - dependencies: - safe-buffer "~5.2.0" - -strip-ansi@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.0.tgz#0b1571dd7669ccd4f3e06e14ef1eed26225ae532" - integrity sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w== - dependencies: - ansi-regex "^5.0.0" - -strip-bom@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3" - integrity sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM= - -superstruct@^0.8.3: - version "0.8.4" - resolved "https://registry.yarnpkg.com/superstruct/-/superstruct-0.8.4.tgz#478a19649f6b02c6319c02044db6a1f5863c391f" - integrity sha512-48Ors8IVWZm/tMr8r0Si6+mJiB7mkD7jqvIzktjJ4+EnP5tBp0qOpiM1J8sCUorKx+TXWrfb3i1UcjdD1YK/wA== - dependencies: - kind-of "^6.0.2" - tiny-invariant "^1.0.6" - -supports-color@^5.3.0: - version "5.5.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" - integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== - dependencies: - has-flag "^3.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" - integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== - dependencies: - has-flag "^4.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" - integrity sha1-GhkY1ALY/D+Y+/I02wvMjMEOlyY= - 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" - integrity sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw== - dependencies: - any-promise "^1.0.0" - -"through@>=2.2.7 <3", through@^2.3.6: - version "2.3.8" - resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" - integrity sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU= - -tiny-invariant@^1.0.6: - version "1.1.0" - resolved "https://registry.yarnpkg.com/tiny-invariant/-/tiny-invariant-1.1.0.tgz#634c5f8efdc27714b7f386c35e6760991d230875" - integrity sha512-ytxQvrb1cPc9WBEI/HSeYYoGD0kWnGEOR8RY6KomWLBVhqz0RgTwVO9dLrGz7dC+nN9llyI7OKAgRq8Vq4ZBSw== - -tmp@^0.0.33: - version "0.0.33" - resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.33.tgz#6d34335889768d21b2bcda0aa277ced3b1bfadf9" - integrity sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw== - dependencies: - os-tmpdir "~1.0.2" - -ts-node@^9.1.1: - version "9.1.1" - resolved "https://registry.yarnpkg.com/ts-node/-/ts-node-9.1.1.tgz#51a9a450a3e959401bda5f004a72d54b936d376d" - integrity sha512-hPlt7ZACERQGf03M253ytLY3dHbGNGrAq9qIHWUY9XHYl1z7wYngSr3OQ5xmui8o2AaxsONxIzjafLUiWBo1Fg== - dependencies: - arg "^4.1.0" - create-require "^1.1.0" - diff "^4.0.1" - make-error "^1.1.1" - source-map-support "^0.5.17" - yn "3.1.1" - -tslib@^1.9.0: - version "1.14.1" - resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" - integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== - -tweetnacl@^1.0.0: - version "1.0.3" - resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-1.0.3.tgz#ac0af71680458d8a6378d0d0d050ab1407d35596" - integrity sha512-6rt+RN7aOi1nGMyC4Xa5DdYiukl2UWCbcJft7YhxReBGQD7OAM8Pbxw6YMo4r2diNEA8FEmu32YOn9rhaiE5yw== - -type-detect@0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/type-detect/-/type-detect-0.1.1.tgz#0ba5ec2a885640e470ea4e8505971900dac58822" - integrity sha1-C6XsKohWQORw6k6FBZcZANrFiCI= - -type-fest@^0.11.0: - version "0.11.0" - resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.11.0.tgz#97abf0872310fed88a5c466b25681576145e33f1" - integrity sha512-OdjXJxnCN1AvyLSzeKIgXTXxV+99ZuXl3Hpo9XpJAv9MBcHrrJOQ5kV7ypXOuQie+AmWG25hLbiKdwYTifzcfQ== - -typescript@^4.1.2: - version "4.1.2" - resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.1.2.tgz#6369ef22516fe5e10304aae5a5c4862db55380e9" - integrity sha512-thGloWsGH3SOxv1SoY7QojKi0tc+8FnOmiarEGMbd/lar7QOEd3hvlx3Fp5y6FlDUGl9L+pd4n2e+oToGMmhRQ== - -utf-8-validate@^5.0.2: - version "5.0.3" - resolved "https://registry.yarnpkg.com/utf-8-validate/-/utf-8-validate-5.0.3.tgz#3b64e418ad2ff829809025fdfef595eab2f03a27" - integrity sha512-jtJM6fpGv8C1SoH4PtG22pGto6x+Y8uPprW0tw3//gGFhDDTiuksgradgFN6yRayDP4SyZZa6ZMGHLIa17+M8A== - dependencies: - node-gyp-build "^4.2.0" - -util-deprecate@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" - integrity sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8= - -uuid@^3.4.0: - version "3.4.0" - resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.4.0.tgz#b23e4358afa8a202fe7a100af1f5f883f02007ee" - integrity sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A== - -uuid@^8.3.0: - version "8.3.2" - resolved "https://registry.yarnpkg.com/uuid/-/uuid-8.3.2.tgz#80d5b5ced271bb9af6c445f21a1a04c606cefbe2" - integrity sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg== - -validate-npm-package-license@^3.0.1: - version "3.0.4" - resolved "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz#fc91f6b9c7ba15c857f4cb2c5defeec39d4f410a" - integrity sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew== - dependencies: - spdx-correct "^3.0.0" - spdx-expression-parse "^3.0.0" - -which@^1.2.9: - version "1.3.1" - resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a" - integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ== - dependencies: - isexe "^2.0.0" - -ws@^7.0.0, ws@^7.3.1: - version "7.4.1" - resolved "https://registry.yarnpkg.com/ws/-/ws-7.4.1.tgz#a333be02696bd0e54cea0434e21dcc8a9ac294bb" - integrity sha512-pTsP8UAfhy3sk1lSk/O/s4tjD0CRwvMnzvwr4OKGX7ZvqZtUyx4KIJB5JWbkykPoc55tixMGgTNoh3k4FkNGFQ== - -yn@3.1.1: - version "3.1.1" - resolved "https://registry.yarnpkg.com/yn/-/yn-3.1.1.tgz#1e87401a09d767c1d5eab26a6e4c185182d2eb50" - integrity sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==