Browse Source

New test262 results format (#783)

pull/787/head
Iban Eguia 4 years ago committed by GitHub
parent
commit
2a509de554
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
  1. 172
      Cargo.lock
  2. 2
      boa/Cargo.toml
  3. 2
      boa_tester/Cargo.toml
  4. 44
      boa_tester/src/exec.rs
  5. 25
      boa_tester/src/main.rs
  6. 85
      boa_tester/src/read.rs
  7. 33
      boa_tester/src/results.rs
  8. 2
      package.json
  9. 2
      test262
  10. 62
      yarn.lock

172
Cargo.lock generated

@ -117,6 +117,8 @@ dependencies = [
"bitflags", "bitflags",
"colored", "colored",
"fxhash", "fxhash",
"git2",
"hex",
"once_cell", "once_cell",
"regex", "regex",
"serde", "serde",
@ -171,6 +173,9 @@ name = "cc"
version = "1.0.60" version = "1.0.60"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ef611cc68ff783f18535d77ddd080185275713d852c4f5cbb6122c462a7a825c" checksum = "ef611cc68ff783f18535d77ddd080185275713d852c4f5cbb6122c462a7a825c"
dependencies = [
"jobserver",
]
[[package]] [[package]]
name = "cfg-if" name = "cfg-if"
@ -426,6 +431,21 @@ dependencies = [
"wasi 0.9.0+wasi-snapshot-preview1", "wasi 0.9.0+wasi-snapshot-preview1",
] ]
[[package]]
name = "git2"
version = "0.13.11"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1e094214efbc7fdbbdee952147e493b00e99a4e52817492277e98967ae918165"
dependencies = [
"bitflags",
"libc",
"libgit2-sys",
"log",
"openssl-probe",
"openssl-sys",
"url",
]
[[package]] [[package]]
name = "half" name = "half"
version = "1.6.0" version = "1.6.0"
@ -456,6 +476,23 @@ dependencies = [
"libc", "libc",
] ]
[[package]]
name = "hex"
version = "0.4.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "644f9158b2f133fd50f5fb3242878846d9eb792e445c893805ff0e3824006e35"
[[package]]
name = "idna"
version = "0.2.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "02e2673c30ee86b5b96a9cb52ad15718aa1f966f5ab9ad54a8b95d5ca33120a9"
dependencies = [
"matches",
"unicode-bidi",
"unicode-normalization",
]
[[package]] [[package]]
name = "indexmap" name = "indexmap"
version = "1.6.0" version = "1.6.0"
@ -511,6 +548,15 @@ dependencies = [
"libc", "libc",
] ]
[[package]]
name = "jobserver"
version = "0.1.21"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "5c71313ebb9439f74b00d9d2dcec36440beaf57a6aa0623068441dd7cd81a7f2"
dependencies = [
"libc",
]
[[package]] [[package]]
name = "js-sys" name = "js-sys"
version = "0.3.45" version = "0.3.45"
@ -528,9 +574,49 @@ checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646"
[[package]] [[package]]
name = "libc" name = "libc"
version = "0.2.77" version = "0.2.78"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "aa7087f49d294270db4e1928fc110c976cd4b9e5a16348e0a1df09afa99e6c98"
[[package]]
name = "libgit2-sys"
version = "0.12.13+1.0.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "069eea34f76ec15f2822ccf78fe0cdb8c9016764d0a12865278585a74dbdeae5"
dependencies = [
"cc",
"libc",
"libssh2-sys",
"libz-sys",
"openssl-sys",
"pkg-config",
]
[[package]]
name = "libssh2-sys"
version = "0.2.19"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f2f96b10ec2560088a8e76961b00d47107b3a625fecb76dedb29ee7ccbf98235" checksum = "ca46220853ba1c512fc82826d0834d87b06bcd3c2a42241b7de72f3d2fe17056"
dependencies = [
"cc",
"libc",
"libz-sys",
"openssl-sys",
"pkg-config",
"vcpkg",
]
[[package]]
name = "libz-sys"
version = "1.1.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "602113192b08db8f38796c4e85c39e960c145965140e918018bcde1952429655"
dependencies = [
"cc",
"libc",
"pkg-config",
"vcpkg",
]
[[package]] [[package]]
name = "linked-hash-map" name = "linked-hash-map"
@ -556,6 +642,12 @@ dependencies = [
"cfg-if", "cfg-if",
] ]
[[package]]
name = "matches"
version = "0.1.8"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7ffc5c5338469d4d3ea17d269fa8ea3512ad247247c30bd2df69e68309ed0a08"
[[package]] [[package]]
name = "maybe-uninit" name = "maybe-uninit"
version = "2.0.0" version = "2.0.0"
@ -652,6 +744,25 @@ version = "11.1.2"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a170cebd8021a008ea92e4db85a72f80b35df514ec664b296fdcbb654eac0b2c" checksum = "a170cebd8021a008ea92e4db85a72f80b35df514ec664b296fdcbb654eac0b2c"
[[package]]
name = "openssl-probe"
version = "0.1.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "77af24da69f9d9341038eba93a073b1fdaaa1b788221b00a69bce9e762cb32de"
[[package]]
name = "openssl-sys"
version = "0.9.58"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a842db4709b604f0fe5d1170ae3565899be2ad3d9cbc72dedc789ac0511f78de"
dependencies = [
"autocfg",
"cc",
"libc",
"pkg-config",
"vcpkg",
]
[[package]] [[package]]
name = "parking_lot" name = "parking_lot"
version = "0.11.0" version = "0.11.0"
@ -678,6 +789,18 @@ dependencies = [
"winapi", "winapi",
] ]
[[package]]
name = "percent-encoding"
version = "2.1.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d4fd5641d01c8f18a23da7b6fe29298ff4b55afcccdf78973b24cf3175fee32e"
[[package]]
name = "pkg-config"
version = "0.3.18"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d36492546b6af1463394d46f0c834346f31548646f6ba10849802c9c9a27ac33"
[[package]] [[package]]
name = "plotters" name = "plotters"
version = "0.2.15" version = "0.2.15"
@ -722,9 +845,9 @@ dependencies = [
[[package]] [[package]]
name = "proc-macro2" name = "proc-macro2"
version = "1.0.23" version = "1.0.24"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "51ef7cd2518ead700af67bf9d1a658d90b6037d77110fd9c0445429d0ba1c6c9" checksum = "1e0704ee1a7e00d7bb417d0770ea303c1bccbabf0ef1667dae92b5967f5f8a71"
dependencies = [ dependencies = [
"unicode-xid", "unicode-xid",
] ]
@ -1097,6 +1220,30 @@ dependencies = [
"serde_json", "serde_json",
] ]
[[package]]
name = "tinyvec"
version = "0.3.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "238ce071d267c5710f9d31451efec16c5ee22de34df17cc05e56cbc92e967117"
[[package]]
name = "unicode-bidi"
version = "0.3.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "49f2bd0c6468a8230e1db229cff8029217cf623c767ea5d60bfbd42729ea54d5"
dependencies = [
"matches",
]
[[package]]
name = "unicode-normalization"
version = "0.1.13"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "6fb19cf769fa8c6a80a162df694621ebeb4dafb606470b2b2fce0be40a98a977"
dependencies = [
"tinyvec",
]
[[package]] [[package]]
name = "unicode-segmentation" name = "unicode-segmentation"
version = "1.6.0" version = "1.6.0"
@ -1115,12 +1262,29 @@ version = "0.2.1"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f7fe0bb3479651439c9112f72b6c505038574c9fbb575ed1bf3b797fa39dd564" checksum = "f7fe0bb3479651439c9112f72b6c505038574c9fbb575ed1bf3b797fa39dd564"
[[package]]
name = "url"
version = "2.1.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "829d4a8476c35c9bf0bbce5a3b23f4106f79728039b726d292bb93bc106787cb"
dependencies = [
"idna",
"matches",
"percent-encoding",
]
[[package]] [[package]]
name = "utf8parse" name = "utf8parse"
version = "0.2.0" version = "0.2.0"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "936e4b492acfd135421d8dca4b1aa80a7bfc26e702ef3af710e0752684df5372" checksum = "936e4b492acfd135421d8dca4b1aa80a7bfc26e702ef3af710e0752684df5372"
[[package]]
name = "vcpkg"
version = "0.2.10"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "6454029bf181f092ad1b853286f23e2c507d8e8194d01d92da4a55c274a5508c"
[[package]] [[package]]
name = "vec_map" name = "vec_map"
version = "0.8.2" version = "0.8.2"

