From d0f6e9bf05706c2ec1ae49e5c831c5d62fd3452c Mon Sep 17 00:00:00 2001 From: Maksym Hlukhovtsov <1177472+mordamax@users.noreply.github.com> Date: Wed, 1 Mar 2023 23:53:33 +0100 Subject: [PATCH] intro bench all (#12) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * intro bench all * separate bench-all from bench, so they can be run on separate tags Co-authored-by: Alexander Theißen * Update commands/bench/lib/bench-all-polkadot.sh Co-authored-by: Alexander Theißen * Update commands/bench/lib/bench-all-cumulus.sh Co-authored-by: Alexander Theißen * add example field for custom string --------- Co-authored-by: Alexander Theißen --- README.md | 5 +- commands/bench-all/bench-all.cmd.json | 33 ++ commands/bench-all/bench-all.sh | 7 + commands/bench-vm/bench-vm.cmd.json | 16 + commands/bench-vm/bench-vm.sh | 7 + commands/bench/bench.cmd.json | 83 +-- commands/bench/bench.sh | 50 +- commands/bench/lib/bench-all-cumulus.sh | 118 +++++ commands/bench/lib/bench-all-polkadot.sh | 88 ++++ commands/bench/lib/bench-all-substrate.sh | 130 +++++ commands/bench/lib/bench-overhead.sh | 56 ++ .../bench-pallet.sh} | 122 +---- commands/cmd_runner.sh | 2 +- commands/merge/merge.cmd.json | 7 + commands/rebase/rebase.cmd.json | 7 + commands/sample/sample.cmd.json | 4 +- yarn.lock | 490 +++++++++++++++--- 17 files changed, 1004 insertions(+), 221 deletions(-) create mode 100644 commands/bench-all/bench-all.cmd.json create mode 100755 commands/bench-all/bench-all.sh create mode 100644 commands/bench-vm/bench-vm.cmd.json create mode 100755 commands/bench-vm/bench-vm.sh create mode 100644 commands/bench/lib/bench-all-cumulus.sh create mode 100644 commands/bench/lib/bench-all-polkadot.sh create mode 100644 commands/bench/lib/bench-all-substrate.sh create mode 100644 commands/bench/lib/bench-overhead.sh rename commands/bench/{build-bench-args.sh => lib/bench-pallet.sh} (59%) create mode 100644 commands/merge/merge.cmd.json create mode 100644 commands/rebase/rebase.cmd.json diff --git a/README.md b/README.md index 4d06efa..747dae5 100644 --- a/README.md +++ b/README.md @@ -4,11 +4,12 @@ For now just copy existing command and modify. Later there will be more ways to do this easier from the bot itself or here via CLI. - Run `yarn --immutable` to install `command-bot` dependency, which includes the actual supported schema for commands validation. + If you develop in parallel with `command-bot` then use something like `yarn link` - Copy any existing command which looks the most similar. - Change the name of command. The structure should be `/commands//.cmd.json` and `/commands//.sh`, because the `command_name` will be used to build a path from command to script. - Test it in your PR: - when running a new command - add specific flag (-v PIPELINE_SCRIPTS_REF=your-branch) to test it before merge. - Example: `/cmd queue -v PIPELINE_SCRIPTS_REF=your-branch -c new-command $ some arguments` + Example: `bot new-command -v PIPELINE_SCRIPTS_REF=your-branch $ some arguments` - In PR with your new command - add test evidence links to your PR with the result of your command and merge after approval. - That's it @@ -17,4 +18,4 @@ For now just copy existing command and modify. Later there will be more ways to To make a context of companion you need to specify it with special env variable `-v PATCH_=`, for example: `-v PATCH_substrate=11649` Example: -`/cmd queue -v PATCH_substrate=11649 -c try-runtime $ polkadot` +`bot try-runtime -v PATCH_substrate=11649 $ polkadot` diff --git a/commands/bench-all/bench-all.cmd.json b/commands/bench-all/bench-all.cmd.json new file mode 100644 index 0000000..d6e9ee7 --- /dev/null +++ b/commands/bench-all/bench-all.cmd.json @@ -0,0 +1,33 @@ +{ + "$schema": "../../node_modules/command-bot/src/schema/schema.cmd.json", + "command": { + "description": "This is a wrapper to run `bench` for all pallets within BM4,5,6 runners", + "configuration": { + "gitlab": { + "job": { + "tags": [ + "weights" + ], + "variables": {} + } + } + }, + "presets": { + "substrate-all": { + "description": "Pallet + Overhead + Machine Benchmark for Substrate for all pallets", + "repos": ["substrate"] + }, + "polkadot-all": { + "description": "Pallet + Overhead Benchmark for Polkadot", + "repos": ["polkadot"], + "args": { + "runtime": { "label": "Runtime", "type_one_of": ["kusama", "polkadot", "rococo", "westend"] } + } + }, + "cumulus-all": { + "description": "Pallet Benchmark for Cumulus", + "repos": ["cumulus"] + } + } + } +} diff --git a/commands/bench-all/bench-all.sh b/commands/bench-all/bench-all.sh new file mode 100755 index 0000000..5c5dd1b --- /dev/null +++ b/commands/bench-all/bench-all.sh @@ -0,0 +1,7 @@ +#!/usr/bin/env bash + +set -eu -o pipefail +shopt -s inherit_errexit + +# this is a fallback for `bench` command running on BM4,5,6 machines +. "$(dirname "${BASH_SOURCE[0]}")/../bench/bench.sh" all "$@" diff --git a/commands/bench-vm/bench-vm.cmd.json b/commands/bench-vm/bench-vm.cmd.json new file mode 100644 index 0000000..07c3a5c --- /dev/null +++ b/commands/bench-vm/bench-vm.cmd.json @@ -0,0 +1,16 @@ +{ + "$schema": "../../node_modules/command-bot/src/schema/schema.cmd.json", + "command": { + "description": "This is a testing for `bench` command running on VM machine", + "configuration": { + "gitlab": { + "job": { + "tags": [ + "weights-vm" + ], + "variables": {} + } + } + } + } +} diff --git a/commands/bench-vm/bench-vm.sh b/commands/bench-vm/bench-vm.sh new file mode 100755 index 0000000..43fa383 --- /dev/null +++ b/commands/bench-vm/bench-vm.sh @@ -0,0 +1,7 @@ +#!/usr/bin/env bash + +set -eu -o pipefail +shopt -s inherit_errexit + +# this is a fallback for `bench` command running on BM3 machine +. "$(dirname "${BASH_SOURCE[0]}")/../bench/bench.sh" "$@" diff --git a/commands/bench/bench.cmd.json b/commands/bench/bench.cmd.json index 014abec..6d636a0 100644 --- a/commands/bench/bench.cmd.json +++ b/commands/bench/bench.cmd.json @@ -11,96 +11,107 @@ } }, "presets": { - "substrate": { - "description": "Pallet Benchmark for Substrate", + "substrate-pallet": { + "description": "Pallet Benchmark for Substrate for specific pallet", "repos": ["substrate"], "args": { - "type": { "label": "Type of bench", "type_one_of": [ "pallet" ] }, - "runtime": { "label": "Runtime", "type_one_of": ["dev"] }, - "pallet": { "label": "pallet", "type_rule": "/^([a-z_]+)([:]{2}[a-z_]+)?$/" } + "subcommand": { "label": "Subcommand", "type_one_of": [ "pallet" ] }, + "runtime": { "label": "Runtime", "type_one_of": ["dev"] }, + "pallet": { "label": "pallet", "type_rule": "/^([a-z_]+)([:]{2}[a-z_]+)?$/", "example": "pallet_name" } } }, - "polkadot": { - "description": "Pallet Benchmark for Polkadot", + "polkadot-pallet": { + "description": "Pallet Benchmark for Polkadot for specific pallet", "repos": ["polkadot"], "args": { - "type": { "label": "Type of bench", "type_one_of": ["runtime", "xcm"] }, - "runtime": { "label": "Runtime", "type_one_of": ["dev", "kusama-dev", "polkadot-dev", "rococo-dev", "westend-dev"] }, - "pallet": { "label": "Pallet", "type_rule": "/^([a-z_]+)([:]{2}[a-z_]+)?$/" } + "subcommand": { "label": "Subcommand", "type_one_of": ["runtime", "xcm"] }, + "runtime": { "label": "Runtime", "type_one_of": ["dev", "kusama", "polkadot", "rococo", "westend"] }, + "pallet": { "label": "Pallet", "type_rule": "/^([a-z_]+)([:]{2}[a-z_]+)?$/", "example": "pallet_name" } } }, "cumulus-assets": { "description": "Pallet Benchmark for Cumulus [assets]", "repos": ["cumulus"], "args": { - "type": { "label": "Type of bench", "type_one_of": ["xcm", "pallet"] }, - "runtime": { "label": "Runtime", "type_one_of": ["statemine", "statemint", "test-utils", "westmint"] }, - "kind": { "label": "Kind", "type_one_of": ["asset"] }, - "pallet": { "label": "Pallet", "type_rule": "/^([a-z_]+)([:]{2}[a-z_]+)?$/" } + "subcommand": { "label": "Subcommand", "type_one_of": ["xcm", "pallet"] }, + "runtime": { "label": "Runtime", "type_one_of": ["statemine", "statemint", "test-utils", "westmint"] }, + "kind": { "label": "Kind", "type_one_of": ["asset"] }, + "pallet": { "label": "Pallet", "type_rule": "/^([a-z_]+)([:]{2}[a-z_]+)?$/", "example": "pallet_name" } } }, "cumulus-collectives": { "description": "Pallet Benchmark for Cumulus [collectives]", "repos": ["cumulus"], "args": { - "type": { "label": "Type of bench", "type_one_of": ["xcm", "pallet"] }, - "runtime": { "label": "Runtime", "type_one_of": ["collectives-polkadot"] }, - "kind": { "label": "Kind", "type_one_of": ["collectives"] }, - "pallet": { "label": "Pallet", "type_rule": "/^([a-z_]+)([:]{2}[a-z_]+)?$/" } + "subcommand": { "label": "Subcommand", "type_one_of": ["xcm", "pallet"] }, + "runtime": { "label": "Runtime", "type_one_of": ["collectives-polkadot"] }, + "kind": { "label": "Kind", "type_one_of": ["collectives"] }, + "pallet": { "label": "Pallet", "type_rule": "/^([a-z_]+)([:]{2}[a-z_]+)?$/", "example": "pallet_name" } + } + }, + "cumulus-bridge-hubs": { + "description": "Pallet Benchmark for Cumulus [bridge-hubs]", + "repos": ["cumulus"], + "args": { + "subcommand": { "label": "Subcommand", "type_one_of": ["xcm", "pallet"] }, + "runtime": { "label": "Runtime", "type_one_of": ["bridge-hub-polkadot", "bridge-hub-kusama", "bridge-hub-rococo"] }, + "kind": { "label": "Kind", "type_one_of": ["bridge-hubs"] }, + "pallet": { "label": "Pallet", "type_rule": "/^([a-z_]+)([:]{2}[a-z_]+)?$/", "example": "pallet_name" } } }, "cumulus-contracts": { "description": "Pallet Benchmark for Cumulus [contracts]", "repos": ["cumulus"], "args": { - "type": { "label": "Type of bench", "type_one_of": ["xcm", "pallet"] }, - "runtime": { "label": "Runtime", "type_one_of": ["contracts-rococo"] }, - "kind": { "label": "Kind", "type_one_of": ["contracts"] }, - "pallet": { "label": "Pallet", "type_rule": "/^([a-z_]+)([:]{2}[a-z_]+)?$/" } + "subcommand": { "label": "Subcommand", "type_one_of": ["xcm", "pallet"] }, + "runtime": { "label": "Runtime", "type_one_of": ["contracts-rococo"] }, + "kind": { "label": "Kind", "type_one_of": ["contracts"] }, + "pallet": { "label": "Pallet", "type_rule": "/^([a-z_]+)([:]{2}[a-z_]+)?$/", "example": "pallet_name" } } }, "cumulus-starters": { "description": "Pallet Benchmark for Cumulus [starters]", "repos": ["cumulus"], "args": { - "type": { "label": "Type of bench", "type_one_of": ["xcm", "pallet"] }, - "runtime": { "label": "Runtime", "type_one_of": ["seedling", "shell"] }, - "kind": { "label": "Kind", "type_one_of": ["starters"] }, - "pallet": { "label": "Pallet", "type_rule": "/^([a-z_]+)([:]{2}[a-z_]+)?$/" } + "subcommand": { "label": "Subcommand", "type_one_of": ["xcm", "pallet"] }, + "runtime": { "label": "Runtime", "type_one_of": ["seedling", "shell"] }, + "kind": { "label": "Kind", "type_one_of": ["starters"] }, + "pallet": { "label": "Pallet", "type_rule": "/^([a-z_]+)([:]{2}[a-z_]+)?$/", "example": "pallet_name" } } }, "cumulus-testing": { "description": "Pallet Benchmark for Cumulus [testing]", "repos": ["cumulus"], "args": { - "type": { "label": "Type of bench", "type_one_of": ["xcm", "pallet"] }, - "runtime": { "label": "Runtime", "type_one_of": ["penpal", "rococo-parachain"] }, - "kind": { "label": "Kind", "type_one_of": ["testing"] }, - "pallet": { "label": "Pallet", "type_rule": "/^([a-z_]+)([:]{2}[a-z_]+)?$/" } + "subcommand": { "label": "Subcommand", "type_one_of": ["xcm", "pallet"] }, + "runtime": { "label": "Runtime", "type_one_of": ["penpal", "rococo-parachain"] }, + "kind": { "label": "Kind", "type_one_of": ["testing"] }, + "pallet": { "label": "Pallet", "type_rule": "/^([a-z_]+)([:]{2}[a-z_]+)?$/", "example": "pallet_name" + } } }, "substrate-overhead": { "description": "Runs `benchmark overhead` and commits back to PR the updated `extrinsic_weights.rs` files", "repos": ["substrate"], "args": { - "type": { "label": "Type of bench", "type_one_of": ["overhead"] } + "subcommand": { "label": "Subcommand", "type_one_of": ["overhead"] } } }, "polkadot-overhead": { "description": "Runs `benchmark overhead` and commits back to PR the updated `extrinsic_weights.rs` files", "repos": ["polkadot"], "args": { - "type": { "label": "Type of bench", "type_one_of": ["overhead"] }, - "runtime":{ "label": "Runtime", "type_one_of": ["kusama-dev", "polkadot-dev", "rococo-dev", "westend-dev"] } + "subcommand": { "label": "Subcommand", "type_one_of": ["overhead"] }, + "runtime": { "label": "Runtime", "type_one_of": ["kusama-dev", "polkadot-dev", "rococo-dev", "westend-dev"] } } }, "cumulus-overhead": { "description": "Runs `benchmark overhead` and commits back to PR the updated `extrinsic_weights.rs` files", "repos": ["cumulus"], "args": { - "type": { "label": "Type of bench", "type_one_of": ["overhead"] }, - "kind": { "label": "Kind", "type_one_of": ["asset"] }, - "runtime":{ "label": "Runtime", "type_one_of": ["statemine", "statemint", "test-utils", "westmint"] } + "subcommand": { "label": "Subcommand", "type_one_of": ["overhead"] }, + "kind": { "label": "Kind", "type_one_of": ["asset"] }, + "runtime": { "label": "Runtime", "type_one_of": ["statemine", "statemint", "test-utils", "westmint"] } } } } diff --git a/commands/bench/bench.sh b/commands/bench/bench.sh index b7ffa1d..cfe1ab9 100755 --- a/commands/bench/bench.sh +++ b/commands/bench/bench.sh @@ -11,7 +11,31 @@ set -eu -o pipefail shopt -s inherit_errexit -. "$(dirname "${BASH_SOURCE[0]}")/../cmd_runner.sh" +# realpath allows to reuse the current +BENCH_ROOT_DIR=$(realpath "$(dirname "${BASH_SOURCE[0]}")") + +. "$BENCH_ROOT_DIR/../utils.sh" +. "$BENCH_ROOT_DIR/../cmd_runner.sh" + +cargo_run_benchmarks="cargo run --quiet --profile=production" +current_folder="$(basename "$PWD")" + +get_arg optional --repo "$@" +repository="${out:=$current_folder}" + +echo "Repo: $repository" + +cargo_run() { + echo "Running $cargo_run_benchmarks" "${args[@]}" + + # if not patched with PATCH_something=123 then use --locked + if [[ -z "${BENCH_PATCHED:-}" ]]; then + cargo_run_benchmarks+=" --locked" + fi + + $cargo_run_benchmarks "${args[@]}" +} + main() { cmd_runner_setup @@ -49,8 +73,28 @@ main() { cmd_runner_apply_patches set -x - # Runs the command to generate the weights - . "$(dirname "${BASH_SOURCE[0]}")/build-bench-args.sh" "$@" + + local subcommand="$1" + shift + + case "$subcommand" in + runtime|pallet|xcm) + echo 'Running bench_pallet' + . "$BENCH_ROOT_DIR/lib/bench-pallet.sh" "$subcommand" "$@" + ;; + overhead) + echo 'Running bench_overhead' + . "$BENCH_ROOT_DIR/lib/bench-overhead.sh" "$subcommand" "$@" + ;; + all) + echo "Running all-$repository" + . "$BENCH_ROOT_DIR/lib/bench-all-${repository}.sh" "$@" + ;; + *) + die "Invalid subcommand $subcommand to process_args" + ;; + esac + set +x # in case we used diener to patch some dependency during benchmark execution, diff --git a/commands/bench/lib/bench-all-cumulus.sh b/commands/bench/lib/bench-all-cumulus.sh new file mode 100644 index 0000000..ac09215 --- /dev/null +++ b/commands/bench/lib/bench-all-cumulus.sh @@ -0,0 +1,118 @@ +#!/usr/bin/env bash +# originally moved from https://github.com/paritytech/cumulus/blob/445f9277ab55b4d930ced4fbbb38d27c617c6658/scripts/benchmarks-ci.sh + +# default RUST_LOG is warn, but could be overridden +export RUST_LOG="${RUST_LOG:-error}" + +POLKADOT_PARACHAIN=./target/production/polkadot-parachain + +run_cumulus_bench() { + local artifactsDir="$ARTIFACTS_DIR" + local category=$1 + local runtimeName=$2 + + local benchmarkOutput=./parachains/runtimes/$category/$runtimeName/src/weights + + if [[ $runtimeName =~ ^(statemint|statemine|westmint)$ ]]; then + local pallets=( + pallet_assets + pallet_balances + pallet_collator_selection + pallet_multisig + pallet_proxy + pallet_session + pallet_timestamp + pallet_utility + pallet_uniques + cumulus_pallet_xcmp_queue + frame_system + pallet_xcm_benchmarks::generic + pallet_xcm_benchmarks::fungible + ) + elif [[ $runtimeName == "collectives-polkadot" ]]; then + local pallets=( + pallet_alliance + pallet_balances + pallet_collator_selection + pallet_collective + pallet_multisig + pallet_proxy + pallet_session + pallet_timestamp + pallet_utility + cumulus_pallet_xcmp_queue + frame_system + ) + elif [[ $runtimeName =~ ^(bridge-hub-kusama|bridge-hub-polkadot)$ ]]; then + local pallets=( + frame_system + pallet_balances + pallet_collator_selection + pallet_multisig + pallet_session + pallet_timestamp + pallet_utility + cumulus_pallet_xcmp_queue + pallet_xcm_benchmarks::generic + pallet_xcm_benchmarks::fungible + ) + elif [[ $runtimeName == "bridge-hub-rococo" ]]; then + local pallets=( + frame_system + pallet_balances + pallet_collator_selection + pallet_multisig + pallet_session + pallet_timestamp + pallet_utility + cumulus_pallet_xcmp_queue + pallet_xcm_benchmarks::generic + pallet_xcm_benchmarks::fungible + ) + else + echo "$runtimeName pallet list not found in benchmarks-ci.sh" + exit 1 + fi + + for pallet in "${pallets[@]}"; do + local output_file="${pallet//::/_}" + local extra_args="" + # a little hack for pallet_xcm_benchmarks - we want to force custom implementation for XcmWeightInfo + if [[ "$pallet" == "pallet_xcm_benchmarks::generic" ]] || [[ "$pallet" == "pallet_xcm_benchmarks::fungible" ]]; then + output_file="xcm/$output_file" + extra_args="--template=./templates/xcm-bench-template.hbs" + fi + $POLKADOT_PARACHAIN benchmark pallet \ + $extra_args \ + --chain="$runtimeName-dev" \ + --execution=wasm \ + --wasm-execution=compiled \ + --pallet="$pallet" \ + --no-storage-info \ + --no-median-slopes \ + --no-min-squares \ + --extrinsic='*' \ + --steps=50 \ + --repeat=20 \ + --json \ + --header=./file_header.txt \ + --output="${benchmarkOutput}/${output_file}.rs" >> "$artifactsDir/${pallet}_benchmark.json" + done +} + + +echo "[+] Compiling benchmarks..." +cargo build --profile production --locked --features=runtime-benchmarks -p polkadot-parachain + +# Assets +run_cumulus_bench assets statemine +run_cumulus_bench assets statemint +run_cumulus_bench assets westmint + +# Collectives +run_cumulus_bench collectives collectives-polkadot + +# Bridge Hubs +run_cumulus_bench bridge-hubs bridge-hub-polkadot +run_cumulus_bench bridge-hubs bridge-hub-kusama +run_cumulus_bench bridge-hubs bridge-hub-rococo diff --git a/commands/bench/lib/bench-all-polkadot.sh b/commands/bench/lib/bench-all-polkadot.sh new file mode 100644 index 0000000..4a11df6 --- /dev/null +++ b/commands/bench/lib/bench-all-polkadot.sh @@ -0,0 +1,88 @@ +#!/bin/bash + +# Runs all benchmarks for all pallets, for a given runtime, provided by $1 +# Should be run on a reference machine to gain accurate benchmarks +# current reference machine: https://github.com/paritytech/polkadot/pull/6508/files +# original source: https://github.com/paritytech/polkadot/blob/b9842c4b52f6791fef6c11ecd020b22fe614f041/scripts/run_all_benches.sh + +runtime="$1" + +# default RUST_LOG is error, but could be overridden +export RUST_LOG="${RUST_LOG:-error}" + +echo "[+] Compiling benchmarks..." +cargo build --profile production --locked --features=runtime-benchmarks -p polkadot + +POLKADOT_BIN=./target/production/polkadot + +# Update the block and extrinsic overhead weights. +echo "[+] Benchmarking block and extrinsic overheads..." +OUTPUT=$( + $POLKADOT_BIN benchmark overhead \ + --chain="${runtime}-dev" \ + --execution=wasm \ + --wasm-execution=compiled \ + --weight-path="runtime/${runtime}/constants/src/weights/" \ + --warmup=10 \ + --repeat=100 \ + --header=./file_header.txt +) +if [ $? -ne 0 ]; then + echo "$OUTPUT" >> "$ERR_FILE" + echo "[-] Failed to benchmark the block and extrinsic overheads. Error written to $ERR_FILE; continuing..." +fi + + +# Load all pallet names in an array. +PALLETS=($( + $POLKADOT_BIN benchmark pallet --list --chain="${runtime}-dev" |\ + tail -n+2 |\ + cut -d',' -f1 |\ + sort |\ + uniq +)) + +echo "[+] Benchmarking ${#PALLETS[@]} pallets for runtime $runtime" + +# Define the error file. +ERR_FILE="${ARTIFACTS_DIR}/benchmarking_errors.txt" +# Delete the error file before each run. +rm -f $ERR_FILE + +# Benchmark each pallet. +for PALLET in "${PALLETS[@]}"; do + echo "[+] Benchmarking $PALLET for $runtime"; + + output_file="" + if [[ $PALLET == *"::"* ]]; then + # translates e.g. "pallet_foo::bar" to "pallet_foo_bar" + output_file="${PALLET//::/_}.rs" + fi + + OUTPUT=$( + $POLKADOT_BIN benchmark pallet \ + --chain="${runtime}-dev" \ + --steps=50 \ + --repeat=20 \ + --no-storage-info \ + --no-median-slopes \ + --no-min-squares \ + --pallet="$PALLET" \ + --extrinsic="*" \ + --execution=wasm \ + --wasm-execution=compiled \ + --header=./file_header.txt \ + --output="./runtime/${runtime}/src/weights/${output_file}" 2>&1 + ) + if [ $? -ne 0 ]; then + echo "$OUTPUT" >> "$ERR_FILE" + echo "[-] Failed to benchmark $PALLET. Error written to $ERR_FILE; continuing..." + fi +done + +# Check if the error file exists. +if [ -f "$ERR_FILE" ]; then + echo "[-] Some benchmarks failed. See: $ERR_FILE" +else + echo "[+] All benchmarks passed." +fi diff --git a/commands/bench/lib/bench-all-substrate.sh b/commands/bench/lib/bench-all-substrate.sh new file mode 100644 index 0000000..210992e --- /dev/null +++ b/commands/bench/lib/bench-all-substrate.sh @@ -0,0 +1,130 @@ +#!/usr/bin/env bash + +# This file is part of Substrate. +# Copyright (C) 2022 Parity Technologies (UK) Ltd. +# SPDX-License-Identifier: Apache-2.0 +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# This script has three parts which all use the Substrate runtime: +# - Pallet benchmarking to update the pallet weights +# - Overhead benchmarking for the Extrinsic and Block weights +# - Machine benchmarking +# +# Should be run on a reference machine to gain accurate benchmarks +# current reference machine: https://github.com/paritytech/substrate/pull/5848 + +# Original source: https://github.com/paritytech/substrate/blob/ff9921a260a67e3a71f25c8b402cd5c7da787a96/scripts/run_all_benchmarks.sh +# Fail if any sub-command in a pipe fails, not just the last one. +set -o pipefail +# Fail on undeclared variables. +set -u +# Fail if any sub-command fails. +set -e +# Fail on traps. +set -E + +# default RUST_LOG is warn, but could be overridden +export RUST_LOG="${RUST_LOG:-error}" + +echo "[+] Compiling Substrate benchmarks..." +cargo build --profile=production --locked --features=runtime-benchmarks -p node-cli + +# The executable to use. +SUBSTRATE="./target/production/substrate" + +# Manually exclude some pallets. +EXCLUDED_PALLETS=( + # Helper pallets + "pallet_election_provider_support_benchmarking" + # Pallets without automatic benchmarking + "pallet_babe" + "pallet_grandpa" + "pallet_mmr" + "pallet_offences" + # Only used for testing, does not need real weights. + "frame_benchmarking_pallet_pov" +) + +# Load all pallet names in an array. +ALL_PALLETS=($( + $SUBSTRATE benchmark pallet --list --chain=dev |\ + tail -n+2 |\ + cut -d',' -f1 |\ + sort |\ + uniq +)) + +# Filter out the excluded pallets by concatenating the arrays and discarding duplicates. +PALLETS=($({ printf '%s\n' "${ALL_PALLETS[@]}" "${EXCLUDED_PALLETS[@]}"; } | sort | uniq -u)) + +echo "[+] Benchmarking ${#PALLETS[@]} Substrate pallets by excluding ${#EXCLUDED_PALLETS[@]} from ${#ALL_PALLETS[@]}." + +# Define the error file. +ERR_FILE="${ARTIFACTS_DIR}/benchmarking_errors.txt" +# Delete the error file before each run. +rm -f "$ERR_FILE" + +# Update the block and extrinsic overhead weights. +echo "[+] Benchmarking block and extrinsic overheads..." +OUTPUT=$( + $SUBSTRATE benchmark overhead \ + --chain=dev \ + --execution=wasm \ + --wasm-execution=compiled \ + --weight-path="./frame/support/src/weights/" \ + --header="./HEADER-APACHE2" \ + --warmup=10 \ + --repeat=100 2>&1 +) +if [ $? -ne 0 ]; then + echo "$OUTPUT" >> "$ERR_FILE" + echo "[-] Failed to benchmark the block and extrinsic overheads. Error written to $ERR_FILE; continuing..." +fi + +# Benchmark each pallet. +for PALLET in "${PALLETS[@]}"; do + FOLDER="$(echo "${PALLET#*_}" | tr '_' '-')"; + WEIGHT_FILE="./frame/${FOLDER}/src/weights.rs" + echo "[+] Benchmarking $PALLET with weight file $WEIGHT_FILE"; + + OUTPUT=$( + $SUBSTRATE benchmark pallet \ + --chain=dev \ + --steps=50 \ + --repeat=20 \ + --pallet="$PALLET" \ + --no-storage-info \ + --no-median-slopes \ + --no-min-squares \ + --extrinsic="*" \ + --execution=wasm \ + --wasm-execution=compiled \ + --heap-pages=4096 \ + --output="$WEIGHT_FILE" \ + --header="./HEADER-APACHE2" \ + --template=./.maintain/frame-weight-template.hbs 2>&1 + ) + if [ $? -ne 0 ]; then + echo "$OUTPUT" >> "$ERR_FILE" + echo "[-] Failed to benchmark $PALLET. Error written to $ERR_FILE; continuing..." + fi +done + + +# Check if the error file exists. +if [ -f "$ERR_FILE" ]; then + echo "[-] Some benchmarks failed. See: $ERR_FILE" + exit 1 +else + echo "[+] All benchmarks passed." +fi diff --git a/commands/bench/lib/bench-overhead.sh b/commands/bench/lib/bench-overhead.sh new file mode 100644 index 0000000..e041024 --- /dev/null +++ b/commands/bench/lib/bench-overhead.sh @@ -0,0 +1,56 @@ +#!/bin/bash + +THIS_DIR=$(dirname "${BASH_SOURCE[0]}") +. "$THIS_DIR/../../cmd_runner.sh" +. "$THIS_DIR/../../utils.sh" + +bench_overhead_common_args=( + -- + benchmark + overhead + --execution=wasm + --wasm-execution=compiled + --warmup=10 + --repeat=100 +) +bench_overhead() { + local args + case "$repository" in + substrate) + args=( + "${bench_overhead_common_args[@]}" + --header=./HEADER-APACHE2 + --weight-path="./frame/support/src/weights" + --chain="dev" + ) + ;; + polkadot) + local runtime="$2" + args=( + "${bench_overhead_common_args[@]}" + --header=./file_header.txt + --weight-path="./runtime/$runtime/constants/src/weights" + --chain="$runtime-dev" + ) + ;; + cumulus) + local chain_type="$2" + local runtime="$3" + + args=( + --bin=polkadot-parachain + "${bench_overhead_common_args[@]}" + --header=./file_header.txt + --weight-path="./cumulus/parachains/runtimes/$chain_type/$runtime/src/weights" + --chain="$runtime" + ) + ;; + *) + die "Repository $repository is not supported in bench_overhead" + ;; + esac + + cargo_run "${args[@]}" +} + +bench_overhead "$@" diff --git a/commands/bench/build-bench-args.sh b/commands/bench/lib/bench-pallet.sh similarity index 59% rename from commands/bench/build-bench-args.sh rename to commands/bench/lib/bench-pallet.sh index bb30c68..bafe5fb 100644 --- a/commands/bench/build-bench-args.sh +++ b/commands/bench/lib/bench-pallet.sh @@ -1,31 +1,8 @@ #!/bin/bash -# This file is separated to simplify testing the final pure command output - -set -eu -o pipefail -shopt -s inherit_errexit - -. "$(dirname "${BASH_SOURCE[0]}")/../utils.sh" -. "$(dirname "${BASH_SOURCE[0]}")/../cmd_runner.sh" - -cargo_run_benchmarks="cargo run --quiet --profile=production" -current_folder="$(basename "$PWD")" - -get_arg optional --repo "$@" -repository="${out:=$current_folder}" - -echo "Repo: $repository" - -cargo_run() { - echo "Running $cargo_run_benchmarks" "${args[@]}" - - # if not patched with PATCH_something=123 then use --locked - if [[ -z "${BENCH_PATCHED:-}" ]]; then - cargo_run_benchmarks+=" --locked" - fi - - $cargo_run_benchmarks "${args[@]}" -} +THIS_DIR=$(dirname "${BASH_SOURCE[0]}") +. "$THIS_DIR/../../cmd_runner.sh" +. "$THIS_DIR/../../utils.sh" bench_pallet_common_args=( -- @@ -89,23 +66,23 @@ bench_pallet() { polkadot) local pallet="$3" - args=( - --features=runtime-benchmarks - "${bench_pallet_common_args[@]}" - --pallet="$pallet" - --chain="$runtime" - ) + # For backward compatibility: replace "-dev" with "" + runtime=${runtime/-dev/} - local runtime_dir + local runtime_dir=$runtime if [ "$runtime" == dev ]; then runtime_dir=polkadot - elif [[ "$runtime" =~ ^(.*)-dev$ ]]; then - runtime_dir="${BASH_REMATCH[1]}" - else - die "Could not infer weights directory from $runtime" fi + local weights_dir="./runtime/${runtime_dir}/src/weights" + args=( + --features=runtime-benchmarks + "${bench_pallet_common_args[@]}" + --pallet="$pallet" + --chain="${runtime}-dev" + ) + case "$kind" in runtime) args+=( @@ -164,73 +141,4 @@ bench_pallet() { cargo_run "${args[@]}" } - -bench_overhead_common_args=( - -- - benchmark - overhead - --execution=wasm - --wasm-execution=compiled - --warmup=10 - --repeat=100 -) -bench_overhead() { - local args - case "$repository" in - substrate) - args=( - "${bench_overhead_common_args[@]}" - --header=./HEADER-APACHE2 - --weight-path="./frame/support/src/weights" - --chain="dev" - ) - ;; - polkadot) - local runtime="$2" - args=( - "${bench_overhead_common_args[@]}" - --header=./file_header.txt - --weight-path="./runtime/$runtime/constants/src/weights" - --chain="$runtime-dev" - ) - ;; - cumulus) - local chain_type="$2" - local runtime="$3" - - args=( - --bin=polkadot-parachain - "${bench_overhead_common_args[@]}" - --header=./file_header.txt - --weight-path="./cumulus/parachains/runtimes/$chain_type/$runtime/src/weights" - --chain="$runtime" - ) - ;; - *) - die "Repository $repository is not supported in bench_overhead" - ;; - esac - - cargo_run "${args[@]}" -} - -process_args() { - local subcommand="$1" - shift - - case "$subcommand" in - runtime|pallet|xcm) - echo 'Running bench_pallet' - bench_pallet "$subcommand" "$@" - ;; - overhead) - echo 'Running bench_overhead' - bench_overhead "$subcommand" "$@" - ;; - *) - die "Invalid subcommand $subcommand to process_args" - ;; - esac -} - -process_args "$@" +bench_pallet "$@" diff --git a/commands/cmd_runner.sh b/commands/cmd_runner.sh index 4f05a9c..eb3d758 100644 --- a/commands/cmd_runner.sh +++ b/commands/cmd_runner.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash -. "$(dirname "${BASH_SOURCE[0]}")/utils.sh" +. "$(realpath "$(dirname "${BASH_SOURCE[0]}")/utils.sh")" set -eu -o pipefail shopt -s inherit_errexit diff --git a/commands/merge/merge.cmd.json b/commands/merge/merge.cmd.json new file mode 100644 index 0000000..56e2ba0 --- /dev/null +++ b/commands/merge/merge.cmd.json @@ -0,0 +1,7 @@ +{ + "$schema": "../../node_modules/command-bot/src/schema/schema.cmd.json", + "command": { + "description": "Merges current PR if this is merge-able. May include companion checks. Read more: https://github.com/paritytech/parity-processbot/", + "configuration": {"gitlab": {"job": {"tags": [""]}}} + } +} diff --git a/commands/rebase/rebase.cmd.json b/commands/rebase/rebase.cmd.json new file mode 100644 index 0000000..3d1c1c8 --- /dev/null +++ b/commands/rebase/rebase.cmd.json @@ -0,0 +1,7 @@ +{ + "$schema": "../../node_modules/command-bot/src/schema/schema.cmd.json", + "command": { + "description": "create a merge commit from the target branch into the PR. Read more: https://github.com/paritytech/parity-processbot/", + "configuration": {"gitlab": {"job": {"tags": [""]}}} + } +} diff --git a/commands/sample/sample.cmd.json b/commands/sample/sample.cmd.json index 96d540c..51824bc 100644 --- a/commands/sample/sample.cmd.json +++ b/commands/sample/sample.cmd.json @@ -1,6 +1,7 @@ { "$schema": "../../node_modules/command-bot/src/schema/schema.cmd.json", "command": { + "excluded": true, "configuration": { "gitlab": { "job": { @@ -16,7 +17,8 @@ "args": { "input": { "label": "Pass your echo string", - "type_rule": ".*" + "type_rule": ".*", + "example": "bla" } } } diff --git a/yarn.lock b/yarn.lock index 74f3721..095f0c3 100644 --- a/yarn.lock +++ b/yarn.lock @@ -155,6 +155,11 @@ resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.20.5.tgz#7f3c7335fe417665d929f34ae5dceae4c04015e8" integrity sha512-r27t/cy/m9uKLXQNWWebeCUHgnAZq0CpG1OwKRxzJMP1vpSU4bSIK2hq+/cp0bQxetkXx38n09rNu8jVkcK/zA== +"@babel/parser@^7.6.0", "@babel/parser@^7.9.6": + version "7.20.13" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.20.13.tgz#ddf1eb5a813588d2fb1692b70c6fce75b945c088" + integrity sha512-gFDLKMfpiXCsjt4za2JA9oTMn70CeseCehb11kRZgvd7+F67Hih3OHOK24cRrWECJ/ljfPGac6ygXAs/C8kIvw== + "@babel/template@^7.18.10": version "7.18.10" resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.18.10.tgz#6f9134835970d1dbf0835c0d100c9f38de0c5e71" @@ -189,6 +194,15 @@ "@babel/helper-validator-identifier" "^7.19.1" to-fast-properties "^2.0.0" +"@babel/types@^7.6.1", "@babel/types@^7.9.6": + version "7.20.7" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.20.7.tgz#54ec75e252318423fc07fb644dc6a58a64c09b7f" + integrity sha512-69OnhBxSSgK0OzTJai4kyPDiKTIe3j+ctaHdIGVbRahTLAT7L3R9oeXHC2aVSuGYt3cVnoAMDmOCgJ2yaiLMvg== + dependencies: + "@babel/helper-string-parser" "^7.19.4" + "@babel/helper-validator-identifier" "^7.19.1" + to-fast-properties "^2.0.0" + "@cspotcode/source-map-support@^0.8.0": version "0.8.1" resolved "https://registry.yarnpkg.com/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz#00629c35a688e05a88b1cda684fb9d5e73f000a1" @@ -295,6 +309,13 @@ "@jridgewell/resolve-uri" "3.1.0" "@jridgewell/sourcemap-codec" "1.4.14" +"@matrix-org/matrix-sdk-crypto-nodejs@^0.1.0-beta.3": + version "0.1.0-beta.3" + resolved "https://registry.yarnpkg.com/@matrix-org/matrix-sdk-crypto-nodejs/-/matrix-sdk-crypto-nodejs-0.1.0-beta.3.tgz#a07225dd180d9d227c24ba62bba439939446d113" + integrity sha512-jHFn6xBeNqfsY5gX60akbss7iFBHZwXycJWMw58Mjz08OwOi7AbTxeS9I2Pa4jX9/M2iinskmGZbzpqOT2fM3A== + dependencies: + node-downloader-helper "^2.1.1" + "@nodelib/fs.scandir@2.1.5": version "2.1.5" resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz#7619c2eb21b25483f6d167548b4cfd5a7488c3d5" @@ -688,6 +709,14 @@ readable-stream "^3.6.0" split2 "^4.0.0" +"@selderee/plugin-htmlparser2@^0.6.0": + version "0.6.0" + resolved "https://registry.yarnpkg.com/@selderee/plugin-htmlparser2/-/plugin-htmlparser2-0.6.0.tgz#27e994afd1c2cb647ceb5406a185a5574188069d" + integrity sha512-J3jpy002TyBjd4N/p6s+s90eX42H2eRhK3SbsZuvTDv977/E8p2U3zikdiehyJja66do7FlxLomZLPlvl2/xaA== + dependencies: + domhandler "^4.2.0" + selderee "^0.6.0" + "@sentry/core@6.19.7": version "6.19.7" resolved "https://registry.yarnpkg.com/@sentry/core/-/core-6.19.7.tgz#156aaa56dd7fad8c89c145be6ad7a4f7209f9785" @@ -810,7 +839,26 @@ "@types/qs" "*" "@types/range-parser" "*" -"@types/express@^4.17.7", "@types/express@^4.17.9": +"@types/express-serve-static-core@^4.17.31": + version "4.17.33" + resolved "https://registry.yarnpkg.com/@types/express-serve-static-core/-/express-serve-static-core-4.17.33.tgz#de35d30a9d637dc1450ad18dd583d75d5733d543" + integrity sha512-TPBqmR/HRYI3eC2E5hmiivIzv+bidAfXofM+sbonAGvyDhySGw9/PQZFt2BLOrjUUR++4eJVpx6KnLQK1Fk9tA== + dependencies: + "@types/node" "*" + "@types/qs" "*" + "@types/range-parser" "*" + +"@types/express@^4.17.13": + version "4.17.16" + resolved "https://registry.yarnpkg.com/@types/express/-/express-4.17.16.tgz#986caf0b4b850611254505355daa24e1b8323de8" + integrity sha512-LkKpqRZ7zqXJuvoELakaFYuETHjZkSol8EV6cNnyishutDBCCdv6+dsKPbKkCcIk57qRphOLY5sEgClw1bO3gA== + dependencies: + "@types/body-parser" "*" + "@types/express-serve-static-core" "^4.17.31" + "@types/qs" "*" + "@types/serve-static" "*" + +"@types/express@^4.17.9": version "4.17.14" resolved "https://registry.yarnpkg.com/@types/express/-/express-4.17.14.tgz#143ea0557249bc1b3b54f15db4c81c3d4eb3569c" integrity sha512-TEbt+vaPFQ+xpxFLFssxUDXj5cWCxZJjIcB7Yg0k0GMHGtgtQgpvx/MUQUeAkNbA9AAGrwkAsoeItdTgS7FMyg== @@ -908,6 +956,11 @@ "@types/pino-std-serializers" "*" sonic-boom "^2.1.0" +"@types/pug@^2.0.6": + version "2.0.6" + resolved "https://registry.yarnpkg.com/@types/pug/-/pug-2.0.6.tgz#f830323c88172e66826d0bde413498b61054b5a6" + integrity sha512-SnHmG9wN1UVmagJOnyo/qkk0Z7gejYxOYYmaAwr5u2yFYfsupN3sg10kyzN8Hep/2zbHxCnsumxOoRIRMBwKCg== + "@types/qs@*": version "6.9.7" resolved "https://registry.yarnpkg.com/@types/qs/-/qs-6.9.7.tgz#63bb7d067db107cc1e457c303bc25d511febf6cb" @@ -1051,6 +1104,11 @@ acorn-walk@^8.1.1: resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-8.2.0.tgz#741210f2e2426454508853a2f44d0ab83b7f69c1" integrity sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA== +acorn@^7.1.1: + version "7.4.1" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.4.1.tgz#feaed255973d2e77555b83dbc08851a6c63520fa" + integrity sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A== + acorn@^8.4.1, acorn@^8.8.0: version "8.8.1" resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.8.1.tgz#0a3f9cbecc4ec3bea6f0a80b66ae8dd2da250b73" @@ -1081,6 +1139,11 @@ ajv@^6.10.0, ajv@^6.12.3, ajv@^6.12.4: json-schema-traverse "^0.4.1" uri-js "^4.2.2" +another-json@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/another-json/-/another-json-0.2.0.tgz#b5f4019c973b6dd5c6506a2d93469cb6d32aeedc" + integrity sha512-/Ndrl68UQLhnCdsAzEXLMFuOR546o2qbYRqCglaNHbjXrwG1ayTcdwr3zkSGOGtGXDyR5X9nCFfnyG2AFJIsqg== + ansi-regex@^5.0.1: version "5.0.1" resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304" @@ -1158,6 +1221,11 @@ array.prototype.flat@^1.2.5: es-abstract "^1.20.4" es-shim-unscopables "^1.0.0" +asap@~2.0.3: + version "2.0.6" + resolved "https://registry.yarnpkg.com/asap/-/asap-2.0.6.tgz#e50347611d7e690943208bbdafebcbc2fb866d46" + integrity sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA== + asn1@~0.2.3: version "0.2.6" resolved "https://registry.yarnpkg.com/asn1/-/asn1-0.2.6.tgz#0d3a7bb6e64e02a90c0303b31f292868ea09a08d" @@ -1165,11 +1233,21 @@ asn1@~0.2.3: dependencies: safer-buffer "~2.1.0" +assert-never@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/assert-never/-/assert-never-1.2.1.tgz#11f0e363bf146205fb08193b5c7b90f4d1cf44fe" + integrity sha512-TaTivMB6pYI1kXwrFlEhLeGfOqoDNdTxjCdwRfFFkEA30Eu+k48W34nlok2EYWJfFFzqaEmichdNM7th6M5HNw== + assert-plus@1.0.0, assert-plus@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-1.0.0.tgz#f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525" integrity sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw== +async-lock@^1.3.2: + version "1.4.0" + resolved "https://registry.yarnpkg.com/async-lock/-/async-lock-1.4.0.tgz#c8b6630eff68fbbdd8a5b6eb763dac3bfbb8bf02" + integrity sha512-coglx5yIWuetakm3/1dsX9hxCNox22h7+V80RQOu2XUUMidtArxKoZoOtHUPuR84SycKTXzgGzAUR5hJxujyJQ== + async-mutex@0.3.2, async-mutex@^0.3.2: version "0.3.2" resolved "https://registry.yarnpkg.com/async-mutex/-/async-mutex-0.3.2.tgz#1485eda5bda1b0ec7c8df1ac2e815757ad1831df" @@ -1197,6 +1275,13 @@ aws4@^1.8.0: resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.11.0.tgz#d61f46d83b2519250e2784daf5b09479a8b41c59" integrity sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA== +babel-walk@3.0.0-canary-5: + version "3.0.0-canary-5" + resolved "https://registry.yarnpkg.com/babel-walk/-/babel-walk-3.0.0-canary-5.tgz#f66ecd7298357aee44955f235a6ef54219104b11" + integrity sha512-GAwkz0AihzY5bkwIY5QDR+LvsRQgB/B+1foMPvi0FZPMl5fjD7ICiznUiBdLYMH1QYe6vqu4gWYytZOccLouFw== + dependencies: + "@babel/types" "^7.9.6" + balanced-match@^1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" @@ -1351,7 +1436,7 @@ chalk@2.4.2, chalk@^2.0.0: escape-string-regexp "^1.0.5" supports-color "^5.3.0" -chalk@^4.0.0, chalk@^4.1.0: +chalk@^4, chalk@^4.0.0: version "4.1.2" resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01" integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== @@ -1359,6 +1444,13 @@ chalk@^4.0.0, chalk@^4.1.0: ansi-styles "^4.1.0" supports-color "^7.1.0" +character-parser@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/character-parser/-/character-parser-2.2.0.tgz#c7ce28f36d4bcd9744e5ffc2c5fcde1c73261fc0" + integrity sha512-+UqJQjFEFaTAs3bNsF2j2kEN1baG/zghZbdqoYEDxGZtJo9LBzl1A+m0D4n3qKx8N2FNv8/Xp6yV9mQmBuptaw== + dependencies: + is-regex "^1.0.3" + clean-stack@^2.0.0: version "2.2.0" resolved "https://registry.yarnpkg.com/clean-stack/-/clean-stack-2.2.0.tgz#ee8472dbb129e727b31e8a10a427dee9dfe4008b" @@ -1426,23 +1518,29 @@ combined-stream@^1.0.6, combined-stream@^1.0.8, combined-stream@~1.0.6: "@octokit/rest" "19.0.3" "@octokit/webhooks" "10.0.0" "@types/node-fetch" "^2.6.2" + "@types/pug" "^2.0.6" async-mutex "0.3.2" date-fns "2.28.0" glob "^8.0.3" joi "^17.6.0" level-rocksdb "5.0.0" lodash "4.17.21" - matrix-bot-sdk "0.5.19" + matrix-bot-sdk "0.6.3" node-fetch "^2.6.7" - opstooling-js "https://github.com/paritytech/opstooling-js#v0.0.14" - opstooling-js-style "https://github.com/paritytech/opstooling-js-style.git#^v1.0.0" - probot "^12.2.5" + opstooling-js "https://github.com/paritytech/opstooling-js#v0.0.16" + opstooling-js-style "https://github.com/paritytech/opstooling-js-style.git#c298d0f732d93712e4397fd53baa3317a3022c8c" + probot "^12.2.8" + pug "^3.0.2" stoppable "1.1.0" ts-node "^10.7.0" - tsconfig-paths "^4.1.1" yaml "^2.0.1" yargs "^17.5.0" +commander@^2.19.0: + version "2.20.3" + resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" + integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== + commander@^6.2.0: version "6.2.1" resolved "https://registry.yarnpkg.com/commander/-/commander-6.2.1.tgz#0792eb682dfbc325999bb2b84fddddba110ac73c" @@ -1458,6 +1556,14 @@ concat-map@0.0.1: resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" integrity sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg== +constantinople@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/constantinople/-/constantinople-4.0.1.tgz#0def113fa0e4dc8de83331a5cf79c8b325213151" + integrity sha512-vCrqcSIq4//Gx74TXXCGnHpulY1dskqLTFGDmhrGxzeXL8lF8kvXv6mpNWlJj1uD4DW23D4ljAqbY4RRaaUZIw== + dependencies: + "@babel/parser" "^7.6.0" + "@babel/types" "^7.6.1" + content-disposition@0.5.4: version "0.5.4" resolved "https://registry.yarnpkg.com/content-disposition/-/content-disposition-0.5.4.tgz#8b82b4efac82512a02bb0b1dcec9d2c5e8eb5bfe" @@ -1618,6 +1724,11 @@ dir-glob@^3.0.1: dependencies: path-type "^4.0.0" +discontinuous-range@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/discontinuous-range/-/discontinuous-range-1.0.0.tgz#e38331f0844bba49b9a9cb71c771585aab1bc65a" + integrity sha512-c68LpLbO+7kP/b1Hr1qs8/BJ09F5khZGTxqxZuhzxpmwJKOgRFHJWIb9/KmqnqHhLdO55aOxFH/EGBvUQbL/RQ== + doctrine@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-2.1.0.tgz#5cd01fc101621b42c4cd7f5d1a66243716d3f39d" @@ -1632,6 +1743,11 @@ doctrine@^3.0.0: dependencies: esutils "^2.0.2" +doctypes@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/doctypes/-/doctypes-1.1.0.tgz#ea80b106a87538774e8a3a4a5afe293de489e0a9" + integrity sha512-LLBi6pEqS6Do3EKQ3J0NqHWV5hhb78Pi8vvESYwyOy2c31ZEZVdtitdzsQsKb7878PEERhzUk0ftqGhG6Mz+pQ== + dom-serializer@^1.0.1: version "1.4.1" resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-1.4.1.tgz#de5d41b1aea290215dc45a6dae8adcf1d32e2d30" @@ -1641,18 +1757,20 @@ dom-serializer@^1.0.1: domhandler "^4.2.0" entities "^2.0.0" -domelementtype@^2.0.1, domelementtype@^2.2.0: +dom-serializer@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-2.0.0.tgz#e41b802e1eedf9f6cae183ce5e622d789d7d8e53" + integrity sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg== + dependencies: + domelementtype "^2.3.0" + domhandler "^5.0.2" + entities "^4.2.0" + +domelementtype@^2.0.1, domelementtype@^2.2.0, domelementtype@^2.3.0: version "2.3.0" resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-2.3.0.tgz#5c45e8e869952626331d7aab326d01daf65d589d" integrity sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw== -domhandler@^3.0.0: - version "3.3.0" - resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-3.3.0.tgz#6db7ea46e4617eb15cf875df68b2b8524ce0037a" - integrity sha512-J1C5rIANUbuYK+FuFL98650rihynUOEzRLxW+90bKZRWB6A1X1Tf82GxR1qAWLyfNPRvjqfip3Q5tdYlmAa9lA== - dependencies: - domelementtype "^2.0.1" - domhandler@^4.0.0, domhandler@^4.2.0: version "4.3.1" resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-4.3.1.tgz#8d792033416f59d68bc03a5aa7b018c1ca89279c" @@ -1660,7 +1778,14 @@ domhandler@^4.0.0, domhandler@^4.2.0: dependencies: domelementtype "^2.2.0" -domutils@^2.0.0, domutils@^2.5.2: +domhandler@^5.0.1, domhandler@^5.0.2: + version "5.0.3" + resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-5.0.3.tgz#cc385f7f751f1d1fc650c21374804254538c7d31" + integrity sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w== + dependencies: + domelementtype "^2.3.0" + +domutils@^2.5.2: version "2.8.0" resolved "https://registry.yarnpkg.com/domutils/-/domutils-2.8.0.tgz#4437def5db6e2d1f5d6ee859bd95ca7d02048135" integrity sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A== @@ -1669,6 +1794,15 @@ domutils@^2.0.0, domutils@^2.5.2: domelementtype "^2.2.0" domhandler "^4.2.0" +domutils@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/domutils/-/domutils-3.0.1.tgz#696b3875238338cb186b6c0612bd4901c89a4f1c" + integrity sha512-z08c1l761iKhDFtfXO04C7kTdPBLi41zwOZl00WS8b5eiaebNpY00HKbztwBq+e3vyqWNwWF3mP9YLUeqIrF+Q== + dependencies: + dom-serializer "^2.0.0" + domelementtype "^2.3.0" + domhandler "^5.0.1" + dotenv@^8.2.0: version "8.6.0" resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-8.6.0.tgz#061af664d19f7f4d8fc6e4ff9b584ce237adcb8b" @@ -1731,6 +1865,11 @@ entities@^2.0.0: resolved "https://registry.yarnpkg.com/entities/-/entities-2.2.0.tgz#098dc90ebb83d8dffa089d55256b351d34c4da55" integrity sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A== +entities@^4.2.0, entities@^4.3.0: + version "4.4.0" + resolved "https://registry.yarnpkg.com/entities/-/entities-4.4.0.tgz#97bdaba170339446495e653cfd2db78962900174" + integrity sha512-oYp7156SP8LkeGD0GF85ad1X9Ai79WtRsZ2gxJqtBuzH+98YUV6jkHEKlZkMbcrjJjIVJNIDP/3WL9wQkoPbWA== + error-ex@^1.3.1: version "1.3.2" resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf" @@ -2029,7 +2168,7 @@ express-handlebars@^6.0.3: graceful-fs "^4.2.10" handlebars "^4.7.7" -express@^4.17.1: +express@^4.17.1, express@^4.18.1: version "4.18.2" resolved "https://registry.yarnpkg.com/express/-/express-4.18.2.tgz#3fabe08296e930c796c19e3c516979386ba9fd59" integrity sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ== @@ -2456,33 +2595,24 @@ help-me@^4.0.1: glob "^8.0.0" readable-stream "^3.6.0" -html-to-text@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/html-to-text/-/html-to-text-6.0.0.tgz#8b48adb1b781a8378f374c5bb481864a169f59f4" - integrity sha512-r0KNC5aqCAItsjlgtirW6RW25c92Ee3ybQj8z//4Sl4suE3HIPqM4deGpYCUJULLjtVPEP1+Ma+1ZeX1iMsCiA== +html-to-text@^8.2.0: + version "8.2.1" + resolved "https://registry.yarnpkg.com/html-to-text/-/html-to-text-8.2.1.tgz#4a75b8a1b646149bd71c50527adb568990bf459b" + integrity sha512-aN/3JvAk8qFsWVeE9InWAWueLXrbkoVZy0TkzaGhoRBC2gCFEeRLDDJN3/ijIGHohy6H+SZzUQWN/hcYtaPK8w== dependencies: + "@selderee/plugin-htmlparser2" "^0.6.0" deepmerge "^4.2.2" he "^1.2.0" - htmlparser2 "^4.1.0" - lodash "^4.17.20" - minimist "^1.2.5" + htmlparser2 "^6.1.0" + minimist "^1.2.6" + selderee "^0.6.0" htmlencode@^0.0.4: version "0.0.4" resolved "https://registry.yarnpkg.com/htmlencode/-/htmlencode-0.0.4.tgz#f7e2d6afbe18a87a78e63ba3308e753766740e3f" integrity sha512-0uDvNVpzj/E2TfvLLyyXhKBRvF1y84aZsyRxRXFsQobnHaL4pcaXk+Y9cnFlvnxrBLeXDNq/VJBD+ngdBgQG1w== -htmlparser2@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-4.1.0.tgz#9a4ef161f2e4625ebf7dfbe6c0a2f52d18a59e78" - integrity sha512-4zDq1a1zhE4gQso/c5LP1OtrhYTncXNSpvJYtWJBtXAETPlMfi3IFNjGuQbYLuVY4ZR0QMqRVvo4Pdy9KLyP8Q== - dependencies: - domelementtype "^2.0.1" - domhandler "^3.0.0" - domutils "^2.0.0" - entities "^2.0.0" - -htmlparser2@^6.0.0: +htmlparser2@^6.1.0: version "6.1.0" resolved "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-6.1.0.tgz#c4d762b6c3371a05dbe65e94ae43a9f845fb8fb7" integrity sha512-gyyPk6rgonLFEDGoeRgQNaEUvdJ4ktTmmUh/h2t7s+M8oPpIPxgNACWa+6ESR57kXstwqPiCut0V8NRpcwgU7A== @@ -2492,6 +2622,16 @@ htmlparser2@^6.0.0: domutils "^2.5.2" entities "^2.0.0" +htmlparser2@^8.0.0: + version "8.0.1" + resolved "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-8.0.1.tgz#abaa985474fcefe269bc761a779b544d7196d010" + integrity sha512-4lVbmc1diZC7GUJQtRQ5yBAeUCL1exyMwmForWkRLnwyzWBFxN633SALPMGYaWZvKe9j1pRZJpauvmxENSp/EA== + dependencies: + domelementtype "^2.3.0" + domhandler "^5.0.2" + domutils "^3.0.1" + entities "^4.3.0" + http-errors@2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-2.0.0.tgz#b7774a1486ef73cf7667ac9ae0858c012c57b9d3" @@ -2648,6 +2788,14 @@ is-date-object@^1.0.1: dependencies: has-tostringtag "^1.0.0" +is-expression@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/is-expression/-/is-expression-4.0.0.tgz#c33155962abf21d0afd2552514d67d2ec16fd2ab" + integrity sha512-zMIXX63sxzG3XrkHkrAPvm/OVZVSCPNkwMHU8oTX7/U3AL78I0QXCEICXUM13BIa8TYGZ68PiTKfQz3yaTNr4A== + dependencies: + acorn "^7.1.1" + object-assign "^4.1.1" + is-extglob@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" @@ -2692,12 +2840,12 @@ is-plain-object@^5.0.0: resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-5.0.0.tgz#4427f50ab3429e9025ea7d52e9043a9ef4159344" integrity sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q== -is-promise@^2.1.0: +is-promise@^2.0.0, is-promise@^2.1.0: version "2.2.2" resolved "https://registry.yarnpkg.com/is-promise/-/is-promise-2.2.2.tgz#39ab959ccbf9a774cf079f7b40c7a26f763135f1" integrity sha512-+lP4/6lKUBfQjZ2pdxThZvLUAafmZb8OAxFb8XXtiQmS35INgr85hdOGoEs124ez1FCnZJt6jau/T+alh58QFQ== -is-regex@^1.1.4: +is-regex@^1.0.3, is-regex@^1.1.4: version "1.1.4" resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.1.4.tgz#eef5663cd59fa4c0ae339505323df6854bb15958" integrity sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg== @@ -2779,6 +2927,11 @@ js-sdsl@^4.1.4: resolved "https://registry.yarnpkg.com/js-sdsl/-/js-sdsl-4.2.0.tgz#278e98b7bea589b8baaf048c20aeb19eb7ad09d0" integrity sha512-dyBIzQBDkCqCu+0upx25Y2jGdbTGxE9fshMsCdK0ViOongpV+n5tXRcZY9v7CaVQ79AGS9KA1KHtojxiM7aXSQ== +js-stringify@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/js-stringify/-/js-stringify-1.0.2.tgz#1736fddfd9724f28a3682adc6230ae7e4e9679db" + integrity sha512-rtS5ATOo2Q5k1G+DADISilDA6lv79zIiwFd6CcjuIxGKLFm5C+RLImRscVap9k55i+MOZwgliw+NejvkLuGD5g== + js-tokens@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" @@ -2872,6 +3025,14 @@ jsprim@^1.2.2: json-schema "0.4.0" verror "1.10.0" +jstransformer@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/jstransformer/-/jstransformer-1.0.0.tgz#ed8bf0921e2f3f1ed4d5c1a44f68709ed24722c3" + integrity sha512-C9YK3Rf8q6VAPDCCU9fnqo3mAfOH6vUGnMcP4AQAYIEpWtfGLpwOTmZ+igtdK5y+VvI2n3CyYSzy4Qh34eq24A== + dependencies: + is-promise "^2.0.0" + promise "^7.0.1" + jwa@^1.4.1: version "1.4.1" resolved "https://registry.yarnpkg.com/jwa/-/jwa-1.4.1.tgz#743c32985cb9e98655530d53641b66c8645b039a" @@ -3048,12 +3209,12 @@ lodash.once@^4.0.0: resolved "https://registry.yarnpkg.com/lodash.once/-/lodash.once-4.1.1.tgz#0dd3971213c7c56df880977d504c88fb471a97ac" integrity sha512-Sb487aTOCr9drQVL8pIxOzVhafOjZN9UU54hiN8PU3uAiSV7lx1yYNpbNmex2PK6dSJoNTSJUUswT651yww3Mg== -lodash@4, lodash@4.17.21, lodash@^4.17.19, lodash@^4.17.20, lodash@^4.17.21: +lodash@4, lodash@4.17.21, lodash@^4.17.19, lodash@^4.17.21: version "4.17.21" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== -lowdb@^1.0.0: +lowdb@^1: version "1.0.0" resolved "https://registry.yarnpkg.com/lowdb/-/lowdb-1.0.0.tgz#5243be6b22786ccce30e50c9a33eac36b20c8064" integrity sha512-2+x8esE/Wb9SQ1F9IHaYWfsC9FIecLOPrK4g17FGEayjUWH172H6nwicRovGvSE2CPZouc2MCIqCI7h9d+GftQ== @@ -3071,6 +3232,11 @@ lru-cache@^6.0.0: dependencies: yallist "^4.0.0" +lru-cache@^7.10.1: + version "7.14.1" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-7.14.1.tgz#8da8d2f5f59827edb388e63e459ac23d6d408fea" + integrity sha512-ysxwsnTKdAx96aTRdhDOCQfDgbHnt8SK0KY8SEjO0wHinhWOFTESbjVCMPbU1uGXg/ch4lifqx0wfjOawU2+WA== + lru_map@^0.3.3: version "0.3.3" resolved "https://registry.yarnpkg.com/lru_map/-/lru_map-0.3.3.tgz#b5c8351b9464cbd750335a79650a0ec0e56118dd" @@ -3081,25 +3247,28 @@ make-error@^1.1.1: resolved "https://registry.yarnpkg.com/make-error/-/make-error-1.3.6.tgz#2eb2e37ea9b67c4891f684a1394799af484cf7a2" integrity sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw== -matrix-bot-sdk@0.5.19: - version "0.5.19" - resolved "https://registry.yarnpkg.com/matrix-bot-sdk/-/matrix-bot-sdk-0.5.19.tgz#6ce13359ab53ea0af9dc3ebcbe288c5f6d9c02c6" - integrity sha512-RIPyvQPkOVp2yTKeDgp5rcn6z/DiKdHb6E8c69K+utai8ypRGtfDRj0PGqP+1XzqC9Wb1OFrESCUB5t0ffdC9g== - dependencies: - "@types/express" "^4.17.7" - chalk "^4.1.0" - express "^4.17.1" +matrix-bot-sdk@0.6.3: + version "0.6.3" + resolved "https://registry.yarnpkg.com/matrix-bot-sdk/-/matrix-bot-sdk-0.6.3.tgz#7ed72a314cbf2cf7b952affdb3681ccf7d1dfa58" + integrity sha512-YXVML3VaRWa6KUtx2z2WQ6819e20ssruw7ytNZAB+c2X7GWvZgMV41PoZ+jNFJj5H2OPIuwVxJF5aYBy49Xm6A== + dependencies: + "@matrix-org/matrix-sdk-crypto-nodejs" "^0.1.0-beta.3" + "@types/express" "^4.17.13" + another-json "^0.2.0" + async-lock "^1.3.2" + chalk "^4" + express "^4.18.1" glob-to-regexp "^0.4.1" hash.js "^1.1.7" - html-to-text "^6.0.0" + html-to-text "^8.2.0" htmlencode "^0.0.4" - lowdb "^1.0.0" - lru-cache "^6.0.0" + lowdb "^1" + lru-cache "^7.10.1" mkdirp "^1.0.4" morgan "^1.10.0" request "^2.88.2" request-promise "^4.2.6" - sanitize-html "^2.3.2" + sanitize-html "^2.8.0" media-typer@0.3.0: version "0.3.0" @@ -3175,6 +3344,11 @@ mkdirp@^1.0.4: resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-1.0.4.tgz#3eb5ed62622756d79a5f0e2a221dfebad75c2f7e" integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw== +moo@^0.5.0, moo@^0.5.1: + version "0.5.2" + resolved "https://registry.yarnpkg.com/moo/-/moo-0.5.2.tgz#f9fe82473bc7c184b0d32e2215d3f6e67278733c" + integrity sha512-iSAJLHYKnX41mKcJKjqvnAN9sf0LMDTXDEvFv+ffuRR9a1MIuXLjMNL6EsnDHSkKLTWNqQQ5uo61P4EbU4NU+Q== + morgan@^1.10.0: version "1.10.0" resolved "https://registry.yarnpkg.com/morgan/-/morgan-1.10.0.tgz#091778abc1fc47cd3509824653dae1faab6b17d7" @@ -3226,6 +3400,16 @@ natural-compare@^1.4.0: resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" integrity sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw== +nearley@^2.20.1: + version "2.20.1" + resolved "https://registry.yarnpkg.com/nearley/-/nearley-2.20.1.tgz#246cd33eff0d012faf197ff6774d7ac78acdd474" + integrity sha512-+Mc8UaAebFzgV+KpI5n7DasuuQCHA89dmwm7JXw3TV43ukfNQ9DnBH3Mdb2g/I4Fdxc26pwimBWvjIw0UAILSQ== + dependencies: + commander "^2.19.0" + moo "^0.5.0" + railroad-diagrams "^1.0.0" + randexp "0.4.6" + negotiator@0.6.3: version "0.6.3" resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.3.tgz#58e323a72fedc0d6f9cd4d31fe49f51479590ccd" @@ -3236,6 +3420,11 @@ neo-async@^2.6.0: resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.2.tgz#b4aafb93e3aeb2d8174ca53cf163ab7d7308305f" integrity sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw== +node-downloader-helper@^2.1.1: + version "2.1.6" + resolved "https://registry.yarnpkg.com/node-downloader-helper/-/node-downloader-helper-2.1.6.tgz#f73ac458e3ac8c21afd0b952a994eab99c64b879" + integrity sha512-VkOvAXIopI3xMuM/MC5UL7NqqnizQ/9QXZt28jR8FPZ6fHLQm4xe4+YXJ9FqsWwLho5BLXrF51nfOQ0QcohRkQ== + node-fetch@^2.6.7: version "2.6.7" resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.7.tgz#24de9fba827e3b4ae44dc8b20256a379160052ad" @@ -3258,6 +3447,11 @@ oauth-sign@~0.9.0: resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.9.0.tgz#47a7b016baa68b5fa0ecf3dee08a85c679ac6455" integrity sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ== +object-assign@^4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" + integrity sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg== + object-inspect@^1.12.2, object-inspect@^1.9.0: version "1.12.2" resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.12.2.tgz#c0641f26394532f28ab8d796ab954e43c009a8ea" @@ -3328,9 +3522,9 @@ once@^1.3.0, once@^1.3.1, once@^1.4.0: dependencies: wrappy "1" -"opstooling-js-style@https://github.com/paritytech/opstooling-js-style.git#^v1.0.0": +"opstooling-js-style@https://github.com/paritytech/opstooling-js-style.git#c298d0f732d93712e4397fd53baa3317a3022c8c": version "0.0.0" - resolved "https://github.com/paritytech/opstooling-js-style.git#40d8a53227e1d5b5e662ea3f3d12cc0c912e3d48" + resolved "https://github.com/paritytech/opstooling-js-style.git#c298d0f732d93712e4397fd53baa3317a3022c8c" dependencies: "@typescript-eslint/eslint-plugin" "^5.21.0" "@typescript-eslint/parser" "^5.21.0" @@ -3345,9 +3539,9 @@ once@^1.3.0, once@^1.3.1, once@^1.4.0: prettier "^2.6.2" prettier-plugin-compactify "^0.1.6" -"opstooling-js@https://github.com/paritytech/opstooling-js#v0.0.14": +"opstooling-js@https://github.com/paritytech/opstooling-js#v0.0.16": version "0.0.0" - resolved "https://github.com/paritytech/opstooling-js#de905f0bd4693087eec7b7b312e10bf95b251caf" + resolved "https://github.com/paritytech/opstooling-js#53461cd76eb48dcf72b136c5ae4aeedd320043c1" dependencies: "@octokit/rest" "^18.12.0" async-mutex "^0.3.2" @@ -3430,6 +3624,14 @@ parse-srcset@^1.0.2: resolved "https://registry.yarnpkg.com/parse-srcset/-/parse-srcset-1.0.2.tgz#f2bd221f6cc970a938d88556abc589caaaa2bde1" integrity sha512-/2qh0lav6CmI15FzA3i/2Bzk2zCgQhGMkvhOhKNcBVQ1ldgpbfiNTVslmooUmWJcADi1f1kIeynbDRVzNlfR6Q== +parseley@^0.7.0: + version "0.7.0" + resolved "https://registry.yarnpkg.com/parseley/-/parseley-0.7.0.tgz#9949e3a0ed05c5072adb04f013c2810cf49171a8" + integrity sha512-xyOytsdDu077M3/46Am+2cGXEKM9U9QclBDv7fimY7e+BBlxh2JcBp2mgNsmkyA9uvgyTjVzDi7cP1v4hcFxbw== + dependencies: + moo "^0.5.1" + nearley "^2.20.1" + parseurl@~1.3.3: version "1.3.3" resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.3.tgz#9da19e7bee8d12dff0513ed5b76957793bc2e8d4" @@ -3629,7 +3831,7 @@ prettier@^2.7.1: resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.8.1.tgz#4e1fd11c34e2421bc1da9aea9bd8127cd0a35efc" integrity sha512-lqGoSJBQNJidqCHE80vqZJHWHRFoNYsSpP9AjFhlhi9ODCJA541svILes/+/1GM3VaL/abZi7cpFzOpdR9UPKg== -probot@^12.2.5, probot@^12.2.8: +probot@^12.2.8: version "12.2.8" resolved "https://registry.yarnpkg.com/probot/-/probot-12.2.8.tgz#ac8bae43e557dfb89b5b3e5cc8579801cb509465" integrity sha512-O2WqJmgXUijAOTHaIBEW3jC5OU9Rq+eUg/AEBI5zkAUZaxzJMQvXvGvhVsdFE3Zt9Z3ceGN8Z2cgN+NTItSrCQ== @@ -3678,6 +3880,13 @@ process@^0.11.10: resolved "https://registry.yarnpkg.com/process/-/process-0.11.10.tgz#7332300e840161bda3e69a1d1d91a7d4bc16f182" integrity sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A== +promise@^7.0.1: + version "7.3.1" + resolved "https://registry.yarnpkg.com/promise/-/promise-7.3.1.tgz#064b72602b18f90f29192b8b1bc418ffd1ebd3bf" + integrity sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg== + dependencies: + asap "~2.0.3" + proxy-addr@~2.0.7: version "2.0.7" resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-2.0.7.tgz#f19fe69ceab311eeb94b42e70e8c2070f9ba1025" @@ -3691,6 +3900,109 @@ psl@^1.1.28: resolved "https://registry.yarnpkg.com/psl/-/psl-1.9.0.tgz#d0df2a137f00794565fcaf3b2c00cd09f8d5a5a7" integrity sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag== +pug-attrs@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/pug-attrs/-/pug-attrs-3.0.0.tgz#b10451e0348165e31fad1cc23ebddd9dc7347c41" + integrity sha512-azINV9dUtzPMFQktvTXciNAfAuVh/L/JCl0vtPCwvOA21uZrC08K/UnmrL+SXGEVc1FwzjW62+xw5S/uaLj6cA== + dependencies: + constantinople "^4.0.1" + js-stringify "^1.0.2" + pug-runtime "^3.0.0" + +pug-code-gen@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/pug-code-gen/-/pug-code-gen-3.0.2.tgz#ad190f4943133bf186b60b80de483100e132e2ce" + integrity sha512-nJMhW16MbiGRiyR4miDTQMRWDgKplnHyeLvioEJYbk1RsPI3FuA3saEP8uwnTb2nTJEKBU90NFVWJBk4OU5qyg== + dependencies: + constantinople "^4.0.1" + doctypes "^1.1.0" + js-stringify "^1.0.2" + pug-attrs "^3.0.0" + pug-error "^2.0.0" + pug-runtime "^3.0.0" + void-elements "^3.1.0" + with "^7.0.0" + +pug-error@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/pug-error/-/pug-error-2.0.0.tgz#5c62173cb09c34de2a2ce04f17b8adfec74d8ca5" + integrity sha512-sjiUsi9M4RAGHktC1drQfCr5C5eriu24Lfbt4s+7SykztEOwVZtbFk1RRq0tzLxcMxMYTBR+zMQaG07J/btayQ== + +pug-filters@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/pug-filters/-/pug-filters-4.0.0.tgz#d3e49af5ba8472e9b7a66d980e707ce9d2cc9b5e" + integrity sha512-yeNFtq5Yxmfz0f9z2rMXGw/8/4i1cCFecw/Q7+D0V2DdtII5UvqE12VaZ2AY7ri6o5RNXiweGH79OCq+2RQU4A== + dependencies: + constantinople "^4.0.1" + jstransformer "1.0.0" + pug-error "^2.0.0" + pug-walk "^2.0.0" + resolve "^1.15.1" + +pug-lexer@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/pug-lexer/-/pug-lexer-5.0.1.tgz#ae44628c5bef9b190b665683b288ca9024b8b0d5" + integrity sha512-0I6C62+keXlZPZkOJeVam9aBLVP2EnbeDw3An+k0/QlqdwH6rv8284nko14Na7c0TtqtogfWXcRoFE4O4Ff20w== + dependencies: + character-parser "^2.2.0" + is-expression "^4.0.0" + pug-error "^2.0.0" + +pug-linker@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/pug-linker/-/pug-linker-4.0.0.tgz#12cbc0594fc5a3e06b9fc59e6f93c146962a7708" + integrity sha512-gjD1yzp0yxbQqnzBAdlhbgoJL5qIFJw78juN1NpTLt/mfPJ5VgC4BvkoD3G23qKzJtIIXBbcCt6FioLSFLOHdw== + dependencies: + pug-error "^2.0.0" + pug-walk "^2.0.0" + +pug-load@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/pug-load/-/pug-load-3.0.0.tgz#9fd9cda52202b08adb11d25681fb9f34bd41b662" + integrity sha512-OCjTEnhLWZBvS4zni/WUMjH2YSUosnsmjGBB1An7CsKQarYSWQ0GCVyd4eQPMFJqZ8w9xgs01QdiZXKVjk92EQ== + dependencies: + object-assign "^4.1.1" + pug-walk "^2.0.0" + +pug-parser@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/pug-parser/-/pug-parser-6.0.0.tgz#a8fdc035863a95b2c1dc5ebf4ecf80b4e76a1260" + integrity sha512-ukiYM/9cH6Cml+AOl5kETtM9NR3WulyVP2y4HOU45DyMim1IeP/OOiyEWRr6qk5I5klpsBnbuHpwKmTx6WURnw== + dependencies: + pug-error "^2.0.0" + token-stream "1.0.0" + +pug-runtime@^3.0.0, pug-runtime@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/pug-runtime/-/pug-runtime-3.0.1.tgz#f636976204723f35a8c5f6fad6acda2a191b83d7" + integrity sha512-L50zbvrQ35TkpHwv0G6aLSuueDRwc/97XdY8kL3tOT0FmhgG7UypU3VztfV/LATAvmUfYi4wNxSajhSAeNN+Kg== + +pug-strip-comments@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/pug-strip-comments/-/pug-strip-comments-2.0.0.tgz#f94b07fd6b495523330f490a7f554b4ff876303e" + integrity sha512-zo8DsDpH7eTkPHCXFeAk1xZXJbyoTfdPlNR0bK7rpOMuhBYb0f5qUVCO1xlsitYd3w5FQTK7zpNVKb3rZoUrrQ== + dependencies: + pug-error "^2.0.0" + +pug-walk@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/pug-walk/-/pug-walk-2.0.0.tgz#417aabc29232bb4499b5b5069a2b2d2a24d5f5fe" + integrity sha512-yYELe9Q5q9IQhuvqsZNwA5hfPkMJ8u92bQLIMcsMxf/VADjNtEYptU+inlufAFYcWdHlwNfZOEnOOQrZrcyJCQ== + +pug@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/pug/-/pug-3.0.2.tgz#f35c7107343454e43bc27ae0ff76c731b78ea535" + integrity sha512-bp0I/hiK1D1vChHh6EfDxtndHji55XP/ZJKwsRqrz6lRia6ZC2OZbdAymlxdVFwd1L70ebrVJw4/eZ79skrIaw== + dependencies: + pug-code-gen "^3.0.2" + pug-filters "^4.0.0" + pug-lexer "^5.0.1" + pug-linker "^4.0.0" + pug-load "^3.0.0" + pug-parser "^6.0.0" + pug-runtime "^3.0.1" + pug-strip-comments "^2.0.0" + pump@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/pump/-/pump-3.0.0.tgz#b4a2116815bde2f4e1ea602354e8c75565107a64" @@ -3731,6 +4043,19 @@ quick-format-unescaped@^4.0.3: resolved "https://registry.yarnpkg.com/quick-format-unescaped/-/quick-format-unescaped-4.0.4.tgz#93ef6dd8d3453cbc7970dd614fad4c5954d6b5a7" integrity sha512-tYC1Q1hgyRuHgloV/YXs2w15unPVh8qfu/qCTfhTYamaw7fyhumKa2yGpdSo87vY32rIclj+4fWYQXUMs9EHvg== +railroad-diagrams@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/railroad-diagrams/-/railroad-diagrams-1.0.0.tgz#eb7e6267548ddedfb899c1b90e57374559cddb7e" + integrity sha512-cz93DjNeLY0idrCNOH6PviZGRN9GJhsdm9hpn1YCS879fj4W+x5IFJhhkRZcwVgMmFF7R82UA/7Oh+R8lLZg6A== + +randexp@0.4.6: + version "0.4.6" + resolved "https://registry.yarnpkg.com/randexp/-/randexp-0.4.6.tgz#e986ad5e5e31dae13ddd6f7b3019aa7c87f60ca3" + integrity sha512-80WNmd9DA0tmZrw9qQa62GPPWfuXJknrmVmLcxvq4uZBdYqb1wYoKTmnlGUchvVWe0XiLupYkBoXVOxz3C8DYQ== + dependencies: + discontinuous-range "1.0.0" + ret "~0.1.10" + range-parser@~1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.1.tgz#3cf37023d199e1c24d1a55b84800c2f3e6468031" @@ -3849,7 +4174,7 @@ resolve-from@^4.0.0: resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6" integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g== -resolve@^1.19.0, resolve@^1.20.0, resolve@^1.22.0: +resolve@^1.15.1, resolve@^1.19.0, resolve@^1.20.0, resolve@^1.22.0: version "1.22.1" resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.1.tgz#27cb2ebb53f91abb49470a928bba7558066ac177" integrity sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw== @@ -3858,6 +4183,11 @@ resolve@^1.19.0, resolve@^1.20.0, resolve@^1.22.0: path-parse "^1.0.7" supports-preserve-symlinks-flag "^1.0.0" +ret@~0.1.10: + version "0.1.15" + resolved "https://registry.yarnpkg.com/ret/-/ret-0.1.15.tgz#b8a4825d5bdb1fc3f6f53c2bc33f81388681c7bc" + integrity sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg== + reusify@^1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76" @@ -3915,14 +4245,14 @@ safe-regex-test@^1.0.0: resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== -sanitize-html@^2.3.2: - version "2.7.3" - resolved "https://registry.yarnpkg.com/sanitize-html/-/sanitize-html-2.7.3.tgz#166c868444ee4f9fd7352ac8c63fa86c343fc2bd" - integrity sha512-jMaHG29ak4miiJ8wgqA1849iInqORgNv7SLfSw9LtfOhEUQ1C0YHKH73R+hgyufBW9ZFeJrb057k9hjlfBCVlw== +sanitize-html@^2.8.0: + version "2.9.0" + resolved "https://registry.yarnpkg.com/sanitize-html/-/sanitize-html-2.9.0.tgz#f4829557b0175df9059d90fe972d5e6facb8565c" + integrity sha512-KY1hpSbqFNcpoLf+nP7iStbP5JfQZ2Nd19ZEE7qFsQqRdp+sO5yX/e5+HoG9puFAcSTEpzQuihfKUltDcLlQjg== dependencies: deepmerge "^4.2.2" escape-string-regexp "^4.0.0" - htmlparser2 "^6.0.0" + htmlparser2 "^8.0.0" is-plain-object "^5.0.0" parse-srcset "^1.0.2" postcss "^8.3.11" @@ -3932,6 +4262,13 @@ secure-json-parse@^2.4.0: resolved "https://registry.yarnpkg.com/secure-json-parse/-/secure-json-parse-2.5.0.tgz#f929829df2adc7ccfb53703569894d051493a6ac" integrity sha512-ZQruFgZnIWH+WyO9t5rWt4ZEGqCKPwhiw+YbzTwpmT9elgLrLcfuyUiSnwwjUiVy9r4VM3urtbNF1xmEh9IL2w== +selderee@^0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/selderee/-/selderee-0.6.0.tgz#f3bee66cfebcb6f33df98e4a1df77388b42a96f7" + integrity sha512-ibqWGV5aChDvfVdqNYuaJP/HnVBhlRGSRrlbttmlMpHcLuTqqbMH36QkSs9GEgj5M88JDYLI8eyP94JaQ8xRlg== + dependencies: + parseley "^0.7.0" + semver@^5.6.0: version "5.7.1" resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" @@ -4192,6 +4529,11 @@ toidentifier@1.0.1: resolved "https://registry.yarnpkg.com/toidentifier/-/toidentifier-1.0.1.tgz#3be34321a88a820ed1bd80dfaa33e479fbb8dd35" integrity sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA== +token-stream@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/token-stream/-/token-stream-1.0.0.tgz#cc200eab2613f4166d27ff9afc7ca56d49df6eb4" + integrity sha512-VSsyNPPW74RpHwR8Fc21uubwHY7wMDeJLys2IX5zJNih+OnAnaifKHo+1LHT7DAdloQ7apeaaWg8l7qnf/TnEg== + tough-cookie@^2.3.3, tough-cookie@~2.5.0: version "2.5.0" resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.5.0.tgz#cd9fb2a0aa1d5a12b473bd9fb96fa3dcff65ade2" @@ -4234,15 +4576,6 @@ tsconfig-paths@^3.14.1: minimist "^1.2.6" strip-bom "^3.0.0" -tsconfig-paths@^4.1.1: - version "4.1.1" - resolved "https://registry.yarnpkg.com/tsconfig-paths/-/tsconfig-paths-4.1.1.tgz#7f23094ce897fcf4a93f67c4776e813003e48b75" - integrity sha512-VgPrtLKpRgEAJsMj5Q/I/mXouC6A/7eJ/X4Nuk6o0cRPwBtznYxTCU4FodbexbzH9somBPEXYi0ZkUViUpJ21Q== - dependencies: - json5 "^2.2.1" - minimist "^1.2.6" - strip-bom "^3.0.0" - tslib@^1.8.1, tslib@^1.9.3: version "1.14.1" resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" @@ -4389,6 +4722,11 @@ verror@1.10.0: core-util-is "1.0.2" extsprintf "^1.2.0" +void-elements@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/void-elements/-/void-elements-3.1.0.tgz#614f7fbf8d801f0bb5f0661f5b2f5785750e4f09" + integrity sha512-Dhxzh5HZuiHQhbvTW9AMetFfBHDMYpo23Uo9btPXgdYP+3T5S+p+jgNy7spra+veYhBP2dCSgxR/i2Y02h5/6w== + webidl-conversions@^3.0.0: version "3.0.1" resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-3.0.1.tgz#24534275e2a7bc6be7bc86611cc16ae0a5654871" @@ -4420,6 +4758,16 @@ which@^2.0.1: dependencies: isexe "^2.0.0" +with@^7.0.0: + version "7.0.2" + resolved "https://registry.yarnpkg.com/with/-/with-7.0.2.tgz#ccee3ad542d25538a7a7a80aad212b9828495bac" + integrity sha512-RNGKj82nUPg3g5ygxkQl0R937xLyho1J24ItRCBTr/m1YnZkzJy1hUiHUJrc/VlsDQzsCnInEGSg3bci0Lmd4w== + dependencies: + "@babel/parser" "^7.9.6" + "@babel/types" "^7.9.6" + assert-never "^1.2.1" + babel-walk "3.0.0-canary-5" + word-wrap@^1.2.3: version "1.2.3" resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.3.tgz#610636f6b1f703891bd34771ccb17fb93b47079c"