chore: port web3.js to solana-test-validator
This commit is contained in:
		
				
					committed by
					
						
						mergify[bot]
					
				
			
			
				
	
			
			
			
						parent
						
							efc091e28a
						
					
				
				
					commit
					fd7d2f82ae
				
			
							
								
								
									
										3
									
								
								web3.js/.gitignore
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										3
									
								
								web3.js/.gitignore
									
									
									
									
										vendored
									
									
								
							@@ -27,3 +27,6 @@ doc
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
# fixtures
 | 
					# fixtures
 | 
				
			||||||
/test/fixtures
 | 
					/test/fixtures
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# `solana-test-validator` ledger location
 | 
				
			||||||
 | 
					test-ledger/
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -5,9 +5,6 @@ node_js:
 | 
				
			|||||||
  - "lts/*"
 | 
					  - "lts/*"
 | 
				
			||||||
  # - "node" disabled due to flaky test failures
 | 
					  # - "node" disabled due to flaky test failures
 | 
				
			||||||
 | 
					
 | 
				
			||||||
services:
 | 
					 | 
				
			||||||
  - docker
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
cache:
 | 
					cache:
 | 
				
			||||||
  directories:
 | 
					  directories:
 | 
				
			||||||
    - ~/.npm
 | 
					    - ~/.npm
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -8,6 +8,11 @@ sudo apt-get install -y openssl --allow-unauthenticated
 | 
				
			|||||||
sudo apt-get install -y libssl-dev --allow-unauthenticated
 | 
					sudo apt-get install -y libssl-dev --allow-unauthenticated
 | 
				
			||||||
sudo apt-get install -y libssl1.1 --allow-unauthenticated
 | 
					sudo apt-get install -y libssl1.1 --allow-unauthenticated
 | 
				
			||||||
clang-7 --version
 | 
					clang-7 --version
 | 
				
			||||||
 | 
					
 | 
				
			||||||
curl https://sh.rustup.rs -sSf | sh -s -- -y
 | 
					curl https://sh.rustup.rs -sSf | sh -s -- -y
 | 
				
			||||||
PATH=$HOME/.cargo/bin:$PATH
 | 
					PATH=$HOME/.cargo/bin:$PATH
 | 
				
			||||||
rustup --version
 | 
					rustup --version
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					sh -c "$(curl -sSfL https://release.solana.com/edge/install)"
 | 
				
			||||||
 | 
					PATH="$HOME/.local/share/solana/install/active_release/bin:$PATH"
 | 
				
			||||||
 | 
					solana --version
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,6 +1,7 @@
 | 
				
			|||||||
# |source| this file
 | 
					# |source| this file
 | 
				
			||||||
 | 
					
 | 
				
			||||||
set -ex
 | 
					set -ex
 | 
				
			||||||
 | 
					solana --version
 | 
				
			||||||
 | 
					
 | 
				
			||||||
ls -l lib
 | 
					ls -l lib
 | 
				
			||||||
test -r lib/index.iife.js
 | 
					test -r lib/index.iife.js
 | 
				
			||||||
@@ -12,8 +13,5 @@ npm run flow
 | 
				
			|||||||
npm run lint
 | 
					npm run lint
 | 
				
			||||||
npm run codecov
 | 
					npm run codecov
 | 
				
			||||||
make -C examples/bpf-c-noop/
 | 
					make -C examples/bpf-c-noop/
 | 
				
			||||||
examples/bpf-rust-noop/do.sh build
 | 
					cargo build-bpf --manifest-path examples/bpf-rust-noop/Cargo.toml
 | 
				
			||||||
npm run localnet:update
 | 
					npm run test:live-with-test-validator
 | 
				
			||||||
npm run localnet:up
 | 
					 | 
				
			||||||
npm run test:live
 | 
					 | 
				
			||||||
npm run localnet:down
 | 
					 | 
				
			||||||
 
 | 
				
			|||||||
@@ -46,15 +46,11 @@ $ npm install --save @solana/web3.js
 | 
				
			|||||||
<script src="https://github.com/solana-labs/solana-web3.js/releases/download/v0.0.6/solanaWeb3.min.js"></script>
 | 
					<script src="https://github.com/solana-labs/solana-web3.js/releases/download/v0.0.6/solanaWeb3.min.js"></script>
 | 
				
			||||||
```
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
### BPF program development
 | 
					 | 
				
			||||||
The Solana BPF SDK is located in the `bpf-sdk/` subdirectory if you installed
 | 
					 | 
				
			||||||
solana-web3.js from npmjs.com.
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
From a git clone, run `npm run bpf-sdk:install` to fetch the latest BPF SDK.
 | 
					### Development Environment Setup
 | 
				
			||||||
 | 
					To build and run tests:
 | 
				
			||||||
Additionally Rust must be installed to build Rust BPF programs such as
 | 
					1. Install Rust from https://rustup.rs/
 | 
				
			||||||
`examples/bpf-rust-noop/`.  See https://www.rust-lang.org/install.html for
 | 
					2. Install the latest Solana release from https://docs.solana.com/cli/install-solana-cli-tools
 | 
				
			||||||
installation details.
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
## Usage
 | 
					## Usage
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -76,31 +72,6 @@ console.log(solanaWeb3);
 | 
				
			|||||||
console.log(solanaWeb3);
 | 
					console.log(solanaWeb3);
 | 
				
			||||||
```
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
## Local Network
 | 
					 | 
				
			||||||
The `solana-localnet` program is provided to easily start a test Solana cluster
 | 
					 | 
				
			||||||
locally on your machine.  Docker must be installed.  The JSON RPC endpoint of
 | 
					 | 
				
			||||||
the local cluster is `http://localhost:8899`.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
To start, first fetch the latest Docker image by running:
 | 
					 | 
				
			||||||
```bash
 | 
					 | 
				
			||||||
$ npx solana-localnet update
 | 
					 | 
				
			||||||
```
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
Then run the following command to start the cluster
 | 
					 | 
				
			||||||
```bash
 | 
					 | 
				
			||||||
$ npx solana-localnet up
 | 
					 | 
				
			||||||
```
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
While the cluster is running logs are available with:
 | 
					 | 
				
			||||||
```bash
 | 
					 | 
				
			||||||
$ npx solana-localnet logs -f
 | 
					 | 
				
			||||||
```
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
Stop the cluster with:
 | 
					 | 
				
			||||||
```bash
 | 
					 | 
				
			||||||
$ npx solana-localnet down
 | 
					 | 
				
			||||||
```
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
## Flow
 | 
					## Flow
 | 
				
			||||||
 | 
					
 | 
				
			||||||