2
boa/Cargo.toml

@ -25,7 +25,7 @@ num-integer = "0.1.43"
bitflags = "1.2.1" bitflags = "1.2.1"
indexmap = "1.6.0" indexmap = "1.6.0"
ryu-js = "0.2.1" ryu-js = "0.2.1"
chrono = "0.4.18" chrono = "0.4.19"
# Optional Dependencies # Optional Dependencies
serde = { version = "1.0.116", features = ["derive"], optional = true } serde = { version = "1.0.116", features = ["derive"], optional = true }

2
boa_tester/Cargo.toml

@ -21,3 +21,5 @@ regex = "1.3.9"
once_cell = "1.4.1" once_cell = "1.4.1"
colored = "2.0.0" colored = "2.0.0"
fxhash = "0.2.1" fxhash = "0.2.1"
git2 = "0.13.11"
hex = "0.4.2"

44
boa_tester/src/exec.rs

@ -1,6 +1,9 @@
//! Execution module for the test runner. //! Execution module for the test runner.
use super::{Harness, Outcome, Phase, SuiteResult, Test, TestFlags, TestResult, TestSuite, CLI}; use super::{
Harness, Outcome, Phase, SuiteResult, Test, TestFlags, TestOutcomeResult, TestResult,
TestSuite, CLI,
};
use boa::{parse, Context}; use boa::{parse, Context};
use colored::Colorize; use colored::Colorize;
use fxhash::FxHashSet; use fxhash::FxHashSet;
@ -43,10 +46,10 @@ impl TestSuite {
let mut passed = 0; let mut passed = 0;
let mut ignored = 0; let mut ignored = 0;
for test in &tests { for test in &tests {
if let Some(true) = test.passed { match test.result {
passed += 1; TestOutcomeResult::Passed => passed += 1,
} else if test.passed.is_none() { TestOutcomeResult::Ignored => ignored += 1,
ignored += 1; _ => {}
} }
} }
@ -74,7 +77,7 @@ impl TestSuite {
passed, passed,
ignored, ignored,
suites, suites,
tests: tests.into_boxed_slice(), tests,
} }
} }
} }
@ -84,7 +87,7 @@ impl Test {
pub(crate) fn run(&self, harness: &Harness) -> TestResult { pub(crate) fn run(&self, harness: &Harness) -> TestResult {
// println!("Starting `{}`", self.name); // println!("Starting `{}`", self.name);
let passed = if !self.flags.intersects(TestFlags::ASYNC | TestFlags::MODULE) let result = if !self.flags.intersects(TestFlags::ASYNC | TestFlags::MODULE)
&& !IGNORED.contains(&self.name) && !IGNORED.contains(&self.name)
{ {
let res = panic::catch_unwind(|| { let res = panic::catch_unwind(|| {
@ -138,24 +141,39 @@ impl Test {
} }
}); });
let passed = res.unwrap_or_else(|_| { let result = res
.map(|res| {
if res {
TestOutcomeResult::Passed
} else {
TestOutcomeResult::Failed
}
})
.unwrap_or_else(|_| {
eprintln!("last panic was on test \"{}\"", self.name); eprintln!("last panic was on test \"{}\"", self.name);
false TestOutcomeResult::Panic
}); });
print!("{}", if passed { ".".green() } else { ".".red() }); print!(
"{}",
if let TestOutcomeResult::Passed = result {
".".green()
} else {
".".red()
}
);
Some(passed) result
} else { } else {
// Ignoring async tests for now. // Ignoring async tests for now.
// TODO: implement async and add `harness/doneprintHandle.js` to the includes. // TODO: implement async and add `harness/doneprintHandle.js` to the includes.
print!("{}", ".".yellow()); print!("{}", ".".yellow());
None TestOutcomeResult::Ignored
}; };
TestResult { TestResult {
name: self.name.clone(), name: self.name.clone(),
passed, result,
} }
} }

