From 2a509de554694e9f088037d38624ad096ef09fc1 Mon Sep 17 00:00:00 2001 From: Iban Eguia Date: Sun, 4 Oct 2020 01:08:04 +0200 Subject: [PATCH] New test262 results format (#783) --- Cargo.lock | 172 +++++++++++++++++++++++++++++++++++++- boa/Cargo.toml | 2 +- boa_tester/Cargo.toml | 2 + boa_tester/src/exec.rs | 50 +++++++---- boa_tester/src/main.rs | 25 +++++- boa_tester/src/read.rs | 85 ++----------------- boa_tester/src/results.rs | 33 ++++++++ package.json | 2 +- test262 | 2 +- yarn.lock | 62 +++++++------- 10 files changed, 300 insertions(+), 135 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 3215ce5f1d..55b7bb9d55 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -117,6 +117,8 @@ dependencies = [ "bitflags", "colored", "fxhash", + "git2", + "hex", "once_cell", "regex", "serde", @@ -171,6 +173,9 @@ name = "cc" version = "1.0.60" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ef611cc68ff783f18535d77ddd080185275713d852c4f5cbb6122c462a7a825c" +dependencies = [ + "jobserver", +] [[package]] name = "cfg-if" @@ -426,6 +431,21 @@ dependencies = [ "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]] name = "half" version = "1.6.0" @@ -456,6 +476,23 @@ dependencies = [ "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]] name = "indexmap" version = "1.6.0" @@ -511,6 +548,15 @@ dependencies = [ "libc", ] +[[package]] +name = "jobserver" +version = "0.1.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c71313ebb9439f74b00d9d2dcec36440beaf57a6aa0623068441dd7cd81a7f2" +dependencies = [ + "libc", +] + [[package]] name = "js-sys" version = "0.3.45" @@ -528,9 +574,49 @@ checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" [[package]] 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" -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]] name = "linked-hash-map" @@ -556,6 +642,12 @@ dependencies = [ "cfg-if", ] +[[package]] +name = "matches" +version = "0.1.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7ffc5c5338469d4d3ea17d269fa8ea3512ad247247c30bd2df69e68309ed0a08" + [[package]] name = "maybe-uninit" version = "2.0.0" @@ -652,6 +744,25 @@ version = "11.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" 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]] name = "parking_lot" version = "0.11.0" @@ -678,6 +789,18 @@ dependencies = [ "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]] name = "plotters" version = "0.2.15" @@ -722,9 +845,9 @@ dependencies = [ [[package]] name = "proc-macro2" -version = "1.0.23" +version = "1.0.24" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "51ef7cd2518ead700af67bf9d1a658d90b6037d77110fd9c0445429d0ba1c6c9" +checksum = "1e0704ee1a7e00d7bb417d0770ea303c1bccbabf0ef1667dae92b5967f5f8a71" dependencies = [ "unicode-xid", ] @@ -1097,6 +1220,30 @@ dependencies = [ "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]] name = "unicode-segmentation" version = "1.6.0" @@ -1115,12 +1262,29 @@ version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" 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]] name = "utf8parse" version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "936e4b492acfd135421d8dca4b1aa80a7bfc26e702ef3af710e0752684df5372" +[[package]] +name = "vcpkg" +version = "0.2.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6454029bf181f092ad1b853286f23e2c507d8e8194d01d92da4a55c274a5508c" + [[package]] name = "vec_map" version = "0.8.2" diff --git a/boa/Cargo.toml b/boa/Cargo.toml index 5d7abc9a35..2d7247bf76 100644 --- a/boa/Cargo.toml +++ b/boa/Cargo.toml @@ -25,7 +25,7 @@ num-integer = "0.1.43" bitflags = "1.2.1" indexmap = "1.6.0" ryu-js = "0.2.1" -chrono = "0.4.18" +chrono = "0.4.19" # Optional Dependencies serde = { version = "1.0.116", features = ["derive"], optional = true } diff --git a/boa_tester/Cargo.toml b/boa_tester/Cargo.toml index 9191ce20d6..530722579f 100644 --- a/boa_tester/Cargo.toml +++ b/boa_tester/Cargo.toml @@ -21,3 +21,5 @@ regex = "1.3.9" once_cell = "1.4.1" colored = "2.0.0" fxhash = "0.2.1" +git2 = "0.13.11" +hex = "0.4.2" diff --git a/boa_tester/src/exec.rs b/boa_tester/src/exec.rs index 0a0caa6093..2339024d70 100644 --- a/boa_tester/src/exec.rs +++ b/boa_tester/src/exec.rs @@ -1,6 +1,9 @@ //! 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 colored::Colorize; use fxhash::FxHashSet; @@ -43,10 +46,10 @@ impl TestSuite { let mut passed = 0; let mut ignored = 0; for test in &tests { - if let Some(true) = test.passed { - passed += 1; - } else if test.passed.is_none() { - ignored += 1; + match test.result { + TestOutcomeResult::Passed => passed += 1, + TestOutcomeResult::Ignored => ignored += 1, + _ => {} } } @@ -74,7 +77,7 @@ impl TestSuite { passed, ignored, suites, - tests: tests.into_boxed_slice(), + tests, } } } @@ -84,7 +87,7 @@ impl Test { pub(crate) fn run(&self, harness: &Harness) -> TestResult { // 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) { let res = panic::catch_unwind(|| { @@ -138,24 +141,39 @@ impl Test { } }); - let passed = res.unwrap_or_else(|_| { - eprintln!("last panic was on test \"{}\"", self.name); - false - }); - - print!("{}", if passed { ".".green() } else { ".".red() }); + let result = res + .map(|res| { + if res { + TestOutcomeResult::Passed + } else { + TestOutcomeResult::Failed + } + }) + .unwrap_or_else(|_| { + eprintln!("last panic was on test \"{}\"", self.name); + TestOutcomeResult::Panic + }); + + print!( + "{}", + if let TestOutcomeResult::Passed = result { + ".".green() + } else { + ".".red() + } + ); - Some(passed) + result } else { // Ignoring async tests for now. // TODO: implement async and add `harness/doneprintHandle.js` to the includes. print!("{}", ".".yellow()); - None + TestOutcomeResult::Ignored }; TestResult { name: self.name.clone(), - passed, + result, } } diff --git a/boa_tester/src/main.rs b/boa_tester/src/main.rs index 5acb18c64b..45de7dd030 100644 --- a/boa_tester/src/main.rs +++ b/boa_tester/src/main.rs @@ -147,20 +147,41 @@ struct TestSuite { /// Outcome of a test suite. #[derive(Debug, Clone, Serialize, Deserialize)] struct SuiteResult { + #[serde(rename = "n")] name: Box, + #[serde(rename = "t")] total: usize, + #[serde(rename = "p")] passed: usize, + #[serde(rename = "i")] ignored: usize, #[serde(skip_serializing_if = "Vec::is_empty")] + #[serde(rename = "s")] suites: Vec, - tests: Box<[TestResult]>, + #[serde(rename = "t")] + #[serde(skip_serializing_if = "Vec::is_empty")] + tests: Vec, } /// Outcome of a test. #[derive(Debug, Clone, Serialize, Deserialize)] struct TestResult { + #[serde(rename = "n")] name: Box, - passed: Option, + #[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. diff --git a/boa_tester/src/read.rs b/boa_tester/src/read.rs index 739cb800c8..877be836a7 100644 --- a/boa_tester/src/read.rs +++ b/boa_tester/src/read.rs @@ -2,7 +2,7 @@ use super::{Harness, Locale, Phase, Test, TestSuite, CLI}; use fxhash::FxHashMap; -use serde::{Deserialize, Serialize}; +use serde::Deserialize; use std::{fs, io, path::Path}; /// Representation of the YAML metadata in Test262 tests. @@ -52,26 +52,6 @@ pub(super) enum TestFlag { NonDeterministic, } -/// Test information structure. -#[derive(Debug, Clone, Serialize, Deserialize)] -struct TestInfo { - desc: Box, - info: Box, -} - -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. pub(super) fn read_harness() -> io::Result { let mut includes = FxHashMap::default(); @@ -106,43 +86,11 @@ pub(super) fn read_harness() -> io::Result { pub(super) fn read_global_suite() -> io::Result { let path = CLI.test262_path().join("test"); - let mut info = if let Some(path) = CLI.output() { - 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) + Ok(read_suite(path.as_path())?) } /// Reads a test suite in the given path. -fn read_suite( - path: &Path, - test_info: &mut Option, TestInfo>>, -) -> io::Result { +fn read_suite(path: &Path) -> io::Result { use std::ffi::OsStr; let name = path @@ -175,11 +123,11 @@ fn read_suite( let entry = entry?; 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()) { continue; } 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. -fn read_test( - path: &Path, - test_info: &mut Option, TestInfo>>, -) -> io::Result { +fn read_test(path: &Path) -> io::Result { let name = path .file_stem() .ok_or_else(|| { @@ -212,26 +157,8 @@ fn read_test( })?; let content = fs::read_to_string(path)?; - 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)) } diff --git a/boa_tester/src/results.rs b/boa_tester/src/results.rs index 19d98535b8..924687edad 100644 --- a/boa_tester/src/results.rs +++ b/boa_tester/src/results.rs @@ -1,23 +1,36 @@ use super::{SuiteResult, CLI}; +use git2::Repository; +use hex::ToHex; use serde::{Deserialize, Serialize}; use std::{ env, fs, io::{self, BufReader, BufWriter}, + path::Path, }; /// Structure to store full result information. #[derive(Debug, Clone, Deserialize, Serialize)] struct ResultInfo { + #[serde(rename = "c")] commit: Box, + #[serde(rename = "u")] + test262_commit: Box, + #[serde(rename = "r")] results: SuiteResult, } /// Structure to store full result information. #[derive(Debug, Clone, Deserialize, Serialize)] struct ReducedResultInfo { + #[serde(rename = "c")] commit: Box, + #[serde(rename = "u")] + test262_commit: Box, + #[serde(rename = "t")] total: usize, + #[serde(rename = "p")] passed: usize, + #[serde(rename = "i")] ignored: usize, } @@ -26,6 +39,7 @@ impl From for ReducedResultInfo { fn from(info: ResultInfo) -> Self { Self { commit: info.commit, + test262_commit: info.test262_commit, total: info.results.total, passed: info.results.passed, ignored: info.results.ignored, @@ -67,6 +81,7 @@ pub(crate) fn write_json(results: SuiteResult) -> io::Result<()> { let new_results = ResultInfo { commit: env::var("GITHUB_SHA").unwrap_or_default().into_boxed_str(), + test262_commit: get_test262_commit(), results, }; @@ -95,3 +110,21 @@ pub(crate) fn write_json(results: SuiteResult) -> io::Result<()> { Ok(()) } + +/// Gets the commit OID of the test262 submodule. +fn get_test262_commit() -> Box { + 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::() + .into_boxed_str() +} diff --git a/package.json b/package.json index 26b1de927a..949b5f0931 100644 --- a/package.json +++ b/package.json @@ -7,7 +7,7 @@ "@wasm-tool/wasm-pack-plugin": "^1.3.1", "bootstrap": "^4.5.2", "clean-webpack-plugin": "^3.0.0", - "copy-webpack-plugin": "^6.1.1", + "copy-webpack-plugin": "^6.2.0", "css-loader": "^4.3.0", "file-loader": "^6.1.0", "html-webpack-plugin": "^4.5.0", diff --git a/test262 b/test262 index 896994413c..323905b70e 160000 --- a/test262 +++ b/test262 @@ -1 +1 @@ -Subproject commit 896994413cad849f470cec7757c4bb7d1b4ffc12 +Subproject commit 323905b70e644d90faa957235f8ac59eac4ba8ba diff --git a/yarn.lock b/yarn.lock index 3c81f381ab..f8b62f238a 100644 --- a/yarn.lock +++ b/yarn.lock @@ -74,16 +74,16 @@ integrity sha512-W+bw9ds02rAQaMvaLYxAbJ6cvguW/iJXNT6lTssS1ps6QdrMKttqEAMEG/b5CR8TZl3/L7/lH0ZV5nNR1LXikA== "@types/uglify-js@*": - version "3.9.3" - resolved "https://registry.yarnpkg.com/@types/uglify-js/-/uglify-js-3.9.3.tgz#d94ed608e295bc5424c9600e6b8565407b6b4b6b" - integrity sha512-KswB5C7Kwduwjj04Ykz+AjvPcfgv/37Za24O2EDzYNbwyzOo8+ydtvzUfZ5UMguiVu29Gx44l1A6VsPPcmYu9w== + version "3.11.0" + resolved "https://registry.yarnpkg.com/@types/uglify-js/-/uglify-js-3.11.0.tgz#2868d405cc45cd9dc3069179052103032c33afbc" + integrity sha512-I0Yd8TUELTbgRHq2K65j8rnDPAzAP+DiaF/syLem7yXwYLsHZhPd+AM2iXsWmf9P2F2NlFCgl5erZPQx9IbM9Q== dependencies: source-map "^0.6.1" "@types/webpack-sources@*": - version "1.4.2" - resolved "https://registry.yarnpkg.com/@types/webpack-sources/-/webpack-sources-1.4.2.tgz#5d3d4dea04008a779a90135ff96fb5c0c9e6292c" - integrity sha512-77T++JyKow4BQB/m9O96n9d/UUHWLQHlcqXb9Vsf4F1+wKNrrlWNFPDLKNT92RJnCSL6CieTc+NDXtCVZswdTw== + version "2.0.0" + resolved "https://registry.yarnpkg.com/@types/webpack-sources/-/webpack-sources-2.0.0.tgz#08216ab9be2be2e1499beaebc4d469cec81e82a7" + integrity sha512-a5kPx98CNFRKQ+wqawroFunvFqv7GHm/3KOI52NY9xWADgc8smu4R6prt4EU/M4QfVjvgBkMqU4fBhw3QfMVkg== dependencies: "@types/node" "*" "@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" integrity sha1-Z29us8OZl8LuGsOpJP1hJHSPV40= -copy-webpack-plugin@^6.1.1: - version "6.1.1" - resolved "https://registry.yarnpkg.com/copy-webpack-plugin/-/copy-webpack-plugin-6.1.1.tgz#737a3ba21c16cc6ddca972f5cf8de25568ca0616" - integrity sha512-4TlkHFYkrZ3WppLA5XkPmBLI5lnEpFsXvpeqxCf5PzkratZiVklNXsvoQkLhUU43q7ZL3AOXtaHAd9jLNJoU0w== +copy-webpack-plugin@^6.2.0: + version "6.2.0" + resolved "https://registry.yarnpkg.com/copy-webpack-plugin/-/copy-webpack-plugin-6.2.0.tgz#dacd3f9b6e51e82132a12fa37410af35ecef0c9e" + integrity sha512-1s/VbhIX73FBFBYF4D0KdeBLkjEnAlCQn0Ufo2a/IyJ41jHpQ9ZzM4JAfbE7yTOhbmwRFkARErJ/XIiLceja6Q== dependencies: cacache "^15.0.5" fast-glob "^3.2.4" @@ -1422,37 +1422,37 @@ errno@^0.1.3, errno@~0.1.7: prr "~1.0.1" es-abstract@^1.17.0-next.1, es-abstract@^1.17.5: - version "1.17.6" - resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.17.6.tgz#9142071707857b2cacc7b89ecb670316c3e2d52a" - integrity sha512-Fr89bON3WFyUi5EvAeI48QTWX0AyekGgLA8H+c+7fbfCkJwRWRMLd8CQedNEyJuoYYhmtEqY92pgte1FAhBlhw== + version "1.17.7" + resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.17.7.tgz#a4de61b2f66989fc7421676c1cb9787573ace54c" + integrity sha512-VBl/gnfcJ7OercKA9MVaegWsBHFjV492syMudcnQZvt/Dw8ezpcOHYZXa/J96O8vx+g4x65YKhxOwDUh63aS5g== dependencies: es-to-primitive "^1.2.1" function-bind "^1.1.1" has "^1.0.3" has-symbols "^1.0.1" - is-callable "^1.2.0" - is-regex "^1.1.0" - object-inspect "^1.7.0" + is-callable "^1.2.2" + is-regex "^1.1.1" + object-inspect "^1.8.0" object-keys "^1.1.1" - object.assign "^4.1.0" + object.assign "^4.1.1" string.prototype.trimend "^1.0.1" string.prototype.trimstart "^1.0.1" -es-abstract@^1.18.0-next.0: - version "1.18.0-next.0" - resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.18.0-next.0.tgz#b302834927e624d8e5837ed48224291f2c66e6fc" - integrity sha512-elZXTZXKn51hUBdJjSZGYRujuzilgXo8vSPQzjGYXLvSlGiCo8VO8ZGV3kjo9a0WNJJ57hENagwbtlRuHuzkcQ== +es-abstract@^1.18.0-next.0, es-abstract@^1.18.0-next.1: + version "1.18.0-next.1" + resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.18.0-next.1.tgz#6e3a0a4bda717e5023ab3b8e90bec36108d22c68" + integrity sha512-I4UGspA0wpZXWENrdA0uHbnhte683t3qT/1VFH9aX2dA5PPSf6QW5HHXf5HImaqPmjXaVeVk4RGWnaylmV7uAA== dependencies: es-to-primitive "^1.2.1" function-bind "^1.1.1" has "^1.0.3" has-symbols "^1.0.1" - is-callable "^1.2.0" + is-callable "^1.2.2" is-negative-zero "^2.0.0" is-regex "^1.1.1" object-inspect "^1.8.0" object-keys "^1.1.1" - object.assign "^4.1.0" + object.assign "^4.1.1" string.prototype.trimend "^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" 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" resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.2.tgz#c7c6715cd22d4ddb48d3e19970223aceabb080d9" 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: 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" resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.1.1.tgz#c6f98aacc546f6cec5468a07b7b153ab564a57b9" integrity sha512-1+QkEcxiLlB7VEyFtyBg94e08OAsvq7FUBgApTq/w2ymCLyKJgDPsybBENVtA7XCQEgEXxKPonG+mvYRxh/LIg== @@ -3012,18 +3012,18 @@ object-copy@^0.1.0: define-property "^0.2.5" kind-of "^3.0.3" -object-inspect@^1.7.0, object-inspect@^1.8.0: +object-inspect@^1.8.0: version "1.8.0" resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.8.0.tgz#df807e5ecf53a609cc6bfe93eac3cc7be5b3a9d0" integrity sha512-jLdtEOB112fORuypAyl/50VRVIBIdVQOSUUGQHzJ4xBSbit81zRarz7GThkEFZy1RceYrWYcPcBFPQwHyAc1gA== object-is@^1.0.1: - version "1.1.2" - resolved "https://registry.yarnpkg.com/object-is/-/object-is-1.1.2.tgz#c5d2e87ff9e119f78b7a088441519e2eec1573b6" - integrity sha512-5lHCz+0uufF6wZ7CRFWJN3hp8Jqblpgve06U5CMQ3f//6iDjPr2PEo9MWCjEssDsa+UZEL4PkFpr+BMop6aKzQ== + version "1.1.3" + resolved "https://registry.yarnpkg.com/object-is/-/object-is-1.1.3.tgz#2e3b9e65560137455ee3bd62aec4d90a2ea1cc81" + integrity sha512-teyqLvFWzLkq5B9ki8FVWA902UER2qkxmdA4nLf+wjOLAWgxzCWZNCxpDq9MvE8MmhWNr+I8w3BN49Vx36Y6Xg== dependencies: 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: version "1.1.1" @@ -3037,7 +3037,7 @@ object-visit@^1.0.0: dependencies: isobject "^3.0.0" -object.assign@^4.1.0: +object.assign@^4.1.1: version "4.1.1" resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.1.tgz#303867a666cdd41936ecdedfb1f8f3e32a478cdd" integrity sha512-VT/cxmx5yaoHSOTSyrCygIDFco+RsibY2NM0a4RdEeY/4KgqezwFtK1yr3U67xYhqJSlASm2pKhLVzPj2lr4bA==