A [Flow library definition](https://flow.org/en/docs/libdefs/) is provided at
 | 
					A [Flow library definition](https://flow.org/en/docs/libdefs/) is provided at
 | 
				
			||||||
@@ -127,3 +98,46 @@ and [npmjs.com](https://www.npmjs.com/package/@solana/web3.js)
 | 
				
			|||||||
Each Github release features a tarball containing API documentation and a
 | 
					Each Github release features a tarball containing API documentation and a
 | 
				
			||||||
minified version of the module suitable for direct use in a browser environment
 | 
					minified version of the module suitable for direct use in a browser environment
 | 
				
			||||||
(<script> tag)
 | 
					(<script> tag)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					## Deprecated
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					### Local Network
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					**Please use `solana-test-validator` from the latest Solana release instead of the information in this section**
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					The `solana-localnet` program is provided to easily start a test Solana cluster
 | 
				
			||||||
 | 
					locally on your machine.  Docker must be installed.  The JSON RPC endpoint of
 | 
				
			||||||
 | 
					the local cluster is `http://localhost:8899`.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					To start, first fetch the latest Docker image by running:
 | 
				
			||||||
 | 
					```bash
 | 
				
			||||||
 | 
					$ npx solana-localnet update
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Then run the following command to start the cluster
 | 
				
			||||||
 | 
					```bash
 | 
				
			||||||
 | 
					$ npx solana-localnet up
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					While the cluster is running logs are available with:
 | 
				
			||||||
 | 
					```bash
 | 
				
			||||||
 | 
					$ npx solana-localnet logs -f
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Stop the cluster with:
 | 
				
			||||||
 | 
					```bash
 | 
				
			||||||
 | 
					$ npx solana-localnet down
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					### BPF program development
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					**Please use `cargo build-bpf` from the latest Solana release instead of the information in this section**
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					The Solana BPF SDK is located in the `bpf-sdk/` subdirectory if you installed
 | 
				
			||||||
 | 
					solana-web3.js from npmjs.com.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					From a git clone, run `npm run bpf-sdk:install` to fetch the latest BPF SDK.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Additionally Rust must be installed to build Rust BPF programs such as
 | 
				
			||||||
 | 
					`examples/bpf-rust-noop/`.  See https://www.rust-lang.org/install.html for
 | 
				
			||||||
 | 
					installation details.
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,6 +1,3 @@
 | 
				
			|||||||
 | 
					 | 
				
			||||||
# Note: This crate must be built using build.sh
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
[package]
 | 
					[package]
 | 
				
			||||||
name = "solana-bpf-rust-noop"
 | 
					name = "solana-bpf-rust-noop"
 | 
				
			||||||
version = "0.1.0"
 | 
					version = "0.1.0"
 | 
				
			||||||
@@ -14,13 +11,9 @@ edition = "2018"
 | 
				
			|||||||
[dependencies]
 | 
					[dependencies]
 | 
				
			||||||
num-derive = "0.2"
 | 
					num-derive = "0.2"
 | 
				
			||||||
num-traits = "0.2"
 | 
					num-traits = "0.2"
 | 
				
			||||||
solana-sdk = { git = "https://github.com/solana-labs/solana", default-features = false }
 | 
					solana-program = "1.4.16"
 | 
				
			||||||
thiserror = "1.0"
 | 
					thiserror = "1.0"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[features]
 | 
					 | 
				
			||||||
program = ["solana-sdk/program"]
 | 
					 | 
				
			||||||
default = ["program"]
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
[workspace]
 | 
					[workspace]
 | 
				
			||||||
members = []
 | 
					members = []
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,69 +0,0 @@
 | 
				
			|||||||
#!/usr/bin/env bash
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
cd "$(dirname "$0")"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
usage() {
 | 
					 | 
				
			||||||
    cat <<EOF
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
Usage: do.sh action <project>
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
If relative_project_path is ommitted then action will
 | 
					 | 
				
			||||||
be performed on all projects
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
Supported actions:
 | 
					 | 
				
			||||||
    build
 | 
					 | 
				
			||||||
    clean
 | 
					 | 
				
			||||||
    test
 | 
					 | 
				
			||||||
    clippy
 | 
					 | 
				
			||||||
    fmt
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
EOF
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
sdkDir=../../bpf-sdk
 | 
					 | 
				
			||||||
targetDir="$PWD"/target
 | 
					 | 
				
			||||||
profile=bpfel-unknown-unknown/release
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
perform_action() {
 | 
					 | 
				
			||||||
    set -e
 | 
					 | 
				
			||||||
    case "$1" in
 | 
					 | 
				
			||||||
    build)
 | 
					 | 
				
			||||||
        "$sdkDir"/rust/build.sh "$PWD"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        so_path="$targetDir/$profile"
 | 
					 | 
				
			||||||
        so_name="solana_bpf_rust_noop"
 | 
					 | 
				
			||||||
        if [ -f "$so_path/${so_name}.so" ]; then
 | 
					 | 
				
			||||||
            cp "$so_path/${so_name}.so" "$so_path/${so_name}_debug.so"
 | 
					 | 
				
			||||||
            "$sdkDir"/dependencies/llvm-native/bin/llvm-objcopy --strip-all "$so_path/${so_name}.so" "$so_path/$so_name.so"
 | 
					 | 
				
			||||||
        fi
 | 
					 | 
				
			||||||
        ;;
 | 
					 | 
				
			||||||
    clean)
 | 
					 | 
				
			||||||
        "$sdkDir"/rust/clean.sh "$PWD"
 | 
					 | 
				
			||||||
        ;;
 | 
					 | 
				
			||||||
    test)
 | 
					 | 
				
			||||||
        echo "test"
 | 
					 | 
				
			||||||
        cargo +nightly test
 | 
					 | 
				
			||||||
        ;;
 | 
					 | 
				
			||||||
    clippy)
 | 
					 | 
				
			||||||
        echo "clippy"
 | 
					 | 
				
			||||||
        cargo +nightly clippy
 | 
					 | 
				
			||||||
        ;;
 | 
					 | 
				
			||||||
    fmt)
 | 
					 | 
				
			||||||
        echo "formatting"
 | 
					 | 
				
			||||||
        cargo fmt
 | 
					 | 
				
			||||||
        ;;
 | 
					 | 
				
			||||||
    help)
 | 
					 | 
				
			||||||
        usage
 | 
					 | 
				
			||||||
        exit
 | 
					 | 
				
			||||||
        ;;
 | 
					 | 
				
			||||||
    *)
 | 
					 | 
				
			||||||
        echo "Error: Unknown command"
 | 
					 | 
				
			||||||
        usage
 | 
					 | 
				
			||||||
        exit
 | 
					 | 
				
			||||||
        ;;
 | 
					 | 
				
			||||||
    esac
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
set -e
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
perform_action "$1"
 | 
					 | 
				
			||||||