25
boa_tester/src/main.rs

@ -147,20 +147,41 @@ struct TestSuite {
/// Outcome of a test suite. /// Outcome of a test suite.
#[derive(Debug, Clone, Serialize, Deserialize)] #[derive(Debug, Clone, Serialize, Deserialize)]
struct SuiteResult { struct SuiteResult {
#[serde(rename = "n")]
name: Box<str>, name: Box<str>,
#[serde(rename = "t")]
total: usize, total: usize,
#[serde(rename = "p")]
passed: usize, passed: usize,
#[serde(rename = "i")]
ignored: usize, ignored: usize,
#[serde(skip_serializing_if = "Vec::is_empty")] #[serde(skip_serializing_if = "Vec::is_empty")]
#[serde(rename = "s")]
suites: Vec<SuiteResult>, suites: Vec<SuiteResult>,
tests: Box<[TestResult]>, #[serde(rename = "t")]
#[serde(skip_serializing_if = "Vec::is_empty")]
tests: Vec<TestResult>,
} }
/// Outcome of a test. /// Outcome of a test.
#[derive(Debug, Clone, Serialize, Deserialize)] #[derive(Debug, Clone, Serialize, Deserialize)]
struct TestResult { struct TestResult {
#[serde(rename = "n")]
name: Box<str>, name: Box<str>,
passed: Option<bool>, #[serde(rename = "r")]
result: TestOutcomeResult,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
enum TestOutcomeResult {
#[serde(rename = "O")]
Passed,
#[serde(rename = "I")]
Ignored,
#[serde(rename = "F")]
Failed,
#[serde(rename = "P")]
Panic,
} }
/// Represents a test. /// Represents a test.

85
boa_tester/src/read.rs

@ -2,7 +2,7 @@
use super::{Harness, Locale, Phase, Test, TestSuite, CLI}; use super::{Harness, Locale, Phase, Test, TestSuite, CLI};
use fxhash::FxHashMap; use fxhash::FxHashMap;
use serde::{Deserialize, Serialize}; use serde::Deserialize;
use std::{fs, io, path::Path}; use std::{fs, io, path::Path};
/// Representation of the YAML metadata in Test262 tests. /// Representation of the YAML metadata in Test262 tests.
@ -52,26 +52,6 @@ pub(super) enum TestFlag {
NonDeterministic, NonDeterministic,
} }
/// Test information structure.
#[derive(Debug, Clone, Serialize, Deserialize)]
struct TestInfo {
desc: Box<str>,
info: Box<str>,
}
impl TestInfo {
/// Creates a test information structure from the full metadata.
fn from_metadata(metadata: &MetaData) -> Self {
Self {
desc: metadata.description.trim().to_owned().into_boxed_str(),
info: metadata.info.trim().to_owned().into_boxed_str(),
}
}
}
/// Name of the "test information" file.
const INFO_FILE_NAME: &str = "info.json";
/// Reads the Test262 defined bindings. /// Reads the Test262 defined bindings.
pub(super) fn read_harness() -> io::Result<Harness> { pub(super) fn read_harness() -> io::Result<Harness> {
let mut includes = FxHashMap::default(); let mut includes = FxHashMap::default();
@ -106,43 +86,11 @@ pub(super) fn read_harness() -> io::Result<Harness> {
pub(super) fn read_global_suite() -> io::Result<TestSuite> { pub(super) fn read_global_suite() -> io::Result<TestSuite> {
let path = CLI.test262_path().join("test"); let path = CLI.test262_path().join("test");
let mut info = if let Some(path) = CLI.output() { Ok(read_suite(path.as_path())?)
let path = path.join(INFO_FILE_NAME);
if path.exists() {
Some(serde_json::from_reader(io::BufReader::new(
fs::File::open(path)?,
))?)
} else {
Some(FxHashMap::default())
}
} else {
None
};
let suite = read_suite(path.as_path(), &mut info)?;
if let (Some(path), info) = (CLI.output(), info) {
let path = path.join(INFO_FILE_NAME);
if CLI.verbose() {
println!("Writing the test information file at {}...", path.display());
}
let output = io::BufWriter::new(fs::File::create(path)?);
serde_json::to_writer(output, &info)?;
if CLI.verbose() {
println!("Test information file written.");
}
}
Ok(suite)
} }
/// Reads a test suite in the given path. /// Reads a test suite in the given path.
fn read_suite( fn read_suite(path: &Path) -> io::Result<TestSuite> {
path: &Path,
test_info: &mut Option<FxHashMap<Box<str>, TestInfo>>,
) -> io::Result<TestSuite> {
use std::ffi::OsStr; use std::ffi::OsStr;
let name = path let name = path
@ -175,11 +123,11 @@ fn read_suite(
let entry = entry?; let entry = entry?;
if entry.file_type()?.is_dir() { if entry.file_type()?.is_dir() {
suites.push(read_suite(entry.path().as_path(), test_info)?); suites.push(read_suite(entry.path().as_path())?);
} else if filter(&entry.file_name()) { } else if filter(&entry.file_name()) {
continue; continue;
} else { } else {
tests.push(read_test(entry.path().as_path(), test_info)?); tests.push(read_test(entry.path().as_path())?);
} }
} }
@ -191,10 +139,7 @@ fn read_suite(
} }
/// Reads information about a given test case. /// Reads information about a given test case.
fn read_test( fn read_test(path: &Path) -> io::Result<Test> {
path: &Path,
test_info: &mut Option<FxHashMap<Box<str>, TestInfo>>,
) -> io::Result<Test> {
let name = path let name = path
.file_stem() .file_stem()
.ok_or_else(|| { .ok_or_else(|| {
@ -212,26 +157,8 @@ fn read_test(
})?; })?;
let content = fs::read_to_string(path)?; let content = fs::read_to_string(path)?;
let metadata = read_metadata(&content)?; let metadata = read_metadata(&content)?;
if let Some(all_info) = test_info {
let path_str = path
.strip_prefix(CLI.test262_path())
.expect("could not get test path string")
.to_str()
.ok_or_else(|| {
io::Error::new(
io::ErrorKind::InvalidInput,
format!("non-UTF-8 path found: {}", path.display()),
)
})?;
let new_info = TestInfo::from_metadata(&metadata);
let _ = all_info.insert(path_str.to_owned().into_boxed_str(), new_info);
}
Ok(Test::new(name, content, metadata)) Ok(Test::new(name, content, metadata))
} }

33
boa_tester/src/results.rs

@ -1,23 +1,36 @@
use super::{SuiteResult, CLI}; use super::{SuiteResult, CLI};
use git2::Repository;
use hex::ToHex;
use serde::{Deserialize, Serialize}; use serde::{Deserialize, Serialize};
use std::{ use std::{
env, fs, env, fs,
io::{self, BufReader, BufWriter}, io::{self, BufReader, BufWriter},
path::Path,
}; };
/// Structure to store full result information. /// Structure to store full result information.
#[derive(Debug, Clone, Deserialize, Serialize)] #[derive(Debug, Clone, Deserialize, Serialize)]
struct ResultInfo { struct ResultInfo {
#[serde(rename = "c")]
commit: Box<str>, commit: Box<str>,
#[serde(rename = "u")]
test262_commit: Box<str>,
#[serde(rename = "r")]
results: SuiteResult, results: SuiteResult,
} }
/// Structure to store full result information. /// Structure to store full result information.
#[derive(Debug, Clone, Deserialize, Serialize)] #[derive(Debug, Clone, Deserialize, Serialize)]
struct ReducedResultInfo { struct ReducedResultInfo {
#[serde(rename = "c")]
commit: Box<str>, commit: Box<str>,
#[serde(rename = "u")]
test262_commit: Box<str>,
#[serde(rename = "t")]
total: usize, total: usize,
#[serde(rename = "p")]
passed: usize, passed: usize,
#[serde(rename = "i")]
ignored: usize, ignored: usize,
} }
@ -26,6 +39,7 @@ impl From<ResultInfo> for ReducedResultInfo {
fn from(info: ResultInfo) -> Self { fn from(info: ResultInfo) -> Self {
Self { Self {
commit: info.commit, commit: info.commit,
test262_commit: info.test262_commit,
total: info.results.total, total: info.results.total,
passed: info.results.passed, passed: info.results.passed,
ignored: info.results.ignored, ignored: info.results.ignored,
@ -67,6 +81,7 @@ pub(crate) fn write_json(results: SuiteResult) -> io::Result<()> {
let new_results = ResultInfo { let new_results = ResultInfo {
commit: env::var("GITHUB_SHA").unwrap_or_default().into_boxed_str(), commit: env::var("GITHUB_SHA").unwrap_or_default().into_boxed_str(),
test262_commit: get_test262_commit(),
results, results,
}; };
@ -95,3 +110,21 @@ pub(crate) fn write_json(results: SuiteResult) -> io::Result<()> {
Ok(()) Ok(())
} }
/// Gets the commit OID of the test262 submodule.
fn get_test262_commit() -> Box<str> {
let repo = Repository::open(".").expect("could not open git repository in current directory");
let submodule = repo
.submodules()
.expect("could not get the list of submodules of the repo")
.into_iter()
.find(|sub| sub.path() == Path::new("test262"))
.expect("test262 submodule not found");
submodule
.index_id()
.expect("could not get the commit OID")
.encode_hex::<String>()
.into_boxed_str()
}

2
package.json

@ -7,7 +7,7 @@
"@wasm-tool/wasm-pack-plugin": "^1.3.1", "@wasm-tool/wasm-pack-plugin": "^1.3.1",
"bootstrap": "^4.5.2", "bootstrap": "^4.5.2",
"clean-webpack-plugin": "^3.0.0", "clean-webpack-plugin": "^3.0.0",
"copy-webpack-plugin": "^6.1.1", "copy-webpack-plugin": "^6.2.0",
"css-loader": "^4.3.0", "css-loader": "^4.3.0",
"file-loader": "^6.1.0", "file-loader": "^6.1.0",
"html-webpack-plugin": "^4.5.0", "html-webpack-plugin": "^4.5.0",

2
test262

@ -1 +1 @@
Subproject commit 896994413cad849f470cec7757c4bb7d1b4ffc12 Subproject commit 323905b70e644d90faa957235f8ac59eac4ba8ba

62
yarn.lock

@ -74,16 +74,16 @@
integrity sha512-W+bw9ds02rAQaMvaLYxAbJ6cvguW/iJXNT6lTssS1ps6QdrMKttqEAMEG/b5CR8TZl3/L7/lH0ZV5nNR1LXikA== integrity sha512-W+bw9ds02rAQaMvaLYxAbJ6cvguW/iJXNT6lTssS1ps6QdrMKttqEAMEG/b5CR8TZl3/L7/lH0ZV5nNR1LXikA==
"@types/uglify-js@*": "@types/uglify-js@*":
version "3.9.3" version "3.11.0"
resolved "https://registry.yarnpkg.com/@types/uglify-js/-/uglify-js-3.9.3.tgz#d94ed608e295bc5424c9600e6b8565407b6b4b6b" resolved "https://registry.yarnpkg.com/@types/uglify-js/-/uglify-js-3.11.0.tgz#2868d405cc45cd9dc3069179052103032c33afbc"
integrity sha512-KswB5C7Kwduwjj04Ykz+AjvPcfgv/37Za24O2EDzYNbwyzOo8+ydtvzUfZ5UMguiVu29Gx44l1A6VsPPcmYu9w== integrity sha512-I0Yd8TUELTbgRHq2K65j8rnDPAzAP+DiaF/syLem7yXwYLsHZhPd+AM2iXsWmf9P2F2NlFCgl5erZPQx9IbM9Q==
dependencies: dependencies:
source-map "^0.6.1" source-map "^0.6.1"
"@types/webpack-sources@*": "@types/webpack-sources@*":
version "1.4.2" version "2.0.0"
resolved "https://registry.yarnpkg.com/@types/webpack-sources/-/webpack-sources-1.4.2.tgz#5d3d4dea04008a779a90135ff96fb5c0c9e6292c" resolved "https://registry.yarnpkg.com/@types/webpack-sources/-/webpack-sources-2.0.0.tgz#08216ab9be2be2e1499beaebc4d469cec81e82a7"
integrity sha512-77T++JyKow4BQB/m9O96n9d/UUHWLQHlcqXb9Vsf4F1+wKNrrlWNFPDLKNT92RJnCSL6CieTc+NDXtCVZswdTw== integrity sha512-a5kPx98CNFRKQ+wqawroFunvFqv7GHm/3KOI52NY9xWADgc8smu4R6prt4EU/M4QfVjvgBkMqU4fBhw3QfMVkg==
dependencies: dependencies:
"@types/node" "*" "@types/node" "*"
"@types/source-list-map" "*" "@types/source-list-map" "*"
@ -1003,10 +1003,10 @@ copy-descriptor@^0.1.0:
resolved "https://registry.yarnpkg.com/copy-descriptor/-/copy-descriptor-0.1.1.tgz#676f6eb3c39997c2ee1ac3a924fd6124748f578d" resolved "https://registry.yarnpkg.com/copy-descriptor/-/copy-descriptor-0.1.1.tgz#676f6eb3c39997c2ee1ac3a924fd6124748f578d"
integrity sha1-Z29us8OZl8LuGsOpJP1hJHSPV40= integrity sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=
copy-webpack-plugin@^6.1.1: copy-webpack-plugin@^6.2.0:
version "6.1.1" version "6.2.0"
resolved "https://registry.yarnpkg.com/copy-webpack-plugin/-/copy-webpack-plugin-6.1.1.tgz#737a3ba21c16cc6ddca972f5cf8de25568ca0616" resolved "https://registry.yarnpkg.com/copy-webpack-plugin/-/copy-webpack-plugin-6.2.0.tgz#dacd3f9b6e51e82132a12fa37410af35ecef0c9e"
integrity sha512-4TlkHFYkrZ3WppLA5XkPmBLI5lnEpFsXvpeqxCf5PzkratZiVklNXsvoQkLhUU43q7ZL3AOXtaHAd9jLNJoU0w== integrity sha512-1s/VbhIX73FBFBYF4D0KdeBLkjEnAlCQn0Ufo2a/IyJ41jHpQ9ZzM4JAfbE7yTOhbmwRFkARErJ/XIiLceja6Q==
dependencies: dependencies:
cacache "^15.0.5" cacache "^15.0.5"
fast-glob "^3.2.4" fast-glob "^3.2.4"
@ -1422,37 +1422,37 @@ errno@^0.1.3, errno@~0.1.7:
prr "~1.0.1" prr "~1.0.1"
es-abstract@^1.17.0-next.1, es-abstract@^1.17.5: es-abstract@^1.17.0-next.1, es-abstract@^1.17.5:
version "1.17.6" version "1.17.7"
resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.17.6.tgz#9142071707857b2cacc7b89ecb670316c3e2d52a" resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.17.7.tgz#a4de61b2f66989fc7421676c1cb9787573ace54c"
integrity sha512-Fr89bON3WFyUi5EvAeI48QTWX0AyekGgLA8H+c+7fbfCkJwRWRMLd8CQedNEyJuoYYhmtEqY92pgte1FAhBlhw== integrity sha512-VBl/gnfcJ7OercKA9MVaegWsBHFjV492syMudcnQZvt/Dw8ezpcOHYZXa/J96O8vx+g4x65YKhxOwDUh63aS5g==
dependencies: dependencies:
es-to-primitive "^1.2.1" es-to-primitive "^1.2.1"
function-bind "^1.1.1" function-bind "^1.1.1"
has "^1.0.3" has "^1.0.3"
has-symbols "^1.0.1" has-symbols "^1.0.1"
is-callable "^1.2.0" is-callable "^1.2.2"
is-regex "^1.1.0" is-regex "^1.1.1"
object-inspect "^1.7.0" object-inspect "^1.8.0"
object-keys "^1.1.1" object-keys "^1.1.1"
object.assign "^4.1.0" object.assign "^4.1.1"
string.prototype.trimend "^1.0.1" string.prototype.trimend "^1.0.1"
string.prototype.trimstart "^1.0.1" string.prototype.trimstart "^1.0.1"
es-abstract@^1.18.0-next.0: es-abstract@^1.18.0-next.0, es-abstract@^1.18.0-next.1:
version "1.18.0-next.0" version "1.18.0-next.1"
resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.18.0-next.0.tgz#b302834927e624d8e5837ed48224291f2c66e6fc" resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.18.0-next.1.tgz#6e3a0a4bda717e5023ab3b8e90bec36108d22c68"
integrity sha512-elZXTZXKn51hUBdJjSZGYRujuzilgXo8vSPQzjGYXLvSlGiCo8VO8ZGV3kjo9a0WNJJ57hENagwbtlRuHuzkcQ== integrity sha512-I4UGspA0wpZXWENrdA0uHbnhte683t3qT/1VFH9aX2dA5PPSf6QW5HHXf5HImaqPmjXaVeVk4RGWnaylmV7uAA==
dependencies: dependencies:
es-to-primitive "^1.2.1" es-to-primitive "^1.2.1"
function-bind "^1.1.1" function-bind "^1.1.1"
has "^1.0.3" has "^1.0.3"
has-symbols "^1.0.1" has-symbols "^1.0.1"
is-callable "^1.2.0" is-callable "^1.2.2"
is-negative-zero "^2.0.0" is-negative-zero "^2.0.0"
is-regex "^1.1.1" is-regex "^1.1.1"
object-inspect "^1.8.0" object-inspect "^1.8.0"
object-keys "^1.1.1" object-keys "^1.1.1"
object.assign "^4.1.0" object.assign "^4.1.1"
string.prototype.trimend "^1.0.1" string.prototype.trimend "^1.0.1"
string.prototype.trimstart "^1.0.1" string.prototype.trimstart "^1.0.1"
@ -2321,7 +2321,7 @@ is-buffer@^1.1.5:
resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be" resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be"
integrity sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w== integrity sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==
is-callable@^1.1.4, is-callable@^1.2.0: is-callable@^1.1.4, is-callable@^1.2.2:
version "1.2.2" version "1.2.2"
resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.2.tgz#c7c6715cd22d4ddb48d3e19970223aceabb080d9" resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.2.tgz#c7c6715cd22d4ddb48d3e19970223aceabb080d9"
integrity sha512-dnMqspv5nU3LoewK2N/y7KLtxtakvTuaCsU9FU50/QDmdbHNy/4/JuRtMHqRU22o3q+W89YQndQEeCVwK+3qrA== integrity sha512-dnMqspv5nU3LoewK2N/y7KLtxtakvTuaCsU9FU50/QDmdbHNy/4/JuRtMHqRU22o3q+W89YQndQEeCVwK+3qrA==
@ -2442,7 +2442,7 @@ is-plain-object@^2.0.3, is-plain-object@^2.0.4:
dependencies: dependencies:
isobject "^3.0.1" isobject "^3.0.1"
is-regex@^1.0.4, is-regex@^1.1.0, is-regex@^1.1.1: is-regex@^1.0.4, is-regex@^1.1.1:
version "1.1.1" version "1.1.1"
resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.1.1.tgz#c6f98aacc546f6cec5468a07b7b153ab564a57b9" resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.1.1.tgz#c6f98aacc546f6cec5468a07b7b153ab564a57b9"
integrity sha512-1+QkEcxiLlB7VEyFtyBg94e08OAsvq7FUBgApTq/w2ymCLyKJgDPsybBENVtA7XCQEgEXxKPonG+mvYRxh/LIg== integrity sha512-1+QkEcxiLlB7VEyFtyBg94e08OAsvq7FUBgApTq/w2ymCLyKJgDPsybBENVtA7XCQEgEXxKPonG+mvYRxh/LIg==
@ -3012,18 +3012,18 @@ object-copy@^0.1.0:
define-property "^0.2.5" define-property "^0.2.5"
kind-of "^3.0.3" kind-of "^3.0.3"
object-inspect@^1.7.0, object-inspect@^1.8.0: object-inspect@^1.8.0:
version "1.8.0" version "1.8.0"
resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.8.0.tgz#df807e5ecf53a609cc6bfe93eac3cc7be5b3a9d0" resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.8.0.tgz#df807e5ecf53a609cc6bfe93eac3cc7be5b3a9d0"
integrity sha512-jLdtEOB112fORuypAyl/50VRVIBIdVQOSUUGQHzJ4xBSbit81zRarz7GThkEFZy1RceYrWYcPcBFPQwHyAc1gA== integrity sha512-jLdtEOB112fORuypAyl/50VRVIBIdVQOSUUGQHzJ4xBSbit81zRarz7GThkEFZy1RceYrWYcPcBFPQwHyAc1gA==
object-is@^1.0.1: object-is@^1.0.1:
version "1.1.2" version "1.1.3"
resolved "https://registry.yarnpkg.com/object-is/-/object-is-1.1.2.tgz#c5d2e87ff9e119f78b7a088441519e2eec1573b6" resolved "https://registry.yarnpkg.com/object-is/-/object-is-1.1.3.tgz#2e3b9e65560137455ee3bd62aec4d90a2ea1cc81"
integrity sha512-5lHCz+0uufF6wZ7CRFWJN3hp8Jqblpgve06U5CMQ3f//6iDjPr2PEo9MWCjEssDsa+UZEL4PkFpr+BMop6aKzQ== integrity sha512-teyqLvFWzLkq5B9ki8FVWA902UER2qkxmdA4nLf+wjOLAWgxzCWZNCxpDq9MvE8MmhWNr+I8w3BN49Vx36Y6Xg==
dependencies: dependencies:
define-properties "^1.1.3" define-properties "^1.1.3"
es-abstract "^1.17.5" es-abstract "^1.18.0-next.1"
object-keys@^1.0.12, object-keys@^1.1.1: object-keys@^1.0.12, object-keys@^1.1.1:
version "1.1.1" version "1.1.1"
@ -3037,7 +3037,7 @@ object-visit@^1.0.0:
dependencies: dependencies:
isobject "^3.0.0" isobject "^3.0.0"
object.assign@^4.1.0: object.assign@^4.1.1:
version "4.1.1" version "4.1.1"
resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.1.tgz#303867a666cdd41936ecdedfb1f8f3e32a478cdd" resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.1.tgz#303867a666cdd41936ecdedfb1f8f3e32a478cdd"
integrity sha512-VT/cxmx5yaoHSOTSyrCygIDFco+RsibY2NM0a4RdEeY/4KgqezwFtK1yr3U67xYhqJSlASm2pKhLVzPj2lr4bA== integrity sha512-VT/cxmx5yaoHSOTSyrCygIDFco+RsibY2NM0a4RdEeY/4KgqezwFtK1yr3U67xYhqJSlASm2pKhLVzPj2lr4bA==

Loading…
Cancel
Save