@@ -1,10 +1,8 @@
 | 
				
			|||||||
//! @brief Example Rust-based BPF program that prints out the parameters passed to it
 | 
					//! @brief Example Rust-based BPF program that prints out the parameters passed to it
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#![allow(unreachable_code)]
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
extern crate solana_sdk;
 | 
					use solana_program::{
 | 
				
			||||||
use solana_sdk::{
 | 
					    account_info::AccountInfo, entrypoint, entrypoint::ProgramResult, msg, log::*, pubkey::Pubkey,
 | 
				
			||||||
    account_info::AccountInfo, entrypoint, entrypoint::ProgramResult, info, log::*, pubkey::Pubkey,
 | 
					 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#[derive(Debug, PartialEq)]
 | 
					#[derive(Debug, PartialEq)]
 | 
				
			||||||
@@ -25,13 +23,13 @@ fn process_instruction(
 | 
				
			|||||||
    accounts: &[AccountInfo],
 | 
					    accounts: &[AccountInfo],
 | 
				
			||||||
    instruction_data: &[u8],
 | 
					    instruction_data: &[u8],
 | 
				
			||||||
) -> ProgramResult {
 | 
					) -> ProgramResult {
 | 
				
			||||||
    info!("Program identifier:");
 | 
					    msg!("Program identifier:");
 | 
				
			||||||
    program_id.log();
 | 
					    program_id.log();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    // Log the provided account keys and instruction input data.  In the case of
 | 
					    // Log the provided account keys and instruction input data.  In the case of
 | 
				
			||||||
    // the no-op program, no account keys or input data are expected but real
 | 
					    // the no-op program, no account keys or input data are expected but real
 | 
				
			||||||
    // programs will have specific requirements so they can do their work.
 | 
					    // programs will have specific requirements so they can do their work.
 | 
				
			||||||
    info!("Account keys and instruction input data:");
 | 
					    msg!("Account keys and instruction input data:");
 | 
				
			||||||
    sol_log_params(accounts, instruction_data);
 | 
					    sol_log_params(accounts, instruction_data);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
@@ -42,7 +40,7 @@ fn process_instruction(
 | 
				
			|||||||
        let result_str = std::str::from_utf8(&sparkle_heart).unwrap();
 | 
					        let result_str = std::str::from_utf8(&sparkle_heart).unwrap();
 | 
				
			||||||
        assert_eq!(4, result_str.len());
 | 
					        assert_eq!(4, result_str.len());
 | 
				
			||||||
        assert_eq!("💖", result_str);
 | 
					        assert_eq!("💖", result_str);
 | 
				
			||||||
        info!(result_str);
 | 
					        msg!(result_str);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										301
									
								
								web3.js/package-lock.json
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										301
									
								
								web3.js/package-lock.json
									
									
									
										generated
									
									
									
								
							@@ -3634,6 +3634,21 @@
 | 
				
			|||||||
        }
 | 
					        }
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
 | 
					    "@hapi/hoek": {
 | 
				
			||||||
 | 
					      "version": "9.1.0",
 | 
				
			||||||
 | 
					      "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-9.1.0.tgz",
 | 
				
			||||||
 | 
					      "integrity": "sha512-i9YbZPN3QgfighY/1X1Pu118VUz2Fmmhd6b2n0/O8YVgGGfw0FbUYoA97k7FkpGJ+pLCFEDLUmAPPV4D1kpeFw==",
 | 
				
			||||||
 | 
					      "dev": true
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
 | 
					    "@hapi/topo": {
 | 
				
			||||||
 | 
					      "version": "5.0.0",
 | 
				
			||||||
 | 
					      "resolved": "https://registry.npmjs.org/@hapi/topo/-/topo-5.0.0.tgz",
 | 
				
			||||||
 | 
					      "integrity": "sha512-tFJlT47db0kMqVm3H4nQYgn6Pwg10GTZHb1pwmSiv1K4ks6drQOtfEF5ZnPjkvC+y4/bUPHK+bc87QvLcL+WMw==",
 | 
				
			||||||
 | 
					      "dev": true,
 | 
				
			||||||
 | 
					      "requires": {
 | 
				
			||||||
 | 
					        "@hapi/hoek": "^9.0.0"
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
    "@istanbuljs/load-nyc-config": {
 | 
					    "@istanbuljs/load-nyc-config": {
 | 
				
			||||||
      "version": "1.1.0",
 | 
					      "version": "1.1.0",
 | 
				
			||||||
      "resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz",
 | 
					      "resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz",
 | 
				
			||||||
@@ -5103,6 +5118,27 @@
 | 
				
			|||||||
        }
 | 
					        }
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
 | 
					    "@sideway/address": {
 | 
				
			||||||
 | 
					      "version": "4.1.0",
 | 
				
			||||||
 | 
					      "resolved": "https://registry.npmjs.org/@sideway/address/-/address-4.1.0.tgz",
 | 
				
			||||||
 | 
					      "integrity": "sha512-wAH/JYRXeIFQRsxerIuLjgUu2Xszam+O5xKeatJ4oudShOOirfmsQ1D6LL54XOU2tizpCYku+s1wmU0SYdpoSA==",
 | 
				
			||||||
 | 
					      "dev": true,
 | 
				
			||||||
 | 
					      "requires": {
 | 
				
			||||||
 | 
					        "@hapi/hoek": "^9.0.0"
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
 | 
					    "@sideway/formula": {
 | 
				
			||||||
 | 
					      "version": "3.0.0",
 | 
				
			||||||
 | 
					      "resolved": "https://registry.npmjs.org/@sideway/formula/-/formula-3.0.0.tgz",
 | 
				
			||||||
 | 
					      "integrity": "sha512-vHe7wZ4NOXVfkoRb8T5otiENVlT7a3IAiw7H5M2+GO+9CDgcVUUsX1zalAztCmwyOr2RUTGJdgB+ZvSVqmdHmg==",
 | 
				
			||||||
 | 
					      "dev": true
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
 | 
					    "@sideway/pinpoint": {
 | 
				
			||||||
 | 
					      "version": "2.0.0",
 | 
				
			||||||
 | 
					      "resolved": "https://registry.npmjs.org/@sideway/pinpoint/-/pinpoint-2.0.0.tgz",
 | 
				
			||||||
 | 
					      "integrity": "sha512-RNiOoTPkptFtSVzQevY/yWtZwf/RxyVnPy/OcA9HBM3MlGDnBEYL5B41H0MTn0Uec8Hi+2qUtTfG2WWZBmMejQ==",
 | 
				
			||||||
 | 
					      "dev": true
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
    "@sindresorhus/is": {
 | 
					    "@sindresorhus/is": {
 | 
				
			||||||
      "version": "2.1.1",
 | 
					      "version": "2.1.1",
 | 
				
			||||||
      "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-2.1.1.tgz",
 | 
					      "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-2.1.1.tgz",
 | 
				
			||||||
@@ -6346,6 +6382,15 @@
 | 
				
			|||||||
      "dev": true,
 | 
					      "dev": true,
 | 
				
			||||||
      "optional": true
 | 
					      "optional": true
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
 | 
					    "axios": {
 | 
				
			||||||
 | 
					      "version": "0.19.2",
 | 
				
			||||||
 | 
					      "resolved": "https://registry.npmjs.org/axios/-/axios-0.19.2.tgz",
 | 
				
			||||||
 | 
					      "integrity": "sha512-fjgm5MvRHLhx+osE2xoekY70AhARk3a6hkN+3Io1jc00jtquGvxYlKlsFUhmUET0V5te6CcZI7lcv2Ym61mjHA==",
 | 
				
			||||||
 | 
					      "dev": true,
 | 
				
			||||||
 | 
					      "requires": {
 | 
				
			||||||
 | 
					        "follow-redirects": "1.5.10"
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
    "babel-code-frame": {
 | 
					    "babel-code-frame": {
 | 
				
			||||||
      "version": "6.26.0",
 | 
					      "version": "6.26.0",
 | 
				
			||||||
      "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz",
 | 
					      "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz",
 | 
				
			||||||
@@ -7407,6 +7452,12 @@
 | 
				
			|||||||
      "integrity": "sha1-wKHS86cJLgN3S/qD8UwPxXkKhmc=",
 | 
					      "integrity": "sha1-wKHS86cJLgN3S/qD8UwPxXkKhmc=",
 | 
				
			||||||
      "dev": true
 | 
					      "dev": true
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
 | 
					    "check-more-types": {
 | 
				
			||||||
 | 
					      "version": "2.24.0",
 | 
				
			||||||
 | 
					      "resolved": "https://registry.npmjs.org/check-more-types/-/check-more-types-2.24.0.tgz",
 | 
				
			||||||
 | 
					      "integrity": "sha1-FCD/sQ/URNz8ebQ4kbv//TKoRgA=",
 | 
				
			||||||
 | 
					      "dev": true
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
    "cheerio": {
 | 
					    "cheerio": {
 | 
				
			||||||
      "version": "1.0.0-rc.2",
 | 
					      "version": "1.0.0-rc.2",
 | 
				
			||||||
      "resolved": "https://registry.npmjs.org/cheerio/-/cheerio-1.0.0-rc.2.tgz",
 | 
					      "resolved": "https://registry.npmjs.org/cheerio/-/cheerio-1.0.0-rc.2.tgz",
 | 
				
			||||||
@@ -8767,6 +8818,12 @@
 | 
				
			|||||||
      "integrity": "sha512-8sJ78ElpbDJBHNeBzUbUVLsqKdccaa/BXF1uPTw3GrvQTBgrQrtObr2mUrE38vzYd8cEv+m/JBfDLioYcfXoaw==",
 | 
					      "integrity": "sha512-8sJ78ElpbDJBHNeBzUbUVLsqKdccaa/BXF1uPTw3GrvQTBgrQrtObr2mUrE38vzYd8cEv+m/JBfDLioYcfXoaw==",
 | 
				
			||||||
      "dev": true
 | 
					      "dev": true
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
 | 
					    "duplexer": {
 | 
				
			||||||
 | 
					      "version": "0.1.2",
 | 
				
			||||||
 | 
					      "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.2.tgz",
 | 
				
			||||||
 | 
					      "integrity": "sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==",
 | 
				
			||||||
 | 
					      "dev": true
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
    "duplexer2": {
 | 
					    "duplexer2": {
 | 
				
			||||||
      "version": "0.1.4",
 | 
					      "version": "0.1.4",
 | 
				
			||||||
      "resolved": "https://registry.npmjs.org/duplexer2/-/duplexer2-0.1.4.tgz",
 | 
					      "resolved": "https://registry.npmjs.org/duplexer2/-/duplexer2-0.1.4.tgz",
 | 
				
			||||||
@@ -10098,6 +10155,32 @@
 | 
				
			|||||||
      "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=",
 | 
					      "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=",
 | 
				
			||||||
      "dev": true
 | 
					      "dev": true
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
 | 
					    "event-stream": {
 | 
				
			||||||
 | 
					      "version": "3.3.4",
 | 
				
			||||||
 | 
					      "resolved": "https://registry.npmjs.org/event-stream/-/event-stream-3.3.4.tgz",
 | 
				
			||||||
 | 
					      "integrity": "sha1-SrTJoPWlTbkzi0w02Gv86PSzVXE=",
 | 
				
			||||||
 | 
					      "dev": true,
 | 
				
			||||||
 | 
					      "requires": {
 | 
				
			||||||
 | 
					        "duplexer": "~0.1.1",
 | 
				
			||||||
 | 
					        "from": "~0",
 | 
				
			||||||
 | 
					        "map-stream": "~0.1.0",
 | 
				
			||||||
 | 
					        "pause-stream": "0.0.11",
 | 
				
			||||||
 | 
					        "split": "0.3",
 | 
				
			||||||
 | 
					        "stream-combiner": "~0.0.4",
 | 
				
			||||||
 | 
					        "through": "~2.3.1"
 | 
				
			||||||
 | 
					      },
 | 
				
			||||||
 | 
					      "dependencies": {
 | 
				
			||||||
 | 
					        "split": {
 | 
				
			||||||
 | 
					          "version": "0.3.3",
 | 
				
			||||||
 | 
					          "resolved": "https://registry.npmjs.org/split/-/split-0.3.3.tgz",
 | 
				
			||||||
 | 
					          "integrity": "sha1-zQ7qXmOiEd//frDwkcQTPi0N0o8=",
 | 
				
			||||||
 | 
					          "dev": true,
 | 
				
			||||||
 | 
					          "requires": {
 | 
				
			||||||
 | 
					            "through": "2"
 | 
				
			||||||
 | 
					          }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
    "eventemitter3": {
 | 
					    "eventemitter3": {
 | 
				
			||||||
      "version": "4.0.7",
 | 
					      "version": "4.0.7",
 | 
				
			||||||
      "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz",
 | 
					      "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz",
 | 
				
			||||||
@@ -10693,6 +10776,26 @@
 | 
				
			|||||||
        }
 | 
					        }
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
 | 
					    "follow-redirects": {
 | 
				
			||||||
 | 
					      "version": "1.5.10",
 | 
				
			||||||
 | 
					      "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.5.10.tgz",
 | 
				
			||||||
 | 
					      "integrity": "sha512-0V5l4Cizzvqt5D44aTXbFZz+FtyXV1vrDN6qrelxtfYQKW0KO0W2T/hkE8xvGa/540LkZlkaUjO4ailYTFtHVQ==",
 | 
				
			||||||
 | 
					      "dev": true,
 | 
				
			||||||
 | 
					      "requires": {
 | 
				
			||||||
 | 
					        "debug": "=3.1.0"
 | 
				
			||||||
 | 
					      },
 | 
				
			||||||
 | 
					      "dependencies": {
 | 
				
			||||||
 | 
					        "debug": {
 | 
				
			||||||
 | 
					          "version": "3.1.0",
 | 
				
			||||||
 | 
					          "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz",
 | 
				
			||||||
 | 
					          "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==",
 | 
				
			||||||
 | 
					          "dev": true,
 | 
				
			||||||
 | 
					          "requires": {
 | 
				
			||||||
 | 
					            "ms": "2.0.0"
 | 
				
			||||||
 | 
					          }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
    "for-in": {
 | 
					    "for-in": {
 | 
				
			||||||
      "version": "1.0.2",
 | 
					      "version": "1.0.2",
 | 
				
			||||||
      "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz",
 | 
					      "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz",
 | 
				
			||||||
@@ -10730,6 +10833,12 @@
 | 
				
			|||||||
        "map-cache": "^0.2.2"
 | 
					        "map-cache": "^0.2.2"
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
 | 
					    "from": {
 | 
				
			||||||
 | 
					      "version": "0.1.7",
 | 
				
			||||||
 | 
					      "resolved": "https://registry.npmjs.org/from/-/from-0.1.7.tgz",
 | 
				
			||||||
 | 
					      "integrity": "sha1-g8YK/Fi5xWmXAH7Rp2izqzA6RP4=",
 | 
				
			||||||
 | 
					      "dev": true
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
    "from2": {
 | 
					    "from2": {
 | 
				
			||||||
      "version": "2.3.0",
 | 
					      "version": "2.3.0",
 | 
				
			||||||
      "resolved": "https://registry.npmjs.org/from2/-/from2-2.3.0.tgz",
 | 
					      "resolved": "https://registry.npmjs.org/from2/-/from2-2.3.0.tgz",
 | 
				
			||||||
@@ -13860,6 +13969,19 @@
 | 
				
			|||||||
        }
 | 
					        }
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
 | 
					    "joi": {
 | 
				
			||||||
 | 
					      "version": "17.3.0",
 | 
				
			||||||
 | 
					      "resolved": "https://registry.npmjs.org/joi/-/joi-17.3.0.tgz",
 | 
				
			||||||
 | 
					      "integrity": "sha512-Qh5gdU6niuYbUIUV5ejbsMiiFmBdw8Kcp8Buj2JntszCkCfxJ9Cz76OtHxOZMPXrt5810iDIXs+n1nNVoquHgg==",
 | 
				
			||||||
 | 
					      "dev": true,
 | 
				
			||||||
 | 
					      "requires": {
 | 
				
			||||||
 | 
					        "@hapi/hoek": "^9.0.0",
 | 
				
			||||||
 | 
					        "@hapi/topo": "^5.0.0",
 | 
				
			||||||
 | 
					        "@sideway/address": "^4.1.0",
 | 
				
			||||||
 | 
					        "@sideway/formula": "^3.0.0",
 | 
				
			||||||
 | 
					        "@sideway/pinpoint": "^2.0.0"
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
    "js-tokens": {
 | 
					    "js-tokens": {
 | 
				
			||||||
      "version": "3.0.2",
 | 
					      "version": "3.0.2",
 | 
				
			||||||
      "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz",
 | 
					      "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz",
 | 
				
			||||||
@@ -14265,6 +14387,12 @@
 | 
				
			|||||||
      "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==",
 | 
					      "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==",
 | 
				
			||||||
      "dev": true
 | 
					      "dev": true
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
 | 
					    "lazy-ass": {
 | 
				
			||||||
 | 
					      "version": "1.6.0",
 | 
				
			||||||
 | 
					      "resolved": "https://registry.npmjs.org/lazy-ass/-/lazy-ass-1.6.0.tgz",
 | 
				
			||||||
 | 
					      "integrity": "sha1-eZllXoZGwX8In90YfRUNMyTVRRM=",
 | 
				
			||||||
 | 
					      "dev": true
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
    "level-blobs": {
 | 
					    "level-blobs": {
 | 
				
			||||||
      "version": "0.1.7",
 | 
					      "version": "0.1.7",
 | 
				
			||||||
      "resolved": "https://registry.npmjs.org/level-blobs/-/level-blobs-0.1.7.tgz",
 | 
					      "resolved": "https://registry.npmjs.org/level-blobs/-/level-blobs-0.1.7.tgz",
 | 
				
			||||||
@@ -14803,6 +14931,12 @@
 | 
				
			|||||||
      "integrity": "sha512-glc9y00wgtwcDmp7GaE/0b0OnxpNJsVf3ael/An6Fe2Q51LLwN1er6sdomLRzz5h0+yMpiYLhWYF5R7HeqVd4g==",
 | 
					      "integrity": "sha512-glc9y00wgtwcDmp7GaE/0b0OnxpNJsVf3ael/An6Fe2Q51LLwN1er6sdomLRzz5h0+yMpiYLhWYF5R7HeqVd4g==",
 | 
				
			||||||
      "dev": true
 | 
					      "dev": true
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
 | 
					    "map-stream": {
 | 
				
			||||||
 | 
					      "version": "0.1.0",
 | 
				
			||||||
 | 
					      "resolved": "https://registry.npmjs.org/map-stream/-/map-stream-0.1.0.tgz",
 | 
				
			||||||
 | 
					      "integrity": "sha1-5WqpTEyAVaFkBKBnS3jyFffI4ZQ=",
 | 
				
			||||||
 | 
					      "dev": true
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
    "map-visit": {
 | 
					    "map-visit": {
 | 
				
			||||||
      "version": "1.0.0",
 | 
					      "version": "1.0.0",
 | 
				
			||||||
      "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz",
 | 
					      "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz",
 | 
				
			||||||
@@ -19706,6 +19840,15 @@
 | 
				
			|||||||
        "pify": "^2.0.0"
 | 
					        "pify": "^2.0.0"
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
 | 
					    "pause-stream": {
 | 
				
			||||||
 | 
					      "version": "0.0.11",
 | 
				
			||||||
 | 
					      "resolved": "https://registry.npmjs.org/pause-stream/-/pause-stream-0.0.11.tgz",
 | 
				
			||||||
 | 
					      "integrity": "sha1-/lo0sMvOErWqaitAPuLnO2AvFEU=",
 | 
				
			||||||
 | 
					      "dev": true,
 | 
				
			||||||
 | 
					      "requires": {
 | 
				
			||||||
 | 
					        "through": "~2.3"
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
    "pbkdf2": {
 | 
					    "pbkdf2": {
 | 
				
			||||||
      "version": "3.0.16",
 | 
					      "version": "3.0.16",
 | 
				
			||||||
      "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.0.16.tgz",
 | 
					      "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.0.16.tgz",
 | 
				
			||||||
@@ -19958,6 +20101,15 @@
 | 
				
			|||||||
      "integrity": "sha1-0/wRS6BplaRexok/SEzrHXj19HY=",
 | 
					      "integrity": "sha1-0/wRS6BplaRexok/SEzrHXj19HY=",
 | 
				
			||||||
      "dev": true
 | 
					      "dev": true
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
 | 
					    "ps-tree": {
 | 
				
			||||||
 | 
					      "version": "1.2.0",
 | 
				
			||||||
 | 
					      "resolved": "https://registry.npmjs.org/ps-tree/-/ps-tree-1.2.0.tgz",
 | 
				
			||||||
 | 
					      "integrity": "sha512-0VnamPPYHl4uaU/nSFeZZpR21QAWRz+sRv4iW9+v/GS/J5U5iZB5BNN6J0RMoOvdx2gWM2+ZFMIm58q24e4UYA==",
 | 
				
			||||||
 | 
					      "dev": true,
 | 
				
			||||||
 | 
					      "requires": {
 | 
				
			||||||
 | 
					        "event-stream": "=3.3.4"
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
    "psl": {
 | 
					    "psl": {
 | 
				
			||||||
      "version": "1.8.0",
 | 
					      "version": "1.8.0",
 | 
				
			||||||
      "resolved": "https://registry.npmjs.org/psl/-/psl-1.8.0.tgz",
 | 
					      "resolved": "https://registry.npmjs.org/psl/-/psl-1.8.0.tgz",
 | 
				
			||||||
@@ -20888,6 +21040,15 @@
 | 
				
			|||||||
      "integrity": "sha512-DEqnSRTDw/Tc3FXf49zedI638Z9onwUotBMiUFKmrO2sdFKIbXamXGQ3Axd4qgphxKB4kw/qP1w5kTxnfU1B9Q==",
 | 
					      "integrity": "sha512-DEqnSRTDw/Tc3FXf49zedI638Z9onwUotBMiUFKmrO2sdFKIbXamXGQ3Axd4qgphxKB4kw/qP1w5kTxnfU1B9Q==",
 | 
				
			||||||
      "dev": true
 | 
					      "dev": true
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
 | 
					    "rxjs": {
 | 
				
			||||||
 | 
					      "version": "6.6.3",
 | 
				
			||||||
 | 
					      "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.3.tgz",
 | 
				
			||||||
 | 
					      "integrity": "sha512-trsQc+xYYXZ3urjOiJOuCOa5N3jAZ3eiSpQB5hIT8zGlL2QfnHLJ2r7GMkBGuIausdJN1OneaI6gQlsqNHHmZQ==",
 | 
				
			||||||
 | 
					      "dev": true,
 | 
				
			||||||
 | 
					      "requires": {
 | 
				
			||||||
 | 
					        "tslib": "^1.9.0"
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
    "safe-buffer": {
 | 
					    "safe-buffer": {
 | 
				
			||||||
      "version": "5.1.1",
 | 
					      "version": "5.1.1",
 | 
				
			||||||
      "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.1.tgz",
 | 
					      "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.1.tgz",
 | 
				
			||||||
@@ -21948,6 +22109,124 @@
 | 
				
			|||||||
        }
 | 
					        }
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
 | 
					    "start-server-and-test": {
 | 
				
			||||||
 | 
					      "version": "1.11.6",
 | 
				
			||||||
 | 
					      "resolved": "https://registry.npmjs.org/start-server-and-test/-/start-server-and-test-1.11.6.tgz",
 | 
				
			||||||
 | 
					      "integrity": "sha512-+0T83W/R7CVgIE2HJcrpJDleLt7Skc2Xj8jWWsItRGdpZwenAv0YtIpBEKoL64pwUtPAPoHuYUtvWUOfCRoVjg==",
 | 
				
			||||||
 | 
					      "dev": true,
 | 
				
			||||||
 | 
					      "requires": {
 | 
				
			||||||
 | 
					        "bluebird": "3.7.2",
 | 
				
			||||||
 | 
					        "check-more-types": "2.24.0",
 | 
				
			||||||
 | 
					        "debug": "4.3.1",
 | 
				
			||||||
 | 
					        "execa": "3.4.0",
 | 
				
			||||||
 | 
					        "lazy-ass": "1.6.0",
 | 
				
			||||||
 | 
					        "ps-tree": "1.2.0",
 | 
				
			||||||
 | 
					        "wait-on": "5.2.0"
 | 
				
			||||||
 | 
					      },
 | 
				
			||||||
 | 
					      "dependencies": {
 | 
				
			||||||
 | 
					        "bluebird": {
 | 
				
			||||||
 | 
					          "version": "3.7.2",
 | 
				
			||||||
 | 
					          "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz",
 | 
				
			||||||
 | 
					          "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==",
 | 
				
			||||||
 | 
					          "dev": true
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					        "cross-spawn": {
 | 
				
			||||||
 | 
					          "version": "7.0.3",
 | 
				
			||||||
 | 
					          "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz",
 | 
				
			||||||
 | 
					          "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==",
 | 
				
			||||||
 | 
					          "dev": true,
 | 
				
			||||||
 | 
					          "requires": {
 | 
				
			||||||
 | 
					            "path-key": "^3.1.0",
 | 
				
			||||||
 | 
					            "shebang-command": "^2.0.0",
 | 
				
			||||||
 | 
					            "which": "^2.0.1"
 | 
				
			||||||
 | 
					          }
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					        "debug": {
 | 
				
			||||||
 | 
					          "version": "4.3.1",
 | 
				
			||||||
 | 
					          "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz",
 | 
				
			||||||
 | 
					          "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==",
 | 
				
			||||||
 | 
					          "dev": true,
 | 
				
			||||||
 | 
					          "requires": {
 | 
				
			||||||
 | 
					            "ms": "2.1.2"
 | 
				
			||||||
 | 
					          }
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					        "execa": {
 | 
				
			||||||
 | 
					          "version": "3.4.0",
 | 
				
			||||||
 | 
					          "resolved": "https://registry.npmjs.org/execa/-/execa-3.4.0.tgz",
 | 
				
			||||||
 | 
					          "integrity": "sha512-r9vdGQk4bmCuK1yKQu1KTwcT2zwfWdbdaXfCtAh+5nU/4fSX+JAb7vZGvI5naJrQlvONrEB20jeruESI69530g==",
 | 
				
			||||||
 | 
					          "dev": true,
 | 
				
			||||||
 | 
					          "requires": {
 | 
				
			||||||
 | 
					            "cross-spawn": "^7.0.0",
 | 
				
			||||||
 | 
					            "get-stream": "^5.0.0",
 | 
				
			||||||
 | 
					            "human-signals": "^1.1.1",
 | 
				
			||||||
 | 
					            "is-stream": "^2.0.0",
 | 
				
			||||||
 | 
					            "merge-stream": "^2.0.0",
 | 
				
			||||||
 | 
					            "npm-run-path": "^4.0.0",
 | 
				
			||||||
 | 
					            "onetime": "^5.1.0",
 | 
				
			||||||
 | 
					            "p-finally": "^2.0.0",
 | 
				
			||||||
 | 
					            "signal-exit": "^3.0.2",
 | 
				
			||||||
 | 
					            "strip-final-newline": "^2.0.0"
 | 
				
			||||||
 | 
					          }
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					        "is-stream": {
 | 
				
			||||||
 | 
					          "version": "2.0.0",
 | 
				
			||||||
 | 
					          "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.0.tgz",
 | 
				
			||||||
 | 
					          "integrity": "sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw==",
 | 
				
			||||||
 | 
					          "dev": true
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					        "ms": {
 | 
				
			||||||
 | 
					          "version": "2.1.2",
 | 
				
			||||||
 | 
					          "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
 | 
				
			||||||
 | 
					          "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
 | 
				
			||||||
 | 
					          "dev": true
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					        "npm-run-path": {
 | 
				
			||||||
 | 
					          "version": "4.0.1",
 | 
				
			||||||
 | 
					          "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz",
 | 
				
			||||||
 | 
					          "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==",
 | 
				
			||||||
 | 
					          "dev": true,
 | 
				
			||||||
 | 
					          "requires": {
 | 
				
			||||||
 | 
					            "path-key": "^3.0.0"
 | 
				
			||||||
 | 
					          }
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					        "p-finally": {
 | 
				
			||||||
 | 
					          "version": "2.0.1",
 | 
				
			||||||
 | 
					          "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-2.0.1.tgz",
 | 
				
			||||||
 | 
					          "integrity": "sha512-vpm09aKwq6H9phqRQzecoDpD8TmVyGw70qmWlyq5onxY7tqyTTFVvxMykxQSQKILBSFlbXpypIw2T1Ml7+DDtw==",
 | 
				
			||||||
 | 
					          "dev": true
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					        "path-key": {
 | 
				
			||||||
 | 
					          "version": "3.1.1",
 | 
				
			||||||
 | 
					          "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz",
 | 
				
			||||||
 | 
					          "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==",
 | 
				
			||||||
 | 
					          "dev": true
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					        "shebang-command": {
 | 
				
			||||||
 | 
					          "version": "2.0.0",
 | 
				
			||||||
 | 
					          "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz",
 | 
				
			||||||
 | 
					          "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==",
 | 
				
			||||||
 | 
					          "dev": true,
 | 
				
			||||||
 | 
					          "requires": {
 | 
				
			||||||
 | 
					            "shebang-regex": "^3.0.0"
 | 
				
			||||||
 | 
					          }
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					        "shebang-regex": {
 | 
				
			||||||
 | 
					          "version": "3.0.0",
 | 
				
			||||||
 | 
					          "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz",
 | 
				
			||||||
 | 
					          "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==",
 | 
				
			||||||
 | 
					          "dev": true
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					        "which": {
 | 
				
			||||||
 | 
					          "version": "2.0.2",
 | 
				
			||||||
 | 
					          "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz",
 | 
				
			||||||
 | 
					          "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==",
 | 
				
			||||||
 | 
					          "dev": true,
 | 
				
			||||||
 | 
					          "requires": {
 | 
				
			||||||
 | 
					            "isexe": "^2.0.0"
 | 
				
			||||||
 | 
					          }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
    "static-extend": {
 | 
					    "static-extend": {
 | 
				
			||||||
      "version": "0.1.2",
 | 
					      "version": "0.1.2",
 | 
				
			||||||
      "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz",
 | 
					      "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz",
 | 
				
			||||||
@@ -21975,6 +22254,15 @@
 | 
				
			|||||||
      "integrity": "sha1-NbCYdbT/SfJqd35QmzCQoyJr8ks=",
 | 
					      "integrity": "sha1-NbCYdbT/SfJqd35QmzCQoyJr8ks=",
 | 
				
			||||||
      "dev": true
 | 
					      "dev": true
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
 | 
					    "stream-combiner": {
 | 
				
			||||||
 | 
					      "version": "0.0.4",
 | 
				
			||||||
 | 
					      "resolved": "https://registry.npmjs.org/stream-combiner/-/stream-combiner-0.0.4.tgz",
 | 
				
			||||||
 | 
					      "integrity": "sha1-TV5DPBhSYd3mI8o/RMWGvPXErRQ=",
 | 
				
			||||||
 | 
					      "dev": true,
 | 
				
			||||||
 | 
					      "requires": {
 | 
				
			||||||
 | 
					        "duplexer": "~0.1.1"
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
    "stream-combiner2": {
 | 
					    "stream-combiner2": {
 | 
				
			||||||
      "version": "1.1.1",
 | 
					      "version": "1.1.1",
 | 
				
			||||||
      "resolved": "https://registry.npmjs.org/stream-combiner2/-/stream-combiner2-1.1.1.tgz",
 | 
					      "resolved": "https://registry.npmjs.org/stream-combiner2/-/stream-combiner2-1.1.1.tgz",
 | 
				
			||||||
@@ -23398,6 +23686,19 @@
 | 
				
			|||||||
        "xml-name-validator": "^3.0.0"
 | 
					        "xml-name-validator": "^3.0.0"
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
 | 
					    "wait-on": {
 | 
				
			||||||
 | 
					      "version": "5.2.0",
 | 
				
			||||||
 | 
					      "resolved": "https://registry.npmjs.org/wait-on/-/wait-on-5.2.0.tgz",
 | 
				
			||||||
 | 
					      "integrity": "sha512-U1D9PBgGw2XFc6iZqn45VBubw02VsLwnZWteQ1au4hUVHasTZuFSKRzlTB2dqgLhji16YVI8fgpEpwUdCr8B6g==",
 | 
				
			||||||
 | 
					      "dev": true,
 | 
				
			||||||
 | 
					      "requires": {
 | 
				
			||||||
 | 
					        "axios": "^0.19.2",
 | 
				
			||||||
 | 
					        "joi": "^17.1.1",
 | 
				
			||||||
 | 
					        "lodash": "^4.17.19",
 | 
				
			||||||
 | 
					        "minimist": "^1.2.5",
 | 
				
			||||||
 | 
					        "rxjs": "^6.5.5"
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
    "walker": {
 | 
					    "walker": {
 | 
				
			||||||
      "version": "1.0.7",
 | 
					      "version": "1.0.7",
 | 
				
			||||||
      "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.7.tgz",
 | 
					      "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.7.tgz",
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -40,8 +40,8 @@
 | 
				
			|||||||
    "bpf-sdk:install": "npm run clean:fixtures; bin/bpf-sdk-install.sh .",
 | 
					    "bpf-sdk:install": "npm run clean:fixtures; bin/bpf-sdk-install.sh .",
 | 
				
			||||||
    "bpf-sdk:remove-symlinks": "find bpf-sdk -type l -print -exec cp {} {}.tmp \\; -exec mv {}.tmp {} \\;",
 | 
					    "bpf-sdk:remove-symlinks": "find bpf-sdk -type l -print -exec cp {} {}.tmp \\; -exec mv {}.tmp {} \\;",
 | 
				
			||||||
    "build": "cross-env NODE_ENV=production rollup -c",
 | 
					    "build": "cross-env NODE_ENV=production rollup -c",
 | 
				
			||||||
    "build:fixtures": "./test/fixtures/noop-c/build.sh; ./test/fixtures/noop-rust/build.sh",
 | 
					    "build:fixtures": "set -ex; ./test/fixtures/noop-c/build.sh; ./test/fixtures/noop-rust/build.sh",
 | 
				
			||||||
    "clean:fixtures": "examples/bpf-rust-noop/do.sh clean; make -C examples/bpf-c-noop clean ",
 | 
					    "clean:fixtures": "make -C examples/bpf-c-noop clean ",
 | 
				
			||||||
    "clean": "rimraf ./coverage ./lib",
 | 
					    "clean": "rimraf ./coverage ./lib",
 | 
				
			||||||
    "codecov": "set -ex; npm run test:cover; cat ./coverage/lcov.info | codecov",
 | 
					    "codecov": "set -ex; npm run test:cover; cat ./coverage/lcov.info | codecov",
 | 
				
			||||||
    "dev": "cross-env NODE_ENV=development rollup -c",
 | 
					    "dev": "cross-env NODE_ENV=development rollup -c",
 | 
				
			||||||
@@ -67,6 +67,7 @@
 | 
				
			|||||||
    "test": "npm run build:fixtures && cross-env NODE_ENV=test jest --useStderr",
 | 
					    "test": "npm run build:fixtures && cross-env NODE_ENV=test jest --useStderr",
 | 
				
			||||||
    "test:cover": "npm run build:fixtures && cross-env NODE_ENV=test jest --coverage --useStderr",
 | 
					    "test:cover": "npm run build:fixtures && cross-env NODE_ENV=test jest --coverage --useStderr",
 | 
				
			||||||
    "test:live": "npm run build:fixtures && cross-env NODE_ENV=test TEST_LIVE=1 jest --useStderr",
 | 
					    "test:live": "npm run build:fixtures && cross-env NODE_ENV=test TEST_LIVE=1 jest --useStderr",
 | 
				
			||||||
 | 
					    "test:live-with-test-validator": "start-server-and-test 'solana-test-validator --reset --quiet' http://localhost:8899/health test:live",
 | 
				
			||||||
    "test:watch": "npm run build:fixtures && cross-env NODE_ENV=test jest --watch --useStderr"
 | 
					    "test:watch": "npm run build:fixtures && cross-env NODE_ENV=test jest --watch --useStderr"
 | 
				
			||||||
  },
 | 
					  },
 | 
				
			||||||
  "jest": {
 | 
					  "jest": {
 | 
				
			||||||
@@ -139,6 +140,7 @@
 | 
				
			|||||||
    "rollup-plugin-replace": "2.2.0",
 | 
					    "rollup-plugin-replace": "2.2.0",
 | 
				
			||||||
    "rollup-plugin-terser": "^7.0.0",
 | 
					    "rollup-plugin-terser": "^7.0.0",
 | 
				
			||||||
    "semantic-release": "^17.0.2",
 | 
					    "semantic-release": "^17.0.2",
 | 
				
			||||||
 | 
					    "start-server-and-test": "^1.11.6",
 | 
				
			||||||
    "typescript": "^4.0.2",
 | 
					    "typescript": "^4.0.2",
 | 
				
			||||||
    "watch": "^1.0.2"
 | 
					    "watch": "^1.0.2"
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1388,8 +1388,8 @@ test('get supply', async () => {
 | 
				
			|||||||
  const supply = (await connection.getSupply()).value;
 | 
					  const supply = (await connection.getSupply()).value;
 | 
				
			||||||
  expect(supply.total).toBeGreaterThan(0);
 | 
					  expect(supply.total).toBeGreaterThan(0);
 | 
				
			||||||
  expect(supply.circulating).toBeGreaterThan(0);
 | 
					  expect(supply.circulating).toBeGreaterThan(0);
 | 
				
			||||||
  expect(supply.nonCirculating).toBeGreaterThan(0);
 | 
					  expect(supply.nonCirculating).toBeGreaterThanOrEqual(0);
 | 
				
			||||||
  expect(supply.nonCirculatingAccounts.length).toBeGreaterThan(0);
 | 
					  expect(supply.nonCirculatingAccounts.length).toBeGreaterThanOrEqual(0);
 | 
				
			||||||
});
 | 
					});
 | 
				
			||||||
 | 
					
 | 
				
			||||||
test('get performance samples', async () => {
 | 
					test('get performance samples', async () => {
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										4
									
								
								web3.js/test/fixtures/noop-rust/build.sh
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										4
									
								
								web3.js/test/fixtures/noop-rust/build.sh
									
									
									
									
										vendored
									
									
								
							@@ -3,5 +3,5 @@ set -ex
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
cd "$(dirname "$0")"
 | 
					cd "$(dirname "$0")"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
../../../examples/bpf-rust-noop/do.sh build
 | 
					cargo build-bpf --manifest-path=../../../examples/bpf-rust-noop/Cargo.toml
 | 
				
			||||||
cp ../../../examples/bpf-rust-noop/target/bpfel-unknown-unknown/release/solana_bpf_rust_noop.so .
 | 
					cp ../../../examples/bpf-rust-noop/target/deploy/solana_bpf_rust_noop.so .
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user